aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader2004-09-21 09:34:12 +0000
committerMiles Bader2004-09-21 09:34:12 +0000
commit4b2ed4a6151dac2d11e414e2f923da5e7160ba4f (patch)
tree035379ac696016d8be5099a94fb6b8f6144f7a99
parentfb06d0ce437dec8fb9d913499021fda5fd10ae59 (diff)
parent88a74fa51b4dc8763b607a90f0ee8a099f193a24 (diff)
downloademacs-4b2ed4a6151dac2d11e414e2f923da5e7160ba4f.tar.gz
emacs-4b2ed4a6151dac2d11e414e2f923da5e7160ba4f.zip
Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-43
Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-553 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-557 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-558 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-559 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-561 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-30 Update from CVS
-rw-r--r--admin/ChangeLog10
-rw-r--r--admin/FOR-RELEASE250
-rw-r--r--etc/ChangeLog5
-rw-r--r--etc/NEWS15
-rw-r--r--etc/e/eterm.ti4
-rw-r--r--leim/ChangeLog12
-rw-r--r--leim/leim-ext.el10
-rw-r--r--leim/quail/uni-input.el19
-rw-r--r--lisp/ChangeLog126
-rw-r--r--lisp/battery.el165
-rw-r--r--lisp/bindings.el3
-rw-r--r--lisp/calc/calc-units.el6
-rw-r--r--lisp/calc/calc.el28
-rw-r--r--lisp/cmuscheme.el8
-rw-r--r--lisp/descr-text.el3
-rw-r--r--lisp/ediff-init.el235
-rw-r--r--lisp/eshell/esh-ext.el4
-rw-r--r--lisp/files.el104
-rw-r--r--lisp/gnus/ChangeLog163
-rw-r--r--lisp/gnus/binhex.el1
-rw-r--r--lisp/gnus/deuglify.el9
-rw-r--r--lisp/gnus/flow-fill.el2
-rw-r--r--lisp/gnus/gnus-agent.el5
-rw-r--r--lisp/gnus/gnus-art.el37
-rw-r--r--lisp/gnus/gnus-cite.el2
-rw-r--r--lisp/gnus/gnus-delay.el1
-rw-r--r--lisp/gnus/gnus-fun.el4
-rw-r--r--lisp/gnus/gnus-group.el3
-rw-r--r--lisp/gnus/gnus-int.el1
-rw-r--r--lisp/gnus/gnus-msg.el12
-rw-r--r--lisp/gnus/gnus-score.el1
-rw-r--r--lisp/gnus/gnus-srvr.el2
-rw-r--r--lisp/gnus/gnus-start.el2
-rw-r--r--lisp/gnus/gnus-sum.el25
-rw-r--r--lisp/gnus/gnus-util.el2
-rw-r--r--lisp/gnus/gnus.el6
-rw-r--r--lisp/gnus/imap.el3
-rw-r--r--lisp/gnus/mail-source.el7
-rw-r--r--lisp/gnus/message.el35
-rw-r--r--lisp/gnus/mm-decode.el11
-rw-r--r--lisp/gnus/mm-util.el1
-rw-r--r--lisp/gnus/mml.el3
-rw-r--r--lisp/gnus/nnimap.el6
-rw-r--r--lisp/gnus/nnmail.el3
-rw-r--r--lisp/gnus/pgg-def.el1
-rw-r--r--lisp/gnus/sha1.el1
-rw-r--r--lisp/gnus/smiley.el1
-rw-r--r--lisp/gnus/smime.el3
-rw-r--r--lisp/gnus/uudecode.el1
-rw-r--r--lisp/ibuf-ext.el3
-rw-r--r--lisp/indent.el20
-rw-r--r--lisp/mail/supercite.el2
-rw-r--r--lisp/net/net-utils.el2
-rw-r--r--lisp/progmodes/make-mode.el2
-rw-r--r--lisp/progmodes/sh-script.el1
-rw-r--r--lisp/simple.el3
-rw-r--r--lisp/startup.el7
-rw-r--r--lisp/subr.el17
-rw-r--r--lisp/term.el638
-rw-r--r--lisp/textmodes/enriched.el34
-rw-r--r--lisp/url/ChangeLog4
-rw-r--r--lisp/url/url-handlers.el21
-rw-r--r--lispref/ChangeLog5
-rw-r--r--lispref/commands.texi8
-rw-r--r--man/ChangeLog10
-rw-r--r--man/building.texi15
-rw-r--r--man/calc.texi3
-rw-r--r--man/custom.texi52
-rw-r--r--src/ChangeLog12
-rw-r--r--src/alloc.c7
-rw-r--r--src/buffer.c9
-rw-r--r--src/xdisp.c42
-rw-r--r--src/xterm.c6
73 files changed, 1474 insertions, 810 deletions
diff --git a/admin/ChangeLog b/admin/ChangeLog
index 4876e35b6b2..3c67f2e1bbb 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,13 @@
12004-09-20 Luc Teirlinck <teirllm@auburn.edu>
2
3 * FOR-RELEASE (Indications): Rearrange checklists for Emacs and
4 Elisp manuals.
5
62004-09-18 Luc Teirlinck <teirllm@auburn.edu>
7
8 * FOR-RELEASE (Indications): Clean up and update checklists for
9 Emacs and Elisp manuals.
10
12004-09-11 Kim F. Storm <storm@cua.dk> 112004-09-11 Kim F. Storm <storm@cua.dk>
2 12
3 * FOR-RELEASE (New features): Remove Gnus 5.10 entry (Done!). 13 * FOR-RELEASE (New features): Remove Gnus 5.10 entry (Done!).
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index 05bbd0b7c5c..19f06efa4a7 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -44,156 +44,112 @@ isearch faces.
44 44
45** Check the Emacs manual. 45** Check the Emacs manual.
46 46
47Write you name/initials in the DONE column when you have 47Each manual section should be proof-read by at least two people.
48proof-read the corresponding manual section. 48After each file name, on the same line or the following line, come the
49 49names of the people who have checked it.
50DONE SECTION 50
51--------------------------------------------- 51
52 man/abbrevs.texi 52SECTION READERS
53 man/ack.texi 53-----------------------------
54 man/ada-mode.texi 54man/abbrevs.texi
55 man/anti.texi 55man/anti.texi
56 man/autotype.texi 56man/basic.texi "Luc Teirlinck"
57 man/back.texi 57man/buffers.texi "Luc Teirlinck"
58 man/basic.texi 58man/building.texi "Ted Zlatanov" <tzz@lifelogs.com>
59 man/buffers.texi 59man/calendar.texi
60 man/building.texi 60man/cmdargs.texi
61 man/calc.texi 61man/commands.texi "Luc Teirlinck"
62 man/calendar.texi 62man/custom.texi
63 man/cc-mode.texi 63man/dired.texi
64 man/cl.texi 64man/display.texi "Luc Teirlinck"
65 man/cmdargs.texi 65man/emacs.texi "Luc Teirlinck"
66 man/commands.texi 66man/entering.texi "Luc Teirlinck"
67 man/custom.texi 67man/files.texi "Luc Teirlinck"
68 man/dired.texi 68man/fixit.texi "Luc Teirlinck"
69 man/dired-x.texi 69man/frames.texi "Luc Teirlinck"
70 man/display.texi 70man/glossary.texi
71 man/doclicense.texi 71man/help.texi "Luc Teirlinck"
72 man/ebrowse.texi 72man/indent.texi "Luc Teirlinck"
73 man/ediff.texi 73man/killing.texi "Luc Teirlinck"
74 man/emacs-mime.texi 74man/kmacro.texi "Luc Teirlinck"
75 man/emacs.texi 75man/macos.texi
76 man/emacs-xtra.texi 76man/maintaining.texi
77 man/entering.texi 77man/major.texi "Luc Teirlinck"
78 man/eshell.texi 78man/mark.texi "Luc Teirlinck"
79 man/eudc.texi 79man/mini.texi "Luc Teirlinck"
80 man/faq.texi 80man/misc.texi
81 man/files.texi 81man/msdog.texi
82 man/fixit.texi 82man/mule.texi "Luc Teirlinck"
83 man/flymake.texi 83man/m-x.texi "Luc Teirlinck"
84 man/forms.texi 84man/picture.texi
85 man/frames.texi 85man/programs.texi
86 man/glossary.texi 86man/regs.texi "Luc Teirlinck"
87 man/gnus-faq.texi 87man/rmail.texi
88 man/gnus.texi 88man/screen.texi "Luc Teirlinck"
89 man/gnu.texi 89man/search.texi "Luc Teirlinck"
90 man/help.texi 90man/sending.texi
91 man/idlwave.texi 91man/text.texi
92 man/indent.texi 92man/trouble.texi
93 man/info.texi 93man/windows.texi "Luc Teirlinck"
94 man/killing.texi 94man/xresources.texi
95 man/kmacro.texi
96 man/macos.texi
97 man/maintaining.texi
98 man/major.texi
99 man/mark.texi
100 man/message.texi
101 man/mh-e.texi
102 man/mini.texi
103 man/misc.texi
104 man/msdog.texi
105 man/mule.texi
106 man/m-x.texi
107 man/pcl-cvs.texi
108 man/pgg.texi
109 man/picture.texi
110 man/programs.texi
111 man/reftex.texi
112 man/regs.texi
113 man/rmail.texi
114 man/screen.texi
115 man/sc.texi
116 man/search.texi
117 man/sending.texi
118 man/ses.texi
119 man/sieve.texi
120 man/smtpmail.texi
121 man/speedbar.texi
122 man/texinfo.tex
123 man/text.texi
124 man/tramp.texi
125 man/trampver.texi
126 man/trouble.texi
127 man/viper.texi
128 man/vip.texi
129 man/widget.texi
130 man/windows.texi
131 man/woman.texi
132 man/xresources.texi
133 95
134** Check the Emacs Lisp manual. 96** Check the Emacs Lisp manual.
135 97
136Write you name/initials in the DONE column when you have 98Each manual section should be proof-read by at least two people.
137proof-read the corresponding manual section. 99After each file name, on the same line or the following line, come the
138 100names of the people who have checked it.
139DONE SECTION 101
140--------------------------------------------- 102SECTION READERS
141 lispref/abbrevs.texi 103----------------------------------
142 lispref/advice.texi 104lispref/abbrevs.texi "Luc Teirlinck"
143 lispref/anti.texi 105lispref/advice.texi
144 lispref/back.texi 106lispref/anti.texi
145 lispref/backups.texi 107lispref/backups.texi "Luc Teirlinck"
146 lispref/buffers.texi 108lispref/buffers.texi "Luc Teirlinck"
147 lispref/calendar.texi 109lispref/calendar.texi
148 lispref/commands.texi 110lispref/commands.texi "Luc Teirlinck"
149 lispref/compile.texi 111lispref/compile.texi "Luc Teirlinck"
150 lispref/control.texi 112lispref/control.texi "Luc Teirlinck"
151 lispref/customize.texi 113lispref/customize.texi
152 lispref/debugging.texi 114lispref/debugging.texi
153 lispref/display.texi 115lispref/display.texi
154 lispref/doclicense.texi 116lispref/edebug.texi
155 lispref/edebug.texi 117lispref/elisp.texi "Luc Teirlinck"
156 lispref/elisp-covers.texi 118lispref/errors.texi "Luc Teirlinck"
157 lispref/elisp.texi 119lispref/eval.texi "Luc Teirlinck"
158 lispref/errors.texi 120lispref/files.texi "Luc Teirlinck"
159 lispref/eval.texi 121lispref/frames.texi "Luc Teirlinck"
160 lispref/files.texi 122lispref/functions.texi "Luc Teirlinck"
161 lispref/frames.texi 123lispref/hash.texi "Luc Teirlinck"
162 lispref/front-cover-1.texi 124lispref/help.texi "Luc Teirlinck"
163 lispref/functions.texi 125lispref/hooks.texi
164 lispref/gpl.texi 126lispref/internals.texi "Luc Teirlinck"
165 lispref/hash.texi 127lispref/intro.texi "Luc Teirlinck"
166 lispref/help.texi 128lispref/keymaps.texi "Luc Teirlinck"
167 lispref/hooks.texi 129lispref/lists.texi "Luc Teirlinck"
168 lispref/index.texi 130lispref/loading.texi "Luc Teirlinck"
169 lispref/internals.texi 131lispref/locals.texi
170 lispref/intro.texi 132lispref/macros.texi "Luc Teirlinck"
171 lispref/keymaps.texi 133lispref/maps.texi
172 lispref/lay-flat.texi 134lispref/markers.texi "Luc Teirlinck"
173 lispref/lists.texi 135lispref/minibuf.texi "Luc Teirlinck"
174 lispref/loading.texi 136lispref/modes.texi
175 lispref/locals.texi 137lispref/nonascii.texi "Luc Teirlinck"
176 lispref/macros.texi 138lispref/numbers.texi "Luc Teirlinck"
177 lispref/maps.texi 139lispref/objects.texi "Luc Teirlinck"
178 lispref/markers.texi 140lispref/os.texi "Luc Teirlinck"
179 lispref/minibuf.texi 141lispref/positions.texi "Luc Teirlinck"
180 lispref/modes.texi 142lispref/processes.texi
181 lispref/nonascii.texi 143lispref/searching.texi "Luc Teirlinck"
182 lispref/numbers.texi 144lispref/sequences.texi "Luc Teirlinck"
183 lispref/objects.texi 145lispref/streams.texi "Luc Teirlinck"
184 lispref/os.texi 146lispref/strings.texi "Luc Teirlinck"
185 lispref/positions.texi 147lispref/symbols.texi "Luc Teirlinck"
186 lispref/processes.texi 148lispref/syntax.texi "Luc Teirlinck"
187 lispref/searching.texi 149lispref/text.texi
188 lispref/sequences.texi 150lispref/tips.texi "Luc Teirlinck"
189 lispref/streams.texi 151lispref/variables.texi "Luc Teirlinck"
190 lispref/strings.texi 152lispref/windows.texi "Luc Teirlinck"
191 lispref/symbols.texi
192 lispref/syntax.texi
193 lispref/text.texi
194 lispref/tips.texi
195 lispref/variables.texi
196 lispref/windows.texi
197 153
198 154
199Local variables: 155Local variables:
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 5bc0ae4cfb9..16e02786542 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,8 @@
12004-09-16 Dan Nicolaescu <dann@ics.uci.edu>
2
3 * e/eterm.ti: Change the strings for smso and rmso.
4 e/eterm: Regenerate.
5
12004-09-09 Thien-Thi Nguyen <ttn@gnu.org> 62004-09-09 Thien-Thi Nguyen <ttn@gnu.org>
2 7
3 * MORE.STUFF (EDB): Update entry. 8 * MORE.STUFF (EDB): Update entry.
diff --git a/etc/NEWS b/etc/NEWS
index 0c62333b250..67a93f109d6 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -174,6 +174,10 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
174* Changes in Emacs 21.4 174* Changes in Emacs 21.4
175 175
176+++ 176+++
177** In processing a local variables list, Emacs strips the prefix and
178suffix are from every line before processing all the lines.
179
180+++
177** `apply-macro-to-region-lines' now operates on all lines that begin 181** `apply-macro-to-region-lines' now operates on all lines that begin
178in the region, rather than on all complete lines in the region. 182in the region, rather than on all complete lines in the region.
179 183
@@ -319,6 +323,7 @@ The new file etc/compilation.txt gives examples of each type of message.
319 323
320** Compilation mode enhancements: 324** Compilation mode enhancements:
321 325
326+++
322*** New user option `compilation-environment'. 327*** New user option `compilation-environment'.
323This option allows you to specify environment variables for inferior 328This option allows you to specify environment variables for inferior
324compilation processes without affecting the environment that all 329compilation processes without affecting the environment that all
@@ -1571,6 +1576,8 @@ per line. Lines beginning with space or tab are ignored.
1571**** The `::' qualifier triggers C++ parsing in C file. 1576**** The `::' qualifier triggers C++ parsing in C file.
1572Previously, only the `template' and `class' keywords had this effect. 1577Previously, only the `template' and `class' keywords had this effect.
1573 1578
1579**** The gnucc __attribute__ keyword is now recognised and ignored.
1580
1574**** New language HTML. 1581**** New language HTML.
1575Title and h1, h2, h3 are tagged. Also, tags are generated when name= is 1582Title and h1, h2, h3 are tagged. Also, tags are generated when name= is
1576used inside an anchor and whenever id= is used. 1583used inside an anchor and whenever id= is used.
@@ -1579,7 +1586,8 @@ used inside an anchor and whenever id= is used.
1579If you want the old behavior instead, thus avoiding to increase the 1586If you want the old behavior instead, thus avoiding to increase the
1580size of the tags file, use the --no-globals option. 1587size of the tags file, use the --no-globals option.
1581 1588
1582**** In Lua, all functions are tagged. 1589**** New language Lua.
1590All functions are tagged.
1583 1591
1584**** In Perl, packages are tags. 1592**** In Perl, packages are tags.
1585Subroutine tags are named from their package. You can jump to sub tags 1593Subroutine tags are named from their package. You can jump to sub tags
@@ -1590,7 +1598,7 @@ package::sub.
1590 1598
1591**** New language PHP. 1599**** New language PHP.
1592Tags are functions, classes and defines. 1600Tags are functions, classes and defines.
1593If the --members option is specified to etags, tags are vars also. 1601If the --members option is specified to etags, tags are variables also.
1594 1602
1595**** New default keywords for TeX. 1603**** New default keywords for TeX.
1596The new keywords are def, newcommand, renewcommand, newenvironment and 1604The new keywords are def, newcommand, renewcommand, newenvironment and
@@ -2314,6 +2322,9 @@ configuration files.
2314 2322
2315* Lisp Changes in Emacs 21.4 2323* Lisp Changes in Emacs 21.4
2316 2324
2325** Major mode functions now run the new normal hook
2326`after-change-major-mode-hook', at their very end, after the mode hooks.
2327
2317+++ 2328+++
2318** `auto-save-file-format' has been renamed to 2329** `auto-save-file-format' has been renamed to
2319`buffer-auto-save-file-format' and made into a permanent local. 2330`buffer-auto-save-file-format' and made into a permanent local.
diff --git a/etc/e/eterm.ti b/etc/e/eterm.ti
index 16c3878955c..648ff728518 100644
--- a/etc/e/eterm.ti
+++ b/etc/e/eterm.ti
@@ -12,8 +12,8 @@ eterm,
12 smcup=\E7\E[?47h,rmcup=\E[2J\E[?47l\E8, 12 smcup=\E7\E[?47h,rmcup=\E[2J\E[?47l\E8,
13 ht=\t,khome=\E[1~,kend=\E[4~,knp=\E[6~,kpp=\E[5~, 13 ht=\t,khome=\E[1~,kend=\E[4~,knp=\E[6~,kpp=\E[5~,
14 kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 14 kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
15 smso=\E[7m,rmso=\E[m, 15 smso=\E[7m,rmso=\E[27m,
16 smul=\E[4m,rmul=\E[m, 16 smul=\E[4m,rmul=\E[24m,
17 rev=\E[7m,bold=\E[1m,sgr0=\E[m, 17 rev=\E[7m,bold=\E[1m,sgr0=\E[m,
18 invis=\E[8m,op=\E[39;49m, 18 invis=\E[8m,op=\E[39;49m,
19 setab=\E[%p1%{40}%+%dm, setaf=\E[%p1%{30}%+%dm, 19 setab=\E[%p1%{40}%+%dm, setaf=\E[%p1%{30}%+%dm,
diff --git a/leim/ChangeLog b/leim/ChangeLog
index 19ffc23dc3a..2466de68ca6 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,15 @@
12004-09-21 Kenichi Handa <handa@m17n.org>
2
3 * quail/uni-input.el: Move the call of register-input-method to
4 leim-ext.el.
5 (ucs-input-insert-char): New function.
6 (ucs-input-method): Use ucs-input-insert-char.
7 (ucs-input-activate): Call quail-hide-guidance instead of
8 quail-hide-guidance-buf.
9
10 * leim-ext.el: Add autoload for 'ucs-input-activate and
11 register-input-method for "ucs".
12
12004-08-21 David Kastrup <dak@gnu.org> 132004-08-21 David Kastrup <dak@gnu.org>
2 14
3 * quail/greek.el ("greek-babel"): Add accent/breathing/uppercase 15 * quail/greek.el ("greek-babel"): Add accent/breathing/uppercase
diff --git a/leim/leim-ext.el b/leim/leim-ext.el
index 64437cc0d19..ad5d22281d8 100644
--- a/leim/leim-ext.el
+++ b/leim/leim-ext.el
@@ -34,4 +34,14 @@
34(eval-after-load "quail/PY-b5" 34(eval-after-load "quail/PY-b5"
35 '(quail-defrule "ling2" ?$(0!r(B nil t)) 35 '(quail-defrule "ling2" ?$(0!r(B nil t))
36 36
37(autoload 'ucs-input-activate "quail/uni-input"
38 "Activate UCS input method.
39With arg, activate UCS input method if and only if arg is positive.
40
41While this input method is active, the variable
42`input-method-function' is bound to the function `ucs-input-method'.")
43
44(register-input-method "ucs" "UTF-8" 'ucs-input-activate "U+"
45 "Unicode input as hex in the form Uxxxx.")
46
37;; arch-tag: 75cfdfc7-de85-44f9-b408-ff67d1ec664e 47;; arch-tag: 75cfdfc7-de85-44f9-b408-ff67d1ec664e
diff --git a/leim/quail/uni-input.el b/leim/quail/uni-input.el
index 49a6f840cfa..9e2c04278d6 100644
--- a/leim/quail/uni-input.el
+++ b/leim/quail/uni-input.el
@@ -40,14 +40,16 @@
40 40
41(require 'quail) 41(require 'quail)
42 42
43(defun ucs-input-insert-char (char)
44 (insert char)
45 (move-overlay quail-overlay (overlay-start quail-overlay) (point)))
46
43(defun ucs-input-method (key) 47(defun ucs-input-method (key)
44 (if (or buffer-read-only 48 (if (or buffer-read-only
45 (and (/= key ?U) (/= key ?u))) 49 (and (/= key ?U) (/= key ?u)))
46 (list key) 50 (list key)
47 (quail-setup-overlays nil) 51 (quail-setup-overlays nil)
48 (let ((current-prefix-arg) 52 (ucs-input-insert-char key)
49 (last-command-char key))
50 (call-interactively 'self-insert-command))
51 (let ((modified-p (buffer-modified-p)) 53 (let ((modified-p (buffer-modified-p))
52 (buffer-undo-list t) 54 (buffer-undo-list t)
53 (input-method-function nil) 55 (input-method-function nil)
@@ -68,9 +70,7 @@
68 ?b ?c ?d ?e ?f ?A ?B ?C ?D ?E ?F))) 70 ?b ?c ?d ?e ?f ?A ?B ?C ?D ?E ?F)))
69 (progn 71 (progn
70 (push key events) 72 (push key events)
71 (let ((last-command-char key) 73 (ucs-input-insert-char key))
72 (current-prefix-arg))
73 (call-interactively 'self-insert-command)))
74 (let ((last-command-char key) 74 (let ((last-command-char key)
75 (current-prefix-arg)) 75 (current-prefix-arg))
76 (condition-case nil 76 (condition-case nil
@@ -98,7 +98,7 @@ While this input method is active, the variable
98 (< (prefix-numeric-value arg) 0)) 98 (< (prefix-numeric-value arg) 0))
99 (unwind-protect 99 (unwind-protect
100 (progn 100 (progn
101 (quail-hide-guidance-buf) 101 (quail-hide-guidance)
102 (quail-delete-overlays) 102 (quail-delete-overlays)
103 (setq describe-current-input-method-function nil)) 103 (setq describe-current-input-method-function nil))
104 (kill-local-variable 'input-method-function)) 104 (kill-local-variable 'input-method-function))
@@ -124,8 +124,9 @@ Input method: ucs (mode line indicator:U)
124 124
125Input as Unicode: U<hex> or u<hex>, where <hex> is a four-digit hex number."))) 125Input as Unicode: U<hex> or u<hex>, where <hex> is a four-digit hex number.")))
126 126
127(register-input-method "ucs" "UTF-8" 'ucs-input-activate "U+" 127;; The file ../leim-ext.el contains the following call.
128 "Unicode input as hex in the form Uxxxx.") 128;; (register-input-method "ucs" "UTF-8" 'ucs-input-activate "U+"
129;; "Unicode input as hex in the form Uxxxx.")
129 130
130(provide 'uni-input) 131(provide 'uni-input)
131 132
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index d5dab8bb0cb..8263604548b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,124 @@
12004-09-21 Kenichi Handa <handa@m17n.org>
2
3 * descr-text.el (describe-char): Checking of quail activation
4 fixed.
5
62004-09-20 Luc Teirlinck <teirllm@auburn.edu>
7
8 * subr.el (run-mode-hooks): Run `after-change-major-mode-hook'
9 after the mode hooks instead of before. Doc fix.
10
112004-09-20 Jason Rumney <jasonr@gnu.org>
12
13 * startup.el (command-line) [windows-nt]: Try .emacs first, then
14 _emacs, but revert to .emacs if neither exists in home directory.
15
162004-09-20 John Paul Wallington <jpw@gnu.org>
17
18 * bindings.el (completion-ignored-extensions): Add .dfsl.
19
202004-09-20 Richard M. Stallman <rms@gnu.org>
21
22 * bindings.el (scroll-left): Make it disabled.
23
24 * files.el (enable-local-eval): Doc fix.
25
26 * indent.el (move-to-left-margin): Special case for minibuffer.
27
28 * term.el (term-emulate-terminal): Turn off undo for output.
29 Use with-current-buffer and save-selected-window.
30
31 * eshell/esh-ext.el (eshell-explicit-command-char): Doc fix.
32
33 * progmodes/make-mode.el (makefile-fill-paragraph):
34 Don't insist on spaces when looking for comments. # is enough.
35
36 * files.el (hack-local-variables): Copy the variables list
37 to another buffer, strip prefixes and suffixes there, then read.
38 (enable-local-eval): Doc fix.
39 (ignored-local-variables): Initialize to nil.
40 (risky-local-variable-p): Don't check ignored-local-variables here.
41 (hack-one-local-variable): Ignore var if in ignored-local-variables.
42
432004-09-20 Dan Nicolaescu <dann@ics.uci.edu>
44
45 * progmodes/sh-script.el (sh-mode-default-syntax-table): Set syntax
46 of = to "." (punctuation).
47
482004-09-19 Stefan <monnier@iro.umontreal.ca>
49
50 * subr.el (event-basic-type): Fix mask (extend to 22bits).
51
522004-09-18 Luc Teirlinck <teirllm@auburn.edu>
53
54 * textmodes/enriched.el (enriched-rerun-flag): New variable.
55 (enriched-before-change-major-mode): New function.
56 Add it to `change-major-mode-hook'.
57 (enriched-after-change-major-mode): New function.
58 Add it to `after-change-major-mode-hook'.
59 (enriched-mode): Make it work correctly if called from
60 `after-change-major-mode-hook'.
61 No longer set `indent-line-function'.
62
63 * simple.el (fundamental-mode): Run `after-change-major-mode-hook'.
64
65 * subr.el (after-change-major-mode-hook): New variable.
66 (run-mode-hooks): Implement it.
67
682004-09-18 Stefan Monnier <monnier@iro.umontreal.ca>
69
70 * battery.el (battery-linux-proc-apm): Use string-to-number.
71 (battery-linux-proc-acpi): Ignore all hidden files in the battery dir.
72 Use dolist (and less indentation). Use erase-buffer.
73 Pre-initialize `design-capacity', `warn', and `low'.
74 (battery-format): Use replace-regexp-in-string.
75
762004-09-18 Ralph Schleicher <rs@nunatak.allgaeu.org>
77
78 * battery.el: Delete superfluous empty lines.
79 (battery-linux-proc-acpi): Attempt to gather information from all
80 battery subdirectories regardless of their file name.
81 (battery-linux-proc-apm): Replace all occurrences of
82 battery-hex-to-int-2 with string-to-int (base 16).
83 (battery-hex-to-int-2, battery-hex-to-int): Delete functions.
84 (battery-hex-map): Delete variable.
85
862004-09-18 John Paul Wallington <jpw@gnu.org>
87
88 * calc/calc-units.el (calc-quick-units): Fix overzealous
89 s/or/unless/.
90
912004-09-17 Romain Francoise <romain@orebokech.com>
92
93 * ibuf-ext.el (define-ibuffer-filter filename):
94 Expand dired-directory since buffer-file-name is absolute.
95
962004-09-17 Dan Nicolaescu <dann@ics.uci.edu>
97
98 * ediff-init.el (ediff-current-diff-face-A)
99 (ediff-current-diff-face-B, ediff-current-diff-face-C)
100 (ediff-current-diff-face-Ancestor)
101 (ediff-fine-diff-face-A, ediff-fine-diff-face-B)
102 (ediff-fine-diff-face-C, ediff-fine-diff-face-Ancestor)
103 (ediff-even-diff-face-A, ediff-even-diff-face-B)
104 (ediff-even-diff-face-C, ediff-even-diff-face-Ancestor)
105 (ediff-odd-diff-face-A, ediff-odd-diff-face-B)
106 (ediff-odd-diff-face-C, ediff-odd-diff-face-Ancestor):
107 Use min-colors.
108
109 * term.el (term-down): Perform vertical motion if DOWN is negative.
110 (term-exec-1): Set both TERMCAP and TERMINFO unconditionally.
111 (term-termcap-format): Synchronyze with the eterm terminfo entry
112 in etc/e/eterm.ti.
113 (term-handle-colors-array): If the current foreground or
114 background are zero (i.e. unspecified), use the foreground and
115 background of the default face for reverse video.
116 (term-ansi-at-eval-string, term-ansi-default-fg)
117 (term-ansi-default-bg, term-ansi-current-temp): Delete unused variable.
118 (term-mem): Delete ununsed function.
119 (term-protocol-version): Increment.
120 (term-current-face): Set to default.
121
12004-09-15 Thien-Thi Nguyen <ttn@gnu.org> 1222004-09-15 Thien-Thi Nguyen <ttn@gnu.org>
2 123
3 * vc.el (annotate-time): Document point handling. 124 * vc.el (annotate-time): Document point handling.
@@ -153,6 +274,11 @@
153 * desktop.el (desktop-clear-preserve-buffers): 274 * desktop.el (desktop-clear-preserve-buffers):
154 Remove make-obsolete-variable. 275 Remove make-obsolete-variable.
155 276
2772004-09-08 Richard M. Stallman <rms@gnu.org>
278
279 * buff-menu.el (list-buffers-noselect): Call format-mode-line
280 with the buffer as argument.
281
1562004-09-08 Stefan Monnier <monnier@iro.umontreal.ca> 2822004-09-08 Stefan Monnier <monnier@iro.umontreal.ca>
157 283
158 * vc-arch.el (vc-arch-state): Fix parsing for `names' method. 284 * vc-arch.el (vc-arch-state): Fix parsing for `names' method.
diff --git a/lisp/battery.el b/lisp/battery.el
index 3b44ff891f9..7b172321602 100644
--- a/lisp/battery.el
+++ b/lisp/battery.el
@@ -1,6 +1,7 @@
1;;; battery.el --- display battery status information 1;;; battery.el --- display battery status information
2 2
3;; Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc. 3;; Copyright (C) 1997, 1998, 2000, 2001, 2003, 2004
4;; Free Software Foundation, Inc.
4 5
5;; Author: Ralph Schleicher <rs@nunatak.allgaeu.org> 6;; Author: Ralph Schleicher <rs@nunatak.allgaeu.org>
6;; Keywords: hardware 7;; Keywords: hardware
@@ -31,9 +32,9 @@
31;;; Code: 32;;; Code:
32 33
33(require 'timer) 34(require 'timer)
35(eval-when-compile (require 'cl))
34 36
35 37
36
37(defgroup battery nil 38(defgroup battery nil
38 "Display battery status information." 39 "Display battery status information."
39 :prefix "battery-" 40 :prefix "battery-"
@@ -182,20 +183,20 @@ The following %-sequences are provided:
182 (re-search-forward battery-linux-proc-apm-regexp) 183 (re-search-forward battery-linux-proc-apm-regexp)
183 (setq driver-version (match-string 1)) 184 (setq driver-version (match-string 1))
184 (setq bios-version (match-string 2)) 185 (setq bios-version (match-string 2))
185 (setq tem (battery-hex-to-int-2 (match-string 3))) 186 (setq tem (string-to-number (match-string 3) 16))
186 (if (not (logand tem 2)) 187 (if (not (logand tem 2))
187 (setq bios-interface "not supported") 188 (setq bios-interface "not supported")
188 (setq bios-interface "enabled") 189 (setq bios-interface "enabled")
189 (cond ((logand tem 16) (setq bios-interface "disabled")) 190 (cond ((logand tem 16) (setq bios-interface "disabled"))
190 ((logand tem 32) (setq bios-interface "disengaged"))) 191 ((logand tem 32) (setq bios-interface "disengaged")))
191 (setq tem (battery-hex-to-int-2 (match-string 4))) 192 (setq tem (string-to-number (match-string 4) 16))
192 (cond ((= tem 0) (setq line-status "off-line")) 193 (cond ((= tem 0) (setq line-status "off-line"))
193 ((= tem 1) (setq line-status "on-line")) 194 ((= tem 1) (setq line-status "on-line"))
194 ((= tem 2) (setq line-status "on backup"))) 195 ((= tem 2) (setq line-status "on backup")))
195 (setq tem (battery-hex-to-int-2 (match-string 6))) 196 (setq tem (string-to-number (match-string 6) 16))
196 (if (= tem 255) 197 (if (= tem 255)
197 (setq battery-status "N/A") 198 (setq battery-status "N/A")
198 (setq tem (battery-hex-to-int-2 (match-string 5))) 199 (setq tem (string-to-number (match-string 5) 16))
199 (cond ((= tem 0) (setq battery-status "high" 200 (cond ((= tem 0) (setq battery-status "high"
200 battery-status-symbol "")) 201 battery-status-symbol ""))
201 ((= tem 1) (setq battery-status "low" 202 ((= tem 1) (setq battery-status "low"
@@ -243,54 +244,52 @@ The following %-sequences are provided:
243%m Remaining time in minutes 244%m Remaining time in minutes
244%h Remaining time in hours 245%h Remaining time in hours
245%t Remaining time in the form `h:min'" 246%t Remaining time in the form `h:min'"
246 (let (capacity design-capacity rate rate-type charging-state warn low 247 (let ((design-capacity 0)
247 minutes hours) 248 (warn 0)
248 (when (file-directory-p "/proc/acpi/battery/") 249 (low 0)
249 ;; ACPI provides information about each battery present in the system in 250 capacity rate rate-type charging-state minutes hours)
250 ;; a separate subdirectory. We are going to merge the available 251 ;; ACPI provides information about each battery present in the system in
251 ;; information together since displaying for a variable amount of 252 ;; a separate subdirectory. We are going to merge the available
252 ;; batteries seems overkill for format-strings. 253 ;; information together since displaying for a variable amount of
253 (mapc 254 ;; batteries seems overkill for format-strings.
254 (lambda (dir) 255 (with-temp-buffer
255 (with-temp-buffer 256 (dolist (dir (ignore-errors (directory-files "/proc/acpi/battery/"
256 (insert-file-contents (expand-file-name "state" dir)) 257 t "\\`[^.]")))
257 (when (re-search-forward "present: +yes$" nil t) 258 (erase-buffer)
258 (and (re-search-forward "charging state: +\\(.*\\)$" nil t) 259 (ignore-errors (insert-file-contents (expand-file-name "state" dir)))
259 (or (null charging-state) (string= charging-state 260 (when (re-search-forward "present: +yes$" nil t)
260 "unknown")) 261 (and (re-search-forward "charging state: +\\(.*\\)$" nil t)
261 ;; On most multi-battery systems, most of the time only one 262 (member charging-state '("unknown" nil))
262 ;; battery is "charging"/"discharging", the others are 263 ;; On most multi-battery systems, most of the time only one
263 ;; "unknown". 264 ;; battery is "charging"/"discharging", the others are
264 (setq charging-state (match-string 1))) 265 ;; "unknown".
265 (when (re-search-forward "present rate: +\\([0-9]+\\) \\(m[AW]\\)$" 266 (setq charging-state (match-string 1)))
266 nil t) 267 (when (re-search-forward "present rate: +\\([0-9]+\\) \\(m[AW]\\)$"
267 (setq rate (+ (or rate 0) (string-to-int (match-string 1))) 268 nil t)
268 rate-type (or (and rate-type 269 (setq rate (+ (or rate 0) (string-to-number (match-string 1)))
269 (if (string= rate-type (match-string 2)) 270 rate-type (or (and rate-type
270 rate-type 271 (if (string= rate-type (match-string 2))
271 (error 272 rate-type
272 "Inconsistent rate types (%s vs. %s)" 273 (error
273 rate-type (match-string 2)))) 274 "Inconsistent rate types (%s vs. %s)"
274 (match-string 2)))) 275 rate-type (match-string 2))))
275 (when (re-search-forward "remaining capacity: +\\([0-9]+\\) m[AW]h$" 276 (match-string 2))))
276 nil t) 277 (when (re-search-forward "remaining capacity: +\\([0-9]+\\) m[AW]h$"
277 (setq capacity 278 nil t)
278 (+ (or capacity 0) (string-to-int (match-string 1)))))) 279 (setq capacity
279 (goto-char (point-max)) 280 (+ (or capacity 0) (string-to-number (match-string 1))))))
280 (insert-file-contents (expand-file-name "info" dir)) 281 (goto-char (point-max))
281 (when (re-search-forward "present: +yes$" nil t) 282 (ignore-errors (insert-file-contents (expand-file-name "info" dir)))
282 (when (re-search-forward "design capacity: +\\([0-9]+\\) m[AW]h$" 283 (when (re-search-forward "present: +yes$" nil t)
283 nil t) 284 (when (re-search-forward "design capacity: +\\([0-9]+\\) m[AW]h$"
284 (setq design-capacity (+ (or design-capacity 0) 285 nil t)
285 (string-to-int (match-string 1))))) 286 (incf design-capacity (string-to-number (match-string 1))))
286 (when (re-search-forward "design capacity warning: +\\([0-9]+\\) m[AW]h$" 287 (when (re-search-forward
287 nil t) 288 "design capacity warning: +\\([0-9]+\\) m[AW]h$" nil t)
288 (setq warn (+ (or warn 0) (string-to-int (match-string 1))))) 289 (incf warn (string-to-number (match-string 1))))
289 (when (re-search-forward "design capacity low: +\\([0-9]+\\) m[AW]h$" 290 (when (re-search-forward "design capacity low: +\\([0-9]+\\) m[AW]h$"
290 nil t) 291 nil t)
291 (setq low (+ (or low 0) 292 (incf low (string-to-number (match-string 1)))))))
292 (string-to-int (match-string 1))))))))
293 (directory-files "/proc/acpi/battery/" t "\\(BAT\\|CMB\\)")))
294 (and capacity rate 293 (and capacity rate
295 (setq minutes (if (zerop rate) 0 294 (setq minutes (if (zerop rate) 0
296 (floor (* (/ (float (if (string= charging-state 295 (floor (* (/ (float (if (string= charging-state
@@ -327,8 +326,8 @@ The following %-sequences are provided:
327 rate-type)) "N/A")) 326 rate-type)) "N/A"))
328 (cons ?B (or charging-state "N/A")) 327 (cons ?B (or charging-state "N/A"))
329 (cons ?b (or (and (string= charging-state "charging") "+") 328 (cons ?b (or (and (string= charging-state "charging") "+")
330 (and low (< capacity low) "!") 329 (and (< capacity low) "!")
331 (and warn (< capacity warn) "-") 330 (and (< capacity warn) "-")
332 "")) 331 ""))
333 (cons ?h (or (and hours (number-to-string hours)) "N/A")) 332 (cons ?h (or (and hours (number-to-string hours)) "N/A"))
334 (cons ?m (or (and minutes (number-to-string minutes)) "N/A")) 333 (cons ?m (or (and minutes (number-to-string minutes)) "N/A"))
@@ -346,54 +345,16 @@ The following %-sequences are provided:
346 345
347(defun battery-format (format alist) 346(defun battery-format (format alist)
348 "Substitute %-sequences in FORMAT." 347 "Substitute %-sequences in FORMAT."
349 (let ((index 0) 348 (replace-regexp-in-string
350 (length (length format)) 349 "%."
351 (result "") 350 (lambda (str)
352 char flag elem) 351 (let ((char (aref str 1)))
353 (while (< index length) 352 (if (eq char ?%) "%"
354 (setq char (aref format index)) 353 (or (cdr (assoc char alist)) ""))))
355 (if (not flag) 354 format t t))
356 (if (char-equal char ?%)
357 (setq flag t)
358 (setq result (concat result (char-to-string char))))
359 (cond ((char-equal char ?%)
360 (setq result (concat result "%")))
361 ((setq elem (assoc char alist))
362 (setq result (concat result (cdr elem)))))
363 (setq flag nil))
364 (setq index (1+ index)))
365 (or (null flag)
366 (setq result (concat result "%")))
367 result))
368
369(defconst battery-hex-map '((?0 . 0) (?1 . 1) (?2 . 2) (?3 . 3)
370 (?4 . 4) (?5 . 5) (?6 . 6) (?7 . 7)
371 (?8 . 8) (?9 . 9) (?a . 10) (?b . 11)
372 (?c . 12) (?d . 13) (?e . 14) (?f . 15)))
373
374(defun battery-hex-to-int (string)
375 "Convert a hexadecimal number (a string) into a number."
376 (save-match-data
377 (and (string-match "^[ \t]+" string)
378 (setq string (substring string (match-end 0))))
379 (and (string-match "^0[xX]" string)
380 (setq string (substring string (match-end 0)))))
381 (battery-hex-to-int-2 string))
382
383(defun battery-hex-to-int-2 (string)
384 (let ((index 0)
385 (length (length string))
386 (value 0)
387 (elem nil))
388 (while (and (< index length)
389 (setq elem (assoc (downcase (aref string index))
390 battery-hex-map)))
391 (setq value (+ (* 16 value) (cdr elem))
392 index (1+ index)))
393 value))
394 355
395 356
396(provide 'battery) 357(provide 'battery)
397 358
398;;; arch-tag: 65916f50-4754-4b6b-ac21-0b510f545a37 359;; arch-tag: 65916f50-4754-4b6b-ac21-0b510f545a37
399;;; battery.el ends here 360;;; battery.el ends here
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 84db9bbe1eb..ea311c191f6 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -517,7 +517,7 @@ is okay. See `mode-line-format'.")
517 ;; CMUCL 517 ;; CMUCL
518 ".x86f" ".sparcf" 518 ".x86f" ".sparcf"
519 ;; Other CL implementations (Allegro, LispWorks, OpenMCL) 519 ;; Other CL implementations (Allegro, LispWorks, OpenMCL)
520 ".fasl" ".ufsl" ".fsl" ".dxl" ".pfsl" 520 ".fasl" ".ufsl" ".fsl" ".dxl" ".pfsl" ".dfsl"
521 ;; Libtool 521 ;; Libtool
522 ".lo" ".la" 522 ".lo" ".la"
523 ;; Gettext 523 ;; Gettext
@@ -720,6 +720,7 @@ language you are using."
720(define-key global-map [C-up] 'backward-paragraph) 720(define-key global-map [C-up] 'backward-paragraph)
721(define-key global-map [C-down] 'forward-paragraph) 721(define-key global-map [C-down] 'forward-paragraph)
722(define-key global-map [C-prior] 'scroll-right) 722(define-key global-map [C-prior] 'scroll-right)
723(put 'scroll-left 'disabled t)
723(define-key global-map [C-next] 'scroll-left) 724(define-key global-map [C-next] 'scroll-left)
724(define-key global-map [M-next] 'scroll-other-window) 725(define-key global-map [M-next] 'scroll-other-window)
725(define-key global-map [M-prior] 'scroll-other-window-down) 726(define-key global-map [M-prior] 'scroll-other-window-down)
diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index b8735a9dc38..025b208120b 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -297,11 +297,11 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
297 (units (calc-var-value 'var-Units)) 297 (units (calc-var-value 'var-Units))
298 (expr (calc-top-n 1))) 298 (expr (calc-top-n 1)))
299 (unless (and (>= num 0) (<= num 9)) 299 (unless (and (>= num 0) (<= num 9))
300 (errunless "Bad unit number")) 300 (error "Bad unit number"))
301 (unless (math-vectorp units) 301 (unless (math-vectorp units)
302 (errunless "No \"quick units\" are defined")) 302 (error "No \"quick units\" are defined"))
303 (unless (< pos (length units)) 303 (unless (< pos (length units))
304 (errunless "Unit number %d not defined" pos)) 304 (error "Unit number %d not defined" pos))
305 (if (math-units-in-expr-p expr nil) 305 (if (math-units-in-expr-p expr nil)
306 (calc-enter-result 1 (format "cun%d" num) 306 (calc-enter-result 1 (format "cun%d" num)
307 (math-convert-units expr (nth pos units))) 307 (math-convert-units expr (nth pos units)))
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index d3e00a7a5a1..5c7e24ed646 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -427,7 +427,7 @@ Otherwise, 1 / 0 is changed to uinf (undirected infinity).")
427 (calc-display-strings nil 427 (calc-display-strings nil
428 "If non-nil, display vectors of byte-sized integers as strings.") 428 "If non-nil, display vectors of byte-sized integers as strings.")
429 429
430 (calc-matrix-just 'center 430 (calc-matrix-just center
431 "If nil, vector elements are left-justified. 431 "If nil, vector elements are left-justified.
432If `right', vector elements are right-justified. 432If `right', vector elements are right-justified.
433If `center', vector elements are centered.") 433If `center', vector elements are centered.")
@@ -447,7 +447,7 @@ If `center', vector elements are centered.")
447 (calc-vector-brackets "[]" 447 (calc-vector-brackets "[]"
448 "If non-nil, surround displayed vectors with these characters.") 448 "If non-nil, surround displayed vectors with these characters.")
449 449
450 (calc-matrix-brackets '(R O) 450 (calc-matrix-brackets (R O)
451 "A list of code-letter symbols that control \"big\" matrix display. 451 "A list of code-letter symbols that control \"big\" matrix display.
452If `R' is present, display inner brackets for matrices. 452If `R' is present, display inner brackets for matrices.
453If `O' is present, display outer brackets for matrices (above/below). 453If `O' is present, display outer brackets for matrices (above/below).
@@ -542,10 +542,10 @@ If nil, selections displayed but ignored.")
542 (calc-assoc-selections t 542 (calc-assoc-selections t
543 "If non-nil, selection hides deep structure of associative formulas.") 543 "If non-nil, selection hides deep structure of associative formulas.")
544 544
545 (calc-display-working-message 'lots 545 (calc-display-working-message lots
546 "If non-nil, display \"Working...\" for potentially slow Calculator commands.") 546 "If non-nil, display \"Working...\" for potentially slow Calculator commands.")
547 547
548 (calc-auto-why 'maybe 548 (calc-auto-why maybe
549 "If non-nil, automatically execute a \"why\" command to explain odd results.") 549 "If non-nil, automatically execute a \"why\" command to explain odd results.")
550 550
551 (calc-timing nil 551 (calc-timing nil
@@ -554,16 +554,16 @@ If nil, selections displayed but ignored.")
554 (calc-mode-save-mode local) 554 (calc-mode-save-mode local)
555 555
556 (calc-standard-date-formats 556 (calc-standard-date-formats
557 '("N" 557 ("N"
558 "<H:mm:SSpp >Www Mmm D, YYYY" 558 "<H:mm:SSpp >Www Mmm D, YYYY"
559 "D Mmm YYYY<, h:mm:SS>" 559 "D Mmm YYYY<, h:mm:SS>"
560 "Www Mmm BD< hh:mm:ss> YYYY" 560 "Www Mmm BD< hh:mm:ss> YYYY"
561 "M/D/Y< H:mm:SSpp>" 561 "M/D/Y< H:mm:SSpp>"
562 "D.M.Y< h:mm:SS>" 562 "D.M.Y< h:mm:SS>"
563 "M-D-Y< H:mm:SSpp>" 563 "M-D-Y< H:mm:SSpp>"
564 "D-M-Y< h:mm:SS>" 564 "D-M-Y< h:mm:SS>"
565 "j<, h:mm:SS>" 565 "j<, h:mm:SS>"
566 "YYddd< hh:mm:ss>")) 566 "YYddd< hh:mm:ss>"))
567 567
568 (calc-autorange-units nil) 568 (calc-autorange-units nil)
569 569
diff --git a/lisp/cmuscheme.el b/lisp/cmuscheme.el
index a9190d32100..03cd8ee4d9c 100644
--- a/lisp/cmuscheme.el
+++ b/lisp/cmuscheme.el
@@ -1,6 +1,6 @@
1;;; cmuscheme.el --- Scheme process in a buffer. Adapted from tea.el 1;;; cmuscheme.el --- Scheme process in a buffer. Adapted from tea.el
2 2
3;; Copyright (C) 1988, 1994, 1997 Free Software Foundation, Inc. 3;; Copyright (C) 1988, 1994, 1997, 2004 Free Software Foundation, Inc.
4 4
5;; Author: Olin Shivers <olin.shivers@cs.cmu.edu> 5;; Author: Olin Shivers <olin.shivers@cs.cmu.edu>
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -140,9 +140,9 @@
140 (define-key map [switch] 140 (define-key map [switch]
141 '("Switch to Scheme" . switch-to-scheme)) 141 '("Switch to Scheme" . switch-to-scheme))
142 (define-key map [com-def-go] 142 (define-key map [com-def-go]
143 '("Compile Definitiion & Go" . scheme-compile-definition-and-go)) 143 '("Compile Definition & Go" . scheme-compile-definition-and-go))
144 (define-key map [com-def] 144 (define-key map [com-def]
145 '("Compile Definitiion" . scheme-compile-definition)) 145 '("Compile Definition" . scheme-compile-definition))
146 (define-key map [send-def-go] 146 (define-key map [send-def-go]
147 '("Evaluate Last Definition & Go" . scheme-send-definition-and-go)) 147 '("Evaluate Last Definition & Go" . scheme-send-definition-and-go))
148 (define-key map [send-def] 148 (define-key map [send-def]
@@ -437,5 +437,5 @@ This is a good place to put keybindings."
437 437
438(provide 'cmuscheme) 438(provide 'cmuscheme)
439 439
440;;; arch-tag: e8795f4a-c496-45a2-97b4-8e0f2a2c57d2 440;; arch-tag: e8795f4a-c496-45a2-97b4-8e0f2a2c57d2
441;;; cmuscheme.el ends here 441;;; cmuscheme.el ends here
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 108d7d87a1e..8f915d52d3a 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -517,7 +517,8 @@ as well as widgets, buttons, overlays, and text properties."
517 (push (format "%s;" (pop props)) ps)) 517 (push (format "%s;" (pop props)) ps))
518 (list (cons "Properties" (nreverse ps))))) 518 (list (cons "Properties" (nreverse ps)))))
519 ("to input" 519 ("to input"
520 ,@(let ((key-list (and current-input-method 520 ,@(let ((key-list (and (eq input-method-function
521 'quail-input-method)
521 (quail-find-key char)))) 522 (quail-find-key char))))
522 (if (consp key-list) 523 (if (consp key-list)
523 (list "type" 524 (list "type"
diff --git a/lisp/ediff-init.el b/lisp/ediff-init.el
index 81299b9c63a..80beb4a872d 100644
--- a/lisp/ediff-init.el
+++ b/lisp/ediff-init.el
@@ -902,9 +902,15 @@ to temp files when Ediff needs to find fine differences."
902 902
903 903
904(defface ediff-current-diff-face-A 904(defface ediff-current-diff-face-A
905 '((((type tty)) (:foreground "blue3" :background "yellow3")) 905 (if ediff-emacs-p
906 (((class color)) (:foreground "firebrick" :background "pale green")) 906 '((((class color) (min-colors 16))
907 (t (:inverse-video t))) 907 (:foreground "firebrick" :background "pale green"))
908 (((class color))
909 (:foreground "blue3" :background "yellow3"))
910 (t (:inverse-video t)))
911 '((((type tty)) (:foreground "blue3" :background "yellow3"))
912 (((class color)) (:foreground "firebrick" :background "pale green"))
913 (t (:inverse-video t))))
908 "Face for highlighting the selected difference in buffer A." 914 "Face for highlighting the selected difference in buffer A."
909 :group 'ediff-highlighting) 915 :group 'ediff-highlighting)
910;; An internal variable. Ediff takes the face from here. When unhighlighting, 916;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -925,10 +931,17 @@ this variable represents.")
925 931
926 932
927(defface ediff-current-diff-face-B 933(defface ediff-current-diff-face-B
928 '((((type tty)) (:foreground "magenta3" :background "yellow3" 934 (if ediff-emacs-p
929 :weight bold)) 935 '((((class color) (min-colors 16))
930 (((class color)) (:foreground "DarkOrchid" :background "Yellow")) 936 (:foreground "DarkOrchid" :background "Yellow"))
931 (t (:inverse-video t))) 937 (((class color))
938 (:foreground "magenta3" :background "yellow3"
939 :weight bold))
940 (t (:inverse-video t)))
941 '((((type tty)) (:foreground "magenta3" :background "yellow3"
942 :weight bold))
943 (((class color)) (:foreground "DarkOrchid" :background "Yellow"))
944 (t (:inverse-video t))))
932 "Face for highlighting the selected difference in buffer B." 945 "Face for highlighting the selected difference in buffer B."
933 :group 'ediff-highlighting) 946 :group 'ediff-highlighting)
934;; An internal variable. Ediff takes the face from here. When unhighlighting, 947;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -948,9 +961,15 @@ this variable represents.")
948 961
949 962
950(defface ediff-current-diff-face-C 963(defface ediff-current-diff-face-C
951 '((((type tty)) (:foreground "cyan3" :background "yellow3" :weight bold)) 964 (if ediff-emacs-p
952 (((class color)) (:foreground "Navy" :background "Pink")) 965 '((((class color) (min-colors 16))
953 (t (:inverse-video t))) 966 (:foreground "Navy" :background "Pink"))
967 (((class color))
968 (:foreground "cyan3" :background "yellow3" :weight bold))
969 (t (:inverse-video t)))
970 '((((type tty)) (:foreground "cyan3" :background "yellow3" :weight bold))
971 (((class color)) (:foreground "Navy" :background "Pink"))
972 (t (:inverse-video t))))
954 "Face for highlighting the selected difference in buffer C." 973 "Face for highlighting the selected difference in buffer C."
955 :group 'ediff-highlighting) 974 :group 'ediff-highlighting)
956;; An internal variable. Ediff takes the face from here. When unhighlighting, 975;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -970,9 +989,15 @@ this variable represents.")
970 989
971 990
972(defface ediff-current-diff-face-Ancestor 991(defface ediff-current-diff-face-Ancestor
973 '((((type tty)) (:foreground "black" :background "magenta3")) 992 (if ediff-emacs-p
974 (((class color)) (:foreground "Black" :background "VioletRed")) 993 '((((class color) (min-colors 16))
975 (t (:inverse-video t))) 994 (:foreground "Black" :background "VioletRed"))
995 (((class color))
996 (:foreground "black" :background "magenta3"))
997 (t (:inverse-video t)))
998 '((((type tty)) (:foreground "black" :background "magenta3"))
999 (((class color)) (:foreground "Black" :background "VioletRed"))
1000 (t (:inverse-video t))))
976 "Face for highlighting the selected difference in buffer Ancestor." 1001 "Face for highlighting the selected difference in buffer Ancestor."
977 :group 'ediff-highlighting) 1002 :group 'ediff-highlighting)
978;; An internal variable. Ediff takes the face from here. When unhighlighting, 1003;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -992,9 +1017,15 @@ this variable represents.")
992 1017
993 1018
994(defface ediff-fine-diff-face-A 1019(defface ediff-fine-diff-face-A
995 '((((type tty)) (:foreground "white" :background "sky blue" :weight bold)) 1020 (if ediff-emacs-p
996 (((class color)) (:foreground "Navy" :background "sky blue")) 1021 '((((class color) (min-colors 16))
997 (t (:underline t :stipple "gray3"))) 1022 (:foreground "Navy" :background "sky blue"))
1023 (((class color))
1024 (:foreground "white" :background "sky blue" :weight bold))
1025 (t (:underline t :stipple "gray3")))
1026 '((((type tty)) (:foreground "white" :background "sky blue" :weight bold))
1027 (((class color)) (:foreground "Navy" :background "sky blue"))
1028 (t (:underline t :stipple "gray3"))))
998 "Face for highlighting the refinement of the selected diff in buffer A." 1029 "Face for highlighting the refinement of the selected diff in buffer A."
999 :group 'ediff-highlighting) 1030 :group 'ediff-highlighting)
1000;; An internal variable. Ediff takes the face from here. When unhighlighting, 1031;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1007,9 +1038,15 @@ this variable represents.")
1007(ediff-hide-face 'ediff-fine-diff-face-A) 1038(ediff-hide-face 'ediff-fine-diff-face-A)
1008 1039
1009(defface ediff-fine-diff-face-B 1040(defface ediff-fine-diff-face-B
1010 '((((type tty)) (:foreground "magenta3" :background "cyan3")) 1041 (if ediff-emacs-p
1011 (((class color)) (:foreground "Black" :background "cyan")) 1042 '((((class color) (min-colors 16))
1012 (t (:underline t :stipple "gray3"))) 1043 (:foreground "Black" :background "cyan"))
1044 (((class color))
1045 (:foreground "magenta3" :background "cyan3"))
1046 (t (:underline t :stipple "gray3")))
1047 '((((type tty)) (:foreground "magenta3" :background "cyan3"))
1048 (((class color)) (:foreground "Black" :background "cyan"))
1049 (t (:underline t :stipple "gray3"))))
1013 "Face for highlighting the refinement of the selected diff in buffer B." 1050 "Face for highlighting the refinement of the selected diff in buffer B."
1014 :group 'ediff-highlighting) 1051 :group 'ediff-highlighting)
1015;; An internal variable. Ediff takes the face from here. When unhighlighting, 1052;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1022,11 +1059,20 @@ this variable represents.")
1022(ediff-hide-face 'ediff-fine-diff-face-B) 1059(ediff-hide-face 'ediff-fine-diff-face-B)
1023 1060
1024(defface ediff-fine-diff-face-C 1061(defface ediff-fine-diff-face-C
1025 '((((type tty)) (:foreground "yellow3" :background "Turquoise" 1062 (if ediff-emacs-p
1026 :weight bold)) 1063 '((((type pc))
1027 (((type pc)) (:foreground "white" :background "Turquoise")) 1064 (:foreground "white" :background "Turquoise"))
1028 (((class color)) (:foreground "Black" :background "Turquoise")) 1065 (((class color) (min-colors 16))
1029 (t (:underline t :stipple "gray3"))) 1066 (:foreground "Black" :background "Turquoise"))
1067 (((class color))
1068 (:foreground "yellow3" :background "Turquoise"
1069 :weight bold))
1070 (t (:underline t :stipple "gray3")))
1071 '((((type tty)) (:foreground "yellow3" :background "Turquoise"
1072 :weight bold))
1073 (((type pc)) (:foreground "white" :background "Turquoise"))
1074 (((class color)) (:foreground "Black" :background "Turquoise"))
1075 (t (:underline t :stipple "gray3"))))
1030 "Face for highlighting the refinement of the selected diff in buffer C." 1076 "Face for highlighting the refinement of the selected diff in buffer C."
1031 :group 'ediff-highlighting) 1077 :group 'ediff-highlighting)
1032;; An internal variable. Ediff takes the face from here. When unhighlighting, 1078;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1039,9 +1085,15 @@ this variable represents.")
1039(ediff-hide-face 'ediff-fine-diff-face-C) 1085(ediff-hide-face 'ediff-fine-diff-face-C)
1040 1086
1041(defface ediff-fine-diff-face-Ancestor 1087(defface ediff-fine-diff-face-Ancestor
1042 '((((type tty)) (:foreground "red3" :background "green")) 1088 (if ediff-emacs-p
1043 (((class color)) (:foreground "Black" :background "Green")) 1089 '((((class color) (min-colors 16))
1044 (t (:underline t :stipple "gray3"))) 1090 (:foreground "Black" :background "Green"))
1091 (((class color))
1092 (:foreground "red3" :background "green"))
1093 (t (:underline t :stipple "gray3")))
1094 '((((type tty)) (:foreground "red3" :background "green"))
1095 (((class color)) (:foreground "Black" :background "Green"))
1096 (t (:underline t :stipple "gray3"))))
1045 "Face for highlighting the refinement of the selected diff in the ancestor buffer. 1097 "Face for highlighting the refinement of the selected diff in the ancestor buffer.
1046At present, this face is not used and no fine differences are computed for the 1098At present, this face is not used and no fine differences are computed for the
1047ancestor buffer." 1099ancestor buffer."
@@ -1065,11 +1117,20 @@ this variable represents.")
1065 (t "Stipple"))) 1117 (t "Stipple")))
1066 1118
1067(defface ediff-even-diff-face-A 1119(defface ediff-even-diff-face-A
1068 `((((type tty)) (:foreground "red3" :background "light grey" 1120 (if ediff-emacs-p
1069 :weight bold)) 1121 `((((type pc))
1070 (((type pc)) (:foreground "green3" :background "light grey")) 1122 (:foreground "green3" :background "light grey"))
1071 (((class color)) (:foreground "Black" :background "light grey")) 1123 (((class color) (min-colors 16))
1072 (t (:italic t :stipple ,stipple-pixmap))) 1124 (:foreground "Black" :background "light grey"))
1125 (((class color))
1126 (:foreground "red3" :background "light grey"
1127 :weight bold))
1128 (t (:italic t :stipple ,stipple-pixmap)))
1129 `((((type tty)) (:foreground "red3" :background "light grey"
1130 :weight bold))
1131 (((type pc)) (:foreground "green3" :background "light grey"))
1132 (((class color)) (:foreground "Black" :background "light grey"))
1133 (t (:italic t :stipple ,stipple-pixmap))))
1073 "Face for highlighting even-numbered non-current differences in buffer A." 1134 "Face for highlighting even-numbered non-current differences in buffer A."
1074 :group 'ediff-highlighting) 1135 :group 'ediff-highlighting)
1075;; An internal variable. Ediff takes the face from here. When unhighlighting, 1136;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1082,9 +1143,15 @@ this variable represents.")
1082(ediff-hide-face 'ediff-even-diff-face-A) 1143(ediff-hide-face 'ediff-even-diff-face-A)
1083 1144
1084(defface ediff-even-diff-face-B 1145(defface ediff-even-diff-face-B
1085 `((((type tty)) (:foreground "blue3" :background "Grey" :weight bold)) 1146 (if ediff-emacs-p
1086 (((class color)) (:foreground "White" :background "Grey")) 1147 `((((class color) (min-colors 16))
1087 (t (:italic t :stipple ,stipple-pixmap))) 1148 (:foreground "White" :background "Grey"))
1149 (((class color))
1150 (:foreground "blue3" :background "Grey" :weight bold))
1151 (t (:italic t :stipple ,stipple-pixmap)))
1152 `((((type tty)) (:foreground "blue3" :background "Grey" :weight bold))
1153 (((class color)) (:foreground "White" :background "Grey"))
1154 (t (:italic t :stipple ,stipple-pixmap))))
1088 "Face for highlighting even-numbered non-current differences in buffer B." 1155 "Face for highlighting even-numbered non-current differences in buffer B."
1089 :group 'ediff-highlighting) 1156 :group 'ediff-highlighting)
1090;; An internal variable. Ediff takes the face from here. When unhighlighting, 1157;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1097,11 +1164,20 @@ this variable represents.")
1097(ediff-hide-face 'ediff-even-diff-face-B) 1164(ediff-hide-face 'ediff-even-diff-face-B)
1098 1165
1099(defface ediff-even-diff-face-C 1166(defface ediff-even-diff-face-C
1100 `((((type tty)) (:foreground "yellow3" :background "light grey" 1167 (if ediff-emacs-p
1101 :weight bold)) 1168 `((((type pc))
1102 (((type pc)) (:foreground "yellow3" :background "light grey")) 1169 (:foreground "yellow3" :background "light grey"))
1103 (((class color)) (:foreground "Black" :background "light grey")) 1170 (((class color) (min-colors 16))
1104 (t (:italic t :stipple ,stipple-pixmap))) 1171 (:foreground "Black" :background "light grey"))
1172 (((class color))
1173 (:foreground "yellow3" :background "light grey"
1174 :weight bold))
1175 (t (:italic t :stipple ,stipple-pixmap)))
1176 `((((type tty)) (:foreground "yellow3" :background "light grey"
1177 :weight bold))
1178 (((type pc)) (:foreground "yellow3" :background "light grey"))
1179 (((class color)) (:foreground "Black" :background "light grey"))
1180 (t (:italic t :stipple ,stipple-pixmap))))
1105 "Face for highlighting even-numbered non-current differences in buffer C." 1181 "Face for highlighting even-numbered non-current differences in buffer C."
1106 :group 'ediff-highlighting) 1182 :group 'ediff-highlighting)
1107;; An internal variable. Ediff takes the face from here. When unhighlighting, 1183;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1114,11 +1190,20 @@ this variable represents.")
1114(ediff-hide-face 'ediff-even-diff-face-C) 1190(ediff-hide-face 'ediff-even-diff-face-C)
1115 1191
1116(defface ediff-even-diff-face-Ancestor 1192(defface ediff-even-diff-face-Ancestor
1117 `((((type tty)) (:foreground "cyan3" :background "light grey" 1193 (if ediff-emacs-p
1118 :weight bold)) 1194 `((((type pc))
1119 (((type pc)) (:foreground "cyan3" :background "light grey")) 1195 (:foreground "cyan3" :background "light grey"))
1120 (((class color)) (:foreground "White" :background "Grey")) 1196 (((class color) (min-colors 16))
1121 (t (:italic t :stipple ,stipple-pixmap))) 1197 (:foreground "White" :background "Grey"))
1198 (((class color))
1199 (:foreground "cyan3" :background "light grey"
1200 :weight bold))
1201 (t (:italic t :stipple ,stipple-pixmap)))
1202 `((((type tty)) (:foreground "cyan3" :background "light grey"
1203 :weight bold))
1204 (((type pc)) (:foreground "cyan3" :background "light grey"))
1205 (((class color)) (:foreground "White" :background "Grey"))
1206 (t (:italic t :stipple ,stipple-pixmap))))
1122 "Face for highlighting even-numbered non-current differences in the ancestor buffer." 1207 "Face for highlighting even-numbered non-current differences in the ancestor buffer."
1123 :group 'ediff-highlighting) 1208 :group 'ediff-highlighting)
1124;; An internal variable. Ediff takes the face from here. When unhighlighting, 1209;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1138,10 +1223,18 @@ this variable represents.")
1138 (Ancestor . ediff-even-diff-face-Ancestor))) 1223 (Ancestor . ediff-even-diff-face-Ancestor)))
1139 1224
1140(defface ediff-odd-diff-face-A 1225(defface ediff-odd-diff-face-A
1141 '((((type tty)) (:foreground "red3" :background "black" :weight bold)) 1226 (if ediff-emacs-p
1142 (((type pc)) (:foreground "green3" :background "gray40")) 1227 '((((type pc))
1143 (((class color)) (:foreground "White" :background "Grey")) 1228 (:foreground "green3" :background "gray40"))
1144 (t (:italic t :stipple "gray1"))) 1229 (((class color) (min-colors 16))
1230 (:foreground "White" :background "Grey"))
1231 (((class color))
1232 (:foreground "red3" :background "black" :weight bold))
1233 (t (:italic t :stipple "gray1")))
1234 '((((type tty)) (:foreground "red3" :background "black" :weight bold))
1235 (((type pc)) (:foreground "green3" :background "gray40"))
1236 (((class color)) (:foreground "White" :background "Grey"))
1237 (t (:italic t :stipple "gray1"))))
1145 "Face for highlighting odd-numbered non-current differences in buffer A." 1238 "Face for highlighting odd-numbered non-current differences in buffer A."
1146 :group 'ediff-highlighting) 1239 :group 'ediff-highlighting)
1147;; An internal variable. Ediff takes the face from here. When unhighlighting, 1240;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1155,10 +1248,18 @@ this variable represents.")
1155 1248
1156 1249
1157(defface ediff-odd-diff-face-B 1250(defface ediff-odd-diff-face-B
1158 '((((type tty)) (:foreground "cyan3" :background "black" :weight bold)) 1251 (if ediff-emacs-p
1159 (((type pc)) (:foreground "White" :background "gray40")) 1252 '((((type pc))
1160 (((class color)) (:foreground "Black" :background "light grey")) 1253 (:foreground "White" :background "gray40"))
1161 (t (:italic t :stipple "gray1"))) 1254 (((class color) (min-colors 16))
1255 (:foreground "Black" :background "light grey"))
1256 (((class color))
1257 (:foreground "cyan3" :background "black" :weight bold))
1258 (t (:italic t :stipple "gray1")))
1259 '((((type tty)) (:foreground "cyan3" :background "black" :weight bold))
1260 (((type pc)) (:foreground "White" :background "gray40"))
1261 (((class color)) (:foreground "Black" :background "light grey"))
1262 (t (:italic t :stipple "gray1"))))
1162 "Face for highlighting odd-numbered non-current differences in buffer B." 1263 "Face for highlighting odd-numbered non-current differences in buffer B."
1163 :group 'ediff-highlighting) 1264 :group 'ediff-highlighting)
1164;; An internal variable. Ediff takes the face from here. When unhighlighting, 1265;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1171,10 +1272,18 @@ this variable represents.")
1171(ediff-hide-face 'ediff-odd-diff-face-B) 1272(ediff-hide-face 'ediff-odd-diff-face-B)
1172 1273
1173(defface ediff-odd-diff-face-C 1274(defface ediff-odd-diff-face-C
1174 '((((type tty)) (:foreground "yellow3" :background "black" :weight bold)) 1275 (if ediff-emacs-p
1175 (((type pc)) (:foreground "yellow3" :background "gray40")) 1276 '((((type pc))
1176 (((class color)) (:foreground "White" :background "Grey")) 1277 (:foreground "yellow3" :background "gray40"))
1177 (t (:italic t :stipple "gray1"))) 1278 (((class color) (min-colors 16))
1279 (:foreground "White" :background "Grey"))
1280 (((class color))
1281 (:foreground "yellow3" :background "black" :weight bold))
1282 (t (:italic t :stipple "gray1")))
1283 '((((type tty)) (:foreground "yellow3" :background "black" :weight bold))
1284 (((type pc)) (:foreground "yellow3" :background "gray40"))
1285 (((class color)) (:foreground "White" :background "Grey"))
1286 (t (:italic t :stipple "gray1"))))
1178 "Face for highlighting odd-numbered non-current differences in buffer C." 1287 "Face for highlighting odd-numbered non-current differences in buffer C."
1179 :group 'ediff-highlighting) 1288 :group 'ediff-highlighting)
1180;; An internal variable. Ediff takes the face from here. When unhighlighting, 1289;; An internal variable. Ediff takes the face from here. When unhighlighting,
@@ -1187,9 +1296,15 @@ this variable represents.")
1187(ediff-hide-face 'ediff-odd-diff-face-C) 1296(ediff-hide-face 'ediff-odd-diff-face-C)
1188 1297
1189(defface ediff-odd-diff-face-Ancestor 1298(defface ediff-odd-diff-face-Ancestor
1190 '((((type tty)) (:foreground "green3" :background "black" :weight bold)) 1299 (if ediff-emacs-p
1191 (((class color)) (:foreground "cyan3" :background "gray40")) 1300 '((((class color) (min-colors 16))
1192 (t (:italic t :stipple "gray1"))) 1301 (:foreground "cyan3" :background "gray40"))
1302 (((class color))
1303 (:foreground "green3" :background "black" :weight bold))
1304 (t (:italic t :stipple "gray1")))
1305 '((((type tty)) (:foreground "green3" :background "black" :weight bold))
1306 (((class color)) (:foreground "cyan3" :background "gray40"))
1307 (t (:italic t :stipple "gray1"))))
1193 "Face for highlighting odd-numbered non-current differences in the ancestor buffer." 1308 "Face for highlighting odd-numbered non-current differences in the ancestor buffer."
1194 :group 'ediff-highlighting) 1309 :group 'ediff-highlighting)
1195;; An internal variable. Ediff takes the face from here. When unhighlighting, 1310;; An internal variable. Ediff takes the face from here. When unhighlighting,
diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el
index 9730536ac37..c16b6113516 100644
--- a/lisp/eshell/esh-ext.el
+++ b/lisp/eshell/esh-ext.el
@@ -150,8 +150,8 @@ by the user on the command line."
150 150
151(defcustom eshell-explicit-command-char ?* 151(defcustom eshell-explicit-command-char ?*
152 "*If this char occurs before a command name, call it externally. 152 "*If this char occurs before a command name, call it externally.
153That is, although vi may be an alias, *vi will always call the 153That is, although `vi' may be an alias, `\vi' will always call the
154external version. UNIX users may prefer this variable to be \." 154external version."
155 :type 'character 155 :type 'character
156 :group 'eshell-ext) 156 :group 'eshell-ext)
157 157
diff --git a/lisp/files.el b/lisp/files.el
index 5571ede9d3e..962fd483c2c 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -439,10 +439,7 @@ specified in a -*- line.")
439 "*Control processing of the \"variable\" `eval' in a file's local variables. 439 "*Control processing of the \"variable\" `eval' in a file's local variables.
440The value can be t, nil or something else. 440The value can be t, nil or something else.
441A value of t means obey `eval' variables; 441A value of t means obey `eval' variables;
442nil means ignore them; anything else means query. 442nil means ignore them; anything else means query."
443
444The command \\[normal-mode] always obeys local-variables lists
445and ignores this variable."
446 :type '(choice (const :tag "Obey" t) 443 :type '(choice (const :tag "Obey" t)
447 (const :tag "Ignore" nil) 444 (const :tag "Ignore" nil)
448 (other :tag "Query" other)) 445 (other :tag "Query" other))
@@ -2110,9 +2107,7 @@ is specified, returning t if it is specified."
2110 buffer-file-name) 2107 buffer-file-name)
2111 (concat "buffer " 2108 (concat "buffer "
2112 (buffer-name)))))))))) 2109 (buffer-name))))))))))
2113 (let ((continue t) 2110 (let (prefix prefixlen suffix beg
2114 prefix prefixlen suffix beg
2115 mode-specified
2116 (enable-local-eval enable-local-eval)) 2111 (enable-local-eval enable-local-eval))
2117 ;; The prefix is what comes before "local variables:" in its line. 2112 ;; The prefix is what comes before "local variables:" in its line.
2118 ;; The suffix is what comes after "local variables:" in its line. 2113 ;; The suffix is what comes after "local variables:" in its line.
@@ -2129,46 +2124,66 @@ is specified, returning t if it is specified."
2129 (if prefix (setq prefixlen (length prefix) 2124 (if prefix (setq prefixlen (length prefix)
2130 prefix (regexp-quote prefix))) 2125 prefix (regexp-quote prefix)))
2131 (if suffix (setq suffix (concat (regexp-quote suffix) "$"))) 2126 (if suffix (setq suffix (concat (regexp-quote suffix) "$")))
2132 (while continue 2127 (forward-line 1)
2133 ;; Look at next local variable spec. 2128 (let ((startpos (point))
2134 (if selective-display (re-search-forward "[\n\C-m]") 2129 endpos
2135 (forward-line 1)) 2130 (thisbuf (current-buffer)))
2136 ;; Skip the prefix, if any. 2131 (save-excursion
2137 (if prefix 2132 (if (not (re-search-forward
2138 (if (looking-at prefix) 2133 (concat (or prefix "")
2139 (forward-char prefixlen) 2134 "[ \t]*End:[ \t]*"
2140 (error "Local variables entry is missing the prefix"))) 2135 (or suffix ""))
2141 ;; Find the variable name; strip whitespace. 2136 nil t))
2142 (skip-chars-forward " \t") 2137 (error "Local variables list is not properly terminated"))
2143 (setq beg (point)) 2138 (beginning-of-line)
2144 (skip-chars-forward "^:\n") 2139 (setq endpos (point)))
2145 (if (eolp) (error "Missing colon in local variables entry")) 2140
2146 (skip-chars-backward " \t") 2141 (with-temp-buffer
2147 (let* ((str (buffer-substring beg (point))) 2142 (insert-buffer-substring thisbuf startpos endpos)
2148 (var (read str)) 2143 (goto-char (point-min))
2149 val) 2144 (subst-char-in-region (point) (point-max)
2150 ;; Setting variable named "end" means end of list. 2145 ?\^m ?\n)
2151 (if (string-equal (downcase str) "end") 2146 (while (not (eobp))
2152 (setq continue nil) 2147 ;; Discard the prefix, if any.
2153 ;; Otherwise read the variable value. 2148 (if prefix
2154 (skip-chars-forward "^:") 2149 (if (looking-at prefix)
2155 (forward-char 1) 2150 (delete-region (point) (match-end 0))
2156 (setq val (read (current-buffer))) 2151 (error "Local variables entry is missing the prefix")))
2157 (skip-chars-backward "\n") 2152 (end-of-line)
2153 ;; Discard the suffix, if any.
2154 (if suffix
2155 (if (looking-back suffix)
2156 (delete-region (match-beginning 0) (point))
2157 (error "Local variables entry is missing the suffix")))
2158 (forward-line 1))
2159 (goto-char (point-min))
2160
2161 (while (not (eobp))
2162 ;; Find the variable name; strip whitespace.
2158 (skip-chars-forward " \t") 2163 (skip-chars-forward " \t")
2159 (or (if suffix (looking-at suffix) (eolp)) 2164 (setq beg (point))
2160 (error "Local variables entry is terminated incorrectly")) 2165 (skip-chars-forward "^:\n")
2161 (if mode-only 2166 (if (eolp) (error "Missing colon in local variables entry"))
2162 (if (eq var 'mode) 2167 (skip-chars-backward " \t")
2163 (setq mode-specified t)) 2168 (let* ((str (buffer-substring beg (point)))
2164 ;; Set the variable. "Variables" mode and eval are funny. 2169 (var (read str))
2165 (hack-one-local-variable var val)))))))) 2170 val)
2171 ;; Read the variable value.
2172 (skip-chars-forward "^:")
2173 (forward-char 1)
2174 (setq val (read (current-buffer)))
2175 (if mode-only
2176 (if (eq var 'mode)
2177 (setq mode-specified t))
2178 ;; Set the variable. "Variables" mode and eval are funny.
2179 (with-current-buffer thisbuf
2180 (hack-one-local-variable var val))))
2181 (forward-line 1)))))))
2166 (unless mode-only 2182 (unless mode-only
2167 (run-hooks 'hack-local-variables-hook)) 2183 (run-hooks 'hack-local-variables-hook))
2168 mode-specified)) 2184 mode-specified))
2169 2185
2170(defvar ignored-local-variables 2186(defvar ignored-local-variables ()
2171 '(enable-local-eval)
2172 "Variables to be ignored in a file's local variable spec.") 2187 "Variables to be ignored in a file's local variable spec.")
2173 2188
2174;; Get confirmation before setting these variables as locals in a file. 2189;; Get confirmation before setting these variables as locals in a file.
@@ -2234,8 +2249,7 @@ is specified, returning t if it is specified."
2234If VAL is nil or omitted, the question is whether any value might be 2249If VAL is nil or omitted, the question is whether any value might be
2235dangerous." 2250dangerous."
2236 (let ((safep (get sym 'safe-local-variable))) 2251 (let ((safep (get sym 'safe-local-variable)))
2237 (or (memq sym ignored-local-variables) 2252 (or (get sym 'risky-local-variable)
2238 (get sym 'risky-local-variable)
2239 (and (string-match "-hooks?$\\|-functions?$\\|-forms?$\\|-program$\\|-command$\\|-predicate$\\|font-lock-keywords$\\|font-lock-keywords-[0-9]+$\\|font-lock-syntactic-keywords$\\|-frame-alist$\\|-mode-alist$\\|-map$\\|-map-alist$" 2253 (and (string-match "-hooks?$\\|-functions?$\\|-forms?$\\|-program$\\|-command$\\|-predicate$\\|font-lock-keywords$\\|font-lock-keywords-[0-9]+$\\|font-lock-syntactic-keywords$\\|-frame-alist$\\|-mode-alist$\\|-map$\\|-map-alist$"
2240 (symbol-name sym)) 2254 (symbol-name sym))
2241 (not safep)) 2255 (not safep))
@@ -2309,6 +2323,8 @@ is considered risky."
2309 ((eq var 'coding) 2323 ((eq var 'coding)
2310 ;; We have already handled coding: tag in set-auto-coding. 2324 ;; We have already handled coding: tag in set-auto-coding.
2311 nil) 2325 nil)
2326 ((memq var ignored-local-variables)
2327 nil)
2312 ;; "Setting" eval means either eval it or do nothing. 2328 ;; "Setting" eval means either eval it or do nothing.
2313 ;; Likewise for setting hook variables. 2329 ;; Likewise for setting hook variables.
2314 ((risky-local-variable-p var val) 2330 ((risky-local-variable-p var val)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 46b673ce540..60ad776347c 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,6 +1,156 @@
12004-09-20 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * mm-decode.el (mm-copy-to-buffer): Preserve the data's unibyteness.
4
52004-09-20 Reiner Steib <Reiner.Steib@gmx.de>
6
7 * uudecode.el (uudecode-use-external): Add :version.
8
9 * smime.el (smime-CA-file, smime-encrypt-cipher)
10 (smime-dns-server): Add :version.
11
12 * smiley.el (gnus-smiley-file-types): Add :version.
13
14 * sha1.el (sha1-use-external): Add :version.
15
16 * pgg-def.el (pgg-query-keyserver): Add :version.
17
18 * nnmail.el (nnmail-fancy-expiry-targets)
19 (nnmail-mail-splitting-charset, nnmail-mail-splitting-decodes):
20
21 * nnimap.el (nnimap-split-download-body, nnimap-dont-close)
22 (nnimap-retrieve-groups-asynchronous): Add :version.
23 (nnimap-close-asynchronous): Add :version. Fixed typo in doc string.
24
25 * mml.el (mml-content-disposition-parameters)
26 (mml-insert-mime-headers-always): Add :version.
27
28 * mm-util.el (mm-coding-system-priorities):
29
30 * mm-decode.el (mm-inline-text-html-with-images)
31 (mm-keep-viewer-alive-types, mm-external-terminal-program)
32 (mm-verify-option): Add :version.
33 (mm-text-html-renderer): Change :version.
34
35 * message.el (message-fcc-externalize-attachments)
36 (message-required-headers, message-draft-headers)
37 (message-subject-trailing-was-query)
38 (message-subject-trailing-was-ask-regexp)
39 (message-subject-trailing-was-regexp, message-mark-insert-begin)
40 (message-mark-insert-end, message-archive-header)
41 (message-archive-note, message-cross-post-default)
42 (message-cross-post-note, message-followup-to-note)
43 (message-cross-post-note-function, message-use-mail-followup-to)
44 (message-subscribed-address-functions)
45 (message-subscribed-address-file, message-subscribed-addresses)
46 (message-subscribed-regexps, message-allow-no-recipients)
47 (message-yank-cited-prefix, message-signature-insert-empty-line)
48 (message-hidden-headers, message-hierarchical-addresses)
49 (message-mail-user-agent, message-use-idna)
50 (message-valid-fqdn-regexp)
51 (message-strip-special-text-properties, message-header-synonyms)
52 (message-beginning-of-line, message-tab-body-function): Add :version.
53 (message-insert-canlock, message-wide-reply-confirm-recipients):
54 Change :version.
55
56 * mail-source.el (mail-source-ignore-errors): Add :group, :type
57 and :version.
58 (mail-source-delete-old-incoming-confirm)
59 (mail-source-movemail-program): Add :version.
60
61 * gnus.el (gnus-parameters, gnus-user-agent): Add :version.
62 (gnus-agent-cache, gnus-agent): Change :version.
63
64 * gnus-util.el (gnus-use-byte-compile): Change :version.
65
66 * gnus-sum.el (gnus-summary-make-false-root-always)
67 (gnus-summary-default-high-score)
68 (gnus-summary-default-low-score, gnus-auto-goto-ignores)
69 (gnus-forwarded-mark, gnus-unseen-mark, gnus-no-mark)
70 (gnus-read-all-available-headers, gnus-article-emulate-mime)
71 (gnus-sum-thread-tree-root, gnus-sum-thread-tree-false-root)
72 (gnus-sum-thread-tree-single-indent)
73 (gnus-sum-thread-tree-vertical, gnus-sum-thread-tree-indent)
74 (gnus-sum-thread-tree-leaf-with-other)
75 (gnus-sum-thread-tree-single-leaf): Add :version.
76 (gnus-summary-display-arrow, gnus-summary-muttprint-program)
77 (gnus-article-loose-mime): Change :version.
78
79 * gnus-start.el (gnus-backup-startup-file)
80 (gnus-save-startup-file-via-temp-buffer): Add :version.
81
82 * gnus-srvr.el (gnus-server-browse-in-group-buffer)
83 (gnus-server-offline-face): Add :version.
84
85 * gnus-score.el (gnus-adaptive-word-length-limit):
86
87 * gnus-msg.el (gnus-gcc-externalize-attachments)
88 (gnus-debug-files, gnus-debug-exclude-variables)
89 (gnus-discouraged-post-methods): Change :version.
90 (gnus-confirm-mail-reply-to-news)
91 (gnus-confirm-treat-mail-like-news): Add :version.
92
93 * gnus-int.el (gnus-server-unopen-status): Add :version.
94
95 * gnus-group.el (gnus-group-jump-to-group-prompt)
96 (gnus-large-ephemeral-newsgroup)
97 (gnus-fetch-old-ephemeral-headers): Add :version.
98
99 * gnus-fun.el (gnus-x-face-directory)
100 (gnus-convert-pbm-to-x-face-command)
101 (gnus-convert-image-to-x-face-command)
102 (gnus-convert-image-to-face-command): Add :version.
103
104 * gnus-delay.el (gnus-delay-default-hour): Add :version.
105
106 * gnus-cite.el (gnus-cite-blank-line-after-header)
107 (gnus-article-boring-faces):
108
109 * gnus-art.el (gnus-buttonized-mime-types)
110 (gnus-inhibit-mime-unbuttonizing)
111 (gnus-treat-display-face)
112 (gnus-treat-body-boundary): Change :version.
113 (gnus-body-boundary-delimiter, gnus-picon-databases)
114 (gnus-treat-strip-cr, gnus-treat-leading-whitespace)
115 (gnus-treat-date-english, gnus-treat-fold-headers)
116 (gnus-article-skip-boring, gnus-treat-fold-newsgroups)
117 (gnus-treat-mail-picon, gnus-treat-wash-html)
118 (gnus-article-encrypt-protocol)
119 (gnus-use-idna, gnus-article-over-scroll)
120 (gnus-mime-display-multipart-alternative-as-mixed)
121 (gnus-mime-display-multipart-related-as-mixed)
122 (gnus-button-valid-fqdn-regexp, gnus-button-man-handler)
123 (gnus-ctan-url, gnus-button-ctan-handler)
124 (gnus-button-handle-ctan-bogus-regexp)
125 (gnus-button-ctan-directory-regexp)
126 (gnus-button-mid-or-mail-regexp, gnus-button-prefer-mid-or-mail)
127 (gnus-button-mid-or-mail-heuristic-alist, gnus-button-tex-level)
128 (gnus-button-man-level, gnus-button-emacs-level)
129 (gnus-button-message-level, gnus-button-browse-level): Add :version.
130
131 * gnus-agent.el (gnus-agent-fetched-hook): Add :version.
132 (gnus-agent-go-online): Change :version.
133 (gnus-agent-expire-unagentized-dirs)
134 (gnus-agent-auto-agentize-methods): Add :version.
135
136 * flow-fill.el (fill-flowed-display-column)
137 (fill-flowed-encode-column): Add :version.
138
139 * deuglify.el (gnus-outlook-deuglify-unwrap-min)
140 (gnus-outlook-deuglify-unwrap-max)
141 (gnus-outlook-deuglify-cite-marks)
142 (gnus-outlook-deuglify-unwrap-stop-chars)
143 (gnus-outlook-deuglify-no-wrap-chars)
144 (gnus-outlook-deuglify-attrib-cut-regexp)
145 (gnus-outlook-deuglify-attrib-verb-regexp)
146 (gnus-outlook-deuglify-attrib-end-regexp)
147 (gnus-outlook-display-hook): Add :version.
148
149 * binhex.el (binhex-use-external): Add :version.
150
12004-09-16 Reiner Steib <Reiner.Steib@gmx.de> 1512004-09-16 Reiner Steib <Reiner.Steib@gmx.de>
2 152
3 * gnus-sum.el (gnus-fetch-old-headers): Added custom choices `t' 153 * gnus-sum.el (gnus-fetch-old-headers): Add custom choices `t'
4 and `invisible'. 154 and `invisible'.
5 155
62004-09-13 Simon Josefsson <jas@extundo.com> 1562004-09-13 Simon Josefsson <jas@extundo.com>
@@ -9,7 +159,7 @@
9 159
102004-09-13 Reiner Steib <Reiner.Steib@gmx.de> 1602004-09-13 Reiner Steib <Reiner.Steib@gmx.de>
11 161
12 * gnus-sum.el (gnus-summary-copy-article): Fixed doc string. 162 * gnus-sum.el (gnus-summary-copy-article): Fix doc string.
13 163
142004-09-10 Miles Bader <miles@gnu.ai.mit.edu> 1642004-09-10 Miles Bader <miles@gnu.ai.mit.edu>
15 165
@@ -17,10 +167,10 @@
17 167
182004-09-10 Teodor Zlatanov <tzz@lifelogs.com> 1682004-09-10 Teodor Zlatanov <tzz@lifelogs.com>
19 169
20 * nnimap.el (nnimap-open-connection): allow 'imaps' as a synonym 170 * nnimap.el (nnimap-open-connection): Allow 'imaps' as a synonym
21 for the 'imap' port in netrc files 171 for the 'imap' port in netrc files
22 172
23 * gnus-registry.el (gnus-registry-trim): watch out for negatives 173 * gnus-registry.el (gnus-registry-trim): Watch out for negatives
24 in gnus-registry-trim 174 in gnus-registry-trim
25 175
262004-09-10 Simon Josefsson <jas@extundo.com> 1762004-09-10 Simon Josefsson <jas@extundo.com>
@@ -30,10 +180,9 @@
302004-09-08 Reiner Steib <Reiner.Steib@gmx.de> 1802004-09-08 Reiner Steib <Reiner.Steib@gmx.de>
31 181
32 * nntp.el (nntp): New customization group. 182 * nntp.el (nntp): New customization group.
33 (nntp-authinfo-file): Added customization group. 183 (nntp-authinfo-file): Add customization group.
34 184
35 * mml2015.el (mml2015-unabbrev-trust-alist): Added customization 185 * mml2015.el (mml2015-unabbrev-trust-alist): Add customization group.
36 group.
37 186
38 * mml-sec.el (mml-signencrypt-style-alist): Ditto. 187 * mml-sec.el (mml-signencrypt-style-alist): Ditto.
39 188
diff --git a/lisp/gnus/binhex.el b/lisp/gnus/binhex.el
index 248e1c8d8e5..17103c1b4f3 100644
--- a/lisp/gnus/binhex.el
+++ b/lisp/gnus/binhex.el
@@ -50,6 +50,7 @@ input and write the converted data to its standard output."
50(defcustom binhex-use-external 50(defcustom binhex-use-external
51 (executable-find binhex-decoder-program) 51 (executable-find binhex-decoder-program)
52 "*Use external binhex program." 52 "*Use external binhex program."
53 :version "21.4"
53 :group 'gnus-extract 54 :group 'gnus-extract
54 :type 'boolean) 55 :type 'boolean)
55 56
diff --git a/lisp/gnus/deuglify.el b/lisp/gnus/deuglify.el
index 85d45cd3513..07e630d793b 100644
--- a/lisp/gnus/deuglify.el
+++ b/lisp/gnus/deuglify.el
@@ -235,46 +235,54 @@
235;;;###autoload 235;;;###autoload
236(defcustom gnus-outlook-deuglify-unwrap-min 45 236(defcustom gnus-outlook-deuglify-unwrap-min 45
237 "Minimum length of the cited line above the (possibly) wrapped line." 237 "Minimum length of the cited line above the (possibly) wrapped line."
238 :version "21.4"
238 :type 'integer 239 :type 'integer
239 :group 'gnus-outlook-deuglify) 240 :group 'gnus-outlook-deuglify)
240 241
241;;;###autoload 242;;;###autoload
242(defcustom gnus-outlook-deuglify-unwrap-max 95 243(defcustom gnus-outlook-deuglify-unwrap-max 95
243 "Maximum length of the cited line after unwrapping." 244 "Maximum length of the cited line after unwrapping."
245 :version "21.4"
244 :type 'integer 246 :type 'integer
245 :group 'gnus-outlook-deuglify) 247 :group 'gnus-outlook-deuglify)
246 248
247(defcustom gnus-outlook-deuglify-cite-marks ">|#%" 249(defcustom gnus-outlook-deuglify-cite-marks ">|#%"
248 "Characters that indicate cited lines." 250 "Characters that indicate cited lines."
251 :version "21.4"
249 :type 'string 252 :type 'string
250 :group 'gnus-outlook-deuglify) 253 :group 'gnus-outlook-deuglify)
251 254
252(defcustom gnus-outlook-deuglify-unwrap-stop-chars nil ;; ".?!" or nil 255(defcustom gnus-outlook-deuglify-unwrap-stop-chars nil ;; ".?!" or nil
253 "Characters that inhibit unwrapping if they are the last one on the cited line above the possible wrapped line." 256 "Characters that inhibit unwrapping if they are the last one on the cited line above the possible wrapped line."
257 :version "21.4"
254 :type '(radio (const :format "None " nil) 258 :type '(radio (const :format "None " nil)
255 (string :size 0 :value ".?!")) 259 (string :size 0 :value ".?!"))
256 :group 'gnus-outlook-deuglify) 260 :group 'gnus-outlook-deuglify)
257 261
258(defcustom gnus-outlook-deuglify-no-wrap-chars "`" 262(defcustom gnus-outlook-deuglify-no-wrap-chars "`"
259 "Characters that inhibit unwrapping if they are the first one in the possibly wrapped line." 263 "Characters that inhibit unwrapping if they are the first one in the possibly wrapped line."
264 :version "21.4"
260 :type 'string 265 :type 'string
261 :group 'gnus-outlook-deuglify) 266 :group 'gnus-outlook-deuglify)
262 267
263(defcustom gnus-outlook-deuglify-attrib-cut-regexp 268(defcustom gnus-outlook-deuglify-attrib-cut-regexp
264 "\\(On \\|Am \\)?\\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\),[^,]+, " 269 "\\(On \\|Am \\)?\\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\),[^,]+, "
265 "Regular expression matching the beginning of an attribution line that should be cut off." 270 "Regular expression matching the beginning of an attribution line that should be cut off."
271 :version "21.4"
266 :type 'string 272 :type 'string
267 :group 'gnus-outlook-deuglify) 273 :group 'gnus-outlook-deuglify)
268 274
269(defcustom gnus-outlook-deuglify-attrib-verb-regexp 275(defcustom gnus-outlook-deuglify-attrib-verb-regexp
270 "wrote\\|writes\\|says\\|schrieb\\|schreibt\\|meinte\\|skrev\\|a écrit\\|schreef\\|escribió" 276 "wrote\\|writes\\|says\\|schrieb\\|schreibt\\|meinte\\|skrev\\|a écrit\\|schreef\\|escribió"
271 "Regular expression matching the verb used in an attribution line." 277 "Regular expression matching the verb used in an attribution line."
278 :version "21.4"
272 :type 'string 279 :type 'string
273 :group 'gnus-outlook-deuglify) 280 :group 'gnus-outlook-deuglify)
274 281
275(defcustom gnus-outlook-deuglify-attrib-end-regexp 282(defcustom gnus-outlook-deuglify-attrib-end-regexp
276 ": *\\|\\.\\.\\." 283 ": *\\|\\.\\.\\."
277 "Regular expression matching the end of an attribution line." 284 "Regular expression matching the end of an attribution line."
285 :version "21.4"
278 :type 'string 286 :type 'string
279 :group 'gnus-outlook-deuglify) 287 :group 'gnus-outlook-deuglify)
280 288
@@ -282,6 +290,7 @@
282(defcustom gnus-outlook-display-hook nil 290(defcustom gnus-outlook-display-hook nil
283 "A hook called after an deuglified article has been prepared. 291 "A hook called after an deuglified article has been prepared.
284It is run after `gnus-article-prepare-hook'." 292It is run after `gnus-article-prepare-hook'."
293 :version "21.4"
285 :type 'hook 294 :type 'hook
286 :group 'gnus-outlook-deuglify) 295 :group 'gnus-outlook-deuglify)
287 296
diff --git a/lisp/gnus/flow-fill.el b/lisp/gnus/flow-fill.el
index 9f2ae5c98bd..a22f2a5af07 100644
--- a/lisp/gnus/flow-fill.el
+++ b/lisp/gnus/flow-fill.el
@@ -56,6 +56,7 @@
56(defcustom fill-flowed-display-column 'fill-column 56(defcustom fill-flowed-display-column 'fill-column
57 "Column beyond which format=flowed lines are wrapped, when displayed. 57 "Column beyond which format=flowed lines are wrapped, when displayed.
58This can be a Lisp expression or an integer." 58This can be a Lisp expression or an integer."
59 :version "21.4"
59 :group 'mime-display 60 :group 'mime-display
60 :type '(choice (const :tag "Standard `fill-column'" fill-column) 61 :type '(choice (const :tag "Standard `fill-column'" fill-column)
61 (const :tag "Fit Window" (- (window-width) 5)) 62 (const :tag "Fit Window" (- (window-width) 5))
@@ -66,6 +67,7 @@ This can be a Lisp expression or an integer."
66 "Column beyond which format=flowed lines are wrapped, in outgoing messages. 67 "Column beyond which format=flowed lines are wrapped, in outgoing messages.
67This can be a Lisp expression or an integer. 68This can be a Lisp expression or an integer.
68RFC 2646 suggests 66 characters for readability." 69RFC 2646 suggests 66 characters for readability."
70 :version "21.4"
69 :group 'mime-display 71 :group 'mime-display
70 :type '(choice (const :tag "Standard fill-column" fill-column) 72 :type '(choice (const :tag "Standard fill-column" fill-column)
71 (const :tag "RFC 2646 default (66)" 66) 73 (const :tag "RFC 2646 default (66)" 66)
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 2ab1fb0421d..4596c783d32 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -60,6 +60,7 @@
60 60
61(defcustom gnus-agent-fetched-hook nil 61(defcustom gnus-agent-fetched-hook nil
62 "Hook run when finished fetching articles." 62 "Hook run when finished fetching articles."
63 :version "21.4"
63 :group 'gnus-agent 64 :group 'gnus-agent
64 :type 'hook) 65 :type 'hook)
65 66
@@ -125,7 +126,7 @@ If this is `ask' the hook will query the user."
125(defcustom gnus-agent-go-online 'ask 126(defcustom gnus-agent-go-online 'ask
126 "Indicate if offline servers go online when you plug in. 127 "Indicate if offline servers go online when you plug in.
127If this is `ask' the hook will query the user." 128If this is `ask' the hook will query the user."
128 :version "21.1" 129 :version "21.3"
129 :type '(choice (const :tag "Always" t) 130 :type '(choice (const :tag "Always" t)
130 (const :tag "Never" nil) 131 (const :tag "Never" nil)
131 (const :tag "Ask" ask)) 132 (const :tag "Ask" ask))
@@ -178,6 +179,7 @@ enable expiration per categories, topics, and groups."
178Have gnus-agent-expire scan the directories under 179Have gnus-agent-expire scan the directories under
179\(gnus-agent-directory) for groups that are no longer agentized. 180\(gnus-agent-directory) for groups that are no longer agentized.
180When found, offer to remove them." 181When found, offer to remove them."
182 :version "21.4"
181 :type 'boolean 183 :type 'boolean
182 :group 'gnus-agent) 184 :group 'gnus-agent)
183 185
@@ -185,6 +187,7 @@ When found, offer to remove them."
185 "Initially, all servers from these methods are agentized. 187 "Initially, all servers from these methods are agentized.
186The user may remove or add servers using the Server buffer. 188The user may remove or add servers using the Server buffer.
187See Info node `(gnus)Server Buffer'." 189See Info node `(gnus)Server Buffer'."
190 :version "21.4"
188 :type '(repeat symbol) 191 :type '(repeat symbol)
189 :group 'gnus-agent) 192 :group 'gnus-agent)
190 193
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 33833a8657b..5544c28f967 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -213,6 +213,7 @@ By default, if you set this t, then Gnus will display citations and
213signatures, but will never scroll down to show you a page consisting 213signatures, but will never scroll down to show you a page consisting
214only of boring text. Boring text is controlled by 214only of boring text. Boring text is controlled by
215`gnus-article-boring-faces'." 215`gnus-article-boring-faces'."
216 :version "21.4"
216 :type 'boolean 217 :type 'boolean
217 :group 'gnus-article-hiding) 218 :group 'gnus-article-hiding)
218 219
@@ -744,7 +745,7 @@ If set, this variable overrides `gnus-unbuttonized-mime-types'.
744To see e.g. security buttons you could set this to 745To see e.g. security buttons you could set this to
745`(\"multipart/signed\")'. 746`(\"multipart/signed\")'.
746This variable is only used when `gnus-inhibit-mime-unbuttonizing' is nil." 747This variable is only used when `gnus-inhibit-mime-unbuttonizing' is nil."
747 :version "21.1" 748 :version "21.4"
748 :group 'gnus-article-mime 749 :group 'gnus-article-mime
749 :type '(repeat regexp)) 750 :type '(repeat regexp))
750 751
@@ -753,13 +754,14 @@ This variable is only used when `gnus-inhibit-mime-unbuttonizing' is nil."
753When nil (the default value), then some MIME parts do not get buttons, 754When nil (the default value), then some MIME parts do not get buttons,
754as described by the variables `gnus-buttonized-mime-types' and 755as described by the variables `gnus-buttonized-mime-types' and
755`gnus-unbuttonized-mime-types'." 756`gnus-unbuttonized-mime-types'."
756 :version "21.3" 757 :version "21.4"
757 :type 'boolean) 758 :type 'boolean)
758 759
759(defcustom gnus-body-boundary-delimiter "_" 760(defcustom gnus-body-boundary-delimiter "_"
760 "String used to delimit header and body. 761 "String used to delimit header and body.
761This variable is used by `gnus-article-treat-body-boundary' which can 762This variable is used by `gnus-article-treat-body-boundary' which can
762be controlled by `gnus-treat-body-boundary'." 763be controlled by `gnus-treat-body-boundary'."
764 :version "21.4"
763 :group 'gnus-article-various 765 :group 'gnus-article-various
764 :type '(choice (item :tag "None" :value nil) 766 :type '(choice (item :tag "None" :value nil)
765 string)) 767 string))
@@ -768,6 +770,7 @@ be controlled by `gnus-treat-body-boundary'."
768 "Defines the location of the faces database. 770 "Defines the location of the faces database.
769For information on obtaining this database of pretty pictures, please 771For information on obtaining this database of pretty pictures, please
770see http://www.cs.indiana.edu/picons/ftp/index.html" 772see http://www.cs.indiana.edu/picons/ftp/index.html"
773 :version "21.4"
771 :type '(repeat directory) 774 :type '(repeat directory)
772 :link '(url-link :tag "download" 775 :link '(url-link :tag "download"
773 "http://www.cs.indiana.edu/picons/ftp/index.html") 776 "http://www.cs.indiana.edu/picons/ftp/index.html")
@@ -908,6 +911,7 @@ See Info node `(gnus)Customizing Articles' for details."
908 "Remove carriage returns. 911 "Remove carriage returns.
909Valid values are nil, t, `head', `last', an integer or a predicate. 912Valid values are nil, t, `head', `last', an integer or a predicate.
910See Info node `(gnus)Customizing Articles' for details." 913See Info node `(gnus)Customizing Articles' for details."
914 :version "21.4"
911 :group 'gnus-article-treat 915 :group 'gnus-article-treat
912 :link '(custom-manual "(gnus)Customizing Articles") 916 :link '(custom-manual "(gnus)Customizing Articles")
913 :type gnus-article-treat-custom) 917 :type gnus-article-treat-custom)
@@ -924,6 +928,7 @@ See Info node `(gnus)Customizing Articles' for details."
924 "Remove leading whitespace in headers. 928 "Remove leading whitespace in headers.
925Valid values are nil, t, `head', `last', an integer or a predicate. 929Valid values are nil, t, `head', `last', an integer or a predicate.
926See Info node `(gnus)Customizing Articles' for details." 930See Info node `(gnus)Customizing Articles' for details."
931 :version "21.4"
927 :group 'gnus-article-treat 932 :group 'gnus-article-treat
928 :link '(custom-manual "(gnus)Customizing Articles") 933 :link '(custom-manual "(gnus)Customizing Articles")
929 :type gnus-article-treat-custom) 934 :type gnus-article-treat-custom)
@@ -1043,6 +1048,7 @@ See Info node `(gnus)Customizing Articles' for details."
1043 "Display the Date in a format that can be read aloud in English. 1048 "Display the Date in a format that can be read aloud in English.
1044Valid values are nil, t, `head', `last', an integer or a predicate. 1049Valid values are nil, t, `head', `last', an integer or a predicate.
1045See Info node `(gnus)Customizing Articles' for details." 1050See Info node `(gnus)Customizing Articles' for details."
1051 :version "21.4"
1046 :group 'gnus-article-treat 1052 :group 'gnus-article-treat
1047 :link '(custom-manual "(gnus)Customizing Articles") 1053 :link '(custom-manual "(gnus)Customizing Articles")
1048 :type gnus-article-treat-head-custom) 1054 :type gnus-article-treat-head-custom)
@@ -1126,6 +1132,7 @@ See Info node `(gnus)Customizing Articles' for details."
1126 "Fold headers. 1132 "Fold headers.
1127Valid values are nil, t, `head', `last', an integer or a predicate. 1133Valid values are nil, t, `head', `last', an integer or a predicate.
1128See Info node `(gnus)Customizing Articles' for details." 1134See Info node `(gnus)Customizing Articles' for details."
1135 :version "21.4"
1129 :group 'gnus-article-treat 1136 :group 'gnus-article-treat
1130 :link '(custom-manual "(gnus)Customizing Articles") 1137 :link '(custom-manual "(gnus)Customizing Articles")
1131 :type gnus-article-treat-custom) 1138 :type gnus-article-treat-custom)
@@ -1134,6 +1141,7 @@ See Info node `(gnus)Customizing Articles' for details."
1134 "Fold the Newsgroups and Followup-To headers. 1141 "Fold the Newsgroups and Followup-To headers.
1135Valid values are nil, t, `head', `last', an integer or a predicate. 1142Valid values are nil, t, `head', `last', an integer or a predicate.
1136See Info node `(gnus)Customizing Articles' for details." 1143See Info node `(gnus)Customizing Articles' for details."
1144 :version "21.4"
1137 :group 'gnus-article-treat 1145 :group 'gnus-article-treat
1138 :link '(custom-manual "(gnus)Customizing Articles") 1146 :link '(custom-manual "(gnus)Customizing Articles")
1139 :type gnus-article-treat-custom) 1147 :type gnus-article-treat-custom)
@@ -1199,7 +1207,7 @@ Valid values are nil, t, `head', `last', an integer or a predicate.
1199See Info node `(gnus)Customizing Articles' and Info node 1207See Info node `(gnus)Customizing Articles' and Info node
1200`(gnus)X-Face' for details." 1208`(gnus)X-Face' for details."
1201 :group 'gnus-article-treat 1209 :group 'gnus-article-treat
1202 :version "21.1" 1210 :version "21.4"
1203 :link '(custom-manual "(gnus)Customizing Articles") 1211 :link '(custom-manual "(gnus)Customizing Articles")
1204 :link '(custom-manual "(gnus)X-Face") 1212 :link '(custom-manual "(gnus)X-Face")
1205 :type gnus-article-treat-head-custom) 1213 :type gnus-article-treat-head-custom)
@@ -1260,6 +1268,7 @@ See Info node `(gnus)Customizing Articles' and Info node
1260Valid values are nil, t, `head', `last', an integer or a predicate. 1268Valid values are nil, t, `head', `last', an integer or a predicate.
1261See Info node `(gnus)Customizing Articles' and Info node 1269See Info node `(gnus)Customizing Articles' and Info node
1262`(gnus)Picons' for details." 1270`(gnus)Picons' for details."
1271 :version "21.4"
1263 :group 'gnus-article-treat 1272 :group 'gnus-article-treat
1264 :group 'gnus-picon 1273 :group 'gnus-picon
1265 :link '(custom-manual "(gnus)Customizing Articles") 1274 :link '(custom-manual "(gnus)Customizing Articles")
@@ -1275,7 +1284,7 @@ See Info node `(gnus)Customizing Articles' and Info node
1275 "Draw a boundary at the end of the headers. 1284 "Draw a boundary at the end of the headers.
1276Valid values are nil and `head'. 1285Valid values are nil and `head'.
1277See Info node `(gnus)Customizing Articles' for details." 1286See Info node `(gnus)Customizing Articles' for details."
1278 :version "21.1" 1287 :version "21.4"
1279 :group 'gnus-article-treat 1288 :group 'gnus-article-treat
1280 :link '(custom-manual "(gnus)Customizing Articles") 1289 :link '(custom-manual "(gnus)Customizing Articles")
1281 :type gnus-article-treat-head-custom) 1290 :type gnus-article-treat-head-custom)
@@ -1293,6 +1302,7 @@ See Info node `(gnus)Customizing Articles' for details."
1293 "Format as HTML. 1302 "Format as HTML.
1294Valid values are nil, t, `head', `last', an integer or a predicate. 1303Valid values are nil, t, `head', `last', an integer or a predicate.
1295See Info node `(gnus)Customizing Articles' for details." 1304See Info node `(gnus)Customizing Articles' for details."
1305 :version "21.4"
1296 :group 'gnus-article-treat 1306 :group 'gnus-article-treat
1297 :link '(custom-manual "(gnus)Customizing Articles") 1307 :link '(custom-manual "(gnus)Customizing Articles")
1298 :type gnus-article-treat-custom) 1308 :type gnus-article-treat-custom)
@@ -1341,6 +1351,7 @@ See Info node `(gnus)Customizing Articles' for details."
1341(defcustom gnus-article-encrypt-protocol "PGP" 1351(defcustom gnus-article-encrypt-protocol "PGP"
1342 "The protocol used for encrypt articles. 1352 "The protocol used for encrypt articles.
1343It is a string, such as \"PGP\". If nil, ask user." 1353It is a string, such as \"PGP\". If nil, ask user."
1354 :version "21.4"
1344 :type 'string 1355 :type 'string
1345 :group 'mime-security) 1356 :group 'mime-security)
1346 1357
@@ -1352,11 +1363,13 @@ It is a string, such as \"PGP\". If nil, ask user."
1352 (executable-find idna-program)) 1363 (executable-find idna-program))
1353 "Whether IDNA decoding of headers is used when viewing messages. 1364 "Whether IDNA decoding of headers is used when viewing messages.
1354This requires GNU Libidn, and by default only enabled if it is found." 1365This requires GNU Libidn, and by default only enabled if it is found."
1366 :version "21.4"
1355 :group 'gnus-article-headers 1367 :group 'gnus-article-headers
1356 :type 'boolean) 1368 :type 'boolean)
1357 1369
1358(defcustom gnus-article-over-scroll nil 1370(defcustom gnus-article-over-scroll nil
1359 "If non-nil, allow scrolling the article buffer even when there no more text." 1371 "If non-nil, allow scrolling the article buffer even when there no more text."
1372 :version "21.4"
1360 :group 'gnus-article 1373 :group 'gnus-article
1361 :type 'boolean) 1374 :type 'boolean)
1362 1375
@@ -4606,6 +4619,7 @@ If t, it overrides nil values of
4606 4619
4607(defcustom gnus-mime-display-multipart-alternative-as-mixed nil 4620(defcustom gnus-mime-display-multipart-alternative-as-mixed nil
4608 "Display \"multipart/alternative\" parts as \"multipart/mixed\"." 4621 "Display \"multipart/alternative\" parts as \"multipart/mixed\"."
4622 :version "21.4"
4609 :group 'gnus-article-mime 4623 :group 'gnus-article-mime
4610 :type 'boolean) 4624 :type 'boolean)
4611 4625
@@ -4615,6 +4629,7 @@ If t, it overrides nil values of
4615If displaying \"text/html\" is discouraged \(see 4629If displaying \"text/html\" is discouraged \(see
4616`mm-discouraged-alternatives'\) images or other material inside a 4630`mm-discouraged-alternatives'\) images or other material inside a
4617\"multipart/related\" part might be overlooked when this variable is nil." 4631\"multipart/related\" part might be overlooked when this variable is nil."
4632 :version "21.4"
4618 :group 'gnus-article-mime 4633 :group 'gnus-article-mime
4619 :type 'boolean) 4634 :type 'boolean)
4620 4635
@@ -5719,6 +5734,7 @@ groups."
5719(defcustom gnus-button-valid-fqdn-regexp 5734(defcustom gnus-button-valid-fqdn-regexp
5720 message-valid-fqdn-regexp 5735 message-valid-fqdn-regexp
5721 "Regular expression that matches a valid FQDN." 5736 "Regular expression that matches a valid FQDN."
5737 :version "21.4"
5722 :group 'gnus-article-buttons 5738 :group 'gnus-article-buttons
5723 :type 'regexp) 5739 :type 'regexp)
5724 5740
@@ -5726,6 +5742,7 @@ groups."
5726 "Function to use for displaying man pages. 5742 "Function to use for displaying man pages.
5727The function must take at least one argument with a string naming the 5743The function must take at least one argument with a string naming the
5728man page." 5744man page."
5745 :version "21.4"
5729 :type '(choice (function-item :tag "Man" manual-entry) 5746 :type '(choice (function-item :tag "Man" manual-entry)
5730 (function-item :tag "Woman" woman) 5747 (function-item :tag "Woman" woman)
5731 (function :tag "Other")) 5748 (function :tag "Other"))
@@ -5736,6 +5753,7 @@ man page."
5736If the default site is too slow, try to find a CTAN mirror, see 5753If the default site is too slow, try to find a CTAN mirror, see
5737<URL:http://tug.ctan.org/tex-archive/CTAN.sites?action=/index.html>. See also 5754<URL:http://tug.ctan.org/tex-archive/CTAN.sites?action=/index.html>. See also
5738the variable `gnus-button-handle-ctan'." 5755the variable `gnus-button-handle-ctan'."
5756 :version "21.4"
5739 :group 'gnus-article-buttons 5757 :group 'gnus-article-buttons
5740 :link '(custom-manual "(gnus)Group Parameters") 5758 :link '(custom-manual "(gnus)Group Parameters")
5741 :type '(choice (const "http://www.tex.ac.uk/tex-archive/") 5759 :type '(choice (const "http://www.tex.ac.uk/tex-archive/")
@@ -5746,12 +5764,14 @@ the variable `gnus-button-handle-ctan'."
5746(defcustom gnus-button-ctan-handler 'browse-url 5764(defcustom gnus-button-ctan-handler 'browse-url
5747 "Function to use for displaying CTAN links. 5765 "Function to use for displaying CTAN links.
5748The function must take one argument, the string naming the URL." 5766The function must take one argument, the string naming the URL."
5767 :version "21.4"
5749 :type '(choice (function-item :tag "Browse Url" browse-url) 5768 :type '(choice (function-item :tag "Browse Url" browse-url)
5750 (function :tag "Other")) 5769 (function :tag "Other"))
5751 :group 'gnus-article-buttons) 5770 :group 'gnus-article-buttons)
5752 5771
5753(defcustom gnus-button-handle-ctan-bogus-regexp "^/?tex-archive/\\|^/" 5772(defcustom gnus-button-handle-ctan-bogus-regexp "^/?tex-archive/\\|^/"
5754 "Bogus strings removed from CTAN URLs." 5773 "Bogus strings removed from CTAN URLs."
5774 :version "21.4"
5755 :group 'gnus-article-buttons 5775 :group 'gnus-article-buttons
5756 :type '(choice (const "^/?tex-archive/\\|/") 5776 :type '(choice (const "^/?tex-archive/\\|/")
5757 (regexp :tag "Other"))) 5777 (regexp :tag "Other")))
@@ -5765,6 +5785,7 @@ The function must take one argument, the string naming the URL."
5765 "\\)") 5785 "\\)")
5766 "Regular expression for ctan directories. 5786 "Regular expression for ctan directories.
5767It should match all directories in the top level of `gnus-ctan-url'." 5787It should match all directories in the top level of `gnus-ctan-url'."
5788 :version "21.4"
5768 :group 'gnus-article-buttons 5789 :group 'gnus-article-buttons
5769 :type 'regexp) 5790 :type 'regexp)
5770 5791
@@ -5774,6 +5795,7 @@ It should match all directories in the top level of `gnus-ctan-url'."
5774 gnus-button-valid-fqdn-regexp 5795 gnus-button-valid-fqdn-regexp
5775 ">?\\)\\b") 5796 ">?\\)\\b")
5776 "Regular expression that matches a message ID or a mail address." 5797 "Regular expression that matches a message ID or a mail address."
5798 :version "21.4"
5777 :group 'gnus-article-buttons 5799 :group 'gnus-article-buttons
5778 :type 'regexp) 5800 :type 'regexp)
5779 5801
@@ -5785,6 +5807,7 @@ message ID or a mail address, respectively. If this variable is set to the
5785symbol `ask', always query the user what do do. If it is a function, this 5807symbol `ask', always query the user what do do. If it is a function, this
5786function will be called with the string as it's only argument. The function 5808function will be called with the string as it's only argument. The function
5787must return `mid', `mail', `invalid' or `ask'." 5809must return `mid', `mail', `invalid' or `ask'."
5810 :version "21.4"
5788 :group 'gnus-article-buttons 5811 :group 'gnus-article-buttons
5789 :type '(choice (function-item :tag "Heuristic function" 5812 :type '(choice (function-item :tag "Heuristic function"
5790 gnus-button-mid-or-mail-heuristic) 5813 gnus-button-mid-or-mail-heuristic)
@@ -5848,6 +5871,7 @@ must return `mid', `mail', `invalid' or `ask'."
5848 5871
5849A negative RATE indicates a message IDs, whereas a positive indicates a mail 5872A negative RATE indicates a message IDs, whereas a positive indicates a mail
5850address. The REGEXP is processed with `case-fold-search' set to nil." 5873address. The REGEXP is processed with `case-fold-search' set to nil."
5874 :version "21.4"
5851 :group 'gnus-article-buttons 5875 :group 'gnus-article-buttons
5852 :type '(repeat (cons (number :tag "Rate") 5876 :type '(repeat (cons (number :tag "Rate")
5853 (regexp :tag "Regexp")))) 5877 (regexp :tag "Regexp"))))
@@ -6032,6 +6056,7 @@ positives are possible. Note that you can set this variable local to
6032specific groups. Setting it higher in TeX groups is probably a good idea. 6056specific groups. Setting it higher in TeX groups is probably a good idea.
6033See Info node `(gnus)Group Parameters' and the variable `gnus-parameters' on 6057See Info node `(gnus)Group Parameters' and the variable `gnus-parameters' on
6034how to set variables in specific groups." 6058how to set variables in specific groups."
6059 :version "21.4"
6035 :group 'gnus-article-buttons 6060 :group 'gnus-article-buttons
6036 :link '(custom-manual "(gnus)Group Parameters") 6061 :link '(custom-manual "(gnus)Group Parameters")
6037 :type 'integer) 6062 :type 'integer)
@@ -6043,6 +6068,7 @@ positives are possible. Note that you can set this variable local to
6043specific groups. Setting it higher in Unix groups is probably a good idea. 6068specific groups. Setting it higher in Unix groups is probably a good idea.
6044See Info node `(gnus)Group Parameters' and the variable `gnus-parameters' on 6069See Info node `(gnus)Group Parameters' and the variable `gnus-parameters' on
6045how to set variables in specific groups." 6070how to set variables in specific groups."
6071 :version "21.4"
6046 :group 'gnus-article-buttons 6072 :group 'gnus-article-buttons
6047 :link '(custom-manual "(gnus)Group Parameters") 6073 :link '(custom-manual "(gnus)Group Parameters")
6048 :type 'integer) 6074 :type 'integer)
@@ -6054,6 +6080,7 @@ positives are possible. Note that you can set this variable local to
6054specific groups. Setting it higher in Emacs or Gnus related groups is 6080specific groups. Setting it higher in Emacs or Gnus related groups is
6055probably a good idea. See Info node `(gnus)Group Parameters' and the variable 6081probably a good idea. See Info node `(gnus)Group Parameters' and the variable
6056`gnus-parameters' on how to set variables in specific groups." 6082`gnus-parameters' on how to set variables in specific groups."
6083 :version "21.4"
6057 :group 'gnus-article-buttons 6084 :group 'gnus-article-buttons
6058 :link '(custom-manual "(gnus)Group Parameters") 6085 :link '(custom-manual "(gnus)Group Parameters")
6059 :type 'integer) 6086 :type 'integer)
@@ -6063,6 +6090,7 @@ probably a good idea. See Info node `(gnus)Group Parameters' and the variable
6063The higher the number, the more buttons will appear and the more false 6090The higher the number, the more buttons will appear and the more false
6064positives are possible." 6091positives are possible."
6065 ;; mail addresses, MIDs, URLs for news, ... 6092 ;; mail addresses, MIDs, URLs for news, ...
6093 :version "21.4"
6066 :group 'gnus-article-buttons 6094 :group 'gnus-article-buttons
6067 :type 'integer) 6095 :type 'integer)
6068 6096
@@ -6071,6 +6099,7 @@ positives are possible."
6071The higher the number, the more buttons will appear and the more false 6099The higher the number, the more buttons will appear and the more false
6072positives are possible." 6100positives are possible."
6073 ;; stuff handled by `browse-url' or `gnus-button-embedded-url' 6101 ;; stuff handled by `browse-url' or `gnus-button-embedded-url'
6102 :version "21.4"
6074 :group 'gnus-article-buttons 6103 :group 'gnus-article-buttons
6075 :type 'integer) 6104 :type 'integer)
6076 6105
diff --git a/lisp/gnus/gnus-cite.el b/lisp/gnus/gnus-cite.el
index 51617918a4c..bf9f5863428 100644
--- a/lisp/gnus/gnus-cite.el
+++ b/lisp/gnus/gnus-cite.el
@@ -278,6 +278,7 @@ This should make it easier to see who wrote what."
278 278
279(defcustom gnus-cite-blank-line-after-header t 279(defcustom gnus-cite-blank-line-after-header t
280 "If non-nil, put a blank line between the citation header and the button." 280 "If non-nil, put a blank line between the citation header and the button."
281 :version "21.4"
281 :group 'gnus-cite 282 :group 'gnus-cite
282 :type 'boolean) 283 :type 'boolean)
283 284
@@ -289,6 +290,7 @@ This should make it easier to see who wrote what."
289If an article has more pages below the one you are looking at, but 290If an article has more pages below the one you are looking at, but
290nothing on those pages is a word of at least three letters that is not 291nothing on those pages is a word of at least three letters that is not
291in a boring face, then the pages will be skipped." 292in a boring face, then the pages will be skipped."
293 :version "21.4"
292 :type '(repeat face) 294 :type '(repeat face)
293 :group 'gnus-article-hiding) 295 :group 'gnus-article-hiding)
294 296
diff --git a/lisp/gnus/gnus-delay.el b/lisp/gnus/gnus-delay.el
index b6392772773..ee431076fad 100644
--- a/lisp/gnus/gnus-delay.el
+++ b/lisp/gnus/gnus-delay.el
@@ -60,6 +60,7 @@
60 60
61(defcustom gnus-delay-default-hour 8 61(defcustom gnus-delay-default-hour 8
62 "*If deadline is given as date, then assume this time of day." 62 "*If deadline is given as date, then assume this time of day."
63 :version "21.4"
63 :type 'integer 64 :type 'integer
64 :group 'gnus-delay) 65 :group 'gnus-delay)
65 66
diff --git a/lisp/gnus/gnus-fun.el b/lisp/gnus/gnus-fun.el
index 21a5b1c55b4..087c30da5df 100644
--- a/lisp/gnus/gnus-fun.el
+++ b/lisp/gnus/gnus-fun.el
@@ -31,11 +31,13 @@
31 31
32(defcustom gnus-x-face-directory (expand-file-name "x-faces" gnus-directory) 32(defcustom gnus-x-face-directory (expand-file-name "x-faces" gnus-directory)
33 "*Directory where X-Face PBM files are stored." 33 "*Directory where X-Face PBM files are stored."
34 :version "21.4"
34 :group 'gnus-fun 35 :group 'gnus-fun
35 :type 'directory) 36 :type 'directory)
36 37
37(defcustom gnus-convert-pbm-to-x-face-command "pbmtoxbm %s | compface" 38(defcustom gnus-convert-pbm-to-x-face-command "pbmtoxbm %s | compface"
38 "Command for converting a PBM to an X-Face." 39 "Command for converting a PBM to an X-Face."
40 :version "21.4"
39 :group 'gnus-fun 41 :group 'gnus-fun
40 :type 'string) 42 :type 'string)
41 43
@@ -43,6 +45,7 @@
43 "Command for converting an image to an X-Face. 45 "Command for converting an image to an X-Face.
44By default it takes a GIF filename and output the X-Face header data 46By default it takes a GIF filename and output the X-Face header data
45on stdout." 47on stdout."
48 :version "21.4"
46 :group 'gnus-fun 49 :group 'gnus-fun
47 :type 'string) 50 :type 'string)
48 51
@@ -50,6 +53,7 @@ on stdout."
50 "Command for converting an image to an Face. 53 "Command for converting an image to an Face.
51By default it takes a JPEG filename and output the Face header data 54By default it takes a JPEG filename and output the Face header data
52on stdout." 55on stdout."
56 :version "21.4"
53 :group 'gnus-fun 57 :group 'gnus-fun
54 :type 'string) 58 :type 'string)
55 59
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 96d1a864f13..9f7b259e066 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -435,6 +435,7 @@ For example:
435If non-nil, the value should be a string, e.g. \"nnml:\", 435If non-nil, the value should be a string, e.g. \"nnml:\",
436in which case `gnus-group-jump-to-group' offers \"Group: nnml:\" 436in which case `gnus-group-jump-to-group' offers \"Group: nnml:\"
437in the minibuffer prompt." 437in the minibuffer prompt."
438 :version "21.4"
438 :group 'gnus-group-various 439 :group 'gnus-group-various
439 :type '(choice (string :tag "Prompt string") 440 :type '(choice (string :tag "Prompt string")
440 (const :tag "Empty" nil))) 441 (const :tag "Empty" nil)))
@@ -1959,12 +1960,14 @@ Same as `gnus-large-newsgroup', but only used for ephemeral newsgroups.
1959If the number of articles in a newsgroup is greater than this value, 1960If the number of articles in a newsgroup is greater than this value,
1960confirmation is required for selecting the newsgroup. If it is nil, no 1961confirmation is required for selecting the newsgroup. If it is nil, no
1961confirmation is required." 1962confirmation is required."
1963 :version "21.4"
1962 :group 'gnus-group-select 1964 :group 'gnus-group-select
1963 :type '(choice (const :tag "No limit" nil) 1965 :type '(choice (const :tag "No limit" nil)
1964 integer)) 1966 integer))
1965 1967
1966(defcustom gnus-fetch-old-ephemeral-headers nil 1968(defcustom gnus-fetch-old-ephemeral-headers nil
1967 "Same as `gnus-fetch-old-headers', but only used for ephemeral newsgroups." 1969 "Same as `gnus-fetch-old-headers', but only used for ephemeral newsgroups."
1970 :version "21.4"
1968 :group 'gnus-thread 1971 :group 'gnus-thread
1969 :type '(choice (const :tag "off" nil) 1972 :type '(choice (const :tag "off" nil)
1970 (const some) 1973 (const some)
diff --git a/lisp/gnus/gnus-int.el b/lisp/gnus/gnus-int.el
index fc0d7f192ee..2363c2705cb 100644
--- a/lisp/gnus/gnus-int.el
+++ b/lisp/gnus/gnus-int.el
@@ -46,6 +46,7 @@ If the server is covered by Gnus agent, the possible values are
46`denied', set the server denied; `offline', set the server offline; 46`denied', set the server denied; `offline', set the server offline;
47nil, ask user. If the server is not covered by Gnus agent, set the 47nil, ask user. If the server is not covered by Gnus agent, set the
48server denied." 48server denied."
49 :version "21.4"
49 :group 'gnus-start 50 :group 'gnus-start
50 :type '(choice (const :tag "Ask" nil) 51 :type '(choice (const :tag "Ask" nil)
51 (const :tag "Deny server" denied) 52 (const :tag "Deny server" denied)
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index 0b66c508767..f986e451c02 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -142,7 +142,7 @@ See Info node `(gnus)Posting Styles'."
142 142
143(defcustom gnus-gcc-mark-as-read nil 143(defcustom gnus-gcc-mark-as-read nil
144 "If non-nil, automatically mark Gcc articles as read." 144 "If non-nil, automatically mark Gcc articles as read."
145 :version "21.1" 145 :version "21.4"
146 :group 'gnus-message 146 :group 'gnus-message
147 :type 'boolean) 147 :type 'boolean)
148 148
@@ -154,7 +154,7 @@ See Info node `(gnus)Posting Styles'."
154If it is `all', attach files as external parts; 154If it is `all', attach files as external parts;
155if a regexp and matches the Gcc group name, attach files as external parts; 155if a regexp and matches the Gcc group name, attach files as external parts;
156if nil, attach files as normal parts." 156if nil, attach files as normal parts."
157 :version "21.1" 157 :version "21.4"
158 :group 'gnus-message 158 :group 'gnus-message
159 :type '(choice (const nil :tag "None") 159 :type '(choice (const nil :tag "None")
160 (const all :tag "Any") 160 (const all :tag "Any")
@@ -212,7 +212,7 @@ List of charsets that are permitted to be unencoded.")
212 "gnus-agent.el" "gnus-cache.el" "gnus-srvr.el" 212 "gnus-agent.el" "gnus-cache.el" "gnus-srvr.el"
213 "mm-util.el" "mm-decode.el" "nnmail.el" "message.el") 213 "mm-util.el" "mm-decode.el" "nnmail.el" "message.el")
214 "Files whose variables will be reported in `gnus-bug'." 214 "Files whose variables will be reported in `gnus-bug'."
215 :version "21.1" 215 :version "21.4"
216 :group 'gnus-message 216 :group 'gnus-message
217 :type '(repeat (string :tag "File"))) 217 :type '(repeat (string :tag "File")))
218 218
@@ -220,7 +220,7 @@ List of charsets that are permitted to be unencoded.")
220 '(mm-mime-mule-charset-alist 220 '(mm-mime-mule-charset-alist
221 nnmail-split-fancy message-minibuffer-local-map) 221 nnmail-split-fancy message-minibuffer-local-map)
222 "Variables that should not be reported in `gnus-bug'." 222 "Variables that should not be reported in `gnus-bug'."
223 :version "21.1" 223 :version "21.4"
224 :group 'gnus-message 224 :group 'gnus-message
225 :type '(repeat (symbol :tag "Variable"))) 225 :type '(repeat (symbol :tag "Variable")))
226 226
@@ -228,7 +228,7 @@ List of charsets that are permitted to be unencoded.")
228 '(nndraft nnml nnimap nnmaildir nnmh nnfolder nndir) 228 '(nndraft nnml nnimap nnmaildir nnmh nnfolder nndir)
229 "A list of back ends that are not used in \"real\" newsgroups. 229 "A list of back ends that are not used in \"real\" newsgroups.
230This variable is used only when `gnus-post-method' is `current'." 230This variable is used only when `gnus-post-method' is `current'."
231 :version "21.3" 231 :version "21.4"
232 :group 'gnus-group-foreign 232 :group 'gnus-group-foreign
233 :type '(repeat (symbol :tag "Back end"))) 233 :type '(repeat (symbol :tag "Back end")))
234 234
@@ -260,6 +260,7 @@ This can also be a function receiving the group name as the only
260parameter which should return non-nil iff a confirmation is needed, or 260parameter which should return non-nil iff a confirmation is needed, or
261a regexp, in which case a confirmation is asked for iff the group name 261a regexp, in which case a confirmation is asked for iff the group name
262matches the regexp." 262matches the regexp."
263 :version "21.4"
263 :group 'gnus-message 264 :group 'gnus-message
264 :type '(choice (const :tag "No" nil) 265 :type '(choice (const :tag "No" nil)
265 (const :tag "Yes" t) 266 (const :tag "Yes" t)
@@ -272,6 +273,7 @@ matches the regexp."
272when replying by mail. See the `gnus-confirm-mail-reply-to-news' variable 273when replying by mail. See the `gnus-confirm-mail-reply-to-news' variable
273for fine-tuning this. 274for fine-tuning this.
274If nil, Gnus will never ask for confirmation if replying to mail." 275If nil, Gnus will never ask for confirmation if replying to mail."
276 :version "21.4"
275 :group 'gnus-message 277 :group 'gnus-message
276 :type 'boolean) 278 :type 'boolean)
277 279
diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el
index de59e862ebc..370ef00eb49 100644
--- a/lisp/gnus/gnus-score.el
+++ b/lisp/gnus/gnus-score.el
@@ -237,6 +237,7 @@ This variable allows the same syntax as `gnus-home-score-file'."
237 237
238(defcustom gnus-adaptive-word-length-limit nil 238(defcustom gnus-adaptive-word-length-limit nil
239 "*Words of a length lesser than this limit will be ignored when doing adaptive scoring." 239 "*Words of a length lesser than this limit will be ignored when doing adaptive scoring."
240 :version "21.4"
240 :group 'gnus-score-adapt 241 :group 'gnus-score-adapt
241 :type '(radio (const :format "Unlimited " nil) 242 :type '(radio (const :format "Unlimited " nil)
242 (integer :format "Maximum length: %v\n" :size 0))) 243 (integer :format "Maximum length: %v\n" :size 0)))
diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el
index 775bdc485af..7fef378722a 100644
--- a/lisp/gnus/gnus-srvr.el
+++ b/lisp/gnus/gnus-srvr.el
@@ -71,6 +71,7 @@ See Info node `(gnus)Formatting Variables'."
71(defcustom gnus-server-browse-in-group-buffer nil 71(defcustom gnus-server-browse-in-group-buffer nil
72 "Whether server browsing should take place in the group buffer. 72 "Whether server browsing should take place in the group buffer.
73If nil, a faster, but more primitive, buffer is used instead." 73If nil, a faster, but more primitive, buffer is used instead."
74 :version "21.4"
74 :group 'gnus-server-visual 75 :group 'gnus-server-visual
75 :type 'boolean) 76 :type 'boolean)
76 77
@@ -224,6 +225,7 @@ If nil, a faster, but more primitive, buffer is used instead."
224 225
225(defcustom gnus-server-offline-face 'gnus-server-offline-face 226(defcustom gnus-server-offline-face 'gnus-server-offline-face
226 "Face name to use on OFFLINE servers." 227 "Face name to use on OFFLINE servers."
228 :version "21.4"
227 :group 'gnus-server-visual 229 :group 'gnus-server-visual
228 :type 'face) 230 :type 'face)
229 231
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index 217295b307b..18641b3a37f 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -47,6 +47,7 @@
47 "Whether to create backup files. 47 "Whether to create backup files.
48This variable takes the same values as the `version-control' 48This variable takes the same values as the `version-control'
49variable." 49variable."
50 :version "21.4"
50 :group 'gnus-start 51 :group 'gnus-start
51 :type '(choice (const :tag "Never" never) 52 :type '(choice (const :tag "Never" never)
52 (const :tag "If existing" nil) 53 (const :tag "If existing" nil)
@@ -57,6 +58,7 @@ variable."
57the buffer or write directly to the file. The buffer is faster 58the buffer or write directly to the file. The buffer is faster
58because all of the contents are written at once. The direct write 59because all of the contents are written at once. The direct write
59uses considerably less memory." 60uses considerably less memory."
61 :version "21.4"
60 :group 'gnus-start 62 :group 'gnus-start
61 :type '(choice (const :tag "Write via buffer" t) 63 :type '(choice (const :tag "Write via buffer" t)
62 (const :tag "Write directly to file" nil))) 64 (const :tag "Write directly to file" nil)))
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 0546d6cdff6..7ecc7eb19b9 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -118,6 +118,7 @@ given by the `gnus-summary-same-subject' variable.)"
118 118
119(defcustom gnus-summary-make-false-root-always nil 119(defcustom gnus-summary-make-false-root-always nil
120 "Always make a false dummy root." 120 "Always make a false dummy root."
121 :version "21.4"
121 :group 'gnus-thread 122 :group 'gnus-thread
122 :type 'boolean) 123 :type 'boolean)
123 124
@@ -218,6 +219,7 @@ If this variable is nil, scoring will be disabled."
218 "*Default threshold for a high scored article. 219 "*Default threshold for a high scored article.
219An article will be highlighted as high scored if its score is greater 220An article will be highlighted as high scored if its score is greater
220than this score." 221than this score."
222 :version "21.4"
221 :group 'gnus-score-default 223 :group 'gnus-score-default
222 :type 'integer) 224 :type 'integer)
223 225
@@ -225,6 +227,7 @@ than this score."
225 "*Default threshold for a low scored article. 227 "*Default threshold for a low scored article.
226An article will be highlighted as low scored if its score is smaller 228An article will be highlighted as low scored if its score is smaller
227than this score." 229than this score."
230 :version "21.4"
228 :group 'gnus-score-default 231 :group 'gnus-score-default
229 :type 'integer) 232 :type 'integer)
230 233
@@ -320,6 +323,7 @@ the first unseen article), 'unseen-or-unread' (place point on the subject
320line of the first unseen article or, if all article have been seen, on the 323line of the first unseen article or, if all article have been seen, on the
321subject line of the first unread article), or a function to be called to 324subject line of the first unread article), or a function to be called to
322place point on some subject line." 325place point on some subject line."
326 :version "21.4"
323 :group 'gnus-group-select 327 :group 'gnus-group-select
324 :type '(choice (const best) 328 :type '(choice (const best)
325 (const unread) 329 (const unread)
@@ -363,6 +367,7 @@ ignores articles whose headers have not been fetched).
363 367
364NOTE: The list of unfetched articles will always be nil when plugged 368NOTE: The list of unfetched articles will always be nil when plugged
365and, when unplugged, a subset of the undownloaded article list." 369and, when unplugged, a subset of the undownloaded article list."
370 :version "21.4"
366 :group 'gnus-summary-maneuvering 371 :group 'gnus-summary-maneuvering
367 :type '(choice (const :tag "None" nil) 372 :type '(choice (const :tag "None" nil)
368 (const :tag "Undownloaded when unplugged" undownloaded) 373 (const :tag "Undownloaded when unplugged" undownloaded)
@@ -490,6 +495,7 @@ this variable specifies group names."
490 495
491(defcustom gnus-forwarded-mark ?F 496(defcustom gnus-forwarded-mark ?F
492 "*Mark used for articles that have been forwarded." 497 "*Mark used for articles that have been forwarded."
498 :version "21.4"
493 :group 'gnus-summary-marks 499 :group 'gnus-summary-marks
494 :type 'character) 500 :type 'character)
495 501
@@ -510,11 +516,13 @@ this variable specifies group names."
510 516
511(defcustom gnus-unseen-mark ?. 517(defcustom gnus-unseen-mark ?.
512 "*Mark used for articles that haven't been seen." 518 "*Mark used for articles that haven't been seen."
519 :version "21.4"
513 :group 'gnus-summary-marks 520 :group 'gnus-summary-marks
514 :type 'character) 521 :type 'character)
515 522
516(defcustom gnus-no-mark ? ;Whitespace 523(defcustom gnus-no-mark ? ;Whitespace
517 "*Mark used for articles that have no other secondary mark." 524 "*Mark used for articles that have no other secondary mark."
525 :version "21.4"
518 :group 'gnus-summary-marks 526 :group 'gnus-summary-marks
519 :type 'character) 527 :type 'character)
520 528
@@ -895,7 +903,7 @@ automatically when it is selected."
895 (and (fboundp 'display-graphic-p) 903 (and (fboundp 'display-graphic-p)
896 (display-graphic-p)) 904 (display-graphic-p))
897 "*If non-nil, display an arrow highlighting the current article." 905 "*If non-nil, display an arrow highlighting the current article."
898 :version "21.1" 906 :version "21.4"
899 :group 'gnus-summary 907 :group 'gnus-summary
900 :type 'boolean) 908 :type 'boolean)
901 909
@@ -1073,22 +1081,23 @@ type of files to save."
1073This is mostly relevant for slow back ends where the user may 1081This is mostly relevant for slow back ends where the user may
1074wish to widen the summary buffer to include all headers 1082wish to widen the summary buffer to include all headers
1075that were fetched. Say, for nnultimate groups." 1083that were fetched. Say, for nnultimate groups."
1084 :version "21.4"
1076 :group 'gnus-summary 1085 :group 'gnus-summary
1077 :type '(choice boolean regexp)) 1086 :type '(choice boolean regexp))
1078 1087
1079(defcustom gnus-summary-muttprint-program "muttprint" 1088(defcustom gnus-summary-muttprint-program "muttprint"
1080 "Command (and optional arguments) used to run Muttprint." 1089 "Command (and optional arguments) used to run Muttprint."
1081 :version "21.3" 1090 :version "21.4"
1082 :group 'gnus-summary 1091 :group 'gnus-summary
1083 :type 'string) 1092 :type 'string)
1084 1093
1085(defcustom gnus-article-loose-mime nil 1094(defcustom gnus-article-loose-mime nil
1086 "If non-nil, don't require MIME-Version header. 1095 "If non-nil, don't require MIME-Version header.
1087Some brain-damaged MUA/MTA, e.g. Lotus Domino 5.0.6 clients, does not 1096Some brain-damaged MUA/MTA, e.g. Lotus Domino 5.0.6 clients, does not
1088supply the MIME-Version header or deliberately strip it From the mail. 1097supply the MIME-Version header or deliberately strip it from the mail.
1089Set it to non-nil, Gnus will treat some articles as MIME even if 1098Set it to non-nil, Gnus will treat some articles as MIME even if
1090the MIME-Version header is missed." 1099the MIME-Version header is missed."
1091 :version "21.3" 1100 :version "21.4"
1092 :type 'boolean 1101 :type 'boolean
1093 :group 'gnus-article-mime) 1102 :group 'gnus-article-mime)
1094 1103
@@ -1097,6 +1106,7 @@ the MIME-Version header is missed."
1097This means that Gnus will search message bodies for text that look 1106This means that Gnus will search message bodies for text that look
1098like uuencoded bits, yEncoded bits, and so on, and present that using 1107like uuencoded bits, yEncoded bits, and so on, and present that using
1099the normal Gnus MIME machinery." 1108the normal Gnus MIME machinery."
1109 :version "21.4"
1100 :type 'boolean 1110 :type 'boolean
1101 :group 'gnus-article-mime) 1111 :group 'gnus-article-mime)
1102 1112
@@ -4591,32 +4601,39 @@ Unscored articles will be counted as having a score of zero."
4591(defcustom gnus-sum-thread-tree-root "> " 4601(defcustom gnus-sum-thread-tree-root "> "
4592 "With %B spec, used for the root of a thread. 4602 "With %B spec, used for the root of a thread.
4593If nil, use subject instead." 4603If nil, use subject instead."
4604 :version "21.4"
4594 :type '(radio (const :format "%v " nil) (string :size 0)) 4605 :type '(radio (const :format "%v " nil) (string :size 0))
4595 :group 'gnus-thread) 4606 :group 'gnus-thread)
4596(defcustom gnus-sum-thread-tree-false-root "> " 4607(defcustom gnus-sum-thread-tree-false-root "> "
4597 "With %B spec, used for a false root of a thread. 4608 "With %B spec, used for a false root of a thread.
4598If nil, use subject instead." 4609If nil, use subject instead."
4610 :version "21.4"
4599 :type '(radio (const :format "%v " nil) (string :size 0)) 4611 :type '(radio (const :format "%v " nil) (string :size 0))
4600 :group 'gnus-thread) 4612 :group 'gnus-thread)
4601(defcustom gnus-sum-thread-tree-single-indent "" 4613(defcustom gnus-sum-thread-tree-single-indent ""
4602 "With %B spec, used for a thread with just one message. 4614 "With %B spec, used for a thread with just one message.
4603If nil, use subject instead." 4615If nil, use subject instead."
4616 :version "21.4"
4604 :type '(radio (const :format "%v " nil) (string :size 0)) 4617 :type '(radio (const :format "%v " nil) (string :size 0))
4605 :group 'gnus-thread) 4618 :group 'gnus-thread)
4606(defcustom gnus-sum-thread-tree-vertical "| " 4619(defcustom gnus-sum-thread-tree-vertical "| "
4607 "With %B spec, used for drawing a vertical line." 4620 "With %B spec, used for drawing a vertical line."
4621 :version "21.4"
4608 :type 'string 4622 :type 'string
4609 :group 'gnus-thread) 4623 :group 'gnus-thread)
4610(defcustom gnus-sum-thread-tree-indent " " 4624(defcustom gnus-sum-thread-tree-indent " "
4611 "With %B spec, used for indenting." 4625 "With %B spec, used for indenting."
4626 :version "21.4"
4612 :type 'string 4627 :type 'string
4613 :group 'gnus-thread) 4628 :group 'gnus-thread)
4614(defcustom gnus-sum-thread-tree-leaf-with-other "+-> " 4629(defcustom gnus-sum-thread-tree-leaf-with-other "+-> "
4615 "With %B spec, used for a leaf with brothers." 4630 "With %B spec, used for a leaf with brothers."
4631 :version "21.4"
4616 :type 'string 4632 :type 'string
4617 :group 'gnus-thread) 4633 :group 'gnus-thread)
4618(defcustom gnus-sum-thread-tree-single-leaf "\\-> " 4634(defcustom gnus-sum-thread-tree-single-leaf "\\-> "
4619 "With %B spec, used for a leaf without brothers." 4635 "With %B spec, used for a leaf without brothers."
4636 :version "21.4"
4620 :type 'string 4637 :type 'string
4621 :group 'gnus-thread) 4638 :group 'gnus-thread)
4622 4639
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 472f02afa55..22db7ecd6d1 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -1163,7 +1163,7 @@ Return the modified alist."
1163Setting it to nil has no effect after the first time `gnus-byte-compile' 1163Setting it to nil has no effect after the first time `gnus-byte-compile'
1164is run." 1164is run."
1165 :type 'boolean 1165 :type 'boolean
1166 :version "21.1" 1166 :version "21.4"
1167 :group 'gnus-various) 1167 :group 'gnus-various)
1168 1168
1169(defun gnus-byte-compile (form) 1169(defun gnus-byte-compile (form)
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index eaa77f02e90..3b7c8c916d8 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -963,6 +963,7 @@ For example:
963 (\"mail\\\\.me\" (gnus-use-scoring t)) 963 (\"mail\\\\.me\" (gnus-use-scoring t))
964 (\"list\\\\..*\" (total-expire . t) 964 (\"list\\\\..*\" (total-expire . t)
965 (broken-reply-to . t)))" 965 (broken-reply-to . t)))"
966 :version "21.4"
966 :group 'gnus-group-various 967 :group 'gnus-group-various
967 :type '(repeat (cons regexp 968 :type '(repeat (cons regexp
968 (repeat sexp)))) 969 (repeat sexp))))
@@ -2292,7 +2293,7 @@ face."
2292When set, Gnus will prefer using the locally stored content rather 2293When set, Gnus will prefer using the locally stored content rather
2293than re-fetching it from the server. You also need to enable 2294than re-fetching it from the server. You also need to enable
2294`gnus-agent' for this to have any affect." 2295`gnus-agent' for this to have any affect."
2295 :version "21.3" 2296 :version "21.4"
2296 :group 'gnus-agent 2297 :group 'gnus-agent
2297 :type 'boolean) 2298 :type 'boolean)
2298 2299
@@ -2311,7 +2312,7 @@ covered by that variable."
2311You may customize gnus-agent to disable its use. However, some 2312You may customize gnus-agent to disable its use. However, some
2312back ends have started to use the agent as a client-side cache. 2313back ends have started to use the agent as a client-side cache.
2313Disabling the agent may result in noticeable loss of performance." 2314Disabling the agent may result in noticeable loss of performance."
2314 :version "21.3" 2315 :version "21.4"
2315 :group 'gnus-agent 2316 :group 'gnus-agent
2316 :type 'boolean) 2317 :type 'boolean)
2317 2318
@@ -2343,6 +2344,7 @@ It can be one of the symbols `gnus' \(show only Gnus version\), `emacs-gnus'
2343`emacs-gnus' plus system configuration\), `emacs-gnus-type' \(same as 2344`emacs-gnus' plus system configuration\), `emacs-gnus-type' \(same as
2344`emacs-gnus' plus system type\) or a custom string. If you set it to a 2345`emacs-gnus' plus system type\) or a custom string. If you set it to a
2345string, be sure to use a valid format, see RFC 2616." 2346string, be sure to use a valid format, see RFC 2616."
2347 :version "21.4"
2346 :group 'gnus-message 2348 :group 'gnus-message
2347 :type '(choice 2349 :type '(choice
2348 (item :tag "Show Gnus and Emacs versions and system type" 2350 (item :tag "Show Gnus and Emacs versions and system type"
diff --git a/lisp/gnus/imap.el b/lisp/gnus/imap.el
index f53aeb32ca1..754473fa8ec 100644
--- a/lisp/gnus/imap.el
+++ b/lisp/gnus/imap.el
@@ -227,7 +227,8 @@ used to communicate with subprocesses. Values are nil to use a
227pipe, or t or `pty' to use a pty. The value has no effect if the 227pipe, or t or `pty' to use a pty. The value has no effect if the
228system has no ptys or if all ptys are busy: then a pipe is used 228system has no ptys or if all ptys are busy: then a pipe is used
229in any case. The value takes effect when a IMAP server is 229in any case. The value takes effect when a IMAP server is
230opened, changing it after that has no effect.." 230opened, changing it after that has no effect."
231 :version "21.4"
231 :group 'imap 232 :group 'imap
232 :type 'boolean) 233 :type 'boolean)
233 234
diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index 3c055c82000..b35cd1d0448 100644
--- a/lisp/gnus/mail-source.el
+++ b/lisp/gnus/mail-source.el
@@ -235,7 +235,10 @@ See Info node `(gnus)Mail Source Specifiers'."
235(defcustom mail-source-ignore-errors nil 235(defcustom mail-source-ignore-errors nil
236 "*Ignore errors when querying mail sources. 236 "*Ignore errors when querying mail sources.
237If nil, the user will be prompted when an error occurs. If non-nil, 237If nil, the user will be prompted when an error occurs. If non-nil,
238the error will be ignored.") 238the error will be ignored."
239 :version "21.4"
240 :group 'mail-source
241 :type 'boolean)
239 242
240(defcustom mail-source-primary-source nil 243(defcustom mail-source-primary-source nil
241 "*Primary source for incoming mail. 244 "*Primary source for incoming mail.
@@ -281,6 +284,7 @@ files older than number of days."
281 "*If non-nil, ask for for confirmation before deleting old incoming files. 284 "*If non-nil, ask for for confirmation before deleting old incoming files.
282This variable only applies when `mail-source-delete-incoming' is a positive 285This variable only applies when `mail-source-delete-incoming' is a positive
283number." 286number."
287 :version "21.4"
284 :group 'mail-source 288 :group 'mail-source
285 :type 'boolean) 289 :type 'boolean)
286 290
@@ -301,6 +305,7 @@ number."
301 305
302(defcustom mail-source-movemail-program nil 306(defcustom mail-source-movemail-program nil
303 "If non-nil, name of program for fetching new mail." 307 "If non-nil, name of program for fetching new mail."
308 :version "21.4"
304 :group 'mail-source 309 :group 'mail-source
305 :type '(choice (const nil) string)) 310 :type '(choice (const nil) string))
306 311
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 0e74da73b7d..21c386b86ce 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -135,6 +135,7 @@ mailbox format."
135 135
136(defcustom message-fcc-externalize-attachments nil 136(defcustom message-fcc-externalize-attachments nil
137 "If non-nil, attachments are included as external parts in Fcc copies." 137 "If non-nil, attachments are included as external parts in Fcc copies."
138 :version "21.4"
138 :type 'boolean 139 :type 'boolean
139 :group 'message-sending) 140 :group 'message-sending)
140 141
@@ -174,7 +175,7 @@ Otherwise, most addresses look like `angles', but they look like
174 175
175(defcustom message-insert-canlock t 176(defcustom message-insert-canlock t
176 "Whether to insert a Cancel-Lock header in news postings." 177 "Whether to insert a Cancel-Lock header in news postings."
177 :version "21.3" 178 :version "21.4"
178 :group 'message-headers 179 :group 'message-headers
179 :type 'boolean) 180 :type 'boolean)
180 181
@@ -203,6 +204,7 @@ Checks include `subject-cmsg', `multiple-headers', `sendsys',
203 "*Headers to be generated or prompted for when sending a message. 204 "*Headers to be generated or prompted for when sending a message.
204Also see `message-required-news-headers' and 205Also see `message-required-news-headers' and
205`message-required-mail-headers'." 206`message-required-mail-headers'."
207 :version "21.4"
206 :group 'message-news 208 :group 'message-news
207 :group 'message-headers 209 :group 'message-headers
208 :link '(custom-manual "(message)Message Headers") 210 :link '(custom-manual "(message)Message Headers")
@@ -210,6 +212,7 @@ Also see `message-required-news-headers' and
210 212
211(defcustom message-draft-headers '(References From) 213(defcustom message-draft-headers '(References From)
212 "*Headers to be generated when saving a draft message." 214 "*Headers to be generated when saving a draft message."
215 :version "21.4"
213 :group 'message-news 216 :group 'message-news
214 :group 'message-headers 217 :group 'message-headers
215 :link '(custom-manual "(message)Message Headers") 218 :link '(custom-manual "(message)Message Headers")
@@ -287,6 +290,7 @@ the user what do do. In this case, the subject is matched against
287`message-subject-trailing-was-query' is t, always strip the trailing 290`message-subject-trailing-was-query' is t, always strip the trailing
288old subject. In this case, `message-subject-trailing-was-regexp' is 291old subject. In this case, `message-subject-trailing-was-regexp' is
289used." 292used."
293 :version "21.4"
290 :type '(choice (const :tag "never" nil) 294 :type '(choice (const :tag "never" nil)
291 (const :tag "always strip" t) 295 (const :tag "always strip" t)
292 (const ask)) 296 (const ask))
@@ -303,6 +307,7 @@ the variable is t instead of `ask', use
303`message-subject-trailing-was-regexp' instead. 307`message-subject-trailing-was-regexp' instead.
304 308
305It is okay to create some false positives here, as the user is asked." 309It is okay to create some false positives here, as the user is asked."
310 :version "21.4"
306 :group 'message-various 311 :group 'message-various
307 :link '(custom-manual "(message)Message Headers") 312 :link '(custom-manual "(message)Message Headers")
308 :type 'regexp) 313 :type 'regexp)
@@ -315,6 +320,7 @@ If `message-subject-trailing-was-query' is set to t, the subject is
315matched against `message-subject-trailing-was-regexp' in 320matched against `message-subject-trailing-was-regexp' in
316`message-strip-subject-trailing-was'. You should use a regexp creating very 321`message-strip-subject-trailing-was'. You should use a regexp creating very
317few false positives here." 322few false positives here."
323 :version "21.4"
318 :group 'message-various 324 :group 'message-various
319 :link '(custom-manual "(message)Message Headers") 325 :link '(custom-manual "(message)Message Headers")
320 :type 'regexp) 326 :type 'regexp)
@@ -327,6 +333,7 @@ few false positives here."
327(defcustom message-mark-insert-begin 333(defcustom message-mark-insert-begin
328 "--8<---------------cut here---------------start------------->8---\n" 334 "--8<---------------cut here---------------start------------->8---\n"
329 "How to mark the beginning of some inserted text." 335 "How to mark the beginning of some inserted text."
336 :version "21.4"
330 :type 'string 337 :type 'string
331 :link '(custom-manual "(message)Insertion Variables") 338 :link '(custom-manual "(message)Insertion Variables")
332 :group 'message-various) 339 :group 'message-various)
@@ -335,6 +342,7 @@ few false positives here."
335(defcustom message-mark-insert-end 342(defcustom message-mark-insert-end
336 "--8<---------------cut here---------------end--------------->8---\n" 343 "--8<---------------cut here---------------end--------------->8---\n"
337 "How to mark the end of some inserted text." 344 "How to mark the end of some inserted text."
345 :version "21.4"
338 :type 'string 346 :type 'string
339 :link '(custom-manual "(message)Insertion Variables") 347 :link '(custom-manual "(message)Insertion Variables")
340 :group 'message-various) 348 :group 'message-various)
@@ -344,6 +352,7 @@ few false positives here."
344 "X-No-Archive: Yes\n" 352 "X-No-Archive: Yes\n"
345 "Header to insert when you don't want your article to be archived. 353 "Header to insert when you don't want your article to be archived.
346Archives \(such as groups.google.com\) respect this header." 354Archives \(such as groups.google.com\) respect this header."
355 :version "21.4"
347 :type 'string 356 :type 'string
348 :link '(custom-manual "(message)Header Commands") 357 :link '(custom-manual "(message)Header Commands")
349 :group 'message-various) 358 :group 'message-various)
@@ -353,6 +362,7 @@ Archives \(such as groups.google.com\) respect this header."
353 "X-No-Archive: Yes - save http://groups.google.com/" 362 "X-No-Archive: Yes - save http://groups.google.com/"
354 "Note to insert why you wouldn't want this posting archived. 363 "Note to insert why you wouldn't want this posting archived.
355If nil, don't insert any text in the body." 364If nil, don't insert any text in the body."
365 :version "21.4"
356 :type '(radio (string :format "%t: %v\n" :size 0) 366 :type '(radio (string :format "%t: %v\n" :size 0)
357 (const nil)) 367 (const nil))
358 :link '(custom-manual "(message)Header Commands") 368 :link '(custom-manual "(message)Header Commands")
@@ -372,6 +382,7 @@ If nil, don't insert any text in the body."
372If nil, `message-cross-post-followup-to' will only do a followup. Note that 382If nil, `message-cross-post-followup-to' will only do a followup. Note that
373you can explicitly override this setting by calling 383you can explicitly override this setting by calling
374`message-cross-post-followup-to' with a prefix." 384`message-cross-post-followup-to' with a prefix."
385 :version "21.4"
375 :type 'boolean 386 :type 'boolean
376 :group 'message-various) 387 :group 'message-various)
377 388
@@ -379,6 +390,7 @@ you can explicitly override this setting by calling
379(defcustom message-cross-post-note 390(defcustom message-cross-post-note
380 "Crosspost & Followup-To: " 391 "Crosspost & Followup-To: "
381 "Note to insert before signature to notify of cross-post and follow-up." 392 "Note to insert before signature to notify of cross-post and follow-up."
393 :version "21.4"
382 :type 'string 394 :type 'string
383 :group 'message-various) 395 :group 'message-various)
384 396
@@ -386,6 +398,7 @@ you can explicitly override this setting by calling
386(defcustom message-followup-to-note 398(defcustom message-followup-to-note
387 "Followup-To: " 399 "Followup-To: "
388 "Note to insert before signature to notify of follow-up only." 400 "Note to insert before signature to notify of follow-up only."
401 :version "21.4"
389 :type 'string 402 :type 'string
390 :group 'message-various) 403 :group 'message-various)
391 404
@@ -396,6 +409,7 @@ you can explicitly override this setting by calling
396The function will be called with four arguments. The function should not only 409The function will be called with four arguments. The function should not only
397insert a note, but also ensure old notes are deleted. See the documentation 410insert a note, but also ensure old notes are deleted. See the documentation
398for `message-cross-post-insert-note'." 411for `message-cross-post-insert-note'."
412 :version "21.4"
399 :type 'function 413 :type 'function
400 :group 'message-various) 414 :group 'message-various)
401 415
@@ -638,6 +652,7 @@ always query the user whether to use the value. If it is the symbol
638If nil, always ignore the header. If it is the symbol `ask', always 652If nil, always ignore the header. If it is the symbol `ask', always
639query the user whether to use the value. If it is the symbol `use', 653query the user whether to use the value. If it is the symbol `use',
640always use the value." 654always use the value."
655 :version "21.4"
641 :group 'message-interface 656 :group 'message-interface
642 :link '(custom-manual "(message)Mailing Lists") 657 :link '(custom-manual "(message)Mailing Lists")
643 :type '(choice (const :tag "ignore" nil) 658 :type '(choice (const :tag "ignore" nil)
@@ -651,6 +666,7 @@ If non-nil, this variable contains a list of functions which return
651regular expressions to match lists. These functions can be used in 666regular expressions to match lists. These functions can be used in
652conjunction with `message-subscribed-regexps' and 667conjunction with `message-subscribed-regexps' and
653`message-subscribed-addresses'." 668`message-subscribed-addresses'."
669 :version "21.4"
654 :group 'message-interface 670 :group 'message-interface
655 :link '(custom-manual "(message)Mailing Lists") 671 :link '(custom-manual "(message)Mailing Lists")
656 :type '(repeat sexp)) 672 :type '(repeat sexp))
@@ -659,6 +675,7 @@ conjunction with `message-subscribed-regexps' and
659 "*A file containing addresses the user is subscribed to. 675 "*A file containing addresses the user is subscribed to.
660If nil, do not look at any files to determine list subscriptions. If 676If nil, do not look at any files to determine list subscriptions. If
661non-nil, each line of this file should be a mailing list address." 677non-nil, each line of this file should be a mailing list address."
678 :version "21.4"
662 :group 'message-interface 679 :group 'message-interface
663 :link '(custom-manual "(message)Mailing Lists") 680 :link '(custom-manual "(message)Mailing Lists")
664 :type '(radio (file :format "%t: %v\n" :size 0) 681 :type '(radio (file :format "%t: %v\n" :size 0)
@@ -669,6 +686,7 @@ non-nil, each line of this file should be a mailing list address."
669If nil, do not use any predefined list subscriptions. This list of 686If nil, do not use any predefined list subscriptions. This list of
670addresses can be used in conjunction with 687addresses can be used in conjunction with
671`message-subscribed-address-functions' and `message-subscribed-regexps'." 688`message-subscribed-address-functions' and `message-subscribed-regexps'."
689 :version "21.4"
672 :group 'message-interface 690 :group 'message-interface
673 :link '(custom-manual "(message)Mailing Lists") 691 :link '(custom-manual "(message)Mailing Lists")
674 :type '(repeat string)) 692 :type '(repeat string))
@@ -678,6 +696,7 @@ addresses can be used in conjunction with
678If nil, do not use any predefined list subscriptions. This list of 696If nil, do not use any predefined list subscriptions. This list of
679regular expressions can be used in conjunction with 697regular expressions can be used in conjunction with
680`message-subscribed-address-functions' and `message-subscribed-addresses'." 698`message-subscribed-address-functions' and `message-subscribed-addresses'."
699 :version "21.4"
681 :group 'message-interface 700 :group 'message-interface
682 :link '(custom-manual "(message)Mailing Lists") 701 :link '(custom-manual "(message)Mailing Lists")
683 :type '(repeat regexp)) 702 :type '(repeat regexp))
@@ -687,6 +706,7 @@ regular expressions can be used in conjunction with
687If it is the symbol `always', the posting is allowed. If it is the 706If it is the symbol `always', the posting is allowed. If it is the
688symbol `never', the posting is not allowed. If it is the symbol 707symbol `never', the posting is not allowed. If it is the symbol
689`ask', you are prompted." 708`ask', you are prompted."
709 :version "21.4"
690 :group 'message-interface 710 :group 'message-interface
691 :link '(custom-manual "(message)Message Headers") 711 :link '(custom-manual "(message)Message Headers")
692 :type '(choice (const always) 712 :type '(choice (const always)
@@ -843,6 +863,7 @@ See also `message-yank-cited-prefix'."
843 "*Prefix inserted on cited or empty lines of yanked messages. 863 "*Prefix inserted on cited or empty lines of yanked messages.
844Fix `message-cite-prefix-regexp' if it is set to an abnormal value. 864Fix `message-cite-prefix-regexp' if it is set to an abnormal value.
845See also `message-yank-prefix'." 865See also `message-yank-prefix'."
866 :version "21.4"
846 :type 'string 867 :type 'string
847 :link '(custom-manual "(message)Insertion Variables") 868 :link '(custom-manual "(message)Insertion Variables")
848 :group 'message-insertion) 869 :group 'message-insertion)
@@ -899,6 +920,7 @@ If nil, don't insert a signature."
899;;;###autoload 920;;;###autoload
900(defcustom message-signature-insert-empty-line t 921(defcustom message-signature-insert-empty-line t
901 "*If non-nil, insert an empty line before the signature separator." 922 "*If non-nil, insert an empty line before the signature separator."
923 :version "21.4"
902 :type 'boolean 924 :type 'boolean
903 :link '(custom-manual "(message)Insertion Variables") 925 :link '(custom-manual "(message)Insertion Variables")
904 :group 'message-insertion) 926 :group 'message-insertion)
@@ -1079,6 +1101,7 @@ candidates:
1079 "Regexp of headers to be hidden when composing new messages. 1101 "Regexp of headers to be hidden when composing new messages.
1080This can also be a list of regexps to match headers. Or a list 1102This can also be a list of regexps to match headers. Or a list
1081starting with `not' and followed by regexps." 1103starting with `not' and followed by regexps."
1104 :version "21.4"
1082 :group 'message 1105 :group 'message
1083 :link '(custom-manual "(message)Message Headers") 1106 :link '(custom-manual "(message)Message Headers")
1084 :type '(repeat regexp)) 1107 :type '(repeat regexp))
@@ -1354,6 +1377,7 @@ subaddresses. So if the first address appears in the recipient list
1354for a message, the subaddresses will be removed (if present) before 1377for a message, the subaddresses will be removed (if present) before
1355the mail is sent. All addresses in this structure should be 1378the mail is sent. All addresses in this structure should be
1356downcased." 1379downcased."
1380 :version "21.4"
1357 :group 'message-headers 1381 :group 'message-headers
1358 :type '(repeat (repeat string))) 1382 :type '(repeat (repeat string)))
1359 1383
@@ -1361,6 +1385,7 @@ downcased."
1361 "Like `mail-user-agent'. 1385 "Like `mail-user-agent'.
1362Except if it is nil, use Gnus native MUA; if it is t, use 1386Except if it is nil, use Gnus native MUA; if it is t, use
1363`mail-user-agent'." 1387`mail-user-agent'."
1388 :version "21.4"
1364 :type '(radio (const :tag "Gnus native" 1389 :type '(radio (const :tag "Gnus native"
1365 :format "%t\n" 1390 :format "%t\n"
1366 nil) 1391 nil)
@@ -1384,7 +1409,7 @@ If this variable is non-nil, pose the question \"Reply to all
1384recipients?\" before a wide reply to multiple recipients. If the user 1409recipients?\" before a wide reply to multiple recipients. If the user
1385answers yes, reply to all recipients as usual. If the user answers 1410answers yes, reply to all recipients as usual. If the user answers
1386no, only reply back to the author." 1411no, only reply back to the author."
1387 :version "21.3" 1412 :version "21.4"
1388 :group 'message-headers 1413 :group 'message-headers
1389 :link '(custom-manual "(message)Wide Reply") 1414 :link '(custom-manual "(message)Wide Reply")
1390 :type 'boolean) 1415 :type 'boolean)
@@ -1402,6 +1427,7 @@ no, only reply back to the author."
1402 (executable-find idna-program) 1427 (executable-find idna-program)
1403 'ask) 1428 'ask)
1404 "Whether to encode non-ASCII in domain names into ASCII according to IDNA." 1429 "Whether to encode non-ASCII in domain names into ASCII according to IDNA."
1430 :version "21.4"
1405 :group 'message-headers 1431 :group 'message-headers
1406 :link '(custom-manual "(message)IDNA") 1432 :link '(custom-manual "(message)IDNA")
1407 :type '(choice (const :tag "Ask" ask) 1433 :type '(choice (const :tag "Ask" ask)
@@ -1527,6 +1553,7 @@ no, only reply back to the author."
1527 "\\)") 1553 "\\)")
1528 "Regular expression that matches a valid FQDN." 1554 "Regular expression that matches a valid FQDN."
1529 ;; see also: gnus-button-valid-fqdn-regexp 1555 ;; see also: gnus-button-valid-fqdn-regexp
1556 :version "21.4"
1530 :group 'message-headers 1557 :group 'message-headers
1531 :type 'regexp) 1558 :type 'regexp)
1532 1559
@@ -2336,6 +2363,7 @@ these properties from the message composition buffer. However, some
2336packages requires these properties to be present in order to work. 2363packages requires these properties to be present in order to work.
2337If you use one of these packages, turn this option off, and hope the 2364If you use one of these packages, turn this option off, and hope the
2338message composition doesn't break too bad." 2365message composition doesn't break too bad."
2366 :version "21.4"
2339 :group 'message-various 2367 :group 'message-various
2340 :link '(custom-manual "(message)Various Message Variables") 2368 :link '(custom-manual "(message)Various Message Variables")
2341 :type 'boolean) 2369 :type 'boolean)
@@ -2680,6 +2708,7 @@ prefix FORCE is given."
2680E.g., if this list contains a member list with elements `Cc' and `To', 2708E.g., if this list contains a member list with elements `Cc' and `To',
2681then `message-carefully-insert-headers' will not insert a `To' header 2709then `message-carefully-insert-headers' will not insert a `To' header
2682when the message is already `Cc'ed to the recipient." 2710when the message is already `Cc'ed to the recipient."
2711 :version "21.4"
2683 :group 'message-headers 2712 :group 'message-headers
2684 :link '(custom-manual "(message)Message Headers") 2713 :link '(custom-manual "(message)Message Headers")
2685 :type '(repeat sexp)) 2714 :type '(repeat sexp))
@@ -5226,6 +5255,7 @@ than 988 characters long, and if they are not, trim them until they are."
5226(defcustom message-beginning-of-line t 5255(defcustom message-beginning-of-line t
5227 "Whether \\<message-mode-map>\\[message-beginning-of-line]\ 5256 "Whether \\<message-mode-map>\\[message-beginning-of-line]\
5228 goes to beginning of header values." 5257 goes to beginning of header values."
5258 :version "21.4"
5229 :group 'message-buffers 5259 :group 'message-buffers
5230 :link '(custom-manual "(message)Movement") 5260 :link '(custom-manual "(message)Movement")
5231 :type 'boolean) 5261 :type 'boolean)
@@ -6544,6 +6574,7 @@ which specify the range to operate on."
6544(defcustom message-tab-body-function nil 6574(defcustom message-tab-body-function nil
6545 "*Function to execute when `message-tab' (TAB) is executed in the body. 6575 "*Function to execute when `message-tab' (TAB) is executed in the body.
6546If nil, the function bound in `text-mode-map' or `global-map' is executed." 6576If nil, the function bound in `text-mode-map' or `global-map' is executed."
6577 :version "21.4"
6547 :group 'message 6578 :group 'message
6548 :link '(custom-manual "(message)Various Commands") 6579 :link '(custom-manual "(message)Various Commands")
6549 :type 'function) 6580 :type 'function)
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index c396789957c..ff05393415d 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -115,6 +115,7 @@ The defined renderer types are:
115`lynx' : use lynx; 115`lynx' : use lynx;
116`html2text' : use html2text; 116`html2text' : use html2text;
117nil : use external viewer." 117nil : use external viewer."
118 :version "21.4"
118 :type '(choice (const w3) 119 :type '(choice (const w3)
119 (const w3m) 120 (const w3m)
120 (const w3m-standalone) 121 (const w3m-standalone)
@@ -123,7 +124,6 @@ nil : use external viewer."
123 (const html2text) 124 (const html2text)
124 (const nil) 125 (const nil)
125 (function)) 126 (function))
126 :version "21.3"
127 :group 'mime-display) 127 :group 'mime-display)
128 128
129(defvar mm-inline-text-html-renderer nil 129(defvar mm-inline-text-html-renderer nil
@@ -134,6 +134,7 @@ It is suggested to customize `mm-text-html-renderer' instead.")
134 "If non-nil, Gnus will allow retrieving images in HTML contents with 134 "If non-nil, Gnus will allow retrieving images in HTML contents with
135the <img> tags. It has no effect on Emacs/w3. See also the 135the <img> tags. It has no effect on Emacs/w3. See also the
136documentation for the `mm-w3m-safe-url-regexp' variable." 136documentation for the `mm-w3m-safe-url-regexp' variable."
137 :version "21.4"
137 :type 'boolean 138 :type 'boolean
138 :group 'mime-display) 139 :group 'mime-display)
139 140
@@ -280,6 +281,7 @@ type inline."
280 "application/pdf" "application/x-dvi") 281 "application/pdf" "application/x-dvi")
281 "List of media types for which the external viewer will not be killed 282 "List of media types for which the external viewer will not be killed
282when selecting a different article." 283when selecting a different article."
284 :version "21.4"
283 :type '(repeat string) 285 :type '(repeat string)
284 :group 'mime-display) 286 :group 'mime-display)
285 287
@@ -381,6 +383,7 @@ If not set, `default-directory' will be used."
381 383
382(defcustom mm-external-terminal-program "xterm" 384(defcustom mm-external-terminal-program "xterm"
383 "The program to start an external terminal." 385 "The program to start an external terminal."
386 :version "21.4"
384 :type 'string 387 :type 'string
385 :group 'mime-display) 388 :group 'mime-display)
386 389
@@ -413,6 +416,7 @@ If not set, `default-directory' will be used."
413 "Option of verifying signed parts. 416 "Option of verifying signed parts.
414`never', not verify; `always', always verify; 417`never', not verify; `always', always verify;
415`known', only verify known protocols. Otherwise, ask user." 418`known', only verify known protocols. Otherwise, ask user."
419 :version "21.4"
416 :type '(choice (item always) 420 :type '(choice (item always)
417 (item never) 421 (item never)
418 (item :tag "only known protocols" known) 422 (item :tag "only known protocols" known)
@@ -619,11 +623,14 @@ Postpone undisplaying of viewers for types in
619 "Copy the contents of the current buffer to a fresh buffer." 623 "Copy the contents of the current buffer to a fresh buffer."
620 (save-excursion 624 (save-excursion
621 (let ((obuf (current-buffer)) 625 (let ((obuf (current-buffer))
626 (multibyte enable-multibyte-characters)
622 beg) 627 beg)
623 (goto-char (point-min)) 628 (goto-char (point-min))
624 (search-forward-regexp "^\n" nil t) 629 (search-forward-regexp "^\n" nil t)
625 (setq beg (point)) 630 (setq beg (point))
626 (set-buffer (generate-new-buffer " *mm*")) 631 (set-buffer (generate-new-buffer " *mm*"))
632 ;; Preserve the data's unibyteness (for url-insert-file-contents).
633 (set-buffer-multibyte multibyte)
627 (insert-buffer-substring obuf beg) 634 (insert-buffer-substring obuf beg)
628 (current-buffer)))) 635 (current-buffer))))
629 636
@@ -1482,5 +1489,5 @@ If RECURSIVE, search recursively."
1482 1489
1483(provide 'mm-decode) 1490(provide 'mm-decode)
1484 1491
1485;;; arch-tag: 4f35d360-56b8-4030-9388-3ed82d359b9b 1492;; arch-tag: 4f35d360-56b8-4030-9388-3ed82d359b9b
1486;;; mm-decode.el ends here 1493;;; mm-decode.el ends here
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index 4e6c7069b38..55c3fd33bc2 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -287,6 +287,7 @@ More than one suitable coding system may be found for some text.
287By default, the coding system with the highest priority is used 287By default, the coding system with the highest priority is used
288to encode outgoing messages (see `sort-coding-systems'). If this 288to encode outgoing messages (see `sort-coding-systems'). If this
289variable is set, it overrides the default priority." 289variable is set, it overrides the default priority."
290 :version "21.2"
290 :type '(repeat (symbol :tag "Coding system")) 291 :type '(repeat (symbol :tag "Coding system"))
291 :group 'mime) 292 :group 'mime)
292 293
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index 4b083ee461b..21633fb4152 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -44,6 +44,7 @@
44 '(name access-type expiration size permission format) 44 '(name access-type expiration size permission format)
45 "*A list of acceptable parameters in MML tag. 45 "*A list of acceptable parameters in MML tag.
46These parameters are generated in Content-Type header if exists." 46These parameters are generated in Content-Type header if exists."
47 :version "21.4"
47 :type '(repeat (symbol :tag "Parameter")) 48 :type '(repeat (symbol :tag "Parameter"))
48 :group 'message) 49 :group 'message)
49 50
@@ -51,12 +52,14 @@ These parameters are generated in Content-Type header if exists."
51 '(filename creation-date modification-date read-date) 52 '(filename creation-date modification-date read-date)
52 "*A list of acceptable parameters in MML tag. 53 "*A list of acceptable parameters in MML tag.
53These parameters are generated in Content-Disposition header if exists." 54These parameters are generated in Content-Disposition header if exists."
55 :version "21.4"
54 :type '(repeat (symbol :tag "Parameter")) 56 :type '(repeat (symbol :tag "Parameter"))
55 :group 'message) 57 :group 'message)
56 58
57(defcustom mml-insert-mime-headers-always nil 59(defcustom mml-insert-mime-headers-always nil
58 "If non-nil, always put Content-Type: text/plain at top of empty parts. 60 "If non-nil, always put Content-Type: text/plain at top of empty parts.
59It is necessary to work against a bug in certain clients." 61It is necessary to work against a bug in certain clients."
62 :version "21.4"
60 :type 'boolean 63 :type 'boolean
61 :group 'message) 64 :group 'message)
62 65
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 19abb629a1d..56272a1472b 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -211,6 +211,7 @@ variable is the symbol `default' the default behaviour is
211used (which currently is nil, unless you use a statistical 211used (which currently is nil, unless you use a statistical
212spam.el test); if this variable is another non-nil value bodies 212spam.el test); if this variable is another non-nil value bodies
213will be downloaded." 213will be downloaded."
214 :version "21.4"
214 :group 'nnimap 215 :group 'nnimap
215 :type '(choice (const :tag "Let system decide" deault) 216 :type '(choice (const :tag "Let system decide" deault)
216 boolean)) 217 boolean))
@@ -219,9 +220,10 @@ will be downloaded."
219 220
220(defcustom nnimap-close-asynchronous t 221(defcustom nnimap-close-asynchronous t
221 "Close mailboxes asynchronously in `nnimap-close-group'. 222 "Close mailboxes asynchronously in `nnimap-close-group'.
222This means that errors cought by nnimap when closing the mailbox will 223This means that errors caught by nnimap when closing the mailbox will
223not prevent Gnus from updating the group status, which may be harmful. 224not prevent Gnus from updating the group status, which may be harmful.
224However, it increases speed." 225However, it increases speed."
226 :version "21.4"
225 :type 'boolean 227 :type 'boolean
226 :group 'nnimap) 228 :group 'nnimap)
227 229
@@ -230,6 +232,7 @@ However, it increases speed."
230This increases the speed of closing mailboxes (quiting group) but may 232This increases the speed of closing mailboxes (quiting group) but may
231decrease the speed of selecting another mailbox later. Re-selecting 233decrease the speed of selecting another mailbox later. Re-selecting
232the same mailbox will be faster though." 234the same mailbox will be faster though."
235 :version "21.4"
233 :type 'boolean 236 :type 'boolean
234 :group 'nnimap) 237 :group 'nnimap)
235 238
@@ -242,6 +245,7 @@ more carefully for new mail.
242 245
243In summary, the default is O((1-p)*k+p*n) and changing it to nil makes 246In summary, the default is O((1-p)*k+p*n) and changing it to nil makes
244it O(n). If p is small, then the default is probably faster." 247it O(n). If p is small, then the default is probably faster."
248 :version "21.4"
245 :type 'boolean 249 :type 'boolean
246 :group 'nnimap) 250 :group 'nnimap)
247 251
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index bebf7ceaf07..c1a23d8ca9b 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -224,6 +224,7 @@ From header will be expired to the group \"nnfolder:Work\";
224articles containing the sting \"IMPORTANT\" in the Subject header will 224articles containing the sting \"IMPORTANT\" in the Subject header will
225be expired to the group \"nnfolder:IMPORTANT.YYYY.MMM\"; and 225be expired to the group \"nnfolder:IMPORTANT.YYYY.MMM\"; and
226everything else will be expired to \"nnfolder:Archive-YYYY\"." 226everything else will be expired to \"nnfolder:Archive-YYYY\"."
227 :version "21.4"
227 :group 'nnmail-expire 228 :group 'nnmail-expire
228 :type '(repeat (list (choice :tag "Match against" 229 :type '(repeat (list (choice :tag "Match against"
229 (string :tag "Header") 230 (string :tag "Header")
@@ -558,11 +559,13 @@ parameter. It should return nil, `warn' or `delete'."
558 559
559(defcustom nnmail-mail-splitting-charset nil 560(defcustom nnmail-mail-splitting-charset nil
560 "Default charset to be used when splitting incoming mail." 561 "Default charset to be used when splitting incoming mail."
562 :version "21.4"
561 :group 'nnmail 563 :group 'nnmail
562 :type 'symbol) 564 :type 'symbol)
563 565
564(defcustom nnmail-mail-splitting-decodes nil 566(defcustom nnmail-mail-splitting-decodes nil
565 "Whether the nnmail splitting functionality should MIME decode headers." 567 "Whether the nnmail splitting functionality should MIME decode headers."
568 :version "21.4"
566 :group 'nnmail 569 :group 'nnmail
567 :type 'boolean) 570 :type 'boolean)
568 571
diff --git a/lisp/gnus/pgg-def.el b/lisp/gnus/pgg-def.el
index b5228676475..b8d9cbec807 100644
--- a/lisp/gnus/pgg-def.el
+++ b/lisp/gnus/pgg-def.el
@@ -50,6 +50,7 @@
50 50
51(defcustom pgg-query-keyserver nil 51(defcustom pgg-query-keyserver nil
52 "Whether PGG queries keyservers for missing keys when verifying messages." 52 "Whether PGG queries keyservers for missing keys when verifying messages."
53 :version "21.4"
53 :group 'pgg 54 :group 'pgg
54 :type 'boolean) 55 :type 'boolean)
55 56
diff --git a/lisp/gnus/sha1.el b/lisp/gnus/sha1.el
index c71a135c551..a9b68805d3f 100644
--- a/lisp/gnus/sha1.el
+++ b/lisp/gnus/sha1.el
@@ -82,6 +82,7 @@ It must be a string \(program name\) or list of strings \(name and its args\)."
82 (error)) 82 (error))
83 "*Use external SHA1 program. 83 "*Use external SHA1 program.
84If this variable is set to nil, use internal function only." 84If this variable is set to nil, use internal function only."
85 :version "21.4"
85 :type 'boolean 86 :type 'boolean
86 :group 'sha1) 87 :group 'sha1)
87 88
diff --git a/lisp/gnus/smiley.el b/lisp/gnus/smiley.el
index d41aea1d4ce..4564db294f1 100644
--- a/lisp/gnus/smiley.el
+++ b/lisp/gnus/smiley.el
@@ -78,6 +78,7 @@ regexp to replace with IMAGE. IMAGE is the name of a PBM file in
78 (push "xpm" types)) 78 (push "xpm" types))
79 types) 79 types)
80 "*List of suffixes on picon file names to try." 80 "*List of suffixes on picon file names to try."
81 :version "21.4"
81 :type '(repeat string) 82 :type '(repeat string)
82 :group 'smiley) 83 :group 'smiley)
83 84
diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el
index a1f9e902577..954447702bd 100644
--- a/lisp/gnus/smime.el
+++ b/lisp/gnus/smime.el
@@ -150,6 +150,7 @@ certificate."
150(defcustom smime-CA-file nil 150(defcustom smime-CA-file nil
151 "*Files containing certificates for CAs you trust. 151 "*Files containing certificates for CAs you trust.
152File should contain certificates in PEM format." 152File should contain certificates in PEM format."
153 :version "21.4"
153 :type '(choice (const :tag "none" nil) 154 :type '(choice (const :tag "none" nil)
154 file) 155 file)
155 :group 'smime) 156 :group 'smime)
@@ -177,6 +178,7 @@ and the files themself should be in PEM format."
177 178
178(defcustom smime-encrypt-cipher "-des3" 179(defcustom smime-encrypt-cipher "-des3"
179 "*Cipher algorithm used for encryption." 180 "*Cipher algorithm used for encryption."
181 :version "21.4"
180 :type '(choice (const :tag "Triple DES" "-des3") 182 :type '(choice (const :tag "Triple DES" "-des3")
181 (const :tag "DES" "-des") 183 (const :tag "DES" "-des")
182 (const :tag "RC2 40 bits" "-rc2-40") 184 (const :tag "RC2 40 bits" "-rc2-40")
@@ -208,6 +210,7 @@ At least OpenSSL version 0.9.7 is required for this to work."
208(defcustom smime-dns-server nil 210(defcustom smime-dns-server nil
209 "*DNS server to query certificates from. 211 "*DNS server to query certificates from.
210If nil, use system defaults." 212If nil, use system defaults."
213 :version "21.4"
211 :type '(choice (const :tag "System defaults") 214 :type '(choice (const :tag "System defaults")
212 string) 215 string)
213 :group 'smime) 216 :group 'smime)
diff --git a/lisp/gnus/uudecode.el b/lisp/gnus/uudecode.el
index 086ece1cfd4..c969dfa17a1 100644
--- a/lisp/gnus/uudecode.el
+++ b/lisp/gnus/uudecode.el
@@ -51,6 +51,7 @@ input and write the converted data to its standard output."
51(defcustom uudecode-use-external 51(defcustom uudecode-use-external
52 (executable-find uudecode-decoder-program) 52 (executable-find uudecode-decoder-program)
53 "*Use external uudecode program." 53 "*Use external uudecode program."
54 :version "21.4"
54 :group 'gnus-extract 55 :group 'gnus-extract
55 :type 'boolean) 56 :type 'boolean)
56 57
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index b7e6741e9d4..5d24964362a 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -1018,7 +1018,8 @@ currently used by buffers."
1018 (ibuffer-awhen (with-current-buffer buf 1018 (ibuffer-awhen (with-current-buffer buf
1019 (or buffer-file-name 1019 (or buffer-file-name
1020 (and (boundp 'dired-directory) 1020 (and (boundp 'dired-directory)
1021 dired-directory))) 1021 dired-directory
1022 (expand-file-name dired-directory))))
1022 (string-match qualifier it))) 1023 (string-match qualifier it)))
1023 1024
1024;;;###autoload (autoload 'ibuffer-filter-by-size-gt "ibuf-ext.el") 1025;;;###autoload (autoload 'ibuffer-filter-by-size-gt "ibuf-ext.el")
diff --git a/lisp/indent.el b/lisp/indent.el
index 2d223b05ad6..3f423adbace 100644
--- a/lisp/indent.el
+++ b/lisp/indent.el
@@ -164,14 +164,18 @@ interactively or with optional argument FORCE, it will be fixed."
164 (interactive (list (prefix-numeric-value current-prefix-arg) t)) 164 (interactive (list (prefix-numeric-value current-prefix-arg) t))
165 (beginning-of-line n) 165 (beginning-of-line n)
166 (skip-chars-forward " \t") 166 (skip-chars-forward " \t")
167 (let ((lm (current-left-margin)) 167 (if (minibufferp (current-buffer))
168 (cc (current-column))) 168 (if (save-excursion (beginning-of-line) (bobp))
169 (cond ((> cc lm) 169 (goto-char (minibuffer-prompt-end))
170 (if (> (move-to-column lm force) lm) 170 (beginning-of-line))
171 ;; If lm is in a tab and we are not forcing, move before tab 171 (let ((lm (current-left-margin))
172 (backward-char 1))) 172 (cc (current-column)))
173 ((and force (< cc lm)) 173 (cond ((> cc lm)
174 (indent-to-left-margin))))) 174 (if (> (move-to-column lm force) lm)
175 ;; If lm is in a tab and we are not forcing, move before tab
176 (backward-char 1)))
177 ((and force (< cc lm))
178 (indent-to-left-margin))))))
175 179
176;; This used to be the default indent-line-function, 180;; This used to be the default indent-line-function,
177;; used in Fundamental Mode, Text Mode, etc. 181;; used in Fundamental Mode, Text Mode, etc.
diff --git a/lisp/mail/supercite.el b/lisp/mail/supercite.el
index 40c43af5823..af7f8b62e03 100644
--- a/lisp/mail/supercite.el
+++ b/lisp/mail/supercite.el
@@ -2,7 +2,7 @@
2 2
3;; Copyright (C) 1993, 1997, 2003 Free Software Foundation, Inc. 3;; Copyright (C) 1993, 1997, 2003 Free Software Foundation, Inc.
4 4
5;; Author: 1993 Barry A. Warsaw, Century Computing, Inc. <bwarsaw@cen.com> 5;; Author: 1993 Barry A. Warsaw <bwarsaw@python.org>
6;; Maintainer: FSF 6;; Maintainer: FSF
7;; Created: February 1993 7;; Created: February 1993
8;; Last Modified: 1993/09/22 18:58:46 8;; Last Modified: 1993/09/22 18:58:46
diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index 202dac361e7..581a070134d 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -567,7 +567,7 @@ If your system's ping continues until interrupted, you can try setting
567;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 567;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
568 568
569;; Full list is available at: 569;; Full list is available at:
570;; ftp://ftp.isi.edu/in-notes/iana/assignments/port-numbers 570;; http://www.iana.org/assignments/port-numbers
571(defvar network-connection-service-alist 571(defvar network-connection-service-alist
572 (list 572 (list
573 (cons 'echo 7) 573 (cons 'echo 7)
diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el
index c887b144965..99138444f7c 100644
--- a/lisp/progmodes/make-mode.el
+++ b/lisp/progmodes/make-mode.el
@@ -1028,7 +1028,7 @@ definition and conveniently use this command."
1028 (save-excursion 1028 (save-excursion
1029 (beginning-of-line) 1029 (beginning-of-line)
1030 (cond 1030 (cond
1031 ((looking-at "^#+ ") 1031 ((looking-at "^#+")
1032 ;; Found a comment. Set the fill prefix, and find the paragraph 1032 ;; Found a comment. Set the fill prefix, and find the paragraph
1033 ;; boundaries by searching for lines that look like comment-only 1033 ;; boundaries by searching for lines that look like comment-only
1034 ;; lines. 1034 ;; lines.
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index fea1f35a004..7e6a1806fd7 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -421,6 +421,7 @@ This is buffer-local in every such buffer.")
421 ?^ "_" 421 ?^ "_"
422 ?~ "_" 422 ?~ "_"
423 ?, "_" 423 ?, "_"
424 ?= "."
424 ?< "." 425 ?< "."
425 ?> ".") 426 ?> ".")
426 "Default syntax table for shell mode.") 427 "Default syntax table for shell mode.")
diff --git a/lisp/simple.el b/lisp/simple.el
index 899534a899a..1e6e49012e1 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -282,7 +282,8 @@ location."
282 "Major mode not specialized for anything in particular. 282 "Major mode not specialized for anything in particular.
283Other major modes are defined by comparison with this one." 283Other major modes are defined by comparison with this one."
284 (interactive) 284 (interactive)
285 (kill-all-local-variables)) 285 (kill-all-local-variables)
286 (run-hooks 'after-change-major-mode-hook))
286 287
287;; Making and deleting lines. 288;; Making and deleting lines.
288 289
diff --git a/lisp/startup.el b/lisp/startup.el
index 85e707bcc3f..5e9247d483b 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -810,9 +810,14 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
810 ((eq system-type 'ms-dos) 810 ((eq system-type 'ms-dos)
811 (concat "~" init-file-user "/_emacs")) 811 (concat "~" init-file-user "/_emacs"))
812 ((eq system-type 'windows-nt) 812 ((eq system-type 'windows-nt)
813 ;; Prefer .emacs on Windows.
813 (if (directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$") 814 (if (directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$")
814 "~/.emacs" 815 "~/.emacs"
815 "~/_emacs")) 816 ;; Also support _emacs for compatibility.
817 (if (directory-files "~" nil "^_emacs\\(\\.elc?\\)?$")
818 "~/_emacs"
819 ;; But default to .emacs if _emacs does not exist.
820 "~/.emacs")))
816 ((eq system-type 'vax-vms) 821 ((eq system-type 'vax-vms)
817 "sys$login:.emacs") 822 "sys$login:.emacs")
818 (t 823 (t
diff --git a/lisp/subr.el b/lisp/subr.el
index 28e502d1a70..bed5489a1dd 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1,7 +1,7 @@
1;;; subr.el --- basic lisp subroutines for Emacs 1;;; subr.el --- basic lisp subroutines for Emacs
2 2
3;; Copyright (C) 1985, 86, 92, 94, 95, 99, 2000, 2001, 2002, 03, 2004 3;; Copyright (C) 1985, 1986, 1992, 1994, 1995, 1999, 2000, 2001, 2002, 2003,
4;; Free Software Foundation, Inc. 4;; 2004 Free Software Foundation, Inc.
5 5
6;; Maintainer: FSF 6;; Maintainer: FSF
7;; Keywords: internal 7;; Keywords: internal
@@ -683,7 +683,7 @@ in the current Emacs session, then this function may return nil."
683 (setq event (car event))) 683 (setq event (car event)))
684 (if (symbolp event) 684 (if (symbolp event)
685 (car (get event 'event-symbol-elements)) 685 (car (get event 'event-symbol-elements))
686 (let ((base (logand event (1- (lsh 1 18))))) 686 (let ((base (logand event (1- ?\A-\^@))))
687 (downcase (if (< base 32) (logior base 64) base))))) 687 (downcase (if (< base 32) (logior base 64) base)))))
688 688
689(defsubst mouse-movement-p (object) 689(defsubst mouse-movement-p (object)
@@ -1937,9 +1937,15 @@ in BODY."
1937(make-variable-buffer-local 'delayed-mode-hooks) 1937(make-variable-buffer-local 'delayed-mode-hooks)
1938(put 'delay-mode-hooks 'permanent-local t) 1938(put 'delay-mode-hooks 'permanent-local t)
1939 1939
1940(defvar after-change-major-mode-hook nil
1941 "Mode independent hook run at the end of major mode functions.
1942This is run just before the mode dependent hooks.")
1943
1940(defun run-mode-hooks (&rest hooks) 1944(defun run-mode-hooks (&rest hooks)
1941 "Run mode hooks `delayed-mode-hooks' and HOOKS, or delay HOOKS. 1945 "Run mode hooks `delayed-mode-hooks' and HOOKS, or delay HOOKS.
1942Execution is delayed if `delay-mode-hooks' is non-nil. 1946Execution is delayed if `delay-mode-hooks' is non-nil.
1947If `delay-mode-hooks' is nil, run `after-change-major-mode-hook'
1948after running the mode hooks.
1943Major mode functions should use this." 1949Major mode functions should use this."
1944 (if delay-mode-hooks 1950 (if delay-mode-hooks
1945 ;; Delaying case. 1951 ;; Delaying case.
@@ -1948,7 +1954,8 @@ Major mode functions should use this."
1948 ;; Normal case, just run the hook as before plus any delayed hooks. 1954 ;; Normal case, just run the hook as before plus any delayed hooks.
1949 (setq hooks (nconc (nreverse delayed-mode-hooks) hooks)) 1955 (setq hooks (nconc (nreverse delayed-mode-hooks) hooks))
1950 (setq delayed-mode-hooks nil) 1956 (setq delayed-mode-hooks nil)
1951 (apply 'run-hooks hooks))) 1957 (apply 'run-hooks hooks)
1958 (run-hooks 'after-change-major-mode-hook)))
1952 1959
1953(defmacro delay-mode-hooks (&rest body) 1960(defmacro delay-mode-hooks (&rest body)
1954 "Execute BODY, but delay any `run-mode-hooks'. 1961 "Execute BODY, but delay any `run-mode-hooks'.
@@ -2644,5 +2651,5 @@ The properties used on SYMBOL are `composefunc', `sendfunc',
2644 (put symbol 'abortfunc (or abortfunc 'kill-buffer)) 2651 (put symbol 'abortfunc (or abortfunc 'kill-buffer))
2645 (put symbol 'hookvar (or hookvar 'mail-send-hook))) 2652 (put symbol 'hookvar (or hookvar 'mail-send-hook)))
2646 2653
2647;;; arch-tag: f7e0e6e5-70aa-4897-ae72-7a3511ec40bc 2654;; arch-tag: f7e0e6e5-70aa-4897-ae72-7a3511ec40bc
2648;;; subr.el ends here 2655;;; subr.el ends here
diff --git a/lisp/term.el b/lisp/term.el
index f8b21fbce88..7991e74c5e9 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -396,7 +396,7 @@
396 396
397;; This is passed to the inferior in the EMACS environment variable, 397;; This is passed to the inferior in the EMACS environment variable,
398;; so it is important to increase it if there are protocol-relevant changes. 398;; so it is important to increase it if there are protocol-relevant changes.
399(defconst term-protocol-version "0.95") 399(defconst term-protocol-version "0.96")
400 400
401(eval-when-compile 401(eval-when-compile
402 (require 'ange-ftp)) 402 (require 'ange-ftp))
@@ -457,7 +457,7 @@
457;; we want suppressed. 457;; we want suppressed.
458(defvar term-terminal-parameter) 458(defvar term-terminal-parameter)
459(defvar term-terminal-previous-parameter) 459(defvar term-terminal-previous-parameter)
460(defvar term-current-face 'term-default) 460(defvar term-current-face 'default)
461(defvar term-scroll-start 0) ;; Top-most line (inclusive) of scrolling region. 461(defvar term-scroll-start 0) ;; Top-most line (inclusive) of scrolling region.
462(defvar term-scroll-end) ;; Number of line (zero-based) after scrolling region. 462(defvar term-scroll-end) ;; Number of line (zero-based) after scrolling region.
463(defvar term-pager-count nil) ;; If nil, paging is disabled. 463(defvar term-pager-count nil) ;; If nil, paging is disabled.
@@ -1363,11 +1363,14 @@ The main purpose is to get rid of the local keymap."
1363(defvar term-termcap-format 1363(defvar term-termcap-format
1364 "%s%s:li#%d:co#%d:cl=\\E[H\\E[J:cd=\\E[J:bs:am:xn:cm=\\E[%%i%%d;%%dH\ 1364 "%s%s:li#%d:co#%d:cl=\\E[H\\E[J:cd=\\E[J:bs:am:xn:cm=\\E[%%i%%d;%%dH\
1365:nd=\\E[C:up=\\E[A:ce=\\E[K:ho=\\E[H:pt\ 1365:nd=\\E[C:up=\\E[A:ce=\\E[K:ho=\\E[H:pt\
1366:al=\\E[L:dl=\\E[M:DL=\\E[%%dM:AL=\\E[%%dL:cs=\\E[%%i%%d;%%dr:sf=\\n\ 1366:al=\\E[L:dl=\\E[M:DL=\\E[%%dM:AL=\\E[%%dL:cs=\\E[%%i%%d;%%dr:sf=^J\
1367:te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\ 1367:te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
1368:dc=\\E[P:DC=\\E[%%dP:IC=\\E[%%d@:im=\\E[4h:ei=\\E[4l:mi:\ 1368:dc=\\E[P:DC=\\E[%%dP:IC=\\E[%%d@:im=\\E[4h:ei=\\E[4l:mi:\
1369:so=\\E[7m:se=\\E[m:us=\\E[4m:ue=\\E[m:md=\\E[1m:mr=\\E[7m:me=\\E[m\ 1369:so=\\E[7m:se=\\E[m:us=\\E[4m:ue=\\E[m:md=\\E[1m:mr=\\E[7m:me=\\E[m\
1370:UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC" 1370:UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC\
1371:kl=\\EOD:kd=\\EOB:kr=\\EOC:ku=\\EOA:kN=\\E[6~:kP=\\E[5~:@7=\\E[4~:kh=\\E[1~\
1372:mk=\\E[8m:cb=\\E[1K:op=\\E[39;49m:Co#8:pa#64:AB=\\E[4%%dm:AF=\\E[3%%dm:cr=^M\
1373:bl=^G:do=^J:le=^H:ta=^I:se=\E[27m:ue=\E24m:"
1371;;; : -undefine ic 1374;;; : -undefine ic
1372 "termcap capabilities supported") 1375 "termcap capabilities supported")
1373 1376
@@ -1384,10 +1387,9 @@ The main purpose is to get rid of the local keymap."
1384 (nconc 1387 (nconc
1385 (list 1388 (list
1386 (format "TERM=%s" term-term-name) 1389 (format "TERM=%s" term-term-name)
1387 (if (and (boundp 'system-uses-terminfo) system-uses-terminfo) 1390 (format "TERMINFO=%s" data-directory)
1388 (format "TERMINFO=%s" data-directory) 1391 (format term-termcap-format "TERMCAP="
1389 (format term-termcap-format "TERMCAP=" 1392 term-term-name term-height term-width)
1390 term-term-name term-height term-width))
1391 ;; Breaks `./configure' of w3 and url which try to run $EMACS. 1393 ;; Breaks `./configure' of w3 and url which try to run $EMACS.
1392 (format "EMACS=%s (term:%s)" emacs-version term-protocol-version) 1394 (format "EMACS=%s (term:%s)" emacs-version term-protocol-version)
1393 (format "LINES=%d" term-height) 1395 (format "LINES=%d" term-height)
@@ -1407,18 +1409,6 @@ if [ $1 = .. ]; then shift; fi; exec \"$@\""
1407 ".." 1409 ".."
1408 command switches))) 1410 command switches)))
1409 1411
1410;;; This should be in Emacs, but it isn't.
1411(defun term-mem (item list &optional elt=)
1412 "Test to see if ITEM is equal to an item in LIST.
1413Option comparison function ELT= defaults to equal."
1414 (let ((elt= (or elt= (function equal)))
1415 (done nil))
1416 (while (and list (not done))
1417 (if (funcall elt= item (car list))
1418 (setq done list)
1419 (setq list (cdr list))))
1420 done))
1421
1422 1412
1423;;; Input history processing in a buffer 1413;;; Input history processing in a buffer
1424;;; =========================================================================== 1414;;; ===========================================================================
@@ -2643,314 +2633,310 @@ See `term-prompt-regexp'."
2643;;; It emulates (most of the features of) a VT100/ANSI-style terminal. 2633;;; It emulates (most of the features of) a VT100/ANSI-style terminal.
2644 2634
2645(defun term-emulate-terminal (proc str) 2635(defun term-emulate-terminal (proc str)
2646 (let* ((previous-buffer (current-buffer)) 2636 (with-current-buffer (process-buffer proc)
2647 (i 0) char funny count save-point save-marker old-point temp win 2637 (let* ((i 0) char funny count save-point save-marker old-point temp win
2648 (selected (selected-window)) 2638 (buffer-undo-list t)
2649 last-win 2639 (selected (selected-window))
2650 (str-length (length str))) 2640 last-win
2651 (unwind-protect 2641 (str-length (length str)))
2652 (progn 2642 (save-selected-window
2653 (set-buffer (process-buffer proc)) 2643
2654 2644 ;; Let's handle the messages. -mm
2655;;; Let's handle the messages. -mm 2645
2656 2646 (setq str (term-handle-ansi-terminal-messages str))
2657 (setq str (term-handle-ansi-terminal-messages str)) 2647 (setq str-length (length str))
2658 (setq str-length (length str)) 2648
2659 2649 (if (marker-buffer term-pending-delete-marker)
2660 (if (marker-buffer term-pending-delete-marker) 2650 (progn
2661 (progn 2651 ;; Delete text following term-pending-delete-marker.
2662 ;; Delete text following term-pending-delete-marker. 2652 (delete-region term-pending-delete-marker (process-mark proc))
2663 (delete-region term-pending-delete-marker (process-mark proc)) 2653 (set-marker term-pending-delete-marker nil)))
2664 (set-marker term-pending-delete-marker nil))) 2654
2665 2655 (if (eq (window-buffer) (current-buffer))
2666 (if (eq (window-buffer) (current-buffer)) 2656 (progn
2667 (progn 2657 (setq term-vertical-motion (symbol-function 'vertical-motion))
2668 (setq term-vertical-motion (symbol-function 'vertical-motion)) 2658 (term-check-size proc))
2669 (term-check-size proc)) 2659 (setq term-vertical-motion
2670 (setq term-vertical-motion 2660 (symbol-function 'buffer-vertical-motion)))
2671 (symbol-function 'buffer-vertical-motion))) 2661
2672 2662 (setq save-marker (copy-marker (process-mark proc)))
2673 (setq save-marker (copy-marker (process-mark proc))) 2663
2674 2664 (if (/= (point) (process-mark proc))
2675 (if (/= (point) (process-mark proc)) 2665 (progn (setq save-point (point-marker))
2676 (progn (setq save-point (point-marker)) 2666 (goto-char (process-mark proc))))
2677 (goto-char (process-mark proc)))) 2667
2678 2668 (save-restriction
2679 (save-restriction 2669 ;; If the buffer is in line mode, and there is a partial
2680 ;; If the buffer is in line mode, and there is a partial 2670 ;; input line, save the line (by narrowing to leave it
2681 ;; input line, save the line (by narrowing to leave it 2671 ;; outside the restriction ) until we're done with output.
2682 ;; outside the restriction ) until we're done with output. 2672 (if (and (> (point-max) (process-mark proc))
2683 (if (and (> (point-max) (process-mark proc)) 2673 (term-in-line-mode))
2684 (term-in-line-mode)) 2674 (narrow-to-region (point-min) (process-mark proc)))
2685 (narrow-to-region (point-min) (process-mark proc))) 2675
2686 2676 (if term-log-buffer
2687 (if term-log-buffer 2677 (princ str term-log-buffer))
2688 (princ str term-log-buffer)) 2678 (cond ((eq term-terminal-state 4) ;; Have saved pending output.
2689 (cond ((eq term-terminal-state 4) ;; Have saved pending output. 2679 (setq str (concat term-terminal-parameter str))
2690 (setq str (concat term-terminal-parameter str)) 2680 (setq term-terminal-parameter nil)
2691 (setq term-terminal-parameter nil) 2681 (setq str-length (length str))
2692 (setq str-length (length str)) 2682 (setq term-terminal-state 0)))
2693 (setq term-terminal-state 0))) 2683
2694 2684 (while (< i str-length)
2695 (while (< i str-length) 2685 (setq char (aref str i))
2696 (setq char (aref str i)) 2686 (cond ((< term-terminal-state 2)
2697 (cond ((< term-terminal-state 2) 2687 ;; Look for prefix of regular chars
2698 ;; Look for prefix of regular chars 2688 (setq funny
2699 (setq funny 2689 (string-match "[\r\n\000\007\033\t\b\032\016\017]"
2700 (string-match "[\r\n\000\007\033\t\b\032\016\017]" 2690 str i))
2701 str i)) 2691 (if (not funny) (setq funny str-length))
2702 (if (not funny) (setq funny str-length)) 2692 (cond ((> funny i)
2703 (cond ((> funny i) 2693 (cond ((eq term-terminal-state 1)
2704 (cond ((eq term-terminal-state 1) 2694 (term-move-columns 1)
2705 (term-move-columns 1) 2695 (setq term-terminal-state 0)))
2706 (setq term-terminal-state 0))) 2696 (setq count (- funny i))
2707 (setq count (- funny i)) 2697 (setq temp (- (+ (term-horizontal-column) count)
2708 (setq temp (- (+ (term-horizontal-column) count) 2698 term-width))
2709 term-width)) 2699 (cond ((<= temp 0)) ;; All count chars fit in line.
2710 (cond ((<= temp 0)) ;; All count chars fit in line. 2700 ((> count temp) ;; Some chars fit.
2711 ((> count temp) ;; Some chars fit. 2701 ;; This iteration, handle only what fits.
2712 ;; This iteration, handle only what fits. 2702 (setq count (- count temp))
2713 (setq count (- count temp)) 2703 (setq funny (+ count i)))
2714 (setq funny (+ count i))) 2704 ((or (not (or term-pager-count
2715 ((or (not (or term-pager-count 2705 term-scroll-with-delete))
2716 term-scroll-with-delete)) 2706 (> (term-handle-scroll 1) 0))
2717 (> (term-handle-scroll 1) 0)) 2707 (term-adjust-current-row-cache 1)
2718 (term-adjust-current-row-cache 1) 2708 (setq count (min count term-width))
2719 (setq count (min count term-width)) 2709 (setq funny (+ count i))
2720 (setq funny (+ count i)) 2710 (setq term-start-line-column
2721 (setq term-start-line-column 2711 term-current-column))
2722 term-current-column)) 2712 (t ;; Doing PAGER processing.
2723 (t ;; Doing PAGER processing. 2713 (setq count 0 funny i)
2724 (setq count 0 funny i) 2714 (setq term-current-column nil)
2725 (setq term-current-column nil) 2715 (setq term-start-line-column nil)))
2726 (setq term-start-line-column nil))) 2716 (setq old-point (point))
2727 (setq old-point (point)) 2717
2728 2718 ;; Insert a string, check how many columns
2729 ;; Insert a string, check how many columns 2719 ;; we moved, then delete that many columns
2730 ;; we moved, then delete that many columns 2720 ;; following point if not eob nor insert-mode.
2731 ;; following point if not eob nor insert-mode. 2721 (let ((old-column (current-column))
2732 (let ((old-column (current-column)) 2722 columns pos)
2733 columns pos) 2723 (insert (substring str i funny))
2734 (insert (substring str i funny)) 2724 (setq term-current-column (current-column)
2735 (setq term-current-column (current-column) 2725 columns (- term-current-column old-column))
2736 columns (- term-current-column old-column)) 2726 (when (not (or (eobp) term-insert-mode))
2737 (when (not (or (eobp) term-insert-mode)) 2727 (setq pos (point))
2738 (setq pos (point)) 2728 (term-move-columns columns)
2739 (term-move-columns columns) 2729 (delete-region pos (point))))
2740 (delete-region pos (point)))) 2730 (setq term-current-column nil)
2741 (setq term-current-column nil) 2731
2742 2732 (put-text-property old-point (point)
2743 (put-text-property old-point (point) 2733 'face term-current-face)
2744 'face term-current-face) 2734 ;; If the last char was written in last column,
2745 ;; If the last char was written in last column, 2735 ;; back up one column, but remember we did so.
2746 ;; back up one column, but remember we did so. 2736 ;; Thus we emulate xterm/vt100-style line-wrapping.
2747 ;; Thus we emulate xterm/vt100-style line-wrapping. 2737 (cond ((eq temp 0)
2748 (cond ((eq temp 0) 2738 (term-move-columns -1)
2749 (term-move-columns -1) 2739 (setq term-terminal-state 1)))
2750 (setq term-terminal-state 1))) 2740 (setq i (1- funny)))
2751 (setq i (1- funny))) 2741 ((and (setq term-terminal-state 0)
2752 ((and (setq term-terminal-state 0) 2742 (eq char ?\^I)) ; TAB
2753 (eq char ?\^I)) ; TAB 2743 ;; FIXME: Does not handle line wrap!
2754 ;; FIXME: Does not handle line wrap! 2744 (setq count (term-current-column))
2755 (setq count (term-current-column)) 2745 (setq count (+ count 8 (- (mod count 8))))
2756 (setq count (+ count 8 (- (mod count 8)))) 2746 (if (< (move-to-column count nil) count)
2757 (if (< (move-to-column count nil) count) 2747 (term-insert-char char 1))
2758 (term-insert-char char 1)) 2748 (setq term-current-column count))
2759 (setq term-current-column count)) 2749 ((eq char ?\r)
2760 ((eq char ?\r) 2750 ;; Optimize CRLF at end of buffer:
2761 ;; Optimize CRLF at end of buffer: 2751 (cond ((and (< (setq temp (1+ i)) str-length)
2762 (cond ((and (< (setq temp (1+ i)) str-length) 2752 (eq (aref str temp) ?\n)
2763 (eq (aref str temp) ?\n) 2753 (= (point) (point-max))
2764 (= (point) (point-max)) 2754 (not (or term-pager-count
2765 (not (or term-pager-count 2755 term-kill-echo-list
2766 term-kill-echo-list 2756 term-scroll-with-delete)))
2767 term-scroll-with-delete))) 2757 (insert ?\n)
2768 (insert ?\n) 2758 (term-adjust-current-row-cache 1)
2769 (term-adjust-current-row-cache 1) 2759 (setq term-start-line-column 0)
2770 (setq term-start-line-column 0) 2760 (setq term-current-column 0)
2771 (setq term-current-column 0) 2761 (setq i temp))
2772 (setq i temp)) 2762 (t ;; Not followed by LF or can't optimize:
2773 (t ;; Not followed by LF or can't optimize: 2763 (term-vertical-motion 0)
2774 (term-vertical-motion 0) 2764 (setq term-current-column term-start-line-column))))
2775 (setq term-current-column term-start-line-column)))) 2765 ((eq char ?\n)
2776 ((eq char ?\n) 2766 (if (not (and term-kill-echo-list
2777 (if (not (and term-kill-echo-list 2767 (term-check-kill-echo-list)))
2778 (term-check-kill-echo-list))) 2768 (term-down 1 t)))
2779 (term-down 1 t))) 2769 ((eq char ?\b)
2780 ((eq char ?\b) 2770 (term-move-columns -1))
2781 (term-move-columns -1)) 2771 ((eq char ?\033) ; Escape
2782 ((eq char ?\033) ; Escape 2772 (setq term-terminal-state 2))
2783 (setq term-terminal-state 2)) 2773 ((eq char 0)) ; NUL: Do nothing
2784 ((eq char 0)) ; NUL: Do nothing 2774 ((eq char ?\016)) ; Shift Out - ignored
2785 ((eq char ?\016)) ; Shift Out - ignored 2775 ((eq char ?\017)) ; Shift In - ignored
2786 ((eq char ?\017)) ; Shift In - ignored 2776 ((eq char ?\^G)
2787 ((eq char ?\^G) 2777 (beep t)) ; Bell
2788 (beep t)) ; Bell 2778 ((eq char ?\032)
2789 ((eq char ?\032) 2779 (let ((end (string-match "\r?$" str i)))
2790 (let ((end (string-match "\r?$" str i))) 2780 (if end
2791 (if end 2781 (funcall term-command-hook
2792 (funcall term-command-hook 2782 (prog1 (substring str (1+ i) end)
2793 (prog1 (substring str (1+ i) end) 2783 (setq i (match-end 0))))
2794 (setq i (match-end 0)))) 2784 (setq term-terminal-parameter
2795 (setq term-terminal-parameter 2785 (substring str i))
2796 (substring str i)) 2786 (setq term-terminal-state 4)
2797 (setq term-terminal-state 4) 2787 (setq i str-length))))
2798 (setq i str-length)))) 2788 (t ; insert char FIXME: Should never happen
2799 (t ; insert char FIXME: Should never happen 2789 (term-move-columns 1)
2800 (term-move-columns 1) 2790 (backward-delete-char 1)
2801 (backward-delete-char 1) 2791 (insert char))))
2802 (insert char)))) 2792 ((eq term-terminal-state 2) ; Seen Esc
2803 ((eq term-terminal-state 2) ; Seen Esc 2793 (cond ((eq char ?\133) ;; ?\133 = ?[
2804 (cond ((eq char ?\133) ;; ?\133 = ?[
2805 2794
2806;;; Some modifications to cope with multiple settings like ^[[01;32;43m -mm 2795;;; Some modifications to cope with multiple settings like ^[[01;32;43m -mm
2807;;; Note that now the init value of term-terminal-previous-parameter has 2796;;; Note that now the init value of term-terminal-previous-parameter has
2808;;; been changed to -1 2797;;; been changed to -1
2809 2798
2810 (make-local-variable 'term-terminal-parameter) 2799 (make-local-variable 'term-terminal-parameter)
2811 (make-local-variable 'term-terminal-previous-parameter) 2800 (make-local-variable 'term-terminal-previous-parameter)
2812 (make-local-variable 'term-terminal-previous-parameter-2) 2801 (make-local-variable 'term-terminal-previous-parameter-2)
2813 (make-local-variable 'term-terminal-previous-parameter-3) 2802 (make-local-variable 'term-terminal-previous-parameter-3)
2814 (make-local-variable 'term-terminal-previous-parameter-4) 2803 (make-local-variable 'term-terminal-previous-parameter-4)
2815 (make-local-variable 'term-terminal-more-parameters) 2804 (make-local-variable 'term-terminal-more-parameters)
2816 (setq term-terminal-parameter 0) 2805 (setq term-terminal-parameter 0)
2817 (setq term-terminal-previous-parameter -1) 2806 (setq term-terminal-previous-parameter -1)
2818 (setq term-terminal-previous-parameter-2 -1) 2807 (setq term-terminal-previous-parameter-2 -1)
2819 (setq term-terminal-previous-parameter-3 -1) 2808 (setq term-terminal-previous-parameter-3 -1)
2820 (setq term-terminal-previous-parameter-4 -1) 2809 (setq term-terminal-previous-parameter-4 -1)
2821 (setq term-terminal-more-parameters 0) 2810 (setq term-terminal-more-parameters 0)
2822 (setq term-terminal-state 3)) 2811 (setq term-terminal-state 3))
2823 ((eq char ?D) ;; scroll forward 2812 ((eq char ?D) ;; scroll forward
2824 (term-handle-deferred-scroll) 2813 (term-handle-deferred-scroll)
2825 (term-down 1 t) 2814 (term-down 1 t)
2826 (setq term-terminal-state 0)) 2815 (setq term-terminal-state 0))
2827 ((eq char ?M) ;; scroll reversed 2816 ((eq char ?M) ;; scroll reversed
2828 (term-insert-lines 1) 2817 (term-insert-lines 1)
2829 (setq term-terminal-state 0)) 2818 (setq term-terminal-state 0))
2830 ((eq char ?7) ;; Save cursor 2819 ((eq char ?7) ;; Save cursor
2831 (term-handle-deferred-scroll) 2820 (term-handle-deferred-scroll)
2832 (setq term-saved-cursor 2821 (setq term-saved-cursor
2833 (cons (term-current-row) 2822 (cons (term-current-row)
2834 (term-horizontal-column))) 2823 (term-horizontal-column)))
2835 (setq term-terminal-state 0)) 2824 (setq term-terminal-state 0))
2836 ((eq char ?8) ;; Restore cursor 2825 ((eq char ?8) ;; Restore cursor
2837 (if term-saved-cursor 2826 (if term-saved-cursor
2838 (term-goto (car term-saved-cursor) 2827 (term-goto (car term-saved-cursor)
2839 (cdr term-saved-cursor))) 2828 (cdr term-saved-cursor)))
2840 (setq term-terminal-state 0)) 2829 (setq term-terminal-state 0))
2841 ((setq term-terminal-state 0)))) 2830 ((setq term-terminal-state 0))))
2842 ((eq term-terminal-state 3) ; Seen Esc [ 2831 ((eq term-terminal-state 3) ; Seen Esc [
2843 (cond ((and (>= char ?0) (<= char ?9)) 2832 (cond ((and (>= char ?0) (<= char ?9))
2844 (setq term-terminal-parameter 2833 (setq term-terminal-parameter
2845 (+ (* 10 term-terminal-parameter) (- char ?0)))) 2834 (+ (* 10 term-terminal-parameter) (- char ?0))))
2846 ((eq char ?\;) 2835 ((eq char ?\;)
2847;;; Some modifications to cope with multiple settings like ^[[01;32;43m -mm 2836;;; Some modifications to cope with multiple settings like ^[[01;32;43m -mm
2848 (setq term-terminal-more-parameters 1) 2837 (setq term-terminal-more-parameters 1)
2849 (setq term-terminal-previous-parameter-4 2838 (setq term-terminal-previous-parameter-4
2850 term-terminal-previous-parameter-3) 2839 term-terminal-previous-parameter-3)
2851 (setq term-terminal-previous-parameter-3 2840 (setq term-terminal-previous-parameter-3
2852 term-terminal-previous-parameter-2) 2841 term-terminal-previous-parameter-2)
2853 (setq term-terminal-previous-parameter-2 2842 (setq term-terminal-previous-parameter-2
2854 term-terminal-previous-parameter) 2843 term-terminal-previous-parameter)
2855 (setq term-terminal-previous-parameter 2844 (setq term-terminal-previous-parameter
2856 term-terminal-parameter) 2845 term-terminal-parameter)
2857 (setq term-terminal-parameter 0)) 2846 (setq term-terminal-parameter 0))
2858 ((eq char ??)) ; Ignore ? 2847 ((eq char ??)) ; Ignore ?
2859 (t 2848 (t
2860 (term-handle-ansi-escape proc char) 2849 (term-handle-ansi-escape proc char)
2861 (setq term-terminal-more-parameters 0) 2850 (setq term-terminal-more-parameters 0)
2862 (setq term-terminal-previous-parameter-4 -1) 2851 (setq term-terminal-previous-parameter-4 -1)
2863 (setq term-terminal-previous-parameter-3 -1) 2852 (setq term-terminal-previous-parameter-3 -1)
2864 (setq term-terminal-previous-parameter-2 -1) 2853 (setq term-terminal-previous-parameter-2 -1)
2865 (setq term-terminal-previous-parameter -1) 2854 (setq term-terminal-previous-parameter -1)
2866 (setq term-terminal-state 0))))) 2855 (setq term-terminal-state 0)))))
2867 (if (term-handling-pager) 2856 (if (term-handling-pager)
2868 ;; Finish stuff to get ready to handle PAGER. 2857 ;; Finish stuff to get ready to handle PAGER.
2869 (progn 2858 (progn
2870 (if (> (% (current-column) term-width) 0) 2859 (if (> (% (current-column) term-width) 0)
2860 (setq term-terminal-parameter
2861 (substring str i))
2862 ;; We're at column 0. Goto end of buffer; to compensate,
2863 ;; prepend a ?\r for later. This looks more consistent.
2864 (if (zerop i)
2871 (setq term-terminal-parameter 2865 (setq term-terminal-parameter
2872 (substring str i)) 2866 (concat "\r" (substring str i)))
2873 ;; We're at column 0. Goto end of buffer; to compensate, 2867 (setq term-terminal-parameter (substring str (1- i)))
2874 ;; prepend a ?\r for later. This looks more consistent. 2868 (aset term-terminal-parameter 0 ?\r))
2875 (if (zerop i) 2869 (goto-char (point-max)))
2876 (setq term-terminal-parameter 2870 (setq term-terminal-state 4)
2877 (concat "\r" (substring str i))) 2871 (make-local-variable 'term-pager-old-filter)
2878 (setq term-terminal-parameter (substring str (1- i))) 2872 (setq term-pager-old-filter (process-filter proc))
2879 (aset term-terminal-parameter 0 ?\r)) 2873 (set-process-filter proc term-pager-filter)
2880 (goto-char (point-max))) 2874 (setq i str-length)))
2881 (setq term-terminal-state 4) 2875 (setq i (1+ i))))
2882 (make-local-variable 'term-pager-old-filter) 2876
2883 (setq term-pager-old-filter (process-filter proc)) 2877 (if (>= (term-current-row) term-height)
2884 (set-process-filter proc term-pager-filter) 2878 (term-handle-deferred-scroll))
2885 (setq i str-length))) 2879
2886 (setq i (1+ i)))) 2880 (set-marker (process-mark proc) (point))
2887 2881 (if save-point
2888 (if (>= (term-current-row) term-height) 2882 (progn (goto-char save-point)
2889 (term-handle-deferred-scroll)) 2883 (set-marker save-point nil)))
2890 2884
2891 (set-marker (process-mark proc) (point)) 2885 ;; Check for a pending filename-and-line number to display.
2892 (if save-point 2886 ;; We do this before scrolling, because we might create a new window.
2893 (progn (goto-char save-point) 2887 (if (and term-pending-frame
2894 (set-marker save-point nil))) 2888 (eq (window-buffer selected) (current-buffer)))
2895 2889 (progn (term-display-line (car term-pending-frame)
2896 ;; Check for a pending filename-and-line number to display. 2890 (cdr term-pending-frame))
2897 ;; We do this before scrolling, because we might create a new window. 2891 (setq term-pending-frame nil)
2898 (if (and term-pending-frame 2892 ;; We have created a new window, so check the window size.
2899 (eq (window-buffer selected) (current-buffer))) 2893 (term-check-size proc)))
2900 (progn (term-display-line (car term-pending-frame) 2894
2901 (cdr term-pending-frame)) 2895 ;; Scroll each window displaying the buffer but (by default)
2902 (setq term-pending-frame nil) 2896 ;; only if the point matches the process-mark we started with.
2903 ;; We have created a new window, so check the window size. 2897 (setq win selected)
2904 (term-check-size proc))) 2898 ;; Avoid infinite loop in strange case where minibuffer window
2905 2899 ;; is selected but not active.
2906 ;; Scroll each window displaying the buffer but (by default) 2900 (while (window-minibuffer-p win)
2907 ;; only if the point matches the process-mark we started with. 2901 (setq win (next-window win nil t)))
2908 (setq win selected) 2902 (setq last-win win)
2909 ;; Avoid infinite loop in strange case where minibuffer window 2903 (while (progn
2910 ;; is selected but not active. 2904 (setq win (next-window win nil t))
2911 (while (window-minibuffer-p win) 2905 (if (eq (window-buffer win) (process-buffer proc))
2912 (setq win (next-window win nil t))) 2906 (let ((scroll term-scroll-to-bottom-on-output))
2913 (setq last-win win) 2907 (select-window win)
2914 (while (progn 2908 (if (or (= (point) save-marker)
2915 (setq win (next-window win nil t)) 2909 (eq scroll t) (eq scroll 'all)
2916 (if (eq (window-buffer win) (process-buffer proc)) 2910 ;; Maybe user wants point to jump to the end.
2917 (let ((scroll term-scroll-to-bottom-on-output)) 2911 (and (eq selected win)
2918 (select-window win) 2912 (or (eq scroll 'this) (not save-point)))
2919 (if (or (= (point) save-marker) 2913 (and (eq scroll 'others)
2920 (eq scroll t) (eq scroll 'all) 2914 (not (eq selected win))))
2921 ;; Maybe user wants point to jump to the end. 2915 (progn
2922 (and (eq selected win) 2916 (goto-char term-home-marker)
2923 (or (eq scroll 'this) (not save-point))) 2917 (recenter 0)
2924 (and (eq scroll 'others) 2918 (goto-char (process-mark proc))
2925 (not (eq selected win)))) 2919 (if (not (pos-visible-in-window-p (point) win))
2926 (progn 2920 (recenter -1))))
2927 (goto-char term-home-marker) 2921 ;; Optionally scroll so that the text
2928 (recenter 0) 2922 ;; ends at the bottom of the window.
2929 (goto-char (process-mark proc)) 2923 (if (and term-scroll-show-maximum-output
2930 (if (not (pos-visible-in-window-p (point) win)) 2924 (>= (point) (process-mark proc)))
2931 (recenter -1)))) 2925 (save-excursion
2932 ;; Optionally scroll so that the text 2926 (goto-char (point-max))
2933 ;; ends at the bottom of the window. 2927 (recenter -1)))))
2934 (if (and term-scroll-show-maximum-output 2928 (not (eq win last-win))))
2935 (>= (point) (process-mark proc)))
2936 (save-excursion
2937 (goto-char (point-max))
2938 (recenter -1)))))
2939 (not (eq win last-win))))
2940 2929
2941;;; Stolen from comint.el and adapted -mm 2930;;; Stolen from comint.el and adapted -mm
2942 (if (> term-buffer-maximum-size 0) 2931 (if (> term-buffer-maximum-size 0)
2943 (save-excursion 2932 (save-excursion
2944 (goto-char (process-mark (get-buffer-process (current-buffer)))) 2933 (goto-char (process-mark (get-buffer-process (current-buffer))))
2945 (forward-line (- term-buffer-maximum-size)) 2934 (forward-line (- term-buffer-maximum-size))
2946 (beginning-of-line) 2935 (beginning-of-line)
2947 (delete-region (point-min) (point)))) 2936 (delete-region (point-min) (point))))
2948;;; 2937;;;
2949 2938
2950 (set-marker save-marker nil)) 2939 (set-marker save-marker nil)))))
2951 ;; unwind-protect cleanup-forms follow:
2952 (set-buffer previous-buffer)
2953 (select-window selected))))
2954 2940
2955(defun term-handle-deferred-scroll () 2941(defun term-handle-deferred-scroll ()
2956 (let ((count (- (term-current-row) term-height))) 2942 (let ((count (- (term-current-row) term-height)))
@@ -2988,6 +2974,14 @@ See `term-prompt-regexp'."
2988 ((eq parameter 8) 2974 ((eq parameter 8)
2989 (setq term-ansi-current-invisible 1)) 2975 (setq term-ansi-current-invisible 1))
2990 2976
2977;;; Reset reverse (i.e. terminfo rmso)
2978 ((eq parameter 24)
2979 (setq term-ansi-current-reverse 0))
2980
2981;;; Reset underline (i.e. terminfo rmul)
2982 ((eq parameter 27)
2983 (setq term-ansi-current-underline 0))
2984
2991;;; Foreground 2985;;; Foreground
2992 ((and (>= parameter 30) (<= parameter 37)) 2986 ((and (>= parameter 30) (<= parameter 37))
2993 (setq term-ansi-current-color (- parameter 29))) 2987 (setq term-ansi-current-color (- parameter 29)))
@@ -3042,9 +3036,13 @@ See `term-prompt-regexp'."
3042 ) 3036 )
3043 (setq term-current-face 3037 (setq term-current-face
3044 (list :background 3038 (list :background
3045 (elt ansi-term-color-vector term-ansi-current-color) 3039 (if (= term-ansi-current-color 0)
3040 (face-foreground 'default)
3041 (elt ansi-term-color-vector term-ansi-current-color))
3046 :foreground 3042 :foreground
3047 (elt ansi-term-color-vector term-ansi-current-bg-color))) 3043 (if (= term-ansi-current-bg-color 0)
3044 (face-background 'default)
3045 (elt ansi-term-color-vector term-ansi-current-bg-color))))
3048 (if (= term-ansi-current-bold 1) 3046 (if (= term-ansi-current-bold 1)
3049 (setq term-current-face 3047 (setq term-current-face
3050 (append '(:weight bold) term-current-face))) 3048 (append '(:weight bold) term-current-face)))
@@ -3501,7 +3499,7 @@ all pending output has been dealt with."))
3501 (if (and check-for-scroll (or term-scroll-with-delete term-pager-count)) 3499 (if (and check-for-scroll (or term-scroll-with-delete term-pager-count))
3502 (setq down (term-handle-scroll down))) 3500 (setq down (term-handle-scroll down)))
3503 (term-adjust-current-row-cache down) 3501 (term-adjust-current-row-cache down)
3504 (if (/= (point) (point-max)) 3502 (if (or (/= (point) (point-max)) (< down 0))
3505 (setq down (- down (term-vertical-motion down)))) 3503 (setq down (- down (term-vertical-motion down))))
3506 ;; Extend buffer with extra blank lines if needed. 3504 ;; Extend buffer with extra blank lines if needed.
3507 (cond ((> down 0) 3505 (cond ((> down 0)
diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el
index 531fe7d95df..f25bec2d841 100644
--- a/lisp/textmodes/enriched.el
+++ b/lisp/textmodes/enriched.el
@@ -1,6 +1,6 @@
1;;; enriched.el --- read and save files in text/enriched format 1;;; enriched.el --- read and save files in text/enriched format
2 2
3;; Copyright (c) 1994, 1995, 1996, 2002 Free Software Foundation, Inc. 3;; Copyright (c) 1994, 1995, 1996, 2002, 2004 Free Software Foundation, Inc.
4 4
5;; Author: Boris Goldowsky <boris@gnu.org> 5;; Author: Boris Goldowsky <boris@gnu.org>
6;; Keywords: wp, faces 6;; Keywords: wp, faces
@@ -141,7 +141,6 @@ Any property that is neither on this list nor dealt with by
141 141
142;;; Internal variables 142;;; Internal variables
143 143
144
145(defcustom enriched-mode-hook nil 144(defcustom enriched-mode-hook nil
146 "Hook run after entering/leaving Enriched mode. 145 "Hook run after entering/leaving Enriched mode.
147If you set variables in this hook, you should arrange for them to be restored 146If you set variables in this hook, you should arrange for them to be restored
@@ -155,6 +154,11 @@ them and their old values to `enriched-old-bindings'."
155The value is a list of \(VAR VALUE VAR VALUE...).") 154The value is a list of \(VAR VALUE VAR VALUE...).")
156(make-variable-buffer-local 'enriched-old-bindings) 155(make-variable-buffer-local 'enriched-old-bindings)
157 156
157;; Technical internal variable. Bound to t if `enriched-mode' is
158;; being rerun by a major mode to allow it to restore buffer-local
159;; variables and to correctly update `enriched-old-bindings'.
160(defvar enriched-rerun-flag nil)
161
158;;; 162;;;
159;;; Define the mode 163;;; Define the mode
160;;; 164;;;
@@ -181,23 +185,21 @@ Commands:
181 (while enriched-old-bindings 185 (while enriched-old-bindings
182 (set (pop enriched-old-bindings) (pop enriched-old-bindings)))) 186 (set (pop enriched-old-bindings) (pop enriched-old-bindings))))
183 187
184 ((memq 'text/enriched buffer-file-format) 188 ((and (memq 'text/enriched buffer-file-format)
189 (not enriched-rerun-flag))
185 ;; Mode already on; do nothing. 190 ;; Mode already on; do nothing.
186 nil) 191 nil)
187 192
188 (t ; Turn mode on 193 (t ; Turn mode on
189 (push 'text/enriched buffer-file-format) 194 (add-to-list 'buffer-file-format 'text/enriched)
190 ;; Save old variable values before we change them. 195 ;; Save old variable values before we change them.
191 ;; These will be restored if we exit Enriched mode. 196 ;; These will be restored if we exit Enriched mode.
192 (setq enriched-old-bindings 197 (setq enriched-old-bindings
193 (list 'buffer-display-table buffer-display-table 198 (list 'buffer-display-table buffer-display-table
194 'indent-line-function indent-line-function
195 'default-text-properties default-text-properties)) 199 'default-text-properties default-text-properties))
196 (make-local-variable 'indent-line-function)
197 (make-local-variable 'default-text-properties) 200 (make-local-variable 'default-text-properties)
198 (setq indent-line-function 'indent-to-left-margin ;WHY?? -sm 201 (setq buffer-display-table enriched-display-table)
199 buffer-display-table enriched-display-table) 202 (use-hard-newlines 1 (if enriched-rerun-flag 'never nil))
200 (use-hard-newlines 1 nil)
201 (let ((sticky (plist-get default-text-properties 'front-sticky)) 203 (let ((sticky (plist-get default-text-properties 'front-sticky))
202 (p enriched-par-props)) 204 (p enriched-par-props))
203 (dolist (x p) 205 (dolist (x p)
@@ -207,6 +209,20 @@ Commands:
207 (plist-put default-text-properties 209 (plist-put default-text-properties
208 'front-sticky sticky))))))) 210 'front-sticky sticky)))))))
209 211
212(defun enriched-before-change-major-mode ()
213 (when enriched-mode
214 (while enriched-old-bindings
215 (set (pop enriched-old-bindings) (pop enriched-old-bindings)))))
216
217(add-hook 'change-major-mode-hook 'enriched-before-change-major-mode)
218
219(defun enriched-after-change-major-mode ()
220 (when enriched-mode
221 (let ((enriched-rerun-flag t))
222 (enriched-mode 1))))
223
224(add-hook 'after-change-major-mode-hook 'enriched-after-change-major-mode)
225
210;;; 226;;;
211;;; Keybindings 227;;; Keybindings
212;;; 228;;;
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index e19df5d2ef6..69851ac5046 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,7 @@
12004-09-20 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * url-handlers.el (url-insert-file-contents): Decode contents.
4
12004-04-16 Stefan Monnier <monnier@iro.umontreal.ca> 52004-04-16 Stefan Monnier <monnier@iro.umontreal.ca>
2 6
3 * url-util.el (url-debug): Use with-current-buffer. 7 * url-util.el (url-debug): Use with-current-buffer.
diff --git a/lisp/url/url-handlers.el b/lisp/url/url-handlers.el
index 6c540e8d61b..56497b00119 100644
--- a/lisp/url/url-handlers.el
+++ b/lisp/url/url-handlers.el
@@ -1,6 +1,6 @@
1;;; url-handlers.el --- file-name-handler stuff for URL loading 1;;; url-handlers.el --- file-name-handler stuff for URL loading
2 2
3;; Copyright (c) 1996,97,98,1999,2004 Free Software Foundation, Inc. 3;; Copyright (c) 1996, 1997, 1998, 1999, 2004 Free Software Foundation, Inc.
4;; Copyright (c) 1993 - 1996 by William M. Perry <wmperry@cs.indiana.edu> 4;; Copyright (c) 1993 - 1996 by William M. Perry <wmperry@cs.indiana.edu>
5 5
6;; Keywords: comm, data, processes, hypermedia 6;; Keywords: comm, data, processes, hypermedia
@@ -170,8 +170,7 @@ A prefix arg makes KEEP-TIME non-nil."
170 (handle nil)) 170 (handle nil))
171 (if (not buffer) 171 (if (not buffer)
172 (error "Opening input file: No such file or directory, %s" url)) 172 (error "Opening input file: No such file or directory, %s" url))
173 (save-excursion 173 (with-current-buffer buffer
174 (set-buffer buffer)
175 (setq handle (mm-dissect-buffer t))) 174 (setq handle (mm-dissect-buffer t)))
176 (mm-save-part-to-file handle newname) 175 (mm-save-part-to-file handle newname)
177 (kill-buffer buffer) 176 (kill-buffer buffer)
@@ -194,18 +193,22 @@ accessible."
194 (if (not buffer) 193 (if (not buffer)
195 (error "Opening input file: No such file or directory, %s" url)) 194 (error "Opening input file: No such file or directory, %s" url))
196 (if visit (setq buffer-file-name url)) 195 (if visit (setq buffer-file-name url))
197 (save-excursion 196 (with-current-buffer buffer
198 (set-buffer buffer)
199 (setq handle (mm-dissect-buffer t)) 197 (setq handle (mm-dissect-buffer t))
200 (set-buffer (mm-handle-buffer handle)) 198 (set-buffer (mm-handle-buffer handle))
201 (if beg 199 (setq data (if beg (buffer-substring beg end)
202 (setq data (buffer-substring beg end)) 200 (buffer-string))))
203 (setq data (buffer-string))))
204 (kill-buffer buffer) 201 (kill-buffer buffer)
205 (mm-destroy-parts handle) 202 (mm-destroy-parts handle)
206 (if replace (delete-region (point-min) (point-max))) 203 (if replace (delete-region (point-min) (point-max)))
207 (save-excursion 204 (save-excursion
208 (insert data)) 205 (let ((start (point)))
206 (insert data)
207 ;; FIXME: for text/plain data, we sometimes receive a `charset'
208 ;; annotation which we could use as a hint of the locale in use
209 ;; at the remote site. Not sure how/if that should be done. --Stef
210 (decode-coding-inserted-region
211 start (point) buffer-file-name visit beg end replace)))
209 (list url (length data)))) 212 (list url (length data))))
210 213
211(defun url-file-name-completion (url directory) 214(defun url-file-name-completion (url directory)
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 56edf46be59..994f3b3199f 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,8 @@
12004-09-20 Richard M. Stallman <rms@gnu.org>
2
3 * commands.texi (Key Sequence Input):
4 Clarify downcasing in read-key-sequence.
5
12004-09-08 Juri Linkov <juri@jurta.org> 62004-09-08 Juri Linkov <juri@jurta.org>
2 7
3 * minibuf.texi (Minibuffer History): Add `history-delete-duplicates'. 8 * minibuf.texi (Minibuffer History): Add `history-delete-duplicates'.
diff --git a/lispref/commands.texi b/lispref/commands.texi
index 796fc45f5f3..5f0a73b2153 100644
--- a/lispref/commands.texi
+++ b/lispref/commands.texi
@@ -2063,10 +2063,10 @@ returns the key sequence as a vector, never as a string.
2063 2063
2064@cindex upper case key sequence 2064@cindex upper case key sequence
2065@cindex downcasing in @code{lookup-key} 2065@cindex downcasing in @code{lookup-key}
2066If an input character is an upper-case letter and has no key binding, 2066If an input character is upper-case (or has the shift modifier) and
2067but its lower-case equivalent has one, then @code{read-key-sequence} 2067has no key binding, but its lower-case equivalent has one, then
2068converts the character to lower case. Note that @code{lookup-key} does 2068@code{read-key-sequence} converts the character to lower case. Note
2069not perform case conversion in this way. 2069that @code{lookup-key} does not perform case conversion in this way.
2070 2070
2071The function @code{read-key-sequence} also transforms some mouse events. 2071The function @code{read-key-sequence} also transforms some mouse events.
2072It converts unbound drag events into click events, and discards unbound 2072It converts unbound drag events into click events, and discards unbound
diff --git a/man/ChangeLog b/man/ChangeLog
index 75e8d3d7c76..2e59da4e0f1 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,13 @@
12004-09-20 Richard M. Stallman <rms@gnu.org>
2
3 * custom.texi (Hooks): Explain using setq to clear out a hook.
4 (File Variables): Explain multiline string constants.
5 (Non-ASCII Rebinding): Explain when you need to update
6 non-ASCII char codes in .emacs.
7
8 * building.texi (Compilation): Explain how to make a silent
9 subprocess that won't be terminated. Explain compilation-environment.
10
12004-09-13 Kim F. Storm <storm@cua.dk> 112004-09-13 Kim F. Storm <storm@cua.dk>
2 12
3 * mini.texi (Repetition): Rename isearch-resume-enabled to 13 * mini.texi (Repetition): Rename isearch-resume-enabled to
diff --git a/man/building.texi b/man/building.texi
index b3d4659a402..972f88abbde 100644
--- a/man/building.texi
+++ b/man/building.texi
@@ -128,6 +128,21 @@ echo first message
128wait $pid # @r{Wait for subprocess} 128wait $pid # @r{Wait for subprocess}
129@end example 129@end example
130 130
131 If the background process does not output to the compilation buffer,
132so you only need to prevent it from being killed when the main
133compilation process terminates, this is sufficient:
134
135@example
136nohup @var{command}; sleep 1
137@end example
138
139@vindex compilation-environment
140 You can control the environment passed to the compilation command
141with the variable @code{compilation-environment}. Its value is a list
142of environment variable settings; each element should be a string of
143the form @code{"@var{envvarname}=@var{value}"}. These environment
144variable settings override the usual ones.
145
131@node Grep Searching 146@node Grep Searching
132@section Searching with Grep under Emacs 147@section Searching with Grep under Emacs
133 148
diff --git a/man/calc.texi b/man/calc.texi
index 2ada16ce1bf..4aee142d198 100644
--- a/man/calc.texi
+++ b/man/calc.texi
@@ -544,6 +544,9 @@ held down are shown as @kbd{C-x}. Keys pressed with Meta held down
544are shown as @kbd{M-x}. Other notations are @key{RET} for the 544are shown as @kbd{M-x}. Other notations are @key{RET} for the
545Return key, @key{SPC} for the space bar, @key{TAB} for the Tab key, 545Return key, @key{SPC} for the space bar, @key{TAB} for the Tab key,
546@key{DEL} for the Delete key, and @key{LFD} for the Line-Feed key. 546@key{DEL} for the Delete key, and @key{LFD} for the Line-Feed key.
547The @key{DEL} key is called Backspace on some keyboards, it is
548whatever key you would use to correct a simple typing error when
549regularly using Emacs.
547 550
548(If you don't have the @key{LFD} or @key{TAB} keys on your keyboard, 551(If you don't have the @key{LFD} or @key{TAB} keys on your keyboard,
549the @kbd{C-j} and @kbd{C-i} keys are equivalent to them, respectively. 552the @kbd{C-j} and @kbd{C-i} keys are equivalent to them, respectively.
diff --git a/man/custom.texi b/man/custom.texi
index d27bc8e0ed5..3065ad3de23 100644
--- a/man/custom.texi
+++ b/man/custom.texi
@@ -785,11 +785,13 @@ as soon as one hook function returns a non-@code{nil} value, the rest
785are not called at all. The documentation of each abnormal hook variable 785are not called at all. The documentation of each abnormal hook variable
786explains in detail what is peculiar about it. 786explains in detail what is peculiar about it.
787 787
788 The recommended way to add a hook function to a hook (either normal or 788 You can set a hook variable with @code{setq} like any other Lisp
789abnormal) is by calling @code{add-hook}. You can use any valid Lisp 789variable, but the recommended way to add a hook function to a hook
790function as the hook function, provided it can handle the proper number 790(either normal or abnormal) is by calling @code{add-hook}. You can
791of arguments (zero arguments, in the case of a normal hook). Of course, 791specify any valid Lisp function as the hook function, provided it can
792not every Lisp function is @emph{useful} in any particular hook. 792handle the proper number of arguments (zero arguments, in the case of
793a normal hook). Of course, not every Lisp function is @emph{useful}
794in any particular hook.
793 795
794 For example, here's how to set up a hook to turn on Auto Fill mode 796 For example, here's how to set up a hook to turn on Auto Fill mode
795when entering Text mode and other modes based on Text mode: 797when entering Text mode and other modes based on Text mode:
@@ -830,6 +832,11 @@ they are executed does not matter. Any dependence on the order is
830``asking for trouble.'' However, the order is predictable: the most 832``asking for trouble.'' However, the order is predictable: the most
831recently added hook functions are executed first. 833recently added hook functions are executed first.
832 834
835 If you play with adding various different versions of a hook
836function by calling @code{add-hook} over and over, remember that all
837the versions you added will remain in the hook variable together.
838To clear them out, you can do @code{(setq @var{hook-variable} nil)}.
839
833@node Locals 840@node Locals
834@subsection Local Variables 841@subsection Local Variables
835 842
@@ -998,8 +1005,22 @@ local variables list in a comment, so it won't confuse other programs
998that the file is intended as input for. The example above is for a 1005that the file is intended as input for. The example above is for a
999language where comment lines start with @samp{;;; } and end with 1006language where comment lines start with @samp{;;; } and end with
1000@samp{***}; the local values for @code{comment-start} and 1007@samp{***}; the local values for @code{comment-start} and
1001@code{comment-end} customize the rest of Emacs for this unusual syntax. 1008@code{comment-end} customize the rest of Emacs for this unusual
1002Don't use a prefix (or a suffix) if you don't need one. 1009syntax. Don't use a prefix (or a suffix) if you don't need one.
1010
1011 If you write a multi-line string value, you should put the prefix
1012and suffix on each line, even lines that start or end within the
1013string. They will be stripped off for processing the list. If you
1014want to split a long string across multiple lines of the file, you can
1015use backslash-newline, which is ignored in Lisp string constants.
1016Here's an example of doing this:
1017
1018@example
1019# Local Variables:
1020# compile-command: "cc foo.c -Dfoo=bar -Dhack=whatever \
1021# -Dmumble=blaah"
1022# End:
1023@end example
1003 1024
1004 Two ``variable names'' have special meanings in a local variables 1025 Two ``variable names'' have special meanings in a local variables
1005list: a value for the variable @code{mode} really sets the major mode, 1026list: a value for the variable @code{mode} really sets the major mode,
@@ -1635,15 +1656,14 @@ The Emacs Lisp Reference Manual}.}:
1635Type @kbd{C-q} followed by the key you want to bind, to insert @var{char}. 1656Type @kbd{C-q} followed by the key you want to bind, to insert @var{char}.
1636 1657
1637Since this puts a non-@acronym{ASCII} character in the @file{.emacs}, 1658Since this puts a non-@acronym{ASCII} character in the @file{.emacs},
1638you should specify for that file a coding system that supports 1659you should specify a coding system for that file that supports the
1639that character. @xref{Init Syntax}. 1660character in question. @xref{Init Syntax}.
1640 1661
1641@strong{Warning:} if you change the keyboard encoding, such that the code that 1662@strong{Warning:} if you change the keyboard encoding, or change
1642@kbd{C-q} inserts becomes different, you'll need to edit the 1663between multibyte and unibyte mode, or anything that would alter which
1643Lisp expression accordingly. 1664code @kbd{C-q} would insert for that character, you'll need to edit
1644 1665the Lisp expression accordingly, to use the character code generated
1645@strong{Warning:} @kbd{C-q} will insert the wrong code if you visit 1666by @kbd{C-q} in the new mode.
1646the file @file{.emacs} in a unibyte buffer, so don't do that.
1647 1667
1648@node Mouse Buttons 1668@node Mouse Buttons
1649@subsection Rebinding Mouse Buttons 1669@subsection Rebinding Mouse Buttons
diff --git a/src/ChangeLog b/src/ChangeLog
index 955c8929f92..e71a0e3217d 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,15 @@
12004-09-18 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * xterm.c (x_term_init): Work around a bug in some X servers.
4
52004-09-18 Richard M. Stallman <rms@gnu.org>
6
7 * buffer.c (syms_of_buffer) <default-major-mode>: Doc fix.
8
9 * xdisp.c (try_window_reusing_current_matrix):
10 Handle the case where we reach the old displayed text,
11 out of sync with the old line boundary.
12
12004-09-14 Stefan <monnier@iro.umontreal.ca> 132004-09-14 Stefan <monnier@iro.umontreal.ca>
2 14
3 * fileio.c (Finsert_file_contents): Fix case of replacement in a 15 * fileio.c (Finsert_file_contents): Fix case of replacement in a
diff --git a/src/alloc.c b/src/alloc.c
index 4b31ec7897e..e783ba581e0 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -186,8 +186,11 @@ Lisp_Object Vmemory_full;
186 186
187#ifndef HAVE_SHM 187#ifndef HAVE_SHM
188 188
189/* Force it into data space! Initialize it to a nonzero value; 189/* Initialize it to a nonzero value to force it into data space
190 otherwise some compilers put it into BSS. */ 190 (rather than bss space). That way unexec will remap it into text
191 space (pure), on some systems. We have not implemented the
192 remapping on more recent systems because this is less important
193 nowadays than in the days of small memories and timesharing. */
191 194
192EMACS_INT pure[PURESIZE / sizeof (EMACS_INT)] = {1,}; 195EMACS_INT pure[PURESIZE / sizeof (EMACS_INT)] = {1,};
193#define PUREBEG (char *) pure 196#define PUREBEG (char *) pure
diff --git a/src/buffer.c b/src/buffer.c
index 2084d80049a..75339c4fc85 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5446,7 +5446,14 @@ Decimal digits after the % specify field width to which to pad. */);
5446 5446
5447 DEFVAR_LISP_NOPRO ("default-major-mode", &buffer_defaults.major_mode, 5447 DEFVAR_LISP_NOPRO ("default-major-mode", &buffer_defaults.major_mode,
5448 doc: /* *Major mode for new buffers. Defaults to `fundamental-mode'. 5448 doc: /* *Major mode for new buffers. Defaults to `fundamental-mode'.
5449nil here means use current buffer's major mode. */); 5449nil here means use current buffer's major mode, provided it is not
5450marked as "special".
5451
5452When a mode is used by default, `find-file' switches to it
5453before it reads the contents into the buffer and before
5454it finishes setting up the buffer. Thus, the mode and
5455its hooks should not expect certain variables such as
5456`buffer-read-only' and `buffer-file-coding-system' to be set up. */);
5450 5457
5451 DEFVAR_PER_BUFFER ("major-mode", &current_buffer->major_mode, 5458 DEFVAR_PER_BUFFER ("major-mode", &current_buffer->major_mode,
5452 make_number (Lisp_Symbol), 5459 make_number (Lisp_Symbol),
diff --git a/src/xdisp.c b/src/xdisp.c
index a756b99577c..d8166a30df5 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12504,10 +12504,36 @@ try_window_reusing_current_matrix (w)
12504 last_text_row = last_reused_text_row = NULL; 12504 last_text_row = last_reused_text_row = NULL;
12505 12505
12506 while (it.current_y < it.last_visible_y 12506 while (it.current_y < it.last_visible_y
12507 && IT_CHARPOS (it) < CHARPOS (start)
12508 && !fonts_changed_p) 12507 && !fonts_changed_p)
12509 if (display_line (&it)) 12508 {
12510 last_text_row = it.glyph_row - 1; 12509 /* If we have reached into the characters in the START row,
12510 that means the line boundaries have changed. So we
12511 can't start copying with the row START. Maybe it will
12512 work to start copying with the following row. */
12513 while (IT_CHARPOS (it) > CHARPOS (start))
12514 {
12515 /* Advance to the next row as the "start". */
12516 start_row++;
12517 start = start_row->start.pos;
12518 /* If there are no more rows to try, or just one, give up. */
12519 if (start_row == MATRIX_MODE_LINE_ROW (w->current_matrix) - 1
12520 || w->vscroll || MATRIX_ROW_PARTIALLY_VISIBLE_P (start_row)
12521 || CHARPOS (start) == ZV)
12522 {
12523 clear_glyph_matrix (w->desired_matrix);
12524 return 0;
12525 }
12526
12527 start_vpos = MATRIX_ROW_VPOS (start_row, w->current_matrix);
12528 }
12529 /* If we have reached alignment,
12530 we can copy the rest of the rows. */
12531 if (IT_CHARPOS (it) == CHARPOS (start))
12532 break;
12533
12534 if (display_line (&it))
12535 last_text_row = it.glyph_row - 1;
12536 }
12511 12537
12512 /* A value of current_y < last_visible_y means that we stopped 12538 /* A value of current_y < last_visible_y means that we stopped
12513 at the previous window start, which in turn means that we 12539 at the previous window start, which in turn means that we
@@ -12515,12 +12541,12 @@ try_window_reusing_current_matrix (w)
12515 if (it.current_y < it.last_visible_y) 12541 if (it.current_y < it.last_visible_y)
12516 { 12542 {
12517 /* IT.vpos always starts from 0; it counts text lines. */ 12543 /* IT.vpos always starts from 0; it counts text lines. */
12518 nrows_scrolled = it.vpos; 12544 nrows_scrolled = it.vpos - (start_row - MATRIX_FIRST_TEXT_ROW (w->current_matrix));
12519 12545
12520 /* Find PT if not already found in the lines displayed. */ 12546 /* Find PT if not already found in the lines displayed. */
12521 if (w->cursor.vpos < 0) 12547 if (w->cursor.vpos < 0)
12522 { 12548 {
12523 int dy = it.current_y - first_row_y; 12549 int dy = it.current_y - start_row->y;
12524 12550
12525 row = MATRIX_FIRST_TEXT_ROW (w->current_matrix); 12551 row = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
12526 row = row_containing_pos (w, PT, row, NULL, dy); 12552 row = row_containing_pos (w, PT, row, NULL, dy);
@@ -12540,7 +12566,7 @@ try_window_reusing_current_matrix (w)
12540 scroll_run_hook will clear the cursor, and use the 12566 scroll_run_hook will clear the cursor, and use the
12541 current matrix to get the height of the row the cursor is 12567 current matrix to get the height of the row the cursor is
12542 in. */ 12568 in. */
12543 run.current_y = first_row_y; 12569 run.current_y = start_row->y;
12544 run.desired_y = it.current_y; 12570 run.desired_y = it.current_y;
12545 run.height = it.last_visible_y - it.current_y; 12571 run.height = it.last_visible_y - it.current_y;
12546 12572
@@ -15435,6 +15461,10 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky)
15435 Lisp_Object oprops, aelt; 15461 Lisp_Object oprops, aelt;
15436 oprops = Ftext_properties_at (make_number (0), elt); 15462 oprops = Ftext_properties_at (make_number (0), elt);
15437 15463
15464 /* If the starting string's properties are not what
15465 we want, translate the string. Also, if the string
15466 is risky, do that anyway. */
15467
15438 if (NILP (Fequal (props, oprops)) || risky) 15468 if (NILP (Fequal (props, oprops)) || risky)
15439 { 15469 {
15440 /* If the starting string has properties, 15470 /* If the starting string has properties,
diff --git a/src/xterm.c b/src/xterm.c
index e7fb798eb60..cf7ec09cf46 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -10611,10 +10611,12 @@ x_term_init (display_name, xrm_option, resource_name)
10611 int screen_number = XScreenNumberOfScreen (dpyinfo->screen); 10611 int screen_number = XScreenNumberOfScreen (dpyinfo->screen);
10612 double pixels = DisplayHeight (dpyinfo->display, screen_number); 10612 double pixels = DisplayHeight (dpyinfo->display, screen_number);
10613 double mm = DisplayHeightMM (dpyinfo->display, screen_number); 10613 double mm = DisplayHeightMM (dpyinfo->display, screen_number);
10614 dpyinfo->resy = pixels * 25.4 / mm; 10614 /* Mac OS X 10.3's Xserver sometimes reports 0.0mm. */
10615 dpyinfo->resy = (mm < 1) ? 100 : pixels * 25.4 / mm;
10615 pixels = DisplayWidth (dpyinfo->display, screen_number); 10616 pixels = DisplayWidth (dpyinfo->display, screen_number);
10617 /* Mac OS X 10.3's Xserver sometimes reports 0.0mm. */
10616 mm = DisplayWidthMM (dpyinfo->display, screen_number); 10618 mm = DisplayWidthMM (dpyinfo->display, screen_number);
10617 dpyinfo->resx = pixels * 25.4 / mm; 10619 dpyinfo->resx = (mm < 1) ? 100 : pixels * 25.4 / mm;
10618 } 10620 }
10619 10621
10620 dpyinfo->Xatom_wm_protocols 10622 dpyinfo->Xatom_wm_protocols