aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2005-04-11 12:40:15 +0000
committerKaroly Lorentey2005-04-11 12:40:15 +0000
commit221d5c8772dc29f854292ec7cb423fce925daecf (patch)
tree5fe05145ce31ffcc9d1a621c027410151e4a2106
parent1b9ab2508610fea57aa777956de14ee84d66862f (diff)
parent9552bee8c6e7c5ee16ca60cddebaebdf5d238e05 (diff)
downloademacs-221d5c8772dc29f854292ec7cb423fce925daecf.tar.gz
emacs-221d5c8772dc29f854292ec7cb423fce925daecf.zip
Merged from miles@gnu.org--gnu-2005 (patch 59, 240-245)
Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-240 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-241 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-242 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-243 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-244 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-245 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-59 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-326
-rw-r--r--admin/FOR-RELEASE4
-rw-r--r--etc/ChangeLog9
-rw-r--r--etc/NEWS16
-rw-r--r--etc/compilation.txt26
-rw-r--r--lisp/ChangeLog195
-rw-r--r--lisp/abbrev.el9
-rw-r--r--lisp/arc-mode.el226
-rw-r--r--lisp/bookmark.el4
-rw-r--r--lisp/buff-menu.el1
-rw-r--r--lisp/calc/calc-units.el4
-rw-r--r--lisp/calendar/calendar.el6
-rw-r--r--lisp/calendar/diary-lib.el2
-rw-r--r--lisp/calendar/time-date.el21
-rw-r--r--lisp/comint.el20
-rw-r--r--lisp/cus-edit.el25
-rw-r--r--lisp/custom.el4
-rw-r--r--lisp/emacs-lisp/authors.el27
-rw-r--r--lisp/emacs-lisp/lisp.el20
-rw-r--r--lisp/emacs-lisp/map-ynp.el6
-rw-r--r--lisp/emacs-lisp/re-builder.el6
-rw-r--r--lisp/files.el23
-rw-r--r--lisp/font-lock.el16
-rw-r--r--lisp/generic-x.el8
-rw-r--r--lisp/gnus/ChangeLog135
-rw-r--r--lisp/gnus/ChangeLog.22
-rw-r--r--lisp/gnus/gnus-agent.el10
-rw-r--r--lisp/gnus/gnus-cache.el5
-rw-r--r--lisp/gnus/gnus-group.el82
-rw-r--r--lisp/gnus/gnus-spec.el9
-rw-r--r--lisp/gnus/gnus-sum.el5
-rw-r--r--lisp/gnus/mm-url.el2
-rw-r--r--lisp/gnus/mm-util.el33
-rw-r--r--lisp/gnus/nnrss.el668
-rw-r--r--lisp/help.el16
-rw-r--r--lisp/hi-lock.el19
-rw-r--r--lisp/hilit-chg.el6
-rw-r--r--lisp/ido.el12
-rw-r--r--lisp/info.el149
-rw-r--r--lisp/international/code-pages.el14
-rw-r--r--lisp/international/latin-1.el18
-rw-r--r--lisp/international/latin-2.el18
-rw-r--r--lisp/international/latin-3.el18
-rw-r--r--lisp/international/latin-4.el18
-rw-r--r--lisp/international/latin-5.el18
-rw-r--r--lisp/international/latin-8.el17
-rw-r--r--lisp/international/latin-9.el18
-rw-r--r--lisp/mh-e/ChangeLog117
-rw-r--r--lisp/mh-e/mh-customize.el6
-rw-r--r--lisp/mouse.el3
-rw-r--r--lisp/pcvs-info.el6
-rw-r--r--lisp/progmodes/cc-fonts.el4
-rw-r--r--lisp/progmodes/compile.el20
-rw-r--r--lisp/progmodes/ebrowse.el14
-rw-r--r--lisp/progmodes/idlw-help.el5
-rw-r--r--lisp/progmodes/sh-script.el5
-rw-r--r--lisp/progmodes/vhdl-mode.el312
-rw-r--r--lisp/saveplace.el4
-rw-r--r--lisp/smerge-mode.el10
-rw-r--r--lisp/startup.el20
-rw-r--r--lisp/term.el2
-rw-r--r--lisp/term/xterm.el11
-rw-r--r--lisp/textmodes/bibtex.el14
-rw-r--r--lisp/textmodes/flyspell.el8
-rw-r--r--lisp/textmodes/table.el4
-rw-r--r--lisp/url/url-ldap.el37
-rw-r--r--lisp/whitespace.el36
-rw-r--r--lisp/wid-edit.el6
-rw-r--r--lisp/woman.el10
-rw-r--r--lispref/ChangeLog7
-rw-r--r--lispref/modes.texi167
-rw-r--r--lwlib/xlwmenuP.h2
-rw-r--r--man/ChangeLog29
-rw-r--r--man/cl.texi2
-rw-r--r--man/display.texi6
-rw-r--r--man/gnus.texi42
-rw-r--r--man/rmail.texi66
-rw-r--r--man/xresources.texi15
-rw-r--r--src/ChangeLog41
-rw-r--r--src/ChangeLog.62
-rw-r--r--src/buffer.c18
-rw-r--r--src/dispnew.c22
-rw-r--r--src/emacs.c6
-rw-r--r--src/fns.c33
-rw-r--r--src/keyboard.c14
-rw-r--r--src/keymap.c19
-rw-r--r--src/lread.c54
-rw-r--r--src/print.c16
-rw-r--r--src/window.c15
88 files changed, 2070 insertions, 1130 deletions
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index 863f7ab72ad..c76af42c4ee 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -35,8 +35,6 @@ invalid pointer from string_free_list.
35 35
36** Clean up flymake.el to follow Emacs Lisp conventions. 36** Clean up flymake.el to follow Emacs Lisp conventions.
37 37
38** Fix up url-ldap.el.
39
40* BUGS 38* BUGS
41 39
42** Ange-ftp should ignore irrelevant IPv6 errors: 40** Ange-ftp should ignore irrelevant IPv6 errors:
@@ -179,7 +177,7 @@ man/m-x.texi "Luc Teirlinck" Chong Yidong
179man/picture.texi Joakim Verona <joakim@verona.se> Chong Yidong 177man/picture.texi Joakim Verona <joakim@verona.se> Chong Yidong
180man/programs.texi "Stephen Eglen" Chong Yidong 178man/programs.texi "Stephen Eglen" Chong Yidong
181man/regs.texi "Luc Teirlinck" Chong Yidong 179man/regs.texi "Luc Teirlinck" Chong Yidong
182man/rmail.texi Chong Yidong 180man/rmail.texi Chong Yidong "Luc Teirlinck"
183man/screen.texi "Luc Teirlinck" Chong Yidong 181man/screen.texi "Luc Teirlinck" Chong Yidong
184man/search.texi "Luc Teirlinck" Chong Yidong 182man/search.texi "Luc Teirlinck" Chong Yidong
185man/sending.texi Chong Yidong "Luc Teirlinck" 183man/sending.texi Chong Yidong "Luc Teirlinck"
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 2d28135ecfe..d873797f5dc 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,12 @@
12005-04-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2
3 * NEWS: Mention fontSet for Lucid menus.
4
52005-04-10 Masatake YAMATO <jet@gyve.org>
6
7 * compilation.txt (symbol): Added gcov-file
8 gcov-bb-file gcov-never-called-line gcov-called-line .
9
12005-04-08 Kenichi Handa <handa@m17n.org> 102005-04-08 Kenichi Handa <handa@m17n.org>
2 11
3 * TUTORIAL.ja: Updated header, contents synchronized with 12 * TUTORIAL.ja: Updated header, contents synchronized with
diff --git a/etc/NEWS b/etc/NEWS
index c76ea7bf345..3b1de666a24 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -351,12 +351,15 @@ the next/previous matching line found by M-x occur.
351+++ 351+++
352** Telnet now prompts you for a port number with C-u M-x telnet. 352** Telnet now prompts you for a port number with C-u M-x telnet.
353 353
354+++ 354** New command line option -Q or --quick.
355** New command line option -Q or --bare-bones.
356 355
357This is like using -q --no-site-file, but in addition it also disables 356This is like using -q --no-site-file, but in addition it also disables
358the menu-bar, the tool-bar, the scroll-bars, tool tips, the blinking 357the fancy startup screen.
359cursor, and the fancy startup screen. 358
359** New command line option -D or --basic-display.
360
361Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
362the blinking cursor.
360 363
361+++ 364+++
362** New command line option -nbc or --no-blinking-cursor disables 365** New command line option -nbc or --no-blinking-cursor disables
@@ -1205,6 +1208,11 @@ amount of text shown any more (only a crude approximation of it).
1205** The pop up menus for Lucid now stay up if you do a fast click and can 1208** The pop up menus for Lucid now stay up if you do a fast click and can
1206be navigated with the arrow keys (like Gtk+, Mac and W32). 1209be navigated with the arrow keys (like Gtk+, Mac and W32).
1207 1210
1211+++
1212** The Lucid menus can display multilingual text in your locale. You have
1213to explicitly specify a fontSet resource for this to work, for example
1214`-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
1215
1208--- 1216---
1209** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing 1217** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
1210ESC, like they do for Gtk+, Mac and W32. 1218ESC, like they do for Gtk+, Mac and W32.
diff --git a/etc/compilation.txt b/etc/compilation.txt
index c1a20ad3025..42e62af9dff 100644
--- a/etc/compilation.txt
+++ b/etc/compilation.txt
@@ -341,6 +341,32 @@ strcmp: variable # of args. llib-lc(359) :: /usr/src/foo/foo.c(8)
341bloofle defined( /users/wolfgang/foo.c(4) ), but never used 341bloofle defined( /users/wolfgang/foo.c(4) ), but never used
342 342
343 343
344* GCOV (test coverage program)
345
346symbol: gcov-file gcov-bb-file gcov-never-called-line gcov-called-line
347
348 -: 0:Source:foo.c
349 -: 0:Object:foo.bb
350 -: 1:/* $ gcc -fprofile-arcs -ftest-coverage foo.c
351 -: 2: $ ./a.out
352 -: 3: $ gcov foo.c
353 -: 4: LANG=C gcov foo.c
354 -: 5: 62.50% of 8 lines executed in file foo.c
355 -: 6: Creating foo.c.gcov.*/
356 -: 7:int
357 -: 8:main(int argc, char ** argv)
358 1: 9:{
359 1: 10: int r;
360 1: 11: if (argc == 1)
361 1: 12: r = 1;
362 #####: 13: else if (argc == 2)
363 #####: 14: r = 2;
364 -: 15: else
365 #####: 16: r = 0;
366 1: 17: return r;
367 -: 18:}
368
369
344* Directory tracking 370* Directory tracking
345 371
346Directories are matched via `compilation-directory-matcher'. Files which are 372Directories are matched via `compilation-directory-matcher'. Files which are
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index f14df34acf9..c299c1cf77f 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,198 @@
12005-04-10 Karl Fogel <kfogel@red-bean.com>
2
3 * bookmark.el (bookmark-write-file): Catch errors writing file.
4 This is the same change as saveplace.el at 2005-04-10T23:32:00Z!rms@gnu.org.
5
62005-04-10 Richard M. Stallman <rms@gnu.org>
7
8 * startup.el (fancy-splash-tail): Update copyright year.
9 (command-line): Split part of -Q into -D.
10 (emacs-basic-display): New defvar.
11 (fancy-splash-text): Correct name of menu item.
12
13 * saveplace.el (save-place-alist-to-file): Catch errors writing file.
14
15 * info.el (Info-fontify-node): Handle fontification of multiple * Menu
16 lines in one node.
17
18 * comint.el (comint-send-input): New arg ARTIFICIAL.
19 Callers in this file changed.
20
21 * abbrev.el (define-abbrevs): Read system abbrevs properly.
22
23 * emacs-lisp/map-ynp.el (map-y-or-n-p): Clarify RET/q in help message.
24
252005-04-10 Chong Yidong <cyd@stupidchicken.com>
26
27 * url/url-ldap.el (url-ldap): Add docstring. Fix call to
28 `ldap-search-internal'.
29
302005-04-10 Stefan Monnier <monnier@iro.umontreal.ca>
31
32 * files.el (set-auto-mode-1): Use line-end-position.
33
34 * international/latin-1.el:
35 * international/latin-2.el:
36 * international/latin-3.el:
37 * international/latin-4.el:
38 * international/latin-5.el:
39 * international/latin-8.el:
40 * international/latin-9.el: Give punctuation syntax to NBSP.
41
42 * textmodes/bibtex.el (bibtex-autokey-titleword-ignore)
43 (bibtex-reference-key, bibtex-autokey-demangle-name, bibtex-mode):
44 Use char-classes to accept non-ascii letters, accepted in some recent
45 bibtex implementations.
46
472005-04-10 Luc Teirlinck <teirllm@auburn.edu>
48
49 * custom.el (custom-set-minor-mode): Any non-nil value for the
50 variable should enable the mode when set through Custom.
51
522005-04-10 Stefan Monnier <monnier@iro.umontreal.ca>
53
54 * progmodes/vhdl-mode.el (vhdl-mode-map-init): Don't override default
55 TAB binding so tab-always-indent is obeyed.
56 (vhdl-minibuffer-local-map): Move initialization into declaration.
57 (vhdl-mode-abbrev-table-init): Mark the abbrevs as `system'.
58 (vhdl-run-when-idle, vhdl-create-mode-menu, vhdl-character-to-event)
59 (vhdl-hooked-abbrev): Avoid test for XEmacs.
60 (vhdl-current-line): Use line-beginning-position.
61 (vhdl-doc-variable, vhdl-doc-mode): Call help-setup-xref before
62 with-output-to-temp-buffer, so the current position can be recorded.
63
642005-04-10 Masatake YAMATO <jet@gyve.org>
65
66 * progmodes/compile.el (compilation-error-regexp-alist-alist):
67 Add regexp for gcov.
68
692005-04-06 Katsumi Yamaoka <yamaoka@jpl.org>
70
71 * calendar/time-date.el (time-to-seconds, seconds-to-time)
72 (days-to-time, time-subtract, time-add): Don't use the #xhhhh
73 syntax which Emacs 20 doesn't support.
74
752005-04-09 Richard M. Stallman <rms@gnu.org>
76
77 * help.el (describe-key-briefly, describe-key): Replace
78 strings as event types with "(any string)".
79
802005-04-09 Stefan Monnier <monnier@iro.umontreal.ca>
81
82 * arc-mode.el (archive-mode-map): Move initialization into
83 the declaration. Override *all* bindings of `undo'.
84 (archive-lemacs): Remove, use (featurep 'xemacs) instead.
85
862005-04-09 Jay Belanger <belanger@truman.edu>
87
88 * calc/calc-units.el (math-standard-units): Redefine Watt hour as W*hr.
89
902005-04-09 Dan Nicolaescu <dann@ics.uci.edu>
91
92 * term/xterm.el (xterm-rgb-convert-to-16bit): Simplify.
93 (xterm-register-default-colors): Update color values computation
94 to match xterm-200.
95
962005-04-09 Kenichi Handa <handa@m17n.org>
97
98 * international/code-pages.el (iso-latin-7): Fix the map.
99
1002005-04-08 Luc Teirlinck <teirllm@auburn.edu>
101
102 * emacs-lisp/lisp.el (defun-prompt-regexp)
103 (parens-require-spaces, buffer-end, end-of-defun)
104 (insert-parentheses): Doc fixes.
105
1062005-04-08 Kim F. Storm <storm@cua.dk>
107
108 * comint.el (comint-highlight-prompt): Fix face spec.
109 * hi-lock.el (hi-green): Likewise.
110
1112005-04-08 Dan Nicolaescu <dann@ics.uci.edu>
112
113 * cus-edit.el (custom-modified-face):
114 * comint.el (comint-highlight-input): Fix previous changes.
115 * term.el (term-handle-ansi-escape): Add a comment.
116
1172005-04-08 Stefan Monnier <monnier@iro.umontreal.ca>
118
119 * whitespace.el (whitespace-highlight-the-space): Put the same overlay
120 in the buffer and in whitespace-highlighted-space.
121 (whitespace-unhighlight-the-space): Simplify.
122 (whitespace-buffer): Simplify.
123
1242005-04-08 Dan Nicolaescu <dann@ics.uci.edu>
125
126 * textmodes/table.el (table-cell-face): Add special case for
127 displays supporting a high number of colors.
128 * progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face)
129 (vhdl-font-lock-reserved-words-face)
130 (vhdl-speedbar-architecture-face)
131 (vhdl-speedbar-instantiation-face)
132 (vhdl-speedbar-architecture-selected-face)
133 (vhdl-speedbar-instantiation-selected-face): Likewise.
134 * progmodes/sh-script.el (sh-heredoc-face): Likewise.
135 * progmodes/idlw-help.el (idlwave-help-link-face): Likewise.
136 * progmodes/ebrowse.el (ebrowse-tree-mark-face)
137 (ebrowse-root-class-face, ebrowse-member-attribute-face)
138 (ebrowse-progress-face): Likewise.
139 * progmodes/compile.el (compilation-info-face): Likewise.
140 * progmodes/cc-fonts.el (c-invalid-face): Likewise.
141 * emacs-lisp/re-builder.el (reb-match-3): Likewise.
142 * calendar/calendar.el (diary-face): Likewise.
143 * woman.el (woman-italic-face, woman-bold-face)
144 (woman-unknown-face): Likewise.
145 * wid-edit.el (widget-button-pressed-face): Likewise.
146 * whitespace.el (whitespace-highlight-face): Likewise.
147 * smerge-mode.el (smerge-mine-face, smerge-base-face): Likewise.
148 * pcvs-info.el (cvs-marked-face): Likewise.
149 * info.el (info-xref): Likewise.
150 * ido.el (ido-subdir-face, ido-indicator-face): Likewise.
151 * hilit-chg.el (highlight-changes-face)
152 (highlight-changes-delete-face): Likewise.
153 * hi-lock.el (hi-yellow, hi-green, hi-blue-b, hi-green-b)
154 (hi-red-b): Likewise.
155 * generic-x.el (show-tabs-tab-face, show-tabs-space-face): Likewise.
156 * font-lock.el (font-lock-keyword-face)
157 (font-lock-function-name-face, font-lock-warning-face): Likewise.
158 * cus-edit.el (custom-invalid-face, custom-modified-face)
159 (custom-set-face, custom-changed-face, custom-variable-tag-face)
160 (custom-group-tag-face-1, custom-group-tag-face): Likewise.
161 * comint.el (comint-highlight-prompt): Likewise.
162
1632005-04-08 Lute Kamstra <lute@gnu.org>
164
165 * font-lock.el (font-lock-keywords): Docstring fixes.
166
1672005-04-08 Kenichi Handa <handa@m17n.org>
168
169 * ps-mule.el (ps-mule-show-warning): If the number of unprintable
170 chars are more than a limit, print " and more..." at the tail.
171
1722005-04-08 Kim F. Storm <storm@cua.dk>
173
174 * emacs-lisp/authors.el (authors-aliases): Update list.
175 (authors-ignored-files): New list.
176 (authors-fixed-entries): Fix typo.
177 (authors-renamed-files-alist): Update list.
178 (authors-add): Check authors-ignored-files.
179
1802005-04-08 Carsten Dominik <dominik@science.uva.nl>
181
182 * calendar/diary-lib.el (add-to-diary-list): MARKER argument made
183 optional, to ensure backward compatibility.
184
1852005-04-08 Stephen Eglen <stephen@gnu.org>
186
187 * textmodes/flyspell.el (flyspell-large-region): Doc fix.
188
1892005-04-08 Kim F. Storm <storm@cua.dk>
190
191 * buff-menu.el (Buffer-menu-mode-map): Map follow-link to
192 mouse-face.
193
194 * mouse.el (mouse-on-link-p): Doc fix.
195
12005-04-07 Luc Teirlinck <teirllm@auburn.edu> 1962005-04-07 Luc Teirlinck <teirllm@auburn.edu>
2 197
3 * ielm.el (ielm-prompt-read-only): Doc fix. 198 * ielm.el (ielm-prompt-read-only): Doc fix.
diff --git a/lisp/abbrev.el b/lisp/abbrev.el
index 3580c136948..aa4249d014e 100644
--- a/lisp/abbrev.el
+++ b/lisp/abbrev.el
@@ -172,15 +172,18 @@ the ones defined from the buffer now."
172 (while (and (not (eobp)) (re-search-forward "^(" nil t)) 172 (while (and (not (eobp)) (re-search-forward "^(" nil t))
173 (let* ((buf (current-buffer)) 173 (let* ((buf (current-buffer))
174 (table (read buf)) 174 (table (read buf))
175 abbrevs name hook exp count) 175 abbrevs name hook exp count sys)
176 (forward-line 1) 176 (forward-line 1)
177 (while (progn (forward-line 1) 177 (while (progn (forward-line 1)
178 (not (eolp))) 178 (not (eolp)))
179 (setq name (read buf) count (read buf) exp (read buf)) 179 (setq name (read buf) count (read buf))
180 (if (equal count '(sys))
181 (setq sys t count (read buf)))
182 (setq exp (read buf))
180 (skip-chars-backward " \t\n\f") 183 (skip-chars-backward " \t\n\f")
181 (setq hook (if (not (eolp)) (read buf))) 184 (setq hook (if (not (eolp)) (read buf)))
182 (skip-chars-backward " \t\n\f") 185 (skip-chars-backward " \t\n\f")
183 (setq abbrevs (cons (list name exp hook count) abbrevs))) 186 (setq abbrevs (cons (list name exp hook count sys) abbrevs)))
184 (define-abbrev-table table abbrevs))))) 187 (define-abbrev-table table abbrevs)))))
185 188
186(defun read-abbrev-file (&optional file quietly) 189(defun read-abbrev-file (&optional file quietly)
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index 2cb20b4545d..e72d38f3a3f 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -1,6 +1,6 @@
1;;; arc-mode.el --- simple editing of archives 1;;; arc-mode.el --- simple editing of archives
2 2
3;; Copyright (C) 1995, 1997, 1998, 2003 Free Software Foundation, Inc. 3;; Copyright (C) 1995, 1997, 1998, 2003, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Morten Welinder <terra@gnu.org> 5;; Author: Morten Welinder <terra@gnu.org>
6;; Keywords: archives msdog editing major-mode 6;; Keywords: archives msdog editing major-mode
@@ -330,7 +330,111 @@ Archive and member name will be added."
330(defvar archive-proper-file-start nil "Position of real archive's start.") 330(defvar archive-proper-file-start nil "Position of real archive's start.")
331(defvar archive-read-only nil "Non-nil if the archive is read-only on disk.") 331(defvar archive-read-only nil "Non-nil if the archive is read-only on disk.")
332(defvar archive-local-name nil "Name of local copy of remote archive.") 332(defvar archive-local-name nil "Name of local copy of remote archive.")
333(defvar archive-mode-map nil "Local keymap for archive mode listings.") 333(defvar archive-mode-map
334 (let ((map (make-keymap)))
335 (suppress-keymap map)
336 (define-key map " " 'archive-next-line)
337 (define-key map "a" 'archive-alternate-display)
338 ;;(define-key map "c" 'archive-copy)
339 (define-key map "d" 'archive-flag-deleted)
340 (define-key map "\C-d" 'archive-flag-deleted)
341 (define-key map "e" 'archive-extract)
342 (define-key map "f" 'archive-extract)
343 (define-key map "\C-m" 'archive-extract)
344 (define-key map "g" 'revert-buffer)
345 (define-key map "h" 'describe-mode)
346 (define-key map "m" 'archive-mark)
347 (define-key map "n" 'archive-next-line)
348 (define-key map "\C-n" 'archive-next-line)
349 (define-key map [down] 'archive-next-line)
350 (define-key map "o" 'archive-extract-other-window)
351 (define-key map "p" 'archive-previous-line)
352 (define-key map "q" 'quit-window)
353 (define-key map "\C-p" 'archive-previous-line)
354 (define-key map [up] 'archive-previous-line)
355 (define-key map "r" 'archive-rename-entry)
356 (define-key map "u" 'archive-unflag)
357 (define-key map "\M-\C-?" 'archive-unmark-all-files)
358 (define-key map "v" 'archive-view)
359 (define-key map "x" 'archive-expunge)
360 (define-key map "\177" 'archive-unflag-backwards)
361 (define-key map "E" 'archive-extract-other-window)
362 (define-key map "M" 'archive-chmod-entry)
363 (define-key map "G" 'archive-chgrp-entry)
364 (define-key map "O" 'archive-chown-entry)
365
366 (if (fboundp 'command-remapping)
367 (progn
368 (define-key map [remap advertised-undo] 'archive-undo)
369 (define-key map [remap undo] 'archive-undo))
370 (substitute-key-definition 'advertised-undo 'archive-undo map global-map)
371 (substitute-key-definition 'undo 'archive-undo map global-map))
372
373 (define-key map
374 (if (featurep 'xemacs) 'button2 [mouse-2]) 'archive-mouse-extract)
375
376 (if (featurep 'xemacs)
377 () ; out of luck
378
379 (define-key map [menu-bar immediate]
380 (cons "Immediate" (make-sparse-keymap "Immediate")))
381 (define-key map [menu-bar immediate alternate]
382 '(menu-item "Alternate Display" archive-alternate-display
383 :enable (boundp (archive-name "alternate-display"))
384 :help "Toggle alternate file info display"))
385 (define-key map [menu-bar immediate view]
386 '(menu-item "View This File" archive-view
387 :help "Display file at cursor in View Mode"))
388 (define-key map [menu-bar immediate display]
389 '(menu-item "Display in Other Window" archive-display-other-window
390 :help "Display file at cursor in another window"))
391 (define-key map [menu-bar immediate find-file-other-window]
392 '(menu-item "Find in Other Window" archive-extract-other-window
393 :help "Edit file at cursor in another window"))
394 (define-key map [menu-bar immediate find-file]
395 '(menu-item "Find This File" archive-extract
396 :help "Extract file at cursor and edit it"))
397
398 (define-key map [menu-bar mark]
399 (cons "Mark" (make-sparse-keymap "Mark")))
400 (define-key map [menu-bar mark unmark-all]
401 '(menu-item "Unmark All" archive-unmark-all-files
402 :help "Unmark all marked files"))
403 (define-key map [menu-bar mark deletion]
404 '(menu-item "Flag" archive-flag-deleted
405 :help "Flag file at cursor for deletion"))
406 (define-key map [menu-bar mark unmark]
407 '(menu-item "Unflag" archive-unflag
408 :help "Unmark file at cursor"))
409 (define-key map [menu-bar mark mark]
410 '(menu-item "Mark" archive-mark
411 :help "Mark file at cursor"))
412
413 (define-key map [menu-bar operate]
414 (cons "Operate" (make-sparse-keymap "Operate")))
415 (define-key map [menu-bar operate chown]
416 '(menu-item "Change Owner..." archive-chown-entry
417 :enable (fboundp (archive-name "chown-entry"))
418 :help "Change owner of marked files"))
419 (define-key map [menu-bar operate chgrp]
420 '(menu-item "Change Group..." archive-chgrp-entry
421 :enable (fboundp (archive-name "chgrp-entry"))
422 :help "Change group ownership of marked files"))
423 (define-key map [menu-bar operate chmod]
424 '(menu-item "Change Mode..." archive-chmod-entry
425 :enable (fboundp (archive-name "chmod-entry"))
426 :help "Change mode (permissions) of marked files"))
427 (define-key map [menu-bar operate rename]
428 '(menu-item "Rename to..." archive-rename-entry
429 :enable (fboundp (archive-name "rename-entry"))
430 :help "Rename marked files"))
431 ;;(define-key map [menu-bar operate copy]
432 ;; '(menu-item "Copy to..." archive-copy))
433 (define-key map [menu-bar operate expunge]
434 '(menu-item "Expunge Marked Files" archive-expunge
435 :help "Delete all flagged files from archive"))
436 map))
437 "Local keymap for archive mode listings.")
334(defvar archive-file-name-indent nil "Column where file names start.") 438(defvar archive-file-name-indent nil "Column where file names start.")
335 439
336(defvar archive-remote nil "Non-nil if the archive is outside file system.") 440(defvar archive-remote nil "Non-nil if the archive is outside file system.")
@@ -358,9 +462,6 @@ Each descriptor is a vector of the form
358 [EXT-FILE-NAME INT-FILE-NAME CASE-FIDDLED MODE ...]") 462 [EXT-FILE-NAME INT-FILE-NAME CASE-FIDDLED MODE ...]")
359(make-variable-buffer-local 'archive-files) 463(make-variable-buffer-local 'archive-files)
360 464
361(defvar archive-lemacs
362 (string-match "\\(Lucid\\|Xemacs\\)" emacs-version)
363 "*Non-nil when running under under Lucid Emacs or Xemacs.")
364;; ------------------------------------------------------------------------- 465;; -------------------------------------------------------------------------
365;; Section: Support functions. 466;; Section: Support functions.
366 467
@@ -586,116 +687,9 @@ archive.
586;; ------------------------------------------------------------------------- 687;; -------------------------------------------------------------------------
587;; Section: Key maps 688;; Section: Key maps
588 689
589(if archive-mode-map nil 690(let ((item1 '(archive-subfile-mode " Archive")))
590 (setq archive-mode-map (make-keymap))
591 (suppress-keymap archive-mode-map)
592 (define-key archive-mode-map " " 'archive-next-line)
593 (define-key archive-mode-map "a" 'archive-alternate-display)
594 ;;(define-key archive-mode-map "c" 'archive-copy)
595 (define-key archive-mode-map "d" 'archive-flag-deleted)
596 (define-key archive-mode-map "\C-d" 'archive-flag-deleted)
597 (define-key archive-mode-map "e" 'archive-extract)
598 (define-key archive-mode-map "f" 'archive-extract)
599 (define-key archive-mode-map "\C-m" 'archive-extract)
600 (define-key archive-mode-map "g" 'revert-buffer)
601 (define-key archive-mode-map "h" 'describe-mode)
602 (define-key archive-mode-map "m" 'archive-mark)
603 (define-key archive-mode-map "n" 'archive-next-line)
604 (define-key archive-mode-map "\C-n" 'archive-next-line)
605 (define-key archive-mode-map [down] 'archive-next-line)
606 (define-key archive-mode-map "o" 'archive-extract-other-window)
607 (define-key archive-mode-map "p" 'archive-previous-line)
608 (define-key archive-mode-map "q" 'quit-window)
609 (define-key archive-mode-map "\C-p" 'archive-previous-line)
610 (define-key archive-mode-map [up] 'archive-previous-line)
611 (define-key archive-mode-map "r" 'archive-rename-entry)
612 (define-key archive-mode-map "u" 'archive-unflag)
613 (define-key archive-mode-map "\M-\C-?" 'archive-unmark-all-files)
614 (define-key archive-mode-map "v" 'archive-view)
615 (define-key archive-mode-map "x" 'archive-expunge)
616 (define-key archive-mode-map "\177" 'archive-unflag-backwards)
617 (define-key archive-mode-map "E" 'archive-extract-other-window)
618 (define-key archive-mode-map "M" 'archive-chmod-entry)
619 (define-key archive-mode-map "G" 'archive-chgrp-entry)
620 (define-key archive-mode-map "O" 'archive-chown-entry)
621
622 (if archive-lemacs
623 (progn
624 ;; Not a nice "solution" but it'll have to do
625 (define-key archive-mode-map "\C-xu" 'archive-undo)
626 (define-key archive-mode-map "\C-_" 'archive-undo))
627 (define-key archive-mode-map [remap advertised-undo] 'archive-undo)
628 (define-key archive-mode-map [remap undo] 'archive-undo))
629
630 (define-key archive-mode-map
631 (if archive-lemacs 'button2 [mouse-2]) 'archive-mouse-extract)
632
633 (if archive-lemacs
634 () ; out of luck
635
636 (define-key archive-mode-map [menu-bar immediate]
637 (cons "Immediate" (make-sparse-keymap "Immediate")))
638 (define-key archive-mode-map [menu-bar immediate alternate]
639 '(menu-item "Alternate Display" archive-alternate-display
640 :enable (boundp (archive-name "alternate-display"))
641 :help "Toggle alternate file info display"))
642 (define-key archive-mode-map [menu-bar immediate view]
643 '(menu-item "View This File" archive-view
644 :help "Display file at cursor in View Mode"))
645 (define-key archive-mode-map [menu-bar immediate display]
646 '(menu-item "Display in Other Window" archive-display-other-window
647 :help "Display file at cursor in another window"))
648 (define-key archive-mode-map [menu-bar immediate find-file-other-window]
649 '(menu-item "Find in Other Window" archive-extract-other-window
650 :help "Edit file at cursor in another window"))
651 (define-key archive-mode-map [menu-bar immediate find-file]
652 '(menu-item "Find This File" archive-extract
653 :help "Extract file at cursor and edit it"))
654
655 (define-key archive-mode-map [menu-bar mark]
656 (cons "Mark" (make-sparse-keymap "Mark")))
657 (define-key archive-mode-map [menu-bar mark unmark-all]
658 '(menu-item "Unmark All" archive-unmark-all-files
659 :help "Unmark all marked files"))
660 (define-key archive-mode-map [menu-bar mark deletion]
661 '(menu-item "Flag" archive-flag-deleted
662 :help "Flag file at cursor for deletion"))
663 (define-key archive-mode-map [menu-bar mark unmark]
664 '(menu-item "Unflag" archive-unflag
665 :help "Unmark file at cursor"))
666 (define-key archive-mode-map [menu-bar mark mark]
667 '(menu-item "Mark" archive-mark
668 :help "Mark file at cursor"))
669
670 (define-key archive-mode-map [menu-bar operate]
671 (cons "Operate" (make-sparse-keymap "Operate")))
672 (define-key archive-mode-map [menu-bar operate chown]
673 '(menu-item "Change Owner..." archive-chown-entry
674 :enable (fboundp (archive-name "chown-entry"))
675 :help "Change owner of marked files"))
676 (define-key archive-mode-map [menu-bar operate chgrp]
677 '(menu-item "Change Group..." archive-chgrp-entry
678 :enable (fboundp (archive-name "chgrp-entry"))
679 :help "Change group ownership of marked files"))
680 (define-key archive-mode-map [menu-bar operate chmod]
681 '(menu-item "Change Mode..." archive-chmod-entry
682 :enable (fboundp (archive-name "chmod-entry"))
683 :help "Change mode (permissions) of marked files"))
684 (define-key archive-mode-map [menu-bar operate rename]
685 '(menu-item "Rename to..." archive-rename-entry
686 :enable (fboundp (archive-name "rename-entry"))
687 :help "Rename marked files"))
688 ;;(define-key archive-mode-map [menu-bar operate copy]
689 ;; '(menu-item "Copy to..." archive-copy))
690 (define-key archive-mode-map [menu-bar operate expunge]
691 '(menu-item "Expunge Marked Files" archive-expunge
692 :help "Delete all flagged files from archive"))
693 ))
694
695(let* ((item1 '(archive-subfile-mode " Archive"))
696 (items (list item1)))
697 (or (member item1 minor-mode-alist) 691 (or (member item1 minor-mode-alist)
698 (setq minor-mode-alist (append items minor-mode-alist)))) 692 (setq minor-mode-alist (cons item1 minor-mode-alist))))
699;; ------------------------------------------------------------------------- 693;; -------------------------------------------------------------------------
700(defun archive-find-type () 694(defun archive-find-type ()
701 (widen) 695 (widen)
@@ -762,7 +756,7 @@ when parsing the archive."
762 ;; Using `concat' here copies the text also, so we can add 756 ;; Using `concat' here copies the text also, so we can add
763 ;; properties without problems. 757 ;; properties without problems.
764 (let ((text (concat (aref fil 0) "\n"))) 758 (let ((text (concat (aref fil 0) "\n")))
765 (if archive-lemacs 759 (if (featurep 'xemacs)
766 () ; out of luck 760 () ; out of luck
767 (add-text-properties 761 (add-text-properties
768 (aref fil 1) (aref fil 2) 762 (aref fil 1) (aref fil 2)
@@ -1809,5 +1803,5 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1809 1803
1810(provide 'arc-mode) 1804(provide 'arc-mode)
1811 1805
1812;;; arch-tag: e5966a01-35ec-4f27-8095-a043a79b457b 1806;; arch-tag: e5966a01-35ec-4f27-8095-a043a79b457b
1813;;; arc-mode.el ends here 1807;;; arc-mode.el ends here
diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index 869896b087a..0696f929584 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -1355,7 +1355,9 @@ for a file, defaulting to the file defined by variable
1355 ((eq 'nospecial bookmark-version-control) version-control) 1355 ((eq 'nospecial bookmark-version-control) version-control)
1356 (t 1356 (t
1357 t)))) 1357 t))))
1358 (write-file file) 1358 (condition-case nil
1359 (write-file file)
1360 (file-error (message "Can't write %s" file)))
1359 (kill-buffer (current-buffer)) 1361 (kill-buffer (current-buffer))
1360 (if (>= baud-rate 9600) 1362 (if (>= baud-rate 9600)
1361 (message "Saving bookmarks to file %s...done" file))))))) 1363 (message "Saving bookmarks to file %s...done" file)))))))
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index 8e1a3e69295..7d0ac885c2f 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -141,6 +141,7 @@ Auto Revert Mode.")
141 (define-key Buffer-menu-mode-map "V" 'Buffer-menu-view) 141 (define-key Buffer-menu-mode-map "V" 'Buffer-menu-view)
142 (define-key Buffer-menu-mode-map "T" 'Buffer-menu-toggle-files-only) 142 (define-key Buffer-menu-mode-map "T" 'Buffer-menu-toggle-files-only)
143 (define-key Buffer-menu-mode-map [mouse-2] 'Buffer-menu-mouse-select) 143 (define-key Buffer-menu-mode-map [mouse-2] 'Buffer-menu-mouse-select)
144 (define-key Buffer-menu-mode-map [follow-link] 'mouse-face)
144) 145)
145 146
146;; Buffer Menu mode is suitable only for specially formatted data. 147;; Buffer Menu mode is suitable only for specially formatted data.
diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index 4b3c284ddad..6c694bc5ba8 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -1,6 +1,6 @@
1;;; calc-units.el --- unit conversion functions for Calc 1;;; calc-units.el --- unit conversion functions for Calc
2 2
3;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc. 3;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc.
4 4
5;; Author: David Gillespie <daveg@synaptics.com> 5;; Author: David Gillespie <daveg@synaptics.com>
6;; Maintainer: Jay Belanger <belanger@truman.edu> 6;; Maintainer: Jay Belanger <belanger@truman.edu>
@@ -137,7 +137,7 @@
137 ( men "100/invcm" "Inverse energy in meters" ) 137 ( men "100/invcm" "Inverse energy in meters" )
138 ( Hzen "h Hz" "Energy in Hertz") 138 ( Hzen "h Hz" "Energy in Hertz")
139 ( Ken "k K" "Energy in Kelvins") 139 ( Ken "k K" "Energy in Kelvins")
140 ( Wh "W h" "Watt hour") 140 ( Wh "W hr" "Watt hour")
141 ( Ws "W s" "Watt second") 141 ( Ws "W s" "Watt second")
142 142
143 ;; Power 143 ;; Power
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 5fc23a15cc9..305ecc1e9bc 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -209,8 +209,12 @@ If nil, make an icon of the frame. If non-nil, delete the frame."
209(defvar diary-face 'diary-face 209(defvar diary-face 'diary-face
210 "Face name to use for diary entries.") 210 "Face name to use for diary entries.")
211(defface diary-face 211(defface diary-face
212 '((((class color) (background light)) 212 '((((min-colors 88) (class color) (background light))
213 :foreground "red1")
214 (((class color) (background light))
213 :foreground "red") 215 :foreground "red")
216 (((min-colors 88) (class color) (background dark))
217 :foreground "yellow1")
214 (((class color) (background dark)) 218 (((class color) (background dark))
215 :foreground "yellow") 219 :foreground "yellow")
216 (t 220 (t
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 6b8f6986381..1832e0cd0fb 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -1647,7 +1647,7 @@ marked on the calendar."
1647 (or (diary-remind sexp (car days) marking) 1647 (or (diary-remind sexp (car days) marking)
1648 (diary-remind sexp (cdr days) marking)))))) 1648 (diary-remind sexp (cdr days) marking))))))
1649 1649
1650(defun add-to-diary-list (date string specifier marker &optional globcolor) 1650(defun add-to-diary-list (date string specifier &optional marker globcolor)
1651 "Add the entry (DATE STRING SPECIFIER MARKER GLOBCOLOR) to `diary-entries-list'. 1651 "Add the entry (DATE STRING SPECIFIER MARKER GLOBCOLOR) to `diary-entries-list'.
1652Do nothing if DATE or STRING is nil." 1652Do nothing if DATE or STRING is nil."
1653 (when (and date string) 1653 (when (and date string)
diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el
index 7160d26ef42..ddeb33b411a 100644
--- a/lisp/calendar/time-date.el
+++ b/lisp/calendar/time-date.el
@@ -1,5 +1,6 @@
1;;; time-date.el --- Date and time handling functions 1;;; time-date.el --- Date and time handling functions
2;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc. 2;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005
3;; Free Software Foundation, Inc.
3 4
4;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
5;; Masanobu Umeda <umerin@mse.kyutech.ac.jp> 6;; Masanobu Umeda <umerin@mse.kyutech.ac.jp>
@@ -112,15 +113,15 @@ and type 3 is the list (HIGH LOW MICRO)."
112 "Convert time value TIME to a floating point number. 113 "Convert time value TIME to a floating point number.
113You can use `float-time' instead." 114You can use `float-time' instead."
114 (with-decoded-time-value ((high low micro time)) 115 (with-decoded-time-value ((high low micro time))
115 (+ (* 1.0 high #x10000) 116 (+ (* 1.0 high 65536)
116 low 117 low
117 (/ micro 1000000.0)))) 118 (/ micro 1000000.0))))
118 119
119;;;###autoload 120;;;###autoload
120(defun seconds-to-time (seconds) 121(defun seconds-to-time (seconds)
121 "Convert SECONDS (a floating point number) to a time value." 122 "Convert SECONDS (a floating point number) to a time value."
122 (list (floor seconds #x10000) 123 (list (floor seconds 65536)
123 (floor (mod seconds #x10000)) 124 (floor (mod seconds 65536))
124 (floor (* (- seconds (ffloor seconds)) 1000000)))) 125 (floor (* (- seconds (ffloor seconds)) 1000000))))
125 126
126;;;###autoload 127;;;###autoload
@@ -138,10 +139,10 @@ You can use `float-time' instead."
138(defun days-to-time (days) 139(defun days-to-time (days)
139 "Convert DAYS into a time value." 140 "Convert DAYS into a time value."
140 (let* ((seconds (* 1.0 days 60 60 24)) 141 (let* ((seconds (* 1.0 days 60 60 24))
141 (high (condition-case nil (floor (/ seconds #x10000)) 142 (high (condition-case nil (floor (/ seconds 65536))
142 (range-error most-positive-fixnum)))) 143 (range-error most-positive-fixnum))))
143 (list high (condition-case nil (floor (- seconds (* 1.0 high #x10000))) 144 (list high (condition-case nil (floor (- seconds (* 1.0 high 65536)))
144 (range-error #xffff))))) 145 (range-error 65535)))))
145 146
146;;;###autoload 147;;;###autoload
147(defun time-since (time) 148(defun time-since (time)
@@ -170,7 +171,7 @@ Return the difference in the format of a time value."
170 micro (+ micro 1000000))) 171 micro (+ micro 1000000)))
171 (when (< low 0) 172 (when (< low 0)
172 (setq high (1- high) 173 (setq high (1- high)
173 low (+ low #x10000))) 174 low (+ low 65536)))
174 (encode-time-value high low micro type))) 175 (encode-time-value high low micro type)))
175 176
176;;;###autoload 177;;;###autoload
@@ -185,9 +186,9 @@ Return the difference in the format of a time value."
185 (when (>= micro 1000000) 186 (when (>= micro 1000000)
186 (setq low (1+ low) 187 (setq low (1+ low)
187 micro (- micro 1000000))) 188 micro (- micro 1000000)))
188 (when (>= low #x10000) 189 (when (>= low 65536)
189 (setq high (1+ high) 190 (setq high (1+ high)
190 low (- low #x10000))) 191 low (- low 65536)))
191 (encode-time-value high low micro type))) 192 (encode-time-value high low micro type)))
192 193
193;;;###autoload 194;;;###autoload
diff --git a/lisp/comint.el b/lisp/comint.el
index 73425710455..fe0987e2076 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -228,7 +228,8 @@ This variable is buffer-local."
228 :group 'comint) 228 :group 'comint)
229 229
230(defface comint-highlight-prompt 230(defface comint-highlight-prompt
231 '((((background dark)) (:foreground "cyan")) 231 '((((min-colors 88) (background dark)) (:foreground "cyan1"))
232 (((background dark)) (:foreground "cyan"))
232 (t (:foreground "dark blue"))) 233 (t (:foreground "dark blue")))
233 "Face to use to highlight prompts." 234 "Face to use to highlight prompts."
234 :group 'comint) 235 :group 'comint)
@@ -1387,14 +1388,15 @@ Ignore duplicates if `comint-input-ignoredups' is non-nil."
1387 cmd)))) 1388 cmd))))
1388 (ring-insert comint-input-ring cmd))) 1389 (ring-insert comint-input-ring cmd)))
1389 1390
1390(defun comint-send-input (&optional no-newline) 1391(defun comint-send-input (&optional no-newline artificial)
1391 "Send input to process. 1392 "Send input to process.
1392After the process output mark, sends all text from the process mark to 1393After the process output mark, sends all text from the process mark to
1393point as input to the process. Before the process output mark, calls 1394point as input to the process. Before the process output mark, calls
1394value of variable `comint-get-old-input' to retrieve old input, copies 1395value of variable `comint-get-old-input' to retrieve old input, copies
1395it to the process mark, and sends it. A terminal newline is also 1396it to the process mark, and sends it.
1396inserted into the buffer and sent to the process unless NO-NEWLINE is 1397
1397non-nil. 1398This command also sends and inserts a final newline, unless
1399NO-NEWLINE is non-nil.
1398 1400
1399Any history reference may be expanded depending on the value of the variable 1401Any history reference may be expanded depending on the value of the variable
1400`comint-input-autoexpand'. The list of function names contained in the value 1402`comint-input-autoexpand'. The list of function names contained in the value
@@ -1408,6 +1410,8 @@ end of line before sending the input.
1408After the input has been sent, if `comint-process-echoes' is non-nil, 1410After the input has been sent, if `comint-process-echoes' is non-nil,
1409then `comint-send-input' waits to see if the process outputs a string 1411then `comint-send-input' waits to see if the process outputs a string
1410matching the input, and if so, deletes that part of the output. 1412matching the input, and if so, deletes that part of the output.
1413If ARTIFICIAL is non-nil, it inhibits such deletion.
1414Callers sending input not from the user should use ARTIFICIAL = t.
1411 1415
1412The values of `comint-get-old-input', `comint-input-filter-functions', and 1416The values of `comint-get-old-input', `comint-input-filter-functions', and
1413`comint-input-filter' are chosen according to the command interpreter running 1417`comint-input-filter' are chosen according to the command interpreter running
@@ -1512,7 +1516,7 @@ Similarly for Soar, Scheme, etc."
1512 (funcall comint-input-sender proc input)) 1516 (funcall comint-input-sender proc input))
1513 1517
1514 ;; Optionally delete echoed input (after checking it). 1518 ;; Optionally delete echoed input (after checking it).
1515 (when comint-process-echoes 1519 (when (and comint-process-echoes (not artificial))
1516 (let ((echo-len (- comint-last-input-end 1520 (let ((echo-len (- comint-last-input-end
1517 comint-last-input-start))) 1521 comint-last-input-start)))
1518 ;; Wait for all input to be echoed: 1522 ;; Wait for all input to be echoed:
@@ -2087,7 +2091,7 @@ Useful if you accidentally suspend the top-level process."
2087This means mark it as if it had been sent as input, without sending it." 2091This means mark it as if it had been sent as input, without sending it."
2088 (let ((comint-input-sender 'ignore) 2092 (let ((comint-input-sender 'ignore)
2089 (comint-input-filter-functions nil)) 2093 (comint-input-filter-functions nil))
2090 (comint-send-input t)) 2094 (comint-send-input t t))
2091 (end-of-line) 2095 (end-of-line)
2092 (let ((pos (point)) 2096 (let ((pos (point))
2093 (marker (process-mark (get-buffer-process (current-buffer))))) 2097 (marker (process-mark (get-buffer-process (current-buffer)))))
@@ -2114,7 +2118,7 @@ Sends an EOF only if point is at the end of the buffer and there is no input."
2114(defun comint-send-eof () 2118(defun comint-send-eof ()
2115 "Send an EOF to the current buffer's process." 2119 "Send an EOF to the current buffer's process."
2116 (interactive) 2120 (interactive)
2117 (comint-send-input t) 2121 (comint-send-input t t)
2118 (process-send-eof)) 2122 (process-send-eof))
2119 2123
2120 2124
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 0b06b3f6980..8d440be9b39 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -1633,7 +1633,7 @@ item in another window.\n\n"))
1633 :group 'custom-buffer) 1633 :group 'custom-buffer)
1634 1634
1635(defface custom-invalid-face '((((class color)) 1635(defface custom-invalid-face '((((class color))
1636 (:foreground "yellow" :background "red")) 1636 (:foreground "yellow1" :background "red1"))
1637 (t 1637 (t
1638 (:weight bold :slant italic :underline t))) 1638 (:weight bold :slant italic :underline t)))
1639 "Face used when the customize item is invalid." 1639 "Face used when the customize item is invalid."
@@ -1646,21 +1646,27 @@ item in another window.\n\n"))
1646 "Face used when the customize item is not defined for customization." 1646 "Face used when the customize item is not defined for customization."
1647 :group 'custom-magic-faces) 1647 :group 'custom-magic-faces)
1648 1648
1649(defface custom-modified-face '((((class color)) 1649(defface custom-modified-face '((((min-colors 88) (class color))
1650 (:foreground "white" :background "blue1"))
1651 (((class color))
1650 (:foreground "white" :background "blue")) 1652 (:foreground "white" :background "blue"))
1651 (t 1653 (t
1652 (:slant italic :bold))) 1654 (:slant italic :bold)))
1653 "Face used when the customize item has been modified." 1655 "Face used when the customize item has been modified."
1654 :group 'custom-magic-faces) 1656 :group 'custom-magic-faces)
1655 1657
1656(defface custom-set-face '((((class color)) 1658(defface custom-set-face '((((min-colors 88) (class color))
1659 (:foreground "blue1" :background "white"))
1660 (((class color))
1657 (:foreground "blue" :background "white")) 1661 (:foreground "blue" :background "white"))
1658 (t 1662 (t
1659 (:slant italic))) 1663 (:slant italic)))
1660 "Face used when the customize item has been set." 1664 "Face used when the customize item has been set."
1661 :group 'custom-magic-faces) 1665 :group 'custom-magic-faces)
1662 1666
1663(defface custom-changed-face '((((class color)) 1667(defface custom-changed-face '((((min-colors 88) (class color))
1668 (:foreground "white" :background "blue1"))
1669 (((class color))
1664 (:foreground "white" :background "blue")) 1670 (:foreground "white" :background "blue"))
1665 (t 1671 (t
1666 (:slant italic))) 1672 (:slant italic)))
@@ -2148,9 +2154,12 @@ If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
2148 `((((class color) 2154 `((((class color)
2149 (background dark)) 2155 (background dark))
2150 (:foreground "light blue" :weight bold :height 1.2 :inherit variable-pitch)) 2156 (:foreground "light blue" :weight bold :height 1.2 :inherit variable-pitch))
2157 (((min-colors 88) (class color)
2158 (background light))
2159 (:foreground "blue1" :weight bold :height 1.2 :inherit variable-pitch))
2151 (((class color) 2160 (((class color)
2152 (background light)) 2161 (background light))
2153 (:foreground "blue" :weight bold :height 1.2 :inherit variable-pitch)) 2162 (:foreground "blue" :weight bold :height 1.2 :inherit variable-pitch))
2154 (t (:weight bold))) 2163 (t (:weight bold)))
2155 "Face used for unpushable variable tags." 2164 "Face used for unpushable variable tags."
2156 :group 'custom-faces) 2165 :group 'custom-faces)
@@ -3392,6 +3401,9 @@ and so forth. The remaining group tags are shown with
3392 `((((class color) 3401 `((((class color)
3393 (background dark)) 3402 (background dark))
3394 (:foreground "pink" :weight bold :height 1.2 :inherit variable-pitch)) 3403 (:foreground "pink" :weight bold :height 1.2 :inherit variable-pitch))
3404 (((min-colors 88) (class color)
3405 (background light))
3406 (:foreground "red1" :weight bold :height 1.2 :inherit variable-pitch))
3395 (((class color) 3407 (((class color)
3396 (background light)) 3408 (background light))
3397 (:foreground "red" :weight bold :height 1.2 :inherit variable-pitch)) 3409 (:foreground "red" :weight bold :height 1.2 :inherit variable-pitch))
@@ -3403,6 +3415,9 @@ and so forth. The remaining group tags are shown with
3403 `((((class color) 3415 `((((class color)
3404 (background dark)) 3416 (background dark))
3405 (:foreground "light blue" :weight bold :height 1.2)) 3417 (:foreground "light blue" :weight bold :height 1.2))
3418 (((min-colors 88) (class color)
3419 (background light))
3420 (:foreground "blue1" :weight bold :height 1.2))
3406 (((class color) 3421 (((class color)
3407 (background light)) 3422 (background light))
3408 (:foreground "blue" :weight bold :height 1.2)) 3423 (:foreground "blue" :weight bold :height 1.2))
diff --git a/lisp/custom.el b/lisp/custom.el
index 77b54a109c5..019fdb79b38 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -841,8 +841,8 @@ but if `custom-local-buffer' is non-nil,
841this sets the local binding in that buffer instead." 841this sets the local binding in that buffer instead."
842 (if custom-local-buffer 842 (if custom-local-buffer
843 (with-current-buffer custom-local-buffer 843 (with-current-buffer custom-local-buffer
844 (funcall variable (or value 0))) 844 (funcall variable (if value 1 0)))
845 (funcall variable (or value 0)))) 845 (funcall variable (if value 1 0))))
846 846
847(defun custom-quote (sexp) 847(defun custom-quote (sexp)
848 "Quote SEXP iff it is not self quoting." 848 "Quote SEXP iff it is not self quoting."
diff --git a/lisp/emacs-lisp/authors.el b/lisp/emacs-lisp/authors.el
index 5ab42c06e8e..8eb177dd9ca 100644
--- a/lisp/emacs-lisp/authors.el
+++ b/lisp/emacs-lisp/authors.el
@@ -41,7 +41,6 @@ files.")
41 41
42(defconst authors-aliases 42(defconst authors-aliases
43 '( 43 '(
44 ("Andrew Innes" "Andrw Innes")
45 ("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc." 44 ("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc."
46 "Barry A. Warsaw, ITB" "Barry Warsaw") 45 "Barry A. Warsaw, ITB" "Barry Warsaw")
47 ("Bj,Av(Brn Torkelsson" "Bjorn Torkelsson") 46 ("Bj,Av(Brn Torkelsson" "Bjorn Torkelsson")
@@ -57,7 +56,7 @@ files.")
57 ("Edward M. Reingold" "Ed Reingold" "Edward M Reingold" 56 ("Edward M. Reingold" "Ed Reingold" "Edward M Reingold"
58 "Reingold Edward M") 57 "Reingold Edward M")
59 ("Eli Zaretskii" "eliz") 58 ("Eli Zaretskii" "eliz")
60; ("Emilio C. Lopes" "Emilio Lopes") 59 ("Emilio C. Lopes" "Emilio Lopes")
61 ("Era Eriksson" "Era@Iki.Fi") 60 ("Era Eriksson" "Era@Iki.Fi")
62 ("Eric M. Ludlam" "Eric Ludlam") 61 ("Eric M. Ludlam" "Eric Ludlam")
63 ("Eric S. Raymond" "Eric Raymond") 62 ("Eric S. Raymond" "Eric Raymond")
@@ -79,8 +78,10 @@ files.")
79 ("Jay K. Adams" "jka@ece.cmu.edu" "Jay Adams") 78 ("Jay K. Adams" "jka@ece.cmu.edu" "Jay Adams")
80 ("J,Ai(Br,At(Bme Marant" "J,bi(Br,bt(Bme Marant" "Jerome Marant") 79 ("J,Ai(Br,At(Bme Marant" "J,bi(Br,bt(Bme Marant" "Jerome Marant")
81 ("Jens-Ulrik Holger Petersen" "Jens-Ulrik Petersen") 80 ("Jens-Ulrik Holger Petersen" "Jens-Ulrik Petersen")
81 ("John W. Eaton" "John Eaton")
82 ("Jonathan I. Kamens" "Jonathan Kamens") 82 ("Jonathan I. Kamens" "Jonathan Kamens")
83 ("Joseph Arceneaux" "Joe Arceneaux") 83 ("Joseph Arceneaux" "Joe Arceneaux")
84 ("Juan Le,As(Bn Lahoz Garc,Am(Ba" "Juan-Leon Lahoz Garcia")
84 ("K. Shane Hartman" "Shane Hartman") 85 ("K. Shane Hartman" "Shane Hartman")
85 ("Kai Gro,A_(Bjohann" "Kai Grossjohann" "Kai Gro,b_(Bjohann" 86 ("Kai Gro,A_(Bjohann" "Kai Grossjohann" "Kai Gro,b_(Bjohann"
86 "Kai.Grossjohann@Cs.Uni-Dortmund.De" 87 "Kai.Grossjohann@Cs.Uni-Dortmund.De"
@@ -89,14 +90,17 @@ files.")
89 ("Kazushi Marukawa" "Kazushi") 90 ("Kazushi Marukawa" "Kazushi")
90 ("Ken Manheimer" "Kenneth Manheimer") 91 ("Ken Manheimer" "Kenneth Manheimer")
91 ("Kenichi Handa" "Ken'ichi Handa" "Kenichi HANDA") 92 ("Kenichi Handa" "Ken'ichi Handa" "Kenichi HANDA")
93 ("Kevin Greiner" "Kevin J. Greiner")
92 ("Kim F. Storm" "Kim Storm") 94 ("Kim F. Storm" "Kim Storm")
93 ("Kyle Jones" "Kyle E. Jones") 95 ("Kyle Jones" "Kyle E. Jones")
94 ("Marcus G. Daniels" "Marcus Daniels") 96 ("Marcus G. Daniels" "Marcus Daniels")
95 ("Mark D. Baushke" "Mark D Baushke") 97 ("Mark D. Baushke" "Mark D Baushke")
96 ("Martin Lorentzon" "Martin Lorentzson") 98 ("Martin Lorentzon" "Martin Lorentzson")
97 ("Matt Swift" "Matthew Swift") 99 ("Matt Swift" "Matthew Swift")
100 ("Michael R. Mauger" "Michael Mauger")
98 ("Michael D. Ernst" "Michael Ernst") 101 ("Michael D. Ernst" "Michael Ernst")
99 ("Michael I. Bushnell" "Michael I Bushnell" "Michael I. Bushnell, P/Bsg") 102 ("Michael I. Bushnell" "Michael I Bushnell" "Michael I. Bushnell, P/Bsg")
103 ("Mikio Nakajima" "Nakajima Mikio")
100 ("Paul Eggert" "eggert") 104 ("Paul Eggert" "eggert")
101 ("Paul Reilly" "(pmr@legacy.pajato.com)") 105 ("Paul Reilly" "(pmr@legacy.pajato.com)")
102 ("Pavel Jan,Bm(Bk" "Pavel Jan,Am(Bk Ml." "Pavel Jan,Am(Bk" "Pavel@Janik.Cz") 106 ("Pavel Jan,Bm(Bk" "Pavel Jan,Am(Bk Ml." "Pavel Jan,Am(Bk" "Pavel@Janik.Cz")
@@ -114,6 +118,7 @@ files.")
114 ("Stephen A. Wood" "(saw@cebaf.gov)") 118 ("Stephen A. Wood" "(saw@cebaf.gov)")
115 ("Steven L. Baur" "SL Baur" "Steven L Baur") 119 ("Steven L. Baur" "SL Baur" "Steven L Baur")
116 ("Takaaki Ota" "Tak Ota") 120 ("Takaaki Ota" "Tak Ota")
121 ("Takahashi Naoto" "Naoto Takahashi")
117 ("Teodor Zlatanov" "Ted Zlatanov") 122 ("Teodor Zlatanov" "Ted Zlatanov")
118 ("Torbj,Av(Brn Axelsson" "Torbjvrn Axelsson") 123 ("Torbj,Av(Brn Axelsson" "Torbjvrn Axelsson")
119 ("Torbj,Av(Brn Einarsson" "Torbj.*rn Einarsson") 124 ("Torbj,Av(Brn Einarsson" "Torbj.*rn Einarsson")
@@ -152,6 +157,13 @@ If REALNAME is nil, ignore that author.")
152Changes to files matching one of the regexps in this list are not 157Changes to files matching one of the regexps in this list are not
153listed.") 158listed.")
154 159
160(defconst authors-ignored-files
161 '("external-lisp"
162 "lock" "share-lib" "local-lisp"
163 "noleim-Makefile.in"
164 "NEWS" "PROBLEMS" "FAQ")
165 "List of files and directories to ignore.
166Changes to files in this list are not listed.")
155 167
156(defconst authors-fixed-entries 168(defconst authors-fixed-entries
157 '(("Richard M. Stallman" :wrote "[The original GNU emacs and numerous files]") 169 '(("Richard M. Stallman" :wrote "[The original GNU emacs and numerous files]")
@@ -184,7 +196,7 @@ listed.")
184 "mem-limits.h" "process.c" "template.h" "sysdep.c" "syssignal.h" "systty.h" "unexec.c" 196 "mem-limits.h" "process.c" "template.h" "sysdep.c" "syssignal.h" "systty.h" "unexec.c"
185 "ymakefile" "linux.h") 197 "ymakefile" "linux.h")
186 ("Kyle E. Jones" :wrote "mldrag.el") 198 ("Kyle E. Jones" :wrote "mldrag.el")
187 ("Kenry Kautz" :wrote "bib-mode.el") 199 ("Henry Kautz" :wrote "bib-mode.el")
188 ("Joseph M. Kelsey" :changed "fileio.c" "vms-pwd.h" "vmsfns.c" "dir.h" 200 ("Joseph M. Kelsey" :changed "fileio.c" "vms-pwd.h" "vmsfns.c" "dir.h"
189 "uaf.h") 201 "uaf.h")
190 ("Sam Kendall" :changed "etags.c" "etags.el") 202 ("Sam Kendall" :changed "etags.c" "etags.el")
@@ -260,7 +272,8 @@ listed.")
260 272
261(defconst authors-valid-file-names 273(defconst authors-valid-file-names
262 '("aclocal.m4" 274 '("aclocal.m4"
263 "makedist.bat") 275 "makedist.bat"
276 "make-delta")
264 "File names which are valid, but no longer exists (or cannot be 277 "File names which are valid, but no longer exists (or cannot be
265found) in the repository.") 278found) in the repository.")
266 279
@@ -274,6 +287,9 @@ found) in the repository.")
274 ("s/windowsnt.h" . "s/ms-w32.h") 287 ("s/windowsnt.h" . "s/ms-w32.h")
275 ("config.emacs" . "configure") 288 ("config.emacs" . "configure")
276 ("GETTING.GNU.SOFTWARE" . "FTP") 289 ("GETTING.GNU.SOFTWARE" . "FTP")
290 ("leim-Makefile" . "leim/Makefile")
291 ("leim-Makefile.in" . "leim/Makefile.in")
292 ("INSTALL-CVS" . "INSTALL.CVS")
277 ) 293 )
278 "Alist of files which have been renamed during their lifetime. 294 "Alist of files which have been renamed during their lifetime.
279Elements are (OLDNAME . NEWNAME).") 295Elements are (OLDNAME . NEWNAME).")
@@ -372,7 +388,8 @@ from `authors-obsolete-files-regexps'."
372ACTION is a keyword symbol describing what he did. Record file, 388ACTION is a keyword symbol describing what he did. Record file,
373author and what he did in hash table TABLE. See the description of 389author and what he did in hash table TABLE. See the description of
374`authors-scan-change-log' for the structure of the hash table." 390`authors-scan-change-log' for the structure of the hash table."
375 (unless (or (authors-obsolete-file-p file) 391 (unless (or (member file authors-ignored-files)
392 (authors-obsolete-file-p file)
376 (equal author "")) 393 (equal author ""))
377 (let* ((value (gethash author table)) 394 (let* ((value (gethash author table))
378 (entry (assoc file value)) 395 (entry (assoc file value))
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index d0a2fdc01da..f9442bc0084 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -31,18 +31,16 @@
31 31
32;; Note that this variable is used by non-lisp modes too. 32;; Note that this variable is used by non-lisp modes too.
33(defcustom defun-prompt-regexp nil 33(defcustom defun-prompt-regexp nil
34 "*If non-nil, a regexp to ignore before the character that starts a defun. 34 "*If non-nil, a regexp to ignore before a defun.
35This is only necessary if the opening paren or brace is not in column 0. 35This is only necessary if the opening paren or brace is not in column 0.
36See function `beginning-of-defun'. 36See function `beginning-of-defun'."
37
38Setting this variable automatically makes it local to the current buffer."
39 :type '(choice (const nil) 37 :type '(choice (const nil)
40 regexp) 38 regexp)
41 :group 'lisp) 39 :group 'lisp)
42(make-variable-buffer-local 'defun-prompt-regexp) 40(make-variable-buffer-local 'defun-prompt-regexp)
43 41
44(defcustom parens-require-spaces t 42(defcustom parens-require-spaces t
45 "Non-nil means `insert-parentheses' should insert whitespace as needed." 43 "If non-nil, `insert-parentheses' inserts whitespace as needed."
46 :type 'boolean 44 :type 'boolean
47 :group 'lisp) 45 :group 'lisp)
48 46
@@ -74,7 +72,7 @@ move forward across N balanced expressions."
74The place mark goes is the same place \\[forward-sexp] would 72The place mark goes is the same place \\[forward-sexp] would
75move to with the same argument. 73move to with the same argument.
76Interactively, if this command is repeated 74Interactively, if this command is repeated
77or (in Transient Mark mode) if the mark is active, 75or (in Transient Mark mode) if the mark is active,
78it marks the next ARG sexps after the ones already marked." 76it marks the next ARG sexps after the ones already marked."
79 (interactive "P\np") 77 (interactive "P\np")
80 (cond ((and allow-extend 78 (cond ((and allow-extend
@@ -233,13 +231,14 @@ recipe (see `end-of-defun'). Major modes can define this if the
233normal method is not appropriate.") 231normal method is not appropriate.")
234 232
235(defun buffer-end (arg) 233(defun buffer-end (arg)
236 "Return the \"far end\" position of the buffer, moving in direction ARG. 234 "Return the \"far end\" position of the buffer, in direction ARG.
237If ARG is positive, that's the end of the buffer. 235If ARG is positive, that's the end of the buffer.
238Otherwise, that's the beginning of the buffer." 236Otherwise, that's the beginning of the buffer."
239 (if (> arg 0) (point-max) (point-min))) 237 (if (> arg 0) (point-max) (point-min)))
240 238
241(defun end-of-defun (&optional arg) 239(defun end-of-defun (&optional arg)
242 "Move forward to next end of defun. With argument, do it that many times. 240 "Move forward to next end of defun.
241With argument, do it that many times.
243Negative argument -N means move back to Nth preceding end of defun. 242Negative argument -N means move back to Nth preceding end of defun.
244 243
245An end of a defun occurs right after the close-parenthesis that 244An end of a defun occurs right after the close-parenthesis that
@@ -299,7 +298,7 @@ is called as a function to find the defun's end."
299The defun marked is the one that contains point or follows point. 298The defun marked is the one that contains point or follows point.
300 299
301Interactively, if this command is repeated 300Interactively, if this command is repeated
302or (in Transient Mark mode) if the mark is active, 301or (in Transient Mark mode) if the mark is active,
303it marks the next defun after the ones already marked." 302it marks the next defun after the ones already marked."
304 (interactive "p") 303 (interactive "p")
305 (cond ((and allow-extend 304 (cond ((and allow-extend
@@ -424,7 +423,8 @@ character is inserted ARG times."
424 (prefix-numeric-value arg)))) 423 (prefix-numeric-value arg))))
425 424
426(defun insert-parentheses (&optional arg) 425(defun insert-parentheses (&optional arg)
427 "Enclose following ARG sexps in parentheses. Leave point after open-paren. 426 "Enclose following ARG sexps in parentheses.
427Leave point after open-paren.
428A negative ARG encloses the preceding ARG sexps instead. 428A negative ARG encloses the preceding ARG sexps instead.
429No argument is equivalent to zero: just insert `()' and leave point between. 429No argument is equivalent to zero: just insert `()' and leave point between.
430If `parens-require-spaces' is non-nil, this command also inserts a space 430If `parens-require-spaces' is non-nil, this command also inserts a space
diff --git a/lisp/emacs-lisp/map-ynp.el b/lisp/emacs-lisp/map-ynp.el
index 1f493e746fe..2eb53a86038 100644
--- a/lisp/emacs-lisp/map-ynp.el
+++ b/lisp/emacs-lisp/map-ynp.el
@@ -200,10 +200,10 @@ Returns the number of actions taken."
200 (concat 200 (concat
201 (format "Type SPC or `y' to %s the current %s; 201 (format "Type SPC or `y' to %s the current %s;
202DEL or `n' to skip the current %s; 202DEL or `n' to skip the current %s;
203RET or `q' to exit (skip all remaining %s); 203RET or `q' to give up on the %s (skip all remaining %s);
204C-g to quit (cancel the operation); 204C-g to quit (cancel the whole command);
205! to %s all remaining %s;\n" 205! to %s all remaining %s;\n"
206 action object object objects action 206 action object object action objects action
207 objects) 207 objects)
208 (mapconcat (function 208 (mapconcat (function
209 (lambda (elt) 209 (lambda (elt)
diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el
index d26a0ae5f38..1c8d12fef0e 100644
--- a/lisp/emacs-lisp/re-builder.el
+++ b/lisp/emacs-lisp/re-builder.el
@@ -1,6 +1,6 @@
1;;; re-builder.el --- building Regexps with visual feedback 1;;; re-builder.el --- building Regexps with visual feedback
2 2
3;; Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc. 3;; Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Detlev Zundel <dzu@gnu.org> 5;; Author: Detlev Zundel <dzu@gnu.org>
6;; Keywords: matching, lisp, tools 6;; Keywords: matching, lisp, tools
@@ -177,7 +177,9 @@ Set it to nil if you don't want limits here."
177 :group 're-builder) 177 :group 're-builder)
178 178
179(defface reb-match-3 179(defface reb-match-3
180 '((((class color) (background light)) 180 '((((min-colors 88) (class color) (background light))
181 :background "yellow1")
182 (((class color) (background light))
181 :background "yellow") 183 :background "yellow")
182 (((class color) (background dark)) 184 (((class color) (background dark))
183 :background "sienna4") 185 :background "sienna4")
diff --git a/lisp/files.el b/lisp/files.el
index 4551e6ddb66..f278725cd5d 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -2113,22 +2113,19 @@ Otherwise, return nil; point may be changed."
2113 (setq temp (cdr temp))) 2113 (setq temp (cdr temp)))
2114 (not temp)) 2114 (not temp))
2115 2115
2116 (search-forward "-*-" (save-excursion 2116 (search-forward "-*-" (line-end-position
2117 ;; If the file begins with "#!" 2117 ;; If the file begins with "#!"
2118 ;; (exec interpreter magic), look 2118 ;; (exec interpreter magic), look
2119 ;; for mode frobs in the first two 2119 ;; for mode frobs in the first two
2120 ;; lines. You cannot necessarily 2120 ;; lines. You cannot necessarily
2121 ;; put them in the first line of 2121 ;; put them in the first line of
2122 ;; such a file without screwing up 2122 ;; such a file without screwing up
2123 ;; the interpreter invocation. 2123 ;; the interpreter invocation.
2124 (end-of-line (and (looking-at "^#!") 2)) 2124 (and (looking-at "^#!") 2)) t)
2125 (point)) t)
2126 (progn 2125 (progn
2127 (skip-chars-forward " \t") 2126 (skip-chars-forward " \t")
2128 (setq beg (point)) 2127 (setq beg (point))
2129 (search-forward "-*-" 2128 (search-forward "-*-" (line-end-position) t))
2130 (save-excursion (end-of-line) (point))
2131 t))
2132 (progn 2129 (progn
2133 (forward-char -3) 2130 (forward-char -3)
2134 (skip-chars-backward " \t") 2131 (skip-chars-backward " \t")
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 38d3b94bccf..49e29c4896c 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -383,14 +383,14 @@ word \"bar\" following the word \"anchor\" then MATCH-ANCHORED may be required.
383 383
384MATCH-HIGHLIGHT should be of the form: 384MATCH-HIGHLIGHT should be of the form:
385 385
386 (MATCH FACENAME OVERRIDE LAXMATCH) 386 (MATCH FACENAME [[OVERRIDE [LAXMATCH]])
387 387
388MATCH is the subexpression of MATCHER to be highlighted. FACENAME is an 388MATCH is the subexpression of MATCHER to be highlighted. FACENAME is an
389expression whose value is the face name to use. Face default attributes 389expression whose value is the face name to use. Face default attributes
390can be modified via \\[customize]. Instead of a face, FACENAME can 390can be modified via \\[customize]. Instead of a face, FACENAME can
391evaluate to a property list of the form (face VAL1 PROP2 VAL2 PROP3 VAL3 ...) 391evaluate to a property list of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...)
392in which case all the listed text-properties will be set rather than 392in which case all the listed text-properties will be set rather than
393just `face'. In such a case, you will most likely want to put those 393just FACE. In such a case, you will most likely want to put those
394properties in `font-lock-extra-managed-props' or to override 394properties in `font-lock-extra-managed-props' or to override
395`font-lock-unfontify-region-function'. 395`font-lock-unfontify-region-function'.
396 396
@@ -426,7 +426,7 @@ the last, instance MATCH-ANCHORED's MATCHER is used. Therefore they can be
426used to initialise before, and cleanup after, MATCHER is used. Typically, 426used to initialise before, and cleanup after, MATCHER is used. Typically,
427PRE-MATCH-FORM is used to move to some position relative to the original 427PRE-MATCH-FORM is used to move to some position relative to the original
428MATCHER, before starting with MATCH-ANCHORED's MATCHER. POST-MATCH-FORM might 428MATCHER, before starting with MATCH-ANCHORED's MATCHER. POST-MATCH-FORM might
429be used to move, before resuming with MATCH-ANCHORED's parent's MATCHER. 429be used to move back, before resuming with MATCH-ANCHORED's parent's MATCHER.
430 430
431For example, an element of the form highlights (if not already highlighted): 431For example, an element of the form highlights (if not already highlighted):
432 432
@@ -436,7 +436,7 @@ For example, an element of the form highlights (if not already highlighted):
436 discrete occurrences of \"item\" (on the same line) in the value of `item-face'. 436 discrete occurrences of \"item\" (on the same line) in the value of `item-face'.
437 (Here PRE-MATCH-FORM and POST-MATCH-FORM are nil. Therefore \"item\" is 437 (Here PRE-MATCH-FORM and POST-MATCH-FORM are nil. Therefore \"item\" is
438 initially searched for starting from the end of the match of \"anchor\", and 438 initially searched for starting from the end of the match of \"anchor\", and
439 searching for subsequent instance of \"anchor\" resumes from where searching 439 searching for subsequent instances of \"anchor\" resumes from where searching
440 for \"item\" concluded.) 440 for \"item\" concluded.)
441 441
442The above-mentioned exception is as follows. The limit of the MATCHER search 442The above-mentioned exception is as follows. The limit of the MATCHER search
@@ -1657,7 +1657,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1657 '((((class grayscale) (background light)) (:foreground "LightGray" :weight bold)) 1657 '((((class grayscale) (background light)) (:foreground "LightGray" :weight bold))
1658 (((class grayscale) (background dark)) (:foreground "DimGray" :weight bold)) 1658 (((class grayscale) (background dark)) (:foreground "DimGray" :weight bold))
1659 (((class color) (min-colors 88) (background light)) (:foreground "Purple")) 1659 (((class color) (min-colors 88) (background light)) (:foreground "Purple"))
1660 (((class color) (min-colors 88) (background dark)) (:foreground "Cyan")) 1660 (((class color) (min-colors 88) (background dark)) (:foreground "Cyan1"))
1661 (((class color) (min-colors 16) (background light)) (:foreground "Purple")) 1661 (((class color) (min-colors 16) (background light)) (:foreground "Purple"))
1662 (((class color) (min-colors 16) (background dark)) (:foreground "Cyan")) 1662 (((class color) (min-colors 16) (background dark)) (:foreground "Cyan"))
1663 (((class color) (min-colors 8)) (:foreground "cyan" :weight bold)) 1663 (((class color) (min-colors 8)) (:foreground "cyan" :weight bold))
@@ -1678,7 +1678,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1678 :group 'font-lock-highlighting-faces) 1678 :group 'font-lock-highlighting-faces)
1679 1679
1680(defface font-lock-function-name-face 1680(defface font-lock-function-name-face
1681 '((((class color) (min-colors 88) (background light)) (:foreground "Blue")) 1681 '((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
1682 (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue")) 1682 (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
1683 (((class color) (min-colors 16) (background light)) (:foreground "Blue")) 1683 (((class color) (min-colors 16) (background light)) (:foreground "Blue"))
1684 (((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue")) 1684 (((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue"))
@@ -1728,7 +1728,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1728 :group 'font-lock-highlighting-faces) 1728 :group 'font-lock-highlighting-faces)
1729 1729
1730(defface font-lock-warning-face 1730(defface font-lock-warning-face
1731 '((((class color) (min-colors 88) (background light)) (:foreground "Red" :weight bold)) 1731 '((((class color) (min-colors 88) (background light)) (:foreground "Red1" :weight bold))
1732 (((class color) (min-colors 88) (background dark)) (:foreground "Pink" :weight bold)) 1732 (((class color) (min-colors 88) (background dark)) (:foreground "Pink" :weight bold))
1733 (((class color) (min-colors 16) (background light)) (:foreground "Red" :weight bold)) 1733 (((class color) (min-colors 16) (background light)) (:foreground "Red" :weight bold))
1734 (((class color) (min-colors 16) (background dark)) (:foreground "Pink" :weight bold)) 1734 (((class color) (min-colors 16) (background dark)) (:foreground "Pink" :weight bold))
diff --git a/lisp/generic-x.el b/lisp/generic-x.el
index d24ed378543..9191c39e553 100644
--- a/lisp/generic-x.el
+++ b/lisp/generic-x.el
@@ -1612,8 +1612,8 @@ generic-x to enable the specified modes."
1612(defface show-tabs-tab-face 1612(defface show-tabs-tab-face
1613 '((((class grayscale) (background light)) (:background "DimGray" :weight bold)) 1613 '((((class grayscale) (background light)) (:background "DimGray" :weight bold))
1614 (((class grayscale) (background dark)) (:background "LightGray" :weight bold)) 1614 (((class grayscale) (background dark)) (:background "LightGray" :weight bold))
1615 (((class color) (background light)) (:background "red")) 1615 (((class color) (min-colors 88)) (:background "red1"))
1616 (((class color) (background dark)) (:background "red")) 1616 (((class color)) (:background "red"))
1617 (t (:weight bold))) 1617 (t (:weight bold)))
1618 "Font Lock mode face used to highlight TABs." 1618 "Font Lock mode face used to highlight TABs."
1619 :group 'generic-x) 1619 :group 'generic-x)
@@ -1621,8 +1621,8 @@ generic-x to enable the specified modes."
1621(defface show-tabs-space-face 1621(defface show-tabs-space-face
1622 '((((class grayscale) (background light)) (:background "DimGray" :weight bold)) 1622 '((((class grayscale) (background light)) (:background "DimGray" :weight bold))
1623 (((class grayscale) (background dark)) (:background "LightGray" :weight bold)) 1623 (((class grayscale) (background dark)) (:background "LightGray" :weight bold))
1624 (((class color) (background light)) (:background "yellow")) 1624 (((class color) (min-colors 88)) (:background "yellow1"))
1625 (((class color) (background dark)) (:background "yellow")) 1625 (((class color)) (:background "yellow"))
1626 (t (:weight bold))) 1626 (t (:weight bold)))
1627 "Font Lock mode face used to highlight spaces." 1627 "Font Lock mode face used to highlight spaces."
1628 :group 'generic-x) 1628 :group 'generic-x)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 14c47ab1f30..052a7fdf5fc 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,136 @@
12005-04-10 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * mm-util.el (mm-string-to-multibyte): New function.
4 (mm-detect-coding-region): Typo.
5
62005-04-06 Katsumi Yamaoka <yamaoka@jpl.org>
7
8 * mm-util.el (mm-coding-system-p): Don't return binary for the nil
9 argument in XEmacs.
10
11 * nnrss.el (nnrss-compatible-encoding-alist): New variable.
12 (nnrss-request-group): Decode group name first.
13 (nnrss-request-article): Make a text/plain article if mml-to-mime
14 failed.
15 (nnrss-get-encoding): Return a compatible encoding according to
16 nnrss-compatible-encoding-alist.
17 (nnrss-opml-export): Use dolist.
18 (nnrss-find-el): Use consp instead of listp.
19 (nnrss-order-hrefs): Use dolist.
20
212005-04-06 Arne J,Ax(Brgensen <arne@arnested.dk>
22
23 * nnrss.el (nnrss-verbose): Remove.
24 (nnrss-request-group): Use `nnheader-message' instead.
25
262005-04-06 Mark Plaksin <happy@usg.edu> (tiny change)
27
28 * nnrss.el (nnrss-verbose): New variable.
29 (nnrss-request-group): Make it say nnrss is requesting a group.
30
312005-04-06 Katsumi Yamaoka <yamaoka@jpl.org>
32
33 * gnus-agent.el (gnus-agent-group-path): Decode group name.
34 (gnus-agent-group-pathname): Ditto.
35
36 * gnus-cache.el (gnus-cache-file-name): Decode group name.
37
38 * gnus-group.el (gnus-group-line-format-alist): Use decoded group
39 name for only %g and %c.
40 (gnus-group-insert-group-line): Bind gnus-tmp-decoded-group
41 instead of gnus-tmp-group to decoded group name.
42 (gnus-group-make-group): Decode group name.
43 (gnus-group-delete-group): Ditto.
44 (gnus-group-make-rss-group): Exclude `/'s from group names;
45 register the group data after opening the nnrss group; unify
46 non-ASCII group names; encode group name.
47 (gnus-group-catchup-current): Decode group name.
48 (gnus-group-expire-articles-1): Ditto.
49 (gnus-group-set-current-level): Ditto.
50 (gnus-group-kill-group): Ditto.
51
52 * gnus-spec.el (gnus-update-format-specifications): Flush the
53 group format spec cache if it doesn't support decoded group names.
54
55 * mm-url.el (mm-url-predefined-programs): Add --silent arg to curl.
56
57 * nnrss.el: Require rfc2047 and mml.
58 (nnrss-file-coding-system): New variable.
59 (nnrss-format-string): Redefine it as an inline function.
60 (nnrss-decode-group-name): New function.
61 (nnrss-string-as-multibyte): Remove.
62 (nnrss-retrieve-headers): Decode group name; don't use
63 nnrss-format-string.
64 (nnrss-request-group): Decode group name.
65 (nnrss-request-article): Decode group name; allow a Message-ID as
66 well as an article number; don't use nnrss-format-string; encode a
67 Message-ID string which may contain non-ASCII characters; use
68 mml-to-mime to compose a MIME article; use search-forward instead
69 of re-search-forward.
70 (nnrss-request-expire-articles): Decode group name.
71 (nnrss-request-delete-group): Delete entries in nnrss-group-alist
72 as well; decode group name.
73 (nnrss-get-encoding): Fix regexp.
74 (nnrss-fetch): Clarify error message.
75 (nnrss-read-server-data): Use insert-file-contents instead of load;
76 bind file-name-coding-system; use multibyte buffer.
77 (nnrss-save-server-data): Insert newline; bind
78 coding-system-for-write to the value of nnrss-file-coding-system;
79 bind file-name-coding-system; add coding cookie.
80 (nnrss-read-group-data): Use insert-file-contents instead of load;
81 bind file-name-coding-system; use multibyte buffer.
82 (nnrss-save-group-data): Bind coding-system-for-write to the
83 value of nnrss-file-coding-system; bind file-name-coding-system.
84 (nnrss-decode-entities-string): Rename from n-d-e-unibyte-string;
85 make it work with non-ASCII text.
86 (nnrss-opml-export): Use mm-set-buffer-file-coding-system instead
87 of set-buffer-file-coding-system.
88 (nnrss-find-el): Check carefully whether there's a list of string
89 which old xml.el may return rather than a string; make it work
90 with old xml.el as well.
91
922005-04-06 Tsuyoshi AKIHO <akiho@kawachi.zaq.ne.jp>
93
94 * gnus-sum.el (gnus-summary-walk-group-buffer): Decode group name.
95
96 * nnrss.el (nnrss-get-encoding): New function.
97 (nnrss-fetch): Use unibyte buffer initially; bind
98 coding-system-for-read while performing mm-url-insert; remove ^Ms;
99 decode contents according to the encoding attribute.
100 (nnrss-save-group-data): Add coding cookie.
101 (nnrss-mime-encode-string): New function.
102 (nnrss-check-group): Use it to encode subject and author.
103
1042005-04-06 Maciek Pasternacki <maciekp@japhy.fnord.org> (tiny change)
105
106 * nnrss.el (nnrss-fetch): Signal an error if w3-parse-buffer also
107 failed.
108
1092005-04-06 Jesper Harder <harder@ifa.au.dk>
110
111 * mm-util.el (mm-subst-char-in-string): Support inplace.
112
113 * nnrss.el: Pedantic docstring and whitespace fixes (courtesy of
114 checkdoc.el).
115 (nnrss-request-article): Cleanup.
116 (nnrss-request-delete-group): Use nnrss-make-filename.
117 (nnrss-read-server-data): Use nnrss-make-filename; use load.
118 (nnrss-save-server-data): Use nnrss-make-filename; use gnus-prin1.
119 (nnrss-read-group-data): Fix off-by-one error. From Joakim Verona
120 <joakim@verona.se>; hash on description if link is missing; use
121 nnrss-make-filename; use load.
122 (nnrss-save-group-data): Use nnrss-make-filename; use gnus-prin1.
123 (nnrss-make-filename): New function.
124 (nnrss-close): New function.
125 (nnrss-check-group): Hash on description if link is missing.
126 (nnrss-get-namespace-prefix): Use string= to compare strings!
127 Reported by David D. Smith <davidsmith@acm.org>.
128 (nnrss-opml-export): Turn on sgml-mode.
129
1302005-04-06 Mark A. Hershberger <mah@everybody.org>
131
132 * nnrss.el (nnrss-opml-import, nnrss-opml-export): New functions.
133
12005-04-04 Reiner Steib <Reiner.Steib@gmx.de> 1342005-04-04 Reiner Steib <Reiner.Steib@gmx.de>
2 135
3 * message.el (message-make-date): Add defvars in order to silence 136 * message.el (message-make-date): Add defvars in order to silence
@@ -503,7 +636,7 @@
503 636
5042004-11-04 Katsumi Yamaoka <yamaoka@jpl.org> 6372004-11-04 Katsumi Yamaoka <yamaoka@jpl.org>
505 638
506 * gnus-art. (gnus-article-edit-article): Don't associate the 639 * gnus-art.el (gnus-article-edit-article): Don't associate the
507 article buffer with a draft file. This is a temporary measure 640 article buffer with a draft file. This is a temporary measure
508 against the 2004-08-22 change to gnus-article-edit-mode. 641 against the 2004-08-22 change to gnus-article-edit-mode.
509 642
diff --git a/lisp/gnus/ChangeLog.2 b/lisp/gnus/ChangeLog.2
index 2a774e2245a..5d7a608054e 100644
--- a/lisp/gnus/ChangeLog.2
+++ b/lisp/gnus/ChangeLog.2
@@ -12604,7 +12604,7 @@
12604 12604
12605 * nnfolder.el (nnfolder-read-folder): Use group instead of 12605 * nnfolder.el (nnfolder-read-folder): Use group instead of
12606 nnfolder-current-group. 12606 nnfolder-current-group.
12607 Suggested by Lorentey Karoly <lorentey@elte.hu>. 12607 Suggested by K,Ba(Broly L,Bu(Brentey <lorentey@elte.hu>.
12608 12608
126092001-11-17 Simon Josefsson <jas@extundo.com> 126092001-11-17 Simon Josefsson <jas@extundo.com>
12610 12610
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 9a02f5b38aa..4236c7958fb 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -1,5 +1,5 @@
1;;; gnus-agent.el --- unplugged support for Gnus 1;;; gnus-agent.el --- unplugged support for Gnus
2;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 2;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
3;; Free Software Foundation, Inc. 3;; Free Software Foundation, Inc.
4 4
5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -1371,7 +1371,7 @@ downloaded into the agent."
1371 (nnheader-translate-file-chars 1371 (nnheader-translate-file-chars
1372 (nnheader-replace-duplicate-chars-in-string 1372 (nnheader-replace-duplicate-chars-in-string
1373 (nnheader-replace-chars-in-string 1373 (nnheader-replace-chars-in-string
1374 (gnus-group-real-name group) 1374 (gnus-group-real-name (gnus-group-decoded-name group))
1375 ?/ ?_) 1375 ?/ ?_)
1376 ?. ?_))) 1376 ?. ?_)))
1377 (if (or nnmail-use-long-file-names 1377 (if (or nnmail-use-long-file-names
@@ -1387,8 +1387,10 @@ downloaded into the agent."
1387 ;; unplugged. The agent must, therefore, use the same directory 1387 ;; unplugged. The agent must, therefore, use the same directory
1388 ;; while plugged. 1388 ;; while plugged.
1389 (let ((gnus-command-method (or gnus-command-method 1389 (let ((gnus-command-method (or gnus-command-method
1390 (gnus-find-method-for-group group)))) 1390 (gnus-find-method-for-group group))))
1391 (nnmail-group-pathname (gnus-group-real-name group) (gnus-agent-directory)))) 1391 (nnmail-group-pathname (gnus-group-real-name
1392 (gnus-group-decoded-name group))
1393 (gnus-agent-directory))))
1392 1394
1393(defun gnus-agent-get-function (method) 1395(defun gnus-agent-get-function (method)
1394 (if (gnus-online method) 1396 (if (gnus-online method)
diff --git a/lisp/gnus/gnus-cache.el b/lisp/gnus/gnus-cache.el
index 8f2b491f5a4..657ade98167 100644
--- a/lisp/gnus/gnus-cache.el
+++ b/lisp/gnus/gnus-cache.el
@@ -1,6 +1,6 @@
1;;; gnus-cache.el --- cache interface for Gnus 1;;; gnus-cache.el --- cache interface for Gnus
2;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 2;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
3;; Free Software Foundation, Inc. 3;; 2004, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
6;; Keywords: news 6;; Keywords: news
@@ -421,6 +421,7 @@ Returns the list of articles removed."
421 (and (not unread) (not ticked) (not dormant) (memq 'read class)))) 421 (and (not unread) (not ticked) (not dormant) (memq 'read class))))
422 422
423(defun gnus-cache-file-name (group article) 423(defun gnus-cache-file-name (group article)
424 (setq group (gnus-group-decoded-name group))
424 (expand-file-name 425 (expand-file-name
425 (if (stringp article) article (int-to-string article)) 426 (if (stringp article) article (int-to-string article))
426 (file-name-as-directory 427 (file-name-as-directory
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 6d38626998c..30b7fe68dd1 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -482,9 +482,15 @@ simple manner.")
482 (?T (gnus-range-length (cdr (assq 'tick gnus-tmp-marked))) ?d) 482 (?T (gnus-range-length (cdr (assq 'tick gnus-tmp-marked))) ?d)
483 (?i (+ (gnus-range-length (cdr (assq 'dormant gnus-tmp-marked))) 483 (?i (+ (gnus-range-length (cdr (assq 'dormant gnus-tmp-marked)))
484 (gnus-range-length (cdr (assq 'tick gnus-tmp-marked)))) ?d) 484 (gnus-range-length (cdr (assq 'tick gnus-tmp-marked)))) ?d)
485 (?g gnus-tmp-group ?s) 485 (?g (if (boundp 'gnus-tmp-decoded-group)
486 gnus-tmp-decoded-group
487 gnus-tmp-group)
488 ?s)
486 (?G gnus-tmp-qualified-group ?s) 489 (?G gnus-tmp-qualified-group ?s)
487 (?c (gnus-short-group-name gnus-tmp-group) ?s) 490 (?c (gnus-short-group-name (if (boundp 'gnus-tmp-decoded-group)
491 gnus-tmp-decoded-group
492 gnus-tmp-group))
493 ?s)
488 (?C gnus-tmp-comment ?s) 494 (?C gnus-tmp-comment ?s)
489 (?D gnus-tmp-newsgroup-description ?s) 495 (?D gnus-tmp-newsgroup-description ?s)
490 (?o gnus-tmp-moderated ?c) 496 (?o gnus-tmp-moderated ?c)
@@ -1441,8 +1447,8 @@ if it is a string, only list groups matching REGEXP."
1441 (point) 1447 (point)
1442 (prog1 (1+ (point)) 1448 (prog1 (1+ (point))
1443 ;; Insert the text. 1449 ;; Insert the text.
1444 (let ((gnus-tmp-group (gnus-group-name-decode 1450 (let ((gnus-tmp-decoded-group (gnus-group-name-decode
1445 gnus-tmp-group group-name-charset))) 1451 gnus-tmp-group group-name-charset)))
1446 (eval gnus-group-line-format-spec))) 1452 (eval gnus-group-line-format-spec)))
1447 `(gnus-group ,(gnus-intern-safe gnus-tmp-group gnus-active-hashtb) 1453 `(gnus-group ,(gnus-intern-safe gnus-tmp-group gnus-active-hashtb)
1448 gnus-unread ,(if (numberp number) 1454 gnus-unread ,(if (numberp number)
@@ -2244,7 +2250,7 @@ ADDRESS."
2244 (nname (if method (gnus-group-prefixed-name name meth) name)) 2250 (nname (if method (gnus-group-prefixed-name name meth) name))
2245 backend info) 2251 backend info)
2246 (when (gnus-gethash nname gnus-newsrc-hashtb) 2252 (when (gnus-gethash nname gnus-newsrc-hashtb)
2247 (error "Group %s already exists" nname)) 2253 (error "Group %s already exists" (gnus-group-decoded-name nname)))
2248 ;; Subscribe to the new group. 2254 ;; Subscribe to the new group.
2249 (gnus-group-change-level 2255 (gnus-group-change-level
2250 (setq info (list t nname gnus-level-default-subscribed nil nil meth)) 2256 (setq info (list t nname gnus-level-default-subscribed nil nil meth))
@@ -2305,20 +2311,21 @@ be removed from the server, even when it's empty."
2305 (unless (gnus-check-backend-function 'request-delete-group group) 2311 (unless (gnus-check-backend-function 'request-delete-group group)
2306 (error "This back end does not support group deletion")) 2312 (error "This back end does not support group deletion"))
2307 (prog1 2313 (prog1
2308 (if (and (not no-prompt) 2314 (let ((group-decoded (gnus-group-decoded-name group)))
2309 (not (gnus-yes-or-no-p 2315 (if (and (not no-prompt)
2310 (format 2316 (not (gnus-yes-or-no-p
2311 "Do you really want to delete %s%s? " 2317 (format
2312 group (if force " and all its contents" ""))))) 2318 "Do you really want to delete %s%s? "
2313 () ; Whew! 2319 group-decoded (if force " and all its contents" "")))))
2314 (gnus-message 6 "Deleting group %s..." group) 2320 () ; Whew!
2315 (if (not (gnus-request-delete-group group force)) 2321 (gnus-message 6 "Deleting group %s..." group-decoded)
2316 (gnus-error 3 "Couldn't delete group %s" group) 2322 (if (not (gnus-request-delete-group group force))
2317 (gnus-message 6 "Deleting group %s...done" group) 2323 (gnus-error 3 "Couldn't delete group %s" group-decoded)
2318 (gnus-group-goto-group group) 2324 (gnus-message 6 "Deleting group %s...done" group-decoded)
2319 (gnus-group-kill-group 1 t) 2325 (gnus-group-goto-group group)
2320 (gnus-sethash group nil gnus-active-hashtb) 2326 (gnus-group-kill-group 1 t)
2321 t)) 2327 (gnus-sethash group nil gnus-active-hashtb)
2328 t)))
2322 (gnus-group-position-point))) 2329 (gnus-group-position-point)))
2323 2330
2324(defun gnus-group-rename-group (group new-name) 2331(defun gnus-group-rename-group (group new-name)
@@ -2588,16 +2595,26 @@ If there is, use Gnus to create an nnrss group"
2588 (setq url (read-from-minibuffer "URL to Search for RSS: "))) 2595 (setq url (read-from-minibuffer "URL to Search for RSS: ")))
2589 (let ((feedinfo (nnrss-discover-feed url))) 2596 (let ((feedinfo (nnrss-discover-feed url)))
2590 (if feedinfo 2597 (if feedinfo
2591 (let ((title (read-from-minibuffer "Title: " 2598 (let ((title (gnus-newsgroup-savable-name
2592 (cdr (assoc 'title 2599 (read-from-minibuffer "Title: "
2593 feedinfo)))) 2600 (gnus-newsgroup-savable-name
2601 (or (cdr (assoc 'title
2602 feedinfo))
2603 "")))))
2594 (desc (read-from-minibuffer "Description: " 2604 (desc (read-from-minibuffer "Description: "
2595 (cdr (assoc 'description 2605 (cdr (assoc 'description
2596 feedinfo)))) 2606 feedinfo))))
2597 (href (cdr (assoc 'href feedinfo)))) 2607 (href (cdr (assoc 'href feedinfo)))
2598 (push (list title href desc) 2608 (encodable (mm-coding-system-p 'utf-8)))
2599 nnrss-group-alist) 2609 (when encodable
2600 (gnus-group-make-group title '(nnrss "")) 2610 ;; Unify non-ASCII text.
2611 (setq title (mm-decode-coding-string
2612 (mm-encode-coding-string title 'utf-8) 'utf-8)))
2613 (gnus-group-make-group (if encodable
2614 (mm-encode-coding-string title 'utf-8)
2615 title)
2616 '(nnrss ""))
2617 (push (list title href desc) nnrss-group-alist)
2601 (nnrss-save-server-data nil)) 2618 (nnrss-save-server-data nil))
2602 (error "No feeds found for %s" url)))) 2619 (error "No feeds found for %s" url))))
2603 2620
@@ -3101,7 +3118,7 @@ up is returned."
3101 "Do you really want to mark all articles in %s as read? " 3118 "Do you really want to mark all articles in %s as read? "
3102 "Mark all unread articles in %s as read? ") 3119 "Mark all unread articles in %s as read? ")
3103 (if (= (length groups) 1) 3120 (if (= (length groups) 1)
3104 (car groups) 3121 (gnus-group-decoded-name (car groups))
3105 (format "these %d groups" (length groups))))))) 3122 (format "these %d groups" (length groups)))))))
3106 n 3123 n
3107 (while (setq group (pop groups)) 3124 (while (setq group (pop groups))
@@ -3179,7 +3196,8 @@ Uses the process/prefix convention."
3179 3196
3180(defun gnus-group-expire-articles-1 (group) 3197(defun gnus-group-expire-articles-1 (group)
3181 (when (gnus-check-backend-function 'request-expire-articles group) 3198 (when (gnus-check-backend-function 'request-expire-articles group)
3182 (gnus-message 6 "Expiring articles in %s..." group) 3199 (gnus-message 6 "Expiring articles in %s..."
3200 (gnus-group-decoded-name group))
3183 (let* ((info (gnus-get-info group)) 3201 (let* ((info (gnus-get-info group))
3184 (expirable (if (gnus-group-total-expirable-p group) 3202 (expirable (if (gnus-group-total-expirable-p group)
3185 (cons nil (gnus-list-of-read-articles group)) 3203 (cons nil (gnus-list-of-read-articles group))
@@ -3204,7 +3222,8 @@ Uses the process/prefix convention."
3204 (gnus-request-expire-articles 3222 (gnus-request-expire-articles
3205 (gnus-uncompress-sequence (cdr expirable)) group)))) 3223 (gnus-uncompress-sequence (cdr expirable)) group))))
3206 (gnus-close-group group)) 3224 (gnus-close-group group))
3207 (gnus-message 6 "Expiring articles in %s...done" group) 3225 (gnus-message 6 "Expiring articles in %s...done"
3226 (gnus-group-decoded-name group))
3208 ;; Return the list of un-expired articles. 3227 ;; Return the list of un-expired articles.
3209 (cdr expirable)))) 3228 (cdr expirable))))
3210 3229
@@ -3243,7 +3262,8 @@ Uses the process/prefix convention."
3243 (while (setq group (pop groups)) 3262 (while (setq group (pop groups))
3244 (gnus-group-remove-mark group) 3263 (gnus-group-remove-mark group)
3245 (gnus-message 6 "Changed level of %s from %d to %d" 3264 (gnus-message 6 "Changed level of %s from %d to %d"
3246 group (or (gnus-group-group-level) gnus-level-killed) 3265 (gnus-group-decoded-name group)
3266 (or (gnus-group-group-level) gnus-level-killed)
3247 level) 3267 level)
3248 (gnus-group-change-level 3268 (gnus-group-change-level
3249 group level (or (gnus-group-group-level) gnus-level-killed)) 3269 group level (or (gnus-group-group-level) gnus-level-killed))
@@ -3392,7 +3412,7 @@ of groups killed."
3392 gnus-list-of-killed-groups)) 3412 gnus-list-of-killed-groups))
3393 (gnus-group-change-level 3413 (gnus-group-change-level
3394 (if entry entry group) gnus-level-killed (if entry nil level)) 3414 (if entry entry group) gnus-level-killed (if entry nil level))
3395 (message "Killed group %s" group)) 3415 (message "Killed group %s" (gnus-group-decoded-name group)))
3396 ;; If there are lots and lots of groups to be killed, we use 3416 ;; If there are lots and lots of groups to be killed, we use
3397 ;; this thing instead. 3417 ;; this thing instead.
3398 (dolist (group (nreverse groups)) 3418 (dolist (group (nreverse groups))
diff --git a/lisp/gnus/gnus-spec.el b/lisp/gnus/gnus-spec.el
index ff924139672..ef1c43167f5 100644
--- a/lisp/gnus/gnus-spec.el
+++ b/lisp/gnus/gnus-spec.el
@@ -1,5 +1,5 @@
1;;; gnus-spec.el --- format spec functions for Gnus 1;;; gnus-spec.el --- format spec functions for Gnus
2;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 2;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
3;; Free Software Foundation, Inc. 3;; Free Software Foundation, Inc.
4 4
5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -196,6 +196,13 @@ Return a list of updated types."
196 (not (equal emacs-version 196 (not (equal emacs-version
197 (cdr (assq 'version gnus-format-specs))))) 197 (cdr (assq 'version gnus-format-specs)))))
198 (setq gnus-format-specs nil)) 198 (setq gnus-format-specs nil))
199 ;; Flush the group format spec cache if it doesn't support decoded
200 ;; group names.
201 (when (memq 'group types)
202 (let ((spec (assq 'group gnus-format-specs)))
203 (unless (string-match " gnus-tmp-decoded-group[ )]"
204 (gnus-prin1-to-string (nth 2 spec)))
205 (setq gnus-format-specs (delq spec gnus-format-specs)))))
199 206
200 ;; Go through all the formats and see whether they need updating. 207 ;; Go through all the formats and see whether they need updating.
201 (let (new-format entry type val updated) 208 (let (new-format entry type val updated)
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 8d6a5f951b5..17cb1ea2a6b 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -7254,11 +7254,12 @@ If BACKWARD, the previous article is selected instead of the next."
7254 (if (and group 7254 (if (and group
7255 (not (gnus-ephemeral-group-p gnus-newsgroup-name))) 7255 (not (gnus-ephemeral-group-p gnus-newsgroup-name)))
7256 (format " (Type %s for %s [%s])" 7256 (format " (Type %s for %s [%s])"
7257 (single-key-description cmd) group 7257 (single-key-description cmd)
7258 (gnus-group-decoded-name group)
7258 (car (gnus-gethash group gnus-newsrc-hashtb))) 7259 (car (gnus-gethash group gnus-newsrc-hashtb)))
7259 (format " (Type %s to exit %s)" 7260 (format " (Type %s to exit %s)"
7260 (single-key-description cmd) 7261 (single-key-description cmd)
7261 gnus-newsgroup-name)))) 7262 (gnus-group-decoded-name gnus-newsgroup-name)))))
7262 ;; Confirm auto selection. 7263 ;; Confirm auto selection.
7263 (setq key (car (setq keve (gnus-read-event-char prompt))) 7264 (setq key (car (setq keve (gnus-read-event-char prompt)))
7264 ended t) 7265 ended t)
diff --git a/lisp/gnus/mm-url.el b/lisp/gnus/mm-url.el
index a66c03908eb..ff7608e4a24 100644
--- a/lisp/gnus/mm-url.el
+++ b/lisp/gnus/mm-url.el
@@ -59,7 +59,7 @@
59 '((wget "wget" "--user-agent=mm-url" "-q" "-O" "-") 59 '((wget "wget" "--user-agent=mm-url" "-q" "-O" "-")
60 (w3m "w3m" "-dump_source") 60 (w3m "w3m" "-dump_source")
61 (lynx "lynx" "-source") 61 (lynx "lynx" "-source")
62 (curl "curl"))) 62 (curl "curl" "--silent")))
63 63
64(defcustom mm-url-program 64(defcustom mm-url-program
65 (cond 65 (cond
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index 3be6444f18f..0ee52e797d0 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -57,9 +57,11 @@
57 mm-mime-mule-charset-alist) 57 mm-mime-mule-charset-alist)
58 nil t)))) 58 nil t))))
59 (subst-char-in-string 59 (subst-char-in-string
60 . (lambda (from to string) ;; stolen (and renamed) from nnheader.el 60 . (lambda (from to string &optional inplace)
61 "Replace characters in STRING from FROM to TO." 61 ;; stolen (and renamed) from nnheader.el
62 (let ((string (substring string 0)) ;Copy string. 62 "Replace characters in STRING from FROM to TO.
63 Unless optional argument INPLACE is non-nil, return a new string."
64 (let ((string (if inplace string (copy-sequence string)))
63 (len (length string)) 65 (len (length string))
64 (idx 0)) 66 (idx 0))
65 ;; Replace all occurrences of FROM with TO. 67 ;; Replace all occurrences of FROM with TO.
@@ -70,7 +72,26 @@
70 string))) 72 string)))
71 (string-as-unibyte . identity) 73 (string-as-unibyte . identity)
72 (string-make-unibyte . identity) 74 (string-make-unibyte . identity)
75 ;; string-as-multibyte often doesn't really do what you think it does.
76 ;; Example:
77 ;; (aref (string-as-multibyte "\201") 0) -> 129 (aka ?\201)
78 ;; (aref (string-as-multibyte "\300") 0) -> 192 (aka ?\300)
79 ;; (aref (string-as-multibyte "\300\201") 0) -> 192 (aka ?\300)
80 ;; (aref (string-as-multibyte "\300\201") 1) -> 129 (aka ?\201)
81 ;; but
82 ;; (aref (string-as-multibyte "\201\300") 0) -> 2240
83 ;; (aref (string-as-multibyte "\201\300") 1) -> <error>
84 ;; Better use string-to-multibyte or encode-coding-string.
85 ;; If you really need string-as-multibyte somewhere it's usually
86 ;; because you're using the internal emacs-mule representation (maybe
87 ;; because you're using string-as-unibyte somewhere), which is
88 ;; generally a problem in itself.
89 ;; Here is an approximate equivalence table to help think about it:
90 ;; (string-as-multibyte s) ~= (decode-coding-string s 'emacs-mule)
91 ;; (string-to-multibyte s) ~= (decode-coding-string s 'binary)
92 ;; (string-make-multibyte s) ~= (decode-coding-string s locale-coding-system)
73 (string-as-multibyte . identity) 93 (string-as-multibyte . identity)
94 (string-to-multibyte . mm-string-as-multibyte)
74 (multibyte-string-p . ignore) 95 (multibyte-string-p . ignore)
75 ;; It is not a MIME function, but some MIME functions use it. 96 ;; It is not a MIME function, but some MIME functions use it.
76 (make-temp-file . (lambda (prefix &optional dir-flag) 97 (make-temp-file . (lambda (prefix &optional dir-flag)
@@ -153,7 +174,7 @@ In XEmacs, also return non-nil if CS is a coding system object.
153If CS is available, return CS itself in Emacs, and return a coding 174If CS is available, return CS itself in Emacs, and return a coding
154system object in XEmacs." 175system object in XEmacs."
155 (if (fboundp 'find-coding-system) 176 (if (fboundp 'find-coding-system)
156 (find-coding-system cs) 177 (and cs (find-coding-system cs))
157 (if (fboundp 'coding-system-p) 178 (if (fboundp 'coding-system-p)
158 (when (coding-system-p cs) 179 (when (coding-system-p cs)
159 cs) 180 cs)
@@ -936,7 +957,7 @@ If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'."
936 (defun mm-detect-coding-region (start end) 957 (defun mm-detect-coding-region (start end)
937 "Like `detect-coding-region' except returning the best one." 958 "Like `detect-coding-region' except returning the best one."
938 (let ((coding-systems 959 (let ((coding-systems
939 (detect-coding-region (point) (point-max)))) 960 (detect-coding-region start end)))
940 (or (car-safe coding-systems) 961 (or (car-safe coding-systems)
941 coding-systems))) 962 coding-systems)))
942 (defun mm-detect-coding-region (start end) 963 (defun mm-detect-coding-region (start end)
@@ -960,5 +981,5 @@ If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'."
960 981
961(provide 'mm-util) 982(provide 'mm-util)
962 983
963;;; arch-tag: 94dc5388-825d-4fd1-bfa5-2100aa351238 984;; arch-tag: 94dc5388-825d-4fd1-bfa5-2100aa351238
964;;; mm-util.el ends here 985;;; mm-util.el ends here
diff --git a/lisp/gnus/nnrss.el b/lisp/gnus/nnrss.el
index 6ff2b46722e..006e309c3ff 100644
--- a/lisp/gnus/nnrss.el
+++ b/lisp/gnus/nnrss.el
@@ -1,5 +1,5 @@
1;;; nnrss.el --- interfacing with RSS 1;;; nnrss.el --- interfacing with RSS
2;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. 2;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
3 3
4;; Author: Shenghuo Zhu <zsh@cs.rochester.edu> 4;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
5;; Keywords: RSS 5;; Keywords: RSS
@@ -36,9 +36,11 @@
36(require 'time-date) 36(require 'time-date)
37(require 'rfc2231) 37(require 'rfc2231)
38(require 'mm-url) 38(require 'mm-url)
39(require 'rfc2047)
40(require 'mml)
39(eval-when-compile 41(eval-when-compile
40 (ignore-errors 42 (ignore-errors
41 (require 'xml))) 43 (require 'xml)))
42(eval '(require 'xml)) 44(eval '(require 'xml))
43 45
44(nnoo-declare nnrss) 46(nnoo-declare nnrss)
@@ -75,20 +77,32 @@ To use the description in headers, put this name into `nnmail-extra-headers'.")
75(defvar nnrss-content-function nil 77(defvar nnrss-content-function nil
76 "A function which is called in `nnrss-request-article'. 78 "A function which is called in `nnrss-request-article'.
77The arguments are (ENTRY GROUP ARTICLE). 79The arguments are (ENTRY GROUP ARTICLE).
78ENTRY is the record of the current headline. GROUP is the group name. 80ENTRY is the record of the current headline. GROUP is the group name.
79ARTICLE is the article number of the current headline.") 81ARTICLE is the article number of the current headline.")
80 82
83(defvar nnrss-file-coding-system mm-universal-coding-system
84 "Coding system used when reading and writing files.")
85
86(defvar nnrss-compatible-encoding-alist '((iso-8859-1 . windows-1252))
87 "Alist of encodings and those supersets.
88The cdr of each element is used to decode data if it is available when
89the car is what the data specify as the encoding. Or, the car is used
90for decoding when the cdr that the data specify is not available.")
91
81(nnoo-define-basics nnrss) 92(nnoo-define-basics nnrss)
82 93
83;;; Interface functions 94;;; Interface functions
84 95
85(eval-when-compile 96(defsubst nnrss-format-string (string)
86 (defmacro nnrss-string-as-multibyte (string) 97 (gnus-replace-in-string string " *\n *" " "))
87 (if (featurep 'xemacs) 98
88 string 99(defun nnrss-decode-group-name (group)
89 `(string-as-multibyte ,string)))) 100 (if (and group (mm-coding-system-p 'utf-8))
101 (setq group (mm-decode-coding-string group 'utf-8))
102 group))
90 103
91(deffoo nnrss-retrieve-headers (articles &optional group server fetch-old) 104(deffoo nnrss-retrieve-headers (articles &optional group server fetch-old)
105 (setq group (nnrss-decode-group-name group))
92 (nnrss-possibly-change-group group server) 106 (nnrss-possibly-change-group group server)
93 (let (e) 107 (let (e)
94 (save-excursion 108 (save-excursion
@@ -97,21 +111,26 @@ ARTICLE is the article number of the current headline.")
97 (dolist (article articles) 111 (dolist (article articles)
98 (if (setq e (assq article nnrss-group-data)) 112 (if (setq e (assq article nnrss-group-data))
99 (insert (number-to-string (car e)) "\t" ;; number 113 (insert (number-to-string (car e)) "\t" ;; number
100 (if (nth 3 e) 114 ;; subject
101 (nnrss-format-string (nth 3 e)) "") 115 (or (nth 3 e) "")
102 "\t" ;; subject 116 "\t"
103 (if (nth 4 e) 117 ;; from
104 (nnrss-format-string (nth 4 e)) 118 (or (nth 4 e) "(nobody)")
105 "(nobody)") 119 "\t"
106 "\t" ;;from 120 ;; date
107 (or (nth 5 e) "") 121 (or (nth 5 e) "")
108 "\t" ;; date 122 "\t"
123 ;; id
109 (format "<%d@%s.nnrss>" (car e) group) 124 (format "<%d@%s.nnrss>" (car e) group)
110 "\t" ;; id 125 "\t"
111 "\t" ;; refs 126 ;; refs
112 "-1" "\t" ;; chars 127 "\t"
113 "-1" "\t" ;; lines 128 ;; chars
114 "" "\t" ;; Xref 129 "-1" "\t"
130 ;; lines
131 "-1" "\t"
132 ;; Xref
133 "" "\t"
115 (if (and (nth 6 e) 134 (if (and (nth 6 e)
116 (memq nnrss-description-field 135 (memq nnrss-description-field
117 nnmail-extra-headers)) 136 nnmail-extra-headers))
@@ -132,69 +151,102 @@ ARTICLE is the article number of the current headline.")
132 'nov) 151 'nov)
133 152
134(deffoo nnrss-request-group (group &optional server dont-check) 153(deffoo nnrss-request-group (group &optional server dont-check)
154 (setq group (nnrss-decode-group-name group))
155 (nnheader-message 6 "nnrss: Requesting %s..." group)
135 (nnrss-possibly-change-group group server) 156 (nnrss-possibly-change-group group server)
136 (if dont-check 157 (prog1
137 t 158 (if dont-check
138 (nnrss-check-group group server) 159 t
139 (nnheader-report 'nnrss "Opened group %s" group) 160 (nnrss-check-group group server)
140 (nnheader-insert 161 (nnheader-report 'nnrss "Opened group %s" group)
141 "211 %d %d %d %s\n" nnrss-group-max nnrss-group-min nnrss-group-max 162 (nnheader-insert
142 (prin1-to-string group) 163 "211 %d %d %d %s\n" nnrss-group-max nnrss-group-min nnrss-group-max
143 t))) 164 (prin1-to-string group)
165 t))
166 (nnheader-message 6 "nnrss: Requesting %s...done" group)))
144 167
145(deffoo nnrss-close-group (group &optional server) 168(deffoo nnrss-close-group (group &optional server)
146 t) 169 t)
147 170
148(deffoo nnrss-request-article (article &optional group server buffer) 171(deffoo nnrss-request-article (article &optional group server buffer)
172 (setq group (nnrss-decode-group-name group))
173 (when (stringp article)
174 (setq article (if (string-match "\\`<\\([0-9]+\\)@" article)
175 (string-to-number (match-string 1 article))
176 0)))
149 (nnrss-possibly-change-group group server) 177 (nnrss-possibly-change-group group server)
150 (let ((e (assq article nnrss-group-data)) 178 (let ((e (assq article nnrss-group-data))
151 (boundary "=-=-=-=-=-=-=-=-=-")
152 (nntp-server-buffer (or buffer nntp-server-buffer)) 179 (nntp-server-buffer (or buffer nntp-server-buffer))
153 post err) 180 post err)
154 (when e 181 (when e
155 (catch 'error 182 (with-current-buffer nntp-server-buffer
156 (with-current-buffer nntp-server-buffer 183 (erase-buffer)
157 (erase-buffer) 184 (if group
158 (goto-char (point-min)) 185 (insert "Newsgroups: " group "\n"))
159 (insert "Mime-Version: 1.0\nContent-Type: multipart/alternative; boundary=\"" boundary "\"\n") 186 (if (nth 3 e)
160 (if group 187 (insert "Subject: " (nth 3 e) "\n"))
161 (insert "Newsgroups: " group "\n")) 188 (if (nth 4 e)
162 (if (nth 3 e) 189 (insert "From: " (nth 4 e) "\n"))
163 (insert "Subject: " (nnrss-format-string (nth 3 e)) "\n")) 190 (if (nth 5 e)
164 (if (nth 4 e) 191 (insert "Date: " (nnrss-format-string (nth 5 e)) "\n"))
165 (insert "From: " (nnrss-format-string (nth 4 e)) "\n")) 192 (let ((header (buffer-string))
166 (if (nth 5 e) 193 (text (if (nth 6 e)
167 (insert "Date: " (nnrss-format-string (nth 5 e)) "\n")) 194 (mapconcat 'identity
168 (insert "Message-ID: " (format "<%d@%s.nnrss>" (car e) group) "\n") 195 (delete "" (split-string (nth 6 e) "\n+"))
169 (insert "\n") 196 " ")))
170 (let ((text (if (nth 6 e) 197 (link (nth 2 e))
171 (nnrss-string-as-multibyte (nth 6 e)))) 198 ;; Enable encoding of Newsgroups header in XEmacs.
172 (link (if (nth 2 e) 199 (default-enable-multibyte-characters t)
173 (nth 2 e)))) 200 (rfc2047-header-encoding-alist
174 (insert "\n\n--" boundary "\nContent-Type: text/plain\n\n") 201 (if (mm-coding-system-p 'utf-8)
175 (let ((point (point))) 202 (cons '("Newsgroups" . utf-8)
176 (if text 203 rfc2047-header-encoding-alist)
177 (progn (insert text) 204 rfc2047-header-encoding-alist))
178 (goto-char point) 205 rfc2047-encode-encoded-words body)
179 (while (re-search-forward "\n" nil t) 206 (when (or text link)
180 (replace-match " ")) 207 (insert "\n")
181 (goto-char (point-max)) 208 (insert "<#multipart type=alternative>\n"
182 (insert "\n\n"))) 209 "<#part type=\"text/plain\">\n")
183 (if link 210 (setq body (point))
184 (insert link))) 211 (if text
185 (insert "\n\n--" boundary "\nContent-Type: text/html\n\n") 212 (progn
186 (let ((point (point))) 213 (insert text "\n")
187 (if text 214 (when link
188 (progn (insert "<html><head></head><body>\n" text "\n</body></html>") 215 (insert "\n" link "\n")))
189 (goto-char point) 216 (when link
190 (while (re-search-forward "\n" nil t) 217 (insert link "\n")))
191 (replace-match " ")) 218 (setq body (buffer-substring body (point)))
192 (goto-char (point-max)) 219 (insert "<#/part>\n"
193 (insert "\n\n"))) 220 "<#part type=\"text/html\">\n"
194 (if link 221 "<html><head></head><body>\n")
195 (insert "<p><a href=\"" link "\">link</a></p>\n")))) 222 (when text
196 (if nnrss-content-function 223 (insert text "\n"))
197 (funcall nnrss-content-function e group article))))) 224 (when link
225 (insert "<p><a href=\"" link "\">link</a></p>\n"))
226 (insert "</body></html>\n"
227 "<#/part>\n"
228 "<#/multipart>\n"))
229 (condition-case nil
230 (mml-to-mime)
231 (error
232 (erase-buffer)
233 (insert header
234 "Content-Type: text/plain; charset=gnus-decoded\n"
235 "Content-Transfer-Encoding: 8bit\n\n"
236 body)
237 (nnheader-message
238 3 "Warning - there might be invalid characters"))))
239 (goto-char (point-min))
240 (search-forward "\n\n")
241 (forward-line -1)
242 (insert (format "Message-ID: <%d@%s.nnrss>\n"
243 (car e)
244 (let ((rfc2047-encoding-type 'mime)
245 rfc2047-encode-max-chars)
246 (rfc2047-encode-string
247 (gnus-replace-in-string group "[\t\n ]+" "_")))))
248 (when nnrss-content-function
249 (funcall nnrss-content-function e group article))))
198 (cond 250 (cond
199 (err 251 (err
200 (nnheader-report 'nnrss err)) 252 (nnheader-report 'nnrss err))
@@ -217,6 +269,7 @@ ARTICLE is the article number of the current headline.")
217 269
218(deffoo nnrss-request-expire-articles 270(deffoo nnrss-request-expire-articles
219 (articles group &optional server force) 271 (articles group &optional server force)
272 (setq group (nnrss-decode-group-name group))
220 (nnrss-possibly-change-group group server) 273 (nnrss-possibly-change-group group server)
221 (let (e days not-expirable changed) 274 (let (e days not-expirable changed)
222 (dolist (art articles) 275 (dolist (art articles)
@@ -234,18 +287,18 @@ ARTICLE is the article number of the current headline.")
234 not-expirable)) 287 not-expirable))
235 288
236(deffoo nnrss-request-delete-group (group &optional force server) 289(deffoo nnrss-request-delete-group (group &optional force server)
290 (setq group (nnrss-decode-group-name group))
237 (nnrss-possibly-change-group group server) 291 (nnrss-possibly-change-group group server)
292 (let (elem)
293 ;; There may be two or more entries in `nnrss-group-alist' since
294 ;; this function didn't delete them formerly.
295 (while (setq elem (assoc group nnrss-group-alist))
296 (setq nnrss-group-alist (delq elem nnrss-group-alist))))
238 (setq nnrss-server-data 297 (setq nnrss-server-data
239 (delq (assoc group nnrss-server-data) nnrss-server-data)) 298 (delq (assoc group nnrss-server-data) nnrss-server-data))
240 (nnrss-save-server-data server) 299 (nnrss-save-server-data server)
241 (let ((file (expand-file-name 300 (ignore-errors
242 (nnrss-translate-file-chars 301 (delete-file (nnrss-make-filename group server)))
243 (concat group (and server
244 (not (equal server ""))
245 "-")
246 server ".el")) nnrss-directory)))
247 (ignore-errors
248 (delete-file file)))
249 t) 302 t)
250 303
251(deffoo nnrss-request-list-newsgroups (&optional server) 304(deffoo nnrss-request-list-newsgroups (&optional server)
@@ -262,34 +315,67 @@ ARTICLE is the article number of the current headline.")
262 315
263;;; Internal functions 316;;; Internal functions
264(eval-when-compile (defun xml-rpc-method-call (&rest args))) 317(eval-when-compile (defun xml-rpc-method-call (&rest args)))
318
319(defun nnrss-get-encoding ()
320 "Return an encoding attribute specified in the current xml contents.
321If `nnrss-compatible-encoding-alist' specifies the compatible encoding,
322it is used instead. If the xml contents doesn't specify the encoding,
323return `utf-8' which is the default encoding for xml if it is available,
324otherwise return nil."
325 (goto-char (point-min))
326 (if (re-search-forward
327 "<\\?[^>]*encoding=\\(\"\\([^\">]+\\)\"\\|'\\([^'>]+\\)'\\)"
328 nil t)
329 (let ((encoding (intern (downcase (or (match-string 2)
330 (match-string 3))))))
331 (or
332 (mm-coding-system-p (cdr (assq encoding
333 nnrss-compatible-encoding-alist)))
334 (mm-coding-system-p encoding)
335 (mm-coding-system-p (car (rassq encoding
336 nnrss-compatible-encoding-alist)))))
337 (mm-coding-system-p 'utf-8)))
338
265(defun nnrss-fetch (url &optional local) 339(defun nnrss-fetch (url &optional local)
266 "Fetch the url and put it in a the expected lisp structure." 340 "Fetch URL and put it in a the expected Lisp structure."
267 (with-temp-buffer 341 (mm-with-unibyte-buffer
268 ;some CVS versions of url.el need this to close the connection quickly 342 ;;some CVS versions of url.el need this to close the connection quickly
269 (let* (xmlform htmlform) 343 (let (cs xmlform htmlform)
270 ;; bit o' work necessary for w3 pre-cvs and post-cvs 344 ;; bit o' work necessary for w3 pre-cvs and post-cvs
271 (if local 345 (if local
272 (let ((coding-system-for-read 'binary)) 346 (let ((coding-system-for-read 'binary))
273 (insert-file-contents url)) 347 (insert-file-contents url))
274 (mm-url-insert url)) 348 ;; FIXME: shouldn't binding `coding-system-for-read' be moved
275 349 ;; to `mm-url-insert'?
276;; Because xml-parse-region can't deal with anything that isn't 350 (let ((coding-system-for-read 'binary))
277;; xml and w3-parse-buffer can't deal with some xml, we have to 351 (mm-url-insert url)))
278;; parse with xml-parse-region first and, if that fails, parse 352 (nnheader-remove-cr-followed-by-lf)
279;; with w3-parse-buffer. Yuck. Eventually, someone should find out 353 ;; Decode text according to the encoding attribute.
280;; why w3-parse-buffer fails to parse some well-formed xml and 354 (when (setq cs (nnrss-get-encoding))
281;; fix it. 355 (mm-decode-coding-region (point-min) (point-max) cs)
282 356 (mm-enable-multibyte))
283 (condition-case err 357 (goto-char (point-min))
284 (setq xmlform (xml-parse-region (point-min) (point-max))) 358
285 (error (if (fboundp 'w3-parse-buffer) 359 ;; Because xml-parse-region can't deal with anything that isn't
286 (setq htmlform (caddar (w3-parse-buffer 360 ;; xml and w3-parse-buffer can't deal with some xml, we have to
287 (current-buffer)))) 361 ;; parse with xml-parse-region first and, if that fails, parse
288 (message "nnrss: Not valid XML and w3 parse not available (%s)" 362 ;; with w3-parse-buffer. Yuck. Eventually, someone should find out
289 url)))) 363 ;; why w3-parse-buffer fails to parse some well-formed xml and
290 (if htmlform 364 ;; fix it.
291 htmlform 365
292 xmlform)))) 366 (condition-case err1
367 (setq xmlform (xml-parse-region (point-min) (point-max)))
368 (error
369 (condition-case err2
370 (setq htmlform (caddar (w3-parse-buffer
371 (current-buffer))))
372 (error
373 (message "\
374nnrss: %s: Not valid XML %s and w3-parse doesn't work %s"
375 url err1 err2)))))
376 (if htmlform
377 htmlform
378 xmlform))))
293 379
294(defun nnrss-possibly-change-group (&optional group server) 380(defun nnrss-possibly-change-group (&optional group server)
295 (when (and server 381 (when (and server
@@ -302,9 +388,9 @@ ARTICLE is the article number of the current headline.")
302(defvar nnrss-extra-categories '(nnrss-snarf-moreover-categories)) 388(defvar nnrss-extra-categories '(nnrss-snarf-moreover-categories))
303 389
304(defun nnrss-generate-active () 390(defun nnrss-generate-active ()
305 (if (y-or-n-p "fetch extra categories? ") 391 (when (y-or-n-p "Fetch extra categories? ")
306 (dolist (func nnrss-extra-categories) 392 (dolist (func nnrss-extra-categories)
307 (funcall func))) 393 (funcall func)))
308 (save-excursion 394 (save-excursion
309 (set-buffer nntp-server-buffer) 395 (set-buffer nntp-server-buffer)
310 (erase-buffer) 396 (erase-buffer)
@@ -318,41 +404,26 @@ ARTICLE is the article number of the current headline.")
318 404
319(defun nnrss-read-server-data (server) 405(defun nnrss-read-server-data (server)
320 (setq nnrss-server-data nil) 406 (setq nnrss-server-data nil)
321 (let ((file (expand-file-name 407 (let ((file (nnrss-make-filename "nnrss" server)))
322 (nnrss-translate-file-chars
323 (concat "nnrss" (and server
324 (not (equal server ""))
325 "-")
326 server
327 ".el"))
328 nnrss-directory)))
329 (when (file-exists-p file) 408 (when (file-exists-p file)
330 (with-temp-buffer 409 ;; In Emacs 21.3 and earlier, `load' doesn't support non-ASCII
331 (let ((coding-system-for-read 'binary) 410 ;; file names. So, we use `insert-file-contents' instead.
332 emacs-lisp-mode-hook) 411 (mm-with-multibyte-buffer
412 (let ((coding-system-for-read nnrss-file-coding-system)
413 (file-name-coding-system nnmail-pathname-coding-system))
333 (insert-file-contents file) 414 (insert-file-contents file)
334 (emacs-lisp-mode) 415 (eval-region (point-min) (point-max)))))))
335 (goto-char (point-min))
336 (eval-buffer))))))
337 416
338(defun nnrss-save-server-data (server) 417(defun nnrss-save-server-data (server)
339 (gnus-make-directory nnrss-directory) 418 (gnus-make-directory nnrss-directory)
340 (let ((file (expand-file-name 419 (let ((coding-system-for-write nnrss-file-coding-system)
341 (nnrss-translate-file-chars 420 (file-name-coding-system nnmail-pathname-coding-system))
342 (concat "nnrss" (and server 421 (with-temp-file (nnrss-make-filename "nnrss" server)
343 (not (equal server "")) 422 (insert (format ";; -*- coding: %s; -*-\n"
344 "-") 423 nnrss-file-coding-system))
345 server ".el")) 424 (gnus-prin1 `(setq nnrss-group-alist ',nnrss-group-alist))
346 nnrss-directory))) 425 (insert "\n")
347 (let ((coding-system-for-write 'binary) 426 (gnus-prin1 `(setq nnrss-server-data ',nnrss-server-data)))))
348 print-level print-length)
349 (with-temp-file file
350 (insert "(setq nnrss-group-alist '"
351 (prin1-to-string nnrss-group-alist)
352 ")\n")
353 (insert "(setq nnrss-server-data '"
354 (prin1-to-string nnrss-server-data)
355 ")\n")))))
356 427
357(defun nnrss-read-group-data (group server) 428(defun nnrss-read-group-data (group server)
358 (setq nnrss-group-data nil) 429 (setq nnrss-group-data nil)
@@ -360,43 +431,50 @@ ARTICLE is the article number of the current headline.")
360 (let ((pair (assoc group nnrss-server-data))) 431 (let ((pair (assoc group nnrss-server-data)))
361 (setq nnrss-group-max (or (cadr pair) 0)) 432 (setq nnrss-group-max (or (cadr pair) 0))
362 (setq nnrss-group-min (+ nnrss-group-max 1))) 433 (setq nnrss-group-min (+ nnrss-group-max 1)))
363 (let ((file (expand-file-name 434 (let ((file (nnrss-make-filename group server)))
364 (nnrss-translate-file-chars
365 (concat group (and server
366 (not (equal server ""))
367 "-")
368 server ".el"))
369 nnrss-directory)))
370 (when (file-exists-p file) 435 (when (file-exists-p file)
371 (with-temp-buffer 436 ;; In Emacs 21.3 and earlier, `load' doesn't support non-ASCII
372 (let ((coding-system-for-read 'binary) 437 ;; file names. So, we use `insert-file-contents' instead.
373 emacs-lisp-mode-hook) 438 (mm-with-multibyte-buffer
439 (let ((coding-system-for-read nnrss-file-coding-system)
440 (file-name-coding-system nnmail-pathname-coding-system))
374 (insert-file-contents file) 441 (insert-file-contents file)
375 (emacs-lisp-mode) 442 (eval-region (point-min) (point-max))))
376 (goto-char (point-min))
377 (eval-buffer)))
378 (dolist (e nnrss-group-data) 443 (dolist (e nnrss-group-data)
379 (gnus-sethash (nth 2 e) e nnrss-group-hashtb) 444 (gnus-sethash (or (nth 2 e) (nth 6 e)) t nnrss-group-hashtb)
380 (if (and (car e) (> nnrss-group-min (car e))) 445 (when (and (car e) (> nnrss-group-min (car e)))
381 (setq nnrss-group-min (car e))) 446 (setq nnrss-group-min (car e)))
382 (if (and (car e) (< nnrss-group-max (car e))) 447 (when (and (car e) (< nnrss-group-max (car e)))
383 (setq nnrss-group-max (car e))))))) 448 (setq nnrss-group-max (car e)))))))
384 449
385(defun nnrss-save-group-data (group server) 450(defun nnrss-save-group-data (group server)
386 (gnus-make-directory nnrss-directory) 451 (gnus-make-directory nnrss-directory)
387 (let ((file (expand-file-name 452 (let ((coding-system-for-write nnrss-file-coding-system)
388 (nnrss-translate-file-chars 453 (file-name-coding-system nnmail-pathname-coding-system))
389 (concat group (and server 454 (with-temp-file (nnrss-make-filename group server)
390 (not (equal server "")) 455 (insert (format ";; -*- coding: %s; -*-\n"
391 "-") 456 nnrss-file-coding-system))
392 server ".el")) 457 (gnus-prin1 `(setq nnrss-group-data ',nnrss-group-data)))))
393 nnrss-directory))) 458
394 (let ((coding-system-for-write 'binary) 459(defun nnrss-make-filename (name server)
395 print-level print-length) 460 (expand-file-name
396 (with-temp-file file 461 (nnrss-translate-file-chars
397 (insert "(setq nnrss-group-data '" 462 (concat name
398 (prin1-to-string nnrss-group-data) 463 (and server
399 ")\n"))))) 464 (not (equal server ""))
465 "-")
466 server
467 ".el"))
468 nnrss-directory))
469
470(gnus-add-shutdown 'nnrss-close 'gnus)
471
472(defun nnrss-close ()
473 "Clear internal nnrss variables."
474 (setq nnrss-group-data nil
475 nnrss-server-data nil
476 nnrss-group-hashtb nil
477 nnrss-group-alist nil))
400 478
401;;; URL interface 479;;; URL interface
402 480
@@ -407,15 +485,36 @@ ARTICLE is the article number of the current headline.")
407 (mm-with-unibyte-current-buffer 485 (mm-with-unibyte-current-buffer
408 (mm-url-insert url))) 486 (mm-url-insert url)))
409 487
410(defun nnrss-decode-entities-unibyte-string (string) 488(defun nnrss-decode-entities-string (string)
411 (if string 489 (if string
412 (mm-with-unibyte-buffer 490 (mm-with-multibyte-buffer
413 (insert string) 491 (insert string)
414 (mm-url-decode-entities-nbsp) 492 (mm-url-decode-entities-nbsp)
415 (buffer-string)))) 493 (buffer-string))))
416 494
417(defalias 'nnrss-insert 'nnrss-insert-w3) 495(defalias 'nnrss-insert 'nnrss-insert-w3)
418 496
497(defun nnrss-mime-encode-string (string)
498 (mm-with-multibyte-buffer
499 (insert string)
500 (mm-url-decode-entities-nbsp)
501 (goto-char (point-min))
502 (while (re-search-forward "[\t\n ]+" nil t)
503 (replace-match " "))
504 (goto-char (point-min))
505 (skip-chars-forward " ")
506 (delete-region (point-min) (point))
507 (goto-char (point-max))
508 (skip-chars-forward " ")
509 (delete-region (point) (point-max))
510 (let ((rfc2047-encoding-type 'mime)
511 rfc2047-encode-max-chars)
512 (rfc2047-encode-region (point-min) (point-max)))
513 (goto-char (point-min))
514 (while (search-forward "\n" nil t)
515 (delete-backward-char 1))
516 (buffer-string)))
517
419;;; Snarf functions 518;;; Snarf functions
420 519
421(defun nnrss-check-group (group server) 520(defun nnrss-check-group (group server)
@@ -431,11 +530,11 @@ ARTICLE is the article number of the current headline.")
431 (second (assoc group nnrss-group-alist)))) 530 (second (assoc group nnrss-group-alist))))
432 (unless url 531 (unless url
433 (setq url 532 (setq url
434 (cdr 533 (cdr
435 (assoc 'href 534 (assoc 'href
436 (nnrss-discover-feed 535 (nnrss-discover-feed
437 (read-string 536 (read-string
438 (format "URL to search for %s: " group) "http://"))))) 537 (format "URL to search for %s: " group) "http://")))))
439 (let ((pair (assoc group nnrss-server-data))) 538 (let ((pair (assoc group nnrss-server-data)))
440 (if pair 539 (if pair
441 (setcdr (cdr pair) (list url)) 540 (setcdr (cdr pair) (list url))
@@ -451,12 +550,16 @@ ARTICLE is the article number of the current headline.")
451 content-ns (nnrss-get-namespace-prefix xml "http://purl.org/rss/1.0/modules/content/")) 550 content-ns (nnrss-get-namespace-prefix xml "http://purl.org/rss/1.0/modules/content/"))
452 (dolist (item (nreverse (nnrss-find-el (intern (concat rss-ns "item")) xml))) 551 (dolist (item (nreverse (nnrss-find-el (intern (concat rss-ns "item")) xml)))
453 (when (and (listp item) 552 (when (and (listp item)
454 (eq (intern (concat rss-ns "item")) (car item)) 553 (string= (concat rss-ns "item") (car item))
455 (setq url (nnrss-decode-entities-unibyte-string 554 (if (setq url (nnrss-decode-entities-string
456 (nnrss-node-text rss-ns 'link (cddr item)))) 555 (nnrss-node-text rss-ns 'link (cddr item))))
457 (not (gnus-gethash url nnrss-group-hashtb))) 556 (not (gnus-gethash url nnrss-group-hashtb))
557 (setq extra (or (nnrss-node-text content-ns 'encoded item)
558 (nnrss-node-text rss-ns 'description item)))
559 (not (gnus-gethash extra nnrss-group-hashtb))))
458 (setq subject (nnrss-node-text rss-ns 'title item)) 560 (setq subject (nnrss-node-text rss-ns 'title item))
459 (setq extra (or (nnrss-node-text content-ns 'encoded item) 561 (setq extra (or extra
562 (nnrss-node-text content-ns 'encoded item)
460 (nnrss-node-text rss-ns 'description item))) 563 (nnrss-node-text rss-ns 'description item)))
461 (setq author (or (nnrss-node-text rss-ns 'author item) 564 (setq author (or (nnrss-node-text rss-ns 'author item)
462 (nnrss-node-text dc-ns 'creator item) 565 (nnrss-node-text dc-ns 'creator item)
@@ -469,13 +572,14 @@ ARTICLE is the article number of the current headline.")
469 (incf nnrss-group-max) 572 (incf nnrss-group-max)
470 (current-time) 573 (current-time)
471 url 574 url
472 (and subject (nnrss-decode-entities-unibyte-string subject)) 575 (and subject (nnrss-mime-encode-string subject))
473 (and author (nnrss-decode-entities-unibyte-string author)) 576 (and author (nnrss-mime-encode-string author))
474 date 577 date
475 (and extra (nnrss-decode-entities-unibyte-string extra))) 578 (and extra (nnrss-decode-entities-string extra)))
476 nnrss-group-data) 579 nnrss-group-data)
477 (gnus-sethash url (car nnrss-group-data) nnrss-group-hashtb) 580 (gnus-sethash (or url extra) t nnrss-group-hashtb)
478 (setq changed t))) 581 (setq changed t))
582 (setq extra nil))
479 (when changed 583 (when changed
480 (nnrss-save-group-data group server) 584 (nnrss-save-group-data group server)
481 (let ((pair (assoc group nnrss-server-data))) 585 (let ((pair (assoc group nnrss-server-data)))
@@ -484,6 +588,45 @@ ARTICLE is the article number of the current headline.")
484 (push (list group nnrss-group-max) nnrss-server-data))) 588 (push (list group nnrss-group-max) nnrss-server-data)))
485 (nnrss-save-server-data server)))) 589 (nnrss-save-server-data server))))
486 590
591(defun nnrss-opml-import (opml-file)
592 "OPML subscriptions import.
593Read the file and attempt to subscribe to each Feed in the file."
594 (interactive "fImport file: ")
595 (mapcar
596 (lambda (node) (gnus-group-make-rss-group
597 (cdr (assq 'xmlUrl (cadr node)))))
598 (nnrss-find-el 'outline
599 (progn
600 (find-file opml-file)
601 (xml-parse-region (point-min)
602 (point-max))))))
603
604(defun nnrss-opml-export ()
605 "OPML subscription export.
606Export subscriptions to a buffer in OPML Format."
607 (interactive)
608 (with-current-buffer (get-buffer-create "*OPML Export*")
609 (mm-set-buffer-file-coding-system 'utf-8)
610 (insert "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
611 "<!-- OPML generated by Emacs Gnus' nnrss.el -->\n"
612 "<opml version=\"1.1\">\n"
613 " <head>\n"
614 " <title>mySubscriptions</title>\n"
615 " <dateCreated>" (format-time-string "%a, %d %b %Y %T %z")
616 "</dateCreated>\n"
617 " <ownerEmail>" user-mail-address "</ownerEmail>\n"
618 " <ownerName>" (user-full-name) "</ownerName>\n"
619 " </head>\n"
620 " <body>\n")
621 (dolist (sub nnrss-group-alist)
622 (insert " <outline text=\"" (car sub)
623 "\" xmlUrl=\"" (cadr sub) "\"/>\n"))
624 (insert " </body>\n"
625 "</opml>\n"))
626 (pop-to-buffer "*OPML Export*")
627 (when (fboundp 'sgml-mode)
628 (sgml-mode)))
629
487(defun nnrss-generate-download-script () 630(defun nnrss-generate-download-script ()
488 "Generate a download script in the current buffer. 631 "Generate a download script in the current buffer.
489It is useful when `(setq nnrss-use-local t)'." 632It is useful when `(setq nnrss-use-local t)'."
@@ -530,9 +673,6 @@ It is useful when `(setq nnrss-use-local t)'."
530 (if changed 673 (if changed
531 (nnrss-save-server-data "")))) 674 (nnrss-save-server-data ""))))
532 675
533(defun nnrss-format-string (string)
534 (gnus-replace-in-string (nnrss-string-as-multibyte string) " *\n *" " "))
535
536(defun nnrss-node-text (namespace local-name element) 676(defun nnrss-node-text (namespace local-name element)
537 (let* ((node (assq (intern (concat namespace (symbol-name local-name))) 677 (let* ((node (assq (intern (concat namespace (symbol-name local-name)))
538 element)) 678 element))
@@ -551,56 +691,59 @@ It is useful when `(setq nnrss-use-local t)'."
551 node)) 691 node))
552 692
553(defun nnrss-find-el (tag data &optional found-list) 693(defun nnrss-find-el (tag data &optional found-list)
554 "Find the all matching elements in the data. Careful with this on 694 "Find the all matching elements in the data.
555large documents!" 695Careful with this on large documents!"
556 (if (listp data) 696 (when (consp data)
557 (mapcar (lambda (bit) 697 (dolist (bit data)
558 (if (car-safe bit) 698 (when (car-safe bit)
559 (progn (if (equal tag (car bit)) 699 (when (equal tag (car bit))
560 (setq found-list 700 ;; Old xml.el may return a list of string.
561 (append found-list 701 (when (and (consp (caddr bit))
562 (list bit)))) 702 (stringp (caaddr bit)))
563 (if (and (listp (car-safe (caddr bit))) 703 (setcar (cddr bit) (caaddr bit)))
564 (not (stringp (caddr bit)))) 704 (setq found-list
565 (setq found-list 705 (append found-list
566 (append found-list 706 (list bit))))
567 (nnrss-find-el 707 (if (and (consp (car-safe (caddr bit)))
568 tag (caddr bit)))) 708 (not (stringp (caddr bit))))
569 (setq found-list 709 (setq found-list
570 (append found-list 710 (append found-list
571 (nnrss-find-el 711 (nnrss-find-el
572 tag (cddr bit)))))))) 712 tag (caddr bit))))
573 data)) 713 (setq found-list
714 (append found-list
715 (nnrss-find-el
716 tag (cddr bit))))))))
574 found-list) 717 found-list)
575 718
576(defun nnrss-rsslink-p (el) 719(defun nnrss-rsslink-p (el)
577 "Test if the element we are handed is an RSS autodiscovery link." 720 "Test if the element we are handed is an RSS autodiscovery link."
578 (and (eq (car-safe el) 'link) 721 (and (eq (car-safe el) 'link)
579 (string-equal (cdr (assoc 'rel (cadr el))) "alternate") 722 (string-equal (cdr (assoc 'rel (cadr el))) "alternate")
580 (or (string-equal (cdr (assoc 'type (cadr el))) 723 (or (string-equal (cdr (assoc 'type (cadr el)))
581 "application/rss+xml") 724 "application/rss+xml")
582 (string-equal (cdr (assoc 'type (cadr el))) "text/xml")))) 725 (string-equal (cdr (assoc 'type (cadr el))) "text/xml"))))
583 726
584(defun nnrss-get-rsslinks (data) 727(defun nnrss-get-rsslinks (data)
585 "Extract the <link> elements that are links to RSS from the parsed data." 728 "Extract the <link> elements that are links to RSS from the parsed data."
586 (delq nil (mapcar 729 (delq nil (mapcar
587 (lambda (el) 730 (lambda (el)
588 (if (nnrss-rsslink-p el) el)) 731 (if (nnrss-rsslink-p el) el))
589 (nnrss-find-el 'link data)))) 732 (nnrss-find-el 'link data))))
590 733
591(defun nnrss-extract-hrefs (data) 734(defun nnrss-extract-hrefs (data)
592 "Recursively extract hrefs from a page's source. DATA should be 735 "Recursively extract hrefs from a page's source.
593the output of xml-parse-region or w3-parse-buffer." 736DATA should be the output of `xml-parse-region' or
737`w3-parse-buffer'."
594 (mapcar (lambda (ahref) 738 (mapcar (lambda (ahref)
595 (cdr (assoc 'href (cadr ahref)))) 739 (cdr (assoc 'href (cadr ahref))))
596 (nnrss-find-el 'a data))) 740 (nnrss-find-el 'a data)))
597 741
598(defmacro nnrss-match-macro (base-uri item 742(defmacro nnrss-match-macro (base-uri item onsite-list offsite-list)
599 onsite-list offsite-list)
600 `(cond ((or (string-match (concat "^" ,base-uri) ,item) 743 `(cond ((or (string-match (concat "^" ,base-uri) ,item)
601 (not (string-match "://" ,item))) 744 (not (string-match "://" ,item)))
602 (setq ,onsite-list (append ,onsite-list (list ,item)))) 745 (setq ,onsite-list (append ,onsite-list (list ,item))))
603 (t (setq ,offsite-list (append ,offsite-list (list ,item)))))) 746 (t (setq ,offsite-list (append ,offsite-list (list ,item))))))
604 747
605(defun nnrss-order-hrefs (base-uri hrefs) 748(defun nnrss-order-hrefs (base-uri hrefs)
606 "Given a list of hrefs, sort them using the following priorities: 749 "Given a list of hrefs, sort them using the following priorities:
@@ -615,29 +758,28 @@ whether they are `offsite' or `onsite'."
615 (let (rss-onsite-end rdf-onsite-end xml-onsite-end 758 (let (rss-onsite-end rdf-onsite-end xml-onsite-end
616 rss-onsite-in rdf-onsite-in xml-onsite-in 759 rss-onsite-in rdf-onsite-in xml-onsite-in
617 rss-offsite-end rdf-offsite-end xml-offsite-end 760 rss-offsite-end rdf-offsite-end xml-offsite-end
618 rss-offsite-in rdf-offsite-in xml-offsite-in) 761 rss-offsite-in rdf-offsite-in xml-offsite-in)
619 (mapcar (lambda (href) 762 (dolist (href hrefs)
620 (if (not (null href)) 763 (cond ((null href))
621 (cond ((string-match "\\.rss$" href) 764 ((string-match "\\.rss$" href)
622 (nnrss-match-macro 765 (nnrss-match-macro
623 base-uri href rss-onsite-end rss-offsite-end)) 766 base-uri href rss-onsite-end rss-offsite-end))
624 ((string-match "\\.rdf$" href) 767 ((string-match "\\.rdf$" href)
625 (nnrss-match-macro 768 (nnrss-match-macro
626 base-uri href rdf-onsite-end rdf-offsite-end)) 769 base-uri href rdf-onsite-end rdf-offsite-end))
627 ((string-match "\\.xml$" href) 770 ((string-match "\\.xml$" href)
628 (nnrss-match-macro 771 (nnrss-match-macro
629 base-uri href xml-onsite-end xml-offsite-end)) 772 base-uri href xml-onsite-end xml-offsite-end))
630 ((string-match "rss" href) 773 ((string-match "rss" href)
631 (nnrss-match-macro 774 (nnrss-match-macro
632 base-uri href rss-onsite-in rss-offsite-in)) 775 base-uri href rss-onsite-in rss-offsite-in))
633 ((string-match "rdf" href) 776 ((string-match "rdf" href)
634 (nnrss-match-macro 777 (nnrss-match-macro
635 base-uri href rdf-onsite-in rdf-offsite-in)) 778 base-uri href rdf-onsite-in rdf-offsite-in))
636 ((string-match "xml" href) 779 ((string-match "xml" href)
637 (nnrss-match-macro 780 (nnrss-match-macro
638 base-uri href xml-onsite-in xml-offsite-in))))) 781 base-uri href xml-onsite-in xml-offsite-in))))
639 hrefs) 782 (append
640 (append
641 rss-onsite-end rdf-onsite-end xml-onsite-end 783 rss-onsite-end rdf-onsite-end xml-onsite-end
642 rss-onsite-in rdf-onsite-in xml-onsite-in 784 rss-onsite-in rdf-onsite-in xml-onsite-in
643 rss-offsite-end rdf-offsite-end xml-offsite-end 785 rss-offsite-end rdf-offsite-end xml-offsite-end
@@ -670,23 +812,23 @@ whether they are `offsite' or `onsite'."
670;; - offsite links containing any of the above 812;; - offsite links containing any of the above
671 (let* ((base-uri (progn (string-match ".*://[^/]+/?" url) 813 (let* ((base-uri (progn (string-match ".*://[^/]+/?" url)
672 (match-string 0 url))) 814 (match-string 0 url)))
673 (hrefs (nnrss-order-hrefs 815 (hrefs (nnrss-order-hrefs
674 base-uri (nnrss-extract-hrefs parsed-page))) 816 base-uri (nnrss-extract-hrefs parsed-page)))
675 (rss-link nil)) 817 (rss-link nil))
676 (while (and (eq rss-link nil) (not (eq hrefs nil))) 818 (while (and (eq rss-link nil) (not (eq hrefs nil)))
677 (let ((href-data (nnrss-fetch (car hrefs)))) 819 (let ((href-data (nnrss-fetch (car hrefs))))
678 (if (nnrss-rss-p href-data) 820 (if (nnrss-rss-p href-data)
679 (let* ((rss-ns (nnrss-get-namespace-prefix href-data "http://purl.org/rss/1.0/"))) 821 (let* ((rss-ns (nnrss-get-namespace-prefix href-data "http://purl.org/rss/1.0/")))
680 (setq rss-link (nnrss-rss-title-description 822 (setq rss-link (nnrss-rss-title-description
681 rss-ns href-data (car hrefs)))) 823 rss-ns href-data (car hrefs))))
682 (setq hrefs (cdr hrefs))))) 824 (setq hrefs (cdr hrefs)))))
683 (if rss-link rss-link 825 (if rss-link rss-link
684 826
685;; 4. check syndic8 827;; 4. check syndic8
686 (nnrss-find-rss-via-syndic8 url)))))))) 828 (nnrss-find-rss-via-syndic8 url))))))))
687 829
688(defun nnrss-find-rss-via-syndic8 (url) 830(defun nnrss-find-rss-via-syndic8 (url)
689 "query syndic8 for the rss feeds it has for the url." 831 "Query syndic8 for the rss feeds it has for URL."
690 (if (not (locate-library "xml-rpc")) 832 (if (not (locate-library "xml-rpc"))
691 (progn 833 (progn
692 (message "XML-RPC is not available... not checking Syndic8.") 834 (message "XML-RPC is not available... not checking Syndic8.")
@@ -697,22 +839,22 @@ whether they are `offsite' or `onsite'."
697 'syndic8.FindSites 839 'syndic8.FindSites
698 url))) 840 url)))
699 (when feedid 841 (when feedid
700 (let* ((feedinfo (xml-rpc-method-call 842 (let* ((feedinfo (xml-rpc-method-call
701 "http://www.syndic8.com/xmlrpc.php" 843 "http://www.syndic8.com/xmlrpc.php"
702 'syndic8.GetFeedInfo 844 'syndic8.GetFeedInfo
703 feedid)) 845 feedid))
704 (urllist 846 (urllist
705 (delq nil 847 (delq nil
706 (mapcar 848 (mapcar
707 (lambda (listinfo) 849 (lambda (listinfo)
708 (if (string-equal 850 (if (string-equal
709 (cdr (assoc "status" listinfo)) 851 (cdr (assoc "status" listinfo))
710 "Syndicated") 852 "Syndicated")
711 (cons 853 (cons
712 (cdr (assoc "sitename" listinfo)) 854 (cdr (assoc "sitename" listinfo))
713 (list 855 (list
714 (cons 'title 856 (cons 'title
715 (cdr (assoc 857 (cdr (assoc
716 "sitename" listinfo))) 858 "sitename" listinfo)))
717 (cons 'href 859 (cons 'href
718 (cdr (assoc 860 (cdr (assoc
@@ -721,20 +863,20 @@ whether they are `offsite' or `onsite'."
721 (if (not (> (length urllist) 1)) 863 (if (not (> (length urllist) 1))
722 (cdar urllist) 864 (cdar urllist)
723 (let ((completion-ignore-case t) 865 (let ((completion-ignore-case t)
724 (selection 866 (selection
725 (mapcar (lambda (listinfo) 867 (mapcar (lambda (listinfo)
726 (cons (cdr (assoc "sitename" listinfo)) 868 (cons (cdr (assoc "sitename" listinfo))
727 (string-to-int 869 (string-to-int
728 (cdr (assoc "feedid" listinfo))))) 870 (cdr (assoc "feedid" listinfo)))))
729 feedinfo))) 871 feedinfo)))
730 (cdr (assoc 872 (cdr (assoc
731 (completing-read 873 (completing-read
732 "Multiple feeds found. Select one: " 874 "Multiple feeds found. Select one: "
733 selection nil t) urllist))))))))) 875 selection nil t) urllist)))))))))
734 876
735(defun nnrss-rss-p (data) 877(defun nnrss-rss-p (data)
736 "Test if data is an RSS feed. Simply ensures that the first 878 "Test if DATA is an RSS feed.
737element is rss or rdf." 879Simply ensures that the first element is rss or rdf."
738 (or (eq (caar data) 'rss) 880 (or (eq (caar data) 'rss)
739 (eq (caar data) 'rdf:RDF))) 881 (eq (caar data) 'rdf:RDF)))
740 882
@@ -755,13 +897,13 @@ element is rss or rdf."
755that gives the URI for which you want to retrieve the namespace 897that gives the URI for which you want to retrieve the namespace
756prefix), return the prefix." 898prefix), return the prefix."
757 (let* ((prefix (car (rassoc uri (cadar el)))) 899 (let* ((prefix (car (rassoc uri (cadar el))))
758 (nslist (if prefix 900 (nslist (if prefix
759 (split-string (symbol-name prefix) ":"))) 901 (split-string (symbol-name prefix) ":")))
760 (ns (cond ((eq (length nslist) 1) ; no prefix given 902 (ns (cond ((eq (length nslist) 1) ; no prefix given
761 "") 903 "")
762 ((eq (length nslist) 2) ; extract prefix 904 ((eq (length nslist) 2) ; extract prefix
763 (cadr nslist))))) 905 (cadr nslist)))))
764 (if (and ns (not (eq ns ""))) 906 (if (and ns (not (string= ns "")))
765 (concat ns ":") 907 (concat ns ":")
766 ns))) 908 ns)))
767 909
diff --git a/lisp/help.el b/lisp/help.el
index aeffaf732a5..a3e14014b79 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -586,7 +586,15 @@ the last key hit are used."
586 ;; Ok, now look up the key and name the command. 586 ;; Ok, now look up the key and name the command.
587 (let ((defn (or (string-key-binding key) 587 (let ((defn (or (string-key-binding key)
588 (key-binding key))) 588 (key-binding key)))
589 (key-desc (help-key-description key untranslated))) 589 key-desc)
590 ;; Don't bother user with strings from (e.g.) the select-paste menu.
591 (if (stringp (aref key (1- (length key))))
592 (aset key (1- (length key)) "(any string)"))
593 (if (stringp (aref untranslated (1- (length untranslated))))
594 (aset untranslated (1- (length untranslated))
595 "(any string)"))
596 ;; Now describe the key, perhaps as changed.
597 (setq key-desc (help-key-description key untranslated))
590 (if (or (null defn) (integerp defn) (equal defn 'undefined)) 598 (if (or (null defn) (integerp defn) (equal defn 'undefined))
591 (princ (format "%s is undefined" key-desc)) 599 (princ (format "%s is undefined" key-desc))
592 (princ (format (if (windowp window) 600 (princ (format (if (windowp window)
@@ -623,6 +631,12 @@ the last key hit are used."
623 (if (or (null defn) (integerp defn) (equal defn 'undefined)) 631 (if (or (null defn) (integerp defn) (equal defn 'undefined))
624 (message "%s is undefined" (help-key-description key untranslated)) 632 (message "%s is undefined" (help-key-description key untranslated))
625 (help-setup-xref (list #'describe-function defn) (interactive-p)) 633 (help-setup-xref (list #'describe-function defn) (interactive-p))
634 ;; Don't bother user with strings from (e.g.) the select-paste menu.
635 (if (stringp (aref key (1- (length key))))
636 (aset key (1- (length key)) "(any string)"))
637 (if (stringp (aref untranslated (1- (length untranslated))))
638 (aset untranslated (1- (length untranslated))
639 "(any string)"))
626 (with-output-to-temp-buffer (help-buffer) 640 (with-output-to-temp-buffer (help-buffer)
627 (princ (help-key-description key untranslated)) 641 (princ (help-key-description key untranslated))
628 (if (windowp window) 642 (if (windowp window)
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index 431087087f1..a924c89ba37 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -119,7 +119,10 @@ calls."
119 :group 'hi-lock-interactive-text-highlighting) 119 :group 'hi-lock-interactive-text-highlighting)
120 120
121(defface hi-yellow 121(defface hi-yellow
122 '((((background dark)) (:background "yellow" :foreground "black")) 122 '((((min-colors 88) (background dark))
123 (:background "yellow1" :foreground "black"))
124 (((background dark)) (:background "yellow" :foreground "black"))
125 (((min-colors 88)) (:background "yellow1"))
123 (t (:background "yellow"))) 126 (t (:background "yellow")))
124 "Default face for hi-lock mode." 127 "Default face for hi-lock mode."
125 :group 'hi-lock-faces) 128 :group 'hi-lock-faces)
@@ -131,7 +134,10 @@ calls."
131 :group 'hi-lock-faces) 134 :group 'hi-lock-faces)
132 135
133(defface hi-green 136(defface hi-green
134 '((((background dark)) (:background "green" :foreground "black")) 137 '((((min-colors 88) (background dark))
138 (:background "green1" :foreground "black"))
139 (((background dark)) (:background "green" :foreground "black"))
140 (((min-colors 88)) (:background "green1"))
135 (t (:background "green"))) 141 (t (:background "green")))
136 "Face for hi-lock mode." 142 "Face for hi-lock mode."
137 :group 'hi-lock-faces) 143 :group 'hi-lock-faces)
@@ -148,17 +154,20 @@ calls."
148 :group 'hi-lock-faces) 154 :group 'hi-lock-faces)
149 155
150(defface hi-blue-b 156(defface hi-blue-b
151 '((t (:weight bold :foreground "blue"))) 157 '((((min-colors 88)) (:weight bold :foreground "blue1"))
158 (t (:weight bold :foreground "blue")))
152 "Face for hi-lock mode." 159 "Face for hi-lock mode."
153 :group 'hi-lock-faces) 160 :group 'hi-lock-faces)
154 161
155(defface hi-green-b 162(defface hi-green-b
156 '((t (:weight bold :foreground "green"))) 163 '((((min-colors 88)) (:weight bold :foreground "green1"))
164 (t (:weight bold :foreground "green")))
157 "Face for hi-lock mode." 165 "Face for hi-lock mode."
158 :group 'hi-lock-faces) 166 :group 'hi-lock-faces)
159 167
160(defface hi-red-b 168(defface hi-red-b
161 '((t (:weight bold :foreground "red"))) 169 '((((min-colors 88)) (:weight bold :foreground "red1"))
170 (t (:weight bold :foreground "red")))
162 "Face for hi-lock mode." 171 "Face for hi-lock mode."
163 :group 'hi-lock-faces) 172 :group 'hi-lock-faces)
164 173
diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el
index 8e84bbf68e2..a6db060ce0f 100644
--- a/lisp/hilit-chg.el
+++ b/lisp/hilit-chg.el
@@ -213,14 +213,16 @@
213;; indentation on inserts gets underlined (which can look pretty ugly!). 213;; indentation on inserts gets underlined (which can look pretty ugly!).
214 214
215(defface highlight-changes-face 215(defface highlight-changes-face
216 '((((class color)) (:foreground "red" )) 216 '((((min-colors 88) (class color)) (:foreground "red1" ))
217 (((class color)) (:foreground "red" ))
217 (t (:inverse-video t))) 218 (t (:inverse-video t)))
218 "Face used for highlighting changes." 219 "Face used for highlighting changes."
219 :group 'highlight-changes) 220 :group 'highlight-changes)
220 221
221;; This looks pretty ugly, actually. Maybe the underline should be removed. 222;; This looks pretty ugly, actually. Maybe the underline should be removed.
222(defface highlight-changes-delete-face 223(defface highlight-changes-delete-face
223 '((((class color)) (:foreground "red" :underline t)) 224 '((((min-colors 88) (class color)) (:foreground "red1" :underline t))
225 (((class color)) (:foreground "red" :underline t))
224 (t (:inverse-video t))) 226 (t (:inverse-video t)))
225 "Face used for highlighting deletions." 227 "Face used for highlighting deletions."
226 :group 'highlight-changes) 228 :group 'highlight-changes)
diff --git a/lisp/ido.el b/lisp/ido.el
index ddeecbb9b69..2e2aca3126e 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -1,6 +1,6 @@
1;;; ido.el --- interactively do things with buffers and files. 1;;; ido.el --- interactively do things with buffers and files.
2 2
3;; Copyright (C) 1996-2004 Free Software Foundation, Inc. 3;; Copyright (C) 1996-2004, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Kim F. Storm <storm@cua.dk> 5;; Author: Kim F. Storm <storm@cua.dk>
6;; Based on: iswitchb by Stephen Eglen <stephen@cns.ed.ac.uk> 6;; Based on: iswitchb by Stephen Eglen <stephen@cns.ed.ac.uk>
@@ -747,13 +747,19 @@ subdirs in the alternatives."
747 "*Font used by ido for highlighting only match." 747 "*Font used by ido for highlighting only match."
748 :group 'ido) 748 :group 'ido)
749 749
750(defface ido-subdir-face '((((class color)) 750(defface ido-subdir-face '((((min-colors 88) (class color))
751 (:foreground "red1"))
752 (((class color))
751 (:foreground "red")) 753 (:foreground "red"))
752 (t (:underline t))) 754 (t (:underline t)))
753 "*Font used by ido for highlighting subdirs in the alternatives." 755 "*Font used by ido for highlighting subdirs in the alternatives."
754 :group 'ido) 756 :group 'ido)
755 757
756(defface ido-indicator-face '((((class color)) 758(defface ido-indicator-face '((((min-colors 88) (class color))
759 (:foreground "yellow1"
760 :background "red1"
761 :width condensed))
762 (((class color))
757 (:foreground "yellow" 763 (:foreground "yellow"
758 :background "red" 764 :background "red"
759 :width condensed)) 765 :width condensed))
diff --git a/lisp/info.el b/lisp/info.el
index e44de75072e..3ded620cb7a 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -1,6 +1,6 @@
1;;; info.el --- info package for Emacs 1;;; info.el --- info package for Emacs
2 2
3;; Copyright (C) 1985,86,92,93,94,95,96,97,98,99,2000,01,02,03,2004 3;; Copyright (C) 1985,86,92,93,94,95,96,97,98,99,2000,01,02,03,04,2005
4;; Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
5 5
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -83,7 +83,11 @@ The Lisp code is executed when the node is selected.")
83 :group 'info) 83 :group 'info)
84 84
85(defface info-xref 85(defface info-xref
86 '((((class color) (background light)) :foreground "blue" :underline t) 86 '((((min-colors 88)
87 (class color) (background light)) :foreground "blue1" :underline t)
88 (((class color) (background light)) :foreground "blue" :underline t)
89 (((min-colors 88)
90 (class color) (background dark)) :foreground "cyan1" :underline t)
87 (((class color) (background dark)) :foreground "cyan" :underline t) 91 (((class color) (background dark)) :foreground "cyan" :underline t)
88 (t :underline t)) 92 (t :underline t))
89 "Face for Info cross-references." 93 "Face for Info cross-references."
@@ -3795,77 +3799,78 @@ Preserve text properties."
3795 (let ((n 0) 3799 (let ((n 0)
3796 cont) 3800 cont)
3797 (while (re-search-forward 3801 (while (re-search-forward
3798 (concat "^\\* +\\(" Info-menu-entry-name-re "\\)\\(:" 3802 (concat "^\\* Menu:\\|\\(?:^\\* +\\(" Info-menu-entry-name-re "\\)\\(:"
3799 Info-node-spec-re "\\([ \t]*\\)\\)") 3803 Info-node-spec-re "\\([ \t]*\\)\\)\\)")
3800 nil t) 3804 nil t)
3801 (when not-fontified-p 3805 (when (match-beginning 1)
3802 (setq n (1+ n)) 3806 (when not-fontified-p
3803 (if (and (<= n 9) (zerop (% n 3))) ; visual aids to help with 1-9 keys 3807 (setq n (1+ n))
3804 (put-text-property (match-beginning 0) 3808 (if (and (<= n 9) (zerop (% n 3))) ; visual aids to help with 1-9 keys
3805 (1+ (match-beginning 0)) 3809 (put-text-property (match-beginning 0)
3806 'font-lock-face 'info-menu-5))) 3810 (1+ (match-beginning 0))
3807 (when not-fontified-p 3811 'font-lock-face 'info-menu-5)))
3808 (add-text-properties 3812 (when not-fontified-p
3809 (match-beginning 1) (match-end 1) 3813 (add-text-properties
3810 (list 3814 (match-beginning 1) (match-end 1)
3811 'help-echo (if (and (match-end 3) 3815 (list
3812 (not (equal (match-string 3) ""))) 3816 'help-echo (if (and (match-end 3)
3813 (concat "mouse-2: go to " (match-string 3)) 3817 (not (equal (match-string 3) "")))
3814 "mouse-2: go to this node") 3818 (concat "mouse-2: go to " (match-string 3))
3815 'mouse-face 'highlight))) 3819 "mouse-2: go to this node")
3816 (when (or not-fontified-p fontify-visited-p) 3820 'mouse-face 'highlight)))
3817 (add-text-properties 3821 (when (or not-fontified-p fontify-visited-p)
3818 (match-beginning 1) (match-end 1) 3822 (add-text-properties
3819 (list 3823 (match-beginning 1) (match-end 1)
3820 'font-lock-face 3824 (list
3821 ;; Display visited menu items in a different face 3825 'font-lock-face
3822 (if (and Info-fontify-visited-nodes 3826 ;; Display visited menu items in a different face
3823 (save-match-data 3827 (if (and Info-fontify-visited-nodes
3824 (let ((node (if (equal (match-string 3) "") 3828 (save-match-data
3825 (match-string 1) 3829 (let ((node (if (equal (match-string 3) "")
3826 (match-string 3))) 3830 (match-string 1)
3827 (file (file-name-nondirectory Info-current-file)) 3831 (match-string 3)))
3828 (hl Info-history-list) 3832 (file (file-name-nondirectory Info-current-file))
3829 res) 3833 (hl Info-history-list)
3830 (if (string-match "(\\([^)]+\\))\\([^)]*\\)" node) 3834 res)
3831 (setq file (file-name-nondirectory 3835 (if (string-match "(\\([^)]+\\))\\([^)]*\\)" node)
3832 (match-string 1 node)) 3836 (setq file (file-name-nondirectory
3833 node (if (equal (match-string 2 node) "") 3837 (match-string 1 node))
3834 "Top" 3838 node (if (equal (match-string 2 node) "")
3835 (match-string 2 node)))) 3839 "Top"
3836 (while hl 3840 (match-string 2 node))))
3837 (if (and (string-equal node (nth 1 (car hl))) 3841 (while hl
3838 (string-equal file 3842 (if (and (string-equal node (nth 1 (car hl)))
3839 (file-name-nondirectory 3843 (string-equal file
3840 (nth 0 (car hl))))) 3844 (file-name-nondirectory
3841 (setq res (car hl) hl nil) 3845 (nth 0 (car hl)))))
3842 (setq hl (cdr hl)))) 3846 (setq res (car hl) hl nil)
3843 res))) 'info-xref-visited 'info-xref)))) 3847 (setq hl (cdr hl))))
3844 (when (and not-fontified-p (memq Info-hide-note-references '(t hide))) 3848 res))) 'info-xref-visited 'info-xref))))
3845 (put-text-property (match-beginning 2) (1- (match-end 6)) 3849 (when (and not-fontified-p (memq Info-hide-note-references '(t hide)))
3846 'invisible t) 3850 (put-text-property (match-beginning 2) (1- (match-end 6))
3847 ;; Unhide the file name in parens 3851 'invisible t)
3848 (if (and (match-end 4) (not (eq (char-after (match-end 4)) ?.))) 3852 ;; Unhide the file name in parens
3849 (remove-text-properties (match-beginning 4) (match-end 4) 3853 (if (and (match-end 4) (not (eq (char-after (match-end 4)) ?.)))
3850 '(invisible t))) 3854 (remove-text-properties (match-beginning 4) (match-end 4)
3851 ;; We need a stretchable space like :align-to but with 3855 '(invisible t)))
3852 ;; a minimum value. 3856 ;; We need a stretchable space like :align-to but with
3853 (put-text-property (1- (match-end 6)) (match-end 6) 'display 3857 ;; a minimum value.
3854 (if (>= 22 (- (match-end 1) 3858 (put-text-property (1- (match-end 6)) (match-end 6) 'display
3855 (match-beginning 0))) 3859 (if (>= 22 (- (match-end 1)
3856 '(space :align-to 24) 3860 (match-beginning 0)))
3857 '(space :width 2))) 3861 '(space :align-to 24)
3858 (setq cont (looking-at ".")) 3862 '(space :width 2)))
3859 (while (and (= (forward-line 1) 0) 3863 (setq cont (looking-at "."))
3860 (looking-at "\\([ \t]+\\)[^*\n]")) 3864 (while (and (= (forward-line 1) 0)
3861 (put-text-property (match-beginning 1) (1- (match-end 1)) 3865 (looking-at "\\([ \t]+\\)[^*\n]"))
3862 'invisible t) 3866 (put-text-property (match-beginning 1) (1- (match-end 1))
3863 (put-text-property (1- (match-end 1)) (match-end 1) 3867 'invisible t)
3864 'display 3868 (put-text-property (1- (match-end 1)) (match-end 1)
3865 (if cont 3869 'display
3866 '(space :align-to 26) 3870 (if cont
3867 '(space :align-to 24))) 3871 '(space :align-to 26)
3868 (setq cont t)))))) 3872 '(space :align-to 24)))
3873 (setq cont t)))))))
3869 3874
3870 ;; Fontify menu headers 3875 ;; Fontify menu headers
3871 ;; Add the face `info-menu-header' to any header before a menu entry 3876 ;; Add the face `info-menu-header' to any header before a menu entry
diff --git a/lisp/international/code-pages.el b/lisp/international/code-pages.el
index cc4e1766145..112f9ac83d2 100644
--- a/lisp/international/code-pages.el
+++ b/lisp/international/code-pages.el
@@ -3944,21 +3944,21 @@ Return an updated `non-iso-charset-alist'."
3944 [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil 3944 [nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
3945 nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil 3945 nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
3946 ?\  3946 ?\ 
3947 ?\¡ 3947 ?\â€
3948 ?\¢ 3948 ?\¢
3949 ?\£ 3949 ?\£
3950 ?\¤ 3950 ?\¤
3951 ?\„ 3951 ?\„
3952 ?\¦ 3952 ?\¦
3953 ?\§ 3953 ?\§
3954 ?\¨ 3954 ?\Ø
3955 ?\© 3955 ?\©
3956 ?\ª 3956 ?\Ŗ
3957 ?\« 3957 ?\«
3958 ?\¬ 3958 ?\¬
3959 ?\­ 3959 ?\­
3960 ?\® 3960 ?\®
3961 ?\¯ 3961 ?\Æ
3962 ?\° 3962 ?\°
3963 ?\± 3963 ?\±
3964 ?\² 3964 ?\²
@@ -3967,14 +3967,14 @@ Return an updated `non-iso-charset-alist'."
3967 ?\µ 3967 ?\µ
3968 ?\¶ 3968 ?\¶
3969 ?\· 3969 ?\·
3970 ?\¸ 3970 ?\ø
3971 ?\¹ 3971 ?\¹
3972 ?\º 3972 ?\ŗ
3973 ?\» 3973 ?\»
3974 ?\¼ 3974 ?\¼
3975 ?\½ 3975 ?\½
3976 ?\¾ 3976 ?\¾
3977 ?\¿ 3977 ?\æ
3978 ?\Ä„ 3978 ?\Ä„
3979 ?\Ä® 3979 ?\Ä®
3980 ?\Ä€ 3980 ?\Ä€
diff --git a/lisp/international/latin-1.el b/lisp/international/latin-1.el
index 610ed1cb9f1..454e4eab1ce 100644
--- a/lisp/international/latin-1.el
+++ b/lisp/international/latin-1.el
@@ -1,6 +1,6 @@
1;;; latin-1.el --- set up case-conversion and syntax tables for ISO Latin-1 1;;; latin-1.el --- set up case-conversion and syntax tables for ISO Latin-1
2 2
3;; Copyright (C) 1988,1997 Free Software Foundation, Inc. 3;; Copyright (C) 1988, 1997, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Howard Gayle 5;; Author: Howard Gayle
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -40,7 +40,9 @@
40 (if set-case-syntax-set-multibyte 40 (if set-case-syntax-set-multibyte
41 (- (make-char 'latin-iso8859-1) 128) 41 (- (make-char 'latin-iso8859-1) 128)
42 0))) 42 0)))
43 (set-case-syntax 160 " " tbl) ;no-break space 43 ;; NBSP isn't semantically interchangeable with other whitespace chars,
44 ;; so it's more like punctation.
45 (set-case-syntax 160 "." tbl) ;no-break space
44 (set-case-syntax 161 "." tbl) ;inverted exclamation mark 46 (set-case-syntax 161 "." tbl) ;inverted exclamation mark
45 (set-case-syntax 162 "w" tbl) ;cent sign 47 (set-case-syntax 162 "w" tbl) ;cent sign
46 (set-case-syntax 163 "w" tbl) ;pound sign 48 (set-case-syntax 163 "w" tbl) ;pound sign
@@ -114,11 +116,11 @@
114(or set-case-syntax-set-multibyte 116(or set-case-syntax-set-multibyte
115 (provide 'latin-1)) 117 (provide 'latin-1))
116 118
117;;; Don't compile this file: src/Makefile.in instructs make-docfile 119;; Don't compile this file: src/Makefile.in instructs make-docfile
118;;; to look at the .el file! 120;; to look at the .el file!
119;;; Local Variables: 121;; Local Variables:
120;;; no-byte-compile: t 122;; no-byte-compile: t
121;;; End: 123;; End:
122 124
123;;; arch-tag: c2ee6895-edc3-40b2-9518-8c09f1d56c54 125;; arch-tag: c2ee6895-edc3-40b2-9518-8c09f1d56c54
124;;; latin-1.el ends here 126;;; latin-1.el ends here
diff --git a/lisp/international/latin-2.el b/lisp/international/latin-2.el
index bc7fbe84274..704145f5e58 100644
--- a/lisp/international/latin-2.el
+++ b/lisp/international/latin-2.el
@@ -1,6 +1,6 @@
1;;; latin-2.el --- set up case-conversion and syntax tables for ISO Latin-2 1;;; latin-2.el --- set up case-conversion and syntax tables for ISO Latin-2
2 2
3;; Copyright (C) 1995,1997 Free Software Foundation, Inc. 3;; Copyright (C) 1995, 1997, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Michael Gschwind (mike@vlsivie.tuwien.ac.at) 5;; Author: Michael Gschwind (mike@vlsivie.tuwien.ac.at)
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -38,7 +38,9 @@
38 (if set-case-syntax-set-multibyte 38 (if set-case-syntax-set-multibyte
39 (- (make-char 'latin-iso8859-2) 128) 39 (- (make-char 'latin-iso8859-2) 128)
40 0))) 40 0)))
41 (set-case-syntax 160 " " tbl) ;no-break space 41 ;; NBSP isn't semantically interchangeable with other whitespace chars,
42 ;; so it's more like punctation.
43 (set-case-syntax 160 "." tbl) ;no-break space
42 (set-case-syntax-pair 161 177 tbl) ;latin letter a with ogonek 44 (set-case-syntax-pair 161 177 tbl) ;latin letter a with ogonek
43 (set-case-syntax 162 "w" tbl) ;breve 45 (set-case-syntax 162 "w" tbl) ;breve
44 (set-case-syntax-pair 163 179 tbl) ;latin letter l with stroke 46 (set-case-syntax-pair 163 179 tbl) ;latin letter l with stroke
@@ -100,11 +102,11 @@
100(or set-case-syntax-set-multibyte 102(or set-case-syntax-set-multibyte
101 (provide 'latin-2)) 103 (provide 'latin-2))
102 104
103;;; Don't compile this file: src/Makefile.in instructs make-docfile 105;; Don't compile this file: src/Makefile.in instructs make-docfile
104;;; to look at the .el file! 106;; to look at the .el file!
105;;; Local Variables: 107;; Local Variables:
106;;; no-byte-compile: t 108;; no-byte-compile: t
107;;; End: 109;; End:
108 110
109;;; arch-tag: 2b9f9c30-1a63-4877-8a80-e95a5e4c57c9 111;; arch-tag: 2b9f9c30-1a63-4877-8a80-e95a5e4c57c9
110;;; latin-2.el ends here 112;;; latin-2.el ends here
diff --git a/lisp/international/latin-3.el b/lisp/international/latin-3.el
index 99debf3983d..b87336b9c72 100644
--- a/lisp/international/latin-3.el
+++ b/lisp/international/latin-3.el
@@ -1,6 +1,6 @@
1;;; latin-3.el --- set up case-conversion and syntax tables for ISO Latin-3 1;;; latin-3.el --- set up case-conversion and syntax tables for ISO Latin-3
2 2
3;; Copyright (C) 1988,1997 Free Software Foundation, Inc. 3;; Copyright (C) 1988, 1997, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Marko Rahamaa 5;; Author: Marko Rahamaa
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -37,7 +37,9 @@
37 (if set-case-syntax-set-multibyte 37 (if set-case-syntax-set-multibyte
38 (- (make-char 'latin-iso8859-3) 128) 38 (- (make-char 'latin-iso8859-3) 128)
39 0))) 39 0)))
40 (set-case-syntax 160 " " tbl) ;no-break space 40 ;; NBSP isn't semantically interchangeable with other whitespace chars,
41 ;; so it's more like punctation.
42 (set-case-syntax 160 "." tbl) ;no-break space
41 (set-case-syntax-pair 161 177 tbl) ;latin letter h with stroke 43 (set-case-syntax-pair 161 177 tbl) ;latin letter h with stroke
42 (set-case-syntax 162 "w" tbl) ;breve 44 (set-case-syntax 162 "w" tbl) ;breve
43 (set-case-syntax 163 "w" tbl) ;pound sign 45 (set-case-syntax 163 "w" tbl) ;pound sign
@@ -98,11 +100,11 @@
98(or set-case-syntax-set-multibyte 100(or set-case-syntax-set-multibyte
99 (provide 'latin-3)) 101 (provide 'latin-3))
100 102
101;;; Don't compile this file: src/Makefile.in instructs make-docfile 103;; Don't compile this file: src/Makefile.in instructs make-docfile
102;;; to look at the .el file! 104;; to look at the .el file!
103;;; Local Variables: 105;; Local Variables:
104;;; no-byte-compile: t 106;; no-byte-compile: t
105;;; End: 107;; End:
106 108
107;;; arch-tag: 64d9d46d-fe0b-4a8e-9c28-ba7e20bbc552 109;; arch-tag: 64d9d46d-fe0b-4a8e-9c28-ba7e20bbc552
108;;; latin-3.el ends here 110;;; latin-3.el ends here
diff --git a/lisp/international/latin-4.el b/lisp/international/latin-4.el
index 7fa901dba0b..a6aeae736eb 100644
--- a/lisp/international/latin-4.el
+++ b/lisp/international/latin-4.el
@@ -1,6 +1,6 @@
1;;; latin-4.el --- set up case-conversion and syntax tables for ISO Latin-4 1;;; latin-4.el --- set up case-conversion and syntax tables for ISO Latin-4
2 2
3;; Copyright (C) 1997 Free Software Foundation, Inc. 3;; Copyright (C) 1997, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Erik Naggum 5;; Author: Erik Naggum
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -36,7 +36,9 @@
36 (if set-case-syntax-set-multibyte 36 (if set-case-syntax-set-multibyte
37 (- (make-char 'latin-iso8859-4) 128) 37 (- (make-char 'latin-iso8859-4) 128)
38 0))) 38 0)))
39 (set-case-syntax 160 " " tbl) ;no-break space 39 ;; NBSP isn't semantically interchangeable with other whitespace chars,
40 ;; so it's more like punctation.
41 (set-case-syntax 160 "." tbl) ;no-break space
40 (set-case-syntax-pair 161 177 tbl) ;latin letter a with ogonek 42 (set-case-syntax-pair 161 177 tbl) ;latin letter a with ogonek
41 (set-case-syntax 162 "w" tbl) ;latin letter kra 43 (set-case-syntax 162 "w" tbl) ;latin letter kra
42 (set-case-syntax-pair 163 179 tbl) ;latin letter r with cedilla 44 (set-case-syntax-pair 163 179 tbl) ;latin letter r with cedilla
@@ -98,11 +100,11 @@
98(or set-case-syntax-set-multibyte 100(or set-case-syntax-set-multibyte
99 (provide 'latin-4)) 101 (provide 'latin-4))
100 102
101;;; Don't compile this file: src/Makefile.in instructs make-docfile 103;; Don't compile this file: src/Makefile.in instructs make-docfile
102;;; to look at the .el file! 104;; to look at the .el file!
103;;; Local Variables: 105;; Local Variables:
104;;; no-byte-compile: t 106;; no-byte-compile: t
105;;; End: 107;; End:
106 108
107;;; arch-tag: c6b2558b-1943-4626-beb5-139630c8e352 109;; arch-tag: c6b2558b-1943-4626-beb5-139630c8e352
108;;; latin-4.el ends here 110;;; latin-4.el ends here
diff --git a/lisp/international/latin-5.el b/lisp/international/latin-5.el
index 5d96c1132a7..cc971ecbb86 100644
--- a/lisp/international/latin-5.el
+++ b/lisp/international/latin-5.el
@@ -1,6 +1,6 @@
1;;; latin-5.el --- set up case-conversion and syntax tables for ISO latin-5 1;;; latin-5.el --- set up case-conversion and syntax tables for ISO latin-5
2 2
3;; Copyright (C) 1997 Free Software Foundation, Inc. 3;; Copyright (C) 1997, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Erik Naggum 5;; Author: Erik Naggum
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -36,7 +36,9 @@
36 (if set-case-syntax-set-multibyte 36 (if set-case-syntax-set-multibyte
37 (- (make-char 'latin-iso8859-9) 128) 37 (- (make-char 'latin-iso8859-9) 128)
38 0))) 38 0)))
39 (set-case-syntax 160 " " tbl) ;no-break space 39 ;; NBSP isn't semantically interchangeable with other whitespace chars,
40 ;; so it's more like punctation.
41 (set-case-syntax 160 "." tbl) ;no-break space
40 (set-case-syntax 161 "." tbl) ;inverted exclamation mark 42 (set-case-syntax 161 "." tbl) ;inverted exclamation mark
41 (set-case-syntax 162 "w" tbl) ;cent sign 43 (set-case-syntax 162 "w" tbl) ;cent sign
42 (set-case-syntax 163 "w" tbl) ;pound sign 44 (set-case-syntax 163 "w" tbl) ;pound sign
@@ -111,11 +113,11 @@
111(or set-case-syntax-set-multibyte 113(or set-case-syntax-set-multibyte
112 (provide 'latin-5)) 114 (provide 'latin-5))
113 115
114;;; Don't compile this file: src/Makefile.in instructs make-docfile 116;; Don't compile this file: src/Makefile.in instructs make-docfile
115;;; to look at the .el file! 117;; to look at the .el file!
116;;; Local Variables: 118;; Local Variables:
117;;; no-byte-compile: t 119;; no-byte-compile: t
118;;; End: 120;; End:
119 121
120;;; arch-tag: 7f91a36a-39fb-4b5d-806f-f171abee71ad 122;; arch-tag: 7f91a36a-39fb-4b5d-806f-f171abee71ad
121;;; latin-5.el ends here 123;;; latin-5.el ends here
diff --git a/lisp/international/latin-8.el b/lisp/international/latin-8.el
index 91ea40198db..092ea8ab874 100644
--- a/lisp/international/latin-8.el
+++ b/lisp/international/latin-8.el
@@ -1,6 +1,6 @@
1;;; latin-8.el --- set up case-conversion and syntax tables for ISO Latin-8 1;;; latin-8.el --- set up case-conversion and syntax tables for ISO Latin-8
2 2
3;; Copyright (C) 1988,1997, 1999 Free Software Foundation, Inc. 3;; Copyright (C) 1988, 1997, 1999, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Dave Love 5;; Author: Dave Love
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -47,6 +47,9 @@
47 (if set-case-syntax-set-multibyte 47 (if set-case-syntax-set-multibyte
48 (- (make-char 'latin-iso8859-14) 128) 48 (- (make-char 'latin-iso8859-14) 128)
49 0))) 49 0)))
50 ;; NBSP isn't semantically interchangeable with other whitespace chars,
51 ;; so it's more like punctation.
52 (set-case-syntax 160 "." tbl) ;no-break space
50 (set-case-syntax-pair 161 162 tbl) ;latin letter b with dot above * 53 (set-case-syntax-pair 161 162 tbl) ;latin letter b with dot above *
51 (set-case-syntax 163 "w" tbl) ;pound sign 54 (set-case-syntax 163 "w" tbl) ;pound sign
52 (set-case-syntax-pair 164 165 tbl) ;latin letter c with dot above * 55 (set-case-syntax-pair 164 165 tbl) ;latin letter c with dot above *
@@ -104,11 +107,11 @@
104(or set-case-syntax-set-multibyte 107(or set-case-syntax-set-multibyte
105 (provide 'latin-8)) 108 (provide 'latin-8))
106 109
107;;; Don't compile this file: src/Makefile.in instructs make-docfile 110;; Don't compile this file: src/Makefile.in instructs make-docfile
108;;; to look at the .el file! 111;; to look at the .el file!
109;;; Local Variables: 112;; Local Variables:
110;;; no-byte-compile: t 113;; no-byte-compile: t
111;;; End: 114;; End:
112 115
113;;; arch-tag: a916b4b5-4204-485b-8b57-8ab3a43a2e29 116;; arch-tag: a916b4b5-4204-485b-8b57-8ab3a43a2e29
114;;; latin-8.el ends here 117;;; latin-8.el ends here
diff --git a/lisp/international/latin-9.el b/lisp/international/latin-9.el
index 1a221f024de..be568c3115c 100644
--- a/lisp/international/latin-9.el
+++ b/lisp/international/latin-9.el
@@ -1,6 +1,6 @@
1;;; latin-9.el --- set up case-conversion and syntax tables for ISO Latin-9 1;;; latin-9.el --- set up case-conversion and syntax tables for ISO Latin-9
2 2
3;; Copyright (C) 1988,1997,1999 Free Software Foundation, Inc. 3;; Copyright (C) 1988, 1997, 1999, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Dave Love 5;; Author: Dave Love
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -50,7 +50,9 @@
50 (if set-case-syntax-set-multibyte 50 (if set-case-syntax-set-multibyte
51 (- (make-char 'latin-iso8859-15) 128) 51 (- (make-char 'latin-iso8859-15) 128)
52 0))) 52 0)))
53 (set-case-syntax 160 " " tbl) ;no-break space 53 ;; NBSP isn't semantically interchangeable with other whitespace chars,
54 ;; so it's more like punctation.
55 (set-case-syntax 160 "." tbl) ;no-break space
54 (set-case-syntax 161 "." tbl) ;inverted exclamation mark 56 (set-case-syntax 161 "." tbl) ;inverted exclamation mark
55 (set-case-syntax 162 "w" tbl) ;cent sign 57 (set-case-syntax 162 "w" tbl) ;cent sign
56 (set-case-syntax 163 "w" tbl) ;pound sign 58 (set-case-syntax 163 "w" tbl) ;pound sign
@@ -117,11 +119,11 @@
117(or set-case-syntax-set-multibyte 119(or set-case-syntax-set-multibyte
118 (provide 'latin-9)) 120 (provide 'latin-9))
119 121
120;;; Don't compile this file: src/Makefile.in instructs make-docfile 122;; Don't compile this file: src/Makefile.in instructs make-docfile
121;;; to look at the .el file! 123;; to look at the .el file!
122;;; Local Variables: 124;; Local Variables:
123;;; no-byte-compile: t 125;; no-byte-compile: t
124;;; End: 126;; End:
125 127
126;;; arch-tag: 84d442ad-d595-4016-8b84-ea92704fd235 128;; arch-tag: 84d442ad-d595-4016-8b84-ea92704fd235
127;;; latin-9.el ends here 129;;; latin-9.el ends here
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index b6bcb3938b0..92f997d7b4a 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,8 @@
12005-04-08 Dan Nicolaescu <dann@ics.uci.edu>
2
3 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
4 high number of colors displays.
5
12005-03-25 Werner Lemberg <wl@gnu.org> 62005-03-25 Werner Lemberg <wl@gnu.org>
2 7
3 * mh-e.el, mh-identity.el, mh-mime.el: Replace `legal' with `valid'. 8 * mh-e.el, mh-identity.el, mh-mime.el: Replace `legal' with `valid'.
@@ -85,18 +90,18 @@
852004-08-15 Bill Wohler <wohler@newt.com> 902004-08-15 Bill Wohler <wohler@newt.com>
86 91
87 * Released MH-E version 7.4.80. 92 * Released MH-E version 7.4.80.
88 93
89 * MH-E-NEWS, README: Updated for release 7.4.80. 94 * MH-E-NEWS, README: Updated for release 7.4.80.
90 95
91 * mh-e.el (Version, mh-version): Updated for release 7.4.80. 96 * mh-e.el (Version, mh-version): Updated for release 7.4.80.
92 97
932004-08-15 Bill Wohler <wohler@newt.com> 982004-08-15 Bill Wohler <wohler@newt.com>
94 99
95 * mh-funcs.el, mh-gnus.el, mh-inc.el, mh-init.el, mh-junk.el, 100 * mh-funcs.el, mh-gnus.el, mh-inc.el, mh-init.el, mh-junk.el,
96 mh-pick.el, mh-print.el, mh-xemacs.el: Added 2004 to Copyright. 101 mh-pick.el, mh-print.el, mh-xemacs.el: Added 2004 to Copyright.
97 102
98 * mh-acros.el, mh-alias.el: Checkdoc fixes. 103 * mh-acros.el, mh-alias.el: Checkdoc fixes.
99 104
1002004-08-12 Satyaki Das <satyaki@theforce.stanford.edu> 1052004-08-12 Satyaki Das <satyaki@theforce.stanford.edu>
101 106
102 * mh-acros.el (cl): Load cl in this file. That is all right, since 107 * mh-acros.el (cl): Load cl in this file. That is all right, since
@@ -130,7 +135,7 @@
130 do a good job of suppressing compilation warnings in 21.3 and CVS 135 do a good job of suppressing compilation warnings in 21.3 and CVS
131 Emacs (21.4). This replaces (require 'cl) or (require 136 Emacs (21.4). This replaces (require 'cl) or (require
132 'utils) (mh-require-cl) calls: 137 'utils) (mh-require-cl) calls:
133 138
134 (eval-when-compile (require 'mh-acros)) 139 (eval-when-compile (require 'mh-acros))
135 (mh-require-cl) 140 (mh-require-cl)
136 141
@@ -151,7 +156,7 @@
151 156
152 * mh-seq.el (mh-thread-message, mh-thread-container): Use 157 * mh-seq.el (mh-thread-message, mh-thread-container): Use
153 mh-defstruct instead of defstruct. 158 mh-defstruct instead of defstruct.
154 (mh-thread-id-container, mh-thread-get-message-container) 159 (mh-thread-id-container, mh-thread-get-message-container)
155 (mh-thread-get-message): Use the slightly different structure 160 (mh-thread-get-message): Use the slightly different structure
156 constructor function. 161 constructor function.
157 162
@@ -240,8 +245,8 @@
240 programs are run in background. Running in foreground can be slow. 245 programs are run in background. Running in foreground can be slow.
241 Defaults to nil to spare machines with little memory. 246 Defaults to nil to spare machines with little memory.
242 247
243 * mh-junk.el (mh-spamassassin-blacklist, mh-bogofilter-blacklist) 248 * mh-junk.el (mh-spamassassin-blacklist, mh-bogofilter-blacklist)
244 (mh-bogofilter-whitelist, mh-spamprobe-blacklist) 249 (mh-bogofilter-whitelist, mh-spamprobe-blacklist)
245 (mh-spamprobe-whitelist): Use new option mh-junk-background. 250 (mh-spamprobe-whitelist): Use new option mh-junk-background.
246 251
2472004-07-25 Satyaki Das <satyaki@theforce.stanford.edu> 2522004-07-25 Satyaki Das <satyaki@theforce.stanford.edu>
@@ -266,7 +271,7 @@
266 * mh-customize.el (mh-invisible-header-fields-internal): Added 271 * mh-customize.el (mh-invisible-header-fields-internal): Added
267 header fields emitted by T-Mobile picture phones (X-Mms-*, and 272 header fields emitted by T-Mobile picture phones (X-Mms-*, and
268 commented out X-Operator field saying it's like X-Mailer). 273 commented out X-Operator field saying it's like X-Mailer).
269 274
2702004-07-12 Bill Wohler <wohler@newt.com> 2752004-07-12 Bill Wohler <wohler@newt.com>
271 276
272 * mh-gnus.el: Set local variables indent-tabs-mode and 277 * mh-gnus.el: Set local variables indent-tabs-mode and
@@ -306,7 +311,7 @@
306 311
307 * mh-init.el (mh-variant-set, mh-sys-path, mh-variant-mu-mh-info): 312 * mh-init.el (mh-variant-set, mh-sys-path, mh-variant-mu-mh-info):
308 Prefer GNU mailutils over GNU Mailutils MH. 313 Prefer GNU mailutils over GNU Mailutils MH.
309 314
310 * mh-comp.el (sc-cite-original, mh-smail, mh-smail-batch) 315 * mh-comp.el (sc-cite-original, mh-smail, mh-smail-batch)
311 (mh-edit-again, mh-extract-rejected-mail, mh-forward) 316 (mh-edit-again, mh-extract-rejected-mail, mh-forward)
312 (mh-smail-other-window, mh-reply, mh-send, mh-send-other-window): 317 (mh-smail-other-window, mh-reply, mh-send, mh-send-other-window):
@@ -325,8 +330,8 @@
325 * MH-E-NEWS, README: Updated for release 7.4.4. 330 * MH-E-NEWS, README: Updated for release 7.4.4.
326 331
327 * mh-e.el (Version, mh-version): Updated for release 7.4.4. 332 * mh-e.el (Version, mh-version): Updated for release 7.4.4.
328 333
329 * This patch release contains the following patches: 334 This patch release contains the following patches:
330 335
331 * mh-xemacs.el: New file from concatenation of mh-xemacs-compat.el 336 * mh-xemacs.el: New file from concatenation of mh-xemacs-compat.el
332 and mh-xemacs-icons.el which were removed since their names 337 and mh-xemacs-icons.el which were removed since their names
@@ -390,9 +395,9 @@
390 (require 'mouse): To shush compiler. 395 (require 'mouse): To shush compiler.
391 396
392 * Use new function mh-require-cl throughout. 397 * Use new function mh-require-cl throughout.
393 398
394 * Add arch taglines (courtesy Miles Bader). 399 * Add arch taglines (courtesy Miles Bader).
395 400
396 * mh-unit.el (mh-unit-files): Replaced mh-xemacs-compat.el and 401 * mh-unit.el (mh-unit-files): Replaced mh-xemacs-compat.el and
397 mh-xemacs-icons.el with mh-xemacs.el. 402 mh-xemacs-icons.el with mh-xemacs.el.
398 403
@@ -409,10 +414,10 @@
409 414
4102004-07-07 Stephen Gildea 4152004-07-07 Stephen Gildea
411 416
412 * mh-customize.el (mh-invisible-header-fields-internal): 417 * mh-customize.el (mh-invisible-header-fields-internal):
413 Add X-Greylist, X-Source*, and X-WebTV-Signature. 418 Add X-Greylist, X-Source*, and X-WebTV-Signature.
414 Replace specific X-Spam-* headers with general pattern. 419 Replace specific X-Spam-* headers with general pattern.
415 420
4162004-06-15 Bill Wohler <wohler@newt.com> 4212004-06-15 Bill Wohler <wohler@newt.com>
417 422
418 * README: Vladimir Ivanovic reports that mh-rmail works with 423 * README: Vladimir Ivanovic reports that mh-rmail works with
@@ -438,7 +443,7 @@
438 443
4392004-04-07 Satyaki Das <satyaki@theforce.stanford.edu> 4442004-04-07 Satyaki Das <satyaki@theforce.stanford.edu>
440 445
441 * mh-mime.el (mh-insert-mime-button) 446 * mh-mime.el (mh-insert-mime-button)
442 (mh-insert-mime-security-button): Add evaporate property to 447 (mh-insert-mime-security-button): Add evaporate property to
443 overlays used in MIME part buttons. This avoids problems with 448 overlays used in MIME part buttons. This avoids problems with
444 CVS Emacs. 449 CVS Emacs.
@@ -459,10 +464,10 @@
459 464
4602003-12-26 Jeffrey C Honig <jch@honig.net> 4652003-12-26 Jeffrey C Honig <jch@honig.net>
461 466
462 * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist) 467 * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist)
463 (mh-spamassassin-blacklist, mh-spamassassin-blacklist) 468 (mh-spamassassin-blacklist, mh-spamassassin-blacklist)
464 (mh-spamassassin-blacklist, mh-spamassassin-whitelist) 469 (mh-spamassassin-blacklist, mh-spamassassin-whitelist)
465 (mh-spamassassin-whitelist, mh-bogofilter-blacklist) 470 (mh-spamassassin-whitelist, mh-bogofilter-blacklist)
466 (mh-spamprobe-blacklist): Add progress messages. Change "Couldn't" 471 (mh-spamprobe-blacklist): Add progress messages. Change "Couldn't"
467 to "Unable" in error messages. Run bogofilter and spamprobe in 472 to "Unable" in error messages. Run bogofilter and spamprobe in
468 the foreground to prevent a large number of processes from 473 the foreground to prevent a large number of processes from
@@ -536,9 +541,9 @@
536 * MH-E-NEWS, README: Updated for release 7.4.3. 541 * MH-E-NEWS, README: Updated for release 7.4.3.
537 542
538 * mh-e.el (Version, mh-version): Updated for release 7.4.3. 543 * mh-e.el (Version, mh-version): Updated for release 7.4.3.
539 544
540 * This patch release contains the following two patches: 545 * This patch release contains the following two patches:
541 546
542 * mh-identity.el (mh-identity-make-menu): Removed condition on 547 * mh-identity.el (mh-identity-make-menu): Removed condition on
543 mh-auto-fields-list. Use it to enable or disable menu item 548 mh-auto-fields-list. Use it to enable or disable menu item
544 instead. 549 instead.
@@ -576,10 +581,10 @@
576 581
5772003-11-14 Mark D. Baushke <mdb@gnu.org> 5822003-11-14 Mark D. Baushke <mdb@gnu.org>
578 583
579 * mh-customize.el (mh-invisible-header-fields-internal): 584 * mh-customize.el (mh-invisible-header-fields-internal):
580 Add X-AntiAbuse and X-MailScanner. 585 Add X-AntiAbuse and X-MailScanner.
581 (Patch from Stephen Gildea.) 586 (Patch from Stephen Gildea.)
582 587
5832003-11-13 Peter S Galbraith <psg@debian.org> 5882003-11-13 Peter S Galbraith <psg@debian.org>
584 589
585 * mh-identity.el (mh-identity-handler-attribution-verb): New 590 * mh-identity.el (mh-identity-handler-attribution-verb): New
@@ -689,14 +694,14 @@
689 694
6902003-11-02 Jeffrey C Honig <jch@honig.net> 6952003-11-02 Jeffrey C Honig <jch@honig.net>
691 696
692 * mh-loaddefs.el: Regenerated. 697 * mh-loaddefs.el: Regenerated.
693 698
694 * mh-funcs.el (mh-print-msg): Move to mh-print.el. 699 * mh-funcs.el (mh-print-msg): Move to mh-print.el.
695 700
696 * mh-e.el (mh-folder-mode-map): Add mh-print-msg ("l") back, it 701 * mh-e.el (mh-folder-mode-map): Add mh-print-msg ("l") back, it
697 will print a message that this usage is deprecated. 702 will print a message that this usage is deprecated.
698 703
699 * mh-print.el (require, mh-ps-print-msg, mh-ps-print-msg-file): 704 * mh-print.el (require, mh-ps-print-msg, mh-ps-print-msg-file):
700 Require mh-funcs for mh-note-printed. PS print functions were not 705 Require mh-funcs for mh-note-printed. PS print functions were not
701 setting the printed notation. Move mh-print-msg here for 706 setting the printed notation. Move mh-print-msg here for
702 consistency. Print message if mh-print-msg invoked via deprecated 707 consistency. Print message if mh-print-msg invoked via deprecated
@@ -790,7 +795,7 @@
790 (custom-load.elc): Allow for '-no-autoloads'. 795 (custom-load.elc): Allow for '-no-autoloads'.
791 (compile-xemacs): New. It allows for the '-no-autoloads' option 796 (compile-xemacs): New. It allows for the '-no-autoloads' option
792 and byte-compiles all the source files with a single instance of 797 and byte-compiles all the source files with a single instance of
793 XEmacs. 798 XEmacs.
794 799
795 * mh-e.el (mh-folder-mode): Only load the toolbar in XEmacs if 800 * mh-e.el (mh-folder-mode): Only load the toolbar in XEmacs if
796 toolbar support is available. 801 toolbar support is available.
@@ -874,7 +879,7 @@
8742003-10-09 Peter S Galbraith <psg@debian.org> 8792003-10-09 Peter S Galbraith <psg@debian.org>
875 880
876 * mh-customize.el (mail-citation-hook): Moved from mh-comp.el and 881 * mh-customize.el (mail-citation-hook): Moved from mh-comp.el and
877 made into a defcustom. 882 made into a defcustom.
878 883
8792003-10-09 Satyaki Das <satyakid@stanford.edu> 8842003-10-09 Satyaki Das <satyakid@stanford.edu>
880 885
@@ -938,10 +943,10 @@
938 parenthetical comment. 943 parenthetical comment.
939 944
940 * mh-loaddefs.el: Regenerated. 945 * mh-loaddefs.el: Regenerated.
941 946
942 * mh-customize.el (mh-mml-method-default): What method should be 947 * mh-customize.el (mh-mml-method-default): What method should be
943 used in secure directives. 948 used in secure directives.
944 949
945 * mh-mime.el (mh-secure-message): New function used to generate 950 * mh-mime.el (mh-secure-message): New function used to generate
946 the mml security tags. 951 the mml security tags.
947 (mh-mml-unsecure-message): New wrapper function around 952 (mh-mml-unsecure-message): New wrapper function around
@@ -1061,7 +1066,7 @@
1061 1066
1062 * mh-customize.el (mh-identity-handlers): New defcustom. Alist of 1067 * mh-customize.el (mh-identity-handlers): New defcustom. Alist of
1063 Handler functions for mh-identity (downcased) fields. 1068 Handler functions for mh-identity (downcased) fields.
1064 (mh-identity-list): Add support for pgg-default-user-id. 1069 (mh-identity-list): Add support for pgg-default-user-id.
1065 1070
1066 * mh-identity.el (mh-insert-identity): Modified to use 1071 * mh-identity.el (mh-insert-identity): Modified to use
1067 `mh-identity-handlers', adding hacking flexibility for those who 1072 `mh-identity-handlers', adding hacking flexibility for those who
@@ -1084,7 +1089,7 @@
1084 (mh-header-field-delete): Make more robust wrt the field having a 1089 (mh-header-field-delete): Make more robust wrt the field having a
1085 trailing colon or not. 1090 trailing colon or not.
1086 (mh-identity-make-menu): Add a "Customize Identities" menu entry. 1091 (mh-identity-make-menu): Add a "Customize Identities" menu entry.
1087 1092
1088 * mh-loaddefs.el: Regenerated. 1093 * mh-loaddefs.el: Regenerated.
1089 1094
10902003-09-21 Peter S Galbraith <psg@debian.org> 10952003-09-21 Peter S Galbraith <psg@debian.org>
@@ -1093,7 +1098,7 @@
1093 with version numbers. 1098 with version numbers.
1094 1099
1095 * mh-e.el (mh-scan-format): patch from Sergey Poznyakoff. 1100 * mh-e.el (mh-scan-format): patch from Sergey Poznyakoff.
1096 GNU mailutils now supports the %(decode) format 1101 GNU mailutils now supports the %(decode) format
1097 1102
10982003-09-20 Satyaki Das <satyakid@stanford.edu> 11032003-09-20 Satyaki Das <satyakid@stanford.edu>
1099 1104
@@ -1422,7 +1427,7 @@
1422 * mh-utils.el (mh-find-path): Run setup code only if 1427 * mh-utils.el (mh-find-path): Run setup code only if
1423 `mh-find-path-run' is nil such that this is only done once. 1428 `mh-find-path-run' is nil such that this is only done once.
1424 Also remove the `setq' for `read-mail-command' and `mail-user-agent'. 1429 Also remove the `setq' for `read-mail-command' and `mail-user-agent'.
1425 1430
14262003-08-18 Peter S Galbraith <psg@debian.org> 14312003-08-18 Peter S Galbraith <psg@debian.org>
1427 1432
1428 * mh-e.el: require 'mh-utils first 1433 * mh-e.el: require 'mh-utils first
@@ -1441,16 +1446,16 @@
1441 (mh-path-search): Deleted. Was only used by `mh-find-progs'. 1446 (mh-path-search): Deleted. Was only used by `mh-find-progs'.
1442 1447
1443 * mh-e.el: require mh-init.el. 1448 * mh-e.el: require mh-init.el.
1444 (mh-version): Use simpler `mh-variant-in-use'. 1449 (mh-version): Use simpler `mh-variant-in-use'.
1445 (mh-scan-format): Use (mh-variant-p 'nmh) instead of mh-nmh-flag. 1450 (mh-scan-format): Use (mh-variant-p 'nmh) instead of mh-nmh-flag.
1446 1451
1447 * mh-comp.el (mh-insert-x-mailer): Use simpler `mh-variant-in-use'. 1452 * mh-comp.el (mh-insert-x-mailer): Use simpler `mh-variant-in-use'.
1448 1453
1449 * mh-utils.el (mh-progs, mh-lib, mh-lib-progs) 1454 * mh-utils.el (mh-progs, mh-lib, mh-lib-progs)
1450 (mh-flists-present-flag): Moved to mh-init.el. 1455 (mh-flists-present-flag): Moved to mh-init.el.
1451 (mh-nmh-flag): Deleted. Use (mh-variant-p 'nmh) instead. 1456 (mh-nmh-flag): Deleted. Use (mh-variant-p 'nmh) instead.
1452 1457
1453 * mh-comp.el (mh-repl-group-formfile, mh-forward, mh-reply) 1458 * mh-comp.el (mh-repl-group-formfile, mh-forward, mh-reply)
1454 (mh-send-letter): Use (mh-variant-p 'nmh) instead of mh-nmh-flag. 1459 (mh-send-letter): Use (mh-variant-p 'nmh) instead of mh-nmh-flag.
1455 1460
1456 * mh-mime.el (mh-edit-mhn, mh-mime-save-parts): Use (mh-variant-p 1461 * mh-mime.el (mh-edit-mhn, mh-mime-save-parts): Use (mh-variant-p
@@ -1484,7 +1489,7 @@
1484 (mh-variant-in-use, mh-variant-p): Developers may check which 1489 (mh-variant-in-use, mh-variant-p): Developers may check which
1485 variant is currently in use with the variable `mh-variant-in-use' 1490 variant is currently in use with the variable `mh-variant-in-use'
1486 or the function `mh-variant-p'. 1491 or the function `mh-variant-p'.
1487 1492
14882003-08-15 Bill Wohler <wohler@newt.com> 14932003-08-15 Bill Wohler <wohler@newt.com>
1489 1494
1490 * mh-customize.el (mh-auto-fields-list): The manual uses Fcc 1495 * mh-customize.el (mh-auto-fields-list): The manual uses Fcc
@@ -1653,7 +1658,7 @@
1653 1658
1654 * mh-identity.el (mh-insert-identity): Refactor to use 1659 * mh-identity.el (mh-insert-identity): Refactor to use
1655 mh-insert-signature 1660 mh-insert-signature
1656 1661
1657 * mh-comp.el (mh-signature-separator-p): Removed. 1662 * mh-comp.el (mh-signature-separator-p): Removed.
1658 1663
1659 * mh-comp.el (mh-insert-signature): Merge MIME awareness from 1664 * mh-comp.el (mh-insert-signature): Merge MIME awareness from
@@ -1724,8 +1729,8 @@
1724 * mh-funcs.el (mh-undo-folder): Ditto. 1729 * mh-funcs.el (mh-undo-folder): Ditto.
1725 1730
1726 * mh-mime.el (mh-mime-save-parts): Ditto. 1731 * mh-mime.el (mh-mime-save-parts): Ditto.
1727 1732
1728 * mh-seq.el (mh-subject-to-sequence-unthreaded) 1733 * mh-seq.el (mh-subject-to-sequence-unthreaded)
1729 (mh-narrow-to-subject, mh-delete-subject): Ditto. 1734 (mh-narrow-to-subject, mh-delete-subject): Ditto.
1730 1735
1731 * mh-index.el (mh-index-sequenced-messages) 1736 * mh-index.el (mh-index-sequenced-messages)
@@ -2021,7 +2026,7 @@
2021 (mh-unit-equal): New function that throws an error if RESULT 2026 (mh-unit-equal): New function that throws an error if RESULT
2022 doesn't equal EXPECTED. 2027 doesn't equal EXPECTED.
2023 (mh-unit): Call mh-unit-x-image-url-cache-canonicalize. 2028 (mh-unit): Call mh-unit-x-image-url-cache-canonicalize.
2024 2029
20252003-07-29 Satyaki Das <satyakid@stanford.edu> 20302003-07-29 Satyaki Das <satyakid@stanford.edu>
2026 2031
2027 * mh-unit.el (mh-unit-update-call-graph): Make the function work 2032 * mh-unit.el (mh-unit-update-call-graph): Make the function work
@@ -2159,10 +2164,10 @@
2159 hoping to quote the hint `t' but checkdoc wouldn't let me. 2164 hoping to quote the hint `t' but checkdoc wouldn't let me.
2160 (mh-note-deleted, mh-note-refiled, mh-note-cur): Moved to Scan 2165 (mh-note-deleted, mh-note-refiled, mh-note-cur): Moved to Scan
2161 Line Formats section. 2166 Line Formats section.
2162 (mh-scan-good-msg-regexp, mh-scan-deleted-msg-regexp) 2167 (mh-scan-good-msg-regexp, mh-scan-deleted-msg-regexp)
2163 (mh-scan-refiled-msg-regexp, mh-scan-valid-regexp) 2168 (mh-scan-refiled-msg-regexp, mh-scan-valid-regexp)
2164 (mh-scan-cur-msg-number-regexp, mh-scan-date-regexp) 2169 (mh-scan-cur-msg-number-regexp, mh-scan-date-regexp)
2165 (mh-scan-rcpt-regexp, mh-scan-body-regexp) 2170 (mh-scan-rcpt-regexp, mh-scan-body-regexp)
2166 (mh-scan-subject-regexp, mh-scan-format-regexp): Cleaned 2171 (mh-scan-subject-regexp, mh-scan-format-regexp): Cleaned
2167 up docstrings (changed phrases to sentences). 2172 up docstrings (changed phrases to sentences).
2168 (mh-scan-cur-msg-regexp): Marked this variable as obsolete; it 2173 (mh-scan-cur-msg-regexp): Marked this variable as obsolete; it
@@ -2350,7 +2355,7 @@
2350 * mh-utils.el (mh-replace-in-string): New function name instead of 2355 * mh-utils.el (mh-replace-in-string): New function name instead of
2351 `dired-replace-in-string'. 2356 `dired-replace-in-string'.
2352 * mh-alias.el (mh-alias-gcos-name): Use it. 2357 * mh-alias.el (mh-alias-gcos-name): Use it.
2353 2358
2354 * mh-alias.el (mh-alias-apropos): New command. Show all aliases 2359 * mh-alias.el (mh-alias-apropos): New command. Show all aliases
2355 that match REGEXP either in name or content. 2360 that match REGEXP either in name or content.
2356 2361
@@ -2374,7 +2379,7 @@
23742003-06-02 Peter S Galbraith <psg@debian.org> 23792003-06-02 Peter S Galbraith <psg@debian.org>
2375 2380
2376 * mh-utils.el (dired-replace-in-string): Bind if not already 2381 * mh-utils.el (dired-replace-in-string): Bind if not already
2377 defined. Borrowed from dired.el 2382 defined. Borrowed from dired.el
2378 2383
2379 * mh-alias.el (mh-alias-gcos-name): switch to using 2384 * mh-alias.el (mh-alias-gcos-name): switch to using
2380 dired-replace-in-string. 2385 dired-replace-in-string.
@@ -2425,7 +2430,7 @@
2425 second time. I have wrapped the value around \b word delimiters. 2430 second time. I have wrapped the value around \b word delimiters.
2426 Hope there are no side effects for other code. 2431 Hope there are no side effects for other code.
2427 2432
2428 * mh-comp.el (mh-insert-auto-fields): Attempt regardless of 2433 * mh-comp.el (mh-insert-auto-fields): Attempt regardless of
2429 `mh-insert-auto-fields-done-local' flag in interactive use. 2434 `mh-insert-auto-fields-done-local' flag in interactive use.
2430 2435
2431 * mh-comp.el (mh-insert-auto-fields-done-local): Keep track of 2436 * mh-comp.el (mh-insert-auto-fields-done-local): Keep track of
@@ -3153,7 +3158,7 @@
3153 * mh-e.el (mh-folder-map): Add "F'" to the map for 3158 * mh-e.el (mh-folder-map): Add "F'" to the map for
3154 mh-index-ticked-messages. 3159 mh-index-ticked-messages.
3155 (mh-help-messages): Replace broken [t]hread with [n]ew messages. 3160 (mh-help-messages): Replace broken [t]hread with [n]ew messages.
3156 3161
3157 * mh-customize.el (mh-index-ticked-messages-folders): New user 3162 * mh-customize.el (mh-index-ticked-messages-folders): New user
3158 customizable flag that controls the folders to be searched by 3163 customizable flag that controls the folders to be searched by
3159 mh-index-ticked-messages. 3164 mh-index-ticked-messages.
@@ -3224,7 +3229,7 @@
3224 * mh-unit.el (mh-unit): As it turns out, lm-crack-copyright has 3229 * mh-unit.el (mh-unit): As it turns out, lm-crack-copyright has
3225 been updated to handle multiple-line copyrights in 21.3, so 3230 been updated to handle multiple-line copyrights in 21.3, so
3226 updated code to run lm-verify only if user has 21.3 or greater. 3231 updated code to run lm-verify only if user has 21.3 or greater.
3227 Delete buffers after use, unless user already had buffer open. 3232 Delete buffers after use, unless user already had buffer open.
3228 3233
32292003-04-27 Satyaki Das <satyakid@stanford.edu> 32342003-04-27 Satyaki Das <satyakid@stanford.edu>
3230 3235
@@ -3433,7 +3438,7 @@
3433 'mh-customize'. 3438 'mh-customize'.
3434 3439
3435 * mh-customize.el: Require 'mh-xemacs-icons' instead of 3440 * mh-customize.el: Require 'mh-xemacs-icons' instead of
3436 'mh-xemacs-toolbar'. 3441 'mh-xemacs-toolbar'.
3437 3442
34382003-04-17 Peter S Galbraith <psg@debian.org> 34432003-04-17 Peter S Galbraith <psg@debian.org>
3439 3444
@@ -10928,9 +10933,9 @@
10928 $(EMACS_HOME)/src. 10933 $(EMACS_HOME)/src.
10929 (dist): Leave release in current directory. 10934 (dist): Leave release in current directory.
10930 10935
10931 10936
10932Copyright (C) 2003, 2004 Free Software Foundation, Inc. 10937Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
10933 10938
10934Copying and distribution of this file, with or without modification, 10939Copying and distribution of this file, with or without modification,
10935are permitted in any medium without royalty provided the copyright 10940are permitted in any medium without royalty provided the copyright
10936notice and this notice are preserved. 10941notice and this notice are preserved.
diff --git a/lisp/mh-e/mh-customize.el b/lisp/mh-e/mh-customize.el
index 622c457897f..c9a4b11702d 100644
--- a/lisp/mh-e/mh-customize.el
+++ b/lisp/mh-e/mh-customize.el
@@ -1,6 +1,6 @@
1;;; mh-customize.el --- MH-E customization 1;;; mh-customize.el --- MH-E customization
2 2
3;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Bill Wohler <wohler@newt.com> 5;; Author: Bill Wohler <wohler@newt.com>
6;; Maintainer: Bill Wohler <wohler@newt.com> 6;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -2345,9 +2345,9 @@ The background and foreground is used in the image."
2345 2345
2346(defface mh-speedbar-selected-folder-face 2346(defface mh-speedbar-selected-folder-face
2347 '((((class color) (background light)) 2347 '((((class color) (background light))
2348 (:foreground "red" :underline t)) 2348 (:foreground "red1" :underline t))
2349 (((class color) (background dark)) 2349 (((class color) (background dark))
2350 (:foreground "red" :underline t)) 2350 (:foreground "red1" :underline t))
2351 (t (:underline t))) 2351 (t (:underline t)))
2352 "Face used for the current folder." 2352 "Face used for the current folder."
2353 :group 'mh-speed-faces) 2353 :group 'mh-speed-faces)
diff --git a/lisp/mouse.el b/lisp/mouse.el
index a409efadeca..a527b040d8a 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -788,8 +788,7 @@ POS may be a mouse event location in any window.
788A clickable link is identified by one of the following methods: 788A clickable link is identified by one of the following methods:
789 789
790- If the character at POS has a non-nil `follow-link' text or 790- If the character at POS has a non-nil `follow-link' text or
791overlay property, use the value of that property determines what 791overlay property, the value of that property determines what to do.
792to do.
793 792
794- If there is a local key-binding or a keybinding at position POS 793- If there is a local key-binding or a keybinding at position POS
795for the `follow-link' event, the binding of that event determines 794for the `follow-link' event, the binding of that event determines
diff --git a/lisp/pcvs-info.el b/lisp/pcvs-info.el
index 77e165b2462..0f66099c46f 100644
--- a/lisp/pcvs-info.el
+++ b/lisp/pcvs-info.el
@@ -1,7 +1,7 @@
1;;; pcvs-info.el --- internal representation of a fileinfo entry 1;;; pcvs-info.el --- internal representation of a fileinfo entry
2 2
3;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 3;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4;; 2000, 2004 Free Software Foundation, Inc. 4;; 2000, 2004, 2005 Free Software Foundation, Inc.
5 5
6;; Author: Stefan Monnier <monnier@cs.yale.edu> 6;; Author: Stefan Monnier <monnier@cs.yale.edu>
7;; Keywords: pcl-cvs 7;; Keywords: pcl-cvs
@@ -105,7 +105,9 @@ to confuse some users sometimes."
105 :group 'pcl-cvs) 105 :group 'pcl-cvs)
106 106
107(defface cvs-marked-face 107(defface cvs-marked-face
108 '((((class color) (background dark)) 108 '((((min-colors 88) (class color) (background dark))
109 (:foreground "green1" :weight bold))
110 (((class color) (background dark))
109 (:foreground "green" :weight bold)) 111 (:foreground "green" :weight bold))
110 (((class color) (background light)) 112 (((class color) (background light))
111 (:foreground "green3" :weight bold)) 113 (:foreground "green3" :weight bold))
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index c5bbfaf86dd..8ca47af91f4 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -1,6 +1,6 @@
1;;; cc-fonts.el --- font lock support for CC Mode 1;;; cc-fonts.el --- font lock support for CC Mode
2 2
3;; Copyright (C) 2002, 03 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
4 4
5;; Authors: 2003- Alan Mackenzie 5;; Authors: 2003- Alan Mackenzie
6;; 2002- Martin Stjernholm 6;; 2002- Martin Stjernholm
@@ -194,7 +194,7 @@
194(unless (c-face-name-p c-invalid-face-name) 194(unless (c-face-name-p c-invalid-face-name)
195 (defconst c-invalid-face 'c-invalid-face) ; Necessary in Emacs 19. 195 (defconst c-invalid-face 'c-invalid-face) ; Necessary in Emacs 19.
196 (defface c-invalid-face 196 (defface c-invalid-face
197 '((((class color) (background light)) (:foreground "red")) 197 '((((class color) (background light)) (:foreground "red1"))
198 (((class color)) (:foreground "hotpink")) 198 (((class color)) (:foreground "hotpink"))
199 (t (:inverse-video t))) 199 (t (:inverse-video t)))
200 "Face used to highlight invalid syntax." 200 "Face used to highlight invalid syntax."
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index bcff4d2f70d..129a01f5498 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1,7 +1,7 @@
1;;; compile.el --- run compiler as inferior of Emacs, parse error messages 1;;; compile.el --- run compiler as inferior of Emacs, parse error messages
2 2
3;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 3;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4;; 2001, 2003, 2004 Free Software Foundation, Inc. 4;; 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
5 5
6;; Authors: Roland McGrath <roland@gnu.org>, 6;; Authors: Roland McGrath <roland@gnu.org>,
7;; Daniel Pfeiffer <occitan@esperanto.org> 7;; Daniel Pfeiffer <occitan@esperanto.org>
@@ -280,7 +280,18 @@ File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?"
280 280
281 (4bsd 281 (4bsd
282 "\\(?:^\\|:: \\|\\S ( \\)\\(/[^ \n\t()]+\\)(\\([0-9]+\\))\ 282 "\\(?:^\\|:: \\|\\S ( \\)\\(/[^ \n\t()]+\\)(\\([0-9]+\\))\
283\\(?:: \\(warning:\\)?\\|$\\| ),\\)" 1 2 nil (3))) 283\\(?:: \\(warning:\\)?\\|$\\| ),\\)" 1 2 nil (3))
284
285 (gcov-file
286 "^ +-: \\(0\\):Source:\\(.+\\)$" 2 1 nil 0)
287 (gcov-bb-file
288 "^ +-: \\(0\\):Object:\\(?:.+\\)$" nil 1 nil 0)
289 (gcov-never-called-line
290 "^ +\\(#####\\): +\\([0-9]+\\):.+$" nil 2 nil 2 nil
291 (1 compilation-error-face))
292 (gcov-called-line
293 "^ +[-0-9]+: +\\([1-9]\\|[0-9]\\{2,\\}\\):.*$" nil 1 nil 0)
294)
284 "Alist of values for `compilation-error-regexp-alist'.") 295 "Alist of values for `compilation-error-regexp-alist'.")
285 296
286(defcustom compilation-error-regexp-alist 297(defcustom compilation-error-regexp-alist
@@ -464,6 +475,8 @@ starting the compilation process.")
464(defface compilation-info-face 475(defface compilation-info-face
465 '((((class color) (min-colors 16) (background light)) 476 '((((class color) (min-colors 16) (background light))
466 (:foreground "Green3" :weight bold)) 477 (:foreground "Green3" :weight bold))
478 (((class color) (min-colors 88) (background dark))
479 (:foreground "Green1" :weight bold))
467 (((class color) (min-colors 16) (background dark)) 480 (((class color) (min-colors 16) (background dark))
468 (:foreground "Green" :weight bold)) 481 (:foreground "Green" :weight bold))
469 (((class color)) (:foreground "green" :weight bold)) 482 (((class color)) (:foreground "green" :weight bold))
@@ -1844,6 +1857,9 @@ FILE should be (ABSOLUTE-FILENAME) or (RELATIVE-FILENAME . DIRNAME)."
1844 ;; don't use a marker. --Stef 1857 ;; don't use a marker. --Stef
1845 (if (> pos (point-min)) (copy-marker (1- pos)) pos)))) 1858 (if (> pos (point-min)) (copy-marker (1- pos)) pos))))
1846 1859
1860;;;###autoload
1861(add-to-list 'auto-mode-alist '("\\.gcov\\'" . compilation-mode))
1862
1847(provide 'compile) 1863(provide 'compile)
1848 1864
1849;; arch-tag: 12465727-7382-4f72-b234-79855a00dd8c 1865;; arch-tag: 12465727-7382-4f72-b234-79855a00dd8c
diff --git a/lisp/progmodes/ebrowse.el b/lisp/progmodes/ebrowse.el
index bf11ea28514..ac8ab28d92a 100644
--- a/lisp/progmodes/ebrowse.el
+++ b/lisp/progmodes/ebrowse.el
@@ -1,6 +1,6 @@
1;;; ebrowse.el --- Emacs C++ class browser & tags facility 1;;; ebrowse.el --- Emacs C++ class browser & tags facility
2 2
3;; Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002 3;; Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002, 2005
4;; Free Software Foundation Inc. 4;; Free Software Foundation Inc.
5 5
6;; Author: Gerd Moellmann <gerd@gnu.org> 6;; Author: Gerd Moellmann <gerd@gnu.org>
@@ -158,13 +158,15 @@ This space is used to display markers."
158 158
159 159
160(defface ebrowse-tree-mark-face 160(defface ebrowse-tree-mark-face
161 '((t (:foreground "red"))) 161 '((((min-colors 88)) (:foreground "red1"))
162 (t (:foreground "red")))
162 "*The face used for the mark character in the tree." 163 "*The face used for the mark character in the tree."
163 :group 'ebrowse-faces) 164 :group 'ebrowse-faces)
164 165
165 166
166(defface ebrowse-root-class-face 167(defface ebrowse-root-class-face
167 '((t (:weight bold :foreground "blue"))) 168 '((((min-colors 88)) (:weight bold :foreground "blue1"))
169 (t (:weight bold :foreground "blue")))
168 "*The face used for root classes in the tree." 170 "*The face used for root classes in the tree."
169 :group 'ebrowse-faces) 171 :group 'ebrowse-faces)
170 172
@@ -182,7 +184,8 @@ This space is used to display markers."
182 184
183 185
184(defface ebrowse-member-attribute-face 186(defface ebrowse-member-attribute-face
185 '((t (:foreground "red"))) 187 '((((min-colors 88)) (:foreground "red1"))
188 (t (:foreground "red")))
186 "*Face used to display member attributes." 189 "*Face used to display member attributes."
187 :group 'ebrowse-faces) 190 :group 'ebrowse-faces)
188 191
@@ -194,7 +197,8 @@ This space is used to display markers."
194 197
195 198
196(defface ebrowse-progress-face 199(defface ebrowse-progress-face
197 '((t (:background "blue"))) 200 '((((min-colors 88)) (:background "blue1"))
201 (t (:background "blue")))
198 "*Face for progress indicator." 202 "*Face for progress indicator."
199 :group 'ebrowse-faces) 203 :group 'ebrowse-faces)
200 204
diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el
index 28f61b6cbcc..e3da5508342 100644
--- a/lisp/progmodes/idlw-help.el
+++ b/lisp/progmodes/idlw-help.el
@@ -1,7 +1,7 @@
1;;; idlw-help.el --- HTML Help code for IDLWAVE 1;;; idlw-help.el --- HTML Help code for IDLWAVE
2;; Copyright (c) 2000 Carsten Dominik 2;; Copyright (c) 2000 Carsten Dominik
3;; Copyright (c) 2001, 2002 J.D. Smith 3;; Copyright (c) 2001, 2002 J.D. Smith
4;; Copyright (c) 2003,2004 Free Software Foundation 4;; Copyright (c) 2003,2004,2005 Free Software Foundation
5;; 5;;
6;; Authors: J.D. Smith <jdsmith@as.arizona.edu> 6;; Authors: J.D. Smith <jdsmith@as.arizona.edu>
7;; Carsten Dominik <dominik@astro.uva.nl> 7;; Carsten Dominik <dominik@astro.uva.nl>
@@ -183,7 +183,8 @@ support."
183 :type 'string) 183 :type 'string)
184 184
185(defface idlwave-help-link-face 185(defface idlwave-help-link-face
186 '((((class color)) (:foreground "Blue")) 186 '((((min-colors 88) (class color)) (:foreground "Blue1"))
187 (((class color)) (:foreground "Blue"))
187 (t (:weight bold))) 188 (t (:weight bold)))
188 "Face for highlighting links into IDLWAVE online help." 189 "Face for highlighting links into IDLWAVE online help."
189 :group 'idlwave-online-help) 190 :group 'idlwave-online-help)
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 8579cccb0c2..7015c0d943d 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -779,7 +779,10 @@ See `sh-feature'.")
779;; Font-Lock support 779;; Font-Lock support
780 780
781(defface sh-heredoc-face 781(defface sh-heredoc-face
782 '((((class color) 782 '((((min-colors 88) (class color)
783 (background dark))
784 (:foreground "yellow1" :weight bold))
785 (((class color)
783 (background dark)) 786 (background dark))
784 (:foreground "yellow" :weight bold)) 787 (:foreground "yellow" :weight bold))
785 (((class color) 788 (((class color)
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 7e30a816e15..9f0e63e80a6 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -2039,7 +2039,7 @@ Ignore byte-compiler warnings you might see."
2039 2039
2040(defun vhdl-run-when-idle (secs repeat function) 2040(defun vhdl-run-when-idle (secs repeat function)
2041 "Wait until idle, then run FUNCTION." 2041 "Wait until idle, then run FUNCTION."
2042 (if vhdl-xemacs 2042 (if (fboundp 'start-itimer)
2043 (start-itimer "vhdl-mode" function secs repeat t) 2043 (start-itimer "vhdl-mode" function secs repeat t)
2044; (run-with-idle-timer secs repeat function))) 2044; (run-with-idle-timer secs repeat function)))
2045 ;; explicitely activate timer (necessary when Emacs is already idle) 2045 ;; explicitely activate timer (necessary when Emacs is already idle)
@@ -2679,7 +2679,9 @@ STRING are replaced by `-' and substrings are converted to lower case."
2679 (define-key vhdl-mode-map " " 'vhdl-electric-space) 2679 (define-key vhdl-mode-map " " 'vhdl-electric-space)
2680 (if vhdl-intelligent-tab 2680 (if vhdl-intelligent-tab
2681 (define-key vhdl-mode-map "\t" 'vhdl-electric-tab) 2681 (define-key vhdl-mode-map "\t" 'vhdl-electric-tab)
2682 (define-key vhdl-mode-map "\t" 'indent-according-to-mode)) 2682 ;; The default binding of TAB already calls `indent-according-to-mode'.
2683 ;; (define-key vhdl-mode-map "\t" 'indent-according-to-mode)
2684 )
2683 (define-key vhdl-mode-map "\r" 'vhdl-electric-return) 2685 (define-key vhdl-mode-map "\r" 'vhdl-electric-return)
2684 (define-key vhdl-mode-map "-" 'vhdl-electric-dash) 2686 (define-key vhdl-mode-map "-" 'vhdl-electric-dash)
2685 (define-key vhdl-mode-map "[" 'vhdl-electric-open-bracket) 2687 (define-key vhdl-mode-map "[" 'vhdl-electric-open-bracket)
@@ -2696,12 +2698,14 @@ STRING are replaced by `-' and substrings are converted to lower case."
2696 2698
2697;; define special minibuffer keymap for enabling word completion in minibuffer 2699;; define special minibuffer keymap for enabling word completion in minibuffer
2698;; (useful in template generator prompts) 2700;; (useful in template generator prompts)
2699(defvar vhdl-minibuffer-local-map (copy-keymap minibuffer-local-map) 2701(defvar vhdl-minibuffer-local-map
2702 (let ((map (make-sparse-keymap)))
2703 (set-keymap-parent map minibuffer-local-map)
2704 (when vhdl-word-completion-in-minibuffer
2705 (define-key map "\t" 'vhdl-minibuffer-tab))
2706 map)
2700 "Keymap for minibuffer used in VHDL Mode.") 2707 "Keymap for minibuffer used in VHDL Mode.")
2701 2708
2702(when vhdl-word-completion-in-minibuffer
2703 (define-key vhdl-minibuffer-local-map "\t" 'vhdl-minibuffer-tab))
2704
2705;; set up electric character functions to work with 2709;; set up electric character functions to work with
2706;; `delete-selection-mode' (Emacs) and `pending-delete-mode' (XEmacs) 2710;; `delete-selection-mode' (Emacs) and `pending-delete-mode' (XEmacs)
2707(mapcar 2711(mapcar
@@ -2792,134 +2796,134 @@ STRING are replaced by `-' and substrings are converted to lower case."
2792 (when (memq 'vhdl vhdl-electric-keywords) 2796 (when (memq 'vhdl vhdl-electric-keywords)
2793 ;; VHDL'93 keywords 2797 ;; VHDL'93 keywords
2794 '( 2798 '(
2795 ("--" "" vhdl-template-display-comment-hook 0) 2799 ("--" "" vhdl-template-display-comment-hook 0 t)
2796 ("abs" "" vhdl-template-default-hook 0) 2800 ("abs" "" vhdl-template-default-hook 0 t)
2797 ("access" "" vhdl-template-default-hook 0) 2801 ("access" "" vhdl-template-default-hook 0 t)
2798 ("after" "" vhdl-template-default-hook 0) 2802 ("after" "" vhdl-template-default-hook 0 t)
2799 ("alias" "" vhdl-template-alias-hook 0) 2803 ("alias" "" vhdl-template-alias-hook 0 t)
2800 ("all" "" vhdl-template-default-hook 0) 2804 ("all" "" vhdl-template-default-hook 0 t)
2801 ("and" "" vhdl-template-default-hook 0) 2805 ("and" "" vhdl-template-default-hook 0 t)
2802 ("arch" "" vhdl-template-architecture-hook 0) 2806 ("arch" "" vhdl-template-architecture-hook 0 t)
2803 ("architecture" "" vhdl-template-architecture-hook 0) 2807 ("architecture" "" vhdl-template-architecture-hook 0 t)
2804 ("array" "" vhdl-template-default-hook 0) 2808 ("array" "" vhdl-template-default-hook 0 t)
2805 ("assert" "" vhdl-template-assert-hook 0) 2809 ("assert" "" vhdl-template-assert-hook 0 t)
2806 ("attr" "" vhdl-template-attribute-hook 0) 2810 ("attr" "" vhdl-template-attribute-hook 0 t)
2807 ("attribute" "" vhdl-template-attribute-hook 0) 2811 ("attribute" "" vhdl-template-attribute-hook 0 t)
2808 ("begin" "" vhdl-template-default-indent-hook 0) 2812 ("begin" "" vhdl-template-default-indent-hook 0 t)
2809 ("block" "" vhdl-template-block-hook 0) 2813 ("block" "" vhdl-template-block-hook 0 t)
2810 ("body" "" vhdl-template-default-hook 0) 2814 ("body" "" vhdl-template-default-hook 0 t)
2811 ("buffer" "" vhdl-template-default-hook 0) 2815 ("buffer" "" vhdl-template-default-hook 0 t)
2812 ("bus" "" vhdl-template-default-hook 0) 2816 ("bus" "" vhdl-template-default-hook 0 t)
2813 ("case" "" vhdl-template-case-hook 0) 2817 ("case" "" vhdl-template-case-hook 0 t)
2814 ("comp" "" vhdl-template-component-hook 0) 2818 ("comp" "" vhdl-template-component-hook 0 t)
2815 ("component" "" vhdl-template-component-hook 0) 2819 ("component" "" vhdl-template-component-hook 0 t)
2816 ("cond" "" vhdl-template-conditional-signal-asst-hook 0) 2820 ("cond" "" vhdl-template-conditional-signal-asst-hook 0 t)
2817 ("conditional" "" vhdl-template-conditional-signal-asst-hook 0) 2821 ("conditional" "" vhdl-template-conditional-signal-asst-hook 0 t)
2818 ("conf" "" vhdl-template-configuration-hook 0) 2822 ("conf" "" vhdl-template-configuration-hook 0 t)
2819 ("configuration" "" vhdl-template-configuration-hook 0) 2823 ("configuration" "" vhdl-template-configuration-hook 0 t)
2820 ("cons" "" vhdl-template-constant-hook 0) 2824 ("cons" "" vhdl-template-constant-hook 0 t)
2821 ("constant" "" vhdl-template-constant-hook 0) 2825 ("constant" "" vhdl-template-constant-hook 0 t)
2822 ("disconnect" "" vhdl-template-disconnect-hook 0) 2826 ("disconnect" "" vhdl-template-disconnect-hook 0 t)
2823 ("downto" "" vhdl-template-default-hook 0) 2827 ("downto" "" vhdl-template-default-hook 0 t)
2824 ("else" "" vhdl-template-else-hook 0) 2828 ("else" "" vhdl-template-else-hook 0 t)
2825 ("elseif" "" vhdl-template-elsif-hook 0) 2829 ("elseif" "" vhdl-template-elsif-hook 0 t)
2826 ("elsif" "" vhdl-template-elsif-hook 0) 2830 ("elsif" "" vhdl-template-elsif-hook 0 t)
2827 ("end" "" vhdl-template-default-indent-hook 0) 2831 ("end" "" vhdl-template-default-indent-hook 0 t)
2828 ("entity" "" vhdl-template-entity-hook 0) 2832 ("entity" "" vhdl-template-entity-hook 0 t)
2829 ("exit" "" vhdl-template-exit-hook 0) 2833 ("exit" "" vhdl-template-exit-hook 0 t)
2830 ("file" "" vhdl-template-file-hook 0) 2834 ("file" "" vhdl-template-file-hook 0 t)
2831 ("for" "" vhdl-template-for-hook 0) 2835 ("for" "" vhdl-template-for-hook 0 t)
2832 ("func" "" vhdl-template-function-hook 0) 2836 ("func" "" vhdl-template-function-hook 0 t)
2833 ("function" "" vhdl-template-function-hook 0) 2837 ("function" "" vhdl-template-function-hook 0 t)
2834 ("generic" "" vhdl-template-generic-hook 0) 2838 ("generic" "" vhdl-template-generic-hook 0 t)
2835 ("group" "" vhdl-template-group-hook 0) 2839 ("group" "" vhdl-template-group-hook 0 t)
2836 ("guarded" "" vhdl-template-default-hook 0) 2840 ("guarded" "" vhdl-template-default-hook 0 t)
2837 ("if" "" vhdl-template-if-hook 0) 2841 ("if" "" vhdl-template-if-hook 0 t)
2838 ("impure" "" vhdl-template-default-hook 0) 2842 ("impure" "" vhdl-template-default-hook 0 t)
2839 ("in" "" vhdl-template-default-hook 0) 2843 ("in" "" vhdl-template-default-hook 0 t)
2840 ("inertial" "" vhdl-template-default-hook 0) 2844 ("inertial" "" vhdl-template-default-hook 0 t)
2841 ("inout" "" vhdl-template-default-hook 0) 2845 ("inout" "" vhdl-template-default-hook 0 t)
2842 ("inst" "" vhdl-template-instance-hook 0) 2846 ("inst" "" vhdl-template-instance-hook 0 t)
2843 ("instance" "" vhdl-template-instance-hook 0) 2847 ("instance" "" vhdl-template-instance-hook 0 t)
2844 ("is" "" vhdl-template-default-hook 0) 2848 ("is" "" vhdl-template-default-hook 0 t)
2845 ("label" "" vhdl-template-default-hook 0) 2849 ("label" "" vhdl-template-default-hook 0 t)
2846 ("library" "" vhdl-template-library-hook 0) 2850 ("library" "" vhdl-template-library-hook 0 t)
2847 ("linkage" "" vhdl-template-default-hook 0) 2851 ("linkage" "" vhdl-template-default-hook 0 t)
2848 ("literal" "" vhdl-template-default-hook 0) 2852 ("literal" "" vhdl-template-default-hook 0 t)
2849 ("loop" "" vhdl-template-bare-loop-hook 0) 2853 ("loop" "" vhdl-template-bare-loop-hook 0 t)
2850 ("map" "" vhdl-template-map-hook 0) 2854 ("map" "" vhdl-template-map-hook 0 t)
2851 ("mod" "" vhdl-template-default-hook 0) 2855 ("mod" "" vhdl-template-default-hook 0 t)
2852 ("nand" "" vhdl-template-default-hook 0) 2856 ("nand" "" vhdl-template-default-hook 0 t)
2853 ("new" "" vhdl-template-default-hook 0) 2857 ("new" "" vhdl-template-default-hook 0 t)
2854 ("next" "" vhdl-template-next-hook 0) 2858 ("next" "" vhdl-template-next-hook 0 t)
2855 ("nor" "" vhdl-template-default-hook 0) 2859 ("nor" "" vhdl-template-default-hook 0 t)
2856 ("not" "" vhdl-template-default-hook 0) 2860 ("not" "" vhdl-template-default-hook 0 t)
2857 ("null" "" vhdl-template-default-hook 0) 2861 ("null" "" vhdl-template-default-hook 0 t)
2858 ("of" "" vhdl-template-default-hook 0) 2862 ("of" "" vhdl-template-default-hook 0 t)
2859 ("on" "" vhdl-template-default-hook 0) 2863 ("on" "" vhdl-template-default-hook 0 t)
2860 ("open" "" vhdl-template-default-hook 0) 2864 ("open" "" vhdl-template-default-hook 0 t)
2861 ("or" "" vhdl-template-default-hook 0) 2865 ("or" "" vhdl-template-default-hook 0 t)
2862 ("others" "" vhdl-template-others-hook 0) 2866 ("others" "" vhdl-template-others-hook 0 t)
2863 ("out" "" vhdl-template-default-hook 0) 2867 ("out" "" vhdl-template-default-hook 0 t)
2864 ("pack" "" vhdl-template-package-hook 0) 2868 ("pack" "" vhdl-template-package-hook 0 t)
2865 ("package" "" vhdl-template-package-hook 0) 2869 ("package" "" vhdl-template-package-hook 0 t)
2866 ("port" "" vhdl-template-port-hook 0) 2870 ("port" "" vhdl-template-port-hook 0 t)
2867 ("postponed" "" vhdl-template-default-hook 0) 2871 ("postponed" "" vhdl-template-default-hook 0 t)
2868 ("procedure" "" vhdl-template-procedure-hook 0) 2872 ("procedure" "" vhdl-template-procedure-hook 0 t)
2869 ("process" "" vhdl-template-process-hook 0) 2873 ("process" "" vhdl-template-process-hook 0 t)
2870 ("pure" "" vhdl-template-default-hook 0) 2874 ("pure" "" vhdl-template-default-hook 0 t)
2871 ("range" "" vhdl-template-default-hook 0) 2875 ("range" "" vhdl-template-default-hook 0 t)
2872 ("record" "" vhdl-template-default-hook 0) 2876 ("record" "" vhdl-template-default-hook 0 t)
2873 ("register" "" vhdl-template-default-hook 0) 2877 ("register" "" vhdl-template-default-hook 0 t)
2874 ("reject" "" vhdl-template-default-hook 0) 2878 ("reject" "" vhdl-template-default-hook 0 t)
2875 ("rem" "" vhdl-template-default-hook 0) 2879 ("rem" "" vhdl-template-default-hook 0 t)
2876 ("report" "" vhdl-template-report-hook 0) 2880 ("report" "" vhdl-template-report-hook 0 t)
2877 ("return" "" vhdl-template-return-hook 0) 2881 ("return" "" vhdl-template-return-hook 0 t)
2878 ("rol" "" vhdl-template-default-hook 0) 2882 ("rol" "" vhdl-template-default-hook 0 t)
2879 ("ror" "" vhdl-template-default-hook 0) 2883 ("ror" "" vhdl-template-default-hook 0 t)
2880 ("select" "" vhdl-template-selected-signal-asst-hook 0) 2884 ("select" "" vhdl-template-selected-signal-asst-hook 0 t)
2881 ("severity" "" vhdl-template-default-hook 0) 2885 ("severity" "" vhdl-template-default-hook 0 t)
2882 ("shared" "" vhdl-template-default-hook 0) 2886 ("shared" "" vhdl-template-default-hook 0 t)
2883 ("sig" "" vhdl-template-signal-hook 0) 2887 ("sig" "" vhdl-template-signal-hook 0 t)
2884 ("signal" "" vhdl-template-signal-hook 0) 2888 ("signal" "" vhdl-template-signal-hook 0 t)
2885 ("sla" "" vhdl-template-default-hook 0) 2889 ("sla" "" vhdl-template-default-hook 0 t)
2886 ("sll" "" vhdl-template-default-hook 0) 2890 ("sll" "" vhdl-template-default-hook 0 t)
2887 ("sra" "" vhdl-template-default-hook 0) 2891 ("sra" "" vhdl-template-default-hook 0 t)
2888 ("srl" "" vhdl-template-default-hook 0) 2892 ("srl" "" vhdl-template-default-hook 0 t)
2889 ("subtype" "" vhdl-template-subtype-hook 0) 2893 ("subtype" "" vhdl-template-subtype-hook 0 t)
2890 ("then" "" vhdl-template-default-hook 0) 2894 ("then" "" vhdl-template-default-hook 0 t)
2891 ("to" "" vhdl-template-default-hook 0) 2895 ("to" "" vhdl-template-default-hook 0 t)
2892 ("transport" "" vhdl-template-default-hook 0) 2896 ("transport" "" vhdl-template-default-hook 0 t)
2893 ("type" "" vhdl-template-type-hook 0) 2897 ("type" "" vhdl-template-type-hook 0 t)
2894 ("unaffected" "" vhdl-template-default-hook 0) 2898 ("unaffected" "" vhdl-template-default-hook 0 t)
2895 ("units" "" vhdl-template-default-hook 0) 2899 ("units" "" vhdl-template-default-hook 0 t)
2896 ("until" "" vhdl-template-default-hook 0) 2900 ("until" "" vhdl-template-default-hook 0 t)
2897 ("use" "" vhdl-template-use-hook 0) 2901 ("use" "" vhdl-template-use-hook 0 t)
2898 ("var" "" vhdl-template-variable-hook 0) 2902 ("var" "" vhdl-template-variable-hook 0 t)
2899 ("variable" "" vhdl-template-variable-hook 0) 2903 ("variable" "" vhdl-template-variable-hook 0 t)
2900 ("wait" "" vhdl-template-wait-hook 0) 2904 ("wait" "" vhdl-template-wait-hook 0 t)
2901 ("when" "" vhdl-template-when-hook 0) 2905 ("when" "" vhdl-template-when-hook 0 t)
2902 ("while" "" vhdl-template-while-loop-hook 0) 2906 ("while" "" vhdl-template-while-loop-hook 0 t)
2903 ("with" "" vhdl-template-with-hook 0) 2907 ("with" "" vhdl-template-with-hook 0 t)
2904 ("xnor" "" vhdl-template-default-hook 0) 2908 ("xnor" "" vhdl-template-default-hook 0 t)
2905 ("xor" "" vhdl-template-default-hook 0) 2909 ("xor" "" vhdl-template-default-hook 0 t)
2906 )) 2910 ))
2907 ;; VHDL-AMS keywords 2911 ;; VHDL-AMS keywords
2908 (when (and (memq 'vhdl vhdl-electric-keywords) (vhdl-standard-p 'ams)) 2912 (when (and (memq 'vhdl vhdl-electric-keywords) (vhdl-standard-p 'ams))
2909 '( 2913 '(
2910 ("across" "" vhdl-template-default-hook 0) 2914 ("across" "" vhdl-template-default-hook 0 t)
2911 ("break" "" vhdl-template-break-hook 0) 2915 ("break" "" vhdl-template-break-hook 0 t)
2912 ("limit" "" vhdl-template-limit-hook 0) 2916 ("limit" "" vhdl-template-limit-hook 0 t)
2913 ("nature" "" vhdl-template-nature-hook 0) 2917 ("nature" "" vhdl-template-nature-hook 0 t)
2914 ("noise" "" vhdl-template-default-hook 0) 2918 ("noise" "" vhdl-template-default-hook 0 t)
2915 ("procedural" "" vhdl-template-procedural-hook 0) 2919 ("procedural" "" vhdl-template-procedural-hook 0 t)
2916 ("quantity" "" vhdl-template-quantity-hook 0) 2920 ("quantity" "" vhdl-template-quantity-hook 0 t)
2917 ("reference" "" vhdl-template-default-hook 0) 2921 ("reference" "" vhdl-template-default-hook 0 t)
2918 ("spectrum" "" vhdl-template-default-hook 0) 2922 ("spectrum" "" vhdl-template-default-hook 0 t)
2919 ("subnature" "" vhdl-template-subnature-hook 0) 2923 ("subnature" "" vhdl-template-subnature-hook 0 t)
2920 ("terminal" "" vhdl-template-terminal-hook 0) 2924 ("terminal" "" vhdl-template-terminal-hook 0 t)
2921 ("through" "" vhdl-template-default-hook 0) 2925 ("through" "" vhdl-template-default-hook 0 t)
2922 ("tolerance" "" vhdl-template-default-hook 0) 2926 ("tolerance" "" vhdl-template-default-hook 0 t)
2923 )) 2927 ))
2924 ;; user model keywords 2928 ;; user model keywords
2925 (when (memq 'user vhdl-electric-keywords) 2929 (when (memq 'user vhdl-electric-keywords)
@@ -2931,7 +2935,7 @@ STRING are replaced by `-' and substrings are converted to lower case."
2931 (setq abbrev-list 2935 (setq abbrev-list
2932 (cons (list keyword "" 2936 (cons (list keyword ""
2933 (vhdl-function-name 2937 (vhdl-function-name
2934 "vhdl-model" (nth 0 (car alist)) "hook") 0) 2938 "vhdl-model" (nth 0 (car alist)) "hook") 0 t)
2935 abbrev-list))) 2939 abbrev-list)))
2936 (setq alist (cdr alist))) 2940 (setq alist (cdr alist)))
2937 abbrev-list))))) 2941 abbrev-list)))))
@@ -3746,7 +3750,8 @@ STRING are replaced by `-' and substrings are converted to lower case."
3746 ("Highlight" 3750 ("Highlight"
3747 ["Highlighting On/Off..." 3751 ["Highlighting On/Off..."
3748 (customize-option 3752 (customize-option
3749 (if vhdl-xemacs 'font-lock-auto-fontify 'global-font-lock-mode)) t] 3753 (if (fboundp 'global-font-lock-mode)
3754 'global-font-lock-mode 'font-lock-auto-fontify)) t]
3750 ["Highlight Keywords" 3755 ["Highlight Keywords"
3751 (progn (customize-set-variable 'vhdl-highlight-keywords 3756 (progn (customize-set-variable 'vhdl-highlight-keywords
3752 (not vhdl-highlight-keywords)) 3757 (not vhdl-highlight-keywords))
@@ -7854,7 +7859,7 @@ Used for undoing after template abortion.")
7854;; correct different behavior of function `unread-command-events' in XEmacs 7859;; correct different behavior of function `unread-command-events' in XEmacs
7855(defun vhdl-character-to-event (arg)) 7860(defun vhdl-character-to-event (arg))
7856(defalias 'vhdl-character-to-event 7861(defalias 'vhdl-character-to-event
7857 (if vhdl-xemacs 'character-to-event 'identity)) 7862 (if (fboundp 'character-to-event) 'character-to-event 'identity))
7858 7863
7859(defun vhdl-work-library () 7864(defun vhdl-work-library ()
7860 "Return the working library name of the current project or \"work\" if no 7865 "Return the working library name of the current project or \"work\" if no
@@ -10399,7 +10404,7 @@ but not if inside a comment or quote)."
10399 (when (stringp caught) (message caught))) 10404 (when (stringp caught) (message caught)))
10400 (when (= invoke-char ?-) (setq abbrev-start-location (point))) 10405 (when (= invoke-char ?-) (setq abbrev-start-location (point)))
10401 ;; delete CR which is still in event queue 10406 ;; delete CR which is still in event queue
10402 (if vhdl-xemacs 10407 (if (fboundp 'enqueue-eval-event)
10403 (enqueue-eval-event 'delete-char -1) 10408 (enqueue-eval-event 'delete-char -1)
10404 (setq unread-command-events ; push back a delete char 10409 (setq unread-command-events ; push back a delete char
10405 (list (vhdl-character-to-event ?\177)))))))) 10410 (list (vhdl-character-to-event ?\177))))))))
@@ -11923,9 +11928,7 @@ options vhdl-upper-case-{keywords,types,attributes,enum-values}."
11923 "Return the line number of the line containing point." 11928 "Return the line number of the line containing point."
11924 (save-restriction 11929 (save-restriction
11925 (widen) 11930 (widen)
11926 (save-excursion 11931 (1+ (count-lines (point-min) (line-beginning-position)))))
11927 (beginning-of-line)
11928 (1+ (count-lines 1 (point))))))
11929 11932
11930(defun vhdl-line-kill-entire (&optional arg) 11933(defun vhdl-line-kill-entire (&optional arg)
11931 "Delete entire line." 11934 "Delete entire line."
@@ -12593,7 +12596,9 @@ This does background highlighting of translate-off regions.")
12593 'vhdl-highlight-faces 'font-lock-variable-name-face 'custom-face) 12596 'vhdl-highlight-faces 'font-lock-variable-name-face 'custom-face)
12594 12597
12595(defface vhdl-font-lock-prompt-face 12598(defface vhdl-font-lock-prompt-face
12596 '((((class color) (background light)) (:foreground "Red" :bold t)) 12599 '((((min-colors 88) (class color) (background light))
12600 (:foreground "Red1" :bold t))
12601 (((class color) (background light)) (:foreground "Red" :bold t))
12597 (((class color) (background dark)) (:foreground "Pink" :bold t)) 12602 (((class color) (background dark)) (:foreground "Pink" :bold t))
12598 (t (:inverse-video t))) 12603 (t (:inverse-video t)))
12599 "Font lock mode face used to highlight prompts." 12604 "Font lock mode face used to highlight prompts."
@@ -12634,6 +12639,8 @@ This does background highlighting of translate-off regions.")
12634 12639
12635(defface vhdl-font-lock-reserved-words-face 12640(defface vhdl-font-lock-reserved-words-face
12636 '((((class color) (background light)) (:foreground "Orange" :bold t)) 12641 '((((class color) (background light)) (:foreground "Orange" :bold t))
12642 (((min-colors 88) (class color) (background dark))
12643 (:foreground "Yellow1" :bold t))
12637 (((class color) (background dark)) (:foreground "Yellow" :bold t)) 12644 (((class color) (background dark)) (:foreground "Yellow" :bold t))
12638 (t ())) 12645 (t ()))
12639 "Font lock mode face used to highlight additional reserved words." 12646 "Font lock mode face used to highlight additional reserved words."
@@ -14975,7 +14982,8 @@ expansion function)."
14975 :group 'speedbar-faces) 14982 :group 'speedbar-faces)
14976 14983
14977(defface vhdl-speedbar-architecture-face 14984(defface vhdl-speedbar-architecture-face
14978 '((((class color) (background light)) (:foreground "Blue")) 14985 '((((min-colors 88) (class color) (background light)) (:foreground "Blue1"))
14986 (((class color) (background light)) (:foreground "Blue"))
14979 (((class color) (background dark)) (:foreground "LightSkyBlue"))) 14987 (((class color) (background dark)) (:foreground "LightSkyBlue")))
14980 "Face used for displaying architecture names." 14988 "Face used for displaying architecture names."
14981 :group 'speedbar-faces) 14989 :group 'speedbar-faces)
@@ -15000,6 +15008,7 @@ expansion function)."
15000 15008
15001(defface vhdl-speedbar-instantiation-face 15009(defface vhdl-speedbar-instantiation-face
15002 '((((class color) (background light)) (:foreground "Brown")) 15010 '((((class color) (background light)) (:foreground "Brown"))
15011 (((min-colors 88) (class color) (background dark)) (:foreground "Yellow1"))
15003 (((class color) (background dark)) (:foreground "Yellow"))) 15012 (((class color) (background dark)) (:foreground "Yellow")))
15004 "Face used for displaying instantiation names." 15013 "Face used for displaying instantiation names."
15005 :group 'speedbar-faces) 15014 :group 'speedbar-faces)
@@ -15017,7 +15026,9 @@ expansion function)."
15017 :group 'speedbar-faces) 15026 :group 'speedbar-faces)
15018 15027
15019(defface vhdl-speedbar-architecture-selected-face 15028(defface vhdl-speedbar-architecture-selected-face
15020 '((((class color) (background light)) (:foreground "Blue" :underline t)) 15029 '((((min-colors 88) (class color) (background light)) (:foreground "Blue1" :underline t))
15030 (((min-colors 88) (class color) (background light)) (:foreground "Blue1" :underline t))
15031 (((class color) (background light)) (:foreground "Blue" :underline t))
15021 (((class color) (background dark)) (:foreground "LightSkyBlue" :underline t))) 15032 (((class color) (background dark)) (:foreground "LightSkyBlue" :underline t)))
15022 "Face used for displaying architecture names." 15033 "Face used for displaying architecture names."
15023 :group 'speedbar-faces) 15034 :group 'speedbar-faces)
@@ -15036,6 +15047,7 @@ expansion function)."
15036 15047
15037(defface vhdl-speedbar-instantiation-selected-face 15048(defface vhdl-speedbar-instantiation-selected-face
15038 '((((class color) (background light)) (:foreground "Brown" :underline t)) 15049 '((((class color) (background light)) (:foreground "Brown" :underline t))
15050 (((min-colors 88) (class color) (background dark)) (:foreground "Yellow1" :underline t))
15039 (((class color) (background dark)) (:foreground "Yellow" :underline t))) 15051 (((class color) (background dark)) (:foreground "Yellow" :underline t)))
15040 "Face used for displaying instantiation names." 15052 "Face used for displaying instantiation names."
15041 :group 'speedbar-faces) 15053 :group 'speedbar-faces)
@@ -16550,26 +16562,24 @@ to visually support naming conventions.")
16550(defun vhdl-doc-variable (variable) 16562(defun vhdl-doc-variable (variable)
16551 "Display VARIABLE's documentation in *Help* buffer." 16563 "Display VARIABLE's documentation in *Help* buffer."
16552 (interactive) 16564 (interactive)
16553 (with-output-to-temp-buffer "*Help*" 16565 (unless vhdl-xemacs
16566 (help-setup-xref (list #'vhdl-doc-variable variable) (interactive-p)))
16567 (with-output-to-temp-buffer (if (fboundp 'help-buffer) (help-buffer) "*Help*")
16554 (princ (documentation-property variable 'variable-documentation)) 16568 (princ (documentation-property variable 'variable-documentation))
16555 (unless vhdl-xemacs 16569 (with-current-buffer standard-output
16556 (help-setup-xref (list #'vhdl-doc-variable variable) (interactive-p)))
16557 (save-excursion
16558 (set-buffer standard-output)
16559 (help-mode)) 16570 (help-mode))
16560 (print-help-return-message))) 16571 (print-help-return-message)))
16561 16572
16562(defun vhdl-doc-mode () 16573(defun vhdl-doc-mode ()
16563 "Display VHDL Mode documentation in *Help* buffer." 16574 "Display VHDL Mode documentation in *Help* buffer."
16564 (interactive) 16575 (interactive)
16565 (with-output-to-temp-buffer "*Help*" 16576 (unless vhdl-xemacs
16577 (help-setup-xref (list #'vhdl-doc-mode) (interactive-p)))
16578 (with-output-to-temp-buffer (if (fboundp 'help-buffer) (help-buffer) "*Help*")
16566 (princ mode-name) 16579 (princ mode-name)
16567 (princ " mode:\n") 16580 (princ " mode:\n")
16568 (princ (documentation 'vhdl-mode)) 16581 (princ (documentation 'vhdl-mode))
16569 (unless vhdl-xemacs 16582 (with-current-buffer standard-output
16570 (help-setup-xref (list #'vhdl-doc-mode) (interactive-p)))
16571 (save-excursion
16572 (set-buffer standard-output)
16573 (help-mode)) 16583 (help-mode))
16574 (print-help-return-message))) 16584 (print-help-return-message)))
16575 16585
@@ -16578,5 +16588,5 @@ to visually support naming conventions.")
16578 16588
16579(provide 'vhdl-mode) 16589(provide 'vhdl-mode)
16580 16590
16581;;; arch-tag: 780d7073-9b5d-4c6c-b0d8-26b28783aba3 16591;; arch-tag: 780d7073-9b5d-4c6c-b0d8-26b28783aba3
16582;;; vhdl-mode.el ends here 16592;;; vhdl-mode.el ends here
diff --git a/lisp/saveplace.el b/lisp/saveplace.el
index e536e3c3237..cb61c8383b5 100644
--- a/lisp/saveplace.el
+++ b/lisp/saveplace.el
@@ -220,7 +220,9 @@ may have changed\) back to `save-place-alist'."
220 ((eq 'nospecial save-place-version-control) version-control) 220 ((eq 'nospecial save-place-version-control) version-control)
221 (t 221 (t
222 t)))) 222 t))))
223 (write-file file) 223 (condition-case nil
224 (write-file file)
225 (file-error (message "Can't write %s" file)))
224 (kill-buffer (current-buffer)) 226 (kill-buffer (current-buffer))
225 (message "Saving places to %s...done" file))))) 227 (message "Saving places to %s...done" file)))))
226 228
diff --git a/lisp/smerge-mode.el b/lisp/smerge-mode.el
index d6a93a935d6..0cab4b31404 100644
--- a/lisp/smerge-mode.el
+++ b/lisp/smerge-mode.el
@@ -76,8 +76,12 @@ Used in `smerge-diff-base-mine' and related functions."
76 :type 'boolean) 76 :type 'boolean)
77 77
78(defface smerge-mine-face 78(defface smerge-mine-face
79 '((((background light)) 79 '((((min-colors 88) (background light))
80 (:foreground "blue1"))
81 (((background light))
80 (:foreground "blue")) 82 (:foreground "blue"))
83 (((min-colors 88) (background dark))
84 (:foreground "cyan1"))
81 (((background dark)) 85 (((background dark))
82 (:foreground "cyan"))) 86 (:foreground "cyan")))
83 "Face for your code." 87 "Face for your code."
@@ -94,7 +98,9 @@ Used in `smerge-diff-base-mine' and related functions."
94(defvar smerge-other-face 'smerge-other-face) 98(defvar smerge-other-face 'smerge-other-face)
95 99
96(defface smerge-base-face 100(defface smerge-base-face
97 '((((background light)) 101 '((((min-colors 88) (background light))
102 (:foreground "red1"))
103 (((background light))
98 (:foreground "red")) 104 (:foreground "red"))
99 (((background dark)) 105 (((background dark))
100 (:foreground "orange"))) 106 (:foreground "orange")))
diff --git a/lisp/startup.el b/lisp/startup.el
index 43faae63022..957a97081cd 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -284,6 +284,8 @@ from being initialized."
284 284
285(defvar emacs-quick-startup nil) 285(defvar emacs-quick-startup nil)
286 286
287(defvar emacs-basic-display nil)
288
287(defvar init-file-debug nil) 289(defvar init-file-debug nil)
288 290
289(defvar init-file-had-error nil) 291(defvar init-file-had-error nil)
@@ -682,11 +684,13 @@ opening the first frame (e.g. open a connection to the server).")
682 (setq argval nil 684 (setq argval nil
683 argi orig-argi))))) 685 argi orig-argi)))))
684 (cond 686 (cond
685 ((member argi '("-Q" "-bare-bones")) 687 ((member argi '("-Q" "-quick"))
686 (setq init-file-user nil 688 (setq init-file-user nil
687 site-run-file nil 689 site-run-file nil
688 no-blinking-cursor t 690 emacs-quick-startup t))
689 emacs-quick-startup t) 691 ((member argi '("-D" "-basic-display"))
692 (setq no-blinking-cursor t
693 emacs-basic-display t)
690 (push '(vertical-scroll-bars . nil) initial-frame-alist)) 694 (push '(vertical-scroll-bars . nil) initial-frame-alist))
691 ((member argi '("-q" "-no-init-file")) 695 ((member argi '("-q" "-no-init-file"))
692 (setq init-file-user nil)) 696 (setq init-file-user nil))
@@ -721,14 +725,14 @@ opening the first frame (e.g. open a connection to the server).")
721 725
722 ;; If frame was created with a menu bar, set menu-bar-mode on. 726 ;; If frame was created with a menu bar, set menu-bar-mode on.
723 (unless (or noninteractive 727 (unless (or noninteractive
724 emacs-quick-startup 728 emacs-basic-display
725 (and (memq initial-window-system '(x w32)) 729 (and (memq initial-window-system '(x w32))
726 (<= (frame-parameter nil 'menu-bar-lines) 0))) 730 (<= (frame-parameter nil 'menu-bar-lines) 0)))
727 (menu-bar-mode 1)) 731 (menu-bar-mode 1))
728 732
729 ;; If frame was created with a tool bar, switch tool-bar-mode on. 733 ;; If frame was created with a tool bar, switch tool-bar-mode on.
730 (unless (or noninteractive 734 (unless (or noninteractive
731 emacs-quick-startup 735 emacs-basic-display
732 (not (display-graphic-p)) 736 (not (display-graphic-p))
733 (<= (frame-parameter nil 'tool-bar-lines) 0)) 737 (<= (frame-parameter nil 'tool-bar-lines) 0))
734 (tool-bar-mode 1)) 738 (tool-bar-mode 1))
@@ -739,7 +743,7 @@ opening the first frame (e.g. open a connection to the server).")
739 (custom-reevaluate-setting 'normal-erase-is-backspace) 743 (custom-reevaluate-setting 'normal-erase-is-backspace)
740 744
741 (unless (or noninteractive 745 (unless (or noninteractive
742 emacs-quick-startup 746 emacs-basic-display
743 (not (display-graphic-p)) 747 (not (display-graphic-p))
744 (not (fboundp 'x-show-tip))) 748 (not (fboundp 'x-show-tip)))
745 (tooltip-mode 1)) 749 (tooltip-mode 1))
@@ -1045,7 +1049,7 @@ using the mouse.\n\n"
1045 "Useful File menu items:\n" 1049 "Useful File menu items:\n"
1046 :face variable-pitch "\ 1050 :face variable-pitch "\
1047Exit Emacs\t(Or type Control-x followed by Control-c) 1051Exit Emacs\t(Or type Control-x followed by Control-c)
1048Recover Session\tRecover files you were editing before a crash 1052Recover Crashed Session\tRecover files you were editing before a crash
1049 1053
1050 1054
1051 1055
@@ -1169,7 +1173,7 @@ where FACE is a valid face specification, as it can be used with
1169 (emacs-version) 1173 (emacs-version)
1170 "\n" 1174 "\n"
1171 :face '(variable-pitch :height 0.5) 1175 :face '(variable-pitch :height 0.5)
1172 "Copyright (C) 2004 Free Software Foundation, Inc.") 1176 "Copyright (C) 2005 Free Software Foundation, Inc.")
1173 (and auto-save-list-file-prefix 1177 (and auto-save-list-file-prefix
1174 ;; Don't signal an error if the 1178 ;; Don't signal an error if the
1175 ;; directory for auto-save-list files 1179 ;; directory for auto-save-list files
diff --git a/lisp/term.el b/lisp/term.el
index 02841db9502..8643ea69fc0 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -3233,7 +3233,7 @@ See `term-prompt-regexp'."
3233 ((eq char ?P) 3233 ((eq char ?P)
3234 (term-delete-chars (max 1 term-terminal-parameter))) 3234 (term-delete-chars (max 1 term-terminal-parameter)))
3235 ;; \E[@ - insert spaces 3235 ;; \E[@ - insert spaces
3236 ((eq char ?@) 3236 ((eq char ?@) ;; (terminfo: ich)
3237 (term-insert-spaces (max 1 term-terminal-parameter))) 3237 (term-insert-spaces (max 1 term-terminal-parameter)))
3238 ;; \E[?h - DEC Private Mode Set 3238 ;; \E[?h - DEC Private Mode Set
3239 ((eq char ?h) 3239 ((eq char ?h)
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index 5b26ea636ac..d9de658c158 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -125,7 +125,7 @@
125 125
126(defun xterm-rgb-convert-to-16bit (prim) 126(defun xterm-rgb-convert-to-16bit (prim)
127 "Convert an 8-bit primary color value PRIM to a corresponding 16-bit value." 127 "Convert an 8-bit primary color value PRIM to a corresponding 16-bit value."
128 (min 65535 (round (* (/ prim 255.0) 65535.0)))) 128 (logior prim (lsh prim 8)))
129 129
130(defun xterm-register-default-colors () 130(defun xterm-register-default-colors ()
131 "Register the default set of colors for xterm or compatible emulator. 131 "Register the default set of colors for xterm or compatible emulator.
@@ -162,9 +162,10 @@ versions of xterm."
162 (tty-color-define (format "color-%d" (- 256 ncolors)) 162 (tty-color-define (format "color-%d" (- 256 ncolors))
163 (- 256 ncolors) 163 (- 256 ncolors)
164 (mapcar 'xterm-rgb-convert-to-16bit 164 (mapcar 'xterm-rgb-convert-to-16bit
165 (list (round (* r 42.5)) 165 (list (if (zerop r) 0 (+ (* r 40) 55))
166 (round (* g 42.5)) 166 (if (zerop g) 0 (+ (* g 40) 55))
167 (round (* b 42.5))))) 167 (if (zerop b) 0 (+ (* b 40) 55)))))
168
168 (setq b (1+ b)) 169 (setq b (1+ b))
169 (if (> b 5) 170 (if (> b 5)
170 (setq g (1+ g) 171 (setq g (1+ g)
@@ -202,7 +203,7 @@ versions of xterm."
202 ;; Now the 8 gray colors 203 ;; Now the 8 gray colors
203 (while (> ncolors 0) 204 (while (> ncolors 0)
204 (setq color (xterm-rgb-convert-to-16bit 205 (setq color (xterm-rgb-convert-to-16bit
205 (round 206 (floor
206 (if (= ncolors 8) 207 (if (= ncolors 8)
207 46.36363636 208 46.36363636
208 (+ (* (- 8 ncolors) 23.18181818) 69.54545454))))) 209 (+ (* (- 8 ncolors) 23.18181818) 69.54545454)))))
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 3e5b77d8baa..69a456f1d70 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -652,7 +652,7 @@ See `bibtex-generate-autokey' for details."
652 652
653(defcustom bibtex-autokey-titleword-ignore 653(defcustom bibtex-autokey-titleword-ignore
654 '("A" "An" "On" "The" "Eine?" "Der" "Die" "Das" 654 '("A" "An" "On" "The" "Eine?" "Der" "Die" "Das"
655 "[^A-Z].*" ".*[^A-Z0-9].*") 655 "[^[:upper:]].*" ".*[^[:upper:]0-9].*")
656 "Determines words from the title that are not to be used in the key. 656 "Determines words from the title that are not to be used in the key.
657Each item of the list is a regexp. If a word of the title matches a 657Each item of the list is a regexp. If a word of the title matches a
658regexp from that list, it is not included in the title part of the key. 658regexp from that list, it is not included in the title part of the key.
@@ -1078,10 +1078,10 @@ The CDRs of the elements are t for header keys and nil for crossref keys.")
1078(defconst bibtex-entry-type (concat "@" bibtex-field-name) 1078(defconst bibtex-entry-type (concat "@" bibtex-field-name)
1079 "Regexp matching the type part of a BibTeX entry.") 1079 "Regexp matching the type part of a BibTeX entry.")
1080 1080
1081(defconst bibtex-reference-key "[][a-zA-Z0-9.:;?!`'/*@+|()<>&_^$-]+" 1081(defconst bibtex-reference-key "[][[:alnum:].:;?!`'/*@+|()<>&_^$-]+"
1082 "Regexp matching the reference key part of a BibTeX entry.") 1082 "Regexp matching the reference key part of a BibTeX entry.")
1083 1083
1084(defconst bibtex-field-const "[][a-zA-Z0-9.:;?!`'/*@+=|<>&_^$-]+" 1084(defconst bibtex-field-const "[][[:alnum:].:;?!`'/*@+=|<>&_^$-]+"
1085 "Regexp matching a BibTeX field constant.") 1085 "Regexp matching a BibTeX field constant.")
1086 1086
1087(defconst bibtex-entry-head 1087(defconst bibtex-entry-head
@@ -2103,7 +2103,7 @@ and `bibtex-autokey-names-stretch'."
2103(defun bibtex-autokey-demangle-name (fullname) 2103(defun bibtex-autokey-demangle-name (fullname)
2104 "Get the last part from a well-formed FULLNAME and perform abbreviations." 2104 "Get the last part from a well-formed FULLNAME and perform abbreviations."
2105 (let* (case-fold-search 2105 (let* (case-fold-search
2106 (name (cond ((string-match "\\([A-Z][^, ]*\\)[^,]*," fullname) 2106 (name (cond ((string-match "\\([[:upper:]][^, ]*\\)[^,]*," fullname)
2107 ;; Name is of the form "von Last, First" or 2107 ;; Name is of the form "von Last, First" or
2108 ;; "von Last, Jr, First" 2108 ;; "von Last, Jr, First"
2109 ;; --> Take the first capital part before the comma 2109 ;; --> Take the first capital part before the comma
@@ -2112,7 +2112,7 @@ and `bibtex-autokey-names-stretch'."
2112 ;; Strange name: we have a comma, but nothing capital 2112 ;; Strange name: we have a comma, but nothing capital
2113 ;; So we accept even lowercase names 2113 ;; So we accept even lowercase names
2114 (match-string 1 fullname)) 2114 (match-string 1 fullname))
2115 ((string-match "\\(\\<[a-z][^ ]* +\\)+\\([A-Z][^ ]*\\)" 2115 ((string-match "\\(\\<[[:lower:]][^ ]* +\\)+\\([[:upper:]][^ ]*\\)"
2116 fullname) 2116 fullname)
2117 ;; name is of the form "First von Last", "von Last", 2117 ;; name is of the form "First von Last", "von Last",
2118 ;; "First von von Last", or "d'Last" 2118 ;; "First von von Last", or "d'Last"
@@ -2796,7 +2796,7 @@ if that value is non-nil.
2796 (set (make-local-variable 'comment-start-skip) 2796 (set (make-local-variable 'comment-start-skip)
2797 (concat (regexp-quote bibtex-comment-start) "\\>[ \t]*")) 2797 (concat (regexp-quote bibtex-comment-start) "\\>[ \t]*"))
2798 (set (make-local-variable 'comment-column) 0) 2798 (set (make-local-variable 'comment-column) 0)
2799 (set (make-local-variable 'defun-prompt-regexp) "^[ \t]*@[a-zA-Z0-9]+[ \t]*") 2799 (set (make-local-variable 'defun-prompt-regexp) "^[ \t]*@[[:alnum:]]+[ \t]*")
2800 (set (make-local-variable 'outline-regexp) "[ \t]*@") 2800 (set (make-local-variable 'outline-regexp) "[ \t]*@")
2801 (set (make-local-variable 'fill-paragraph-function) 'bibtex-fill-field) 2801 (set (make-local-variable 'fill-paragraph-function) 'bibtex-fill-field)
2802 (set (make-local-variable 'fill-prefix) (make-string (+ bibtex-entry-offset 2802 (set (make-local-variable 'fill-prefix) (make-string (+ bibtex-entry-offset
@@ -2825,7 +2825,7 @@ if that value is non-nil.
2825 ;; XEmacs needs easy-menu-add, Emacs does not care 2825 ;; XEmacs needs easy-menu-add, Emacs does not care
2826 (easy-menu-add bibtex-edit-menu) 2826 (easy-menu-add bibtex-edit-menu)
2827 (easy-menu-add bibtex-entry-menu) 2827 (easy-menu-add bibtex-entry-menu)
2828 (run-hooks 'bibtex-mode-hook)) 2828 (run-mode-hooks 'bibtex-mode-hook))
2829 2829
2830(defun bibtex-field-list (entry-type) 2830(defun bibtex-field-list (entry-type)
2831 "Return list of allowed fields for entry ENTRY-TYPE. 2831 "Return list of allowed fields for entry ENTRY-TYPE.
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index dfa3a7fa692..dbe8b1cfbc6 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -221,10 +221,10 @@ Set this to nil if you don't want a modeline indicator."
221 221
222(defcustom flyspell-large-region 1000 222(defcustom flyspell-large-region 1000
223 "*The threshold that determines if a region is small. 223 "*The threshold that determines if a region is small.
224The `flyspell-region' function is invoked if the region is small, the 224If the region is smaller than this number of characters,
225word are checked one after the other using regular flyspell check 225`flyspell-region' checks the words sequentially using regular
226means. If the region is large, a new Ispell process is spawned to get 226flyspell methods. Else, if the region is large, a new Ispell process is
227speed." 227spawned for speed."
228 :group 'flyspell 228 :group 'flyspell
229 :version "21.1" 229 :version "21.1"
230 :type 'number) 230 :type 'number)
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index 52a0c8a1deb..a85e968d3ee 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -683,7 +683,9 @@ height."
683 :group 'table) 683 :group 'table)
684 684
685(defface table-cell-face 685(defface table-cell-face
686 '((((class color)) 686 '((((min-colors 88) (class color))
687 (:foreground "gray90" :background "blue1"))
688 (((class color))
687 (:foreground "gray90" :background "blue")) 689 (:foreground "gray90" :background "blue"))
688 (t (:bold t))) 690 (t (:bold t)))
689 "*Face used for table cell contents." 691 "*Face used for table cell contents."
diff --git a/lisp/url/url-ldap.el b/lisp/url/url-ldap.el
index 24a3ade4922..55f36a4155f 100644
--- a/lisp/url/url-ldap.el
+++ b/lisp/url/url-ldap.el
@@ -1,5 +1,5 @@
1;;; url-ldap.el --- LDAP Uniform Resource Locator retrieval code 1;;; url-ldap.el --- LDAP Uniform Resource Locator retrieval code
2;; Copyright (c) 1998 - 1999, 2004 Free Software Foundation, Inc. 2;; Copyright (c) 1998, 1999, 2004, 2005 Free Software Foundation, Inc.
3 3
4;; Keywords: comm, data, processes 4;; Keywords: comm, data, processes
5 5
@@ -112,10 +112,16 @@
112 (format "<img alt='JPEG Photo' src='data:image/jpeg;base64,%s'>" 112 (format "<img alt='JPEG Photo' src='data:image/jpeg;base64,%s'>"
113 (url-hexify-string (base64-encode-string data)))) 113 (url-hexify-string (base64-encode-string data))))
114 114
115;; FIXME: This needs sorting out for the Emacs LDAP functions, specifically
116;; calls of ldap-open, ldap-close, ldap-search-internal
117;;;###autoload 115;;;###autoload
118(defun url-ldap (url) 116(defun url-ldap (url)
117 "Perform an LDAP search specified by URL.
118The return value is a buffer displaying the search results in HTML.
119URL can be a URL string, or a URL vector of the type returned by
120`url-generic-parse-url'."
121 (if (stringp url)
122 (setq url (url-generic-parse-url (url-unhex-string url)))
123 (if (not (vectorp url))
124 (error "Argument is not a valid URL")))
119 (save-excursion 125 (save-excursion
120 (set-buffer (generate-new-buffer " *url-ldap*")) 126 (set-buffer (generate-new-buffer " *url-ldap*"))
121 (setq url-current-object url) 127 (setq url-current-object url)
@@ -142,10 +148,7 @@
142 (scope nil) 148 (scope nil)
143 (filter nil) 149 (filter nil)
144 (extensions nil) 150 (extensions nil)
145 (connection nil) 151 (results nil))
146 (results nil)
147 (extract-dn (and (fboundp 'function-max-args)
148 (= (function-max-args 'ldap-search-internal) 7))))
149 152
150 ;; Get rid of leading / 153 ;; Get rid of leading /
151 (if (string-match "^/" data) 154 (if (string-match "^/" data)
@@ -163,7 +166,7 @@
163 scope (intern (url-unhex-string (or scope "base"))) 166 scope (intern (url-unhex-string (or scope "base")))
164 filter (url-unhex-string (or filter "(objectClass=*)"))) 167 filter (url-unhex-string (or filter "(objectClass=*)")))
165 168
166 (if (not (memq scope '(base one tree))) 169 (if (not (memq scope '(base one sub)))
167 (error "Malformed LDAP URL: Unknown scope: %S" scope)) 170 (error "Malformed LDAP URL: Unknown scope: %S" scope))
168 171
169 ;; Convert to the internal LDAP support scoping names. 172 ;; Convert to the internal LDAP support scoping names.
@@ -188,12 +191,14 @@
188 (assoc "!bindname" extensions)))) 191 (assoc "!bindname" extensions))))
189 192
190 ;; Now, let's actually do something with it. 193 ;; Now, let's actually do something with it.
191 (setq connection (ldap-open host (if binddn (list 'binddn binddn))) 194 (setq results (cdr (ldap-search-internal
192 results (if extract-dn 195 (list 'host (concat host ":" (number-to-string port))
193 (ldap-search-internal connection filter base-object scope attributes nil t) 196 'base base-object
194 (ldap-search-internal connection filter base-object scope attributes nil))) 197 'attributes attributes
195 198 'scope scope
196 (ldap-close connection) 199 'filter filter
200 'binddn binddn))))
201
197 (insert "<html>\n" 202 (insert "<html>\n"
198 " <head>\n" 203 " <head>\n"
199 " <title>LDAP Search Results</title>\n" 204 " <title>LDAP Search Results</title>\n"
@@ -205,8 +210,6 @@
205 (mapc (lambda (obj) 210 (mapc (lambda (obj)
206 (insert " <hr>\n" 211 (insert " <hr>\n"
207 " <table border=1>\n") 212 " <table border=1>\n")
208 (if extract-dn
209 (insert " <tr><th colspan=2>" (car obj) "</th></tr>\n"))
210 (mapc (lambda (attr) 213 (mapc (lambda (attr)
211 (if (= (length (cdr attr)) 1) 214 (if (= (length (cdr attr)) 1)
212 ;; single match, easy 215 ;; single match, easy
@@ -225,7 +228,7 @@
225 "<br>\n") 228 "<br>\n")
226 "</td>" 229 "</td>"
227 " </tr>\n"))) 230 " </tr>\n")))
228 (if extract-dn (cdr obj) obj)) 231 obj)
229 (insert " </table>\n")) 232 (insert " </table>\n"))
230 results) 233 results)
231 234
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index 323c75ed6de..4406a0615ee 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -1,6 +1,6 @@
1;;; whitespace.el --- warn about and clean bogus whitespaces in the file 1;;; whitespace.el --- warn about and clean bogus whitespaces in the file
2 2
3;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. 3;; Copyright (C) 1999, 2000, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Rajesh Vaidheeswarran <rv@gnu.org> 5;; Author: Rajesh Vaidheeswarran <rv@gnu.org>
6;; Keywords: convenience 6;; Keywords: convenience
@@ -319,7 +319,7 @@ To disable timer scans, set this to zero."
319 :group 'faces) 319 :group 'faces)
320 320
321(defface whitespace-highlight-face '((((class color) (background light)) 321(defface whitespace-highlight-face '((((class color) (background light))
322 (:background "green")) 322 (:background "green1"))
323 (((class color) (background dark)) 323 (((class color) (background dark))
324 (:background "sea green")) 324 (:background "sea green"))
325 (((class grayscale mono) 325 (((class grayscale mono)
@@ -489,16 +489,14 @@ and:
489 (if whitespace-spacetab "s") 489 (if whitespace-spacetab "s")
490 (if whitespace-trailing "t"))))) 490 (if whitespace-trailing "t")))))
491 (whitespace-update-modeline whitespace-this-modeline) 491 (whitespace-update-modeline whitespace-this-modeline)
492 (save-excursion 492 (if (get-buffer whitespace-errbuf)
493 (get-buffer-create whitespace-errbuf) 493 (kill-buffer whitespace-errbuf))
494 (kill-buffer whitespace-errbuf) 494 (with-current-buffer (get-buffer-create whitespace-errbuf)
495 (get-buffer-create whitespace-errbuf)
496 (set-buffer whitespace-errbuf)
497 (if whitespace-errmsg 495 (if whitespace-errmsg
498 (progn 496 (progn
499 (insert whitespace-errmsg) 497 (insert whitespace-errmsg)
500 (if (not (or quiet whitespace-silent)) 498 (if (not (or quiet whitespace-silent))
501 (display-buffer whitespace-errbuf t)) 499 (display-buffer (current-buffer) t))
502 (if (not quiet) 500 (if (not quiet)
503 (message "Whitespaces: [%s%s] in %s" 501 (message "Whitespaces: [%s%s] in %s"
504 whitespace-this-modeline 502 whitespace-this-modeline
@@ -511,9 +509,7 @@ and:
511 (if (and (not quiet) (not (equal whitespace-clean-msg ""))) 509 (if (and (not quiet) (not (equal whitespace-clean-msg "")))
512 (message "%s %s" whitespace-filename 510 (message "%s %s" whitespace-filename
513 whitespace-clean-msg)))))))) 511 whitespace-clean-msg))))))))
514 (if whitespace-error 512 whitespace-error))
515 t
516 nil)))
517 513
518;;;###autoload 514;;;###autoload
519(defun whitespace-region (s e) 515(defun whitespace-region (s e)
@@ -736,23 +732,17 @@ Also with whitespaces whose testing has been turned off."
736(defun whitespace-highlight-the-space (b e) 732(defun whitespace-highlight-the-space (b e)
737 "Highlight the current line, unhighlighting a previously jumped to line." 733 "Highlight the current line, unhighlighting a previously jumped to line."
738 (if whitespace-display-spaces-in-color 734 (if whitespace-display-spaces-in-color
739 (progn 735 (let ((ol (whitespace-make-overlay b e)))
740 (whitespace-unhighlight-the-space) 736 (whitespace-unhighlight-the-space)
741 (add-to-list 'whitespace-highlighted-space 737 (push ol whitespace-highlighted-space)
742 (whitespace-make-overlay b e)) 738 (whitespace-overlay-put ol 'face 'whitespace-highlight-face))))
743 (whitespace-overlay-put (whitespace-make-overlay b e) 'face
744 'whitespace-highlight-face))))
745;; (add-hook 'pre-command-hook 'whitespace-unhighlight-the-space)) 739;; (add-hook 'pre-command-hook 'whitespace-unhighlight-the-space))
746 740
747(defun whitespace-unhighlight-the-space () 741(defun whitespace-unhighlight-the-space ()
748 "Unhighlight the currently highlight line." 742 "Unhighlight the currently highlight line."
749 (if (and whitespace-display-spaces-in-color whitespace-highlighted-space) 743 (if (and whitespace-display-spaces-in-color whitespace-highlighted-space)
750 (let ((whitespace-this-space nil)) 744 (progn
751 (while whitespace-highlighted-space 745 (mapc 'whitespace-delete-overlay whitespace-highlighted-space)
752 (setq whitespace-this-space (car whitespace-highlighted-space))
753 (setq whitespace-highlighted-space
754 (cdr whitespace-highlighted-space))
755 (whitespace-delete-overlay whitespace-this-space))
756 (setq whitespace-highlighted-space nil)) 746 (setq whitespace-highlighted-space nil))
757 (remove-hook 'pre-command-hook 'whitespace-unhighlight-the-space))) 747 (remove-hook 'pre-command-hook 'whitespace-unhighlight-the-space)))
758 748
@@ -863,5 +853,5 @@ This is meant to be added buffer-locally to `write-file-functions'."
863 853
864(provide 'whitespace) 854(provide 'whitespace)
865 855
866;;; arch-tag: 4ff44e87-b63c-402d-95a6-15e51e58bd0c 856;; arch-tag: 4ff44e87-b63c-402d-95a6-15e51e58bd0c
867;;; whitespace.el ends here 857;;; whitespace.el ends here
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 74bda990aed..d1ea8197fec 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -1,6 +1,6 @@
1;;; wid-edit.el --- Functions for creating and using widgets -*-byte-compile-dynamic: t;-*- 1;;; wid-edit.el --- Functions for creating and using widgets -*-byte-compile-dynamic: t;-*-
2;; 2;;
3;; Copyright (C) 1996,97,1999,2000,01,02,2003, 2004 Free Software Foundation, Inc. 3;; Copyright (C) 1996,97,1999,2000,01,02,2003, 2004, 2005 Free Software Foundation, Inc.
4;; 4;;
5;; Author: Per Abrahamsen <abraham@dina.kvl.dk> 5;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -883,7 +883,9 @@ Recommended as a parent keymap for modes using widgets.")
883 (lookup-key widget-global-map (this-command-keys)))))) 883 (lookup-key widget-global-map (this-command-keys))))))
884 884
885(defface widget-button-pressed-face 885(defface widget-button-pressed-face
886 '((((class color)) 886 '((((min-colors 88) (class color))
887 (:foreground "red1"))
888 (((class color))
887 (:foreground "red")) 889 (:foreground "red"))
888 (t 890 (t
889 (:weight bold :underline t))) 891 (:weight bold :underline t)))
diff --git a/lisp/woman.el b/lisp/woman.el
index e4b29374a05..4d92c9ee0c7 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -1,6 +1,6 @@
1;;; woman.el --- browse UN*X manual pages `wo (without) man' 1;;; woman.el --- browse UN*X manual pages `wo (without) man'
2 2
3;; Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc. 3;; Copyright (C) 2000, 2002, 2004, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Francis J. Wright <F.J.Wright@qmul.ac.uk> 5;; Author: Francis J. Wright <F.J.Wright@qmul.ac.uk>
6;; Maintainer: Francis J. Wright <F.J.Wright@qmul.ac.uk> 6;; Maintainer: Francis J. Wright <F.J.Wright@qmul.ac.uk>
@@ -876,13 +876,16 @@ or different fonts."
876;; You should probably select either italic or underline as you prefer, but 876;; You should probably select either italic or underline as you prefer, but
877;; not both, although italic and underline work together perfectly well! 877;; not both, although italic and underline work together perfectly well!
878(defface woman-italic-face 878(defface woman-italic-face
879 `((((background light)) (:slant italic :underline t :foreground "red")) 879 `((((min-colors 88) (background light))
880 (:slant italic :underline t :foreground "red1"))
881 (((background light)) (:slant italic :underline t :foreground "red"))
880 (((background dark)) (:slant italic :underline t))) 882 (((background dark)) (:slant italic :underline t)))
881 "Face for italic font in man pages." 883 "Face for italic font in man pages."
882 :group 'woman-faces) 884 :group 'woman-faces)
883 885
884(defface woman-bold-face 886(defface woman-bold-face
885 '((((background light)) (:weight bold :foreground "blue")) 887 '((((min-colors 88) (background light)) (:weight bold :foreground "blue1"))
888 (((background light)) (:weight bold :foreground "blue"))
886 (((background dark)) (:weight bold :foreground "green2"))) 889 (((background dark)) (:weight bold :foreground "green2")))
887 "Face for bold font in man pages." 890 "Face for bold font in man pages."
888 :group 'woman-faces) 891 :group 'woman-faces)
@@ -892,6 +895,7 @@ or different fonts."
892;; non-standard fonts seem to do so badly or in idiosyncratic ways!) 895;; non-standard fonts seem to do so badly or in idiosyncratic ways!)
893(defface woman-unknown-face 896(defface woman-unknown-face
894 '((((background light)) (:foreground "brown")) 897 '((((background light)) (:foreground "brown"))
898 (((min-colors 88) (background dark)) (:foreground "cyan1"))
895 (((background dark)) (:foreground "cyan"))) 899 (((background dark)) (:foreground "cyan")))
896 "Face for all unknown fonts in man pages." 900 "Face for all unknown fonts in man pages."
897 :group 'woman-faces) 901 :group 'woman-faces)
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 1f5c324bdd1..2d3bd39ccca 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,8 @@
12005-04-08 Lute Kamstra <lute@gnu.org>
2
3 * modes.texi (Search-based Fontification): Fix cross references.
4 Use consistent terminology. Document anchored highlighting.
5
12005-04-05 Lute Kamstra <lute@gnu.org> 62005-04-05 Lute Kamstra <lute@gnu.org>
2 7
3 * modes.texi (Defining Minor Modes): Document :group keyword 8 * modes.texi (Defining Minor Modes): Document :group keyword
@@ -2348,7 +2353,7 @@
2348 2353
2349 * files.texi (Changing Files): copy-file allows dir as NEWNAME. 2354 * files.texi (Changing Files): copy-file allows dir as NEWNAME.
2350 (Magic File Names): Specify precedence order of handlers. 2355 (Magic File Names): Specify precedence order of handlers.
2351o 2356
2352 * commands.texi (Command Overview): Emacs server runs pre-command-hook 2357 * commands.texi (Command Overview): Emacs server runs pre-command-hook
2353 and post-command-hook. 2358 and post-command-hook.
2354 (Waiting): New calling convention for sit-for. 2359 (Waiting): New calling convention for sit-for.
diff --git a/lispref/modes.texi b/lispref/modes.texi
index ecbe39dbb31..b43b22275cc 100644
--- a/lispref/modes.texi
+++ b/lispref/modes.texi
@@ -1,6 +1,6 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual. 2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 3@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999,
4@c 2003, 2004, 2005 Free Software Foundation, Inc. 4@c 2003, 2004, 2005 Free Software Foundation, Inc.
5@c See the file elisp.texi for copying conditions. 5@c See the file elisp.texi for copying conditions.
6@setfilename ../info/modes 6@setfilename ../info/modes
@@ -2111,7 +2111,7 @@ processes the elements of @code{font-lock-keywords} one by one, and for
2111each element, it finds and handles all matches. Ordinarily, once 2111each element, it finds and handles all matches. Ordinarily, once
2112part of the text has been fontified already, this cannot be overridden 2112part of the text has been fontified already, this cannot be overridden
2113by a subsequent match in the same text; but you can specify different 2113by a subsequent match in the same text; but you can specify different
2114behavior using the @var{override} element of a @var{highlighter}. 2114behavior using the @var{override} element of a @var{subexp-highlighter}.
2115 2115
2116 Each element of @code{font-lock-keywords} should have one of these 2116 Each element of @code{font-lock-keywords} should have one of these
2117forms: 2117forms:
@@ -2122,14 +2122,14 @@ Highlight all matches for @var{regexp} using
2122@code{font-lock-keyword-face}. For example, 2122@code{font-lock-keyword-face}. For example,
2123 2123
2124@example 2124@example
2125;; @r{Highlight discrete occurrences of @samp{foo}} 2125;; @r{Highlight occurrences of the word @samp{foo}}
2126;; @r{using @code{font-lock-keyword-face}.} 2126;; @r{using @code{font-lock-keyword-face}.}
2127"\\<foo\\>" 2127"\\<foo\\>"
2128@end example 2128@end example
2129 2129
2130The function @code{regexp-opt} (@pxref{Syntax of Regexps}) is useful for 2130The function @code{regexp-opt} (@pxref{Regexp Functions}) is useful
2131calculating optimal regular expressions to match a number of different 2131for calculating optimal regular expressions to match a number of
2132keywords. 2132different keywords.
2133 2133
2134@item @var{function} 2134@item @var{function}
2135Find text by calling @var{function}, and highlight the matches 2135Find text by calling @var{function}, and highlight the matches
@@ -2146,10 +2146,10 @@ and with point where the previous invocation left it, until
2146@var{function} fails. On failure, @var{function} need not reset point 2146@var{function} fails. On failure, @var{function} need not reset point
2147in any particular way. 2147in any particular way.
2148 2148
2149@item (@var{matcher} . @var{match}) 2149@item (@var{matcher} . @var{subexp})
2150In this kind of element, @var{matcher} is either a regular 2150In this kind of element, @var{matcher} is either a regular
2151expression or a function, as described above. The @sc{cdr}, 2151expression or a function, as described above. The @sc{cdr},
2152@var{match}, specifies which subexpression of @var{matcher} should be 2152@var{subexp}, specifies which subexpression of @var{matcher} should be
2153highlighted (instead of the entire text that @var{matcher} matched). 2153highlighted (instead of the entire text that @var{matcher} matched).
2154 2154
2155@example 2155@example
@@ -2159,8 +2159,8 @@ highlighted (instead of the entire text that @var{matcher} matched).
2159@end example 2159@end example
2160 2160
2161If you use @code{regexp-opt} to produce the regular expression 2161If you use @code{regexp-opt} to produce the regular expression
2162@var{matcher}, then you can use @code{regexp-opt-depth} (@pxref{Syntax 2162@var{matcher}, then you can use @code{regexp-opt-depth} (@pxref{Regexp
2163of Regexps}) to calculate the value for @var{match}. 2163Functions}) to calculate the value for @var{subexp}.
2164 2164
2165@item (@var{matcher} . @var{facespec}) 2165@item (@var{matcher} . @var{facespec})
2166In this kind of element, @var{facespec} is an object which specifies 2166In this kind of element, @var{facespec} is an object which specifies
@@ -2173,37 +2173,39 @@ is a Lisp variable (a symbol), whose value should be a face name.
2173("fubar" . fubar-face) 2173("fubar" . fubar-face)
2174@end example 2174@end example
2175 2175
2176However, @var{facespec} can also be a list of the form 2176However, @var{facespec} can also be a list of the form:
2177 2177
2178@example 2178@example
2179(face @var{face} @var{prop1} @var{val1} @var{prop2} @var{val2}@dots{}) 2179(face @var{face} @var{prop1} @var{val1} @var{prop2} @var{val2}@dots{})
2180@end example 2180@end example
2181 2181
2182to specify various text properties to put on the text that matches. 2182to specify the face @var{face} and various additional text properties
2183If you do this, be sure to add the other text property names that you 2183to put on the text that matches. If you do this, be sure to add the
2184set in this way to the value of @code{font-lock-extra-managed-props} 2184other text property names that you set in this way to the value of
2185so that the properties will also be cleared out when they are no longer 2185@code{font-lock-extra-managed-props} so that the properties will also
2186appropriate. 2186be cleared out when they are no longer appropriate. Alternatively,
2187you can set the variable @code{font-lock-unfontify-region-function} to
2188a function that clears these properties.
2187 2189
2188@item (@var{matcher} . @var{highlighter}) 2190@item (@var{matcher} . @var{subexp-highlighter})
2189In this kind of element, @var{highlighter} is a list 2191In this kind of element, @var{subexp-highlighter} is a list
2190which specifies how to highlight matches found by @var{matcher}. 2192which specifies how to highlight matches found by @var{matcher}.
2191It has the form 2193It has the form:
2192 2194
2193@example 2195@example
2194(@var{subexp} @var{facespec} @var{override} @var{laxmatch}) 2196(@var{subexp} @var{facespec} [[@var{override} [@var{laxmatch}]])
2195@end example 2197@end example
2196 2198
2197The @sc{car}, @var{subexp}, is an integer specifying which subexpression 2199The @sc{car}, @var{subexp}, is an integer specifying which subexpression
2198of the match to fontify (0 means the entire matching text). The second 2200of the match to fontify (0 means the entire matching text). The second
2199subelement, @var{facespec}, specifies the face, as described above. 2201subelement, @var{facespec}, specifies the face, as described above.
2200 2202
2201The last two values in @var{highlighter}, @var{override} and 2203The last two values in @var{subexp-highlighter}, @var{override} and
2202@var{laxmatch}, are flags. If @var{override} is @code{t}, this 2204@var{laxmatch}, are optional flags. If @var{override} is @code{t},
2203element can override existing fontification made by previous elements 2205this element can override existing fontification made by previous
2204of @code{font-lock-keywords}. If it is @code{keep}, then each 2206elements of @code{font-lock-keywords}. If it is @code{keep}, then
2205character is fontified if it has not been fontified already by some 2207each character is fontified if it has not been fontified already by
2206other element. If it is @code{prepend}, the face specified by 2208some other element. If it is @code{prepend}, the face specified by
2207@var{facespec} is added to the beginning of the @code{font-lock-face} 2209@var{facespec} is added to the beginning of the @code{font-lock-face}
2208property. If it is @code{append}, the face is added to the end of the 2210property. If it is @code{append}, the face is added to the end of the
2209@code{font-lock-face} property. 2211@code{font-lock-face} property.
@@ -2219,8 +2221,8 @@ terminates search-based fontification.
2219Here are some examples of elements of this kind, and what they do: 2221Here are some examples of elements of this kind, and what they do:
2220 2222
2221@smallexample 2223@smallexample
2222;; @r{Highlight occurrences of either @samp{foo} or @samp{bar},} 2224;; @r{Highlight occurrences of either @samp{foo} or @samp{bar}, using}
2223;; @r{using @code{foo-bar-face}, even if they have already been highlighted.} 2225;; @r{@code{foo-bar-face}, even if they have already been highlighted.}
2224;; @r{@code{foo-bar-face} should be a variable whose value is a face.} 2226;; @r{@code{foo-bar-face} should be a variable whose value is a face.}
2225("foo\\|bar" 0 foo-bar-face t) 2227("foo\\|bar" 0 foo-bar-face t)
2226 2228
@@ -2230,64 +2232,71 @@ Here are some examples of elements of this kind, and what they do:
2230(fubar-match 1 fubar-face) 2232(fubar-match 1 fubar-face)
2231@end smallexample 2233@end smallexample
2232 2234
2233@item (@var{matcher} @var{highlighters}@dots{}) 2235@item (@var{matcher} . @var{anchored-highlighter})
2234This sort of element specifies several @var{highlighter} lists for a 2236In this kind of element, @var{anchored-highlighter} specifies how to
2235single @var{matcher}. In order for this to be useful, each 2237highlight text that follows a match found by @var{matcher}. So a
2236@var{highlighter} should have a different value of @var{subexp}; that is, 2238match found by @var{matcher} acts as the anchor for further searches
2237each one should apply to a different subexpression of @var{matcher}. 2239specified by @var{anchored-highlighter}. @var{anchored-highlighter}
2240is a list of the following form:
2238 2241
2239@ignore 2242@example
2240@item (@var{matcher} . @var{anchored}) 2243(@var{anchored-matcher} @var{pre-form} @var{post-form}
2241In this kind of element, @var{anchored} acts much like a 2244 @var{subexp-highlighters}@dots{})
2242@var{highlighter}, but it is more complex and can specify multiple 2245@end example
2243successive searches.
2244 2246
2245For highlighting single items, typically only @var{highlighter} is 2247Here, @var{anchored-matcher}, like @var{matcher}, is either a regular
2246required. However, if an item or (typically) items are to be 2248expression or a function. After a match of @var{matcher} is found,
2247highlighted following the instance of another item (the anchor) then 2249point is at the end of the match. Now, Font Lock evaluates the form
2248@var{anchored} may be required. 2250@var{pre-form}. Then it searches for matches of
2251@var{anchored-matcher} and uses @var{subexp-highlighters} to highlight
2252these. A @var{subexp-highlighter} is as described above. Finally,
2253Font Lock evaluates @var{post-form}.
2254
2255The forms @var{pre-form} and @var{post-form} can be used to initialize
2256before, and cleanup after, @var{anchored-matcher} is used. Typically,
2257@var{pre-form} is used to move point to some position relative to the
2258match of @var{matcher}, before starting with @var{anchored-matcher}.
2259@var{post-form} might be used to move back, before resuming with
2260@var{matcher}.
2261
2262After Font Lock evaluates @var{pre-form}, it does not search for
2263@var{anchored-matcher} beyond the end of the line. However, if
2264@var{pre-form} returns a buffer position that is greater than the
2265position of point after @var{pre-form} is evaluated, then the position
2266returned by @var{pre-form} is used as the limit of the search instead.
2267It is generally a bad idea to return a position greater than the end
2268of the line; in other words, the @var{anchored-matcher} search should
2269not span lines.
2249 2270
2250It has this format: 2271For example,
2251 2272
2252@example 2273@smallexample
2253(@var{submatcher} @var{pre-match-form} @var{post-match-form} @var{highlighters}@dots{}) 2274;; @r{Highlight occurrences of the word @samp{item} following}
2254@end example 2275;; @r{an occurrence of the word @samp{anchor} (on the same line)}
2276;; @r{in the value of @code{item-face}.}
2277("\\<anchor\\>" "\\<item\\>" nil nil (0 item-face))
2278@end smallexample
2255 2279
2256@c I can't parse this text -- rms 2280Here, @var{pre-form} and @var{post-form} are @code{nil}. Therefore
2257where @var{submatcher} is much like @var{matcher}, with one 2281searching for @samp{item} starts at the end of the match of
2258exception---see below. @var{pre-match-form} and @var{post-match-form} 2282@samp{anchor}, and searching for subsequent instances of @samp{anchor}
2259are evaluated before the first, and after the last, instance 2283resumes from where searching for @samp{item} concluded.
2260@var{anchored}'s @var{submatcher} is used. Therefore they can be used
2261to initialize before, and cleanup after, @var{submatcher} is used.
2262Typically, @var{pre-match-form} is used to move to some position
2263relative to the original @var{submatcher}, before starting with
2264@var{anchored}'s @var{submatcher}. @var{post-match-form} might be used
2265to move, before resuming with @var{anchored}'s parent's @var{matcher}.
2266 2284
2267For example, an element of the form highlights (if not already highlighted): 2285@item (@var{matcher} @var{highlighters}@dots{})
2286This sort of element specifies several @var{highlighter} lists for a
2287single @var{matcher}. A @var{highlighter} list can be of the type
2288@var{subexp-highlighter} or @var{anchored-highlighter} as described
2289above.
2268 2290
2269@example 2291For example,
2270("\\<anchor\\>" (0 anchor-face) ("\\<item\\>" nil nil (0 item-face)))
2271@end example
2272 2292
2273Discrete occurrences of @samp{anchor} in the value of 2293@smallexample
2274@code{anchor-face}, and subsequent discrete occurrences of @samp{item} 2294;; @r{Highlight occurrences of the word @samp{anchor} in the value}
2275(on the same line) in the value of @code{item-face}. (Here 2295;; @r{of @code{anchor-face}, and subsequent occurrences of the word}
2276@var{pre-match-form} and @var{post-match-form} are @code{nil}. 2296;; @r{@samp{item} (on the same line) in the value of @code{item-face}.}
2277Therefore @samp{item} is initially searched for starting from the end of 2297("\\<anchor\\>" (0 anchor-face)
2278the match of @samp{anchor}, and searching for subsequent instance of 2298 ("\\<item\\>" nil nil (0 item-face)))
2279@samp{anchor} resumes from where searching for @samp{item} concluded.) 2299@end smallexample
2280
2281The above-mentioned exception is as follows. The limit of the
2282@var{submatcher} search defaults to the end of the line after
2283@var{pre-match-form} is evaluated. However, if @var{pre-match-form}
2284returns a position greater than the position after @var{pre-match-form}
2285is evaluated, that position is used as the limit of the search. It is
2286generally a bad idea to return a position greater than the end of the
2287line; in other words, the @var{submatcher} search should not span lines.
2288
2289@item (@var{matcher} @var{highlighters-or-anchoreds} ...)
2290@end ignore
2291 2300
2292@item (eval . @var{form}) 2301@item (eval . @var{form})
2293Here @var{form} is an expression to be evaluated the first time 2302Here @var{form} is an expression to be evaluated the first time
@@ -2301,7 +2310,7 @@ to match text which spans lines; this does not work reliably. While
2301updating when you edit the buffer does not, since it considers text one 2310updating when you edit the buffer does not, since it considers text one
2302line at a time. If you have patterns that typically only span one 2311line at a time. If you have patterns that typically only span one
2303line but can occasionally span two or three, such as 2312line but can occasionally span two or three, such as
2304@samp{<title>...</title>}, you can ask font-lock to be more careful by 2313@samp{<title>...</title>}, you can ask Font Lock to be more careful by
2305setting @code{font-lock-multiline} to @code{t}. But it still will not 2314setting @code{font-lock-multiline} to @code{t}. But it still will not
2306work in all cases. 2315work in all cases.
2307 2316
diff --git a/lwlib/xlwmenuP.h b/lwlib/xlwmenuP.h
index ac908d34b74..695535e1049 100644
--- a/lwlib/xlwmenuP.h
+++ b/lwlib/xlwmenuP.h
@@ -1,5 +1,5 @@
1/* Internals of a lightweight menubar widget. 1/* Internals of a lightweight menubar widget.
2 Copyright (C) 1999, 2000, 2002, 2004 Free Software Foundation, Inc. 2 Copyright (C) 1999, 2000, 2002, 2004, 2005 Free Software Foundation, Inc.
3 3
4This file is part of the Lucid Widget Library. 4This file is part of the Lucid Widget Library.
5 5
diff --git a/man/ChangeLog b/man/ChangeLog
index f91aba65fed..6db3896c457 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,32 @@
12005-04-10 Thien-Thi Nguyen <ttn@gnu.org>
2
3 * cl.texi (Porting Common Lisp): Fix typo.
4
52005-04-10 Luc Teirlinck <teirllm@auburn.edu>
6
7 * rmail.texi (Rmail Basics): Clarify description of `q' and `b'.
8 (Rmail Deletion): `C-d' in RMAIL buffer does not accept a numeric
9 argument.
10 (Rmail Inbox): Give full name of `rmail-primary-inbox-list'.
11 (Rmail Output): Clarify which statements apply to `o', `C-o' and
12 `w', respectively.
13 (Rmail Labels): Mention `l'.
14 (Rmail Attributes): Correct pxref. Mention `stored' attribute.
15 (Rmail Summary Edit): Describe `j' and RET.
16
172005-04-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
18
19 * xresources.texi (Lucid Resources): Added fonSet resource.
20
212005-04-06 Katsumi Yamaoka <yamaoka@jpl.org>
22
23 * gnus.texi (RSS): Addition.
24
252005-04-09 Luc Teirlinck <teirllm@auburn.edu>
26
27 * display.texi (Useless Whitespace): `indicate-unused-lines' is
28 now called `indicate-empty-lines'.
29
12005-04-06 Kim F. Storm <storm@cua.dk> 302005-04-06 Kim F. Storm <storm@cua.dk>
2 31
3 * cmdargs.texi (Initial Options): Add --bare-bones alias for -Q. 32 * cmdargs.texi (Initial Options): Add --bare-bones alias for -Q.
diff --git a/man/cl.texi b/man/cl.texi
index 6c52a16b733..c150e0d2b4d 100644
--- a/man/cl.texi
+++ b/man/cl.texi
@@ -5144,7 +5144,7 @@ difficult to port large Common Lisp applications to Emacs. For
5144one, some of the features in this package are not fully compliant 5144one, some of the features in this package are not fully compliant
5145with ANSI or Steele; @pxref{Common Lisp Compatibility}. But there 5145with ANSI or Steele; @pxref{Common Lisp Compatibility}. But there
5146are also quite a few features that this package does not provide 5146are also quite a few features that this package does not provide
5147at all. Here are some major omissions that you will want watch out 5147at all. Here are some major omissions that you will want to watch out
5148for when bringing Common Lisp code into Emacs. 5148for when bringing Common Lisp code into Emacs.
5149 5149
5150@itemize @bullet 5150@itemize @bullet
diff --git a/man/display.texi b/man/display.texi
index 01b0291e5e8..c1b0c540fb5 100644
--- a/man/display.texi
+++ b/man/display.texi
@@ -679,7 +679,7 @@ accessible portion (@pxref{Narrowing}), type @kbd{M-x
679delete-trailing-whitespace @key{RET}}. (This command does not remove 679delete-trailing-whitespace @key{RET}}. (This command does not remove
680the form-feed characters.) 680the form-feed characters.)
681 681
682@vindex indicate-unused-lines 682@vindex indicate-empty-lines
683@vindex default-indicate-empty-lines 683@vindex default-indicate-empty-lines
684@cindex unused lines 684@cindex unused lines
685@cindex fringes, and unused line indication 685@cindex fringes, and unused line indication
@@ -690,9 +690,9 @@ lines at the end of the buffer then stand out because they do not have
690this image in the fringe. 690this image in the fringe.
691 691
692 To enable this feature, set the buffer-local variable 692 To enable this feature, set the buffer-local variable
693@code{indicate-unused-lines} to a non-@code{nil} value. The default 693@code{indicate-empty-lines} to a non-@code{nil} value. The default
694value of this variable is controlled by the variable 694value of this variable is controlled by the variable
695@code{default-indicate-unused-lines}; by setting that variable, you 695@code{default-indicate-empty-lines}; by setting that variable, you
696can enable or disable this feature for all new buffers. (This feature 696can enable or disable this feature for all new buffers. (This feature
697currently doesn't work on character terminals.) 697currently doesn't work on character terminals.)
698 698
diff --git a/man/gnus.texi b/man/gnus.texi
index c670da11b22..6345cc2a18b 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -15873,14 +15873,45 @@ changes to a wiki (e.g. @url{http://cliki.net/recent-changes.rdf}).
15873@acronym{RSS} has a quite regular and nice interface, and it's 15873@acronym{RSS} has a quite regular and nice interface, and it's
15874possible to get the information Gnus needs to keep groups updated. 15874possible to get the information Gnus needs to keep groups updated.
15875 15875
15876Note: you had better use Emacs which supports the @code{utf-8} coding
15877system because @acronym{RSS} uses UTF-8 for encoding non-@acronym{ASCII}
15878text by default. It is also used by default for non-@acronym{ASCII}
15879group names.
15880
15876@kindex G R (Summary) 15881@kindex G R (Summary)
15877Use @kbd{G R} from the summary buffer to subscribe to a feed---you 15882Use @kbd{G R} from the summary buffer to subscribe to a feed---you will
15878will be prompted for the location of the feed. 15883be prompted for the location, the title and the description of the feed.
15884The title, which allows any characters, will be used for the group name
15885and the name of the group data file. The description can be omitted.
15879 15886
15880An easy way to get started with @code{nnrss} is to say something like 15887An easy way to get started with @code{nnrss} is to say something like
15881the following in the group buffer: @kbd{B nnrss RET RET y}, then 15888the following in the group buffer: @kbd{B nnrss RET RET y}, then
15882subscribe to groups. 15889subscribe to groups.
15883 15890
15891The @code{nnrss} back end saves the group data file in
15892@code{nnrss-directory} (see below) for each @code{nnrss} group. File
15893names containing non-@acronym{ASCII} characters will be encoded by the
15894coding system specified with the @code{nnmail-pathname-coding-system}
15895variable. If it is @code{nil}, in Emacs the coding system defaults to
15896the value of @code{default-file-name-coding-system}. If you are using
15897XEmacs and want to use non-@acronym{ASCII} group names, you should set
15898the value for the @code{nnmail-pathname-coding-system} variable properly.
15899
15900@cindex OPML
15901You can also use the following commands to import and export your
15902subscriptions from a file in @acronym{OPML} format (Outline Processor
15903Markup Language).
15904
15905@defun nnrss-opml-import file
15906Prompt for an @acronym{OPML} file, and subscribe to each feed in the
15907file.
15908@end defun
15909
15910@defun nnrss-opml-export
15911Write your current @acronym{RSS} subscriptions to a buffer in
15912@acronym{OPML} format.
15913@end defun
15914
15884The following @code{nnrss} variables can be altered: 15915The following @code{nnrss} variables can be altered:
15885 15916
15886@table @code 15917@table @code
@@ -15889,6 +15920,13 @@ The following @code{nnrss} variables can be altered:
15889The directory where @code{nnrss} stores its files. The default is 15920The directory where @code{nnrss} stores its files. The default is
15890@file{~/News/rss/}. 15921@file{~/News/rss/}.
15891 15922
15923@item nnrss-file-coding-system
15924@vindex nnrss-file-coding-system
15925The coding system used when reading and writing the @code{nnrss} groups
15926data files. The default is the value of
15927@code{mm-universal-coding-system} (which defaults to @code{emacs-mule}
15928in Emacs or @code{escape-quoted} in XEmacs).
15929
15892@item nnrss-use-local 15930@item nnrss-use-local
15893@vindex nnrss-use-local 15931@vindex nnrss-use-local
15894@findex nnrss-generate-download-script 15932@findex nnrss-generate-download-script
diff --git a/man/rmail.texi b/man/rmail.texi
index 5f5d63de14c..f7b9a1ea08e 100644
--- a/man/rmail.texi
+++ b/man/rmail.texi
@@ -84,14 +84,16 @@ file after merging new mail from an inbox file (@pxref{Rmail Inbox}).
84@findex rmail-quit 84@findex rmail-quit
85@kindex b @r{(Rmail)} 85@kindex b @r{(Rmail)}
86@findex rmail-bury 86@findex rmail-bury
87 You can exit Rmail with @kbd{q} (@code{rmail-quit}); this expunges and 87 You can exit Rmail with @kbd{q} (@code{rmail-quit}); this expunges
88saves the Rmail file and then switches to another buffer. But there is 88and saves the Rmail file, then buries the Rmail buffer as well as its
89no need to ``exit'' formally. If you switch from Rmail to editing in 89summary buffer, if present (@pxref{Rmail Summary}). But there is no
90other buffers, and never happen to switch back, you have exited. (The 90need to ``exit'' formally. If you switch from Rmail to editing in
91Rmail command @kbd{b}, @code{rmail-bury}, does this for you.) Just make 91other buffers, and never happen to switch back, you have exited. Just
92sure to save the Rmail file eventually (like any other file you have 92make sure to save the Rmail file eventually (like any other file you
93changed). @kbd{C-x s} is a good enough way to do this 93have changed). @kbd{C-x s} is a good enough way to do this
94(@pxref{Saving}). 94(@pxref{Saving}). The Rmail command @kbd{b}, @code{rmail-bury},
95buries the Rmail buffer and its summary buffer without expunging and
96saving the Rmail file.
95 97
96@node Rmail Scrolling 98@node Rmail Scrolling
97@section Scrolling Within a Message 99@section Scrolling Within a Message
@@ -255,8 +257,8 @@ current message and select another message. @kbd{d}
255messages already deleted, while @kbd{C-d} (@code{rmail-delete-backward}) 257messages already deleted, while @kbd{C-d} (@code{rmail-delete-backward})
256moves to the previous nondeleted message. If there is no nondeleted 258moves to the previous nondeleted message. If there is no nondeleted
257message to move to in the specified direction, the message that was just 259message to move to in the specified direction, the message that was just
258deleted remains current. A numeric argument to either command reverses 260deleted remains current. @kbd{d} with a numeric argument is
259the direction of motion after deletion. 261equivalent to @kbd{C-d}.
260 262
261@vindex rmail-delete-message-hook 263@vindex rmail-delete-message-hook
262 Whenever Rmail deletes a message, it runs the hook 264 Whenever Rmail deletes a message, it runs the hook
@@ -317,7 +319,7 @@ means to use the default inbox. The default inbox is
317or @file{/usr/mail/@var{username}}, depending on your operating system. 319or @file{/usr/mail/@var{username}}, depending on your operating system.
318 320
319 To see what the default is on your system, use @kbd{C-h v 321 To see what the default is on your system, use @kbd{C-h v
320rmail-primary-inbox @key{RET}}. You can specify the inbox file(s) for 322rmail-primary-inbox-list @key{RET}}. You can specify the inbox file(s) for
321any Rmail file with the command @code{set-rmail-inbox-list}; see 323any Rmail file with the command @code{set-rmail-inbox-list}; see
322@ref{Rmail Files}. 324@ref{Rmail Files}.
323 325
@@ -508,13 +510,14 @@ second says which files in that directory to offer (all those that match
508the regular expression). 510the regular expression).
509 511
510@vindex rmail-delete-after-output 512@vindex rmail-delete-after-output
511 Copying a message gives the original copy of the message the 513 Copying a message with @kbd{o} or @kbd{C-o} gives the original copy
512@samp{filed} attribute, so that @samp{filed} appears in the mode line 514of the message the @samp{filed} attribute, so that @samp{filed}
513when such a message is current. If you like to keep just a single copy 515appears in the mode line when such a message is current. @kbd{w}
514of every mail message, set the variable @code{rmail-delete-after-output} 516gives it the @samp{stored} attribute. If you like to keep just a
515to @code{t}; then the @kbd{o} and @kbd{C-o} commands delete the original 517single copy of every mail message, set the variable
516message after copying it. (You can undelete the original afterward if 518@code{rmail-delete-after-output} to @code{t}; then the @kbd{o},
517you wish.) 519@kbd{C-o} and @kbd{w} commands delete the original message after
520copying it. (You can undelete the original afterward if you wish.)
518 521
519 Copying messages into files in system inbox format uses the header 522 Copying messages into files in system inbox format uses the header
520fields that are displayed in Rmail at the time. Thus, if you use the 523fields that are displayed in Rmail at the time. Thus, if you use the
@@ -567,7 +570,8 @@ Move to the next message that has one of the labels @var{labels}
567@item C-M-p @var{labels} @key{RET} 570@item C-M-p @var{labels} @key{RET}
568Move to the previous message that has one of the labels @var{labels} 571Move to the previous message that has one of the labels @var{labels}
569(@code{rmail-previous-labeled-message}). 572(@code{rmail-previous-labeled-message}).
570@item C-M-l @var{labels} @key{RET} 573@item l @var{labels} @key{RET}
574@itemx C-M-l @var{labels} @key{RET}
571Make a summary of all messages containing any of the labels @var{labels} 575Make a summary of all messages containing any of the labels @var{labels}
572(@code{rmail-summary-by-labels}). 576(@code{rmail-summary-by-labels}).
573@end table 577@end table
@@ -626,7 +630,9 @@ Means the message is deleted. Assigned by deletion commands and
626removed by undeletion commands (@pxref{Rmail Deletion}). 630removed by undeletion commands (@pxref{Rmail Deletion}).
627@item filed 631@item filed
628Means the message has been copied to some other file. Assigned by the 632Means the message has been copied to some other file. Assigned by the
629file output commands (@pxref{Rmail Files}). 633@kbd{o} and @kbd{C-o} file output commands (@pxref{Rmail Output}).
634@item stored
635Assigned by the @kbd{w} file output command (@pxref{Rmail Output}).
630@item answered 636@item answered
631Means you have mailed an answer to the message. Assigned by the @kbd{r} 637Means you have mailed an answer to the message. Assigned by the @kbd{r}
632command (@code{rmail-reply}). @xref{Rmail Reply}. 638command (@code{rmail-reply}). @xref{Rmail Reply}.
@@ -912,6 +918,12 @@ Move to previous line and select its message.
912Move to the last line, and select its message. 918Move to the last line, and select its message.
913@item < 919@item <
914Move to the first line, and select its message. 920Move to the first line, and select its message.
921@item j
922@itemx @key{RET}
923Select the message on the current line (ensuring that the RMAIL buffer
924appears on the screen). With argument @var{n}, select message number
925@var{n} and move to its line in the summary buffer; this signals an
926error if the message is not listed in the summary buffer.
915@item M-s @var{pattern} @key{RET} 927@item M-s @var{pattern} @key{RET}
916Search through messages for @var{pattern} starting with the current 928Search through messages for @var{pattern} starting with the current
917message; select the message found, and move point in the summary buffer 929message; select the message found, and move point in the summary buffer
@@ -1263,7 +1275,7 @@ specifies the remote user name to use, @var{pass} may be used to
1263specify the user password, @var{host-or-file-name} is the name or IP 1275specify the user password, @var{host-or-file-name} is the name or IP
1264address of the remote mail server to connect to; e.g., 1276address of the remote mail server to connect to; e.g.,
1265@code{pop://smith:guessme@@remote.server.net}. 1277@code{pop://smith:guessme@@remote.server.net}.
1266 1278
1267@item imap 1279@item imap
1268A remote mailbox to be accessed via IMAP4 protocol. @var{User} 1280A remote mailbox to be accessed via IMAP4 protocol. @var{User}
1269specifies the remote user name to use, @var{pass} may be used to 1281specifies the remote user name to use, @var{pass} may be used to
@@ -1287,7 +1299,7 @@ absolute file name of the @code{movemail} executable. If it is
1287@code{nil}, Rmail searches for @code{movemail} in the directories 1299@code{nil}, Rmail searches for @code{movemail} in the directories
1288listed in @code{rmail-movemail-search-path} and @code{exec-path}, then 1300listed in @code{rmail-movemail-search-path} and @code{exec-path}, then
1289in @code{exec-directory}. 1301in @code{exec-directory}.
1290 1302
1291@node Remote Mailboxes 1303@node Remote Mailboxes
1292@section Retrieving Mail from Remote Mailboxes 1304@section Retrieving Mail from Remote Mailboxes
1293@pindex movemail 1305@pindex movemail
@@ -1317,11 +1329,11 @@ Additionally, you may specify the password in the mailbox @acronym{URL}:
1317@samp{pop://@var{username}:@var{password}@@@var{hostname}}. In this 1329@samp{pop://@var{username}:@var{password}@@@var{hostname}}. In this
1318case, @var{password} takes preference over the one set by 1330case, @var{password} takes preference over the one set by
1319@code{rmail-remote-password}. This is especially useful if you have 1331@code{rmail-remote-password}. This is especially useful if you have
1320several remote mailboxes with different passwords. 1332several remote mailboxes with different passwords.
1321 1333
1322 For backward compatibility Rmail also supports two alternative ways 1334 For backward compatibility Rmail also supports two alternative ways
1323of specifying remote POP mailboxes. Specifying inbox name in the form 1335of specifying remote POP mailboxes. Specifying inbox name in the form
1324@samp{po:@var{username}:@var{hostname}} is equivalent to 1336@samp{po:@var{username}:@var{hostname}} is equivalent to
1325@samp{pop://@var{username}@@@var{hostname}}. Alternatively, you may set 1337@samp{pop://@var{username}@@@var{hostname}}. Alternatively, you may set
1326a ``file name'' of @samp{po:@var{username}} in the inbox list of an 1338a ``file name'' of @samp{po:@var{username}} in the inbox list of an
1327Rmail file. @code{Movemail} will handle such a name by opening a 1339Rmail file. @code{Movemail} will handle such a name by opening a
@@ -1333,7 +1345,7 @@ will in this case specify the machine to look for the server on.
1333supported only by the @code{mailutils movemail}. To specify an IMAP 1345supported only by the @code{mailutils movemail}. To specify an IMAP
1334mailbox in the inbox list, use the following mailbox @acronym{URL}: 1346mailbox in the inbox list, use the following mailbox @acronym{URL}:
1335@samp{imap://@var{username}[:@var{password}]@@@var{hostname}}. The 1347@samp{imap://@var{username}[:@var{password}]@@@var{hostname}}. The
1336@var{password} part is optional, as descrbed above. 1348@var{password} part is optional, as described above.
1337 1349
1338@vindex rmail-remote-password 1350@vindex rmail-remote-password
1339@vindex rmail-remote-password-required 1351@vindex rmail-remote-password-required
@@ -1343,10 +1355,10 @@ mailbox in the inbox list, use the following mailbox @acronym{URL}:
1343following algorithm to retrieve it: 1355following algorithm to retrieve it:
1344 1356
1345@enumerate 1357@enumerate
1346@item 1358@item
1347If the @var{password} is present in mailbox URL (see above), it is 1359If the @var{password} is present in mailbox URL (see above), it is
1348used. 1360used.
1349@item 1361@item
1350If the variable @code{rmail-remote-password} is non-@code{nil}, its 1362If the variable @code{rmail-remote-password} is non-@code{nil}, its
1351value is used. 1363value is used.
1352@item 1364@item
diff --git a/man/xresources.texi b/man/xresources.texi
index aaf7262d060..7e1beb2442a 100644
--- a/man/xresources.texi
+++ b/man/xresources.texi
@@ -393,6 +393,19 @@ Emacs.dialog*.font: 8x16
393@end example 393@end example
394 394
395@noindent 395@noindent
396The Lucid menus can display multilingual text in your locale. For more
397information about fontsets see the man page for XCreateFontSet. To enable
398multilingual menu text you specify a fontSet resource instead of the font
399resource. If both font and fontSet resources are specified, the fontSet
400resource is used. To specify
401@samp{-*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*} for both the popup and
402menu bar menus, write this:
403
404@example
405Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*
406@end example
407
408@noindent
396Experience shows that on some systems you may need to add 409Experience shows that on some systems you may need to add
397@samp{shell.}@: before the @samp{pane.menubar} or @samp{menu*}. On 410@samp{shell.}@: before the @samp{pane.menubar} or @samp{menu*}. On
398some other systems, you must not add @samp{shell.}. 411some other systems, you must not add @samp{shell.}.
@@ -402,6 +415,8 @@ some other systems, you must not add @samp{shell.}.
402@table @code 415@table @code
403@item font 416@item font
404Font for menu item text. 417Font for menu item text.
418@item fontSet
419Fontset for menu item text.
405@item foreground 420@item foreground
406Color of the foreground. 421Color of the foreground.
407@item background 422@item background
diff --git a/src/ChangeLog b/src/ChangeLog
index ec60d4add5f..26b8a9ce5ad 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,40 @@
12005-04-10 Richard M. Stallman <rms@gnu.org>
2
3 * emacs.c (standard_args): Rename --bare-bones to --quick.
4 Add -D aka --basic-display.
5
6 * buffer.c (Fmake_indirect_buffer): Clear out some local variables.
7
82005-04-09 Richard M. Stallman <rms@gnu.org>
9
10 * keymap.c (where_is_internal): Convert a string used as event type
11 into "(any string)".
12
13 * lread.c (Vloads_in_progress): Not static.
14
15 * fns.c (Vloads_in_progress): Add extern.
16 (Frequire): Don't do LOADHIST_ATTACH if Vloads_in_progress is nil.
17
182005-04-09 Thien-Thi Nguyen <ttn@surf.glug.org>
19
20 * dispnew.c (mirror_line_dance): Avoid crash if W2 is null.
21
222005-04-09 Lute Kamstra <lute@gnu.org>
23
24 * print.c (PRINTPREPARE): Check if the marker PRINTCHARFUN is
25 within the accessible part of the buffer.
26
272005-04-09 Kim F. Storm <storm@cua.dk>
28
29 * lread.c (readevalloop): Add args START and END as region in
30 current buffer to read. Callers changed.
31 When specified, narrow to this region only when reading,
32 not during eval. Track next point to read from during eval.
33 Also restore point to "real" buffer position before eval.
34 (Feval_region): Don't save excursion and restriction here, and
35 don't narrow to region. Just pass region to readevalloop.
36 Note: Point is now preserved even when PRINTFLAG is nil.
37
12005-04-08 Kim F. Storm <storm@cua.dk> 382005-04-08 Kim F. Storm <storm@cua.dk>
2 39
3 * xdisp.c (syms_of_xdisp): Init overlay-arrow-string to "=>". 40 * xdisp.c (syms_of_xdisp): Init overlay-arrow-string to "=>".
@@ -30,8 +67,8 @@
30 67
312005-04-01 Kenichi Handa <handa@m17n.org> 682005-04-01 Kenichi Handa <handa@m17n.org>
32 69
33 * lisp.h (Vascii_upcase_table, Vascii_canon_table, 70 * lisp.h (Vascii_upcase_table, Vascii_canon_table)
34 Vascii_eqv_table): Extern them. 71 (Vascii_eqv_table): Extern them.
35 72
36 * casetab.c (set_case_table): If standard is nonzero, setup 73 * casetab.c (set_case_table): If standard is nonzero, setup
37 Vascii_upcase_table, Vascii_canon_table, and Vascii_eqv_table. 74 Vascii_upcase_table, Vascii_canon_table, and Vascii_eqv_table.
diff --git a/src/ChangeLog.6 b/src/ChangeLog.6
index 67569eedeca..2da83619eb4 100644
--- a/src/ChangeLog.6
+++ b/src/ChangeLog.6
@@ -1079,7 +1079,7 @@
1079 scroll_bar_up_arrow, scroll_bar_down_arrow. 1079 scroll_bar_up_arrow, scroll_bar_down_arrow.
1080 (win32_scroll_bar_click): New enum constant. 1080 (win32_scroll_bar_click): New enum constant.
1081 1081
10821996-05-03 Andrw Innes <andrewi@harlequin.co.uk> 10821996-05-03 Andrew Innes <andrewi@harlequin.co.uk>
1083 1083
1084 * makefile.nt (SUBSYSTEM) [NTGUI]: Remove conditional. 1084 * makefile.nt (SUBSYSTEM) [NTGUI]: Remove conditional.
1085 (LINK_FLAGS): Explicitly set base address, and stack and heap sizes. 1085 (LINK_FLAGS): Explicitly set base address, and stack and heap sizes.
diff --git a/src/buffer.c b/src/buffer.c
index c934bdf22c3..1fba9136375 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -630,7 +630,21 @@ CLONE nil means the indirect buffer's state is reset to default values. */)
630 XMARKER (b->zv_marker)->insertion_type = 1; 630 XMARKER (b->zv_marker)->insertion_type = 1;
631 } 631 }
632 else 632 else
633 clone_per_buffer_values (b->base_buffer, b); 633 {
634 struct buffer *old_b = current_buffer;
635
636 clone_per_buffer_values (b->base_buffer, b);
637 b->filename = Qnil;
638 b->file_truename = Qnil;
639 b->display_count = make_number (0);
640 b->backed_up = Qnil;
641 b->auto_save_file_name = Qnil;
642 set_buffer_internal_1 (b);
643 Fset (intern ("buffer-save-without-query"), Qnil);
644 Fset (intern ("buffer-file-number"), Qnil);
645 Fset (intern ("buffer-stale-function"), Qnil);
646 set_buffer_internal_1 (old_b);
647 }
634 648
635 return buf; 649 return buf;
636} 650}
@@ -931,7 +945,7 @@ is the default binding of variable. */)
931} 945}
932 946
933/* Return an alist of the Lisp-level buffer-local bindings of 947/* Return an alist of the Lisp-level buffer-local bindings of
934 buffer BUF. That is, do't include the variables maintained 948 buffer BUF. That is, don't include the variables maintained
935 in special slots in the buffer object. */ 949 in special slots in the buffer object. */
936 950
937static Lisp_Object 951static Lisp_Object
diff --git a/src/dispnew.c b/src/dispnew.c
index 2f807b41cb4..f549a8dde91 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -3154,14 +3154,20 @@ mirror_line_dance (w, unchanged_at_top, nlines, copy_from, retained_p)
3154 int m2_from; 3154 int m2_from;
3155 3155
3156 w2 = frame_row_to_window (root, frame_from); 3156 w2 = frame_row_to_window (root, frame_from);
3157 m2 = w2->current_matrix; 3157 /* ttn@surf.glug.org: when enabling menu bar using `emacs
3158 m2_from = frame_from - m2->matrix_y; 3158 -nw', FROM_FRAME sometimes has no associated window.
3159 copy_row_except_pointers (m->rows + window_to, 3159 This check avoids a segfault if W2 is null. */
3160 m2->rows + m2_from); 3160 if (w2)
3161 3161 {
3162 /* If frame line is empty, window line is empty, too. */ 3162 m2 = w2->current_matrix;
3163 if (!retained_p[copy_from[i]]) 3163 m2_from = frame_from - m2->matrix_y;
3164 m->rows[window_to].enabled_p = 0; 3164 copy_row_except_pointers (m->rows + window_to,
3165 m2->rows + m2_from);
3166
3167 /* If frame line is empty, window line is empty, too. */
3168 if (!retained_p[copy_from[i]])
3169 m->rows[window_to].enabled_p = 0;
3170 }
3165 sync_p = 1; 3171 sync_p = 1;
3166 } 3172 }
3167 else if (from_inside_window_p) 3173 else if (from_inside_window_p)
diff --git a/src/emacs.c b/src/emacs.c
index f6d32e175b3..c368c57a11f 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -1806,8 +1806,8 @@ struct standard_args standard_args[] =
1806 { "-d", "--display", 60, 1 }, 1806 { "-d", "--display", 60, 1 },
1807 { "-display", 0, 60, 1 }, 1807 { "-display", 0, 60, 1 },
1808 /* Now for the options handled in startup.el. */ 1808 /* Now for the options handled in startup.el. */
1809 { "-Q", "--bare-bones", 55, 0 }, 1809 { "-Q", "--quick", 55, 0 },
1810 { "-bare-bones", 0, 55, 0 }, 1810 { "-quick", 0, 55, 0 },
1811 { "-q", "--no-init-file", 50, 0 }, 1811 { "-q", "--no-init-file", 50, 0 },
1812 { "-no-init-file", 0, 50, 0 }, 1812 { "-no-init-file", 0, 50, 0 },
1813 { "-no-site-file", "--no-site-file", 40, 0 }, 1813 { "-no-site-file", "--no-site-file", 40, 0 },
@@ -1818,6 +1818,8 @@ struct standard_args standard_args[] =
1818 { "-i", "--icon-type", 15, 0 }, 1818 { "-i", "--icon-type", 15, 0 },
1819 { "-itype", 0, 15, 0 }, 1819 { "-itype", 0, 15, 0 },
1820 { "-iconic", "--iconic", 15, 0 }, 1820 { "-iconic", "--iconic", 15, 0 },
1821 { "-D", "--basic-display", 12, 0},
1822 { "--basic-display", 0, 12, 0},
1821 { "-bg", "--background-color", 10, 1 }, 1823 { "-bg", "--background-color", 10, 1 },
1822 { "-background", 0, 10, 1 }, 1824 { "-background", 0, 10, 1 },
1823 { "-fg", "--foreground-color", 10, 1 }, 1825 { "-fg", "--foreground-color", 10, 1 },
diff --git a/src/fns.c b/src/fns.c
index 9a3121a3391..e921579f79b 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -1,6 +1,6 @@
1/* Random utility Lisp functions. 1/* Random utility Lisp functions.
2 Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 98, 99, 2000, 2001, 02, 03, 2004 2 Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1998, 1999, 2000,
3 Free Software Foundation, Inc. 3 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
6 6
@@ -66,6 +66,7 @@ int use_file_dialog;
66extern int minibuffer_auto_raise; 66extern int minibuffer_auto_raise;
67extern Lisp_Object minibuf_window; 67extern Lisp_Object minibuf_window;
68extern Lisp_Object Vlocale_coding_system; 68extern Lisp_Object Vlocale_coding_system;
69extern Lisp_Object Vloads_in_progress;
69 70
70Lisp_Object Qstring_lessp, Qprovide, Qrequire; 71Lisp_Object Qstring_lessp, Qprovide, Qrequire;
71Lisp_Object Qyes_or_no_p_history; 72Lisp_Object Qyes_or_no_p_history;
@@ -1147,7 +1148,18 @@ If STRING is multibyte, the result is STRING itself.
1147Otherwise it is a newly created string, with no text properties. 1148Otherwise it is a newly created string, with no text properties.
1148If STRING is unibyte and contains an individual 8-bit byte (i.e. not 1149If STRING is unibyte and contains an individual 8-bit byte (i.e. not
1149part of a multibyte form), it is converted to the corresponding 1150part of a multibyte form), it is converted to the corresponding
1150multibyte character of charset `eight-bit-control' or `eight-bit-graphic'. */) 1151multibyte character of charset `eight-bit-control' or `eight-bit-graphic'.
1152Beware, this often doesn't really do what you think it does.
1153It is similar to (decode-coding-string STRING 'emacs-mule-unix).
1154If you're not sure, whether to use `string-as-multibyte' or
1155`string-to-multibyte', use `string-to-multibyte'. Beware:
1156 (aref (string-as-multibyte "\201") 0) -> 129 (aka ?\201)
1157 (aref (string-as-multibyte "\300") 0) -> 192 (aka ?\300)
1158 (aref (string-as-multibyte "\300\201") 0) -> 192 (aka ?\300)
1159 (aref (string-as-multibyte "\300\201") 1) -> 129 (aka ?\201)
1160but
1161 (aref (string-as-multibyte "\201\300") 0) -> 2240
1162 (aref (string-as-multibyte "\201\300") 1) -> <error> */)
1151 (string) 1163 (string)
1152 Lisp_Object string; 1164 Lisp_Object string;
1153{ 1165{
@@ -1181,7 +1193,8 @@ Otherwise it is a newly created string, with no text properties.
1181Characters 0200 through 0237 are converted to eight-bit-control 1193Characters 0200 through 0237 are converted to eight-bit-control
1182characters of the same character code. Characters 0240 through 0377 1194characters of the same character code. Characters 0240 through 0377
1183are converted to eight-bit-graphic characters of the same character 1195are converted to eight-bit-graphic characters of the same character
1184codes. */) 1196codes.
1197This is similar to (decode-coding-string STRING 'binary) */)
1185 (string) 1198 (string)
1186 Lisp_Object string; 1199 Lisp_Object string;
1187{ 1200{
@@ -3444,9 +3457,15 @@ The normal messages at start and end of loading FILENAME are suppressed. */)
3444 CHECK_SYMBOL (feature); 3457 CHECK_SYMBOL (feature);
3445 3458
3446 /* Record the presence of `require' in this file 3459 /* Record the presence of `require' in this file
3447 even if the feature specified is already loaded. */ 3460 even if the feature specified is already loaded.
3448 LOADHIST_ATTACH (Fcons (Qrequire, feature)); 3461 But not more than once in any file,
3449 3462 and not when we aren't loading a file. */
3463 if (! NILP (Vloads_in_progress))
3464 {
3465 tem = Fcons (Qrequire, feature);
3466 if (NILP (Fmember (tem, Vcurrent_load_list)))
3467 LOADHIST_ATTACH (tem);
3468 }
3450 tem = Fmemq (feature, Vfeatures); 3469 tem = Fmemq (feature, Vfeatures);
3451 3470
3452 if (NILP (tem)) 3471 if (NILP (tem))
diff --git a/src/keyboard.c b/src/keyboard.c
index 39891b1a95d..48c47502f85 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -2252,12 +2252,16 @@ make_ctrl_char (c)
2252 return c; 2252 return c;
2253} 2253}
2254 2254
2255/* Display help echo in the echo area. 2255/* Display the help-echo property of the character after the mouse pointer.
2256 Either show it in the echo area, or call show-help-function to display
2257 it by other means (maybe in a tooltip).
2256 2258
2257 HELP a string means display that string, HELP nil means clear the 2259 If HELP is nil, that means clear the previous help echo.
2258 help echo. If HELP is a function, call it with OBJECT and POS as 2260
2259 arguments; the function should return a help string or nil for 2261 If HELP is a string, display that string. If HELP is a function,
2260 none. For all other types of HELP evaluate it to obtain a string. 2262 call it with OBJECT and POS as arguments; the function should
2263 return a help string or nil for none. For all other types of HELP,
2264 evaluate it to obtain a string.
2261 2265
2262 WINDOW is the window in which the help was generated, if any. 2266 WINDOW is the window in which the help was generated, if any.
2263 It is nil if not in a window. 2267 It is nil if not in a window.
diff --git a/src/keymap.c b/src/keymap.c
index a55563a4e92..3706ad52c9e 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -765,7 +765,9 @@ usage: (map-keymap FUNCTION KEYMAP) */)
765 remove that. Also remove a menu help string as second element. 765 remove that. Also remove a menu help string as second element.
766 766
767 If AUTOLOAD is nonzero, load autoloadable keymaps 767 If AUTOLOAD is nonzero, load autoloadable keymaps
768 that are referred to with indirection. */ 768 that are referred to with indirection.
769
770 This can GC because menu_item_eval_property calls Feval. */
769 771
770Lisp_Object 772Lisp_Object
771get_keyelt (object, autoload) 773get_keyelt (object, autoload)
@@ -2555,6 +2557,19 @@ where_is_internal (definition, keymaps, firstonly, noindirect, no_remap)
2555 continue; 2557 continue;
2556 2558
2557 record_sequence: 2559 record_sequence:
2560 /* Don't annoy user with strings from a menu such as
2561 Select Paste. Change them all to "(any string)",
2562 so that there seems to be only one menu item
2563 to report. */
2564 if (! NILP (sequence))
2565 {
2566 Lisp_Object tem;
2567 tem = Faref (sequence, make_number (XVECTOR (sequence)->size - 1));
2568 if (STRINGP (tem))
2569 Faset (sequence, make_number (XVECTOR (sequence)->size - 1),
2570 build_string ("(any string)"));
2571 }
2572
2558 /* It is a true unshadowed match. Record it, unless it's already 2573 /* It is a true unshadowed match. Record it, unless it's already
2559 been seen (as could happen when inheriting keymaps). */ 2574 been seen (as could happen when inheriting keymaps). */
2560 if (NILP (Fmember (sequence, found))) 2575 if (NILP (Fmember (sequence, found)))
@@ -2732,7 +2747,7 @@ where_is_internal_2 (args, key, binding)
2732} 2747}
2733 2748
2734 2749
2735/* This function cannot GC. */ 2750/* This function can GC because get_keyelt can. */
2736 2751
2737static Lisp_Object 2752static Lisp_Object
2738where_is_internal_1 (binding, key, definition, noindirect, this, last, 2753where_is_internal_1 (binding, key, definition, noindirect, this, last,
diff --git a/src/lread.c b/src/lread.c
index 5b5ea478a16..d36d45c8c7d 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -194,7 +194,7 @@ static int new_backquote_flag;
194/* A list of file names for files being loaded in Fload. Used to 194/* A list of file names for files being loaded in Fload. Used to
195 check for recursive loads. */ 195 check for recursive loads. */
196 196
197static Lisp_Object Vloads_in_progress; 197Lisp_Object Vloads_in_progress;
198 198
199/* Non-zero means load dangerous compiled Lisp files. */ 199/* Non-zero means load dangerous compiled Lisp files. */
200 200
@@ -207,6 +207,7 @@ static Lisp_Object Vbytecomp_version_regexp;
207static void to_multibyte P_ ((char **, char **, int *)); 207static void to_multibyte P_ ((char **, char **, int *));
208static void readevalloop P_ ((Lisp_Object, FILE*, Lisp_Object, 208static void readevalloop P_ ((Lisp_Object, FILE*, Lisp_Object,
209 Lisp_Object (*) (), int, 209 Lisp_Object (*) (), int,
210 Lisp_Object, Lisp_Object,
210 Lisp_Object, Lisp_Object)); 211 Lisp_Object, Lisp_Object));
211static Lisp_Object load_unwind P_ ((Lisp_Object)); 212static Lisp_Object load_unwind P_ ((Lisp_Object));
212static Lisp_Object load_descriptor_unwind P_ ((Lisp_Object)); 213static Lisp_Object load_descriptor_unwind P_ ((Lisp_Object));
@@ -913,7 +914,8 @@ Return t if file exists. */)
913 load_descriptor_list 914 load_descriptor_list
914 = Fcons (make_number (fileno (stream)), load_descriptor_list); 915 = Fcons (make_number (fileno (stream)), load_descriptor_list);
915 load_in_progress++; 916 load_in_progress++;
916 readevalloop (Qget_file_char, stream, file, Feval, 0, Qnil, Qnil); 917 readevalloop (Qget_file_char, stream, file, Feval,
918 0, Qnil, Qnil, Qnil, Qnil);
917 unbind_to (count, Qnil); 919 unbind_to (count, Qnil);
918 920
919 /* Run any load-hooks for this file. */ 921 /* Run any load-hooks for this file. */
@@ -1291,16 +1293,19 @@ end_of_file_error ()
1291 1293
1292/* UNIBYTE specifies how to set load_convert_to_unibyte 1294/* UNIBYTE specifies how to set load_convert_to_unibyte
1293 for this invocation. 1295 for this invocation.
1294 READFUN, if non-nil, is used instead of `read'. */ 1296 READFUN, if non-nil, is used instead of `read'.
1297 START, END is region in current buffer (from eval-region). */
1295 1298
1296static void 1299static void
1297readevalloop (readcharfun, stream, sourcename, evalfun, printflag, unibyte, readfun) 1300readevalloop (readcharfun, stream, sourcename, evalfun,
1301 printflag, unibyte, readfun, start, end)
1298 Lisp_Object readcharfun; 1302 Lisp_Object readcharfun;
1299 FILE *stream; 1303 FILE *stream;
1300 Lisp_Object sourcename; 1304 Lisp_Object sourcename;
1301 Lisp_Object (*evalfun) (); 1305 Lisp_Object (*evalfun) ();
1302 int printflag; 1306 int printflag;
1303 Lisp_Object unibyte, readfun; 1307 Lisp_Object unibyte, readfun;
1308 Lisp_Object start, end;
1304{ 1309{
1305 register int c; 1310 register int c;
1306 register Lisp_Object val; 1311 register Lisp_Object val;
@@ -1328,28 +1333,41 @@ readevalloop (readcharfun, stream, sourcename, evalfun, printflag, unibyte, read
1328 continue_reading_p = 1; 1333 continue_reading_p = 1;
1329 while (continue_reading_p) 1334 while (continue_reading_p)
1330 { 1335 {
1336 int count1 = SPECPDL_INDEX ();
1337
1331 if (b != 0 && NILP (b->name)) 1338 if (b != 0 && NILP (b->name))
1332 error ("Reading from killed buffer"); 1339 error ("Reading from killed buffer");
1333 1340
1341 if (!NILP (start))
1342 {
1343 record_unwind_protect (save_excursion_restore, save_excursion_save ());
1344 record_unwind_protect (save_restriction_restore, save_restriction_save ());
1345 Fgoto_char (start);
1346 Fnarrow_to_region (make_number (BEGV), end);
1347 }
1348
1334 instream = stream; 1349 instream = stream;
1350 read_next:
1335 c = READCHAR; 1351 c = READCHAR;
1336 if (c == ';') 1352 if (c == ';')
1337 { 1353 {
1338 while ((c = READCHAR) != '\n' && c != -1); 1354 while ((c = READCHAR) != '\n' && c != -1);
1339 continue; 1355 goto read_next;
1356 }
1357 if (c < 0)
1358 {
1359 unbind_to (count1, Qnil);
1360 break;
1340 } 1361 }
1341 if (c < 0) break;
1342 1362
1343 /* Ignore whitespace here, so we can detect eof. */ 1363 /* Ignore whitespace here, so we can detect eof. */
1344 if (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r') 1364 if (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r')
1345 continue; 1365 goto read_next;
1346 1366
1347 if (!NILP (Vpurify_flag) && c == '(') 1367 if (!NILP (Vpurify_flag) && c == '(')
1348 { 1368 {
1349 int count1 = SPECPDL_INDEX ();
1350 record_unwind_protect (unreadpure, Qnil); 1369 record_unwind_protect (unreadpure, Qnil);
1351 val = read_list (-1, readcharfun); 1370 val = read_list (-1, readcharfun);
1352 unbind_to (count1, Qnil);
1353 } 1371 }
1354 else 1372 else
1355 { 1373 {
@@ -1375,6 +1393,10 @@ readevalloop (readcharfun, stream, sourcename, evalfun, printflag, unibyte, read
1375 val = read_internal_start (readcharfun, Qnil, Qnil); 1393 val = read_internal_start (readcharfun, Qnil, Qnil);
1376 } 1394 }
1377 1395
1396 if (!NILP (start) && continue_reading_p)
1397 start = Fpoint_marker ();
1398 unbind_to (count1, Qnil);
1399
1378 val = (*evalfun) (val); 1400 val = (*evalfun) (val);
1379 1401
1380 if (printflag) 1402 if (printflag)
@@ -1433,7 +1455,8 @@ This function preserves the position of point. */)
1433 specbind (Qstandard_output, tem); 1455 specbind (Qstandard_output, tem);
1434 record_unwind_protect (save_excursion_restore, save_excursion_save ()); 1456 record_unwind_protect (save_excursion_restore, save_excursion_save ());
1435 BUF_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf))); 1457 BUF_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf)));
1436 readevalloop (buf, 0, filename, Feval, !NILP (printflag), unibyte, Qnil); 1458 readevalloop (buf, 0, filename, Feval,
1459 !NILP (printflag), unibyte, Qnil, Qnil, Qnil);
1437 unbind_to (count, Qnil); 1460 unbind_to (count, Qnil);
1438 1461
1439 return Qnil; 1462 return Qnil;
@@ -1465,15 +1488,10 @@ This function does not move point. */)
1465 tem = printflag; 1488 tem = printflag;
1466 specbind (Qstandard_output, tem); 1489 specbind (Qstandard_output, tem);
1467 1490
1468 if (NILP (printflag)) 1491 /* readevalloop calls functions which check the type of start and end. */
1469 record_unwind_protect (save_excursion_restore, save_excursion_save ());
1470 record_unwind_protect (save_restriction_restore, save_restriction_save ());
1471
1472 /* This both uses start and checks its type. */
1473 Fgoto_char (start);
1474 Fnarrow_to_region (make_number (BEGV), end);
1475 readevalloop (cbuf, 0, XBUFFER (cbuf)->filename, Feval, 1492 readevalloop (cbuf, 0, XBUFFER (cbuf)->filename, Feval,
1476 !NILP (printflag), Qnil, read_function); 1493 !NILP (printflag), Qnil, read_function,
1494 start, end);
1477 1495
1478 return unbind_to (count, Qnil); 1496 return unbind_to (count, Qnil);
1479} 1497}
diff --git a/src/print.c b/src/print.c
index 8bb55f21248..47e338e8492 100644
--- a/src/print.c
+++ b/src/print.c
@@ -1,6 +1,6 @@
1/* Lisp object printing and output streams. 1/* Lisp object printing and output streams.
2 Copyright (C) 1985, 86, 88, 93, 94, 95, 97, 98, 1999, 2000, 01, 03, 2004 2 Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997, 1998, 1999,
3 Free Software Foundation, Inc. 3 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
6 6
@@ -211,13 +211,17 @@ void print_interval ();
211 } \ 211 } \
212 if (MARKERP (printcharfun)) \ 212 if (MARKERP (printcharfun)) \
213 { \ 213 { \
214 if (!(XMARKER (original)->buffer)) \ 214 EMACS_INT marker_pos; \
215 if (!(XMARKER (printcharfun)->buffer)) \
215 error ("Marker does not point anywhere"); \ 216 error ("Marker does not point anywhere"); \
216 if (XMARKER (original)->buffer != current_buffer) \ 217 if (XMARKER (printcharfun)->buffer != current_buffer) \
217 set_buffer_internal (XMARKER (original)->buffer); \ 218 set_buffer_internal (XMARKER (printcharfun)->buffer); \
219 marker_pos = marker_position (printcharfun); \
220 if (marker_pos < BEGV || marker_pos > ZV) \
221 error ("Marker is outside the accessible part of the buffer"); \
218 old_point = PT; \ 222 old_point = PT; \
219 old_point_byte = PT_BYTE; \ 223 old_point_byte = PT_BYTE; \
220 SET_PT_BOTH (marker_position (printcharfun), \ 224 SET_PT_BOTH (marker_pos, \
221 marker_byte_position (printcharfun)); \ 225 marker_byte_position (printcharfun)); \
222 start_point = PT; \ 226 start_point = PT; \
223 start_point_byte = PT_BYTE; \ 227 start_point_byte = PT_BYTE; \
diff --git a/src/window.c b/src/window.c
index 574c348c460..e16416d6fb2 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3173,6 +3173,9 @@ selects the buffer of the selected window before each command. */)
3173 if (EQ (window, selected_window)) 3173 if (EQ (window, selected_window))
3174 return window; 3174 return window;
3175 3175
3176 /* Store the current buffer's actual point into the
3177 old selected window. It belongs to that window,
3178 and when the window is not selected, must be in the window. */
3176 if (!NILP (selected_window)) 3179 if (!NILP (selected_window))
3177 { 3180 {
3178 ow = XWINDOW (selected_window); 3181 ow = XWINDOW (selected_window);
@@ -5638,8 +5641,9 @@ the return value is nil. Otherwise the value is t. */)
5638#endif 5641#endif
5639#endif 5642#endif
5640 5643
5641 /* "Swap out" point from the selected window 5644 /* "Swap out" point from the selected window's buffer
5642 into its buffer. We do this now, before 5645 into the window itself. (Normally the pointm of the selected
5646 window holds garbage.) We do this now, before
5643 restoring the window contents, and prevent it from 5647 restoring the window contents, and prevent it from
5644 being done later on when we select a new window. */ 5648 being done later on when we select a new window. */
5645 if (! NILP (XWINDOW (selected_window)->buffer)) 5649 if (! NILP (XWINDOW (selected_window)->buffer))
@@ -5789,10 +5793,11 @@ the return value is nil. Otherwise the value is t. */)
5789 FRAME_ROOT_WINDOW (f) = data->root_window; 5793 FRAME_ROOT_WINDOW (f) = data->root_window;
5790 /* Prevent "swapping out point" in the old selected window 5794 /* Prevent "swapping out point" in the old selected window
5791 using the buffer that has been restored into it. 5795 using the buffer that has been restored into it.
5792 Use the point value from the beginning of this function 5796 We already swapped out point that from that window's old buffer. */
5793 since unshow_buffer (called from delete_all_subwindows)
5794 could have altered it. */
5795 selected_window = Qnil; 5797 selected_window = Qnil;
5798
5799 /* Arrange *not* to restore point in the buffer that was
5800 current when the window configuration was saved. */
5796 if (EQ (XWINDOW (data->current_window)->buffer, new_current_buffer)) 5801 if (EQ (XWINDOW (data->current_window)->buffer, new_current_buffer))
5797 set_marker_restricted (XWINDOW (data->current_window)->pointm, 5802 set_marker_restricted (XWINDOW (data->current_window)->pointm,
5798 make_number (old_point), 5803 make_number (old_point),