aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2005-06-21 15:42:45 +0000
committerKaroly Lorentey2005-06-21 15:42:45 +0000
commita3fbb8977ddcc3f913058d323af6034cb70561a9 (patch)
treed5b0488432b505d2a36ee2890f8727c8ac7506f5
parentef85512e51f043d73788f00a2aed13cccde0682c (diff)
parent0ff13af938126dca16ec0e1e80e3ac38e177e5d3 (diff)
downloademacs-a3fbb8977ddcc3f913058d323af6034cb70561a9.tar.gz
emacs-a3fbb8977ddcc3f913058d323af6034cb70561a9.zip
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-423 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-424 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-425 Remove "-face" suffix from gnus faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-426 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-427 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-428 Remove "-face" suffix from MH-E faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-429 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-430 Remove "-face" suffix from cc-mode faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-431 Remove "-face" suffix from eshell faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-432 Remove "-face" suffix from ediff faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-433 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-434 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-351
-rw-r--r--admin/FOR-RELEASE19
-rw-r--r--etc/NEWS4
-rw-r--r--etc/TODO10
-rw-r--r--lisp/ChangeLog290
-rw-r--r--lisp/comint.el10
-rw-r--r--lisp/ediff-init.el184
-rw-r--r--lisp/emacs-lisp/derived.el2
-rw-r--r--lisp/emacs-lisp/edebug.el2
-rw-r--r--lisp/emacs-lisp/elint.el4
-rw-r--r--lisp/emacs-lisp/regexp-opt.el2
-rw-r--r--lisp/emacs-lisp/warnings.el23
-rw-r--r--lisp/emulation/vip.el2
-rw-r--r--lisp/eshell/em-ls.el68
-rw-r--r--lisp/eshell/em-prompt.el8
-rw-r--r--lisp/eshell/esh-mode.el2
-rw-r--r--lisp/eshell/esh-test.el16
-rw-r--r--lisp/faces.el6
-rw-r--r--lisp/find-file.el6
-rw-r--r--lisp/font-lock.el2
-rw-r--r--lisp/gnus/ChangeLog124
-rw-r--r--lisp/gnus/gnus-art.el40
-rw-r--r--lisp/gnus/gnus-cite.el235
-rw-r--r--lisp/gnus/gnus-cus.el10
-rw-r--r--lisp/gnus/gnus-group.el44
-rw-r--r--lisp/gnus/gnus-picon.el8
-rw-r--r--lisp/gnus/gnus-srvr.el30
-rw-r--r--lisp/gnus/gnus-sum.el34
-rw-r--r--lisp/gnus/gnus.el167
-rw-r--r--lisp/gnus/message.el70
-rw-r--r--lisp/gnus/mm-extern.el4
-rw-r--r--lisp/gnus/pop3.el2
-rw-r--r--lisp/gnus/sieve-mode.el24
-rw-r--r--lisp/gnus/spam.el10
-rw-r--r--lisp/ido.el82
-rw-r--r--lisp/info.el6
-rw-r--r--lisp/language/ethio-util.el4
-rw-r--r--lisp/longlines.el9
-rw-r--r--lisp/ls-lisp.el2
-rw-r--r--lisp/mail/sendmail.el119
-rw-r--r--lisp/menu-bar.el2
-rw-r--r--lisp/mh-e/ChangeLog62
-rw-r--r--lisp/mh-e/mh-comp.el4
-rw-r--r--lisp/mh-e/mh-customize.el160
-rw-r--r--lisp/mh-e/mh-identity.el2
-rw-r--r--lisp/mh-e/mh-mime.el10
-rw-r--r--lisp/mh-e/mh-speed.el32
-rw-r--r--lisp/mh-e/mh-utils.el10
-rw-r--r--lisp/net/browse-url.el103
-rw-r--r--lisp/net/tramp-ftp.el2
-rw-r--r--lisp/net/tramp-smb.el2
-rw-r--r--lisp/net/tramp-util.el2
-rw-r--r--lisp/net/tramp-uu.el2
-rw-r--r--lisp/net/tramp-vc.el2
-rw-r--r--lisp/net/tramp.el2
-rw-r--r--lisp/net/zone-mode.el4
-rw-r--r--lisp/progmodes/ada-mode.el278
-rw-r--r--lisp/progmodes/cc-align.el2
-rw-r--r--lisp/progmodes/cc-awk.el26
-rw-r--r--lisp/progmodes/cc-fonts.el12
-rw-r--r--lisp/progmodes/cperl-mode.el2
-rw-r--r--lisp/progmodes/grep.el22
-rw-r--r--lisp/progmodes/idlwave.el10
-rw-r--r--lisp/progmodes/inf-lisp.el2
-rw-r--r--lisp/progmodes/make-mode.el1
-rw-r--r--lisp/progmodes/modula2.el2
-rw-r--r--lisp/progmodes/ps-mode.el12
-rw-r--r--lisp/progmodes/vhdl-mode.el10
-rw-r--r--lisp/shell.el10
-rw-r--r--lisp/simple.el17
-rw-r--r--lisp/smerge-mode.el2
-rw-r--r--lisp/startup.el8
-rw-r--r--lisp/subr.el32
-rw-r--r--lisp/term.el28
-rw-r--r--lisp/term/linux.el3
-rw-r--r--lisp/textmodes/bibtex.el4
-rw-r--r--lisp/textmodes/sgml-mode.el4
-rw-r--r--lisp/tooltip.el15
-rw-r--r--lisp/tree-widget.el58
-rw-r--r--lisp/woman.el4
-rw-r--r--lispref/ChangeLog74
-rw-r--r--lispref/anti.texi7
-rw-r--r--lispref/backups.texi8
-rw-r--r--lispref/compile.texi2
-rw-r--r--lispref/customize.texi3
-rw-r--r--lispref/debugging.texi15
-rw-r--r--lispref/display.texi31
-rw-r--r--lispref/edebug.texi54
-rw-r--r--lispref/elisp.texi10
-rw-r--r--lispref/errors.texi2
-rw-r--r--lispref/files.texi10
-rw-r--r--lispref/frames.texi18
-rw-r--r--lispref/functions.texi37
-rw-r--r--lispref/help.texi18
-rw-r--r--lispref/keymaps.texi8
-rw-r--r--lispref/lists.texi91
-rw-r--r--lispref/minibuf.texi141
-rw-r--r--lispref/modes.texi11
-rw-r--r--lispref/nonascii.texi16
-rw-r--r--lispref/os.texi18
-rw-r--r--lispref/processes.texi425
-rw-r--r--lispref/searching.texi36
-rw-r--r--lispref/strings.texi7
-rw-r--r--lispref/syntax.texi9
-rw-r--r--lispref/text.texi32
-rw-r--r--lispref/variables.texi84
-rw-r--r--man/ChangeLog4
-rw-r--r--man/text.texi4
-rw-r--r--nt/INSTALL11
-rw-r--r--src/ChangeLog28
-rw-r--r--src/buffer.c4
-rw-r--r--src/dispextern.h4
-rw-r--r--src/dispnew.c22
-rw-r--r--src/keyboard.c3
-rw-r--r--src/term.c64
-rw-r--r--src/xdisp.c2
-rw-r--r--src/xselect.c6
116 files changed, 2750 insertions, 1218 deletions
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index 0d2b5d0ee0b..2da2a755f4a 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -5,6 +5,12 @@ Tasks needed before the next release.
5** `undo-ask-before-discard', currently set to t for debugging purposes 5** `undo-ask-before-discard', currently set to t for debugging purposes
6has to be set to nil: when t, it can leak memory and cause other problems. 6has to be set to nil: when t, it can leak memory and cause other problems.
7 7
8** Update release dates of manuals.
9
10** Spell check the manuals.
11
12** Get rid of overfull and underfull boxes in manuals.
13
8* NEW FEATURES 14* NEW FEATURES
9 15
10** Make VC-over-Tramp work where possible, or at least fail 16** Make VC-over-Tramp work where possible, or at least fail
@@ -18,12 +24,11 @@ See msg from rms to emacs-devel on 21 Dec.
18 24
19** Enhance scroll-bar to handle tall line (similar to line-move). 25** Enhance scroll-bar to handle tall line (similar to line-move).
20 26
21** Adapt mouse-sel-mode to mouse-1-click-follows-link.
22
23 27
24* FATAL ERRORS 28* FATAL ERRORS
25 29
26** Make unexec handle memory mapping policy of the latest versions of Linux. 30** Make unexec handle memory mapping policy of the latest versions of Linux.
31This includes exec_shield and a memory-layout randomization feature.
27 32
28** Investigate reported crashes in compact_small_strings. 33** Investigate reported crashes in compact_small_strings.
29 34
@@ -80,13 +85,9 @@ is encountered.
80 85
81** Document Custom Themes. 86** Document Custom Themes.
82 87
83** Finish updating the Emacs Lisp manual. 88** Update lispref/README.
84 89
85*** Update lispref/README. 90** Update man/info.texi.
86
87** Update the Emacs manual.
88
89*** Update man/info.texi.
90 91
91** Add missing years in copyright notices of all files. 92** Add missing years in copyright notices of all files.
92 93
@@ -114,8 +115,6 @@ lisp/url working Thien-Thi Nguyen
114 115
115** Update AUTHORS. 116** Update AUTHORS.
116 117
117** Reorder NEWS entries.
118
119** Check the Emacs manual. 118** Check the Emacs manual.
120 119
121Each manual section should be checked for factual correctness 120Each manual section should be checked for factual correctness
diff --git a/etc/NEWS b/etc/NEWS
index b35745ee349..477bf23c524 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3066,7 +3066,7 @@ Emacs 21.1, but was not documented then.
3066 3066
3067+++ 3067+++
3068*** New function `add-to-ordered-list' is like `add-to-list' but 3068*** New function `add-to-ordered-list' is like `add-to-list' but
3069associates a numeric ordering of each symbol element added to the list. 3069associates a numeric ordering of each element added to the list.
3070 3070
3071+++ 3071+++
3072*** New function `copy-tree' makes a copy of a tree. 3072*** New function `copy-tree' makes a copy of a tree.
@@ -3633,6 +3633,7 @@ of text properties as well as the character code.
3633*** `syntax-class' extracts the class of a syntax code (as returned 3633*** `syntax-class' extracts the class of a syntax code (as returned
3634by `syntax-after'). 3634by `syntax-after').
3635 3635
3636+++
3636*** The new function `syntax-ppss' rovides an efficient way to find the 3637*** The new function `syntax-ppss' rovides an efficient way to find the
3637current syntactic context at point. 3638current syntactic context at point.
3638 3639
@@ -4926,6 +4927,7 @@ such things as help and apropos buffers.
4926of hierarchical data as an outline. For example, the tree-widget is 4927of hierarchical data as an outline. For example, the tree-widget is
4927well suited to display a hierarchy of directories and files. 4928well suited to display a hierarchy of directories and files.
4928 4929
4930+++
4929** The new library bindat.el provides functions to unpack and pack 4931** The new library bindat.el provides functions to unpack and pack
4930binary data structures, such as network packets, to and from Lisp 4932binary data structures, such as network packets, to and from Lisp
4931data structures. 4933data structures.
diff --git a/etc/TODO b/etc/TODO
index d964a35c1d4..abc3f179574 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -40,6 +40,9 @@ to the FSF.
40** Implement something better than the current Refill mode. This 40** Implement something better than the current Refill mode. This
41 probably needs some primitive support. 41 probably needs some primitive support.
42 42
43** Add a command to make a local variables list in the current buffer
44 and/or add a variable to the list.
45
43** Implement primitive and higher-level functions to allow filling 46** Implement primitive and higher-level functions to allow filling
44 properly with variable-pitch faces. 47 properly with variable-pitch faces.
45 48
@@ -61,6 +64,10 @@ to the FSF.
61 64
62** Internationalize Emacs's messages. 65** Internationalize Emacs's messages.
63 66
67** Add a "current vertical pixel level" value that goes with point,
68 so that motion commands can also move through tall images.
69 This value would be to point as window-vscroll is to window-start.
70
64** Address internationalization of symbols names essentially 71** Address internationalization of symbols names essentially
65 as documentation, e.g. in command names and Custom. 72 as documentation, e.g. in command names and Custom.
66 73
@@ -361,4 +368,7 @@ to the FSF.
361 For use by sml-mode, python-mode, tex-mode, scheme-mode, lisp-mode, 368 For use by sml-mode, python-mode, tex-mode, scheme-mode, lisp-mode,
362 haskell-mode, tuareg-mode, ... 369 haskell-mode, tuareg-mode, ...
363 370
371** Fix unexelf.c to handle the .data.rel and .data.rel.local
372 sections made by GCC 3.4 on IRIX.
373
364;;; arch-tag: b0a3e40b-726a-457d-9999-ba848321b036 374;;; arch-tag: b0a3e40b-726a-457d-9999-ba848321b036
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 13d14707284..89f6e6d27ef 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,270 @@
12005-06-19 Michael Albinus <michael.albinus@gmx.de>
2
3 * net/tramp-ftp.el (top):
4 * net/tramp-smb.el (top):
5 * net/tramp-util.el (top):
6 * net/tramp-uu.el (top):
7 * net/tramp-vc.el (top):
8 * net/tramp.el (top): Revert copyright years back to original
9 ones. Tramp has a life outside GNU Emacs.
10
112005-06-19 Nick Roberts <nickrob@snap.net.nz>
12
13 * tooltip.el: (tooltip-use-echo-area): Don't make it obsolete.
14
152005-06-18 Juri Linkov <juri@jurta.org>
16
17 * progmodes/grep.el (grep-regexp-alist): Use backreference at the
18 end of first regexp to limit the match to the position between
19 line number and source line with same separator character as used
20 between file name and line number. In the second regexp limit
21 mouse-face area to file name and line number by adding new group
22 for them and referring it in HYPERLINK arg.
23 (grep-regexp-alist, grep-mode-font-lock-keywords): Use shy group.
24 (grep-mode): Set font-lock-lines-before to 0 to not refontify the
25 previous line where grep markers may be already removed.
26
272005-06-18 Peter Kleiweg <p.c.j.kleiweg@rug.nl>
28
29 * progmodes/ps-mode.el: Update version and maintainer's email
30 address.
31
322005-06-18 Steve Youngs <steve@xemacs.org>
33
34 * net/browse-url.el (browse-url-browser-function)
35 (browse-url-default-browser): Add firefox.
36 (browse-url-firefox-program, browse-url-firefox-arguments)
37 (browse-url-firefox-startup-arguments)
38 (browse-url-firefox-new-window-is-tab): New defcustoms.
39 (browse-url-firefox, browse-url-firefox-sentinel): New functions.
40
412005-06-17 Richard M. Stallman <rms@gnu.org>
42
43 * startup.el (command-line): Warn if specified user name has
44 no home directory.
45
46 * term.el (term-get-old-input, term-input-filter, term-input-sender)
47 (term-mode-hook, term-exec-hook, term-escape-char): Doc fixes.
48
49 * longlines.el (longlines-mode, longlines-show-hard-newlines):
50 Doc fixes.
51
52 * faces.el (underline): Try bold if terminal doesn't support underline.
53
54 * mail/sendmail.el (mail-setup-with-from): New variable.
55 (mail-insert-from-field): New function.
56 (sendmail-send-it): Call it.
57 (mail-setup): Optionally call it here.
58
59 * term/linux.el: Call tty-no-underline.
60
612005-06-17 Luc Teirlinck <teirllm@auburn.edu>
62
63 * emacs-lisp/edebug.el (edebug-goto-here): Doc fix.
64
652005-06-17 Miles Bader <miles@gnu.org>
66
67 * ediff-init.el (ediff-current-diff-A, ediff-current-diff-B)
68 (ediff-current-diff-C, ediff-current-diff-Ancestor)
69 (ediff-fine-diff-A, ediff-fine-diff-B, ediff-fine-diff-C)
70 (ediff-fine-diff-Ancestor, ediff-even-diff-A, ediff-even-diff-B)
71 (ediff-even-diff-C, ediff-even-diff-Ancestor, ediff-odd-diff-A)
72 (ediff-odd-diff-B, ediff-odd-diff-C, ediff-odd-diff-Ancestor):
73 Remove "-face" suffix from face names.
74 (ediff-current-diff-face-A, ediff-current-diff-face-B)
75 (ediff-current-diff-face-C, ediff-current-diff-face-Ancestor)
76 (ediff-fine-diff-face-A, ediff-fine-diff-face-B)
77 (ediff-fine-diff-face-C, ediff-fine-diff-face-Ancestor)
78 (ediff-even-diff-face-A, ediff-even-diff-face-B)
79 (ediff-even-diff-face-C, ediff-even-diff-face-Ancestor)
80 (ediff-odd-diff-face-A, ediff-odd-diff-face-B)
81 (ediff-odd-diff-face-C, ediff-odd-diff-face-Ancestor):
82 New backward-compatibility aliases for renamed faces.
83 (ediff-current-diff-face-A, ediff-current-diff-face-B)
84 (ediff-current-diff-face-C, ediff-current-diff-face-Ancestor)
85 (ediff-fine-diff-face-A, ediff-fine-diff-face-B)
86 (ediff-fine-diff-face-C, ediff-fine-diff-face-Ancestor)
87 (ediff-even-diff-face-A, ediff-even-diff-face-B)
88 (ediff-even-diff-face-C, ediff-even-diff-face-Ancestor)
89 (ediff-odd-diff-face-A, ediff-odd-diff-face-B)
90 (ediff-odd-diff-face-C, ediff-odd-diff-face-Ancestor):
91 Use renamed ediff faces.
92
93 * eshell/esh-test.el (eshell-test-ok, eshell-test-failed):
94 Remove "-face" suffix from face names.
95 (eshell-test-ok-face, eshell-test-failed-face):
96 New backward-compatibility aliases for renamed faces.
97 (eshell-run-test): Use renamed eshell-test faces.
98
99 * eshell/em-prompt.el (eshell-prompt):
100 Remove "-face" suffix from face name.
101 (eshell-prompt-face): New backward-compatibility alias for renamed face.
102 (eshell-emit-prompt): Use renamed eshell-prompt face.
103
104 * eshell/em-ls.el (eshell-ls-directory, eshell-ls-symlink)
105 (eshell-ls-executable, eshell-ls-readonly, eshell-ls-unreadable)
106 (eshell-ls-special, eshell-ls-missing, eshell-ls-archive)
107 (eshell-ls-backup, eshell-ls-product, eshell-ls-clutter):
108 Remove "-face" suffix from face names.
109 (eshell-ls-directory-face, eshell-ls-symlink-face)
110 (eshell-ls-executable-face, eshell-ls-readonly-face)
111 (eshell-ls-unreadable-face, eshell-ls-special-face)
112 (eshell-ls-missing-face, eshell-ls-archive-face)
113 (eshell-ls-backup-face, eshell-ls-product-face)
114 (eshell-ls-clutter-face):
115 New backward-compatibility aliases for renamed faces.
116 (eshell-ls-decorated-name): Use renamed eshell-ls faces.
117
118 * progmodes/cc-fonts.el (c-nonbreakable-space-face): Remove
119 "-face" suffix from face name.
120 (c-cpp-matchers): Use the variable `c-nonbreakable-space-face'
121 instead of literal face.
122
1232005-06-17 Juanma Barranquero <lekktu@gmail.com>
124
125 * emacs-lisp/warnings.el (display-warning, lwarn)
126 (warning-minimum-log-level): Doc fixes.
127 (warning-minimum-level, warning-minimum-log-level):
128 Add :debug to :type choices.
129
130 * progmodes/ada-mode.el (ada-format-paramlist)
131 (ada-get-indent-case, ada-check-matching-start)
132 (ada-check-defun-name, ada-goto-matching-decl-start)
133 (ada-goto-matching-start, ada-goto-matching-end, ada-tab)
134 (ada-untab, ada-move-to-start, ada-fill-comment-paragraph)
135 (ada-make-subprogram-body): Follow error conventions.
136 (ada-case-exception-file, ada-indent-comment-as-code)
137 (ada-indent-handle-comment-special, ada-indent-renames)
138 (ada-indent-return, ada-search-directories-internal)
139 (ada-tab-policy, ada-case-exception-substring)
140 (ada-other-file-alist, ada-matching-start-re)
141 (ada-matching-decl-start-re, ada-contextual-menu-last-point)
142 (ada-imenu-generic-expression, ada-compile-goto-error)
143 (ada-in-comment-p, ada-in-string-p, ada-in-string-or-comment-p)
144 (ada-popup-menu, ada-add-extensions, ada-mode)
145 (ada-region-selected, ada-create-case-exception)
146 (ada-create-case-exception-substring, ada-after-keyword-p)
147 (ada-activate-keys-for-case, ada-adjust-case-region)
148 (ada-adjust-case-buffer, ada-format-paramlist)
149 (ada-scan-paramlist, ada-insert-paramlist)
150 (ada-indent-newline-indent)
151 (ada-indent-newline-indent-conditional)
152 (ada-justified-indent-current, ada-goto-previous-word)
153 (ada-indent-current, ada-get-indent-open-paren)
154 (ada-get-indent-paramlist, ada-get-indent-end)
155 (ada-get-indent-case, ada-get-indent-when, ada-get-indent-if)
156 (ada-get-indent-block-start, ada-get-indent-subprog)
157 (ada-get-indent-noindent, ada-get-indent-label)
158 (ada-get-indent-loop, ada-get-indent-type, ada-goto-stmt-start)
159 (ada-search-prev-end-stmt, ada-goto-next-non-ws)
160 (ada-goto-stmt-end, ada-goto-next-word)
161 (ada-check-matching-start, ada-check-defun-name)
162 (ada-goto-matching-decl-start, ada-goto-matching-start)
163 (ada-goto-matching-end, ada-search-ignore-string-comment)
164 (ada-in-decl-p, ada-looking-at-semi-or)
165 (ada-looking-at-semi-private, ada-in-paramlist-p)
166 (ada-in-open-paren-p, ada-tab, ada-indent-current-function)
167 (ada-untab-hard, ada-move-to-start, ada-move-to-end)
168 (ada-next-procedure, ada-previous-procedure, ada-next-package)
169 (ada-previous-package, ada-create-menu)
170 (ada-fill-comment-paragraph-justify)
171 (ada-fill-comment-paragraph-postfix, ada-fill-comment-paragraph)
172 (ada-other-file-name, ada-last-which-function-line)
173 (ada-last-which-function-subprog, ada-which-function)
174 (ada-get-body-name, ada-outline-level, ada-narrow-to-defun)
175 (ada-gen-treat-proc, ada-check-emacs-version)
176 (ada-continuation-indent, ada-align-region-separate):
177 Fix typos in docstrings.
178 (ada-adjust-case, ada-adjust-case-interactive): Doc fixes.
179
1802005-06-16 Lute Kamstra <lute@gnu.org>
181
182 * simple.el (fundamental-mode): Run after-change-major-mode-hook
183 conditionally.
184
1852005-06-16 Juanma Barranquero <lekktu@gmail.com>
186
187 * comint.el (comint-replace-by-expanded-filename)
188 (comint-prompt-regexp, comint-delimiter-argument-list)
189 (comint-preinput-scroll-to-bottom):
190 * info.el (Info-hide-cookies-node):
191 * ls-lisp.el (ls-lisp-classify):
192 * find-file.el (ff-search-directories, ff-special-constructs)
193 (ff-find-other-file):
194 * font-lock.el (font-lock-keywords):
195 * shell.el (shell-prompt-pattern)
196 (shell-dynamic-complete-functions, shell-mode)
197 (shell-delimiter-argument-list):
198 * term.el (term-replace-by-expanded-filename)
199 (term-prompt-regexp, term-delimiter-argument-list):
200 * woman.el (woman-ignore, woman0-if):
201 * emacs-lisp/derived.el (derived-mode-init-mode-variables):
202 * emacs-lisp/elint.el (elint-init-env):
203 * emacs-lisp/regexp-opt.el (regexp-opt-depth):
204 * eshell/esh-mode.el (eshell-preinput-scroll-to-bottom):
205 * language/ethio-util.el (ethio-tilde-escape)
206 (ethio-use-three-dot-question):
207 * net/zone-mode.el (zone-mode-load-time-setup):
208 * progmodes/cc-align.el (c-lineup-argcont):
209 * progmodes/cc-awk.el (c-awk-beginning-of-defun):
210 * progmodes/cperl-mode.el (cperl-set-style-back):
211 * progmodes/inf-lisp.el (inferior-lisp-prompt):
212 * progmodes/vhdl-mode.el (vhdl-beginning-of-libunit):
213 Fix spellings in docstrings.
214
215 * textmodes/sgml-mode.el (sgml-calculate-indent, html-tag-help):
216 * progmodes/modula2.el (m2-for): Fix spellings.
217
218 * menu-bar.el (menu-bar-games-menu): Fix typo in menu help string.
219
220 * simple.el (undo-more): Don't use `format' on `error' arguments.
221 Improve argument/docstring consistency.
222 (pending-undo-list): Doc fix.
223
224 * smerge-mode.el (smerge-ensure-match):
225 * emulation/vip.el (vip-ex):
226 * net/zone-mode.el (zone-mode-update-serial):
227 * progmodes/idlwave.el (idlwave-complete):
228 * progmodes/vhdl-mode.el (vhdl-visit-file)
229 (vhdl-compose-wire-components):
230 Don't use `format' on `error' arguments.
231
232 * tooltip.el (tooltip-start-delayed-tip, tooltip-timeout)
233 (tooltip-use-echo-area, tooltip-process-prompt-regexp)
234 (tooltip-help-tips): Fix typos in docstrings.
235
2362005-06-16 David Ponce <david@dponce.com>
237
238 * tree-widget.el (tree-widget-value-create): Simplify last change.
239
2402005-06-15 Matt Hodges <MPHodges@member.fsf.org>
241
242 * ido.el (ido-incomplete-regexp): New variable.
243 (ido-set-matches-1): Handle invalid-regexp error and set
244 ido-incomplete-regexp.
245 (ido-incomplete-regexp): New face.
246 (ido-completions): Use it.
247 (ido-complete, ido-exit-minibuffer, ido-completions): Handle
248 incomplete regexps.
249 (ido-completions): Add check for complete match when entering a regexp.
250
2512005-06-15 Stefan Monnier <monnier@iro.umontreal.ca>
252
253 * subr.el (add-to-ordered-list): Use a weak hash-table to avoid leaks.
254
2552005-06-15 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
256
257 * textmodes/bibtex.el (bibtex-Preamble): Enclose BibTeX preamble
258 by field delimiters.
259
2602005-06-15 David Ponce <david@dponce.com>
261
262 * tree-widget.el: eval-and-compile inlined functions so they will
263 be available at run-time too.
264 (tree-widget-super-format-handler)
265 (tree-widget-format-handler): Remove.
266 (tree-widget-value-create): Handle the :indent property.
267
12005-06-15 Miles Bader <miles@gnu.org> 2682005-06-15 Miles Bader <miles@gnu.org>
2 269
3 * progmodes/which-func.el (which-func): Only inherit 270 * progmodes/which-func.el (which-func): Only inherit
@@ -11,7 +278,7 @@
11 278
12 * progmodes/ld-script.el (ld-script-location-counter): 279 * progmodes/ld-script.el (ld-script-location-counter):
13 Remove "-face" suffix from face name. 280 Remove "-face" suffix from face name.
14 (ld-script-location-counter-face): 281 (ld-script-location-counter-face):
15 New backward-compatibility alias for renamed face. 282 New backward-compatibility alias for renamed face.
16 (ld-script-location-counter-face): Use renamed face. 283 (ld-script-location-counter-face): Use renamed face.
17 284
@@ -73,7 +340,7 @@
73 (idlwave-shell-disabled-breakpoint-face) 340 (idlwave-shell-disabled-breakpoint-face)
74 (idlwave-shell-breakpoint-face): Use renamed idlwave-shell faces. 341 (idlwave-shell-breakpoint-face): Use renamed idlwave-shell faces.
75 342
76 * progmodes/flymake.el (flymake-errline, flymake-warnline): 343 * progmodes/flymake.el (flymake-errline, flymake-warnline):
77 Remove "-face" suffix from face names. 344 Remove "-face" suffix from face names.
78 (flymake-errline-face, flymake-warnline-face): 345 (flymake-errline-face, flymake-warnline-face):
79 New backward-compatibility aliases for renamed faces. 346 New backward-compatibility aliases for renamed faces.
@@ -86,7 +353,7 @@
86 (ebrowse-tree-mark-face, ebrowse-root-class-face) 353 (ebrowse-tree-mark-face, ebrowse-root-class-face)
87 (ebrowse-file-name-face, ebrowse-default-face) 354 (ebrowse-file-name-face, ebrowse-default-face)
88 (ebrowse-member-attribute-face, ebrowse-member-class-face) 355 (ebrowse-member-attribute-face, ebrowse-member-class-face)
89 (ebrowse-progress-face): 356 (ebrowse-progress-face):
90 New backward-compatibility aliases for renamed faces. 357 New backward-compatibility aliases for renamed faces.
91 (ebrowse-show-progress, ebrowse-show-file-name-at-point) 358 (ebrowse-show-progress, ebrowse-show-file-name-at-point)
92 (ebrowse-set-mark-props, ebrowse-draw-tree-fn) 359 (ebrowse-set-mark-props, ebrowse-draw-tree-fn)
@@ -95,8 +362,7 @@
95 362
96 * progmodes/antlr-mode.el (antlr-default, antlr-keyword, antlr-syntax) 363 * progmodes/antlr-mode.el (antlr-default, antlr-keyword, antlr-syntax)
97 (antlr-ruledef, antlr-tokendef, antlr-ruleref, antlr-tokenref) 364 (antlr-ruledef, antlr-tokendef, antlr-ruleref, antlr-tokenref)
98 (antlr-literal): Remove "-face" suffix and "font-lock-" from face 365 (antlr-literal): Remove "-face" suffix and "font-lock-" from face names.
99 names.
100 (antlr-font-lock-default-face, antlr-font-lock-keyword-face) 366 (antlr-font-lock-default-face, antlr-font-lock-keyword-face)
101 (antlr-font-lock-syntax-face, antlr-font-lock-ruledef-face) 367 (antlr-font-lock-syntax-face, antlr-font-lock-ruledef-face)
102 (antlr-font-lock-tokendef-face, antlr-font-lock-ruleref-face) 368 (antlr-font-lock-tokendef-face, antlr-font-lock-ruleref-face)
@@ -119,20 +385,20 @@
119 385
120 * progmodes/make-mode.el (makefile-space, makefile-makepp-perl): 386 * progmodes/make-mode.el (makefile-space, makefile-makepp-perl):
121 Eliminate "-face" suffix. 387 Eliminate "-face" suffix.
122 (makefile-targets): Inherit font-lock-variable-name-face and 388 (makefile-targets): Inherit from font-lock-function-name-face and
123 eliminate "-face" suffix. 389 eliminate "-face" suffix.
124 (makefile-shell): Remove attributes and eliminate "-face" suffix. 390 (makefile-shell): Remove attributes and eliminate "-face" suffix.
125 (makefile-*-font-lock-keywords): Append makefile-targets in rule 391 (makefile-*-font-lock-keywords): Append makefile-targets in rule
126 actions, instead of prepending, to make it less visible. 392 actions, instead of prepending, to make it less visible.
127 (makefile-previous-dependency, makefile-match-dependency): Don't 393 (makefile-previous-dependency, makefile-match-dependency):
128 match a target on a continuation line. 394 Don't match a target on a continuation line.
129 395
130 * files.el (auto-mode-alist): Put Makefile in gmake mode. 396 * files.el (auto-mode-alist): Put Makefile in gmake mode.
131 397
1322005-06-15 Nick Roberts <nickrob@snap.net.nz> 3982005-06-15 Nick Roberts <nickrob@snap.net.nz>
133 399
134 * progmodes/gdb-ui.el (gdb-tooltip-print): Respect 400 * progmodes/gdb-ui.el (gdb-tooltip-print):
135 tooltip-use-echo-area. 401 Respect tooltip-use-echo-area.
136 (menu): Re-order menu items. 402 (menu): Re-order menu items.
137 403
138 * progmodes/gud.el (tooltip-use-echo-area): Remove alias. 404 * progmodes/gud.el (tooltip-use-echo-area): Remove alias.
@@ -181,8 +447,8 @@
181 * emacs-lisp/byte-run.el (make-obsolete) 447 * emacs-lisp/byte-run.el (make-obsolete)
182 (define-obsolete-function-alias): Rename arguments FUNCTION and 448 (define-obsolete-function-alias): Rename arguments FUNCTION and
183 NEW to OBSOLETE-NAME and CURRENT-NAME respectively. 449 NEW to OBSOLETE-NAME and CURRENT-NAME respectively.
184 (make-obsolete-variable, define-obsolete-variable-alias): Rename 450 (make-obsolete-variable, define-obsolete-variable-alias):
185 arguments VARIABLE and NEW to OBSOLETE-NAME and CURRENT-NAME 451 Rename arguments VARIABLE and NEW to OBSOLETE-NAME and CURRENT-NAME
186 respectively. 452 respectively.
187 453
188 * isearchb.el (isearchb-activate): 454 * isearchb.el (isearchb-activate):
diff --git a/lisp/comint.el b/lisp/comint.el
index 14913c7ef11..29208d6379c 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -155,7 +155,7 @@
155 :group 'comint) 155 :group 'comint)
156 156
157(defvar comint-prompt-regexp "^" 157(defvar comint-prompt-regexp "^"
158 "Regexp to recognise prompts in the inferior process. 158 "Regexp to recognize prompts in the inferior process.
159Defaults to \"^\", the null string at BOL. 159Defaults to \"^\", the null string at BOL.
160 160
161This variable is only used if the variable 161This variable is only used if the variable
@@ -197,7 +197,7 @@ you might wish to use another binding for `comint-kill-whole-line'."
197 :version "22.1") 197 :version "22.1")
198 198
199(defvar comint-delimiter-argument-list () 199(defvar comint-delimiter-argument-list ()
200 "List of characters to recognise as separate arguments in input. 200 "List of characters to recognize as separate arguments in input.
201Strings comprising a character in this list will separate the arguments 201Strings comprising a character in this list will separate the arguments
202surrounding them, and also be regarded as arguments in their own right (unlike 202surrounding them, and also be regarded as arguments in their own right (unlike
203whitespace). See `comint-arguments'. 203whitespace). See `comint-arguments'.
@@ -1760,7 +1760,7 @@ Make backspaces delete the previous character."
1760(defun comint-preinput-scroll-to-bottom () 1760(defun comint-preinput-scroll-to-bottom ()
1761 "Go to the end of buffer in all windows showing it. 1761 "Go to the end of buffer in all windows showing it.
1762Movement occurs if point in the selected window is not after the process mark, 1762Movement occurs if point in the selected window is not after the process mark,
1763and `this-command' is an insertion command. Insertion commands recognised 1763and `this-command' is an insertion command. Insertion commands recognized
1764are `self-insert-command', `comint-magic-space', `yank', and `hilit-yank'. 1764are `self-insert-command', `comint-magic-space', `yank', and `hilit-yank'.
1765Depends on the value of `comint-scroll-to-bottom-on-input'. 1765Depends on the value of `comint-scroll-to-bottom-on-input'.
1766 1766
@@ -2789,9 +2789,9 @@ See `comint-dynamic-complete-filename'. Returns t if successful."
2789 2789
2790(defun comint-replace-by-expanded-filename () 2790(defun comint-replace-by-expanded-filename ()
2791 "Dynamically expand and complete the filename at point. 2791 "Dynamically expand and complete the filename at point.
2792Replace the filename with an expanded, canonicalised and completed replacement. 2792Replace the filename with an expanded, canonicalized and completed replacement.
2793\"Expanded\" means environment variables (e.g., $HOME) and `~'s are replaced 2793\"Expanded\" means environment variables (e.g., $HOME) and `~'s are replaced
2794with the corresponding directories. \"Canonicalised\" means `..' and `.' are 2794with the corresponding directories. \"Canonicalized\" means `..' and `.' are
2795removed, and the filename is made absolute instead of relative. For expansion 2795removed, and the filename is made absolute instead of relative. For expansion
2796see `expand-file-name' and `substitute-in-file-name'. For completion see 2796see `expand-file-name' and `substitute-in-file-name'. For completion see
2797`comint-dynamic-complete-filename'." 2797`comint-dynamic-complete-filename'."
diff --git a/lisp/ediff-init.el b/lisp/ediff-init.el
index 969097b6f76..3933fd760d2 100644
--- a/lisp/ediff-init.el
+++ b/lisp/ediff-init.el
@@ -903,7 +903,7 @@ to temp files when Ediff needs to find fine differences."
903 903
904 904
905 905
906(defface ediff-current-diff-face-A 906(defface ediff-current-diff-A
907 (if ediff-emacs-p 907 (if ediff-emacs-p
908 '((((class color) (min-colors 16)) 908 '((((class color) (min-colors 16))
909 (:foreground "firebrick" :background "pale green")) 909 (:foreground "firebrick" :background "pale green"))
@@ -915,24 +915,26 @@ to temp files when Ediff needs to find fine differences."
915 (t (:inverse-video t)))) 915 (t (:inverse-video t))))
916 "Face for highlighting the selected difference in buffer A." 916 "Face for highlighting the selected difference in buffer A."
917 :group 'ediff-highlighting) 917 :group 'ediff-highlighting)
918;; backward-compatibility alias
919(put 'ediff-current-diff-face-A 'face-alias 'ediff-current-diff-A)
918;; An internal variable. Ediff takes the face from here. When unhighlighting, 920;; An internal variable. Ediff takes the face from here. When unhighlighting,
919;; this variable is set to nil, then again to the appropriate face. 921;; this variable is set to nil, then again to the appropriate face.
920(defvar ediff-current-diff-face-A 'ediff-current-diff-face-A 922(defvar ediff-current-diff-face-A 'ediff-current-diff-A
921 "Face for highlighting the selected difference in buffer A. 923 "Face for highlighting the selected difference in buffer A.
922DO NOT CHANGE this variable. Instead, use the customization 924DO NOT CHANGE this variable. Instead, use the customization
923widget to customize the actual face object `ediff-current-diff-face-A' 925widget to customize the actual face object `ediff-current-diff-A'
924this variable represents.") 926this variable represents.")
925(ediff-hide-face 'ediff-current-diff-face-A) 927(ediff-hide-face 'ediff-current-diff-A)
926;; Until custom.el for XEmacs starts supporting :inverse-video we do this. 928;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
927;; This means that some user customization may be trashed. 929;; This means that some user customization may be trashed.
928(if (and ediff-xemacs-p 930(if (and ediff-xemacs-p
929 (ediff-has-face-support-p) 931 (ediff-has-face-support-p)
930 (not (ediff-color-display-p))) 932 (not (ediff-color-display-p)))
931 (copy-face 'modeline 'ediff-current-diff-face-A)) 933 (copy-face 'modeline 'ediff-current-diff-A))
932 934
933 935
934 936
935(defface ediff-current-diff-face-B 937(defface ediff-current-diff-B
936 (if ediff-emacs-p 938 (if ediff-emacs-p
937 '((((class color) (min-colors 16)) 939 '((((class color) (min-colors 16))
938 (:foreground "DarkOrchid" :background "Yellow")) 940 (:foreground "DarkOrchid" :background "Yellow"))
@@ -946,23 +948,25 @@ this variable represents.")
946 (t (:inverse-video t)))) 948 (t (:inverse-video t))))
947 "Face for highlighting the selected difference in buffer B." 949 "Face for highlighting the selected difference in buffer B."
948 :group 'ediff-highlighting) 950 :group 'ediff-highlighting)
951;; backward-compatibility alias
952(put 'ediff-current-diff-face-B 'face-alias 'ediff-current-diff-B)
949;; An internal variable. Ediff takes the face from here. When unhighlighting, 953;; An internal variable. Ediff takes the face from here. When unhighlighting,
950;; this variable is set to nil, then again to the appropriate face. 954;; this variable is set to nil, then again to the appropriate face.
951(defvar ediff-current-diff-face-B 'ediff-current-diff-face-B 955(defvar ediff-current-diff-face-B 'ediff-current-diff-B
952 "Face for highlighting the selected difference in buffer B. 956 "Face for highlighting the selected difference in buffer B.
953 this variable. Instead, use the customization 957 this variable. Instead, use the customization
954widget to customize the actual face `ediff-current-diff-face-B' 958widget to customize the actual face `ediff-current-diff-B'
955this variable represents.") 959this variable represents.")
956(ediff-hide-face 'ediff-current-diff-face-B) 960(ediff-hide-face 'ediff-current-diff-B)
957;; Until custom.el for XEmacs starts supporting :inverse-video we do this. 961;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
958;; This means that some user customization may be trashed. 962;; This means that some user customization may be trashed.
959(if (and ediff-xemacs-p 963(if (and ediff-xemacs-p
960 (ediff-has-face-support-p) 964 (ediff-has-face-support-p)
961 (not (ediff-color-display-p))) 965 (not (ediff-color-display-p)))
962 (copy-face 'modeline 'ediff-current-diff-face-B)) 966 (copy-face 'modeline 'ediff-current-diff-B))
963 967
964 968
965(defface ediff-current-diff-face-C 969(defface ediff-current-diff-C
966 (if ediff-emacs-p 970 (if ediff-emacs-p
967 '((((class color) (min-colors 16)) 971 '((((class color) (min-colors 16))
968 (:foreground "Navy" :background "Pink")) 972 (:foreground "Navy" :background "Pink"))
@@ -974,23 +978,25 @@ this variable represents.")
974 (t (:inverse-video t)))) 978 (t (:inverse-video t))))
975 "Face for highlighting the selected difference in buffer C." 979 "Face for highlighting the selected difference in buffer C."
976 :group 'ediff-highlighting) 980 :group 'ediff-highlighting)
981;; backward-compatibility alias
982(put 'ediff-current-diff-face-C 'face-alias 'ediff-current-diff-C)
977;; An internal variable. Ediff takes the face from here. When unhighlighting, 983;; An internal variable. Ediff takes the face from here. When unhighlighting,
978;; this variable is set to nil, then again to the appropriate face. 984;; this variable is set to nil, then again to the appropriate face.
979(defvar ediff-current-diff-face-C 'ediff-current-diff-face-C 985(defvar ediff-current-diff-face-C 'ediff-current-diff-C
980 "Face for highlighting the selected difference in buffer C. 986 "Face for highlighting the selected difference in buffer C.
981DO NOT CHANGE this variable. Instead, use the customization 987DO NOT CHANGE this variable. Instead, use the customization
982widget to customize the actual face object `ediff-current-diff-face-C' 988widget to customize the actual face object `ediff-current-diff-C'
983this variable represents.") 989this variable represents.")
984(ediff-hide-face 'ediff-current-diff-face-C) 990(ediff-hide-face 'ediff-current-diff-C)
985;; Until custom.el for XEmacs starts supporting :inverse-video we do this. 991;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
986;; This means that some user customization may be trashed. 992;; This means that some user customization may be trashed.
987(if (and ediff-xemacs-p 993(if (and ediff-xemacs-p
988 (ediff-has-face-support-p) 994 (ediff-has-face-support-p)
989 (not (ediff-color-display-p))) 995 (not (ediff-color-display-p)))
990 (copy-face 'modeline 'ediff-current-diff-face-C)) 996 (copy-face 'modeline 'ediff-current-diff-C))
991 997
992 998
993(defface ediff-current-diff-face-Ancestor 999(defface ediff-current-diff-Ancestor
994 (if ediff-emacs-p 1000 (if ediff-emacs-p
995 '((((class color) (min-colors 16)) 1001 '((((class color) (min-colors 16))
996 (:foreground "Black" :background "VioletRed")) 1002 (:foreground "Black" :background "VioletRed"))
@@ -1002,23 +1008,25 @@ this variable represents.")
1002 (t (:inverse-video t)))) 1008 (t (:inverse-video t))))
1003 "Face for highlighting the selected difference in buffer Ancestor." 1009 "Face for highlighting the selected difference in buffer Ancestor."
1004 :group 'ediff-highlighting) 1010 :group 'ediff-highlighting)
1011;; backward-compatibility alias
1012(put 'ediff-current-diff-face-Ancestor 'face-alias 'ediff-current-diff-Ancestor)
1005;; An internal variable. Ediff takes the face from here. When unhighlighting, 1013;; An internal variable. Ediff takes the face from here. When unhighlighting,
1006;; this variable is set to nil, then again to the appropriate face. 1014;; this variable is set to nil, then again to the appropriate face.
1007(defvar ediff-current-diff-face-Ancestor 'ediff-current-diff-face-Ancestor 1015(defvar ediff-current-diff-face-Ancestor 'ediff-current-diff-Ancestor
1008 "Face for highlighting the selected difference in buffer Ancestor. 1016 "Face for highlighting the selected difference in buffer Ancestor.
1009DO NOT CHANGE this variable. Instead, use the customization 1017DO NOT CHANGE this variable. Instead, use the customization
1010widget to customize the actual face object `ediff-current-diff-face-Ancestor' 1018widget to customize the actual face object `ediff-current-diff-Ancestor'
1011this variable represents.") 1019this variable represents.")
1012(ediff-hide-face 'ediff-current-diff-face-Ancestor) 1020(ediff-hide-face 'ediff-current-diff-Ancestor)
1013;; Until custom.el for XEmacs starts supporting :inverse-video we do this. 1021;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
1014;; This means that some user customization may be trashed. 1022;; This means that some user customization may be trashed.
1015(if (and ediff-xemacs-p 1023(if (and ediff-xemacs-p
1016 (ediff-has-face-support-p) 1024 (ediff-has-face-support-p)
1017 (not (ediff-color-display-p))) 1025 (not (ediff-color-display-p)))
1018 (copy-face 'modeline 'ediff-current-diff-face-Ancestor)) 1026 (copy-face 'modeline 'ediff-current-diff-Ancestor))
1019 1027
1020 1028
1021(defface ediff-fine-diff-face-A 1029(defface ediff-fine-diff-A
1022 (if ediff-emacs-p 1030 (if ediff-emacs-p
1023 '((((class color) (min-colors 16)) 1031 '((((class color) (min-colors 16))
1024 (:foreground "Navy" :background "sky blue")) 1032 (:foreground "Navy" :background "sky blue"))
@@ -1030,16 +1038,18 @@ this variable represents.")
1030 (t (:underline t :stipple "gray3")))) 1038 (t (:underline t :stipple "gray3"))))
1031 "Face for highlighting the refinement of the selected diff in buffer A." 1039 "Face for highlighting the refinement of the selected diff in buffer A."
1032 :group 'ediff-highlighting) 1040 :group 'ediff-highlighting)
1041;; backward-compatibility alias
1042(put 'ediff-fine-diff-face-A 'face-alias 'ediff-fine-diff-A)
1033;; An internal variable. Ediff takes the face from here. When unhighlighting, 1043;; An internal variable. Ediff takes the face from here. When unhighlighting,
1034;; this variable is set to nil, then again to the appropriate face. 1044;; this variable is set to nil, then again to the appropriate face.
1035(defvar ediff-fine-diff-face-A 'ediff-fine-diff-face-A 1045(defvar ediff-fine-diff-face-A 'ediff-fine-diff-A
1036 "Face for highlighting the fine differences in buffer A. 1046 "Face for highlighting the fine differences in buffer A.
1037DO NOT CHANGE this variable. Instead, use the customization 1047DO NOT CHANGE this variable. Instead, use the customization
1038widget to customize the actual face object `ediff-fine-diff-face-A' 1048widget to customize the actual face object `ediff-fine-diff-A'
1039this variable represents.") 1049this variable represents.")
1040(ediff-hide-face 'ediff-fine-diff-face-A) 1050(ediff-hide-face 'ediff-fine-diff-A)
1041 1051
1042(defface ediff-fine-diff-face-B 1052(defface ediff-fine-diff-B
1043 (if ediff-emacs-p 1053 (if ediff-emacs-p
1044 '((((class color) (min-colors 16)) 1054 '((((class color) (min-colors 16))
1045 (:foreground "Black" :background "cyan")) 1055 (:foreground "Black" :background "cyan"))
@@ -1051,16 +1061,18 @@ this variable represents.")
1051 (t (:underline t :stipple "gray3")))) 1061 (t (:underline t :stipple "gray3"))))
1052 "Face for highlighting the refinement of the selected diff in buffer B." 1062 "Face for highlighting the refinement of the selected diff in buffer B."
1053 :group 'ediff-highlighting) 1063 :group 'ediff-highlighting)
1064;; backward-compatibility alias
1065(put 'ediff-fine-diff-face-B 'face-alias 'ediff-fine-diff-B)
1054;; An internal variable. Ediff takes the face from here. When unhighlighting, 1066;; An internal variable. Ediff takes the face from here. When unhighlighting,
1055;; this variable is set to nil, then again to the appropriate face. 1067;; this variable is set to nil, then again to the appropriate face.
1056(defvar ediff-fine-diff-face-B 'ediff-fine-diff-face-B 1068(defvar ediff-fine-diff-face-B 'ediff-fine-diff-B
1057 "Face for highlighting the fine differences in buffer B. 1069 "Face for highlighting the fine differences in buffer B.
1058DO NOT CHANGE this variable. Instead, use the customization 1070DO NOT CHANGE this variable. Instead, use the customization
1059widget to customize the actual face object `ediff-fine-diff-face-B' 1071widget to customize the actual face object `ediff-fine-diff-B'
1060this variable represents.") 1072this variable represents.")
1061(ediff-hide-face 'ediff-fine-diff-face-B) 1073(ediff-hide-face 'ediff-fine-diff-B)
1062 1074
1063(defface ediff-fine-diff-face-C 1075(defface ediff-fine-diff-C
1064 (if ediff-emacs-p 1076 (if ediff-emacs-p
1065 '((((type pc)) 1077 '((((type pc))
1066 (:foreground "white" :background "Turquoise")) 1078 (:foreground "white" :background "Turquoise"))
@@ -1077,16 +1089,18 @@ this variable represents.")
1077 (t (:underline t :stipple "gray3")))) 1089 (t (:underline t :stipple "gray3"))))
1078 "Face for highlighting the refinement of the selected diff in buffer C." 1090 "Face for highlighting the refinement of the selected diff in buffer C."
1079 :group 'ediff-highlighting) 1091 :group 'ediff-highlighting)
1092;; backward-compatibility alias
1093(put 'ediff-fine-diff-face-C 'face-alias 'ediff-fine-diff-C)
1080;; An internal variable. Ediff takes the face from here. When unhighlighting, 1094;; An internal variable. Ediff takes the face from here. When unhighlighting,
1081;; this variable is set to nil, then again to the appropriate face. 1095;; this variable is set to nil, then again to the appropriate face.
1082(defvar ediff-fine-diff-face-C 'ediff-fine-diff-face-C 1096(defvar ediff-fine-diff-face-C 'ediff-fine-diff-C
1083 "Face for highlighting the fine differences in buffer C. 1097 "Face for highlighting the fine differences in buffer C.
1084DO NOT CHANGE this variable. Instead, use the customization 1098DO NOT CHANGE this variable. Instead, use the customization
1085widget to customize the actual face object `ediff-fine-diff-face-C' 1099widget to customize the actual face object `ediff-fine-diff-C'
1086this variable represents.") 1100this variable represents.")
1087(ediff-hide-face 'ediff-fine-diff-face-C) 1101(ediff-hide-face 'ediff-fine-diff-C)
1088 1102
1089(defface ediff-fine-diff-face-Ancestor 1103(defface ediff-fine-diff-Ancestor
1090 (if ediff-emacs-p 1104 (if ediff-emacs-p
1091 '((((class color) (min-colors 16)) 1105 '((((class color) (min-colors 16))
1092 (:foreground "Black" :background "Green")) 1106 (:foreground "Black" :background "Green"))
@@ -1100,14 +1114,16 @@ this variable represents.")
1100At present, this face is not used and no fine differences are computed for the 1114At present, this face is not used and no fine differences are computed for the
1101ancestor buffer." 1115ancestor buffer."
1102 :group 'ediff-highlighting) 1116 :group 'ediff-highlighting)
1117;; backward-compatibility alias
1118(put 'ediff-fine-diff-face-Ancestor 'face-alias 'ediff-fine-diff-Ancestor)
1103;; An internal variable. Ediff takes the face from here. When unhighlighting, 1119;; An internal variable. Ediff takes the face from here. When unhighlighting,
1104;; this variable is set to nil, then again to the appropriate face. 1120;; this variable is set to nil, then again to the appropriate face.
1105(defvar ediff-fine-diff-face-Ancestor 'ediff-fine-diff-face-Ancestor 1121(defvar ediff-fine-diff-face-Ancestor 'ediff-fine-diff-Ancestor
1106 "Face for highlighting the fine differences in buffer Ancestor. 1122 "Face for highlighting the fine differences in buffer Ancestor.
1107DO NOT CHANGE this variable. Instead, use the customization 1123DO NOT CHANGE this variable. Instead, use the customization
1108widget to customize the actual face object `ediff-fine-diff-face-Ancestor' 1124widget to customize the actual face object `ediff-fine-diff-Ancestor'
1109this variable represents.") 1125this variable represents.")
1110(ediff-hide-face 'ediff-fine-diff-face-Ancestor) 1126(ediff-hide-face 'ediff-fine-diff-Ancestor)
1111 1127
1112;; Some installs don't have stipple or Stipple. So, try them in turn. 1128;; Some installs don't have stipple or Stipple. So, try them in turn.
1113(defvar stipple-pixmap 1129(defvar stipple-pixmap
@@ -1118,7 +1134,7 @@ this variable represents.")
1118 (locate-library "stipple" t mswindowsx-bitmap-file-path)) "stipple") 1134 (locate-library "stipple" t mswindowsx-bitmap-file-path)) "stipple")
1119 (t "Stipple"))) 1135 (t "Stipple")))
1120 1136
1121(defface ediff-even-diff-face-A 1137(defface ediff-even-diff-A
1122 (if ediff-emacs-p 1138 (if ediff-emacs-p
1123 `((((type pc)) 1139 `((((type pc))
1124 (:foreground "green3" :background "light grey")) 1140 (:foreground "green3" :background "light grey"))
@@ -1135,16 +1151,18 @@ this variable represents.")
1135 (t (:italic t :stipple ,stipple-pixmap)))) 1151 (t (:italic t :stipple ,stipple-pixmap))))
1136 "Face for highlighting even-numbered non-current differences in buffer A." 1152 "Face for highlighting even-numbered non-current differences in buffer A."
1137 :group 'ediff-highlighting) 1153 :group 'ediff-highlighting)
1154;; backward-compatibility alias
1155(put 'ediff-even-diff-face-A 'face-alias 'ediff-even-diff-A)
1138;; An internal variable. Ediff takes the face from here. When unhighlighting, 1156;; An internal variable. Ediff takes the face from here. When unhighlighting,
1139;; this variable is set to nil, then again to the appropriate face. 1157;; this variable is set to nil, then again to the appropriate face.
1140(defvar ediff-even-diff-face-A 'ediff-even-diff-face-A 1158(defvar ediff-even-diff-face-A 'ediff-even-diff-A
1141 "Face for highlighting even-numbered non-current differences in buffer A. 1159 "Face for highlighting even-numbered non-current differences in buffer A.
1142DO NOT CHANGE this variable. Instead, use the customization 1160DO NOT CHANGE this variable. Instead, use the customization
1143widget to customize the actual face object `ediff-even-diff-face-A' 1161widget to customize the actual face object `ediff-even-diff-A'
1144this variable represents.") 1162this variable represents.")
1145(ediff-hide-face 'ediff-even-diff-face-A) 1163(ediff-hide-face 'ediff-even-diff-A)
1146 1164
1147(defface ediff-even-diff-face-B 1165(defface ediff-even-diff-B
1148 (if ediff-emacs-p 1166 (if ediff-emacs-p
1149 `((((class color) (min-colors 16)) 1167 `((((class color) (min-colors 16))
1150 (:foreground "White" :background "Grey")) 1168 (:foreground "White" :background "Grey"))
@@ -1156,16 +1174,18 @@ this variable represents.")
1156 (t (:italic t :stipple ,stipple-pixmap)))) 1174 (t (:italic t :stipple ,stipple-pixmap))))
1157 "Face for highlighting even-numbered non-current differences in buffer B." 1175 "Face for highlighting even-numbered non-current differences in buffer B."
1158 :group 'ediff-highlighting) 1176 :group 'ediff-highlighting)
1177;; backward-compatibility alias
1178(put 'ediff-even-diff-face-B 'face-alias 'ediff-even-diff-B)
1159;; An internal variable. Ediff takes the face from here. When unhighlighting, 1179;; An internal variable. Ediff takes the face from here. When unhighlighting,
1160;; this variable is set to nil, then again to the appropriate face. 1180;; this variable is set to nil, then again to the appropriate face.
1161(defvar ediff-even-diff-face-B 'ediff-even-diff-face-B 1181(defvar ediff-even-diff-face-B 'ediff-even-diff-B
1162 "Face for highlighting even-numbered non-current differences in buffer B. 1182 "Face for highlighting even-numbered non-current differences in buffer B.
1163DO NOT CHANGE this variable. Instead, use the customization 1183DO NOT CHANGE this variable. Instead, use the customization
1164widget to customize the actual face object `ediff-even-diff-face-B' 1184widget to customize the actual face object `ediff-even-diff-B'
1165this variable represents.") 1185this variable represents.")
1166(ediff-hide-face 'ediff-even-diff-face-B) 1186(ediff-hide-face 'ediff-even-diff-B)
1167 1187
1168(defface ediff-even-diff-face-C 1188(defface ediff-even-diff-C
1169 (if ediff-emacs-p 1189 (if ediff-emacs-p
1170 `((((type pc)) 1190 `((((type pc))
1171 (:foreground "yellow3" :background "light grey")) 1191 (:foreground "yellow3" :background "light grey"))
@@ -1182,16 +1202,18 @@ this variable represents.")
1182 (t (:italic t :stipple ,stipple-pixmap)))) 1202 (t (:italic t :stipple ,stipple-pixmap))))
1183 "Face for highlighting even-numbered non-current differences in buffer C." 1203 "Face for highlighting even-numbered non-current differences in buffer C."
1184 :group 'ediff-highlighting) 1204 :group 'ediff-highlighting)
1205;; backward-compatibility alias
1206(put 'ediff-even-diff-face-C 'face-alias 'ediff-even-diff-C)
1185;; An internal variable. Ediff takes the face from here. When unhighlighting, 1207;; An internal variable. Ediff takes the face from here. When unhighlighting,
1186;; this variable is set to nil, then again to the appropriate face. 1208;; this variable is set to nil, then again to the appropriate face.
1187(defvar ediff-even-diff-face-C 'ediff-even-diff-face-C 1209(defvar ediff-even-diff-face-C 'ediff-even-diff-C
1188 "Face for highlighting even-numbered non-current differences in buffer C. 1210 "Face for highlighting even-numbered non-current differences in buffer C.
1189DO NOT CHANGE this variable. Instead, use the customization 1211DO NOT CHANGE this variable. Instead, use the customization
1190widget to customize the actual face object `ediff-even-diff-face-C' 1212widget to customize the actual face object `ediff-even-diff-C'
1191this variable represents.") 1213this variable represents.")
1192(ediff-hide-face 'ediff-even-diff-face-C) 1214(ediff-hide-face 'ediff-even-diff-C)
1193 1215
1194(defface ediff-even-diff-face-Ancestor 1216(defface ediff-even-diff-Ancestor
1195 (if ediff-emacs-p 1217 (if ediff-emacs-p
1196 `((((type pc)) 1218 `((((type pc))
1197 (:foreground "cyan3" :background "light grey")) 1219 (:foreground "cyan3" :background "light grey"))
@@ -1208,23 +1230,25 @@ this variable represents.")
1208 (t (:italic t :stipple ,stipple-pixmap)))) 1230 (t (:italic t :stipple ,stipple-pixmap))))
1209 "Face for highlighting even-numbered non-current differences in the ancestor buffer." 1231 "Face for highlighting even-numbered non-current differences in the ancestor buffer."
1210 :group 'ediff-highlighting) 1232 :group 'ediff-highlighting)
1233;; backward-compatibility alias
1234(put 'ediff-even-diff-face-Ancestor 'face-alias 'ediff-even-diff-Ancestor)
1211;; An internal variable. Ediff takes the face from here. When unhighlighting, 1235;; An internal variable. Ediff takes the face from here. When unhighlighting,
1212;; this variable is set to nil, then again to the appropriate face. 1236;; this variable is set to nil, then again to the appropriate face.
1213(defvar ediff-even-diff-face-Ancestor 'ediff-even-diff-face-Ancestor 1237(defvar ediff-even-diff-face-Ancestor 'ediff-even-diff-Ancestor
1214 "Face for highlighting even-numbered non-current differences in buffer Ancestor. 1238 "Face for highlighting even-numbered non-current differences in buffer Ancestor.
1215DO NOT CHANGE this variable. Instead, use the customization 1239DO NOT CHANGE this variable. Instead, use the customization
1216widget to customize the actual face object `ediff-even-diff-face-Ancestor' 1240widget to customize the actual face object `ediff-even-diff-Ancestor'
1217this variable represents.") 1241this variable represents.")
1218(ediff-hide-face 'ediff-even-diff-face-Ancestor) 1242(ediff-hide-face 'ediff-even-diff-Ancestor)
1219 1243
1220;; Association between buffer types and even-diff-face symbols 1244;; Association between buffer types and even-diff-face symbols
1221(defconst ediff-even-diff-face-alist 1245(defconst ediff-even-diff-face-alist
1222 '((A . ediff-even-diff-face-A) 1246 '((A . ediff-even-diff-A)
1223 (B . ediff-even-diff-face-B) 1247 (B . ediff-even-diff-B)
1224 (C . ediff-even-diff-face-C) 1248 (C . ediff-even-diff-C)
1225 (Ancestor . ediff-even-diff-face-Ancestor))) 1249 (Ancestor . ediff-even-diff-Ancestor)))
1226 1250
1227(defface ediff-odd-diff-face-A 1251(defface ediff-odd-diff-A
1228 (if ediff-emacs-p 1252 (if ediff-emacs-p
1229 '((((type pc)) 1253 '((((type pc))
1230 (:foreground "green3" :background "gray40")) 1254 (:foreground "green3" :background "gray40"))
@@ -1239,17 +1263,19 @@ this variable represents.")
1239 (t (:italic t :stipple "gray1")))) 1263 (t (:italic t :stipple "gray1"))))
1240 "Face for highlighting odd-numbered non-current differences in buffer A." 1264 "Face for highlighting odd-numbered non-current differences in buffer A."
1241 :group 'ediff-highlighting) 1265 :group 'ediff-highlighting)
1266;; backward-compatibility alias
1267(put 'ediff-odd-diff-face-A 'face-alias 'ediff-odd-diff-A)
1242;; An internal variable. Ediff takes the face from here. When unhighlighting, 1268;; An internal variable. Ediff takes the face from here. When unhighlighting,
1243;; this variable is set to nil, then again to the appropriate face. 1269;; this variable is set to nil, then again to the appropriate face.
1244(defvar ediff-odd-diff-face-A 'ediff-odd-diff-face-A 1270(defvar ediff-odd-diff-face-A 'ediff-odd-diff-A
1245 "Face for highlighting odd-numbered non-current differences in buffer A. 1271 "Face for highlighting odd-numbered non-current differences in buffer A.
1246DO NOT CHANGE this variable. Instead, use the customization 1272DO NOT CHANGE this variable. Instead, use the customization
1247widget to customize the actual face object `ediff-odd-diff-face-A' 1273widget to customize the actual face object `ediff-odd-diff-A'
1248this variable represents.") 1274this variable represents.")
1249(ediff-hide-face 'ediff-odd-diff-face-A) 1275(ediff-hide-face 'ediff-odd-diff-A)
1250 1276
1251 1277
1252(defface ediff-odd-diff-face-B 1278(defface ediff-odd-diff-B
1253 (if ediff-emacs-p 1279 (if ediff-emacs-p
1254 '((((type pc)) 1280 '((((type pc))
1255 (:foreground "White" :background "gray40")) 1281 (:foreground "White" :background "gray40"))
@@ -1264,16 +1290,18 @@ this variable represents.")
1264 (t (:italic t :stipple "gray1")))) 1290 (t (:italic t :stipple "gray1"))))
1265 "Face for highlighting odd-numbered non-current differences in buffer B." 1291 "Face for highlighting odd-numbered non-current differences in buffer B."
1266 :group 'ediff-highlighting) 1292 :group 'ediff-highlighting)
1293;; backward-compatibility alias
1294(put 'ediff-odd-diff-face-B 'face-alias 'ediff-odd-diff-B)
1267;; An internal variable. Ediff takes the face from here. When unhighlighting, 1295;; An internal variable. Ediff takes the face from here. When unhighlighting,
1268;; this variable is set to nil, then again to the appropriate face. 1296;; this variable is set to nil, then again to the appropriate face.
1269(defvar ediff-odd-diff-face-B 'ediff-odd-diff-face-B 1297(defvar ediff-odd-diff-face-B 'ediff-odd-diff-B
1270 "Face for highlighting odd-numbered non-current differences in buffer B. 1298 "Face for highlighting odd-numbered non-current differences in buffer B.
1271DO NOT CHANGE this variable. Instead, use the customization 1299DO NOT CHANGE this variable. Instead, use the customization
1272widget to customize the actual face object `ediff-odd-diff-face-B' 1300widget to customize the actual face object `ediff-odd-diff-B'
1273this variable represents.") 1301this variable represents.")
1274(ediff-hide-face 'ediff-odd-diff-face-B) 1302(ediff-hide-face 'ediff-odd-diff-B)
1275 1303
1276(defface ediff-odd-diff-face-C 1304(defface ediff-odd-diff-C
1277 (if ediff-emacs-p 1305 (if ediff-emacs-p
1278 '((((type pc)) 1306 '((((type pc))
1279 (:foreground "yellow3" :background "gray40")) 1307 (:foreground "yellow3" :background "gray40"))
@@ -1288,16 +1316,18 @@ this variable represents.")
1288 (t (:italic t :stipple "gray1")))) 1316 (t (:italic t :stipple "gray1"))))
1289 "Face for highlighting odd-numbered non-current differences in buffer C." 1317 "Face for highlighting odd-numbered non-current differences in buffer C."
1290 :group 'ediff-highlighting) 1318 :group 'ediff-highlighting)
1319;; backward-compatibility alias
1320(put 'ediff-odd-diff-face-C 'face-alias 'ediff-odd-diff-C)
1291;; An internal variable. Ediff takes the face from here. When unhighlighting, 1321;; An internal variable. Ediff takes the face from here. When unhighlighting,
1292;; this variable is set to nil, then again to the appropriate face. 1322;; this variable is set to nil, then again to the appropriate face.
1293(defvar ediff-odd-diff-face-C 'ediff-odd-diff-face-C 1323(defvar ediff-odd-diff-face-C 'ediff-odd-diff-C
1294 "Face for highlighting odd-numbered non-current differences in buffer C. 1324 "Face for highlighting odd-numbered non-current differences in buffer C.
1295DO NOT CHANGE this variable. Instead, use the customization 1325DO NOT CHANGE this variable. Instead, use the customization
1296widget to customize the actual face object `ediff-odd-diff-face-C' 1326widget to customize the actual face object `ediff-odd-diff-C'
1297this variable represents.") 1327this variable represents.")
1298(ediff-hide-face 'ediff-odd-diff-face-C) 1328(ediff-hide-face 'ediff-odd-diff-C)
1299 1329
1300(defface ediff-odd-diff-face-Ancestor 1330(defface ediff-odd-diff-Ancestor
1301 (if ediff-emacs-p 1331 (if ediff-emacs-p
1302 '((((class color) (min-colors 16)) 1332 '((((class color) (min-colors 16))
1303 (:foreground "cyan3" :background "gray40")) 1333 (:foreground "cyan3" :background "gray40"))
@@ -1309,14 +1339,16 @@ this variable represents.")
1309 (t (:italic t :stipple "gray1")))) 1339 (t (:italic t :stipple "gray1"))))
1310 "Face for highlighting odd-numbered non-current differences in the ancestor buffer." 1340 "Face for highlighting odd-numbered non-current differences in the ancestor buffer."
1311 :group 'ediff-highlighting) 1341 :group 'ediff-highlighting)
1342;; backward-compatibility alias
1343(put 'ediff-odd-diff-face-Ancestor 'face-alias 'ediff-odd-diff-Ancestor)
1312;; An internal variable. Ediff takes the face from here. When unhighlighting, 1344;; An internal variable. Ediff takes the face from here. When unhighlighting,
1313;; this variable is set to nil, then again to the appropriate face. 1345;; this variable is set to nil, then again to the appropriate face.
1314(defvar ediff-odd-diff-face-Ancestor 'ediff-odd-diff-face-Ancestor 1346(defvar ediff-odd-diff-face-Ancestor 'ediff-odd-diff-Ancestor
1315 "Face for highlighting odd-numbered non-current differences in buffer Ancestor. 1347 "Face for highlighting odd-numbered non-current differences in buffer Ancestor.
1316DO NOT CHANGE this variable. Instead, use the customization 1348DO NOT CHANGE this variable. Instead, use the customization
1317widget to customize the actual face object `ediff-odd-diff-face-Ancestor' 1349widget to customize the actual face object `ediff-odd-diff-Ancestor'
1318this variable represents.") 1350this variable represents.")
1319(ediff-hide-face 'ediff-odd-diff-face-Ancestor) 1351(ediff-hide-face 'ediff-odd-diff-Ancestor)
1320 1352
1321;; Association between buffer types and odd-diff-face symbols 1353;; Association between buffer types and odd-diff-face symbols
1322(defconst ediff-odd-diff-face-alist 1354(defconst ediff-odd-diff-face-alist
@@ -1333,13 +1365,13 @@ this variable represents.")
1333 (Ancestor . ediff-fine-diff-face-Ancestor))) 1365 (Ancestor . ediff-fine-diff-face-Ancestor)))
1334 1366
1335;; Help echo 1367;; Help echo
1336(put 'ediff-fine-diff-face-A 'ediff-help-echo 1368(put 'ediff-fine-diff-A 'ediff-help-echo
1337 "A `refinement' of the current difference region") 1369 "A `refinement' of the current difference region")
1338(put 'ediff-fine-diff-face-B 'ediff-help-echo 1370(put 'ediff-fine-diff-B 'ediff-help-echo
1339 "A `refinement' of the current difference region") 1371 "A `refinement' of the current difference region")
1340(put 'ediff-fine-diff-face-C 'ediff-help-echo 1372(put 'ediff-fine-diff-C 'ediff-help-echo
1341 "A `refinement' of the current difference region") 1373 "A `refinement' of the current difference region")
1342(put 'ediff-fine-diff-face-Ancestor 'ediff-help-echo 1374(put 'ediff-fine-diff-Ancestor 'ediff-help-echo
1343 "A `refinement' of the current difference region") 1375 "A `refinement' of the current difference region")
1344 1376
1345(add-hook 'ediff-quit-hook 'ediff-cleanup-mess) 1377(add-hook 'ediff-quit-hook 'ediff-cleanup-mess)
diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el
index 943f052fc6d..006b6f2c588 100644
--- a/lisp/emacs-lisp/derived.el
+++ b/lisp/emacs-lisp/derived.el
@@ -320,7 +320,7 @@ which more-or-less shadow %s's corresponding tables."
320 320
321;;;###autoload 321;;;###autoload
322(defun derived-mode-init-mode-variables (mode) 322(defun derived-mode-init-mode-variables (mode)
323 "Initialise variables for a new MODE. 323 "Initialize variables for a new MODE.
324Right now, if they don't already exist, set up a blank keymap, an 324Right now, if they don't already exist, set up a blank keymap, an
325empty syntax table, and an empty abbrev table -- these will be merged 325empty syntax table, and an empty abbrev table -- these will be merged
326the first time the mode is used." 326the first time the mode is used."
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 54325c87b6d..e9c767961cd 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -3323,7 +3323,7 @@ With prefix ARG, set temporary break at current point and go."
3323 3323
3324 3324
3325(defun edebug-goto-here () 3325(defun edebug-goto-here ()
3326 "Proceed to this stop point." 3326 "Proceed to first stop-point at or after current position of point."
3327 (interactive) 3327 (interactive)
3328 (edebug-go-mode t)) 3328 (edebug-go-mode t))
3329 3329
diff --git a/lisp/emacs-lisp/elint.el b/lisp/emacs-lisp/elint.el
index d4967a7cd06..806fa8e6854 100644
--- a/lisp/emacs-lisp/elint.el
+++ b/lisp/emacs-lisp/elint.el
@@ -66,7 +66,7 @@
66 left-margin left-margin-width line-spacing local-abbrev-table local-write-file-hooks major-mode 66 left-margin left-margin-width line-spacing local-abbrev-table local-write-file-hooks major-mode
67 mark-active mark-ring mode-line-buffer-identification 67 mark-active mark-ring mode-line-buffer-identification
68 mode-line-format mode-line-modified mode-line-process mode-name 68 mode-line-format mode-line-modified mode-line-process mode-name
69 overwrite-mode 69 overwrite-mode
70 point-before-scroll right-fringe-width right-margin-width 70 point-before-scroll right-fringe-width right-margin-width
71 scroll-bar-width scroll-down-aggressively scroll-up-aggressively selective-display 71 scroll-bar-width scroll-down-aggressively scroll-up-aggressively selective-display
72 selective-display-ellipses tab-width truncate-lines vc-mode vertical-scroll-bar) 72 selective-display-ellipses tab-width truncate-lines vc-mode vertical-scroll-bar)
@@ -298,7 +298,7 @@ Return nil if there are no more forms, t otherwise."
298 (not (eobp))) 298 (not (eobp)))
299 299
300(defun elint-init-env (forms) 300(defun elint-init-env (forms)
301 "Initialise the environment from FORMS." 301 "Initialize the environment from FORMS."
302 (let ((env (elint-make-env)) 302 (let ((env (elint-make-env))
303 form) 303 form)
304 (while forms 304 (while forms
diff --git a/lisp/emacs-lisp/regexp-opt.el b/lisp/emacs-lisp/regexp-opt.el
index 3537a83c3c1..3e0c7c8ade4 100644
--- a/lisp/emacs-lisp/regexp-opt.el
+++ b/lisp/emacs-lisp/regexp-opt.el
@@ -116,7 +116,7 @@ by \\=\\< and \\>."
116(defun regexp-opt-depth (regexp) 116(defun regexp-opt-depth (regexp)
117 "Return the depth of REGEXP. 117 "Return the depth of REGEXP.
118This means the number of non-shy regexp grouping constructs 118This means the number of non-shy regexp grouping constructs
119\(parenthesised expressions) in REGEXP." 119\(parenthesized expressions) in REGEXP."
120 (save-match-data 120 (save-match-data
121 ;; Hack to signal an error if REGEXP does not have balanced parentheses. 121 ;; Hack to signal an error if REGEXP does not have balanced parentheses.
122 (string-match regexp "") 122 (string-match regexp "")
diff --git a/lisp/emacs-lisp/warnings.el b/lisp/emacs-lisp/warnings.el
index 343eda970ce..e6c3447331e 100644
--- a/lisp/emacs-lisp/warnings.el
+++ b/lisp/emacs-lisp/warnings.el
@@ -76,16 +76,20 @@ If a warning's severity level is lower than this,
76the warning is logged in the warnings buffer, but the buffer 76the warning is logged in the warnings buffer, but the buffer
77is not immediately displayed. See also `warning-minimum-log-level'." 77is not immediately displayed. See also `warning-minimum-log-level'."
78 :group 'warnings 78 :group 'warnings
79 :type '(choice (const :emergency) (const :error) (const :warning)) 79 :type '(choice (const :emergency) (const :error)
80 (const :warning) (const :debug))
80 :version "22.1") 81 :version "22.1")
81(defvaralias 'display-warning-minimum-level 'warning-minimum-level) 82(defvaralias 'display-warning-minimum-level 'warning-minimum-level)
82 83
83(defcustom warning-minimum-log-level :warning 84(defcustom warning-minimum-log-level :warning
84 "Minimum severity level for logging a warning. 85 "Minimum severity level for logging a warning.
85If a warning severity level is lower than this, 86If a warning severity level is lower than this,
86the warning is completely ignored." 87the warning is completely ignored.
88Value must be lower or equal than `warning-minimum-level',
89because warnings not logged aren't displayed either."
87 :group 'warnings 90 :group 'warnings
88 :type '(choice (const :emergency) (const :error) (const :warning)) 91 :type '(choice (const :emergency) (const :error)
92 (const :warning) (const :debug))
89 :version "22.1") 93 :version "22.1")
90(defvaralias 'log-warning-minimum-level 'warning-minimum-log-level) 94(defvaralias 'log-warning-minimum-level 'warning-minimum-log-level)
91 95
@@ -203,7 +207,9 @@ or a list of symbols whose first element is a custom group name.
203\(The rest of the symbols represent subcategories, for warning purposes 207\(The rest of the symbols represent subcategories, for warning purposes
204only, and you can use whatever symbols you like.) 208only, and you can use whatever symbols you like.)
205 209
206LEVEL should be either :warning, :error, or :emergency. 210LEVEL should be either :debug, :warning, :error, or :emergency
211\(but see `warning-minimum-level' and `warning-minimum-log-level').
212
207:emergency -- a problem that will seriously impair Emacs operation soon 213:emergency -- a problem that will seriously impair Emacs operation soon
208 if you do not attend to it promptly. 214 if you do not attend to it promptly.
209:error -- data or circumstances that are inherently wrong. 215:error -- data or circumstances that are inherently wrong.
@@ -223,7 +229,7 @@ See also `warning-series', `warning-prefix-function' and
223 (if (assq level warning-level-aliases) 229 (if (assq level warning-level-aliases)
224 (setq level (cdr (assq level warning-level-aliases)))) 230 (setq level (cdr (assq level warning-level-aliases))))
225 (or (< (warning-numeric-level level) 231 (or (< (warning-numeric-level level)
226 (warning-numeric-level warning-minimum-log-level)) 232 (warning-numeric-level warning-minimum-log-level))
227 (warning-suppress-p type warning-suppress-log-types) 233 (warning-suppress-p type warning-suppress-log-types)
228 (let* ((typename (if (consp type) (car type) type)) 234 (let* ((typename (if (consp type) (car type) type))
229 (buffer (get-buffer-create (or buffer-name "*Warnings*"))) 235 (buffer (get-buffer-create (or buffer-name "*Warnings*")))
@@ -291,11 +297,14 @@ or a list of symbols whose first element is a custom group name.
291\(The rest of the symbols represent subcategories and 297\(The rest of the symbols represent subcategories and
292can be whatever you like.) 298can be whatever you like.)
293 299
294LEVEL should be either :warning, :error, or :emergency. 300LEVEL should be either :debug, :warning, :error, or :emergency
301\(but see `warning-minimum-level' and `warning-minimum-log-level').
302
295:emergency -- a problem that will seriously impair Emacs operation soon 303:emergency -- a problem that will seriously impair Emacs operation soon
296 if you do not attend to it promptly. 304 if you do not attend to it promptly.
297:error -- invalid data or circumstances. 305:error -- invalid data or circumstances.
298:warning -- suspicious data or circumstances." 306:warning -- suspicious data or circumstances.
307:debug -- info for debugging only."
299 (display-warning type (apply 'format message args) level)) 308 (display-warning type (apply 'format message args) level))
300 309
301;;;###autoload 310;;;###autoload
diff --git a/lisp/emulation/vip.el b/lisp/emulation/vip.el
index dace12d4c8f..7584436e20a 100644
--- a/lisp/emulation/vip.el
+++ b/lisp/emulation/vip.el
@@ -2292,7 +2292,7 @@ a token has type \(command, address, end-mark\) and value."
2292 (setq cont nil)) 2292 (setq cont nil))
2293 (t (error "Extra character at end of a command"))))))) 2293 (t (error "Extra character at end of a command")))))))
2294 ((string= ex-token-type "non-command") 2294 ((string= ex-token-type "non-command")
2295 (error (format "%s: Not an editor command" ex-token))) 2295 (error "%s: Not an editor command" ex-token))
2296 ((string= ex-token-type "whole") 2296 ((string= ex-token-type "whole")
2297 (setq ex-addresses 2297 (setq ex-addresses
2298 (cons (point-max) (cons (point-min) ex-addresses)))) 2298 (cons (point-max) (cons (point-min) ex-addresses))))
diff --git a/lisp/eshell/em-ls.el b/lisp/eshell/em-ls.el
index 3b5252c18a1..4d06b1bdca0 100644
--- a/lisp/eshell/em-ls.el
+++ b/lisp/eshell/em-ls.el
@@ -1,6 +1,6 @@
1;;; em-ls.el --- implementation of ls in Lisp 1;;; em-ls.el --- implementation of ls in Lisp
2 2
3;; Copyright (C) 1999, 2000 Free Software Foundation 3;; Copyright (C) 1999, 2000, 2005 Free Software Foundation
4 4
5;; Author: John Wiegley <johnw@gnu.org> 5;; Author: John Wiegley <johnw@gnu.org>
6 6
@@ -106,48 +106,62 @@ faster and conserves more memory."
106 :type 'boolean 106 :type 'boolean
107 :group 'eshell-ls) 107 :group 'eshell-ls)
108 108
109(defface eshell-ls-directory-face 109(defface eshell-ls-directory
110 '((((class color) (background light)) (:foreground "Blue" :weight bold)) 110 '((((class color) (background light)) (:foreground "Blue" :weight bold))
111 (((class color) (background dark)) (:foreground "SkyBlue" :weight bold)) 111 (((class color) (background dark)) (:foreground "SkyBlue" :weight bold))
112 (t (:weight bold))) 112 (t (:weight bold)))
113 "*The face used for highlight directories." 113 "*The face used for highlight directories."
114 :group 'eshell-ls) 114 :group 'eshell-ls)
115;; backward-compatibility alias
116(put 'eshell-ls-directory-face 'face-alias 'eshell-ls-directory)
115 117
116(defface eshell-ls-symlink-face 118(defface eshell-ls-symlink
117 '((((class color) (background light)) (:foreground "Dark Cyan" :weight bold)) 119 '((((class color) (background light)) (:foreground "Dark Cyan" :weight bold))
118 (((class color) (background dark)) (:foreground "Cyan" :weight bold))) 120 (((class color) (background dark)) (:foreground "Cyan" :weight bold)))
119 "*The face used for highlight symbolic links." 121 "*The face used for highlight symbolic links."
120 :group 'eshell-ls) 122 :group 'eshell-ls)
123;; backward-compatibility alias
124(put 'eshell-ls-symlink-face 'face-alias 'eshell-ls-symlink)
121 125
122(defface eshell-ls-executable-face 126(defface eshell-ls-executable
123 '((((class color) (background light)) (:foreground "ForestGreen" :weight bold)) 127 '((((class color) (background light)) (:foreground "ForestGreen" :weight bold))
124 (((class color) (background dark)) (:foreground "Green" :weight bold))) 128 (((class color) (background dark)) (:foreground "Green" :weight bold)))
125 "*The face used for highlighting executables (not directories, though)." 129 "*The face used for highlighting executables (not directories, though)."
126 :group 'eshell-ls) 130 :group 'eshell-ls)
131;; backward-compatibility alias
132(put 'eshell-ls-executable-face 'face-alias 'eshell-ls-executable)
127 133
128(defface eshell-ls-readonly-face 134(defface eshell-ls-readonly
129 '((((class color) (background light)) (:foreground "Brown")) 135 '((((class color) (background light)) (:foreground "Brown"))
130 (((class color) (background dark)) (:foreground "Pink"))) 136 (((class color) (background dark)) (:foreground "Pink")))
131 "*The face used for highlighting read-only files." 137 "*The face used for highlighting read-only files."
132 :group 'eshell-ls) 138 :group 'eshell-ls)
139;; backward-compatibility alias
140(put 'eshell-ls-readonly-face 'face-alias 'eshell-ls-readonly)
133 141
134(defface eshell-ls-unreadable-face 142(defface eshell-ls-unreadable
135 '((((class color) (background light)) (:foreground "Grey30")) 143 '((((class color) (background light)) (:foreground "Grey30"))
136 (((class color) (background dark)) (:foreground "DarkGrey"))) 144 (((class color) (background dark)) (:foreground "DarkGrey")))
137 "*The face used for highlighting unreadable files." 145 "*The face used for highlighting unreadable files."
138 :group 'eshell-ls) 146 :group 'eshell-ls)
147;; backward-compatibility alias
148(put 'eshell-ls-unreadable-face 'face-alias 'eshell-ls-unreadable)
139 149
140(defface eshell-ls-special-face 150(defface eshell-ls-special
141 '((((class color) (background light)) (:foreground "Magenta" :weight bold)) 151 '((((class color) (background light)) (:foreground "Magenta" :weight bold))
142 (((class color) (background dark)) (:foreground "Magenta" :weight bold))) 152 (((class color) (background dark)) (:foreground "Magenta" :weight bold)))
143 "*The face used for highlighting non-regular files." 153 "*The face used for highlighting non-regular files."
144 :group 'eshell-ls) 154 :group 'eshell-ls)
155;; backward-compatibility alias
156(put 'eshell-ls-special-face 'face-alias 'eshell-ls-special)
145 157
146(defface eshell-ls-missing-face 158(defface eshell-ls-missing
147 '((((class color) (background light)) (:foreground "Red" :weight bold)) 159 '((((class color) (background light)) (:foreground "Red" :weight bold))
148 (((class color) (background dark)) (:foreground "Red" :weight bold))) 160 (((class color) (background dark)) (:foreground "Red" :weight bold)))
149 "*The face used for highlighting non-existant file names." 161 "*The face used for highlighting non-existant file names."
150 :group 'eshell-ls) 162 :group 'eshell-ls)
163;; backward-compatibility alias
164(put 'eshell-ls-missing-face 'face-alias 'eshell-ls-missing)
151 165
152(defcustom eshell-ls-archive-regexp 166(defcustom eshell-ls-archive-regexp
153 (concat "\\.\\(t\\(a[rz]\\|gz\\)\\|arj\\|lzh\\|" 167 (concat "\\.\\(t\\(a[rz]\\|gz\\)\\|arj\\|lzh\\|"
@@ -158,11 +172,13 @@ files."
158 :type 'regexp 172 :type 'regexp
159 :group 'eshell-ls) 173 :group 'eshell-ls)
160 174
161(defface eshell-ls-archive-face 175(defface eshell-ls-archive
162 '((((class color) (background light)) (:foreground "Orchid" :weight bold)) 176 '((((class color) (background light)) (:foreground "Orchid" :weight bold))
163 (((class color) (background dark)) (:foreground "Orchid" :weight bold))) 177 (((class color) (background dark)) (:foreground "Orchid" :weight bold)))
164 "*The face used for highlighting archived and compressed file names." 178 "*The face used for highlighting archived and compressed file names."
165 :group 'eshell-ls) 179 :group 'eshell-ls)
180;; backward-compatibility alias
181(put 'eshell-ls-archive-face 'face-alias 'eshell-ls-archive)
166 182
167(defcustom eshell-ls-backup-regexp 183(defcustom eshell-ls-backup-regexp
168 "\\(\\`\\.?#\\|\\(\\.bak\\|~\\)\\'\\)" 184 "\\(\\`\\.?#\\|\\(\\.bak\\|~\\)\\'\\)"
@@ -170,11 +186,13 @@ files."
170 :type 'regexp 186 :type 'regexp
171 :group 'eshell-ls) 187 :group 'eshell-ls)
172 188
173(defface eshell-ls-backup-face 189(defface eshell-ls-backup
174 '((((class color) (background light)) (:foreground "OrangeRed")) 190 '((((class color) (background light)) (:foreground "OrangeRed"))
175 (((class color) (background dark)) (:foreground "LightSalmon"))) 191 (((class color) (background dark)) (:foreground "LightSalmon")))
176 "*The face used for highlighting backup file names." 192 "*The face used for highlighting backup file names."
177 :group 'eshell-ls) 193 :group 'eshell-ls)
194;; backward-compatibility alias
195(put 'eshell-ls-backup-face 'face-alias 'eshell-ls-backup)
178 196
179(defcustom eshell-ls-product-regexp 197(defcustom eshell-ls-product-regexp
180 "\\.\\(elc\\|o\\(bj\\)?\\|a\\|lib\\|res\\)\\'" 198 "\\.\\(elc\\|o\\(bj\\)?\\|a\\|lib\\|res\\)\\'"
@@ -184,11 +202,13 @@ ought to be recreatable if they are deleted."
184 :type 'regexp 202 :type 'regexp
185 :group 'eshell-ls) 203 :group 'eshell-ls)
186 204
187(defface eshell-ls-product-face 205(defface eshell-ls-product
188 '((((class color) (background light)) (:foreground "OrangeRed")) 206 '((((class color) (background light)) (:foreground "OrangeRed"))
189 (((class color) (background dark)) (:foreground "LightSalmon"))) 207 (((class color) (background dark)) (:foreground "LightSalmon")))
190 "*The face used for highlighting files that are build products." 208 "*The face used for highlighting files that are build products."
191 :group 'eshell-ls) 209 :group 'eshell-ls)
210;; backward-compatibility alias
211(put 'eshell-ls-product-face 'face-alias 'eshell-ls-product)
192 212
193(defcustom eshell-ls-clutter-regexp 213(defcustom eshell-ls-clutter-regexp
194 "\\(^texput\\.log\\|^core\\)\\'" 214 "\\(^texput\\.log\\|^core\\)\\'"
@@ -198,11 +218,13 @@ really need to stick around for very long."
198 :type 'regexp 218 :type 'regexp
199 :group 'eshell-ls) 219 :group 'eshell-ls)
200 220
201(defface eshell-ls-clutter-face 221(defface eshell-ls-clutter
202 '((((class color) (background light)) (:foreground "OrangeRed" :weight bold)) 222 '((((class color) (background light)) (:foreground "OrangeRed" :weight bold))
203 (((class color) (background dark)) (:foreground "OrangeRed" :weight bold))) 223 (((class color) (background dark)) (:foreground "OrangeRed" :weight bold)))
204 "*The face used for highlighting junk file names." 224 "*The face used for highlighting junk file names."
205 :group 'eshell-ls) 225 :group 'eshell-ls)
226;; backward-compatibility alias
227(put 'eshell-ls-clutter-face 'face-alias 'eshell-ls-clutter)
206 228
207(defsubst eshell-ls-filetype-p (attrs type) 229(defsubst eshell-ls-filetype-p (attrs type)
208 "Test whether ATTRS specifies a directory." 230 "Test whether ATTRS specifies a directory."
@@ -847,41 +869,41 @@ Use TRUENAME for predicate tests, if passed."
847 (let ((face 869 (let ((face
848 (cond 870 (cond
849 ((not (cdr file)) 871 ((not (cdr file))
850 'eshell-ls-missing-face) 872 'eshell-ls-missing)
851 873
852 ((stringp (cadr file)) 874 ((stringp (cadr file))
853 'eshell-ls-symlink-face) 875 'eshell-ls-symlink)
854 876
855 ((eq (cadr file) t) 877 ((eq (cadr file) t)
856 'eshell-ls-directory-face) 878 'eshell-ls-directory)
857 879
858 ((not (eshell-ls-filetype-p (cdr file) ?-)) 880 ((not (eshell-ls-filetype-p (cdr file) ?-))
859 'eshell-ls-special-face) 881 'eshell-ls-special)
860 882
861 ((and (/= (user-uid) 0) ; root can execute anything 883 ((and (/= (user-uid) 0) ; root can execute anything
862 (eshell-ls-applicable (cdr file) 3 884 (eshell-ls-applicable (cdr file) 3
863 'file-executable-p (car file))) 885 'file-executable-p (car file)))
864 'eshell-ls-executable-face) 886 'eshell-ls-executable)
865 887
866 ((not (eshell-ls-applicable (cdr file) 1 888 ((not (eshell-ls-applicable (cdr file) 1
867 'file-readable-p (car file))) 889 'file-readable-p (car file)))
868 'eshell-ls-unreadable-face) 890 'eshell-ls-unreadable)
869 891
870 ((string-match eshell-ls-archive-regexp (car file)) 892 ((string-match eshell-ls-archive-regexp (car file))
871 'eshell-ls-archive-face) 893 'eshell-ls-archive)
872 894
873 ((string-match eshell-ls-backup-regexp (car file)) 895 ((string-match eshell-ls-backup-regexp (car file))
874 'eshell-ls-backup-face) 896 'eshell-ls-backup)
875 897
876 ((string-match eshell-ls-product-regexp (car file)) 898 ((string-match eshell-ls-product-regexp (car file))
877 'eshell-ls-product-face) 899 'eshell-ls-product)
878 900
879 ((string-match eshell-ls-clutter-regexp (car file)) 901 ((string-match eshell-ls-clutter-regexp (car file))
880 'eshell-ls-clutter-face) 902 'eshell-ls-clutter)
881 903
882 ((not (eshell-ls-applicable (cdr file) 2 904 ((not (eshell-ls-applicable (cdr file) 2
883 'file-writable-p (car file))) 905 'file-writable-p (car file)))
884 'eshell-ls-readonly-face) 906 'eshell-ls-readonly)
885 (eshell-ls-highlight-alist 907 (eshell-ls-highlight-alist
886 (let ((tests eshell-ls-highlight-alist) 908 (let ((tests eshell-ls-highlight-alist)
887 value) 909 value)
diff --git a/lisp/eshell/em-prompt.el b/lisp/eshell/em-prompt.el
index e1446d9a8bd..009b09720c6 100644
--- a/lisp/eshell/em-prompt.el
+++ b/lisp/eshell/em-prompt.el
@@ -1,6 +1,6 @@
1;;; em-prompt.el --- command prompts 1;;; em-prompt.el --- command prompts
2 2
3;; Copyright (C) 1999, 2000 Free Software Foundation 3;; Copyright (C) 1999, 2000, 2005 Free Software Foundation
4 4
5;; Author: John Wiegley <johnw@gnu.org> 5;; Author: John Wiegley <johnw@gnu.org>
6 6
@@ -68,7 +68,7 @@ re-entered for it to take effect."
68 :type 'boolean 68 :type 'boolean
69 :group 'eshell-prompt) 69 :group 'eshell-prompt)
70 70
71(defface eshell-prompt-face 71(defface eshell-prompt
72 '((((class color) (background light)) (:foreground "Red" :bold t)) 72 '((((class color) (background light)) (:foreground "Red" :bold t))
73 (((class color) (background dark)) (:foreground "Pink" :bold t)) 73 (((class color) (background dark)) (:foreground "Pink" :bold t))
74 (t (:bold t))) 74 (t (:bold t)))
@@ -76,6 +76,8 @@ re-entered for it to take effect."
76For highlighting other kinds of strings -- similar to shell mode's 76For highlighting other kinds of strings -- similar to shell mode's
77behavior -- simply use an output filer which changes text properties." 77behavior -- simply use an output filer which changes text properties."
78 :group 'eshell-prompt) 78 :group 'eshell-prompt)
79;; backward-compatibility alias
80(put 'eshell-prompt-face 'face-alias 'eshell-prompt)
79 81
80(defcustom eshell-before-prompt-hook nil 82(defcustom eshell-before-prompt-hook nil
81 "*A list of functions to call before outputting the prompt." 83 "*A list of functions to call before outputting the prompt."
@@ -119,7 +121,7 @@ arriving, or after."
119 (and eshell-highlight-prompt 121 (and eshell-highlight-prompt
120 (add-text-properties 0 (length prompt) 122 (add-text-properties 0 (length prompt)
121 '(read-only t 123 '(read-only t
122 face eshell-prompt-face 124 face eshell-prompt
123 rear-nonsticky (face read-only)) 125 rear-nonsticky (face read-only))
124 prompt)) 126 prompt))
125 (eshell-interactive-print prompt))) 127 (eshell-interactive-print prompt)))
diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index 51b9f71b75d..c9bdebebdb7 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -818,7 +818,7 @@ This is done after all necessary filtering has been done."
818 "Go to the end of buffer in all windows showing it. 818 "Go to the end of buffer in all windows showing it.
819Movement occurs if point in the selected window is not after the 819Movement occurs if point in the selected window is not after the
820process mark, and `this-command' is an insertion command. Insertion 820process mark, and `this-command' is an insertion command. Insertion
821commands recognised are `self-insert-command', `yank', and 821commands recognized are `self-insert-command', `yank', and
822`hilit-yank'. Depends on the value of 822`hilit-yank'. Depends on the value of
823`eshell-scroll-to-bottom-on-input'. 823`eshell-scroll-to-bottom-on-input'.
824 824
diff --git a/lisp/eshell/esh-test.el b/lisp/eshell/esh-test.el
index c1b121bbf73..46c253c5833 100644
--- a/lisp/eshell/esh-test.el
+++ b/lisp/eshell/esh-test.el
@@ -1,6 +1,6 @@
1;;; esh-test.el --- Eshell test suite 1;;; esh-test.el --- Eshell test suite
2 2
3;; Copyright (C) 1999, 2000 Free Software Foundation 3;; Copyright (C) 1999, 2000, 2005 Free Software Foundation
4 4
5;; Author: John Wiegley <johnw@gnu.org> 5;; Author: John Wiegley <johnw@gnu.org>
6 6
@@ -42,18 +42,22 @@
42 42
43;;; User Variables: 43;;; User Variables:
44 44
45(defface eshell-test-ok-face 45(defface eshell-test-ok
46 '((((class color) (background light)) (:foreground "Green" :bold t)) 46 '((((class color) (background light)) (:foreground "Green" :bold t))
47 (((class color) (background dark)) (:foreground "Green" :bold t))) 47 (((class color) (background dark)) (:foreground "Green" :bold t)))
48 "*The face used to highlight OK result strings." 48 "*The face used to highlight OK result strings."
49 :group 'eshell-test) 49 :group 'eshell-test)
50;; backward-compatibility alias
51(put 'eshell-test-ok-face 'face-alias 'eshell-test-ok)
50 52
51(defface eshell-test-failed-face 53(defface eshell-test-failed
52 '((((class color) (background light)) (:foreground "OrangeRed" :bold t)) 54 '((((class color) (background light)) (:foreground "OrangeRed" :bold t))
53 (((class color) (background dark)) (:foreground "OrangeRed" :bold t)) 55 (((class color) (background dark)) (:foreground "OrangeRed" :bold t))
54 (t (:bold t))) 56 (t (:bold t)))
55 "*The face used to highlight FAILED result strings." 57 "*The face used to highlight FAILED result strings."
56 :group 'eshell-test) 58 :group 'eshell-test)
59;; backward-compatibility alias
60(put 'eshell-test-failed-face 'face-alias 'eshell-test-failed)
57 61
58(defcustom eshell-show-usage-metrics nil 62(defcustom eshell-show-usage-metrics nil
59 "*If non-nil, display different usage metrics for each Eshell command." 63 "*If non-nil, display different usage metrics for each Eshell command."
@@ -108,12 +112,10 @@
108 (if truth 112 (if truth
109 (progn 113 (progn
110 (setq str " OK ") 114 (setq str " OK ")
111 (put-text-property 0 6 'face 115 (put-text-property 0 6 'face 'eshell-test-ok str))
112 'eshell-test-ok-face str))
113 (setq str "FAILED") 116 (setq str "FAILED")
114 (setq eshell-test-failures (1+ eshell-test-failures)) 117 (setq eshell-test-failures (1+ eshell-test-failures))
115 (put-text-property 0 6 'face 118 (put-text-property 0 6 'face 'eshell-test-failed str))
116 'eshell-test-failed-face str))
117 str) "]") 119 str) "]")
118 (add-text-properties (line-beginning-position) (point) 120 (add-text-properties (line-beginning-position) (point)
119 (list 'test-func funcsym)) 121 (list 'test-func funcsym))
diff --git a/lisp/faces.el b/lisp/faces.el
index 1791a5a2dca..3f7c4bfbe35 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -2066,7 +2066,11 @@ Note: Other faces cannot inherit from the cursor face."
2066 :group 'basic-faces) 2066 :group 'basic-faces)
2067 2067
2068 2068
2069(defface underline '((t :underline t)) 2069(defface underline '((((supports :underline t))
2070 :underline t)
2071 (((supports :weight bold))
2072 :weight bold)
2073 (t :underline t))
2070 "Basic underlined face." 2074 "Basic underlined face."
2071 :group 'basic-faces) 2075 :group 'basic-faces)
2072 2076
diff --git a/lisp/find-file.el b/lisp/find-file.el
index d85d2ab0f51..26c5cccf8e5 100644
--- a/lisp/find-file.el
+++ b/lisp/find-file.el
@@ -191,7 +191,7 @@ To override this, give an argument to `ff-find-other-file'."
191 (setq fname (buffer-substring (match-beginning 2) (match-end 2))))) 191 (setq fname (buffer-substring (match-beginning 2) (match-end 2)))))
192 ) 192 )
193 "*A list of regular expressions for `ff-find-file'. 193 "*A list of regular expressions for `ff-find-file'.
194Specifies how to recognise special constructs such as include files 194Specifies how to recognize special constructs such as include files
195etc. and an associated method for extracting the filename from that 195etc. and an associated method for extracting the filename from that
196construct.") 196construct.")
197 197
@@ -215,7 +215,7 @@ Set by default to `cc-search-directories', expanded at run-time.
215 215
216This list is searched through with each extension specified in 216This list is searched through with each extension specified in
217`ff-other-file-alist' that matches this file's extension. So the 217`ff-other-file-alist' that matches this file's extension. So the
218longer the list, the longer it'll take to realise that a file 218longer the list, the longer it'll take to realize that a file
219may not exist. 219may not exist.
220 220
221A typical format is 221A typical format is
@@ -340,7 +340,7 @@ Variables of interest include:
340 If non-nil, traces which directories are being searched. 340 If non-nil, traces which directories are being searched.
341 341
342 - `ff-special-constructs' 342 - `ff-special-constructs'
343 A list of regular expressions specifying how to recognise special 343 A list of regular expressions specifying how to recognize special
344 constructs such as include files etc, and an associated method for 344 constructs such as include files etc, and an associated method for
345 extracting the filename from that construct. 345 extracting the filename from that construct.
346 346
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 06afd1017e7..cf15a7d8f87 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -430,7 +430,7 @@ where MATCHER is a regexp to search for or the function name to call to make
430the search, as for MATCH-HIGHLIGHT above, but with one exception; see below. 430the search, as for MATCH-HIGHLIGHT above, but with one exception; see below.
431PRE-MATCH-FORM and POST-MATCH-FORM are evaluated before the first, and after 431PRE-MATCH-FORM and POST-MATCH-FORM are evaluated before the first, and after
432the last, instance MATCH-ANCHORED's MATCHER is used. Therefore they can be 432the last, instance MATCH-ANCHORED's MATCHER is used. Therefore they can be
433used to initialise before, and cleanup after, MATCHER is used. Typically, 433used to initialize before, and cleanup after, MATCHER is used. Typically,
434PRE-MATCH-FORM is used to move to some position relative to the original 434PRE-MATCH-FORM is used to move to some position relative to the original
435MATCHER, before starting with MATCH-ANCHORED's MATCHER. POST-MATCH-FORM might 435MATCHER, before starting with MATCH-ANCHORED's MATCHER. POST-MATCH-FORM might
436be used to move back, before resuming with MATCH-ANCHORED's parent's MATCHER. 436be used to move back, before resuming with MATCH-ANCHORED's parent's MATCHER.
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index e210b4def7c..eca1fc26ce9 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,127 @@
12005-06-16 Juanma Barranquero <lekktu@gmail.com>
2
3 * gnus-art.el (gnus-article-encrypt-body):
4 * gnus-cus.el (gnus-score-customize):
5 * mm-extern.el (mm-extern-local-file, mm-inline-external-body):
6 * pop3.el (pop3-user): Don't use `format' on `error' arguments.
7
82005-06-16 Miles Bader <miles@gnu.org>
9
10 * spam.el (spam): Remove "-face" suffix from face name.
11 (spam-face): New backward-compatibility alias for renamed face.
12 (spam-face, spam-initialize): Use renamed spam face.
13
14 * message.el (message-header-to, message-header-cc)
15 (message-header-subject, message-header-newsgroups)
16 (message-header-other, message-header-name)
17 (message-header-xheader, message-separator, message-cited-text)
18 (message-mml): Remove "-face" suffix from face names.
19 (message-header-to-face, message-header-cc-face)
20 (message-header-subject-face, message-header-newsgroups-face)
21 (message-header-other-face, message-header-name-face)
22 (message-header-xheader-face, message-separator-face)
23 (message-cited-text-face, message-mml-face):
24 New backward-compatibility aliases for renamed faces.
25 (message-font-lock-keywords): Use renamed message faces.
26
27 * sieve-mode.el (sieve-control-commands, sieve-action-commands)
28 (sieve-test-commands, sieve-tagged-arguments):
29 Remove "-face" suffix from face names.
30 (sieve-control-commands-face, sieve-action-commands-face)
31 (sieve-test-commands-face, sieve-tagged-arguments-face):
32 New backward-compatibility aliases for renamed faces.
33 (sieve-control-commands-face, sieve-action-commands-face)
34 (sieve-test-commands-face, sieve-tagged-arguments-face):
35 Use renamed sieve faces.
36
37 * gnus.el (gnus-group-news-1, gnus-group-news-1-empty)
38 (gnus-group-news-2, gnus-group-news-2-empty, gnus-group-news-3)
39 (gnus-group-news-3-empty, gnus-group-news-4)
40 (gnus-group-news-4-empty, gnus-group-news-5)
41 (gnus-group-news-5-empty, gnus-group-news-6)
42 (gnus-group-news-6-empty, gnus-group-news-low)
43 (gnus-group-news-low-empty, gnus-group-mail-1)
44 (gnus-group-mail-1-empty, gnus-group-mail-2)
45 (gnus-group-mail-2-empty, gnus-group-mail-3)
46 (gnus-group-mail-3-empty, gnus-group-mail-low)
47 (gnus-group-mail-low-empty, gnus-summary-selected)
48 (gnus-summary-cancelled, gnus-summary-high-ticked)
49 (gnus-summary-low-ticked, gnus-summary-normal-ticked)
50 (gnus-summary-high-ancient, gnus-summary-low-ancient)
51 (gnus-summary-normal-ancient, gnus-summary-high-undownloaded)
52 (gnus-summary-low-undownloaded)
53 (gnus-summary-normal-undownloaded, gnus-summary-high-unread)
54 (gnus-summary-low-unread, gnus-summary-normal-unread)
55 (gnus-summary-high-read, gnus-summary-low-read)
56 (gnus-summary-normal-read, gnus-splash):
57 Remove "-face" suffix from face names.
58 (gnus-group-news-1-face, gnus-group-news-1-empty-face)
59 (gnus-group-news-2-face, gnus-group-news-2-empty-face)
60 (gnus-group-news-3-face, gnus-group-news-3-empty-face)
61 (gnus-group-news-4-face, gnus-group-news-4-empty-face)
62 (gnus-group-news-5-face, gnus-group-news-5-empty-face)
63 (gnus-group-news-6-face, gnus-group-news-6-empty-face)
64 (gnus-group-news-low-face, gnus-group-news-low-empty-face)
65 (gnus-group-mail-1-face, gnus-group-mail-1-empty-face)
66 (gnus-group-mail-2-face, gnus-group-mail-2-empty-face)
67 (gnus-group-mail-3-face, gnus-group-mail-3-empty-face)
68 (gnus-group-mail-low-face, gnus-group-mail-low-empty-face)
69 (gnus-summary-selected-face, gnus-summary-cancelled-face)
70 (gnus-summary-high-ticked-face, gnus-summary-low-ticked-face)
71 (gnus-summary-normal-ticked-face)
72 (gnus-summary-high-ancient-face, gnus-summary-low-ancient-face)
73 (gnus-summary-normal-ancient-face)
74 (gnus-summary-high-undownloaded-face)
75 (gnus-summary-low-undownloaded-face)
76 (gnus-summary-normal-undownloaded-face)
77 (gnus-summary-high-unread-face, gnus-summary-low-unread-face)
78 (gnus-summary-normal-unread-face, gnus-summary-high-read-face)
79 (gnus-summary-low-read-face, gnus-summary-normal-read-face)
80 (gnus-splash-face):
81 New backward-compatibility aliases for renamed faces.
82 (gnus-group-startup-message): Use renamed gnus faces.
83
84 * gnus-srvr.el (gnus-server-agent, gnus-server-opened)
85 (gnus-server-closed, gnus-server-denied, gnus-server-offline)
86 (gnus-server-agent): Remove "-face" suffix from face names.
87 (gnus-server-agent-face, gnus-server-opened-face)
88 (gnus-server-closed-face, gnus-server-denied-face)
89 (gnus-server-offline-face):
90 New backward-compatibility aliases for renamed faces.
91 (gnus-server-agent-face, gnus-server-opened-face)
92 (gnus-server-closed-face, gnus-server-denied-face)
93 (gnus-server-offline-face): Use renamed gnus faces.
94
95 * gnus-picon.el (gnus-picon-xbm, gnus-picon):
96 Remove "-face" suffix from face names.
97 (gnus-picon-xbm-face, gnus-picon-face):
98 New backward-compatibility aliases for renamed faces.
99
100 * gnus-cite.el (gnus-cite-attribution, gnus-cite-1, gnus-cite-2)
101 (gnus-cite-3, gnus-cite-4, gnus-cite-5, gnus-cite-6)
102 (gnus-cite-7, gnus-cite-8, gnus-cite-9, gnus-cite-10)
103 (gnus-cite-11): Remove "-face" suffix from face names.
104 (gnus-cite-attribution-face, gnus-cite-face-1, gnus-cite-face-2)
105 (gnus-cite-face-3, gnus-cite-face-4, gnus-cite-face-5)
106 (gnus-cite-face-6, gnus-cite-face-7, gnus-cite-face-8)
107 (gnus-cite-face-9, gnus-cite-face-10, gnus-cite-face-11):
108 New backward-compatibility aliases for renamed faces.
109 (gnus-cite-attribution-face, gnus-cite-face-list)
110 (gnus-article-boring-faces): Use renamed gnus faces.
111
112 * gnus-art.el (gnus-signature, gnus-header-from)
113 (gnus-header-subject, gnus-header-newsgroups, gnus-header-name)
114 (gnus-header-content): Remove "-face" suffix from face names.
115 (gnus-signature-face, gnus-header-from-face)
116 (gnus-header-subject-face, gnus-header-newsgroups-face)
117 (gnus-header-name-face, gnus-header-content-face):
118 New backward-compatibility aliases for renamed faces.
119 (gnus-signature-face, gnus-header-face-alist): Use renamed gnus faces.
120
121 * gnus-sum.el (gnus-summary-selected-face)
122 (gnus-summary-highlight): Use renamed gnus faces.
123 * gnus-group.el (gnus-group-highlight): Likewise.
124
12005-06-14 Juanma Barranquero <lekktu@gmail.com> 1252005-06-14 Juanma Barranquero <lekktu@gmail.com>
2 126
3 * gnus-sieve.el (gnus-sieve-article-add-rule): 127 * gnus-sieve.el (gnus-sieve-article-add-rule):
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 498596dd63c..04c1309963b 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -645,21 +645,23 @@ above them."
645 :type 'face 645 :type 'face
646 :group 'gnus-article-buttons) 646 :group 'gnus-article-buttons)
647 647
648(defcustom gnus-signature-face 'gnus-signature-face 648(defcustom gnus-signature-face 'gnus-signature
649 "Face used for highlighting a signature in the article buffer. 649 "Face used for highlighting a signature in the article buffer.
650Obsolete; use the face `gnus-signature-face' for customizations instead." 650Obsolete; use the face `gnus-signature' for customizations instead."
651 :type 'face 651 :type 'face
652 :group 'gnus-article-highlight 652 :group 'gnus-article-highlight
653 :group 'gnus-article-signature) 653 :group 'gnus-article-signature)
654 654
655(defface gnus-signature-face 655(defface gnus-signature
656 '((t 656 '((t
657 (:italic t))) 657 (:italic t)))
658 "Face used for highlighting a signature in the article buffer." 658 "Face used for highlighting a signature in the article buffer."
659 :group 'gnus-article-highlight 659 :group 'gnus-article-highlight
660 :group 'gnus-article-signature) 660 :group 'gnus-article-signature)
661;; backward-compatibility alias
662(put 'gnus-signature-face 'face-alias 'gnus-signature)
661 663
662(defface gnus-header-from-face 664(defface gnus-header-from
663 '((((class color) 665 '((((class color)
664 (background dark)) 666 (background dark))
665 (:foreground "spring green")) 667 (:foreground "spring green"))
@@ -671,8 +673,10 @@ Obsolete; use the face `gnus-signature-face' for customizations instead."
671 "Face used for displaying from headers." 673 "Face used for displaying from headers."
672 :group 'gnus-article-headers 674 :group 'gnus-article-headers
673 :group 'gnus-article-highlight) 675 :group 'gnus-article-highlight)
676;; backward-compatibility alias
677(put 'gnus-header-from-face 'face-alias 'gnus-header-from)
674 678
675(defface gnus-header-subject-face 679(defface gnus-header-subject
676 '((((class color) 680 '((((class color)
677 (background dark)) 681 (background dark))
678 (:foreground "SeaGreen3")) 682 (:foreground "SeaGreen3"))
@@ -684,8 +688,10 @@ Obsolete; use the face `gnus-signature-face' for customizations instead."
684 "Face used for displaying subject headers." 688 "Face used for displaying subject headers."
685 :group 'gnus-article-headers 689 :group 'gnus-article-headers
686 :group 'gnus-article-highlight) 690 :group 'gnus-article-highlight)
691;; backward-compatibility alias
692(put 'gnus-header-subject-face 'face-alias 'gnus-header-subject)
687 693
688(defface gnus-header-newsgroups-face 694(defface gnus-header-newsgroups
689 '((((class color) 695 '((((class color)
690 (background dark)) 696 (background dark))
691 (:foreground "yellow" :italic t)) 697 (:foreground "yellow" :italic t))
@@ -699,8 +705,10 @@ In the default setup this face is only used for crossposted
699articles." 705articles."
700 :group 'gnus-article-headers 706 :group 'gnus-article-headers
701 :group 'gnus-article-highlight) 707 :group 'gnus-article-highlight)
708;; backward-compatibility alias
709(put 'gnus-header-newsgroups-face 'face-alias 'gnus-header-newsgroups)
702 710
703(defface gnus-header-name-face 711(defface gnus-header-name
704 '((((class color) 712 '((((class color)
705 (background dark)) 713 (background dark))
706 (:foreground "SeaGreen")) 714 (:foreground "SeaGreen"))
@@ -712,8 +720,10 @@ articles."
712 "Face used for displaying header names." 720 "Face used for displaying header names."
713 :group 'gnus-article-headers 721 :group 'gnus-article-headers
714 :group 'gnus-article-highlight) 722 :group 'gnus-article-highlight)
723;; backward-compatibility alias
724(put 'gnus-header-name-face 'face-alias 'gnus-header-name)
715 725
716(defface gnus-header-content-face 726(defface gnus-header-content
717 '((((class color) 727 '((((class color)
718 (background dark)) 728 (background dark))
719 (:foreground "forest green" :italic t)) 729 (:foreground "forest green" :italic t))
@@ -724,12 +734,14 @@ articles."
724 (:italic t))) "Face used for displaying header content." 734 (:italic t))) "Face used for displaying header content."
725 :group 'gnus-article-headers 735 :group 'gnus-article-headers
726 :group 'gnus-article-highlight) 736 :group 'gnus-article-highlight)
737;; backward-compatibility alias
738(put 'gnus-header-content-face 'face-alias 'gnus-header-content)
727 739
728(defcustom gnus-header-face-alist 740(defcustom gnus-header-face-alist
729 '(("From" nil gnus-header-from-face) 741 '(("From" nil gnus-header-from)
730 ("Subject" nil gnus-header-subject-face) 742 ("Subject" nil gnus-header-subject)
731 ("Newsgroups:.*," nil gnus-header-newsgroups-face) 743 ("Newsgroups:.*," nil gnus-header-newsgroups)
732 ("" gnus-header-name-face gnus-header-content-face)) 744 ("" gnus-header-name gnus-header-content))
733 "*Controls highlighting of article headers. 745 "*Controls highlighting of article headers.
734 746
735An alist of the form (HEADER NAME CONTENT). 747An alist of the form (HEADER NAME CONTENT).
@@ -6490,7 +6502,7 @@ do the highlighting. See the documentation for those functions."
6490(defun gnus-article-highlight-signature () 6502(defun gnus-article-highlight-signature ()
6491 "Highlight the signature in an article. 6503 "Highlight the signature in an article.
6492It does this by highlighting everything after 6504It does this by highlighting everything after
6493`gnus-signature-separator' using `gnus-signature-face'." 6505`gnus-signature-separator' using the face `gnus-signature'."
6494 (interactive) 6506 (interactive)
6495 (save-excursion 6507 (save-excursion
6496 (set-buffer gnus-article-buffer) 6508 (set-buffer gnus-article-buffer)
@@ -7057,7 +7069,7 @@ For example:
7057 current-prefix-arg)) 7069 current-prefix-arg))
7058 (let ((func (cdr (assoc protocol gnus-article-encrypt-protocol-alist)))) 7070 (let ((func (cdr (assoc protocol gnus-article-encrypt-protocol-alist))))
7059 (unless func 7071 (unless func
7060 (error (format "Can't find the encrypt protocol %s" protocol))) 7072 (error "Can't find the encrypt protocol %s" protocol))
7061 (if (member gnus-newsgroup-name '("nndraft:delayed" 7073 (if (member gnus-newsgroup-name '("nndraft:delayed"
7062 "nndraft:drafts" 7074 "nndraft:drafts"
7063 "nndraft:queue")) 7075 "nndraft:queue"))
diff --git a/lisp/gnus/gnus-cite.el b/lisp/gnus/gnus-cite.el
index 090a365f994..8611ed4bbe9 100644
--- a/lisp/gnus/gnus-cite.el
+++ b/lisp/gnus/gnus-cite.el
@@ -137,143 +137,165 @@ the envelope From line."
137 :group 'gnus-cite 137 :group 'gnus-cite
138 :type 'boolean) 138 :type 'boolean)
139 139
140(defface gnus-cite-attribution-face '((t 140(defface gnus-cite-attribution '((t (:italic t)))
141 (:italic t)))
142 "Face used for attribution lines." 141 "Face used for attribution lines."
143 :group 'gnus-cite) 142 :group 'gnus-cite)
143;; backward-compatibility alias
144(put 'gnus-cite-attribution-face 'face-alias 'gnus-cite-attribution)
144 145
145(defcustom gnus-cite-attribution-face 'gnus-cite-attribution-face 146(defcustom gnus-cite-attribution-face 'gnus-cite-attribution
146 "Face used for attribution lines. 147 "Face used for attribution lines.
147It is merged with the face for the cited text belonging to the attribution." 148It is merged with the face for the cited text belonging to the attribution."
148 :version "22.1" 149 :version "22.1"
149 :group 'gnus-cite 150 :group 'gnus-cite
150 :type 'face) 151 :type 'face)
151 152
152(defface gnus-cite-face-1 '((((class color) 153(defface gnus-cite-1 '((((class color)
153 (background dark)) 154 (background dark))
154 (:foreground "light blue")) 155 (:foreground "light blue"))
155 (((class color) 156 (((class color)
156 (background light)) 157 (background light))
157 (:foreground "MidnightBlue")) 158 (:foreground "MidnightBlue"))
158 (t 159 (t
159 (:italic t))) 160 (:italic t)))
160 "Citation face." 161 "Citation face."
161 :group 'gnus-cite) 162 :group 'gnus-cite)
162 163;; backward-compatibility alias
163(defface gnus-cite-face-2 '((((class color) 164(put 'gnus-cite-face-1 'face-alias 'gnus-cite-1)
164 (background dark)) 165
165 (:foreground "light cyan")) 166(defface gnus-cite-2 '((((class color)
166 (((class color) 167 (background dark))
167 (background light)) 168 (:foreground "light cyan"))
168 (:foreground "firebrick")) 169 (((class color)
169 (t 170 (background light))
170 (:italic t))) 171 (:foreground "firebrick"))
172 (t
173 (:italic t)))
171 "Citation face." 174 "Citation face."
172 :group 'gnus-cite) 175 :group 'gnus-cite)
173 176;; backward-compatibility alias
174(defface gnus-cite-face-3 '((((class color) 177(put 'gnus-cite-face-2 'face-alias 'gnus-cite-2)
175 (background dark)) 178
176 (:foreground "light yellow")) 179(defface gnus-cite-3 '((((class color)
177 (((class color) 180 (background dark))
178 (background light)) 181 (:foreground "light yellow"))
179 (:foreground "dark green")) 182 (((class color)
180 (t 183 (background light))
181 (:italic t))) 184 (:foreground "dark green"))
185 (t
186 (:italic t)))
182 "Citation face." 187 "Citation face."
183 :group 'gnus-cite) 188 :group 'gnus-cite)
184 189;; backward-compatibility alias
185(defface gnus-cite-face-4 '((((class color) 190(put 'gnus-cite-face-3 'face-alias 'gnus-cite-3)
186 (background dark)) 191
187 (:foreground "light pink")) 192(defface gnus-cite-4 '((((class color)
188 (((class color) 193 (background dark))
189 (background light)) 194 (:foreground "light pink"))
190 (:foreground "OrangeRed")) 195 (((class color)
191 (t 196 (background light))
192 (:italic t))) 197 (:foreground "OrangeRed"))
198 (t
199 (:italic t)))
193 "Citation face." 200 "Citation face."
194 :group 'gnus-cite) 201 :group 'gnus-cite)
195 202;; backward-compatibility alias
196(defface gnus-cite-face-5 '((((class color) 203(put 'gnus-cite-face-4 'face-alias 'gnus-cite-4)
197 (background dark)) 204
198 (:foreground "pale green")) 205(defface gnus-cite-5 '((((class color)
199 (((class color) 206 (background dark))
200 (background light)) 207 (:foreground "pale green"))
201 (:foreground "dark khaki")) 208 (((class color)
202 (t 209 (background light))
203 (:italic t))) 210 (:foreground "dark khaki"))
211 (t
212 (:italic t)))
204 "Citation face." 213 "Citation face."
205 :group 'gnus-cite) 214 :group 'gnus-cite)
206 215;; backward-compatibility alias
207(defface gnus-cite-face-6 '((((class color) 216(put 'gnus-cite-face-5 'face-alias 'gnus-cite-5)
208 (background dark)) 217
209 (:foreground "beige")) 218(defface gnus-cite-6 '((((class color)
210 (((class color) 219 (background dark))
211 (background light)) 220 (:foreground "beige"))
212 (:foreground "dark violet")) 221 (((class color)
213 (t 222 (background light))
214 (:italic t))) 223 (:foreground "dark violet"))
224 (t
225 (:italic t)))
215 "Citation face." 226 "Citation face."
216 :group 'gnus-cite) 227 :group 'gnus-cite)
217 228;; backward-compatibility alias
218(defface gnus-cite-face-7 '((((class color) 229(put 'gnus-cite-face-6 'face-alias 'gnus-cite-6)
219 (background dark)) 230
220 (:foreground "orange")) 231(defface gnus-cite-7 '((((class color)
221 (((class color) 232 (background dark))
222 (background light)) 233 (:foreground "orange"))
223 (:foreground "SteelBlue4")) 234 (((class color)
224 (t 235 (background light))
225 (:italic t))) 236 (:foreground "SteelBlue4"))
237 (t
238 (:italic t)))
226 "Citation face." 239 "Citation face."
227 :group 'gnus-cite) 240 :group 'gnus-cite)
228 241;; backward-compatibility alias
229(defface gnus-cite-face-8 '((((class color) 242(put 'gnus-cite-face-7 'face-alias 'gnus-cite-7)
230 (background dark)) 243
231 (:foreground "magenta")) 244(defface gnus-cite-8 '((((class color)
232 (((class color) 245 (background dark))
233 (background light)) 246 (:foreground "magenta"))
234 (:foreground "magenta")) 247 (((class color)
235 (t 248 (background light))
236 (:italic t))) 249 (:foreground "magenta"))
250 (t
251 (:italic t)))
237 "Citation face." 252 "Citation face."
238 :group 'gnus-cite) 253 :group 'gnus-cite)
239 254;; backward-compatibility alias
240(defface gnus-cite-face-9 '((((class color) 255(put 'gnus-cite-face-8 'face-alias 'gnus-cite-8)
241 (background dark)) 256
242 (:foreground "violet")) 257(defface gnus-cite-9 '((((class color)
243 (((class color) 258 (background dark))
244 (background light)) 259 (:foreground "violet"))
245 (:foreground "violet")) 260 (((class color)
246 (t 261 (background light))
247 (:italic t))) 262 (:foreground "violet"))
263 (t
264 (:italic t)))
248 "Citation face." 265 "Citation face."
249 :group 'gnus-cite) 266 :group 'gnus-cite)
250 267;; backward-compatibility alias
251(defface gnus-cite-face-10 '((((class color) 268(put 'gnus-cite-face-9 'face-alias 'gnus-cite-9)
252 (background dark)) 269
253 (:foreground "medium purple")) 270(defface gnus-cite-10 '((((class color)
254 (((class color) 271 (background dark))
255 (background light)) 272 (:foreground "medium purple"))
256 (:foreground "medium purple")) 273 (((class color)
257 (t 274 (background light))
258 (:italic t))) 275 (:foreground "medium purple"))
276 (t
277 (:italic t)))
259 "Citation face." 278 "Citation face."
260 :group 'gnus-cite) 279 :group 'gnus-cite)
261 280;; backward-compatibility alias
262(defface gnus-cite-face-11 '((((class color) 281(put 'gnus-cite-face-10 'face-alias 'gnus-cite-10)
263 (background dark)) 282
264 (:foreground "turquoise")) 283(defface gnus-cite-11 '((((class color)
265 (((class color) 284 (background dark))
266 (background light)) 285 (:foreground "turquoise"))
267 (:foreground "turquoise")) 286 (((class color)
268 (t 287 (background light))
269 (:italic t))) 288 (:foreground "turquoise"))
289 (t
290 (:italic t)))
270 "Citation face." 291 "Citation face."
271 :group 'gnus-cite) 292 :group 'gnus-cite)
293;; backward-compatibility alias
294(put 'gnus-cite-face-11 'face-alias 'gnus-cite-11)
272 295
273(defcustom gnus-cite-face-list 296(defcustom gnus-cite-face-list
274 '(gnus-cite-face-1 gnus-cite-face-2 gnus-cite-face-3 gnus-cite-face-4 297 '(gnus-cite-1 gnus-cite-2 gnus-cite-3 gnus-cite-4 gnus-cite-5 gnus-cite-6
275 gnus-cite-face-5 gnus-cite-face-6 gnus-cite-face-7 gnus-cite-face-8 298 gnus-cite-7 gnus-cite-8 gnus-cite-9 gnus-cite-10 gnus-cite-11)
276 gnus-cite-face-9 gnus-cite-face-10 gnus-cite-face-11)
277 "*List of faces used for highlighting citations. 299 "*List of faces used for highlighting citations.
278 300
279When there are citations from multiple articles in the same message, 301When there are citations from multiple articles in the same message,
@@ -299,8 +321,7 @@ This should make it easier to see who wrote what."
299 321
300;; This has to go here because its default value depends on 322;; This has to go here because its default value depends on
301;; gnus-cite-face-list. 323;; gnus-cite-face-list.
302(defcustom gnus-article-boring-faces (cons 'gnus-signature-face 324(defcustom gnus-article-boring-faces (cons 'gnus-signature gnus-cite-face-list)
303 gnus-cite-face-list)
304 "List of faces that are not worth reading. 325 "List of faces that are not worth reading.
305If an article has more pages below the one you are looking at, but 326If an article has more pages below the one you are looking at, but
306nothing on those pages is a word of at least three letters that is not 327nothing on those pages is a word of at least three letters that is not
@@ -352,7 +373,7 @@ in a boring face, then the pages will be skipped."
352Each citation in the article will be highlighted with a different face. 373Each citation in the article will be highlighted with a different face.
353The faces are taken from `gnus-cite-face-list'. 374The faces are taken from `gnus-cite-face-list'.
354Attribution lines are highlighted with the same face as the 375Attribution lines are highlighted with the same face as the
355corresponding citation merged with `gnus-cite-attribution-face'. 376corresponding citation merged with the face `gnus-cite-attribution'.
356 377
357Text is considered cited if at least `gnus-cite-minimum-match-count' 378Text is considered cited if at least `gnus-cite-minimum-match-count'
358lines matches `message-cite-prefix-regexp' with the same prefix. 379lines matches `message-cite-prefix-regexp' with the same prefix.
diff --git a/lisp/gnus/gnus-cus.el b/lisp/gnus/gnus-cus.el
index 0c31ea9dd1b..1a595a6ab7a 100644
--- a/lisp/gnus/gnus-cus.el
+++ b/lisp/gnus/gnus-cus.el
@@ -772,8 +772,8 @@ When called interactively, FILE defaults to the current score file.
772This can be changed using the `\\[gnus-score-change-score-file]' command." 772This can be changed using the `\\[gnus-score-change-score-file]' command."
773 (interactive (list gnus-current-score-file)) 773 (interactive (list gnus-current-score-file))
774 (unless file 774 (unless file
775 (error (format "No score file for %s" 775 (error "No score file for %s"
776 (gnus-group-decoded-name gnus-newsgroup-name)))) 776 (gnus-group-decoded-name gnus-newsgroup-name)))
777 (let ((scores (gnus-score-load file)) 777 (let ((scores (gnus-score-load file))
778 (types (mapcar (lambda (entry) 778 (types (mapcar (lambda (entry)
779 `(group :format "%v%h\n" 779 `(group :format "%v%h\n"
@@ -1014,9 +1014,9 @@ articles in the thread.
1014 ;; gnus-agent-cat-prepare-category-field as I don't want the 1014 ;; gnus-agent-cat-prepare-category-field as I don't want the
1015 ;; group list to appear when customizing a topic. 1015 ;; group list to appear when customizing a topic.
1016 (widget-insert "\n") 1016 (widget-insert "\n")
1017 1017
1018 (let ((symb 1018 (let ((symb
1019 (set 1019 (set
1020 (make-local-variable 'gnus-agent-cat-groups) 1020 (make-local-variable 'gnus-agent-cat-groups)
1021 (widget-create 1021 (widget-create
1022 `(choice 1022 `(choice
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index f1343d9dbd3..45597b60e88 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -309,50 +309,50 @@ variable."
309(defcustom gnus-group-highlight 309(defcustom gnus-group-highlight
310 '(;; Mail. 310 '(;; Mail.
311 ((and mailp (= unread 0) (eq level 1)) . 311 ((and mailp (= unread 0) (eq level 1)) .
312 gnus-group-mail-1-empty-face) 312 gnus-group-mail-1-empty)
313 ((and mailp (eq level 1)) . 313 ((and mailp (eq level 1)) .
314 gnus-group-mail-1-face) 314 gnus-group-mail-1)
315 ((and mailp (= unread 0) (eq level 2)) . 315 ((and mailp (= unread 0) (eq level 2)) .
316 gnus-group-mail-2-empty-face) 316 gnus-group-mail-2-empty)
317 ((and mailp (eq level 2)) . 317 ((and mailp (eq level 2)) .
318 gnus-group-mail-2-face) 318 gnus-group-mail-2)
319 ((and mailp (= unread 0) (eq level 3)) . 319 ((and mailp (= unread 0) (eq level 3)) .
320 gnus-group-mail-3-empty-face) 320 gnus-group-mail-3-empty)
321 ((and mailp (eq level 3)) . 321 ((and mailp (eq level 3)) .
322 gnus-group-mail-3-face) 322 gnus-group-mail-3)
323 ((and mailp (= unread 0)) . 323 ((and mailp (= unread 0)) .
324 gnus-group-mail-low-empty-face) 324 gnus-group-mail-low-empty)
325 ((and mailp) . 325 ((and mailp) .
326 gnus-group-mail-low-face) 326 gnus-group-mail-low)
327 ;; News. 327 ;; News.
328 ((and (= unread 0) (eq level 1)) . 328 ((and (= unread 0) (eq level 1)) .
329 gnus-group-news-1-empty-face) 329 gnus-group-news-1-empty)
330 ((and (eq level 1)) . 330 ((and (eq level 1)) .
331 gnus-group-news-1-face) 331 gnus-group-news-1)
332 ((and (= unread 0) (eq level 2)) . 332 ((and (= unread 0) (eq level 2)) .
333 gnus-group-news-2-empty-face) 333 gnus-group-news-2-empty)
334 ((and (eq level 2)) . 334 ((and (eq level 2)) .
335 gnus-group-news-2-face) 335 gnus-group-news-2)
336 ((and (= unread 0) (eq level 3)) . 336 ((and (= unread 0) (eq level 3)) .
337 gnus-group-news-3-empty-face) 337 gnus-group-news-3-empty)
338 ((and (eq level 3)) . 338 ((and (eq level 3)) .
339 gnus-group-news-3-face) 339 gnus-group-news-3)
340 ((and (= unread 0) (eq level 4)) . 340 ((and (= unread 0) (eq level 4)) .
341 gnus-group-news-4-empty-face) 341 gnus-group-news-4-empty)
342 ((and (eq level 4)) . 342 ((and (eq level 4)) .
343 gnus-group-news-4-face) 343 gnus-group-news-4)
344 ((and (= unread 0) (eq level 5)) . 344 ((and (= unread 0) (eq level 5)) .
345 gnus-group-news-5-empty-face) 345 gnus-group-news-5-empty)
346 ((and (eq level 5)) . 346 ((and (eq level 5)) .
347 gnus-group-news-5-face) 347 gnus-group-news-5)
348 ((and (= unread 0) (eq level 6)) . 348 ((and (= unread 0) (eq level 6)) .
349 gnus-group-news-6-empty-face) 349 gnus-group-news-6-empty)
350 ((and (eq level 6)) . 350 ((and (eq level 6)) .
351 gnus-group-news-6-face) 351 gnus-group-news-6)
352 ((and (= unread 0)) . 352 ((and (= unread 0)) .
353 gnus-group-news-low-empty-face) 353 gnus-group-news-low-empty)
354 (t . 354 (t .
355 gnus-group-news-low-face)) 355 gnus-group-news-low))
356 "*Controls the highlighting of group buffer lines. 356 "*Controls the highlighting of group buffer lines.
357 357
358Below is a list of `Form'/`Face' pairs. When deciding how a a 358Below is a list of `Form'/`Face' pairs. When deciding how a a
diff --git a/lisp/gnus/gnus-picon.el b/lisp/gnus/gnus-picon.el
index 817696ed974..55f886f4c1f 100644
--- a/lisp/gnus/gnus-picon.el
+++ b/lisp/gnus/gnus-picon.el
@@ -74,13 +74,17 @@ Some people may want to add \"unknown\" to this list."
74 :type '(repeat string) 74 :type '(repeat string)
75 :group 'gnus-picon) 75 :group 'gnus-picon)
76 76
77(defface gnus-picon-xbm-face '((t (:foreground "black" :background "white"))) 77(defface gnus-picon-xbm '((t (:foreground "black" :background "white")))
78 "Face to show xbm picon in." 78 "Face to show xbm picon in."
79 :group 'gnus-picon) 79 :group 'gnus-picon)
80;; backward-compatibility alias
81(put 'gnus-picon-xbm-face 'face-alias 'gnus-picon-xbm)
80 82
81(defface gnus-picon-face '((t (:foreground "black" :background "white"))) 83(defface gnus-picon '((t (:foreground "black" :background "white")))
82 "Face to show picon in." 84 "Face to show picon in."
83 :group 'gnus-picon) 85 :group 'gnus-picon)
86;; backward-compatibility alias
87(put 'gnus-picon-face 'face-alias 'gnus-picon)
84 88
85;;; Internal variables: 89;;; Internal variables:
86 90
diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el
index 1c2ba9447ff..cd7161aca0b 100644
--- a/lisp/gnus/gnus-srvr.el
+++ b/lisp/gnus/gnus-srvr.el
@@ -168,67 +168,77 @@ If nil, a faster, but more primitive, buffer is used instead."
168 "\C-c\C-i" gnus-info-find-node 168 "\C-c\C-i" gnus-info-find-node
169 "\C-c\C-b" gnus-bug)) 169 "\C-c\C-b" gnus-bug))
170 170
171(defface gnus-server-agent-face 171(defface gnus-server-agent
172 '((((class color) (background light)) (:foreground "PaleTurquoise" :bold t)) 172 '((((class color) (background light)) (:foreground "PaleTurquoise" :bold t))
173 (((class color) (background dark)) (:foreground "PaleTurquoise" :bold t)) 173 (((class color) (background dark)) (:foreground "PaleTurquoise" :bold t))
174 (t (:bold t))) 174 (t (:bold t)))
175 "Face used for displaying AGENTIZED servers" 175 "Face used for displaying AGENTIZED servers"
176 :group 'gnus-server-visual) 176 :group 'gnus-server-visual)
177;; backward-compatibility alias
178(put 'gnus-server-agent-face 'face-alias 'gnus-server-agent)
177 179
178(defface gnus-server-opened-face 180(defface gnus-server-opened
179 '((((class color) (background light)) (:foreground "Green3" :bold t)) 181 '((((class color) (background light)) (:foreground "Green3" :bold t))
180 (((class color) (background dark)) (:foreground "Green1" :bold t)) 182 (((class color) (background dark)) (:foreground "Green1" :bold t))
181 (t (:bold t))) 183 (t (:bold t)))
182 "Face used for displaying OPENED servers" 184 "Face used for displaying OPENED servers"
183 :group 'gnus-server-visual) 185 :group 'gnus-server-visual)
186;; backward-compatibility alias
187(put 'gnus-server-opened-face 'face-alias 'gnus-server-opened)
184 188
185(defface gnus-server-closed-face 189(defface gnus-server-closed
186 '((((class color) (background light)) (:foreground "Steel Blue" :italic t)) 190 '((((class color) (background light)) (:foreground "Steel Blue" :italic t))
187 (((class color) (background dark)) 191 (((class color) (background dark))
188 (:foreground "Light Steel Blue" :italic t)) 192 (:foreground "Light Steel Blue" :italic t))
189 (t (:italic t))) 193 (t (:italic t)))
190 "Face used for displaying CLOSED servers" 194 "Face used for displaying CLOSED servers"
191 :group 'gnus-server-visual) 195 :group 'gnus-server-visual)
196;; backward-compatibility alias
197(put 'gnus-server-closed-face 'face-alias 'gnus-server-closed)
192 198
193(defface gnus-server-denied-face 199(defface gnus-server-denied
194 '((((class color) (background light)) (:foreground "Red" :bold t)) 200 '((((class color) (background light)) (:foreground "Red" :bold t))
195 (((class color) (background dark)) (:foreground "Pink" :bold t)) 201 (((class color) (background dark)) (:foreground "Pink" :bold t))
196 (t (:inverse-video t :bold t))) 202 (t (:inverse-video t :bold t)))
197 "Face used for displaying DENIED servers" 203 "Face used for displaying DENIED servers"
198 :group 'gnus-server-visual) 204 :group 'gnus-server-visual)
205;; backward-compatibility alias
206(put 'gnus-server-denied-face 'face-alias 'gnus-server-denied)
199 207
200(defface gnus-server-offline-face 208(defface gnus-server-offline
201 '((((class color) (background light)) (:foreground "Orange" :bold t)) 209 '((((class color) (background light)) (:foreground "Orange" :bold t))
202 (((class color) (background dark)) (:foreground "Yellow" :bold t)) 210 (((class color) (background dark)) (:foreground "Yellow" :bold t))
203 (t (:inverse-video t :bold t))) 211 (t (:inverse-video t :bold t)))
204 "Face used for displaying OFFLINE servers" 212 "Face used for displaying OFFLINE servers"
205 :group 'gnus-server-visual) 213 :group 'gnus-server-visual)
214;; backward-compatibility alias
215(put 'gnus-server-offline-face 'face-alias 'gnus-server-offline)
206 216
207(defcustom gnus-server-agent-face 'gnus-server-agent-face 217(defcustom gnus-server-agent-face 'gnus-server-agent
208 "Face name to use on AGENTIZED servers." 218 "Face name to use on AGENTIZED servers."
209 :version "22.1" 219 :version "22.1"
210 :group 'gnus-server-visual 220 :group 'gnus-server-visual
211 :type 'face) 221 :type 'face)
212 222
213(defcustom gnus-server-opened-face 'gnus-server-opened-face 223(defcustom gnus-server-opened-face 'gnus-server-opened
214 "Face name to use on OPENED servers." 224 "Face name to use on OPENED servers."
215 :version "22.1" 225 :version "22.1"
216 :group 'gnus-server-visual 226 :group 'gnus-server-visual
217 :type 'face) 227 :type 'face)
218 228
219(defcustom gnus-server-closed-face 'gnus-server-closed-face 229(defcustom gnus-server-closed-face 'gnus-server-closed
220 "Face name to use on CLOSED servers." 230 "Face name to use on CLOSED servers."
221 :version "22.1" 231 :version "22.1"
222 :group 'gnus-server-visual 232 :group 'gnus-server-visual
223 :type 'face) 233 :type 'face)
224 234
225(defcustom gnus-server-denied-face 'gnus-server-denied-face 235(defcustom gnus-server-denied-face 'gnus-server-denied
226 "Face name to use on DENIED servers." 236 "Face name to use on DENIED servers."
227 :version "22.1" 237 :version "22.1"
228 :group 'gnus-server-visual 238 :group 'gnus-server-visual
229 :type 'face) 239 :type 'face)
230 240
231(defcustom gnus-server-offline-face 'gnus-server-offline-face 241(defcustom gnus-server-offline-face 'gnus-server-offline
232 "Face name to use on OFFLINE servers." 242 "Face name to use on OFFLINE servers."
233 :version "22.1" 243 :version "22.1"
234 :group 'gnus-server-visual 244 :group 'gnus-server-visual
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 5447da73fde..a37960c8b45 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -917,7 +917,7 @@ automatically when it is selected."
917 :group 'gnus-summary 917 :group 'gnus-summary
918 :type 'boolean) 918 :type 'boolean)
919 919
920(defcustom gnus-summary-selected-face 'gnus-summary-selected-face 920(defcustom gnus-summary-selected-face 'gnus-summary-selected
921 "Face used for highlighting the current article in the summary buffer." 921 "Face used for highlighting the current article in the summary buffer."
922 :group 'gnus-summary-visual 922 :group 'gnus-summary-visual
923 :type 'face) 923 :type 'face)
@@ -926,42 +926,42 @@ automatically when it is selected."
926 926
927(defcustom gnus-summary-highlight 927(defcustom gnus-summary-highlight
928 '(((eq mark gnus-canceled-mark) 928 '(((eq mark gnus-canceled-mark)
929 . gnus-summary-cancelled-face) 929 . gnus-summary-cancelled)
930 ((and uncached (> score default-high)) 930 ((and uncached (> score default-high))
931 . gnus-summary-high-undownloaded-face) 931 . gnus-summary-high-undownloaded)
932 ((and uncached (< score default-low)) 932 ((and uncached (< score default-low))
933 . gnus-summary-low-undownloaded-face) 933 . gnus-summary-low-undownloaded)
934 (uncached 934 (uncached
935 . gnus-summary-normal-undownloaded-face) 935 . gnus-summary-normal-undownloaded)
936 ((and (> score default-high) 936 ((and (> score default-high)
937 (or (eq mark gnus-dormant-mark) 937 (or (eq mark gnus-dormant-mark)
938 (eq mark gnus-ticked-mark))) 938 (eq mark gnus-ticked-mark)))
939 . gnus-summary-high-ticked-face) 939 . gnus-summary-high-ticked)
940 ((and (< score default-low) 940 ((and (< score default-low)
941 (or (eq mark gnus-dormant-mark) 941 (or (eq mark gnus-dormant-mark)
942 (eq mark gnus-ticked-mark))) 942 (eq mark gnus-ticked-mark)))
943 . gnus-summary-low-ticked-face) 943 . gnus-summary-low-ticked)
944 ((or (eq mark gnus-dormant-mark) 944 ((or (eq mark gnus-dormant-mark)
945 (eq mark gnus-ticked-mark)) 945 (eq mark gnus-ticked-mark))
946 . gnus-summary-normal-ticked-face) 946 . gnus-summary-normal-ticked)
947 ((and (> score default-high) (eq mark gnus-ancient-mark)) 947 ((and (> score default-high) (eq mark gnus-ancient-mark))
948 . gnus-summary-high-ancient-face) 948 . gnus-summary-high-ancient)
949 ((and (< score default-low) (eq mark gnus-ancient-mark)) 949 ((and (< score default-low) (eq mark gnus-ancient-mark))
950 . gnus-summary-low-ancient-face) 950 . gnus-summary-low-ancient)
951 ((eq mark gnus-ancient-mark) 951 ((eq mark gnus-ancient-mark)
952 . gnus-summary-normal-ancient-face) 952 . gnus-summary-normal-ancient)
953 ((and (> score default-high) (eq mark gnus-unread-mark)) 953 ((and (> score default-high) (eq mark gnus-unread-mark))
954 . gnus-summary-high-unread-face) 954 . gnus-summary-high-unread)
955 ((and (< score default-low) (eq mark gnus-unread-mark)) 955 ((and (< score default-low) (eq mark gnus-unread-mark))
956 . gnus-summary-low-unread-face) 956 . gnus-summary-low-unread)
957 ((eq mark gnus-unread-mark) 957 ((eq mark gnus-unread-mark)
958 . gnus-summary-normal-unread-face) 958 . gnus-summary-normal-unread)
959 ((> score default-high) 959 ((> score default-high)
960 . gnus-summary-high-read-face) 960 . gnus-summary-high-read)
961 ((< score default-low) 961 ((< score default-low)
962 . gnus-summary-low-read-face) 962 . gnus-summary-low-read)
963 (t 963 (t
964 . gnus-summary-normal-read-face)) 964 . gnus-summary-normal-read))
965 "*Controls the highlighting of summary buffer lines. 965 "*Controls the highlighting of summary buffer lines.
966 966
967A list of (FORM . FACE) pairs. When deciding how a a particular 967A list of (FORM . FACE) pairs. When deciding how a a particular
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index a134ac661ac..afba1ea427e 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -357,7 +357,7 @@ be set in `.emacs' instead."
357;; We define these group faces here to avoid the display 357;; We define these group faces here to avoid the display
358;; update forced when creating new faces. 358;; update forced when creating new faces.
359 359
360(defface gnus-group-news-1-face 360(defface gnus-group-news-1
361 '((((class color) 361 '((((class color)
362 (background dark)) 362 (background dark))
363 (:foreground "PaleTurquoise" :bold t)) 363 (:foreground "PaleTurquoise" :bold t))
@@ -368,8 +368,10 @@ be set in `.emacs' instead."
368 ())) 368 ()))
369 "Level 1 newsgroup face." 369 "Level 1 newsgroup face."
370 :group 'gnus-group) 370 :group 'gnus-group)
371;; backward-compatibility alias
372(put 'gnus-group-news-1-face 'face-alias 'gnus-group-news-1)
371 373
372(defface gnus-group-news-1-empty-face 374(defface gnus-group-news-1-empty
373 '((((class color) 375 '((((class color)
374 (background dark)) 376 (background dark))
375 (:foreground "PaleTurquoise")) 377 (:foreground "PaleTurquoise"))
@@ -380,8 +382,10 @@ be set in `.emacs' instead."
380 ())) 382 ()))
381 "Level 1 empty newsgroup face." 383 "Level 1 empty newsgroup face."
382 :group 'gnus-group) 384 :group 'gnus-group)
385;; backward-compatibility alias
386(put 'gnus-group-news-1-empty-face 'face-alias 'gnus-group-news-1-empty)
383 387
384(defface gnus-group-news-2-face 388(defface gnus-group-news-2
385 '((((class color) 389 '((((class color)
386 (background dark)) 390 (background dark))
387 (:foreground "turquoise" :bold t)) 391 (:foreground "turquoise" :bold t))
@@ -392,8 +396,10 @@ be set in `.emacs' instead."
392 ())) 396 ()))
393 "Level 2 newsgroup face." 397 "Level 2 newsgroup face."
394 :group 'gnus-group) 398 :group 'gnus-group)
399;; backward-compatibility alias
400(put 'gnus-group-news-2-face 'face-alias 'gnus-group-news-2)
395 401
396(defface gnus-group-news-2-empty-face 402(defface gnus-group-news-2-empty
397 '((((class color) 403 '((((class color)
398 (background dark)) 404 (background dark))
399 (:foreground "turquoise")) 405 (:foreground "turquoise"))
@@ -404,8 +410,10 @@ be set in `.emacs' instead."
404 ())) 410 ()))
405 "Level 2 empty newsgroup face." 411 "Level 2 empty newsgroup face."
406 :group 'gnus-group) 412 :group 'gnus-group)
413;; backward-compatibility alias
414(put 'gnus-group-news-2-empty-face 'face-alias 'gnus-group-news-2-empty)
407 415
408(defface gnus-group-news-3-face 416(defface gnus-group-news-3
409 '((((class color) 417 '((((class color)
410 (background dark)) 418 (background dark))
411 (:bold t)) 419 (:bold t))
@@ -416,8 +424,10 @@ be set in `.emacs' instead."
416 ())) 424 ()))
417 "Level 3 newsgroup face." 425 "Level 3 newsgroup face."
418 :group 'gnus-group) 426 :group 'gnus-group)
427;; backward-compatibility alias
428(put 'gnus-group-news-3-face 'face-alias 'gnus-group-news-3)
419 429
420(defface gnus-group-news-3-empty-face 430(defface gnus-group-news-3-empty
421 '((((class color) 431 '((((class color)
422 (background dark)) 432 (background dark))
423 ()) 433 ())
@@ -428,8 +438,10 @@ be set in `.emacs' instead."
428 ())) 438 ()))
429 "Level 3 empty newsgroup face." 439 "Level 3 empty newsgroup face."
430 :group 'gnus-group) 440 :group 'gnus-group)
441;; backward-compatibility alias
442(put 'gnus-group-news-3-empty-face 'face-alias 'gnus-group-news-3-empty)
431 443
432(defface gnus-group-news-4-face 444(defface gnus-group-news-4
433 '((((class color) 445 '((((class color)
434 (background dark)) 446 (background dark))
435 (:bold t)) 447 (:bold t))
@@ -440,8 +452,10 @@ be set in `.emacs' instead."
440 ())) 452 ()))
441 "Level 4 newsgroup face." 453 "Level 4 newsgroup face."
442 :group 'gnus-group) 454 :group 'gnus-group)
455;; backward-compatibility alias
456(put 'gnus-group-news-4-face 'face-alias 'gnus-group-news-4)
443 457
444(defface gnus-group-news-4-empty-face 458(defface gnus-group-news-4-empty
445 '((((class color) 459 '((((class color)
446 (background dark)) 460 (background dark))
447 ()) 461 ())
@@ -452,8 +466,10 @@ be set in `.emacs' instead."
452 ())) 466 ()))
453 "Level 4 empty newsgroup face." 467 "Level 4 empty newsgroup face."
454 :group 'gnus-group) 468 :group 'gnus-group)
469;; backward-compatibility alias
470(put 'gnus-group-news-4-empty-face 'face-alias 'gnus-group-news-4-empty)
455 471
456(defface gnus-group-news-5-face 472(defface gnus-group-news-5
457 '((((class color) 473 '((((class color)
458 (background dark)) 474 (background dark))
459 (:bold t)) 475 (:bold t))
@@ -464,8 +480,10 @@ be set in `.emacs' instead."
464 ())) 480 ()))
465 "Level 5 newsgroup face." 481 "Level 5 newsgroup face."
466 :group 'gnus-group) 482 :group 'gnus-group)
483;; backward-compatibility alias
484(put 'gnus-group-news-5-face 'face-alias 'gnus-group-news-5)
467 485
468(defface gnus-group-news-5-empty-face 486(defface gnus-group-news-5-empty
469 '((((class color) 487 '((((class color)
470 (background dark)) 488 (background dark))
471 ()) 489 ())
@@ -476,8 +494,10 @@ be set in `.emacs' instead."
476 ())) 494 ()))
477 "Level 5 empty newsgroup face." 495 "Level 5 empty newsgroup face."
478 :group 'gnus-group) 496 :group 'gnus-group)
497;; backward-compatibility alias
498(put 'gnus-group-news-5-empty-face 'face-alias 'gnus-group-news-5-empty)
479 499
480(defface gnus-group-news-6-face 500(defface gnus-group-news-6
481 '((((class color) 501 '((((class color)
482 (background dark)) 502 (background dark))
483 (:bold t)) 503 (:bold t))
@@ -488,8 +508,10 @@ be set in `.emacs' instead."
488 ())) 508 ()))
489 "Level 6 newsgroup face." 509 "Level 6 newsgroup face."
490 :group 'gnus-group) 510 :group 'gnus-group)
511;; backward-compatibility alias
512(put 'gnus-group-news-6-face 'face-alias 'gnus-group-news-6)
491 513
492(defface gnus-group-news-6-empty-face 514(defface gnus-group-news-6-empty
493 '((((class color) 515 '((((class color)
494 (background dark)) 516 (background dark))
495 ()) 517 ())
@@ -500,8 +522,10 @@ be set in `.emacs' instead."
500 ())) 522 ()))
501 "Level 6 empty newsgroup face." 523 "Level 6 empty newsgroup face."
502 :group 'gnus-group) 524 :group 'gnus-group)
525;; backward-compatibility alias
526(put 'gnus-group-news-6-empty-face 'face-alias 'gnus-group-news-6-empty)
503 527
504(defface gnus-group-news-low-face 528(defface gnus-group-news-low
505 '((((class color) 529 '((((class color)
506 (background dark)) 530 (background dark))
507 (:foreground "DarkTurquoise" :bold t)) 531 (:foreground "DarkTurquoise" :bold t))
@@ -512,8 +536,10 @@ be set in `.emacs' instead."
512 ())) 536 ()))
513 "Low level newsgroup face." 537 "Low level newsgroup face."
514 :group 'gnus-group) 538 :group 'gnus-group)
539;; backward-compatibility alias
540(put 'gnus-group-news-low-face 'face-alias 'gnus-group-news-low)
515 541
516(defface gnus-group-news-low-empty-face 542(defface gnus-group-news-low-empty
517 '((((class color) 543 '((((class color)
518 (background dark)) 544 (background dark))
519 (:foreground "DarkTurquoise")) 545 (:foreground "DarkTurquoise"))
@@ -524,8 +550,10 @@ be set in `.emacs' instead."
524 ())) 550 ()))
525 "Low level empty newsgroup face." 551 "Low level empty newsgroup face."
526 :group 'gnus-group) 552 :group 'gnus-group)
553;; backward-compatibility alias
554(put 'gnus-group-news-low-empty-face 'face-alias 'gnus-group-news-low-empty)
527 555
528(defface gnus-group-mail-1-face 556(defface gnus-group-mail-1
529 '((((class color) 557 '((((class color)
530 (background dark)) 558 (background dark))
531 (:foreground "aquamarine1" :bold t)) 559 (:foreground "aquamarine1" :bold t))
@@ -536,8 +564,10 @@ be set in `.emacs' instead."
536 (:bold t))) 564 (:bold t)))
537 "Level 1 mailgroup face." 565 "Level 1 mailgroup face."
538 :group 'gnus-group) 566 :group 'gnus-group)
567;; backward-compatibility alias
568(put 'gnus-group-mail-1-face 'face-alias 'gnus-group-mail-1)
539 569
540(defface gnus-group-mail-1-empty-face 570(defface gnus-group-mail-1-empty
541 '((((class color) 571 '((((class color)
542 (background dark)) 572 (background dark))
543 (:foreground "aquamarine1")) 573 (:foreground "aquamarine1"))
@@ -548,8 +578,10 @@ be set in `.emacs' instead."
548 (:italic t :bold t))) 578 (:italic t :bold t)))
549 "Level 1 empty mailgroup face." 579 "Level 1 empty mailgroup face."
550 :group 'gnus-group) 580 :group 'gnus-group)
581;; backward-compatibility alias
582(put 'gnus-group-mail-1-empty-face 'face-alias 'gnus-group-mail-1-empty)
551 583
552(defface gnus-group-mail-2-face 584(defface gnus-group-mail-2
553 '((((class color) 585 '((((class color)
554 (background dark)) 586 (background dark))
555 (:foreground "aquamarine2" :bold t)) 587 (:foreground "aquamarine2" :bold t))
@@ -560,8 +592,10 @@ be set in `.emacs' instead."
560 (:bold t))) 592 (:bold t)))
561 "Level 2 mailgroup face." 593 "Level 2 mailgroup face."
562 :group 'gnus-group) 594 :group 'gnus-group)
595;; backward-compatibility alias
596(put 'gnus-group-mail-2-face 'face-alias 'gnus-group-mail-2)
563 597
564(defface gnus-group-mail-2-empty-face 598(defface gnus-group-mail-2-empty
565 '((((class color) 599 '((((class color)
566 (background dark)) 600 (background dark))
567 (:foreground "aquamarine2")) 601 (:foreground "aquamarine2"))
@@ -572,8 +606,10 @@ be set in `.emacs' instead."
572 (:bold t))) 606 (:bold t)))
573 "Level 2 empty mailgroup face." 607 "Level 2 empty mailgroup face."
574 :group 'gnus-group) 608 :group 'gnus-group)
609;; backward-compatibility alias
610(put 'gnus-group-mail-2-empty-face 'face-alias 'gnus-group-mail-2-empty)
575 611
576(defface gnus-group-mail-3-face 612(defface gnus-group-mail-3
577 '((((class color) 613 '((((class color)
578 (background dark)) 614 (background dark))
579 (:foreground "aquamarine3" :bold t)) 615 (:foreground "aquamarine3" :bold t))
@@ -584,8 +620,10 @@ be set in `.emacs' instead."
584 (:bold t))) 620 (:bold t)))
585 "Level 3 mailgroup face." 621 "Level 3 mailgroup face."
586 :group 'gnus-group) 622 :group 'gnus-group)
623;; backward-compatibility alias
624(put 'gnus-group-mail-3-face 'face-alias 'gnus-group-mail-3)
587 625
588(defface gnus-group-mail-3-empty-face 626(defface gnus-group-mail-3-empty
589 '((((class color) 627 '((((class color)
590 (background dark)) 628 (background dark))
591 (:foreground "aquamarine3")) 629 (:foreground "aquamarine3"))
@@ -596,8 +634,10 @@ be set in `.emacs' instead."
596 ())) 634 ()))
597 "Level 3 empty mailgroup face." 635 "Level 3 empty mailgroup face."
598 :group 'gnus-group) 636 :group 'gnus-group)
637;; backward-compatibility alias
638(put 'gnus-group-mail-3-empty-face 'face-alias 'gnus-group-mail-3-empty)
599 639
600(defface gnus-group-mail-low-face 640(defface gnus-group-mail-low
601 '((((class color) 641 '((((class color)
602 (background dark)) 642 (background dark))
603 (:foreground "aquamarine4" :bold t)) 643 (:foreground "aquamarine4" :bold t))
@@ -608,8 +648,10 @@ be set in `.emacs' instead."
608 (:bold t))) 648 (:bold t)))
609 "Low level mailgroup face." 649 "Low level mailgroup face."
610 :group 'gnus-group) 650 :group 'gnus-group)
651;; backward-compatibility alias
652(put 'gnus-group-mail-low-face 'face-alias 'gnus-group-mail-low)
611 653
612(defface gnus-group-mail-low-empty-face 654(defface gnus-group-mail-low-empty
613 '((((class color) 655 '((((class color)
614 (background dark)) 656 (background dark))
615 (:foreground "aquamarine4")) 657 (:foreground "aquamarine4"))
@@ -620,21 +662,26 @@ be set in `.emacs' instead."
620 (:bold t))) 662 (:bold t)))
621 "Low level empty mailgroup face." 663 "Low level empty mailgroup face."
622 :group 'gnus-group) 664 :group 'gnus-group)
665;; backward-compatibility alias
666(put 'gnus-group-mail-low-empty-face 'face-alias 'gnus-group-mail-low-empty)
623 667
624;; Summary mode faces. 668;; Summary mode faces.
625 669
626(defface gnus-summary-selected-face '((t 670(defface gnus-summary-selected '((t (:underline t)))
627 (:underline t)))
628 "Face used for selected articles." 671 "Face used for selected articles."
629 :group 'gnus-summary) 672 :group 'gnus-summary)
673;; backward-compatibility alias
674(put 'gnus-summary-selected-face 'face-alias 'gnus-summary-selected)
630 675
631(defface gnus-summary-cancelled-face 676(defface gnus-summary-cancelled
632 '((((class color)) 677 '((((class color))
633 (:foreground "yellow" :background "black"))) 678 (:foreground "yellow" :background "black")))
634 "Face used for cancelled articles." 679 "Face used for cancelled articles."
635 :group 'gnus-summary) 680 :group 'gnus-summary)
681;; backward-compatibility alias
682(put 'gnus-summary-cancelled-face 'face-alias 'gnus-summary-cancelled)
636 683
637(defface gnus-summary-high-ticked-face 684(defface gnus-summary-high-ticked
638 '((((class color) 685 '((((class color)
639 (background dark)) 686 (background dark))
640 (:foreground "pink" :bold t)) 687 (:foreground "pink" :bold t))
@@ -645,8 +692,10 @@ be set in `.emacs' instead."
645 (:bold t))) 692 (:bold t)))
646 "Face used for high interest ticked articles." 693 "Face used for high interest ticked articles."
647 :group 'gnus-summary) 694 :group 'gnus-summary)
695;; backward-compatibility alias
696(put 'gnus-summary-high-ticked-face 'face-alias 'gnus-summary-high-ticked)
648 697
649(defface gnus-summary-low-ticked-face 698(defface gnus-summary-low-ticked
650 '((((class color) 699 '((((class color)
651 (background dark)) 700 (background dark))
652 (:foreground "pink" :italic t)) 701 (:foreground "pink" :italic t))
@@ -657,8 +706,10 @@ be set in `.emacs' instead."
657 (:italic t))) 706 (:italic t)))
658 "Face used for low interest ticked articles." 707 "Face used for low interest ticked articles."
659 :group 'gnus-summary) 708 :group 'gnus-summary)
709;; backward-compatibility alias
710(put 'gnus-summary-low-ticked-face 'face-alias 'gnus-summary-low-ticked)
660 711
661(defface gnus-summary-normal-ticked-face 712(defface gnus-summary-normal-ticked
662 '((((class color) 713 '((((class color)
663 (background dark)) 714 (background dark))
664 (:foreground "pink")) 715 (:foreground "pink"))
@@ -669,8 +720,10 @@ be set in `.emacs' instead."
669 ())) 720 ()))
670 "Face used for normal interest ticked articles." 721 "Face used for normal interest ticked articles."
671 :group 'gnus-summary) 722 :group 'gnus-summary)
723;; backward-compatibility alias
724(put 'gnus-summary-normal-ticked-face 'face-alias 'gnus-summary-normal-ticked)
672 725
673(defface gnus-summary-high-ancient-face 726(defface gnus-summary-high-ancient
674 '((((class color) 727 '((((class color)
675 (background dark)) 728 (background dark))
676 (:foreground "SkyBlue" :bold t)) 729 (:foreground "SkyBlue" :bold t))
@@ -681,8 +734,10 @@ be set in `.emacs' instead."
681 (:bold t))) 734 (:bold t)))
682 "Face used for high interest ancient articles." 735 "Face used for high interest ancient articles."
683 :group 'gnus-summary) 736 :group 'gnus-summary)
737;; backward-compatibility alias
738(put 'gnus-summary-high-ancient-face 'face-alias 'gnus-summary-high-ancient)
684 739
685(defface gnus-summary-low-ancient-face 740(defface gnus-summary-low-ancient
686 '((((class color) 741 '((((class color)
687 (background dark)) 742 (background dark))
688 (:foreground "SkyBlue" :italic t)) 743 (:foreground "SkyBlue" :italic t))
@@ -693,8 +748,10 @@ be set in `.emacs' instead."
693 (:italic t))) 748 (:italic t)))
694 "Face used for low interest ancient articles." 749 "Face used for low interest ancient articles."
695 :group 'gnus-summary) 750 :group 'gnus-summary)
751;; backward-compatibility alias
752(put 'gnus-summary-low-ancient-face 'face-alias 'gnus-summary-low-ancient)
696 753
697(defface gnus-summary-normal-ancient-face 754(defface gnus-summary-normal-ancient
698 '((((class color) 755 '((((class color)
699 (background dark)) 756 (background dark))
700 (:foreground "SkyBlue")) 757 (:foreground "SkyBlue"))
@@ -705,8 +762,10 @@ be set in `.emacs' instead."
705 ())) 762 ()))
706 "Face used for normal interest ancient articles." 763 "Face used for normal interest ancient articles."
707 :group 'gnus-summary) 764 :group 'gnus-summary)
765;; backward-compatibility alias
766(put 'gnus-summary-normal-ancient-face 'face-alias 'gnus-summary-normal-ancient)
708 767
709(defface gnus-summary-high-undownloaded-face 768(defface gnus-summary-high-undownloaded
710 '((((class color) 769 '((((class color)
711 (background light)) 770 (background light))
712 (:bold t :foreground "cyan4")) 771 (:bold t :foreground "cyan4"))
@@ -715,8 +774,10 @@ be set in `.emacs' instead."
715 (t (:inverse-video t :bold t))) 774 (t (:inverse-video t :bold t)))
716 "Face used for high interest uncached articles." 775 "Face used for high interest uncached articles."
717 :group 'gnus-summary) 776 :group 'gnus-summary)
777;; backward-compatibility alias
778(put 'gnus-summary-high-undownloaded-face 'face-alias 'gnus-summary-high-undownloaded)
718 779
719(defface gnus-summary-low-undownloaded-face 780(defface gnus-summary-low-undownloaded
720 '((((class color) 781 '((((class color)
721 (background light)) 782 (background light))
722 (:italic t :foreground "cyan4" :bold nil)) 783 (:italic t :foreground "cyan4" :bold nil))
@@ -725,8 +786,10 @@ be set in `.emacs' instead."
725 (t (:inverse-video t :italic t))) 786 (t (:inverse-video t :italic t)))
726 "Face used for low interest uncached articles." 787 "Face used for low interest uncached articles."
727 :group 'gnus-summary) 788 :group 'gnus-summary)
789;; backward-compatibility alias
790(put 'gnus-summary-low-undownloaded-face 'face-alias 'gnus-summary-low-undownloaded)
728 791
729(defface gnus-summary-normal-undownloaded-face 792(defface gnus-summary-normal-undownloaded
730 '((((class color) 793 '((((class color)
731 (background light)) 794 (background light))
732 (:foreground "cyan4" :bold nil)) 795 (:foreground "cyan4" :bold nil))
@@ -735,26 +798,34 @@ be set in `.emacs' instead."
735 (t (:inverse-video t))) 798 (t (:inverse-video t)))
736 "Face used for normal interest uncached articles." 799 "Face used for normal interest uncached articles."
737 :group 'gnus-summary) 800 :group 'gnus-summary)
801;; backward-compatibility alias
802(put 'gnus-summary-normal-undownloaded-face 'face-alias 'gnus-summary-normal-undownloaded)
738 803
739(defface gnus-summary-high-unread-face 804(defface gnus-summary-high-unread
740 '((t 805 '((t
741 (:bold t))) 806 (:bold t)))
742 "Face used for high interest unread articles." 807 "Face used for high interest unread articles."
743 :group 'gnus-summary) 808 :group 'gnus-summary)
809;; backward-compatibility alias
810(put 'gnus-summary-high-unread-face 'face-alias 'gnus-summary-high-unread)
744 811
745(defface gnus-summary-low-unread-face 812(defface gnus-summary-low-unread
746 '((t 813 '((t
747 (:italic t))) 814 (:italic t)))
748 "Face used for low interest unread articles." 815 "Face used for low interest unread articles."
749 :group 'gnus-summary) 816 :group 'gnus-summary)
817;; backward-compatibility alias
818(put 'gnus-summary-low-unread-face 'face-alias 'gnus-summary-low-unread)
750 819
751(defface gnus-summary-normal-unread-face 820(defface gnus-summary-normal-unread
752 '((t 821 '((t
753 ())) 822 ()))
754 "Face used for normal interest unread articles." 823 "Face used for normal interest unread articles."
755 :group 'gnus-summary) 824 :group 'gnus-summary)
825;; backward-compatibility alias
826(put 'gnus-summary-normal-unread-face 'face-alias 'gnus-summary-normal-unread)
756 827
757(defface gnus-summary-high-read-face 828(defface gnus-summary-high-read
758 '((((class color) 829 '((((class color)
759 (background dark)) 830 (background dark))
760 (:foreground "PaleGreen" 831 (:foreground "PaleGreen"
@@ -767,8 +838,10 @@ be set in `.emacs' instead."
767 (:bold t))) 838 (:bold t)))
768 "Face used for high interest read articles." 839 "Face used for high interest read articles."
769 :group 'gnus-summary) 840 :group 'gnus-summary)
841;; backward-compatibility alias
842(put 'gnus-summary-high-read-face 'face-alias 'gnus-summary-high-read)
770 843
771(defface gnus-summary-low-read-face 844(defface gnus-summary-low-read
772 '((((class color) 845 '((((class color)
773 (background dark)) 846 (background dark))
774 (:foreground "PaleGreen" 847 (:foreground "PaleGreen"
@@ -781,8 +854,10 @@ be set in `.emacs' instead."
781 (:italic t))) 854 (:italic t)))
782 "Face used for low interest read articles." 855 "Face used for low interest read articles."
783 :group 'gnus-summary) 856 :group 'gnus-summary)
857;; backward-compatibility alias
858(put 'gnus-summary-low-read-face 'face-alias 'gnus-summary-low-read)
784 859
785(defface gnus-summary-normal-read-face 860(defface gnus-summary-normal-read
786 '((((class color) 861 '((((class color)
787 (background dark)) 862 (background dark))
788 (:foreground "PaleGreen")) 863 (:foreground "PaleGreen"))
@@ -793,6 +868,8 @@ be set in `.emacs' instead."
793 ())) 868 ()))
794 "Face used for normal interest read articles." 869 "Face used for normal interest read articles."
795 :group 'gnus-summary) 870 :group 'gnus-summary)
871;; backward-compatibility alias
872(put 'gnus-summary-normal-read-face 'face-alias 'gnus-summary-normal-read)
796 873
797 874
798;;; 875;;;
@@ -836,7 +913,7 @@ be set in `.emacs' instead."
836(eval-and-compile 913(eval-and-compile
837 (autoload 'gnus-play-jingle "gnus-audio")) 914 (autoload 'gnus-play-jingle "gnus-audio"))
838 915
839(defface gnus-splash-face 916(defface gnus-splash
840 '((((class color) 917 '((((class color)
841 (background dark)) 918 (background dark))
842 (:foreground "#888888")) 919 (:foreground "#888888"))
@@ -847,6 +924,8 @@ be set in `.emacs' instead."
847 ())) 924 ()))
848 "Face for the splash screen." 925 "Face for the splash screen."
849 :group 'gnus) 926 :group 'gnus)
927;; backward-compatibility alias
928(put 'gnus-splash-face 'face-alias 'gnus-splash)
850 929
851(defun gnus-splash () 930(defun gnus-splash ()
852 (save-excursion 931 (save-excursion
@@ -925,11 +1004,11 @@ be set in `.emacs' instead."
925 ("background" . ,(face-background 'default)))) 1004 ("background" . ,(face-background 'default))))
926 (:type pbm :file "gnus.pbm" 1005 (:type pbm :file "gnus.pbm"
927 ;; Account for the pbm's blackground. 1006 ;; Account for the pbm's blackground.
928 :background ,(face-foreground 'gnus-splash-face) 1007 :background ,(face-foreground 'gnus-splash)
929 :foreground ,(face-background 'default)) 1008 :foreground ,(face-background 'default))
930 (:type xbm :file "gnus.xbm" 1009 (:type xbm :file "gnus.xbm"
931 ;; Account for the xbm's blackground. 1010 ;; Account for the xbm's blackground.
932 :background ,(face-foreground 'gnus-splash-face) 1011 :background ,(face-foreground 'gnus-splash)
933 :foreground ,(face-background 'default)))))) 1012 :foreground ,(face-background 'default))))))
934 (when image 1013 (when image
935 (let ((size (image-size image))) 1014 (let ((size (image-size image)))
@@ -973,7 +1052,7 @@ be set in `.emacs' instead."
973 (rest (- wheight pheight))) 1052 (rest (- wheight pheight)))
974 (insert (make-string (max 0 (* 2 (/ rest 3))) ?\n))) 1053 (insert (make-string (max 0 (* 2 (/ rest 3))) ?\n)))
975 ;; Fontify some. 1054 ;; Fontify some.
976 (put-text-property (point-min) (point-max) 'face 'gnus-splash-face) 1055 (put-text-property (point-min) (point-max) 'face 'gnus-splash)
977 (setq gnus-simple-splash t))) 1056 (setq gnus-simple-splash t)))
978 (goto-char (point-min)) 1057 (goto-char (point-min))
979 (setq mode-line-buffer-identification (concat " " gnus-version)) 1058 (setq mode-line-buffer-identification (concat " " gnus-version))
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index b65eec7ec12..7b8a289a4e4 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -1124,7 +1124,7 @@ starting with `not' and followed by regexps."
1124 table) 1124 table)
1125 "Syntax table used while in Message mode.") 1125 "Syntax table used while in Message mode.")
1126 1126
1127(defface message-header-to-face 1127(defface message-header-to
1128 '((((class color) 1128 '((((class color)
1129 (background dark)) 1129 (background dark))
1130 (:foreground "green2" :bold t)) 1130 (:foreground "green2" :bold t))
@@ -1135,8 +1135,10 @@ starting with `not' and followed by regexps."
1135 (:bold t :italic t))) 1135 (:bold t :italic t)))
1136 "Face used for displaying From headers." 1136 "Face used for displaying From headers."
1137 :group 'message-faces) 1137 :group 'message-faces)
1138;; backward-compatibility alias
1139(put 'message-header-to-face 'face-alias 'message-header-to)
1138 1140
1139(defface message-header-cc-face 1141(defface message-header-cc
1140 '((((class color) 1142 '((((class color)
1141 (background dark)) 1143 (background dark))
1142 (:foreground "green4" :bold t)) 1144 (:foreground "green4" :bold t))
@@ -1147,8 +1149,10 @@ starting with `not' and followed by regexps."
1147 (:bold t))) 1149 (:bold t)))
1148 "Face used for displaying Cc headers." 1150 "Face used for displaying Cc headers."
1149 :group 'message-faces) 1151 :group 'message-faces)
1152;; backward-compatibility alias
1153(put 'message-header-cc-face 'face-alias 'message-header-cc)
1150 1154
1151(defface message-header-subject-face 1155(defface message-header-subject
1152 '((((class color) 1156 '((((class color)
1153 (background dark)) 1157 (background dark))
1154 (:foreground "green3")) 1158 (:foreground "green3"))
@@ -1159,8 +1163,10 @@ starting with `not' and followed by regexps."
1159 (:bold t))) 1163 (:bold t)))
1160 "Face used for displaying subject headers." 1164 "Face used for displaying subject headers."
1161 :group 'message-faces) 1165 :group 'message-faces)
1166;; backward-compatibility alias
1167(put 'message-header-subject-face 'face-alias 'message-header-subject)
1162 1168
1163(defface message-header-newsgroups-face 1169(defface message-header-newsgroups
1164 '((((class color) 1170 '((((class color)
1165 (background dark)) 1171 (background dark))
1166 (:foreground "yellow" :bold t :italic t)) 1172 (:foreground "yellow" :bold t :italic t))
@@ -1171,8 +1177,10 @@ starting with `not' and followed by regexps."
1171 (:bold t :italic t))) 1177 (:bold t :italic t)))
1172 "Face used for displaying newsgroups headers." 1178 "Face used for displaying newsgroups headers."
1173 :group 'message-faces) 1179 :group 'message-faces)
1180;; backward-compatibility alias
1181(put 'message-header-newsgroups-face 'face-alias 'message-header-newsgroups)
1174 1182
1175(defface message-header-other-face 1183(defface message-header-other
1176 '((((class color) 1184 '((((class color)
1177 (background dark)) 1185 (background dark))
1178 (:foreground "#b00000")) 1186 (:foreground "#b00000"))
@@ -1183,8 +1191,10 @@ starting with `not' and followed by regexps."
1183 (:bold t :italic t))) 1191 (:bold t :italic t)))
1184 "Face used for displaying newsgroups headers." 1192 "Face used for displaying newsgroups headers."
1185 :group 'message-faces) 1193 :group 'message-faces)
1194;; backward-compatibility alias
1195(put 'message-header-other-face 'face-alias 'message-header-other)
1186 1196
1187(defface message-header-name-face 1197(defface message-header-name
1188 '((((class color) 1198 '((((class color)
1189 (background dark)) 1199 (background dark))
1190 (:foreground "DarkGreen")) 1200 (:foreground "DarkGreen"))
@@ -1195,8 +1205,10 @@ starting with `not' and followed by regexps."
1195 (:bold t))) 1205 (:bold t)))
1196 "Face used for displaying header names." 1206 "Face used for displaying header names."
1197 :group 'message-faces) 1207 :group 'message-faces)
1208;; backward-compatibility alias
1209(put 'message-header-name-face 'face-alias 'message-header-name)
1198 1210
1199(defface message-header-xheader-face 1211(defface message-header-xheader
1200 '((((class color) 1212 '((((class color)
1201 (background dark)) 1213 (background dark))
1202 (:foreground "blue")) 1214 (:foreground "blue"))
@@ -1207,8 +1219,10 @@ starting with `not' and followed by regexps."
1207 (:bold t))) 1219 (:bold t)))
1208 "Face used for displaying X-Header headers." 1220 "Face used for displaying X-Header headers."
1209 :group 'message-faces) 1221 :group 'message-faces)
1222;; backward-compatibility alias
1223(put 'message-header-xheader-face 'face-alias 'message-header-xheader)
1210 1224
1211(defface message-separator-face 1225(defface message-separator
1212 '((((class color) 1226 '((((class color)
1213 (background dark)) 1227 (background dark))
1214 (:foreground "blue3")) 1228 (:foreground "blue3"))
@@ -1219,8 +1233,10 @@ starting with `not' and followed by regexps."
1219 (:bold t))) 1233 (:bold t)))
1220 "Face used for displaying the separator." 1234 "Face used for displaying the separator."
1221 :group 'message-faces) 1235 :group 'message-faces)
1236;; backward-compatibility alias
1237(put 'message-separator-face 'face-alias 'message-separator)
1222 1238
1223(defface message-cited-text-face 1239(defface message-cited-text
1224 '((((class color) 1240 '((((class color)
1225 (background dark)) 1241 (background dark))
1226 (:foreground "red")) 1242 (:foreground "red"))
@@ -1231,8 +1247,10 @@ starting with `not' and followed by regexps."
1231 (:bold t))) 1247 (:bold t)))
1232 "Face used for displaying cited text names." 1248 "Face used for displaying cited text names."
1233 :group 'message-faces) 1249 :group 'message-faces)
1250;; backward-compatibility alias
1251(put 'message-cited-text-face 'face-alias 'message-cited-text)
1234 1252
1235(defface message-mml-face 1253(defface message-mml
1236 '((((class color) 1254 '((((class color)
1237 (background dark)) 1255 (background dark))
1238 (:foreground "ForestGreen")) 1256 (:foreground "ForestGreen"))
@@ -1243,6 +1261,8 @@ starting with `not' and followed by regexps."
1243 (:bold t))) 1261 (:bold t)))
1244 "Face used for displaying MML." 1262 "Face used for displaying MML."
1245 :group 'message-faces) 1263 :group 'message-faces)
1264;; backward-compatibility alias
1265(put 'message-mml-face 'face-alias 'message-mml)
1246 1266
1247(defun message-font-lock-make-header-matcher (regexp) 1267(defun message-font-lock-make-header-matcher (regexp)
1248 (let ((form 1268 (let ((form
@@ -1266,41 +1286,41 @@ starting with `not' and followed by regexps."
1266 (let ((content "[ \t]*\\(.+\\(\n[ \t].*\\)*\\)\n?")) 1286 (let ((content "[ \t]*\\(.+\\(\n[ \t].*\\)*\\)\n?"))
1267 `((,(message-font-lock-make-header-matcher 1287 `((,(message-font-lock-make-header-matcher
1268 (concat "^\\([Tt]o:\\)" content)) 1288 (concat "^\\([Tt]o:\\)" content))
1269 (1 'message-header-name-face) 1289 (1 'message-header-name)
1270 (2 'message-header-to-face nil t)) 1290 (2 'message-header-to nil t))
1271 (,(message-font-lock-make-header-matcher 1291 (,(message-font-lock-make-header-matcher
1272 (concat "^\\(^[GBF]?[Cc][Cc]:\\|^[Rr]eply-[Tt]o:\\)" content)) 1292 (concat "^\\(^[GBF]?[Cc][Cc]:\\|^[Rr]eply-[Tt]o:\\)" content))
1273 (1 'message-header-name-face) 1293 (1 'message-header-name)
1274 (2 'message-header-cc-face nil t)) 1294 (2 'message-header-cc nil t))
1275 (,(message-font-lock-make-header-matcher 1295 (,(message-font-lock-make-header-matcher
1276 (concat "^\\([Ss]ubject:\\)" content)) 1296 (concat "^\\([Ss]ubject:\\)" content))
1277 (1 'message-header-name-face) 1297 (1 'message-header-name)
1278 (2 'message-header-subject-face nil t)) 1298 (2 'message-header-subject nil t))
1279 (,(message-font-lock-make-header-matcher 1299 (,(message-font-lock-make-header-matcher
1280 (concat "^\\([Nn]ewsgroups:\\|Followup-[Tt]o:\\)" content)) 1300 (concat "^\\([Nn]ewsgroups:\\|Followup-[Tt]o:\\)" content))
1281 (1 'message-header-name-face) 1301 (1 'message-header-name)
1282 (2 'message-header-newsgroups-face nil t)) 1302 (2 'message-header-newsgroups nil t))
1283 (,(message-font-lock-make-header-matcher 1303 (,(message-font-lock-make-header-matcher
1284 (concat "^\\([A-Z][^: \n\t]+:\\)" content)) 1304 (concat "^\\([A-Z][^: \n\t]+:\\)" content))
1285 (1 'message-header-name-face) 1305 (1 'message-header-name)
1286 (2 'message-header-other-face nil t)) 1306 (2 'message-header-other nil t))
1287 (,(message-font-lock-make-header-matcher 1307 (,(message-font-lock-make-header-matcher
1288 (concat "^\\(X-[A-Za-z0-9-]+:\\|In-Reply-To:\\)" content)) 1308 (concat "^\\(X-[A-Za-z0-9-]+:\\|In-Reply-To:\\)" content))
1289 (1 'message-header-name-face) 1309 (1 'message-header-name)
1290 (2 'message-header-name-face)) 1310 (2 'message-header-name))
1291 ,@(if (and mail-header-separator 1311 ,@(if (and mail-header-separator
1292 (not (equal mail-header-separator ""))) 1312 (not (equal mail-header-separator "")))
1293 `((,(concat "^\\(" (regexp-quote mail-header-separator) "\\)$") 1313 `((,(concat "^\\(" (regexp-quote mail-header-separator) "\\)$")
1294 1 'message-separator-face)) 1314 1 'message-separator))
1295 nil) 1315 nil)
1296 ((lambda (limit) 1316 ((lambda (limit)
1297 (re-search-forward (concat "^\\(" 1317 (re-search-forward (concat "^\\("
1298 message-cite-prefix-regexp 1318 message-cite-prefix-regexp
1299 "\\).*") 1319 "\\).*")
1300 limit t)) 1320 limit t))
1301 (0 'message-cited-text-face)) 1321 (0 'message-cited-text))
1302 ("<#/?\\(multipart\\|part\\|external\\|mml\\|secure\\)[^>]*>" 1322 ("<#/?\\(multipart\\|part\\|external\\|mml\\|secure\\)[^>]*>"
1303 (0 'message-mml-face)))) 1323 (0 'message-mml))))
1304 "Additional expressions to highlight in Message mode.") 1324 "Additional expressions to highlight in Message mode.")
1305 1325
1306 1326
diff --git a/lisp/gnus/mm-extern.el b/lisp/gnus/mm-extern.el
index 994dd1d9c02..f6ec883de94 100644
--- a/lisp/gnus/mm-extern.el
+++ b/lisp/gnus/mm-extern.el
@@ -52,7 +52,7 @@
52 (mm-disable-multibyte) 52 (mm-disable-multibyte)
53 (if (file-exists-p name) 53 (if (file-exists-p name)
54 (mm-insert-file-contents name nil nil nil nil t) 54 (mm-insert-file-contents name nil nil nil nil t)
55 (error (format "File %s is gone" name))))) 55 (error "File %s is gone" name))))
56 56
57(defun mm-extern-url (handle) 57(defun mm-extern-url (handle)
58 (erase-buffer) 58 (erase-buffer)
@@ -124,7 +124,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing."
124 handles) 124 handles)
125 (unless (mm-handle-cache handle) 125 (unless (mm-handle-cache handle)
126 (unless func 126 (unless func
127 (error (format "Access type (%s) is not supported" access-type))) 127 (error "Access type (%s) is not supported" access-type))
128 (with-temp-buffer 128 (with-temp-buffer
129 (mm-insert-part handle) 129 (mm-insert-part handle)
130 (goto-char (point-max)) 130 (goto-char (point-max))
diff --git a/lisp/gnus/pop3.el b/lisp/gnus/pop3.el
index 637421c46d9..b8d827e7d9a 100644
--- a/lisp/gnus/pop3.el
+++ b/lisp/gnus/pop3.el
@@ -385,7 +385,7 @@ If NOW, use that time instead."
385 (pop3-send-command process (format "USER %s" user)) 385 (pop3-send-command process (format "USER %s" user))
386 (let ((response (pop3-read-response process t))) 386 (let ((response (pop3-read-response process t)))
387 (if (not (and response (string-match "+OK" response))) 387 (if (not (and response (string-match "+OK" response)))
388 (error (format "USER %s not valid" user))))) 388 (error "USER %s not valid" user))))
389 389
390(defun pop3-pass (process) 390(defun pop3-pass (process)
391 "Send authentication information to the server." 391 "Send authentication information to the server."
diff --git a/lisp/gnus/sieve-mode.el b/lisp/gnus/sieve-mode.el
index c4d019da6df..02bb33a3810 100644
--- a/lisp/gnus/sieve-mode.el
+++ b/lisp/gnus/sieve-mode.el
@@ -65,10 +65,10 @@
65 65
66;; Font-lock 66;; Font-lock
67 67
68(defvar sieve-control-commands-face 'sieve-control-commands-face 68(defvar sieve-control-commands-face 'sieve-control-commands
69 "Face name used for Sieve Control Commands.") 69 "Face name used for Sieve Control Commands.")
70 70
71(defface sieve-control-commands-face 71(defface sieve-control-commands
72 '((((type tty) (class color)) (:foreground "blue" :weight light)) 72 '((((type tty) (class color)) (:foreground "blue" :weight light))
73 (((class grayscale) (background light)) (:foreground "LightGray" :bold t)) 73 (((class grayscale) (background light)) (:foreground "LightGray" :bold t))
74 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t)) 74 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t))
@@ -77,22 +77,26 @@
77 (t (:bold t))) 77 (t (:bold t)))
78 "Face used for Sieve Control Commands." 78 "Face used for Sieve Control Commands."
79 :group 'sieve) 79 :group 'sieve)
80;; backward-compatibility alias
81(put 'sieve-control-commands-face 'face-alias 'sieve-control-commands)
80 82
81(defvar sieve-action-commands-face 'sieve-action-commands-face 83(defvar sieve-action-commands-face 'sieve-action-commands
82 "Face name used for Sieve Action Commands.") 84 "Face name used for Sieve Action Commands.")
83 85
84(defface sieve-action-commands-face 86(defface sieve-action-commands
85 '((((type tty) (class color)) (:foreground "blue" :weight bold)) 87 '((((type tty) (class color)) (:foreground "blue" :weight bold))
86 (((class color) (background light)) (:foreground "Blue")) 88 (((class color) (background light)) (:foreground "Blue"))
87 (((class color) (background dark)) (:foreground "LightSkyBlue")) 89 (((class color) (background dark)) (:foreground "LightSkyBlue"))
88 (t (:inverse-video t :bold t))) 90 (t (:inverse-video t :bold t)))
89 "Face used for Sieve Action Commands." 91 "Face used for Sieve Action Commands."
90 :group 'sieve) 92 :group 'sieve)
93;; backward-compatibility alias
94(put 'sieve-action-commands-face 'face-alias 'sieve-action-commands)
91 95
92(defvar sieve-test-commands-face 'sieve-test-commands-face 96(defvar sieve-test-commands-face 'sieve-test-commands
93 "Face name used for Sieve Test Commands.") 97 "Face name used for Sieve Test Commands.")
94 98
95(defface sieve-test-commands-face 99(defface sieve-test-commands
96 '((((type tty) (class color)) (:foreground "magenta")) 100 '((((type tty) (class color)) (:foreground "magenta"))
97 (((class grayscale) (background light)) 101 (((class grayscale) (background light))
98 (:foreground "LightGray" :bold t :underline t)) 102 (:foreground "LightGray" :bold t :underline t))
@@ -103,11 +107,13 @@
103 (t (:bold t :underline t))) 107 (t (:bold t :underline t)))
104 "Face used for Sieve Test Commands." 108 "Face used for Sieve Test Commands."
105 :group 'sieve) 109 :group 'sieve)
110;; backward-compatibility alias
111(put 'sieve-test-commands-face 'face-alias 'sieve-test-commands)
106 112
107(defvar sieve-tagged-arguments-face 'sieve-tagged-arguments-face 113(defvar sieve-tagged-arguments-face 'sieve-tagged-arguments
108 "Face name used for Sieve Tagged Arguments.") 114 "Face name used for Sieve Tagged Arguments.")
109 115
110(defface sieve-tagged-arguments-face 116(defface sieve-tagged-arguments
111 '((((type tty) (class color)) (:foreground "cyan" :weight bold)) 117 '((((type tty) (class color)) (:foreground "cyan" :weight bold))
112 (((class grayscale) (background light)) (:foreground "LightGray" :bold t)) 118 (((class grayscale) (background light)) (:foreground "LightGray" :bold t))
113 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t)) 119 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t))
@@ -116,6 +122,8 @@
116 (t (:bold t))) 122 (t (:bold t)))
117 "Face used for Sieve Tagged Arguments." 123 "Face used for Sieve Tagged Arguments."
118 :group 'sieve) 124 :group 'sieve)
125;; backward-compatibility alias
126(put 'sieve-tagged-arguments-face 'face-alias 'sieve-tagged-arguments)
119 127
120 128
121(defconst sieve-font-lock-keywords 129(defconst sieve-font-lock-keywords
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index 5e73c2deb2e..c1d6d4a4eb7 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -300,7 +300,7 @@ All unmarked article in such group receive the spam mark on group entry."
300 :type '(radio (const nil) regexp) 300 :type '(radio (const nil) regexp)
301 :group 'spam) 301 :group 'spam)
302 302
303(defface spam-face 303(defface spam
304 '((((class color) (type tty) (background dark)) 304 '((((class color) (type tty) (background dark))
305 (:foreground "gray80" :background "gray50")) 305 (:foreground "gray80" :background "gray50"))
306 (((class color) (type tty) (background light)) 306 (((class color) (type tty) (background light))
@@ -312,8 +312,10 @@ All unmarked article in such group receive the spam mark on group entry."
312 (t :inverse-video t)) 312 (t :inverse-video t))
313 "Face for spam-marked articles." 313 "Face for spam-marked articles."
314 :group 'spam) 314 :group 'spam)
315;; backward-compatibility alias
316(put 'spam-face 'face-alias 'spam)
315 317
316(defcustom spam-face 'spam-face 318(defcustom spam-face 'spam
317 "Face for spam-marked articles." 319 "Face for spam-marked articles."
318 :type 'face 320 :type 'face
319 :group 'spam) 321 :group 'spam)
@@ -1805,8 +1807,8 @@ REMOVE not nil, remove the ADDRESSES."
1805 "Install the spam.el hooks and do other initialization" 1807 "Install the spam.el hooks and do other initialization"
1806 (interactive) 1808 (interactive)
1807 (setq spam-install-hooks t) 1809 (setq spam-install-hooks t)
1808 ;; TODO: How do we redo this every time spam-face is customized? 1810 ;; TODO: How do we redo this every time the `spam' face is customized?
1809 (push '((eq mark gnus-spam-mark) . spam-face) 1811 (push '((eq mark gnus-spam-mark) . spam)
1810 gnus-summary-highlight) 1812 gnus-summary-highlight)
1811 ;; Add hooks for loading and saving the spam stats 1813 ;; Add hooks for loading and saving the spam stats
1812 (add-hook 'gnus-save-newsrc-hook 'spam-maybe-spam-stat-save) 1814 (add-hook 'gnus-save-newsrc-hook 'spam-maybe-spam-stat-save)
diff --git a/lisp/ido.el b/lisp/ido.el
index 2d9313bb0ea..f5941bf4ef2 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -770,6 +770,12 @@ subdirs in the alternatives."
770 "*Font used by ido for highlighting its indicators." 770 "*Font used by ido for highlighting its indicators."
771 :group 'ido) 771 :group 'ido)
772 772
773(defface ido-incomplete-regexp
774 '((t
775 (:inherit font-lock-warning-face)))
776 "Ido face for indicating incomplete regexps."
777 :group 'ido)
778
773(defcustom ido-make-file-list-hook nil 779(defcustom ido-make-file-list-hook nil
774 "*List of functions to run when the list of matching files is created. 780 "*List of functions to run when the list of matching files is created.
775Each function on the list may modify the dynamically bound variable 781Each function on the list may modify the dynamically bound variable
@@ -959,6 +965,8 @@ selected.")
959Is set by ido functions to the current minibuffer-depth, so that 965Is set by ido functions to the current minibuffer-depth, so that
960it doesn't interfere with other minibuffer usage.") 966it doesn't interfere with other minibuffer usage.")
961 967
968(defvar ido-incomplete-regexp nil
969 "Non-nil if an incomplete regexp is entered.")
962 970
963;;; Variables with dynamic bindings. 971;;; Variables with dynamic bindings.
964;;; Declared here to keep the byte compiler quiet. 972;;; Declared here to keep the byte compiler quiet.
@@ -2170,6 +2178,9 @@ If INITIAL is non-nil, it specifies the initial input string."
2170 (interactive) 2178 (interactive)
2171 (let (res) 2179 (let (res)
2172 (cond 2180 (cond
2181 (ido-incomplete-regexp
2182 ;; Do nothing
2183 )
2173 ((and (memq ido-cur-item '(file dir)) 2184 ((and (memq ido-cur-item '(file dir))
2174 (string-match "[$]" ido-text)) 2185 (string-match "[$]" ido-text))
2175 (let ((evar (substitute-in-file-name (concat ido-current-directory ido-text)))) 2186 (let ((evar (substitute-in-file-name (concat ido-current-directory ido-text))))
@@ -2394,8 +2405,9 @@ timestamp has not changed (e.g. with ftp or on Windows)."
2394(defun ido-exit-minibuffer () 2405(defun ido-exit-minibuffer ()
2395 "Exit minibuffer, but make sure we have a match if one is needed." 2406 "Exit minibuffer, but make sure we have a match if one is needed."
2396 (interactive) 2407 (interactive)
2397 (if (or (not ido-require-match) 2408 (if (and (or (not ido-require-match)
2398 (ido-existing-item-p)) 2409 (ido-existing-item-p))
2410 (not ido-incomplete-regexp))
2399 (exit-minibuffer))) 2411 (exit-minibuffer)))
2400 2412
2401(defun ido-select-text () 2413(defun ido-select-text ()
@@ -3275,22 +3287,30 @@ for first matching file."
3275 full-matches 3287 full-matches
3276 prefix-matches 3288 prefix-matches
3277 matches) 3289 matches)
3278 (mapcar 3290 (setq ido-incomplete-regexp nil)
3279 (lambda (item) 3291 (condition-case error
3280 (let ((name (ido-name item))) 3292 (mapcar
3281 (if (and (or non-prefix-dot 3293 (lambda (item)
3282 (if (= (aref ido-text 0) ?.) 3294 (let ((name (ido-name item)))
3283 (= (aref name 0) ?.) 3295 (if (and (or non-prefix-dot
3284 (/= (aref name 0) ?.))) 3296 (if (= (aref ido-text 0) ?.)
3285 (string-match re name)) 3297 (= (aref name 0) ?.)
3286 (cond 3298 (/= (aref name 0) ?.)))
3287 ((and full-re (string-match full-re name)) 3299 (string-match re name))
3288 (setq full-matches (cons item full-matches))) 3300 (cond
3289 ((and prefix-re (string-match prefix-re name)) 3301 ((and full-re (string-match full-re name))
3290 (setq prefix-matches (cons item prefix-matches))) 3302 (setq full-matches (cons item full-matches)))
3291 (t (setq matches (cons item matches)))))) 3303 ((and prefix-re (string-match prefix-re name))
3292 t) 3304 (setq prefix-matches (cons item prefix-matches)))
3293 items) 3305 (t (setq matches (cons item matches))))))
3306 t)
3307 items)
3308 (invalid-regexp
3309 (setq ido-incomplete-regexp t
3310 ;; Consider the invalid regexp message internally as a
3311 ;; special-case single match, and handle appropriately
3312 ;; elsewhere.
3313 matches (cdr error))))
3294 (if prefix-matches 3314 (if prefix-matches
3295 (setq matches (nconc prefix-matches matches))) 3315 (setq matches (nconc prefix-matches matches)))
3296 (if full-matches 3316 (if full-matches
@@ -4048,7 +4068,9 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
4048 (setq first (format "%s" fn)) 4068 (setq first (format "%s" fn))
4049 (put-text-property 0 ln 'face 4069 (put-text-property 0 ln 'face
4050 (if (= (length comps) 1) 4070 (if (= (length comps) 1)
4051 'ido-only-match 4071 (if ido-incomplete-regexp
4072 'ido-incomplete-regexp
4073 'ido-only-match)
4052 'ido-first-match) 4074 'ido-first-match)
4053 first) 4075 first)
4054 (if ind (setq first (concat first ind))) 4076 (if ind (setq first (concat first ind)))
@@ -4063,14 +4085,22 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
4063 (ido-report-no-match 4085 (ido-report-no-match
4064 (nth 6 ido-decorations)) ;; [No match] 4086 (nth 6 ido-decorations)) ;; [No match]
4065 (t ""))) 4087 (t "")))
4066 4088 (ido-incomplete-regexp
4089 (concat " " (car comps)))
4067 ((null (cdr comps)) ;one match 4090 ((null (cdr comps)) ;one match
4068 (concat (if (> (length (ido-name (car comps))) (length name)) 4091 (concat (if (if (not ido-enable-regexp)
4069 ;; when there is one match, show the matching file name in full 4092 (= (length (ido-name (car comps))) (length name))
4070 (concat (nth 4 ido-decorations) ;; [ ... ] 4093 ;; We can't rely on the length of the input
4071 (ido-name (car comps)) 4094 ;; for regexps, so explicitly check for a
4072 (nth 5 ido-decorations)) 4095 ;; complete match
4073 "") 4096 (string-match name (ido-name (car comps)))
4097 (string-equal (match-string 0 (ido-name (car comps)))
4098 (ido-name (car comps))))
4099 ""
4100 ;; when there is one match, show the matching file name in full
4101 (concat (nth 4 ido-decorations) ;; [ ... ]
4102 (ido-name (car comps))
4103 (nth 5 ido-decorations)))
4074 (if (not ido-use-faces) (nth 7 ido-decorations)))) ;; [Matched] 4104 (if (not ido-use-faces) (nth 7 ido-decorations)))) ;; [Matched]
4075 (t ;multiple matches 4105 (t ;multiple matches
4076 (let* ((items (if (> ido-max-prospects 0) (1+ ido-max-prospects) 999)) 4106 (let* ((items (if (> ido-max-prospects 0) (1+ ido-max-prospects) 999))
diff --git a/lisp/info.el b/lisp/info.el
index b34fd013df3..20e031c1347 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -83,10 +83,10 @@ 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 '((((min-colors 88) 86 '((((min-colors 88)
87 (class color) (background light)) :foreground "blue1" :underline t) 87 (class color) (background light)) :foreground "blue1" :underline t)
88 (((class color) (background light)) :foreground "blue" :underline t) 88 (((class color) (background light)) :foreground "blue" :underline t)
89 (((min-colors 88) 89 (((min-colors 88)
90 (class color) (background dark)) :foreground "cyan1" :underline t) 90 (class color) (background dark)) :foreground "cyan1" :underline t)
91 (((class color) (background dark)) :foreground "cyan" :underline t) 91 (((class color) (background dark)) :foreground "cyan" :underline t)
92 (t :underline t)) 92 (t :underline t))
@@ -1272,7 +1272,7 @@ any double quotes or backslashes must be escaped (\\\",\\\\)."
1272;; Hide any construct of the general form ^@[^@-^_][ ... ^@[^@-^_]], 1272;; Hide any construct of the general form ^@[^@-^_][ ... ^@[^@-^_]],
1273;; including one optional trailing newline. 1273;; including one optional trailing newline.
1274(defun Info-hide-cookies-node () 1274(defun Info-hide-cookies-node ()
1275 "Hide unrecognised cookies in current node." 1275 "Hide unrecognized cookies in current node."
1276 (save-excursion 1276 (save-excursion
1277 (let ((inhibit-read-only t) 1277 (let ((inhibit-read-only t)
1278 (case-fold-search t)) 1278 (case-fold-search t))
diff --git a/lisp/language/ethio-util.el b/lisp/language/ethio-util.el
index cf893ffa48b..5b017ff2f52 100644
--- a/lisp/language/ethio-util.el
+++ b/lisp/language/ethio-util.el
@@ -141,7 +141,7 @@ variable.")
141 141
142(defvar ethio-use-three-dot-question nil 142(defvar ethio-use-three-dot-question nil
143 "*Non-nil means associate ASCII question mark with Ethiopic old style question mark (three vertically stacked dots). 143 "*Non-nil means associate ASCII question mark with Ethiopic old style question mark (three vertically stacked dots).
144If nil, associate ASCII question mark with Ethiopic stylised question 144If nil, associate ASCII question mark with Ethiopic stylized question
145mark. All SERA <--> FIDEL converters refer this variable.") 145mark. All SERA <--> FIDEL converters refer this variable.")
146 146
147(defvar ethio-quote-vowel-always nil 147(defvar ethio-quote-vowel-always nil
@@ -726,7 +726,7 @@ changing anything."
726 726
727(defun ethio-tilde-escape nil 727(defun ethio-tilde-escape nil
728 "Handle a SERA tilde escape in Ethiopic section and delete it. 728 "Handle a SERA tilde escape in Ethiopic section and delete it.
729Delete the escape even it is not recognised." 729Delete the escape even it is not recognized."
730 730
731 (let ((p (point)) command) 731 (let ((p (point)) command)
732 (skip-chars-forward "^ \t\n\\\\") 732 (skip-chars-forward "^ \t\n\\\\")
diff --git a/lisp/longlines.el b/lisp/longlines.el
index 7583e03b4b0..c6de1d2347e 100644
--- a/lisp/longlines.el
+++ b/lisp/longlines.el
@@ -60,7 +60,8 @@ with differing widths."
60 :type 'boolean) 60 :type 'boolean)
61 61
62(defcustom longlines-show-hard-newlines nil 62(defcustom longlines-show-hard-newlines nil
63 "*Non-nil means each hard newline is marked with a symbol. 63 "*Non-nil means each hard newline is marked on the screen.
64\(The variable `longlines-show-effect' controls what they look like.)
64You can also enable the display temporarily, using the command 65You can also enable the display temporarily, using the command
65`longlines-show-hard-newlines'" 66`longlines-show-hard-newlines'"
66 :group 'longlines 67 :group 'longlines
@@ -93,12 +94,12 @@ In Long Lines mode, long lines are wrapped if they extend beyond
93`fill-column'. The soft newlines used for line wrapping will not 94`fill-column'. The soft newlines used for line wrapping will not
94show up when the text is yanked or saved to disk. 95show up when the text is yanked or saved to disk.
95 96
96If `longlines-auto-wrap' is non-nil, lines are automatically 97If the variable `longlines-auto-wrap' is non-nil, lines are automatically
97wrapped whenever the buffer is changed. You can always call 98wrapped whenever the buffer is changed. You can always call
98`fill-paragraph' to fill individual paragraphs. 99`fill-paragraph' to fill individual paragraphs.
99 100
100If `longlines-show-hard-newlines' is non-nil, hard newlines will 101If the variable `longlines-show-hard-newlines' is non-nil, hard newlines
101be marked by a symbol." 102are indicated with a symbol."
102 :group 'longlines :lighter " ll" 103 :group 'longlines :lighter " ll"
103 (if longlines-mode 104 (if longlines-mode
104 ;; Turn on longlines mode 105 ;; Turn on longlines mode
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el
index 8944d4c20c0..2e163270f90 100644
--- a/lisp/ls-lisp.el
+++ b/lisp/ls-lisp.el
@@ -451,7 +451,7 @@ SWITCHES is a list of characters. Default sorting is alphabetic."
451Also, for regular files that are executable, append `*'. 451Also, for regular files that are executable, append `*'.
452The file type indicators are `/' for directories, `@' for symbolic 452The file type indicators are `/' for directories, `@' for symbolic
453links, `|' for FIFOs, `=' for sockets, and nothing for regular files. 453links, `|' for FIFOs, `=' for sockets, and nothing for regular files.
454\[But FIFOs and sockets are not recognised.] 454\[But FIFOs and sockets are not recognized.]
455FILEDATA has the form (filename . `file-attributes'). Its `cadr' is t 455FILEDATA has the form (filename . `file-attributes'). Its `cadr' is t
456for directory, string (name linked to) for symbolic link, or nil." 456for directory, string (name linked to) for symbolic link, or nil."
457 (let ((dir (cadr filedata)) (file-name (car filedata))) 457 (let ((dir (cadr filedata)) (file-name (car filedata)))
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index a6d24f58195..4084cd85cc2 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -42,6 +42,12 @@
42 :prefix "mail-" 42 :prefix "mail-"
43 :group 'mail) 43 :group 'mail)
44 44
45(defcustom mail-setup-with-from t
46 "Non-nil means insert `From:' field when setting up the message."
47 :type 'binary
48 :group 'sendmail
49 :version "22.1")
50
45;;;###autoload 51;;;###autoload
46(defcustom mail-from-style 'angles "\ 52(defcustom mail-from-style 'angles "\
47*Specifies how \"From:\" fields look. 53*Specifies how \"From:\" fields look.
@@ -416,6 +422,8 @@ actually occur.")
416 (setq mail-send-actions actions) 422 (setq mail-send-actions actions)
417 (setq mail-reply-action replybuffer) 423 (setq mail-reply-action replybuffer)
418 (goto-char (point-min)) 424 (goto-char (point-min))
425 (if mail-setup-with-from
426 (mail-insert-from-field))
419 (insert "To: ") 427 (insert "To: ")
420 (save-excursion 428 (save-excursion
421 (if to 429 (if to
@@ -884,6 +892,62 @@ instead use sendmail-coding-system to get a constant encoding
884of outgoing mails regardless of the current language environment. 892of outgoing mails regardless of the current language environment.
885See also the function `select-message-coding-system'.") 893See also the function `select-message-coding-system'.")
886 894
895(defun mail-insert-from-field ()
896 (let* ((login user-mail-address)
897 (fullname (user-full-name))
898 (quote-fullname nil))
899 (if (string-match "[^\0-\177]" fullname)
900 (setq fullname (rfc2047-encode-string fullname)
901 quote-fullname t))
902 (cond ((eq mail-from-style 'angles)
903 (insert "From: " fullname)
904 (let ((fullname-start (+ (point-min) 6))
905 (fullname-end (point-marker)))
906 (goto-char fullname-start)
907 ;; Look for a character that cannot appear unquoted
908 ;; according to RFC 822.
909 (if (or (re-search-forward "[^- !#-'*+/-9=?A-Z^-~]"
910 fullname-end 1)
911 quote-fullname)
912 (progn
913 ;; Quote fullname, escaping specials.
914 (goto-char fullname-start)
915 (insert "\"")
916 (while (re-search-forward "[\"\\]"
917 fullname-end 1)
918 (replace-match "\\\\\\&" t))
919 (insert "\""))))
920 (insert " <" login ">\n"))
921 ((eq mail-from-style 'parens)
922 (insert "From: " login " (")
923 (let ((fullname-start (point)))
924 (if quote-fullname
925 (insert "\""))
926 (insert fullname)
927 (if quote-fullname
928 (insert "\""))
929 (let ((fullname-end (point-marker)))
930 (goto-char fullname-start)
931 ;; RFC 822 says \ and nonmatching parentheses
932 ;; must be escaped in comments.
933 ;; Escape every instance of ()\ ...
934 (while (re-search-forward "[()\\]" fullname-end 1)
935 (replace-match "\\\\\\&" t))
936 ;; ... then undo escaping of matching parentheses,
937 ;; including matching nested parentheses.
938 (goto-char fullname-start)
939 (while (re-search-forward
940 "\\(\\=\\|[^\\]\\(\\\\\\\\\\)*\\)\\\\(\\(\\([^\\]\\|\\\\\\\\\\)*\\)\\\\)"
941 fullname-end 1)
942 (replace-match "\\1(\\3)" t)
943 (goto-char fullname-start))))
944 (insert ")\n"))
945 ((null mail-from-style)
946 (insert "From: " login "\n"))
947 ((eq mail-from-style 'system-default)
948 nil)
949 (t (error "Invalid value for `mail-from-style'")))))
950
887(defun sendmail-send-it () 951(defun sendmail-send-it ()
888 "Send the current mail buffer using the Sendmail package. 952 "Send the current mail buffer using the Sendmail package.
889This is a suitable value for `send-mail-function'. It sends using the 953This is a suitable value for `send-mail-function'. It sends using the
@@ -980,60 +1044,7 @@ external program defined by `sendmail-program'."
980 ;; they put one in themselves. 1044 ;; they put one in themselves.
981 (goto-char (point-min)) 1045 (goto-char (point-min))
982 (if (not (re-search-forward "^From:" delimline t)) 1046 (if (not (re-search-forward "^From:" delimline t))
983 (let* ((login user-mail-address) 1047 (mail-insert-from-field))
984 (fullname (user-full-name))
985 (quote-fullname nil))
986 (if (string-match "[^\0-\177]" fullname)
987 (setq fullname (rfc2047-encode-string fullname)
988 quote-fullname t))
989 (cond ((eq mail-from-style 'angles)
990 (insert "From: " fullname)
991 (let ((fullname-start (+ (point-min) 6))
992 (fullname-end (point-marker)))
993 (goto-char fullname-start)
994 ;; Look for a character that cannot appear unquoted
995 ;; according to RFC 822.
996 (if (or (re-search-forward "[^- !#-'*+/-9=?A-Z^-~]"
997 fullname-end 1)
998 quote-fullname)
999 (progn
1000 ;; Quote fullname, escaping specials.
1001 (goto-char fullname-start)
1002 (insert "\"")
1003 (while (re-search-forward "[\"\\]"
1004 fullname-end 1)
1005 (replace-match "\\\\\\&" t))
1006 (insert "\""))))
1007 (insert " <" login ">\n"))
1008 ((eq mail-from-style 'parens)
1009 (insert "From: " login " (")
1010 (let ((fullname-start (point)))
1011 (if quote-fullname
1012 (insert "\""))
1013 (insert fullname)
1014 (if quote-fullname
1015 (insert "\""))
1016 (let ((fullname-end (point-marker)))
1017 (goto-char fullname-start)
1018 ;; RFC 822 says \ and nonmatching parentheses
1019 ;; must be escaped in comments.
1020 ;; Escape every instance of ()\ ...
1021 (while (re-search-forward "[()\\]" fullname-end 1)
1022 (replace-match "\\\\\\&" t))
1023 ;; ... then undo escaping of matching parentheses,
1024 ;; including matching nested parentheses.
1025 (goto-char fullname-start)
1026 (while (re-search-forward
1027 "\\(\\=\\|[^\\]\\(\\\\\\\\\\)*\\)\\\\(\\(\\([^\\]\\|\\\\\\\\\\)*\\)\\\\)"
1028 fullname-end 1)
1029 (replace-match "\\1(\\3)" t)
1030 (goto-char fullname-start))))
1031 (insert ")\n"))
1032 ((null mail-from-style)
1033 (insert "From: " login "\n"))
1034 ((eq mail-from-style 'system-default)
1035 nil)
1036 (t (error "Invalid value for `mail-from-style'")))))
1037 ;; Possibly add a MIME header for the current coding system 1048 ;; Possibly add a MIME header for the current coding system
1038 (let (charset) 1049 (let (charset)
1039 (goto-char (point-min)) 1050 (goto-char (point-min))
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index a4552d8f771..f8aaf2de77c 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -1099,7 +1099,7 @@ by \"Save Options\" in Custom buffers.")
1099 :help "Move snake around avoiding collisions")) 1099 :help "Move snake around avoiding collisions"))
1100(define-key menu-bar-games-menu [mult] 1100(define-key menu-bar-games-menu [mult]
1101 '(menu-item "Multiplication Puzzle" mpuz 1101 '(menu-item "Multiplication Puzzle" mpuz
1102 :help "Excercise brain with multiplication")) 1102 :help "Exercise brain with multiplication"))
1103(define-key menu-bar-games-menu [life] 1103(define-key menu-bar-games-menu [life]
1104 '(menu-item "Life" life 1104 '(menu-item "Life" life
1105 :help "Watch how John Conway's cellular automaton evolves")) 1105 :help "Watch how John Conway's cellular automaton evolves"))
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index f37202a159d..91d9e057263 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,65 @@
12005-06-17 Lute Kamstra <lute@gnu.org>
2
3 * mh-customize.el (mh-folder-body-face, mh-folder-cur-msg-face)
4 (mh-folder-cur-msg-number-face): New backward-compatibility
5 aliases for renamed faces.
6
72005-06-17 Miles Bader <miles@gnu.org>
8
9 * mh-customize.el (mh-folder-body, mh-folder-cur-msg)
10 (mh-folder-cur-msg-number, mh-folder-date, mh-folder-followup)
11 (mh-folder-msg-number, mh-folder-refiled, mh-folder-subject)
12 (mh-folder-tick, mh-folder-to, mh-index-folder)
13 (mh-letter-header-field, mh-show-cc, mh-show-date)
14 (mh-show-header, mh-show-pgg-good, mh-show-pgg-unknown)
15 (mh-show-pgg-bad, mh-show-signature, mh-show-to, mh-show-from)
16 (mh-show-xface, mh-speedbar-folder, mh-speedbar-selected-folder)
17 (mh-speedbar-folder-with-unseen-messages)
18 (mh-speedbar-selected-folder-with-unseen-messages)
19 (mh-folder-msg-number, mh-folder-subject, mh-folder-followup)
20 (mh-folder-subject): Remove "-face" suffix from face names.
21 (mh-folder-body, mh-folder-cur-msg, mh-folder-cur-msg-number)
22 (mh-folder-date-face, mh-folder-followup-face)
23 (mh-folder-msg-number-face, mh-folder-refiled-face)
24 (mh-folder-subject-face, mh-folder-tick-face, mh-folder-to-face)
25 (mh-index-folder-face, mh-letter-header-field-face)
26 (mh-show-cc-face, mh-show-date-face, mh-show-header-face)
27 (mh-show-pgg-good-face, mh-show-pgg-unknown-face)
28 (mh-show-pgg-bad-face, mh-show-signature-face, mh-show-to-face)
29 (mh-show-from-face, mh-show-xface-face, mh-speedbar-folder-face)
30 (mh-speedbar-selected-folder-face)
31 (mh-speedbar-folder-with-unseen-messages-face)
32 (mh-speedbar-selected-folder-with-unseen-messages-face):
33 New backward-compatibility aliases for renamed faces.
34 (mh-folder-body-face, mh-folder-cur-msg-face)
35 (mh-folder-cur-msg-number-face, mh-folder-date-face)
36 (mh-folder-followup-face, mh-folder-msg-number-face)
37 (mh-folder-deleted-face, mh-folder-refiled-face)
38 (mh-folder-subject-face, mh-folder-address-face)
39 (mh-folder-scan-format-face, mh-folder-to-face)
40 (mh-index-folder-face, mh-show-cc-face, mh-show-date-face)
41 (mh-show-header-face, mh-show-pgg-good-face)
42 (mh-show-pgg-unknown-face, mh-show-pgg-bad-face)
43 (mh-show-to-face, mh-show-from-face, mh-show-subject-face)
44 (mh-speedbar-folder-with-unseen-messages)
45 (mh-speedbar-selected-folder-with-unseen-messages):
46 Use renamed MH-E faces.
47
48 * mh-utils.el (mh-letter-font-lock-keywords)
49 (mh-face-display-function): Use renamed MH-E faces.
50 * mh-speed.el (mh-folder-speedbar-buttons)
51 (mh-speed-update-current-folder, mh-speed-normal-face)
52 (mh-speed-bold-face, mh-speed-add-buttons)
53 (mh-speed-invalidate-map): Likewise.
54 * mh-mime.el (mh-signature-highlight): Likewise.
55
562005-06-16 Juanma Barranquero <lekktu@gmail.com>
57
58 * mh-comp.el (mh-send-sub):
59 * mh-identity.el (mh-identity-field-handler):
60 * mh-mime.el (mh-secure-message):
61 Don't use `format' on `error' arguments.
62
12005-06-14 Juanma Barranquero <lekktu@gmail.com> 632005-06-14 Juanma Barranquero <lekktu@gmail.com>
2 64
3 * mh-mime.el (mh-secure-message): Follow error conventions. 65 * mh-mime.el (mh-secure-message): Follow error conventions.
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el
index 82d0f5b7fd7..a466c4af7ba 100644
--- a/lisp/mh-e/mh-comp.el
+++ b/lisp/mh-e/mh-comp.el
@@ -623,8 +623,8 @@ CONFIG is the window configuration before sending mail."
623 ))) 623 )))
624 components) 624 components)
625 (t 625 (t
626 (error (format "Can't find components file \"%s\"" 626 (error "Can't find components file \"%s\""
627 components))))) 627 components))))
628 nil))) 628 nil)))
629 (mh-insert-fields "To:" to "Subject:" subject "Cc:" cc) 629 (mh-insert-fields "To:" to "Subject:" subject "Cc:" cc)
630 (goto-char (point-max)) 630 (goto-char (point-max))
diff --git a/lisp/mh-e/mh-customize.el b/lisp/mh-e/mh-customize.el
index 54141164391..5c13e8d93e6 100644
--- a/lisp/mh-e/mh-customize.el
+++ b/lisp/mh-e/mh-customize.el
@@ -2144,9 +2144,9 @@ will be removed from the unseen sequence."
2144 2144
2145;;; Faces Used in Scan Listing (:group 'mh-folder-faces) 2145;;; Faces Used in Scan Listing (:group 'mh-folder-faces)
2146 2146
2147(defvar mh-folder-body-face 'mh-folder-body-face 2147(defvar mh-folder-body-face 'mh-folder-body
2148 "Face used to highlight body text in MH-Folder buffers.") 2148 "Face used to highlight body text in MH-Folder buffers.")
2149(defface mh-folder-body-face 2149(defface mh-folder-body
2150 '((((type tty) (class color)) (:foreground "green")) 2150 '((((type tty) (class color)) (:foreground "green"))
2151 (((class grayscale) (background light)) (:foreground "DimGray" :italic t)) 2151 (((class grayscale) (background light)) (:foreground "DimGray" :italic t))
2152 (((class grayscale) (background dark)) (:foreground "LightGray" :italic t)) 2152 (((class grayscale) (background dark)) (:foreground "LightGray" :italic t))
@@ -2155,10 +2155,12 @@ will be removed from the unseen sequence."
2155 (t (:italic t))) 2155 (t (:italic t)))
2156 "Face used to highlight body text in MH-Folder buffers." 2156 "Face used to highlight body text in MH-Folder buffers."
2157 :group 'mh-folder-faces) 2157 :group 'mh-folder-faces)
2158;; backward-compatibility alias
2159(put 'mh-folder-body-face 'face-alias 'mh-folder-body)
2158 2160
2159(defvar mh-folder-cur-msg-face 'mh-folder-cur-msg-face 2161(defvar mh-folder-cur-msg-face 'mh-folder-cur-msg
2160 "Face used for the current message line in MH-Folder buffers.") 2162 "Face used for the current message line in MH-Folder buffers.")
2161(defface mh-folder-cur-msg-face 2163(defface mh-folder-cur-msg
2162 '((((type tty pc) (class color)) 2164 '((((type tty pc) (class color))
2163 (:background "LightGreen")) 2165 (:background "LightGreen"))
2164 (((class color) (background light)) 2166 (((class color) (background light))
@@ -2170,10 +2172,12 @@ will be removed from the unseen sequence."
2170 (t (:underline t))) 2172 (t (:underline t)))
2171 "Face used for the current message line in MH-Folder buffers." 2173 "Face used for the current message line in MH-Folder buffers."
2172 :group 'mh-folder-faces) 2174 :group 'mh-folder-faces)
2175;; backward-compatibility alias
2176(put 'mh-folder-cur-msg-face 'face-alias 'mh-folder-cur-msg)
2173 2177
2174(defvar mh-folder-cur-msg-number-face 'mh-folder-cur-msg-number-face 2178(defvar mh-folder-cur-msg-number-face 'mh-folder-cur-msg-number
2175 "Face used to highlight the current message in MH-Folder buffers.") 2179 "Face used to highlight the current message in MH-Folder buffers.")
2176(defface mh-folder-cur-msg-number-face 2180(defface mh-folder-cur-msg-number
2177 '((((type tty) (class color)) (:foreground "cyan" :weight bold)) 2181 '((((type tty) (class color)) (:foreground "cyan" :weight bold))
2178 (((class grayscale) (background light)) (:foreground "LightGray" :bold t)) 2182 (((class grayscale) (background light)) (:foreground "LightGray" :bold t))
2179 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t)) 2183 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t))
@@ -2182,10 +2186,12 @@ will be removed from the unseen sequence."
2182 (t (:bold t))) 2186 (t (:bold t)))
2183 "Face used to highlight the current message in MH-Folder buffers." 2187 "Face used to highlight the current message in MH-Folder buffers."
2184 :group 'mh-folder-faces) 2188 :group 'mh-folder-faces)
2189;; backward-compatibility alias
2190(put 'mh-folder-cur-msg-number-face 'face-alias 'mh-folder-cur-msg-number)
2185 2191
2186(defvar mh-folder-date-face 'mh-folder-date-face 2192(defvar mh-folder-date-face 'mh-folder-date
2187 "Face used to highlight the date in MH-Folder buffers.") 2193 "Face used to highlight the date in MH-Folder buffers.")
2188(defface mh-folder-date-face 2194(defface mh-folder-date
2189 '((((class color) (background light)) 2195 '((((class color) (background light))
2190 (:foreground "snow4")) 2196 (:foreground "snow4"))
2191 (((class color) (background dark)) 2197 (((class color) (background dark))
@@ -2194,10 +2200,12 @@ will be removed from the unseen sequence."
2194 (:bold t))) 2200 (:bold t)))
2195 "Face used to highlight the date in MH-Folder buffers." 2201 "Face used to highlight the date in MH-Folder buffers."
2196 :group 'mh-folder-faces) 2202 :group 'mh-folder-faces)
2203;; backward-compatibility alias
2204(put 'mh-folder-date-face 'face-alias 'mh-folder-date)
2197 2205
2198(defvar mh-folder-followup-face 'mh-folder-followup-face 2206(defvar mh-folder-followup-face 'mh-folder-followup
2199 "Face used to highlight Re: subject text in MH-Folder buffers.") 2207 "Face used to highlight Re: subject text in MH-Folder buffers.")
2200(defface mh-folder-followup-face 2208(defface mh-folder-followup
2201 '((((class color) (background light)) 2209 '((((class color) (background light))
2202 (:foreground "blue3")) 2210 (:foreground "blue3"))
2203 (((class color) (background dark)) 2211 (((class color) (background dark))
@@ -2206,10 +2214,12 @@ will be removed from the unseen sequence."
2206 (:bold t))) 2214 (:bold t)))
2207 "Face used to highlight Re: subject text in MH-Folder buffers." 2215 "Face used to highlight Re: subject text in MH-Folder buffers."
2208 :group 'mh-folder-faces) 2216 :group 'mh-folder-faces)
2217;; backward-compatibility alias
2218(put 'mh-folder-followup-face 'face-alias 'mh-folder-followup)
2209 2219
2210(defvar mh-folder-msg-number-face 'mh-folder-msg-number-face 2220(defvar mh-folder-msg-number-face 'mh-folder-msg-number
2211 "Face used to highlight the message number in MH-Folder buffers.") 2221 "Face used to highlight the message number in MH-Folder buffers.")
2212(defface mh-folder-msg-number-face 2222(defface mh-folder-msg-number
2213 '((((class color) (background light)) 2223 '((((class color) (background light))
2214 (:foreground "snow4")) 2224 (:foreground "snow4"))
2215 (((class color) (background dark)) 2225 (((class color) (background dark))
@@ -2218,14 +2228,16 @@ will be removed from the unseen sequence."
2218 (:bold t))) 2228 (:bold t)))
2219 "Face used to highlight the message number in MH-Folder buffers." 2229 "Face used to highlight the message number in MH-Folder buffers."
2220 :group 'mh-folder-faces) 2230 :group 'mh-folder-faces)
2231;; backward-compatibility alias
2232(put 'mh-folder-msg-number-face 'face-alias 'mh-folder-msg-number)
2221 2233
2222(defvar mh-folder-deleted-face 'mh-folder-deleted-face 2234(defvar mh-folder-deleted-face 'mh-folder-deleted
2223 "Face used to highlight deleted messages in MH-Folder buffers.") 2235 "Face used to highlight deleted messages in MH-Folder buffers.")
2224(copy-face 'mh-folder-msg-number-face 'mh-folder-deleted-face) 2236(copy-face 'mh-folder-msg-number 'mh-folder-deleted)
2225 2237
2226(defvar mh-folder-refiled-face 'mh-folder-refiled-face 2238(defvar mh-folder-refiled-face 'mh-folder-refiled
2227 "Face used to highlight refiled messages in MH-Folder buffers.") 2239 "Face used to highlight refiled messages in MH-Folder buffers.")
2228(defface mh-folder-refiled-face 2240(defface mh-folder-refiled
2229 '((((type tty) (class color)) (:foreground "yellow" :weight light)) 2241 '((((type tty) (class color)) (:foreground "yellow" :weight light))
2230 (((class grayscale) (background light)) 2242 (((class grayscale) (background light))
2231 (:foreground "Gray90" :bold t :italic t)) 2243 (:foreground "Gray90" :bold t :italic t))
@@ -2236,12 +2248,14 @@ will be removed from the unseen sequence."
2236 (t (:bold t :italic t))) 2248 (t (:bold t :italic t)))
2237 "Face used to highlight refiled messages in MH-Folder buffers." 2249 "Face used to highlight refiled messages in MH-Folder buffers."
2238 :group 'mh-folder-faces) 2250 :group 'mh-folder-faces)
2251;; backward-compatibility alias
2252(put 'mh-folder-refiled-face 'face-alias 'mh-folder-refiled)
2239 2253
2240(defvar mh-folder-subject-face 'mh-folder-subject-face 2254(defvar mh-folder-subject-face 'mh-folder-subject
2241 "Face used to highlight subject text in MH-Folder buffers.") 2255 "Face used to highlight subject text in MH-Folder buffers.")
2242(if (boundp 'facemenu-unlisted-faces) 2256(if (boundp 'facemenu-unlisted-faces)
2243 (add-to-list 'facemenu-unlisted-faces "^mh-folder")) 2257 (add-to-list 'facemenu-unlisted-faces "^mh-folder"))
2244(defface mh-folder-subject-face 2258(defface mh-folder-subject
2245 '((((class color) (background light)) 2259 '((((class color) (background light))
2246 (:foreground "blue4")) 2260 (:foreground "blue4"))
2247 (((class color) (background dark)) 2261 (((class color) (background dark))
@@ -2250,25 +2264,29 @@ will be removed from the unseen sequence."
2250 (:bold t))) 2264 (:bold t)))
2251 "Face used to highlight subject text in MH-Folder buffers." 2265 "Face used to highlight subject text in MH-Folder buffers."
2252 :group 'mh-folder-faces) 2266 :group 'mh-folder-faces)
2267;; backward-compatibility alias
2268(put 'mh-folder-subject-face 'face-alias 'mh-folder-subject)
2253 2269
2254(defface mh-folder-tick-face 2270(defface mh-folder-tick
2255 '((((class color) (background dark)) (:background "#dddf7e")) 2271 '((((class color) (background dark)) (:background "#dddf7e"))
2256 (((class color) (background light)) (:background "#dddf7e")) 2272 (((class color) (background light)) (:background "#dddf7e"))
2257 (t (:underline t))) 2273 (t (:underline t)))
2258 "Face used to show ticked messages." 2274 "Face used to show ticked messages."
2259 :group 'mh-folder-faces) 2275 :group 'mh-folder-faces)
2276;; backward-compatibility alias
2277(put 'mh-folder-tick-face 'face-alias 'mh-folder-tick)
2260 2278
2261(defvar mh-folder-address-face 'mh-folder-address-face 2279(defvar mh-folder-address-face 'mh-folder-address
2262 "Face used to highlight the address in MH-Folder buffers.") 2280 "Face used to highlight the address in MH-Folder buffers.")
2263(copy-face 'mh-folder-subject-face 'mh-folder-address-face) 2281(copy-face 'mh-folder-subject 'mh-folder-address)
2264 2282
2265(defvar mh-folder-scan-format-face 'mh-folder-scan-format-face 2283(defvar mh-folder-scan-format-face 'mh-folder-scan-format
2266 "Face used to highlight `mh-scan-format-regexp' matches in MH-Folder buffers.") 2284 "Face used to highlight `mh-scan-format-regexp' matches in MH-Folder buffers.")
2267(copy-face 'mh-folder-followup-face 'mh-folder-scan-format-face) 2285(copy-face 'mh-folder-followup 'mh-folder-scan-format)
2268 2286
2269(defvar mh-folder-to-face 'mh-folder-to-face 2287(defvar mh-folder-to-face 'mh-folder-to
2270 "Face used to highlight the To: string in MH-Folder buffers.") 2288 "Face used to highlight the To: string in MH-Folder buffers.")
2271(defface mh-folder-to-face 2289(defface mh-folder-to
2272 '((((type tty) (class color)) (:foreground "green")) 2290 '((((type tty) (class color)) (:foreground "green"))
2273 (((class grayscale) (background light)) (:foreground "DimGray" :italic t)) 2291 (((class grayscale) (background light)) (:foreground "DimGray" :italic t))
2274 (((class grayscale) (background dark)) (:foreground "LightGray" :italic t)) 2292 (((class grayscale) (background dark)) (:foreground "LightGray" :italic t))
@@ -2277,14 +2295,16 @@ will be removed from the unseen sequence."
2277 (t (:italic t))) 2295 (t (:italic t)))
2278 "Face used to highlight the To: string in MH-Folder buffers." 2296 "Face used to highlight the To: string in MH-Folder buffers."
2279 :group 'mh-folder-faces) 2297 :group 'mh-folder-faces)
2298;; backward-compatibility alias
2299(put 'mh-folder-to-face 'face-alias 'mh-folder-to)
2280 2300
2281 2301
2282 2302
2283;;; Faces Used in Searching (:group 'mh-index-faces) 2303;;; Faces Used in Searching (:group 'mh-index-faces)
2284 2304
2285(defvar mh-index-folder-face 'mh-index-folder-face 2305(defvar mh-index-folder-face 'mh-index-folder
2286 "Face used to highlight folders in MH-Index buffers.") 2306 "Face used to highlight folders in MH-Index buffers.")
2287(defface mh-index-folder-face 2307(defface mh-index-folder
2288 '((((class color) (background light)) 2308 '((((class color) (background light))
2289 (:foreground "dark green" :bold t)) 2309 (:foreground "dark green" :bold t))
2290 (((class color) (background dark)) 2310 (((class color) (background dark))
@@ -2293,12 +2313,14 @@ will be removed from the unseen sequence."
2293 (:bold t))) 2313 (:bold t)))
2294 "Face used to highlight folders in MH-Index buffers." 2314 "Face used to highlight folders in MH-Index buffers."
2295 :group 'mh-index-faces) 2315 :group 'mh-index-faces)
2316;; backward-compatibility alias
2317(put 'mh-index-folder-face 'face-alias 'mh-index-folder)
2296 2318
2297 2319
2298 2320
2299;;; Faces Used in Message Drafts (:group 'mh-letter-faces) 2321;;; Faces Used in Message Drafts (:group 'mh-letter-faces)
2300 2322
2301(defface mh-letter-header-field-face 2323(defface mh-letter-header-field
2302 '((((class color) (background light)) 2324 '((((class color) (background light))
2303 (:background "gray90")) 2325 (:background "gray90"))
2304 (((class color) (background dark)) 2326 (((class color) (background dark))
@@ -2306,14 +2328,16 @@ will be removed from the unseen sequence."
2306 (t (:bold t))) 2328 (t (:bold t)))
2307 "Face used to display header fields in draft buffers." 2329 "Face used to display header fields in draft buffers."
2308 :group 'mh-letter-faces) 2330 :group 'mh-letter-faces)
2331;; backward-compatibility alias
2332(put 'mh-letter-header-field-face 'face-alias 'mh-letter-header-field)
2309 2333
2310 2334
2311 2335
2312;;; Faces Used in Message Display (:group 'mh-show-faces) 2336;;; Faces Used in Message Display (:group 'mh-show-faces)
2313 2337
2314(defvar mh-show-cc-face 'mh-show-cc-face 2338(defvar mh-show-cc-face 'mh-show-cc
2315 "Face used to highlight cc: header fields.") 2339 "Face used to highlight cc: header fields.")
2316(defface mh-show-cc-face 2340(defface mh-show-cc
2317 '((((type tty) (class color)) (:foreground "yellow" :weight light)) 2341 '((((type tty) (class color)) (:foreground "yellow" :weight light))
2318 (((class grayscale) (background light)) 2342 (((class grayscale) (background light))
2319 (:foreground "Gray90" :bold t :italic t)) 2343 (:foreground "Gray90" :bold t :italic t))
@@ -2324,10 +2348,12 @@ will be removed from the unseen sequence."
2324 (t (:bold t :italic t))) 2348 (t (:bold t :italic t)))
2325 "Face used to highlight cc: header fields." 2349 "Face used to highlight cc: header fields."
2326 :group 'mh-show-faces) 2350 :group 'mh-show-faces)
2351;; backward-compatibility alias
2352(put 'mh-show-cc-face 'face-alias 'mh-show-cc)
2327 2353
2328(defvar mh-show-date-face 'mh-show-date-face 2354(defvar mh-show-date-face 'mh-show-date
2329 "Face used to highlight the Date: header field.") 2355 "Face used to highlight the Date: header field.")
2330(defface mh-show-date-face 2356(defface mh-show-date
2331 '((((type tty) (class color)) (:foreground "green")) 2357 '((((type tty) (class color)) (:foreground "green"))
2332 (((class grayscale) (background light)) (:foreground "Gray90" :bold t)) 2358 (((class grayscale) (background light)) (:foreground "Gray90" :bold t))
2333 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t)) 2359 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t))
@@ -2336,10 +2362,12 @@ will be removed from the unseen sequence."
2336 (t (:bold t :underline t))) 2362 (t (:bold t :underline t)))
2337 "Face used to highlight the Date: header field." 2363 "Face used to highlight the Date: header field."
2338 :group 'mh-show-faces) 2364 :group 'mh-show-faces)
2365;; backward-compatibility alias
2366(put 'mh-show-date-face 'face-alias 'mh-show-date)
2339 2367
2340(defvar mh-show-header-face 'mh-show-header-face 2368(defvar mh-show-header-face 'mh-show-header
2341 "Face used to deemphasize unspecified header fields.") 2369 "Face used to deemphasize unspecified header fields.")
2342(defface mh-show-header-face 2370(defface mh-show-header
2343 '((((type tty) (class color)) (:foreground "green")) 2371 '((((type tty) (class color)) (:foreground "green"))
2344 (((class grayscale) (background light)) (:foreground "DimGray" :italic t)) 2372 (((class grayscale) (background light)) (:foreground "DimGray" :italic t))
2345 (((class grayscale) (background dark)) (:foreground "LightGray" :italic t)) 2373 (((class grayscale) (background dark)) (:foreground "LightGray" :italic t))
@@ -2348,40 +2376,50 @@ will be removed from the unseen sequence."
2348 (t (:italic t))) 2376 (t (:italic t)))
2349 "Face used to deemphasize unspecified header fields." 2377 "Face used to deemphasize unspecified header fields."
2350 :group 'mh-show-faces) 2378 :group 'mh-show-faces)
2379;; backward-compatibility alias
2380(put 'mh-show-header-face 'face-alias 'mh-show-header)
2351 2381
2352(defvar mh-show-pgg-good-face 'mh-show-pgg-good-face 2382(defvar mh-show-pgg-good-face 'mh-show-pgg-good
2353 "Face used to highlight a good PGG signature.") 2383 "Face used to highlight a good PGG signature.")
2354(defface mh-show-pgg-good-face 2384(defface mh-show-pgg-good
2355 '((t (:bold t :foreground "LimeGreen"))) 2385 '((t (:bold t :foreground "LimeGreen")))
2356 "Face used to highlight a good PGG signature." 2386 "Face used to highlight a good PGG signature."
2357 :group 'mh-show-faces) 2387 :group 'mh-show-faces)
2388;; backward-compatibility alias
2389(put 'mh-show-pgg-good-face 'face-alias 'mh-show-pgg-good)
2358 2390
2359(defvar mh-show-pgg-unknown-face 'mh-show-pgg-unknown-face 2391(defvar mh-show-pgg-unknown-face 'mh-show-pgg-unknown
2360 "Face used to highlight a PGG signature whose status is unknown. 2392 "Face used to highlight a PGG signature whose status is unknown.
2361This face is also used for a signature when the signer is untrusted.") 2393This face is also used for a signature when the signer is untrusted.")
2362(defface mh-show-pgg-unknown-face 2394(defface mh-show-pgg-unknown
2363 '((t (:bold t :foreground "DarkGoldenrod2"))) 2395 '((t (:bold t :foreground "DarkGoldenrod2")))
2364 "Face used to highlight a PGG signature whose status is unknown. 2396 "Face used to highlight a PGG signature whose status is unknown.
2365This face is also used for a signature when the signer is untrusted." 2397This face is also used for a signature when the signer is untrusted."
2366 :group 'mh-show-faces) 2398 :group 'mh-show-faces)
2399;; backward-compatibility alias
2400(put 'mh-show-pgg-unknown-face 'face-alias 'mh-show-pgg-unknown)
2367 2401
2368(defvar mh-show-pgg-bad-face 'mh-show-pgg-bad-face 2402(defvar mh-show-pgg-bad-face 'mh-show-pgg-bad
2369 "Face used to highlight a bad PGG signature.") 2403 "Face used to highlight a bad PGG signature.")
2370(defface mh-show-pgg-bad-face 2404(defface mh-show-pgg-bad
2371 '((t (:bold t :foreground "DeepPink1"))) 2405 '((t (:bold t :foreground "DeepPink1")))
2372 "Face used to highlight a bad PGG signature." 2406 "Face used to highlight a bad PGG signature."
2373 :group 'mh-show-faces) 2407 :group 'mh-show-faces)
2408;; backward-compatibility alias
2409(put 'mh-show-pgg-bad-face 'face-alias 'mh-show-pgg-bad)
2374 2410
2375(defface mh-show-signature-face 2411(defface mh-show-signature
2376 '((t (:italic t))) 2412 '((t (:italic t)))
2377 "Face used to highlight the message signature." 2413 "Face used to highlight the message signature."
2378 :group 'mh-show-faces) 2414 :group 'mh-show-faces)
2415;; backward-compatibility alias
2416(put 'mh-show-signature-face 'face-alias 'mh-show-signature)
2379 2417
2380(defvar mh-show-to-face 'mh-show-to-face 2418(defvar mh-show-to-face 'mh-show-to
2381 "Face used to highlight the To: header field.") 2419 "Face used to highlight the To: header field.")
2382(if (boundp 'facemenu-unlisted-faces) 2420(if (boundp 'facemenu-unlisted-faces)
2383 (add-to-list 'facemenu-unlisted-faces "^mh-show")) 2421 (add-to-list 'facemenu-unlisted-faces "^mh-show"))
2384(defface mh-show-to-face 2422(defface mh-show-to
2385 '((((class grayscale) (background light)) 2423 '((((class grayscale) (background light))
2386 (:foreground "DimGray" :underline t)) 2424 (:foreground "DimGray" :underline t))
2387 (((class grayscale) (background dark)) 2425 (((class grayscale) (background dark))
@@ -2391,10 +2429,12 @@ This face is also used for a signature when the signer is untrusted."
2391 (t (:underline t))) 2429 (t (:underline t)))
2392 "Face used to highlight the To: header field." 2430 "Face used to highlight the To: header field."
2393 :group 'mh-show-faces) 2431 :group 'mh-show-faces)
2432;; backward-compatibility alias
2433(put 'mh-show-to-face 'face-alias 'mh-show-to)
2394 2434
2395(defvar mh-show-from-face 'mh-show-from-face 2435(defvar mh-show-from-face 'mh-show-from
2396 "Face used to highlight the From: header field.") 2436 "Face used to highlight the From: header field.")
2397(defface mh-show-from-face 2437(defface mh-show-from
2398 '((((class color) (background light)) 2438 '((((class color) (background light))
2399 (:foreground "red3")) 2439 (:foreground "red3"))
2400 (((class color) (background dark)) 2440 (((class color) (background dark))
@@ -2403,30 +2443,36 @@ This face is also used for a signature when the signer is untrusted."
2403 (:bold t))) 2443 (:bold t)))
2404 "Face used to highlight the From: header field." 2444 "Face used to highlight the From: header field."
2405 :group 'mh-show-faces) 2445 :group 'mh-show-faces)
2446;; backward-compatibility alias
2447(put 'mh-show-from-face 'face-alias 'mh-show-from)
2406 2448
2407(defface mh-show-xface-face 2449(defface mh-show-xface
2408 '((t (:foreground "black" :background "white"))) 2450 '((t (:foreground "black" :background "white")))
2409 "Face used to display the X-Face image. 2451 "Face used to display the X-Face image.
2410The background and foreground is used in the image." 2452The background and foreground is used in the image."
2411 :group 'mh-show-faces) 2453 :group 'mh-show-faces)
2454;; backward-compatibility alias
2455(put 'mh-show-xface-face 'face-alias 'mh-show-xface)
2412 2456
2413(defvar mh-show-subject-face 'mh-show-subject-face 2457(defvar mh-show-subject-face 'mh-show-subject
2414 "Face used to highlight the Subject: header field.") 2458 "Face used to highlight the Subject: header field.")
2415(copy-face 'mh-folder-subject-face 'mh-show-subject-face) 2459(copy-face 'mh-folder-subject 'mh-show-subject)
2416 2460
2417 2461
2418 2462
2419;;; Faces Used in Speedbar (:group 'mh-speed-faces) 2463;;; Faces Used in Speedbar (:group 'mh-speed-faces)
2420 2464
2421(defface mh-speedbar-folder-face 2465(defface mh-speedbar-folder
2422 '((((class color) (background light)) 2466 '((((class color) (background light))
2423 (:foreground "blue4")) 2467 (:foreground "blue4"))
2424 (((class color) (background dark)) 2468 (((class color) (background dark))
2425 (:foreground "light blue"))) 2469 (:foreground "light blue")))
2426 "Face used for folders in the speedbar buffer." 2470 "Face used for folders in the speedbar buffer."
2427 :group 'mh-speed-faces) 2471 :group 'mh-speed-faces)
2472;; backward-compatibility alias
2473(put 'mh-speedbar-folder-face 'face-alias 'mh-speedbar-folder)
2428 2474
2429(defface mh-speedbar-selected-folder-face 2475(defface mh-speedbar-selected-folder
2430 '((((class color) (background light)) 2476 '((((class color) (background light))
2431 (:foreground "red1" :underline t)) 2477 (:foreground "red1" :underline t))
2432 (((class color) (background dark)) 2478 (((class color) (background dark))
@@ -2434,16 +2480,22 @@ The background and foreground is used in the image."
2434 (t (:underline t))) 2480 (t (:underline t)))
2435 "Face used for the current folder." 2481 "Face used for the current folder."
2436 :group 'mh-speed-faces) 2482 :group 'mh-speed-faces)
2483;; backward-compatibility alias
2484(put 'mh-speedbar-selected-folder-face 'face-alias 'mh-speedbar-selected-folder)
2437 2485
2438(defface mh-speedbar-folder-with-unseen-messages-face 2486(defface mh-speedbar-folder-with-unseen-messages
2439 '((t (:inherit mh-speedbar-folder-face :bold t))) 2487 '((t (:inherit mh-speedbar-folder :bold t)))
2440 "Face used for folders in the speedbar buffer which have unread messages." 2488 "Face used for folders in the speedbar buffer which have unread messages."
2441 :group 'mh-speed-faces) 2489 :group 'mh-speed-faces)
2490;; backward-compatibility alias
2491(put 'mh-speedbar-folder-with-unseen-messages-face 'face-alias 'mh-speedbar-folder-with-unseen-messages)
2442 2492
2443(defface mh-speedbar-selected-folder-with-unseen-messages-face 2493(defface mh-speedbar-selected-folder-with-unseen-messages
2444 '((t (:inherit mh-speedbar-selected-folder-face :bold t))) 2494 '((t (:inherit mh-speedbar-selected-folder :bold t)))
2445 "Face used for the current folder when it has unread messages." 2495 "Face used for the current folder when it has unread messages."
2446 :group 'mh-speed-faces) 2496 :group 'mh-speed-faces)
2497;; backward-compatibility alias
2498(put 'mh-speedbar-selected-folder-with-unseen-messages-face 'face-alias 'mh-speedbar-selected-folder-with-unseen-messages)
2447 2499
2448;;; Local Variables: 2500;;; Local Variables:
2449;;; indent-tabs-mode: nil 2501;;; indent-tabs-mode: nil
diff --git a/lisp/mh-e/mh-identity.el b/lisp/mh-e/mh-identity.el
index dc076751865..b0a1430928b 100644
--- a/lisp/mh-e/mh-identity.el
+++ b/lisp/mh-e/mh-identity.el
@@ -126,7 +126,7 @@ The field name is downcased. If the FIELD begins with the character
126header field." 126header field."
127 (or (cdr (assoc (downcase field) mh-identity-handlers)) 127 (or (cdr (assoc (downcase field) mh-identity-handlers))
128 (and (eq (aref field 0) ?:) 128 (and (eq (aref field 0) ?:)
129 (error (format "Field %s - unknown mh-identity-handler" field))) 129 (error "Field %s - unknown mh-identity-handler" field))
130 (cdr (assoc ":default" mh-identity-handlers)) 130 (cdr (assoc ":default" mh-identity-handlers))
131 'mh-identity-handler-default)) 131 'mh-identity-handler-default))
132 132
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el
index 9bc8f7d74a9..e130d57a88c 100644
--- a/lisp/mh-e/mh-mime.el
+++ b/lisp/mh-e/mh-mime.el
@@ -1,7 +1,7 @@
1;;; mh-mime.el --- MH-E support for composing MIME messages 1;;; mh-mime.el --- MH-E support for composing MIME messages
2 2
3;; Copyright (C) 1993, 1995, 3;; Copyright (C) 1993, 1995,
4;; 2001, 2002, 2003, 2004 Free Software Foundation, Inc. 4;; 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
5 5
6;; Author: Bill Wohler <wohler@newt.com> 6;; Author: Bill Wohler <wohler@newt.com>
7;; Maintainer: Bill Wohler <wohler@newt.com> 7;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -597,9 +597,9 @@ IDENTITY is optionally the default-user-id to use."
597 (let ((valid-methods (list "pgpmime" "pgp" "smime")) 597 (let ((valid-methods (list "pgpmime" "pgp" "smime"))
598 (valid-modes (list "sign" "encrypt" "signencrypt" "none"))) 598 (valid-modes (list "sign" "encrypt" "signencrypt" "none")))
599 (if (not (member method valid-methods)) 599 (if (not (member method valid-methods))
600 (error (format "Sorry. METHOD \"%s\" is invalid" method))) 600 (error "Sorry. METHOD \"%s\" is invalid" method))
601 (if (not (member mode valid-modes)) 601 (if (not (member mode valid-modes))
602 (error (format "Sorry. MODE \"%s\" is invalid" mode))) 602 (error "Sorry. MODE \"%s\" is invalid" mode))
603 (mml-unsecure-message) 603 (mml-unsecure-message)
604 (if (not (string= mode "none")) 604 (if (not (string= mode "none"))
605 (save-excursion 605 (save-excursion
@@ -1059,11 +1059,11 @@ to highlight the signature in a MIME part."
1059 (when (re-search-backward regexp nil t) 1059 (when (re-search-backward regexp nil t)
1060 (mh-do-in-gnu-emacs 1060 (mh-do-in-gnu-emacs
1061 (let ((ov (make-overlay (point) (point-max)))) 1061 (let ((ov (make-overlay (point) (point-max))))
1062 (overlay-put ov 'face 'mh-show-signature-face) 1062 (overlay-put ov 'face 'mh-show-signature)
1063 (overlay-put ov 'evaporate t))) 1063 (overlay-put ov 'evaporate t)))
1064 (mh-do-in-xemacs 1064 (mh-do-in-xemacs
1065 (set-extent-property (make-extent (point) (point-max)) 1065 (set-extent-property (make-extent (point) (point-max))
1066 'face 'mh-show-signature-face)))))) 1066 'face 'mh-show-signature))))))
1067 1067
1068(mh-do-in-xemacs 1068(mh-do-in-xemacs
1069 (defvar dots) 1069 (defvar dots)
diff --git a/lisp/mh-e/mh-speed.el b/lisp/mh-e/mh-speed.el
index 2617a941de1..87349277cc0 100644
--- a/lisp/mh-e/mh-speed.el
+++ b/lisp/mh-e/mh-speed.el
@@ -1,6 +1,6 @@
1;;; mh-speed.el --- Speedbar interface for MH-E. 1;;; mh-speed.el --- Speedbar interface for MH-E.
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: Satyaki Das <satyaki@theforce.stanford.edu> 5;; Author: Satyaki Das <satyaki@theforce.stanford.edu>
6;; Maintainer: Bill Wohler <wohler@newt.com> 6;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -67,7 +67,7 @@ BUFFER is the MH-E buffer for which the speedbar buffer is to be created."
67 (erase-buffer) 67 (erase-buffer)
68 (clrhash mh-speed-folder-map) 68 (clrhash mh-speed-folder-map)
69 (speedbar-make-tag-line 'bracket ?+ 'mh-speed-toggle nil " " 'ignore nil 69 (speedbar-make-tag-line 'bracket ?+ 'mh-speed-toggle nil " " 'ignore nil
70 'mh-speedbar-folder-face 0) 70 'mh-speedbar-folder 0)
71 (forward-line -1) 71 (forward-line -1)
72 (setf (gethash nil mh-speed-folder-map) 72 (setf (gethash nil mh-speed-folder-map)
73 (set-marker (or (gethash nil mh-speed-folder-map) (make-marker)) 73 (set-marker (or (gethash nil mh-speed-folder-map) (make-marker))
@@ -149,12 +149,11 @@ The update is always carried out if FORCE is non-nil."
149 (set-buffer speedbar-buffer) 149 (set-buffer speedbar-buffer)
150 150
151 ;; Remove highlight from previous match... 151 ;; Remove highlight from previous match...
152 (mh-speed-highlight mh-speed-last-selected-folder 152 (mh-speed-highlight mh-speed-last-selected-folder 'mh-speedbar-folder)
153 'mh-speedbar-folder-face)
154 153
155 ;; If we found a match highlight it... 154 ;; If we found a match highlight it...
156 (when (mh-speed-goto-folder newcf) 155 (when (mh-speed-goto-folder newcf)
157 (mh-speed-highlight newcf 'mh-speedbar-selected-folder-face)) 156 (mh-speed-highlight newcf 'mh-speedbar-selected-folder))
158 157
159 (setq mh-speed-last-selected-folder newcf) 158 (setq mh-speed-last-selected-folder newcf)
160 (speedbar-position-cursor-on-line) 159 (speedbar-position-cursor-on-line)
@@ -166,18 +165,18 @@ The update is always carried out if FORCE is non-nil."
166 165
167(defun mh-speed-normal-face (face) 166(defun mh-speed-normal-face (face)
168 "Return normal face for given FACE." 167 "Return normal face for given FACE."
169 (cond ((eq face 'mh-speedbar-folder-with-unseen-messages-face) 168 (cond ((eq face 'mh-speedbar-folder-with-unseen-messages)
170 'mh-speedbar-folder-face) 169 'mh-speedbar-folder)
171 ((eq face 'mh-speedbar-selected-folder-with-unseen-messages-face) 170 ((eq face 'mh-speedbar-selected-folder-with-unseen-messages)
172 'mh-speedbar-selected-folder-face) 171 'mh-speedbar-selected-folder)
173 (t face))) 172 (t face)))
174 173
175(defun mh-speed-bold-face (face) 174(defun mh-speed-bold-face (face)
176 "Return bold face for given FACE." 175 "Return bold face for given FACE."
177 (cond ((eq face 'mh-speedbar-folder-face) 176 (cond ((eq face 'mh-speedbar-folder)
178 'mh-speedbar-folder-with-unseen-messages-face) 177 'mh-speedbar-folder-with-unseen-messages)
179 ((eq face 'mh-speedbar-selected-folder-face) 178 ((eq face 'mh-speedbar-selected-folder)
180 'mh-speedbar-selected-folder-with-unseen-messages-face) 179 'mh-speedbar-selected-folder-with-unseen-messages)
181 (t face))) 180 (t face)))
182 181
183(defun mh-speed-highlight (folder face) 182(defun mh-speed-highlight (folder face)
@@ -272,8 +271,8 @@ Do the right thing for the different kinds of buffers that MH-E uses."
272 "")) 271 ""))
273 'mh-speed-view nil 272 'mh-speed-view nil
274 (if (and counts (> (car counts) 0)) 273 (if (and counts (> (car counts) 0))
275 'mh-speedbar-folder-with-unseen-messages-face 274 'mh-speedbar-folder-with-unseen-messages
276 'mh-speedbar-folder-face) 275 'mh-speedbar-folder)
277 level) 276 level)
278 (save-excursion 277 (save-excursion
279 (forward-line -1) 278 (forward-line -1)
@@ -496,8 +495,7 @@ next."
496 (add-text-properties 495 (add-text-properties
497 (line-beginning-position) (1+ (line-beginning-position)) 496 (line-beginning-position) (1+ (line-beginning-position))
498 `(mh-children-p ,(equal parent-change ?+))))) 497 `(mh-children-p ,(equal parent-change ?+)))))
499 (mh-speed-highlight mh-speed-last-selected-folder 498 (mh-speed-highlight mh-speed-last-selected-folder 'mh-speedbar-folder)
500 'mh-speedbar-folder-face)
501 (setq mh-speed-last-selected-folder nil) 499 (setq mh-speed-last-selected-folder nil)
502 (setq mh-speed-refresh-flag t))) 500 (setq mh-speed-refresh-flag t)))
503 (when (equal folder "") 501 (when (equal folder "")
diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el
index d371087cc6d..da0da053119 100644
--- a/lisp/mh-e/mh-utils.el
+++ b/lisp/mh-e/mh-utils.el
@@ -1,7 +1,7 @@
1;;; mh-utils.el --- MH-E code needed for both sending and reading 1;;; mh-utils.el --- MH-E code needed for both sending and reading
2 2
3;; Copyright (C) 1993, 1995, 1997, 3;; Copyright (C) 1993, 1995, 1997,
4;; 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. 4;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
5 5
6;; Author: Bill Wohler <wohler@newt.com> 6;; Author: Bill Wohler <wohler@newt.com>
7;; Maintainer: Bill Wohler <wohler@newt.com> 7;; Maintainer: Bill Wohler <wohler@newt.com>
@@ -406,7 +406,7 @@ Argument LIMIT limits search."
406 406
407(defvar mh-letter-font-lock-keywords 407(defvar mh-letter-font-lock-keywords
408 `(,@mh-show-font-lock-keywords-with-cite 408 `(,@mh-show-font-lock-keywords-with-cite
409 (mh-font-lock-field-data (1 'mh-letter-header-field-face prepend t)))) 409 (mh-font-lock-field-data (1 'mh-letter-header-field prepend t))))
410 410
411(defun mh-show-font-lock-fontify-region (beg end loudly) 411(defun mh-show-font-lock-fontify-region (beg end loudly)
412 "Limit font-lock in `mh-show-mode' to the header. 412 "Limit font-lock in `mh-show-mode' to the header.
@@ -1218,8 +1218,8 @@ is used."
1218 (mh-funcall-if-exists 1218 (mh-funcall-if-exists
1219 insert-image (create-image 1219 insert-image (create-image
1220 raw type t 1220 raw type t
1221 :foreground (face-foreground 'mh-show-xface-face) 1221 :foreground (face-foreground 'mh-show-xface)
1222 :background (face-background 'mh-show-xface-face)) 1222 :background (face-background 'mh-show-xface))
1223 " "))) 1223 " ")))
1224 ;; XEmacs 1224 ;; XEmacs
1225 (mh-do-in-xemacs 1225 (mh-do-in-xemacs
@@ -1237,7 +1237,7 @@ is used."
1237 (set-extent-begin-glyph 1237 (set-extent-begin-glyph
1238 (make-extent (point) (point)) 1238 (make-extent (point) (point))
1239 (make-glyph (vector 'xface ':data (concat "X-Face: " x-face)))) 1239 (make-glyph (vector 'xface ':data (concat "X-Face: " x-face))))
1240 'mh-show-xface-face)) 1240 'mh-show-xface))
1241 ;; Otherwise try external support with x-face... 1241 ;; Otherwise try external support with x-face...
1242 ((and (eq type 'pbm) 1242 ((and (eq type 'pbm)
1243 (fboundp 'x-face-xmas-wl-display-x-face) 1243 (fboundp 'x-face-xmas-wl-display-x-face)
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index d846234133d..70388e56ab7 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -38,6 +38,7 @@
38 38
39;; Function Browser Earliest version 39;; Function Browser Earliest version
40;; browse-url-mozilla Mozilla Don't know 40;; browse-url-mozilla Mozilla Don't know
41;; browse-url-firefox Firefox Don't know (tried with 1.0.1)
41;; browse-url-galeon Galeon Don't know 42;; browse-url-galeon Galeon Don't know
42;; browse-url-epiphany Epiphany Don't know 43;; browse-url-epiphany Epiphany Don't know
43;; browse-url-netscape Netscape 1.1b1 44;; browse-url-netscape Netscape 1.1b1
@@ -248,6 +249,7 @@ regexp should probably be \".\" to specify a default browser."
248 (function-item :tag "W3 in another Emacs via `gnudoit'" 249 (function-item :tag "W3 in another Emacs via `gnudoit'"
249 :value browse-url-w3-gnudoit) 250 :value browse-url-w3-gnudoit)
250 (function-item :tag "Mozilla" :value browse-url-mozilla) 251 (function-item :tag "Mozilla" :value browse-url-mozilla)
252 (function-item :tag "Firefox" :value browse-url-firefox)
251 (function-item :tag "Galeon" :value browse-url-galeon) 253 (function-item :tag "Galeon" :value browse-url-galeon)
252 (function-item :tag "Epiphany" :value browse-url-epiphany) 254 (function-item :tag "Epiphany" :value browse-url-epiphany)
253 (function-item :tag "Netscape" :value browse-url-netscape) 255 (function-item :tag "Netscape" :value browse-url-netscape)
@@ -323,6 +325,25 @@ Defaults to the value of `browse-url-mozilla-arguments' at the time
323 :type '(repeat (string :tag "Argument")) 325 :type '(repeat (string :tag "Argument"))
324 :group 'browse-url) 326 :group 'browse-url)
325 327
328;;;###autoload
329(defcustom browse-url-firefox-program "firefox"
330 "*The name by which to invoke Firefox."
331 :type 'string
332 :group 'browse-url)
333
334(defcustom browse-url-firefox-arguments nil
335 "*A list of strings to pass to Firefox as arguments."
336 :type '(repeat (string :tag "Argument"))
337 :group 'browse-url)
338
339(defcustom browse-url-firefox-startup-arguments browse-url-firefox-arguments
340 "*A list of strings to pass to Firefox when it starts up.
341Defaults to the value of `browse-url-firefox-arguments' at the time
342`browse-url' is loaded."
343 :type '(repeat (string :tag "Argument"))
344 :group 'browse-url)
345
346;;;###autoload
326(defcustom browse-url-galeon-program "galeon" 347(defcustom browse-url-galeon-program "galeon"
327 "*The name by which to invoke Galeon." 348 "*The name by which to invoke Galeon."
328 :type 'string 349 :type 'string
@@ -373,6 +394,16 @@ If non-nil, then open the URL in a new tab rather than a new window if
373 :type 'boolean 394 :type 'boolean
374 :group 'browse-url) 395 :group 'browse-url)
375 396
397(defcustom browse-url-firefox-new-window-is-tab nil
398 "*Whether to open up new windows in a tab or a new window.
399If non-nil, then open the URL in a new tab rather than a new window if
400`browse-url-firefox' is asked to open it in a new window.
401
402This option is currently ignored on MS-Windows, since the necessary
403functionality is not available there."
404 :type 'boolean
405 :group 'browse-url)
406
376(defcustom browse-url-galeon-new-window-is-tab nil 407(defcustom browse-url-galeon-new-window-is-tab nil
377 "*Whether to open up new windows in a tab or a new window. 408 "*Whether to open up new windows in a tab or a new window.
378If non-nil, then open the URL in a new tab rather than a new window if 409If non-nil, then open the URL in a new tab rather than a new window if
@@ -815,13 +846,14 @@ the effect of `browse-url-new-window-flag'.
815When called non-interactively, optional second argument NEW-WINDOW is 846When called non-interactively, optional second argument NEW-WINDOW is
816used instead of `browse-url-new-window-flag'. 847used instead of `browse-url-new-window-flag'.
817 848
818The order attempted is gnome-moz-remote, Mozilla, Galeon, 849The order attempted is gnome-moz-remote, Mozilla, Firefox,
819Konqueror, Netscape, Mosaic, IXI Mosaic, Lynx in an xterm, MMM, 850Galeon, Konqueror, Netscape, Mosaic, IXI Mosaic, Lynx in an
820and then W3." 851xterm, MMM, and then W3."
821 (apply 852 (apply
822 (cond 853 (cond
823 ((executable-find browse-url-gnome-moz-program) 'browse-url-gnome-moz) 854 ((executable-find browse-url-gnome-moz-program) 'browse-url-gnome-moz)
824 ((executable-find browse-url-mozilla-program) 'browse-url-mozilla) 855 ((executable-find browse-url-mozilla-program) 'browse-url-mozilla)
856 ((executable-find browse-url-firefox-program) 'browse-url-firefox)
825 ((executable-find browse-url-galeon-program) 'browse-url-galeon) 857 ((executable-find browse-url-galeon-program) 'browse-url-galeon)
826 ((executable-find browse-url-kde-program) 'browse-url-kde) 858 ((executable-find browse-url-kde-program) 'browse-url-kde)
827 ((executable-find browse-url-netscape-program) 'browse-url-netscape) 859 ((executable-find browse-url-netscape-program) 'browse-url-netscape)
@@ -960,6 +992,71 @@ used instead of `browse-url-new-window-flag'."
960 (append browse-url-mozilla-startup-arguments (list url)))))) 992 (append browse-url-mozilla-startup-arguments (list url))))))
961 993
962;;;###autoload 994;;;###autoload
995(defun browse-url-firefox (url &optional new-window)
996 "Ask the Firefox WWW browser to load URL.
997Default to the URL around or before point. The strings in
998variable `browse-url-firefox-arguments' are also passed to
999Firefox.
1000
1001When called interactively, if variable
1002`browse-url-new-window-flag' is non-nil, load the document in a
1003new Firefox window, otherwise use a random existing one. A
1004non-nil interactive prefix argument reverses the effect of
1005`browse-url-new-window-flag'.
1006
1007If `browse-url-firefox-new-window-is-tab' is non-nil, then
1008whenever a document would otherwise be loaded in a new window, it
1009is loaded in a new tab in an existing window instead.
1010
1011When called non-interactively, optional second argument
1012NEW-WINDOW is used instead of `browse-url-new-window-flag'.
1013
1014On MS-Windows systems the optional `new-window' parameter is
1015ignored. Firefox for Windows does not support the \"-remote\"
1016command line parameter. Therefore, the
1017`browse-url-new-window-flag' and `browse-url-firefox-new-window-is-tab'
1018are ignored as well. Firefox on Windows will always open the requested
1019URL in a new window."
1020 (interactive (browse-url-interactive-arg "URL: "))
1021 ;; URL encode any `confusing' characters in the URL. This needs to
1022 ;; include at least commas; presumably also close parens.
1023 (while (string-match "[,)]" url)
1024 (setq url (replace-match
1025 (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
1026 (let* ((process-environment (browse-url-process-environment))
1027 (process
1028 (apply 'start-process
1029 (concat "firefox " url) nil
1030 browse-url-firefox-program
1031 (append
1032 browse-url-firefox-arguments
1033 (if (or (featurep 'dos-w32)
1034 (string-match "win32" system-configuration))
1035 (list url)
1036 (list "-remote"
1037 (concat "openURL("
1038 url
1039 (if (browse-url-maybe-new-window
1040 new-window)
1041 (if browse-url-firefox-new-window-is-tab
1042 ",new-tab"
1043 ",new-window"))
1044 ")")))))))
1045 (set-process-sentinel process
1046 `(lambda (process change)
1047 (browse-url-firefox-sentinel process ,url)))))
1048
1049(defun browse-url-firefox-sentinel (process url)
1050 "Handle a change to the process communicating with Firefox."
1051 (or (eq (process-exit-status process) 0)
1052 (let* ((process-environment (browse-url-process-environment)))
1053 ;; Firefox is not running - start it
1054 (message "Starting Firefox...")
1055 (apply 'start-process (concat "firefox " url) nil
1056 browse-url-firefox-program
1057 (append browse-url-firefox-startup-arguments (list url))))))
1058
1059;;;###autoload
963(defun browse-url-galeon (url &optional new-window) 1060(defun browse-url-galeon (url &optional new-window)
964 "Ask the Galeon WWW browser to load URL. 1061 "Ask the Galeon WWW browser to load URL.
965Default to the URL around or before point. The strings in variable 1062Default to the URL around or before point. The strings in variable
diff --git a/lisp/net/tramp-ftp.el b/lisp/net/tramp-ftp.el
index 496ee926d51..f43faf11cc1 100644
--- a/lisp/net/tramp-ftp.el
+++ b/lisp/net/tramp-ftp.el
@@ -1,6 +1,6 @@
1;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP and EFS -*- coding: iso-8859-1; -*- 1;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP and EFS -*- coding: iso-8859-1; -*-
2 2
3;; Copyright (C) 2002, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Michael Albinus <Michael.Albinus@alcatel.de> 5;; Author: Michael Albinus <Michael.Albinus@alcatel.de>
6;; Keywords: comm, processes 6;; Keywords: comm, processes
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index c93bdfb8e61..cd096df3be3 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -1,6 +1,6 @@
1;;; tramp-smb.el --- Tramp access functions for SMB servers -*- coding: iso-8859-1; -*- 1;;; tramp-smb.el --- Tramp access functions for SMB servers -*- coding: iso-8859-1; -*-
2 2
3;; Copyright (C) 2002, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Michael Albinus <michael.albinus@gmx.de> 5;; Author: Michael Albinus <michael.albinus@gmx.de>
6;; Keywords: comm, processes 6;; Keywords: comm, processes
diff --git a/lisp/net/tramp-util.el b/lisp/net/tramp-util.el
index eff8130b996..1621c2c818e 100644
--- a/lisp/net/tramp-util.el
+++ b/lisp/net/tramp-util.el
@@ -1,7 +1,7 @@
1;;; -*- coding: iso-2022-7bit; -*- 1;;; -*- coding: iso-2022-7bit; -*-
2;;; tramp-util.el --- Misc utility functions to use with Tramp 2;;; tramp-util.el --- Misc utility functions to use with Tramp
3 3
4;; Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. 4;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
5 5
6;; Author: kai.grossjohann@gmx.net 6;; Author: kai.grossjohann@gmx.net
7;; Keywords: comm, extensions, processes 7;; Keywords: comm, extensions, processes
diff --git a/lisp/net/tramp-uu.el b/lisp/net/tramp-uu.el
index 09dfa7d04a5..ffaa0659160 100644
--- a/lisp/net/tramp-uu.el
+++ b/lisp/net/tramp-uu.el
@@ -1,7 +1,7 @@
1;;; -*- coding: iso-2022-7bit; -*- 1;;; -*- coding: iso-2022-7bit; -*-
2;;; tramp-uu.el --- uuencode in Lisp 2;;; tramp-uu.el --- uuencode in Lisp
3 3
4;; Copyright (C) 2002, 2005 Free Software Foundation, Inc. 4;; Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
5 5
6;; Author: Kai Gro,A_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 6;; Author: Kai Gro,A_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
7;; Keywords: comm, terminals 7;; Keywords: comm, terminals
diff --git a/lisp/net/tramp-vc.el b/lisp/net/tramp-vc.el
index 9a281d9d40d..c58d83504c2 100644
--- a/lisp/net/tramp-vc.el
+++ b/lisp/net/tramp-vc.el
@@ -1,6 +1,6 @@
1;;; tramp-vc.el --- Version control integration for TRAMP.el 1;;; tramp-vc.el --- Version control integration for TRAMP.el
2 2
3;; Copyright (C) 2000, 2001, 2002, 2005 by Free Software Foundation, Inc. 3;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 by Free Software Foundation, Inc.
4 4
5;; Author: Daniel Pittman <daniel@danann.net> 5;; Author: Daniel Pittman <daniel@danann.net>
6;; Keywords: comm, processes 6;; Keywords: comm, processes
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 5873efcb98a..ee9f570bd43 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1,7 +1,7 @@
1;;; -*- mode: Emacs-Lisp; coding: iso-2022-7bit; -*- 1;;; -*- mode: Emacs-Lisp; coding: iso-2022-7bit; -*-
2;;; tramp.el --- Transparent Remote Access, Multiple Protocol 2;;; tramp.el --- Transparent Remote Access, Multiple Protocol
3 3
4;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2005 Free Software Foundation, Inc. 4;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
5 5
6;; Author: kai.grossjohann@gmx.net 6;; Author: kai.grossjohann@gmx.net
7;; Keywords: comm, processes 7;; Keywords: comm, processes
diff --git a/lisp/net/zone-mode.el b/lisp/net/zone-mode.el
index c7999616375..17acb786010 100644
--- a/lisp/net/zone-mode.el
+++ b/lisp/net/zone-mode.el
@@ -60,7 +60,7 @@
60 (old-serial (concat old-date old-seq)) 60 (old-serial (concat old-date old-seq))
61 (new-serial (concat cur-date new-seq))) 61 (new-serial (concat cur-date new-seq)))
62 (if (string-lessp new-serial old-serial) 62 (if (string-lessp new-serial old-serial)
63 (error (format "Serial numbers want to move backwards from %s to %s" old-serial new-serial)) 63 (error "Serial numbers want to move backwards from %s to %s" old-serial new-serial)
64 (replace-match (concat cur-date new-seq old-flag) t t)))))) 64 (replace-match (concat cur-date new-seq old-flag) t t))))))
65 65
66;;;###autoload 66;;;###autoload
@@ -76,7 +76,7 @@
76 "Zone-mode's syntax table.") 76 "Zone-mode's syntax table.")
77 77
78(defun zone-mode-load-time-setup () 78(defun zone-mode-load-time-setup ()
79 "Initialise `zone-mode' stuff." 79 "Initialize `zone-mode' stuff."
80 (setq zone-mode-syntax-table (make-syntax-table)) 80 (setq zone-mode-syntax-table (make-syntax-table))
81 (modify-syntax-entry ?\; "<" zone-mode-syntax-table) 81 (modify-syntax-entry ?\; "<" zone-mode-syntax-table)
82 (modify-syntax-entry ?\n ">" zone-mode-syntax-table)) 82 (modify-syntax-entry ?\n ">" zone-mode-syntax-table))
diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el
index ba4702d90a4..68afd8ee649 100644
--- a/lisp/progmodes/ada-mode.el
+++ b/lisp/progmodes/ada-mode.el
@@ -31,9 +31,9 @@
31;;; This mode is a major mode for editing Ada83 and Ada95 source code. 31;;; This mode is a major mode for editing Ada83 and Ada95 source code.
32;;; This is a major rewrite of the file packaged with Emacs-20. The 32;;; This is a major rewrite of the file packaged with Emacs-20. The
33;;; ada-mode is composed of four lisp files, ada-mode.el, ada-xref.el, 33;;; ada-mode is composed of four lisp files, ada-mode.el, ada-xref.el,
34;;; ada-prj.el and ada-stmt.el. Only this file (ada-mode.el) is 34;;; ada-prj.el and ada-stmt.el. Only this file (ada-mode.el) is
35;;; completely independent from the GNU Ada compiler Gnat, distributed 35;;; completely independent from the GNU Ada compiler Gnat, distributed
36;;; by Ada Core Technologies. All the other files rely heavily on 36;;; by Ada Core Technologies. All the other files rely heavily on
37;;; features provided only by Gnat. 37;;; features provided only by Gnat.
38;;; 38;;;
39;;; Note: this mode will not work with Emacs 19. If you are on a VMS 39;;; Note: this mode will not work with Emacs 19. If you are on a VMS
@@ -136,7 +136,7 @@
136;; this function is needed at compile time 136;; this function is needed at compile time
137(eval-and-compile 137(eval-and-compile
138 (defun ada-check-emacs-version (major minor &optional is-xemacs) 138 (defun ada-check-emacs-version (major minor &optional is-xemacs)
139 "Returns t if Emacs's version is greater or equal to MAJOR.MINOR. 139 "Return t if Emacs's version is greater or equal to MAJOR.MINOR.
140If IS-XEMACS is non-nil, check for XEmacs instead of Emacs." 140If IS-XEMACS is non-nil, check for XEmacs instead of Emacs."
141 (let ((xemacs-running (or (string-match "Lucid" emacs-version) 141 (let ((xemacs-running (or (string-match "Lucid" emacs-version)
142 (string-match "XEmacs" emacs-version)))) 142 (string-match "XEmacs" emacs-version))))
@@ -186,8 +186,7 @@ An example is :
186 :type 'integer :group 'ada) 186 :type 'integer :group 'ada)
187 187
188(defcustom ada-continuation-indent ada-broken-indent 188(defcustom ada-continuation-indent ada-broken-indent
189 "*Number of columns to indent the continuation of broken lines in 189 "*Number of columns to indent the continuation of broken lines in parenthesis.
190parenthesis.
191 190
192An example is : 191An example is :
193 Func (Param1, 192 Func (Param1,
@@ -212,10 +211,10 @@ The first file is the one where new exceptions will be saved by Emacs
212when you call `ada-create-case-exception'. 211when you call `ada-create-case-exception'.
213 212
214These files should contain one word per line, that gives the casing 213These files should contain one word per line, that gives the casing
215to be used for that word in Ada files. If the line starts with the 214to be used for that word in Ada files. If the line starts with the
216character *, then the exception will be used for substrings that either 215character *, then the exception will be used for substrings that either
217start at the beginning of a word or after a _ character, and end either 216start at the beginning of a word or after a _ character, and end either
218at the end of the word or at a _ character. Each line can be terminated by 217at the end of the word or at a _ character. Each line can be terminated by
219a comment." 218a comment."
220 :type '(repeat (file)) 219 :type '(repeat (file))
221 :group 'ada) 220 :group 'ada)
@@ -271,15 +270,14 @@ For instance:
271 270
272(defcustom ada-indent-comment-as-code t 271(defcustom ada-indent-comment-as-code t
273 "*Non-nil means indent comment lines as code. 272 "*Non-nil means indent comment lines as code.
274nil means do not auto-indent comments." 273A nil value means do not auto-indent comments."
275 :type 'boolean :group 'ada) 274 :type 'boolean :group 'ada)
276 275
277(defcustom ada-indent-handle-comment-special nil 276(defcustom ada-indent-handle-comment-special nil
278 "*Non-nil if comment lines should be handled specially inside 277 "*Non-nil if comment lines should be handled specially inside parenthesis.
279parenthesis.
280By default, if the line that contains the open parenthesis has some 278By default, if the line that contains the open parenthesis has some
281text following it, then the following lines will be indented in the 279text following it, then the following lines will be indented in the
282same column as this text. This will not be true if the first line is 280same column as this text. This will not be true if the first line is
283a comment and `ada-indent-handle-comment-special' is t. 281a comment and `ada-indent-handle-comment-special' is t.
284 282
285type A is 283type A is
@@ -311,8 +309,8 @@ An example is:
311 309
312(defcustom ada-indent-renames ada-broken-indent 310(defcustom ada-indent-renames ada-broken-indent
313 "*Indentation for renames relative to the matching function statement. 311 "*Indentation for renames relative to the matching function statement.
314If ada-indent-return is null or negative, the indentation is done relative to 312If `ada-indent-return' is null or negative, the indentation is done relative to
315the open parenthesis (if there is no parenthesis, ada-broken-indent is used). 313the open parenthesis (if there is no parenthesis, `ada-broken-indent' is used).
316 314
317An example is: 315An example is:
318 function A (B : Integer) 316 function A (B : Integer)
@@ -322,8 +320,8 @@ An example is:
322 320
323(defcustom ada-indent-return 0 321(defcustom ada-indent-return 0
324 "*Indentation for 'return' relative to the matching 'function' statement. 322 "*Indentation for 'return' relative to the matching 'function' statement.
325If ada-indent-return is null or negative, the indentation is done relative to 323If `ada-indent-return' is null or negative, the indentation is done relative to
326the open parenthesis (if there is no parenthesis, ada-broken-indent is used). 324the open parenthesis (if there is no parenthesis, `ada-broken-indent' is used).
327 325
328An example is: 326An example is:
329 function A (B : Integer) 327 function A (B : Integer)
@@ -342,7 +340,7 @@ again to take account of the new value."
342 340
343(defcustom ada-fill-comment-postfix " --" 341(defcustom ada-fill-comment-postfix " --"
344 "*Text inserted at the end of each line when filling a comment paragraph. 342 "*Text inserted at the end of each line when filling a comment paragraph.
345with `ada-fill-comment-paragraph-postfix'." 343Used by `ada-fill-comment-paragraph-postfix'."
346 :type 'string :group 'ada) 344 :type 'string :group 'ada)
347 345
348(defcustom ada-label-indent -4 346(defcustom ada-label-indent -4
@@ -377,7 +375,7 @@ If nil, no contextual menu is available."
377 '("/usr/adainclude" "/usr/local/adainclude" 375 '("/usr/adainclude" "/usr/local/adainclude"
378 "/opt/gnu/adainclude")) 376 "/opt/gnu/adainclude"))
379 "*List of directories to search for Ada files. 377 "*List of directories to search for Ada files.
380See the description for the `ff-search-directories' variable. This variable 378See the description for the `ff-search-directories' variable. This variable
381is the initial value of this variable, and is copied and modified in 379is the initial value of this variable, and is copied and modified in
382`ada-search-directories-internal'." 380`ada-search-directories-internal'."
383 :type '(repeat (choice :tag "Directory" 381 :type '(repeat (choice :tag "Directory"
@@ -389,7 +387,7 @@ is the initial value of this variable, and is copied and modified in
389 "Internal version of `ada-search-directories'. 387 "Internal version of `ada-search-directories'.
390Its value is the concatenation of the search path as read in the project file 388Its value is the concatenation of the search path as read in the project file
391and the standard runtime location, and the value of the user-defined 389and the standard runtime location, and the value of the user-defined
392ada-search-directories.") 390`ada-search-directories'.")
393 391
394(defcustom ada-stmt-end-indent 0 392(defcustom ada-stmt-end-indent 0
395 "*Number of columns to indent the end of a statement on a separate line. 393 "*Number of columns to indent the end of a statement on a separate line.
@@ -402,7 +400,7 @@ An example is:
402(defcustom ada-tab-policy 'indent-auto 400(defcustom ada-tab-policy 'indent-auto
403 "*Control the behavior of the TAB key. 401 "*Control the behavior of the TAB key.
404Must be one of : 402Must be one of :
405`indent-rigidly' : always adds ada-indent blanks at the beginning of the line. 403`indent-rigidly' : always adds `ada-indent' blanks at the beginning of the line.
406`indent-auto' : use indentation functions in this file. 404`indent-auto' : use indentation functions in this file.
407`always-tab' : do indent-relative." 405`always-tab' : do indent-relative."
408 :type '(choice (const indent-auto) 406 :type '(choice (const indent-auto)
@@ -438,7 +436,7 @@ An example is:
438 "*Name of the compiler to use. 436 "*Name of the compiler to use.
439This will determine what features are made available through the ada-mode. 437This will determine what features are made available through the ada-mode.
440The possible choices are : 438The possible choices are :
441`gnat': Use Ada Core Technologies' Gnat compiler. Add some cross-referencing 439`gnat': Use Ada Core Technologies' Gnat compiler. Add some cross-referencing
442 features 440 features
443`generic': Use a generic compiler" 441`generic': Use a generic compiler"
444 :type '(choice (const gnat) 442 :type '(choice (const gnat)
@@ -494,14 +492,14 @@ This variable is used to define `ada-83-keywords' and `ada-95-keywords'"))
494(defvar ada-case-exception-substring '() 492(defvar ada-case-exception-substring '()
495 "Alist of substrings (entities) that have special casing. 493 "Alist of substrings (entities) that have special casing.
496The substrings are detected for word constituant when the word 494The substrings are detected for word constituant when the word
497is not itself in ada-case-exception, and only for substrings that 495is not itself in `ada-case-exception', and only for substrings that
498either are at the beginning or end of the word, or start after '_'.") 496either are at the beginning or end of the word, or start after '_'.")
499 497
500(defvar ada-lfd-binding nil 498(defvar ada-lfd-binding nil
501 "Variable to save key binding of LFD when casing is activated.") 499 "Variable to save key binding of LFD when casing is activated.")
502 500
503(defvar ada-other-file-alist nil 501(defvar ada-other-file-alist nil
504 "Variable used by find-file to find the name of the other package. 502 "Variable used by `find-file' to find the name of the other package.
505See `ff-other-file-alist'.") 503See `ff-other-file-alist'.")
506 504
507(defvar ada-align-list 505(defvar ada-align-list
@@ -552,7 +550,7 @@ This variable defines several rules to use to align different lines.")
552 "type\\|" 550 "type\\|"
553 "when" 551 "when"
554 "\\)\\>\\)") 552 "\\)\\>\\)")
555 "see the variable `align-region-separate' for more information.") 553 "See the variable `align-region-separate' for more information.")
556 554
557;;; ---- Below are the regexp used in this package for parsing 555;;; ---- Below are the regexp used in this package for parsing
558 556
@@ -631,7 +629,7 @@ A new statement starts after these.")
631 '("end" "loop" "select" "begin" "case" "do" 629 '("end" "loop" "select" "begin" "case" "do"
632 "if" "task" "package" "record" "protected") t) 630 "if" "task" "package" "record" "protected") t)
633 "\\>")) 631 "\\>"))
634 "Regexp used in ada-goto-matching-start.") 632 "Regexp used in `ada-goto-matching-start'.")
635 633
636(defvar ada-matching-decl-start-re 634(defvar ada-matching-decl-start-re
637 (eval-when-compile 635 (eval-when-compile
@@ -639,7 +637,7 @@ A new statement starts after these.")
639 (regexp-opt 637 (regexp-opt
640 '("is" "separate" "end" "declare" "if" "new" "begin" "generic" "when") t) 638 '("is" "separate" "end" "declare" "if" "new" "begin" "generic" "when") t)
641 "\\>")) 639 "\\>"))
642 "Regexp used in ada-goto-matching-decl-start.") 640 "Regexp used in `ada-goto-matching-decl-start'.")
643 641
644(defvar ada-loop-start-re 642(defvar ada-loop-start-re
645 "\\<\\(for\\|while\\|loop\\)\\>" 643 "\\<\\(for\\|while\\|loop\\)\\>"
@@ -662,7 +660,7 @@ A new statement starts after these.")
662 "Position of point just before displaying the menu. 660 "Position of point just before displaying the menu.
663This is a list (point buffer). 661This is a list (point buffer).
664Since `ada-popup-menu' moves the point where the user clicked, the region 662Since `ada-popup-menu' moves the point where the user clicked, the region
665is modified. Therefore no command from the menu knows what the user selected 663is modified. Therefore no command from the menu knows what the user selected
666before displaying the contextual menu. 664before displaying the contextual menu.
667To get the original region, restore the point to this position before 665To get the original region, restore the point to this position before
668calling `region-end' and `region-beginning'. 666calling `region-end' and `region-beginning'.
@@ -717,7 +715,7 @@ displaying the menu if point was on an identifier."
717 "^[ \t]*protected[ \t]+\\(type[ \t]+\\)?\\(\\(body[ \t]+\\)?\\(\\sw\\|_\\)+\\)" 2) 715 "^[ \t]*protected[ \t]+\\(type[ \t]+\\)?\\(\\(body[ \t]+\\)?\\(\\sw\\|_\\)+\\)" 2)
718 '("*Packages*" "^[ \t]*package[ \t]+\\(\\(body[ \t]+\\)?\\(\\sw\\|[_.]\\)+\\)" 1)) 716 '("*Packages*" "^[ \t]*package[ \t]+\\(\\(body[ \t]+\\)?\\(\\sw\\|[_.]\\)+\\)" 1))
719 "Imenu generic expression for Ada mode. 717 "Imenu generic expression for Ada mode.
720See `imenu-generic-expression'. This variable will create several submenus for 718See `imenu-generic-expression'. This variable will create several submenus for
721each type of entity that can be found in an Ada file.") 719each type of entity that can be found in an Ada file.")
722 720
723 721
@@ -733,9 +731,9 @@ each type of entity that can be found in an Ada file.")
733 ) 731 )
734 732
735(defun ada-compile-goto-error (pos) 733(defun ada-compile-goto-error (pos)
736 "Replaces `compile-goto-error' from compile.el. 734 "Replace `compile-goto-error' from compile.el.
737If POS is on a file and line location, go to this position. It adds to 735If POS is on a file and line location, go to this position. It adds
738compile.el the capacity to go to a reference in an error message. 736to compile.el the capacity to go to a reference in an error message.
739For instance, on this line: 737For instance, on this line:
740 foo.adb:61:11: [...] in call to size declared at foo.ads:11 738 foo.adb:61:11: [...] in call to size declared at foo.ads:11
741both file locations can be clicked on and jumped to." 739both file locations can be clicked on and jumped to."
@@ -953,20 +951,20 @@ OLD-LEN indicates what the length of the replaced text was."
953;;------------------------------------------------------------------ 951;;------------------------------------------------------------------
954 952
955(defsubst ada-in-comment-p (&optional parse-result) 953(defsubst ada-in-comment-p (&optional parse-result)
956 "Returns t if inside a comment." 954 "Return t if inside a comment."
957 (nth 4 (or parse-result 955 (nth 4 (or parse-result
958 (parse-partial-sexp 956 (parse-partial-sexp
959 (line-beginning-position) (point))))) 957 (line-beginning-position) (point)))))
960 958
961(defsubst ada-in-string-p (&optional parse-result) 959(defsubst ada-in-string-p (&optional parse-result)
962 "Returns t if point is inside a string. 960 "Return t if point is inside a string.
963If parse-result is non-nil, use is instead of calling parse-partial-sexp." 961If parse-result is non-nil, use is instead of calling `parse-partial-sexp'."
964 (nth 3 (or parse-result 962 (nth 3 (or parse-result
965 (parse-partial-sexp 963 (parse-partial-sexp
966 (line-beginning-position) (point))))) 964 (line-beginning-position) (point)))))
967 965
968(defsubst ada-in-string-or-comment-p (&optional parse-result) 966(defsubst ada-in-string-or-comment-p (&optional parse-result)
969 "Returns t if inside a comment or string." 967 "Return t if inside a comment or string."
970 (setq parse-result (or parse-result 968 (setq parse-result (or parse-result
971 (parse-partial-sexp 969 (parse-partial-sexp
972 (line-beginning-position) (point)))) 970 (line-beginning-position) (point))))
@@ -994,8 +992,8 @@ It forces Emacs to change the cursor position."
994 "Pops up a contextual menu, depending on where the user clicked. 992 "Pops up a contextual menu, depending on where the user clicked.
995POSITION is the location the mouse was clicked on. 993POSITION is the location the mouse was clicked on.
996Sets `ada-contextual-menu-last-point' to the current position before 994Sets `ada-contextual-menu-last-point' to the current position before
997displaying the menu. When a function from the menu is called, the point is 995displaying the menu. When a function from the menu is called, the
998where the mouse button was clicked." 996point is where the mouse button was clicked."
999 (interactive "e") 997 (interactive "e")
1000 998
1001 ;; declare this as a local variable, so that the function called 999 ;; declare this as a local variable, so that the function called
@@ -1035,8 +1033,8 @@ where the mouse button was clicked."
1035 "Define SPEC and BODY as being valid extensions for Ada files. 1033 "Define SPEC and BODY as being valid extensions for Ada files.
1036Going from body to spec with `ff-find-other-file' used these 1034Going from body to spec with `ff-find-other-file' used these
1037extensions. 1035extensions.
1038SPEC and BODY are two regular expressions that must match against the file 1036SPEC and BODY are two regular expressions that must match against
1039name" 1037the file name."
1040 (let* ((reg (concat (regexp-quote body) "$")) 1038 (let* ((reg (concat (regexp-quote body) "$"))
1041 (tmp (assoc reg ada-other-file-alist))) 1039 (tmp (assoc reg ada-other-file-alist)))
1042 (if tmp 1040 (if tmp
@@ -1099,7 +1097,7 @@ Comments are handled using standard GNU Emacs conventions, including:
1099 Continue comment on next line '\\[indent-new-comment-line]' 1097 Continue comment on next line '\\[indent-new-comment-line]'
1100 1098
1101If you use imenu.el: 1099If you use imenu.el:
1102 Display index-menu of functions & procedures '\\[imenu]' 1100 Display index-menu of functions and procedures '\\[imenu]'
1103 1101
1104If you use find-file.el: 1102If you use find-file.el:
1105 Switch to other file (Body <-> Spec) '\\[ff-find-other-file]' 1103 Switch to other file (Body <-> Spec) '\\[ff-find-other-file]'
@@ -1408,7 +1406,7 @@ If you use ada-xref.el:
1408 1406
1409;; transient-mark-mode and mark-active are not defined in XEmacs 1407;; transient-mark-mode and mark-active are not defined in XEmacs
1410(defun ada-region-selected () 1408(defun ada-region-selected ()
1411 "t if a region has been selected by the user and is still active." 1409 "Return t if a region has been selected by the user and is still active."
1412 (or (and (featurep 'xemacs) (funcall (symbol-function 'region-active-p))) 1410 (or (and (featurep 'xemacs) (funcall (symbol-function 'region-active-p)))
1413 (and (not (featurep 'xemacs)) 1411 (and (not (featurep 'xemacs))
1414 (symbol-value 'transient-mark-mode) 1412 (symbol-value 'transient-mark-mode)
@@ -1447,7 +1445,7 @@ If you use ada-xref.el:
1447 ) 1445 )
1448 1446
1449(defun ada-create-case-exception (&optional word) 1447(defun ada-create-case-exception (&optional word)
1450 "Defines WORD as an exception for the casing system. 1448 "Define WORD as an exception for the casing system.
1451If WORD is not given, then the current word in the buffer is used instead. 1449If WORD is not given, then the current word in the buffer is used instead.
1452The new words is added to the first file in `ada-case-exception-file'. 1450The new words is added to the first file in `ada-case-exception-file'.
1453The standard casing rules will no longer apply to this word." 1451The standard casing rules will no longer apply to this word."
@@ -1487,10 +1485,10 @@ The standard casing rules will no longer apply to this word."
1487 )) 1485 ))
1488 1486
1489(defun ada-create-case-exception-substring (&optional word) 1487(defun ada-create-case-exception-substring (&optional word)
1490 "Defines the substring WORD as an exception for the casing system. 1488 "Define the substring WORD as an exception for the casing system.
1491If WORD is not given, then the current word in the buffer is used instead, 1489If WORD is not given, then the current word in the buffer is used instead,
1492or the selected region if any is active. 1490or the selected region if any is active.
1493The new words is added to the first file in `ada-case-exception-file'. 1491The new word is added to the first file in `ada-case-exception-file'.
1494When auto-casing a word, this substring will be special-cased, unless the 1492When auto-casing a word, this substring will be special-cased, unless the
1495word itself has a special casing." 1493word itself has a special casing."
1496 (interactive) 1494 (interactive)
@@ -1642,7 +1640,7 @@ the exceptions defined in `ada-case-exception-file'."
1642 (ada-adjust-case-substring)))))) 1640 (ada-adjust-case-substring))))))
1643 1641
1644(defun ada-after-keyword-p () 1642(defun ada-after-keyword-p ()
1645 "Returns t if cursor is after a keyword that is not an attribute." 1643 "Return t if cursor is after a keyword that is not an attribute."
1646 (save-excursion 1644 (save-excursion
1647 (forward-word -1) 1645 (forward-word -1)
1648 (and (not (and (char-before) 1646 (and (not (and (char-before)
@@ -1651,7 +1649,7 @@ the exceptions defined in `ada-case-exception-file'."
1651 (looking-at (concat ada-keywords "[^_]"))))) 1649 (looking-at (concat ada-keywords "[^_]")))))
1652 1650
1653(defun ada-adjust-case (&optional force-identifier) 1651(defun ada-adjust-case (&optional force-identifier)
1654 "Adjust the case of the word before the just typed character. 1652 "Adjust the case of the word before the character just typed.
1655If FORCE-IDENTIFIER is non-nil then also adjust keyword as identifier." 1653If FORCE-IDENTIFIER is non-nil then also adjust keyword as identifier."
1656 (if (not (bobp)) 1654 (if (not (bobp))
1657 (progn 1655 (progn
@@ -1682,7 +1680,7 @@ If FORCE-IDENTIFIER is non-nil then also adjust keyword as identifier."
1682 1680
1683(defun ada-adjust-case-interactive (arg) 1681(defun ada-adjust-case-interactive (arg)
1684 "Adjust the case of the previous word, and process the character just typed. 1682 "Adjust the case of the previous word, and process the character just typed.
1685ARG is the prefix the user entered with \C-u." 1683ARG is the prefix the user entered with \\[universal-argument]."
1686 (interactive "P") 1684 (interactive "P")
1687 1685
1688 (if ada-auto-case 1686 (if ada-auto-case
@@ -1729,7 +1727,7 @@ ARG is the prefix the user entered with \C-u."
1729 )) 1727 ))
1730 1728
1731(defun ada-activate-keys-for-case () 1729(defun ada-activate-keys-for-case ()
1732 "Modifies the key bindings for all the keys that should readjust the casing." 1730 "Modify the key bindings for all the keys that should readjust the casing."
1733 (interactive) 1731 (interactive)
1734 ;; Save original key-bindings to allow swapping ret/lfd 1732 ;; Save original key-bindings to allow swapping ret/lfd
1735 ;; when casing is activated. 1733 ;; when casing is activated.
@@ -1763,7 +1761,7 @@ ARG is ignored, and is there for compatibility with `capitalize-word' only."
1763 (delete-char 1))))) 1761 (delete-char 1)))))
1764 1762
1765(defun ada-no-auto-case (&optional arg) 1763(defun ada-no-auto-case (&optional arg)
1766 "Does nothing. 1764 "Do nothing.
1767This function can be used for the auto-casing variables in the ada-mode, to 1765This function can be used for the auto-casing variables in the ada-mode, to
1768adapt to unusal auto-casing schemes. Since it does nothing, you can for 1766adapt to unusal auto-casing schemes. Since it does nothing, you can for
1769instance use it for `ada-case-identifier' if you don't want any special 1767instance use it for `ada-case-identifier' if you don't want any special
@@ -1782,8 +1780,8 @@ ARG is ignored, and is there for compatibility with `capitalize-word' only."
1782 (modify-syntax-entry ?_ "w"))) 1780 (modify-syntax-entry ?_ "w")))
1783 1781
1784(defun ada-adjust-case-region (from to) 1782(defun ada-adjust-case-region (from to)
1785 "Adjusts the case of all words in the region between FROM and TO. 1783 "Adjust the case of all words in the region between FROM and TO.
1786Attention: This function might take very long for big regions !" 1784Attention: This function might take very long for big regions!"
1787 (interactive "*r") 1785 (interactive "*r")
1788 (let ((begin nil) 1786 (let ((begin nil)
1789 (end nil) 1787 (end nil)
@@ -1829,7 +1827,7 @@ Attention: This function might take very long for big regions !"
1829 1827
1830(defun ada-adjust-case-buffer () 1828(defun ada-adjust-case-buffer ()
1831 "Adjusts the case of all words in the whole buffer. 1829 "Adjusts the case of all words in the whole buffer.
1832ATTENTION: This function might take very long for big buffers !" 1830ATTENTION: This function might take very long for big buffers!"
1833 (interactive "*") 1831 (interactive "*")
1834 (ada-adjust-case-region (point-min) (point-max))) 1832 (ada-adjust-case-region (point-min) (point-max)))
1835 1833
@@ -1851,7 +1849,7 @@ ATTENTION: This function might take very long for big buffers !"
1851;;-------------------------------------------------------------- 1849;;--------------------------------------------------------------
1852 1850
1853(defun ada-format-paramlist () 1851(defun ada-format-paramlist ()
1854 "Reformats the parameter list point is in." 1852 "Reformat the parameter list point is in."
1855 (interactive) 1853 (interactive)
1856 (let ((begin nil) 1854 (let ((begin nil)
1857 (end nil) 1855 (end nil)
@@ -1864,7 +1862,7 @@ ATTENTION: This function might take very long for big buffers !"
1864 1862
1865 ;; check if really inside parameter list 1863 ;; check if really inside parameter list
1866 (or (ada-in-paramlist-p) 1864 (or (ada-in-paramlist-p)
1867 (error "not in parameter list")) 1865 (error "Not in parameter list"))
1868 1866
1869 ;; find start of current parameter-list 1867 ;; find start of current parameter-list
1870 (ada-search-ignore-string-comment 1868 (ada-search-ignore-string-comment
@@ -1899,7 +1897,7 @@ ATTENTION: This function might take very long for big buffers !"
1899 1897
1900(defun ada-scan-paramlist (begin end) 1898(defun ada-scan-paramlist (begin end)
1901 "Scan the parameter list found in between BEGIN and END. 1899 "Scan the parameter list found in between BEGIN and END.
1902Returns the equivalent internal parameter list." 1900Return the equivalent internal parameter list."
1903 (let ((paramlist (list)) 1901 (let ((paramlist (list))
1904 (param (list)) 1902 (param (list))
1905 (notend t) 1903 (notend t)
@@ -1996,7 +1994,7 @@ Returns the equivalent internal parameter list."
1996 (reverse paramlist))) 1994 (reverse paramlist)))
1997 1995
1998(defun ada-insert-paramlist (paramlist) 1996(defun ada-insert-paramlist (paramlist)
1999 "Inserts a formatted PARAMLIST in the buffer." 1997 "Insert a formatted PARAMLIST in the buffer."
2000 (let ((i (length paramlist)) 1998 (let ((i (length paramlist))
2001 (parlen 0) 1999 (parlen 0)
2002 (typlen 0) 2000 (typlen 0)
@@ -2163,7 +2161,7 @@ Returns the equivalent internal parameter list."
2163 (message "indenting ... done"))) 2161 (message "indenting ... done")))
2164 2162
2165(defun ada-indent-newline-indent () 2163(defun ada-indent-newline-indent ()
2166 "Indents the current line, inserts a newline and then indents the new line." 2164 "Indent the current line, insert a newline and then indent the new line."
2167 (interactive "*") 2165 (interactive "*")
2168 (ada-indent-current) 2166 (ada-indent-current)
2169 (newline) 2167 (newline)
@@ -2172,14 +2170,14 @@ Returns the equivalent internal parameter list."
2172(defun ada-indent-newline-indent-conditional () 2170(defun ada-indent-newline-indent-conditional ()
2173 "Insert a newline and indent it. 2171 "Insert a newline and indent it.
2174The original line is indented first if `ada-indent-after-return' is non-nil. 2172The original line is indented first if `ada-indent-after-return' is non-nil.
2175This function is intended to be bound to the \C-m and \C-j keys." 2173This function is intended to be bound to the C-m and C-j keys."
2176 (interactive "*") 2174 (interactive "*")
2177 (if ada-indent-after-return (ada-indent-current)) 2175 (if ada-indent-after-return (ada-indent-current))
2178 (newline) 2176 (newline)
2179 (ada-indent-current)) 2177 (ada-indent-current))
2180 2178
2181(defun ada-justified-indent-current () 2179(defun ada-justified-indent-current ()
2182 "Indent the current line and explains how the calculation was done." 2180 "Indent the current line and explain how the calculation was done."
2183 (interactive) 2181 (interactive)
2184 2182
2185 (let ((cur-indent (ada-indent-current))) 2183 (let ((cur-indent (ada-indent-current)))
@@ -2223,13 +2221,13 @@ command like:
2223 (kill-emacs 0)) 2221 (kill-emacs 0))
2224 2222
2225(defsubst ada-goto-previous-word () 2223(defsubst ada-goto-previous-word ()
2226 "Moves point to the beginning of the previous word of Ada code. 2224 "Move point to the beginning of the previous word of Ada code.
2227Returns the new position of point or nil if not found." 2225Return the new position of point or nil if not found."
2228 (ada-goto-next-word t)) 2226 (ada-goto-next-word t))
2229 2227
2230(defun ada-indent-current () 2228(defun ada-indent-current ()
2231 "Indent current line as Ada code. 2229 "Indent current line as Ada code.
2232Returns the calculation that was done, including the reference point and the 2230Return the calculation that was done, including the reference point and the
2233offset." 2231offset."
2234 (interactive) 2232 (interactive)
2235 (let ((previous-syntax-table (syntax-table)) 2233 (let ((previous-syntax-table (syntax-table))
@@ -2804,7 +2802,7 @@ if INITIAL-POS is non-nil, moves point to INITIAL-POS before calculation."
2804 )) 2802 ))
2805 2803
2806(defun ada-get-indent-open-paren () 2804(defun ada-get-indent-open-paren ()
2807 "Calculates the indentation when point is behind an unclosed parenthesis." 2805 "Calculate the indentation when point is behind an unclosed parenthesis."
2808 (list (ada-in-open-paren-p) 0)) 2806 (list (ada-in-open-paren-p) 0))
2809 2807
2810(defun ada-get-indent-nochange () 2808(defun ada-get-indent-nochange ()
@@ -2815,7 +2813,7 @@ if INITIAL-POS is non-nil, moves point to INITIAL-POS before calculation."
2815 (list (point) 0))) 2813 (list (point) 0)))
2816 2814
2817(defun ada-get-indent-paramlist () 2815(defun ada-get-indent-paramlist ()
2818 "Calculates the indentation when point is inside a parameter list." 2816 "Calculate the indentation when point is inside a parameter list."
2819 (save-excursion 2817 (save-excursion
2820 (ada-search-ignore-string-comment "[^ \t\n]" t nil t) 2818 (ada-search-ignore-string-comment "[^ \t\n]" t nil t)
2821 (cond 2819 (cond
@@ -2843,7 +2841,7 @@ if INITIAL-POS is non-nil, moves point to INITIAL-POS before calculation."
2843 (list (point) 0))))) 2841 (list (point) 0)))))
2844 2842
2845(defun ada-get-indent-end (orgpoint) 2843(defun ada-get-indent-end (orgpoint)
2846 "Calculates the indentation when point is just before an end_statement. 2844 "Calculate the indentation when point is just before an end statement.
2847ORGPOINT is the limit position used in the calculation." 2845ORGPOINT is the limit position used in the calculation."
2848 (let ((defun-name nil) 2846 (let ((defun-name nil)
2849 (indent nil)) 2847 (indent nil))
@@ -2909,7 +2907,7 @@ ORGPOINT is the limit position used in the calculation."
2909 'ada-broken-indent)))) 2907 'ada-broken-indent))))
2910 2908
2911(defun ada-get-indent-case (orgpoint) 2909(defun ada-get-indent-case (orgpoint)
2912 "Calculates the indentation when point is just before a case statement. 2910 "Calculate the indentation when point is just before a case statement.
2913ORGPOINT is the limit position used in the calculation." 2911ORGPOINT is the limit position used in the calculation."
2914 (let ((match-cons nil) 2912 (let ((match-cons nil)
2915 (opos (point))) 2913 (opos (point)))
@@ -2927,7 +2925,7 @@ ORGPOINT is the limit position used in the calculation."
2927 (save-excursion 2925 (save-excursion
2928 (goto-char (car match-cons)) 2926 (goto-char (car match-cons))
2929 (unless (ada-search-ignore-string-comment "when" t opos) 2927 (unless (ada-search-ignore-string-comment "when" t opos)
2930 (error "missing 'when' between 'case' and '=>'")) 2928 (error "Missing 'when' between 'case' and '=>'"))
2931 (list (save-excursion (back-to-indentation) (point)) 'ada-indent))) 2929 (list (save-excursion (back-to-indentation) (point)) 'ada-indent)))
2932 ;; 2930 ;;
2933 ;; case..is..when 2931 ;; case..is..when
@@ -2952,7 +2950,7 @@ ORGPOINT is the limit position used in the calculation."
2952 'ada-broken-indent))))) 2950 'ada-broken-indent)))))
2953 2951
2954(defun ada-get-indent-when (orgpoint) 2952(defun ada-get-indent-when (orgpoint)
2955 "Calculates the indentation when point is just before a when statement. 2953 "Calculate the indentation when point is just before a when statement.
2956ORGPOINT is the limit position used in the calculation." 2954ORGPOINT is the limit position used in the calculation."
2957 (let ((cur-indent (save-excursion (back-to-indentation) (point)))) 2955 (let ((cur-indent (save-excursion (back-to-indentation) (point))))
2958 (if (ada-search-ignore-string-comment "[ \t\n]*=>" nil orgpoint) 2956 (if (ada-search-ignore-string-comment "[ \t\n]*=>" nil orgpoint)
@@ -2960,7 +2958,7 @@ ORGPOINT is the limit position used in the calculation."
2960 (list cur-indent 'ada-broken-indent)))) 2958 (list cur-indent 'ada-broken-indent))))
2961 2959
2962(defun ada-get-indent-if (orgpoint) 2960(defun ada-get-indent-if (orgpoint)
2963 "Calculates the indentation when point is just before an if statement. 2961 "Calculate the indentation when point is just before an if statement.
2964ORGPOINT is the limit position used in the calculation." 2962ORGPOINT is the limit position used in the calculation."
2965 (let ((cur-indent (save-excursion (back-to-indentation) (point))) 2963 (let ((cur-indent (save-excursion (back-to-indentation) (point)))
2966 (match-cons nil)) 2964 (match-cons nil))
@@ -2990,7 +2988,7 @@ ORGPOINT is the limit position used in the calculation."
2990 (list cur-indent 'ada-broken-indent)))) 2988 (list cur-indent 'ada-broken-indent))))
2991 2989
2992(defun ada-get-indent-block-start (orgpoint) 2990(defun ada-get-indent-block-start (orgpoint)
2993 "Calculates the indentation when point is at the start of a block. 2991 "Calculate the indentation when point is at the start of a block.
2994ORGPOINT is the limit position used in the calculation." 2992ORGPOINT is the limit position used in the calculation."
2995 (let ((pos nil)) 2993 (let ((pos nil))
2996 (cond 2994 (cond
@@ -3023,7 +3021,7 @@ ORGPOINT is the limit position used in the calculation."
3023 (list (save-excursion (back-to-indentation) (point)) 'ada-indent))))) 3021 (list (save-excursion (back-to-indentation) (point)) 'ada-indent)))))
3024 3022
3025(defun ada-get-indent-subprog (orgpoint) 3023(defun ada-get-indent-subprog (orgpoint)
3026 "Calculates the indentation when point is just before a subprogram. 3024 "Calculate the indentation when point is just before a subprogram.
3027ORGPOINT is the limit position used in the calculation." 3025ORGPOINT is the limit position used in the calculation."
3028 (let ((match-cons nil) 3026 (let ((match-cons nil)
3029 (cur-indent (save-excursion (back-to-indentation) (point))) 3027 (cur-indent (save-excursion (back-to-indentation) (point)))
@@ -3092,7 +3090,7 @@ ORGPOINT is the limit position used in the calculation."
3092 (list cur-indent 'ada-broken-indent))))) 3090 (list cur-indent 'ada-broken-indent)))))
3093 3091
3094(defun ada-get-indent-noindent (orgpoint) 3092(defun ada-get-indent-noindent (orgpoint)
3095 "Calculates the indentation when point is just before a 'noindent stmt'. 3093 "Calculate the indentation when point is just before a 'noindent stmt'.
3096ORGPOINT is the limit position used in the calculation." 3094ORGPOINT is the limit position used in the calculation."
3097 (let ((label 0)) 3095 (let ((label 0))
3098 (save-excursion 3096 (save-excursion
@@ -3146,7 +3144,7 @@ ORGPOINT is the limit position used in the calculation."
3146 'ada-broken-indent))))))) 3144 'ada-broken-indent)))))))
3147 3145
3148(defun ada-get-indent-label (orgpoint) 3146(defun ada-get-indent-label (orgpoint)
3149 "Calculates the indentation when before a label or variable declaration. 3147 "Calculate the indentation when before a label or variable declaration.
3150ORGPOINT is the limit position used in the calculation." 3148ORGPOINT is the limit position used in the calculation."
3151 (let ((match-cons nil) 3149 (let ((match-cons nil)
3152 (cur-indent (save-excursion (back-to-indentation) (point)))) 3150 (cur-indent (save-excursion (back-to-indentation) (point))))
@@ -3178,7 +3176,7 @@ ORGPOINT is the limit position used in the calculation."
3178 (list cur-indent '(- ada-label-indent)))))) 3176 (list cur-indent '(- ada-label-indent))))))
3179 3177
3180(defun ada-get-indent-loop (orgpoint) 3178(defun ada-get-indent-loop (orgpoint)
3181 "Calculates the indentation when just before a loop or a for ... use. 3179 "Calculate the indentation when just before a loop or a for ... use.
3182ORGPOINT is the limit position used in the calculation." 3180ORGPOINT is the limit position used in the calculation."
3183 (let ((match-cons nil) 3181 (let ((match-cons nil)
3184 (pos (point)) 3182 (pos (point))
@@ -3290,7 +3288,7 @@ ORGPOINT is the limit position used in the calculation."
3290 'ada-broken-indent)))))) 3288 'ada-broken-indent))))))
3291 3289
3292(defun ada-get-indent-type (orgpoint) 3290(defun ada-get-indent-type (orgpoint)
3293 "Calculates the indentation when before a type statement. 3291 "Calculate the indentation when before a type statement.
3294ORGPOINT is the limit position used in the calculation." 3292ORGPOINT is the limit position used in the calculation."
3295 (let ((match-dat nil)) 3293 (let ((match-dat nil))
3296 (cond 3294 (cond
@@ -3345,8 +3343,8 @@ ORGPOINT is the limit position used in the calculation."
3345;; ----------------------------------------------------------- 3343;; -----------------------------------------------------------
3346 3344
3347(defun ada-goto-stmt-start () 3345(defun ada-goto-stmt-start ()
3348 "Moves point to the beginning of the statement that point is in or after. 3346 "Move point to the beginning of the statement that point is in or after.
3349Returns the new position of point. 3347Return the new position of point.
3350As a special case, if we are looking at a closing parenthesis, skip to the 3348As a special case, if we are looking at a closing parenthesis, skip to the
3351open parenthesis." 3349open parenthesis."
3352 (let ((match-dat nil) 3350 (let ((match-dat nil)
@@ -3391,9 +3389,9 @@ open parenthesis."
3391 3389
3392 3390
3393(defun ada-search-prev-end-stmt () 3391(defun ada-search-prev-end-stmt ()
3394 "Moves point to previous end-statement. 3392 "Move point to previous end statement.
3395Returns a cons cell whose car is the beginning and whose cdr the end of the 3393Return a cons cell whose car is the beginning and whose cdr
3396match." 3394is the end of the match."
3397 (let ((match-dat nil) 3395 (let ((match-dat nil)
3398 (found nil)) 3396 (found nil))
3399 3397
@@ -3442,7 +3440,7 @@ match."
3442 3440
3443 3441
3444(defun ada-goto-next-non-ws (&optional limit) 3442(defun ada-goto-next-non-ws (&optional limit)
3445 "Skips white spaces, newlines and comments to next non-ws character. 3443 "Skip white spaces, newlines and comments to next non-ws character.
3446Stop the search at LIMIT. 3444Stop the search at LIMIT.
3447Do not call this function from within a string." 3445Do not call this function from within a string."
3448 (unless limit 3446 (unless limit
@@ -3460,8 +3458,8 @@ Do not call this function from within a string."
3460 3458
3461 3459
3462(defun ada-goto-stmt-end (&optional limit) 3460(defun ada-goto-stmt-end (&optional limit)
3463 "Moves point to the end of the statement that point is in or before. 3461 "Move point to the end of the statement that point is in or before.
3464Returns the new position of point or nil if not found. 3462Return the new position of point or nil if not found.
3465Stop the search at LIMIT." 3463Stop the search at LIMIT."
3466 (if (ada-search-ignore-string-comment ada-end-stmt-re nil limit) 3464 (if (ada-search-ignore-string-comment ada-end-stmt-re nil limit)
3467 (point) 3465 (point)
@@ -3469,9 +3467,9 @@ Stop the search at LIMIT."
3469 3467
3470 3468
3471(defun ada-goto-next-word (&optional backward) 3469(defun ada-goto-next-word (&optional backward)
3472 "Moves point to the beginning of the next word of Ada code. 3470 "Move point to the beginning of the next word of Ada code.
3473If BACKWARD is non-nil, jump to the beginning of the previous word. 3471If BACKWARD is non-nil, jump to the beginning of the previous word.
3474Returns the new position of point or nil if not found." 3472Return the new position of point or nil if not found."
3475 (let ((match-cons nil) 3473 (let ((match-cons nil)
3476 (orgpoint (point)) 3474 (orgpoint (point))
3477 (old-syntax (char-to-string (char-syntax ?_)))) 3475 (old-syntax (char-to-string (char-syntax ?_))))
@@ -3499,16 +3497,16 @@ Returns the new position of point or nil if not found."
3499 3497
3500 3498
3501(defun ada-check-matching-start (keyword) 3499(defun ada-check-matching-start (keyword)
3502 "Signals an error if matching block start is not KEYWORD. 3500 "Signal an error if matching block start is not KEYWORD.
3503Moves point to the matching block start." 3501Moves point to the matching block start."
3504 (ada-goto-matching-start 0) 3502 (ada-goto-matching-start 0)
3505 (unless (looking-at (concat "\\<" keyword "\\>")) 3503 (unless (looking-at (concat "\\<" keyword "\\>"))
3506 (error "matching start is not '%s'" keyword))) 3504 (error "Matching start is not '%s'" keyword)))
3507 3505
3508 3506
3509(defun ada-check-defun-name (defun-name) 3507(defun ada-check-defun-name (defun-name)
3510 "Checks if the name of the matching defun really is DEFUN-NAME. 3508 "Check if the name of the matching defun really is DEFUN-NAME.
3511Assumes point to be already positioned by 'ada-goto-matching-start'. 3509Assumes point to be already positioned by `ada-goto-matching-start'.
3512Moves point to the beginning of the declaration." 3510Moves point to the beginning of the declaration."
3513 3511
3514 ;; named block without a `declare' 3512 ;; named block without a `declare'
@@ -3547,12 +3545,12 @@ Moves point to the beginning of the declaration."
3547 ;; should be looking-at the correct name 3545 ;; should be looking-at the correct name
3548 ;; 3546 ;;
3549 (unless (looking-at (concat "\\<" defun-name "\\>")) 3547 (unless (looking-at (concat "\\<" defun-name "\\>"))
3550 (error "matching defun has different name: %s" 3548 (error "Matching defun has different name: %s"
3551 (buffer-substring (point) 3549 (buffer-substring (point)
3552 (progn (forward-sexp 1) (point)))))))) 3550 (progn (forward-sexp 1) (point))))))))
3553 3551
3554(defun ada-goto-matching-decl-start (&optional noerror recursive) 3552(defun ada-goto-matching-decl-start (&optional noerror recursive)
3555 "Moves point to the matching declaration start of the current 'begin'. 3553 "Move point to the matching declaration start of the current 'begin'.
3556If NOERROR is non-nil, it only returns nil if no match was found." 3554If NOERROR is non-nil, it only returns nil if no match was found."
3557 (let ((nest-count 1) 3555 (let ((nest-count 1)
3558 3556
@@ -3709,13 +3707,13 @@ If NOERROR is non-nil, it only returns nil if no match was found."
3709 (looking-at "declare\\|generic"))) 3707 (looking-at "declare\\|generic")))
3710 t 3708 t
3711 (if noerror nil 3709 (if noerror nil
3712 (error "no matching proc/func/task/declare/package/protected"))) 3710 (error "No matching proc/func/task/declare/package/protected")))
3713 )) 3711 ))
3714 3712
3715(defun ada-goto-matching-start (&optional nest-level noerror gotothen) 3713(defun ada-goto-matching-start (&optional nest-level noerror gotothen)
3716 "Moves point to the beginning of a block-start. 3714 "Move point to the beginning of a block-start.
3717Which block depends on the value of NEST-LEVEL, which defaults to zero. If 3715Which block depends on the value of NEST-LEVEL, which defaults to zero.
3718NOERROR is non-nil, it only returns nil if no matching start was found. 3716If NOERROR is non-nil, it only returns nil if no matching start was found.
3719If GOTOTHEN is non-nil, point moves to the 'then' following 'if'." 3717If GOTOTHEN is non-nil, point moves to the 'then' following 'if'."
3720 (let ((nest-count (if nest-level nest-level 0)) 3718 (let ((nest-count (if nest-level nest-level 0))
3721 (found nil) 3719 (found nil)
@@ -3852,16 +3850,16 @@ If GOTOTHEN is non-nil, point moves to the 'then' following 'if'."
3852 (unless (ada-search-ignore-string-comment 3850 (unless (ada-search-ignore-string-comment
3853 "accept" t nil nil 3851 "accept" t nil nil
3854 'word-search-backward) 3852 'word-search-backward)
3855 (error "missing 'accept' in front of 'do'")))) 3853 (error "Missing 'accept' in front of 'do'"))))
3856 (point)) 3854 (point))
3857 3855
3858 (if noerror 3856 (if noerror
3859 nil 3857 nil
3860 (error "no matching start")))))) 3858 (error "No matching start"))))))
3861 3859
3862 3860
3863(defun ada-goto-matching-end (&optional nest-level noerror) 3861(defun ada-goto-matching-end (&optional nest-level noerror)
3864 "Moves point to the end of a block. 3862 "Move point to the end of a block.
3865Which block depends on the value of NEST-LEVEL, which defaults to zero. 3863Which block depends on the value of NEST-LEVEL, which defaults to zero.
3866If NOERROR is non-nil, it only returns nil if found no matching start." 3864If NOERROR is non-nil, it only returns nil if found no matching start."
3867 (let ((nest-count (or nest-level 0)) 3865 (let ((nest-count (or nest-level 0))
@@ -3963,20 +3961,20 @@ If NOERROR is non-nil, it only returns nil if found no matching start."
3963 t 3961 t
3964 (if noerror 3962 (if noerror
3965 nil 3963 nil
3966 (error "no matching end"))) 3964 (error "No matching end")))
3967 )) 3965 ))
3968 3966
3969 3967
3970(defun ada-search-ignore-string-comment 3968(defun ada-search-ignore-string-comment
3971 (search-re &optional backward limit paramlists search-func) 3969 (search-re &optional backward limit paramlists search-func)
3972 "Regexp-search for SEARCH-RE, ignoring comments, strings. 3970 "Regexp-search for SEARCH-RE, ignoring comments, strings.
3973If PARAMLISTS is nil, ignore parameter lists. Returns a cons cell of 3971If PARAMLISTS is nil, ignore parameter lists. Returns a cons cell of
3974begin and end of match data or nil, if not found. 3972begin and end of match data or nil, if not found.
3975The search is done using SEARCH-FUNC, which should search backward if 3973The search is done using SEARCH-FUNC, which should search backward if
3976BACKWARD is non-nil, forward otherwise. SEARCH-FUNC can be optimized in case 3974BACKWARD is non-nil, forward otherwise. SEARCH-FUNC can be optimized
3977we are searching for a constant string. 3975in case we are searching for a constant string.
3978The search stops at pos LIMIT. 3976The search stops at pos LIMIT.
3979Point is moved at the beginning of the search-re." 3977Point is moved at the beginning of the SEARCH-RE."
3980 (let (found 3978 (let (found
3981 begin 3979 begin
3982 end 3980 end
@@ -4061,7 +4059,7 @@ Point is moved at the beginning of the search-re."
4061;; ------------------------------------------------------- 4059;; -------------------------------------------------------
4062 4060
4063(defun ada-in-decl-p () 4061(defun ada-in-decl-p ()
4064 "Returns t if point is inside a declarative part. 4062 "Return t if point is inside a declarative part.
4065Assumes point to be at the end of a statement." 4063Assumes point to be at the end of a statement."
4066 (or (ada-in-paramlist-p) 4064 (or (ada-in-paramlist-p)
4067 (save-excursion 4065 (save-excursion
@@ -4069,7 +4067,7 @@ Assumes point to be at the end of a statement."
4069 4067
4070 4068
4071(defun ada-looking-at-semi-or () 4069(defun ada-looking-at-semi-or ()
4072 "Returns t if looking-at an 'or' following a semicolon." 4070 "Return t if looking at an 'or' following a semicolon."
4073 (save-excursion 4071 (save-excursion
4074 (and (looking-at "\\<or\\>") 4072 (and (looking-at "\\<or\\>")
4075 (progn 4073 (progn
@@ -4079,7 +4077,7 @@ Assumes point to be at the end of a statement."
4079 4077
4080 4078
4081(defun ada-looking-at-semi-private () 4079(defun ada-looking-at-semi-private ()
4082 "Returns t if looking at the start of a private section in a package. 4080 "Return t if looking at the start of a private section in a package.
4083Returns nil if the private is part of the package name, as in 4081Returns nil if the private is part of the package name, as in
4084'private package A is...' (this can only happen at top level)." 4082'private package A is...' (this can only happen at top level)."
4085 (save-excursion 4083 (save-excursion
@@ -4101,7 +4099,7 @@ Returns nil if the private is part of the package name, as in
4101 4099
4102 4100
4103(defun ada-in-paramlist-p () 4101(defun ada-in-paramlist-p ()
4104 "Returns t if point is inside a parameter-list." 4102 "Return t if point is inside a parameter-list."
4105 (save-excursion 4103 (save-excursion
4106 (and 4104 (and
4107 (ada-search-ignore-string-comment "(\\|)" t nil t) 4105 (ada-search-ignore-string-comment "(\\|)" t nil t)
@@ -4151,7 +4149,7 @@ boolean expressions 'and then' and 'or else'."
4151 result)) 4149 result))
4152 4150
4153(defun ada-in-open-paren-p () 4151(defun ada-in-open-paren-p ()
4154 "Returns the position of the first non-ws behind the last unclosed 4152 "Return the position of the first non-ws behind the last unclosed
4155parenthesis, or nil." 4153parenthesis, or nil."
4156 (save-excursion 4154 (save-excursion
4157 (let ((parse (parse-partial-sexp 4155 (let ((parse (parse-partial-sexp
@@ -4186,26 +4184,26 @@ parenthesis, or nil."
4186(defun ada-tab () 4184(defun ada-tab ()
4187 "Do indenting or tabbing according to `ada-tab-policy'. 4185 "Do indenting or tabbing according to `ada-tab-policy'.
4188In Transient Mark mode, if the mark is active, operate on the contents 4186In Transient Mark mode, if the mark is active, operate on the contents
4189of the region. Otherwise, operates only on the current line." 4187of the region. Otherwise, operate only on the current line."
4190 (interactive) 4188 (interactive)
4191 (cond ((eq ada-tab-policy 'indent-rigidly) (ada-tab-hard)) 4189 (cond ((eq ada-tab-policy 'indent-rigidly) (ada-tab-hard))
4192 ((eq ada-tab-policy 'indent-auto) 4190 ((eq ada-tab-policy 'indent-auto)
4193 (if (ada-region-selected) 4191 (if (ada-region-selected)
4194 (ada-indent-region (region-beginning) (region-end)) 4192 (ada-indent-region (region-beginning) (region-end))
4195 (ada-indent-current))) 4193 (ada-indent-current)))
4196 ((eq ada-tab-policy 'always-tab) (error "not implemented")) 4194 ((eq ada-tab-policy 'always-tab) (error "Not implemented"))
4197 )) 4195 ))
4198 4196
4199(defun ada-untab (arg) 4197(defun ada-untab (arg)
4200 "Delete leading indenting according to `ada-tab-policy'." 4198 "Delete leading indenting according to `ada-tab-policy'."
4201 (interactive "P") 4199 (interactive "P")
4202 (cond ((eq ada-tab-policy 'indent-rigidly) (ada-untab-hard)) 4200 (cond ((eq ada-tab-policy 'indent-rigidly) (ada-untab-hard))
4203 ((eq ada-tab-policy 'indent-auto) (error "not implemented")) 4201 ((eq ada-tab-policy 'indent-auto) (error "Not implemented"))
4204 ((eq ada-tab-policy 'always-tab) (error "not implemented")) 4202 ((eq ada-tab-policy 'always-tab) (error "Not implemented"))
4205 )) 4203 ))
4206 4204
4207(defun ada-indent-current-function () 4205(defun ada-indent-current-function ()
4208 "Ada mode version of the indent-line-function." 4206 "Ada mode version of the `indent-line-function'."
4209 (interactive "*") 4207 (interactive "*")
4210 (let ((starting-point (point-marker))) 4208 (let ((starting-point (point-marker)))
4211 (beginning-of-line) 4209 (beginning-of-line)
@@ -4225,7 +4223,7 @@ of the region. Otherwise, operates only on the current line."
4225 (forward-char ada-indent))) 4223 (forward-char ada-indent)))
4226 4224
4227(defun ada-untab-hard () 4225(defun ada-untab-hard ()
4228 "indent current line to previous tab stop." 4226 "Indent current line to previous tab stop."
4229 (interactive) 4227 (interactive)
4230 (let ((bol (save-excursion (progn (beginning-of-line) (point)))) 4228 (let ((bol (save-excursion (progn (beginning-of-line) (point))))
4231 (eol (save-excursion (progn (end-of-line) (point))))) 4229 (eol (save-excursion (progn (end-of-line) (point)))))
@@ -4327,7 +4325,7 @@ of the region. Otherwise, operates only on the current line."
4327;; ------------------------------------------------------------- 4325;; -------------------------------------------------------------
4328 4326
4329(defun ada-move-to-start () 4327(defun ada-move-to-start ()
4330 "Moves point to the matching start of the current Ada structure." 4328 "Move point to the matching start of the current Ada structure."
4331 (interactive) 4329 (interactive)
4332 (let ((pos (point)) 4330 (let ((pos (point))
4333 (previous-syntax-table (syntax-table))) 4331 (previous-syntax-table (syntax-table)))
@@ -4348,7 +4346,7 @@ of the region. Otherwise, operates only on the current line."
4348 (or (looking-at "[ \t]*\\<end\\>") 4346 (or (looking-at "[ \t]*\\<end\\>")
4349 (backward-word 1)) 4347 (backward-word 1))
4350 (or (looking-at "[ \t]*\\<end\\>") 4348 (or (looking-at "[ \t]*\\<end\\>")
4351 (error "not on end ...;"))) 4349 (error "Not on end ...;")))
4352 (ada-goto-matching-start 1) 4350 (ada-goto-matching-start 1)
4353 (setq pos (point)) 4351 (setq pos (point))
4354 4352
@@ -4369,7 +4367,7 @@ of the region. Otherwise, operates only on the current line."
4369 (set-syntax-table previous-syntax-table)))) 4367 (set-syntax-table previous-syntax-table))))
4370 4368
4371(defun ada-move-to-end () 4369(defun ada-move-to-end ()
4372 "Moves point to the matching end of the block around point. 4370 "Move point to the matching end of the block around point.
4373Moves to 'begin' if in a declarative part." 4371Moves to 'begin' if in a declarative part."
4374 (interactive) 4372 (interactive)
4375 (let ((pos (point)) 4373 (let ((pos (point))
@@ -4447,7 +4445,7 @@ Moves to 'begin' if in a declarative part."
4447 (set-syntax-table previous-syntax-table)))) 4445 (set-syntax-table previous-syntax-table))))
4448 4446
4449(defun ada-next-procedure () 4447(defun ada-next-procedure ()
4450 "Moves point to next procedure." 4448 "Move point to next procedure."
4451 (interactive) 4449 (interactive)
4452 (end-of-line) 4450 (end-of-line)
4453 (if (re-search-forward ada-procedure-start-regexp nil t) 4451 (if (re-search-forward ada-procedure-start-regexp nil t)
@@ -4455,7 +4453,7 @@ Moves to 'begin' if in a declarative part."
4455 (error "No more functions/procedures/tasks"))) 4453 (error "No more functions/procedures/tasks")))
4456 4454
4457(defun ada-previous-procedure () 4455(defun ada-previous-procedure ()
4458 "Moves point to previous procedure." 4456 "Move point to previous procedure."
4459 (interactive) 4457 (interactive)
4460 (beginning-of-line) 4458 (beginning-of-line)
4461 (if (re-search-backward ada-procedure-start-regexp nil t) 4459 (if (re-search-backward ada-procedure-start-regexp nil t)
@@ -4463,7 +4461,7 @@ Moves to 'begin' if in a declarative part."
4463 (error "No more functions/procedures/tasks"))) 4461 (error "No more functions/procedures/tasks")))
4464 4462
4465(defun ada-next-package () 4463(defun ada-next-package ()
4466 "Moves point to next package." 4464 "Move point to next package."
4467 (interactive) 4465 (interactive)
4468 (end-of-line) 4466 (end-of-line)
4469 (if (re-search-forward ada-package-start-regexp nil t) 4467 (if (re-search-forward ada-package-start-regexp nil t)
@@ -4471,7 +4469,7 @@ Moves to 'begin' if in a declarative part."
4471 (error "No more packages"))) 4469 (error "No more packages")))
4472 4470
4473(defun ada-previous-package () 4471(defun ada-previous-package ()
4474 "Moves point to previous package." 4472 "Move point to previous package."
4475 (interactive) 4473 (interactive)
4476 (beginning-of-line) 4474 (beginning-of-line)
4477 (if (re-search-backward ada-package-start-regexp nil t) 4475 (if (re-search-backward ada-package-start-regexp nil t)
@@ -4591,7 +4589,7 @@ Moves to 'begin' if in a declarative part."
4591 4589
4592 4590
4593(defun ada-create-menu () 4591(defun ada-create-menu ()
4594 "Create the ada menu as shown in the menu bar." 4592 "Create the Ada menu as shown in the menu bar."
4595 (let ((m '("Ada" 4593 (let ((m '("Ada"
4596 ("Help" 4594 ("Help"
4597 ["Ada Mode" (info "ada-mode") t] 4595 ["Ada Mode" (info "ada-mode") t]
@@ -4788,28 +4786,28 @@ Moves to 'begin' if in a declarative part."
4788 (ada-indent-region beg end))) 4786 (ada-indent-region beg end)))
4789 4787
4790(defun ada-fill-comment-paragraph-justify () 4788(defun ada-fill-comment-paragraph-justify ()
4791 "Fills current comment paragraph and justifies each line as well." 4789 "Fill current comment paragraph and justify each line as well."
4792 (interactive) 4790 (interactive)
4793 (ada-fill-comment-paragraph 'full)) 4791 (ada-fill-comment-paragraph 'full))
4794 4792
4795(defun ada-fill-comment-paragraph-postfix () 4793(defun ada-fill-comment-paragraph-postfix ()
4796 "Fills current comment paragraph and justifies each line as well. 4794 "Fill current comment paragraph and justify each line as well.
4797Adds `ada-fill-comment-postfix' at the end of each line." 4795Adds `ada-fill-comment-postfix' at the end of each line."
4798 (interactive) 4796 (interactive)
4799 (ada-fill-comment-paragraph 'full t)) 4797 (ada-fill-comment-paragraph 'full t))
4800 4798
4801(defun ada-fill-comment-paragraph (&optional justify postfix) 4799(defun ada-fill-comment-paragraph (&optional justify postfix)
4802 "Fills the current comment paragraph. 4800 "Fill the current comment paragraph.
4803If JUSTIFY is non-nil, each line is justified as well. 4801If JUSTIFY is non-nil, each line is justified as well.
4804If POSTFIX and JUSTIFY are non-nil, `ada-fill-comment-postfix' is appended 4802If POSTFIX and JUSTIFY are non-nil, `ada-fill-comment-postfix' is appended
4805to each filled and justified line. 4803to each line filled and justified.
4806The paragraph is indented on the first line." 4804The paragraph is indented on the first line."
4807 (interactive "P") 4805 (interactive "P")
4808 4806
4809 ;; check if inside comment or just in front a comment 4807 ;; check if inside comment or just in front a comment
4810 (if (and (not (ada-in-comment-p)) 4808 (if (and (not (ada-in-comment-p))
4811 (not (looking-at "[ \t]*--"))) 4809 (not (looking-at "[ \t]*--")))
4812 (error "not inside comment")) 4810 (error "Not inside comment"))
4813 4811
4814 (let* (indent from to 4812 (let* (indent from to
4815 (opos (point-marker)) 4813 (opos (point-marker))
@@ -4920,8 +4918,8 @@ This is a generic function, independent from any compiler."
4920 4918
4921(defun ada-other-file-name () 4919(defun ada-other-file-name ()
4922 "Return the name of the other file. 4920 "Return the name of the other file.
4923The name returned is the body if current-buffer is the spec, or the spec 4921The name returned is the body if `current-buffer' is the spec,
4924otherwise." 4922or the spec otherwise."
4925 4923
4926 (let ((is-spec nil) 4924 (let ((is-spec nil)
4927 (is-body nil) 4925 (is-body nil)
@@ -4990,15 +4988,15 @@ Redefines the function `ff-which-function-are-we-in'."
4990 4988
4991 4989
4992(defvar ada-last-which-function-line -1 4990(defvar ada-last-which-function-line -1
4993 "Last on which ada-which-function was called") 4991 "Last on which `ada-which-function' was called.")
4994(defvar ada-last-which-function-subprog 0 4992(defvar ada-last-which-function-subprog 0
4995 "Last subprogram name returned by ada-which-function") 4993 "Last subprogram name returned by `ada-which-function'.")
4996(make-variable-buffer-local 'ada-last-which-function-subprog) 4994(make-variable-buffer-local 'ada-last-which-function-subprog)
4997(make-variable-buffer-local 'ada-last-which-function-line) 4995(make-variable-buffer-local 'ada-last-which-function-line)
4998 4996
4999 4997
5000(defun ada-which-function () 4998(defun ada-which-function ()
5001 "Returns the name of the function whose body the point is in. 4999 "Return the name of the function whose body the point is in.
5002This function works even in the case of nested subprograms, whereas the 5000This function works even in the case of nested subprograms, whereas the
5003standard Emacs function `which-function' does not. 5001standard Emacs function `which-function' does not.
5004Since the search can be long, the results are cached." 5002Since the search can be long, the results are cached."
@@ -5082,8 +5080,8 @@ Since the search can be long, the results are cached."
5082 (goto-char (point-min)))))) 5080 (goto-char (point-min))))))
5083 5081
5084(defun ada-get-body-name (&optional spec-name) 5082(defun ada-get-body-name (&optional spec-name)
5085 "Returns the file name for the body of SPEC-NAME. 5083 "Return the file name for the body of SPEC-NAME.
5086If SPEC-NAME is nil, returns the body for the current package. 5084If SPEC-NAME is nil, return the body for the current package.
5087Returns nil if no body was found." 5085Returns nil if no body was found."
5088 (interactive) 5086 (interactive)
5089 5087
@@ -5230,7 +5228,7 @@ Returns nil if no body was found."
5230;; --------------------------------------------------------- 5228;; ---------------------------------------------------------
5231 5229
5232(defun ada-outline-level () 5230(defun ada-outline-level ()
5233 "This is so that `current-column` DTRT in otherwise-hidden text" 5231 "This is so that `current-column' DTRT in otherwise-hidden text."
5234 ;; patch from Dave Love <fx@gnu.org> 5232 ;; patch from Dave Love <fx@gnu.org>
5235 (let (buffer-invisibility-spec) 5233 (let (buffer-invisibility-spec)
5236 (save-excursion 5234 (save-excursion
@@ -5242,10 +5240,10 @@ Returns nil if no body was found."
5242;; --------------------------------------------------------- 5240;; ---------------------------------------------------------
5243 5241
5244(defun ada-narrow-to-defun (&optional arg) 5242(defun ada-narrow-to-defun (&optional arg)
5245 "make text outside current subprogram invisible. 5243 "Make text outside current subprogram invisible.
5246The subprogram visible is the one that contains or follow point. 5244The subprogram visible is the one that contains or follow point.
5247Optional ARG is ignored. 5245Optional ARG is ignored.
5248Use `M-x widen' to go back to the full visibility for the buffer" 5246Use `M-x widen' to go back to the full visibility for the buffer."
5249 5247
5250 (interactive) 5248 (interactive)
5251 (save-excursion 5249 (save-excursion
@@ -5276,8 +5274,8 @@ Use `M-x widen' to go back to the full visibility for the buffer"
5276 5274
5277(defun ada-gen-treat-proc (match) 5275(defun ada-gen-treat-proc (match)
5278 "Make dummy body of a procedure/function specification. 5276 "Make dummy body of a procedure/function specification.
5279MATCH is a cons cell containing the start and end location of the last search 5277MATCH is a cons cell containing the start and end locations of the last search
5280for ada-procedure-start-regexp." 5278for `ada-procedure-start-regexp'."
5281 (goto-char (car match)) 5279 (goto-char (car match))
5282 (let (func-found procname functype) 5280 (let (func-found procname functype)
5283 (cond 5281 (cond
@@ -5398,7 +5396,7 @@ This function typically is to be hooked into `ff-file-created-hooks'."
5398 (setq body-file (ada-get-body-name)) 5396 (setq body-file (ada-get-body-name))
5399 (if body-file 5397 (if body-file
5400 (find-file body-file) 5398 (find-file body-file)
5401 (error "No body found for the package. Create it first")) 5399 (error "No body found for the package. Create it first"))
5402 5400
5403 (save-restriction 5401 (save-restriction
5404 (widen) 5402 (widen)
diff --git a/lisp/progmodes/cc-align.el b/lisp/progmodes/cc-align.el
index 139bfc8aa5a..849e98053ad 100644
--- a/lisp/progmodes/cc-align.el
+++ b/lisp/progmodes/cc-align.el
@@ -158,7 +158,7 @@ foo (xyz, aaa + bbb + ccc
158Only continuation lines like this are touched, nil is returned on lines 158Only continuation lines like this are touched, nil is returned on lines
159which are the start of an argument. 159which are the start of an argument.
160 160
161Within a gcc asm block, \":\" is recognised as an argument separator, 161Within a gcc asm block, \":\" is recognized as an argument separator,
162but of course only between operand specifications, not in the expressions 162but of course only between operand specifications, not in the expressions
163for the operands. 163for the operands.
164 164
diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el
index 419803a7ada..c7c1290604c 100644
--- a/lisp/progmodes/cc-awk.el
+++ b/lisp/progmodes/cc-awk.el
@@ -69,7 +69,7 @@
69 ;; / can delimit regexes or be a division operator. By default we assume 69 ;; / can delimit regexes or be a division operator. By default we assume
70 ;; that it is a division sign, and fix the regexp operator cases with 70 ;; that it is a division sign, and fix the regexp operator cases with
71 ;; `font-lock-syntactic-keywords'. 71 ;; `font-lock-syntactic-keywords'.
72 (modify-syntax-entry ?/ "." st) ; ACM 2002/4/27. 72 (modify-syntax-entry ?/ "." st) ; ACM 2002/4/27.
73 (modify-syntax-entry ?* "." st) 73 (modify-syntax-entry ?* "." st)
74 (modify-syntax-entry ?+ "." st) 74 (modify-syntax-entry ?+ "." st)
75 (modify-syntax-entry ?- "." st) 75 (modify-syntax-entry ?- "." st)
@@ -85,7 +85,7 @@
85 "Syntax table in use in AWK Mode buffers.") 85 "Syntax table in use in AWK Mode buffers.")
86 86
87;; ACM, 2002/5/29: 87;; ACM, 2002/5/29:
88;; 88;;
89;; The next section of code is about determining whether or not an AWK 89;; The next section of code is about determining whether or not an AWK
90;; statement is complete or not. We use this to indent the following line. 90;; statement is complete or not. We use this to indent the following line.
91;; The determination is pretty straightforward in C, where a statement ends 91;; The determination is pretty straightforward in C, where a statement ends
@@ -199,7 +199,7 @@
199 ;; Kludge: If c-backward-syntactic-ws gets stuck at a BOL, it is likely 199 ;; Kludge: If c-backward-syntactic-ws gets stuck at a BOL, it is likely
200 ;; that the previous line contains an unterminated string (without \). In 200 ;; that the previous line contains an unterminated string (without \). In
201 ;; this case, assume that the previous line's c-awk-NL-prop is a ;. 201 ;; this case, assume that the previous line's c-awk-NL-prop is a ;.
202 ;; 202 ;;
203 ;; POINT MUST BE AT THE START OF A LINE when calling this function. This 203 ;; POINT MUST BE AT THE START OF A LINE when calling this function. This
204 ;; is to ensure that the various backward-comment functions will work 204 ;; is to ensure that the various backward-comment functions will work
205 ;; properly. 205 ;; properly.
@@ -237,13 +237,13 @@
237 ;; Calculate and set the value of the c-awk-NL-prop on the immediately 237 ;; Calculate and set the value of the c-awk-NL-prop on the immediately
238 ;; preceding EOL. This may also involve doing the same for several 238 ;; preceding EOL. This may also involve doing the same for several
239 ;; preceding EOLs. 239 ;; preceding EOLs.
240 ;; 240 ;;
241 ;; NOTE that if the property was already set, we return it without 241 ;; NOTE that if the property was already set, we return it without
242 ;; recalculation. (This is by accident rather than design.) 242 ;; recalculation. (This is by accident rather than design.)
243 ;; 243 ;;
244 ;; Return the property which got set (or was already set) on the previous 244 ;; Return the property which got set (or was already set) on the previous
245 ;; line. Return nil if we hit BOB. 245 ;; line. Return nil if we hit BOB.
246 ;; 246 ;;
247 ;; See c-awk-after-if-for-while-condition-p for a description of DO-LIM. 247 ;; See c-awk-after-if-for-while-condition-p for a description of DO-LIM.
248 (save-excursion 248 (save-excursion
249 (save-match-data 249 (save-match-data
@@ -298,7 +298,7 @@
298 ;; if necessary. (As a special case, the property doesn't get set on an 298 ;; if necessary. (As a special case, the property doesn't get set on an
299 ;; empty line at EOB (there's no position to set the property on), but the 299 ;; empty line at EOB (there's no position to set the property on), but the
300 ;; function returns the property value an EOL would have got.) 300 ;; function returns the property value an EOL would have got.)
301 ;; 301 ;;
302 ;; See c-awk-after-if-for-while-condition-p for a description of DO-LIM. 302 ;; See c-awk-after-if-for-while-condition-p for a description of DO-LIM.
303 (save-excursion 303 (save-excursion
304 (let ((extra-nl nil)) 304 (let ((extra-nl nil))
@@ -339,7 +339,7 @@
339 (and (bolp) 339 (and (bolp)
340 (eq (c-awk-get-NL-prop-prev-line do-lim) ?\;))) 340 (eq (c-awk-get-NL-prop-prev-line do-lim) ?\;)))
341 341
342(defun c-awk-backward-syntactic-ws (&optional lim) 342(defun c-awk-backward-syntactic-ws (&optional lim)
343;; Skip backwards over awk-syntactic whitespace. This is whitespace 343;; Skip backwards over awk-syntactic whitespace. This is whitespace
344;; characters, comments, and NEWLINES WHICH AREN'T "VIRTUAL SEMICOLONS". For 344;; characters, comments, and NEWLINES WHICH AREN'T "VIRTUAL SEMICOLONS". For
345;; this function, a newline isn't a "virtual semicolon" if that line ends with 345;; this function, a newline isn't a "virtual semicolon" if that line ends with
@@ -431,7 +431,7 @@
431;; Go back to the start of the (apparent) current line (or the start of the 431;; Go back to the start of the (apparent) current line (or the start of the
432;; line containing POS), returning the buffer position of that point. I.e., 432;; line containing POS), returning the buffer position of that point. I.e.,
433;; go back to the last line which doesn't have an escaped EOL before it. 433;; go back to the last line which doesn't have an escaped EOL before it.
434;; 434;;
435;; This is guaranteed to be "safe" for syntactic analysis, i.e. outwith any 435;; This is guaranteed to be "safe" for syntactic analysis, i.e. outwith any
436;; comment, string or regexp. IT MAY WELL BE that this function should not be 436;; comment, string or regexp. IT MAY WELL BE that this function should not be
437;; executed on a narrowed buffer. 437;; executed on a narrowed buffer.
@@ -470,7 +470,7 @@
470;; Matches a newline, or the end of buffer. 470;; Matches a newline, or the end of buffer.
471 471
472;; "Space" regular expressions. 472;; "Space" regular expressions.
473(defconst c-awk-escaped-nl "\\\\[\n\r]") 473(defconst c-awk-escaped-nl "\\\\[\n\r]")
474;; Matches an escaped newline. 474;; Matches an escaped newline.
475(defconst c-awk-escaped-nls* (concat "\\(" c-awk-escaped-nl "\\)*")) 475(defconst c-awk-escaped-nls* (concat "\\(" c-awk-escaped-nl "\\)*"))
476;; Matches a possibly empty sequence of escaped newlines. Used in 476;; Matches a possibly empty sequence of escaped newlines. Used in
@@ -546,7 +546,7 @@
546;; Matches the inside of an AWK regexp (i.e. without the enclosing /s) 546;; Matches the inside of an AWK regexp (i.e. without the enclosing /s)
547(defconst c-awk-regexp-without-end-re 547(defconst c-awk-regexp-without-end-re
548 (concat "/" c-awk-regexp-innards-re)) 548 (concat "/" c-awk-regexp-innards-re))
549;; Matches an AWK regexp up to, but not including, any terminating /. 549;; Matches an AWK regexp up to, but not including, any terminating /.
550 550
551;; REGEXPS used for scanning an AWK buffer in order to decide IF A '/' IS A 551;; REGEXPS used for scanning an AWK buffer in order to decide IF A '/' IS A
552;; REGEXP OPENER OR A DIVISION SIGN. By "state" in the following is meant 552;; REGEXP OPENER OR A DIVISION SIGN. By "state" in the following is meant
@@ -714,7 +714,7 @@
714 (c-awk-syntax-tablify-string) 714 (c-awk-syntax-tablify-string)
715 (c-awk-syntax-tablify-/ anchor anchor-state-/div))) 715 (c-awk-syntax-tablify-/ anchor anchor-state-/div)))
716 716
717 ;; Skip any further "harmless" lines before the next tricky one. 717 ;; Skip any further "harmless" lines before the next tricky one.
718 (if (search-forward-regexp c-awk-harmless-lines+-here-re nil t) 718 (if (search-forward-regexp c-awk-harmless-lines+-here-re nil t)
719 (setq anchor-state-/div nil))) 719 (setq anchor-state-/div nil)))
720 nil)) 720 nil))
@@ -803,7 +803,7 @@ many times. Negative arg -N means move forward to Nth following beginning of
803defun. Returns t unless search stops due to beginning or end of buffer. 803defun. Returns t unless search stops due to beginning or end of buffer.
804 804
805By a \"defun\" is meant either a pattern-action pair or a function. The start 805By a \"defun\" is meant either a pattern-action pair or a function. The start
806of a defun is recognised as code starting at column zero which is neither a 806of a defun is recognized as code starting at column zero which is neither a
807closing brace nor a comment nor a continuation of the previous line. Unlike 807closing brace nor a comment nor a continuation of the previous line. Unlike
808in some other modes, having an opening brace at column 0 is neither necessary 808in some other modes, having an opening brace at column 0 is neither necessary
809nor helpful." 809nor helpful."
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index 29946dc4682..e78ec2c508d 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -193,6 +193,10 @@
193 193
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 ;; This face should be called `c-invalid' for consistency with the
197 ;; rest of emacs, but as it's only used in very old versions of Emacs,
198 ;; we leave it unchanged (the face-alias mechanism doesn't exist in
199 ;; those old versions).
196 (defface c-invalid-face 200 (defface c-invalid-face
197 '((((class color) (background light)) (:foreground "red1")) 201 '((((class color) (background light)) (:foreground "red1"))
198 (((class color)) (:foreground "hotpink")) 202 (((class color)) (:foreground "hotpink"))
@@ -203,8 +207,8 @@
203;; To make hard spaces visible an inverted version of 207;; To make hard spaces visible an inverted version of
204;; `c-invalid-face-name' is used. Since font-lock in Emacs expands 208;; `c-invalid-face-name' is used. Since font-lock in Emacs expands
205;; all face names in `font-lock-keywords' as variables we need to have 209;; all face names in `font-lock-keywords' as variables we need to have
206;; a variable for it that resolves to its own name. 210;; a variable for it.
207(defconst c-nonbreakable-space-face 'c-nonbreakable-space-face) 211(defconst c-nonbreakable-space-face 'c-nonbreakable-space)
208 212
209(cc-bytecomp-defun face-inverse-video-p) ; Only in Emacs. 213(cc-bytecomp-defun face-inverse-video-p) ; Only in Emacs.
210(cc-bytecomp-defun face-property-instance) ; Only in XEmacs. 214(cc-bytecomp-defun face-property-instance) ; Only in XEmacs.
@@ -511,9 +515,9 @@ stuff. Used on level 1 and higher."
511 (eval . (list 515 (eval . (list
512 "\240" 516 "\240"
513 0 (progn 517 0 (progn
514 (unless (c-face-name-p 'c-nonbreakable-space-face) 518 (unless (c-face-name-p c-nonbreakable-space-face)
515 (c-make-inverse-face c-invalid-face-name 519 (c-make-inverse-face c-invalid-face-name
516 'c-nonbreakable-space-face)) 520 c-nonbreakable-space-face))
517 'c-nonbreakable-space-face))) 521 'c-nonbreakable-space-face)))
518 )) 522 ))
519 523
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 9826c995b97..d95c0294c4d 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -5209,7 +5209,7 @@ side-effect of memorizing only."
5209 (set (car setting) (cdr setting))))) 5209 (set (car setting) (cdr setting)))))
5210 5210
5211(defun cperl-set-style-back () 5211(defun cperl-set-style-back ()
5212 "Restore a style memorised by `cperl-set-style'." 5212 "Restore a style memorized by `cperl-set-style'."
5213 (interactive) 5213 (interactive)
5214 (or cperl-old-style (error "The style was not changed")) 5214 (or cperl-old-style (error "The style was not changed"))
5215 (let (setting) 5215 (let (setting)
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index 195875842a3..f3657a0a279 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -250,17 +250,20 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies
250 ;; rms: I removed the code to match parens around the line number 250 ;; rms: I removed the code to match parens around the line number
251 ;; because it causes confusion and so we will find out if anyone needs it. 251 ;; because it causes confusion and so we will find out if anyone needs it.
252 ;; It causes confusion with a file name that contains a number in parens. 252 ;; It causes confusion with a file name that contains a number in parens.
253 '(("^\\(.+?\\)[: \t]+\ 253 '(("^\\(.+?\\)\\([: \t]\\)+\
254\\([0-9]+\\)\\([.:]?\\)\\([0-9]+\\)?\ 254\\([0-9]+\\)\\([.:]?\\)\\([0-9]+\\)?\
255\\(?:-\\(?:\\([0-9]+\\)\\3\\)?\\.?\\([0-9]+\\)?\\)?[: \t]" 1 (2 . 5) (4 . 6)) 255\\(?:-\\(?:\\([0-9]+\\)\\4\\)?\\.?\\([0-9]+\\)?\\)?\\2"
256 ("^\\(.+?\\)[:(]+\\([0-9]+\\)\\([:)]\\).*?\\(\033\\[01;41m\\)\\(.*?\\)\\(\033\\[00m\\(\033\\[K\\)?\\)" 256 1 (3 . 6) (5 . 7))
257 1 2 257 ("^\\(\\(.+?\\):\\([0-9]+\\):\\).*?\
258\\(\033\\[01;41m\\)\\(.*?\\)\\(\033\\[00m\\(?:\033\\[K\\)?\\)"
259 2 3
258 ;; Calculate column positions (beg . end) of first grep match on a line 260 ;; Calculate column positions (beg . end) of first grep match on a line
259 ((lambda () 261 ((lambda ()
260 (setq compilation-error-screen-columns nil) 262 (setq compilation-error-screen-columns nil)
261 (- (match-beginning 5) (match-end 3) 8)) 263 (- (match-beginning 5) (match-end 1) 8))
262 . 264 .
263 (lambda () (- (match-end 5) (match-end 3) 8)))) 265 (lambda () (- (match-end 5) (match-end 1) 8)))
266 nil 1)
264 ("^Binary file \\(.+\\) matches$" 1 nil nil 1)) 267 ("^Binary file \\(.+\\) matches$" 1 nil nil 1))
265 "Regexp used to match grep hits. See `compilation-error-regexp-alist'.") 268 "Regexp used to match grep hits. See `compilation-error-regexp-alist'.")
266 269
@@ -293,7 +296,7 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies
293 (1 compilation-warning-face) 296 (1 compilation-warning-face)
294 (2 compilation-line-face)) 297 (2 compilation-line-face))
295 ;; Highlight grep matches and delete markers 298 ;; Highlight grep matches and delete markers
296 ("\\(\033\\[01;41m\\)\\(.*?\\)\\(\033\\[00m\\(\033\\[K\\)?\\)" 299 ("\\(\033\\[01;41m\\)\\(.*?\\)\\(\033\\[00m\\(?:\033\\[K\\)?\\)"
297 ;; Refontification does not work after the markers have been 300 ;; Refontification does not work after the markers have been
298 ;; deleted. So we use the font-lock-face property here as Font 301 ;; deleted. So we use the font-lock-face property here as Font
299 ;; Lock does not clear that. 302 ;; Lock does not clear that.
@@ -517,7 +520,10 @@ temporarily highlight in visited source lines."
517 (set (make-local-variable 'compilation-error-face) 520 (set (make-local-variable 'compilation-error-face)
518 grep-hit-face) 521 grep-hit-face)
519 (set (make-local-variable 'compilation-error-regexp-alist) 522 (set (make-local-variable 'compilation-error-regexp-alist)
520 grep-regexp-alist)) 523 grep-regexp-alist)
524 ;; Set `font-lock-lines-before' to 0 to not refontify the previous
525 ;; line where grep markers may be already removed.
526 (set (make-local-variable 'font-lock-lines-before) 0))
521 527
522;;;###autoload 528;;;###autoload
523(defun grep-find (command-args) 529(defun grep-find (command-args)
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 820e619f331..273c3296180 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -1369,7 +1369,7 @@ the leftover unidentified statements containing an equal sign." )
1369;; Note that this is documented in the v18 manuals as being a string 1369;; Note that this is documented in the v18 manuals as being a string
1370;; of length one rather than a single character. 1370;; of length one rather than a single character.
1371;; The code in this file accepts either format for compatibility. 1371;; The code in this file accepts either format for compatibility.
1372(defvar idlwave-comment-indent-char ?\ 1372(defvar idlwave-comment-indent-char ?\
1373 "Character to be inserted for IDL comment indentation. 1373 "Character to be inserted for IDL comment indentation.
1374Normally a space.") 1374Normally a space.")
1375 1375
@@ -5493,8 +5493,8 @@ When we force a method or a method keyword, CLASS can specify the class."
5493 (error "Nothing known about procedure %s" 5493 (error "Nothing known about procedure %s"
5494 (idlwave-make-full-name class name))) 5494 (idlwave-make-full-name class name)))
5495 (setq list (idlwave-fix-keywords name 'pro class list super-classes)) 5495 (setq list (idlwave-fix-keywords name 'pro class list super-classes))
5496 (unless list (error (format "No keywords available for procedure %s" 5496 (unless list (error "No keywords available for procedure %s"
5497 (idlwave-make-full-name class name)))) 5497 (idlwave-make-full-name class name)))
5498 (setq idlwave-completion-help-info 5498 (setq idlwave-completion-help-info
5499 (list 'keyword name type-selector class-selector entry super-classes)) 5499 (list 'keyword name type-selector class-selector entry super-classes))
5500 (idlwave-complete-in-buffer 5500 (idlwave-complete-in-buffer
@@ -5531,8 +5531,8 @@ When we force a method or a method keyword, CLASS can specify the class."
5531 (concat idlwave-current-obj_new-class 5531 (concat idlwave-current-obj_new-class
5532 "::Init (via OBJ_NEW)") 5532 "::Init (via OBJ_NEW)")
5533 (idlwave-make-full-name class name))) 5533 (idlwave-make-full-name class name)))
5534 (unless list (error (format "No keywords available for function %s" 5534 (unless list (error "No keywords available for function %s"
5535 msg-name))) 5535 msg-name))
5536 (setq idlwave-completion-help-info 5536 (setq idlwave-completion-help-info
5537 (list 'keyword name type-selector class-selector nil super-classes)) 5537 (list 'keyword name type-selector class-selector nil super-classes))
5538 (idlwave-complete-in-buffer 5538 (idlwave-complete-in-buffer
diff --git a/lisp/progmodes/inf-lisp.el b/lisp/progmodes/inf-lisp.el
index ad7c4cb4cf2..df7f5b25526 100644
--- a/lisp/progmodes/inf-lisp.el
+++ b/lisp/progmodes/inf-lisp.el
@@ -161,7 +161,7 @@ but it works only in Common Lisp."
161 161
162;;;###autoload 162;;;###autoload
163(defcustom inferior-lisp-prompt "^[^> \n]*>+:? *" 163(defcustom inferior-lisp-prompt "^[^> \n]*>+:? *"
164 "Regexp to recognise prompts in the Inferior Lisp mode. 164 "Regexp to recognize prompts in the Inferior Lisp mode.
165Defaults to \"^[^> \\n]*>+:? *\", which works pretty good for Lucid, kcl, 165Defaults to \"^[^> \\n]*>+:? *\", which works pretty good for Lucid, kcl,
166and franz. This variable is used to initialize `comint-prompt-regexp' in the 166and franz. This variable is used to initialize `comint-prompt-regexp' in the
167Inferior Lisp buffer. 167Inferior Lisp buffer.
diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el
index d9c38349b49..e53b08b8c14 100644
--- a/lisp/progmodes/make-mode.el
+++ b/lisp/progmodes/make-mode.el
@@ -105,6 +105,7 @@
105 "Face to use for highlighting leading spaces in Font-Lock mode." 105 "Face to use for highlighting leading spaces in Font-Lock mode."
106 :group 'faces 106 :group 'faces
107 :group 'makefile) 107 :group 'makefile)
108(put 'makefile-space-face 'face-alias 'makefile-space)
108 109
109(defface makefile-targets 110(defface makefile-targets
110 ;; This needs to go along both with foreground and background colors (i.e. shell) 111 ;; This needs to go along both with foreground and background colors (i.e. shell)
diff --git a/lisp/progmodes/modula2.el b/lisp/progmodes/modula2.el
index 5fd3dbcb11b..802ed26eb1f 100644
--- a/lisp/progmodes/modula2.el
+++ b/lisp/progmodes/modula2.el
@@ -309,7 +309,7 @@ followed by the first character of the construct.
309 "Build skeleton FOR loop statement, prompting for the loop parameters." 309 "Build skeleton FOR loop statement, prompting for the loop parameters."
310 (interactive) 310 (interactive)
311 (insert "FOR ") 311 (insert "FOR ")
312 (let ((name (read-string "Loop Initialiser: ")) limit by) 312 (let ((name (read-string "Loop Initializer: ")) limit by)
313 (insert name " TO ") 313 (insert name " TO ")
314 (setq limit (read-string "Limit: ")) 314 (setq limit (read-string "Limit: "))
315 (insert limit) 315 (insert limit)
diff --git a/lisp/progmodes/ps-mode.el b/lisp/progmodes/ps-mode.el
index 2d8f1d80aae..5a4d8eb4915 100644
--- a/lisp/progmodes/ps-mode.el
+++ b/lisp/progmodes/ps-mode.el
@@ -1,11 +1,11 @@
1;;; ps-mode.el --- PostScript mode for GNU Emacs 1;;; ps-mode.el --- PostScript mode for GNU Emacs
2 2
3;; Copyright (C) 1999, 2001 Free Software Foundation, Inc. 3;; Copyright (C) 1999, 2001, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Peter Kleiweg <kleiweg@let.rug.nl> 5;; Author: Peter Kleiweg <p.c.j.kleiweg@rug.nl>
6;; Maintainer: Peter Kleiweg <kleiweg@let.rug.nl> 6;; Maintainer: Peter Kleiweg <p.c.j.kleiweg@rug.nl>
7;; Created: 20 Aug 1997 7;; Created: 20 Aug 1997
8;; Version: 1.1g, 9 Nov 2001 8;; Version: 1.1h, 16 Jun 2005
9;; Keywords: PostScript, languages 9;; Keywords: PostScript, languages
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
@@ -30,8 +30,8 @@
30 30
31;;; Code: 31;;; Code:
32 32
33(defconst ps-mode-version "1.1g, 9 Nov 2001") 33(defconst ps-mode-version "1.1h, 16 Jun 2005")
34(defconst ps-mode-maintainer-address "Peter Kleiweg <kleiweg@let.rug.nl>") 34(defconst ps-mode-maintainer-address "Peter Kleiweg <p.c.j.kleiweg@rug.nl>")
35 35
36(require 'easymenu) 36(require 'easymenu)
37 37
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 9885e9ae039..54e7ab8a049 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -2305,7 +2305,7 @@ old environment. Used for consistent searching."
2305 (progn 2305 (progn
2306 (when file-opened (kill-buffer (current-buffer))) 2306 (when file-opened (kill-buffer (current-buffer)))
2307 (set-buffer source-buffer) 2307 (set-buffer source-buffer)
2308 (error (format "ERROR: File cannot be opened: \"%s\"" ,file-name))) 2308 (error "ERROR: File cannot be opened: \"%s\"" ,file-name))
2309 (vhdl-warning (format "File cannot be opened: \"%s\"" ,file-name) t) 2309 (vhdl-warning (format "File cannot be opened: \"%s\"" ,file-name) t)
2310 nil)))) 2310 nil))))
2311 (condition-case info 2311 (condition-case info
@@ -6027,8 +6027,8 @@ Returns the location of the corresponding begin keyword, unless search
6027stops due to beginning or end of buffer. 6027stops due to beginning or end of buffer.
6028Note that if point is between the \"libunit\" keyword and the 6028Note that if point is between the \"libunit\" keyword and the
6029corresponding \"begin\" keyword, then that libunit will not be 6029corresponding \"begin\" keyword, then that libunit will not be
6030recognised, and the search will continue backwards. If point is 6030recognized, and the search will continue backwards. If point is
6031at the \"begin\" keyword, then the defun will be recognised. The 6031at the \"begin\" keyword, then the defun will be recognized. The
6032returned point is at the first character of the \"libunit\" keyword." 6032returned point is at the first character of the \"libunit\" keyword."
6033 (let ((last-forward (point)) 6033 (let ((last-forward (point))
6034 (last-backward 6034 (last-backward
@@ -15358,7 +15358,7 @@ component instantiation."
15358 (cons constant-name 15358 (cons constant-name
15359 (if (match-string 1) 15359 (if (match-string 1)
15360 (or (aget generic-alist (match-string 2) t) 15360 (or (aget generic-alist (match-string 2) t)
15361 (error (format "ERROR: Formal generic \"%s\" mismatch for instance \"%s\"" (match-string 2) inst-name))) 15361 (error "ERROR: Formal generic \"%s\" mismatch for instance \"%s\"" (match-string 2) inst-name))
15362 (cdar generic-alist)))) 15362 (cdar generic-alist))))
15363 (setq constant-alist (cons constant-entry constant-alist)) 15363 (setq constant-alist (cons constant-entry constant-alist))
15364 (setq constant-name (downcase constant-name)) 15364 (setq constant-name (downcase constant-name))
@@ -15378,7 +15378,7 @@ component instantiation."
15378 (setq signal-entry (cons signal-name 15378 (setq signal-entry (cons signal-name
15379 (if (match-string 1) 15379 (if (match-string 1)
15380 (or (aget port-alist (match-string 2) t) 15380 (or (aget port-alist (match-string 2) t)
15381 (error (format "ERROR: Formal port \"%s\" mismatch for instance \"%s\"" (match-string 2) inst-name))) 15381 (error "ERROR: Formal port \"%s\" mismatch for instance \"%s\"" (match-string 2) inst-name))
15382 (cdar port-alist)))) 15382 (cdar port-alist))))
15383 (setq signal-alist (cons signal-entry signal-alist)) 15383 (setq signal-alist (cons signal-entry signal-alist))
15384 (setq signal-name (downcase signal-name)) 15384 (setq signal-name (downcase signal-name))
diff --git a/lisp/shell.el b/lisp/shell.el
index fd5e6c25032..7a9f261859d 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -133,7 +133,7 @@ arguments."
133(defcustom shell-prompt-pattern "^[^#$%>\n]*[#$%>] *" 133(defcustom shell-prompt-pattern "^[^#$%>\n]*[#$%>] *"
134 "Regexp to match prompts in the inferior shell. 134 "Regexp to match prompts in the inferior shell.
135Defaults to \"^[^#$%>\\n]*[#$%>] *\", which works pretty well. 135Defaults to \"^[^#$%>\\n]*[#$%>] *\", which works pretty well.
136This variable is used to initialise `comint-prompt-regexp' in the 136This variable is used to initialize `comint-prompt-regexp' in the
137shell buffer. 137shell buffer.
138 138
139If `comint-use-prompt-regexp' is nil, then this variable is only used 139If `comint-use-prompt-regexp' is nil, then this variable is only used
@@ -159,7 +159,7 @@ This is a fine thing to set in your `.emacs' file."
159 :group 'shell) 159 :group 'shell)
160 160
161(defvar shell-delimiter-argument-list '(?\| ?& ?< ?> ?\( ?\) ?\;) 161(defvar shell-delimiter-argument-list '(?\| ?& ?< ?> ?\( ?\) ?\;)
162 "List of characters to recognise as separate arguments. 162 "List of characters to recognize as separate arguments.
163This variable is used to initialize `comint-delimiter-argument-list' in the 163This variable is used to initialize `comint-delimiter-argument-list' in the
164shell buffer. The value may depend on the operating system or shell. 164shell buffer. The value may depend on the operating system or shell.
165 165
@@ -192,7 +192,7 @@ This is a fine thing to set in your `.emacs' file.")
192 shell-replace-by-expanded-directory 192 shell-replace-by-expanded-directory
193 comint-dynamic-complete-filename) 193 comint-dynamic-complete-filename)
194 "List of functions called to perform completion. 194 "List of functions called to perform completion.
195This variable is used to initialise `comint-dynamic-complete-functions' in the 195This variable is used to initialize `comint-dynamic-complete-functions' in the
196shell buffer. 196shell buffer.
197 197
198This is a fine thing to set in your `.emacs' file.") 198This is a fine thing to set in your `.emacs' file.")
@@ -407,7 +407,7 @@ Variables `comint-completion-autolist', `comint-completion-addsuffix',
407`comint-completion-recexact' and `comint-completion-fignore' control the 407`comint-completion-recexact' and `comint-completion-fignore' control the
408behavior of file name, command name and variable name completion. Variable 408behavior of file name, command name and variable name completion. Variable
409`shell-completion-execonly' controls the behavior of command name completion. 409`shell-completion-execonly' controls the behavior of command name completion.
410Variable `shell-completion-fignore' is used to initialise the value of 410Variable `shell-completion-fignore' is used to initialize the value of
411`comint-completion-fignore'. 411`comint-completion-fignore'.
412 412
413Variables `comint-input-ring-file-name' and `comint-input-autoexpand' control 413Variables `comint-input-ring-file-name' and `comint-input-autoexpand' control
@@ -950,7 +950,7 @@ See `shell-dynamic-complete-filename'. Returns t if successful."
950 (and comint-completion-fignore 950 (and comint-completion-fignore
951 (mapconcat (function (lambda (x) (concat (regexp-quote x) "$"))) 951 (mapconcat (function (lambda (x) (concat (regexp-quote x) "$")))
952 comint-completion-fignore "\\|"))) 952 comint-completion-fignore "\\|")))
953 (dir "") (comps-in-dir ()) 953 (dir "") (comps-in-dir ())
954 (file "") (abs-file-name "") (completions ())) 954 (file "") (abs-file-name "") (completions ()))
955 ;; Go thru each dir in the search path, finding completions. 955 ;; Go thru each dir in the search path, finding completions.
956 (while path-dirs 956 (while path-dirs
diff --git a/lisp/simple.el b/lisp/simple.el
index bd2de4121d3..1b5739b0b67 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -327,7 +327,8 @@ location."
327Other major modes are defined by comparison with this one." 327Other major modes are defined by comparison with this one."
328 (interactive) 328 (interactive)
329 (kill-all-local-variables) 329 (kill-all-local-variables)
330 (run-hooks 'after-change-major-mode-hook)) 330 (unless delay-mode-hooks
331 (run-hooks 'after-change-major-mode-hook)))
331 332
332;; Making and deleting lines. 333;; Making and deleting lines.
333 334
@@ -1287,7 +1288,7 @@ A redo record for ordinary undo maps to the following (earlier) undo.")
1287 1288
1288(defvar pending-undo-list nil 1289(defvar pending-undo-list nil
1289 "Within a run of consecutive undo commands, list remaining to be undone. 1290 "Within a run of consecutive undo commands, list remaining to be undone.
1290t if we undid all the way to the end of it.") 1291If t, we undid all the way to the end of it.")
1291 1292
1292(defun undo (&optional arg) 1293(defun undo (&optional arg)
1293 "Undo some previous changes. 1294 "Undo some previous changes.
@@ -1399,16 +1400,16 @@ Contrary to `undo', this will not redo a previous undo."
1399 "Non-nil while performing an undo. 1400 "Non-nil while performing an undo.
1400Some change-hooks test this variable to do something different.") 1401Some change-hooks test this variable to do something different.")
1401 1402
1402(defun undo-more (count) 1403(defun undo-more (n)
1403 "Undo back N undo-boundaries beyond what was already undone recently. 1404 "Undo back N undo-boundaries beyond what was already undone recently.
1404Call `undo-start' to get ready to undo recent changes, 1405Call `undo-start' to get ready to undo recent changes,
1405then call `undo-more' one or more times to undo them." 1406then call `undo-more' one or more times to undo them."
1406 (or (listp pending-undo-list) 1407 (or (listp pending-undo-list)
1407 (error (format "No further undo information%s" 1408 (error (concat "No further undo information"
1408 (if (and transient-mark-mode mark-active) 1409 (and transient-mark-mode mark-active
1409 " for region" "")))) 1410 " for region"))))
1410 (let ((undo-in-progress t)) 1411 (let ((undo-in-progress t))
1411 (setq pending-undo-list (primitive-undo count pending-undo-list)) 1412 (setq pending-undo-list (primitive-undo n pending-undo-list))
1412 (if (null pending-undo-list) 1413 (if (null pending-undo-list)
1413 (setq pending-undo-list t)))) 1414 (setq pending-undo-list t))))
1414 1415
@@ -4846,7 +4847,7 @@ of the differing parts is, by contrast, slightly highlighted."
4846 (if (minibufferp mainbuf) 4847 (if (minibufferp mainbuf)
4847 (if (and (symbolp minibuffer-completion-table) 4848 (if (and (symbolp minibuffer-completion-table)
4848 (get minibuffer-completion-table 'completion-base-size-function)) 4849 (get minibuffer-completion-table 'completion-base-size-function))
4849 (setq completion-base-size 4850 (setq completion-base-size
4850 (funcall (get minibuffer-completion-table 'completion-base-size-function))) 4851 (funcall (get minibuffer-completion-table 'completion-base-size-function)))
4851 (setq completion-base-size 0)))) 4852 (setq completion-base-size 0))))
4852 ;; Put faces on first uncommon characters and common parts. 4853 ;; Put faces on first uncommon characters and common parts.
diff --git a/lisp/smerge-mode.el b/lisp/smerge-mode.el
index cf93ad12cd9..55000391777 100644
--- a/lisp/smerge-mode.el
+++ b/lisp/smerge-mode.el
@@ -247,7 +247,7 @@ Can be nil if the style is undecided, or else:
247 247
248(defun smerge-ensure-match (n) 248(defun smerge-ensure-match (n)
249 (unless (match-end n) 249 (unless (match-end n)
250 (error (format "No `%s'" (aref smerge-match-names n))))) 250 (error "No `%s'" (aref smerge-match-names n))))
251 251
252(defun smerge-auto-leave () 252(defun smerge-auto-leave ()
253 (when (and smerge-auto-leave 253 (when (and smerge-auto-leave
diff --git a/lisp/startup.el b/lisp/startup.el
index 198f59a3888..9bad1262579 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -801,6 +801,14 @@ opening the first frame (e.g. open a connection to the server).")
801 ;; the startup message. 801 ;; the startup message.
802 (setq inhibit-startup-message nil) 802 (setq inhibit-startup-message nil)
803 803
804 ;; Warn for invalid user name.
805 (and init-file-user
806 (not (file-directory-p (expand-file-name (concat "~" init-file-user))))
807 (display-warning 'initialization
808 (format "User %s has no home directory"
809 init-file-user)
810 :error))
811
804 ;; Load that user's init file, or the default one, or none. 812 ;; Load that user's init file, or the default one, or none.
805 (let (debug-on-error-from-init-file 813 (let (debug-on-error-from-init-file
806 debug-on-error-should-be-set 814 debug-on-error-should-be-set
diff --git a/lisp/subr.el b/lisp/subr.el
index 2b631b17e20..8a78b6b1326 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -963,36 +963,32 @@ other hooks, such as major mode hooks, can do the job."
963The test for presence of ELEMENT is done with `equal'. 963The test for presence of ELEMENT is done with `equal'.
964 964
965The resulting list is reordered so that the elements are in the 965The resulting list is reordered so that the elements are in the
966order given by each element's numeric list order. Elements which 966order given by each element's numeric list order.
967are not symbols, and symbol elements without a numeric list order 967Elements without a numeric list order are placed at the end of
968are placed at the end of the list. 968the list.
969 969
970If the third optional argument ORDER is non-nil and ELEMENT is 970If the third optional argument ORDER is non-nil, set the
971a symbol, set the symbol's list order to the given value. 971element's list order to the given value.
972 972
973The list order for each symbol is stored in LIST-VAR's 973The list order for each element is stored in LIST-VAR's
974`list-order' property. 974`list-order' property.
975 975
976The return value is the new value of LIST-VAR." 976The return value is the new value of LIST-VAR."
977 (let* ((ordering (get list-var 'list-order)) 977 (let ((ordering (get list-var 'list-order)))
978 (cur (and (symbolp element) (assq element ordering)))) 978 (unless ordering
979 (put list-var 'list-order
980 (setq ordering (make-hash-table :weakness 'key :test 'eq))))
979 (when order 981 (when order
980 (unless (symbolp element) 982 (puthash element order ordering))
981 (error "cannot specify order for non-symbols"))
982 (if cur
983 (setcdr cur order)
984 (setq cur (cons element order))
985 (setq ordering (cons cur ordering))
986 (put list-var 'list-order ordering)))
987 (add-to-list list-var element) 983 (add-to-list list-var element)
988 (set list-var (sort (symbol-value list-var) 984 (set list-var (sort (symbol-value list-var)
989 (lambda (a b) 985 (lambda (a b)
990 (let ((oa (and (symbolp a) (assq a ordering))) 986 (let ((oa (gethash a ordering))
991 (ob (and (symbolp b) (assq b ordering)))) 987 (ob (gethash b ordering)))
992 (cond 988 (cond
993 ((not oa) nil) 989 ((not oa) nil)
994 ((not ob) t) 990 ((not ob) t)
995 (t (< (cdr oa) (cdr ob)))))))))) 991 (t (< oa ob)))))))))
996 992
997 993
998;;; Load history 994;;; Load history
diff --git a/lisp/term.el b/lisp/term.el
index 00c1083892e..3295c87da14 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -485,7 +485,7 @@
485 :group 'term) 485 :group 'term)
486 486
487(defvar term-prompt-regexp "^" 487(defvar term-prompt-regexp "^"
488 "Regexp to recognise prompts in the inferior process. 488 "Regexp to recognize prompts in the inferior process.
489Defaults to \"^\", the null string at BOL. 489Defaults to \"^\", the null string at BOL.
490 490
491Good choices: 491Good choices:
@@ -499,7 +499,7 @@ Good choices:
499This is a good thing to set in mode hooks.") 499This is a good thing to set in mode hooks.")
500 500
501(defvar term-delimiter-argument-list () 501(defvar term-delimiter-argument-list ()
502 "List of characters to recognise as separate arguments in input. 502 "List of characters to recognize as separate arguments in input.
503Strings comprising a character in this list will separate the arguments 503Strings comprising a character in this list will separate the arguments
504surrounding them, and also be regarded as arguments in their own right (unlike 504surrounding them, and also be regarded as arguments in their own right (unlike
505whitespace). See `term-arguments'. 505whitespace). See `term-arguments'.
@@ -570,8 +570,8 @@ This variable is buffer-local."
570 "Function that submits old text in term mode. 570 "Function that submits old text in term mode.
571This function is called when return is typed while the point is in old text. 571This function is called when return is typed while the point is in old text.
572It returns the text to be submitted as process input. The default is 572It returns the text to be submitted as process input. The default is
573term-get-old-input-default, which grabs the current line, and strips off 573`term-get-old-input-default', which grabs the current line, and strips off
574leading text matching term-prompt-regexp") 574leading text matching `term-prompt-regexp'.")
575 575
576(defvar term-dynamic-complete-functions 576(defvar term-dynamic-complete-functions
577 '(term-replace-by-expanded-history term-dynamic-complete-filename) 577 '(term-replace-by-expanded-history term-dynamic-complete-filename)
@@ -585,7 +585,7 @@ This is a good thing to set in mode hooks.")
585 (function (lambda (str) (not (string-match "\\`\\s *\\'" str)))) 585 (function (lambda (str) (not (string-match "\\`\\s *\\'" str))))
586 "Predicate for filtering additions to input history. 586 "Predicate for filtering additions to input history.
587Only inputs answering true to this function are saved on the input 587Only inputs answering true to this function are saved on the input
588history list. Default is to save anything that isn't all whitespace") 588history list. Default is to save anything that isn't all whitespace.")
589 589
590(defvar term-input-filter-functions '() 590(defvar term-input-filter-functions '()
591 "Functions to call before input is sent to the process. 591 "Functions to call before input is sent to the process.
@@ -595,9 +595,9 @@ This variable is buffer-local.")
595 595
596(defvar term-input-sender (function term-simple-send) 596(defvar term-input-sender (function term-simple-send)
597 "Function to actually send to PROCESS the STRING submitted by user. 597 "Function to actually send to PROCESS the STRING submitted by user.
598Usually this is just 'term-simple-send, but if your mode needs to 598Usually this is just `term-simple-send', but if your mode needs to
599massage the input string, this is your hook. This is called from 599massage the input string, this is your hook. This is called from
600the user command term-send-input. `term-simple-send' just sends 600the user command `term-send-input'. `term-simple-send' just sends
601the string plus a newline.") 601the string plus a newline.")
602 602
603(defcustom term-eol-on-send t 603(defcustom term-eol-on-send t
@@ -607,16 +607,16 @@ See `term-send-input'."
607 :group 'term) 607 :group 'term)
608 608
609(defcustom term-mode-hook '() 609(defcustom term-mode-hook '()
610 "Called upon entry into term-mode 610 "Called upon entry into term mode.
611This is run before the process is cranked up." 611This is run before the process is cranked up."
612 :type 'hook 612 :type 'hook
613 :group 'term) 613 :group 'term)
614 614
615(defcustom term-exec-hook '() 615(defcustom term-exec-hook '()
616 "Called each time a process is exec'd by term-exec. 616 "Called each time a process is exec'd by `term-exec'.
617This is called after the process is cranked up. It is useful for things that 617This is called after the process is cranked up. It is useful for things that
618must be done each time a process is executed in a term-mode buffer (e.g., 618must be done each time a process is executed in a term mode buffer (e.g.,
619\(process-kill-without-query)). In contrast, the term-mode-hook is only 619`process-kill-without-query'). In contrast, `term-mode-hook' is only
620executed once when the buffer is created." 620executed once when the buffer is created."
621 :type 'hook 621 :type 'hook
622 :group 'term) 622 :group 'term)
@@ -625,7 +625,7 @@ executed once when the buffer is created."
625(defvar term-raw-map nil 625(defvar term-raw-map nil
626 "Keyboard map for sending characters directly to the inferior process.") 626 "Keyboard map for sending characters directly to the inferior process.")
627(defvar term-escape-char nil 627(defvar term-escape-char nil
628 "Escape character for char-sub-mode of term mode. 628 "Escape character for char sub-mode of term mode.
629Do not change it directly; use `term-set-escape-char' instead.") 629Do not change it directly; use `term-set-escape-char' instead.")
630(defvar term-raw-escape-map nil) 630(defvar term-raw-escape-map nil)
631 631
@@ -3951,9 +3951,9 @@ See `term-dynamic-complete-filename'. Returns t if successful."
3951 3951
3952(defun term-replace-by-expanded-filename () 3952(defun term-replace-by-expanded-filename ()
3953 "Dynamically expand and complete the filename at point. 3953 "Dynamically expand and complete the filename at point.
3954Replace the filename with an expanded, canonicalised and completed replacement. 3954Replace the filename with an expanded, canonicalized and completed replacement.
3955\"Expanded\" means environment variables (e.g., $HOME) and `~'s are replaced 3955\"Expanded\" means environment variables (e.g., $HOME) and `~'s are replaced
3956with the corresponding directories. \"Canonicalised\" means `..' and `.' are 3956with the corresponding directories. \"Canonicalized\" means `..' and `.' are
3957removed, and the filename is made absolute instead of relative. For expansion 3957removed, and the filename is made absolute instead of relative. For expansion
3958see `expand-file-name' and `substitute-in-file-name'. For completion see 3958see `expand-file-name' and `substitute-in-file-name'. For completion see
3959`term-dynamic-complete-filename'." 3959`term-dynamic-complete-filename'."
diff --git a/lisp/term/linux.el b/lisp/term/linux.el
index 80bfe83a4eb..71b9e0d4bcf 100644
--- a/lisp/term/linux.el
+++ b/lisp/term/linux.el
@@ -4,6 +4,9 @@
4(unless (terminal-coding-system) 4(unless (terminal-coding-system)
5 (set-terminal-coding-system 'iso-latin-1)) 5 (set-terminal-coding-system 'iso-latin-1))
6 6
7;; It can't really display underlines.
8(tty-no-underline)
9
7;; Make Latin-1 input characters work, too. 10;; Make Latin-1 input characters work, too.
8;; Meta will continue to work, because the kernel 11;; Meta will continue to work, because the kernel
9;; turns that into Escape. 12;; turns that into Escape.
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index ecaaf76639a..5f4a83b07eb 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -4277,9 +4277,11 @@ signaled if point is outside key or BibTeX field."
4277 (bibtex-move-outside-of-entry) 4277 (bibtex-move-outside-of-entry)
4278 (indent-to-column bibtex-entry-offset) 4278 (indent-to-column bibtex-entry-offset)
4279 (insert "@Preamble" 4279 (insert "@Preamble"
4280 (bibtex-entry-left-delimiter)) 4280 (bibtex-entry-left-delimiter)
4281 (bibtex-field-left-delimiter))
4281 (let ((endpos (point))) 4282 (let ((endpos (point)))
4282 (insert (bibtex-entry-right-delimiter) 4283 (insert (bibtex-entry-right-delimiter)
4284 (bibtex-field-right-delimiter)
4283 "\n") 4285 "\n")
4284 (goto-char endpos))) 4286 (goto-char endpos)))
4285 4287
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 7e1167a9396..8e83a8fe90f 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -1386,7 +1386,7 @@ LCON is the lexical context, if any."
1386 (* sgml-basic-offset (length context))))))) 1386 (* sgml-basic-offset (length context)))))))
1387 1387
1388 (otherwise 1388 (otherwise
1389 (error "Unrecognised context %s" (car lcon))) 1389 (error "Unrecognized context %s" (car lcon)))
1390 1390
1391 )) 1391 ))
1392 1392
@@ -1721,7 +1721,7 @@ This takes effect when first loading the library.")
1721 ("dir" . "Directory list (obsolete)") 1721 ("dir" . "Directory list (obsolete)")
1722 ("dl" . "Definition list") 1722 ("dl" . "Definition list")
1723 ("dt" . "Term to be definined") 1723 ("dt" . "Term to be definined")
1724 ("em" . "Emphasised") 1724 ("em" . "Emphasized")
1725 ("embed" . "Embedded data in foreign format") 1725 ("embed" . "Embedded data in foreign format")
1726 ("fig" . "Figure") 1726 ("fig" . "Figure")
1727 ("figa" . "Figure anchor") 1727 ("figa" . "Figure anchor")
diff --git a/lisp/tooltip.el b/lisp/tooltip.el
index 904f2bf8770..cb668f9cd00 100644
--- a/lisp/tooltip.el
+++ b/lisp/tooltip.el
@@ -119,11 +119,6 @@ position to pop up the tooltip."
119 :tag "Use echo area" 119 :tag "Use echo area"
120 :group 'tooltip) 120 :group 'tooltip)
121 121
122(make-obsolete-variable 'tooltip-use-echo-area
123"To display help tooltips in the echo area turn tooltip-mode off.
124To display GUD tooltips in the echo area turn gud-tooltip-mode on and set
125gud-tooltip-echo-area to t." "22.1")
126
127 122
128;;; Variables that are not customizable. 123;;; Variables that are not customizable.
129 124
@@ -201,12 +196,12 @@ With ARG, turn tooltip mode on if and only if ARG is positive."
201 (setq tooltip-timeout-id nil))) 196 (setq tooltip-timeout-id nil)))
202 197
203(defun tooltip-start-delayed-tip () 198(defun tooltip-start-delayed-tip ()
204 "Add a one-shot timeout to call function tooltip-timeout." 199 "Add a one-shot timeout to call function `tooltip-timeout'."
205 (setq tooltip-timeout-id 200 (setq tooltip-timeout-id
206 (add-timeout (tooltip-delay) 'tooltip-timeout nil))) 201 (add-timeout (tooltip-delay) 'tooltip-timeout nil)))
207 202
208(defun tooltip-timeout (object) 203(defun tooltip-timeout (object)
209 "Function called when timer with id tooltip-timeout-id fires." 204 "Function called when timer with id `tooltip-timeout-id' fires."
210 (run-hook-with-args-until-success 'tooltip-hook 205 (run-hook-with-args-until-success 'tooltip-hook
211 tooltip-last-mouse-motion-event)) 206 tooltip-last-mouse-motion-event))
212 207
@@ -301,8 +296,8 @@ where the mouse is."
301 296
302(defun tooltip-process-prompt-regexp (process) 297(defun tooltip-process-prompt-regexp (process)
303 "Return regexp matching the prompt of PROCESS at the end of a string. 298 "Return regexp matching the prompt of PROCESS at the end of a string.
304The prompt is taken from the value of COMINT-PROMPT-REGEXP in the buffer 299The prompt is taken from the value of `comint-prompt-regexp' in
305of PROCESS." 300the buffer of PROCESS."
306 (let ((prompt-regexp (save-excursion 301 (let ((prompt-regexp (save-excursion
307 (set-buffer (process-buffer process)) 302 (set-buffer (process-buffer process))
308 comint-prompt-regexp))) 303 comint-prompt-regexp)))
@@ -349,7 +344,7 @@ MSG is either a help string to display, or nil to cancel the display."
349(defun tooltip-help-tips (event) 344(defun tooltip-help-tips (event)
350 "Hook function to display a help tooltip. 345 "Hook function to display a help tooltip.
351This is installed on the hook `tooltip-hook', which is run when 346This is installed on the hook `tooltip-hook', which is run when
352the timer with ID `tooltip-timeout-id' fires. 347the timer with id `tooltip-timeout-id' fires.
353Value is non-nil if this function handled the tip." 348Value is non-nil if this function handled the tip."
354 (when (stringp tooltip-help-message) 349 (when (stringp tooltip-help-message)
355 (tooltip-show tooltip-help-message tooltip-use-echo-area) 350 (tooltip-show tooltip-help-message tooltip-use-echo-area)
diff --git a/lisp/tree-widget.el b/lisp/tree-widget.el
index 2a20e708729..93b466194a1 100644
--- a/lisp/tree-widget.el
+++ b/lisp/tree-widget.el
@@ -1,6 +1,6 @@
1;;; tree-widget.el --- Tree widget 1;;; tree-widget.el --- Tree widget
2 2
3;; Copyright (C) 2004 Free Software Foundation, Inc. 3;; Copyright (C) 2004, 2005 Free Software Foundation, Inc.
4 4
5;; Author: David Ponce <david@dponce.com> 5;; Author: David Ponce <david@dponce.com>
6;; Maintainer: David Ponce <david@dponce.com> 6;; Maintainer: David Ponce <david@dponce.com>
@@ -174,7 +174,7 @@ no-handle an invisible handle
174 174
175;;; Image support 175;;; Image support
176;; 176;;
177(eval-when-compile ;; GNU Emacs/XEmacs compatibility stuff 177(eval-and-compile ;; GNU Emacs/XEmacs compatibility stuff
178 (cond 178 (cond
179 ;; XEmacs 179 ;; XEmacs
180 ((featurep 'xemacs) 180 ((featurep 'xemacs)
@@ -469,21 +469,6 @@ found."
469 'widget-type) 469 'widget-type)
470 property)) 470 property))
471 471
472(defsubst tree-widget-super-format-handler (widget escape)
473 "Call WIDGET's inherited format handler to process ESCAPE character."
474 (let ((handler (tree-widget-get-super widget :format-handler)))
475 (and handler (funcall handler widget escape))))
476
477(defun tree-widget-format-handler (widget escape)
478 "For WIDGET, signal that the %p format template is obsolete.
479Call WIDGET's inherited format handler to process other ESCAPE
480characters."
481 (if (eq escape ?p)
482 (message "The %%p format template is obsolete and ignored")
483 (tree-widget-super-format-handler widget escape)))
484(make-obsolete 'tree-widget-format-handler
485 'tree-widget-super-format-handler)
486
487(defsubst tree-widget-node (widget) 472(defsubst tree-widget-node (widget)
488 "Return the tree WIDGET :node value. 473 "Return the tree WIDGET :node value.
489If not found setup a default 'item' widget." 474If not found setup a default 'item' widget."
@@ -630,26 +615,28 @@ IGNORE other arguments."
630 (let* ((widget-image-enable (tree-widget-use-image-p)) ; Emacs 615 (let* ((widget-image-enable (tree-widget-use-image-p)) ; Emacs
631 (widget-glyph-enable widget-image-enable) ; XEmacs 616 (widget-glyph-enable widget-image-enable) ; XEmacs
632 (node (tree-widget-node tree)) 617 (node (tree-widget-node tree))
618 (flags (widget-get tree :tree-widget--guide-flags))
619 (indent (widget-get tree :indent))
633 children buttons) 620 children buttons)
621 (and indent (not (widget-get tree :parent))
622 (insert-char ?\ indent))
634 (if (widget-get tree :open) 623 (if (widget-get tree :open)
635;;;; Unfolded node. 624;;;; Unfolded node.
636 (let* ((args (widget-get tree :args)) 625 (let ((args (widget-get tree :args))
637 (dynargs (widget-get tree :dynargs)) 626 (dynargs (widget-get tree :dynargs))
638 (flags (widget-get tree :tree-widget--guide-flags)) 627 (guide (tree-widget-guide tree))
639 (rflags (reverse flags)) 628 (noguide (tree-widget-no-guide tree))
640 (guide (tree-widget-guide tree)) 629 (endguide (tree-widget-end-guide tree))
641 (noguide (tree-widget-no-guide tree)) 630 (handle (tree-widget-handle tree))
642 (endguide (tree-widget-end-guide tree)) 631 (nohandle (tree-widget-no-handle tree))
643 (handle (tree-widget-handle tree)) 632 ;; Lookup for images and set widgets' tag-glyphs here,
644 (nohandle (tree-widget-no-handle tree)) 633 ;; to allow to dynamically change the image theme.
645 ;; Lookup for images and set widgets' tag-glyphs here, 634 (guidi (tree-widget-find-image "guide"))
646 ;; to allow to dynamically change the image theme. 635 (noguidi (tree-widget-find-image "no-guide"))
647 (guidi (tree-widget-find-image "guide")) 636 (endguidi (tree-widget-find-image "end-guide"))
648 (noguidi (tree-widget-find-image "no-guide")) 637 (handli (tree-widget-find-image "handle"))
649 (endguidi (tree-widget-find-image "end-guide")) 638 (nohandli (tree-widget-find-image "no-handle"))
650 (handli (tree-widget-find-image "handle")) 639 child)
651 (nohandli (tree-widget-find-image "no-handle"))
652 child)
653 (when dynargs 640 (when dynargs
654 ;; Request the definition of dynamic children 641 ;; Request the definition of dynamic children
655 (setq dynargs (funcall dynargs tree)) 642 (setq dynargs (funcall dynargs tree))
@@ -671,8 +658,9 @@ IGNORE other arguments."
671 (while args 658 (while args
672 (setq child (car args) 659 (setq child (car args)
673 args (cdr args)) 660 args (cdr args))
661 (and indent (insert-char ?\ indent))
674 ;; Insert guide lines elements 662 ;; Insert guide lines elements
675 (dolist (f rflags) 663 (dolist (f (reverse flags))
676 (widget-create-child-and-convert 664 (widget-create-child-and-convert
677 tree (if f guide noguide) 665 tree (if f guide noguide)
678 :tag-glyph (if f guidi noguidi)) 666 :tag-glyph (if f guidi noguidi))
diff --git a/lisp/woman.el b/lisp/woman.el
index de7d557f856..b1f8581ab9c 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -828,7 +828,7 @@ Heading emboldening is NOT standard `man' behavior."
828 :group 'woman-formatting) 828 :group 'woman-formatting)
829 829
830(defcustom woman-ignore t 830(defcustom woman-ignore t
831 "*If non-nil then unrecognised requests etc. are ignored. Default is t. 831 "*If non-nil then unrecognized requests etc. are ignored. Default is t.
832This gives the standard ?roff behavior. If nil then they are left in 832This gives the standard ?roff behavior. If nil then they are left in
833the buffer, which may aid debugging." 833the buffer, which may aid debugging."
834 :type 'boolean 834 :type 'boolean
@@ -2504,7 +2504,7 @@ REQUEST is the invoking directive without the leading dot."
2504 (setq c (memq (following-char) woman-if-conditions-true))) 2504 (setq c (memq (following-char) woman-if-conditions-true)))
2505 ;; Unrecognised letter so reject: 2505 ;; Unrecognised letter so reject:
2506 ((looking-at "[A-Za-z]") (setq c nil) 2506 ((looking-at "[A-Za-z]") (setq c nil)
2507 (WoMan-warn "%s %s -- unrecognised condition name rejected!" 2507 (WoMan-warn "%s %s -- unrecognized condition name rejected!"
2508 request (match-string 0))) 2508 request (match-string 0)))
2509 ;; Accept strings if identical: 2509 ;; Accept strings if identical:
2510 ((save-restriction 2510 ((save-restriction
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index c565e8bdb5f..50bfc91479f 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,75 @@
12005-06-19 Luc Teirlinck <teirllm@auburn.edu>
2
3 * lists.texi (Rings): Various minor clarifications and corrections.
4
52005-06-18 Richard M. Stallman <rms@gnu.org>
6
7 * functions.texi (Obsolete Functions): Simplify.
8
9 * variables.texi (Variable Aliases): Simplify.
10
11 * anti.texi, backups.texi, compile.texi, customization.texi:
12 * debugging.texi, display.texi, edebug.texi, errors.texi, frames.texi:
13 * functions.texi, help.texi, keymaps.texi, modes.texi, nonascii.texi:
14 * os.texi, processes.texi, searching.texi, strings.texi, text.texi:
15 * variables.texi: Fix formatting ugliness.
16
17 * elisp.texi: Add links to Rings and Byte Packing.
18 Update version and copyright years.
19
20 * minibuf.texi: Fix formatting ugliness.
21 (Completion Commands): Move keymap vars to the end
22 and vars completing-read binds to the top.
23
242005-06-17 Luc Teirlinck <teirllm@auburn.edu>
25
26 * processes.texi: Fix typos.
27 (Bindat Spec): Correct Texinfo error.
28 (Byte Packing): Fix ungrammatical sentence.
29
302005-06-17 Thien-Thi Nguyen <ttn@gnu.org>
31
32 * lists.texi (Rings): New node.
33 (Lists): Add it to menu.
34
35 * processes.texi (Byte Packing): New node.
36 (Processes): Add it to menu.
37
382005-06-17 Richard M. Stallman <rms@gnu.org>
39
40 * syntax.texi (Parsing Expressions): Fix texinfo usage.
41
42 * help.texi (Documentation Basics): Explain the xref to
43 Documentation Tips.
44
45 * debugging.texi (Debugger Commands): Minor fix.
46
472005-06-16 Luc Teirlinck <teirllm@auburn.edu>
48
49 * edebug.texi (Instrumenting): Eliminate duplicate link.
50 (Specification List): Replace references to "below", referring to
51 a later node, with one @ref to that node.
52
53 * os.texi (Timers): Timers should save and restore the match data
54 if they change it.
55
56 * debugging.texi (Debugger Commands): Mention that the Lisp
57 debugger can not step through primitive functions.
58
592005-06-16 Juanma Barranquero <lekktu@gmail.com>
60
61 * functions.texi (Obsolete Functions): Update argument names of
62 `make-obsolete' and `define-obsolete-function-alias'.
63
64 * variables.texi (Variable Aliases): Update argument names of
65 `defvaralias', `make-obsolete-variable' and
66 `define-obsolete-variable-alias'.
67
682005-06-15 Kim F. Storm <storm@cua.dk>
69
70 * searching.texi (Entire Match Data): Rephrase warnings about
71 evaporate arg to match-data and set-match-data.
72
12005-06-14 Luc Teirlinck <teirllm@auburn.edu> 732005-06-14 Luc Teirlinck <teirllm@auburn.edu>
2 74
3 * elisp.texi (Top): Update detailed menu. 75 * elisp.texi (Top): Update detailed menu.
@@ -50,7 +122,7 @@
50 122
512005-06-10 Luc Teirlinck <teirllm@auburn.edu> 1232005-06-10 Luc Teirlinck <teirllm@auburn.edu>
52 124
53 * syntax.texi (Parsing Exprssions): Fix Texinfo error. 125 * syntax.texi (Parsing Expressions): Fix Texinfo error.
54 126
552005-06-10 Stefan Monnier <monnier@iro.umontreal.ca> 1272005-06-10 Stefan Monnier <monnier@iro.umontreal.ca>
56 128
diff --git a/lispref/anti.texi b/lispref/anti.texi
index 46375f3f157..c7a72f04df8 100644
--- a/lispref/anti.texi
+++ b/lispref/anti.texi
@@ -164,9 +164,10 @@ the sentinel.
164@item 164@item
165Many programming shortcuts have been deleted, to provide you with the 165Many programming shortcuts have been deleted, to provide you with the
166enjoyment of ``rolling your own''. The macros @code{while-no-input}, 166enjoyment of ``rolling your own''. The macros @code{while-no-input},
167@code{with-local-quit}, @code{with-selected-window}, 167@code{with-local-quit}, and @code{with-selected-window}, along with
168@code{dynamic-completion-table}, and @code{lazy-completion-table} no 168@code{dynamic-completion-table} and @code{lazy-completion-table} no
169longer exist. Also, there are no built-in progress reporters. 169longer exist. Also, there are no built-in progress reporters;
170with Emacs, you can take progress for granted.
170 171
171@item 172@item
172Variable aliases are no longer supported. Aliases are for functions, 173Variable aliases are no longer supported. Aliases are for functions,
diff --git a/lispref/backups.texi b/lispref/backups.texi
index 8db24665a54..1ba7ed1b931 100644
--- a/lispref/backups.texi
+++ b/lispref/backups.texi
@@ -589,10 +589,10 @@ This function auto-saves all buffers that need to be auto-saved. It
589saves all buffers for which auto-saving is enabled and that have been 589saves all buffers for which auto-saving is enabled and that have been
590changed since the previous auto-save. 590changed since the previous auto-save.
591 591
592Normally, if any buffers are auto-saved, a message that says 592If any buffers are auto-saved, @code{do-auto-save} normally displays a
593@samp{Auto-saving...} is displayed in the echo area while auto-saving is 593message saying @samp{Auto-saving...} in the echo area while
594going on. However, if @var{no-message} is non-@code{nil}, the message 594auto-saving is going on. However, if @var{no-message} is
595is inhibited. 595non-@code{nil}, the message is inhibited.
596 596
597If @var{current-only} is non-@code{nil}, only the current buffer 597If @var{current-only} is non-@code{nil}, only the current buffer
598is auto-saved. 598is auto-saved.
diff --git a/lispref/compile.texi b/lispref/compile.texi
index 91c0661a99e..951a090e0da 100644
--- a/lispref/compile.texi
+++ b/lispref/compile.texi
@@ -426,7 +426,7 @@ to what @code{eval-when-compile} does.
426@section Compiler Errors 426@section Compiler Errors
427@cindex compiler errors 427@cindex compiler errors
428 428
429 Byte compilation writes errors and warnings into the buffer 429 Byte compilation outputs all errors and warnings into the buffer
430@samp{*Compile-Log*}. The messages include file names and line 430@samp{*Compile-Log*}. The messages include file names and line
431numbers that identify the location of the problem. The usual Emacs 431numbers that identify the location of the problem. The usual Emacs
432commands for operating on compiler diagnostics work properly on 432commands for operating on compiler diagnostics work properly on
diff --git a/lispref/customize.texi b/lispref/customize.texi
index 53c9fa92c32..baaceae47f0 100644
--- a/lispref/customize.texi
+++ b/lispref/customize.texi
@@ -658,7 +658,8 @@ means you should always list the most specific types first, and the
658most general last. Here's an example of proper usage: 658most general last. Here's an example of proper usage:
659 659
660@example 660@example
661(choice (const :tag "Off" nil) symbol (sexp :tag "Other")) 661(choice (const :tag "Off" nil)
662 symbol (sexp :tag "Other"))
662@end example 663@end example
663 664
664@noindent 665@noindent
diff --git a/lispref/debugging.texi b/lispref/debugging.texi
index 739dd1fe298..66663aad131 100644
--- a/lispref/debugging.texi
+++ b/lispref/debugging.texi
@@ -350,7 +350,8 @@ structures of an interpreted function, but cannot do so in a
350byte-compiled function. If you would like to step through a 350byte-compiled function. If you would like to step through a
351byte-compiled function, replace it with an interpreted definition of 351byte-compiled function, replace it with an interpreted definition of
352the same function. (To do this, visit the source for the function and 352the same function. (To do this, visit the source for the function and
353type @kbd{C-M-x} on its definition.) 353type @kbd{C-M-x} on its definition.) You cannot use the Lisp debugger
354to step through a primitive function.
354 355
355 Here is a list of Debugger mode commands: 356 Here is a list of Debugger mode commands:
356 357
@@ -470,15 +471,15 @@ entered--entering a function:} as a line of text at the top of the
470buffer. 471buffer.
471 472
472@item debug 473@item debug
473@code{debug} as first argument indicates a call to @code{debug} 474@code{debug} as first argument means @code{debug} was called because
474because of entry to a function that was set to debug on entry. The 475of entry to a function that was set to debug on entry. The debugger
475debugger displays @samp{Debugger entered--entering a function:}, just 476displays the string @samp{Debugger entered--entering a function:},
476as in the @code{lambda} case. It also marks the stack frame for that 477just as in the @code{lambda} case. It also marks the stack frame for
477function so that it will invoke the debugger when exited. 478that function so that it will invoke the debugger when exited.
478 479
479@item t 480@item t
480When the first argument is @code{t}, this indicates a call to 481When the first argument is @code{t}, this indicates a call to
481@code{debug} due to evaluation of a list form when 482@code{debug} due to evaluation of a function call form when
482@code{debug-on-next-call} is non-@code{nil}. The debugger displays 483@code{debug-on-next-call} is non-@code{nil}. The debugger displays
483@samp{Debugger entered--beginning evaluation of function call form:} 484@samp{Debugger entered--beginning evaluation of function call form:}
484as the top line in the buffer. 485as the top line in the buffer.
diff --git a/lispref/display.texi b/lispref/display.texi
index 87520fb4d4f..930f8aa31bc 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -547,15 +547,15 @@ remaining time and clearly see that Emacs is busy working, not hung.
547reporting operation progress. Here is a working example that does 547reporting operation progress. Here is a working example that does
548nothing useful: 548nothing useful:
549 549
550@example 550@smallexample
551(let ((progress-reporter 551(let ((progress-reporter
552 (make-progress-reporter "Collecting some mana for Emacs..." 552 (make-progress-reporter "Collecting mana for Emacs..."
553 0 500))) 553 0 500)))
554 (dotimes (k 500) 554 (dotimes (k 500)
555 (sit-for 0.01) 555 (sit-for 0.01)
556 (progress-reporter-update progress-reporter k)) 556 (progress-reporter-update progress-reporter k))
557 (progress-reporter-done progress-reporter)) 557 (progress-reporter-done progress-reporter))
558@end example 558@end smallexample
559 559
560@defun make-progress-reporter message min-value max-value &optional current-value min-change min-time 560@defun make-progress-reporter message min-value max-value &optional current-value min-change min-time
561This function creates and returns a @dfn{progress reporter}---an 561This function creates and returns a @dfn{progress reporter}---an
@@ -1296,8 +1296,8 @@ A cons cell of the form @code{(foreground-color . @var{color-name})} or
1296@code{(background-color . @var{color-name})}. These elements specify 1296@code{(background-color . @var{color-name})}. These elements specify
1297just the foreground color or just the background color. 1297just the foreground color or just the background color.
1298 1298
1299@code{(foreground-color . @var{color-name})} is equivalent to 1299@code{(foreground-color . @var{color-name})} has the same effect as
1300@code{(:foreground @var{color-name})}, and likewise for the background. 1300@code{(:foreground @var{color-name})}; likewise for the background.
1301@end itemize 1301@end itemize
1302 1302
1303@item mouse-face 1303@item mouse-face
@@ -2757,10 +2757,9 @@ For instance, this changes the default fontset to use a font of which
2757registry name is @samp{JISX0208.1983} for all characters belonging to 2757registry name is @samp{JISX0208.1983} for all characters belonging to
2758the charset @code{japanese-jisx0208}. 2758the charset @code{japanese-jisx0208}.
2759 2759
2760@example 2760@smallexample
2761(set-fontset-font nil 'japanese-jisx0208 '(nil . "JISX0208.1983")) 2761(set-fontset-font nil 'japanese-jisx0208 '(nil . "JISX0208.1983"))
2762@end example 2762@end smallexample
2763
2764@end defun 2763@end defun
2765 2764
2766@defun char-displayable-p char 2765@defun char-displayable-p char
@@ -3137,7 +3136,7 @@ single unit. By contrast, characters that have similar but distinct
3137Lisp objects as their @code{display} properties are handled 3136Lisp objects as their @code{display} properties are handled
3138separately. Here's a function that illustrates this point: 3137separately. Here's a function that illustrates this point:
3139 3138
3140@example 3139@smallexample
3141(defun foo () 3140(defun foo ()
3142 (goto-char (point-min)) 3141 (goto-char (point-min))
3143 (dotimes (i 5) 3142 (dotimes (i 5)
@@ -3146,7 +3145,7 @@ separately. Here's a function that illustrates this point:
3146 (forward-char 1) 3145 (forward-char 1)
3147 (put-text-property (point) (1+ (point)) 'display string) 3146 (put-text-property (point) (1+ (point)) 'display string)
3148 (forward-char 1)))) 3147 (forward-char 1))))
3149@end example 3148@end smallexample
3150 3149
3151@noindent 3150@noindent
3152It gives each of the first ten characters in the buffer string 3151It gives each of the first ten characters in the buffer string
@@ -3158,7 +3157,7 @@ Likewise for each following pair of characters. Thus, the ten
3158characters appear as five A's. This function would have the same 3157characters appear as five A's. This function would have the same
3159results: 3158results:
3160 3159
3161@example 3160@smallexample
3162(defun foo () 3161(defun foo ()
3163 (goto-char (point-min)) 3162 (goto-char (point-min))
3164 (dotimes (i 5) 3163 (dotimes (i 5)
@@ -3166,7 +3165,7 @@ results:
3166 (put-text-property (point) (2+ (point)) 'display string) 3165 (put-text-property (point) (2+ (point)) 'display string)
3167 (put-text-property (point) (1+ (point)) 'display string) 3166 (put-text-property (point) (1+ (point)) 'display string)
3168 (forward-char 2)))) 3167 (forward-char 2))))
3169@end example 3168@end smallexample
3170 3169
3171@noindent 3170@noindent
3172This illustrates that what matters is the property value for 3171This illustrates that what matters is the property value for
@@ -3262,18 +3261,20 @@ as an absolute number of pixels.
3262 3261
3263 The following expressions are supported: 3262 The following expressions are supported:
3264 3263
3265@example 3264@smallexample
3266@group 3265@group
3267 @var{expr} ::= @var{num} | (@var{num}) | @var{unit} | @var{elem} | @var{pos} | @var{image} | @var{form} 3266 @var{expr} ::= @var{num} | (@var{num}) | @var{unit} | @var{elem} | @var{pos} | @var{image} | @var{form}
3268 @var{num} ::= @var{integer} | @var{float} | @var{symbol} 3267 @var{num} ::= @var{integer} | @var{float} | @var{symbol}
3269 @var{unit} ::= in | mm | cm | width | height 3268 @var{unit} ::= in | mm | cm | width | height
3269@end group
3270@group
3270 @var{elem} ::= left-fringe | right-fringe | left-margin | right-margin 3271 @var{elem} ::= left-fringe | right-fringe | left-margin | right-margin
3271 | scroll-bar | text 3272 | scroll-bar | text
3272 @var{pos} ::= left | center | right 3273 @var{pos} ::= left | center | right
3273 @var{form} ::= (@var{num} . @var{expr}) | (@var{op} @var{expr} ...) 3274 @var{form} ::= (@var{num} . @var{expr}) | (@var{op} @var{expr} ...)
3274 @var{op} ::= + | - 3275 @var{op} ::= + | -
3275@end group 3276@end group
3276@end example 3277@end smallexample
3277 3278
3278 The form @var{num} specifies a fraction of the default frame font 3279 The form @var{num} specifies a fraction of the default frame font
3279height or width. The form @code{(@var{num})} specifies an absolute 3280height or width. The form @code{(@var{num})} specifies an absolute
@@ -3331,7 +3332,7 @@ in the @code{display} text property.
3331Display @var{string} instead of the text that has this property. 3332Display @var{string} instead of the text that has this property.
3332 3333
3333@item (image . @var{image-props}) 3334@item (image . @var{image-props})
3334This display specification is an image descriptor (@pxref{Images}). 3335This kind of display specification is an image descriptor (@pxref{Images}).
3335When used as a display specification, it means to display the image 3336When used as a display specification, it means to display the image
3336instead of the text that has the display specification. 3337instead of the text that has the display specification.
3337 3338
diff --git a/lispref/edebug.texi b/lispref/edebug.texi
index 981afbb894c..f074cf3dbd5 100644
--- a/lispref/edebug.texi
+++ b/lispref/edebug.texi
@@ -203,14 +203,13 @@ function.
203@code{interactive} forms with an expression argument, anonymous lambda 203@code{interactive} forms with an expression argument, anonymous lambda
204expressions, and other defining forms. However, Edebug cannot determine 204expressions, and other defining forms. However, Edebug cannot determine
205on its own what a user-defined macro will do with the arguments of a 205on its own what a user-defined macro will do with the arguments of a
206macro call, so you must provide that information; see @ref{Edebug and 206macro call, so you must provide that information using Edebug
207Macros}, for details. 207specifications; see @ref{Edebug and Macros}, for details.
208 208
209 When Edebug is about to instrument code for the first time in a 209 When Edebug is about to instrument code for the first time in a
210session, it runs the hook @code{edebug-setup-hook}, then sets it to 210session, it runs the hook @code{edebug-setup-hook}, then sets it to
211@code{nil}. You can use this to load Edebug specifications 211@code{nil}. You can use this to load Edebug specifications
212(@pxref{Edebug and Macros}) associated with a package you are 212associated with a package you are using, but only when you use Edebug.
213using, but only when you use Edebug.
214 213
215@findex eval-expression @r{(Edebug)} 214@findex eval-expression @r{(Edebug)}
216 To remove instrumentation from a definition, simply re-evaluate its 215 To remove instrumentation from a definition, simply re-evaluate its
@@ -331,7 +330,7 @@ program to stop.
331Proceed to the stop point near where point is (@code{edebug-goto-here}). 330Proceed to the stop point near where point is (@code{edebug-goto-here}).
332 331
333@item f 332@item f
334Run the program forward over one expression 333Run the program for one expression
335(@code{edebug-forward-sexp}). 334(@code{edebug-forward-sexp}).
336 335
337@item o 336@item o
@@ -463,9 +462,9 @@ point (@code{edebug-unset-breakpoint}).
463 462
464@item x @var{condition} @key{RET} 463@item x @var{condition} @key{RET}
465Set a conditional breakpoint which stops the program only if 464Set a conditional breakpoint which stops the program only if
466@var{condition} evaluates to a non-@code{nil} value 465evaluating @var{condition} produces a non-@code{nil} value
467(@code{edebug-set-conditional-breakpoint}). With a prefix argument, the 466(@code{edebug-set-conditional-breakpoint}). With a prefix argument,
468breakpoint is temporary. 467the breakpoint is temporary.
469 468
470@item B 469@item B
471Move point to the next breakpoint in the current definition 470Move point to the next breakpoint in the current definition
@@ -586,8 +585,8 @@ effect outside of Edebug.
586 585
587@table @kbd 586@table @kbd
588@item v 587@item v
589View the outside window configuration (@code{edebug-view-outside}). 588Switch to viewing the outside window configuration
590Type @kbd{C-x X w} to return to Edebug. 589(@code{edebug-view-outside}). Type @kbd{C-x X w} to return to Edebug.
591 590
592@item p 591@item p
593Temporarily display the outside current buffer with point at its 592Temporarily display the outside current buffer with point at its
@@ -1036,11 +1035,12 @@ saves (and later restores) these additional data:
1036The current match data. @xref{Match Data}. 1035The current match data. @xref{Match Data}.
1037 1036
1038@item 1037@item
1039@code{last-command}, @code{this-command}, @code{last-command-char}, 1038The variables @code{last-command}, @code{this-command},
1040@code{last-input-char}, @code{last-input-event}, 1039@code{last-command-char}, @code{last-input-char},
1041@code{last-command-event}, @code{last-event-frame}, 1040@code{last-input-event}, @code{last-command-event},
1042@code{last-nonmenu-event}, and @code{track-mouse}. Commands used within 1041@code{last-event-frame}, @code{last-nonmenu-event}, and
1043Edebug do not affect these variables outside of Edebug. 1042@code{track-mouse}. Commands used within Edebug do not affect these
1043variables outside of Edebug.
1044 1044
1045The key sequence returned by @code{this-command-keys} is changed by 1045The key sequence returned by @code{this-command-keys} is changed by
1046executing commands within Edebug and there is no way to reset 1046executing commands within Edebug and there is no way to reset
@@ -1100,13 +1100,13 @@ macro. To do this, add a @code{debug} declaration to the macro
1100definition. Here is a simple example that shows the specification for 1100definition. Here is a simple example that shows the specification for
1101the @code{for} example macro (@pxref{Argument Evaluation}). 1101the @code{for} example macro (@pxref{Argument Evaluation}).
1102 1102
1103@example 1103@smallexample
1104(defmacro for (var from init to final do &rest body) 1104(defmacro for (var from init to final do &rest body)
1105 "Execute a simple \"for\" loop. 1105 "Execute a simple \"for\" loop.
1106For example, (for i from 1 to 10 do (print i))." 1106For example, (for i from 1 to 10 do (print i))."
1107 (declare (debug (symbolp "from" form "to" form "do" &rest form))) 1107 (declare (debug (symbolp "from" form "to" form "do" &rest form)))
1108 ...) 1108 ...)
1109@end example 1109@end smallexample
1110 1110
1111 The Edebug specification says which parts of a call to the macro are 1111 The Edebug specification says which parts of a call to the macro are
1112forms to be evaluated. For simple macros, the @var{specification} 1112forms to be evaluated. For simple macros, the @var{specification}
@@ -1185,7 +1185,8 @@ balanced parentheses, recursive processing of forms, and recursion via
1185indirect specifications. 1185indirect specifications.
1186 1186
1187Here's a table of the possible elements of a specification list, with 1187Here's a table of the possible elements of a specification list, with
1188their meanings: 1188their meanings (see @ref{Specification Examples}, for the referenced
1189examples):
1189 1190
1190@table @code 1191@table @code
1191@item sexp 1192@item sexp
@@ -1221,7 +1222,7 @@ as one does not match, Edebug stops matching at this level.
1221To make just a few elements optional followed by non-optional elements, 1222To make just a few elements optional followed by non-optional elements,
1222use @code{[&optional @var{specs}@dots{}]}. To specify that several 1223use @code{[&optional @var{specs}@dots{}]}. To specify that several
1223elements must all match or none, use @code{&optional 1224elements must all match or none, use @code{&optional
1224[@var{specs}@dots{}]}. See the @code{defun} example below. 1225[@var{specs}@dots{}]}. See the @code{defun} example.
1225 1226
1226@item &rest 1227@item &rest
1227@c @kindex &rest @r{(Edebug)} 1228@c @kindex &rest @r{(Edebug)}
@@ -1262,15 +1263,14 @@ a list specification.
1262@item nil 1263@item nil
1263This is successful when there are no more arguments to match at the 1264This is successful when there are no more arguments to match at the
1264current argument list level; otherwise it fails. See sublist 1265current argument list level; otherwise it fails. See sublist
1265specifications and the backquote example below. 1266specifications and the backquote example.
1266 1267
1267@item gate 1268@item gate
1268@cindex preventing backtracking 1269@cindex preventing backtracking
1269No argument is matched but backtracking through the gate is disabled 1270No argument is matched but backtracking through the gate is disabled
1270while matching the remainder of the specifications at this level. This 1271while matching the remainder of the specifications at this level. This
1271is primarily used to generate more specific syntax error messages. See 1272is primarily used to generate more specific syntax error messages. See
1272@ref{Backtracking}, for more details. Also see the @code{let} example 1273@ref{Backtracking}, for more details. Also see the @code{let} example.
1273below.
1274 1274
1275@item @var{other-symbol} 1275@item @var{other-symbol}
1276@cindex indirect specifications 1276@cindex indirect specifications
@@ -1281,7 +1281,7 @@ If the symbol has an Edebug specification, this @dfn{indirect
1281specification} should be either a list specification that is used in 1281specification} should be either a list specification that is used in
1282place of the symbol, or a function that is called to process the 1282place of the symbol, or a function that is called to process the
1283arguments. The specification may be defined with @code{def-edebug-spec} 1283arguments. The specification may be defined with @code{def-edebug-spec}
1284just as for macros. See the @code{defun} example below. 1284just as for macros. See the @code{defun} example.
1285 1285
1286Otherwise, the symbol should be a predicate. The predicate is called 1286Otherwise, the symbol should be a predicate. The predicate is called
1287with the argument and the specification fails if the predicate returns 1287with the argument and the specification fails if the predicate returns
@@ -1302,7 +1302,7 @@ of @var{symbol} is the @var{string}, but the string form is preferred.
1302 1302
1303@item (vector @var{elements}@dots{}) 1303@item (vector @var{elements}@dots{})
1304The argument should be a vector whose elements must match the 1304The argument should be a vector whose elements must match the
1305@var{elements} in the specification. See the backquote example below. 1305@var{elements} in the specification. See the backquote example.
1306 1306
1307@item (@var{elements}@dots{}) 1307@item (@var{elements}@dots{})
1308Any other list is a @dfn{sublist specification} and the argument must be 1308Any other list is a @dfn{sublist specification} and the argument must be
@@ -1315,7 +1315,7 @@ dotted list specification may be another sublist specification (via a
1315grouping or an indirect specification, e.g., @code{(spec . [(more 1315grouping or an indirect specification, e.g., @code{(spec . [(more
1316specs@dots{})])}) whose elements match the non-dotted list arguments. 1316specs@dots{})])}) whose elements match the non-dotted list arguments.
1317This is useful in recursive specifications such as in the backquote 1317This is useful in recursive specifications such as in the backquote
1318example below. Also see the description of a @code{nil} specification 1318example. Also see the description of a @code{nil} specification
1319above for terminating such recursion. 1319above for terminating such recursion.
1320 1320
1321Note that a sublist specification written as @code{(specs . nil)} 1321Note that a sublist specification written as @code{(specs . nil)}
@@ -1327,7 +1327,7 @@ sublist-elements@dots{})}.
1327@c Need to document extensions with &symbol and :symbol 1327@c Need to document extensions with &symbol and :symbol
1328 1328
1329Here is a list of additional specifications that may appear only after 1329Here is a list of additional specifications that may appear only after
1330@code{&define}. See the @code{defun} example below. 1330@code{&define}. See the @code{defun} example.
1331 1331
1332@table @code 1332@table @code
1333@item name 1333@item name
@@ -1364,7 +1364,7 @@ The argument is a single, highest-level form in a definition. This is
1364like @code{def-body}, except use this to match a single form rather than 1364like @code{def-body}, except use this to match a single form rather than
1365a list of forms. As a special case, @code{def-form} also means that 1365a list of forms. As a special case, @code{def-form} also means that
1366tracing information is not output when the form is executed. See the 1366tracing information is not output when the form is executed. See the
1367@code{interactive} example below. 1367@code{interactive} example.
1368@end table 1368@end table
1369 1369
1370@node Backtracking 1370@node Backtracking
diff --git a/lispref/elisp.texi b/lispref/elisp.texi
index 4be680969a1..0a4849c236b 100644
--- a/lispref/elisp.texi
+++ b/lispref/elisp.texi
@@ -6,7 +6,7 @@
6 6
7@c Version of the manual and of Emacs. 7@c Version of the manual and of Emacs.
8@c Please remember to update the edition number in README as well. 8@c Please remember to update the edition number in README as well.
9@set VERSION 2.9 9@set VERSION 2.7
10@set EMACSVER 22.0.50 10@set EMACSVER 22.0.50
11 11
12@dircategory Emacs 12@dircategory Emacs
@@ -34,8 +34,8 @@ Published by the Free Software Foundation
3459 Temple Place, Suite 330 3459 Temple Place, Suite 330
35Boston, MA 02111-1307 USA 35Boston, MA 02111-1307 USA
36 36
37Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2005,@* 37Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, @*
38 2000, 2002 Free Software Foundation, Inc. 38 2000, 2002, 2003, 2004, 2005, Free Software Foundation, Inc.
39 39
40Permission is granted to copy, distribute and/or modify this document 40Permission is granted to copy, distribute and/or modify this document
41under the terms of the GNU Free Documentation License, Version 1.1 or 41under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -60,7 +60,7 @@ Software Foundation raise funds for GNU development.''
60@page 60@page
61@vskip 0pt plus 1filll 61@vskip 0pt plus 1filll
62Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,@* 62Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,@*
631999, 2000, 2002 Free Software Foundation, Inc. 631999, 2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
64 64
65@sp 2 65@sp 2
66Edition @value{VERSION} @* 66Edition @value{VERSION} @*
@@ -288,6 +288,7 @@ Lists
288* Modifying Lists:: Storing new pieces into an existing list. 288* Modifying Lists:: Storing new pieces into an existing list.
289* Sets And Lists:: A list can represent a finite mathematical set. 289* Sets And Lists:: A list can represent a finite mathematical set.
290* Association Lists:: A list can represent a finite relation or mapping. 290* Association Lists:: A list can represent a finite relation or mapping.
291* Rings:: Managing a fixed-size ring of objects.
291 292
292Modifying Existing List Structure 293Modifying Existing List Structure
293 294
@@ -983,6 +984,7 @@ Processes
983* Datagrams:: UDP network connections. 984* Datagrams:: UDP network connections.
984* Low-Level Network:: Lower-level but more general function 985* Low-Level Network:: Lower-level but more general function
985 to create connections and servers. 986 to create connections and servers.
987* Byte Packing:: Using bindat to pack and unpack binary data.
986 988
987Receiving Output from Processes 989Receiving Output from Processes
988 990
diff --git a/lispref/errors.texi b/lispref/errors.texi
index 8591fb9a45f..a246539b8fd 100644
--- a/lispref/errors.texi
+++ b/lispref/errors.texi
@@ -63,7 +63,7 @@ See @code{/} and @code{%} in @ref{Numbers}.
63@xref{Function Indirection}. 63@xref{Function Indirection}.
64 64
65@item cyclic-variable-indirection 65@item cyclic-variable-indirection
66@code{"Symbol's chain of variable indirections contains a loop"}@* 66@code{"Symbol's chain of variable indirections\@* contains a loop"}@*
67@xref{Variable Aliases}. 67@xref{Variable Aliases}.
68 68
69@item end-of-buffer 69@item end-of-buffer
diff --git a/lispref/files.texi b/lispref/files.texi
index 766220aa882..93c104e6ccd 100644
--- a/lispref/files.texi
+++ b/lispref/files.texi
@@ -98,9 +98,9 @@ new buffer and reading the file into it. It also returns that buffer.
98Aside from some technical details, the body of the @code{find-file} 98Aside from some technical details, the body of the @code{find-file}
99function is basically equivalent to: 99function is basically equivalent to:
100 100
101@example 101@smallexample
102(switch-to-buffer (find-file-noselect filename nil nil wildcards)) 102(switch-to-buffer (find-file-noselect filename nil nil wildcards))
103@end example 103@end smallexample
104 104
105@noindent 105@noindent
106(See @code{switch-to-buffer} in @ref{Displaying Buffers}.) 106(See @code{switch-to-buffer} in @ref{Displaying Buffers}.)
@@ -2731,9 +2731,9 @@ This function tests whether @var{filename} is a remote file. If
2731If @var{filename} is indeed remote, the return value is a string that 2731If @var{filename} is indeed remote, the return value is a string that
2732identifies the remote system. 2732identifies the remote system.
2733 2733
2734This identifier string may include a host name, a user name, and 2734This identifier string can include a host name and a user name, as
2735characters designating the method used to access the remote system. 2735well as characters designating the method used to access the remote
2736For example, the remote identifier string for the filename 2736system. For example, the remote identifier string for the filename
2737@code{/ssh:user@@host:/some/file} is @code{/ssh:user@@host:}. 2737@code{/ssh:user@@host:/some/file} is @code{/ssh:user@@host:}.
2738 2738
2739If @code{file-remote-p} returns the same identifier for two different 2739If @code{file-remote-p} returns the same identifier for two different
diff --git a/lispref/frames.texi b/lispref/frames.texi
index ffcc16f6289..10035b76f9f 100644
--- a/lispref/frames.texi
+++ b/lispref/frames.texi
@@ -1550,13 +1550,13 @@ clients. It takes two optional arguments, @var{type} and
1550The @var{data-type} argument specifies the form of data conversion to 1550The @var{data-type} argument specifies the form of data conversion to
1551use, to convert the raw data obtained from another X client into Lisp 1551use, to convert the raw data obtained from another X client into Lisp
1552data. Meaningful values include @code{TEXT}, @code{STRING}, 1552data. Meaningful values include @code{TEXT}, @code{STRING},
1553@code{UTF8_STRING}, 1553@code{UTF8_STRING}, @code{TARGETS}, @code{LENGTH}, @code{DELETE},
1554@code{TARGETS}, @code{LENGTH}, @code{DELETE}, @code{FILE_NAME}, 1554@code{FILE_NAME}, @code{CHARACTER_POSITION}, @code{NAME},
1555@code{CHARACTER_POSITION}, @code{LINE_NUMBER}, @code{COLUMN_NUMBER}, 1555@code{LINE_NUMBER}, @code{COLUMN_NUMBER}, @code{OWNER_OS},
1556@code{OWNER_OS}, @code{HOST_NAME}, @code{USER}, @code{CLASS}, 1556@code{HOST_NAME}, @code{USER}, @code{CLASS}, @code{ATOM}, and
1557@code{NAME}, @code{ATOM}, and @code{INTEGER}. (These are symbols with 1557@code{INTEGER}. (These are symbols with upper-case names in accord
1558upper-case names in accord with X conventions.) The default for 1558with X conventions.) The default for @var{data-type} is
1559@var{data-type} is @code{STRING}. 1559@code{STRING}.
1560@end defun 1560@end defun
1561 1561
1562@cindex cut buffer 1562@cindex cut buffer
@@ -1822,8 +1822,8 @@ xterm.vt100.background: yellow
1822@end example 1822@end example
1823 1823
1824@noindent 1824@noindent
1825in in your X resources file (usually named @file{~/.Xdefaults} or 1825in in your X resources file (whose name is usually @file{~/.Xdefaults}
1826@file{~/.Xresources}). Then: 1826or @file{~/.Xresources}). Then:
1827 1827
1828@example 1828@example
1829@group 1829@group
diff --git a/lispref/functions.texi b/lispref/functions.texi
index bcdfc95cc1c..f58cad69bb7 100644
--- a/lispref/functions.texi
+++ b/lispref/functions.texi
@@ -525,9 +525,9 @@ defines the symbol @var{name} as a function that looks like this:
525@var{name}. It returns the value @var{name}, but usually we ignore this 525@var{name}. It returns the value @var{name}, but usually we ignore this
526value. 526value.
527 527
528As described previously (@pxref{Lambda Expressions}), 528As described previously, @var{argument-list} is a list of argument
529@var{argument-list} is a list of argument names and may include the 529names and may include the keywords @code{&optional} and @code{&rest}
530keywords @code{&optional} and @code{&rest}. Also, the first two of the 530(@pxref{Lambda Expressions}). Also, the first two of the
531@var{body-forms} may be a documentation string and an interactive 531@var{body-forms} may be a documentation string and an interactive
532declaration. 532declaration.
533 533
@@ -1157,13 +1157,14 @@ a function defined by another package, it is cleaner to use
1157You can use @code{make-obsolete} to declare a function obsolete. This 1157You can use @code{make-obsolete} to declare a function obsolete. This
1158indicates that the function may be removed at some stage in the future. 1158indicates that the function may be removed at some stage in the future.
1159 1159
1160@defun make-obsolete function new &optional when 1160@defun make-obsolete obsolete-name current-name &optional when
1161This function makes the byte compiler warn that the function 1161This function makes the byte compiler warn that the function
1162@var{function} is obsolete. If @var{new} is a symbol, the warning 1162@var{obsolete-name} is obsolete. If @var{current-name} is a symbol, the
1163message says to use @var{new} instead of @var{function}. @var{new} 1163warning message says to use @var{current-name} instead of
1164does not need to be an alias for @var{function}; it can be a different 1164@var{obsolete-name}. @var{current-name} does not need to be an alias for
1165function with similar functionality. If @var{new} is a string, it is 1165@var{obsolete-name}; it can be a different function with similar
1166the warning message. 1166functionality. If @var{current-name} is a string, it is the warning
1167message.
1167 1168
1168If provided, @var{when} should be a string indicating when the function 1169If provided, @var{when} should be a string indicating when the function
1169was first made obsolete---for example, a date or a release number. 1170was first made obsolete---for example, a date or a release number.
@@ -1172,20 +1173,14 @@ was first made obsolete---for example, a date or a release number.
1172You can define a function as an alias and declare it obsolete at the 1173You can define a function as an alias and declare it obsolete at the
1173same time using the macro @code{define-obsolete-function-alias}. 1174same time using the macro @code{define-obsolete-function-alias}.
1174 1175
1175@defmac define-obsolete-function-alias function new &optional when docstring 1176@defmac define-obsolete-function-alias obsolete-name current-name &optional when docstring
1176This macro marks the function @var{function} obsolete and also defines 1177This macro marks the function @var{obsolete-name} obsolete and also
1177it as an alias for the function @var{new}. A typical call has the form: 1178defines it as an alias for the function @var{current-name}. It is
1179equivalent to the following:
1178 1180
1179@example 1181@example
1180(define-obsolete-function-alias 'old-fun 'new-fun "22.1" "Doc.") 1182(defalias @var{obsolete-name} @var{current-name} @var{docstring})
1181@end example 1183(make-obsolete @var{obsolete-name} @var{current-name} @var{when})
1182
1183@noindent
1184which is equivalent to the following two lines of code:
1185
1186@example
1187(defalias 'old-fun 'new-fun "Doc.")
1188(make-obsolete 'old-fun 'new-fun "22.1")
1189@end example 1184@end example
1190@end defmac 1185@end defmac
1191 1186
diff --git a/lispref/help.texi b/lispref/help.texi
index dfbc6c220f3..2dbea2038cc 100644
--- a/lispref/help.texi
+++ b/lispref/help.texi
@@ -47,13 +47,15 @@ of a function or variable. In a function definition, the documentation
47string follows the argument list. In a variable definition, the 47string follows the argument list. In a variable definition, the
48documentation string follows the initial value of the variable. 48documentation string follows the initial value of the variable.
49 49
50 When you write a documentation string, make the first line a complete 50 When you write a documentation string, make the first line a
51sentence (or two complete sentences) since some commands, such as 51complete sentence (or two complete sentences) since some commands,
52@code{apropos}, show only the first line of a multi-line documentation 52such as @code{apropos}, show only the first line of a multi-line
53string. Also, you should not indent the second line of a documentation 53documentation string. Also, you should not indent the second line of
54string, if it has one, because that looks odd when you use @kbd{C-h f} 54a documentation string, if it has one, because that looks odd when you
55(@code{describe-function}) or @kbd{C-h v} (@code{describe-variable}) to 55use @kbd{C-h f} (@code{describe-function}) or @kbd{C-h v}
56view the documentation string. @xref{Documentation Tips}. 56(@code{describe-variable}) to view the documentation string. There
57are many other conventions for doc strings; see @ref{Documentation
58Tips}.
57 59
58 Documentation strings can contain several special substrings, which 60 Documentation strings can contain several special substrings, which
59stand for key bindings to be looked up in the current keymaps when the 61stand for key bindings to be looked up in the current keymaps when the
@@ -117,7 +119,7 @@ retrieves the text from a file if the value calls for that. If the
117property value isn't @code{nil}, isn't a string, and doesn't refer to 119property value isn't @code{nil}, isn't a string, and doesn't refer to
118text in a file, then it is evaluated to obtain a string. 120text in a file, then it is evaluated to obtain a string.
119 121
120Finally, @code{documentation-property} passes the string through 122The last thing this function does is pass the string through
121@code{substitute-command-keys} to substitute actual key bindings, 123@code{substitute-command-keys} to substitute actual key bindings,
122unless @var{verbatim} is non-@code{nil}. 124unless @var{verbatim} is non-@code{nil}.
123 125
diff --git a/lispref/keymaps.texi b/lispref/keymaps.texi
index 63832ced1b4..79cbe478ea2 100644
--- a/lispref/keymaps.texi
+++ b/lispref/keymaps.texi
@@ -1335,10 +1335,10 @@ a key binding.
1335instead of @code{kill-line} and @code{kill-word}. It can establish 1335instead of @code{kill-line} and @code{kill-word}. It can establish
1336this by making these two command-remapping bindings in its keymap: 1336this by making these two command-remapping bindings in its keymap:
1337 1337
1338@example 1338@smallexample
1339(define-key my-mode-map [remap kill-line] 'my-kill-line) 1339(define-key my-mode-map [remap kill-line] 'my-kill-line)
1340(define-key my-mode-map [remap kill-word] 'my-kill-word) 1340(define-key my-mode-map [remap kill-word] 'my-kill-word)
1341@end example 1341@end smallexample
1342 1342
1343Whenever @code{my-mode-map} is an active keymap, if the user types 1343Whenever @code{my-mode-map} is an active keymap, if the user types
1344@kbd{C-k}, Emacs will find the standard global binding of 1344@kbd{C-k}, Emacs will find the standard global binding of
@@ -1349,10 +1349,10 @@ so instead of running @code{kill-line}, Emacs runs
1349 1349
1350Remapping only works through a single level. In other words, 1350Remapping only works through a single level. In other words,
1351 1351
1352@example 1352@smallexample
1353(define-key my-mode-map [remap kill-line] 'my-kill-line) 1353(define-key my-mode-map [remap kill-line] 'my-kill-line)
1354(define-key my-mode-map [remap my-kill-line] 'my-other-kill-line) 1354(define-key my-mode-map [remap my-kill-line] 'my-other-kill-line)
1355@end example 1355@end smallexample
1356 1356
1357@noindent 1357@noindent
1358does not have the effect of remapping @code{kill-line} into 1358does not have the effect of remapping @code{kill-line} into
diff --git a/lispref/lists.texi b/lispref/lists.texi
index ab7d496e461..a5a2c33bcce 100644
--- a/lispref/lists.texi
+++ b/lispref/lists.texi
@@ -24,6 +24,7 @@ the whole list.
24* Modifying Lists:: Storing new pieces into an existing list. 24* Modifying Lists:: Storing new pieces into an existing list.
25* Sets And Lists:: A list can represent a finite mathematical set. 25* Sets And Lists:: A list can represent a finite mathematical set.
26* Association Lists:: A list can represent a finite relation or mapping. 26* Association Lists:: A list can represent a finite relation or mapping.
27* Rings:: Managing a fixed-size ring of objects.
27@end menu 28@end menu
28 29
29@node Cons Cells 30@node Cons Cells
@@ -714,7 +715,7 @@ Some examples:
714primitives @code{setcar} and @code{setcdr}. We call these ``destructive'' 715primitives @code{setcar} and @code{setcdr}. We call these ``destructive''
715operations because they change existing list structure. 716operations because they change existing list structure.
716 717
717@cindex CL note---@code{rplaca} vrs @code{setcar} 718@cindex CL note---@code{rplaca} vs @code{setcar}
718@quotation 719@quotation
719@findex rplaca 720@findex rplaca
720@findex rplacd 721@findex rplacd
@@ -1676,6 +1677,94 @@ compares the @sc{cdr} of each @var{alist} association instead of the
1676@sc{car}. 1677@sc{car}.
1677@end defun 1678@end defun
1678 1679
1680@node Rings
1681@section Managing a Fixed-Size Ring of Objects
1682
1683@cindex ring data structure
1684 This section describes functions for operating on rings. A
1685@dfn{ring} is a fixed-size data structure that supports insertion,
1686deletion, rotation, and modulo-indexed reference and traversal.
1687
1688@defun make-ring size
1689This returns a new ring capable of holding @var{size} objects.
1690@var{size} should be an integer.
1691@end defun
1692
1693@defun ring-p object
1694This returns @code{t} if @var{object} is a ring, @code{nil} otherwise.
1695@end defun
1696
1697@defun ring-size ring
1698This returns the maximum capacity of the @var{ring}.
1699@end defun
1700
1701@defun ring-length ring
1702This returns the number of objects that @var{ring} currently contains.
1703The value will never exceed that returned by @code{ring-size}.
1704@end defun
1705
1706@defun ring-elements ring
1707This returns a list of the objects in @var{ring}, in no particular
1708order.
1709@end defun
1710
1711@defun ring-copy ring
1712This returns a new ring which is a copy of @var{ring}.
1713The new ring contains the same (@code{eq}) objects as @var{ring}.
1714@end defun
1715
1716@defun ring-empty-p ring
1717This returns @code{t} if @var{ring} is empty, @code{nil} otherwise.
1718@end defun
1719
1720 The newest element in the ring always has index 0. Higher indices
1721correspond to older elements. Indices are computed modulo the ring
1722length. Index @minus{}1 corresponds to the oldest element, @minus{}2
1723to the next-oldest, and so forth.
1724
1725@defun ring-ref ring index
1726This returns the object in @var{ring} found at index @var{index}.
1727@var{index} may be negative or greater than the ring length. If
1728@var{ring} is empty, @code{ring-ref} signals an error.
1729@end defun
1730
1731@defun ring-insert ring object
1732This inserts @var{object} into @var{ring}, making it the newest
1733element, and returns @var{object}.
1734
1735If the ring is full, insertion removes the oldest element to
1736make room for the new element.
1737@end defun
1738
1739@defun ring-remove ring &optional index
1740Remove an object from @var{ring}, and return that object. The
1741argument @var{index} specifies which item to remove; if it is
1742@code{nil}, that means to remove the oldest item. If @var{ring} is
1743empty, @code{ring-remove} signals an error.
1744@end defun
1745
1746@defun ring-insert-at-beginning ring object
1747This inserts @var{object} into @var{ring}, treating it as the oldest
1748element. The return value is not significant.
1749
1750If the ring is full, this function removes the newest element to make
1751room for the inserted element.
1752@end defun
1753
1754@cindex fifo data structure
1755 If you are careful not to exceed the ring size, you can
1756use the ring as a first-in-first-out queue. For example:
1757
1758@lisp
1759(let ((fifo (make-ring 5)))
1760 (mapc (lambda (obj) (ring-insert fifo obj))
1761 '(0 one "two"))
1762 (list (ring-remove fifo) t
1763 (ring-remove fifo) t
1764 (ring-remove fifo)))
1765 @result{} (0 t one t "two")
1766@end lisp
1767
1679@ignore 1768@ignore
1680 arch-tag: 31fb8a4e-4aa8-4a74-a206-aa00451394d4 1769 arch-tag: 31fb8a4e-4aa8-4a74-a206-aa00451394d4
1681@end ignore 1770@end ignore
diff --git a/lispref/minibuf.texi b/lispref/minibuf.texi
index cdba210b625..a6153fdaca2 100644
--- a/lispref/minibuf.texi
+++ b/lispref/minibuf.texi
@@ -414,10 +414,9 @@ symbol, not a list; it is a variable whose value is a list of strings
414inputs. It's the Lisp programmer's job to specify the right history 414inputs. It's the Lisp programmer's job to specify the right history
415list for each use of the minibuffer. 415list for each use of the minibuffer.
416 416
417 The basic minibuffer input functions @code{read-from-minibuffer} and 417 You specify the history list with the optional @var{hist} argument
418@code{completing-read} both accept an optional argument named @var{hist} 418to either @code{read-from-minibuffer} or @code{completing-read}. Here
419which is how you specify the history list. Here are the possible 419are the possible values for it:
420values:
421 420
422@table @asis 421@table @asis
423@item @var{variable} 422@item @var{variable}
@@ -587,10 +586,11 @@ for reading certain kinds of names with completion.
587@node Basic Completion 586@node Basic Completion
588@subsection Basic Completion Functions 587@subsection Basic Completion Functions
589 588
590 The functions @code{try-completion}, @code{all-completions} and 589 The completion functions @code{try-completion},
591@code{test-completion} have nothing in themselves to do with 590@code{all-completions} and @code{test-completion} have nothing in
592minibuffers. We describe them in this chapter so as to keep them near 591themselves to do with minibuffers. We describe them in this chapter
593the higher-level completion features that do use the minibuffer. 592so as to keep them near the higher-level completion features that do
593use the minibuffer.
594 594
595@defun try-completion string collection &optional predicate 595@defun try-completion string collection &optional predicate
596This function returns the longest common substring of all possible 596This function returns the longest common substring of all possible
@@ -788,12 +788,12 @@ value @var{fun} returns becomes the permanent value of @var{var}.
788 788
789Here are two examples of use: 789Here are two examples of use:
790 790
791@example 791@smallexample
792(defvar foo (lazy-completion-table foo make-my-alist 'global)) 792(defvar foo (lazy-completion-table foo make-my-alist 'global))
793 793
794(make-local-variable 'bar) 794(make-local-variable 'bar)
795(setq bar (lazy-completion-table foo make-my-alist 'local) 795(setq bar (lazy-completion-table foo make-my-alist 'local)
796@end example 796@end smallexample
797@end defmac 797@end defmac
798 798
799@node Minibuffer Completion 799@node Minibuffer Completion
@@ -879,12 +879,9 @@ Complete a foo: fo@point{}
879If the user then types @kbd{@key{DEL} @key{DEL} b @key{RET}}, 879If the user then types @kbd{@key{DEL} @key{DEL} b @key{RET}},
880@code{completing-read} returns @code{barfoo}. 880@code{completing-read} returns @code{barfoo}.
881 881
882The @code{completing-read} function binds three variables to pass 882The @code{completing-read} function binds variables to pass
883information to the commands that actually do completion. These 883information to the commands that actually do completion.
884variables are @code{minibuffer-completion-table}, 884They are described in the following section.
885@code{minibuffer-completion-predicate} and
886@code{minibuffer-completion-confirm}. For more information about them,
887see @ref{Completion Commands}.
888@end defun 885@end defun
889 886
890@node Completion Commands 887@node Completion Commands
@@ -898,55 +895,6 @@ some of the commands described below. @xref{Completion Options,,,
898emacs, The GNU Emacs Manual}, for a short description of Partial 895emacs, The GNU Emacs Manual}, for a short description of Partial
899Completion mode. 896Completion mode.
900 897
901@defvar minibuffer-local-completion-map
902@code{completing-read} uses this value as the local keymap when an
903exact match of one of the completions is not required. By default, this
904keymap makes the following bindings:
905
906@table @asis
907@item @kbd{?}
908@code{minibuffer-completion-help}
909
910@item @key{SPC}
911@code{minibuffer-complete-word}
912
913@item @key{TAB}
914@code{minibuffer-complete}
915@end table
916
917@noindent
918with other characters bound as in @code{minibuffer-local-map}
919(@pxref{Definition of minibuffer-local-map}).
920@end defvar
921
922@defvar minibuffer-local-must-match-map
923@code{completing-read} uses this value as the local keymap when an
924exact match of one of the completions is required. Therefore, no keys
925are bound to @code{exit-minibuffer}, the command that exits the
926minibuffer unconditionally. By default, this keymap makes the following
927bindings:
928
929@table @asis
930@item @kbd{?}
931@code{minibuffer-completion-help}
932
933@item @key{SPC}
934@code{minibuffer-complete-word}
935
936@item @key{TAB}
937@code{minibuffer-complete}
938
939@item @kbd{C-j}
940@code{minibuffer-complete-and-exit}
941
942@item @key{RET}
943@code{minibuffer-complete-and-exit}
944@end table
945
946@noindent
947with other characters bound as in @code{minibuffer-local-map}.
948@end defvar
949
950@defvar minibuffer-completion-table 898@defvar minibuffer-completion-table
951The value of this variable is the collection used for completion in 899The value of this variable is the collection used for completion in
952the minibuffer. This is the global variable that contains what 900the minibuffer. This is the global variable that contains what
@@ -960,6 +908,13 @@ passes to @code{try-completion}. The variable is also used by the other
960minibuffer completion functions. 908minibuffer completion functions.
961@end defvar 909@end defvar
962 910
911@defvar minibuffer-completion-confirm
912When the value of this variable is non-@code{nil}, Emacs asks for
913confirmation of a completion before exiting the minibuffer.
914@code{completing-read} binds this variable, and the function
915@code{minibuffer-complete-and-exit} checks the value before exiting.
916@end defvar
917
963@deffn Command minibuffer-complete-word 918@deffn Command minibuffer-complete-word
964This function completes the minibuffer contents by at most a single 919This function completes the minibuffer contents by at most a single
965word. Even if the minibuffer contents have only one completion, 920word. Even if the minibuffer contents have only one completion,
@@ -980,13 +935,6 @@ immediately---the command is programmed to work without confirmation
980when run twice in succession. 935when run twice in succession.
981@end deffn 936@end deffn
982 937
983@defvar minibuffer-completion-confirm
984When the value of this variable is non-@code{nil}, Emacs asks for
985confirmation of a completion before exiting the minibuffer. The
986function @code{minibuffer-complete-and-exit} checks the value of this
987variable before it exits.
988@end defvar
989
990@deffn Command minibuffer-completion-help 938@deffn Command minibuffer-completion-help
991This function creates a list of the possible completions of the 939This function creates a list of the possible completions of the
992current minibuffer contents. It works by calling @code{all-completions} 940current minibuffer contents. It works by calling @code{all-completions}
@@ -1025,6 +973,55 @@ automatically display a list of possible completions whenever nothing
1025can be completed because the next character is not uniquely determined. 973can be completed because the next character is not uniquely determined.
1026@end defopt 974@end defopt
1027 975
976@defvar minibuffer-local-completion-map
977@code{completing-read} uses this value as the local keymap when an
978exact match of one of the completions is not required. By default, this
979keymap makes the following bindings:
980
981@table @asis
982@item @kbd{?}
983@code{minibuffer-completion-help}
984
985@item @key{SPC}
986@code{minibuffer-complete-word}
987
988@item @key{TAB}
989@code{minibuffer-complete}
990@end table
991
992@noindent
993with other characters bound as in @code{minibuffer-local-map}
994(@pxref{Definition of minibuffer-local-map}).
995@end defvar
996
997@defvar minibuffer-local-must-match-map
998@code{completing-read} uses this value as the local keymap when an
999exact match of one of the completions is required. Therefore, no keys
1000are bound to @code{exit-minibuffer}, the command that exits the
1001minibuffer unconditionally. By default, this keymap makes the following
1002bindings:
1003
1004@table @asis
1005@item @kbd{?}
1006@code{minibuffer-completion-help}
1007
1008@item @key{SPC}
1009@code{minibuffer-complete-word}
1010
1011@item @key{TAB}
1012@code{minibuffer-complete}
1013
1014@item @kbd{C-j}
1015@code{minibuffer-complete-and-exit}
1016
1017@item @key{RET}
1018@code{minibuffer-complete-and-exit}
1019@end table
1020
1021@noindent
1022with other characters bound as in @code{minibuffer-local-map}.
1023@end defvar
1024
1028@node High-Level Completion 1025@node High-Level Completion
1029@subsection High-Level Completion Functions 1026@subsection High-Level Completion Functions
1030 1027
diff --git a/lispref/modes.texi b/lispref/modes.texi
index 2366fca5b96..ac13e30b90c 100644
--- a/lispref/modes.texi
+++ b/lispref/modes.texi
@@ -395,7 +395,7 @@ setting up a buffer-local value for the variable
395@item 395@item
396The mode should specify how Imenu should find the definitions or 396The mode should specify how Imenu should find the definitions or
397sections of a buffer, by setting up a buffer-local value for the 397sections of a buffer, by setting up a buffer-local value for the
398variable @code{imenu-generic-expression}, for the pair of variables 398variable @code{imenu-generic-expression}, for the two variables
399@code{imenu-prev-index-position-function} and 399@code{imenu-prev-index-position-function} and
400@code{imenu-extract-index-name-function}, or for the variable 400@code{imenu-extract-index-name-function}, or for the variable
401@code{imenu-create-index-function} (@pxref{Imenu}). 401@code{imenu-create-index-function} (@pxref{Imenu}).
@@ -2290,8 +2290,8 @@ A nested sub-alist element looks like this:
2290It creates the submenu @var{menu-title} specified by @var{sub-alist}. 2290It creates the submenu @var{menu-title} specified by @var{sub-alist}.
2291 2291
2292The default value of @code{imenu-create-index-function} is 2292The default value of @code{imenu-create-index-function} is
2293@code{imenu-default-create-index-function}. This function uses 2293@code{imenu-default-create-index-function}. This function calls the
2294@code{imenu-prev-index-position-function} and 2294value of @code{imenu-prev-index-position-function} and the value of
2295@code{imenu-extract-index-name-function} to produce the index alist. 2295@code{imenu-extract-index-name-function} to produce the index alist.
2296However, if either of these two variables is @code{nil}, the default 2296However, if either of these two variables is @code{nil}, the default
2297function uses @code{imenu-generic-expression} instead. 2297function uses @code{imenu-generic-expression} instead.
@@ -2456,7 +2456,7 @@ highlighted (instead of the entire text that @var{matcher} matched).
2456@end example 2456@end example
2457 2457
2458If you use @code{regexp-opt} to produce the regular expression 2458If you use @code{regexp-opt} to produce the regular expression
2459@var{matcher}, then you can use @code{regexp-opt-depth} (@pxref{Regexp 2459@var{matcher}, you can use @code{regexp-opt-depth} (@pxref{Regexp
2460Functions}) to calculate the value for @var{subexp}. 2460Functions}) to calculate the value for @var{subexp}.
2461 2461
2462@item (@var{matcher} . @var{facespec}) 2462@item (@var{matcher} . @var{facespec})
@@ -2657,8 +2657,7 @@ non-@code{nil} value, they are added at the end of
2657Some modes provide specialized support you can use in additional 2657Some modes provide specialized support you can use in additional
2658highlighting patterns. See the variables 2658highlighting patterns. See the variables
2659@code{c-font-lock-extra-types}, @code{c++-font-lock-extra-types}, 2659@code{c-font-lock-extra-types}, @code{c++-font-lock-extra-types},
2660@code{objc-font-lock-extra-types} and 2660and @code{java-font-lock-extra-types}, for example.
2661@code{java-font-lock-extra-types}, for example.
2662 2661
2663@strong{Warning:} major mode functions must not call 2662@strong{Warning:} major mode functions must not call
2664@code{font-lock-add-keywords} under any circumstances, either directly 2663@code{font-lock-add-keywords} under any circumstances, either directly
diff --git a/lispref/nonascii.texi b/lispref/nonascii.texi
index aaa23e90a48..9683156541d 100644
--- a/lispref/nonascii.texi
+++ b/lispref/nonascii.texi
@@ -1067,11 +1067,11 @@ for decoding (in case @var{operation} does decoding), and
1067@var{encoding-system} is the coding system for encoding (in case 1067@var{encoding-system} is the coding system for encoding (in case
1068@var{operation} does encoding). 1068@var{operation} does encoding).
1069 1069
1070The argument @var{operation} should be a symbol, one of 1070The argument @var{operation} should be a symbol, any one of
1071@code{insert-file-contents}, @code{write-region}, @code{call-process}, 1071@code{insert-file-contents}, @code{write-region},
1072@code{call-process-region}, @code{start-process}, or 1072@code{start-process}, @code{call-process}, @code{call-process-region},
1073@code{open-network-stream}. These are the names of the Emacs I/O primitives 1073or @code{open-network-stream}. These are the names of the Emacs I/O
1074that can do coding system conversion. 1074primitives that can do coding system conversion.
1075 1075
1076The remaining arguments should be the same arguments that might be given 1076The remaining arguments should be the same arguments that might be given
1077to that I/O primitive. Depending on the primitive, one of those 1077to that I/O primitive. Depending on the primitive, one of those
@@ -1081,9 +1081,9 @@ name is the target. For subprocess primitives, the process name is the
1081target. For @code{open-network-stream}, the target is the service name 1081target. For @code{open-network-stream}, the target is the service name
1082or port number. 1082or port number.
1083 1083
1084This function looks up the target in @code{file-coding-system-alist}, 1084Depending on @var{operation}, this function looks up the target in
1085@code{process-coding-system-alist}, or 1085@code{file-coding-system-alist}, @code{process-coding-system-alist},
1086@code{network-coding-system-alist}, depending on @var{operation}. 1086or @code{network-coding-system-alist}.
1087@end defun 1087@end defun
1088 1088
1089@node Specifying Coding Systems 1089@node Specifying Coding Systems
diff --git a/lispref/os.texi b/lispref/os.texi
index a1de8f09c36..7bc76799210 100644
--- a/lispref/os.texi
+++ b/lispref/os.texi
@@ -91,10 +91,10 @@ name is usually @file{site-start.el}.
91@cindex @file{site-start.el} 91@cindex @file{site-start.el}
92 92
93@item 93@item
94It loads your init file (usually @file{~/.emacs}), unless @samp{-q} 94It loads your init file (usually @file{~/.emacs}), unless the option
95(or @samp{--no-init-file}), @samp{-Q}, or @samp{--batch} was specified 95@samp{-q} (or @samp{--no-init-file}), @samp{-Q}, or @samp{--batch} was
96on the command line. The @samp{-u} option can specify another user 96specified on the command line. The @samp{-u} option can specify
97whose home directory should be used instead of @file{~}. 97another user whose home directory should be used instead of @file{~}.
98 98
99@item 99@item
100It loads the library @file{default} (if any), unless 100It loads the library @file{default} (if any), unless
@@ -606,9 +606,10 @@ through various functions. These variables include the name of the
606system, the user's @acronym{UID}, and so on. 606system, the user's @acronym{UID}, and so on.
607 607
608@defvar system-configuration 608@defvar system-configuration
609This variable holds the GNU configuration name for the hardware/software 609This variable holds the standard GNU configuration name for the
610configuration of your system, as a string. The convenient way to test 610hardware/software configuration of your system, as a string. The
611parts of this string is with @code{string-match}. 611convenient way to test parts of this string is with
612@code{string-match}.
612@end defvar 613@end defvar
613 614
614@defvar system-type 615@defvar system-type
@@ -1375,6 +1376,9 @@ both before and after changing the buffer, to separate the timer's
1375changes from user commands' changes and prevent a single undo entry 1376changes from user commands' changes and prevent a single undo entry
1376from growing to be quite large. 1377from growing to be quite large.
1377 1378
1379 If a timer function calls functions that can change the match data,
1380it should save and restore the match data. @xref{Saving Match Data}.
1381
1378@deffn Command run-at-time time repeat function &rest args 1382@deffn Command run-at-time time repeat function &rest args
1379This sets up a timer that calls the function @var{function} with 1383This sets up a timer that calls the function @var{function} with
1380arguments @var{args} at time @var{time}. If @var{repeat} is a number 1384arguments @var{args} at time @var{time}. If @var{repeat} is a number
diff --git a/lispref/processes.texi b/lispref/processes.texi
index 07a72886355..f88b2c46159 100644
--- a/lispref/processes.texi
+++ b/lispref/processes.texi
@@ -52,6 +52,7 @@ This function returns @code{t} if @var{object} is a process,
52* Datagrams:: UDP network connections. 52* Datagrams:: UDP network connections.
53* Low-Level Network:: Lower-level but more general function 53* Low-Level Network:: Lower-level but more general function
54 to create connections and servers. 54 to create connections and servers.
55* Byte Packing:: Using bindat to pack and unpack binary data.
55@end menu 56@end menu
56 57
57@node Subprocess Creation 58@node Subprocess Creation
@@ -168,7 +169,7 @@ function.
168(shell-quote-argument "foo > bar") 169(shell-quote-argument "foo > bar")
169 @result{} "foo\\ \\>\\ bar" 170 @result{} "foo\\ \\>\\ bar"
170 171
171;; @r{This example shows the behavior on MS-DOS and MS-Windows systems.} 172;; @r{This example shows the behavior on MS-DOS and MS-Windows.}
172(shell-quote-argument "foo > bar") 173(shell-quote-argument "foo > bar")
173 @result{} "\"foo > bar\"" 174 @result{} "\"foo > bar\""
174@end example 175@end example
@@ -766,9 +767,9 @@ specify the process to send input to, and the input data to send. The
766data appears on the ``standard input'' of the subprocess. 767data appears on the ``standard input'' of the subprocess.
767 768
768 Some operating systems have limited space for buffered input in a 769 Some operating systems have limited space for buffered input in a
769@acronym{PTY}. On these systems, Emacs sends an @acronym{EOF} periodically amidst 770@acronym{PTY}. On these systems, Emacs sends an @acronym{EOF}
770the other characters, to force them through. For most programs, 771periodically amidst the other characters, to force them through. For
771these @acronym{EOF}s do no harm. 772most programs, these @acronym{EOF}s do no harm.
772 773
773 Subprocess input is normally encoded using a coding system before the 774 Subprocess input is normally encoded using a coding system before the
774subprocess receives it, much like text written into a file. You can use 775subprocess receives it, much like text written into a file. You can use
@@ -972,7 +973,7 @@ primitive that waits.
972@defvar process-adaptive-read-buffering 973@defvar process-adaptive-read-buffering
973On some systems, when Emacs reads the output from a subprocess, the 974On some systems, when Emacs reads the output from a subprocess, the
974output data is read in very small blocks, potentially resulting in 975output data is read in very small blocks, potentially resulting in
975very poor performance. This behaviour can be remedied to some extent 976very poor performance. This behavior can be remedied to some extent
976by setting the variable @var{process-adaptive-read-buffering} to a 977by setting the variable @var{process-adaptive-read-buffering} to a
977non-@code{nil} value (the default), as it will automatically delay reading 978non-@code{nil} value (the default), as it will automatically delay reading
978from such processes, thus allowing them to produce more output before 979from such processes, thus allowing them to produce more output before
@@ -1559,7 +1560,7 @@ back to listening for more connection requests.
1559keyword/argument pairs, for example @code{:server t} to create a 1560keyword/argument pairs, for example @code{:server t} to create a
1560server process, or @code{:type 'datagram} to create a datagram 1561server process, or @code{:type 'datagram} to create a datagram
1561connection. @xref{Low-Level Network}, for details. You can also use 1562connection. @xref{Low-Level Network}, for details. You can also use
1562the @code{open-network-stream} function descibed below. 1563the @code{open-network-stream} function described below.
1563 1564
1564 You can distinguish process objects representing network connections 1565 You can distinguish process objects representing network connections
1565and servers from those representing subprocesses with the 1566and servers from those representing subprocesses with the
@@ -1823,7 +1824,8 @@ If you don't specify this keyword at all, the default
1823is to determine the coding systems from the data. 1824is to determine the coding systems from the data.
1824 1825
1825@item :noquery @var{query-flag} 1826@item :noquery @var{query-flag}
1826Initialize the process query flag to @var{query-flag}. @xref{Query Before Exit}. 1827Initialize the process query flag to @var{query-flag}.
1828@xref{Query Before Exit}.
1827 1829
1828@item :filter @var{filter} 1830@item :filter @var{filter}
1829Initialize the process filter to @var{filter}. 1831Initialize the process filter to @var{filter}.
@@ -1938,7 +1940,8 @@ and @var{remote-address} arguments to @code{make-network-process}.
1938 1940
1939@defun network-interface-info ifname 1941@defun network-interface-info ifname
1940This function returns information about the network interface named 1942This function returns information about the network interface named
1941@var{ifname}. The value is a list of the form @code{(@var{addr} @var{bcast} @var{netmask} @var{hwaddr} @var{flags})}. 1943@var{ifname}. The value is a list of the form
1944@code{(@var{addr} @var{bcast} @var{netmask} @var{hwaddr} @var{flags})}.
1942 1945
1943@table @var 1946@table @var
1944@item addr 1947@item addr
@@ -2015,7 +2018,411 @@ That particular network option is supported by
2015@code{make-network-process} and @code{set-network-process-option}. 2018@code{make-network-process} and @code{set-network-process-option}.
2016@end table 2019@end table
2017 2020
2021@node Byte Packing
2022@section Packing and Unpacking Byte Arrays
2023
2024 This section describes how to pack and unpack arrays of bytes,
2025usually for binary network protocols. These functions convert byte arrays
2026to alists, and vice versa. The byte array can be represented as a
2027unibyte string or as a vector of integers, while the alist associates
2028symbols either with fixed-size objects or with recursive sub-alists.
2029
2030@cindex serializing
2031@cindex deserializing
2032@cindex packing
2033@cindex unpacking
2034 Conversion from byte arrays to nested alists is also known as
2035@dfn{deserializing} or @dfn{unpacking}, while going in the opposite
2036direction is also known as @dfn{serializing} or @dfn{packing}.
2037
2038@menu
2039* Bindat Spec:: Describing data layout.
2040* Bindat Functions:: Doing the unpacking and packing.
2041* Bindat Examples:: Samples of what bindat.el can do for you!
2042@end menu
2043
2044@node Bindat Spec
2045@subsection Describing Data Layout
2046
2047 To control unpacking and packing, you write a @dfn{data layout
2048specification}, a special nested list describing named and typed
2049@dfn{fields}. This specification controls length of each field to be
2050processed, and how to pack or unpack it.
2051
2052@cindex endianness
2053@cindex big endian
2054@cindex little endian
2055@cindex network byte ordering
2056 A field's @dfn{type} describes the size (in bytes) of the object
2057that the field represents and, in the case of multibyte fields, how
2058the bytes are ordered within the field. The two possible orderings
2059are ``big endian'' (also known as ``network byte ordering'') and
2060``little endian''. For instance, the number @code{#x23cd} (decimal
20619165) in big endian would be the two bytes @code{#x23} @code{#xcd};
2062and in little endian, @code{#xcd} @code{#x23}. Here are the possible
2063type values:
2064
2065@table @code
2066@item u8
2067@itemx byte
2068Unsigned byte, with length 1.
2069
2070@item u16
2071@itemx word
2072@itemx short
2073Unsigned integer in network byte order, with length 2.
2074
2075@item u24
2076Unsigned integer in network byte order, with length 3.
2077
2078@item u32
2079@itemx dword
2080@itemx long
2081Unsigned integer in network byte order, with length 4.
2082Note: These values may be limited by Emacs' integer implementation limits.
2083
2084@item u16r
2085@itemx u24r
2086@itemx u32r
2087Unsigned integer in little endian order, with length 2, 3 and 4, respectively.
2088
2089@item str @var{len}
2090String of length @var{len}.
2091
2092@item strz @var{len}
2093Zero-terminated string of length @var{len}.
2094
2095@item vec @var{len}
2096Vector of @var{len} bytes.
2097
2098@item ip
2099Four-byte vector representing an Internet address. For example:
2100@code{[127 0 0 1]} for localhost.
2101
2102@item bits @var{len}
2103List of set bits in @var{len} bytes. The bytes are taken in big
2104endian order and the bits are numbered starting with @code{8 *
2105@var{len} @minus{} 1} and ending with zero. For example: @code{bits
21062} unpacks @code{#x28} @code{#x1c} to @code{(2 3 4 11 13)} and
2107@code{#x1c} @code{#x28} to @code{(3 5 10 11 12)}.
2108
2109@item (eval @var{form})
2110@var{form} is a Lisp expression evaluated at the moment the field is
2111unpacked or packed. The result of the evaluation should be one of the
2112above-listed type specifications.
2113@end table
2114
2115A field specification generally has the form @code{([@var{name}]
2116@var{handler})}. The square braces indicate that @var{name} is
2117optional. (Don't use names that are symbols meaningful as type
2118specifications (above) or handler specifications (below), since that
2119would be ambiguous.) @var{name} can be a symbol or the expression
2120@code{(eval @var{form})}, in which case @var{form} should evaluate to
2121a symbol.
2122
2123@var{handler} describes how to unpack or pack the field and can be one
2124of the following:
2125
2126@table @code
2127@item @var{type}
2128Unpack/pack this field according to the type specification @var{type}.
2129
2130@item eval @var{form}
2131Evaluate @var{form}, a Lisp expression, for side-effect only. If the
2132field name is specified, the value is bound to that field name.
2133@var{form} can access and update these dynamically bound variables:
2134
2135@table @code
2136@item raw-data
2137The data as a byte array.
2138
2139@item pos
2140Current position of the unpacking or packing operation.
2141
2142@item struct
2143Alist.
2144
2145@item last
2146Value of the last field processed.
2147@end table
2148
2149@item fill @var{len}
2150Skip @var{len} bytes. In packing, this leaves them unchanged,
2151which normally means they remain zero. In unpacking, this means
2152they are ignored.
2153
2154@item align @var{len}
2155Skip to the next multiple of @var{len} bytes.
2156
2157@item struct @var{spec-name}
2158Process @var{spec-name} as a sub-specification. This describes a
2159structure nested within another structure.
2160
2161@item union @var{form} (@var{tag} @var{spec})@dots{}
2162@c ??? I don't see how one would actually use this.
2163@c ??? what kind of expression would be useful for @var{form}?
2164Evaluate @var{form}, a Lisp expression, find the first @var{tag}
2165that matches it, and process its associated data layout specification
2166@var{spec}. Matching can occur in one of three ways:
2167
2168@itemize
2169@item
2170If a @var{tag} has the form @code{(eval @var{expr})}, evaluate
2171@var{expr} with the variable @code{tag} dynamically bound to the value
2172of @var{form}. A non-@code{nil} result indicates a match.
2173
2174@item
2175@var{tag} matches if it is @code{equal} to the value of @var{form}.
2176
2177@item
2178@var{tag} matches unconditionally if it is @code{t}.
2179@end itemize
2180
2181@item repeat @var{count} @var{field-spec}@dots{}
2182@var{count} may be an integer, or a list of one element naming a
2183previous field. For correct operation, each @var{field-spec} must
2184include a name.
2185@c ??? What does it MEAN?
2186@end table
2187
2188@node Bindat Functions
2189@subsection Functions to Unpack and Pack Bytes
2190
2191 In the following documentation, @var{spec} refers to a data layout
2192specification, @code{raw-data} to a byte array, and @var{struct} to an
2193alist representing unpacked field data.
2194
2195@defun bindat-unpack spec raw-data &optional pos
2196This function unpacks data from the byte array @code{raw-data}
2197according to @var{spec}. Normally this starts unpacking at the
2198beginning of the byte array, but if @var{pos} is non-@code{nil}, it
2199specifies a zero-based starting position to use instead.
2200
2201The value is an alist or nested alist in which each element describes
2202one unpacked field.
2203@end defun
2204
2205@defun bindat-get-field struct &rest name
2206This function selects a field's data from the nested alist
2207@var{struct}. Usually @var{struct} was returned by
2208@code{bindat-unpack}. If @var{name} corresponds to just one argument,
2209that means to extract a top-level field value. Multiple @var{name}
2210arguments specify repeated lookup of sub-structures. An integer name
2211acts as an array index.
2212
2213For example, if @var{name} is @code{(a b 2 c)}, that means to find
2214field @code{c} in the second element of subfield @code{b} of field
2215@code{a}. (This corresponds to @code{struct.a.b[2].c} in C.)
2216@end defun
2217
2218@defun bindat-length spec struct
2219@c ??? I don't understand this at all -- rms
2220This function returns the length in bytes of @var{struct}, according
2221to @var{spec}.
2222@end defun
2223
2224@defun bindat-pack spec struct &optional raw-data pos
2225This function returns a byte array packed according to @var{spec} from
2226the data in the alist @var{struct}. Normally it creates and fills a
2227new byte array starting at the beginning. However, if @var{raw-data}
2228is non-@code{nil}, it specifies a pre-allocated string or vector to
2229pack into. If @var{pos} is non-@code{nil}, it specifies the starting
2230offset for packing into @code{raw-data}.
2231
2232@c ??? Isn't this a bug? Shouldn't it always be unibyte?
2233Note: The result is a multibyte string; use @code{string-make-unibyte}
2234on it to make it unibyte if necessary.
2235@end defun
2236
2237@defun bindat-ip-to-string ip
2238Convert the Internet address vector @var{ip} to a string in the usual
2239dotted notation.
2240
2241@example
2242(bindat-ip-to-string [127 0 0 1])
2243 @result{} "127.0.0.1"
2244@end example
2245@end defun
2246
2247@node Bindat Examples
2248@subsection Examples of Byte Unpacking and Packing
2249
2250 Here is a complete example of byte unpacking and packing:
2251
2252@lisp
2253(defvar fcookie-index-spec
2254 '((:version u32)
2255 (:count u32)
2256 (:longest u32)
2257 (:shortest u32)
2258 (:flags u32)
2259 (:delim u8)
2260 (:ignored fill 3)
2261 (:offset repeat (:count)
2262 (:foo u32)))
2263 "Description of a fortune cookie index file's contents.")
2264
2265(defun fcookie (cookies &optional index)
2266 "Display a random fortune cookie from file COOKIES.
2267Optional second arg INDEX specifies the associated index
2268filename, which is by default constructed by appending
2269\".dat\" to COOKIES. Display cookie text in possibly
2270new buffer \"*Fortune Cookie: BASENAME*\" where BASENAME
2271is COOKIES without the directory part."
2272 (interactive "fCookies file: ")
2273 (let* ((info (with-temp-buffer
2274 (insert-file-contents-literally
2275 (or index (concat cookies ".dat")))
2276 (bindat-unpack fcookie-index-spec
2277 (buffer-string))))
2278 (sel (random (bindat-get-field info :count)))
2279 (beg (cdar (bindat-get-field info :offset sel)))
2280 (end (or (cdar (bindat-get-field info
2281 :offset (1+ sel)))
2282 (nth 7 (file-attributes cookies)))))
2283 (switch-to-buffer
2284 (get-buffer-create
2285 (format "*Fortune Cookie: %s*"
2286 (file-name-nondirectory cookies))))
2287 (erase-buffer)
2288 (insert-file-contents-literally
2289 cookies nil beg (- end 3))))
2290
2291(defun fcookie-create-index (cookies &optional index delim)
2292 "Scan file COOKIES, and write out its index file.
2293Optional second arg INDEX specifies the index filename,
2294which is by default constructed by appending \".dat\" to
2295COOKIES. Optional third arg DELIM specifies the unibyte
2296character which, when found on a line of its own in
2297COOKIES, indicates the border between entries."
2298 (interactive "fCookies file: ")
2299 (setq delim (or delim ?%))
2300 (let ((delim-line (format "\n%c\n" delim))
2301 (count 0)
2302 (max 0)
2303 min p q len offsets)
2304 (unless (= 3 (string-bytes delim-line))
2305 (error "Delimiter cannot be represented in one byte"))
2306 (with-temp-buffer
2307 (insert-file-contents-literally cookies)
2308 (while (and (setq p (point))
2309 (search-forward delim-line (point-max) t)
2310 (setq len (- (point) 3 p)))
2311 (setq count (1+ count)
2312 max (max max len)
2313 min (min (or min max) len)
2314 offsets (cons (1- p) offsets))))
2315 (with-temp-buffer
2316 (set-buffer-multibyte nil)
2317 (insert
2318 (string-make-unibyte
2319 (bindat-pack
2320 fcookie-index-spec
2321 `((:version . 2)
2322 (:count . ,count)
2323 (:longest . ,max)
2324 (:shortest . ,min)
2325 (:flags . 0)
2326 (:delim . ,delim)
2327 (:offset . ,(mapcar (lambda (o)
2328 (list (cons :foo o)))
2329 (nreverse offsets)))))))
2330 (let ((coding-system-for-write 'raw-text-unix))
2331 (write-file (or index (concat cookies ".dat")))))))
2332@end lisp
2333
2334Following is an example of defining and unpacking a complex structure.
2335Consider the following C structures:
2336
2337@example
2338struct header @{
2339 unsigned long dest_ip;
2340 unsigned long src_ip;
2341 unsigned short dest_port;
2342 unsigned short src_port;
2343@};
2344
2345struct data @{
2346 unsigned char type;
2347 unsigned char opcode;
2348 unsigned long length; /* In little endian order */
2349 unsigned char id[8]; /* null-terminated string */
2350 unsigned char data[/* (length + 3) & ~3 */];
2351@};
2352
2353struct packet @{
2354 struct header header;
2355 unsigned char items;
2356 unsigned char filler[3];
2357 struct data item[/* items */];
2358
2359@};
2360@end example
2361
2362The corresponding data layout specification:
2363
2364@lisp
2365(setq header-spec
2366 '((dest-ip ip)
2367 (src-ip ip)
2368 (dest-port u16)
2369 (src-port u16)))
2370
2371(setq data-spec
2372 '((type u8)
2373 (opcode u8)
2374 (length u16r) ;; little endian order
2375 (id strz 8)
2376 (data vec (length))
2377 (align 4)))
2378
2379(setq packet-spec
2380 '((header struct header-spec)
2381 (items u8)
2382 (fill 3)
2383 (item repeat (items)
2384 (struct data-spec))))
2385@end lisp
2386
2387A binary data representation:
2388
2389@lisp
2390(setq binary-data
2391 [ 192 168 1 100 192 168 1 101 01 28 21 32 2 0 0 0
2392 2 3 5 0 ?A ?B ?C ?D ?E ?F 0 0 1 2 3 4 5 0 0 0
2393 1 4 7 0 ?B ?C ?D ?E ?F ?G 0 0 6 7 8 9 10 11 12 0 ])
2394@end lisp
2395
2396The corresponding decoded structure:
2397
2398@lisp
2399(setq decoded (bindat-unpack packet-spec binary-data))
2400 @result{}
2401((header
2402 (dest-ip . [192 168 1 100])
2403 (src-ip . [192 168 1 101])
2404 (dest-port . 284)
2405 (src-port . 5408))
2406 (items . 2)
2407 (item ((data . [1 2 3 4 5])
2408 (id . "ABCDEF")
2409 (length . 5)
2410 (opcode . 3)
2411 (type . 2))
2412 ((data . [6 7 8 9 10 11 12])
2413 (id . "BCDEFG")
2414 (length . 7)
2415 (opcode . 4)
2416 (type . 1))))
2417@end lisp
2418
2419Fetching data from this structure:
2420
2421@lisp
2422(bindat-get-field decoded 'item 1 'id)
2423 @result{} "BCDEFG"
2424@end lisp
2425
2018@ignore 2426@ignore
2019 arch-tag: ba9da253-e65f-4e7f-b727-08fba0a1df7a 2427 arch-tag: ba9da253-e65f-4e7f-b727-08fba0a1df7a
2020@end ignore 2428@end ignore
2021
diff --git a/lispref/searching.texi b/lispref/searching.texi
index 15037068dd2..f2f21458506 100644
--- a/lispref/searching.texi
+++ b/lispref/searching.texi
@@ -244,16 +244,15 @@ first tries to match all three @samp{a}s; but the rest of the pattern is
244The next alternative is for @samp{a*} to match only two @samp{a}s. With 244The next alternative is for @samp{a*} to match only two @samp{a}s. With
245this choice, the rest of the regexp matches successfully.@refill 245this choice, the rest of the regexp matches successfully.@refill
246 246
247Nested repetition operators can be extremely slow or loop infinitely 247Nested repetition operators take a long time, or even forever, if they
248if they use repetition operators inside repetition operators. For 248lead to ambiguous matching. For example, trying to match the regular
249example, it could take hours for the regular expression 249expression @samp{\(x+y*\)*a} against the string
250@samp{\(x+y*\)*a} to try to match the sequence 250@samp{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz} could take hours before it
251@samp{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz}, before it ultimately 251ultimately fails. Emacs must try each way of grouping the 35
252fails. Emacs must try each way of grouping the 35 @samp{x}s before 252@samp{x}s before concluding that none of them can work. Even worse,
253concluding that none of them can work. Even worse, @samp{\(x*\)*} can 253@samp{\(x*\)*} can match the null string in infinitely many ways, so
254match the null string in infinitely many ways, so it causes an 254it causes an infinite loop. To avoid these problems, check nested
255infinite loop. To avoid these problems, check nested repetitions 255repetitions carefully.
256carefully.
257 256
258@item @samp{+} 257@item @samp{+}
259@cindex @samp{+} in regexp 258@cindex @samp{+} in regexp
@@ -347,9 +346,10 @@ different characters.
347 346
348@item @samp{[^ @dots{} ]} 347@item @samp{[^ @dots{} ]}
349@cindex @samp{^} in regexp 348@cindex @samp{^} in regexp
350@samp{[^} begins a @dfn{complemented character alternative}, which matches any 349@samp{[^} begins a @dfn{complemented character alternative}. This
351character except the ones specified. Thus, @samp{[^a-z0-9A-Z]} matches 350matches any character except the ones specified. Thus,
352all characters @emph{except} letters and digits. 351@samp{[^a-z0-9A-Z]} matches all characters @emph{except} letters and
352digits.
353 353
354@samp{^} is not special in a character alternative unless it is the first 354@samp{^} is not special in a character alternative unless it is the first
355character. The character following the @samp{^} is treated as if it 355character. The character following the @samp{^} is treated as if it
@@ -1531,8 +1531,9 @@ are reseated to point to nowhere, and if the value is @code{evaporate},
1531the markers are put back on the free list. 1531the markers are put back on the free list.
1532 1532
1533@strong{Warning:} When @code{evaporate} is specified for @var{reseat}, 1533@strong{Warning:} When @code{evaporate} is specified for @var{reseat},
1534no other references to the markers on the @var{reuse} list; otherwise, 1534you must ensure that no other references to the markers on the
1535Emacs may crash during the next garbage collection. 1535@var{reuse} list exists; otherwise, Emacs may crash during the next
1536garbage collection.
1536 1537
1537As always, there must be no possibility of intervening searches between 1538As always, there must be no possibility of intervening searches between
1538the call to a search function and the call to @code{match-data} that is 1539the call to a search function and the call to @code{match-data} that is
@@ -1563,8 +1564,9 @@ are reseated to point to nowhere, and if the value is @code{evaporate},
1563the markers are put back on the free list. 1564the markers are put back on the free list.
1564 1565
1565@strong{Warning:} When @code{evaporate} is specified for @var{reseat}, 1566@strong{Warning:} When @code{evaporate} is specified for @var{reseat},
1566no other references to the markers on the @var{match-list} list; otherwise, 1567you must ensure that no other references to the markers on the
1567Emacs may crash during the next garbage collection. 1568@var{match-list} list exists; otherwise, Emacs may crash during the
1569next garbage collection.
1568 1570
1569@findex store-match-data 1571@findex store-match-data
1570@code{store-match-data} is a semi-obsolete alias for @code{set-match-data}. 1572@code{store-match-data} is a semi-obsolete alias for @code{set-match-data}.
diff --git a/lispref/strings.texi b/lispref/strings.texi
index b70e8d9f9d4..d0504684f82 100644
--- a/lispref/strings.texi
+++ b/lispref/strings.texi
@@ -298,7 +298,8 @@ useful. If you need such a result, use an explicit value for
298@var{separators}: 298@var{separators}:
299 299
300@example 300@example
301(split-string " two words " split-string-default-separators) 301(split-string " two words "
302 split-string-default-separators)
302 @result{} ("" "two" "words" "") 303 @result{} ("" "two" "words" "")
303@end example 304@end example
304 305
@@ -353,8 +354,8 @@ practice:
353@end defun 354@end defun
354 355
355@defvar split-string-default-separators 356@defvar split-string-default-separators
356The default value of @var{separators} for @code{split-string}, initially 357The default value of @var{separators} for @code{split-string}. Its
357@w{@samp{"[ \f\t\n\r\v]+"}}. 358usual value is @w{@samp{"[ \f\t\n\r\v]+"}}.
358@end defvar 359@end defvar
359 360
360@node Modifying Strings 361@node Modifying Strings
diff --git a/lispref/syntax.texi b/lispref/syntax.texi
index e8707709fe2..282cbca794d 100644
--- a/lispref/syntax.texi
+++ b/lispref/syntax.texi
@@ -754,10 +754,11 @@ necessary to flush the cache manually.
754@end defun 754@end defun
755 755
756@defvar syntax-begin-function 756@defvar syntax-begin-function
757If this is non-nil, it should be a function that moves to an earlier 757If this is non-@code{nil}, it should be a function that moves to an
758buffer position where the parser state is equivalent to @code{nil}, 758earlier buffer position where the parser state is equivalent to
759i.e., a position outside of any comment, string, or parenthesis. 759@code{nil}---in other words, a position outside of any comment,
760@code{syntax-ppss} uses it to supplement its cache. 760string, or parenthesis. @code{syntax-ppss} uses it to supplement its
761cache.
761@end defvar 762@end defvar
762 763
763@defun scan-lists from count depth 764@defun scan-lists from count depth
diff --git a/lispref/text.texi b/lispref/text.texi
index cddeeb8fbde..5a4d743ab75 100644
--- a/lispref/text.texi
+++ b/lispref/text.texi
@@ -1497,10 +1497,10 @@ of justification. It can be @code{left}, @code{right}, @code{full},
1497follow specified justification style (see @code{current-justification}, 1497follow specified justification style (see @code{current-justification},
1498below). @code{nil} means to do full justification. 1498below). @code{nil} means to do full justification.
1499 1499
1500If @var{eop} is non-@code{nil}, that means do left-justification if 1500If @var{eop} is non-@code{nil}, that means do only left-justification
1501@code{current-justification} specifies full justification. This is used 1501if @code{current-justification} specifies full justification. This is
1502for the last line of a paragraph; even if the paragraph as a whole is 1502used for the last line of a paragraph; even if the paragraph as a
1503fully justified, the last line should not be. 1503whole is fully justified, the last line should not be.
1504 1504
1505If @var{nosqueeze} is non-@code{nil}, that means do not change interior 1505If @var{nosqueeze} is non-@code{nil}, that means do not change interior
1506whitespace. 1506whitespace.
@@ -1727,12 +1727,11 @@ Adaptive Fill mode matches this regular expression against the text
1727starting after the left margin whitespace (if any) on a line; the 1727starting after the left margin whitespace (if any) on a line; the
1728characters it matches are that line's candidate for the fill prefix. 1728characters it matches are that line's candidate for the fill prefix.
1729 1729
1730The default value of this variable is 1730@w{@samp{"[ \t]*\\([-|#;>*]+[ \t]*\\|(?[0-9]+[.)][ \t]*\\)*"}} is the
1731@w{@samp{"[ \t]*\\([-|#;>*]+[ \t]*\\|(?[0-9]+[.)][ \t]*\\)*"}}. This 1731default value. This matches a number enclosed in parentheses or
1732matches a number enclosed in parentheses or followed by a period, 1732followed by a period, or certain punctuation characters, or any
1733or certain punctuation characters, or any sequence of these 1733sequence of these intermingled with whitespace. In particular, it
1734intermingled with whitespace. In particular, it matches a sequence of 1734matches a sequence of whitespace, possibly empty.
1735whitespace, possibly empty.
1736@end defopt 1735@end defopt
1737 1736
1738@defopt adaptive-fill-first-line-regexp 1737@defopt adaptive-fill-first-line-regexp
@@ -2969,7 +2968,8 @@ A cons cell of the form @code{(foreground-color . @var{color-name})} or
2969just the foreground color or just the background color. 2968just the foreground color or just the background color.
2970 2969
2971@code{(foreground-color . @var{color-name})} is equivalent to 2970@code{(foreground-color . @var{color-name})} is equivalent to
2972@code{(:foreground @var{color-name})}, and likewise for the background. 2971specifying @code{(:foreground @var{color-name})}, and likewise for the
2972background.
2973@end itemize 2973@end itemize
2974 2974
2975You can use Font Lock Mode (@pxref{Font Lock Mode}), to dynamically 2975You can use Font Lock Mode (@pxref{Font Lock Mode}), to dynamically
@@ -3561,9 +3561,9 @@ The action code is always @code{t}.
3561 3561
3562For example, here is how Info mode handles @key{Mouse-1}: 3562For example, here is how Info mode handles @key{Mouse-1}:
3563 3563
3564@example 3564@smallexample
3565(define-key Info-mode-map [follow-link] 'mouse-face) 3565(define-key Info-mode-map [follow-link] 'mouse-face)
3566@end example 3566@end smallexample
3567 3567
3568@item a function 3568@item a function
3569If the condition is a valid function, @var{func}, then a position 3569If the condition is a valid function, @var{func}, then a position
@@ -3574,11 +3574,11 @@ action code.
3574For example, here is how pcvs enables @key{Mouse-1} to follow links on 3574For example, here is how pcvs enables @key{Mouse-1} to follow links on
3575file names only: 3575file names only:
3576 3576
3577@example 3577@smallexample
3578(define-key map [follow-link] 3578(define-key map [follow-link]
3579 (lambda (pos) 3579 (lambda (pos)
3580 (if (eq (get-char-property pos 'face) 'cvs-filename-face) t))) 3580 (eq (get-char-property pos 'face) 'cvs-filename-face)))
3581@end example 3581@end smallexample
3582 3582
3583@item anything else 3583@item anything else
3584If the condition value is anything else, then the position is inside a 3584If the condition value is anything else, then the position is inside a
diff --git a/lispref/variables.texi b/lispref/variables.texi
index 27f0f4a7029..8ee941892c9 100644
--- a/lispref/variables.texi
+++ b/lispref/variables.texi
@@ -1722,24 +1722,24 @@ be called later, or an expression that would be executed later, simply
1722visiting a file could take over your Emacs. To prevent this, Emacs 1722visiting a file could take over your Emacs. To prevent this, Emacs
1723takes care not to allow to set such file local variables. 1723takes care not to allow to set such file local variables.
1724 1724
1725 For one thing, any variable whose name ends in @samp{-command}, 1725 For one thing, any variable whose name ends in any of
1726@samp{-frame-alist}, @samp{-function}, @samp{-functions}, 1726@samp{-command}, @samp{-frame-alist}, @samp{-function},
1727@samp{-hook}, @samp{-hooks}, @samp{-form}, @samp{-forms}, @samp{-map}, 1727@samp{-functions}, @samp{-hook}, @samp{-hooks}, @samp{-form},
1728@samp{-map-alist}, @samp{-mode-alist}, @samp{-program}, or 1728@samp{-forms}, @samp{-map}, @samp{-map-alist}, @samp{-mode-alist},
1729@samp{-predicate} cannot be given a file local value. In general, 1729@samp{-program}, or @samp{-predicate} cannot be given a file local
1730you should use such a name whenever it is appropriate for the 1730value. In general, you should use such a name whenever it is
1731variable's meaning. The variables @samp{font-lock-keywords}, 1731appropriate for the variable's meaning. The variables
1732@samp{font-lock-keywords-[0-9]}, and 1732@samp{font-lock-keywords}, @samp{font-lock-keywords} followed by a
1733@samp{font-lock-syntactic-keywords} cannot be given file local values either. 1733digit, and @samp{font-lock-syntactic-keywords} cannot be given file
1734These rules can be overridden by giving the variable's 1734local values either. These rules can be overridden by giving the
1735name a non-@code{nil} @code{safe-local-variable} property. If one 1735variable's name a non-@code{nil} @code{safe-local-variable} property.
1736gives it a @code{safe-local-variable} property of @code{t}, then one 1736If one gives it a @code{safe-local-variable} property of @code{t},
1737can give the variable any file local value. One can also give any 1737then one can give the variable any file local value. One can also
1738symbol, including the above, a @code{safe-local-variable} property 1738give any symbol, including the above, a @code{safe-local-variable}
1739that is a function taking exactly one argument. In that case, giving 1739property that is a function taking exactly one argument. In that
1740a variable with that name a file local value is only allowed if the 1740case, giving a variable with that name a file local value is only
1741function returns non-@code{nil} when called with that value as 1741allowed if the function returns non-@code{nil} when called with that
1742argument. 1742value as argument.
1743 1743
1744 In addition, any variable whose name has a non-@code{nil} 1744 In addition, any variable whose name has a non-@code{nil}
1745@code{risky-local-variable} property is also ignored. So are all 1745@code{risky-local-variable} property is also ignored. So are all
@@ -1785,19 +1785,19 @@ chosen, or because its meaning has partly changed---it can be useful
1785to keep the old name as an @emph{alias} of the new one for 1785to keep the old name as an @emph{alias} of the new one for
1786compatibility. You can do this with @code{defvaralias}. 1786compatibility. You can do this with @code{defvaralias}.
1787 1787
1788@defun defvaralias alias-var base-var &optional docstring 1788@defun defvaralias new-alias base-variable &optional docstring
1789This function defines the symbol @var{alias-var} as a variable alias 1789This function defines the symbol @var{new-alias} as a variable alias
1790for symbol @var{base-var}. This means that retrieving the value of 1790for symbol @var{base-variable}. This means that retrieving the value of
1791@var{alias-var} returns the value of @var{base-var}, and changing the 1791@var{new-alias} returns the value of @var{base-variable}, and changing the
1792value of @var{alias-var} changes the value of @var{base-var}. 1792value of @var{new-alias} changes the value of @var{base-variable}.
1793 1793
1794If the @var{docstring} argument is non-@code{nil}, it specifies the 1794If the @var{docstring} argument is non-@code{nil}, it specifies the
1795documentation for @var{alias-var}; otherwise, the alias gets the same 1795documentation for @var{new-alias}; otherwise, the alias gets the same
1796documentation as @var{base-var} has, if any, unless @var{base-var} is 1796documentation as @var{base-variable} has, if any, unless
1797itself an alias, in which case @var{alias-var} gets the documentation 1797@var{base-variable} is itself an alias, in which case @var{new-alias} gets
1798of the variable at the end of the chain of aliases. 1798the documentation of the variable at the end of the chain of aliases.
1799 1799
1800This function returns @var{base-var}. 1800This function returns @var{base-variable}.
1801@end defun 1801@end defun
1802 1802
1803 Variable aliases are convenient for replacing an old name for a 1803 Variable aliases are convenient for replacing an old name for a
@@ -1805,12 +1805,12 @@ variable with a new name. @code{make-obsolete-variable} declares that
1805the old name is obsolete and therefore that it may be removed at some 1805the old name is obsolete and therefore that it may be removed at some
1806stage in the future. 1806stage in the future.
1807 1807
1808@defun make-obsolete-variable variable new &optional when 1808@defun make-obsolete-variable obsolete-name current-name &optional when
1809This function makes the byte-compiler warn that the variable 1809This function makes the byte-compiler warn that the variable
1810@var{variable} is obsolete. If @var{new} is a symbol, it is the 1810@var{obsolete-name} is obsolete. If @var{current-name} is a symbol, it is
1811variable's new name; then the warning message says to use @var{new} 1811the variable's new name; then the warning message says to use
1812instead of @var{variable}. If @var{new} is a string, this is the 1812@var{current-name} instead of @var{obsolete-name}. If @var{current-name}
1813message and there is no replacement variable. 1813is a string, this is the message and there is no replacement variable.
1814 1814
1815If provided, @var{when} should be a string indicating when the 1815If provided, @var{when} should be a string indicating when the
1816variable was first made obsolete---for example, a date or a release 1816variable was first made obsolete---for example, a date or a release
@@ -1820,20 +1820,14 @@ number.
1820 You can make two variables synonyms and declare one obsolete at the 1820 You can make two variables synonyms and declare one obsolete at the
1821same time using the macro @code{define-obsolete-variable-alias}. 1821same time using the macro @code{define-obsolete-variable-alias}.
1822 1822
1823@defmac define-obsolete-variable-alias variable new &optional when docstring 1823@defmac define-obsolete-variable-alias obsolete-name current-name &optional when docstring
1824This macro marks the variable @var{variable} as obsolete and also 1824This macro marks the variable @var{obsolete-name} as obsolete and also
1825makes it an alias for the variable @var{new}. A typical call has the form: 1825makes it an alias for the variable @var{current-name}. It is
1826equivalent to the following:
1826 1827
1827@example 1828@example
1828(define-obsolete-variable-alias 'old-var 'new-var "22.1" "Doc.") 1829(defvaralias @var{obsolete-name} @var{current-name} @var{docstring})
1829@end example 1830(make-obsolete-variable @var{obsolete-name} @var{current-name} @var{when})
1830
1831@noindent
1832which is equivalent to the following two lines of code:
1833
1834@example
1835(defvaralias 'oldvar 'newvar "Doc.")
1836(make-obsolete-variable 'old-var 'new-var "22.1")
1837@end example 1831@end example
1838@end defmac 1832@end defmac
1839 1833
diff --git a/man/ChangeLog b/man/ChangeLog
index cfbbf8aab89..82d78054ec3 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,7 @@
12005-06-17 Richard M. Stallman <rms@gnu.org>
2
3 * text.texi (Adaptive Fill): Minor clarification.
4
12005-06-13 Carsten Dominik <dominik@science.uva.nl> 52005-06-13 Carsten Dominik <dominik@science.uva.nl>
2 6
3 * org.texi: Version 3.11 7 * org.texi: Version 3.11
diff --git a/man/text.texi b/man/text.texi
index 3d6c0a6b763..13510deda6c 100644
--- a/man/text.texi
+++ b/man/text.texi
@@ -745,8 +745,8 @@ never chosen automatically.
745automatically by setting the variable @code{adaptive-fill-function} to a 745automatically by setting the variable @code{adaptive-fill-function} to a
746function. This function is called with point after the left margin of a 746function. This function is called with point after the left margin of a
747line, and it should return the appropriate fill prefix based on that 747line, and it should return the appropriate fill prefix based on that
748line. If it returns @code{nil}, that means it sees no fill prefix in 748line. If it returns @code{nil}, @code{adaptive-fill-regexp} gets
749that line. 749a chance to find a prefix.
750 750
751@node Longlines 751@node Longlines
752@subsection Long Lines Mode 752@subsection Long Lines Mode
diff --git a/nt/INSTALL b/nt/INSTALL
index 214caf7dd80..ecf42a29b12 100644
--- a/nt/INSTALL
+++ b/nt/INSTALL
@@ -18,12 +18,9 @@
18 18
19 cvs update -kb 19 cvs update -kb
20 20
21 (WARNING: Do NOT use this suggestion if you have write access to the 21 Alternatively, use programs that convert end-of-line format, such as
22 Emacs CVS tree and intend to commit changes to CVS. This is because -kb 22 dos2unix and unix2dos available from GnuWin32 or dtou and utod from
23 is sticky: it will be used in all future CVS operations on the files you 23 the DJGPP project.
24 check out like this.) Alternatively, use programs that convert
25 end-of-line format, such as dos2unix and unix2dos available from
26 GnuWin32 or dtou and utod from the DJGPP project.
27 24
28 In addition to this file, you should also read INSTALL.CVS in the 25 In addition to this file, you should also read INSTALL.CVS in the
29 parent directory, and make sure that you have a version of 26 parent directory, and make sure that you have a version of
@@ -63,7 +60,7 @@
63 60
64 and at this URL: 61 and at this URL:
65 62
66 http://ourcomments.org/Emacs/EmacsW32.html 63 http://ourcomments.org/Emacs/w32-build-emacs.html
67 64
68 For reference, here is a list of which builds of GNU make are known 65 For reference, here is a list of which builds of GNU make are known
69 to work or not, and whether they work in the presence and/or absence 66 to work or not, and whether they work in the presence and/or absence
diff --git a/src/ChangeLog b/src/ChangeLog
index 46cab9c1cba..12e52237e9b 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,30 @@
12005-06-17 Richard M. Stallman <rms@gnu.org>
2
3 * xdisp.c (get_next_display_element): Reverse
4 test of Vshow_nonbreak_escape.
5
6 * term.c (produce_special_glyphs): Use spec_glyph_lookup_face.
7 (Ftty_no_underline): New function.
8 (syms_of_term): defsubr it.
9
10 * keyboard.c (read_char): Call restore_getcjmp after jump occurs.
11
12 * dispnew.c (spec_glyph_lookup_face): New function.
13 (build_frame_matrix_from_leaf_window): Use it.
14
15 * dispextern.h (spec_glyph_lookup_face): Add declaration.
16
17 * buffer.c (syms_of_buffer) <cursor-type>: Doc fix.
18
192005-06-12 Richard M. Stallman <rms@gnu.org>
20
21 * keyboard.c (read_char): After catching a longjmp,
22 call restore_getcjmp.
23
242005-06-17 Juanma Barranquero <lekktu@gmail.com>
25
26 * xselect.c (lisp_data_to_selection_data): Fix spelling.
27
12005-06-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 282005-06-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2 29
3 * macterm.c (mac_compute_glyph_string_overhangs): Don't set 30 * macterm.c (mac_compute_glyph_string_overhangs): Don't set
@@ -101,7 +128,6 @@
101 128
102 * xdisp.c (note_mode_line_or_margin_highlight): Call clear_mouse_face 129 * xdisp.c (note_mode_line_or_margin_highlight): Call clear_mouse_face
103 when mouse_face is not given. 130 when mouse_face is not given.
104 Remove unnecessary tabs.
105 131
1062005-06-09 Luc Teirlinck <teirllm@auburn.edu> 1322005-06-09 Luc Teirlinck <teirllm@auburn.edu>
107 133
diff --git a/src/buffer.c b/src/buffer.c
index a287e45df78..ed05daf77ec 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5934,8 +5934,8 @@ Values are interpreted as follows:
5934 hollow display a hollow box cursor 5934 hollow display a hollow box cursor
5935 bar display a vertical bar cursor with default width 5935 bar display a vertical bar cursor with default width
5936 (bar . WIDTH) display a vertical bar cursor with width WIDTH 5936 (bar . WIDTH) display a vertical bar cursor with width WIDTH
5937 hbar display a horizontal bar cursor with default width 5937 hbar display a horizontal bar cursor with default height
5938 (hbar . WIDTH) display a horizontal bar cursor with width WIDTH 5938 (hbar . HEIGHT) display a horizontal bar cursor with height HEIGHT
5939 ANYTHING ELSE display a hollow box cursor. 5939 ANYTHING ELSE display a hollow box cursor.
5940 5940
5941When the buffer is displayed in a nonselected window, 5941When the buffer is displayed in a nonselected window,
diff --git a/src/dispextern.h b/src/dispextern.h
index df6bbd00eec..8648303af8c 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -366,7 +366,8 @@ struct glyph
366 366
367#define FACE_ID_BITS 21 367#define FACE_ID_BITS 21
368 368
369 /* Face of the glyph. */ 369 /* Face of the glyph. This is a realized face ID,
370 an index in the face cache of the frame. */
370 unsigned face_id : FACE_ID_BITS; 371 unsigned face_id : FACE_ID_BITS;
371 372
372 /* Type of font used to display the character glyph. May be used to 373 /* Type of font used to display the character glyph. May be used to
@@ -2903,6 +2904,7 @@ Lisp_Object sit_for P_ ((int, int, int, int, int));
2903void init_display P_ ((void)); 2904void init_display P_ ((void));
2904void syms_of_display P_ ((void)); 2905void syms_of_display P_ ((void));
2905extern Lisp_Object Qredisplay_dont_pause; 2906extern Lisp_Object Qredisplay_dont_pause;
2907GLYPH spec_glyph_lookup_face P_ ((struct window *, GLYPH));
2906 2908
2907/* Defined in term.c */ 2909/* Defined in term.c */
2908 2910
diff --git a/src/dispnew.c b/src/dispnew.c
index b0e9944868b..30897a7a78f 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -2711,6 +2711,7 @@ build_frame_matrix_from_leaf_window (frame_matrix, w)
2711 right_border_glyph = (dp && INTEGERP (DISP_BORDER_GLYPH (dp)) 2711 right_border_glyph = (dp && INTEGERP (DISP_BORDER_GLYPH (dp))
2712 ? XINT (DISP_BORDER_GLYPH (dp)) 2712 ? XINT (DISP_BORDER_GLYPH (dp))
2713 : '|'); 2713 : '|');
2714 right_border_glyph = spec_glyph_lookup_face (w, right_border_glyph);
2714 } 2715 }
2715 } 2716 }
2716 else 2717 else
@@ -2791,6 +2792,27 @@ build_frame_matrix_from_leaf_window (frame_matrix, w)
2791 } 2792 }
2792} 2793}
2793 2794
2795/* Given a user-specified glyph, possibly including a Lisp-level face
2796 ID, return a glyph that has a realized face ID.
2797 This is used for glyphs displayed specially and not part of the text;
2798 for instance, vertical separators, truncation markers, etc. */
2799
2800GLYPH
2801spec_glyph_lookup_face (w, glyph)
2802 struct window *w;
2803 GLYPH glyph;
2804{
2805 int lface_id = FAST_GLYPH_FACE (glyph);
2806 /* Convert the glyph's specified face to a realized (cache) face. */
2807 if (lface_id > 0)
2808 {
2809 int face_id = merge_faces (XFRAME (w->frame),
2810 Qt, lface_id, DEFAULT_FACE_ID);
2811 glyph
2812 = FAST_MAKE_GLYPH (FAST_GLYPH_CHAR (glyph), face_id);
2813 }
2814 return glyph;
2815}
2794 2816
2795/* Add spaces to a glyph row ROW in a window matrix. 2817/* Add spaces to a glyph row ROW in a window matrix.
2796 2818
diff --git a/src/keyboard.c b/src/keyboard.c
index 135c3313a7b..7f81dde35c7 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -2610,6 +2610,9 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu)
2610 2610
2611 if (_setjmp (local_getcjmp)) 2611 if (_setjmp (local_getcjmp))
2612 { 2612 {
2613 /* We must have saved the outer value of getcjmp here,
2614 so restore it now. */
2615 restore_getcjmp (save_jump);
2613 XSETINT (c, quit_char); 2616 XSETINT (c, quit_char);
2614 internal_last_event_frame = selected_frame; 2617 internal_last_event_frame = selected_frame;
2615 Vlast_event_frame = internal_last_event_frame; 2618 Vlast_event_frame = internal_last_event_frame;
diff --git a/src/term.c b/src/term.c
index 8aa3b3969ee..774373e82f9 100644
--- a/src/term.c
+++ b/src/term.c
@@ -1695,6 +1695,7 @@ produce_special_glyphs (it, what)
1695 enum display_element_type what; 1695 enum display_element_type what;
1696{ 1696{
1697 struct it temp_it; 1697 struct it temp_it;
1698 GLYPH glyph;
1698 1699
1699 temp_it = *it; 1700 temp_it = *it;
1700 temp_it.dp = NULL; 1701 temp_it.dp = NULL;
@@ -1710,15 +1711,11 @@ produce_special_glyphs (it, what)
1710 && INTEGERP (DISP_CONTINUE_GLYPH (it->dp)) 1711 && INTEGERP (DISP_CONTINUE_GLYPH (it->dp))
1711 && GLYPH_CHAR_VALID_P (XINT (DISP_CONTINUE_GLYPH (it->dp)))) 1712 && GLYPH_CHAR_VALID_P (XINT (DISP_CONTINUE_GLYPH (it->dp))))
1712 { 1713 {
1713 temp_it.c = FAST_GLYPH_CHAR (XINT (DISP_CONTINUE_GLYPH (it->dp))); 1714 glyph = XINT (DISP_CONTINUE_GLYPH (it->dp));
1714 temp_it.len = CHAR_BYTES (temp_it.c); 1715 glyph = spec_glyph_lookup_face (XWINDOW (it->window), glyph);
1715 } 1716 }
1716 else 1717 else
1717 temp_it.c = '\\'; 1718 glyph = '\\';
1718
1719 produce_glyphs (&temp_it);
1720 it->pixel_width = temp_it.pixel_width;
1721 it->nglyphs = temp_it.pixel_width;
1722 } 1719 }
1723 else if (what == IT_TRUNCATION) 1720 else if (what == IT_TRUNCATION)
1724 { 1721 {
@@ -1727,18 +1724,22 @@ produce_special_glyphs (it, what)
1727 && INTEGERP (DISP_TRUNC_GLYPH (it->dp)) 1724 && INTEGERP (DISP_TRUNC_GLYPH (it->dp))
1728 && GLYPH_CHAR_VALID_P (XINT (DISP_TRUNC_GLYPH (it->dp)))) 1725 && GLYPH_CHAR_VALID_P (XINT (DISP_TRUNC_GLYPH (it->dp))))
1729 { 1726 {
1730 temp_it.c = FAST_GLYPH_CHAR (XINT (DISP_TRUNC_GLYPH (it->dp))); 1727 glyph = XINT (DISP_TRUNC_GLYPH (it->dp));
1731 temp_it.len = CHAR_BYTES (temp_it.c); 1728 glyph = spec_glyph_lookup_face (XWINDOW (it->window), glyph);
1732 } 1729 }
1733 else 1730 else
1734 temp_it.c = '$'; 1731 glyph = '$';
1735
1736 produce_glyphs (&temp_it);
1737 it->pixel_width = temp_it.pixel_width;
1738 it->nglyphs = temp_it.pixel_width;
1739 } 1732 }
1740 else 1733 else
1741 abort (); 1734 abort ();
1735
1736 temp_it.c = FAST_GLYPH_CHAR (glyph);
1737 temp_it.face_id = FAST_GLYPH_FACE (glyph);
1738 temp_it.len = CHAR_BYTES (temp_it.c);
1739
1740 produce_glyphs (&temp_it);
1741 it->pixel_width = temp_it.pixel_width;
1742 it->nglyphs = temp_it.pixel_width;
1742} 1743}
1743 1744
1744 1745
@@ -1757,7 +1758,8 @@ produce_special_glyphs (it, what)
1757 ? (tty->TN_no_color_video & (ATTR)) == 0 \ 1758 ? (tty->TN_no_color_video & (ATTR)) == 0 \
1758 : 1) 1759 : 1)
1759 1760
1760/* Turn appearances of face FACE_ID on tty frame F on. */ 1761/* Turn appearances of face FACE_ID on tty frame F on.
1762 FACE_ID is a realized face ID number, in the face cache. */
1761 1763
1762static void 1764static void
1763turn_on_face (f, face_id) 1765turn_on_face (f, face_id)
@@ -2195,7 +2197,7 @@ DEFUN ("display-name", Fdisplay_name, Sdisplay_name, 0, 1, 0,
2195 doc: /* Return the name of the device that DISPLAY uses. 2197 doc: /* Return the name of the device that DISPLAY uses.
2196It is not guaranteed that the returned value is unique among opened displays. 2198It is not guaranteed that the returned value is unique among opened displays.
2197 2199
2198DISPLAY can be a display, a frame, or nil (meaning the selected 2200DISPLAY may be a display, a frame, or nil (meaning the selected
2199frame's display). */) 2201frame's display). */)
2200 (display) 2202 (display)
2201 Lisp_Object display; 2203 Lisp_Object display;
@@ -2209,7 +2211,10 @@ frame's display). */)
2209} 2211}
2210 2212
2211DEFUN ("display-tty-type", Fdisplay_tty_type, Sdisplay_tty_type, 0, 1, 0, 2213DEFUN ("display-tty-type", Fdisplay_tty_type, Sdisplay_tty_type, 0, 1, 0,
2212 doc: /* Return the type of the TTY device that DISPLAY uses. */) 2214 doc: /* Return the type of the TTY device that DISPLAY uses.
2215
2216DISPLAY may be a display, a frame, or nil (meaning the selected
2217frame's display). */)
2213 (display) 2218 (display)
2214 Lisp_Object display; 2219 Lisp_Object display;
2215{ 2220{
@@ -2225,7 +2230,10 @@ DEFUN ("display-tty-type", Fdisplay_tty_type, Sdisplay_tty_type, 0, 1, 0,
2225} 2230}
2226 2231
2227DEFUN ("display-controlling-tty-p", Fdisplay_controlling_tty_p, Sdisplay_controlling_tty_p, 0, 1, 0, 2232DEFUN ("display-controlling-tty-p", Fdisplay_controlling_tty_p, Sdisplay_controlling_tty_p, 0, 1, 0,
2228 doc: /* Return non-nil if DISPLAY is on the controlling tty of the Emacs process. */) 2233 doc: /* Return non-nil if DISPLAY is on the controlling tty of the Emacs process.
2234
2235DISPLAY may be a display, a frame, or nil (meaning the selected
2236frame's display). */)
2229 (display) 2237 (display)
2230 Lisp_Object display; 2238 Lisp_Object display;
2231{ 2239{
@@ -2237,6 +2245,25 @@ DEFUN ("display-controlling-tty-p", Fdisplay_controlling_tty_p, Sdisplay_control
2237 return Qt; 2245 return Qt;
2238} 2246}
2239 2247
2248DEFUN ("tty-no-underline", Ftty_no_underline, Stty_no_underline, 0, 1, 0,
2249 doc: /* Declare that the tty used by DISPLAY does not handle underlining.
2250This is used to override the terminfo data, for certain terminals that
2251do not really do underlining, but say that they do. This function has
2252no effect if used on a non-tty display.
2253
2254DISPLAY may be a display, a frame, or nil (meaning the selected
2255frame's display). */)
2256 (display)
2257 Lisp_Object display;
2258{
2259 struct display *d = get_display (display, 1);
2260
2261 if (d->type == output_termcap)
2262 d->display_info.tty->TS_enter_underline_mode = 0;
2263 return Qnil;
2264}
2265
2266
2240 2267
2241/*********************************************************************** 2268/***********************************************************************
2242 Initialization 2269 Initialization
@@ -3384,6 +3411,7 @@ See `resume-tty'. */);
3384 3411
3385 defsubr (&Stty_display_color_p); 3412 defsubr (&Stty_display_color_p);
3386 defsubr (&Stty_display_color_cells); 3413 defsubr (&Stty_display_color_cells);
3414 defsubr (&Stty_no_underline);
3387 defsubr (&Sdisplay_name); 3415 defsubr (&Sdisplay_name);
3388 defsubr (&Sdisplay_tty_type); 3416 defsubr (&Sdisplay_tty_type);
3389 defsubr (&Sdisplay_controlling_tty_p); 3417 defsubr (&Sdisplay_controlling_tty_p);
diff --git a/src/xdisp.c b/src/xdisp.c
index a7ce6159a01..6c11440dd1a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -5139,7 +5139,7 @@ get_next_display_element (it)
5139 /* Handle non-break space in the mode where it only gets 5139 /* Handle non-break space in the mode where it only gets
5140 highlighting. */ 5140 highlighting. */
5141 5141
5142 if (! EQ (Vshow_nonbreak_escape, Qt) 5142 if (EQ (Vshow_nonbreak_escape, Qt)
5143 && (it->c == 0x8a0 || it->c == 0x920 5143 && (it->c == 0x8a0 || it->c == 0x920
5144 || it->c == 0xe20 || it->c == 0xf20)) 5144 || it->c == 0xe20 || it->c == 0xf20))
5145 { 5145 {
diff --git a/src/xselect.c b/src/xselect.c
index 5a899cfa389..7a1ceaabbb0 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -2048,7 +2048,7 @@ lisp_data_to_selection_data (display, obj,
2048 2048
2049 /* Use sizeof(long) even if it is more than 32 bits. See comment 2049 /* Use sizeof(long) even if it is more than 32 bits. See comment
2050 in x_get_window_property and x_fill_property_data. */ 2050 in x_get_window_property and x_fill_property_data. */
2051 2051
2052 if (*format_ret == 32) data_size = sizeof(long); 2052 if (*format_ret == 32) data_size = sizeof(long);
2053 *data_ret = (unsigned char *) xmalloc (*size_ret * data_size); 2053 *data_ret = (unsigned char *) xmalloc (*size_ret * data_size);
2054 for (i = 0; i < *size_ret; i++) 2054 for (i = 0; i < *size_ret; i++)
@@ -2062,7 +2062,7 @@ lisp_data_to_selection_data (display, obj,
2062 } 2062 }
2063 else 2063 else
2064 Fsignal (Qerror, /* Qselection_error */ 2064 Fsignal (Qerror, /* Qselection_error */
2065 Fcons (build_string ("unrecognised selection data"), 2065 Fcons (build_string ("unrecognized selection data"),
2066 Fcons (obj, Qnil))); 2066 Fcons (obj, Qnil)));
2067 2067
2068 *type_ret = symbol_to_x_atom (dpyinfo, display, type); 2068 *type_ret = symbol_to_x_atom (dpyinfo, display, type);
@@ -2864,7 +2864,7 @@ are ignored. */)
2864 when sending to the root window. */ 2864 when sending to the root window. */
2865 event.xclient.window = to_root ? FRAME_OUTER_WINDOW (f) : wdest; 2865 event.xclient.window = to_root ? FRAME_OUTER_WINDOW (f) : wdest;
2866 2866
2867 2867
2868 memset (event.xclient.data.b, 0, sizeof (event.xclient.data.b)); 2868 memset (event.xclient.data.b, 0, sizeof (event.xclient.data.b));
2869 x_fill_property_data (dpyinfo->display, values, event.xclient.data.b, 2869 x_fill_property_data (dpyinfo->display, values, event.xclient.data.b,
2870 event.xclient.format); 2870 event.xclient.format);