aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2005-11-18 14:53:14 +0000
committerKaroly Lorentey2005-11-18 14:53:14 +0000
commite8c0b22fcf9bd83bb501f91dfc880ae912186220 (patch)
tree8292664169593d29eeaa6452aee86c0895e4836e
parentbffa514a8b8c947c655b463e8073e8e5ac061bc7 (diff)
parentfe45ad152a8528e795c3d852bf3c2cd18ffe6e02 (diff)
downloademacs-e8c0b22fcf9bd83bb501f91dfc880ae912186220.tar.gz
emacs-e8c0b22fcf9bd83bb501f91dfc880ae912186220.zip
Merged from miles@gnu.org--gnu-2005 (patch 655)
Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-655 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-441
-rw-r--r--admin/FOR-RELEASE6
-rw-r--r--etc/NEWS13
-rw-r--r--etc/images/icons/emacs_16.pngbin0 -> 783 bytes
-rw-r--r--etc/images/icons/emacs_24.pngbin0 -> 1068 bytes
-rw-r--r--etc/images/icons/emacs_32.pngbin0 -> 2488 bytes
-rw-r--r--etc/images/icons/emacs_48.pngbin0 -> 3526 bytes
-rw-r--r--lisp/ChangeLog117
-rw-r--r--lisp/add-log.el8
-rw-r--r--lisp/comint.el2
-rw-r--r--lisp/cus-edit.el20
-rw-r--r--lisp/faces.el18
-rw-r--r--lisp/font-lock.el32
-rw-r--r--lisp/gnus/ChangeLog30
-rw-r--r--lisp/gnus/message.el175
-rw-r--r--lisp/hi-lock.el14
-rw-r--r--lisp/ibuf-ext.el2
-rw-r--r--lisp/mail/mailheader.el4
-rw-r--r--lisp/mail/sendmail.el77
-rw-r--r--lisp/progmodes/ada-mode.el1
-rw-r--r--lisp/progmodes/asm-mode.el1
-rw-r--r--lisp/progmodes/cperl-mode.el1
-rw-r--r--lisp/progmodes/cpp.el1
-rw-r--r--lisp/progmodes/dcl-mode.el1
-rw-r--r--lisp/progmodes/f90.el1
-rw-r--r--lisp/progmodes/fortran.el3
-rw-r--r--lisp/progmodes/gdb-ui.el18
-rw-r--r--lisp/progmodes/gud.el4
-rw-r--r--lisp/progmodes/icon.el1
-rw-r--r--lisp/progmodes/idlwave.el1
-rw-r--r--lisp/progmodes/m4-mode.el1
-rw-r--r--lisp/progmodes/make-mode.el1
-rw-r--r--lisp/progmodes/meta-mode.el1
-rw-r--r--lisp/progmodes/modula2.el1
-rw-r--r--lisp/progmodes/octave-mod.el1
-rw-r--r--lisp/progmodes/pascal.el1
-rw-r--r--lisp/progmodes/perl-mode.el1
-rw-r--r--lisp/progmodes/prolog.el1
-rw-r--r--lisp/progmodes/ps-mode.el1
-rw-r--r--lisp/progmodes/scheme.el1
-rw-r--r--lisp/progmodes/sh-script.el1
-rw-r--r--lisp/progmodes/simula.el1
-rw-r--r--lisp/progmodes/tcl.el1
-rw-r--r--lisp/simple.el8
-rw-r--r--lisp/textmodes/nroff-mode.el1
-rw-r--r--lisp/textmodes/reftex-vars.el1
-rw-r--r--lisp/textmodes/sgml-mode.el1
-rw-r--r--lisp/textmodes/texinfo.el1
-rw-r--r--lispref/ChangeLog4
-rw-r--r--lispref/display.texi13
-rw-r--r--man/ChangeLog6
-rw-r--r--man/display.texi18
-rw-r--r--man/emacs.texi2
-rw-r--r--src/ChangeLog15
-rw-r--r--src/image.c6
-rw-r--r--src/xfaces.c63
55 files changed, 497 insertions, 206 deletions
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index 81a65e67730..26de10026db 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -25,6 +25,9 @@ face name prefixes should be in it for good results.
25 25
26** Check what should be deleted or updated in MORE.STUFF. 26** Check what should be deleted or updated in MORE.STUFF.
27 27
28** Send an email to the various distributions, including the GNOME
29and KDE projects, to use the new Emacs icons in etc/images/icons.
30
28* NEW FEATURES 31* NEW FEATURES
29 32
30** Rework how fringe bitmaps are defined and used. 33** Rework how fringe bitmaps are defined and used.
@@ -52,9 +55,6 @@ second window to the left.
52 55
53** Fix completion highlighting bug in partial completion mode. 56** Fix completion highlighting bug in partial completion mode.
54 57
55** Clean up the confusion about what `unspecified' means
56in the face defaults for new frames.
57
58** TCP server processes do not work on Windows. 58** TCP server processes do not work on Windows.
59 59
60TCP/IP server processes created with `make-network-process' consume 60TCP/IP server processes created with `make-network-process' consume
diff --git a/etc/NEWS b/etc/NEWS
index 9df53f25ae0..d19051d8002 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -4935,6 +4935,11 @@ was inconsistent with the face behavior under X.
4935*** `set-fontset-font', `fontset-info', `fontset-font' now operate on 4935*** `set-fontset-font', `fontset-info', `fontset-font' now operate on
4936the default fontset if the argument NAME is nil.. 4936the default fontset if the argument NAME is nil..
4937 4937
4938+++
4939*** In `set-face-attribute', you can assign any attribute the value
4940`:ignore-defface'. This forces the attribute value to be acquired
4941from some other face during face merging.
4942
4938** Font-Lock changes: 4943** Font-Lock changes:
4939 4944
4940+++ 4945+++
@@ -13334,10 +13339,10 @@ as soft, and paragraph boundaries are determined solely from the text.
13334*** Custom support 13339*** Custom support
13335 13340
13336The variables font-lock-face-attributes, font-lock-display-type and 13341The variables font-lock-face-attributes, font-lock-display-type and
13337font-lock-background-mode are now obsolete; the recommended way to specify the 13342font-lock-background-mode are now obsolete; the recommended way to specify
13338faces to use for Font Lock mode is with M-x customize-group on the new custom 13343the faces to use for Font Lock mode is with M-x customize-group on the new
13339group font-lock-highlighting-faces. If you set font-lock-face-attributes in 13344custom group font-lock-faces. If you set font-lock-face-attributes in your
13340your ~/.emacs file, Font Lock mode will respect its value. However, you should 13345~/.emacs file, Font Lock mode will respect its value. However, you should
13341consider converting from setting that variable to using M-x customize. 13346consider converting from setting that variable to using M-x customize.
13342 13347
13343You can still use X resources to specify Font Lock face appearances. 13348You can still use X resources to specify Font Lock face appearances.
diff --git a/etc/images/icons/emacs_16.png b/etc/images/icons/emacs_16.png
new file mode 100644
index 00000000000..ca5122b05b2
--- /dev/null
+++ b/etc/images/icons/emacs_16.png
Binary files differ
diff --git a/etc/images/icons/emacs_24.png b/etc/images/icons/emacs_24.png
new file mode 100644
index 00000000000..95c72d3c49f
--- /dev/null
+++ b/etc/images/icons/emacs_24.png
Binary files differ
diff --git a/etc/images/icons/emacs_32.png b/etc/images/icons/emacs_32.png
new file mode 100644
index 00000000000..17b4686e182
--- /dev/null
+++ b/etc/images/icons/emacs_32.png
Binary files differ
diff --git a/etc/images/icons/emacs_48.png b/etc/images/icons/emacs_48.png
new file mode 100644
index 00000000000..56c6de6f364
--- /dev/null
+++ b/etc/images/icons/emacs_48.png
Binary files differ
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 0536cef1422..79a91eb29af 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,8 +1,108 @@
12005-11-18 Nick Roberts <nickrob@snap.net.nz>
2
3 * progmodes/gud.el (gud-install-speedbar-variables): Bind gud-pp
4 to "p".
5 (gdb): Move definition of gud-pp to...
6
7 * progmodes/gdb-ui.el (gdb-ann3): ...here. Make it work in the
8 speedbar.
9 (gdb-find-watch-expression): New function.
10
112005-11-17 Chong Yidong <cyd@stupidchicken.com>
12
13 * faces.el (face-attribute, set-face-attribute): Mention existence
14 of `:ignore-defface' setting in docstring.
15
162005-11-17 Stefan Monnier <monnier@iro.umontreal.ca>
17
18 * simple.el (completion-setup-function): Fix last change.
19
202005-11-17 John Paul Wallington <jpw@pobox.com>
21
22 * ibuf-ext.el (ibuffer-interactive-filter-by-mode):
23 Use `posn-set-point' instead of `mouse-set-point' because the
24 latter is not fbound when configured without X.
25
26 * comint.el (comint-insert-input): Likewise.
27
282005-11-17 Chong Yidong <cyd@stupidchicken.com>
29
30 * simple.el (hard-newline): New variable.
31 (sendmail-user-agent-compose, next-line): Use it.
32
33 * mail/sendmail.el (mail-setup, mail-send, mail-insert-from-field)
34 (sendmail-send-it, mail-do-fcc, mail-cc, mail-bcc, mail-fcc)
35 (mail-mail-reply-to, mail-mail-followup-to)
36 (mail-position-on-field, mail-signature, mail-yank-original)
37 (mail-attach-file): Likewise.
38
39 * mail/mailheader.el (mail-header-format)
40 (mail-header-format-function): Likewise.
41
42 * add-log.el (add-change-log-entry, change-log-merge): Likewise.
43
442005-11-17 Juri Linkov <juri@jurta.org>
45
46 * font-lock.el (font-lock-faces): Rename this defgroup from
47 `font-lock-highlighting-faces'.
48 (font-lock-comment-face, font-lock-comment-delimiter-face)
49 (font-lock-string-face, font-lock-doc-face)
50 (font-lock-keyword-face, font-lock-builtin-face)
51 (font-lock-function-name-face, font-lock-variable-name-face)
52 (font-lock-type-face, font-lock-constant-face)
53 (font-lock-warning-face, font-lock-negation-char-face)
54 (font-lock-preprocessor-face)
55 (font-lock-regexp-grouping-backslash)
56 (font-lock-regexp-grouping-construct): Rename :group from
57 `font-lock-highlighting-faces' to `font-lock-faces'.
58
59 * cus-edit.el (lisp, c, tex):
60 * progmodes/ada-mode.el (ada):
61 * progmodes/asm-mode.el (asm):
62 * progmodes/cperl-mode.el (cperl-faces):
63 * progmodes/cpp.el (cpp):
64 * progmodes/dcl-mode.el (dcl):
65 * progmodes/f90.el (f90):
66 * progmodes/fortran.el (fortran):
67 * progmodes/icon.el (icon):
68 * progmodes/idlwave.el (idlwave-misc):
69 * progmodes/m4-mode.el (m4):
70 * progmodes/make-mode.el (makefile):
71 * progmodes/meta-mode.el (meta-font):
72 * progmodes/modula2.el (modula2):
73 * progmodes/octave-mod.el (octave):
74 * progmodes/pascal.el (pascal):
75 * progmodes/perl-mode.el (perl):
76 * progmodes/prolog.el (prolog):
77 * progmodes/ps-mode.el (PostScript-edit):
78 * progmodes/scheme.el (scheme):
79 * progmodes/sh-script.el (sh-script):
80 * progmodes/simula.el (simula):
81 * progmodes/tcl.el (tcl):
82 * textmodes/nroff-mode.el (nroff):
83 * textmodes/reftex-vars.el (reftex-fontification-configurations):
84 * textmodes/sgml-mode.el (sgml):
85 * textmodes/texinfo.el (texinfo):
86 Add :link (custom-group-link font-lock-faces) to defgroup.
87
88 * hi-lock.el (hi-lock): Rename this defgroup from
89 `hi-lock-interactive-text-highlighting'. Change parent group from
90 `faces' to `font-lock'. Add link to the manual.
91 (hi-lock-mode, hi-lock-file-patterns-range)
92 (hi-lock-exclude-modes, hi-lock-faces): Rename :group from
93 `hi-lock-interactive-text-highlighting' to `hi-lock'.
94 (hi-lock-faces): Add :group `faces'.
95
96 * cus-edit.el (custom-variable-prompt): Clarify the code.
97
98 * faces.el (face-read-string): Set the default value arg of
99 completing-read.
100
12005-11-16 Luc Teirlinck <teirllm@auburn.edu> 1012005-11-16 Luc Teirlinck <teirllm@auburn.edu>
2 102
3 * rfn-eshadow.el (file-name-shadow-properties) 103 * rfn-eshadow.el (file-name-shadow-properties)
4 (file-name-shadow-tty-properties, file-name-shadow-mode): Remove 104 (file-name-shadow-tty-properties, file-name-shadow-mode):
5 autoloads, because the file is now preloaded. 105 Remove autoloads, because the file is now preloaded.
6 106
72005-11-16 Stefan Monnier <monnier@iro.umontreal.ca> 1072005-11-16 Stefan Monnier <monnier@iro.umontreal.ca>
8 108
@@ -82,8 +182,8 @@
822005-11-17 Nick Roberts <nickrob@snap.net.nz> 1822005-11-17 Nick Roberts <nickrob@snap.net.nz>
83 183
84 * progmodes/gud.el (gud-speedbar-item-info): New function. 184 * progmodes/gud.el (gud-speedbar-item-info): New function.
85 (gud-install-speedbar-variables): Use it to display data types 185 (gud-install-speedbar-variables): Use it to display data type
86 of watch expression as tooltips in speedbar. 186 of watch expression as a tooltip in speedbar.
87 187
882005-11-15 Luc Teirlinck <teirllm@auburn.edu> 1882005-11-15 Luc Teirlinck <teirllm@auburn.edu>
89 189
@@ -254,7 +354,7 @@
254 354
255 * help.el (help-for-help-internal): Improve doc of C-h a. 355 * help.el (help-for-help-internal): Improve doc of C-h a.
256 (describe-key): Improve prompt; doc fix. 356 (describe-key): Improve prompt; doc fix.
257 357
2582005-11-13 Stefan Monnier <monnier@iro.umontreal.ca> 3582005-11-13 Stefan Monnier <monnier@iro.umontreal.ca>
259 359
260 * vc-svn.el (vc-svn-registered): Catch all errors. 360 * vc-svn.el (vc-svn-registered): Catch all errors.
@@ -271,7 +371,7 @@
271 371
2722005-11-13 Nick Roberts <nickrob@snap.net.nz> 3722005-11-13 Nick Roberts <nickrob@snap.net.nz>
273 373
274 * progmodes/gud.el (gud-menu-map): Move parentheses (again). 374 * progmodes/gud.el (gud-menu-map): Move parentheses (again).
275 (gud-speedbar-buttons): Match on "const char *" too. 375 (gud-speedbar-buttons): Match on "const char *" too.
276 376
277 * progmodes/gdb-ui.el (gdb-var-create-handler) 377 * progmodes/gdb-ui.el (gdb-var-create-handler)
@@ -490,6 +590,11 @@
490 590
491 * textmodes/org.el (org-export-as-html): Remove bogus (debug) form. 591 * textmodes/org.el (org-export-as-html): Remove bogus (debug) form.
492 592
5932005-11-07 John Paul Wallington <jpw@gnu.org>
594
595 * ibuffer.el (ibuffer): Search iconified frames too when
596 getting Ibuffer buffer's window.
597
4932005-11-06 Richard M. Stallman <rms@gnu.org> 5982005-11-06 Richard M. Stallman <rms@gnu.org>
494 599
495 * progmodes/compile.el (compilation-internal-error-properties): 600 * progmodes/compile.el (compilation-internal-error-properties):
diff --git a/lisp/add-log.el b/lisp/add-log.el
index 91d7ba36bab..d7f9f9b9846 100644
--- a/lisp/add-log.el
+++ b/lisp/add-log.el
@@ -551,7 +551,7 @@ non-nil, otherwise in local time."
551 (forward-line 1) 551 (forward-line 1)
552 (insert (nth (random (length new-entries)) 552 (insert (nth (random (length new-entries))
553 new-entries) 553 new-entries)
554 "\n\n") 554 hard-newline hard-newline)
555 (forward-line -1))) 555 (forward-line -1)))
556 556
557 ;; Determine where we should stop searching for a usable 557 ;; Determine where we should stop searching for a usable
@@ -584,7 +584,7 @@ non-nil, otherwise in local time."
584 ;; Delete excess empty lines; make just 2. 584 ;; Delete excess empty lines; make just 2.
585 (while (and (not (eobp)) (looking-at "^\\s *$")) 585 (while (and (not (eobp)) (looking-at "^\\s *$"))
586 (delete-region (point) (line-beginning-position 2))) 586 (delete-region (point) (line-beginning-position 2)))
587 (insert-char ?\n 2) 587 (insert hard-newline hard-newline)
588 (forward-line -2) 588 (forward-line -2)
589 (indent-relative-maybe)) 589 (indent-relative-maybe))
590 (t 590 (t
@@ -593,7 +593,7 @@ non-nil, otherwise in local time."
593 (forward-line 1)) 593 (forward-line 1))
594 (while (and (not (eobp)) (looking-at "^\\s *$")) 594 (while (and (not (eobp)) (looking-at "^\\s *$"))
595 (delete-region (point) (line-beginning-position 2))) 595 (delete-region (point) (line-beginning-position 2)))
596 (insert-char ?\n 3) 596 (insert hard-newline hard-newline hard-newline)
597 (forward-line -2) 597 (forward-line -2)
598 (indent-to left-margin) 598 (indent-to left-margin)
599 (insert "* ") 599 (insert "* ")
@@ -1066,7 +1066,7 @@ old-style time formats for entries are supported."
1066 (and (= ?\n (char-before)) 1066 (and (= ?\n (char-before))
1067 (or (<= (1- (point)) (point-min)) 1067 (or (<= (1- (point)) (point-min))
1068 (= ?\n (char-before (1- (point))))))) 1068 (= ?\n (char-before (1- (point)))))))
1069 (insert "\n")) 1069 (insert hard-newline))
1070 ;; Move to the end of it to terminate outer loop. 1070 ;; Move to the end of it to terminate outer loop.
1071 (with-current-buffer other-buf 1071 (with-current-buffer other-buf
1072 (goto-char (point-max))) 1072 (goto-char (point-max)))
diff --git a/lisp/comint.el b/lisp/comint.el
index 3d9da2b8ea2..6676e836735 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -799,7 +799,7 @@ buffer. The hook `comint-exec-hook' is run after each exec."
799 ;; for events without parameters. 799 ;; for events without parameters.
800 (interactive (list last-input-event)) 800 (interactive (list last-input-event))
801 (let ((pos (point))) 801 (let ((pos (point)))
802 (if event (mouse-set-point event)) 802 (if event (posn-set-point (event-end event)))
803 (if (not (eq (get-char-property (point) 'field) 'input)) 803 (if (not (eq (get-char-property (point) 'field) 'input))
804 ;; No input at POS, fall back to the global definition. 804 ;; No input at POS, fall back to the global definition.
805 (let* ((keys (this-command-keys)) 805 (let* ((keys (this-command-keys))
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 63a0f388f56..59a8b341cad 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -212,11 +212,13 @@
212 212
213(defgroup lisp nil 213(defgroup lisp nil
214 "Lisp support, including Emacs Lisp." 214 "Lisp support, including Emacs Lisp."
215 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
215 :group 'languages 216 :group 'languages
216 :group 'development) 217 :group 'development)
217 218
218(defgroup c nil 219(defgroup c nil
219 "Support for the C language and related languages." 220 "Support for the C language and related languages."
221 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
220 :link '(custom-manual "(ccmode)") 222 :link '(custom-manual "(ccmode)")
221 :group 'languages) 223 :group 'languages)
222 224
@@ -323,6 +325,7 @@
323 325
324(defgroup tex nil 326(defgroup tex nil
325 "Code related to the TeX formatter." 327 "Code related to the TeX formatter."
328 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
326 :group 'wp) 329 :group 'wp)
327 330
328(defgroup faces nil 331(defgroup faces nil
@@ -490,15 +493,14 @@ IF REGEXP is not a string, return it unchanged."
490(defun custom-variable-prompt () 493(defun custom-variable-prompt ()
491 "Prompt for a custom variable, defaulting to the variable at point. 494 "Prompt for a custom variable, defaulting to the variable at point.
492Return a list suitable for use in `interactive'." 495Return a list suitable for use in `interactive'."
493 (let ((v (variable-at-point)) 496 (let* ((v (variable-at-point))
494 (enable-recursive-minibuffers t) 497 (default (and (symbolp v) (custom-variable-p v) (symbol-name v)))
495 val) 498 (enable-recursive-minibuffers t)
496 (setq val (if (and (symbolp v) (custom-variable-p v)) 499 val)
497 (completing-read 500 (setq val (completing-read
498 (format "Customize option (default %s): " v) obarray 501 (if default (format "Customize option (default %s): " default)
499 'custom-variable-p t nil nil (symbol-name v)) 502 "Customize option: ")
500 (completing-read "Customize option: " obarray 503 obarray 'custom-variable-p t nil nil default))
501 'custom-variable-p t)))
502 (list (if (equal val "") 504 (list (if (equal val "")
503 (if (symbolp v) v nil) 505 (if (symbolp v) v nil)
504 (intern val))))) 506 (intern val)))))
diff --git a/lisp/faces.el b/lisp/faces.el
index 5c1e934f3b1..2437cd8caf0 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -357,11 +357,12 @@ If the optional argument FRAME is given, report on face FACE in that frame.
357If FRAME is t, report on the defaults for face FACE (for new frames). 357If FRAME is t, report on the defaults for face FACE (for new frames).
358If FRAME is omitted or nil, use the selected frame. 358If FRAME is omitted or nil, use the selected frame.
359 359
360If INHERIT is nil, only attributes directly defined by FACE are considered, 360If INHERIT is nil, only attributes directly defined by FACE are
361 so the return value may be `unspecified', or a relative value. 361 considered, so the return value may be `unspecified',
362 `:ignore-defface', or a relative value.
362If INHERIT is non-nil, FACE's definition of ATTRIBUTE is merged with the 363If INHERIT is non-nil, FACE's definition of ATTRIBUTE is merged with the
363 faces specified by its `:inherit' attribute; however the return value 364 faces specified by its `:inherit' attribute; however the return value
364 may still be `unspecified' or relative. 365 may still be relative.
365If INHERIT is a face or a list of faces, then the result is further merged 366If INHERIT is a face or a list of faces, then the result is further merged
366 with that face (or faces), until it becomes specified and absolute. 367 with that face (or faces), until it becomes specified and absolute.
367 368
@@ -560,8 +561,13 @@ the default for new frames (this is done automatically each time an
560attribute is changed on all frames). 561attribute is changed on all frames).
561 562
562ARGS must come in pairs ATTRIBUTE VALUE. ATTRIBUTE must be a valid 563ARGS must come in pairs ATTRIBUTE VALUE. ATTRIBUTE must be a valid
563face attribute name. All attributes can be set to `unspecified'; 564face attribute name.
564this fact is not further mentioned below. 565
566Unless you're certain you know what you're doing, don't set an
567attribute to `unspecified' . To make a face ignore the attribute
568given in the defface spec, assign it the value `:ignore-defface'.
569You can do this for any attribute; this fact is not further
570mentioned below.
565 571
566The following attributes are recognized: 572The following attributes are recognized:
567 573
@@ -1019,7 +1025,7 @@ Value is the new attribute value."
1019 (format "%s for face `%s' (default %s): " 1025 (format "%s for face `%s' (default %s): "
1020 name face default) 1026 name face default)
1021 (format "%s for face `%s': " name face)) 1027 (format "%s for face `%s': " name face))
1022 completion-alist))) 1028 completion-alist nil nil nil nil default)))
1023 (if (equal value "") default value))) 1029 (if (equal value "") default value)))
1024 1030
1025 1031
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index a6de42af999..1c9ccff2432 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -216,7 +216,7 @@
216 :link '(custom-manual "(elisp)Font Lock Mode") 216 :link '(custom-manual "(elisp)Font Lock Mode")
217 :group 'faces) 217 :group 'faces)
218 218
219(defgroup font-lock-highlighting-faces nil 219(defgroup font-lock-faces nil
220 "Faces for highlighting text." 220 "Faces for highlighting text."
221 :prefix "font-lock-" 221 :prefix "font-lock-"
222 :group 'font-lock) 222 :group 'font-lock)
@@ -1667,7 +1667,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1667 ) 1667 )
1668 (t (:weight bold :slant italic))) 1668 (t (:weight bold :slant italic)))
1669 "Font Lock mode face used to highlight comments." 1669 "Font Lock mode face used to highlight comments."
1670 :group 'font-lock-highlighting-faces) 1670 :group 'font-lock-faces)
1671 1671
1672(defface font-lock-comment-delimiter-face 1672(defface font-lock-comment-delimiter-face
1673 '((default :inherit font-lock-comment-face) 1673 '((default :inherit font-lock-comment-face)
@@ -1678,7 +1678,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1678 (((class color) (min-colors 8) (background dark)) 1678 (((class color) (min-colors 8) (background dark))
1679 :foreground "red1")) 1679 :foreground "red1"))
1680 "Font Lock mode face used to highlight comment delimiters." 1680 "Font Lock mode face used to highlight comment delimiters."
1681 :group 'font-lock-highlighting-faces) 1681 :group 'font-lock-faces)
1682 1682
1683(defface font-lock-string-face 1683(defface font-lock-string-face
1684 '((((class grayscale) (background light)) (:foreground "DimGray" :slant italic)) 1684 '((((class grayscale) (background light)) (:foreground "DimGray" :slant italic))
@@ -1690,12 +1690,12 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1690 (((class color) (min-colors 8)) (:foreground "green")) 1690 (((class color) (min-colors 8)) (:foreground "green"))
1691 (t (:slant italic))) 1691 (t (:slant italic)))
1692 "Font Lock mode face used to highlight strings." 1692 "Font Lock mode face used to highlight strings."
1693 :group 'font-lock-highlighting-faces) 1693 :group 'font-lock-faces)
1694 1694
1695(defface font-lock-doc-face 1695(defface font-lock-doc-face
1696 '((t :inherit font-lock-string-face)) 1696 '((t :inherit font-lock-string-face))
1697 "Font Lock mode face used to highlight documentation." 1697 "Font Lock mode face used to highlight documentation."
1698 :group 'font-lock-highlighting-faces) 1698 :group 'font-lock-faces)
1699 1699
1700(defface font-lock-keyword-face 1700(defface font-lock-keyword-face
1701 '((((class grayscale) (background light)) (:foreground "LightGray" :weight bold)) 1701 '((((class grayscale) (background light)) (:foreground "LightGray" :weight bold))
@@ -1707,7 +1707,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1707 (((class color) (min-colors 8)) (:foreground "cyan" :weight bold)) 1707 (((class color) (min-colors 8)) (:foreground "cyan" :weight bold))
1708 (t (:weight bold))) 1708 (t (:weight bold)))
1709 "Font Lock mode face used to highlight keywords." 1709 "Font Lock mode face used to highlight keywords."
1710 :group 'font-lock-highlighting-faces) 1710 :group 'font-lock-faces)
1711 1711
1712(defface font-lock-builtin-face 1712(defface font-lock-builtin-face
1713 '((((class grayscale) (background light)) (:foreground "LightGray" :weight bold)) 1713 '((((class grayscale) (background light)) (:foreground "LightGray" :weight bold))
@@ -1719,7 +1719,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1719 (((class color) (min-colors 8)) (:foreground "blue" :weight bold)) 1719 (((class color) (min-colors 8)) (:foreground "blue" :weight bold))
1720 (t (:weight bold))) 1720 (t (:weight bold)))
1721 "Font Lock mode face used to highlight builtins." 1721 "Font Lock mode face used to highlight builtins."
1722 :group 'font-lock-highlighting-faces) 1722 :group 'font-lock-faces)
1723 1723
1724(defface font-lock-function-name-face 1724(defface font-lock-function-name-face
1725 '((((class color) (min-colors 88) (background light)) (:foreground "Blue1")) 1725 '((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
@@ -1729,7 +1729,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1729 (((class color) (min-colors 8)) (:foreground "blue" :weight bold)) 1729 (((class color) (min-colors 8)) (:foreground "blue" :weight bold))
1730 (t (:inverse-video t :weight bold))) 1730 (t (:inverse-video t :weight bold)))
1731 "Font Lock mode face used to highlight function names." 1731 "Font Lock mode face used to highlight function names."
1732 :group 'font-lock-highlighting-faces) 1732 :group 'font-lock-faces)
1733 1733
1734(defface font-lock-variable-name-face 1734(defface font-lock-variable-name-face
1735 '((((class grayscale) (background light)) 1735 '((((class grayscale) (background light))
@@ -1743,7 +1743,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1743 (((class color) (min-colors 8)) (:foreground "yellow" :weight light)) 1743 (((class color) (min-colors 8)) (:foreground "yellow" :weight light))
1744 (t (:weight bold :slant italic))) 1744 (t (:weight bold :slant italic)))
1745 "Font Lock mode face used to highlight variable names." 1745 "Font Lock mode face used to highlight variable names."
1746 :group 'font-lock-highlighting-faces) 1746 :group 'font-lock-faces)
1747 1747
1748(defface font-lock-type-face 1748(defface font-lock-type-face
1749 '((((class grayscale) (background light)) (:foreground "Gray90" :weight bold)) 1749 '((((class grayscale) (background light)) (:foreground "Gray90" :weight bold))
@@ -1755,7 +1755,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1755 (((class color) (min-colors 8)) (:foreground "green")) 1755 (((class color) (min-colors 8)) (:foreground "green"))
1756 (t (:weight bold :underline t))) 1756 (t (:weight bold :underline t)))
1757 "Font Lock mode face used to highlight type and classes." 1757 "Font Lock mode face used to highlight type and classes."
1758 :group 'font-lock-highlighting-faces) 1758 :group 'font-lock-faces)
1759 1759
1760(defface font-lock-constant-face 1760(defface font-lock-constant-face
1761 '((((class grayscale) (background light)) 1761 '((((class grayscale) (background light))
@@ -1769,7 +1769,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1769 (((class color) (min-colors 8)) (:foreground "magenta")) 1769 (((class color) (min-colors 8)) (:foreground "magenta"))
1770 (t (:weight bold :underline t))) 1770 (t (:weight bold :underline t)))
1771 "Font Lock mode face used to highlight constants and labels." 1771 "Font Lock mode face used to highlight constants and labels."
1772 :group 'font-lock-highlighting-faces) 1772 :group 'font-lock-faces)
1773 1773
1774(defface font-lock-warning-face 1774(defface font-lock-warning-face
1775 '((((class color) (min-colors 88) (background light)) (:foreground "Red1" :weight bold)) 1775 '((((class color) (min-colors 88) (background light)) (:foreground "Red1" :weight bold))
@@ -1779,27 +1779,27 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
1779 (((class color) (min-colors 8)) (:foreground "red")) 1779 (((class color) (min-colors 8)) (:foreground "red"))
1780 (t (:inverse-video t :weight bold))) 1780 (t (:inverse-video t :weight bold)))
1781 "Font Lock mode face used to highlight warnings." 1781 "Font Lock mode face used to highlight warnings."
1782 :group 'font-lock-highlighting-faces) 1782 :group 'font-lock-faces)
1783 1783
1784(defface font-lock-negation-char-face 1784(defface font-lock-negation-char-face
1785 '((t nil)) 1785 '((t nil))
1786 "Font Lock mode face used to highlight easy to overlook negation." 1786 "Font Lock mode face used to highlight easy to overlook negation."
1787 :group 'font-lock-highlighting-faces) 1787 :group 'font-lock-faces)
1788 1788
1789(defface font-lock-preprocessor-face 1789(defface font-lock-preprocessor-face
1790 '((t :inherit font-lock-builtin-face)) 1790 '((t :inherit font-lock-builtin-face))
1791 "Font Lock mode face used to highlight preprocessor directives." 1791 "Font Lock mode face used to highlight preprocessor directives."
1792 :group 'font-lock-highlighting-faces) 1792 :group 'font-lock-faces)
1793 1793
1794(defface font-lock-regexp-grouping-backslash 1794(defface font-lock-regexp-grouping-backslash
1795 '((t :inherit bold)) 1795 '((t :inherit bold))
1796 "Font Lock mode face for backslashes in Lisp regexp grouping constructs." 1796 "Font Lock mode face for backslashes in Lisp regexp grouping constructs."
1797 :group 'font-lock-highlighting-faces) 1797 :group 'font-lock-faces)
1798 1798
1799(defface font-lock-regexp-grouping-construct 1799(defface font-lock-regexp-grouping-construct
1800 '((t :inherit bold)) 1800 '((t :inherit bold))
1801 "Font Lock mode face used to highlight grouping constructs in Lisp regexps." 1801 "Font Lock mode face used to highlight grouping constructs in Lisp regexps."
1802 :group 'font-lock-highlighting-faces) 1802 :group 'font-lock-faces)
1803 1803
1804;;; End of Colour etc. support. 1804;;; End of Colour etc. support.
1805 1805
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index f197ea11940..10e5ba0dc88 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,33 @@
12005-11-17 Chong Yidong <cyd@stupidchicken.com>
2
3 * message.el (message-courtesy-message)
4 (message-mark-insert-begin, message-mark-insert-end)
5 (message-elide-ellipsis, message-cancel-message)
6 (message-add-header, message-change-subject)
7 (message-cross-post-followup-to-header)
8 (message-cross-post-insert-note, message-reduce-to-to-cc)
9 (message-widen-reply, message-delete-not-region)
10 (message-kill-to-signature, message-insert-signature)
11 (message-insert-importance-high, message-insert-importance-low)
12 (message-insert-or-toggle-importance)
13 (message-insert-disposition-notification-to)
14 (message-indent-citation, message-yank-original)
15 (message-cite-original-without-signature, message-cite-original)
16 (message-insert-citation-line, message-position-on-field)
17 (message-fix-before-sending, message-send-mail-partially)
18 (message-send-mail, message-send-mail-with-sendmail)
19 (message-send-mail-with-qmail, message-send-news)
20 (message-check-news-header-syntax, message-generate-headers)
21 (message-insert-courtesy-copy, message-fill-address)
22 (message-fill-header, message-shorten-references)
23 (message-setup-1, message-cancel-news)
24 (message-forward-make-body-plain) (message-forward-make-body-mime)
25 (message-forward-make-body-mml) (message-encode-message-body)
26 (message-forward-make-body-digest-plain)
27 (message-forward-make-body-digest-mime)
28 (message-use-alternative-email-as-from): Insert `hard-newline'
29 instead of ordinary newlines.
30
12005-11-09 Katsumi Yamaoka <yamaoka@jpl.org> 312005-11-09 Katsumi Yamaoka <yamaoka@jpl.org>
2 32
3 * message.el (message-generate-headers): Downcase the argument 33 * message.el (message-generate-headers): Downcase the argument
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 019b5bd4f07..9a5f910290a 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -141,7 +141,11 @@ mailbox format."
141 :group 'message-sending) 141 :group 'message-sending)
142 142
143(defcustom message-courtesy-message 143(defcustom message-courtesy-message
144 "The following message is a courtesy copy of an article\nthat has been posted to %s as well.\n\n" 144 (concat
145 "The following message is a courtesy copy of an article"
146 hard-newline
147 "that has been posted to %s as well."
148 hard-newline hard-newline)
145 "*This is inserted at the start of a mailed copy of a posted message. 149 "*This is inserted at the start of a mailed copy of a posted message.
146If the string contains the format spec \"%s\", the Newsgroups 150If the string contains the format spec \"%s\", the Newsgroups
147the article has been posted to will be inserted there. 151the article has been posted to will be inserted there.
@@ -339,7 +343,9 @@ few false positives here."
339;;; marking inserted text 343;;; marking inserted text
340 344
341(defcustom message-mark-insert-begin 345(defcustom message-mark-insert-begin
342 "--8<---------------cut here---------------start------------->8---\n" 346 (concat
347 "--8<---------------cut here---------------start------------->8---"
348 hard-newline)
343 "How to mark the beginning of some inserted text." 349 "How to mark the beginning of some inserted text."
344 :version "22.1" 350 :version "22.1"
345 :type 'string 351 :type 'string
@@ -347,14 +353,16 @@ few false positives here."
347 :group 'message-various) 353 :group 'message-various)
348 354
349(defcustom message-mark-insert-end 355(defcustom message-mark-insert-end
350 "--8<---------------cut here---------------end--------------->8---\n" 356 (concat
357 "--8<---------------cut here---------------end--------------->8---"
358 hard-newline)
351 "How to mark the end of some inserted text." 359 "How to mark the end of some inserted text."
352 :version "22.1" 360 :version "22.1"
353 :type 'string 361 :type 'string
354 :link '(custom-manual "(message)Insertion Variables") 362 :link '(custom-manual "(message)Insertion Variables")
355 :group 'message-various) 363 :group 'message-various)
356 364
357(defcustom message-archive-header "X-No-Archive: Yes\n" 365(defcustom message-archive-header "X-No-Archive: Yes"
358 "Header to insert when you don't want your article to be archived. 366 "Header to insert when you don't want your article to be archived.
359Archives \(such as groups.google.com\) respect this header." 367Archives \(such as groups.google.com\) respect this header."
360 :version "22.1" 368 :version "22.1"
@@ -418,7 +426,8 @@ for `message-cross-post-insert-note'."
418 :link '(custom-manual "(message)Various Message Variables") 426 :link '(custom-manual "(message)Various Message Variables")
419 :group 'message-various) 427 :group 'message-various)
420 428
421(defcustom message-elide-ellipsis "\n[...]\n\n" 429(defcustom message-elide-ellipsis
430 (concat hard-newline "[...]" hard-newline hard-newline)
422 "*The string which is inserted for elided text." 431 "*The string which is inserted for elided text."
423 :type 'string 432 :type 'string
424 :link '(custom-manual "(message)Various Commands") 433 :link '(custom-manual "(message)Various Commands")
@@ -578,7 +587,8 @@ Done before generating the new subject of a forward."
578 :link '(custom-manual "(message)Insertion Variables") 587 :link '(custom-manual "(message)Insertion Variables")
579 :type 'regexp) 588 :type 'regexp)
580 589
581(defcustom message-cancel-message "I am canceling my own article.\n" 590(defcustom message-cancel-message
591 (concat "I am canceling my own article." hard-newline)
582 "Message to be inserted in the cancel message." 592 "Message to be inserted in the cancel message."
583 :group 'message-interface 593 :group 'message-interface
584 :link '(custom-manual "(message)Canceling News") 594 :link '(custom-manual "(message)Canceling News")
@@ -1734,7 +1744,7 @@ see `message-narrow-to-headers-or-head'."
1734 (goto-char (point-max)) 1744 (goto-char (point-max))
1735 (if (string-match "\n$" (car headers)) 1745 (if (string-match "\n$" (car headers))
1736 (insert (car headers)) 1746 (insert (car headers))
1737 (insert (car headers) ?\n))))) 1747 (insert (car headers) hard-newline)))))
1738 (setq headers (cdr headers)))) 1748 (setq headers (cdr headers))))
1739 1749
1740(defmacro message-with-reply-buffer (&rest forms) 1750(defmacro message-with-reply-buffer (&rest forms)
@@ -1841,7 +1851,7 @@ Leading \"Re: \" is not stripped by this function. Use the function
1841 (insert (concat "Subject: " 1851 (insert (concat "Subject: "
1842 new-subject 1852 new-subject
1843 " (was: " 1853 " (was: "
1844 old-subject ")\n"))))))))) 1854 old-subject ")" hard-newline)))))))))
1845 1855
1846(defun message-mark-inserted-region (beg end) 1856(defun message-mark-inserted-region (beg end)
1847 "Mark some region in the current article with enclosing tags. 1857 "Mark some region in the current article with enclosing tags.
@@ -1925,7 +1935,7 @@ With prefix-argument just set Follow-Up, don't cross-post."
1925 target-group 1935 target-group
1926 "[ \t]*$") 1936 "[ \t]*$")
1927 (message-fetch-field "Newsgroups"))) 1937 (message-fetch-field "Newsgroups")))
1928 (insert (concat "\nFollowup-To: " target-group))) 1938 (insert (concat hard-newline "Followup-To: " target-group)))
1929 (setq message-cross-post-old-target target-group)) 1939 (setq message-cross-post-old-target target-group))
1930 1940
1931(defun message-cross-post-insert-note (target-group cross-post in-old 1941(defun message-cross-post-insert-note (target-group cross-post in-old
@@ -1957,8 +1967,8 @@ been made to before the user asked for a Crosspost."
1957 (if (or in-old 1967 (if (or in-old
1958 (not cross-post) 1968 (not cross-post)
1959 (string-match "^[ \t]*poster[ \t]*$" target-group)) 1969 (string-match "^[ \t]*poster[ \t]*$" target-group))
1960 (insert (concat message-followup-to-note target-group "\n")) 1970 (insert message-followup-to-note target-group hard-newline)
1961 (insert (concat message-cross-post-note target-group "\n"))))) 1971 (insert message-cross-post-note target-group hard-newline))))
1962 1972
1963(defun message-cross-post-followup-to (target-group) 1973(defun message-cross-post-followup-to (target-group)
1964 "Crossposts message and set Followup-To to TARGET-GROUP. 1974 "Crossposts message and set Followup-To to TARGET-GROUP.
@@ -2018,7 +2028,7 @@ With prefix-argument just set Follow-Up, don't cross-post."
2018 (save-excursion 2028 (save-excursion
2019 (message-goto-to) 2029 (message-goto-to)
2020 (message-delete-line) 2030 (message-delete-line)
2021 (insert (concat "To: " cc-content "\n")) 2031 (insert (concat "To: " cc-content hard-newline))
2022 (save-restriction 2032 (save-restriction
2023 (message-narrow-to-headers) 2033 (message-narrow-to-headers)
2024 (message-remove-header (if bcc 2034 (message-remove-header (if bcc
@@ -2783,7 +2793,7 @@ or in the synonym headers, defined by `message-header-synonyms'."
2783 (message-remove-header (symbol-name (car elem))) 2793 (message-remove-header (symbol-name (car elem)))
2784 (goto-char (point-min)) 2794 (goto-char (point-min))
2785 (insert (symbol-name (car elem)) ": " 2795 (insert (symbol-name (car elem)) ": "
2786 (cdr elem) "\n")))))) 2796 (cdr elem) hard-newline))))))
2787 2797
2788(defun message-insert-newsgroups () 2798(defun message-insert-newsgroups ()
2789 "Insert the Newsgroups header from the article being replied to." 2799 "Insert the Newsgroups header from the article being replied to."
@@ -2813,7 +2823,7 @@ or in the synonym headers, defined by `message-header-synonyms'."
2813 (point) 2823 (point)
2814 (forward-line -2) 2824 (forward-line -2)
2815 (point))) 2825 (point)))
2816 (insert "\n") 2826 (insert hard-newline)
2817 (goto-char beg) 2827 (goto-char beg)
2818 (delete-region beg (progn (message-goto-body) 2828 (delete-region beg (progn (message-goto-body)
2819 (forward-line 2) 2829 (forward-line 2)
@@ -2832,7 +2842,7 @@ or in the synonym headers, defined by `message-header-synonyms'."
2832 (end-of-line -1)) 2842 (end-of-line -1))
2833 (kill-region point (point)) 2843 (kill-region point (point))
2834 (unless (bolp) 2844 (unless (bolp)
2835 (insert "\n")))) 2845 (insert hard-newline))))
2836 2846
2837(defun message-newline-and-reformat (&optional arg not-break) 2847(defun message-newline-and-reformat (&optional arg not-break)
2838 "Insert four newlines, and then reformat if inside quoted text. 2848 "Insert four newlines, and then reformat if inside quoted text.
@@ -2974,15 +2984,15 @@ Prefix arg means justify as well."
2974 (goto-char (point-max)) 2984 (goto-char (point-max))
2975 ;; Insert the signature. 2985 ;; Insert the signature.
2976 (unless (bolp) 2986 (unless (bolp)
2977 (insert "\n")) 2987 (insert hard-newline))
2978 (when message-signature-insert-empty-line 2988 (when message-signature-insert-empty-line
2979 (insert "\n")) 2989 (insert hard-newline))
2980 (insert "-- \n") 2990 (insert "-- " hard-newline)
2981 (if (eq signature t) 2991 (if (eq signature t)
2982 (insert-file-contents message-signature-file) 2992 (insert-file-contents message-signature-file)
2983 (insert signature)) 2993 (insert signature))
2984 (goto-char (point-max)) 2994 (goto-char (point-max))
2985 (or (bolp) (insert "\n"))))) 2995 (or (bolp) (insert hard-newline)))))
2986 2996
2987(defun message-insert-importance-high () 2997(defun message-insert-importance-high ()
2988 "Insert header to mark message as important." 2998 "Insert header to mark message as important."
@@ -2992,7 +3002,7 @@ Prefix arg means justify as well."
2992 (message-narrow-to-headers) 3002 (message-narrow-to-headers)
2993 (message-remove-header "Importance")) 3003 (message-remove-header "Importance"))
2994 (message-goto-eoh) 3004 (message-goto-eoh)
2995 (insert "Importance: high\n"))) 3005 (insert "Importance: high" hard-newline)))
2996 3006
2997(defun message-insert-importance-low () 3007(defun message-insert-importance-low ()
2998 "Insert header to mark message as unimportant." 3008 "Insert header to mark message as unimportant."
@@ -3002,7 +3012,7 @@ Prefix arg means justify as well."
3002 (message-narrow-to-headers) 3012 (message-narrow-to-headers)
3003 (message-remove-header "Importance")) 3013 (message-remove-header "Importance"))
3004 (message-goto-eoh) 3014 (message-goto-eoh)
3005 (insert "Importance: low\n"))) 3015 (insert "Importance: low" hard-newline)))
3006 3016
3007(defun message-insert-or-toggle-importance () 3017(defun message-insert-or-toggle-importance ()
3008 "Insert a \"Importance: high\" header, or cycle through the header values. 3018 "Insert a \"Importance: high\" header, or cycle through the header values.
@@ -3024,7 +3034,7 @@ and `low'."
3024 (t 3034 (t
3025 "high"))))) 3035 "high")))))
3026 (message-goto-eoh) 3036 (message-goto-eoh)
3027 (insert (format "Importance: %s\n" new))))) 3037 (insert (format "Importance: %s" new) hard-newline))))
3028 3038
3029(defun message-insert-disposition-notification-to () 3039(defun message-insert-disposition-notification-to ()
3030 "Request a disposition notification (return receipt) to this message. 3040 "Request a disposition notification (return receipt) to this message.
@@ -3035,10 +3045,11 @@ Note that this should not be used in newsgroups."
3035 (message-narrow-to-headers) 3045 (message-narrow-to-headers)
3036 (message-remove-header "Disposition-Notification-To")) 3046 (message-remove-header "Disposition-Notification-To"))
3037 (message-goto-eoh) 3047 (message-goto-eoh)
3038 (insert (format "Disposition-Notification-To: %s\n" 3048 (insert (format "Disposition-Notification-To: %s"
3039 (or (message-field-value "Reply-to") 3049 (or (message-field-value "Reply-to")
3040 (message-field-value "From") 3050 (message-field-value "From")
3041 (message-make-from)))))) 3051 (message-make-from)))
3052 hard-newline)))
3042 3053
3043(defun message-elide-region (b e) 3054(defun message-elide-region (b e)
3044 "Elide the text in the region. 3055 "Elide the text in the region.
@@ -3173,7 +3184,7 @@ However, if `message-yank-prefix' is non-nil, insert that prefix on each line."
3173 ;; Delete blank lines at the end of the buffer. 3184 ;; Delete blank lines at the end of the buffer.
3174 (goto-char (point-max)) 3185 (goto-char (point-max))
3175 (unless (eolp) 3186 (unless (eolp)
3176 (insert "\n")) 3187 (insert hard-newline))
3177 (while (and (zerop (forward-line -1)) 3188 (while (and (zerop (forward-line -1))
3178 (looking-at "$")) 3189 (looking-at "$"))
3179 (message-delete-line)) 3190 (message-delete-line))
@@ -3211,7 +3222,7 @@ prefix, and don't delete any headers."
3211 (funcall message-cite-function)) 3222 (funcall message-cite-function))
3212 (message-exchange-point-and-mark) 3223 (message-exchange-point-and-mark)
3213 (unless (bolp) 3224 (unless (bolp)
3214 (insert ?\n)) 3225 (insert hard-newline))
3215 (unless modified 3226 (unless modified
3216 (setq message-checksum (message-checksum)))))) 3227 (setq message-checksum (message-checksum))))))
3217 3228
@@ -3269,13 +3280,13 @@ prefix, and don't delete any headers."
3269 (delete-region (point) end) 3280 (delete-region (point) end)
3270 (unless (search-backward "\n\n" start t) 3281 (unless (search-backward "\n\n" start t)
3271 ;; Insert a blank line if it is peeled off. 3282 ;; Insert a blank line if it is peeled off.
3272 (insert "\n"))) 3283 (insert hard-newline)))
3273 (goto-char start) 3284 (goto-char start)
3274 (while functions 3285 (while functions
3275 (funcall (pop functions))) 3286 (funcall (pop functions)))
3276 (when message-citation-line-function 3287 (when message-citation-line-function
3277 (unless (bolp) 3288 (unless (bolp)
3278 (insert "\n")) 3289 (insert hard-newline))
3279 (funcall message-citation-line-function)))) 3290 (funcall message-citation-line-function))))
3280 3291
3281(eval-when-compile (defvar mail-citation-hook)) ;Compiler directive 3292(eval-when-compile (defvar mail-citation-hook)) ;Compiler directive
@@ -3311,13 +3322,14 @@ prefix, and don't delete any headers."
3311 (funcall (pop functions))) 3322 (funcall (pop functions)))
3312 (when message-citation-line-function 3323 (when message-citation-line-function
3313 (unless (bolp) 3324 (unless (bolp)
3314 (insert "\n")) 3325 (insert hard-newline))
3315 (funcall message-citation-line-function))))) 3326 (funcall message-citation-line-function)))))
3316 3327
3317(defun message-insert-citation-line () 3328(defun message-insert-citation-line ()
3318 "Insert a simple citation line." 3329 "Insert a simple citation line."
3319 (when message-reply-headers 3330 (when message-reply-headers
3320 (insert (mail-header-from message-reply-headers) " writes:\n\n"))) 3331 (insert (mail-header-from message-reply-headers)
3332 " writes:" hard-newline hard-newline)))
3321 3333
3322(defun message-position-on-field (header &rest afters) 3334(defun message-position-on-field (header &rest afters)
3323 (let ((case-fold-search t)) 3335 (let ((case-fold-search t))
@@ -3343,7 +3355,7 @@ prefix, and don't delete any headers."
3343 (when afters 3355 (when afters
3344 (re-search-forward "^[^ \t]" nil 'move) 3356 (re-search-forward "^[^ \t]" nil 'move)
3345 (beginning-of-line)) 3357 (beginning-of-line))
3346 (insert header ": \n") 3358 (insert header ": " hard-newline)
3347 (forward-char -1) 3359 (forward-char -1)
3348 nil)))) 3360 nil))))
3349 3361
@@ -3539,7 +3551,7 @@ It should typically alter the sending method in some way or other."
3539 ;; Make sure there's a newline at the end of the message. 3551 ;; Make sure there's a newline at the end of the message.
3540 (goto-char (point-max)) 3552 (goto-char (point-max))
3541 (unless (bolp) 3553 (unless (bolp)
3542 (insert "\n")) 3554 (insert hard-newline))
3543 ;; Make the hidden headers visible. 3555 ;; Make the hidden headers visible.
3544 (let ((points (message-text-with-property 'message-hidden))) 3556 (let ((points (message-text-with-property 'message-hidden)))
3545 (when points 3557 (when points
@@ -3644,7 +3656,7 @@ It should typically alter the sending method in some way or other."
3644 (goto-char (point-min)) 3656 (goto-char (point-min))
3645 (re-search-forward 3657 (re-search-forward
3646 (concat "^" (regexp-quote mail-header-separator) "\n")) 3658 (concat "^" (regexp-quote mail-header-separator) "\n"))
3647 (replace-match "\n") 3659 (replace-match hard-newline)
3648 (run-hooks 'message-send-mail-hook) 3660 (run-hooks 'message-send-mail-hook)
3649 (let ((p (goto-char (point-min))) 3661 (let ((p (goto-char (point-min)))
3650 (tembuf (message-generate-new-buffer-clone-locals " message temp")) 3662 (tembuf (message-generate-new-buffer-clone-locals " message temp"))
@@ -3686,17 +3698,18 @@ It should typically alter the sending method in some way or other."
3686 (message-remove-header "Message-ID") 3698 (message-remove-header "Message-ID")
3687 (message-remove-header "Lines") 3699 (message-remove-header "Lines")
3688 (goto-char (point-max)) 3700 (goto-char (point-max))
3689 (insert "Mime-Version: 1.0\n") 3701 (insert "Mime-Version: 1.0" hard-newline)
3690 (setq header (buffer-string))) 3702 (setq header (buffer-string)))
3691 (goto-char (point-max)) 3703 (goto-char (point-max))
3692 (insert (format "Content-Type: message/partial; id=\"%s\"; number=%d; total=%d\n\n" 3704 (insert (format "Content-Type: message/partial; id=\"%s\"; number=%d; total=%d"
3693 id n total)) 3705 id n total)
3706 hard-newline hard-newline)
3694 (forward-char -1) 3707 (forward-char -1)
3695 (let ((mail-header-separator "")) 3708 (let ((mail-header-separator ""))
3696 (when (memq 'Message-ID message-required-mail-headers) 3709 (when (memq 'Message-ID message-required-mail-headers)
3697 (insert "Message-ID: " (message-make-message-id) "\n")) 3710 (insert "Message-ID: " (message-make-message-id) hard-newline))
3698 (when (memq 'Lines message-required-mail-headers) 3711 (when (memq 'Lines message-required-mail-headers)
3699 (insert "Lines: " (message-make-lines) "\n")) 3712 (insert "Lines: " (message-make-lines) hard-newline))
3700 (message-goto-subject) 3713 (message-goto-subject)
3701 (end-of-line) 3714 (end-of-line)
3702 (insert (format " (%d/%d)" n total)) 3715 (insert (format " (%d/%d)" n total))
@@ -3761,7 +3774,7 @@ It should typically alter the sending method in some way or other."
3761 (goto-char (point-max)) 3774 (goto-char (point-max))
3762 ;; require one newline at the end. 3775 ;; require one newline at the end.
3763 (or (= (preceding-char) ?\n) 3776 (or (= (preceding-char) ?\n)
3764 (insert ?\n)) 3777 (insert hard-newline))
3765 (message-cleanup-headers) 3778 (message-cleanup-headers)
3766 ;; FIXME: we're inserting the courtesy copy after encoding. 3779 ;; FIXME: we're inserting the courtesy copy after encoding.
3767 ;; This is wrong if the courtesy copy string contains 3780 ;; This is wrong if the courtesy copy string contains
@@ -3837,7 +3850,7 @@ If you always want Gnus to send messages in one piece, set
3837 (goto-char (point-min)) 3850 (goto-char (point-min))
3838 (re-search-forward 3851 (re-search-forward
3839 (concat "^" (regexp-quote mail-header-separator) "\n")) 3852 (concat "^" (regexp-quote mail-header-separator) "\n"))
3840 (replace-match "\n") 3853 (replace-match hard-newline)
3841 (backward-char 1) 3854 (backward-char 1)
3842 (setq delimline (point-marker)) 3855 (setq delimline (point-marker))
3843 (run-hooks 'message-send-mail-hook) 3856 (run-hooks 'message-send-mail-hook)
@@ -3899,7 +3912,7 @@ to find out how to use this."
3899 (goto-char (point-min)) 3912 (goto-char (point-min))
3900 (re-search-forward 3913 (re-search-forward
3901 (concat "^" (regexp-quote mail-header-separator) "\n")) 3914 (concat "^" (regexp-quote mail-header-separator) "\n"))
3902 (replace-match "\n") 3915 (replace-match hard-newline)
3903 (run-hooks 'message-send-mail-hook) 3916 (run-hooks 'message-send-mail-hook)
3904 ;; send the message 3917 ;; send the message
3905 (case 3918 (case
@@ -4067,13 +4080,13 @@ Otherwise, generate and save a value for `canlock-password' first."
4067 (goto-char (point-max)) 4080 (goto-char (point-max))
4068 ;; require one newline at the end. 4081 ;; require one newline at the end.
4069 (or (= (preceding-char) ?\n) 4082 (or (= (preceding-char) ?\n)
4070 (insert ?\n)) 4083 (insert hard-newline))
4071 (let ((case-fold-search t)) 4084 (let ((case-fold-search t))
4072 ;; Remove the delimiter. 4085 ;; Remove the delimiter.
4073 (goto-char (point-min)) 4086 (goto-char (point-min))
4074 (re-search-forward 4087 (re-search-forward
4075 (concat "^" (regexp-quote mail-header-separator) "\n")) 4088 (concat "^" (regexp-quote mail-header-separator) "\n"))
4076 (replace-match "\n") 4089 (replace-match hard-newline)
4077 (backward-char 1)) 4090 (backward-char 1))
4078 (run-hooks 'message-send-news-hook) 4091 (run-hooks 'message-send-news-hook)
4079 (gnus-open-server method) 4092 (gnus-open-server method)
@@ -4200,7 +4213,7 @@ Otherwise, generate and save a value for `canlock-password' first."
4200 (message-tokenize-header 4213 (message-tokenize-header
4201 newsgroups))))))))) 4214 newsgroups)))))))))
4202 (goto-char (point-min)) 4215 (goto-char (point-min))
4203 (insert "Followup-To: " to "\n")) 4216 (insert "Followup-To: " to hard-newline))
4204 t)) 4217 t))
4205 ;; Check "Shoot me". 4218 ;; Check "Shoot me".
4206 (message-check 'shoot 4219 (message-check 'shoot
@@ -5099,7 +5112,7 @@ Headers already prepared in the buffer are not modified."
5099 ;; We check whether the value was ended by a 5112 ;; We check whether the value was ended by a
5100 ;; newline. If now, we insert one. 5113 ;; newline. If now, we insert one.
5101 (unless (bolp) 5114 (unless (bolp)
5102 (insert "\n")) 5115 (insert hard-newline))
5103 (forward-line -1))) 5116 (forward-line -1)))
5104 ;; The value of this header was empty, so we clear 5117 ;; The value of this header was empty, so we clear
5105 ;; totally and insert the new value. 5118 ;; totally and insert the new value.
@@ -5139,7 +5152,7 @@ Headers already prepared in the buffer are not modified."
5139 (beginning-of-line)) 5152 (beginning-of-line))
5140 (when (or (message-news-p) 5153 (when (or (message-news-p)
5141 (string-match "@.+\\.." secure-sender)) 5154 (string-match "@.+\\.." secure-sender))
5142 (insert "Sender: " secure-sender "\n")))) 5155 (insert "Sender: " secure-sender hard-newline))))
5143 ;; Check for IDNA 5156 ;; Check for IDNA
5144 (message-idna-to-ascii-rhs)))) 5157 (message-idna-to-ascii-rhs))))
5145 5158
@@ -5151,7 +5164,7 @@ Headers already prepared in the buffer are not modified."
5151 (message-narrow-to-headers) 5164 (message-narrow-to-headers)
5152 (when (setq newsgroups (message-fetch-field "newsgroups")) 5165 (when (setq newsgroups (message-fetch-field "newsgroups"))
5153 (goto-char (point-max)) 5166 (goto-char (point-max))
5154 (insert "Posted-To: " newsgroups "\n"))) 5167 (insert "Posted-To: " newsgroups hard-newline)))
5155 (forward-line 1) 5168 (forward-line 1)
5156 (when message-courtesy-message 5169 (when message-courtesy-message
5157 (cond 5170 (cond
@@ -5170,7 +5183,7 @@ Headers already prepared in the buffer are not modified."
5170 (insert (capitalize (symbol-name header)) 5183 (insert (capitalize (symbol-name header))
5171 ": " 5184 ": "
5172 (if (consp value) (car value) value) 5185 (if (consp value) (car value) value)
5173 "\n") 5186 hard-newline)
5174 (narrow-to-region (point-min) (1- (point-max))) 5187 (narrow-to-region (point-min) (1- (point-max)))
5175 (let (quoted last) 5188 (let (quoted last)
5176 (goto-char (point-min)) 5189 (goto-char (point-min))
@@ -5184,7 +5197,7 @@ Headers already prepared in the buffer are not modified."
5184 (progn 5197 (progn
5185 (save-excursion 5198 (save-excursion
5186 (goto-char last) 5199 (goto-char last)
5187 (insert "\n\t")) 5200 (insert hard-newline "\t"))
5188 (setq last (1+ (point)))) 5201 (setq last (1+ (point))))
5189 (setq last (1+ (point))))) 5202 (setq last (1+ (point)))))
5190 (setq quoted (not quoted))) 5203 (setq quoted (not quoted)))
@@ -5210,7 +5223,7 @@ If the current line has `message-yank-prefix', insert it on the new line."
5210 (insert (capitalize (symbol-name header)) 5223 (insert (capitalize (symbol-name header))
5211 ": " 5224 ": "
5212 (if (consp value) (car value) value) 5225 (if (consp value) (car value) value)
5213 "\n") 5226 hard-newline)
5214 (save-restriction 5227 (save-restriction
5215 (narrow-to-region begin (point)) 5228 (narrow-to-region begin (point))
5216 (fill-region-as-paragraph begin (point)) 5229 (fill-region-as-paragraph begin (point))
@@ -5279,7 +5292,7 @@ than 988 characters long, and if they are not, trim them until they are."
5279 (let ((refstring (mapconcat #'identity refs " "))) 5292 (let ((refstring (mapconcat #'identity refs " ")))
5280 (if (and message-this-is-news message-cater-to-broken-inn) 5293 (if (and message-this-is-news message-cater-to-broken-inn)
5281 (insert (capitalize (symbol-name header)) ": " 5294 (insert (capitalize (symbol-name header)) ": "
5282 refstring "\n") 5295 refstring hard-newline)
5283 (message-fill-header header refstring))))) 5296 (message-fill-header header refstring)))))
5284 5297
5285(defun message-position-point () 5298(defun message-position-point ()
@@ -5508,18 +5521,18 @@ are not included."
5508 (delete-region (point) (progn (forward-line -1) (point))) 5521 (delete-region (point) (progn (forward-line -1) (point)))
5509 (when message-default-headers 5522 (when message-default-headers
5510 (insert message-default-headers) 5523 (insert message-default-headers)
5511 (or (bolp) (insert ?\n))) 5524 (or (bolp) (insert hard-newline)))
5512 (put-text-property 5525 (put-text-property
5513 (point) 5526 (point)
5514 (progn 5527 (progn
5515 (insert mail-header-separator "\n") 5528 (insert mail-header-separator hard-newline)
5516 (1- (point))) 5529 (1- (point)))
5517 'read-only nil) 5530 'read-only nil)
5518 (forward-line -1) 5531 (forward-line -1)
5519 (when (message-news-p) 5532 (when (message-news-p)
5520 (when message-default-news-headers 5533 (when message-default-news-headers
5521 (insert message-default-news-headers) 5534 (insert message-default-news-headers)
5522 (or (bolp) (insert ?\n))) 5535 (or (bolp) (insert hard-newline)))
5523 (when message-generate-headers-first 5536 (when message-generate-headers-first
5524 (message-generate-headers 5537 (message-generate-headers
5525 (message-headers-to-generate 5538 (message-headers-to-generate
@@ -5530,7 +5543,7 @@ are not included."
5530 (when (message-mail-p) 5543 (when (message-mail-p)
5531 (when message-default-mail-headers 5544 (when message-default-mail-headers
5532 (insert message-default-mail-headers) 5545 (insert message-default-mail-headers)
5533 (or (bolp) (insert ?\n))) 5546 (or (bolp) (insert hard-newline)))
5534 (save-restriction 5547 (save-restriction
5535 (message-narrow-to-headers) 5548 (message-narrow-to-headers)
5536 (if message-alternative-emails 5549 (if message-alternative-emails
@@ -6012,14 +6025,14 @@ If ARG, allow editing of the cancellation message."
6012 (message-news) 6025 (message-news)
6013 (setq buf (set-buffer (get-buffer-create " *message cancel*")))) 6026 (setq buf (set-buffer (get-buffer-create " *message cancel*"))))
6014 (erase-buffer) 6027 (erase-buffer)
6015 (insert "Newsgroups: " newsgroups "\n" 6028 (insert "Newsgroups: " newsgroups hard-newline
6016 "From: " from "\n" 6029 "From: " from hard-newline
6017 "Subject: cmsg cancel " message-id "\n" 6030 "Subject: cmsg cancel " message-id hard-newline
6018 "Control: cancel " message-id "\n" 6031 "Control: cancel " message-id hard-newline
6019 (if distribution 6032 (if distribution
6020 (concat "Distribution: " distribution "\n") 6033 (concat "Distribution: " distribution hard-newline)
6021 "") 6034 "")
6022 mail-header-separator "\n" 6035 mail-header-separator hard-newline
6023 message-cancel-message) 6036 message-cancel-message)
6024 (run-hooks 'message-cancel-hook) 6037 (run-hooks 'message-cancel-hook)
6025 (unless arg 6038 (unless arg
@@ -6208,7 +6221,9 @@ Optional DIGEST will use digest to forward."
6208 6221
6209(defun message-forward-make-body-plain (forward-buffer) 6222(defun message-forward-make-body-plain (forward-buffer)
6210 (insert 6223 (insert
6211 "\n-------------------- Start of forwarded message --------------------\n") 6224 hard-newline
6225 "-------------------- Start of forwarded message --------------------"
6226 hard-newline)
6212 (let ((b (point)) e) 6227 (let ((b (point)) e)
6213 (insert 6228 (insert
6214 (with-temp-buffer 6229 (with-temp-buffer
@@ -6224,7 +6239,9 @@ Optional DIGEST will use digest to forward."
6224 (buffer-string))) 6239 (buffer-string)))
6225 (setq e (point)) 6240 (setq e (point))
6226 (insert 6241 (insert
6227 "\n-------------------- End of forwarded message --------------------\n") 6242 hard-newline
6243 "-------------------- End of forwarded message --------------------"
6244 hard-newline)
6228 (when message-forward-ignored-headers 6245 (when message-forward-ignored-headers
6229 (save-restriction 6246 (save-restriction
6230 (narrow-to-region b e) 6247 (narrow-to-region b e)
@@ -6234,7 +6251,10 @@ Optional DIGEST will use digest to forward."
6234 (message-remove-header message-forward-ignored-headers t))))) 6251 (message-remove-header message-forward-ignored-headers t)))))
6235 6252
6236(defun message-forward-make-body-mime (forward-buffer) 6253(defun message-forward-make-body-mime (forward-buffer)
6237 (insert "\n\n<#part type=message/rfc822 disposition=inline raw=t>\n") 6254 (insert
6255 hard-newline hard-newline
6256 "<#part type=message/rfc822 disposition=inline raw=t>"
6257 hard-newline)
6238 (let ((b (point)) e) 6258 (let ((b (point)) e)
6239 (save-restriction 6259 (save-restriction
6240 (narrow-to-region (point) (point)) 6260 (narrow-to-region (point) (point))
@@ -6244,10 +6264,13 @@ Optional DIGEST will use digest to forward."
6244 (replace-match "X-From-Line: ")) 6264 (replace-match "X-From-Line: "))
6245 (goto-char (point-max))) 6265 (goto-char (point-max)))
6246 (setq e (point)) 6266 (setq e (point))
6247 (insert "<#/part>\n"))) 6267 (insert "<#/part>" hard-newline)))
6248 6268
6249(defun message-forward-make-body-mml (forward-buffer) 6269(defun message-forward-make-body-mml (forward-buffer)
6250 (insert "\n\n<#mml type=message/rfc822 disposition=inline>\n") 6270 (insert
6271 hard-newline hard-newline
6272 "<#mml type=message/rfc822 disposition=inline>"
6273 hard-newline)
6251 (let ((b (point)) e) 6274 (let ((b (point)) e)
6252 (if (not message-forward-decoded-p) 6275 (if (not message-forward-decoded-p)
6253 (insert 6276 (insert
@@ -6270,7 +6293,7 @@ Optional DIGEST will use digest to forward."
6270 (replace-match "X-From-Line: ")) 6293 (replace-match "X-From-Line: "))
6271 (goto-char (point-max)))) 6294 (goto-char (point-max))))
6272 (setq e (point)) 6295 (setq e (point))
6273 (insert "<#/mml>\n") 6296 (insert "<#/mml>" hard-newline)
6274 (when (and (not message-forward-decoded-p) 6297 (when (and (not message-forward-decoded-p)
6275 message-forward-ignored-headers) 6298 message-forward-ignored-headers)
6276 (save-restriction 6299 (save-restriction
@@ -6282,19 +6305,23 @@ Optional DIGEST will use digest to forward."
6282 6305
6283(defun message-forward-make-body-digest-plain (forward-buffer) 6306(defun message-forward-make-body-digest-plain (forward-buffer)
6284 (insert 6307 (insert
6285 "\n-------------------- Start of forwarded message --------------------\n") 6308 hard-newline
6309 "-------------------- Start of forwarded message --------------------"
6310 hard-newline)
6286 (let ((b (point)) e) 6311 (let ((b (point)) e)
6287 (mml-insert-buffer forward-buffer) 6312 (mml-insert-buffer forward-buffer)
6288 (setq e (point)) 6313 (setq e (point))
6289 (insert 6314 (insert
6290 "\n-------------------- End of forwarded message --------------------\n"))) 6315 hard-newline
6316 "-------------------- End of forwarded message --------------------"
6317 hard-newline)))
6291 6318
6292(defun message-forward-make-body-digest-mime (forward-buffer) 6319(defun message-forward-make-body-digest-mime (forward-buffer)
6293 (insert "\n<#multipart type=digest>\n") 6320 (insert hard-newline "<#multipart type=digest>" hard-newline)
6294 (let ((b (point)) e) 6321 (let ((b (point)) e)
6295 (insert-buffer-substring forward-buffer) 6322 (insert-buffer-substring forward-buffer)
6296 (setq e (point)) 6323 (setq e (point))
6297 (insert "<#/multipart>\n") 6324 (insert "<#/multipart>" hard-newline)
6298 (save-restriction 6325 (save-restriction
6299 (narrow-to-region b e) 6326 (narrow-to-region b e)
6300 (goto-char b) 6327 (goto-char b)
@@ -6799,7 +6826,7 @@ regexp VARSTR."
6799 (message-narrow-to-headers-or-head) 6826 (message-narrow-to-headers-or-head)
6800 (message-remove-header "Mime-Version") 6827 (message-remove-header "Mime-Version")
6801 (goto-char (point-max)) 6828 (goto-char (point-max))
6802 (insert "MIME-Version: 1.0\n") 6829 (insert "MIME-Version: 1.0" hard-newline)
6803 (when lines 6830 (when lines
6804 (insert lines)) 6831 (insert lines))
6805 (setq content-type-p 6832 (setq content-type-p
@@ -6819,7 +6846,7 @@ regexp VARSTR."
6819 ;; For unknown reason, MIME-Version doesn't exist. 6846 ;; For unknown reason, MIME-Version doesn't exist.
6820 (when (re-search-forward "^MIME-Version:" nil t) 6847 (when (re-search-forward "^MIME-Version:" nil t)
6821 (forward-line 1) 6848 (forward-line 1)
6822 (insert "Content-Type: text/plain; charset=us-ascii\n")))))) 6849 (insert "Content-Type: text/plain; charset=us-ascii" hard-newline))))))
6823 6850
6824(defun message-read-from-minibuffer (prompt &optional initial-contents) 6851(defun message-read-from-minibuffer (prompt &optional initial-contents)
6825 "Read from the minibuffer while providing abbrev expansion." 6852 "Read from the minibuffer while providing abbrev expansion."
@@ -6848,7 +6875,7 @@ regexp VARSTR."
6848 (pop emails)) 6875 (pop emails))
6849 (unless (or (not email) (equal email user-mail-address)) 6876 (unless (or (not email) (equal email user-mail-address))
6850 (goto-char (point-max)) 6877 (goto-char (point-max))
6851 (insert "From: " email "\n")))) 6878 (insert "From: " email hard-newline))))
6852 6879
6853(defun message-options-get (symbol) 6880(defun message-options-get (symbol)
6854 (cdr (assq symbol message-options))) 6881 (cdr (assq symbol message-options)))
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index 63f7611bd52..8d565ab61a8 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -84,9 +84,10 @@
84(eval-and-compile 84(eval-and-compile
85 (require 'font-lock)) 85 (require 'font-lock))
86 86
87(defgroup hi-lock-interactive-text-highlighting nil 87(defgroup hi-lock nil
88 "Interactively add and remove font-lock patterns for highlighting text." 88 "Interactively add and remove font-lock patterns for highlighting text."
89 :group 'faces) 89 :link '(custom-manual "(emacs)Highlight Interactively")
90 :group 'font-lock)
90 91
91;;;###autoload 92;;;###autoload
92(defcustom hi-lock-mode nil 93(defcustom hi-lock-mode nil
@@ -95,7 +96,7 @@
95 (hi-lock-mode (or value 0))) 96 (hi-lock-mode (or value 0)))
96 :initialize 'custom-initialize-default 97 :initialize 'custom-initialize-default
97 :type 'boolean 98 :type 'boolean
98 :group 'hi-lock-interactive-text-highlighting 99 :group 'hi-lock
99 :require 'hi-lock) 100 :require 'hi-lock)
100 101
101(defcustom hi-lock-file-patterns-range 10000 102(defcustom hi-lock-file-patterns-range 10000
@@ -104,7 +105,7 @@ When a file is visited and hi-lock mode is on patterns starting
104up to this limit are added to font-lock's patterns. See documentation 105up to this limit are added to font-lock's patterns. See documentation
105of functions `hi-lock-mode' and `hi-lock-find-patterns'." 106of functions `hi-lock-mode' and `hi-lock-find-patterns'."
106 :type 'integer 107 :type 'integer
107 :group 'hi-lock-interactive-text-highlighting) 108 :group 'hi-lock)
108 109
109(defcustom hi-lock-exclude-modes 110(defcustom hi-lock-exclude-modes
110 '(rmail-mode mime/viewer-mode gnus-article-mode) 111 '(rmail-mode mime/viewer-mode gnus-article-mode)
@@ -112,12 +113,13 @@ of functions `hi-lock-mode' and `hi-lock-find-patterns'."
112For security reasons since font lock patterns can specify function 113For security reasons since font lock patterns can specify function
113calls." 114calls."
114 :type '(repeat symbol) 115 :type '(repeat symbol)
115 :group 'hi-lock-interactive-text-highlighting) 116 :group 'hi-lock)
116 117
117 118
118(defgroup hi-lock-faces nil 119(defgroup hi-lock-faces nil
119 "Faces for hi-lock." 120 "Faces for hi-lock."
120 :group 'hi-lock-interactive-text-highlighting) 121 :group 'hi-lock
122 :group 'faces)
121 123
122(defface hi-yellow 124(defface hi-yellow
123 '((((min-colors 88) (background dark)) 125 '((((min-colors 88) (background dark))
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index 8ab984cd61b..4e8f8f61221 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -257,7 +257,7 @@ With numeric ARG, enable auto-update if and only if ARG is positive."
257 "Enable or disable filtering by the major mode at point." 257 "Enable or disable filtering by the major mode at point."
258 (interactive "d") 258 (interactive "d")
259 (if (eventp event-or-point) 259 (if (eventp event-or-point)
260 (mouse-set-point event-or-point) 260 (posn-set-point (event-end event-or-point))
261 (goto-char event-or-point)) 261 (goto-char event-or-point))
262 (let ((buf (ibuffer-current-buffer))) 262 (let ((buf (ibuffer-current-buffer)))
263 (if (assq 'mode ibuffer-filtering-qualifiers) 263 (if (assq 'mode ibuffer-filtering-qualifiers)
diff --git a/lisp/mail/mailheader.el b/lisp/mail/mailheader.el
index 1e9a24da341..aeed54a5ace 100644
--- a/lisp/mail/mailheader.el
+++ b/lisp/mail/mailheader.el
@@ -146,7 +146,7 @@ skip the header altogether if there are no other elements.
146 (insert (capitalize (symbol-name header)) 146 (insert (capitalize (symbol-name header))
147 ": " 147 ": "
148 (if (consp value) (car value) value) 148 (if (consp value) (car value) value)
149 "\n"))) 149 hard-newline)))
150 150
151(defun mail-header-format (format-rules headers) 151(defun mail-header-format (format-rules headers)
152 "Use FORMAT-RULES to format HEADERS and insert into current buffer. 152 "Use FORMAT-RULES to format HEADERS and insert into current buffer.
@@ -187,7 +187,7 @@ A key of nil has as its value a list of defaulted headers to ignore."
187 (if (cdr rule) 187 (if (cdr rule)
188 (funcall (cdr rule) header value) 188 (funcall (cdr rule) header value)
189 (funcall mail-header-format-function header value)))))) 189 (funcall mail-header-format-function header value))))))
190 (insert "\n"))) 190 (insert hard-newline)))
191 191
192(provide 'mailheader) 192(provide 'mailheader)
193 193
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index 8e7a71d65ab..e87aebe7cc2 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -446,7 +446,7 @@ actually occur.")
446 ;; has been called and has done so. 446 ;; has been called and has done so.
447 (let ((fill-prefix "\t") 447 (let ((fill-prefix "\t")
448 (address-start (point))) 448 (address-start (point)))
449 (insert to "\n") 449 (insert to hard-newline)
450 (fill-region-as-paragraph address-start (point-max)) 450 (fill-region-as-paragraph address-start (point-max))
451 (goto-char (point-max)) 451 (goto-char (point-max))
452 (unless (bolp) 452 (unless (bolp)
@@ -455,7 +455,7 @@ actually occur.")
455 (if cc 455 (if cc
456 (let ((fill-prefix "\t") 456 (let ((fill-prefix "\t")
457 (address-start (progn (insert "CC: ") (point)))) 457 (address-start (progn (insert "CC: ") (point))))
458 (insert cc "\n") 458 (insert cc hard-newline)
459 (fill-region-as-paragraph address-start (point-max)) 459 (fill-region-as-paragraph address-start (point-max))
460 (goto-char (point-max)) 460 (goto-char (point-max))
461 (unless (bolp) 461 (unless (bolp)
@@ -464,23 +464,23 @@ actually occur.")
464 (let ((fill-prefix "\t") 464 (let ((fill-prefix "\t")
465 (fill-column 78) 465 (fill-column 78)
466 (address-start (point))) 466 (address-start (point)))
467 (insert "In-reply-to: " in-reply-to "\n") 467 (insert "In-reply-to: " in-reply-to hard-newline)
468 (fill-region-as-paragraph address-start (point-max)) 468 (fill-region-as-paragraph address-start (point-max))
469 (goto-char (point-max)) 469 (goto-char (point-max))
470 (unless (bolp) 470 (unless (bolp)
471 (newline)))) 471 (newline))))
472 (insert "Subject: " (or subject "") "\n") 472 (insert "Subject: " (or subject "") hard-newline)
473 (if mail-default-headers 473 (if mail-default-headers
474 (insert mail-default-headers)) 474 (insert mail-default-headers))
475 (if mail-default-reply-to 475 (if mail-default-reply-to
476 (insert "Reply-to: " mail-default-reply-to "\n")) 476 (insert "Reply-to: " mail-default-reply-to hard-newline))
477 (if mail-self-blind 477 (if mail-self-blind
478 (insert "BCC: " user-mail-address "\n")) 478 (insert "BCC: " user-mail-address hard-newline))
479 (if mail-archive-file-name 479 (if mail-archive-file-name
480 (insert "FCC: " mail-archive-file-name "\n")) 480 (insert "FCC: " mail-archive-file-name hard-newline))
481 (put-text-property (point) 481 (put-text-property (point)
482 (progn 482 (progn
483 (insert mail-header-separator "\n") 483 (insert mail-header-separator hard-newline)
484 (1- (point))) 484 (1- (point)))
485 'category 'mail-header-separator) 485 'category 'mail-header-separator)
486 ;; Insert the signature. But remember the beginning of the message. 486 ;; Insert the signature. But remember the beginning of the message.
@@ -488,7 +488,7 @@ actually occur.")
488 (cond ((eq mail-signature t) 488 (cond ((eq mail-signature t)
489 (if (file-exists-p mail-signature-file) 489 (if (file-exists-p mail-signature-file)
490 (progn 490 (progn
491 (insert "\n\n-- \n") 491 (insert hard-newline hard-newline "-- " hard-newline)
492 (insert-file-contents mail-signature-file)))) 492 (insert-file-contents mail-signature-file))))
493 ((stringp mail-signature) 493 ((stringp mail-signature)
494 (insert mail-signature)) 494 (insert mail-signature))
@@ -835,14 +835,14 @@ the user from the mailer."
835 (split-string new-header-values 835 (split-string new-header-values
836 ",[[:space:]]+" t)) 836 ",[[:space:]]+" t))
837 (mapconcat 'identity l ", ")) 837 (mapconcat 'identity l ", "))
838 "\n")) 838 hard-newline))
839 ;; Add Mail-Reply-To if none yet 839 ;; Add Mail-Reply-To if none yet
840 (unless (mail-fetch-field "mail-reply-to") 840 (unless (mail-fetch-field "mail-reply-to")
841 (goto-char (mail-header-end)) 841 (goto-char (mail-header-end))
842 (insert "Mail-Reply-To: " 842 (insert "Mail-Reply-To: "
843 (or (mail-fetch-field "reply-to") 843 (or (mail-fetch-field "reply-to")
844 user-mail-address) 844 user-mail-address)
845 "\n")))))) 845 hard-newline))))))
846 (unless (memq mail-send-nonascii '(t mime)) 846 (unless (memq mail-send-nonascii '(t mime))
847 (goto-char (point-min)) 847 (goto-char (point-min))
848 (skip-chars-forward "\0-\177") 848 (skip-chars-forward "\0-\177")
@@ -931,7 +931,7 @@ See also the function `select-message-coding-system'.")
931 fullname-end 1) 931 fullname-end 1)
932 (replace-match "\\\\\\&" t)) 932 (replace-match "\\\\\\&" t))
933 (insert "\"")))) 933 (insert "\""))))
934 (insert " <" login ">\n")) 934 (insert " <" login ">" hard-newline))
935 ((eq mail-from-style 'parens) 935 ((eq mail-from-style 'parens)
936 (insert "From: " login " (") 936 (insert "From: " login " (")
937 (let ((fullname-start (point))) 937 (let ((fullname-start (point)))
@@ -955,9 +955,9 @@ See also the function `select-message-coding-system'.")
955 fullname-end 1) 955 fullname-end 1)
956 (replace-match "\\1(\\3)" t) 956 (replace-match "\\1(\\3)" t)
957 (goto-char fullname-start)))) 957 (goto-char fullname-start))))
958 (insert ")\n")) 958 (insert ")" hard-newline))
959 ((null mail-from-style) 959 ((null mail-from-style)
960 (insert "From: " login "\n")) 960 (insert "From: " login hard-newline))
961 ((eq mail-from-style 'system-default) 961 ((eq mail-from-style 'system-default)
962 nil) 962 nil)
963 (t (error "Invalid value for `mail-from-style'"))))) 963 (t (error "Invalid value for `mail-from-style'")))))
@@ -996,7 +996,7 @@ external program defined by `sendmail-program'."
996 (goto-char (point-max)) 996 (goto-char (point-max))
997 ;; require one newline at the end. 997 ;; require one newline at the end.
998 (or (= (preceding-char) ?\n) 998 (or (= (preceding-char) ?\n)
999 (insert ?\n)) 999 (insert hard-newline))
1000 ;; Change header-delimiter to be what sendmail expects. 1000 ;; Change header-delimiter to be what sendmail expects.
1001 (goto-char (mail-header-end)) 1001 (goto-char (mail-header-end))
1002 (delete-region (point) (progn (end-of-line) (point))) 1002 (delete-region (point) (progn (end-of-line) (point)))
@@ -1008,7 +1008,7 @@ external program defined by `sendmail-program'."
1008 ;; Ignore any blank lines in the header 1008 ;; Ignore any blank lines in the header
1009 (while (and (re-search-forward "\n\n\n*" delimline t) 1009 (while (and (re-search-forward "\n\n\n*" delimline t)
1010 (< (point) delimline)) 1010 (< (point) delimline))
1011 (replace-match "\n")) 1011 (replace-match hard-newline))
1012 (goto-char (point-min)) 1012 (goto-char (point-min))
1013 ;; Look for Resent- headers. They require sending 1013 ;; Look for Resent- headers. They require sending
1014 ;; the message specially. 1014 ;; the message specially.
@@ -1070,10 +1070,10 @@ external program defined by `sendmail-program'."
1070 (setq charset 1070 (setq charset
1071 (coding-system-get selected-coding 'mime-charset)) 1071 (coding-system-get selected-coding 'mime-charset))
1072 (goto-char delimline) 1072 (goto-char delimline)
1073 (insert "MIME-version: 1.0\n" 1073 (insert "MIME-version: 1.0" hard-newline
1074 "Content-type: text/plain; charset=" 1074 "Content-type: text/plain; charset="
1075 (symbol-name charset) "\n" 1075 (symbol-name charset) hard-newline
1076 "Content-Transfer-Encoding: 8bit\n"))) 1076 "Content-Transfer-Encoding: 8bit" hard-newline)))
1077 ;; Insert an extra newline if we need it to work around 1077 ;; Insert an extra newline if we need it to work around
1078 ;; Sun's bug that swallows newlines. 1078 ;; Sun's bug that swallows newlines.
1079 (goto-char (1+ delimline)) 1079 (goto-char (1+ delimline))
@@ -1167,8 +1167,8 @@ external program defined by `sendmail-program'."
1167 (set-buffer tembuf) 1167 (set-buffer tembuf)
1168 (erase-buffer) 1168 (erase-buffer)
1169 ;; This initial newline is written out if the fcc file already exists. 1169 ;; This initial newline is written out if the fcc file already exists.
1170 (insert "\nFrom " (user-login-name) " " 1170 (insert hard-newline "From " (user-login-name) " "
1171 (current-time-string time) "\n") 1171 (current-time-string time) hard-newline)
1172 ;; Insert the time zone before the year. 1172 ;; Insert the time zone before the year.
1173 (forward-char -1) 1173 (forward-char -1)
1174 (forward-word -1) 1174 (forward-word -1)
@@ -1178,7 +1178,7 @@ external program defined by `sendmail-program'."
1178 (insert-buffer-substring rmailbuf) 1178 (insert-buffer-substring rmailbuf)
1179 ;; Make sure messages are separated. 1179 ;; Make sure messages are separated.
1180 (goto-char (point-max)) 1180 (goto-char (point-max))
1181 (insert ?\n) 1181 (insert hard-newline)
1182 (goto-char 2) 1182 (goto-char 2)
1183 ;; ``Quote'' "^From " as ">From " 1183 ;; ``Quote'' "^From " as ">From "
1184 ;; (note that this isn't really quoting, as there is no requirement 1184 ;; (note that this isn't really quoting, as there is no requirement
@@ -1220,10 +1220,11 @@ external program defined by `sendmail-program'."
1220 (rmail-maybe-set-message-counters) 1220 (rmail-maybe-set-message-counters)
1221 (widen) 1221 (widen)
1222 (narrow-to-region (point-max) (point-max)) 1222 (narrow-to-region (point-max) (point-max))
1223 (insert "\C-l\n0, unseen,,\n*** EOOH ***\n" 1223 (insert "\C-l" hard-newline "0, unseen,,"
1224 "Date: " (mail-rfc822-date) "\n") 1224 hard-newline "*** EOOH ***" hard-newline
1225 "Date: " (mail-rfc822-date) hard-newline)
1225 (insert-buffer-substring curbuf beg2 end) 1226 (insert-buffer-substring curbuf beg2 end)
1226 (insert "\n\C-_") 1227 (insert hard-newline "\C-_")
1227 (goto-char (point-min)) 1228 (goto-char (point-min))
1228 (widen) 1229 (widen)
1229 (search-backward "\n\^_") 1230 (search-backward "\n\^_")
@@ -1261,10 +1262,11 @@ external program defined by `sendmail-program'."
1261 (set-buffer (get-buffer-create " mail-temp")) 1262 (set-buffer (get-buffer-create " mail-temp"))
1262 (setq buffer-read-only nil) 1263 (setq buffer-read-only nil)
1263 (erase-buffer) 1264 (erase-buffer)
1264 (insert "\C-l\n0, unseen,,\n*** EOOH ***\n" 1265 (insert "\C-l" hard-newline "0, unseen,," hard-newline
1265 "Date: " (mail-rfc822-date) "\n") 1266 "*** EOOH ***" hard-newline "Date: "
1267 (mail-rfc822-date) hard-newline)
1266 (insert-buffer-substring curbuf beg2 end) 1268 (insert-buffer-substring curbuf beg2 end)
1267 (insert "\n\C-_") 1269 (insert hard-newline "\C-_")
1268 (write-region (point-min) (point-max) (car fcc-list) t) 1270 (write-region (point-min) (point-max) (car fcc-list) t)
1269 (erase-buffer))) 1271 (erase-buffer)))
1270 (write-region 1272 (write-region
@@ -1316,7 +1318,7 @@ external program defined by `sendmail-program'."
1316 (expand-abbrev) 1318 (expand-abbrev)
1317 (or (mail-position-on-field "cc" t) 1319 (or (mail-position-on-field "cc" t)
1318 (progn (mail-position-on-field "to") 1320 (progn (mail-position-on-field "to")
1319 (insert "\nCC: ")))) 1321 (insert hard-newline "CC: "))))
1320 1322
1321(defun mail-bcc () 1323(defun mail-bcc ()
1322 "Move point to end of BCC-field. Create a BCC field if none." 1324 "Move point to end of BCC-field. Create a BCC field if none."
@@ -1324,7 +1326,7 @@ external program defined by `sendmail-program'."
1324 (expand-abbrev) 1326 (expand-abbrev)
1325 (or (mail-position-on-field "bcc" t) 1327 (or (mail-position-on-field "bcc" t)
1326 (progn (mail-position-on-field "to") 1328 (progn (mail-position-on-field "to")
1327 (insert "\nBCC: ")))) 1329 (insert hard-newline "BCC: "))))
1328 1330
1329(defun mail-fcc (folder) 1331(defun mail-fcc (folder)
1330 "Add a new FCC field, with file name completion." 1332 "Add a new FCC field, with file name completion."
@@ -1332,7 +1334,7 @@ external program defined by `sendmail-program'."
1332 (expand-abbrev) 1334 (expand-abbrev)
1333 (or (mail-position-on-field "fcc" t) ;Put new field after exiting FCC. 1335 (or (mail-position-on-field "fcc" t) ;Put new field after exiting FCC.
1334 (mail-position-on-field "to")) 1336 (mail-position-on-field "to"))
1335 (insert "\nFCC: " folder)) 1337 (insert hard-newline "FCC: " folder))
1336 1338
1337(defun mail-reply-to () 1339(defun mail-reply-to ()
1338 "Move point to end of Reply-To-field. Create a Reply-To field if none." 1340 "Move point to end of Reply-To-field. Create a Reply-To field if none."
@@ -1347,7 +1349,7 @@ Create a Mail-Reply-To field if none."
1347 (expand-abbrev) 1349 (expand-abbrev)
1348 (or (mail-position-on-field "mail-reply-to" t) 1350 (or (mail-position-on-field "mail-reply-to" t)
1349 (progn (mail-position-on-field "to") 1351 (progn (mail-position-on-field "to")
1350 (insert "\nMail-Reply-To: ")))) 1352 (insert hard-newline "Mail-Reply-To: "))))
1351 1353
1352(defun mail-mail-followup-to () 1354(defun mail-mail-followup-to ()
1353 "Move point to end of Mail-Followup-To field. 1355 "Move point to end of Mail-Followup-To field.
@@ -1356,7 +1358,7 @@ Create a Mail-Followup-To field if none."
1356 (expand-abbrev) 1358 (expand-abbrev)
1357 (or (mail-position-on-field "mail-followup-to" t) 1359 (or (mail-position-on-field "mail-followup-to" t)
1358 (progn (mail-position-on-field "to") 1360 (progn (mail-position-on-field "to")
1359 (insert "\nMail-Followup-To: ")))) 1361 (insert hard-newline "Mail-Followup-To: "))))
1360 1362
1361(defun mail-position-on-field (field &optional soft) 1363(defun mail-position-on-field (field &optional soft)
1362 (let (end 1364 (let (end
@@ -1371,7 +1373,7 @@ Create a Mail-Followup-To field if none."
1371 t) 1373 t)
1372 (or soft 1374 (or soft
1373 (progn (goto-char end) 1375 (progn (goto-char end)
1374 (insert field ": \n") 1376 (insert field ": " hard-newline)
1375 (skip-chars-backward "\n"))) 1377 (skip-chars-backward "\n")))
1376 nil))) 1378 nil)))
1377 1379
@@ -1394,7 +1396,7 @@ Prefix arg means put contents at point."
1394 (delete-region (point) (point-max))) 1396 (delete-region (point) (point-max)))
1395 (if (stringp mail-signature) 1397 (if (stringp mail-signature)
1396 (insert mail-signature) 1398 (insert mail-signature)
1397 (insert "\n\n-- \n") 1399 (insert hard-newline hard-newline "-- " hard-newline)
1398 (insert-file-contents (expand-file-name mail-signature-file))))) 1400 (insert-file-contents (expand-file-name mail-signature-file)))))
1399 1401
1400(defun mail-fill-yanked-message (&optional justifyp) 1402(defun mail-fill-yanked-message (&optional justifyp)
@@ -1480,7 +1482,7 @@ and don't delete any header fields."
1480 ;; loop would deactivate the mark because we inserted text. 1482 ;; loop would deactivate the mark because we inserted text.
1481 (goto-char (prog1 (mark t) 1483 (goto-char (prog1 (mark t)
1482 (set-marker (mark-marker) (point) (current-buffer)))) 1484 (set-marker (mark-marker) (point) (current-buffer))))
1483 (if (not (eolp)) (insert ?\n))))) 1485 (if (not (eolp)) (insert hard-newline)))))
1484 1486
1485(defun mail-yank-clear-headers (start end) 1487(defun mail-yank-clear-headers (start end)
1486 (if (< end start) 1488 (if (< end start)
@@ -1564,7 +1566,8 @@ If the current line has `mail-yank-prefix', insert it on the new line."
1564 (insert-char ?= (max 0 (- 60 (current-column)))) 1566 (insert-char ?= (max 0 (- 60 (current-column))))
1565 (newline) 1567 (newline)
1566 (setq middle (point)) 1568 (setq middle (point))
1567 (insert "============================================================\n") 1569 (insert "============================================================"
1570 hard-newline)
1568 (push-mark) 1571 (push-mark)
1569 (goto-char middle) 1572 (goto-char middle)
1570 (insert-file-contents file) 1573 (insert-file-contents file)
diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el
index 6a6d63a169a..6442463796c 100644
--- a/lisp/progmodes/ada-mode.el
+++ b/lisp/progmodes/ada-mode.el
@@ -163,6 +163,7 @@ This is a good place to add Ada environment specific bindings.")
163 163
164(defgroup ada nil 164(defgroup ada nil
165 "Major mode for editing Ada source in Emacs." 165 "Major mode for editing Ada source in Emacs."
166 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
166 :group 'languages) 167 :group 'languages)
167 168
168(defcustom ada-auto-case t 169(defcustom ada-auto-case t
diff --git a/lisp/progmodes/asm-mode.el b/lisp/progmodes/asm-mode.el
index dc3984e089e..51d58d7c7a9 100644
--- a/lisp/progmodes/asm-mode.el
+++ b/lisp/progmodes/asm-mode.el
@@ -52,6 +52,7 @@
52 52
53(defgroup asm nil 53(defgroup asm nil
54 "Mode for editing assembler code." 54 "Mode for editing assembler code."
55 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
55 :group 'languages) 56 :group 'languages)
56 57
57(defcustom asm-comment-char ?\; 58(defcustom asm-comment-char ?\;
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index f25d5c29081..dd1dcad3cc4 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -170,6 +170,7 @@
170 170
171(defgroup cperl-faces nil 171(defgroup cperl-faces nil
172 "Fontification colors." 172 "Fontification colors."
173 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
173 :prefix "cperl-" 174 :prefix "cperl-"
174 :group 'cperl) 175 :group 'cperl)
175 176
diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el
index c615082814a..11d0ba444f3 100644
--- a/lisp/progmodes/cpp.el
+++ b/lisp/progmodes/cpp.el
@@ -50,6 +50,7 @@
50;;; Customization: 50;;; Customization:
51(defgroup cpp nil 51(defgroup cpp nil
52 "Highlight or hide text according to cpp conditionals." 52 "Highlight or hide text according to cpp conditionals."
53 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
53 :group 'c 54 :group 'c
54 :prefix "cpp-") 55 :prefix "cpp-")
55 56
diff --git a/lisp/progmodes/dcl-mode.el b/lisp/progmodes/dcl-mode.el
index c7115eed2ae..16d1d7ba415 100644
--- a/lisp/progmodes/dcl-mode.el
+++ b/lisp/progmodes/dcl-mode.el
@@ -95,6 +95,7 @@ Presently this includes some syntax, .OP.erators, and \"f$\" lexicals.")
95 95
96(defgroup dcl nil 96(defgroup dcl nil
97 "Major mode for editing DCL command files." 97 "Major mode for editing DCL command files."
98 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
98 :group 'languages) 99 :group 'languages)
99 100
100(defcustom dcl-basic-offset 4 101(defcustom dcl-basic-offset 4
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el
index 807f938776e..3816fc3fb43 100644
--- a/lisp/progmodes/f90.el
+++ b/lisp/progmodes/f90.el
@@ -164,6 +164,7 @@
164 164
165(defgroup f90 nil 165(defgroup f90 nil
166 "Major mode for editing free format Fortran 90,95 code." 166 "Major mode for editing free format Fortran 90,95 code."
167 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
167 :group 'languages) 168 :group 'languages)
168 169
169(defgroup f90-indent nil 170(defgroup f90-indent nil
diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el
index 79853cb127b..65e7b8914ae 100644
--- a/lisp/progmodes/fortran.el
+++ b/lisp/progmodes/fortran.el
@@ -63,7 +63,8 @@
63 63
64(defgroup fortran nil 64(defgroup fortran nil
65 "Major mode for editing fixed format Fortran code." 65 "Major mode for editing fixed format Fortran code."
66 :link '(custom-manual "(emacs)Fortran") 66 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
67 :link '(custom-manual "(emacs)Fortran")
67 :group 'languages) 68 :group 'languages)
68 69
69(defgroup fortran-indent nil 70(defgroup fortran-indent nil
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index f8f80ce6f66..92265dd46da 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -337,6 +337,15 @@ With arg, use separate IO iff arg is positive."
337 (file-name-nondirectory file) ":1\n") 337 (file-name-nondirectory file) ":1\n")
338 `(lambda () (gdb-set-gud-minor-mode ,buffer))))))))) 338 `(lambda () (gdb-set-gud-minor-mode ,buffer)))))))))
339 339
340(defun gdb-find-watch-expression ()
341 (let* ((var (nth (- (line-number-at-pos (point)) 2) gdb-var-list))
342 (varno (nth 1 var)) (expr))
343 (string-match "\\(var[0-9]+\\)\\.\\(.*\\)" varno)
344 (dolist (var1 gdb-var-list)
345 (if (string-equal (nth 1 var1) (match-string 1 varno))
346 (setq expr (concat (car var1) "." (match-string 2 varno)))))
347 expr))
348
340(defun gdb-ann3 () 349(defun gdb-ann3 ()
341 (setq gdb-debug-log nil) 350 (setq gdb-debug-log nil)
342 (set (make-local-variable 'gud-minor-mode) 'gdba) 351 (set (make-local-variable 'gud-minor-mode) 'gdba)
@@ -369,6 +378,15 @@ With arg, use separate IO iff arg is positive."
369 (gud-def gud-go (gud-call (if gdb-active-process "continue" "run") arg) 378 (gud-def gud-go (gud-call (if gdb-active-process "continue" "run") arg)
370 nil "Start or continue execution.") 379 nil "Start or continue execution.")
371 380
381 ;; For debugging Emacs only.
382 (gud-def gud-pp
383 (gud-call
384 (concat
385 "pp1 " (if (eq (buffer-local-value
386 'major-mode (window-buffer)) 'speedbar-mode)
387 (gdb-find-watch-expression) "%e")) arg)
388 nil "Print the emacs s-expression.")
389
372 (define-key gud-minor-mode-map [left-margin mouse-1] 390 (define-key gud-minor-mode-map [left-margin mouse-1]
373 'gdb-mouse-set-clear-breakpoint) 391 'gdb-mouse-set-clear-breakpoint)
374 (define-key gud-minor-mode-map [left-fringe mouse-1] 392 (define-key gud-minor-mode-map [left-fringe mouse-1]
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 31223ddc7a9..e045ae76a29 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -389,7 +389,8 @@ t means that there is no stack, and we are in display-file mode.")
389 (define-key gud-speedbar-key-map " " 'speedbar-toggle-line-expansion) 389 (define-key gud-speedbar-key-map " " 'speedbar-toggle-line-expansion)
390 (define-key gud-speedbar-key-map "[" 'speedbar-expand-line-descendants) 390 (define-key gud-speedbar-key-map "[" 'speedbar-expand-line-descendants)
391 (define-key gud-speedbar-key-map "]" 'speedbar-contract-line-descendants) 391 (define-key gud-speedbar-key-map "]" 'speedbar-contract-line-descendants)
392 (define-key gud-speedbar-key-map "D" 'gdb-var-delete)) 392 (define-key gud-speedbar-key-map "D" 'gdb-var-delete)
393 (define-key gud-speedbar-key-map "p" 'gud-pp))
393 394
394 (speedbar-add-expansion-list '("GUD" gud-speedbar-menu-items 395 (speedbar-add-expansion-list '("GUD" gud-speedbar-menu-items
395 gud-speedbar-key-map 396 gud-speedbar-key-map
@@ -654,7 +655,6 @@ and source-file directory for your debugger."
654 "Evaluate C dereferenced pointer expression at point.") 655 "Evaluate C dereferenced pointer expression at point.")
655 656
656 ;; For debugging Emacs only. 657 ;; For debugging Emacs only.
657 (gud-def gud-pp "pp1 %e" nil "Print the emacs s-expression.")
658 (gud-def gud-pv "pv1 %e" "\C-v" "Print the value of the lisp variable.") 658 (gud-def gud-pv "pv1 %e" "\C-v" "Print the value of the lisp variable.")
659 659
660 (gud-def gud-until "until %l" "\C-u" "Continue to current line.") 660 (gud-def gud-until "until %l" "\C-u" "Continue to current line.")
diff --git a/lisp/progmodes/icon.el b/lisp/progmodes/icon.el
index aad5686c69e..dc2cfd01683 100644
--- a/lisp/progmodes/icon.el
+++ b/lisp/progmodes/icon.el
@@ -84,6 +84,7 @@
84 84
85(defgroup icon nil 85(defgroup icon nil
86 "Mode for editing Icon code." 86 "Mode for editing Icon code."
87 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
87 :group 'languages) 88 :group 'languages)
88 89
89(defcustom icon-indent-level 4 90(defcustom icon-indent-level 4
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index ce689847e9c..3ee01d07b0a 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -1049,6 +1049,7 @@ IDL process is made."
1049 1049
1050(defgroup idlwave-misc nil 1050(defgroup idlwave-misc nil
1051 "Miscellaneous options for IDLWAVE mode." 1051 "Miscellaneous options for IDLWAVE mode."
1052 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
1052 :group 'idlwave) 1053 :group 'idlwave)
1053 1054
1054(defcustom idlwave-startup-message t 1055(defcustom idlwave-startup-message t
diff --git a/lisp/progmodes/m4-mode.el b/lisp/progmodes/m4-mode.el
index f131576d240..84174e2ca5d 100644
--- a/lisp/progmodes/m4-mode.el
+++ b/lisp/progmodes/m4-mode.el
@@ -44,6 +44,7 @@
44 44
45(defgroup m4 nil 45(defgroup m4 nil
46 "m4 code editing commands for Emacs." 46 "m4 code editing commands for Emacs."
47 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
47 :prefix "m4-" 48 :prefix "m4-"
48 :group 'languages) 49 :group 'languages)
49 50
diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el
index 3a55129c899..fa481a233cd 100644
--- a/lisp/progmodes/make-mode.el
+++ b/lisp/progmodes/make-mode.el
@@ -97,6 +97,7 @@
97 97
98(defgroup makefile nil 98(defgroup makefile nil
99 "Makefile editing commands for Emacs." 99 "Makefile editing commands for Emacs."
100 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
100 :group 'tools 101 :group 'tools
101 :prefix "makefile-") 102 :prefix "makefile-")
102 103
diff --git a/lisp/progmodes/meta-mode.el b/lisp/progmodes/meta-mode.el
index f5bbb4d68db..d113f94280f 100644
--- a/lisp/progmodes/meta-mode.el
+++ b/lisp/progmodes/meta-mode.el
@@ -135,6 +135,7 @@
135 135
136(defgroup meta-font nil 136(defgroup meta-font nil
137 "Major mode for editing Metafont or MetaPost sources." 137 "Major mode for editing Metafont or MetaPost sources."
138 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
138 :group 'languages) 139 :group 'languages)
139 140
140;;; Fontification. 141;;; Fontification.
diff --git a/lisp/progmodes/modula2.el b/lisp/progmodes/modula2.el
index 802ed26eb1f..fde526ab303 100644
--- a/lisp/progmodes/modula2.el
+++ b/lisp/progmodes/modula2.el
@@ -24,6 +24,7 @@
24 24
25(defgroup modula2 nil 25(defgroup modula2 nil
26 "Major mode for editing Modula-2 code." 26 "Major mode for editing Modula-2 code."
27 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
27 :prefix "m2-" 28 :prefix "m2-"
28 :group 'languages) 29 :group 'languages)
29 30
diff --git a/lisp/progmodes/octave-mod.el b/lisp/progmodes/octave-mod.el
index b65ad9eac1a..0cda438fa6a 100644
--- a/lisp/progmodes/octave-mod.el
+++ b/lisp/progmodes/octave-mod.el
@@ -45,6 +45,7 @@
45 45
46(defgroup octave nil 46(defgroup octave nil
47 "Major mode for editing Octave source files." 47 "Major mode for editing Octave source files."
48 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
48 :group 'languages) 49 :group 'languages)
49 50
50(defvar inferior-octave-output-list nil) 51(defvar inferior-octave-output-list nil)
diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el
index 801096b9b0f..d462557f291 100644
--- a/lisp/progmodes/pascal.el
+++ b/lisp/progmodes/pascal.el
@@ -63,6 +63,7 @@
63 63
64(defgroup pascal nil 64(defgroup pascal nil
65 "Major mode for editing Pascal source in Emacs." 65 "Major mode for editing Pascal source in Emacs."
66 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
66 :group 'languages) 67 :group 'languages)
67 68
68(defvar pascal-mode-abbrev-table nil 69(defvar pascal-mode-abbrev-table nil
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index 2f814d07469..f5a857f9015 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -113,6 +113,7 @@
113 113
114(defgroup perl nil 114(defgroup perl nil
115 "Major mode for editing Perl code." 115 "Major mode for editing Perl code."
116 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
116 :prefix "perl-" 117 :prefix "perl-"
117 :group 'languages) 118 :group 'languages)
118 119
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index d23dbad0762..9191d5f95ee 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -36,6 +36,7 @@
36 36
37(defgroup prolog nil 37(defgroup prolog nil
38 "Major mode for editing and running Prolog under Emacs." 38 "Major mode for editing and running Prolog under Emacs."
39 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
39 :group 'languages) 40 :group 'languages)
40 41
41 42
diff --git a/lisp/progmodes/ps-mode.el b/lisp/progmodes/ps-mode.el
index b49fcafe186..299093b29bc 100644
--- a/lisp/progmodes/ps-mode.el
+++ b/lisp/progmodes/ps-mode.el
@@ -43,6 +43,7 @@
43 43
44(defgroup PostScript-edit nil 44(defgroup PostScript-edit nil
45 "PostScript editing." 45 "PostScript editing."
46 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
46 :prefix "ps-mode-" 47 :prefix "ps-mode-"
47 :group 'PostScript) 48 :group 'PostScript)
48 49
diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el
index 0b11e4f6b9a..26d6e05fc2c 100644
--- a/lisp/progmodes/scheme.el
+++ b/lisp/progmodes/scheme.el
@@ -238,6 +238,7 @@ if that value is non-nil."
238 238
239(defgroup scheme nil 239(defgroup scheme nil
240 "Editing Scheme code." 240 "Editing Scheme code."
241 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
241 :group 'lisp) 242 :group 'lisp)
242 243
243(defcustom scheme-mit-dialect t 244(defcustom scheme-mit-dialect t
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 2c4543a72fc..bc4ca59f96a 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -211,6 +211,7 @@
211 211
212(defgroup sh-script nil 212(defgroup sh-script nil
213 "Shell script mode." 213 "Shell script mode."
214 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
214 :group 'sh 215 :group 'sh
215 :prefix "sh-") 216 :prefix "sh-")
216 217
diff --git a/lisp/progmodes/simula.el b/lisp/progmodes/simula.el
index 395bee1b226..eba9a03b2ae 100644
--- a/lisp/progmodes/simula.el
+++ b/lisp/progmodes/simula.el
@@ -40,6 +40,7 @@
40 40
41(defgroup simula nil 41(defgroup simula nil
42 "Major mode for editing Simula code." 42 "Major mode for editing Simula code."
43 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
43 :prefix "simula-" 44 :prefix "simula-"
44 :group 'languages) 45 :group 'languages)
45 46
diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el
index e2068607048..2db11a8c000 100644
--- a/lisp/progmodes/tcl.el
+++ b/lisp/progmodes/tcl.el
@@ -119,6 +119,7 @@
119 119
120(defgroup tcl nil 120(defgroup tcl nil
121 "Major mode for editing Tcl source in Emacs." 121 "Major mode for editing Tcl source in Emacs."
122 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
122 :group 'languages) 123 :group 'languages)
123 124
124(defcustom tcl-indent-level 4 125(defcustom tcl-indent-level 4
diff --git a/lisp/simple.el b/lisp/simple.el
index 5f8c6efa660..35a42965ef7 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -348,6 +348,8 @@ Other major modes are defined by comparison with this one."
348 348
349;; Making and deleting lines. 349;; Making and deleting lines.
350 350
351(defvar hard-newline (propertize "\n" 'hard t 'rear-nonsticky '(hard)))
352
351(defun newline (&optional arg) 353(defun newline (&optional arg)
352 "Insert a newline, and move to left margin of the new line if it's blank. 354 "Insert a newline, and move to left margin of the new line if it's blank.
353If `use-hard-newlines' is non-nil, the newline is marked with the 355If `use-hard-newlines' is non-nil, the newline is marked with the
@@ -3328,7 +3330,7 @@ and more reliable (no dependence on goal column, etc.)."
3328 ;; When adding a newline, don't expand an abbrev. 3330 ;; When adding a newline, don't expand an abbrev.
3329 (let ((abbrev-mode nil)) 3331 (let ((abbrev-mode nil))
3330 (end-of-line) 3332 (end-of-line)
3331 (insert "\n")) 3333 (insert hard-newline))
3332 (line-move arg nil nil try-vscroll)) 3334 (line-move arg nil nil try-vscroll))
3333 (if (interactive-p) 3335 (if (interactive-p)
3334 (condition-case nil 3336 (condition-case nil
@@ -4508,7 +4510,7 @@ See also `read-mail-command' concerning reading mail."
4508 (unless (member-ignore-case (car (car other-headers)) 4510 (unless (member-ignore-case (car (car other-headers))
4509 '("in-reply-to" "cc" "body")) 4511 '("in-reply-to" "cc" "body"))
4510 (insert (car (car other-headers)) ": " 4512 (insert (car (car other-headers)) ": "
4511 (cdr (car other-headers)) "\n")) 4513 (cdr (car other-headers)) hard-newline))
4512 (setq other-headers (cdr other-headers))) 4514 (setq other-headers (cdr other-headers)))
4513 (when body 4515 (when body
4514 (forward-line 1) 4516 (forward-line 1)
@@ -4921,7 +4923,7 @@ is the substring.)")
4921 ;; when completing file names. It's not even clear what 4923 ;; when completing file names. It's not even clear what
4922 ;; is TRT. 4924 ;; is TRT.
4923 0 4925 0
4924 (- common-string-length (- (point) (point-max)))))) 4926 (- common-string-length (- (point-max) (point))))))
4925 (with-current-buffer standard-output 4927 (with-current-buffer standard-output
4926 (completion-list-mode) 4928 (completion-list-mode)
4927 (set (make-local-variable 'completion-reference-buffer) mainbuf) 4929 (set (make-local-variable 'completion-reference-buffer) mainbuf)
diff --git a/lisp/textmodes/nroff-mode.el b/lisp/textmodes/nroff-mode.el
index 05a740ee390..7fd2db1deb6 100644
--- a/lisp/textmodes/nroff-mode.el
+++ b/lisp/textmodes/nroff-mode.el
@@ -38,6 +38,7 @@
38 38
39(defgroup nroff nil 39(defgroup nroff nil
40 "Nroff mode." 40 "Nroff mode."
41 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
41 :group 'wp 42 :group 'wp
42 :prefix "nroff-") 43 :prefix "nroff-")
43 44
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index 703f5b8dd2a..01e8a1b4ddf 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -1704,6 +1704,7 @@ The value of this variable will only have any effect when
1704 1704
1705(defgroup reftex-fontification-configurations nil 1705(defgroup reftex-fontification-configurations nil
1706 "Options concerning the faces used in RefTeX." 1706 "Options concerning the faces used in RefTeX."
1707 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
1707 :group 'reftex) 1708 :group 'reftex)
1708 1709
1709(defcustom reftex-use-fonts t 1710(defcustom reftex-use-fonts t
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index d331ce05ff7..79e41cecfc1 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -41,6 +41,7 @@
41 41
42(defgroup sgml nil 42(defgroup sgml nil
43 "SGML editing mode." 43 "SGML editing mode."
44 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
44 :group 'languages) 45 :group 'languages)
45 46
46(defcustom sgml-basic-offset 2 47(defcustom sgml-basic-offset 2
diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el
index a10851aa765..8392e56dc00 100644
--- a/lisp/textmodes/texinfo.el
+++ b/lisp/textmodes/texinfo.el
@@ -46,6 +46,7 @@
46 46
47(defgroup texinfo nil 47(defgroup texinfo nil
48 "Texinfo Mode." 48 "Texinfo Mode."
49 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
49 :group 'docs) 50 :group 'docs)
50 51
51;;;###autoload 52;;;###autoload
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index d8014b27613..3e07a51a007 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,7 @@
12005-11-17 Chong Yidong <cyd@stupidchicken.com>
2
3 * display.texi (Attribute Functions): Mention :ignore-defface.
4
12005-11-16 Stefan Monnier <monnier@iro.umontreal.ca> 52005-11-16 Stefan Monnier <monnier@iro.umontreal.ca>
2 6
3 * modes.texi (Minor Mode Conventions): Use custom-set-minor-mode. 7 * modes.texi (Minor Mode Conventions): Use custom-set-minor-mode.
diff --git a/lispref/display.texi b/lispref/display.texi
index 75a64924516..00d9313aa24 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -1859,6 +1859,11 @@ the first face fails to specify a particular attribute, that means the
1859next face gets a chance. However, the @code{default} face must 1859next face gets a chance. However, the @code{default} face must
1860specify all attributes. 1860specify all attributes.
1861 1861
1862 Any attribute can have the value @code{:ignore-defface}. The effect
1863of this is identical to @code{unspecified}. It exists because of an
1864technical ambiguity in giving attributes the value @code{unspecified}.
1865@xref{Attribute Functions}.
1866
1862 Some of these font attributes are meaningful only on certain kinds of 1867 Some of these font attributes are meaningful only on certain kinds of
1863displays---if your display cannot handle a certain attribute, the 1868displays---if your display cannot handle a certain attribute, the
1864attribute is ignored. (The attributes @code{:family}, @code{:width}, 1869attribute is ignored. (The attributes @code{:family}, @code{:width},
@@ -2051,6 +2056,14 @@ This function sets one or more attributes of face @var{face}
2051for frame @var{frame}. If @var{frame} is @code{nil}, it sets 2056for frame @var{frame}. If @var{frame} is @code{nil}, it sets
2052the attribute for all frames, and the defaults for new frames. 2057the attribute for all frames, and the defaults for new frames.
2053 2058
2059Unless you know what you're doing, don't set an attribute to
2060@code{unspecified}. This is ambiguous---it is unclear whether it
2061means to unspecify the value stored in the frame-local copies of the
2062face (which means reverting to the original face spec), or the value
2063in the face spec itself. What you probably want is to set the
2064attribute to @code{:ignore-defface}. This forces the attribute value
2065to be acquired from some other face during face merging.
2066
2054The extra arguments @var{arguments} specify the attributes to set, and 2067The extra arguments @var{arguments} specify the attributes to set, and
2055the values for them. They should consist of alternating attribute names 2068the values for them. They should consist of alternating attribute names
2056(such as @code{:family} or @code{:underline}) and corresponding values. 2069(such as @code{:family} or @code{:underline}) and corresponding values.
diff --git a/man/ChangeLog b/man/ChangeLog
index 0ebbeee7884..55492a523f7 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,9 @@
12005-11-17 Juri Linkov <juri@jurta.org>
2
3 * emacs.texi (Top):
4 * display.texi (Highlight Interactively): Put this font-lock based
5 mode near Font Lock node.
6
12005-11-16 Chong Yidong <cyd@stupidchicken.com> 72005-11-16 Chong Yidong <cyd@stupidchicken.com>
2 8
3 * ack.texi (Acknowledgments): Acknowledge Andrew Zhilin for Emacs 9 * ack.texi (Acknowledgments): Acknowledge Andrew Zhilin for Emacs
diff --git a/man/display.texi b/man/display.texi
index 58e69ad4e60..ea8bb79d83a 100644
--- a/man/display.texi
+++ b/man/display.texi
@@ -14,8 +14,8 @@ display it.
14* Faces:: How to change the display style using faces. 14* Faces:: How to change the display style using faces.
15* Standard Faces:: Emacs' predefined faces. 15* Standard Faces:: Emacs' predefined faces.
16* Font Lock:: Minor mode for syntactic highlighting using faces. 16* Font Lock:: Minor mode for syntactic highlighting using faces.
17* Highlight Changes:: Using colors to show where you changed the buffer.
18* Highlight Interactively:: Tell Emacs what text to highlight. 17* Highlight Interactively:: Tell Emacs what text to highlight.
18* Highlight Changes:: Using colors to show where you changed the buffer.
19* Scrolling:: Moving text up and down in a window. 19* Scrolling:: Moving text up and down in a window.
20* Horizontal Scrolling:: Moving text left and right in a window. 20* Horizontal Scrolling:: Moving text left and right in a window.
21* Fringes:: Enabling or disabling window fringes. 21* Fringes:: Enabling or disabling window fringes.
@@ -385,14 +385,6 @@ control this background fontification, also called @dfn{Just-In-Time}
385(or @dfn{JIT}) Lock, by customizing variables in the customization 385(or @dfn{JIT}) Lock, by customizing variables in the customization
386group @samp{jit-lock}. @xref{Specific Customization}. 386group @samp{jit-lock}. @xref{Specific Customization}.
387 387
388@node Highlight Changes
389@section Highlight Changes Mode
390
391@findex highlight-changes-mode
392 Use @kbd{M-x highlight-changes-mode} to enable a minor mode
393that uses faces (colors, typically) to indicate which parts of
394the buffer were changed most recently.
395
396@node Highlight Interactively 388@node Highlight Interactively
397@section Interactive Highlighting by Matching 389@section Interactive Highlighting by Matching
398@cindex highlighting by matching 390@cindex highlighting by matching
@@ -460,6 +452,14 @@ This command does nothing if the major mode is a member of the list
460@code{hi-lock-exclude-modes}. 452@code{hi-lock-exclude-modes}.
461@end table 453@end table
462 454
455@node Highlight Changes
456@section Highlight Changes Mode
457
458@findex highlight-changes-mode
459 Use @kbd{M-x highlight-changes-mode} to enable a minor mode
460that uses faces (colors, typically) to indicate which parts of
461the buffer were changed most recently.
462
463@node Scrolling 463@node Scrolling
464@section Scrolling 464@section Scrolling
465 465
diff --git a/man/emacs.texi b/man/emacs.texi
index 8da4e4ed051..23685ef0cd0 100644
--- a/man/emacs.texi
+++ b/man/emacs.texi
@@ -309,8 +309,8 @@ Controlling the Display
309* Faces:: How to change the display style using faces. 309* Faces:: How to change the display style using faces.
310* Standard Faces:: Emacs' predefined faces. 310* Standard Faces:: Emacs' predefined faces.
311* Font Lock:: Minor mode for syntactic highlighting using faces. 311* Font Lock:: Minor mode for syntactic highlighting using faces.
312* Highlight Changes:: Using colors to show where you changed the buffer.
313* Highlight Interactively:: Tell Emacs what text to highlight. 312* Highlight Interactively:: Tell Emacs what text to highlight.
313* Highlight Changes:: Using colors to show where you changed the buffer.
314* Scrolling:: Moving text up and down in a window. 314* Scrolling:: Moving text up and down in a window.
315* Horizontal Scrolling:: Moving text left and right in a window. 315* Horizontal Scrolling:: Moving text left and right in a window.
316* Fringes:: Enabling or disabling window fringes. 316* Fringes:: Enabling or disabling window fringes.
diff --git a/src/ChangeLog b/src/ChangeLog
index 900db33db3d..1a9fd720167 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,18 @@
12005-11-17 Chong Yidong <cyd@stupidchicken.com>
2
3 * image.c (x_create_bitmap_from_xpm_data): Free attributes on
4 fail.
5
6 * xfaces.c (Qignore_defface): New variable.
7 (syms_of_xfaces): Provide `:ignore-defface'.
8 (IGNORE_DEFFACE_P): New macro.
9 (check_lface_attrs, lface_fully_specified_p)
10 (Finternal_set_lisp_face_attribute)
11 (Fface_attribute_relative_p, Fmerge_face_attribute): Handle
12 Qignore_defface as a possible value.
13 (merge_face_vectors): The merged face is `unspecified' if the
14 mergee specifies `:ignore-defface'.
15
12005-11-16 Stefan Monnier <monnier@iro.umontreal.ca> 162005-11-16 Stefan Monnier <monnier@iro.umontreal.ca>
2 17
3 * lread.c (readevalloop): Add missing GCPROs. 18 * lread.c (readevalloop): Add missing GCPROs.
diff --git a/src/image.c b/src/image.c
index 1ba1cd197ff..c7bc71ee909 100644
--- a/src/image.c
+++ b/src/image.c
@@ -3737,10 +3737,12 @@ x_create_bitmap_from_xpm_data (f, bits)
3737 rc = XpmCreatePixmapFromData (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 3737 rc = XpmCreatePixmapFromData (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
3738 bits, &bitmap, &mask, &attrs); 3738 bits, &bitmap, &mask, &attrs);
3739 if (rc != XpmSuccess) 3739 if (rc != XpmSuccess)
3740 return -1; 3740 {
3741 XpmFreeAttributes (&attrs);
3742 return -1;
3743 }
3741 3744
3742 id = x_allocate_bitmap_record (f); 3745 id = x_allocate_bitmap_record (f);
3743
3744 dpyinfo->bitmaps[id - 1].pixmap = bitmap; 3746 dpyinfo->bitmaps[id - 1].pixmap = bitmap;
3745 dpyinfo->bitmaps[id - 1].have_mask = 1; 3747 dpyinfo->bitmaps[id - 1].have_mask = 1;
3746 dpyinfo->bitmaps[id - 1].mask = mask; 3748 dpyinfo->bitmaps[id - 1].mask = mask;
diff --git a/src/xfaces.c b/src/xfaces.c
index 4d9ee22b43f..647cf7bb337 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -277,6 +277,10 @@ Boston, MA 02110-1301, USA. */
277 277
278#define UNSPECIFIEDP(ATTR) EQ ((ATTR), Qunspecified) 278#define UNSPECIFIEDP(ATTR) EQ ((ATTR), Qunspecified)
279 279
280/* Non-zero if face attribute ATTR is `ignore-defface'. */
281
282#define IGNORE_DEFFACE_P(ATTR) EQ ((ATTR), Qignore_defface)
283
280/* Value is the number of elements of VECTOR. */ 284/* Value is the number of elements of VECTOR. */
281 285
282#define DIM(VECTOR) (sizeof (VECTOR) / sizeof *(VECTOR)) 286#define DIM(VECTOR) (sizeof (VECTOR) / sizeof *(VECTOR))
@@ -315,6 +319,7 @@ Lisp_Object Qultra_expanded;
315Lisp_Object Qreleased_button, Qpressed_button; 319Lisp_Object Qreleased_button, Qpressed_button;
316Lisp_Object QCstyle, QCcolor, QCline_width; 320Lisp_Object QCstyle, QCcolor, QCline_width;
317Lisp_Object Qunspecified; 321Lisp_Object Qunspecified;
322Lisp_Object Qignore_defface;
318 323
319char unspecified_fg[] = "unspecified-fg", unspecified_bg[] = "unspecified-bg"; 324char unspecified_fg[] = "unspecified-fg", unspecified_bg[] = "unspecified-bg";
320 325
@@ -3107,48 +3112,64 @@ check_lface_attrs (attrs)
3107 Lisp_Object *attrs; 3112 Lisp_Object *attrs;
3108{ 3113{
3109 xassert (UNSPECIFIEDP (attrs[LFACE_FAMILY_INDEX]) 3114 xassert (UNSPECIFIEDP (attrs[LFACE_FAMILY_INDEX])
3115 || IGNORE_DEFFACE_P (attrs[LFACE_FAMILY_INDEX])
3110 || STRINGP (attrs[LFACE_FAMILY_INDEX])); 3116 || STRINGP (attrs[LFACE_FAMILY_INDEX]));
3111 xassert (UNSPECIFIEDP (attrs[LFACE_SWIDTH_INDEX]) 3117 xassert (UNSPECIFIEDP (attrs[LFACE_SWIDTH_INDEX])
3118 || IGNORE_DEFFACE_P (attrs[LFACE_SWIDTH_INDEX])
3112 || SYMBOLP (attrs[LFACE_SWIDTH_INDEX])); 3119 || SYMBOLP (attrs[LFACE_SWIDTH_INDEX]));
3113 xassert (UNSPECIFIEDP (attrs[LFACE_AVGWIDTH_INDEX]) 3120 xassert (UNSPECIFIEDP (attrs[LFACE_AVGWIDTH_INDEX])
3121 || IGNORE_DEFFACE_P (attrs[LFACE_AVGWIDTH_INDEX])
3114 || INTEGERP (attrs[LFACE_AVGWIDTH_INDEX])); 3122 || INTEGERP (attrs[LFACE_AVGWIDTH_INDEX]));
3115 xassert (UNSPECIFIEDP (attrs[LFACE_HEIGHT_INDEX]) 3123 xassert (UNSPECIFIEDP (attrs[LFACE_HEIGHT_INDEX])
3124 || IGNORE_DEFFACE_P (attrs[LFACE_HEIGHT_INDEX])
3116 || INTEGERP (attrs[LFACE_HEIGHT_INDEX]) 3125 || INTEGERP (attrs[LFACE_HEIGHT_INDEX])
3117 || FLOATP (attrs[LFACE_HEIGHT_INDEX]) 3126 || FLOATP (attrs[LFACE_HEIGHT_INDEX])
3118 || FUNCTIONP (attrs[LFACE_HEIGHT_INDEX])); 3127 || FUNCTIONP (attrs[LFACE_HEIGHT_INDEX]));
3119 xassert (UNSPECIFIEDP (attrs[LFACE_WEIGHT_INDEX]) 3128 xassert (UNSPECIFIEDP (attrs[LFACE_WEIGHT_INDEX])
3129 || IGNORE_DEFFACE_P (attrs[LFACE_WEIGHT_INDEX])
3120 || SYMBOLP (attrs[LFACE_WEIGHT_INDEX])); 3130 || SYMBOLP (attrs[LFACE_WEIGHT_INDEX]));
3121 xassert (UNSPECIFIEDP (attrs[LFACE_SLANT_INDEX]) 3131 xassert (UNSPECIFIEDP (attrs[LFACE_SLANT_INDEX])
3132 || IGNORE_DEFFACE_P (attrs[LFACE_SLANT_INDEX])
3122 || SYMBOLP (attrs[LFACE_SLANT_INDEX])); 3133 || SYMBOLP (attrs[LFACE_SLANT_INDEX]));
3123 xassert (UNSPECIFIEDP (attrs[LFACE_UNDERLINE_INDEX]) 3134 xassert (UNSPECIFIEDP (attrs[LFACE_UNDERLINE_INDEX])
3135 || IGNORE_DEFFACE_P (attrs[LFACE_UNDERLINE_INDEX])
3124 || SYMBOLP (attrs[LFACE_UNDERLINE_INDEX]) 3136 || SYMBOLP (attrs[LFACE_UNDERLINE_INDEX])
3125 || STRINGP (attrs[LFACE_UNDERLINE_INDEX])); 3137 || STRINGP (attrs[LFACE_UNDERLINE_INDEX]));
3126 xassert (UNSPECIFIEDP (attrs[LFACE_OVERLINE_INDEX]) 3138 xassert (UNSPECIFIEDP (attrs[LFACE_OVERLINE_INDEX])
3139 || IGNORE_DEFFACE_P (attrs[LFACE_OVERLINE_INDEX])
3127 || SYMBOLP (attrs[LFACE_OVERLINE_INDEX]) 3140 || SYMBOLP (attrs[LFACE_OVERLINE_INDEX])
3128 || STRINGP (attrs[LFACE_OVERLINE_INDEX])); 3141 || STRINGP (attrs[LFACE_OVERLINE_INDEX]));
3129 xassert (UNSPECIFIEDP (attrs[LFACE_STRIKE_THROUGH_INDEX]) 3142 xassert (UNSPECIFIEDP (attrs[LFACE_STRIKE_THROUGH_INDEX])
3143 || IGNORE_DEFFACE_P (attrs[LFACE_STRIKE_THROUGH_INDEX])
3130 || SYMBOLP (attrs[LFACE_STRIKE_THROUGH_INDEX]) 3144 || SYMBOLP (attrs[LFACE_STRIKE_THROUGH_INDEX])
3131 || STRINGP (attrs[LFACE_STRIKE_THROUGH_INDEX])); 3145 || STRINGP (attrs[LFACE_STRIKE_THROUGH_INDEX]));
3132 xassert (UNSPECIFIEDP (attrs[LFACE_BOX_INDEX]) 3146 xassert (UNSPECIFIEDP (attrs[LFACE_BOX_INDEX])
3147 || IGNORE_DEFFACE_P (attrs[LFACE_BOX_INDEX])
3133 || SYMBOLP (attrs[LFACE_BOX_INDEX]) 3148 || SYMBOLP (attrs[LFACE_BOX_INDEX])
3134 || STRINGP (attrs[LFACE_BOX_INDEX]) 3149 || STRINGP (attrs[LFACE_BOX_INDEX])
3135 || INTEGERP (attrs[LFACE_BOX_INDEX]) 3150 || INTEGERP (attrs[LFACE_BOX_INDEX])
3136 || CONSP (attrs[LFACE_BOX_INDEX])); 3151 || CONSP (attrs[LFACE_BOX_INDEX]));
3137 xassert (UNSPECIFIEDP (attrs[LFACE_INVERSE_INDEX]) 3152 xassert (UNSPECIFIEDP (attrs[LFACE_INVERSE_INDEX])
3153 || IGNORE_DEFFACE_P (attrs[LFACE_INVERSE_INDEX])
3138 || SYMBOLP (attrs[LFACE_INVERSE_INDEX])); 3154 || SYMBOLP (attrs[LFACE_INVERSE_INDEX]));
3139 xassert (UNSPECIFIEDP (attrs[LFACE_FOREGROUND_INDEX]) 3155 xassert (UNSPECIFIEDP (attrs[LFACE_FOREGROUND_INDEX])
3156 || IGNORE_DEFFACE_P (attrs[LFACE_FOREGROUND_INDEX])
3140 || STRINGP (attrs[LFACE_FOREGROUND_INDEX])); 3157 || STRINGP (attrs[LFACE_FOREGROUND_INDEX]));
3141 xassert (UNSPECIFIEDP (attrs[LFACE_BACKGROUND_INDEX]) 3158 xassert (UNSPECIFIEDP (attrs[LFACE_BACKGROUND_INDEX])
3159 || IGNORE_DEFFACE_P (attrs[LFACE_BACKGROUND_INDEX])
3142 || STRINGP (attrs[LFACE_BACKGROUND_INDEX])); 3160 || STRINGP (attrs[LFACE_BACKGROUND_INDEX]));
3143 xassert (UNSPECIFIEDP (attrs[LFACE_INHERIT_INDEX]) 3161 xassert (UNSPECIFIEDP (attrs[LFACE_INHERIT_INDEX])
3162 || IGNORE_DEFFACE_P (attrs[LFACE_INHERIT_INDEX])
3144 || NILP (attrs[LFACE_INHERIT_INDEX]) 3163 || NILP (attrs[LFACE_INHERIT_INDEX])
3145 || SYMBOLP (attrs[LFACE_INHERIT_INDEX]) 3164 || SYMBOLP (attrs[LFACE_INHERIT_INDEX])
3146 || CONSP (attrs[LFACE_INHERIT_INDEX])); 3165 || CONSP (attrs[LFACE_INHERIT_INDEX]));
3147#ifdef HAVE_WINDOW_SYSTEM 3166#ifdef HAVE_WINDOW_SYSTEM
3148 xassert (UNSPECIFIEDP (attrs[LFACE_STIPPLE_INDEX]) 3167 xassert (UNSPECIFIEDP (attrs[LFACE_STIPPLE_INDEX])
3168 || IGNORE_DEFFACE_P (attrs[LFACE_STIPPLE_INDEX])
3149 || SYMBOLP (attrs[LFACE_STIPPLE_INDEX]) 3169 || SYMBOLP (attrs[LFACE_STIPPLE_INDEX])
3150 || !NILP (Fbitmap_spec_p (attrs[LFACE_STIPPLE_INDEX]))); 3170 || !NILP (Fbitmap_spec_p (attrs[LFACE_STIPPLE_INDEX])));
3151 xassert (UNSPECIFIEDP (attrs[LFACE_FONT_INDEX]) 3171 xassert (UNSPECIFIEDP (attrs[LFACE_FONT_INDEX])
3172 || IGNORE_DEFFACE_P (attrs[LFACE_FONT_INDEX])
3152 || NILP (attrs[LFACE_FONT_INDEX]) 3173 || NILP (attrs[LFACE_FONT_INDEX])
3153 || STRINGP (attrs[LFACE_FONT_INDEX])); 3174 || STRINGP (attrs[LFACE_FONT_INDEX]));
3154#endif 3175#endif
@@ -3357,7 +3378,7 @@ lface_fully_specified_p (attrs)
3357 for (i = 1; i < LFACE_VECTOR_SIZE; ++i) 3378 for (i = 1; i < LFACE_VECTOR_SIZE; ++i)
3358 if (i != LFACE_FONT_INDEX && i != LFACE_INHERIT_INDEX 3379 if (i != LFACE_FONT_INDEX && i != LFACE_INHERIT_INDEX
3359 && i != LFACE_AVGWIDTH_INDEX) 3380 && i != LFACE_AVGWIDTH_INDEX)
3360 if (UNSPECIFIEDP (attrs[i]) 3381 if ((UNSPECIFIEDP (attrs[i]) || IGNORE_DEFFACE_P (attrs[i]))
3361#ifdef MAC_OS 3382#ifdef MAC_OS
3362 /* MAC_TODO: No stipple support on Mac OS yet, this index is 3383 /* MAC_TODO: No stipple support on Mac OS yet, this index is
3363 always unspecified. */ 3384 always unspecified. */
@@ -3572,6 +3593,8 @@ merge_face_vectors (f, from, to, named_merge_points)
3572 { 3593 {
3573 if (i == LFACE_HEIGHT_INDEX && !INTEGERP (from[i])) 3594 if (i == LFACE_HEIGHT_INDEX && !INTEGERP (from[i]))
3574 to[i] = merge_face_heights (from[i], to[i], to[i]); 3595 to[i] = merge_face_heights (from[i], to[i], to[i]);
3596 else if (IGNORE_DEFFACE_P (from[i]))
3597 to[i] = Qunspecified;
3575 else 3598 else
3576 to[i] = from[i]; 3599 to[i] = from[i];
3577 } 3600 }
@@ -4064,7 +4087,7 @@ FRAME 0 means change the face on all frames, and change the default
4064 4087
4065 if (EQ (attr, QCfamily)) 4088 if (EQ (attr, QCfamily))
4066 { 4089 {
4067 if (!UNSPECIFIEDP (value)) 4090 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4068 { 4091 {
4069 CHECK_STRING (value); 4092 CHECK_STRING (value);
4070 if (SCHARS (value) == 0) 4093 if (SCHARS (value) == 0)
@@ -4076,7 +4099,7 @@ FRAME 0 means change the face on all frames, and change the default
4076 } 4099 }
4077 else if (EQ (attr, QCheight)) 4100 else if (EQ (attr, QCheight))
4078 { 4101 {
4079 if (!UNSPECIFIEDP (value)) 4102 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4080 { 4103 {
4081 Lisp_Object test; 4104 Lisp_Object test;
4082 4105
@@ -4097,7 +4120,7 @@ FRAME 0 means change the face on all frames, and change the default
4097 } 4120 }
4098 else if (EQ (attr, QCweight)) 4121 else if (EQ (attr, QCweight))
4099 { 4122 {
4100 if (!UNSPECIFIEDP (value)) 4123 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4101 { 4124 {
4102 CHECK_SYMBOL (value); 4125 CHECK_SYMBOL (value);
4103 if (face_numeric_weight (value) < 0) 4126 if (face_numeric_weight (value) < 0)
@@ -4109,7 +4132,7 @@ FRAME 0 means change the face on all frames, and change the default
4109 } 4132 }
4110 else if (EQ (attr, QCslant)) 4133 else if (EQ (attr, QCslant))
4111 { 4134 {
4112 if (!UNSPECIFIEDP (value)) 4135 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4113 { 4136 {
4114 CHECK_SYMBOL (value); 4137 CHECK_SYMBOL (value);
4115 if (face_numeric_slant (value) < 0) 4138 if (face_numeric_slant (value) < 0)
@@ -4121,7 +4144,7 @@ FRAME 0 means change the face on all frames, and change the default
4121 } 4144 }
4122 else if (EQ (attr, QCunderline)) 4145 else if (EQ (attr, QCunderline))
4123 { 4146 {
4124 if (!UNSPECIFIEDP (value)) 4147 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4125 if ((SYMBOLP (value) 4148 if ((SYMBOLP (value)
4126 && !EQ (value, Qt) 4149 && !EQ (value, Qt)
4127 && !EQ (value, Qnil)) 4150 && !EQ (value, Qnil))
@@ -4135,7 +4158,7 @@ FRAME 0 means change the face on all frames, and change the default
4135 } 4158 }
4136 else if (EQ (attr, QCoverline)) 4159 else if (EQ (attr, QCoverline))
4137 { 4160 {
4138 if (!UNSPECIFIEDP (value)) 4161 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4139 if ((SYMBOLP (value) 4162 if ((SYMBOLP (value)
4140 && !EQ (value, Qt) 4163 && !EQ (value, Qt)
4141 && !EQ (value, Qnil)) 4164 && !EQ (value, Qnil))
@@ -4149,7 +4172,7 @@ FRAME 0 means change the face on all frames, and change the default
4149 } 4172 }
4150 else if (EQ (attr, QCstrike_through)) 4173 else if (EQ (attr, QCstrike_through))
4151 { 4174 {
4152 if (!UNSPECIFIEDP (value)) 4175 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4153 if ((SYMBOLP (value) 4176 if ((SYMBOLP (value)
4154 && !EQ (value, Qt) 4177 && !EQ (value, Qt)
4155 && !EQ (value, Qnil)) 4178 && !EQ (value, Qnil))
@@ -4170,7 +4193,7 @@ FRAME 0 means change the face on all frames, and change the default
4170 if (EQ (value, Qt)) 4193 if (EQ (value, Qt))
4171 value = make_number (1); 4194 value = make_number (1);
4172 4195
4173 if (UNSPECIFIEDP (value)) 4196 if (UNSPECIFIEDP (value) || IGNORE_DEFFACE_P (value))
4174 valid_p = 1; 4197 valid_p = 1;
4175 else if (NILP (value)) 4198 else if (NILP (value))
4176 valid_p = 1; 4199 valid_p = 1;
@@ -4227,7 +4250,7 @@ FRAME 0 means change the face on all frames, and change the default
4227 else if (EQ (attr, QCinverse_video) 4250 else if (EQ (attr, QCinverse_video)
4228 || EQ (attr, QCreverse_video)) 4251 || EQ (attr, QCreverse_video))
4229 { 4252 {
4230 if (!UNSPECIFIEDP (value)) 4253 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4231 { 4254 {
4232 CHECK_SYMBOL (value); 4255 CHECK_SYMBOL (value);
4233 if (!EQ (value, Qt) && !NILP (value)) 4256 if (!EQ (value, Qt) && !NILP (value))
@@ -4238,7 +4261,7 @@ FRAME 0 means change the face on all frames, and change the default
4238 } 4261 }
4239 else if (EQ (attr, QCforeground)) 4262 else if (EQ (attr, QCforeground))
4240 { 4263 {
4241 if (!UNSPECIFIEDP (value)) 4264 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4242 { 4265 {
4243 /* Don't check for valid color names here because it depends 4266 /* Don't check for valid color names here because it depends
4244 on the frame (display) whether the color will be valid 4267 on the frame (display) whether the color will be valid
@@ -4252,7 +4275,7 @@ FRAME 0 means change the face on all frames, and change the default
4252 } 4275 }
4253 else if (EQ (attr, QCbackground)) 4276 else if (EQ (attr, QCbackground))
4254 { 4277 {
4255 if (!UNSPECIFIEDP (value)) 4278 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4256 { 4279 {
4257 /* Don't check for valid color names here because it depends 4280 /* Don't check for valid color names here because it depends
4258 on the frame (display) whether the color will be valid 4281 on the frame (display) whether the color will be valid
@@ -4267,7 +4290,7 @@ FRAME 0 means change the face on all frames, and change the default
4267 else if (EQ (attr, QCstipple)) 4290 else if (EQ (attr, QCstipple))
4268 { 4291 {
4269#ifdef HAVE_X_WINDOWS 4292#ifdef HAVE_X_WINDOWS
4270 if (!UNSPECIFIEDP (value) 4293 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value)
4271 && !NILP (value) 4294 && !NILP (value)
4272 && NILP (Fbitmap_spec_p (value))) 4295 && NILP (Fbitmap_spec_p (value)))
4273 signal_error ("Invalid stipple attribute", value); 4296 signal_error ("Invalid stipple attribute", value);
@@ -4277,7 +4300,7 @@ FRAME 0 means change the face on all frames, and change the default
4277 } 4300 }
4278 else if (EQ (attr, QCwidth)) 4301 else if (EQ (attr, QCwidth))
4279 { 4302 {
4280 if (!UNSPECIFIEDP (value)) 4303 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4281 { 4304 {
4282 CHECK_SYMBOL (value); 4305 CHECK_SYMBOL (value);
4283 if (face_numeric_swidth (value) < 0) 4306 if (face_numeric_swidth (value) < 0)
@@ -4302,7 +4325,7 @@ FRAME 0 means change the face on all frames, and change the default
4302 else 4325 else
4303 f = check_x_frame (frame); 4326 f = check_x_frame (frame);
4304 4327
4305 if (!UNSPECIFIEDP (value)) 4328 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4306 { 4329 {
4307 CHECK_STRING (value); 4330 CHECK_STRING (value);
4308 4331
@@ -4350,7 +4373,7 @@ FRAME 0 means change the face on all frames, and change the default
4350 signal_error ("Invalid face attribute name", attr); 4373 signal_error ("Invalid face attribute name", attr);
4351 4374
4352 if (font_related_attr_p 4375 if (font_related_attr_p
4353 && !UNSPECIFIEDP (value)) 4376 && !UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value))
4354 /* If a font-related attribute other than QCfont is specified, the 4377 /* If a font-related attribute other than QCfont is specified, the
4355 original `font' attribute nor that of default face is useless 4378 original `font' attribute nor that of default face is useless
4356 to determine a new font. Thus, we set it to nil so that font 4379 to determine a new font. Thus, we set it to nil so that font
@@ -4371,7 +4394,7 @@ FRAME 0 means change the face on all frames, and change the default
4371 ++windows_or_buffers_changed; 4394 ++windows_or_buffers_changed;
4372 } 4395 }
4373 4396
4374 if (!UNSPECIFIEDP (value) 4397 if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value)
4375 && NILP (Fequal (old_value, value))) 4398 && NILP (Fequal (old_value, value)))
4376 { 4399 {
4377 Lisp_Object param; 4400 Lisp_Object param;
@@ -4788,7 +4811,7 @@ DEFUN ("face-attribute-relative-p", Fface_attribute_relative_p,
4788 (attribute, value) 4811 (attribute, value)
4789 Lisp_Object attribute, value; 4812 Lisp_Object attribute, value;
4790{ 4813{
4791 if (EQ (value, Qunspecified)) 4814 if (EQ (value, Qunspecified) || (EQ (value, Qignore_defface)))
4792 return Qt; 4815 return Qt;
4793 else if (EQ (attribute, QCheight)) 4816 else if (EQ (attribute, QCheight))
4794 return INTEGERP (value) ? Qnil : Qt; 4817 return INTEGERP (value) ? Qnil : Qt;
@@ -4804,7 +4827,7 @@ the result will be absolute, otherwise it will be relative. */)
4804 (attribute, value1, value2) 4827 (attribute, value1, value2)
4805 Lisp_Object attribute, value1, value2; 4828 Lisp_Object attribute, value1, value2;
4806{ 4829{
4807 if (EQ (value1, Qunspecified)) 4830 if (EQ (value1, Qunspecified) || EQ (value1, Qignore_defface))
4808 return value2; 4831 return value2;
4809 else if (EQ (attribute, QCheight)) 4832 else if (EQ (attribute, QCheight))
4810 return merge_face_heights (value1, value2, value1); 4833 return merge_face_heights (value1, value2, value1);
@@ -8035,6 +8058,8 @@ syms_of_xfaces ()
8035 staticpro (&Qforeground_color); 8058 staticpro (&Qforeground_color);
8036 Qunspecified = intern ("unspecified"); 8059 Qunspecified = intern ("unspecified");
8037 staticpro (&Qunspecified); 8060 staticpro (&Qunspecified);
8061 Qignore_defface = intern (":ignore-defface");
8062 staticpro (&Qignore_defface);
8038 8063
8039 Qface_alias = intern ("face-alias"); 8064 Qface_alias = intern ("face-alias");
8040 staticpro (&Qface_alias); 8065 staticpro (&Qface_alias);