aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMiles Bader2004-09-15 09:00:10 +0000
committerMiles Bader2004-09-15 09:00:10 +0000
commita63aa6924c6a4bb92dfdb524627c13c791615e2b (patch)
tree771f503928d8f4486f462405107334910302e3ad /src
parenta88eb4ae4abf8cf3f83ecd4ad08e86db7345ae22 (diff)
parent5c2137b83cb6cf1ffc32e26ff091cf1785a9bf1a (diff)
downloademacs-a63aa6924c6a4bb92dfdb524627c13c791615e2b.tar.gz
emacs-a63aa6924c6a4bb92dfdb524627c13c791615e2b.zip
Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-40
Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-535 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-536 sync-tree with gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-537 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-538 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-539 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-540 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-541 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-542 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-545 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-546 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-547 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-548 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-549 Use symbol-matching for generic-mode keywords * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-550 Update from CVS * miles@gnu.org--gnu-2004/gnus--devo--0--patch-2 Add {arch}/=cvs-sync-make-log * miles@gnu.org--gnu-2004/gnus--rel--5.8--base-0 Import from Gnus CVS branch V5-8 * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-1 {arch}/=tagging-method: Add CVS and autoconf grot to junk regexp * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-2 Use explicit tags for autoconf input files * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-3 Remove RCS keywords * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-4 Fix copied explicit id-tags * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-5 Add {arch}/=cvs-sync-make-log * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-6 configure.in: Use ifelse instead of m4_if for arch-tag: comment * miles@gnu.org--gnu-2004/gnus--rel--5.10--base-0 tag of miles@gnu.org--gnu-2004/gnus--rel--5.8--base-0 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-1 Gnus 5.10, from CVS branch v5-10 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-2 Merge from gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-3 Use explicit tags for autoconf input files * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-4 sync-tree with gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-5 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-6 Merge from gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-7 Remove RCS keywords * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-8 Merge from gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-9 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-10 Add {arch}/=cvs-sync-make-log * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-11 Merge from gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-12 Update from CVS: make.bat: Fix line endings around arch-tag. * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-13 - miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-17 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-21 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-22 Update from CVS: lisp/nndb.el (require): Remove tcp and duplicate cl. * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-23 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-24 lisp/nnimap.el (nnimap-open-connection): Remove extraneous end-paren * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-25 - miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-26 Update from CVS
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog84
-rw-r--r--src/Makefile.in78
-rw-r--r--src/alloc.c31
-rw-r--r--src/bytecode.c35
-rw-r--r--src/editfns.c10
-rw-r--r--src/fileio.c6
-rw-r--r--src/msdos.c15
-rw-r--r--src/puresize.h2
-rw-r--r--src/xdisp.c9
-rw-r--r--src/xfaces.c59
-rw-r--r--src/xselect.c10
11 files changed, 228 insertions, 111 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 52426939562..955c8929f92 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,85 @@
12004-09-14 Stefan <monnier@iro.umontreal.ca>
2
3 * fileio.c (Finsert_file_contents): Fix case of replacement in a
4 narrowed buffer.
5
62004-09-14 Kim F. Storm <storm@cua.dk>
7
8 * puresize.h (PURESIZE_RATIO): Define based on BITS_PER_EMACS_INT.
9
10 * xfaces.c (Qface_no_inherit): New var.
11 (syms_of_xfaces): Intern and staticpro it.
12 (Finternal_make_lisp_face, Finternal_set_lisp_face_attribute)
13 (Finternal_copy_lisp_face, update_face_from_frame_parameter):
14 Don't increment face_change_count when face has non-nil
15 face-no-inherit property.
16
172004-09-13 Stefan Monnier <monnier@iro.umontreal.ca>
18
19 * bytecode.c (BYTE_CODE_QUIT): Add missing AFTER_POTENTIAL_GC.
20 (Fbyte_code): Remove dead code after `wrong_type_argument'.
21
22 * alloc.c (Fgarbage_collect): Mark keyboards, gtk data, and specpdl
23 before doing the mark_stack_check_gcpros since they are not on the stack.
24
252004-09-12 Kim F. Storm <storm@cua.dk>
26
27 * editfns.c (Fformat): Handle format strings with multiple text
28 properties. Reverse text property list from the format string,
29 so the positions are in increasing order.
30
312004-09-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
32
33 * xselect.c (x_reply_selection_request): XSync and UNBLOCK before
34 x_uncatch_errors so that possible protocol errors are delivered.
35
362004-09-10 Eli Zaretskii <eliz@gnu.org>
37
38 * Makefile.in (msdos.o): Depend on buffer.h, commands.h, and
39 blockinput.h.
40 (dosfns.o): Depend on blockinput.h, window.h, dispextern.h,
41 charset.h, and coding.h
42 (w16select.o): Depend on buffer.h, charset.h, coding.h, and
43 composite.h.
44 (term.o): Depend on window.h and keymap.h.
45 (abbrev.o): Depend on syntax.h.
46 (callint.o): Depend on keymap.h.
47 (casefiddle.o): Depend on charset.h and keymap.h.
48 (category.o): Depend on keymap.h.
49 (coding.o): Depend on dispextern.h.
50 (cmds.o): Depend on keyboard.h and keymap.h.
51 (dispnew.o): Depend on indent.h and intervals.h.
52 (doc.o): Depend on keymap.h.
53 (editfns.o): Depend on frame.h.
54 (emacs.o): Depend on dispextern.h.
55 (fileio.o): Don't depend on ccl.h.
56 (filelock.o): Depend on charset.h and coding.h.
57 (frame.o): Depend on w32term.h and macterm.h.
58 (insdel.o): Depend on region-cache.h.
59 (keyboard.o): Depend on keymap.h, w32term.h, and macterm.h.
60 (minibuf.o): Depend on $(INTERVALS_SRC) and keymap.h.
61 (search.o): Depend on $(INTERVALS_SRC).
62 (syntax.o): Depend on keymap.h, regex.h, and $(INTERVALS_SRC).
63 (window.o): Depend on keymap.h, blockinput.h, $(INTERVALS_SRC),
64 xterm.h, w32term.h, and macterm.h.
65 (xdisp.o): Depend on keyboard.h, $(INTERVALS_SRC), xterm.h,
66 w32term.h, and macterm.h.
67 (xfaces.o): Depend on keyboard.h, $(INTERVALS_SRC),
68 region-cache.h, xterm.h, w32term.h, and macterm.h.
69 (bytecode.o): Depend on dispextern.h, frame.h, and xterm.h.
70 (data.o): Depend on frame.h.
71 (fns.o): Depend on keymap.h, xterm.h, and blockinput.h.
72 (print.o): Depend on termchar.h and $(INTERVALS_SRC).
73 (lread.o): Depend on $(INTERVALS_SRC), termhooks.h, and coding.h.
74 (intervals.o): Depend on keymap.h.
75
76 * msdos.c (msdos_set_cursor_shape, IT_display_cursor): Add
77 debugging print-out to termscript.
78
792004-09-09 Richard M. Stallman <rms@gnu.org>
80
81 * xdisp.c (decode_mode_spec): Use current buffer for most purposes.
82
12004-09-08 Richard M. Stallman <rms@gnu.org> 832004-09-08 Richard M. Stallman <rms@gnu.org>
2 84
3 * window.c (Fset_window_buffer): Doc fix. 85 * window.c (Fset_window_buffer): Doc fix.
@@ -12446,7 +12528,7 @@
12446 12528
124472002-02-15 Andreas Schwab <schwab@suse.de> 125292002-02-15 Andreas Schwab <schwab@suse.de>
12448 12530
12449 * puresize.h (BASE_PURESIZE): Increase to 9/5. 12531 * puresize.h (PURESIZE_RATIO): Increase to 9/5.
12450 12532
12451 * alloc.c (NSTATICS): Increase to 1280. 12533 * alloc.c (NSTATICS): Increase to 1280.
12452 12534
diff --git a/src/Makefile.in b/src/Makefile.in
index 14a4a64f1cc..007c0584c5a 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1024,29 +1024,32 @@ alloca.o: alloca.c blockinput.h atimer.h
1024 and so rarely changed in ways that do require any. */ 1024 and so rarely changed in ways that do require any. */
1025 1025
1026abbrev.o: abbrev.c buffer.h window.h dispextern.h commands.h character.h \ 1026abbrev.o: abbrev.c buffer.h window.h dispextern.h commands.h character.h \
1027 $(config_h) 1027 syntax.h $(config_h)
1028buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \ 1028buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \
1029 dispextern.h $(INTERVAL_SRC) blockinput.h atimer.h systime.h character.h \ 1029 dispextern.h $(INTERVAL_SRC) blockinput.h atimer.h systime.h character.h \
1030 $(config_h) 1030 $(config_h)
1031callint.o: callint.c window.h commands.h buffer.h \ 1031callint.o: callint.c window.h commands.h buffer.h keymap.h \
1032 keyboard.h dispextern.h $(config_h) 1032 keyboard.h dispextern.h $(config_h)
1033callproc.o: callproc.c epaths.h buffer.h commands.h $(config_h) \ 1033callproc.o: callproc.c epaths.h buffer.h commands.h $(config_h) \
1034 process.h systty.h syssignal.h character.h coding.h ccl.h msdos.h \ 1034 process.h systty.h syssignal.h character.h coding.h ccl.h msdos.h \
1035 composite.h 1035 composite.h w32.h
1036casefiddle.o: casefiddle.c syntax.h commands.h buffer.h character.h \ 1036casefiddle.o: casefiddle.c syntax.h commands.h buffer.h character.h \
1037 composite.h $(config_h) 1037 composite.h \
1038 charset.h keymap.h $(config_h)
1038casetab.o: casetab.c buffer.h $(config_h) 1039casetab.o: casetab.c buffer.h $(config_h)
1039category.o: category.c category.h buffer.h charset.h character.h $(config_h) 1040category.o: category.c category.h buffer.h charset.h keymap.h \
1041 character.h $(config_h)
1040ccl.o: ccl.c ccl.h charset.h character.h coding.h $(config_h) 1042ccl.o: ccl.c ccl.h charset.h character.h coding.h $(config_h)
1041character.o: character.c character.h buffer.h charset.h composite.h disptab.h \ 1043character.o: character.c character.h buffer.h charset.h composite.h disptab.h \
1042 $(config.h) 1044 $(config.h)
1043charset.o: charset.c charset.h character.h buffer.h coding.h composite.h \ 1045charset.o: charset.c charset.h character.h buffer.h coding.h composite.h \
1044 disptab.h $(config_h) 1046 disptab.h $(config_h)
1045chartab.o: charset.h character.h $(config.h) 1047chartab.o: charset.h character.h $(config.h)
1046coding.o: coding.c coding.h ccl.h buffer.h character.h charset.h intervals.h composite.h window.h $(config_h) 1048coding.o: coding.c coding.h ccl.h buffer.h character.h charset.h intervals.h composite.h \
1049 window.h dispextern.h $(config_h)
1047cm.o: cm.c cm.h termhooks.h $(config_h) 1050cm.o: cm.c cm.h termhooks.h $(config_h)
1048cmds.o: cmds.c syntax.h buffer.h character.h commands.h window.h $(config_h) \ 1051cmds.o: cmds.c syntax.h buffer.h character.h commands.h window.h $(config_h) \
1049 msdos.h dispextern.h 1052 msdos.h dispextern.h keyboard.h keymap.h
1050pre-crt0.o: pre-crt0.c 1053pre-crt0.o: pre-crt0.c
1051ecrt0.o: ecrt0.c $(config_h) 1054ecrt0.o: ecrt0.c $(config_h)
1052 CRT0_COMPILE ${srcdir}/ecrt0.c 1055 CRT0_COMPILE ${srcdir}/ecrt0.c
@@ -1054,25 +1057,26 @@ dired.o: dired.c commands.h buffer.h $(config_h) character.h charset.h \
1054 coding.h regex.h systime.h 1057 coding.h regex.h systime.h
1055dispnew.o: dispnew.c systty.h systime.h commands.h process.h frame.h \ 1058dispnew.o: dispnew.c systty.h systime.h commands.h process.h frame.h \
1056 window.h buffer.h dispextern.h termchar.h termopts.h termhooks.h cm.h \ 1059 window.h buffer.h dispextern.h termchar.h termopts.h termhooks.h cm.h \
1057 disptab.h \ 1060 disptab.h indent.h intervals.h \
1058 xterm.h blockinput.h atimer.h character.h msdos.h composite.h keyboard.h \ 1061 xterm.h blockinput.h atimer.h character.h msdos.h composite.h keyboard.h \
1059 $(config_h) 1062 $(config_h)
1060doc.o: doc.c $(config_h) epaths.h buffer.h keyboard.h character.h 1063doc.o: doc.c $(config_h) epaths.h buffer.h keyboard.h keymap.h character.h
1061doprnt.o: doprnt.c character.h $(config_h) 1064doprnt.o: doprnt.c character.h $(config_h)
1062dosfns.o: buffer.h termchar.h termhooks.h frame.h msdos.h dosfns.h $(config_h) 1065dosfns.o: buffer.h termchar.h termhooks.h frame.h blockinput.h window.h \
1066 msdos.h dosfns.h dispextern.h charset.h coding.h $(config_h)
1063editfns.o: editfns.c window.h buffer.h systime.h $(INTERVAL_SRC) character.h \ 1067editfns.o: editfns.c window.h buffer.h systime.h $(INTERVAL_SRC) character.h \
1064 coding.h dispextern.h $(config_h) 1068 coding.h dispextern.h frame.h $(config_h)
1065emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \ 1069emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \
1066 termhooks.h buffer.h atimer.h systime.h $(INTERVAL_SRC) $(config_h) \ 1070 termhooks.h buffer.h atimer.h systime.h $(INTERVAL_SRC) $(config_h) \
1067 window.h keyboard.h keymap.h 1071 window.h dispextern.h keyboard.h keymap.h
1068fileio.o: fileio.c window.h buffer.h systime.h $(INTERVAL_SRC) character.h \ 1072fileio.o: fileio.c window.h buffer.h systime.h $(INTERVAL_SRC) character.h \
1069 coding.h ccl.h msdos.h dispextern.h $(config_h) 1073 coding.h msdos.h dispextern.h $(config_h)
1070filelock.o: filelock.c buffer.h character.h charset.h coding.h systime.h \ 1074filelock.o: filelock.c buffer.h character.h charset.h coding.h systime.h \
1071 epaths.h $(config_h) 1075 epaths.h $(config_h)
1072filemode.o: filemode.c $(config_h) 1076filemode.o: filemode.c $(config_h)
1073frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \ 1077frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
1074 blockinput.h atimer.h systime.h buffer.h character.h fontset.h \ 1078 blockinput.h atimer.h systime.h buffer.h character.h fontset.h \
1075 msdos.h dosfns.h dispextern.h $(config_h) 1079 msdos.h dosfns.h dispextern.h w32term.h macterm.h $(config_h)
1076fringe.o: fringe.c dispextern.h frame.h window.h buffer.h $(config_h) 1080fringe.o: fringe.c dispextern.h frame.h window.h buffer.h $(config_h)
1077fontset.o: dispextern.h fontset.h fontset.c ccl.h buffer.h character.h \ 1081fontset.o: dispextern.h fontset.h fontset.c ccl.h buffer.h character.h \
1078 charset.h frame.h keyboard.h $(config_h) 1082 charset.h frame.h keyboard.h $(config_h)
@@ -1083,11 +1087,11 @@ indent.o: indent.c frame.h window.h indent.h buffer.h $(config_h) termchar.h \
1083 termopts.h disptab.h region-cache.h character.h category.h composite.h \ 1087 termopts.h disptab.h region-cache.h character.h category.h composite.h \
1084 dispextern.h keyboard.h 1088 dispextern.h keyboard.h
1085insdel.o: insdel.c window.h buffer.h $(INTERVAL_SRC) blockinput.h character.h \ 1089insdel.o: insdel.c window.h buffer.h $(INTERVAL_SRC) blockinput.h character.h \
1086 dispextern.h atimer.h systime.h $(config_h) 1090 dispextern.h atimer.h systime.h region-cache.h $(config_h)
1087keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \ 1091keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \
1088 commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \ 1092 commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \
1089 systty.h systime.h dispextern.h syntax.h $(INTERVAL_SRC) blockinput.h \ 1093 systty.h systime.h dispextern.h syntax.h $(INTERVAL_SRC) blockinput.h \
1090 atimer.h xterm.h puresize.h msdos.h $(config_h) 1094 atimer.h xterm.h puresize.h msdos.h keymap.h w32term.h macterm.h $(config_h)
1091keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \ 1095keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \
1092 atimer.h systime.h puresize.h character.h intervals.h $(config_h) 1096 atimer.h systime.h puresize.h character.h intervals.h $(config_h)
1093lastfile.o: lastfile.c $(config_h) 1097lastfile.o: lastfile.c $(config_h)
@@ -1100,11 +1104,11 @@ vm-limit.o: vm-limit.c mem-limits.h $(config_h)
1100marker.o: marker.c buffer.h character.h $(config_h) 1104marker.o: marker.c buffer.h character.h $(config_h)
1101md5.o: md5.c md5.h $(config_h) 1105md5.o: md5.c md5.h $(config_h)
1102minibuf.o: minibuf.c syntax.h dispextern.h frame.h window.h keyboard.h \ 1106minibuf.o: minibuf.c syntax.h dispextern.h frame.h window.h keyboard.h \
1103 buffer.h commands.h character.h msdos.h $(config_h) 1107 buffer.h commands.h character.h msdos.h $(INTERVAL_SRC) keymap.h $(config_h)
1104mktime.o: mktime.c $(config_h) 1108mktime.o: mktime.c $(config_h)
1105msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \ 1109msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \
1106 termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \ 1110 termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \
1107 keyboard.h intervals.h $(config_h) 1111 keyboard.h intervals.h buffer.h commands.h blockinput.h $(config_h)
1108process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \ 1112process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \
1109 commands.h syssignal.h systime.h systty.h syswait.h frame.h dispextern.h \ 1113 commands.h syssignal.h systime.h systty.h syswait.h frame.h dispextern.h \
1110 blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \ 1114 blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \
@@ -1116,16 +1120,17 @@ scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \
1116 $(config_h) 1120 $(config_h)
1117search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \ 1121search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \
1118 blockinput.h atimer.h systime.h category.h character.h composite.h \ 1122 blockinput.h atimer.h systime.h category.h character.h composite.h \
1123 $(INTERVAL_SRC) \
1119 $(config_h) 1124 $(config_h)
1120strftime.o: strftime.c $(config_h) 1125strftime.o: strftime.c $(config_h)
1121syntax.o: syntax.c syntax.h buffer.h commands.h category.h character.h \ 1126syntax.o: syntax.c syntax.h buffer.h commands.h category.h character.h \
1122 composite.h $(config_h) 1127 composite.h keymap.h regex.h $(INTERVAL_SRC) $(config_h)
1123sysdep.o: sysdep.c syssignal.h systty.h systime.h syswait.h blockinput.h \ 1128sysdep.o: sysdep.c syssignal.h systty.h systime.h syswait.h blockinput.h \
1124 process.h dispextern.h termhooks.h termchar.h termopts.h \ 1129 process.h dispextern.h termhooks.h termchar.h termopts.h \
1125 frame.h atimer.h window.h msdos.h dosfns.h keyboard.h $(config_h) 1130 frame.h atimer.h window.h msdos.h dosfns.h keyboard.h $(config_h)
1126term.o: term.c termchar.h termhooks.h termopts.h $(config_h) cm.h frame.h \ 1131term.o: term.c termchar.h termhooks.h termopts.h $(config_h) cm.h frame.h \
1127 disptab.h dispextern.h keyboard.h character.h charset.h coding.h ccl.h \ 1132 disptab.h dispextern.h keyboard.h character.h charset.h coding.h ccl.h \
1128 msdos.h keymap.h 1133 msdos.h window.h keymap.h
1129termcap.o: termcap.c $(config_h) 1134termcap.o: termcap.c $(config_h)
1130terminfo.o: terminfo.c $(config_h) 1135terminfo.o: terminfo.c $(config_h)
1131tparam.o: tparam.c $(config_h) 1136tparam.o: tparam.c $(config_h)
@@ -1135,19 +1140,21 @@ undo.o: undo.c buffer.h commands.h $(config_h)
1135UNEXEC_ALIAS=UNEXEC 1140UNEXEC_ALIAS=UNEXEC
1136$(UNEXEC_ALIAS): UNEXEC_SRC $(config_h) 1141$(UNEXEC_ALIAS): UNEXEC_SRC $(config_h)
1137w16select.o: w16select.c dispextern.h frame.h blockinput.h atimer.h systime.h \ 1142w16select.o: w16select.c dispextern.h frame.h blockinput.h atimer.h systime.h \
1138 msdos.h $(config_h) 1143 msdos.h buffer.h charset.h coding.h composite.h $(config_h)
1139widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \ 1144widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \
1140 $(srcdir)/../lwlib/lwlib.h $(config_h) 1145 $(srcdir)/../lwlib/lwlib.h $(config_h)
1141window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \ 1146window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \
1142 termhooks.h disptab.h keyboard.h dispextern.h msdos.h composite.h \ 1147 termhooks.h disptab.h keyboard.h dispextern.h msdos.h composite.h \
1148 keymap.h blockinput.h $(INTERVAL_SRC) xterm.h w32term.h macterm.h $(config_h)
1149xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h \
1150 coding.h termchar.h frame.h window.h disptab.h termhooks.h character.h \
1151 charset.h keyboard.h $(INTERVAL_SRC) region-cache.h xterm.h w32term.h \
1152 macterm.h $(config_h) msdos.h composite.h fontset.h blockinput.h atimer.h \
1153 systime.h keymap.h
1154xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \
1155 window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \
1156 systime.h keyboard.h fontset.h w32term.h macterm.h $(INTERVAL_SRC) \
1143 $(config_h) 1157 $(config_h)
1144xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h coding.h \
1145 termchar.h frame.h window.h disptab.h termhooks.h character.h charset.h \
1146 $(config_h) msdos.h composite.h fontset.h blockinput.h atimer.h systime.h \
1147 keymap.h region-cache.h
1148xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \
1149 window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \
1150 systime.h fontset.h $(config_h) $(INTERVAL_SRC)
1151xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \ 1158xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \
1152 $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \ 1159 $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \
1153 character.h charset.h coding.h gtkutil.h $(config_h) termhooks.h 1160 character.h charset.h coding.h gtkutil.h $(config_h) termhooks.h
@@ -1175,23 +1182,26 @@ atimer.o: atimer.c atimer.h systime.h $(config_h)
1175alloc.o: alloc.c process.h frame.h window.h buffer.h puresize.h syssignal.h keyboard.h \ 1182alloc.o: alloc.c process.h frame.h window.h buffer.h puresize.h syssignal.h keyboard.h \
1176 blockinput.h atimer.h systime.h character.h dispextern.h $(config_h) \ 1183 blockinput.h atimer.h systime.h character.h dispextern.h $(config_h) \
1177 $(INTERVAL_SRC) 1184 $(INTERVAL_SRC)
1178bytecode.o: bytecode.c buffer.h syntax.h character.h window.h $(config_h) 1185bytecode.o: bytecode.c buffer.h syntax.h character.h window.h dispextern.h \
1179data.o: data.c buffer.h puresize.h character.h syssignal.h keyboard.h \ 1186 frame.h xterm.h $(config_h)
1187data.o: data.c buffer.h puresize.h character.h syssignal.h keyboard.h frame.h \
1180 $(config_h) 1188 $(config_h)
1181eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h \ 1189eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h \
1182 dispextern.h $(config_h) 1190 dispextern.h $(config_h)
1183floatfns.o: floatfns.c $(config_h) 1191floatfns.o: floatfns.c $(config_h)
1184fns.o: fns.c commands.h $(config_h) frame.h buffer.h character.h keyboard.h \ 1192fns.o: fns.c commands.h $(config_h) frame.h buffer.h character.h keyboard.h \
1185 frame.h window.h dispextern.h $(INTERVAL_SRC) coding.h md5.h 1193 keymap.h frame.h window.h dispextern.h $(INTERVAL_SRC) coding.h md5.h \
1194 blockinput.h xterm.h
1186print.o: print.c process.h frame.h window.h buffer.h keyboard.h character.h \ 1195print.o: print.c process.h frame.h window.h buffer.h keyboard.h character.h \
1187 $(config_h) dispextern.h msdos.h composite.h 1196 $(config_h) dispextern.h termchar.h $(INTERVAL_SRC) msdos.h composite.h
1188lread.o: lread.c commands.h keyboard.h buffer.h epaths.h character.h \ 1197lread.o: lread.c commands.h keyboard.h buffer.h epaths.h character.h \
1189 charset.h $(config_h) termhooks.h coding.h msdos.h 1198 charset.h $(config_h) $(INTERVAL_SRC) termhooks.h coding.h msdos.h
1190 1199
1191/* Text properties support */ 1200/* Text properties support */
1192textprop.o: textprop.c buffer.h window.h dispextern.h $(INTERVAL_SRC) \ 1201textprop.o: textprop.c buffer.h window.h dispextern.h $(INTERVAL_SRC) \
1193 $(config_h) 1202 $(config_h)
1194intervals.o: intervals.c buffer.h $(INTERVAL_SRC) keyboard.h puresize.h $(config_h) 1203intervals.o: intervals.c buffer.h $(INTERVAL_SRC) keyboard.h puresize.h \
1204 keymap.h $(config_h)
1195composite.o: composite.c buffer.h character.h $(INTERVAL_SRC) $(config_h) 1205composite.o: composite.c buffer.h character.h $(INTERVAL_SRC) $(config_h)
1196 1206
1197/* System-specific programs to be made. 1207/* System-specific programs to be made.
diff --git a/src/alloc.c b/src/alloc.c
index 567b8c7a925..4b31ec7897e 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -1,6 +1,6 @@
1/* Storage allocation and gc for GNU Emacs Lisp interpreter. 1/* Storage allocation and gc for GNU Emacs Lisp interpreter.
2 Copyright (C) 1985,86,88,93,94,95,97,98,1999,2000,01,02,03,2004 2 Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997, 1998, 1999,
3 Free Software Foundation, Inc. 3 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
6 6
@@ -4411,6 +4411,20 @@ returns nil, because real GC can't be done. */)
4411 for (i = 0; i < staticidx; i++) 4411 for (i = 0; i < staticidx; i++)
4412 mark_object (*staticvec[i]); 4412 mark_object (*staticvec[i]);
4413 4413
4414 for (bind = specpdl; bind != specpdl_ptr; bind++)
4415 {
4416 mark_object (bind->symbol);
4417 mark_object (bind->old_value);
4418 }
4419 mark_kboards ();
4420
4421#ifdef USE_GTK
4422 {
4423 extern void xg_mark_data ();
4424 xg_mark_data ();
4425 }
4426#endif
4427
4414#if (GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS \ 4428#if (GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS \
4415 || GC_MARK_STACK == GC_MARK_STACK_CHECK_GCPROS) 4429 || GC_MARK_STACK == GC_MARK_STACK_CHECK_GCPROS)
4416 mark_stack (); 4430 mark_stack ();
@@ -4424,11 +4438,6 @@ returns nil, because real GC can't be done. */)
4424#endif 4438#endif
4425 4439
4426 mark_byte_stack (); 4440 mark_byte_stack ();
4427 for (bind = specpdl; bind != specpdl_ptr; bind++)
4428 {
4429 mark_object (bind->symbol);
4430 mark_object (bind->old_value);
4431 }
4432 for (catch = catchlist; catch; catch = catch->next) 4441 for (catch = catchlist; catch; catch = catch->next)
4433 { 4442 {
4434 mark_object (catch->tag); 4443 mark_object (catch->tag);
@@ -4440,19 +4449,11 @@ returns nil, because real GC can't be done. */)
4440 mark_object (handler->var); 4449 mark_object (handler->var);
4441 } 4450 }
4442 mark_backtrace (); 4451 mark_backtrace ();
4443 mark_kboards ();
4444 4452
4445#if GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES 4453#if GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES
4446 mark_stack (); 4454 mark_stack ();
4447#endif 4455#endif
4448 4456
4449#ifdef USE_GTK
4450 {
4451 extern void xg_mark_data ();
4452 xg_mark_data ();
4453 }
4454#endif
4455
4456 /* Everything is now marked, except for the things that require special 4457 /* Everything is now marked, except for the things that require special
4457 finalization, i.e. the undo_list. 4458 finalization, i.e. the undo_list.
4458 Look thru every buffer's undo list 4459 Look thru every buffer's undo list
diff --git a/src/bytecode.c b/src/bytecode.c
index b30a410f80e..d130b3b3d42 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -1,5 +1,5 @@
1/* Execution of byte code produced by bytecomp.el. 1/* Execution of byte code produced by bytecomp.el.
2 Copyright (C) 1985, 1986, 1987, 1988, 1993, 2000, 2001, 2002, 2003 2 Copyright (C) 1985, 1986, 1987, 1988, 1993, 2000, 2001, 2002, 2003, 2004
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
@@ -387,6 +387,7 @@ unmark_byte_stack ()
387 Vquit_flag = Qnil; \ 387 Vquit_flag = Qnil; \
388 BEFORE_POTENTIAL_GC (); \ 388 BEFORE_POTENTIAL_GC (); \
389 Fsignal (Qquit, Qnil); \ 389 Fsignal (Qquit, Qnil); \
390 AFTER_POTENTIAL_GC (); \
390 } \ 391 } \
391 } while (0) 392 } while (0)
392 393
@@ -539,9 +540,7 @@ If the third argument is incorrect, Emacs may crash. */)
539 TOP = Qnil; 540 TOP = Qnil;
540 else 541 else
541 { 542 {
542 BEFORE_POTENTIAL_GC (); 543 wrong_type_argument (Qlistp, v1);
543 Fcar (wrong_type_argument (Qlistp, v1));
544 AFTER_POTENTIAL_GC ();
545 } 544 }
546 break; 545 break;
547 } 546 }
@@ -574,9 +573,7 @@ If the third argument is incorrect, Emacs may crash. */)
574 TOP = Qnil; 573 TOP = Qnil;
575 else 574 else
576 { 575 {
577 BEFORE_POTENTIAL_GC (); 576 wrong_type_argument (Qlistp, v1);
578 Fcdr (wrong_type_argument (Qlistp, v1));
579 AFTER_POTENTIAL_GC ();
580 } 577 }
581 break; 578 break;
582 } 579 }
@@ -907,11 +904,7 @@ If the third argument is incorrect, Emacs may crash. */)
907 else if (!NILP (v1)) 904 else if (!NILP (v1))
908 { 905 {
909 immediate_quit = 0; 906 immediate_quit = 0;
910 BEFORE_POTENTIAL_GC (); 907 wrong_type_argument (Qlistp, v1);
911 v1 = wrong_type_argument (Qlistp, v1);
912 AFTER_POTENTIAL_GC ();
913 immediate_quit = 1;
914 op++;
915 } 908 }
916 } 909 }
917 immediate_quit = 0; 910 immediate_quit = 0;
@@ -920,11 +913,7 @@ If the third argument is incorrect, Emacs may crash. */)
920 else if (NILP (v1)) 913 else if (NILP (v1))
921 TOP = Qnil; 914 TOP = Qnil;
922 else 915 else
923 { 916 wrong_type_argument (Qlistp, v1);
924 BEFORE_POTENTIAL_GC ();
925 Fcar (wrong_type_argument (Qlistp, v1));
926 AFTER_POTENTIAL_GC ();
927 }
928 break; 917 break;
929 } 918 }
930 919
@@ -1561,11 +1550,7 @@ If the third argument is incorrect, Emacs may crash. */)
1561 else if (!NILP (v1)) 1550 else if (!NILP (v1))
1562 { 1551 {
1563 immediate_quit = 0; 1552 immediate_quit = 0;
1564 BEFORE_POTENTIAL_GC (); 1553 wrong_type_argument (Qlistp, v1);
1565 v1 = wrong_type_argument (Qlistp, v1);
1566 AFTER_POTENTIAL_GC ();
1567 immediate_quit = 1;
1568 op++;
1569 } 1554 }
1570 } 1555 }
1571 immediate_quit = 0; 1556 immediate_quit = 0;
@@ -1574,11 +1559,7 @@ If the third argument is incorrect, Emacs may crash. */)
1574 else if (NILP (v1)) 1559 else if (NILP (v1))
1575 TOP = Qnil; 1560 TOP = Qnil;
1576 else 1561 else
1577 { 1562 wrong_type_argument (Qlistp, v1);
1578 BEFORE_POTENTIAL_GC ();
1579 Fcar (wrong_type_argument (Qlistp, v1));
1580 AFTER_POTENTIAL_GC ();
1581 }
1582 } 1563 }
1583 else 1564 else
1584 { 1565 {
diff --git a/src/editfns.c b/src/editfns.c
index 7fdd5598bf8..49617f7ebc9 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -3824,11 +3824,13 @@ usage: (format STRING &rest OBJECTS) */)
3824 3824
3825 /* Adjust the bounds of each text property 3825 /* Adjust the bounds of each text property
3826 to the proper start and end in the output string. */ 3826 to the proper start and end in the output string. */
3827 /* We take advantage of the fact that the positions in PROPS
3828 are in increasing order, so that we can do (effectively)
3829 one scan through the position space of the format string.
3830 3827
3831 BYTEPOS is the byte position in the format string, 3828 /* Put the positions in PROPS in increasing order, so that
3829 we can do (effectively) one scan through the position
3830 space of the format string. */
3831 props = Fnreverse (props);
3832
3833 /* BYTEPOS is the byte position in the format string,
3832 POSITION is the untranslated char position in it, 3834 POSITION is the untranslated char position in it,
3833 TRANSLATED is the translated char position in BUF, 3835 TRANSLATED is the translated char position in BUF,
3834 and ARGN is the number of the next arg we will come to. */ 3836 and ARGN is the number of the next arg we will come to. */
diff --git a/src/fileio.c b/src/fileio.c
index f3678cac0e5..7c0490e6978 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1,6 +1,6 @@
1/* File IO for GNU Emacs. 1/* File IO for GNU Emacs.
2 Copyright (C) 1985,86,87,88,93,94,95,96,97,98,99,2000,01,03,2004 2 Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998,
3 Free Software Foundation, Inc. 3 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
6 6
@@ -4304,7 +4304,7 @@ actually used. */)
4304 /* Replace the chars that we need to replace, 4304 /* Replace the chars that we need to replace,
4305 and update INSERTED to equal the number of bytes 4305 and update INSERTED to equal the number of bytes
4306 we are taking from the decoded string. */ 4306 we are taking from the decoded string. */
4307 inserted -= (Z_BYTE - same_at_end) + (same_at_start - BEG_BYTE); 4307 inserted -= (ZV_BYTE - same_at_end) + (same_at_start - BEGV_BYTE);
4308 4308
4309 if (same_at_end != same_at_start) 4309 if (same_at_end != same_at_start)
4310 { 4310 {
diff --git a/src/msdos.c b/src/msdos.c
index daa4199d6a7..0020be310a6 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -752,6 +752,9 @@ msdos_set_cursor_shape (struct frame *f, int start_line, int width)
752 if (f && f != SELECTED_FRAME()) 752 if (f && f != SELECTED_FRAME())
753 return; 753 return;
754 754
755 if (termscript)
756 fprintf (termscript, "\nCURSOR SHAPE=(%d,%d)", start_line, width);
757
755 /* The character cell size in scan lines is stored at 40:85 in the 758 /* The character cell size in scan lines is stored at 40:85 in the
756 BIOS data area. */ 759 BIOS data area. */
757 max_line = _farpeekw (_dos_ds, 0x485) - 1; 760 max_line = _farpeekw (_dos_ds, 0x485) - 1;
@@ -851,10 +854,12 @@ IT_set_cursor_type (struct frame *f, Lisp_Object cursor_type)
851 } 854 }
852 } 855 }
853 else 856 else
854 /* Treat anything unknown as "box cursor". This includes nil, so 857 {
855 that a frame which doesn't specify a cursor type gets a box, 858 /* Treat anything unknown as "box cursor". This includes nil, so
856 which is the default in Emacs. */ 859 that a frame which doesn't specify a cursor type gets a box,
857 msdos_set_cursor_shape (f, 0, BOX_CURSOR_WIDTH); 860 which is the default in Emacs. */
861 msdos_set_cursor_shape (f, 0, BOX_CURSOR_WIDTH);
862 }
858} 863}
859 864
860static void 865static void
@@ -1826,6 +1831,8 @@ static int cursor_cleared;
1826static void 1831static void
1827IT_display_cursor (int on) 1832IT_display_cursor (int on)
1828{ 1833{
1834 if (termscript)
1835 fprintf (termscript, "\nCURSOR %s", on ? "ON" : "OFF");
1829 if (on && cursor_cleared) 1836 if (on && cursor_cleared)
1830 { 1837 {
1831 ScreenSetCursor (current_pos_Y, current_pos_X); 1838 ScreenSetCursor (current_pos_Y, current_pos_X);
diff --git a/src/puresize.h b/src/puresize.h
index 8088a374765..054b2bc4c89 100644
--- a/src/puresize.h
+++ b/src/puresize.h
@@ -47,7 +47,7 @@ Boston, MA 02111-1307, USA. */
47 47
48/* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */ 48/* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */
49#ifndef PURESIZE_RATIO 49#ifndef PURESIZE_RATIO
50#if VALBITS + GCTYPEBITS + 1 > 32 50#if BITS_PER_EMACS_INT > 32
51#define PURESIZE_RATIO 9/5 /* Don't surround with `()'. */ 51#define PURESIZE_RATIO 9/5 /* Don't surround with `()'. */
52#else 52#else
53#define PURESIZE_RATIO 1 53#define PURESIZE_RATIO 1
diff --git a/src/xdisp.c b/src/xdisp.c
index 6f88827bf73..a756b99577c 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -16228,7 +16228,10 @@ decode_mode_spec_coding (coding_system, buf, eol_flag)
16228 generated by character C. PRECISION >= 0 means don't return a 16228 generated by character C. PRECISION >= 0 means don't return a
16229 string longer than that value. FIELD_WIDTH > 0 means pad the 16229 string longer than that value. FIELD_WIDTH > 0 means pad the
16230 string returned with spaces to that value. Return 1 in *MULTIBYTE 16230 string returned with spaces to that value. Return 1 in *MULTIBYTE
16231 if the result is multibyte text. */ 16231 if the result is multibyte text.
16232
16233 Note we operate on the current buffer for most purposes,
16234 the exception being w->base_line_pos. */
16232 16235
16233static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------"; 16236static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------";
16234 16237
@@ -16242,7 +16245,7 @@ decode_mode_spec (w, c, field_width, precision, multibyte)
16242 Lisp_Object obj; 16245 Lisp_Object obj;
16243 struct frame *f = XFRAME (WINDOW_FRAME (w)); 16246 struct frame *f = XFRAME (WINDOW_FRAME (w));
16244 char *decode_mode_spec_buf = f->decode_mode_spec_buffer; 16247 char *decode_mode_spec_buf = f->decode_mode_spec_buffer;
16245 struct buffer *b = XBUFFER (w->buffer); 16248 struct buffer *b = current_buffer;
16246 16249
16247 obj = Qnil; 16250 obj = Qnil;
16248 *multibyte = 0; 16251 *multibyte = 0;
@@ -16544,7 +16547,7 @@ decode_mode_spec (w, c, field_width, precision, multibyte)
16544 16547
16545 case 's': 16548 case 's':
16546 /* status of process */ 16549 /* status of process */
16547 obj = Fget_buffer_process (w->buffer); 16550 obj = Fget_buffer_process (Fcurrent_buffer ());
16548 if (NILP (obj)) 16551 if (NILP (obj))
16549 return "no process"; 16552 return "no process";
16550#ifdef subprocesses 16553#ifdef subprocesses
diff --git a/src/xfaces.c b/src/xfaces.c
index 6e8a64e3c41..19369353f5e 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -389,6 +389,10 @@ Lisp_Object Qforeground_color, Qbackground_color;
389Lisp_Object Qface; 389Lisp_Object Qface;
390extern Lisp_Object Qmouse_face; 390extern Lisp_Object Qmouse_face;
391 391
392/* Property for basic faces which other faces cannot inherit. */
393
394Lisp_Object Qface_no_inherit;
395
392/* Error symbol for wrong_type_argument in load_pixmap. */ 396/* Error symbol for wrong_type_argument in load_pixmap. */
393 397
394Lisp_Object Qbitmap_spec_p; 398Lisp_Object Qbitmap_spec_p;
@@ -3944,8 +3948,11 @@ Value is a vector of face attributes. */)
3944 depend on the face, make sure they are all removed. This is done 3948 depend on the face, make sure they are all removed. This is done
3945 by incrementing face_change_count. The next call to 3949 by incrementing face_change_count. The next call to
3946 init_iterator will then free realized faces. */ 3950 init_iterator will then free realized faces. */
3947 ++face_change_count; 3951 if (NILP (Fget (face, Qface_no_inherit)))
3948 ++windows_or_buffers_changed; 3952 {
3953 ++face_change_count;
3954 ++windows_or_buffers_changed;
3955 }
3949 3956
3950 xassert (LFACEP (lface)); 3957 xassert (LFACEP (lface));
3951 check_lface (lface); 3958 check_lface (lface);
@@ -4020,8 +4027,11 @@ The value is TO. */)
4020 depend on the face, make sure they are all removed. This is done 4027 depend on the face, make sure they are all removed. This is done
4021 by incrementing face_change_count. The next call to 4028 by incrementing face_change_count. The next call to
4022 init_iterator will then free realized faces. */ 4029 init_iterator will then free realized faces. */
4023 ++face_change_count; 4030 if (NILP (Fget (to, Qface_no_inherit)))
4024 ++windows_or_buffers_changed; 4031 {
4032 ++face_change_count;
4033 ++windows_or_buffers_changed;
4034 }
4025 4035
4026 return to; 4036 return to;
4027} 4037}
@@ -4385,6 +4395,7 @@ FRAME 0 means change the face on all frames, and change the default
4385 by incrementing face_change_count. The next call to 4395 by incrementing face_change_count. The next call to
4386 init_iterator will then free realized faces. */ 4396 init_iterator will then free realized faces. */
4387 if (!EQ (frame, Qt) 4397 if (!EQ (frame, Qt)
4398 && NILP (Fget (face, Qface_no_inherit))
4388 && (EQ (attr, QCfont) 4399 && (EQ (attr, QCfont)
4389 || EQ (attr, QCfontset) 4400 || EQ (attr, QCfontset)
4390 || NILP (Fequal (old_value, value)))) 4401 || NILP (Fequal (old_value, value))))
@@ -4538,6 +4549,7 @@ update_face_from_frame_parameter (f, param, new_value)
4538 struct frame *f; 4549 struct frame *f;
4539 Lisp_Object param, new_value; 4550 Lisp_Object param, new_value;
4540{ 4551{
4552 Lisp_Object face = Qnil;
4541 Lisp_Object lface; 4553 Lisp_Object lface;
4542 4554
4543 /* If there are no faces yet, give up. This is the case when called 4555 /* If there are no faces yet, give up. This is the case when called
@@ -4546,17 +4558,10 @@ update_face_from_frame_parameter (f, param, new_value)
4546 if (NILP (f->face_alist)) 4558 if (NILP (f->face_alist))
4547 return; 4559 return;
4548 4560
4549 /* Changing a named face means that all realized faces depending on
4550 that face are invalid. Since we cannot tell which realized faces
4551 depend on the face, make sure they are all removed. This is done
4552 by incrementing face_change_count. The next call to
4553 init_iterator will then free realized faces. */
4554 ++face_change_count;
4555 ++windows_or_buffers_changed;
4556
4557 if (EQ (param, Qforeground_color)) 4561 if (EQ (param, Qforeground_color))
4558 { 4562 {
4559 lface = lface_from_face_name (f, Qdefault, 1); 4563 face = Qdefault;
4564 lface = lface_from_face_name (f, face, 1);
4560 LFACE_FOREGROUND (lface) = (STRINGP (new_value) 4565 LFACE_FOREGROUND (lface) = (STRINGP (new_value)
4561 ? new_value : Qunspecified); 4566 ? new_value : Qunspecified);
4562 realize_basic_faces (f); 4567 realize_basic_faces (f);
@@ -4571,29 +4576,45 @@ update_face_from_frame_parameter (f, param, new_value)
4571 XSETFRAME (frame, f); 4576 XSETFRAME (frame, f);
4572 call1 (Qframe_update_face_colors, frame); 4577 call1 (Qframe_update_face_colors, frame);
4573 4578
4574 lface = lface_from_face_name (f, Qdefault, 1); 4579 face = Qdefault;
4580 lface = lface_from_face_name (f, face, 1);
4575 LFACE_BACKGROUND (lface) = (STRINGP (new_value) 4581 LFACE_BACKGROUND (lface) = (STRINGP (new_value)
4576 ? new_value : Qunspecified); 4582 ? new_value : Qunspecified);
4577 realize_basic_faces (f); 4583 realize_basic_faces (f);
4578 } 4584 }
4579 if (EQ (param, Qborder_color)) 4585 else if (EQ (param, Qborder_color))
4580 { 4586 {
4581 lface = lface_from_face_name (f, Qborder, 1); 4587 face = Qborder;
4588 lface = lface_from_face_name (f, face, 1);
4582 LFACE_BACKGROUND (lface) = (STRINGP (new_value) 4589 LFACE_BACKGROUND (lface) = (STRINGP (new_value)
4583 ? new_value : Qunspecified); 4590 ? new_value : Qunspecified);
4584 } 4591 }
4585 else if (EQ (param, Qcursor_color)) 4592 else if (EQ (param, Qcursor_color))
4586 { 4593 {
4587 lface = lface_from_face_name (f, Qcursor, 1); 4594 face = Qcursor;
4595 lface = lface_from_face_name (f, face, 1);
4588 LFACE_BACKGROUND (lface) = (STRINGP (new_value) 4596 LFACE_BACKGROUND (lface) = (STRINGP (new_value)
4589 ? new_value : Qunspecified); 4597 ? new_value : Qunspecified);
4590 } 4598 }
4591 else if (EQ (param, Qmouse_color)) 4599 else if (EQ (param, Qmouse_color))
4592 { 4600 {
4593 lface = lface_from_face_name (f, Qmouse, 1); 4601 face = Qmouse;
4602 lface = lface_from_face_name (f, face, 1);
4594 LFACE_BACKGROUND (lface) = (STRINGP (new_value) 4603 LFACE_BACKGROUND (lface) = (STRINGP (new_value)
4595 ? new_value : Qunspecified); 4604 ? new_value : Qunspecified);
4596 } 4605 }
4606
4607 /* Changing a named face means that all realized faces depending on
4608 that face are invalid. Since we cannot tell which realized faces
4609 depend on the face, make sure they are all removed. This is done
4610 by incrementing face_change_count. The next call to
4611 init_iterator will then free realized faces. */
4612 if (!NILP (face)
4613 && NILP (Fget (face, Qface_no_inherit)))
4614 {
4615 ++face_change_count;
4616 ++windows_or_buffers_changed;
4617 }
4597} 4618}
4598 4619
4599 4620
@@ -7951,6 +7972,8 @@ syms_of_xfaces ()
7951{ 7972{
7952 Qface = intern ("face"); 7973 Qface = intern ("face");
7953 staticpro (&Qface); 7974 staticpro (&Qface);
7975 Qface_no_inherit = intern ("face-no-inherit");
7976 staticpro (&Qface_no_inherit);
7954 Qbitmap_spec_p = intern ("bitmap-spec-p"); 7977 Qbitmap_spec_p = intern ("bitmap-spec-p");
7955 staticpro (&Qbitmap_spec_p); 7978 staticpro (&Qbitmap_spec_p);
7956 Qframe_update_face_colors = intern ("frame-update-face-colors"); 7979 Qframe_update_face_colors = intern ("frame-update-face-colors");
diff --git a/src/xselect.c b/src/xselect.c
index 5de1beb9ac4..1e3efd2bf54 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -744,7 +744,15 @@ x_reply_selection_request (event, format, data, size, type)
744 refering to the deleted window, and we'll get a BadWindow error 744 refering to the deleted window, and we'll get a BadWindow error
745 in XTread_socket when processing the events. I don't have 745 in XTread_socket when processing the events. I don't have
746 an idea how to fix that. gerd, 2001-01-98. */ 746 an idea how to fix that. gerd, 2001-01-98. */
747 XFlush (display); 747 /* 2004-09-10: XSync and UNBLOCK so that possible protocol errors are
748 delivered before uncatch errors. */
749 XSync (display, False);
750 UNBLOCK_INPUT;
751
752 /* GTK queues events in addition to the queue in Xlib. So we
753 UNBLOCK to enter the event loop and get possible errors delivered,
754 and then BLOCK again because x_uncatch_errors requires it. */
755 BLOCK_INPUT;
748 x_uncatch_errors (display, count); 756 x_uncatch_errors (display, count);
749 UNBLOCK_INPUT; 757 UNBLOCK_INPUT;
750} 758}