aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2004-03-07 15:30:22 +0000
committerKaroly Lorentey2004-03-07 15:30:22 +0000
commit54e81dc64794f315efdf418518a5e00f419cbcbd (patch)
tree4c2dc33f0c1e697b810298ba5e9972341c0d4240
parent4388f1016b80bd33a75481b28352ae6c456e386a (diff)
parentee96c8385cf436bf308665e5d6c8fb16c761e8e1 (diff)
downloademacs-54e81dc64794f315efdf418518a5e00f419cbcbd.tar.gz
emacs-54e81dc64794f315efdf418518a5e00f419cbcbd.zip
Merged in changes from CVS HEAD
Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-126 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-127 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-128 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-129 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-130 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-131 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-132 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-133 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-134 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-135 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-136 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-137 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-112
-rw-r--r--ChangeLog11
-rw-r--r--Makefile.in7
-rw-r--r--etc/NEWS17
-rw-r--r--etc/TUTORIAL.fr2
-rw-r--r--leim/ChangeLog17
-rw-r--r--leim/Makefile.in13
-rw-r--r--leim/makefile.nt8
-rw-r--r--leim/makefile.w32-in8
-rw-r--r--lib-src/ChangeLog20
-rw-r--r--lib-src/makefile.w32-in2
-rw-r--r--lisp/ChangeLog213
-rw-r--r--lisp/Makefile.in22
-rw-r--r--lisp/allout.el8
-rw-r--r--lisp/desktop.el47
-rw-r--r--lisp/emulation/tpu-edt.el2
-rw-r--r--lisp/eshell/em-smart.el2
-rw-r--r--lisp/files.el7
-rw-r--r--lisp/font-lock.el20
-rw-r--r--lisp/gdb-ui.el43
-rw-r--r--lisp/gnus/ChangeLog11
-rw-r--r--lisp/gnus/message.el7
-rw-r--r--lisp/help-at-pt.el2
-rw-r--r--lisp/hexl.el17
-rw-r--r--lisp/isearch.el16
-rw-r--r--lisp/mail/mail-utils.el25
-rw-r--r--lisp/mail/rmail.el9
-rw-r--r--lisp/mail/sendmail.el5
-rw-r--r--lisp/mouse-sel.el17
-rw-r--r--lisp/net/browse-url.el16
-rw-r--r--lisp/newcomment.el40
-rw-r--r--lisp/pcvs-info.el7
-rw-r--r--lisp/printing.el34
-rw-r--r--lisp/progmodes/ebnf-iso.el5
-rw-r--r--lisp/progmodes/ebnf-otz.el42
-rw-r--r--lisp/progmodes/ebnf-yac.el4
-rw-r--r--lisp/progmodes/sh-script.el4
-rw-r--r--lisp/ps-print.el54
-rw-r--r--lisp/simple.el23
-rw-r--r--lisp/sort.el23
-rw-r--r--lisp/startup.el4
-rw-r--r--lisp/textmodes/fill.el10
-rw-r--r--lisp/xml.el7
-rw-r--r--lispref/ChangeLog9
-rw-r--r--lispref/abbrevs.texi12
-rw-r--r--lispref/hash.texi2
-rw-r--r--lispref/lists.texi8
-rw-r--r--lispref/markers.texi7
-rw-r--r--lispref/processes.texi20
-rw-r--r--man/ChangeLog14
-rw-r--r--man/buffers.texi39
-rw-r--r--man/mule.texi22
-rw-r--r--man/programs.texi3
-rw-r--r--man/search.texi8
-rw-r--r--src/ChangeLog241
-rw-r--r--src/buffer.c5
-rw-r--r--src/doc.c2
-rw-r--r--src/editfns.c71
-rw-r--r--src/fringe.c25
-rw-r--r--src/indent.c12
-rw-r--r--src/makefile.w32-in15
-rw-r--r--src/s/sol2-6.h5
-rw-r--r--src/w32term.c2
-rw-r--r--src/window.c8
-rw-r--r--src/window.h3
-rw-r--r--src/xdisp.c245
-rw-r--r--src/xfns.c13
66 files changed, 1123 insertions, 519 deletions
diff --git a/ChangeLog b/ChangeLog
index e29f94f6963..3a286305035 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,12 +1,15 @@
12004-03-02 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * Makefile.in (maintainer-clean): Clean in the lisp dir as well.
4 (bootstrap): Use the new boostrap-prepare target in lisp.
5
12004-02-18 Kim F. Storm <storm@cua.dk> 62004-02-18 Kim F. Storm <storm@cua.dk>
2 7
3 * INSTALL.CVS: Add info about ssh/cvs related problems and 8 * INSTALL.CVS: Add info about ssh/cvs related problems and work-around.
4 work-around.
5 9
62004-02-16 Eli Zaretskii <eliz@elta.co.il> 102004-02-16 Eli Zaretskii <eliz@elta.co.il>
7 11
8 * make-dist: Don't link index.*perm and permute-index into 12 * make-dist: Don't link index.*perm and permute-index into tempdir.
9 tempdir.
10 13
112004-02-14 Jonathan Yavner <jyavner@member.fsf.org> 142004-02-14 Jonathan Yavner <jyavner@member.fsf.org>
12 15
diff --git a/Makefile.in b/Makefile.in
index cf572f25812..d7ed0676b0c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -2,8 +2,8 @@
2# DIST: make most of the changes to this file you might want, so try 2# DIST: make most of the changes to this file you might want, so try
3# DIST: that first. 3# DIST: that first.
4 4
5# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 5# Copyright (C) 1992,93,94,95,96,97,98,1999,2000,01,02,03,2004
6# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. 6# Free Software Foundation, Inc.
7 7
8# This file is part of GNU Emacs. 8# This file is part of GNU Emacs.
9 9
@@ -634,6 +634,7 @@ maintainer-clean: FRC
634 -(cd lispref && $(MAKE) $(MFLAGS) maintainer-clean) 634 -(cd lispref && $(MAKE) $(MFLAGS) maintainer-clean)
635 -(cd lispintro && $(MAKE) $(MFLAGS) maintainer-clean) 635 -(cd lispintro && $(MAKE) $(MFLAGS) maintainer-clean)
636 (cd leim; $(MAKE) $(MFLAGS) maintainer-clean) 636 (cd leim; $(MAKE) $(MFLAGS) maintainer-clean)
637 (cd lisp; $(MAKE) $(MFLAGS) maintainer-clean)
637 ${top_distclean} 638 ${top_distclean}
638 639
639### This doesn't actually appear in the coding standards, but Karl 640### This doesn't actually appear in the coding standards, but Karl
@@ -734,7 +735,7 @@ maybe_bootstrap:
734 fi 735 fi
735 736
736bootstrap: bootstrap-clean-before info FRC 737bootstrap: bootstrap-clean-before info FRC
737 (cd lisp; $(MAKE) $(MFLAGS) bootstrap-clean) 738 (cd lisp; $(MAKE) $(MFLAGS) bootstrap-prepare)
738 (cd src; $(MAKE) $(MFLAGS) bootstrap) 739 (cd src; $(MAKE) $(MFLAGS) bootstrap)
739 (cd lisp; $(MAKE) $(MFLAGS) bootstrap EMACS=../src/bootstrap-emacs${EXEEXT}) 740 (cd lisp; $(MAKE) $(MFLAGS) bootstrap EMACS=../src/bootstrap-emacs${EXEEXT})
740 (cd src; $(MAKE) $(MFLAGS) mostlyclean) 741 (cd src; $(MAKE) $(MFLAGS) mostlyclean)
diff --git a/etc/NEWS b/etc/NEWS
index 16b55c0be2a..5643bc90b35 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1826,6 +1826,11 @@ a match if part of it has a read-only property.
1826configuration files. 1826configuration files.
1827 1827
1828* Lisp Changes in Emacs 21.4 1828* Lisp Changes in Emacs 21.4
1829
1830** New macro with-local-quit temporarily sets inhibit-quit to nil for use
1831around potentially blocking or long-running code in timers
1832and post-command-hooks.
1833
1829+++ 1834+++
1830** New face attribute `min-colors' can be used to tailor the face color 1835** New face attribute `min-colors' can be used to tailor the face color
1831to the number of colors supported by a display, and define the 1836to the number of colors supported by a display, and define the
@@ -1863,6 +1868,18 @@ for displaying the bitmap.
1863identifying the current fringe bitmaps in the display line at a given 1868identifying the current fringe bitmaps in the display line at a given
1864buffer position. A nil value means no bitmap. 1869buffer position. A nil value means no bitmap.
1865 1870
1871** Multiple overlay arrows can now be defined and managed via the new
1872variable `overlay-arrow-variable-list'. It contains a list of
1873varibles which contain overlay arrow position markers, including
1874the original `overlay-arrow-position' variable.
1875
1876Each variable on this list may have individual `overlay-arrow-string'
1877and `overlay-arrow-bitmap' properties that specify an overlay arrow
1878string (for non-window terminals) or fringe bitmap (for window
1879systems) to display at the corresponding overlay arrow position.
1880If either property is not set, the default `overlay-arrow-string' or
1881'overlay-arrow-fringe-bitmap' will be used.
1882
1866+++ 1883+++
1867** New function `line-number-at-pos' returns line number of current 1884** New function `line-number-at-pos' returns line number of current
1868line in current buffer, or if optional buffer position is given, line 1885line in current buffer, or if optional buffer position is given, line
diff --git a/etc/TUTORIAL.fr b/etc/TUTORIAL.fr
index d678f0d44ce..953e9edb649 100644
--- a/etc/TUTORIAL.fr
+++ b/etc/TUTORIAL.fr
@@ -638,7 +638,7 @@ fichiers mais la liste obtenue par C-x C-b. Le tampon "*Messages*" ne
638correspond pas non plus à un fichier ; il contient la liste des 638correspond pas non plus à un fichier ; il contient la liste des
639messages apparus dans la ligne d'état pendant votre session Emacs. 639messages apparus dans la ligne d'état pendant votre session Emacs.
640 640
641>> Faites C-x C-b *Messages* <Entrée> pour visualiser le tampon des 641>> Faites C-x b *Messages* <Entrée> pour visualiser le tampon des
642 messages. 642 messages.
643 Puis, faites C-x b TUTORIAL <Entrée> pour revenir à ce didacticiel. 643 Puis, faites C-x b TUTORIAL <Entrée> pour revenir à ce didacticiel.
644 644
diff --git a/leim/ChangeLog b/leim/ChangeLog
index 1b048bcddd7..2f44746ad7d 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,20 @@
12004-02-28 Kenichi Handa <handa@m17n.org>
2
3 * Makefile.in (all): Depends on ${WORLD} instead of ${TIT} and
4 ${MISC-DIC}.
5 (clean, mostlyclean): Don't delete *.elc distributed with tarball.
6 (maintainer-clean): Delete files that are not in CVS repository.
7
8 * makefile.nt (all): Depends on $(WORLD) instead of $(TIT) and
9 $(MISC-DIC).
10 (clean, mostlyclean): Don't delete *.elc distributed with tarball.
11 (maintainer-clean): Delete files that are not in CVS repository.
12
13 * makefile.w32-in (all): Depends on $(WORLD) instead of $(TIT) and
14 $(MISC-DIC).
15 (clean, mostlyclean): Don't delete *.elc distributed with tarball.
16 (maintainer-clean): Delete files that are not in CVS repository.
17
12004-02-16 J,bi(Br,bt(Bme Marant <jmarant@nerim.net> (tiny change) 182004-02-16 J,bi(Br,bt(Bme Marant <jmarant@nerim.net> (tiny change)
2 19
3 * Makefile.in (distclean maintainer-clean): Depend on clean. 20 * Makefile.in (distclean maintainer-clean): Depend on clean.
diff --git a/leim/Makefile.in b/leim/Makefile.in
index af20c278d3a..1ef0a2f3e93 100644
--- a/leim/Makefile.in
+++ b/leim/Makefile.in
@@ -147,7 +147,7 @@ NON-TIT=${CHINESE-NON-TIT} ${JAPANESE} ${KOREAN} ${EUROPEAN} ${MISC}
147.el.elc: 147.el.elc:
148 ${RUN-EMACS} -f batch-byte-compile $< 148 ${RUN-EMACS} -f batch-byte-compile $<
149 149
150all: ${BUILT-EMACS} ${SUBDIRS} ${TIT} ${MISC-DIC} leim-list.el 150all: ${BUILT-EMACS} ${SUBDIRS} ${WORLD} leim-list.el
151 151
152# To ensure that we can run Emacs. This target is ignored (never 152# To ensure that we can run Emacs. This target is ignored (never
153# being hit) if a user changes default value of EMACS. 153# being hit) if a user changes default value of EMACS.
@@ -223,14 +223,17 @@ install: all
223 -chmod -R a+r ${INSTALLDIR} 223 -chmod -R a+r ${INSTALLDIR}
224 224
225clean mostlyclean: 225clean mostlyclean:
226 rm -f ${TIT} ${NON-TIT} ${WORLD} ${TIT:.elc=.el} \ 226 rm -f ${TIT} ${TIT:.elc=.el} ${MISC-DIC} ${MISC-DIC:.elc=.el} \
227 ${MISC-DIC} ${MISC-DIC:.elc=.el} leim-list.el 227 leim-list.el
228 228
229distclean maintainer-clean: clean 229distclean: clean
230 if test -f stamp-subdir; then rm -rf ${SUBDIRS} stamp-subdir; fi 230 if test -f stamp-subdir; then rm -rf ${SUBDIRS} stamp-subdir; fi
231 rm -f Makefile 231 rm -f Makefile
232 232
233extraclean: distclean 233maintainer-clean: distclean
234 rm -f ${WORLD}
235
236extraclean: maintainer-clean
234 -rm -f *~ \#* m/?*~ s/?*~ 237 -rm -f *~ \#* m/?*~ s/?*~
235 238
236# arch-tag: f666a939-8145-4d64-a6a6-cc1f61bd32ca 239# arch-tag: f666a939-8145-4d64-a6a6-cc1f61bd32ca
diff --git a/leim/makefile.nt b/leim/makefile.nt
index 37939869f0c..41dc8e2030a 100644
--- a/leim/makefile.nt
+++ b/leim/makefile.nt
@@ -132,7 +132,7 @@ WORLD=$(ASIA) $(EUROPEAN) $(MISC)
132TIT=$(CHINESE_TIT) 132TIT=$(CHINESE_TIT)
133NON_TIT=$(CHINESE_NON_TIT) $(JAPANESE) $(KOREAN) $(EUROPEAN) $(MISC) 133NON_TIT=$(CHINESE_NON_TIT) $(JAPANESE) $(KOREAN) $(EUROPEAN) $(MISC)
134 134
135all: $(BUILT_EMACS) $(SUBDIRS) $(TIT) $(MISC_DIC) leim-list.el 135all: $(BUILT_EMACS) $(SUBDIRS) $(WORLD) leim-list.el
136 136
137# To ensure that we can run Emacs. This target is ignored (never 137# To ensure that we can run Emacs. This target is ignored (never
138# being hit) if a user changes default value of EMACS. 138# being hit) if a user changes default value of EMACS.
@@ -196,11 +196,13 @@ clean mostlyclean:
196 for %%f in ($(TIT_EL:/=\)) do $(DEL) %%f 196 for %%f in ($(TIT_EL:/=\)) do $(DEL) %%f
197 for %%f in ($(MISC_DIC:/=\)) do $(DEL) %%f 197 for %%f in ($(MISC_DIC:/=\)) do $(DEL) %%f
198 for %%f in ($(MISC_DIC_EL:/=\)) do $(DEL) %%f 198 for %%f in ($(MISC_DIC_EL:/=\)) do $(DEL) %%f
199 for %%f in ($(WORLD:/=\)) do $(DEL) %%f
200 $(DEL) leim-list.el 199 $(DEL) leim-list.el
201 200
202distclean maintainer-clean: 201distclean: clean
203 if exist stamp-subdir $(DELTREE) $(SUBDIRS) 202 if exist stamp-subdir $(DELTREE) $(SUBDIRS)
204 $(DEL) stamp-subdir 203 $(DEL) stamp-subdir
205 204
205maintainer-clean: distclean
206 for %%f in ($(WORLD:/=\)) do $(DEL) %%f
207
206# arch-tag: cded53b4-4803-496b-8c05-7daff80e5b3b 208# arch-tag: cded53b4-4803-496b-8c05-7daff80e5b3b
diff --git a/leim/makefile.w32-in b/leim/makefile.w32-in
index 5d273377f12..f19aceb4f82 100644
--- a/leim/makefile.w32-in
+++ b/leim/makefile.w32-in
@@ -142,7 +142,7 @@ NON_TIT=$(CHINESE_NON_TIT) $(JAPANESE) $(KOREAN) $(EUROPEAN) $(MISC)
142.el.elc: 142.el.elc:
143 $(RUN_EMACS) -f batch-byte-compile $< 143 $(RUN_EMACS) -f batch-byte-compile $<
144 144
145all: $(BUILT_EMACS) $(SUBDIRS) $(TIT) $(MISC_DIC) leim-list.el 145all: $(BUILT_EMACS) $(SUBDIRS) $(WORLD) leim-list.el
146 146
147# To ensure that we can run Emacs. This target is ignored (never 147# To ensure that we can run Emacs. This target is ignored (never
148# being hit) if a user changes default value of EMACS. 148# being hit) if a user changes default value of EMACS.
@@ -192,14 +192,16 @@ install: all
192 192
193clean mostlyclean: 193clean mostlyclean:
194 - $(FOREACH) $(TIT) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR) 194 - $(FOREACH) $(TIT) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR)
195 - $(FOREACH) $(WORLD) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR)
196 - $(FOREACH) $(MISC_DIC) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR) 195 - $(FOREACH) $(MISC_DIC) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR)
197 - $(FOREACH) $(TIT:.elc=.el) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR) 196 - $(FOREACH) $(TIT:.elc=.el) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR)
198 - $(FOREACH) $(MISC_DIC:.elc=.el) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR) 197 - $(FOREACH) $(MISC_DIC:.elc=.el) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR)
199 - $(DEL) leim-list.el 198 - $(DEL) leim-list.el
200 199
201distclean maintainer-clean: 200distclean clean:
202 if exist stamp-subdir $(DELTREE) $(SUBDIRS) 201 if exist stamp-subdir $(DELTREE) $(SUBDIRS)
203 - $(DEL) stamp-subdir 202 - $(DEL) stamp-subdir
204 203
204maintainer-clean: distclean
205 - $(FOREACH) $(WORLD) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR)
206
205# arch-tag: 08250c45-fa9c-4f39-a175-a0c5c36dd67b 207# arch-tag: 08250c45-fa9c-4f39-a175-a0c5c36dd67b
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 5758a6d0b89..9876b0b041a 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,7 @@
12004-03-01 Juanma Barranquero <lektu@terra.es>
2
3 * makefile.w32-in (obj): Add fringe.c.
4
12004-02-14 Paul Eggert <eggert@twinsun.com> 52004-02-14 Paul Eggert <eggert@twinsun.com>
2 6
3 * rcs2log: Work correctly if CVSROOT specifies :fork: or 7 * rcs2log: Work correctly if CVSROOT specifies :fork: or
@@ -9,7 +13,7 @@
9 along with some related bugs I discovered by inspecting how 13 along with some related bugs I discovered by inspecting how
10 CVS itself parses $CVSROOT. 14 CVS itself parses $CVSROOT.
11 15
122004-02-04 J,bi(Br,bt(Bme Marant <jmarant@nerim.net> (tiny) 162004-02-04 J,bi(Br,bt(Bme Marant <jmarant@nerim.net> (tiny change)
13 17
14 * emacsclient.c (decode_options): Fix handling of alternate editor. 18 * emacsclient.c (decode_options): Fix handling of alternate editor.
15 19
@@ -1638,7 +1642,7 @@
1638 Now used as element of a linked list. 1642 Now used as element of a linked list.
1639 (patterns, num_patterns): Global variables deleted. 1643 (patterns, num_patterns): Global variables deleted.
1640 (p_head): New global variable. 1644 (p_head): New global variable.
1641 (forced_lang): New global variable (replaces lang_func). 1645 (forced_lang): New global variable (replaces lang_func).
1642 (get_language_from_name, get_language_from_interpreter) 1646 (get_language_from_name, get_language_from_interpreter)
1643 (get_language_from_suffix): Semantics changed. All callers changed. 1647 (get_language_from_suffix): Semantics changed. All callers changed.
1644 (last_node): New global variable. 1648 (last_node): New global variable.
@@ -2902,7 +2906,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
2902 2906
2903 * etags.c (lowcase): Use the standard tolower function. 2907 * etags.c (lowcase): Use the standard tolower function.
2904 (substitute): Remove some wrong and some useless code related with 2908 (substitute): Remove some wrong and some useless code related with
2905 escape `\` character in regexp replacement string. 2909 escape '\' character in regexp replacement string.
2906 (TEX_defenv): Added part, appendix, entry, index. Removed typeout. 2910 (TEX_defenv): Added part, appendix, entry, index. Removed typeout.
2907 (lang_suffixes): New suffixes: .hpp for C++; .f90 for Fortran; 2911 (lang_suffixes): New suffixes: .hpp for C++; .f90 for Fortran;
2908 .bib, .ltx, .TeX for TeX (.bbl, .dtx removed); .ml for Lisp; 2912 .bib, .ltx, .TeX for TeX (.bbl, .dtx removed); .ml for Lisp;
@@ -3923,7 +3927,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
3923 3927
39241994-02-17 Francesco Potorti` (pot@cnuce.cnr.it) 39281994-02-17 Francesco Potorti` (pot@cnuce.cnr.it)
3925 3929
3926 * etags.c (--absolute-pathnames): option removed. 3930 * etags.c (--absolute-pathnames): Option removed.
3927 3931
39281994-02-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) 39321994-02-16 Richard Stallman (rms@mole.gnu.ai.mit.edu)
3929 3933
@@ -4384,8 +4388,8 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
4384 4388
43851993-05-30 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) 43891993-05-30 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
4386 4390
4387 * Makefile.in: (${archlibdir}): Use `(cd foo && pwd)` instead of 4391 * Makefile.in: (${archlibdir}): Use `(cd foo && pwd)' instead of
4388 `(cd foo ; pwd)` to get the canonical name of a directory; cd 4392 `(cd foo ; pwd)' to get the canonical name of a directory; cd
4389 might fail, and have pwd print out the current directory. 4393 might fail, and have pwd print out the current directory.
4390 4394
4391 * movemail.c [MAIL_USE_POP] (main): Don't use non-portable 4395 * movemail.c [MAIL_USE_POP] (main): Don't use non-portable
@@ -5070,7 +5074,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
5070 * etags.c (C_entries): Process token before handling end of line. 5074 * etags.c (C_entries): Process token before handling end of line.
5071 When inner loops reach end of line, just back up. 5075 When inner loops reach end of line, just back up.
5072 Let the real end of line processing happen in just one place. 5076 Let the real end of line processing happen in just one place.
5073 (consider_token): Likewise. 5077 (consider_token): Likewise.
5074 5078
50751991-04-11 Jim Blandy (jimb@geech.gnu.ai.mit.edu) 50791991-04-11 Jim Blandy (jimb@geech.gnu.ai.mit.edu)
5076 5080
@@ -5183,7 +5187,7 @@ Tue Jul 1 01:09:07 1997 Geoff Voelker <voelker@cs.washington.edu>
5183 5187
51841990-03-14 Joseph Arceneaux (jla@churchy.ai.mit.edu) 51881990-03-14 Joseph Arceneaux (jla@churchy.ai.mit.edu)
5185 5189
5186 * etags.c (getit): Recognize '$' as beginning identifiers. 5190 * etags.c (getit): Recognize '$' as beginning identifiers.
5187 5191
51881990-02-22 David Lawrence (tale@pogo.ai.mit.edu) 51921990-02-22 David Lawrence (tale@pogo.ai.mit.edu)
5189 5193
diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in
index 6f92bd76ee8..20cf4727362 100644
--- a/lib-src/makefile.w32-in
+++ b/lib-src/makefile.w32-in
@@ -126,7 +126,7 @@ $(BLD)/ctags.$(O): ctags.c
126# 126#
127# From ..\src\makefile.nt. 127# From ..\src\makefile.nt.
128# 128#
129obj = abbrev.c alloc.c alloca.c buffer.c bytecode.c callint.c callproc.c casefiddle.c casetab.c category.c ccl.c charset.c cm.c cmds.c coding.c data.c dired.c dispnew.c doc.c doprnt.c editfns.c emacs.c eval.c fileio.c filelock.c filemode.c floatfns.c fns.c fontset.c frame.c gmalloc.c indent.c insdel.c intervals.c keyboard.c keymap.c lastfile.c lread.c macros.c marker.c minibuf.c print.c process.c ralloc.c regex.c region-cache.c scroll.c search.c sound.c strftime.c syntax.c sysdep.c term.c termcap.c textprop.c tparam.c undo.c unexw32.c vm-limit.c w32.c w32console.c w32fns.c w32heap.c w32inevt.c w32menu.c w32proc.c w32reg.c w32select.c w32term.c w32xfns.c window.c xdisp.c xfaces.c xfaces.c 129obj = abbrev.c alloc.c alloca.c buffer.c bytecode.c callint.c callproc.c casefiddle.c casetab.c category.c ccl.c charset.c cm.c cmds.c coding.c data.c dired.c dispnew.c doc.c doprnt.c editfns.c emacs.c eval.c fileio.c filelock.c filemode.c floatfns.c fns.c fontset.c frame.c fringe.c gmalloc.c indent.c insdel.c intervals.c keyboard.c keymap.c lastfile.c lread.c macros.c marker.c minibuf.c print.c process.c ralloc.c regex.c region-cache.c scroll.c search.c sound.c strftime.c syntax.c sysdep.c term.c termcap.c textprop.c tparam.c undo.c unexw32.c vm-limit.c w32.c w32console.c w32fns.c w32heap.c w32inevt.c w32menu.c w32proc.c w32reg.c w32select.c w32term.c w32xfns.c window.c xdisp.c xfaces.c xfaces.c
130# 130#
131# These are the lisp files that are loaded up in loadup.el 131# These are the lisp files that are loaded up in loadup.el
132# 132#
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index b945703cb57..63081ea5261 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,18 +1,140 @@
12004-03-05 Nick Roberts <nick@nick.uklinux.net>
2
3 * gdb-ui.el (gdb-assembler-mode): Create a second overlay arrow
4 for the assembler buffer.
5 (gdb-assembler-custom): Position the overlay arrow.
6 (gdb-put-arrow, gdb-remove-arrow): Delete functions.
7
82004-03-04 Stefan Monnier <monnier@iro.umontreal.ca>
9
10 * mail/sendmail.el (mail-mode): Set comment-start-skip.
11
12 * newcomment.el (uncomment-region): Allow non-terminated comment.
13 (comment-normalize-vars): Check the user-specified comstart marker.
14
152004-03-04 Jesper Harder <harder@ifa.au.dk>
16
17 * sort.el (sort-columns): Don't use external 'sort' on ms-windows.
18 Otherwise, do use it if the region only contains font-lock text
19 properties.
20
212004-03-04 Masatake YAMATO <jet@gyve.org>
22
23 * hexl.el (hexl-mode): Set `hexl-print-current-point-info'
24 as the callback function for eldoc.
25 (hexl-print-current-point-info): New function.
26 (hexl-current-address): Print the address in both decimal
27 and hexadecimal format.
28
292004-03-04 Richard M. Stallman <rms@gnu.org>
30
31 * mail/rmail.el (rmail-convert-to-babyl-format):
32 Specify t for UNIBYTE when calling mail-unquote-printable-region.
33
34 * mail/mail-utils.el (mail-unquote-printable-region):
35 New arg UNIBYTE.
36
37 * startup.el (command-switch-alist): Doc fix.
38
39 * simple.el (undo): Temporarily set this-command to `undo-start',
40 then set it to `undo' once undo-start returns without error.
41
42 * simple.el (minibuffer-history-sexp-flag): Doc fix.
43
44 * simple.el (kill-line): Don't disregard trailing whitespace
45 in eol condition, if show-trailing-whitespace is set.
46
47 * mouse-sel.el (mouse-sel-has-been-enabled): New var.
48 (mouse-sel-mode): When enabling, set mouse-sel-has-been-enabled.
49 When disabling, restore old values only if mouse-sel-has-been-enabled.
50
51 * isearch.el (isearch-*-char): New arg WANT-BACKSLASH.
52 (isearch-{-char): New function.
53 (isearch-mode-map): Bind { to isearch-{-char.
54
55 * font-lock.el (lisp-font-lock-keywords-2):
56 Turn off the CL with-... and do-... general patterns.
57 Instead, recognize several specific with... and do... constructs.
58
59 * files.el (switch-to-buffer-other-window):
60 Bind same-window-buffer-names and same-window-regexps to nil.
61 (switch-to-buffer-other-frame): Likewise.
62
632004-03-03 Stefan Monnier <monnier@iro.umontreal.ca>
64
65 * textmodes/fill.el (fill-comment-paragraph): Be more careful when
66 recognizing leading comment on code line.
67
682004-03-02 Stefan Monnier <monnier@iro.umontreal.ca>
69
70 * textmodes/fill.el (fill-paragraph): Don't check comment-start-skip,
71 only comment-start (in case the mode hasn't set it).
72
73 * Makefile.in (AUTOGENEL): New var.
74 (bootstrap-prepare): Rename from bootstrap-clean.
75 Don't remove elc files.
76 (maintainer-clean): New target.
77
78 * xml.el (xml-get-attribute-or-nil): Simplify.
79
802004-03-02 Juri Linkov <juri@jurta.org>
81
82 * net/browse-url.el (browse-url-netscape, browse-url-mozilla)
83 (browse-url-galeon, browse-url-epiphany): Encode dollar signs in
84 URL to prevent their substitution with the environment variable
85 values by browsers.
86
872004-03-03 Vinicius Jose Latorre <viniciusjl@ig.com.br>
88
89 * ps-print.el: Doc fix.
90 (ps-print-version): New version number (6.6.3).
91 (ps-right-header, ps-right-footer, ps-left-header, ps-left-footer):
92 Docstring fix.
93 (ps-kill-emacs-check): Check if ps-print temporary buffer is killed
94 before printing.
95 (ps-time-stamp-yyyy-mm-dd): New fun.
96 (ps-time-stamp-iso8601): Alias for ps-time-stamp-yyyy-mm-dd.
97
982004-03-02 Kim F. Storm <storm@cua.dk>
99
100 * gdb-ui.el (gdb-mouse-toggle-breakpoint): Remove debug message.
101
1022004-03-01 Juanma Barranquero <lektu@terra.es>
103
104 * allout.el (allout-rebullet-heading): Fix typo in docstring.
105
106 * desktop.el (desktop-file-version)
107 (desktop-after-read-hook): Fix typos.
108 (desktop-clear-preserve-buffers): Remove redundant info in
109 docstring already shown by the obsolescence message.
110 (desktop-truncate, desktop-internal-v2s)
111 (desktop-value-to-string): Change argument name to match docstring.
112
113 * emulation/tpu-edt.el (tpu-set-mark): Fix typo in docstring.
114
115 * eshell/em-smart.el (eshell-smart-maybe-jump-to-end): Fix typo in
116 docstring.
117
1182004-02-29 Vinicius Jose Latorre <viniciusjl@ig.com.br>
119
120 * printing.el: Replace "As Is..." in PostScript file print/preview by
121 "No Preprocessing...". Suggested by Colin Marquardt
122 <marquardt@zmd.de>.
123 (pr-insert-section-4): Adjust buffer interface.
124
12004-02-29 Kai Grossjohann <kai.grossjohann@gmx.net> 1252004-02-29 Kai Grossjohann <kai.grossjohann@gmx.net>
2 126
3 Version 2.0.39 of Tramp released. 127 Version 2.0.39 of Tramp released.
4 128
5 * net/tramp.el (tramp-handle-file-local-copy) 129 * net/tramp.el (tramp-handle-file-local-copy)
6 (tramp-handle-write-region, tramp-open-connection-rsh): Variable 130 (tramp-handle-write-region, tramp-open-connection-rsh):
7 name typo. Small change. From Patrick Tullmann 131 Variable name typo. Small change. From Patrick Tullmann
8 <tullmann@flux.utah.edu>. 132 <tullmann@flux.utah.edu>.
9 (tramp-process-connection-type): New variable. 133 (tramp-process-connection-type): New variable.
10 (tramp-maybe-open-connection): Use it. 134 (tramp-maybe-open-connection): Use it.
11 (tramp-do-copy-or-rename-via-buffer): Handle KEEP-DATE arg, if 135 (tramp-do-copy-or-rename-via-buffer): Handle KEEP-DATE arg if possible.
12 possible.
13 (tramp-touch): Set last-modified time of a remote file. 136 (tramp-touch): Set last-modified time of a remote file.
14 (tramp-handle-write-region): Say which function is used when 137 (tramp-handle-write-region): Say which function is used when encoding.
15 encoding.
16 138
172004-02-29 Michael Albinus <Michael.Albinus@alcatel.de> 1392004-02-29 Michael Albinus <Michael.Albinus@alcatel.de>
18 140
@@ -28,7 +150,7 @@
28 output. If it was received chunkwise, there have been problems. 150 output. If it was received chunkwise, there have been problems.
29 Remove the "prompt not found" error message; it is obvious. 151 Remove the "prompt not found" error message; it is obvious.
30 Simplify algorithm. 152 Simplify algorithm.
31 (tramp-smb-process-running): Removed. Since we acknowledge the 153 (tramp-smb-process-running): Remove. Since we acknowledge the
32 virtual prompt for shares, there's no need for distinction of 154 virtual prompt for shares, there's no need for distinction of
33 reading shares (process ends afterwards) and interactive mode of 155 reading shares (process ends afterwards) and interactive mode of
34 smblient. 156 smblient.
@@ -38,23 +160,21 @@
38 (tramp-smb-maybe-open-connection): Set `process-connection-type' 160 (tramp-smb-maybe-open-connection): Set `process-connection-type'
39 to 'pty. Suggested by Piet van Oostrum <piet@cs.uu.nl>. 161 to 'pty. Suggested by Piet van Oostrum <piet@cs.uu.nl>.
40 (top-level): Setting default value in `tramp-default-method-alist' 162 (top-level): Setting default value in `tramp-default-method-alist'
41 corrected. Order of USER and HOST have been wrong. Nobody 163 corrected. Order of USER and HOST have been wrong.
42 claimed for months ... 164 Nobody complaimed for months ...
43 (tramp-smb-maybe-open-connection): Use 165 (tramp-smb-maybe-open-connection): Use `tramp-process-connection-type'.
44 `tramp-process-connection-type'. 166 (tramp-smb-open-connection): Clear password cache if login has failed.
45 (tramp-smb-open-connection): Clear password cache if login has 167
46 failed. 168 * net/tramp.el (tramp-completion-mode) Don't check for 'xemacs' but
47
48 * net/tramp.el (tramp-completion-mode) Don't check for 'xemacs but
49 `tramp-unified-filenames'. 169 `tramp-unified-filenames'.
50 (tramp-completion-mode): Make test for XEmacs explicitely. 170 (tramp-completion-mode): Make test for XEmacs explicitely.
51 `event-to-character' can exists in Emacs packages too. Reported 171 `event-to-character' can exists in Emacs packages too.
52 by Matt Swift <swift@alum.mit.edu>. 172 Reported by Matt Swift <swift@alum.mit.edu>.
53 (tramp-buffer-name): Buffer name must contain the user if exists. 173 (tramp-buffer-name): Buffer name must contain the user if exists.
54 Reported by Adrian Phillips <a.phillips@met.no>. 174 Reported by Adrian Phillips <a.phillips@met.no>.
55 (tramp-do-copy-or-rename-file): Handle out-of-band methods. Call 175 (tramp-do-copy-or-rename-file): Handle out-of-band methods.
56 `tramp-do-copy-or-rename-file-out-of-band' this case. 176 Call `tramp-do-copy-or-rename-file-out-of-band' this case.
57 (tramp-do-copy-or-rename-file-out-of-band): Renamed from 177 (tramp-do-copy-or-rename-file-out-of-band): Rename from
58 `tramp-do-copy-or-rename-file-one-local', because it handles also 178 `tramp-do-copy-or-rename-file-one-local', because it handles also
59 the case both files use the same out-of-band method. 179 the case both files use the same out-of-band method.
60 Implementation added. 180 Implementation added.
@@ -70,16 +190,16 @@
70 (tramp-completion-function-alist): It's a defvar now, because we 190 (tramp-completion-function-alist): It's a defvar now, because we
71 want to apply the optimized `tramp-set-completion-function' 191 want to apply the optimized `tramp-set-completion-function'
72 instead of a static list. 192 instead of a static list.
73 (tramp-set-completion-function): Implementation tuned. Avoid 193 (tramp-set-completion-function): Implementation tuned.
74 double entries, and entries where the function or the 194 Avoid double entries, and entries where the function or the
75 file/directory doesn't exist. 195 file/directory doesn't exist.
76 (tramp-parse-shostkeys, tramp-parse-sknownhosts): New functions 196 (tramp-parse-shostkeys, tramp-parse-sknownhosts): New functions
77 for SSH2. 197 for SSH2.
78 (tramp-file-name-handler-alist): Add `dired-compress-file' entry. 198 (tramp-file-name-handler-alist): Add `dired-compress-file' entry.
79 (tramp-handle-dired-compress-file): New function. 199 (tramp-handle-dired-compress-file): New function.
80 (tramp-async-proc): New variable. 200 (tramp-async-proc): New variable.
81 (tramp-handle-shell-command): Adding asynchronous processes. They 201 (tramp-handle-shell-command): Adding asynchronous processes.
82 are far from being perfect, but it works at least for 202 They are far from being perfect, but it works at least for
83 `find-grep-dired' and `find-name-dired' in Emacs 21.4. 203 `find-grep-dired' and `find-name-dired' in Emacs 21.4.
84 (top-level): Require password.el if visible. Should be mandatory 204 (top-level): Require password.el if visible. Should be mandatory
85 once No Gnus has found its way into (X)Emacs. 205 once No Gnus has found its way into (X)Emacs.
@@ -87,8 +207,8 @@
87 `read-passwd' otherwise. `ange-ftp-read-passwd' isn't used as 207 `read-passwd' otherwise. `ange-ftp-read-passwd' isn't used as
88 fallback any longer. 208 fallback any longer.
89 (tramp-clear-passwd): New function. 209 (tramp-clear-passwd): New function.
90 (tramp-process-actions, tramp-process-multi-actions): Clear 210 (tramp-process-actions, tramp-process-multi-actions):
91 password cache if login has failed. 211 Clear password cache if login has failed.
92 212
93 * net/tramp-ftp.el (Commentary): Remove pointer to EFS. It has 213 * net/tramp-ftp.el (Commentary): Remove pointer to EFS. It has
94 its own module. 214 its own module.
@@ -119,8 +239,7 @@
119 relative directory names. 239 relative directory names.
120 (dired-at-point-prompter): Treat directories as a directory, get 240 (dired-at-point-prompter): Treat directories as a directory, get
121 the directory component from files. 241 the directory component from files.
122 (ffap-string-at-point): Return string from region if region is 242 (ffap-string-at-point): Return string from region if region is active.
123 active.
124 (ffap-file-at-point): Remove redundant code. 243 (ffap-file-at-point): Remove redundant code.
125 244
1262004-02-28 Kim F. Storm <storm@cua.dk> 2452004-02-28 Kim F. Storm <storm@cua.dk>
@@ -140,8 +259,8 @@
140 (gdb-put-breakpoint-icon): New defun which displays a breakpoint 259 (gdb-put-breakpoint-icon): New defun which displays a breakpoint
141 icon in fringe (if available), or else as icon or text in display 260 icon in fringe (if available), or else as icon or text in display
142 margin. Creates necessary icons in breakpoint-bitmap, 261 margin. Creates necessary icons in breakpoint-bitmap,
143 breakpoint-enabled-icon, and/or breakpoint-disabled-icon. Also 262 breakpoint-enabled-icon, and/or breakpoint-disabled-icon.
144 make left window margin if required. 263 Also make left window margin if required.
145 (gdb-remove-breakpoint-icons): New defun to remove breakpoint 264 (gdb-remove-breakpoint-icons): New defun to remove breakpoint
146 icons inserted by gdb-put-breakpoint-icon. Remove left margin if 265 icons inserted by gdb-put-breakpoint-icon. Remove left margin if
147 no longer needed. 266 no longer needed.
@@ -152,7 +271,7 @@
1522004-02-27 Kevin Ryde <user42@zip.com.au> 2712004-02-27 Kevin Ryde <user42@zip.com.au>
153 272
154 * info-look.el: In scheme-mode symbol regexp, disallow backquote and 273 * info-look.el: In scheme-mode symbol regexp, disallow backquote and
155 comma, so that it DTRT in macros. 274 comma, so that it DTRT in macros.
156 275
1572004-02-27 Markus Rost <rost@mathematik.uni-bielefeld.de> 2762004-02-27 Markus Rost <rost@mathematik.uni-bielefeld.de>
158 277
@@ -170,11 +289,10 @@
170 289
171 * font-lock.el (font-lock-comment-face, font-lock-string-face) 290 * font-lock.el (font-lock-comment-face, font-lock-string-face)
172 (font-lock-keyword-face, font-lock-function-name-face) 291 (font-lock-keyword-face, font-lock-function-name-face)
173 (font-lock-variable-name-face, font-lock-constant-face): Use 292 (font-lock-variable-name-face, font-lock-constant-face):
174 `min-colors'. 293 Use `min-colors'.
175 294
176 * isearch.el (isearch, isearch-lazy-highlight-face): Use 295 * isearch.el (isearch, isearch-lazy-highlight-face): Use `min-colors'.
177 `min-colors'.
178 296
1792004-02-25 Vinicius Jose Latorre <viniciusjl@ig.com.br> 2972004-02-25 Vinicius Jose Latorre <viniciusjl@ig.com.br>
180 298
@@ -191,8 +309,8 @@
191 * ebnf-abn.el: New file, implements an ABNF parser. 309 * ebnf-abn.el: New file, implements an ABNF parser.
192 310
193 * ebnf2ps.el: Doc fix. Accept ABNF (Augmented BNF). New arrow shapes: 311 * ebnf2ps.el: Doc fix. Accept ABNF (Augmented BNF). New arrow shapes:
194 semi-up-hollow, semi-up-full, semi-down-hollow and semi-down-full. Fix 312 semi-up-hollow, semi-up-full, semi-down-hollow and semi-down-full.
195 a bug on productions like test = {"test"}* | ( "tt" ["test"] ). 313 Fix a bug on productions like test = {"test"}* | ( "tt" ["test"] ).
196 Reported by Markus Dreyer <mdreyer@ix.urz.uni-heidelberg.de>. 314 Reported by Markus Dreyer <mdreyer@ix.urz.uni-heidelberg.de>.
197 (ebnf-version): New version number (4.0). 315 (ebnf-version): New version number (4.0).
198 (ebnf-print-directory, ebnf-print-file, ebnf-spool-directory) 316 (ebnf-print-directory, ebnf-print-file, ebnf-spool-directory)
@@ -238,10 +356,9 @@
238 (gdb-var-delete): Make interactive (really). 356 (gdb-var-delete): Make interactive (really).
239 (gdb-edit-value): Make non-interactive. 357 (gdb-edit-value): Make non-interactive.
240 358
241 * progmodes/gud.el (gud-install-speedbar-variables): Bind 359 * progmodes/gud.el (gud-speedbar-menu-items):
242 gdb-var-delete to "D". 360 Add gdb-var-delete and, indirectly, gdb-edit-value.
243 (gud-speedbar-menu-items): Add gdb-var-delete and, indirectly, 361 (gud-install-speedbar-variables): Bind gdb-var-delete to "D".
244 gdb-edit-value.
245 (gud-speedbar-buttons): Remove gdb-var-delete from tag-line. 362 (gud-speedbar-buttons): Remove gdb-var-delete from tag-line.
246 (gud-gdb-marker-filter): Add comment for annotations. 363 (gud-gdb-marker-filter): Add comment for annotations.
247 364
@@ -260,8 +377,7 @@
2602004-02-21 Stephen Compall <s11@member.fsf.org> 3772004-02-21 Stephen Compall <s11@member.fsf.org>
261 378
262 * saveplace.el (save-place-forget-unreadable-files) 379 * saveplace.el (save-place-forget-unreadable-files)
263 (save-place-save-skipped, save-place-skip-check-regexp): New 380 (save-place-save-skipped, save-place-skip-check-regexp): New vars.
264 defcustoms.
265 (save-place-forget-unreadable-files): New function. 381 (save-place-forget-unreadable-files): New function.
266 (save-place-alist-to-file): Use it to filter out files that are 382 (save-place-alist-to-file): Use it to filter out files that are
267 no longer readable. 383 no longer readable.
@@ -293,7 +409,7 @@
293 409
2942004-02-20 John Wiegley <johnw@newartisans.com> 4102004-02-20 John Wiegley <johnw@newartisans.com>
295 411
296 * eshell/em-pred.el (eshell-modifier-alist): Changed the "eval 412 * eshell/em-pred.el (eshell-modifier-alist): Change the "eval
297 again" modifier from 'e' to 'E', since 'e' is also used by the 413 again" modifier from 'e' to 'E', since 'e' is also used by the
298 "file extension" modifier. 414 "file extension" modifier.
299 415
@@ -312,8 +428,8 @@
312 428
313 * gdb-ui.el (gdb-use-colon-colon-notation): Set default to nil for 429 * gdb-ui.el (gdb-use-colon-colon-notation): Set default to nil for
314 case of variables defined in compound statements. 430 case of variables defined in compound statements.
315 (gdb-setup-windows, gdb-source-info, gdb-source-info): Simplify 431 (gdb-setup-windows, gdb-source-info, gdb-source-info):
316 constructions using switch-to-buffer. 432 Simplify constructions using switch-to-buffer.
317 433
3182004-02-19 Simon Josefsson <jas@extundo.com> 4342004-02-19 Simon Josefsson <jas@extundo.com>
319 435
@@ -401,7 +517,7 @@
401 * rmail-spam-filter.el: (vm-use-spam-filter) 517 * rmail-spam-filter.el: (vm-use-spam-filter)
402 (rsf-min-region-length-added-to-spam-list): New variables. 518 (rsf-min-region-length-added-to-spam-list): New variables.
403 (rsf-bbdb-auto-delete-spam-bbdb-entries): Rename from 519 (rsf-bbdb-auto-delete-spam-bbdb-entries): Rename from
404 rmail-bbdb-auto-delete-spam-entries. Added cc: to recipients for 520 rmail-bbdb-auto-delete-spam-entries. Add cc: to recipients for
405 spam testing. Don't delete spam message if automatic deletion 521 spam testing. Don't delete spam message if automatic deletion
406 after output via variable rmail-delete-after-output is turned on. 522 after output via variable rmail-delete-after-output is turned on.
407 (rsf-bbdb-dont-create-entries-for-deleted-messages): Rename from 523 (rsf-bbdb-dont-create-entries-for-deleted-messages): Rename from
@@ -571,6 +687,7 @@
571 (diff, diff-backup): Use it. 687 (diff, diff-backup): Use it.
572 (diff): Clean up the args construction. Use backquote. 688 (diff): Clean up the args construction. Use backquote.
573 Use listp instead of consp to avoid putting a nil arg. 689 Use listp instead of consp to avoid putting a nil arg.
690 (diff): Add a revert-buffer function.
574 691
5752004-02-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 6922004-02-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
576 693
@@ -3061,7 +3178,7 @@
3061 3178
30622003-08-26 Glenn Morris <gmorris@ast.cam.ac.uk> 31792003-08-26 Glenn Morris <gmorris@ast.cam.ac.uk>
3063 3180
3064 * mail/smtpmail.el Fix previous change: 3181 * mail/smtpmail.el: Fix previous change.
3065 (smtpmail-send-queued-mail): Set smtpmail-mail-address before 3182 (smtpmail-send-queued-mail): Set smtpmail-mail-address before
3066 calling smtpmail-via-smtp. 3183 calling smtpmail-via-smtp.
3067 (smtpmail-via-smtp): Add fall-back values for envelope-from. 3184 (smtpmail-via-smtp): Add fall-back values for envelope-from.
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index fad13704c3c..e1c6b779db2 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -1,5 +1,5 @@
1# Maintenance productions for the Lisp directory 1# Maintenance productions for the Lisp directory
2# Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. 2# Copyright (C) 2000, 01, 03, 2004 Free Software Foundation, Inc.
3 3
4# This file is part of GNU Emacs. 4# This file is part of GNU Emacs.
5 5
@@ -110,6 +110,13 @@ DONTCOMPILE = \
110 $(lisp)/term/wyse50.el \ 110 $(lisp)/term/wyse50.el \
111 $(lisp)/version.el 111 $(lisp)/version.el
112 112
113# Elisp files auto-generated.
114AUTOGENEL = loaddefs.el \
115 cus-load.el \
116 finder-inf.el \
117 subdirs.el \
118 eshell/esh-groups.el
119
113# Files to compile before others during a bootstrap. This is done to 120# Files to compile before others during a bootstrap. This is done to
114# speed up the bootstrap process. The CC files are compiled first 121# speed up the bootstrap process. The CC files are compiled first
115# because CC mode tweaks the compilation process, and requiring 122# because CC mode tweaks the compilation process, and requiring
@@ -131,14 +138,14 @@ emacs = EMACSLOADPATH=$(lisp) $(EMACS) $(EMACSOPT)
131 138
132setwins=subdirs=`find $$wd -type d -print`; \ 139setwins=subdirs=`find $$wd -type d -print`; \
133 for file in $$subdirs; do \ 140 for file in $$subdirs; do \
134 case $$file in */Old | */RCS | */CVS | */CVS/* | */.arch-ids | */.arch-ids/* | */=* ) ;; \ 141 case $$file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* ) ;; \
135 *) wins="$$wins $$file" ;; \ 142 *) wins="$$wins $$file" ;; \
136 esac; \ 143 esac; \
137 done 144 done
138 145
139setwins_almost=subdirs=`find $$wd -type d -print`; \ 146setwins_almost=subdirs=`find $$wd -type d -print`; \
140 for file in $$subdirs; do \ 147 for file in $$subdirs; do \
141 case $$file in */Old | */RCS | */CVS | */CVS/* | */=* | */obsolete | */term ) ;; \ 148 case $$file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* | */obsolete | */term ) ;; \
142 *) wins="$$wins $$file" ;; \ 149 *) wins="$$wins $$file" ;; \
143 esac; \ 150 esac; \
144 done 151 done
@@ -294,11 +301,8 @@ $(lisp)/progmodes/cc-mode.elc: \
294# it's necessary for generating the binary (because loaddefs.el is an 301# it's necessary for generating the binary (because loaddefs.el is an
295# automatically generated file, we don't want to store it in the source 302# automatically generated file, we don't want to store it in the source
296# repository). 303# repository).
297#
298# Remove compiled Lisp files so that bootstrap-emacs will be built from
299# sources only.
300 304
301bootstrap-clean: 305bootstrap-prepare:
302 if test -x $(EMACS); then \ 306 if test -x $(EMACS); then \
303 $(MAKE) $(MFLAGS) autoloads; \ 307 $(MAKE) $(MFLAGS) autoloads; \
304 else \ 308 else \
@@ -306,7 +310,9 @@ bootstrap-clean:
306 cp $(lisp)/ldefs-boot.el $(lisp)/loaddefs.el; \ 310 cp $(lisp)/ldefs-boot.el $(lisp)/loaddefs.el; \
307 fi \ 311 fi \
308 fi 312 fi
309 cd $(lisp); rm -f *.elc */*.elc 313
314maintainer-clean:
315 cd $(lisp); rm -f *.elc */*.elc $(AUTOGENEL)
310 316
311# Generate/update files for the bootstrap process. 317# Generate/update files for the bootstrap process.
312 318
diff --git a/lisp/allout.el b/lisp/allout.el
index 32ecb35e07e..bd5cd6c36ee 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -5,7 +5,7 @@
5;; Author: Ken Manheimer <klm@zope.com> 5;; Author: Ken Manheimer <klm@zope.com>
6;; Maintainer: Ken Manheimer <klm@zope.com> 6;; Maintainer: Ken Manheimer <klm@zope.com>
7;; Created: Dec 1991 - first release to usenet 7;; Created: Dec 1991 - first release to usenet
8;; Version: $Id: allout.el,v 1.45 2003/10/16 16:28:30 eliz Exp $|| 8;; Version: $Id: allout.el,v 1.46 2004/03/01 22:44:04 lektu Exp $||
9;; Keywords: outlines mode wp languages 9;; Keywords: outlines mode wp languages
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
@@ -508,7 +508,7 @@ behavior."
508;;;_ : Version 508;;;_ : Version
509;;;_ = allout-version 509;;;_ = allout-version
510(defvar allout-version 510(defvar allout-version
511 (let ((rcs-rev "$Revision: 1.45 $")) 511 (let ((rcs-rev "$Revision: 1.46 $"))
512 (condition-case err 512 (condition-case err
513 (save-match-data 513 (save-match-data
514 (string-match "Revision: \\([0-9]+\\.[0-9]+\\)" rcs-rev) 514 (string-match "Revision: \\([0-9]+\\.[0-9]+\\)" rcs-rev)
@@ -3015,9 +3015,9 @@ Third arg NUMBER-CONTROL can force the prefix to or away from
3015numbered form. It has effect only if `allout-numbered-bullet' is 3015numbered form. It has effect only if `allout-numbered-bullet' is
3016non-nil and soliciting was not explicitly invoked (via first arg). 3016non-nil and soliciting was not explicitly invoked (via first arg).
3017Its effect, numbering or denumbering, then depends on the setting 3017Its effect, numbering or denumbering, then depends on the setting
3018of the forth arg, INDEX. 3018of the fourth arg, INDEX.
3019 3019
3020If NUMBER-CONTROL is non-nil and forth arg INDEX is nil, then the 3020If NUMBER-CONTROL is non-nil and fourth arg INDEX is nil, then the
3021prefix of the topic is forced to be non-numbered. Null index and 3021prefix of the topic is forced to be non-numbered. Null index and
3022non-nil NUMBER-CONTROL forces denumbering. Non-nil INDEX (and 3022non-nil NUMBER-CONTROL forces denumbering. Non-nil INDEX (and
3023non-nil NUMBER-CONTROL) forces a numbered-prefix form. If non-nil 3023non-nil NUMBER-CONTROL) forces a numbered-prefix form. If non-nil
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 0cff5e5a21f..beac1f39005 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -90,7 +90,7 @@
90 (mapcar 'require '(info dired reporter))) 90 (mapcar 'require '(info dired reporter)))
91 91
92(defvar desktop-file-version "206" 92(defvar desktop-file-version "206"
93 "Verion number of desktop file format. 93 "Version number of desktop file format.
94Written into the desktop file and used at desktop read to provide 94Written into the desktop file and used at desktop read to provide
95backward compatibility.") 95backward compatibility.")
96 96
@@ -163,7 +163,7 @@ May e.g. be used to show a dired buffer."
163 :group 'desktop) 163 :group 'desktop)
164 164
165(defcustom desktop-after-read-hook nil 165(defcustom desktop-after-read-hook nil
166 "Normal hook run after a sucessful `desktop-read'. 166 "Normal hook run after a successful `desktop-read'.
167May e.g. be used to show a buffer list." 167May e.g. be used to show a buffer list."
168 :type 'hook 168 :type 'hook
169 :group 'desktop) 169 :group 'desktop)
@@ -212,8 +212,7 @@ to the value obtained by evaluateing FORM."
212;; Maintained for backward compatibility 212;; Maintained for backward compatibility
213(defcustom desktop-clear-preserve-buffers nil 213(defcustom desktop-clear-preserve-buffers nil
214 "*List of buffer names that `desktop-clear' should not delete. 214 "*List of buffer names that `desktop-clear' should not delete.
215This variable is maintained for backward compatibility only. Use 215This variable is maintained for backward compatibility only."
216`desktop-clear-preserve-buffers-regexp' instead."
217 :type '(repeat string) 216 :type '(repeat string)
218 :group 'desktop) 217 :group 'desktop)
219(make-obsolete-variable 'desktop-clear-preserve-buffers 218(make-obsolete-variable 'desktop-clear-preserve-buffers
@@ -349,9 +348,9 @@ this table."
349 "Hooks run after all buffers are loaded; intended for internal use.") 348 "Hooks run after all buffers are loaded; intended for internal use.")
350 349
351;; ---------------------------------------------------------------------------- 350;; ----------------------------------------------------------------------------
352(defun desktop-truncate (l n) 351(defun desktop-truncate (list n)
353 "Truncate LIST to at most N elements destructively." 352 "Truncate LIST to at most N elements destructively."
354 (let ((here (nthcdr (1- n) l))) 353 (let ((here (nthcdr (1- n) list)))
355 (if (consp here) 354 (if (consp here)
356 (setcdr here nil)))) 355 (setcdr here nil))))
357 356
@@ -424,22 +423,22 @@ is nil, ask the user where to save the desktop."
424 value))) 423 value)))
425 424
426;; ---------------------------------------------------------------------------- 425;; ----------------------------------------------------------------------------
427(defun desktop-internal-v2s (val) 426(defun desktop-internal-v2s (value)
428 "Convert VALUE to a pair (QUOTE . TXT); (eval (read TXT)) gives VALUE. 427 "Convert VALUE to a pair (QUOTE . TXT); (eval (read TXT)) gives VALUE.
429TXT is a string that when read and evaluated yields value. 428TXT is a string that when read and evaluated yields value.
430QUOTE may be `may' (value may be quoted), 429QUOTE may be `may' (value may be quoted),
431`must' (values must be quoted), or nil (value may not be quoted)." 430`must' (values must be quoted), or nil (value may not be quoted)."
432 (cond 431 (cond
433 ((or (numberp val) (null val) (eq t val)) 432 ((or (numberp value) (null value) (eq t value))
434 (cons 'may (prin1-to-string val))) 433 (cons 'may (prin1-to-string value)))
435 ((stringp val) 434 ((stringp value)
436 (let ((copy (copy-sequence val))) 435 (let ((copy (copy-sequence value)))
437 (set-text-properties 0 (length copy) nil copy) 436 (set-text-properties 0 (length copy) nil copy)
438 ;; Get rid of text properties because we cannot read them 437 ;; Get rid of text properties because we cannot read them
439 (cons 'may (prin1-to-string copy)))) 438 (cons 'may (prin1-to-string copy))))
440 ((symbolp val) 439 ((symbolp value)
441 (cons 'must (prin1-to-string val))) 440 (cons 'must (prin1-to-string value)))
442 ((vectorp val) 441 ((vectorp value)
443 (let* ((special nil) 442 (let* ((special nil)
444 (pass1 (mapcar 443 (pass1 (mapcar
445 (lambda (el) 444 (lambda (el)
@@ -447,7 +446,7 @@ QUOTE may be `may' (value may be quoted),
447 (if (null (car res)) 446 (if (null (car res))
448 (setq special t)) 447 (setq special t))
449 res)) 448 res))
450 val))) 449 value)))
451 (if special 450 (if special
452 (cons nil (concat "(vector " 451 (cons nil (concat "(vector "
453 (mapconcat (lambda (el) 452 (mapconcat (lambda (el)
@@ -458,8 +457,8 @@ QUOTE may be `may' (value may be quoted),
458 " ") 457 " ")
459 ")")) 458 ")"))
460 (cons 'may (concat "[" (mapconcat 'cdr pass1 " ") "]"))))) 459 (cons 'may (concat "[" (mapconcat 'cdr pass1 " ") "]")))))
461 ((consp val) 460 ((consp value)
462 (let ((p val) 461 (let ((p value)
463 newlist 462 newlist
464 use-list* 463 use-list*
465 anynil) 464 anynil)
@@ -489,13 +488,13 @@ QUOTE may be `may' (value may be quoted),
489 ")")) 488 ")"))
490 (cons 'must 489 (cons 'must
491 (concat "(" (mapconcat 'cdr newlist " ") ")"))))) 490 (concat "(" (mapconcat 'cdr newlist " ") ")")))))
492 ((subrp val) 491 ((subrp value)
493 (cons nil (concat "(symbol-function '" 492 (cons nil (concat "(symbol-function '"
494 (substring (prin1-to-string val) 7 -1) 493 (substring (prin1-to-string value) 7 -1)
495 ")"))) 494 ")")))
496 ((markerp val) 495 ((markerp value)
497 (let ((pos (prin1-to-string (marker-position val))) 496 (let ((pos (prin1-to-string (marker-position value)))
498 (buf (prin1-to-string (buffer-name (marker-buffer val))))) 497 (buf (prin1-to-string (buffer-name (marker-buffer value)))))
499 (cons nil (concat "(let ((mk (make-marker)))" 498 (cons nil (concat "(let ((mk (make-marker)))"
500 " (add-hook 'desktop-delay-hook" 499 " (add-hook 'desktop-delay-hook"
501 " (list 'lambda '() (list 'set-marker mk " 500 " (list 'lambda '() (list 'set-marker mk "
@@ -504,12 +503,12 @@ QUOTE may be `may' (value may be quoted),
504 (cons 'may "\"Unprintable entity\"")))) 503 (cons 'may "\"Unprintable entity\""))))
505 504
506;; ---------------------------------------------------------------------------- 505;; ----------------------------------------------------------------------------
507(defun desktop-value-to-string (val) 506(defun desktop-value-to-string (value)
508 "Convert VALUE to a string that when read evaluates to the same value. 507 "Convert VALUE to a string that when read evaluates to the same value.
509Not all types of values are supported." 508Not all types of values are supported."
510 (let* ((print-escape-newlines t) 509 (let* ((print-escape-newlines t)
511 (float-output-format nil) 510 (float-output-format nil)
512 (quote.txt (desktop-internal-v2s val)) 511 (quote.txt (desktop-internal-v2s value))
513 (quote (car quote.txt)) 512 (quote (car quote.txt))
514 (txt (cdr quote.txt))) 513 (txt (cdr quote.txt)))
515 (if (eq quote 'must) 514 (if (eq quote 'must)
diff --git a/lisp/emulation/tpu-edt.el b/lisp/emulation/tpu-edt.el
index 8e290553a61..b164588d8f1 100644
--- a/lisp/emulation/tpu-edt.el
+++ b/lisp/emulation/tpu-edt.el
@@ -551,7 +551,7 @@ version of Emacs."
551 (t (mark)))) 551 (t (mark))))
552 552
553(defun tpu-set-mark (pos) 553(defun tpu-set-mark (pos)
554 "TPU-edt verion of the `set-mark' function. 554 "TPU-edt version of the `set-mark' function.
555Sets the mark at POS and activates the region according to the 555Sets the mark at POS and activates the region according to the
556current version of Emacs." 556current version of Emacs."
557 (set-mark pos) 557 (set-mark pos)
diff --git a/lisp/eshell/em-smart.el b/lisp/eshell/em-smart.el
index 6725f96cc84..fb539487204 100644
--- a/lisp/eshell/em-smart.el
+++ b/lisp/eshell/em-smart.el
@@ -242,7 +242,7 @@ The options are `begin', `after' or `end'."
242 242
243(defun eshell-smart-maybe-jump-to-end () 243(defun eshell-smart-maybe-jump-to-end ()
244 "Jump to the end of the input buffer. 244 "Jump to the end of the input buffer.
245This is done whenever a command exits sucessfully and both the command 245This is done whenever a command exits successfully and both the command
246and the end of the buffer are still visible." 246and the end of the buffer are still visible."
247 (when (and (= eshell-last-command-status 0) 247 (when (and (= eshell-last-command-status 0)
248 (if (eq eshell-review-quick-commands 'not-even-short-output) 248 (if (eq eshell-review-quick-commands 'not-even-short-output)
diff --git a/lisp/files.el b/lisp/files.el
index 3b178af029b..a63aea99114 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -855,7 +855,9 @@ do not put this buffer at the front of the list of recently selected ones.
855This uses the function `display-buffer' as a subroutine; see its 855This uses the function `display-buffer' as a subroutine; see its
856documentation for additional customization information." 856documentation for additional customization information."
857 (interactive "BSwitch to buffer in other window: ") 857 (interactive "BSwitch to buffer in other window: ")
858 (let ((pop-up-windows t)) 858 (let ((pop-up-windows t)
859 ;; Don't let these interfere.
860 same-window-buffer-names same-window-regexps)
859 (pop-to-buffer buffer t norecord))) 861 (pop-to-buffer buffer t norecord)))
860 862
861(defun switch-to-buffer-other-frame (buffer &optional norecord) 863(defun switch-to-buffer-other-frame (buffer &optional norecord)
@@ -866,7 +868,8 @@ do not put this buffer at the front of the list of recently selected ones.
866This uses the function `display-buffer' as a subroutine; see its 868This uses the function `display-buffer' as a subroutine; see its
867documentation for additional customization information." 869documentation for additional customization information."
868 (interactive "BSwitch to buffer in other frame: ") 870 (interactive "BSwitch to buffer in other frame: ")
869 (let ((pop-up-frames t)) 871 (let ((pop-up-frames t)
872 same-window-buffer-names same-window-regexps)
870 (pop-to-buffer buffer t norecord) 873 (pop-to-buffer buffer t norecord)
871 (raise-frame (window-frame (selected-window))))) 874 (raise-frame (window-frame (selected-window)))))
872 875
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 4deacb9e87f..ad69cdd960c 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1890,10 +1890,13 @@ This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item."
1890 "condition-case" "track-mouse" 1890 "condition-case" "track-mouse"
1891 "eval-after-load" "eval-and-compile" "eval-when-compile" 1891 "eval-after-load" "eval-and-compile" "eval-when-compile"
1892 "eval-when" 1892 "eval-when"
1893 "with-category-table"
1893 "with-current-buffer" "with-electric-help" 1894 "with-current-buffer" "with-electric-help"
1895 "with-local-quit" "with-no-warnings"
1894 "with-output-to-string" "with-output-to-temp-buffer" 1896 "with-output-to-string" "with-output-to-temp-buffer"
1897 "with-selected-window" "with-syntax-table"
1895 "with-temp-buffer" "with-temp-file" "with-temp-message" 1898 "with-temp-buffer" "with-temp-file" "with-temp-message"
1896 "with-timeout") t) 1899 "with-timeout" "with-timeout-handler") t)
1897 "\\>") 1900 "\\>")
1898 1) 1901 1)
1899 ;; 1902 ;;
@@ -1908,7 +1911,13 @@ This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item."
1908 "proclaim" "declaim" "declare" "symbol-macrolet" 1911 "proclaim" "declaim" "declare" "symbol-macrolet"
1909 "lexical-let" "lexical-let*" "flet" "labels" "compiler-let" 1912 "lexical-let" "lexical-let*" "flet" "labels" "compiler-let"
1910 "destructuring-bind" "macrolet" "tagbody" "block" 1913 "destructuring-bind" "macrolet" "tagbody" "block"
1911 "return" "return-from") t) 1914 "return" "return-from"
1915 "with-accessors" "with-compilation-unit"
1916 "with-condition-restarts" "with-hash-table-iterator"
1917 "with-input-from-string" "with-open-file"
1918 "with-open-stream" "with-output-to-string"
1919 "with-package-iterator" "with-simple-restart"
1920 "with-slots" "with-standard-io-syntax") t)
1912 "\\>") 1921 "\\>")
1913 1) 1922 1)
1914 ;; 1923 ;;
@@ -1933,8 +1942,11 @@ This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item."
1933 ;; ELisp and CLisp `&' keywords as types. 1942 ;; ELisp and CLisp `&' keywords as types.
1934 '("\\&\\sw+\\>" . font-lock-type-face) 1943 '("\\&\\sw+\\>" . font-lock-type-face)
1935 ;; 1944 ;;
1936 ;; CL `with-' and `do-' constructs 1945;;; This is too general -- rms.
1937 '("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face) 1946;;; A user complained that he has functions whose names start with `do'
1947;;; and that they get the wrong color.
1948;;; ;; CL `with-' and `do-' constructs
1949;;; '("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face)
1938 ))) 1950 )))
1939 "Gaudy level highlighting for Lisp modes.") 1951 "Gaudy level highlighting for Lisp modes.")
1940 1952
diff --git a/lisp/gdb-ui.el b/lisp/gdb-ui.el
index 0040fb47f6e..85b03fbce40 100644
--- a/lisp/gdb-ui.el
+++ b/lisp/gdb-ui.el
@@ -1087,7 +1087,6 @@ static char *magick[] = {
1087 (interactive "e") 1087 (interactive "e")
1088 (mouse-minibuffer-check event) 1088 (mouse-minibuffer-check event)
1089 (let ((posn (event-end event))) 1089 (let ((posn (event-end event)))
1090 (message "pt=%S posn=%S" (posn-point posn) posn)
1091 (if (numberp (posn-point posn)) 1090 (if (numberp (posn-point posn))
1092 (with-selected-window (posn-window posn) 1091 (with-selected-window (posn-window posn)
1093 (save-excursion 1092 (save-excursion
@@ -1808,32 +1807,6 @@ BUFFER nil or omitted means use the current buffer."
1808 left-margin-width 1807 left-margin-width
1809 right-margin-width)))) 1808 right-margin-width))))
1810 1809
1811(defun gdb-put-arrow (putstring pos)
1812 "Put arrow string PUTSTRING in the left margin in front of POS
1813in the current buffer. PUTSTRING is displayed by putting an
1814overlay into the current buffer with a `before-string'
1815\"gdb-arrow\" that has a `display' property whose value is
1816PUTSTRING. POS may be an integer or marker."
1817 (let ((gdb-string "gdb-arrow")
1818 (buffer (current-buffer)))
1819 (let ((overlay (make-overlay pos pos buffer))
1820 (prop (list (list 'margin 'left-margin) putstring)))
1821 (put-text-property 0 (length gdb-string) 'display prop gdb-string)
1822 (overlay-put overlay 'put-arrow t)
1823 (overlay-put overlay 'before-string gdb-string))))
1824
1825(defun gdb-remove-arrow (&optional buffer)
1826 "Remove arrow in BUFFER.
1827Remove only images that were put in BUFFER with calls to `put-arrow'.
1828BUFFER nil or omitted means use the current buffer."
1829 (unless buffer
1830 (setq buffer (current-buffer)))
1831 (let ((overlays (overlays-in (point-min) (point-max))))
1832 (while overlays
1833 (let ((overlay (car overlays)))
1834 (when (overlay-get overlay 'put-arrow)
1835 (delete-overlay overlay)))
1836 (setq overlays (cdr overlays)))))
1837 1810
1838;; 1811;;
1839;; Assembler buffer. 1812;; Assembler buffer.
@@ -1850,16 +1823,20 @@ BUFFER nil or omitted means use the current buffer."
1850 1823
1851(defun gdb-assembler-custom () 1824(defun gdb-assembler-custom ()
1852 (let ((buffer (gdb-get-buffer 'gdb-assembler-buffer)) 1825 (let ((buffer (gdb-get-buffer 'gdb-assembler-buffer))
1853 (gdb-arrow-position 1) (address) (flag)) 1826 (pos 1) (address) (flag))
1854 (with-current-buffer buffer 1827 (with-current-buffer buffer
1855 (if (not (equal gdb-current-address "main")) 1828 (if (not (equal gdb-current-address "main"))
1856 (progn 1829 (progn
1857 (gdb-remove-arrow)
1858 (goto-char (point-min)) 1830 (goto-char (point-min))
1859 (if (re-search-forward gdb-current-address nil t) 1831 (if (re-search-forward gdb-current-address nil t)
1860 (progn 1832 (progn
1861 (setq gdb-arrow-position (point)) 1833 (setq pos (point))
1862 (gdb-put-arrow "=>" (point)))))) 1834 (setq gdb-overlay-arrow-string "=>")
1835 (beginning-of-line)
1836 (or gdb-overlay-arrow-position
1837 (setq gdb-overlay-arrow-position (make-marker)))
1838 (set-marker gdb-overlay-arrow-position
1839 (point) (current-buffer))))))
1863 ;; remove all breakpoint-icons in assembler buffer before updating. 1840 ;; remove all breakpoint-icons in assembler buffer before updating.
1864 (gdb-remove-breakpoint-icons (point-min) (point-max))) 1841 (gdb-remove-breakpoint-icons (point-min) (point-max)))
1865 (with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer) 1842 (with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer)
@@ -1880,7 +1857,7 @@ BUFFER nil or omitted means use the current buffer."
1880 (if (re-search-forward address nil t) 1857 (if (re-search-forward address nil t)
1881 (gdb-put-breakpoint-icon (eq flag ?y)))))))) 1858 (gdb-put-breakpoint-icon (eq flag ?y))))))))
1882 (if (not (equal gdb-current-address "main")) 1859 (if (not (equal gdb-current-address "main"))
1883 (set-window-point (get-buffer-window buffer) gdb-arrow-position)))) 1860 (set-window-point (get-buffer-window buffer) pos))))
1884 1861
1885(defvar gdb-assembler-mode-map 1862(defvar gdb-assembler-mode-map
1886 (let ((map (make-sparse-keymap))) 1863 (let ((map (make-sparse-keymap)))
@@ -1893,6 +1870,8 @@ BUFFER nil or omitted means use the current buffer."
1893\\{gdb-assembler-mode-map}" 1870\\{gdb-assembler-mode-map}"
1894 (setq major-mode 'gdb-assembler-mode) 1871 (setq major-mode 'gdb-assembler-mode)
1895 (setq mode-name "Machine") 1872 (setq mode-name "Machine")
1873 (push 'gdb-overlay-arrow-position overlay-arrow-variable-list)
1874 (setq gdb-overlay-arrow-position nil)
1896 (setq fringes-outside-margins t) 1875 (setq fringes-outside-margins t)
1897 (setq buffer-read-only t) 1876 (setq buffer-read-only t)
1898 (use-local-map gdb-assembler-mode-map) 1877 (use-local-map gdb-assembler-mode-map)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 60679f8250a..7fa3fb61ce5 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,7 @@
12004-03-04 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * message.el (message-mode): Set comment-start-skip.
4
12004-02-08 Andreas Schwab <schwab@suse.de> 52004-02-08 Andreas Schwab <schwab@suse.de>
2 6
3 * nnlistserv.el (nnlistserv-kk-wash-article): Fix paren nesting. 7 * nnlistserv.el (nnlistserv-kk-wash-article): Fix paren nesting.
@@ -30,8 +34,8 @@
30 34
312003-05-06 Jesper Harder <harder@ifa.au.dk> 352003-05-06 Jesper Harder <harder@ifa.au.dk>
32 36
33 * gnus-cus.el (gnus-group-customize, gnus-score-parameters): Don't 37 * gnus-cus.el (gnus-group-customize, gnus-score-parameters):
34 quote nil and t in docstrings. 38 Don't quote nil and t in docstrings.
35 39
36 * gnus-score.el (gnus-score-lower-thread): Likewise. 40 * gnus-score.el (gnus-score-lower-thread): Likewise.
37 41
@@ -47,8 +51,7 @@
47 51
482003-02-18 Juanma Barranquero <lektu@terra.es> 522003-02-18 Juanma Barranquero <lektu@terra.es>
49 53
50 * ietf-drums.el (ietf-drums-remove-whitespace): Fix character 54 * ietf-drums.el (ietf-drums-remove-whitespace): Fix character constant.
51 constant.
52 55
532003-02-14 Juanma Barranquero <lektu@terra.es> 562003-02-14 Juanma Barranquero <lektu@terra.es>
54 57
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 8edb5142ddd..4c6284b6d85 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -1,5 +1,5 @@
1;;; message.el --- composing mail and news messages -*- coding: iso-latin-1 -*- 1;;; message.el --- composing mail and news messages -*- coding: iso-latin-1 -*-
2;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 2;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004
3;; Free Software Foundation, Inc. 3;; Free Software Foundation, Inc.
4 4
5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 5;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -1531,7 +1531,10 @@ M-RET `message-newline-and-reformat' (break the line and reformat)."
1531 (set (make-local-variable 'message-mime-part) 0) 1531 (set (make-local-variable 'message-mime-part) 0)
1532 (message-setup-fill-variables) 1532 (message-setup-fill-variables)
1533 ;; Allow using comment commands to add/remove quoting. 1533 ;; Allow using comment commands to add/remove quoting.
1534 (set (make-local-variable 'comment-start) message-yank-prefix) 1534 (when message-yank-prefix
1535 (set (make-local-variable 'comment-start) message-yank-prefix)
1536 (set (make-local-variable 'comment-start-skip)
1537 (concat "^" (regexp-quote message-yank-prefix) "[ \t]*")))
1535 ;;(when (fboundp 'mail-hist-define-keys) 1538 ;;(when (fboundp 'mail-hist-define-keys)
1536 ;; (mail-hist-define-keys)) 1539 ;; (mail-hist-define-keys))
1537 (if (featurep 'xemacs) 1540 (if (featurep 'xemacs)
diff --git a/lisp/help-at-pt.el b/lisp/help-at-pt.el
index 3d01ed6d6b2..67a0af20359 100644
--- a/lisp/help-at-pt.el
+++ b/lisp/help-at-pt.el
@@ -101,7 +101,7 @@ The value may be an integer or floating point number.
101If a timer is already active, there are two ways to make the new 101If a timer is already active, there are two ways to make the new
102value take effect immediately. After setting the value, you can 102value take effect immediately. After setting the value, you can
103first call `help-at-pt-cancel-timer' and then set a new timer 103first call `help-at-pt-cancel-timer' and then set a new timer
104with `help-at-pt-set-timer' . Alternatively, you can set this 104with `help-at-pt-set-timer'. Alternatively, you can set this
105variable through Custom. This will not set a timer if none is 105variable through Custom. This will not set a timer if none is
106active, but if one is already active, Custom will make it use the 106active, but if one is already active, Custom will make it use the
107new value." 107new value."
diff --git a/lisp/hexl.el b/lisp/hexl.el
index 413344fc375..40e3c929c59 100644
--- a/lisp/hexl.el
+++ b/lisp/hexl.el
@@ -42,6 +42,8 @@
42 42
43;;; Code: 43;;; Code:
44 44
45(require 'eldoc)
46
45;; 47;;
46;; vars here 48;; vars here
47;; 49;;
@@ -236,6 +238,13 @@ You can use \\[hexl-find-file] to visit a file in Hexl mode.
236 238
237 (add-hook 'change-major-mode-hook 'hexl-maybe-dehexlify-buffer nil t) 239 (add-hook 'change-major-mode-hook 'hexl-maybe-dehexlify-buffer nil t)
238 240
241 ;; Set a callback function for eldoc.
242 (set (make-variable-buffer-local 'eldoc-print-current-symbol-info-function)
243 'hexl-print-current-point-info)
244 (eldoc-add-command-completions "hexl-")
245 (eldoc-remove-command "hexl-save-buffer"
246 "hexl-current-address")
247
239 (if hexl-follow-ascii (hexl-follow-ascii 1))) 248 (if hexl-follow-ascii (hexl-follow-ascii 1)))
240 (run-hooks 'hexl-mode-hook)) 249 (run-hooks 'hexl-mode-hook))
241 250
@@ -361,9 +370,15 @@ Ask the user for confirmation."
361 (- current-column 41) 370 (- current-column 41)
362 (/ (- current-column (/ current-column 5)) 2)))) 371 (/ (- current-column (/ current-column 5)) 2))))
363 (when (interactive-p) 372 (when (interactive-p)
364 (message "Current address is %d" hexl-address)) 373 (message "Current address is %d/0x%08x" hexl-address hexl-address))
365 hexl-address)) 374 hexl-address))
366 375
376(defun hexl-print-current-point-info ()
377 "Return current hexl-address in string.
378This function is indented to be used as eldoc callback."
379 (let ((addr (hexl-current-address)))
380 (format "Current address is %d/0x%08x" addr addr)))
381
367(defun hexl-address-to-marker (address) 382(defun hexl-address-to-marker (address)
368 "Return buffer position for ADDRESS." 383 "Return buffer position for ADDRESS."
369 (interactive "nAddress: ") 384 (interactive "nAddress: ")
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 6eecd623cfd..91a2c34870d 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -301,6 +301,7 @@ Default value, nil, means edit the string instead."
301 ;; Nothing special for + because it matches at least once. 301 ;; Nothing special for + because it matches at least once.
302 (define-key map "*" 'isearch-*-char) 302 (define-key map "*" 'isearch-*-char)
303 (define-key map "?" 'isearch-*-char) 303 (define-key map "?" 'isearch-*-char)
304 (define-key map "{" 'isearch-{-char)
304 (define-key map "|" 'isearch-|-char) 305 (define-key map "|" 'isearch-|-char)
305 306
306 ;; Turned off because I find I expect to get the global definition--rms. 307 ;; Turned off because I find I expect to get the global definition--rms.
@@ -1186,21 +1187,30 @@ might return the position of the end of the line."
1186 (isearch-update)) 1187 (isearch-update))
1187 1188
1188 1189
1190(defun isearch-{-char ()
1191 "Handle \{ specially in regexps."
1192 (interactive)
1193 (isearch-*-char t))
1194
1189;; *, ?, and | chars can make a regexp more liberal. 1195;; *, ?, and | chars can make a regexp more liberal.
1190;; They can make a regexp match sooner or make it succeed instead of failing. 1196;; They can make a regexp match sooner or make it succeed instead of failing.
1191;; So go back to place last successful search started 1197;; So go back to place last successful search started
1192;; or to the last ^S/^R (barrier), whichever is nearer. 1198;; or to the last ^S/^R (barrier), whichever is nearer.
1193;; + needs no special handling because the string must match at least once. 1199;; + needs no special handling because the string must match at least once.
1194 1200
1195(defun isearch-*-char () 1201(defun isearch-*-char (&optional want-backslash)
1196 "Handle * and ? specially in regexps." 1202 "Handle * and ? specially in regexps.
1203When WANT-BACKSLASH is non-nil, do special handling for \{."
1197 (interactive) 1204 (interactive)
1198 (if isearch-regexp 1205 (if isearch-regexp
1199 (let ((idx (length isearch-string))) 1206 (let ((idx (length isearch-string)))
1200 (while (and (> idx 0) 1207 (while (and (> idx 0)
1201 (eq (aref isearch-string (1- idx)) ?\\)) 1208 (eq (aref isearch-string (1- idx)) ?\\))
1202 (setq idx (1- idx))) 1209 (setq idx (1- idx)))
1203 (when (= (mod (- (length isearch-string) idx) 2) 0) 1210 ;; * and ? are special when not preceded by \.
1211 ;; { is special when it is preceded by \.
1212 (when (= (mod (- (length isearch-string) idx) 2)
1213 (if want-backslash 1 0))
1204 (setq isearch-adjusted t) 1214 (setq isearch-adjusted t)
1205 ;; Get the isearch-other-end from before the last search. 1215 ;; Get the isearch-other-end from before the last search.
1206 ;; We want to start from there, 1216 ;; We want to start from there,
diff --git a/lisp/mail/mail-utils.el b/lisp/mail/mail-utils.el
index 96a57b38f07..aecc87cf178 100644
--- a/lisp/mail/mail-utils.el
+++ b/lisp/mail/mail-utils.el
@@ -108,11 +108,15 @@ we expect to find and remove the wrapper characters =?ISO-8859-1?Q?....?=."
108 (apply 'concat (nreverse (cons (substring string i) strings)))))) 108 (apply 'concat (nreverse (cons (substring string i) strings))))))
109 109
110;;;###autoload 110;;;###autoload
111(defun mail-unquote-printable-region (beg end &optional wrapper noerror) 111(defun mail-unquote-printable-region (beg end &optional wrapper noerror
112 unibyte)
112 "Undo the \"quoted printable\" encoding in buffer from BEG to END. 113 "Undo the \"quoted printable\" encoding in buffer from BEG to END.
113If the optional argument WRAPPER is non-nil, 114If the optional argument WRAPPER is non-nil,
114we expect to find and remove the wrapper characters =?ISO-8859-1?Q?....?=. 115we expect to find and remove the wrapper characters =?ISO-8859-1?Q?....?=.
115If NOERROR is non-nil, return t if successful." 116If NOERROR is non-nil, return t if successful.
117If UNIBYTE is non-nil, insert converted characters as unibyte.
118That is useful if you are going to character code decoding afterward,
119as Rmail does."
116 (interactive "r\nP") 120 (interactive "r\nP")
117 (let (failed) 121 (let (failed)
118 (save-match-data 122 (save-match-data
@@ -131,13 +135,16 @@ If NOERROR is non-nil, return t if successful."
131 ((= (char-after (match-beginning 1)) ?=) 135 ((= (char-after (match-beginning 1)) ?=)
132 (replace-match "=")) 136 (replace-match "="))
133 ((match-beginning 2) 137 ((match-beginning 2)
134 (replace-match 138 (let ((char (+ (* 16 (mail-unquote-printable-hexdigit
135 (make-string 1 139 (char-after (match-beginning 2))))
136 (+ (* 16 (mail-unquote-printable-hexdigit 140 (mail-unquote-printable-hexdigit
137 (char-after (match-beginning 2)))) 141 (char-after (1+ (match-beginning 2)))))))
138 (mail-unquote-printable-hexdigit 142 (if unibyte
139 (char-after (1+ (match-beginning 2)))))) 143 (progn
140 t t)) 144 (replace-match "")
145 ;; insert-char will insert this as unibyte,
146 (insert-char char 1))
147 (replace-match (make-string 1 char) t t))))
141 (noerror 148 (noerror
142 (setq failed t)) 149 (setq failed t))
143 (t 150 (t
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 4090749d83e..c890ae6e6a0 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -1733,7 +1733,7 @@ It returns t if it got any new messages."
1733 (if quoted-printable-header-field-end 1733 (if quoted-printable-header-field-end
1734 (save-excursion 1734 (save-excursion
1735 (unless 1735 (unless
1736 (mail-unquote-printable-region header-end (point) nil t) 1736 (mail-unquote-printable-region header-end (point) nil t t)
1737 (message "Malformed MIME quoted-printable message")) 1737 (message "Malformed MIME quoted-printable message"))
1738 ;; Change "quoted-printable" to "8bit", 1738 ;; Change "quoted-printable" to "8bit",
1739 ;; to reflect the decoding we just did. 1739 ;; to reflect the decoding we just did.
@@ -1880,7 +1880,7 @@ It returns t if it got any new messages."
1880 (if quoted-printable-header-field-end 1880 (if quoted-printable-header-field-end
1881 (save-excursion 1881 (save-excursion
1882 (unless 1882 (unless
1883 (mail-unquote-printable-region header-end (point) nil t) 1883 (mail-unquote-printable-region header-end (point) nil t t)
1884 1884
1885 (message "Malformed MIME quoted-printable message")) 1885 (message "Malformed MIME quoted-printable message"))
1886 ;; Change "quoted-printable" to "8bit", 1886 ;; Change "quoted-printable" to "8bit",
@@ -1917,7 +1917,10 @@ It returns t if it got any new messages."
1917 (goto-char (point-min)) 1917 (goto-char (point-min))
1918 (while (search-forward "\n\^_" nil t); single char 1918 (while (search-forward "\n\^_" nil t); single char
1919 (replace-match "\n^_")))); 2 chars: "^" and "_" 1919 (replace-match "\n^_")))); 2 chars: "^" and "_"
1920 (or (bolp) (newline)) ; in case we lost the final newline. 1920 ;; This is for malformed messages that don't end in newline.
1921 ;; There shouldn't be any, but some users say occasionally
1922 ;; there are some.
1923 (or (bolp) (newline))
1921 (insert ?\^_) 1924 (insert ?\^_)
1922 (setq last-coding-system-used nil) 1925 (setq last-coding-system-used nil)
1923 (or rmail-enable-mime 1926 (or rmail-enable-mime
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index c44ea46243a..932f52204c5 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -1,6 +1,6 @@
1;;; sendmail.el --- mail sending commands for Emacs. -*- byte-compile-dynamic: t -*- 1;;; sendmail.el --- mail sending commands for Emacs. -*- byte-compile-dynamic: t -*-
2 2
3;; Copyright (C) 1985, 86, 92, 93, 94, 95, 96, 98, 2000, 2001, 2002, 2003 3;; Copyright (C) 1985, 86, 92, 93, 94, 95, 96, 98, 2000, 2001, 2002, 03, 2004
4;; Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
5 5
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -512,6 +512,9 @@ Turning on Mail mode runs the normal hooks `text-mode-hook' and
512 ;; Allow using comment commands to add/remove quoting (this only does 512 ;; Allow using comment commands to add/remove quoting (this only does
513 ;; anything if mail-yank-prefix is set to a non-nil value). 513 ;; anything if mail-yank-prefix is set to a non-nil value).
514 (set (make-local-variable 'comment-start) mail-yank-prefix) 514 (set (make-local-variable 'comment-start) mail-yank-prefix)
515 (if mail-yank-prefix
516 (set (make-local-variable 'comment-start-skip)
517 (concat "^" (regexp-quote mail-yank-prefix) "[ \t]*")))
515 (make-local-variable 'adaptive-fill-regexp) 518 (make-local-variable 'adaptive-fill-regexp)
516 (setq adaptive-fill-regexp 519 (setq adaptive-fill-regexp
517 (concat "[ \t]*[-[:alnum:]]+>+[ \t]*\\|" 520 (concat "[ \t]*[-[:alnum:]]+>+[ \t]*\\|"
diff --git a/lisp/mouse-sel.el b/lisp/mouse-sel.el
index 92e837657f6..f9b90fbfc6a 100644
--- a/lisp/mouse-sel.el
+++ b/lisp/mouse-sel.el
@@ -196,6 +196,9 @@ If nil, point will always be placed at the beginning of the region."
196 196
197;;=== User Command ======================================================== 197;;=== User Command ========================================================
198 198
199(defvar mouse-sel-has-been-enabled nil
200 "Non-nil if Mouse Sel mode has been enabled at least once.")
201
199(defvar mouse-sel-original-bindings nil) 202(defvar mouse-sel-original-bindings nil)
200(defvar mouse-sel-original-interprogram-cut-function nil) 203(defvar mouse-sel-original-interprogram-cut-function nil)
201(defvar mouse-sel-original-interprogram-paste-function nil) 204(defvar mouse-sel-original-interprogram-paste-function nil)
@@ -252,7 +255,8 @@ primary selection and region."
252 (setq mouse-sel-original-interprogram-cut-function 255 (setq mouse-sel-original-interprogram-cut-function
253 interprogram-cut-function 256 interprogram-cut-function
254 mouse-sel-original-interprogram-paste-function 257 mouse-sel-original-interprogram-paste-function
255 interprogram-paste-function) 258 interprogram-paste-function
259 mouse-sel-has-been-enabled t)
256 (unless (eq mouse-sel-default-bindings 'interprogram-cut-paste) 260 (unless (eq mouse-sel-default-bindings 'interprogram-cut-paste)
257 (setq interprogram-cut-function nil 261 (setq interprogram-cut-function nil
258 interprogram-paste-function nil)))) 262 interprogram-paste-function nil))))
@@ -261,10 +265,13 @@ primary selection and region."
261 (remove-hook 'x-lost-selection-hooks 'mouse-sel-lost-selection-hook) 265 (remove-hook 'x-lost-selection-hooks 'mouse-sel-lost-selection-hook)
262 (dolist (binding mouse-sel-original-bindings) 266 (dolist (binding mouse-sel-original-bindings)
263 (global-set-key (car binding) (cdr binding))) 267 (global-set-key (car binding) (cdr binding)))
264 (setq interprogram-cut-function 268 ;; Restore the old values of these variables,
265 mouse-sel-original-interprogram-cut-function 269 ;; only if they were actually saved previously.
266 interprogram-paste-function 270 (if mouse-sel-has-been-enabled
267 mouse-sel-original-interprogram-paste-function))) 271 (setq interprogram-cut-function
272 mouse-sel-original-interprogram-cut-function
273 interprogram-paste-function
274 mouse-sel-original-interprogram-paste-function))))
268 275
269;;=== Internal Variables/Constants ======================================== 276;;=== Internal Variables/Constants ========================================
270 277
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index 5a25801458e..d590e8bb2a4 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -818,8 +818,8 @@ When called non-interactively, optional second argument NEW-WINDOW is
818used instead of `browse-url-new-window-flag'." 818used instead of `browse-url-new-window-flag'."
819 (interactive (browse-url-interactive-arg "URL: ")) 819 (interactive (browse-url-interactive-arg "URL: "))
820 ;; URL encode any `confusing' characters in the URL. This needs to 820 ;; URL encode any `confusing' characters in the URL. This needs to
821 ;; include at least commas; presumably also close parens. 821 ;; include at least commas; presumably also close parens and dollars.
822 (while (string-match "[,)]" url) 822 (while (string-match "[,)$]" url)
823 (setq url (replace-match 823 (setq url (replace-match
824 (format "%%%x" (string-to-char (match-string 0 url))) t t url))) 824 (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
825 (let* ((process-environment (browse-url-process-environment)) 825 (let* ((process-environment (browse-url-process-environment))
@@ -889,8 +889,8 @@ When called non-interactively, optional second argument NEW-WINDOW is
889used instead of `browse-url-new-window-flag'." 889used instead of `browse-url-new-window-flag'."
890 (interactive (browse-url-interactive-arg "URL: ")) 890 (interactive (browse-url-interactive-arg "URL: "))
891 ;; URL encode any `confusing' characters in the URL. This needs to 891 ;; URL encode any `confusing' characters in the URL. This needs to
892 ;; include at least commas; presumably also close parens. 892 ;; include at least commas; presumably also close parens and dollars.
893 (while (string-match "[,)]" url) 893 (while (string-match "[,)$]" url)
894 (setq url (replace-match 894 (setq url (replace-match
895 (format "%%%x" (string-to-char (match-string 0 url))) t t url))) 895 (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
896 (let* ((process-environment (browse-url-process-environment)) 896 (let* ((process-environment (browse-url-process-environment))
@@ -942,8 +942,8 @@ When called non-interactively, optional second argument NEW-WINDOW is
942used instead of `browse-url-new-window-flag'." 942used instead of `browse-url-new-window-flag'."
943 (interactive (browse-url-interactive-arg "URL: ")) 943 (interactive (browse-url-interactive-arg "URL: "))
944 ;; URL encode any `confusing' characters in the URL. This needs to 944 ;; URL encode any `confusing' characters in the URL. This needs to
945 ;; include at least commas; presumably also close parens. 945 ;; include at least commas; presumably also close parens and dollars.
946 (while (string-match "[,)]" url) 946 (while (string-match "[,)$]" url)
947 (setq url (replace-match 947 (setq url (replace-match
948 (format "%%%x" (string-to-char (match-string 0 url))) t t url))) 948 (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
949 (let* ((process-environment (browse-url-process-environment)) 949 (let* ((process-environment (browse-url-process-environment))
@@ -991,8 +991,8 @@ When called non-interactively, optional second argument NEW-WINDOW is
991used instead of `browse-url-new-window-flag'." 991used instead of `browse-url-new-window-flag'."
992 (interactive (browse-url-interactive-arg "URL: ")) 992 (interactive (browse-url-interactive-arg "URL: "))
993 ;; URL encode any `confusing' characters in the URL. This needs to 993 ;; URL encode any `confusing' characters in the URL. This needs to
994 ;; include at least commas; presumably also close parens. 994 ;; include at least commas; presumably also close parens and dollars.
995 (while (string-match "[,)]" url) 995 (while (string-match "[,)$]" url)
996 (setq url (replace-match 996 (setq url (replace-match
997 (format "%%%x" (string-to-char (match-string 0 url))) t t url))) 997 (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
998 (let* ((process-environment (browse-url-process-environment)) 998 (let* ((process-environment (browse-url-process-environment))
diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index 91943503f5e..1c9c0dfd4b6 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -1,6 +1,6 @@
1;;; newcomment.el --- (un)comment regions of buffers 1;;; newcomment.el --- (un)comment regions of buffers
2 2
3;; Copyright (C) 1999,2000,2003 Free Software Foundation Inc. 3;; Copyright (C) 1999,2000,2003,2004 Free Software Foundation Inc.
4 4
5;; Author: code extracted from Emacs-20's simple.el 5;; Author: code extracted from Emacs-20's simple.el
6;; Maintainer: Stefan Monnier <monnier@cs.yale.edu> 6;; Maintainer: Stefan Monnier <monnier@cs.yale.edu>
@@ -251,8 +251,10 @@ this function before any other, so the rest of the code can assume that
251the variables are properly set." 251the variables are properly set."
252 (unless (and (not comment-start) noerror) 252 (unless (and (not comment-start) noerror)
253 (unless comment-start 253 (unless comment-start
254 (set (make-local-variable 'comment-start) 254 (let ((cs (read-string "No comment syntax is defined. Use: ")))
255 (read-string "No comment syntax is defined. Use: "))) 255 (if (zerop (length cs))
256 (error "No comment syntax defined")
257 (set (make-local-variable 'comment-start) cs))))
256 ;; comment-use-syntax 258 ;; comment-use-syntax
257 (when (eq comment-use-syntax 'undecided) 259 (when (eq comment-use-syntax 'undecided)
258 (set (make-local-variable 'comment-use-syntax) 260 (set (make-local-variable 'comment-use-syntax)
@@ -716,35 +718,9 @@ comment markers."
716 ;; Find the end of the comment. 718 ;; Find the end of the comment.
717 (ept (progn 719 (ept (progn
718 (goto-char spt) 720 (goto-char spt)
719 (unless 721 (unless (or (comment-forward)
720 (or 722 ;; Allow non-terminated comments.
721 (comment-forward) 723 (eobp))
722 ;; Allow eob as comment-end instead of \n.
723 (and
724 (eobp)
725 (let ((s1 (aref (syntax-table) (char-after spt)))
726 (s2 (aref (syntax-table)
727 (or (char-after (1+ spt)) 0)))
728 (sn (aref (syntax-table) ?\n))
729 (flag->b (car (string-to-syntax "> b")))
730 (flag-1b (car (string-to-syntax " 1b")))
731 (flag-2b (car (string-to-syntax " 2b"))))
732 (cond
733 ;; One-character comment-start terminated by
734 ;; \n.
735 ((and
736 (equal sn (string-to-syntax ">"))
737 (equal s1 (string-to-syntax "<")))
738 (insert-char ?\n 1)
739 t)
740 ;; Two-character type b comment-start
741 ;; terminated by \n.
742 ((and
743 (= (logand (car sn) flag->b) flag->b)
744 (= (logand (car s1) flag-1b) flag-1b)
745 (= (logand (car s2) flag-2b) flag-2b))
746 (insert-char ?\n 1)
747 t)))))
748 (error "Can't find the comment end")) 724 (error "Can't find the comment end"))
749 (point))) 725 (point)))
750 (box nil) 726 (box nil)
diff --git a/lisp/pcvs-info.el b/lisp/pcvs-info.el
index 6fa47b9e97c..52989e4c9c6 100644
--- a/lisp/pcvs-info.el
+++ b/lisp/pcvs-info.el
@@ -1,6 +1,7 @@
1;;; pcvs-info.el --- internal representation of a fileinfo entry 1;;; pcvs-info.el --- internal representation of a fileinfo entry
2 2
3;; Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. 3;; Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2004
4;; Free Software Foundation, Inc.
4 5
5;; Author: Stefan Monnier <monnier@cs.yale.edu> 6;; Author: Stefan Monnier <monnier@cs.yale.edu>
6;; Keywords: pcl-cvs 7;; Keywords: pcl-cvs
@@ -219,8 +220,8 @@ to confuse some users sometimes."
219 (file (cvs-fileinfo->file fileinfo)) 220 (file (cvs-fileinfo->file fileinfo))
220 (default-directory (file-name-as-directory (expand-file-name dir))) 221 (default-directory (file-name-as-directory (expand-file-name dir)))
221 (files (directory-files "." nil 222 (files (directory-files "." nil
222 (concat "^" (regexp-quote cvs-bakprefix) 223 (concat "\\`" (regexp-quote cvs-bakprefix)
223 (regexp-quote file) "\\."))) 224 (regexp-quote file) "\\(\\.[0-9]+\\.[0-9]+\\)+\\'")))
224 bf) 225 bf)
225 (dolist (f files bf) 226 (dolist (f files bf)
226 (when (and (file-readable-p f) 227 (when (and (file-readable-p f)
diff --git a/lisp/printing.el b/lisp/printing.el
index a9c1a925c94..6694805fcbd 100644
--- a/lisp/printing.el
+++ b/lisp/printing.el
@@ -5,13 +5,13 @@
5 5
6;; Author: Vinicius Jose Latorre <vinicius@cpqd.com.br> 6;; Author: Vinicius Jose Latorre <vinicius@cpqd.com.br>
7;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br> 7;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br>
8;; Time-stamp: <2004/02/26 00:43:07 vinicius> 8;; Time-stamp: <2004/02/29 23:18:15 vinicius>
9;; Keywords: wp, print, PostScript 9;; Keywords: wp, print, PostScript
10;; Version: 6.7.2 10;; Version: 6.7.2
11;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ 11;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
12 12
13(defconst pr-version "6.7.2" 13(defconst pr-version "6.7.2"
14 "printing.el, v 6.7.2 <2004/02/26 vinicius> 14 "printing.el, v 6.7.2 <2004/02/29 vinicius>
15 15
16Please send all bug fixes and enhancements to 16Please send all bug fixes and enhancements to
17 Vinicius Jose Latorre <vinicius@cpqd.com.br> 17 Vinicius Jose Latorre <vinicius@cpqd.com.br>
@@ -517,7 +517,7 @@ Please send all bug fixes and enhancements to
517;; 5 | Print >|---\ | |Despool... | | 517;; 5 | Print >|---\ | |Despool... | |
518;; 6 | Text Printer: name >|-\ | | +-----------+ | 518;; 6 | Text Printer: name >|-\ | | +-----------+ |
519;; +-----------------------------+ | | | +---------+ +------------+ 519;; +-----------------------------+ | | | +---------+ +------------+
520;; III 7 |[ ]Landscape | | | \-|Directory| | As Is... | Ia 520;; III 7 |[ ]Landscape | | | \-|Directory| | No Prep... | Ia
521;; 8 |[ ]Print Header | | | |Buffer | +------------+ Ib 521;; 8 |[ ]Print Header | | | |Buffer | +------------+ Ib
522;; 9 |[ ]Print Header Frame | | | |Region | | name >|- C 522;; 9 |[ ]Print Header Frame | | | |Region | | name >|- C
523;; 10 |[ ]Line Number | | | +---------+ +------------+ 523;; 10 |[ ]Line Number | | | +---------+ +------------+
@@ -581,8 +581,8 @@ Please send all bug fixes and enhancements to
581;; 581;;
582;; NOTE 2: There are the following options for PostScript file 582;; NOTE 2: There are the following options for PostScript file
583;; processing: 583;; processing:
584;; Ia. Print the file *as is*, that is, send it directly to 584;; Ia. Print the file *No Preprocessing*, that is, send it
585;; PostScript printer. 585;; directly to PostScript printer.
586;; Ib. PostScript utility processing selection. 586;; Ib. PostScript utility processing selection.
587;; See `pr-ps-utility-alist' and `pr-setting-database' for 587;; See `pr-ps-utility-alist' and `pr-setting-database' for
588;; documentation. 588;; documentation.
@@ -2415,7 +2415,7 @@ See `pr-ps-printer-alist'.")
2415 ["Other..." (pr-ps-mode-preview nil t) 2415 ["Other..." (pr-ps-mode-preview nil t)
2416 :keys "\\[pr-ps-mode-preview]"]) 2416 :keys "\\[pr-ps-mode-preview]"])
2417 ("File" 2417 ("File"
2418 ["As Is..." (call-interactively 'pr-ps-file-preview) 2418 ["No Preprocessing..." (call-interactively 'pr-ps-file-preview)
2419 :keys "\\[pr-ps-file-preview]" 2419 :keys "\\[pr-ps-file-preview]"
2420 :help "Preview PostScript file"] 2420 :help "Preview PostScript file"]
2421 "--" 2421 "--"
@@ -2470,7 +2470,7 @@ See `pr-ps-printer-alist'.")
2470 ["Other..." (pr-ps-mode-ps-print nil t) 2470 ["Other..." (pr-ps-mode-ps-print nil t)
2471 :keys "\\[pr-ps-mode-ps-print]"]) 2471 :keys "\\[pr-ps-mode-ps-print]"])
2472 ("File" 2472 ("File"
2473 ["As Is..." (call-interactively 'pr-ps-file-ps-print) 2473 ["No Preprocessing..." (call-interactively 'pr-ps-file-ps-print)
2474 :keys "\\[pr-ps-file-ps-print]" 2474 :keys "\\[pr-ps-file-ps-print]"
2475 :help "Send PostScript file to printer"] 2475 :help "Send PostScript file to printer"]
2476 "--" 2476 "--"
@@ -2624,7 +2624,7 @@ See `pr-ps-printer-alist'.")
2624 ["Other..." (pr-ps-mode-preview nil t) 2624 ["Other..." (pr-ps-mode-preview nil t)
2625 :keys "\\[pr-ps-mode-preview]"]) 2625 :keys "\\[pr-ps-mode-preview]"])
2626 ("File" 2626 ("File"
2627 ["As Is..." (call-interactively 'pr-ps-file-preview) 2627 ["No Preprocessing..." (call-interactively 'pr-ps-file-preview)
2628 :keys "\\[pr-ps-file-preview]"] 2628 :keys "\\[pr-ps-file-preview]"]
2629 "--" 2629 "--"
2630 ["PostScript Utility" pr-update-menus :active pr-ps-utility-alist] 2630 ["PostScript Utility" pr-update-menus :active pr-ps-utility-alist]
@@ -2672,7 +2672,7 @@ See `pr-ps-printer-alist'.")
2672 ["Other..." (pr-ps-mode-ps-print nil t) 2672 ["Other..." (pr-ps-mode-ps-print nil t)
2673 :keys "\\[pr-ps-mode-ps-print]"]) 2673 :keys "\\[pr-ps-mode-ps-print]"])
2674 ("File" 2674 ("File"
2675 ["As Is..." (call-interactively 'pr-ps-file-ps-print) 2675 ["No Preprocessing..." (call-interactively 'pr-ps-file-ps-print)
2676 :keys "\\[pr-ps-file-ps-print]"] 2676 :keys "\\[pr-ps-file-ps-print]"]
2677 "--" 2677 "--"
2678 ["PostScript Utility" pr-update-menus :active pr-ps-utility-alist] 2678 ["PostScript Utility" pr-update-menus :active pr-ps-utility-alist]
@@ -2861,7 +2861,7 @@ II 4 | Printify >|-----\\ |File >|--\\ +--------+
2861 5 | Print >|---\\ | |Despool... | | 2861 5 | Print >|---\\ | |Despool... | |
2862 6 | Text Printer: name >|-\\ | | +-----------+ | 2862 6 | Text Printer: name >|-\\ | | +-----------+ |
2863 +-----------------------------+ | | | +---------+ +------------+ 2863 +-----------------------------+ | | | +---------+ +------------+
2864III 7 |[ ]Landscape | | | \\-|Directory| | As Is... | Ia 2864III 7 |[ ]Landscape | | | \\-|Directory| | No Prep... | Ia
2865 8 |[ ]Print Header | | | |Buffer | +------------+ Ib 2865 8 |[ ]Print Header | | | |Buffer | +------------+ Ib
2866 9 |[ ]Print Header Frame | | | |Region | | name >|- C 2866 9 |[ ]Print Header Frame | | | |Region | | name >|- C
2867 10 |[ ]Line Number | | | +---------+ +------------+ 2867 10 |[ ]Line Number | | | +---------+ +------------+
@@ -2923,8 +2923,8 @@ I. PostScript printing:
2923 switch from gnus *Summary* buffer first. 2923 switch from gnus *Summary* buffer first.
2924 2924
2925 NOTE 2: There are the following options for PostScript file processing: 2925 NOTE 2: There are the following options for PostScript file processing:
2926 Ia. Print the file *as is*, that is, send it directly to 2926 Ia. Print the file *No Preprocessing*, that is, send it
2927 PostScript printer. 2927 directly to PostScript printer.
2928 Ib. PostScript utility processing selection. 2928 Ib. PostScript utility processing selection.
2929 See `pr-ps-utility-alist' and `pr-setting-database' for 2929 See `pr-ps-utility-alist' and `pr-setting-database' for
2930 documentation. 2930 documentation.
@@ -3130,7 +3130,7 @@ The printing interface buffer has the following sections:
3130 NOTE 2: Don't forget to download and install the utilities declared on 3130 NOTE 2: Don't forget to download and install the utilities declared on
3131 `pr-ps-utility-alist'. 3131 `pr-ps-utility-alist'.
3132 3132
3133 * Use It AS-IS : 3133 * No Preprocessing:
3134 If it's turned on, don't use the PostScript utility to preprocess the 3134 If it's turned on, don't use the PostScript utility to preprocess the
3135 PostScript file before printing/previewing. 3135 PostScript file before printing/previewing.
3136 3136
@@ -5752,9 +5752,8 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order."
5752 (pr-choice-alist pr-ps-utility-alist) 5752 (pr-choice-alist pr-ps-utility-alist)
5753 "\n PostScript Utility : " 5753 "\n PostScript Utility : "
5754 " ") 5754 " ")
5755 ;; 1c. PostScript File: Use It AS-IS 5755 ;; 1c. PostScript File: No Preprocessing
5756 (pr-insert-toggle 'pr-i-ps-as-is " Use It ") 5756 (pr-insert-toggle 'pr-i-ps-as-is " No Preprocessing"))
5757 (pr-insert-italic "AS-IS"))
5758 5757
5759 5758
5760(defun pr-insert-section-2 () 5759(defun pr-insert-section-2 ()
@@ -5882,7 +5881,8 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order."
5882 (pr-insert-toggle 'pr-print-using-ghostscript " Print via Ghostscript\n ") 5881 (pr-insert-toggle 'pr-print-using-ghostscript " Print via Ghostscript\n ")
5883 5882
5884 ;; 4. Settings: Upside-Down Page Parity 5883 ;; 4. Settings: Upside-Down Page Parity
5885 (pr-insert-toggle 'ps-print-upside-down " Upside-Down ") 5884 (pr-insert-toggle 'ps-print-upside-down " Upside-Down")
5885 (pr-insert-italic "\n\nSelect Pages : " 2 14)
5886 (pr-insert-menu "Page Parity" 'ps-even-or-odd-pages 5886 (pr-insert-menu "Page Parity" 'ps-even-or-odd-pages
5887 (mapcar #'(lambda (alist) 5887 (mapcar #'(lambda (alist)
5888 (list 'quote 5888 (list 'quote
diff --git a/lisp/progmodes/ebnf-iso.el b/lisp/progmodes/ebnf-iso.el
index 148f23d2cab..0d9977d7084 100644
--- a/lisp/progmodes/ebnf-iso.el
+++ b/lisp/progmodes/ebnf-iso.el
@@ -5,7 +5,7 @@
5 5
6;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> 6;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
7;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> 7;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
8;; Time-stamp: <2004/02/22 14:24:55 vinicius> 8;; Time-stamp: <2004/02/29 18:31:33 vinicius>
9;; Keywords: wp, ebnf, PostScript 9;; Keywords: wp, ebnf, PostScript
10;; Version: 1.7 10;; Version: 1.7
11 11
@@ -113,7 +113,8 @@
113;; ISO EBNF accepts the characters given by <character> production above, 113;; ISO EBNF accepts the characters given by <character> production above,
114;; HORIZONTAL TAB (^I), VERTICAL TAB (^K), NEWLINE (^J or ^M) and FORM FEED 114;; HORIZONTAL TAB (^I), VERTICAL TAB (^K), NEWLINE (^J or ^M) and FORM FEED
115;; (^L), any other characters are illegal. But ebnf2ps accepts also the 115;; (^L), any other characters are illegal. But ebnf2ps accepts also the
116;; european 8-bit accentuated characters (from \240 to \377) and underscore. 116;; european 8-bit accentuated characters (from \240 to \377) and underscore
117;; (_).
117;; 118;;
118;; 119;;
119;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 120;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/lisp/progmodes/ebnf-otz.el b/lisp/progmodes/ebnf-otz.el
index aae8906c384..5c98677c334 100644
--- a/lisp/progmodes/ebnf-otz.el
+++ b/lisp/progmodes/ebnf-otz.el
@@ -5,7 +5,7 @@
5 5
6;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> 6;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
7;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> 7;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
8;; Time-stamp: <2004/02/22 14:24:37 vinicius> 8;; Time-stamp: <2004/02/29 18:40:14 vinicius>
9;; Keywords: wp, ebnf, PostScript 9;; Keywords: wp, ebnf, PostScript
10;; Version: 1.0 10;; Version: 1.0
11 11
@@ -38,6 +38,46 @@
38;; See ebnf2ps.el for documentation. 38;; See ebnf2ps.el for documentation.
39;; 39;;
40;; 40;;
41;; Optimizations
42;; -------------
43;;
44;;
45;; *To be implemented*:
46;; left recursion:
47;; A = B | A C B | A C D. ==> A = B {C (B | D)}*.
48;;
49;; right recursion:
50;; A = B | C A. ==> A = {C}* B.
51;; A = B | D | C A | E A. ==> A = { C | E }* ( B | D ).
52;;
53;; optional:
54;; A = B | C B. ==> A = [C] B.
55;; A = B | B C. ==> A = B [C].
56;; A = D | B D | B C D. ==> A = [B [C]] D.
57;;
58;;
59;; *Already implemented*:
60;; left recursion:
61;; A = B | A C. ==> A = B {C}*.
62;; A = B | A B. ==> A = {B}+.
63;; A = | A B. ==> A = {B}*.
64;; A = B | A C B. ==> A = {B || C}+.
65;; A = B | D | A C | A E. ==> A = ( B | D ) { C | E }*.
66;;
67;; optional:
68;; A = B | . ==> A = [B].
69;; A = | B . ==> A = [B].
70;;
71;; factoration:
72;; A = B C | B D. ==> A = B (C | D).
73;; A = C B | D B. ==> A = (C | D) B.
74;; A = B C E | B D E. ==> A = B (C | D) E.
75;;
76;; none:
77;; A = B | C | . ==> A = B | C | .
78;; A = B | C A D. ==> A = B | C A D.
79;;
80;;
41;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 81;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
42 82
43;;; Code: 83;;; Code:
diff --git a/lisp/progmodes/ebnf-yac.el b/lisp/progmodes/ebnf-yac.el
index 199e076ad61..ff097b5195d 100644
--- a/lisp/progmodes/ebnf-yac.el
+++ b/lisp/progmodes/ebnf-yac.el
@@ -5,7 +5,7 @@
5 5
6;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> 6;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
7;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> 7;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
8;; Time-stamp: <2004/02/22 14:24:17 vinicius> 8;; Time-stamp: <2004/02/29 20:23:29 vinicius>
9;; Keywords: wp, ebnf, PostScript 9;; Keywords: wp, ebnf, PostScript
10;; Version: 1.2.1 10;; Version: 1.2.1
11 11
@@ -68,7 +68,7 @@
68;; Name = "[A-Za-z][A-Za-z0-9_.]*". 68;; Name = "[A-Za-z][A-Za-z0-9_.]*".
69;; 69;;
70;; Comment = "/*" "any character, but the sequence \"*/\"" "*/" 70;; Comment = "/*" "any character, but the sequence \"*/\"" "*/"
71;; | "//" "any character" "\\n". 71;; | "//" "any character, but the newline \"\\n\"" "\\n".
72;; 72;;
73;; 73;;
74;; In other words, a valid Name begins with a letter (upper or lower case) 74;; In other words, a valid Name begins with a letter (upper or lower case)
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index f765b37c76a..5635a1b17f7 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1,6 +1,6 @@
1;;; sh-script.el --- shell-script editing commands for Emacs 1;;; sh-script.el --- shell-script editing commands for Emacs
2 2
3;; Copyright (C) 1993, 94, 95, 96, 97, 1999, 2001, 2003 3;; Copyright (C) 1993, 94, 95, 96, 97, 1999, 2001, 03, 2004
4;; Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
5 5
6;; Author: Daniel Pfeiffer <occitan@esperanto.org> 6;; Author: Daniel Pfeiffer <occitan@esperanto.org>
@@ -917,7 +917,7 @@ be indented (i.e. a <<- was used rather than just <<)."
917 ;; Skip through one pattern 917 ;; Skip through one pattern
918 (while 918 (while
919 (or (/= 0 (skip-syntax-backward "w_")) 919 (or (/= 0 (skip-syntax-backward "w_"))
920 (/= 0 (skip-chars-backward "?[]*/\\")) 920 (/= 0 (skip-chars-backward "?[]*@/\\"))
921 (and (sh-is-quoted-p (1- (point))) 921 (and (sh-is-quoted-p (1- (point)))
922 (goto-char (- (point) 2))) 922 (goto-char (- (point) 2)))
923 (when (memq (char-before) '(?\" ?\')) 923 (when (memq (char-before) '(?\" ?\'))
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index e49d5f5d251..7cf9ec86f4a 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -1,7 +1,7 @@
1;;; ps-print.el --- print text from the buffer as PostScript 1;;; ps-print.el --- print text from the buffer as PostScript
2 2
3;; Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 3;; Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
4;; 2003 Free Software Foundation, Inc. 4;; 2003, 2004 Free Software Foundation, Inc.
5 5
6;; Author: Jim Thompson (was <thompson@wg2.waii.com>) 6;; Author: Jim Thompson (was <thompson@wg2.waii.com>)
7;; Jacques Duthen (was <duthen@cegelec-red.fr>) 7;; Jacques Duthen (was <duthen@cegelec-red.fr>)
@@ -10,12 +10,12 @@
10;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters) 10;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters)
11;; Vinicius Jose Latorre <viniciusjl@ig.com.br> 11;; Vinicius Jose Latorre <viniciusjl@ig.com.br>
12;; Keywords: wp, print, PostScript 12;; Keywords: wp, print, PostScript
13;; Time-stamp: <2003/07/10 19:19:12 vinicius> 13;; Time-stamp: <2004/02/29 00:07:55 vinicius>
14;; Version: 6.6.2 14;; Version: 6.6.3
15;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ 15;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
16 16
17(defconst ps-print-version "6.6.2" 17(defconst ps-print-version "6.6.3"
18 "ps-print.el, v 6.6.2 <2003/07/10 vinicius> 18 "ps-print.el, v 6.6.3 <2004/02/29 vinicius>
19 19
20Vinicius's last change version -- this file may have been edited as part of 20Vinicius's last change version -- this file may have been edited as part of
21Emacs without changes to the version number. When reporting bugs, please also 21Emacs without changes to the version number. When reporting bugs, please also
@@ -1213,6 +1213,9 @@ Please send all bug fixes and enhancements to
1213;; 1213;;
1214;; [vinicius] Vinicius Jose Latorre <viniciusjl@ig.com.br> 1214;; [vinicius] Vinicius Jose Latorre <viniciusjl@ig.com.br>
1215;; 1215;;
1216;; 20040229
1217;; `ps-time-stamp-yyyy-mm-dd', `ps-time-stamp-iso8601'
1218;;
1216;; 20010619 1219;; 20010619
1217;; `ps-time-stamp-locale-default' 1220;; `ps-time-stamp-locale-default'
1218;; 1221;;
@@ -1261,7 +1264,7 @@ Please send all bug fixes and enhancements to
1261;; 1264;;
1262;; [keinichi] 19990509 Kein'ichi Handa <handa@etl.go.jp> 1265;; [keinichi] 19990509 Kein'ichi Handa <handa@etl.go.jp>
1263;; 1266;;
1264;; `ps-print-region-function' 1267;; `ps-print-region-function'
1265;; 1268;;
1266;; [vinicius] Vinicius Jose Latorre <viniciusjl@ig.com.br> 1269;; [vinicius] Vinicius Jose Latorre <viniciusjl@ig.com.br>
1267;; 1270;;
@@ -1274,7 +1277,7 @@ Please send all bug fixes and enhancements to
1274;; 1277;;
1275;; [keinichi] 19980819 Kein'ichi Handa <handa@etl.go.jp> 1278;; [keinichi] 19980819 Kein'ichi Handa <handa@etl.go.jp>
1276;; 1279;;
1277;; Multi-byte buffer handling. 1280;; Multi-byte buffer handling.
1278;; 1281;;
1279;; [vinicius] Vinicius Jose Latorre <viniciusjl@ig.com.br> 1282;; [vinicius] Vinicius Jose Latorre <viniciusjl@ig.com.br>
1280;; 1283;;
@@ -1370,9 +1373,11 @@ Please send all bug fixes and enhancements to
1370;; Thanks to David X Callaway <dxc@xprt.net> for helping debugging PostScript 1373;; Thanks to David X Callaway <dxc@xprt.net> for helping debugging PostScript
1371;; level 1 compatibility. 1374;; level 1 compatibility.
1372;; 1375;;
1373;; Thanks to Colin Marquardt <colin.marquardt@usa.alcatel.com> for upside-down, 1376;; Thanks to Colin Marquardt <colin.marquardt@usa.alcatel.com> for:
1374;; line number step, line number start and zebra stripe follow suggestions, and 1377;; - upside-down, line number step, line number start and zebra stripe
1375;; for XEmacs beta-tests. 1378;; follow suggestions.
1379;; - `ps-time-stamp-yyyy-mm-dd' and `ps-time-stamp-iso8601' suggestion.
1380;; - and for XEmacs beta-tests.
1376;; 1381;;
1377;; Thanks to Klaus Berndl <klaus.berndl@sdm.de> for user defined PostScript 1382;; Thanks to Klaus Berndl <klaus.berndl@sdm.de> for user defined PostScript
1378;; prologue code suggestion, for odd/even printing suggestion and for 1383;; prologue code suggestion, for odd/even printing suggestion and for
@@ -3111,7 +3116,9 @@ delimiters '(' and ')'.
3111For symbols with bound functions, the function is called and should return a 3116For symbols with bound functions, the function is called and should return a
3112string to be inserted into the array. For symbols with bound values, the value 3117string to be inserted into the array. For symbols with bound values, the value
3113should be a string to be inserted into the array. In either case, function or 3118should be a string to be inserted into the array. In either case, function or
3114variable, the string value has PostScript string delimiters added to it." 3119variable, the string value has PostScript string delimiters added to it.
3120
3121If symbols are unbounded, they are silently ignored."
3115 :type '(repeat (choice :menu-tag "Left Header" 3122 :type '(repeat (choice :menu-tag "Left Header"
3116 :tag "Left Header" 3123 :tag "Left Header"
3117 string symbol)) 3124 string symbol))
@@ -3135,6 +3142,11 @@ There are the following basic functions implemented:
3135 3142
3136 `ps-time-stamp-mon-dd-yyyy' Return date as \"Jun 18 2001\". 3143 `ps-time-stamp-mon-dd-yyyy' Return date as \"Jun 18 2001\".
3137 3144
3145 `ps-time-stamp-yyyy-mm-dd' Return date as \"2001-06-18\" (ISO
3146 date).
3147
3148 `ps-time-stamp-iso8601' Alias for `ps-time-stamp-yyyy-mm-dd'.
3149
3138You can also create your own time stamp function by using `format-time-string' 3150You can also create your own time stamp function by using `format-time-string'
3139\(which see)." 3151\(which see)."
3140 :type '(repeat (choice :menu-tag "Right Header" 3152 :type '(repeat (choice :menu-tag "Right Header"
@@ -3157,7 +3169,9 @@ string literals should be delimited with PostScript string delimiters '(' and
3157For symbols with bound functions, the function is called and should return a 3169For symbols with bound functions, the function is called and should return a
3158string to be inserted into the array. For symbols with bound values, the value 3170string to be inserted into the array. For symbols with bound values, the value
3159should be a string to be inserted into the array. In either case, function or 3171should be a string to be inserted into the array. In either case, function or
3160variable, the string value has PostScript string delimiters added to it." 3172variable, the string value has PostScript string delimiters added to it.
3173
3174If symbols are unbounded, they are silently ignored."
3161 :version "21.1" 3175 :version "21.1"
3162 :type '(repeat (choice :menu-tag "Left Footer" 3176 :type '(repeat (choice :menu-tag "Left Footer"
3163 :tag "Left Footer" 3177 :tag "Left Footer"
@@ -3182,6 +3196,11 @@ There are the following basic functions implemented:
3182 3196
3183 `ps-time-stamp-mon-dd-yyyy' Return date as \"Jun 18 2001\". 3197 `ps-time-stamp-mon-dd-yyyy' Return date as \"Jun 18 2001\".
3184 3198
3199 `ps-time-stamp-yyyy-mm-dd' Return date as \"2001-06-18\" (ISO
3200 date).
3201
3202 `ps-time-stamp-iso8601' Alias for `ps-time-stamp-yyyy-mm-dd'.
3203
3185You can also create your own time stamp function by using `format-time-string' 3204You can also create your own time stamp function by using `format-time-string'
3186\(which see)." 3205\(which see)."
3187 :version "21.1" 3206 :version "21.1"
@@ -3694,6 +3713,15 @@ It can be retrieved with `(ps-get ALIST-SYM KEY)'."
3694 (format-time-string "%b %d %Y")) 3713 (format-time-string "%b %d %Y"))
3695 3714
3696 3715
3716(defun ps-time-stamp-yyyy-mm-dd ()
3717 "Return date as \"2001-06-18\" (ISO date)."
3718 (format-time-string "%Y-%m-%d"))
3719
3720
3721(defalias 'ps-time-stamp-iso8601 'ps-time-stamp-yyyy-mm-dd
3722 "Alias for `ps-time-stamp-yyyy-mm-dd' (which see).")
3723
3724
3697(defun ps-time-stamp-hh:mm:ss () 3725(defun ps-time-stamp-hh:mm:ss ()
3698 "Return time as \"17:28:31\"." 3726 "Return time as \"17:28:31\"."
3699 (format-time-string "%T")) 3727 (format-time-string "%T"))
@@ -6608,10 +6636,12 @@ If FACE is not a valid face name, it is used default face."
6608(defun ps-kill-emacs-check () 6636(defun ps-kill-emacs-check ()
6609 (let (ps-buffer) 6637 (let (ps-buffer)
6610 (and (setq ps-buffer (get-buffer ps-spool-buffer-name)) 6638 (and (setq ps-buffer (get-buffer ps-spool-buffer-name))
6639 (buffer-name ps-buffer) ; check if it's not killed
6611 (buffer-modified-p ps-buffer) 6640 (buffer-modified-p ps-buffer)
6612 (y-or-n-p "Unprinted PostScript waiting; print now? ") 6641 (y-or-n-p "Unprinted PostScript waiting; print now? ")
6613 (ps-despool)) 6642 (ps-despool))
6614 (and (setq ps-buffer (get-buffer ps-spool-buffer-name)) 6643 (and (setq ps-buffer (get-buffer ps-spool-buffer-name))
6644 (buffer-name ps-buffer) ; check if it's not killed
6615 (buffer-modified-p ps-buffer) 6645 (buffer-modified-p ps-buffer)
6616 (not (yes-or-no-p "Unprinted PostScript waiting; exit anyway? ")) 6646 (not (yes-or-no-p "Unprinted PostScript waiting; exit anyway? "))
6617 (error "Unprinted PostScript")))) 6647 (error "Unprinted PostScript"))))
diff --git a/lisp/simple.el b/lisp/simple.el
index d3e189dbe13..1f710576fa9 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -739,11 +739,11 @@ to get different commands to edit and resubmit."
739This is used for all minibuffer input 739This is used for all minibuffer input
740except when an alternate history list is specified.") 740except when an alternate history list is specified.")
741(defvar minibuffer-history-sexp-flag nil 741(defvar minibuffer-history-sexp-flag nil
742 "Non-nil when doing history operations on the variable `command-history'. 742 "Control whether history list elements are expressions or strings.
743More generally, indicates that the history list being acted on 743If the value of this variable equals current minibuffer depth,
744contains expressions rather than strings. 744they are expressions; otherwise they are strings.
745It is only valid if its value equals the current minibuffer depth, 745\(That convention is designed to do the right thing fora
746to handle recursive uses of the minibuffer.") 746recursive uses of the minibuffer.)")
747(setq minibuffer-history-variable 'minibuffer-history) 747(setq minibuffer-history-variable 'minibuffer-history)
748(setq minibuffer-history-position nil) 748(setq minibuffer-history-position nil)
749(defvar minibuffer-history-search-history nil) 749(defvar minibuffer-history-search-history nil)
@@ -972,9 +972,13 @@ as an argument limits undo to changes within the current region."
972 ;; another undo command will find the undo history empty 972 ;; another undo command will find the undo history empty
973 ;; and will get another error. To begin undoing the undos, 973 ;; and will get another error. To begin undoing the undos,
974 ;; you must type some other command. 974 ;; you must type some other command.
975 (setq this-command 'undo)
976 (let ((modified (buffer-modified-p)) 975 (let ((modified (buffer-modified-p))
977 (recent-save (recent-auto-save-p))) 976 (recent-save (recent-auto-save-p)))
977 ;; If we get an error in undo-start,
978 ;; the next command should not be a "consecutive undo".
979 ;; So set `this-command' to something other than `undo'.
980 (setq this-command 'undo-start)
981
978 (unless (eq last-command 'undo) 982 (unless (eq last-command 'undo)
979 (setq undo-in-region 983 (setq undo-in-region
980 (if transient-mark-mode mark-active (and arg (not (numberp arg))))) 984 (if transient-mark-mode mark-active (and arg (not (numberp arg)))))
@@ -983,6 +987,8 @@ as an argument limits undo to changes within the current region."
983 (undo-start)) 987 (undo-start))
984 ;; get rid of initial undo boundary 988 ;; get rid of initial undo boundary
985 (undo-more 1)) 989 (undo-more 1))
990 ;; If we got this far, the next command should be a consecutive undo.
991 (setq this-command 'undo)
986 ;; Check to see whether we're hitting a redo record, and if 992 ;; Check to see whether we're hitting a redo record, and if
987 ;; so, ask the user whether she wants to skip the redo/undo pair. 993 ;; so, ask the user whether she wants to skip the redo/undo pair.
988 (let ((equiv (gethash pending-undo-list undo-equiv-table))) 994 (let ((equiv (gethash pending-undo-list undo-equiv-table)))
@@ -2239,7 +2245,10 @@ even beep.)"
2239 (save-excursion 2245 (save-excursion
2240 (end-of-visible-line) (point)))) 2246 (end-of-visible-line) (point))))
2241 (if (or (save-excursion 2247 (if (or (save-excursion
2242 (skip-chars-forward " \t" end) 2248 ;; If trailing whitespace is visible,
2249 ;; don't treat it as nothing.
2250 (unless show-trailing-whitespace
2251 (skip-chars-forward " \t" end))
2243 (= (point) end)) 2252 (= (point) end))
2244 (and kill-whole-line (bolp))) 2253 (and kill-whole-line (bolp)))
2245 (forward-visible-line 1) 2254 (forward-visible-line 1)
diff --git a/lisp/sort.el b/lisp/sort.el
index 541f598e7a5..76559f17288 100644
--- a/lisp/sort.el
+++ b/lisp/sort.el
@@ -480,19 +480,30 @@ Use \\[untabify] to convert tabs to spaces before sorting."
480 (setq col-end (max col-beg1 col-end1)) 480 (setq col-end (max col-beg1 col-end1))
481 (if (search-backward "\t" beg1 t) 481 (if (search-backward "\t" beg1 t)
482 (error "sort-columns does not work with tabs -- use M-x untabify")) 482 (error "sort-columns does not work with tabs -- use M-x untabify"))
483 (if (not (or (eq system-type 'vax-vms) 483 (if (not (or (memq system-type '(vax-vms windows-nt ms-dos))
484 (text-properties-at beg1) 484 (let ((pos beg1) plist fontified)
485 (< (next-property-change beg1 nil end1) end1))) 485 (catch 'found
486 (while (< pos end1)
487 (setq plist (text-properties-at pos))
488 (setq fontified (plist-get plist 'fontified))
489 (while (consp plist)
490 (unless (or (eq (car plist) 'fontified)
491 (and (eq (car plist) 'face)
492 fontified))
493 (throw 'found t))
494 (setq plist (cddr plist)))
495 (setq pos (next-property-change pos nil end1)))))))
486 ;; Use the sort utility if we can; it is 4 times as fast. 496 ;; Use the sort utility if we can; it is 4 times as fast.
487 ;; Do not use it if there are any properties in the region, 497 ;; Do not use it if there are any non-font-lock properties
488 ;; since the sort utility would lose the properties. 498 ;; in the region, since the sort utility would lose the
499 ;; properties.
489 (let ((sort-args (list (if reverse "-rt\n" "-t\n") 500 (let ((sort-args (list (if reverse "-rt\n" "-t\n")
490 (concat "+0." (int-to-string col-start)) 501 (concat "+0." (int-to-string col-start))
491 (concat "-0." (int-to-string col-end))))) 502 (concat "-0." (int-to-string col-end)))))
492 (when sort-fold-case 503 (when sort-fold-case
493 (push "-f" sort-args)) 504 (push "-f" sort-args))
494 (apply #'call-process-region beg1 end1 "sort" t t nil sort-args)) 505 (apply #'call-process-region beg1 end1 "sort" t t nil sort-args))
495 ;; On VMS, use Emacs's own facilities. 506 ;; On VMS and ms-windows, use Emacs's own facilities.
496 (save-excursion 507 (save-excursion
497 (save-restriction 508 (save-restriction
498 (narrow-to-region beg1 end1) 509 (narrow-to-region beg1 end1)
diff --git a/lisp/startup.el b/lisp/startup.el
index e79ea4407b1..3186c8a3c27 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -83,8 +83,8 @@ the startup message unless he personally acts to inhibit it."
83(defvar command-switch-alist nil 83(defvar command-switch-alist nil
84 "Alist of command-line switches. 84 "Alist of command-line switches.
85Elements look like (SWITCH-STRING . HANDLER-FUNCTION). 85Elements look like (SWITCH-STRING . HANDLER-FUNCTION).
86HANDLER-FUNCTION receives switch name as sole arg; 86HANDLER-FUNCTION receives the switch string as its sole argument;
87remaining command-line args are in the variable `command-line-args-left'.") 87the remaining command-line args are in the variable `command-line-args-left'.")
88 88
89(defvar command-line-args-left nil 89(defvar command-line-args-left nil
90 "List of command-line args not yet processed.") 90 "List of command-line args not yet processed.")
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el
index 5aded4a85e8..7a794d67c5e 100644
--- a/lisp/textmodes/fill.el
+++ b/lisp/textmodes/fill.el
@@ -1,6 +1,6 @@
1;;; fill.el --- fill commands for Emacs 1;;; fill.el --- fill commands for Emacs
2 2
3;; Copyright (C) 1985,86,92,94,95,96,97,1999,2001,02,2003 3;; Copyright (C) 1985,86,92,94,95,96,97,1999,2001,02,03,2004
4;; Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
5 5
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -732,7 +732,7 @@ If `fill-paragraph-function' is nil, return the `fill-prefix' used for filling."
732 ;; Then try our syntax-aware filling code. 732 ;; Then try our syntax-aware filling code.
733 (and fill-paragraph-handle-comment 733 (and fill-paragraph-handle-comment
734 ;; Our code only handles \n-terminated comments right now. 734 ;; Our code only handles \n-terminated comments right now.
735 comment-start comment-start-skip (equal comment-end "") 735 comment-start (equal comment-end "")
736 (let ((fill-paragraph-handle-comment nil)) 736 (let ((fill-paragraph-handle-comment nil))
737 (fill-comment-paragraph arg))) 737 (fill-comment-paragraph arg)))
738 ;; If it all fails, default to the good ol' text paragraph filling. 738 ;; If it all fails, default to the good ol' text paragraph filling.
@@ -822,7 +822,11 @@ can take care of filling. JUSTIFY is used as in `fill-paragraph'."
822 (looking-at comment-re))) 822 (looking-at comment-re)))
823 ;; We may have gone too far. Go forward again. 823 ;; We may have gone too far. Go forward again.
824 (line-beginning-position 824 (line-beginning-position
825 (if (looking-at (concat ".*\\(?:" comment-start-skip "\\)")) 825 (if (progn
826 (goto-char
827 (or (comment-search-forward (line-end-position) t)
828 (point)))
829 (looking-at comment-re))
826 1 2)))) 830 1 2))))
827 ;; Find the beginning of the first line past the region to fill. 831 ;; Find the beginning of the first line past the region to fill.
828 (save-excursion 832 (save-excursion
diff --git a/lisp/xml.el b/lisp/xml.el
index dbd991f5583..61a79b37104 100644
--- a/lisp/xml.el
+++ b/lisp/xml.el
@@ -1,6 +1,6 @@
1;;; xml.el --- XML parser 1;;; xml.el --- XML parser
2 2
3;; Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. 3;; Copyright (C) 2000, 01, 03, 2004 Free Software Foundation, Inc.
4 4
5;; Author: Emmanuel Briot <briot@gnat.com> 5;; Author: Emmanuel Briot <briot@gnat.com>
6;; Maintainer: Mark A. Hershberger <mah@everybody.org> 6;; Maintainer: Mark A. Hershberger <mah@everybody.org>
@@ -109,10 +109,7 @@ CHILD-NAME should be a lower case symbol."
109Return `nil' if the attribute was not found. 109Return `nil' if the attribute was not found.
110 110
111See also `xml-get-attribute'." 111See also `xml-get-attribute'."
112 (when (xml-node-attributes node) 112 (cdr (assoc attribute (xml-node-attributes node))))
113 (let ((value (assoc attribute (xml-node-attributes node))))
114 (when value
115 (cdr value)))))
116 113
117(defsubst xml-get-attribute (node attribute) 114(defsubst xml-get-attribute (node attribute)
118 "Get from NODE the value of ATTRIBUTE. 115 "Get from NODE the value of ATTRIBUTE.
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index c71a5ad2b2f..01ab3c1bd8c 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,12 @@
12004-03-04 Richard M. Stallman <rms@gnu.org>
2
3 * processes.texi: Fix typos.
4
5 * lists.texi (Building Lists): Minor clarification.
6
7 * hash.texi (Creating Hash): Correct the meaning of t for WEAK
8 in make-hash-table.
9
12004-02-29 Juanma Barranquero <lektu@terra.es> 102004-02-29 Juanma Barranquero <lektu@terra.es>
2 11
3 * makefile.w32-in (clean, maintainer-clean): Use $(DEL) instead of 12 * makefile.w32-in (clean, maintainer-clean): Use $(DEL) instead of
diff --git a/lispref/abbrevs.texi b/lispref/abbrevs.texi
index 33ebecd70e5..ff6cdf77c2e 100644
--- a/lispref/abbrevs.texi
+++ b/lispref/abbrevs.texi
@@ -288,12 +288,12 @@ expansion.
288@end defopt 288@end defopt
289 289
290@defvar abbrev-start-location 290@defvar abbrev-start-location
291This is a marker pointing to the buffer position for 291The value of this variable is a marker pointing to the buffer position
292@code{expand-abbrev} to use as the start of the next abbrev to be 292for @code{expand-abbrev} to use as the start of the next abbrev to be
293expanded. (@code{nil} means use the word before point instead.) 293expanded. The value can also be @code{nil}, which means to use the
294@code{abbrev-start-location} is set to @code{nil} each time 294word before point instead. @code{abbrev-start-location} is set to
295@code{expand-abbrev} is called. This variable is also set by 295@code{nil} each time @code{expand-abbrev} is called. This variable is
296@code{abbrev-prefix-mark}. 296also set by @code{abbrev-prefix-mark}.
297@end defvar 297@end defvar
298 298
299@defvar abbrev-start-location-buffer 299@defvar abbrev-start-location-buffer
diff --git a/lispref/hash.texi b/lispref/hash.texi
index 3c4cb4df19c..bf4555d3903 100644
--- a/lispref/hash.texi
+++ b/lispref/hash.texi
@@ -98,7 +98,7 @@ value in the hash table preserves it from garbage collection.
98 98
99The value, @var{weak}, must be one of @code{nil}, @code{key}, 99The value, @var{weak}, must be one of @code{nil}, @code{key},
100@code{value}, @code{key-or-value}, @code{key-and-value}, or @code{t} 100@code{value}, @code{key-or-value}, @code{key-and-value}, or @code{t}
101which is an alias for @code{key-or-value}. If @var{weak} is @code{key} 101which is an alias for @code{key-and-value}. If @var{weak} is @code{key}
102then the hash table does not prevent its keys from being collected as 102then the hash table does not prevent its keys from being collected as
103garbage (if they are not referenced anywhere else); if a particular key 103garbage (if they are not referenced anywhere else); if a particular key
104does get collected, the corresponding association is removed from the 104does get collected, the corresponding association is removed from the
diff --git a/lispref/lists.texi b/lispref/lists.texi
index e3891f81971..41b3918de06 100644
--- a/lispref/lists.texi
+++ b/lispref/lists.texi
@@ -448,11 +448,11 @@ interesting to note that @code{list} is used more times in the source
448code for Emacs than @code{cons}. 448code for Emacs than @code{cons}.
449 449
450@defun cons object1 object2 450@defun cons object1 object2
451This function is the fundamental function for building new list 451This function is the most basic function for building new list
452structure. It creates a new cons cell, making @var{object1} the 452structure. It creates a new cons cell, making @var{object1} the
453@sc{car}, and @var{object2} the @sc{cdr}. It then returns the new cons 453@sc{car}, and @var{object2} the @sc{cdr}. It then returns the new
454cell. The arguments @var{object1} and @var{object2} may be any Lisp 454cons cell. The arguments @var{object1} and @var{object2} may be any
455objects, but most often @var{object2} is a list. 455Lisp objects, but most often @var{object2} is a list.
456 456
457@example 457@example
458@group 458@group
diff --git a/lispref/markers.texi b/lispref/markers.texi
index 7f4ab1d2b78..859edb0b6b8 100644
--- a/lispref/markers.texi
+++ b/lispref/markers.texi
@@ -337,9 +337,10 @@ text is inserted at its position. If @var{type} is @code{nil},
337This function reports the current insertion type of @var{marker}. 337This function reports the current insertion type of @var{marker}.
338@end defun 338@end defun
339 339
340Most functions that create markers, without explicitly specifying an 340Most functions that create markers, without an argument allowing to
341insertion type, create them with insertion type @code{nil}. Also, the 341specify the insertion type, create them with insertion type
342mark has, by default, insertion type @code{nil}. 342@code{nil}. Also, the mark has, by default, insertion type
343@code{nil}.
343 344
344@node Moving Markers 345@node Moving Markers
345@section Moving Marker Positions 346@section Moving Marker Positions
diff --git a/lispref/processes.texi b/lispref/processes.texi
index c76261908d7..7a7c19eef9f 100644
--- a/lispref/processes.texi
+++ b/lispref/processes.texi
@@ -382,7 +382,7 @@ inputinput@point{}
382 382
383@defun call-process-shell-command command &optional infile destination display &rest args 383@defun call-process-shell-command command &optional infile destination display &rest args
384This function executes the shell command @var{command} synchronously 384This function executes the shell command @var{command} synchronously
385in separate process. The final arguments @var{args} are additional 385in a separate process. The final arguments @var{args} are additional
386arguments to add at the end of @var{command}. The other arguments 386arguments to add at the end of @var{command}. The other arguments
387are handled as in @code{call-process}. 387are handled as in @code{call-process}.
388@end defun 388@end defun
@@ -1512,7 +1512,7 @@ and @code{failed}. For a network server, the status is always
1512@code{listen}. None of those values is possible for a real 1512@code{listen}. None of those values is possible for a real
1513subprocess. @xref{Process Information}. 1513subprocess. @xref{Process Information}.
1514 1514
1515 You can stop and resume operation of a network processes by calling 1515 You can stop and resume operation of a network process by calling
1516@code{stop-process} and @code{continue-process}. For a server 1516@code{stop-process} and @code{continue-process}. For a server
1517process, being stopped means not accepting new connections. (Up to 5 1517process, being stopped means not accepting new connections. (Up to 5
1518connection requests will be queued for when you resume the server; you 1518connection requests will be queued for when you resume the server; you
@@ -1667,10 +1667,10 @@ meaning ask the system to allocate an unused port to listen on.
1667@section Datagrams 1667@section Datagrams
1668@cindex datagrams 1668@cindex datagrams
1669 1669
1670 A datagram connection communicates with individual packets 1670 A datagram connection communicates with individual packets rather
1671rather than streams of data. Each call to @code{process-send} 1671than streams of data. Each call to @code{process-send} sends one
1672sends one datagram packet, and each datagram received results 1672datagram packet (@pxref{Input to Processes}), and each datagram
1673in one call to the filter function. 1673received results in one call to the filter function.
1674 1674
1675 The datagram connection doesn't have to talk with the same remote 1675 The datagram connection doesn't have to talk with the same remote
1676peer all the time. It has a @dfn{remote peer address} which specifies 1676peer all the time. It has a @dfn{remote peer address} which specifies
@@ -1771,10 +1771,10 @@ in the local address space.
1771@item 1771@item
1772An ``unsupported family'' address is represented by a cons 1772An ``unsupported family'' address is represented by a cons
1773@code{(@var{f} . @var{av})}, where @var{f} is the family number and 1773@code{(@var{f} . @var{av})}, where @var{f} is the family number and
1774@var{av} is a vector specifying the socket address using with one 1774@var{av} is a vector specifying the socket address using one element
1775element per address data byte. Do not rely on this format in portable 1775per address data byte. Do not rely on this format in portable code,
1776code, as it may depend on implementation defined constants, data 1776as it may depend on implementation defined constants, data sizes, and
1777sizes, and data structure alignment. 1777data structure alignment.
1778@end itemize 1778@end itemize
1779 1779
1780@item :nowait @var{bool} 1780@item :nowait @var{bool}
diff --git a/man/ChangeLog b/man/ChangeLog
index a43729904a8..c949d6f2fea 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,17 @@
12004-03-04 Richard M. Stallman <rms@gnu.org>
2
3 * search.texi (Regexps): Explain that ^ and $ have their
4 special meanings only in certain contexts.
5
6 * programs.texi (Expressions): Doc C-M-SPC as alias for C-M-@.
7
8 * mule.texi (Specify Coding): Doc C-x RET F.
9
10 * buffers.texi (Misc Buffer): Explain use of M-x rename-uniquely
11 for multiple compile and grep buffers.
12 (Indirect Buffers): Don't recommand clone-indirect-buffer
13 for multiple compile and grep buffers.
14
12004-02-29 Simon Josefsson <jas@extundo.com> 152004-02-29 Simon Josefsson <jas@extundo.com>
2 16
3 * smtpmail.texi (Authentication): Changed the list of supported 17 * smtpmail.texi (Authentication): Changed the list of supported
diff --git a/man/buffers.texi b/man/buffers.texi
index b03209cd01c..7f4c4f3f39e 100644
--- a/man/buffers.texi
+++ b/man/buffers.texi
@@ -217,14 +217,18 @@ the new name as a minibuffer argument. There is no default. If you
217specify a name that is in use for some other buffer, an error happens and 217specify a name that is in use for some other buffer, an error happens and
218no renaming is done. 218no renaming is done.
219 219
220 @kbd{M-x rename-uniquely} renames the current buffer to a similar name 220 @kbd{M-x rename-uniquely} renames the current buffer to a similar
221with a numeric suffix added to make it both different and unique. This 221name with a numeric suffix added to make it both different and unique.
222command does not need an argument. It is useful for creating multiple 222This command does not need an argument. It is useful for creating
223shell buffers: if you rename the @samp{*Shell*} buffer, then do @kbd{M-x 223multiple shell buffers: if you rename the @samp{*Shell*} buffer, then
224shell} again, it makes a new shell buffer named @samp{*Shell*}; 224do @kbd{M-x shell} again, it makes a new shell buffer named
225meanwhile, the old shell buffer continues to exist under its new name. 225@samp{*Shell*}; meanwhile, the old shell buffer continues to exist
226This method is also good for mail buffers, compilation buffers, and most 226under its new name. This method is also good for mail buffers,
227Emacs features that create special buffers with particular names. 227compilation buffers, and most Emacs features that create special
228buffers with particular names. (With some of these features, such as
229@kbd{M-x compile}, @kbd{M-x grep} an @kbd{M-x info}, you need to
230switch to some other buffer before using the command, in order for it
231to make a different buffer.)
228 232
229@findex view-buffer 233@findex view-buffer
230 @kbd{M-x view-buffer} is much like @kbd{M-x view-file} (@pxref{Misc 234 @kbd{M-x view-buffer} is much like @kbd{M-x view-file} (@pxref{Misc
@@ -471,22 +475,21 @@ buffer, but killing an indirect buffer has no effect on its base buffer.
471 One way to use indirect buffers is to display multiple views of an 475 One way to use indirect buffers is to display multiple views of an
472outline. @xref{Outline Views}. 476outline. @xref{Outline Views}.
473 477
474@cindex multiple @samp{*info*} and @samp{*Help*} buffers
475 A quick and handy way to make an indirect buffer is with the command 478 A quick and handy way to make an indirect buffer is with the command
476@kbd{M-x clone-indirect-buffer}. It creates and selects an indirect 479@kbd{M-x clone-indirect-buffer}. It creates and selects an indirect
477buffer whose base buffer is the current buffer. With a numeric 480buffer whose base buffer is the current buffer. With a numeric
478argument, it prompts for the name of the indirect buffer; otherwise it 481argument, it prompts for the name of the indirect buffer; otherwise it
479defaults to the name of the current buffer, modifying it by adding a 482defaults to the name of the current buffer, modifying it by adding a
480@samp{<@var{n}>} prefix if required. @kbd{C-x 4 c} 483@samp{<@var{n}>} suffix if required. @kbd{C-x 4 c}
481(@code{clone-indirect-buffer-other-window}) works like @kbd{M-x 484(@code{clone-indirect-buffer-other-window}) works like @kbd{M-x
482clone-indirect-buffer}, but it selects the cloned buffer in another 485clone-indirect-buffer}, but it selects the new buffer in another
483window. These commands come in handy if you want to create new 486window.
484@samp{*info*} or @samp{*Help*} buffers, for example. 487
485 488 The more general way to make an indirect buffer is with the command
486 The more general way is with the command @kbd{M-x 489@kbd{M-x make-indirect-buffer}. It creates an indirect buffer from
487make-indirect-buffer}. It creates an indirect buffer from buffer 490buffer @var{base-buffer}, under the name @var{indirect-name}. It
488@var{base-buffer}, under the name @var{indirect-name}. It prompts for 491prompts for both @var{base-buffer} and @var{indirect-name} using the
489both @var{base-buffer} and @var{indirect-name} using the minibuffer. 492minibuffer.
490 493
491@node Buffer Convenience 494@node Buffer Convenience
492@section Convenience Features and Customization of Buffer Handling 495@section Convenience Features and Customization of Buffer Handling
diff --git a/man/mule.texi b/man/mule.texi
index 73c589b330e..86349c0b40e 100644
--- a/man/mule.texi
+++ b/man/mule.texi
@@ -917,6 +917,12 @@ subprocess input and output in the current buffer.
917Use coding system @var{coding} for transferring selections to and from 917Use coding system @var{coding} for transferring selections to and from
918other programs through the window system. 918other programs through the window system.
919 919
920@item C-x @key{RET} F @var{coding} @key{RET}
921Use coding system @var{coding} for encoding and decoding file
922@emph{names}. This affects the use of non-ASCII characters in file
923names. It has no effect on reading and writing the @emph{contents} of
924files.
925
920@item C-x @key{RET} X @var{coding} @key{RET} 926@item C-x @key{RET} X @var{coding} @key{RET}
921Use coding system @var{coding} for transferring @emph{one} 927Use coding system @var{coding} for transferring @emph{one}
922selection---the next one---to or from the window system. 928selection---the next one---to or from the window system.
@@ -1044,12 +1050,16 @@ current language environment.
1044 1050
1045@vindex file-name-coding-system 1051@vindex file-name-coding-system
1046@cindex file names with non-@acronym{ASCII} characters 1052@cindex file names with non-@acronym{ASCII} characters
1047 The variable @code{file-name-coding-system} specifies a coding system 1053@findex set-file-name-coding-system
1048to use for encoding file names. If you set the variable to a coding 1054@kindex C-x @key{RET} F
1049system name (as a Lisp symbol or a string), Emacs encodes file names 1055 The variable @code{file-name-coding-system} specifies a coding
1050using that coding system for all file operations. This makes it 1056system to use for encoding file names. If you set the variable to a
1051possible to use non-@acronym{ASCII} characters in file names---or, at least, those 1057coding system name (as a Lisp symbol or a string), Emacs encodes file
1052non-@acronym{ASCII} characters which the specified coding system can encode. 1058names using that coding system for all file operations. This makes it
1059possible to use non-@acronym{ASCII} characters in file names---or, at
1060least, those non-@acronym{ASCII} characters which the specified coding
1061system can encode. Use @kbd{C-x @key{RET} F}
1062(@code{set-file-name-coding-system}) to specify this interactively.
1053 1063
1054 If @code{file-name-coding-system} is @code{nil}, Emacs uses a default 1064 If @code{file-name-coding-system} is @code{nil}, Emacs uses a default
1055coding system determined by the selected language environment. In the 1065coding system determined by the selected language environment. In the
diff --git a/man/programs.texi b/man/programs.texi
index 6b3776e0ac3..84f3e6f14f8 100644
--- a/man/programs.texi
+++ b/man/programs.texi
@@ -641,6 +641,7 @@ Kill balanced expression forward (@code{kill-sexp}).
641@item C-M-t 641@item C-M-t
642Transpose expressions (@code{transpose-sexps}). 642Transpose expressions (@code{transpose-sexps}).
643@item C-M-@@ 643@item C-M-@@
644@itemx C-M-@key{SPC}
644Put mark after following expression (@code{mark-sexp}). 645Put mark after following expression (@code{mark-sexp}).
645@end table 646@end table
646 647
@@ -701,12 +702,14 @@ rather than doing nothing, transposes the balanced expressions ending
701at or after point and the mark. 702at or after point and the mark.
702 703
703@kindex C-M-@@ 704@kindex C-M-@@
705@kindex C-M-@key{SPC}
704@findex mark-sexp 706@findex mark-sexp
705 To set the region around the next balanced expression in the buffer, 707 To set the region around the next balanced expression in the buffer,
706use @kbd{C-M-@@} (@code{mark-sexp}), which sets mark at the same place 708use @kbd{C-M-@@} (@code{mark-sexp}), which sets mark at the same place
707that @kbd{C-M-f} would move to. @kbd{C-M-@@} takes arguments like 709that @kbd{C-M-f} would move to. @kbd{C-M-@@} takes arguments like
708@kbd{C-M-f}. In particular, a negative argument is useful for putting 710@kbd{C-M-f}. In particular, a negative argument is useful for putting
709the mark at the beginning of the previous balanced expression. 711the mark at the beginning of the previous balanced expression.
712The alias @kbd{C-M-@key{SPC}} is equivalent to @kbd{C-M-@@}.
710 713
711 In languages that use infix operators, such as C, it is not possible 714 In languages that use infix operators, such as C, it is not possible
712to recognize all balanced expressions as such because there can be 715to recognize all balanced expressions as such because there can be
diff --git a/man/search.texi b/man/search.texi
index ef2d5776232..303074dcf0d 100644
--- a/man/search.texi
+++ b/man/search.texi
@@ -576,10 +576,18 @@ beginning of a line in the text being matched. Otherwise it fails to
576match anything. Thus, @samp{^foo} matches a @samp{foo} that occurs at 576match anything. Thus, @samp{^foo} matches a @samp{foo} that occurs at
577the beginning of a line. 577the beginning of a line.
578 578
579For historical compatibility reasons, @samp{^} can be used with this
580meaning only at the beginning of the regular expression, or after
581@samp{\(} or @samp{\|}.
582
579@item @kbd{$} 583@item @kbd{$}
580is similar to @samp{^} but matches only at the end of a line. Thus, 584is similar to @samp{^} but matches only at the end of a line. Thus,
581@samp{x+$} matches a string of one @samp{x} or more at the end of a line. 585@samp{x+$} matches a string of one @samp{x} or more at the end of a line.
582 586
587For historical compatibility reasons, @samp{$} can be used with this
588meaning only at the end of the regular expression, or before @samp{\)}
589or @samp{\|}.
590
583@item @kbd{\} 591@item @kbd{\}
584has two functions: it quotes the special characters (including 592has two functions: it quotes the special characters (including
585@samp{\}), and it introduces additional special constructs. 593@samp{\}), and it introduces additional special constructs.
diff --git a/src/ChangeLog b/src/ChangeLog
index c1a63aab953..bb8ef04bc67 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,78 @@
12004-03-04 Richard M. Stallman <rms@gnu.org>
2
3 * s/sol2-6.h (LD_SWITCH_SYSTEM_TEMACS): New definition.
4
5 * window.c (Fdisplay_buffer): Doc fix.
6
7 * buffer.c (Fpop_to_buffer): Doc fix.
8
92004-03-03 Kim F. Storm <storm@cua.dk>
10
11 * xdisp.c (display_line): Fix call to get_overlay_arrow_glyph_row.
12
132004-03-02 Stefan Monnier <monnier@iro.umontreal.ca>
14
15 * editfns.c (Ftranslate_region): Lisp_Object/int mixup.
16
172004-03-02 Richard M. Stallman <rms@gnu.org>
18
19 * indent.c (compute_motion): Save vpos in prev_vpos, like hpos etc.
20
212004-03-02 Kenichi Handa <handa@m17n.org>
22
23 * doc.c (Fsubstitute_command_keys): Fix counding bytes.
24
252004-03-02 Kim F. Storm <storm@cua.dk>
26
27 * window.h (struct window): New member overlay_arrow_bitmap.
28
29 * window.c (make_window): Initialize overlay_arrow_bitmap.
30
31 * xdisp.c (Voverlay_arrow_variable_list): New variable to properly
32 implement and integrate multiple overlay arrows with redisplay.
33 (syms_of_xdisp): DEFVAR_LISP and initialize it.
34 (last_arrow_position, last_arrow_string): Replace by properties.
35 (Qlast_arrow_position, Qlast_arrow_string)
36 (Qoverlay_arrow_string, Qoverlay_arrow_bitmap): New variables.
37 (syms_of_xdisp): Intern and staticpro them.
38 (overlay_arrow_string_or_property, update_overlay_arrows)
39 (overlay_arrow_in_current_buffer_p, overlay_arrows_changed_p)
40 (overlay_arrow_at_row): New functions for multiple overlay arrows.
41 (redisplay_internal): Use them instead of directly accessing
42 Voverlay_arrow_position etc. for multiple overlay arrows.
43 (mark_window_display_accurate): Use update_overlay_arrows.
44 (try_cursor_movement): Use overlay_arrow_in_current_buffer_p.
45 (try_window_id): Use overlay_arrows_changed_p.
46 (get_overlay_arrow_glyph_row): Add overlay_arrow_string arg.
47 (display_line): Use overlay_arrow_at_row to check multiple
48 overlay arrows, and get relevant overlay-arrow-string and
49 overlay-arrow-bitmap. Set w->overlay_arrow_bitmap accordingly.
50 (produce_image_glyph): Set pixel_width = 0 for fringe bitmap.
51 (syms_of_xdisp): Remove last_arrow_position and last_arrow_string.
52
53 * fringe.c (draw_fringe_bitmap): Use w->overlay_arrow_bitmap if set.
54 (update_window_fringes): Remove unused code.
55
562004-03-01 Jason Rumney <jasonr@gnu.org>
57
58 * w32term.c (w32_read_socket): Fix last change to ButtonPress handling.
59
602004-03-01 Juanma Barranquero <lektu@terra.es>
61
62 * fringe.c (Fdefine_fringe_bitmap): Fix typo in docstring.
63
64 * makefile.w32-in ($(BLD)/fringe.$(O)): Add dependencies.
65
662004-03-01 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
67
68 * xfns.c (Fx_display_color_cells): Use number of planes to calculate
69 how many colors can be displayed.
70
712004-03-01 Kenichi Handa <handa@m17n.org>
72
73 * editfns.c (Ftranslate_region): Handle multibyte chars in TABLE
74 correctly.
75
12004-02-28 Kim F. Storm <storm@cua.dk> 762004-02-28 Kim F. Storm <storm@cua.dk>
2 77
3 * dispnew.c (update_window): Update header line also if there are 78 * dispnew.c (update_window): Update header line also if there are
@@ -11,11 +86,11 @@
11 86
122004-02-28 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 872004-02-28 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
13 88
14 * xfns.c (x_window): Fixed indentation. 89 * xfns.c (x_window): Fix indentation.
15 90
16 * xterm.c (x_calc_absolute_position): Call x_real_positions 91 * xterm.c (x_calc_absolute_position): Call x_real_positions
17 to get WM window sizes and use those to calculate position. 92 to get WM window sizes and use those to calculate position.
18 (x_set_offset): Removed code commented out. 93 (x_set_offset): Remove code commented out.
19 94
202004-02-28 Miles Bader <miles@gnu.org> 952004-02-28 Miles Bader <miles@gnu.org>
21 96
@@ -39,7 +114,7 @@
39 * keyboard.h (kbd_buffer_store_event_hold): Add prototype. 114 * keyboard.h (kbd_buffer_store_event_hold): Add prototype.
40 (gen_help_event): Fix prototype. 115 (gen_help_event): Fix prototype.
41 116
42 * macterm.c (XTread_socket): Remove bufp_r and 117 * macterm.c (XTread_socket): Remove bufp_r and
43 numcharsp args. Add hold_quit arg. 118 numcharsp args. Add hold_quit arg.
44 Rework to use just one, local, inev input_event. Store inev 119 Rework to use just one, local, inev input_event. Store inev
45 directly in fifo using kbd_buffer_store_event_hold. 120 directly in fifo using kbd_buffer_store_event_hold.
@@ -51,7 +126,7 @@
51 initialize local hold_quit event to handle postponed quit event 126 initialize local hold_quit event to handle postponed quit event
52 (and store it if set by kbd_buffer_store_event_hold). 127 (and store it if set by kbd_buffer_store_event_hold).
53 128
54 * term.c (read_socket_hook): Fix arg list. 129 * term.c (read_socket_hook): Fix arg list.
55 130
56 * termhooks.h (read_socket_hook): Fix prototype. 131 * termhooks.h (read_socket_hook): Fix prototype.
57 132
@@ -73,9 +148,9 @@
73 148
74 * xsmfns.c (x_session_check_input): Remove numchars arg. 149 * xsmfns.c (x_session_check_input): Remove numchars arg.
75 150
76 * xterm.c (x_focus_changed, x_detect_focus_change): Remove 151 * xterm.c (x_focus_changed, x_detect_focus_change):
77 numchars arg. Always store event into bufp arg. Return nothing. 152 Remove numchars arg. Always store event into bufp arg.
78 Callers changed accordingly. 153 Return nothing. Callers changed accordingly.
79 (glyph_rect): Simplify. 154 (glyph_rect): Simplify.
80 (STORE_KEYSYM_FOR_DEBUG): New macro. 155 (STORE_KEYSYM_FOR_DEBUG): New macro.
81 (SET_SAVED_MENU_EVENT): Use inev instead of bufp, etc. 156 (SET_SAVED_MENU_EVENT): Use inev instead of bufp, etc.
@@ -106,15 +181,14 @@
106 * xterm.h (x_session_check_input): Fix prototype. 181 * xterm.h (x_session_check_input): Fix prototype.
107 182
1082004-02-26 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 1832004-02-26 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
109 184
110 * s/darwin.h (LD_SWITCH_SYSTEM_TEMACS): Add `-framework 185 * s/darwin.h (LD_SWITCH_SYSTEM_TEMACS): Add `-framework QuickTime'.
111 QuickTime'. 186
112
113 * dispextern.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in 187 * dispextern.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in
114 macgui.h). 188 macgui.h).
115 189
116 * emacs.c (main) [HAVE_CARBON]: Call init_xfns. 190 * emacs.c (main) [HAVE_CARBON]: Call init_xfns.
117 191
118 * macgui.h [MAC_OSX]: Include Carbon/Carbon.h. 192 * macgui.h [MAC_OSX]: Include Carbon/Carbon.h.
119 (mktime, DEBUG, Z, free, malloc, realloc, max, min) 193 (mktime, DEBUG, Z, free, malloc, realloc, max, min)
120 (init_process) [MAC_OSX] : Avoid conflicts with Carbon/Carbon.h. 194 (init_process) [MAC_OSX] : Avoid conflicts with Carbon/Carbon.h.
@@ -123,18 +197,16 @@
123 (Bitmap): Remove typedef. 197 (Bitmap): Remove typedef.
124 (Pixmap): Change int to GWorldPtr. 198 (Pixmap): Change int to GWorldPtr.
125 199
126 * macmenu.c [MAC_OSX]: Do not include Carbon/Carbon.h (now in 200 * macmenu.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h).
127 macgui.h). 201
128 202 * macterm.h [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h).
129 * macterm.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in 203 (RED16_FROM_ULONG, GREEN16_FROM_ULONG, BLUE16_FROM_ULONG):
130 macgui.h). 204 New #define to extract 16-bit depth color components from unsigned
131 (RED16_FROM_ULONG, GREEN16_FROM_ULONG, BLUE16_FROM_ULONG): New
132 #define to extract 16-bit depth color components from unsigned
133 long representation. 205 long representation.
134 (PIX_MASK_DRAW, PIX_MASK_RETAIN): New #define to represent pixel 206 (PIX_MASK_DRAW, PIX_MASK_RETAIN): New #define to represent pixel
135 colors used for masks. 207 colors used for masks.
136 (struct mac_display_info): Add color_p. Remove n_cbits. 208 (struct mac_display_info): Add color_p. Remove n_cbits.
137 209
138 * macfns.c: Include sys/types.h and sys/stat.h. 210 * macfns.c: Include sys/types.h and sys/stat.h.
139 [MAC_OSX]: Do not include Carbon/Carbon.h (now in macgui.h). 211 [MAC_OSX]: Do not include Carbon/Carbon.h (now in macgui.h).
140 Include QuickTime/QuickTime.h. 212 Include QuickTime/QuickTime.h.
@@ -145,11 +217,11 @@
145 (ZPixmap): New #define for compatibility with xfns.c. 217 (ZPixmap): New #define for compatibility with xfns.c.
146 (XGetImage, XPutPixel, XGetPixel, XDestroyImage) 218 (XGetImage, XPutPixel, XGetPixel, XDestroyImage)
147 (x_create_x_image_and_pixmap, x_destroy_x_image, x_put_x_image) 219 (x_create_x_image_and_pixmap, x_destroy_x_image, x_put_x_image)
148 (find_image_fsspec, image_load_qt_1, image_load_quicktime): New 220 (find_image_fsspec, image_load_qt_1, image_load_quicktime):
149 functions. 221 New functions.
150 (four_corners_best, x_create_x_image_and_pixmap) 222 (four_corners_best, x_create_x_image_and_pixmap)
151 (x_destroy_x_image, unwind_create_frame, x_disable_image, 223 (x_destroy_x_image, unwind_create_frame, x_disable_image)
152 (x_edge_detection, init_color_table, colors_in_color_table, 224 (x_edge_detection, init_color_table, colors_in_color_table)
153 (lookup_rgb_color, lookup_pixel_color, postprocess_image) 225 (lookup_rgb_color, lookup_pixel_color, postprocess_image)
154 (x_put_x_image, slurp_file, xbm_scan, xbm_load, xbm_load_image) 226 (x_put_x_image, slurp_file, xbm_scan, xbm_load, xbm_load_image)
155 (xbm_image_p, xbm_read_bitmap_data, xbm_file_p, x_to_xcolors) 227 (xbm_image_p, xbm_read_bitmap_data, xbm_file_p, x_to_xcolors)
@@ -168,14 +240,13 @@
168 (enum pbm_keyword_index, pbm_format, enum png_keyword_index) 240 (enum pbm_keyword_index, pbm_format, enum png_keyword_index)
169 (png_format, png_image_p, enum jpeg_keyword_index, jpeg_format) 241 (png_format, png_image_p, enum jpeg_keyword_index, jpeg_format)
170 (jpeg_image_p, enum tiff_keyword_index, tiff_format, tiff_image_p) 242 (jpeg_image_p, enum tiff_keyword_index, tiff_format, tiff_image_p)
171 (enum gif_keyword_index, gif_format, gif_image_p): Sync with 243 (enum gif_keyword_index, gif_format, gif_image_p): Sync with xfns.c.
172 xfns.c.
173 (x_make_gc): Sync with xfns.c. Enclose unused `border_tile' with 244 (x_make_gc): Sync with xfns.c. Enclose unused `border_tile' with
174 #if 0. 245 #if 0.
175 (x_free_gcs): Sync with xfns.c. Enclose unused `border_tile' with 246 (x_free_gcs): Sync with xfns.c. Enclose unused `border_tile' with
176 #if 0. Free white_relief.gc and black_relief.gc. 247 #if 0. Free white_relief.gc and black_relief.gc.
177 (unwind_create_frame, x_emboss, x_laplace, x_edge_detection): New 248 (unwind_create_frame, x_emboss, x_laplace, x_edge_detection):
178 functions (from xfns.c). 249 New functions (from xfns.c).
179 (Fx_create_frame): Record unwind_create_frame. 250 (Fx_create_frame): Record unwind_create_frame.
180 (Fxw_display_color_p): Use dpyinfo->color_p. 251 (Fxw_display_color_p): Use dpyinfo->color_p.
181 (Fx_display_grayscale_p, Fx_display_planes): Don't use 252 (Fx_display_grayscale_p, Fx_display_planes): Don't use
@@ -187,14 +258,13 @@
187 (Fimage_size, Fimage_mask_p, four_corners_best, image_background) 258 (Fimage_size, Fimage_mask_p, four_corners_best, image_background)
188 (x_clear_image_1, postprocess_image, slurp_file, xbm_load_image) 259 (x_clear_image_1, postprocess_image, slurp_file, xbm_load_image)
189 (xbm_file_p, x_to_xcolors, x_from_xcolors, x_detect_edges) 260 (xbm_file_p, x_to_xcolors, x_from_xcolors, x_detect_edges)
190 (image_background_transparent): New function (from xfns.c). Use 261 (image_background_transparent): New function (from xfns.c).
191 PIX_MASK_DRAW/PIX_MASK_RETAIN. 262 Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
192 (image_load_quicktime): Add declaration. 263 (image_load_quicktime): Add declaration.
193 [MAC_OSX] (image_load_quartz2d): Likewise. 264 [MAC_OSX] (image_load_quartz2d): Likewise.
194 [MAC_OSX] (CGImageCreateWithPNGDataProviderProcType): New typedef. 265 [MAC_OSX] (CGImageCreateWithPNGDataProviderProcType): New typedef.
195 [MAC_OSX] (MyCGImageCreateWithPNGDataProvider): New variable. 266 [MAC_OSX] (MyCGImageCreateWithPNGDataProvider): New variable.
196 [MAC_OSX] (init_image_func_pointer, image_load_quartz2d): New 267 [MAC_OSX] (init_image_func_pointer, image_load_quartz2d): New funs.
197 functions.
198 (xbm_load_image_from_file, x_laplace_read_row) 268 (xbm_load_image_from_file, x_laplace_read_row)
199 (x_laplace_write_row, pbm_read_file): Remove functions. 269 (x_laplace_write_row, pbm_read_file): Remove functions.
200 [HAVE_XPM] (enum xpm_keyword_index, xpm_format, xpm_image_p) 270 [HAVE_XPM] (enum xpm_keyword_index, xpm_format, xpm_image_p)
@@ -203,23 +273,22 @@
203 (lookup_rgb_color): Don't lookup color table. Just do gamma 273 (lookup_rgb_color): Don't lookup color table. Just do gamma
204 correction. 274 correction.
205 (COLOR_INTENSITY): New #define (from xfns.c). 275 (COLOR_INTENSITY): New #define (from xfns.c).
206 (x_disable_image): New function (from xfns.c). Use 276 (x_disable_image): New function (from xfns.c).
207 PIX_MASK_DRAW/PIX_MASK_RETAIN. 277 Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
208 (x_build_heuristic_mask): Sync with xfns.c. Use 278 (x_build_heuristic_mask): Sync with xfns.c.
209 PIX_MASK_DRAW/PIX_MASK_RETAIN. 279 Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
210 (HAVE_PBM): Remove #ifdef. 280 (HAVE_PBM): Remove #ifdef.
211 (pbm_load): Sync with xfns.c. Set img->width and img->height 281 (pbm_load): Sync with xfns.c. Set img->width and img->height
212 before IMAGE_BACKGROUND. 282 before IMAGE_BACKGROUND.
213 (png_image_p, png_load): Don't enclose declarations with #if 283 (png_image_p, png_load): Don't enclose declarations with #if HAVE_PNG.
214 HAVE_PNG.
215 (Qpng, enum png_keyword_index, png_format, png_type, png_image_p): 284 (Qpng, enum png_keyword_index, png_format, png_type, png_image_p):
216 Don't enclose with #if HAVE_PNG. 285 Don't enclose with #if HAVE_PNG.
217 [!HAVE_PNG] (png_load) [MAC_OSX]: Use image_load_quartz2d if a 286 [!HAVE_PNG] (png_load) [MAC_OSX]: Use image_load_quartz2d if a
218 symbol _CGImageCreateWithPNGDataProvider is defined. Otherwise 287 symbol _CGImageCreateWithPNGDataProvider is defined.
219 use image_load_quicktime. 288 Otherwise use image_load_quicktime.
220 [!HAVE_PNG] (png_load) [!MAC_OSX]: Use image_load_quicktime. 289 [!HAVE_PNG] (png_load) [!MAC_OSX]: Use image_load_quicktime.
221 [HAVE_PNG] (png_load): Sync with xfns.c. Use 290 [HAVE_PNG] (png_load): Sync with xfns.c.
222 PIX_MASK_DRAW/PIX_MASK_RETAIN. 291 Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
223 (jpeg_image_p, jpeg_load): Don't enclose declarations with #if 292 (jpeg_image_p, jpeg_load): Don't enclose declarations with #if
224 HAVE_JPEG. 293 HAVE_JPEG.
225 (Qjpeg, enum jpeg_keyword_index, jpeg_format, jpeg_type) 294 (Qjpeg, enum jpeg_keyword_index, jpeg_format, jpeg_type)
@@ -232,11 +301,10 @@
232 (Qtiff, enum tiff_keyword_index, tiff_format, tiff_type) 301 (Qtiff, enum tiff_keyword_index, tiff_format, tiff_type)
233 (tiff_image_p): Don't enclose with #if HAVE_TIFF. 302 (tiff_image_p): Don't enclose with #if HAVE_TIFF.
234 [!HAVE_TIFF] (tiff_load): Use image_load_quicktime. 303 [!HAVE_TIFF] (tiff_load): Use image_load_quicktime.
235 [HAVE_TIFF] (tiff_error_handler, tiff_warning_handler): New 304 [HAVE_TIFF] (tiff_error_handler, tiff_warning_handler):
236 functions (from xfns.c). 305 New functions (from xfns.c).
237 [HAVE_TIFF] (tiff_load): Sync with xfns.c. 306 [HAVE_TIFF] (tiff_load): Sync with xfns.c.
238 (gif_image_p, gif_load): Don't enclose declarations with #if 307 (gif_image_p, gif_load): Don't enclose declarations with #if HAVE_GIF.
239 HAVE_GIF.
240 (Qgif, enum gif_keyword_index, gif_format, gif_type, gif_image_p): 308 (Qgif, enum gif_keyword_index, gif_format, gif_type, gif_image_p):
241 Don't enclose with #if HAVE_GIF. 309 Don't enclose with #if HAVE_GIF.
242 [!HAVE_GIF] (gif_load): Use Quicktime Movie Toolbox if it is 310 [!HAVE_GIF] (gif_load): Use Quicktime Movie Toolbox if it is
@@ -253,12 +321,11 @@
253 image types. Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and 321 image types. Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and
254 HAVE_PNG. Add defsubr for Simage_size and Simage_mask_p. 322 HAVE_PNG. Add defsubr for Simage_size and Simage_mask_p.
255 (init_xfns): Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and 323 (init_xfns): Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and
256 HAVE_PNG. Call EnterMovies to support animated gifs. Call 324 HAVE_PNG. Call EnterMovies to support animated gifs.
257 init_image_func_pointer to bind a symbol 325 Call init_image_func_pointer to bind a symbol
258 _CGImageCreateWithPNGDataProvider if it is defined. 326 _CGImageCreateWithPNGDataProvider if it is defined.
259 327
260 * macterm.c [MAC_OSX]: Do not include Carbon/Carbon.h (now in 328 * macterm.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h).
261 macgui.h).
262 (x_draw_bar_cursor): Sync declaration with xterm.c. 329 (x_draw_bar_cursor): Sync declaration with xterm.c.
263 (XFreePixmap, mac_draw_rectangle_to_pixmap, mac_copy_area) 330 (XFreePixmap, mac_draw_rectangle_to_pixmap, mac_copy_area)
264 (mac_copy_area_to_pixmap): Implementation with GWorld (offscreen 331 (mac_copy_area_to_pixmap): Implementation with GWorld (offscreen
@@ -266,16 +333,16 @@
266 (mac_set_forecolor, mac_set_backcolor): Use RED16_FROM_ULONG etc. 333 (mac_set_forecolor, mac_set_backcolor): Use RED16_FROM_ULONG etc.
267 (mac_draw_line_to_pixmap, XCreatePixmap) 334 (mac_draw_line_to_pixmap, XCreatePixmap)
268 (XCreatePixmapFromBitmapData, mac_fill_rectangle_to_pixmap) 335 (XCreatePixmapFromBitmapData, mac_fill_rectangle_to_pixmap)
269 (mac_copy_area_with_mask, mac_copy_area_with_mask_to_pixmap): New 336 (mac_copy_area_with_mask, mac_copy_area_with_mask_to_pixmap):
270 functions. 337 New functions.
271 (mac_draw_bitmap) [TARGET_API_MAC_CARBON]: Use 338 (mac_draw_bitmap) [TARGET_API_MAC_CARBON]:
272 GetPortBitMapForCopyBits instead of the cast to Bitmap *. Cast 339 Use GetPortBitMapForCopyBits instead of the cast to Bitmap *.
273 bits to char *. 340 Cast bits to char *.
274 (reflect_byte): New function (from w32fns.c). 341 (reflect_byte): New function (from w32fns.c).
275 (mac_create_bitmap_from_bitmap_data): Use it and don't stuff bits 342 (mac_create_bitmap_from_bitmap_data): Use it and don't stuff bits
276 due to byte alignment. 343 due to byte alignment.
277 (mac_scroll_area) [TARGET_API_MAC_CARBON]: Use 344 (mac_scroll_area) [TARGET_API_MAC_CARBON]:
278 GetPortBitMapForCopyBits instead of the cast to Bitmap *. 345 Use GetPortBitMapForCopyBits instead of the cast to Bitmap *.
279 (XSetForeground): Remove static (now used in macfns.c). 346 (XSetForeground): Remove static (now used in macfns.c).
280 (HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New #define (from w32term.c). 347 (HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New #define (from w32term.c).
281 (mac_alloc_lighter_color, x_destroy_window): Sync with w32term.c. 348 (mac_alloc_lighter_color, x_destroy_window): Sync with w32term.c.
@@ -293,18 +360,16 @@
293 (x_free_frame_resources): New funcion (from xterm.c). 360 (x_free_frame_resources): New funcion (from xterm.c).
294 (XTread_socket): Call handle_tool_bar_click if mouse up/down event 361 (XTread_socket): Call handle_tool_bar_click if mouse up/down event
295 occurs in tool bar area. 362 occurs in tool bar area.
296 (mac_initialize_display_info): Remove dpyinfo->n_cbits. Set 363 (mac_initialize_display_info): Remove dpyinfo->n_cbits.
297 dpyinfo->color_p. Determine dpyinfo->n_planes using HasDepth. 364 Set dpyinfo->color_p. Determine dpyinfo->n_planes using HasDepth.
298 Initialize image cache. 365 Initialize image cache.
299 (stricmp, wildstrieq, mac_font_pattern_match, mac_font_match): 366 (stricmp, wildstrieq, mac_font_pattern_match, mac_font_match):
300 Enclose unused functions with #if 0. 367 Enclose unused functions with #if 0.
301 (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): New variables. 368 (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): New variables.
302 (decode_mac_font_name): New function to apply code conversions 369 (decode_mac_font_name): New function to apply code conversions
303 from a mac font name to an XLFD font name according to its script 370 from a mac font name to an XLFD font name according to its script code.
304 code.
305 (x_font_name_to_mac_font_name): Apply code conversion from an XLFD 371 (x_font_name_to_mac_font_name): Apply code conversion from an XLFD
306 font name to a mac font name according to REGISTRY and ENCODING 372 font name to a mac font name according to REGISTRY and ENCODING fields.
307 fields.
308 (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't use a font 373 (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't use a font
309 whose name starts with `.'. 374 whose name starts with `.'.
310 (init_font_name_table): Use decode_mac_font_name. Add both 375 (init_font_name_table): Use decode_mac_font_name. Add both
@@ -345,7 +410,7 @@
345 * xfns.c (lookup_image): Remove xassert(!interrupt_input_blocked); 410 * xfns.c (lookup_image): Remove xassert(!interrupt_input_blocked);
346 BLOCK_INPUT can be nested, so it doesn't make much sense. 411 BLOCK_INPUT can be nested, so it doesn't make much sense.
347 412
3482004-02-24 Michael Mauger <mmaug@yahoo.com> 4132004-02-24 Michael Mauger <mmaug@yahoo.com>
349 414
350 * w32fns.c (slurp_file, xbm_scan, xbm_load_image) 415 * w32fns.c (slurp_file, xbm_scan, xbm_load_image)
351 (xbm_read_bitmap_data): Use unsigned char for image data. 416 (xbm_read_bitmap_data): Use unsigned char for image data.
@@ -363,8 +428,8 @@
363 428
364 * emacs.c (USAGE1): Split into two halves. 429 * emacs.c (USAGE1): Split into two halves.
365 (USAGE2): Second half of the old USAGE1. 430 (USAGE2): Second half of the old USAGE1.
366 (USAGE3): Renamed from USAGE2. 431 (USAGE3): Rename from USAGE2.
367 (USAGE4): Renamed from USAGE3. 432 (USAGE4): Rename from USAGE3.
368 433
3692004-02-21 Juri Linkov <juri@jurta.org> 4342004-02-21 Juri Linkov <juri@jurta.org>
370 435
@@ -387,8 +452,8 @@
387 in one call to read_socket_hook. Value is 8. 452 in one call to read_socket_hook. Value is 8.
388 (read_avail_input): Separate and rework handling of read_socket_hook 453 (read_avail_input): Separate and rework handling of read_socket_hook
389 and non-read_socket_hook cases. Use smaller input_event buffer 454 and non-read_socket_hook cases. Use smaller input_event buffer
390 in read_socket_hook case, and repeat if full buffer is read. Use 455 in read_socket_hook case, and repeat if full buffer is read.
391 new local variable 'discard' to skip input after C-g. 456 Use new local variable 'discard' to skip input after C-g.
392 In non-read_socket_hook case, just use a single input_event, and 457 In non-read_socket_hook case, just use a single input_event, and
393 call kbd_buffer_store_event on the fly for each character. 458 call kbd_buffer_store_event on the fly for each character.
394 459
@@ -595,7 +660,7 @@
595 Add prototypes. 660 Add prototypes.
596 661
597 * macterm.c (mac_draw_bitmap): Add overlay_p arg. 662 * macterm.c (mac_draw_bitmap): Add overlay_p arg.
598 (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps; 663 (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps;
599 thanks to YAMAMOTO Mitsuharu for advice on how to do this. 664 thanks to YAMAMOTO Mitsuharu for advice on how to do this.
600 Use cursor color for displaying cursor in fringe. 665 Use cursor color for displaying cursor in fringe.
601 (x_redisplay_interface): Add null handlers for 666 (x_redisplay_interface): Add null handlers for
@@ -756,7 +821,7 @@
756 821
757 * makefile.w32-in, w32fns.c: Add `default-printer-name' function. 822 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
758 823
7592004-01-27 Steven Tamm <steventamm@mac.com> 8242004-01-27 Steven Tamm <steventamm@mac.com>
760 825
761 * unexmacosx.c (unexec_copy): Do not copy more than was 826 * unexmacosx.c (unexec_copy): Do not copy more than was
762 requested to prevent overwriting during unexec. 827 requested to prevent overwriting during unexec.
@@ -767,7 +832,7 @@
767 832
768 * process.h: Add extern to synch_process_termsig. 833 * process.h: Add extern to synch_process_termsig.
769 834
7702004-01-27 Steven Tamm <steventamm@mac.com> 8352004-01-27 Steven Tamm <steventamm@mac.com>
771 836
772 * macterm.c (make_mac_frame, make_mac_terminal_frame): 837 * macterm.c (make_mac_frame, make_mac_terminal_frame):
773 Move setting of scroll bars from make_mac_frame to 838 Move setting of scroll bars from make_mac_frame to
@@ -884,7 +949,7 @@
884 949
885 * buffer.h (struct buffer): New member indicate_buffer_boundaries. 950 * buffer.h (struct buffer): New member indicate_buffer_boundaries.
886 951
887 * buffer.c (init_buffer_once): Set buffer_defaults and 952 * buffer.c (init_buffer_once): Set buffer_defaults and
888 buffer_local_flags for indicate_buffer_boundaries. 953 buffer_local_flags for indicate_buffer_boundaries.
889 (syms_of_buffer): Defvar_per_buffer it, and defvar_lisp_nopro 954 (syms_of_buffer): Defvar_per_buffer it, and defvar_lisp_nopro
890 default- variable for it. 955 default- variable for it.
@@ -1095,7 +1160,7 @@
1095 to the definition of `signal' in the Elisp manual. 1160 to the definition of `signal' in the Elisp manual.
1096 * eval.c (Fsignal): Ditto. 1161 * eval.c (Fsignal): Ditto.
1097 1162
10982003-12-29 James Clark <jjc@jclark.com> (tiny change) 11632003-12-29 James Clark <jjc@jclark.com> (tiny change)
1099 1164
1100 * fns.c (internal_equal): Return t for two NaN arguments. 1165 * fns.c (internal_equal): Return t for two NaN arguments.
1101 1166
@@ -1221,7 +1286,7 @@
1221 1286
1222 * minibuf.c (Fcompleting_read): Undo previous change. 1287 * minibuf.c (Fcompleting_read): Undo previous change.
1223 1288
12242003-12-25 Lars Hansen <larsh@math.ku.dk> 12892003-12-25 Lars Hansen <larsh@math.ku.dk>
1225 1290
1226 * dired.c (Fdirectory_files, Fdirectory_files_and_attributes): 1291 * dired.c (Fdirectory_files, Fdirectory_files_and_attributes):
1227 Arguments GCPRO'ed in call to file name handler. 1292 Arguments GCPRO'ed in call to file name handler.
@@ -1410,7 +1475,7 @@
1410 * xdisp.c (note_mode_line_or_margin_highlight): Adapt to new 1475 * xdisp.c (note_mode_line_or_margin_highlight): Adapt to new
1411 mode_line_string and marginal_area_string parameters. 1476 mode_line_string and marginal_area_string parameters.
1412 1477
14132003-11-22 Lars Hansen <larsh@math.ku.dk> 14782003-11-22 Lars Hansen <larsh@math.ku.dk>
1414 1479
1415 * w32.c (struct the_group, getgrgid): Add. 1480 * w32.c (struct the_group, getgrgid): Add.
1416 * mac.c (struct my_group, getgrgid): Add. 1481 * mac.c (struct my_group, getgrgid): Add.
@@ -1504,7 +1569,7 @@
1504 * frame.c (store_frame_param): 1569 * frame.c (store_frame_param):
1505 * fontset.c (Fset_fontset_font): 1570 * fontset.c (Fset_fontset_font):
1506 * emacs.c (shut_down_emacs): 1571 * emacs.c (shut_down_emacs):
1507 * ccl.c (ccl_driver): Remove period at end of error message. 1572 * ccl.c (ccl_driver): Remove period at end of error message.
1508 1573
1509 * config.in: Regenerate. 1574 * config.in: Regenerate.
1510 1575
@@ -1809,7 +1874,7 @@
1809 Set BUF_INTERVALS (buffer)->up_obj when appropriate. 1874 Set BUF_INTERVALS (buffer)->up_obj when appropriate.
1810 Handle over_used when splitting UNDER. 1875 Handle over_used when splitting UNDER.
1811 1876
18122003-09-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 18772003-09-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
1813 1878
1814 * regex.c (regex_compile): Free the stack when returning from function. 1879 * regex.c (regex_compile): Free the stack when returning from function.
1815 1880
@@ -2064,7 +2129,7 @@
2064 2129
2065 * w32term.c (w32_read_socket): Fix WM_MOUSEWHEEL assignment. 2130 * w32term.c (w32_read_socket): Fix WM_MOUSEWHEEL assignment.
2066 2131
20672003-08-26 Terje Rosten <terjeros@phys.ntnu.no> 21322003-08-26 Terje Rosten <terjeros@phys.ntnu.no>
2068 2133
2069 * xfns.c (Vgtk_version_string): New variable. 2134 * xfns.c (Vgtk_version_string): New variable.
2070 (syms_of_xfns): DEFVAR_LISP it. Provide gtk. 2135 (syms_of_xfns): DEFVAR_LISP it. Provide gtk.
@@ -3358,11 +3423,11 @@
3358 (draw_fringe_bitmap): Rework to handle per-window fringes and new 3423 (draw_fringe_bitmap): Rework to handle per-window fringes and new
3359 fringe vs. display margin position. 3424 fringe vs. display margin position.
3360 (hscroll_window_tree): Use window_box_width instead of window_box. 3425 (hscroll_window_tree): Use window_box_width instead of window_box.
3361 (redisplay_window): Adapt to per-window scroll bars. 3426 (redisplay_window): Adapt to per-window scroll bars.
3362 (draw_glyphs): Rework to handle per-window fringes and scroll 3427 (draw_glyphs): Rework to handle per-window fringes and scroll
3363 bars, and new fringe vs. display margin position. 3428 bars, and new fringe vs. display margin position.
3364 Use WINDOW_LEFT_EDGE_X, WINDOW_TOTAL_WIDTH, and window_box_left. 3429 Use WINDOW_LEFT_EDGE_X, WINDOW_TOTAL_WIDTH, and window_box_left.
3365 (x_clear_end_of_line): Adapt to per-window fringes and scroll 3430 (x_clear_end_of_line): Adapt to per-window fringes and scroll
3366 bars, and new fringe vs. display margin position. Fix bug which 3431 bars, and new fringe vs. display margin position. Fix bug which
3367 increased total width of full_width rows by width of scroll bars 3432 increased total width of full_width rows by width of scroll bars
3368 although window's total width already includes that. 3433 although window's total width already includes that.
@@ -4429,7 +4494,7 @@
4429 (w32_draw_window_cursor): New W32-specific functions for RIF. 4494 (w32_draw_window_cursor): New W32-specific functions for RIF.
4430 (w32_redisplay_interface): Add new members. 4495 (w32_redisplay_interface): Add new members.
4431 4496
4432 * w32gui.h (No_Cursor): Define as 0 for W32. 4497 * w32gui.h (No_Cursor): Define as 0 for W32.
4433 (XRectangle): Add X compatible rectangle type. 4498 (XRectangle): Add X compatible rectangle type.
4434 (NativeRectangle): Declare as RECT for W32. 4499 (NativeRectangle): Declare as RECT for W32.
4435 (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros. 4500 (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros.
@@ -5517,7 +5582,7 @@
5517 5582
5518 * lisp.h: Declare Vx_resource_name extern. 5583 * lisp.h: Declare Vx_resource_name extern.
5519 5584
5520 * keyboard.c (kbd_buffer_get_event): Check MENU_BAR_ACTIVATE_EVENT 5585 * keyboard.c (kbd_buffer_get_event): Check MENU_BAR_ACTIVATE_EVENT
5521 for USE_GTK. 5586 for USE_GTK.
5522 (make_lispy_event): Check MENU_BAR_EVENT for USE_GTK. 5587 (make_lispy_event): Check MENU_BAR_EVENT for USE_GTK.
5523 5588
@@ -5904,12 +5969,12 @@
5904 Its primary purpose at this time is to initialize the global variable 5969 Its primary purpose at this time is to initialize the global variable
5905 track_mouse_event_fn. 5970 track_mouse_event_fn.
5906 5971
5907 * w32fns.c (w32_wnd_proc): Remove initialization of 5972 * w32fns.c (w32_wnd_proc): Remove initialization of
5908 track_mouse_event_fn from the handler for the WM_SETFOCUS message. 5973 track_mouse_event_fn from the handler for the WM_SETFOCUS message.
5909 5974
5910 * w32fns.c (syms_of_w32fns): Call globals_of_w32fns. 5975 * w32fns.c (syms_of_w32fns): Call globals_of_w32fns.
5911 5976
5912 * w32menu.c (globals_of_w32menu): New function. Used to 5977 * w32menu.c (globals_of_w32menu): New function. Used to
5913 initialize those global variables that must always be initialized 5978 initialize those global variables that must always be initialized
5914 on startup even when the global variable initialized is non zero. 5979 on startup even when the global variable initialized is non zero.
5915 Its primary purpose at this time is to initialize the global 5980 Its primary purpose at this time is to initialize the global
@@ -11096,7 +11161,7 @@
11096 11161
110972001-12-03 Pavel Jan,Am(Bk <Pavel@Janik.cz> 111622001-12-03 Pavel Jan,Am(Bk <Pavel@Janik.cz>
11098 11163
11099 * xdisp.c (syms_of_xdisp): Make `tool-bar-button-relief` an option. 11164 * xdisp.c (syms_of_xdisp): Make `tool-bar-button-relief' an option.
11100 11165
111012001-12-02 Pavel Jan,Am(Bk <Pavel@Janik.cz> 111662001-12-02 Pavel Jan,Am(Bk <Pavel@Janik.cz>
11102 11167
diff --git a/src/buffer.c b/src/buffer.c
index ad1dde93da7..27b12845c50 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1675,8 +1675,9 @@ DEFUN ("pop-to-buffer", Fpop_to_buffer, Spop_to_buffer, 1, 3, 0,
1675 doc: /* Select buffer BUFFER in some window, preferably a different one. 1675 doc: /* Select buffer BUFFER in some window, preferably a different one.
1676If BUFFER is nil, then some other buffer is chosen. 1676If BUFFER is nil, then some other buffer is chosen.
1677If `pop-up-windows' is non-nil, windows can be split to do this. 1677If `pop-up-windows' is non-nil, windows can be split to do this.
1678If optional second arg OTHER-WINDOW is non-nil, insist on finding another 1678If optional second arg OTHER-WINDOW is nil, insist on finding another
1679window even if BUFFER is already visible in the selected window. 1679window even if BUFFER is already visible in the selected window,
1680and ignore `same-window-regexps' and `same-window-buffer-names'.
1680This uses the function `display-buffer' as a subroutine; see the documentation 1681This uses the function `display-buffer' as a subroutine; see the documentation
1681of `display-buffer' for additional customization information. 1682of `display-buffer' for additional customization information.
1682 1683
diff --git a/src/doc.c b/src/doc.c
index 0e22f6d1059..930afc88e23 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -821,7 +821,7 @@ thus, \\=\\=\\=\\= puts \\=\\= into the output, and \\=\\=\\=\\[ puts \\=\\[ int
821 start = strp; 821 start = strp;
822 start_idx = start - SDATA (string); 822 start_idx = start - SDATA (string);
823 823
824 while ((strp - SDATA (string) < SCHARS (string)) 824 while ((strp - SDATA (string) < SBYTES (string))
825 && *strp != '}' && *strp != '>') 825 && *strp != '}' && *strp != '>')
826 strp++; 826 strp++;
827 827
diff --git a/src/editfns.c b/src/editfns.c
index 9a1ce81f316..51435af0bb2 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -1,5 +1,5 @@
1/* Lisp functions pertaining to editing. 1/* Lisp functions pertaining to editing.
2 Copyright (C) 1985,86,87,89,93,94,95,96,97,98, 1999, 2000, 2001, 02, 2003 2 Copyright (C) 1985,86,87,89,93,94,95,96,97,98,1999,2000,01,02,03,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.
@@ -2741,85 +2741,84 @@ DEFUN ("translate-region", Ftranslate_region, Stranslate_region, 3, 3, 0,
2741 doc: /* From START to END, translate characters according to TABLE. 2741 doc: /* From START to END, translate characters according to TABLE.
2742TABLE is a string; the Nth character in it is the mapping 2742TABLE is a string; the Nth character in it is the mapping
2743for the character with code N. 2743for the character with code N.
2744This function does not alter multibyte characters.
2745It returns the number of characters changed. */) 2744It returns the number of characters changed. */)
2746 (start, end, table) 2745 (start, end, table)
2747 Lisp_Object start; 2746 Lisp_Object start;
2748 Lisp_Object end; 2747 Lisp_Object end;
2749 register Lisp_Object table; 2748 register Lisp_Object table;
2750{ 2749{
2751 register int pos_byte, stop; /* Limits of the region. */
2752 register unsigned char *tt; /* Trans table. */ 2750 register unsigned char *tt; /* Trans table. */
2753 register int nc; /* New character. */ 2751 register int nc; /* New character. */
2754 int cnt; /* Number of changes made. */ 2752 int cnt; /* Number of changes made. */
2755 int size; /* Size of translate table. */ 2753 int size; /* Size of translate table. */
2756 int pos; 2754 int pos, pos_byte;
2757 int multibyte = !NILP (current_buffer->enable_multibyte_characters); 2755 int multibyte = !NILP (current_buffer->enable_multibyte_characters);
2756 int string_multibyte;
2758 2757
2759 validate_region (&start, &end); 2758 validate_region (&start, &end);
2760 CHECK_STRING (table); 2759 CHECK_STRING (table);
2761 2760
2762 size = SBYTES (table); 2761 if (multibyte != (SCHARS (table) < SBYTES (table)))
2762 table = (multibyte
2763 ? string_make_multibyte (table)
2764 : string_make_unibyte (table));
2765 string_multibyte = SCHARS (table) < SBYTES (table);
2766
2767 size = SCHARS (table);
2763 tt = SDATA (table); 2768 tt = SDATA (table);
2764 2769
2765 pos_byte = CHAR_TO_BYTE (XINT (start));
2766 stop = CHAR_TO_BYTE (XINT (end));
2767 modify_region (current_buffer, XINT (start), XINT (end));
2768 pos = XINT (start); 2770 pos = XINT (start);
2771 pos_byte = CHAR_TO_BYTE (pos);
2772 modify_region (current_buffer, pos, XINT (end));
2769 2773
2770 cnt = 0; 2774 cnt = 0;
2771 for (; pos_byte < stop; ) 2775 for (; pos < XINT (end); )
2772 { 2776 {
2773 register unsigned char *p = BYTE_POS_ADDR (pos_byte); 2777 register unsigned char *p = BYTE_POS_ADDR (pos_byte);
2774 int len; 2778 unsigned char *str;
2779 int len, str_len;
2775 int oc; 2780 int oc;
2776 int pos_byte_next;
2777 2781
2778 if (multibyte) 2782 if (multibyte)
2779 oc = STRING_CHAR_AND_LENGTH (p, stop - pos_byte, len); 2783 oc = STRING_CHAR_AND_LENGTH (p, MAX_MULTIBYTE_LENGTH, len);
2780 else 2784 else
2781 oc = *p, len = 1; 2785 oc = *p, len = 1;
2782 pos_byte_next = pos_byte + len; 2786 if (oc < size)
2783 if (oc < size && len == 1)
2784 { 2787 {
2785 nc = tt[oc]; 2788 if (string_multibyte)
2789 {
2790 str = tt + string_char_to_byte (table, oc);
2791 nc = STRING_CHAR_AND_LENGTH (str, MAX_MULTIBYTE_LENGTH, str_len);
2792 }
2793 else
2794 {
2795 str = tt + oc;
2796 nc = tt[oc], str_len = 1;
2797 }
2786 if (nc != oc) 2798 if (nc != oc)
2787 { 2799 {
2788 /* Take care of the case where the new character 2800 if (len != str_len)
2789 combines with neighboring bytes. */
2790 if (!ASCII_BYTE_P (nc)
2791 && (CHAR_HEAD_P (nc)
2792 ? ! CHAR_HEAD_P (FETCH_BYTE (pos_byte + 1))
2793 : (pos_byte > BEG_BYTE
2794 && ! ASCII_BYTE_P (FETCH_BYTE (pos_byte - 1)))))
2795 { 2801 {
2796 Lisp_Object string; 2802 Lisp_Object string;
2797 2803
2798 string = make_multibyte_string (tt + oc, 1, 1);
2799 /* This is less efficient, because it moves the gap, 2804 /* This is less efficient, because it moves the gap,
2800 but it handles combining correctly. */ 2805 but it should multibyte characters correctly. */
2801 replace_range (pos, pos + 1, string, 2806 string = make_multibyte_string (str, 1, str_len);
2802 1, 0, 1); 2807 replace_range (pos, pos + 1, string, 1, 0, 1);
2803 pos_byte_next = CHAR_TO_BYTE (pos); 2808 len = str_len;
2804 if (pos_byte_next > pos_byte)
2805 /* Before combining happened. We should not
2806 increment POS. So, to cancel the later
2807 increment of POS, we decrease it now. */
2808 pos--;
2809 else
2810 INC_POS (pos_byte_next);
2811 } 2809 }
2812 else 2810 else
2813 { 2811 {
2814 record_change (pos, 1); 2812 record_change (pos, 1);
2815 *p = nc; 2813 while (str_len-- > 0)
2814 *p++ = *str++;
2816 signal_after_change (pos, 1, 1); 2815 signal_after_change (pos, 1, 1);
2817 update_compositions (pos, pos + 1, CHECK_BORDER); 2816 update_compositions (pos, pos + 1, CHECK_BORDER);
2818 } 2817 }
2819 ++cnt; 2818 ++cnt;
2820 } 2819 }
2821 } 2820 }
2822 pos_byte = pos_byte_next; 2821 pos_byte += len;
2823 pos++; 2822 pos++;
2824 } 2823 }
2825 2824
diff --git a/src/fringe.c b/src/fringe.c
index b14668e8d7e..48a644707c6 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -637,7 +637,10 @@ draw_fringe_bitmap (w, row, left_p)
637 draw_fringe_bitmap_1 (w, row, left_p, overlay, NO_FRINGE_BITMAP); 637 draw_fringe_bitmap_1 (w, row, left_p, overlay, NO_FRINGE_BITMAP);
638 638
639 if (left_p && row->overlay_arrow_p) 639 if (left_p && row->overlay_arrow_p)
640 draw_fringe_bitmap_1 (w, row, 1, 1, OVERLAY_ARROW_BITMAP); 640 draw_fringe_bitmap_1 (w, row, 1, 1,
641 (w->overlay_arrow_bitmap
642 ? w->overlay_arrow_bitmap
643 : OVERLAY_ARROW_BITMAP));
641} 644}
642 645
643 646
@@ -738,7 +741,7 @@ update_window_fringes (w, force_p)
738 { 741 {
739 unsigned indicate_bob_p, indicate_top_line_p; 742 unsigned indicate_bob_p, indicate_top_line_p;
740 unsigned indicate_eob_p, indicate_bottom_line_p; 743 unsigned indicate_eob_p, indicate_bottom_line_p;
741 744
742 row = w->desired_matrix->rows + rn; 745 row = w->desired_matrix->rows + rn;
743 if (!row->enabled_p) 746 if (!row->enabled_p)
744 row = w->current_matrix->rows + rn; 747 row = w->current_matrix->rows + rn;
@@ -747,7 +750,7 @@ update_window_fringes (w, force_p)
747 indicate_top_line_p = row->indicate_top_line_p; 750 indicate_top_line_p = row->indicate_top_line_p;
748 indicate_eob_p = row->indicate_eob_p; 751 indicate_eob_p = row->indicate_eob_p;
749 indicate_bottom_line_p = row->indicate_bottom_line_p; 752 indicate_bottom_line_p = row->indicate_bottom_line_p;
750 753
751 row->indicate_bob_p = row->indicate_top_line_p = 0; 754 row->indicate_bob_p = row->indicate_top_line_p = 0;
752 row->indicate_eob_p = row->indicate_bottom_line_p = 0; 755 row->indicate_eob_p = row->indicate_bottom_line_p = 0;
753 756
@@ -800,10 +803,6 @@ update_window_fringes (w, force_p)
800 left = row->left_user_fringe_bitmap; 803 left = row->left_user_fringe_bitmap;
801 left_face_id = row->left_user_fringe_face_id; 804 left_face_id = row->left_user_fringe_face_id;
802 } 805 }
803#if 0 /* this is now done via an overlay */
804 else if (row->overlay_arrow_p)
805 left = OVERLAY_ARROW_BITMAP;
806#endif
807 else if (row->indicate_bob_p && boundary_pos <= 0) 806 else if (row->indicate_bob_p && boundary_pos <= 0)
808 left = ((row->indicate_eob_p && boundary_pos < 0) 807 left = ((row->indicate_eob_p && boundary_pos < 0)
809 ? LEFT_BRACKET_BITMAP : TOP_LEFT_ANGLE_BITMAP); 808 ? LEFT_BRACKET_BITMAP : TOP_LEFT_ANGLE_BITMAP);
@@ -882,7 +881,7 @@ update_window_fringes (w, force_p)
882} 881}
883 882
884 883
885/* Compute actual fringe widths for frame F. 884/* Compute actual fringe widths for frame F.
886 885
887 If REDRAW is 1, redraw F if the fringe settings was actually 886 If REDRAW is 1, redraw F if the fringe settings was actually
888 modified and F is visible. 887 modified and F is visible.
@@ -1099,7 +1098,7 @@ DEFUN ("define-fringe-bitmap", Fdefine_fringe_bitmap, Sdefine_fringe_bitmap,
1099BITS is either a string or a vector of integers. 1098BITS is either a string or a vector of integers.
1100HEIGHT is height of bitmap. If HEIGHT is nil, use length of BITS. 1099HEIGHT is height of bitmap. If HEIGHT is nil, use length of BITS.
1101WIDTH must be an integer between 1 and 16, or nil which defaults to 8. 1100WIDTH must be an integer between 1 and 16, or nil which defaults to 8.
1102Optional forth arg ALIGN may be one of `top', `center', or `bottom', 1101Optional fourth arg ALIGN may be one of `top', `center', or `bottom',
1103indicating the positioning of the bitmap relative to the rows where it 1102indicating the positioning of the bitmap relative to the rows where it
1104is used; the default is to center the bitmap. Fourth arg may also be a 1103is used; the default is to center the bitmap. Fourth arg may also be a
1105list (ALIGN PERIODIC) where PERIODIC non-nil specifies that the bitmap 1104list (ALIGN PERIODIC) where PERIODIC non-nil specifies that the bitmap
@@ -1133,7 +1132,7 @@ Return new bitmap number, or nil of no more free bitmap slots. */)
1133 fill2 = fb.height - h - fill1; 1132 fill2 = fb.height - h - fill1;
1134 } 1133 }
1135 } 1134 }
1136 1135
1137 if (NILP (width)) 1136 if (NILP (width))
1138 fb.width = 8; 1137 fb.width = 8;
1139 else 1138 else
@@ -1220,7 +1219,7 @@ Return new bitmap number, or nil of no more free bitmap slots. */)
1220 1219
1221DEFUN ("set-fringe-bitmap-face", Fset_fringe_bitmap_face, Sset_fringe_bitmap_face, 1220DEFUN ("set-fringe-bitmap-face", Fset_fringe_bitmap_face, Sset_fringe_bitmap_face,
1222 1, 2, 0, 1221 1, 2, 0,
1223 doc: /* Set face for fringe bitmap FRINGE-ID to FACE. 1222 doc: /* Set face for fringe bitmap FRINGE-ID to FACE.
1224If FACE is nil, reset face to default fringe face. */) 1223If FACE is nil, reset face to default fringe face. */)
1225 (fringe_id, face) 1224 (fringe_id, face)
1226 Lisp_Object fringe_id, face; 1225 Lisp_Object fringe_id, face;
@@ -1247,7 +1246,7 @@ If FACE is nil, reset face to default fringe face. */)
1247 1246
1248DEFUN ("fringe-bitmaps-at-pos", Ffringe_bitmaps_at_pos, Sfringe_bitmaps_at_pos, 1247DEFUN ("fringe-bitmaps-at-pos", Ffringe_bitmaps_at_pos, Sfringe_bitmaps_at_pos,
1249 0, 2, 0, 1248 0, 2, 0,
1250 doc: /* Return fringe bitmaps of row containing position POS in window WINDOW. 1249 doc: /* Return fringe bitmaps of row containing position POS in window WINDOW.
1251If WINDOW is nil, use selected window. If POS is nil, use value of point 1250If WINDOW is nil, use selected window. If POS is nil, use value of point
1252in that window. Return value is a cons (LEFT . RIGHT) where LEFT and RIGHT 1251in that window. Return value is a cons (LEFT . RIGHT) where LEFT and RIGHT
1253are the fringe bitmap numbers for the bitmaps in the left and right fringe, 1252are the fringe bitmap numbers for the bitmaps in the left and right fringe,
@@ -1349,7 +1348,7 @@ w32_reset_fringes ()
1349{ 1348{
1350 /* Destroy row bitmaps. */ 1349 /* Destroy row bitmaps. */
1351 int bt; 1350 int bt;
1352 1351
1353 for (bt = NO_FRINGE_BITMAP + 1; bt < max_used_fringe_bitmap; bt++) 1352 for (bt = NO_FRINGE_BITMAP + 1; bt < max_used_fringe_bitmap; bt++)
1354 rif->destroy_fringe_bitmap (bt); 1353 rif->destroy_fringe_bitmap (bt);
1355} 1354}
diff --git a/src/indent.c b/src/indent.c
index 1b3e5847510..32efcbd0cc7 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1199,7 +1199,6 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
1199 = (INTEGERP (current_buffer->selective_display) 1199 = (INTEGERP (current_buffer->selective_display)
1200 ? XINT (current_buffer->selective_display) 1200 ? XINT (current_buffer->selective_display)
1201 : !NILP (current_buffer->selective_display) ? -1 : 0); 1201 : !NILP (current_buffer->selective_display) ? -1 : 0);
1202 int prev_hpos = 0;
1203 int selective_rlen 1202 int selective_rlen
1204 = (selective && dp && VECTORP (DISP_INVIS_VECTOR (dp)) 1203 = (selective && dp && VECTORP (DISP_INVIS_VECTOR (dp))
1205 ? XVECTOR (DISP_INVIS_VECTOR (dp))->size : 0); 1204 ? XVECTOR (DISP_INVIS_VECTOR (dp))->size : 0);
@@ -1227,6 +1226,8 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
1227 int wide_column_end_hpos = 0; 1226 int wide_column_end_hpos = 0;
1228 int prev_pos; /* Previous buffer position. */ 1227 int prev_pos; /* Previous buffer position. */
1229 int prev_pos_byte; /* Previous buffer position. */ 1228 int prev_pos_byte; /* Previous buffer position. */
1229 int prev_hpos = 0;
1230 int prev_vpos = 0;
1230 int contin_hpos; /* HPOS of last column of continued line. */ 1231 int contin_hpos; /* HPOS of last column of continued line. */
1231 int prev_tab_offset; /* Previous tab offset. */ 1232 int prev_tab_offset; /* Previous tab offset. */
1232 1233
@@ -1275,6 +1276,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
1275 pos = prev_pos; 1276 pos = prev_pos;
1276 pos_byte = prev_pos_byte; 1277 pos_byte = prev_pos_byte;
1277 hpos = prev_hpos; 1278 hpos = prev_hpos;
1279 vpos = prev_vpos;
1278 tab_offset = prev_tab_offset; 1280 tab_offset = prev_tab_offset;
1279 } 1281 }
1280 break; 1282 break;
@@ -1384,6 +1386,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
1384 if (pos >= next_boundary) 1386 if (pos >= next_boundary)
1385 next_boundary = pos + 1; 1387 next_boundary = pos + 1;
1386 prev_hpos = width; 1388 prev_hpos = width;
1389 prev_vpos = vpos;
1387 prev_tab_offset = tab_offset; 1390 prev_tab_offset = tab_offset;
1388 } 1391 }
1389 } 1392 }
@@ -1416,6 +1419,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
1416 pos = prev_pos; 1419 pos = prev_pos;
1417 pos_byte = prev_pos_byte; 1420 pos_byte = prev_pos_byte;
1418 hpos = prev_hpos; 1421 hpos = prev_hpos;
1422 vpos = prev_vpos;
1419 tab_offset = prev_tab_offset; 1423 tab_offset = prev_tab_offset;
1420 1424
1421 /* NOTE on contin_hpos, hpos, and prev_hpos. 1425 /* NOTE on contin_hpos, hpos, and prev_hpos.
@@ -1436,10 +1440,6 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
1436 hpos = contin_hpos; 1440 hpos = contin_hpos;
1437 vpos = vpos - 1; 1441 vpos = vpos - 1;
1438 } 1442 }
1439 else if (c == '\n')
1440 /* If previous character is NEWLINE,
1441 set VPOS back to previous line */
1442 vpos = vpos - 1;
1443 break; 1443 break;
1444 } 1444 }
1445 1445
@@ -1457,6 +1457,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
1457 pos = prev_pos; 1457 pos = prev_pos;
1458 pos_byte = prev_pos_byte; 1458 pos_byte = prev_pos_byte;
1459 hpos = prev_hpos; 1459 hpos = prev_hpos;
1460 vpos = prev_vpos;
1460 tab_offset = prev_tab_offset; 1461 tab_offset = prev_tab_offset;
1461 } 1462 }
1462 break; 1463 break;
@@ -1465,6 +1466,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
1465 break; 1466 break;
1466 1467
1467 prev_hpos = hpos; 1468 prev_hpos = hpos;
1469 prev_vpos = vpos;
1468 prev_pos = pos; 1470 prev_pos = pos;
1469 prev_pos_byte = pos_byte; 1471 prev_pos_byte = pos_byte;
1470 wide_column_end_hpos = 0; 1472 wide_column_end_hpos = 0;
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index 1007e3940b0..0c153b185d8 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -723,6 +723,21 @@ $(BLD)/frame.$(O) : \
723 $(SRC)/w32term.h \ 723 $(SRC)/w32term.h \
724 $(SRC)/window.h 724 $(SRC)/window.h
725 725
726$(BLD)/fringe.$(O) : \
727 $(SRC)/fringe.c \
728 $(EMACS_ROOT)/src/s/ms-w32.h \
729 $(EMACS_ROOT)/src/m/intel386.h \
730 $(EMACS_ROOT)/src/config.h \
731 $(SRC)/atimer.h \
732 $(SRC)/blockinput.h \
733 $(SRC)/buffer.h \
734 $(SRC)/dispextern.h \
735 $(SRC)/frame.h \
736 $(SRC)/systime.h \
737 $(SRC)/w32bdf.h \
738 $(SRC)/w32gui.h \
739 $(SRC)/window.h
740
726$(BLD)/gmalloc.$(O) : \ 741$(BLD)/gmalloc.$(O) : \
727 $(SRC)/gmalloc.c \ 742 $(SRC)/gmalloc.c \
728 $(EMACS_ROOT)/src/s/ms-w32.h \ 743 $(EMACS_ROOT)/src/s/ms-w32.h \
diff --git a/src/s/sol2-6.h b/src/s/sol2-6.h
index a43443e48c2..3ba9ed1f5bd 100644
--- a/src/s/sol2-6.h
+++ b/src/s/sol2-6.h
@@ -7,5 +7,10 @@
7#define UNEXEC unexsol.o 7#define UNEXEC unexsol.o
8#endif 8#endif
9 9
10/* "Dennis McRitchie" <dmcr@Princeton.EDU> reported failures
11 with GNU ld without this. */
12
13#define LD_SWITCH_SYSTEM_TEMACS -znocombreloc
14
10/* arch-tag: 71ea3857-89dc-4395-9623-77964e6ed3ca 15/* arch-tag: 71ea3857-89dc-4395-9623-77964e6ed3ca
11 (do not change this comment) */ 16 (do not change this comment) */
diff --git a/src/w32term.c b/src/w32term.c
index c59dabc27b0..41c188a2414 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -4394,7 +4394,7 @@ w32_read_socket (sd, expected, hold_quit)
4394 4394
4395 if (tool_bar_p 4395 if (tool_bar_p
4396 || (dpyinfo->w32_focus_frame 4396 || (dpyinfo->w32_focus_frame
4397 && f == dpyinfo->w32_focus_frame)) 4397 && f != dpyinfo->w32_focus_frame))
4398 inev.kind = NO_EVENT; 4398 inev.kind = NO_EVENT;
4399 } 4399 }
4400 4400
diff --git a/src/window.c b/src/window.c
index 7419239752a..0192aa4edf6 100644
--- a/src/window.c
+++ b/src/window.c
@@ -281,6 +281,7 @@ make_window ()
281 p->fringes_outside_margins = Qnil; 281 p->fringes_outside_margins = Qnil;
282 p->scroll_bar_width = Qnil; 282 p->scroll_bar_width = Qnil;
283 p->vertical_scroll_bar_type = Qt; 283 p->vertical_scroll_bar_type = Qt;
284 p->overlay_arrow_bitmap = 0;
284 285
285 Vwindow_list = Qnil; 286 Vwindow_list = Qnil;
286 return val; 287 return val;
@@ -3269,9 +3270,10 @@ Returns the window displaying BUFFER.
3269If `display-buffer-reuse-frames' is non-nil, and another frame is currently 3270If `display-buffer-reuse-frames' is non-nil, and another frame is currently
3270displaying BUFFER, then simply raise that frame. 3271displaying BUFFER, then simply raise that frame.
3271 3272
3272The variables `special-display-buffer-names', `special-display-regexps', 3273The variables `special-display-buffer-names',
3273`same-window-buffer-names', and `same-window-regexps' customize how certain 3274`special-display-regexps', `same-window-buffer-names', and
3274buffer names are handled. 3275`same-window-regexps' customize how certain buffer names are handled.
3276The latter two take effect only if NOT-THIS-WINDOW is t.
3275 3277
3276If optional argument FRAME is `visible', search all visible frames. 3278If optional argument FRAME is `visible', search all visible frames.
3277If FRAME is 0, search all visible and iconified frames. 3279If FRAME is 0, search all visible and iconified frames.
diff --git a/src/window.h b/src/window.h
index f45ca39bb93..ef81da43b4d 100644
--- a/src/window.h
+++ b/src/window.h
@@ -254,6 +254,9 @@ struct window
254 /* This is handy for undrawing the cursor. */ 254 /* This is handy for undrawing the cursor. */
255 int phys_cursor_ascent, phys_cursor_height; 255 int phys_cursor_ascent, phys_cursor_height;
256 256
257 /* Alternate overlay-arrow-bitmap in this window. */
258 int overlay_arrow_bitmap;
259
257 /* Non-zero means the cursor is currently displayed. This can be 260 /* Non-zero means the cursor is currently displayed. This can be
258 set to zero by functions overpainting the cursor image. */ 261 set to zero by functions overpainting the cursor image. */
259 unsigned phys_cursor_on_p : 1; 262 unsigned phys_cursor_on_p : 1;
diff --git a/src/xdisp.c b/src/xdisp.c
index 67f21446320..bb7ce740a63 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -403,6 +403,13 @@ int multiple_frames;
403 403
404Lisp_Object Vglobal_mode_string; 404Lisp_Object Vglobal_mode_string;
405 405
406
407/* List of variables (symbols) which hold markers for overlay arrows.
408 The symbols on this list are examined during redisplay to determine
409 where to display overlay arrows. */
410
411Lisp_Object Voverlay_arrow_variable_list;
412
406/* Marker for where to display an arrow on top of the buffer text. */ 413/* Marker for where to display an arrow on top of the buffer text. */
407 414
408Lisp_Object Voverlay_arrow_position; 415Lisp_Object Voverlay_arrow_position;
@@ -411,11 +418,17 @@ Lisp_Object Voverlay_arrow_position;
411 418
412Lisp_Object Voverlay_arrow_string; 419Lisp_Object Voverlay_arrow_string;
413 420
414/* Values of those variables at last redisplay. However, if 421/* Values of those variables at last redisplay are stored as
415 Voverlay_arrow_position is a marker, last_arrow_position is its 422 properties on `overlay-arrow-position' symbol. However, if
423 Voverlay_arrow_position is a marker, last-arrow-position is its
416 numerical position. */ 424 numerical position. */
417 425
418static Lisp_Object last_arrow_position, last_arrow_string; 426Lisp_Object Qlast_arrow_position, Qlast_arrow_string;
427
428/* Alternative overlay-arrow-string and overlay-arrow-bitmap
429 properties on a symbol in overlay-arrow-variable-list. */
430
431Lisp_Object Qoverlay_arrow_string, Qoverlay_arrow_bitmap;
419 432
420/* Like mode-line-format, but for the title bar on a visible frame. */ 433/* Like mode-line-format, but for the title bar on a visible frame. */
421 434
@@ -828,7 +841,8 @@ static struct text_pos display_prop_end P_ ((struct it *, Lisp_Object,
828static int compute_window_start_on_continuation_line P_ ((struct window *)); 841static int compute_window_start_on_continuation_line P_ ((struct window *));
829static Lisp_Object safe_eval_handler P_ ((Lisp_Object)); 842static Lisp_Object safe_eval_handler P_ ((Lisp_Object));
830static void insert_left_trunc_glyphs P_ ((struct it *)); 843static void insert_left_trunc_glyphs P_ ((struct it *));
831static struct glyph_row *get_overlay_arrow_glyph_row P_ ((struct window *)); 844static struct glyph_row *get_overlay_arrow_glyph_row P_ ((struct window *,
845 Lisp_Object));
832static void extend_face_to_end_of_line P_ ((struct it *)); 846static void extend_face_to_end_of_line P_ ((struct it *));
833static int append_space P_ ((struct it *, int)); 847static int append_space P_ ((struct it *, int));
834static int make_cursor_line_fully_visible P_ ((struct window *)); 848static int make_cursor_line_fully_visible P_ ((struct window *));
@@ -9316,6 +9330,153 @@ redisplay ()
9316} 9330}
9317 9331
9318 9332
9333static Lisp_Object
9334overlay_arrow_string_or_property (var, pbitmap)
9335 Lisp_Object var;
9336 int *pbitmap;
9337{
9338 Lisp_Object pstr = Fget (var, Qoverlay_arrow_string);
9339 Lisp_Object bitmap;
9340
9341 if (pbitmap)
9342 {
9343 *pbitmap = 0;
9344 if (bitmap = Fget (var, Qoverlay_arrow_bitmap), INTEGERP (bitmap))
9345 *pbitmap = XINT (bitmap);
9346 }
9347
9348 if (!NILP (pstr))
9349 return pstr;
9350 return Voverlay_arrow_string;
9351}
9352
9353/* Return 1 if there are any overlay-arrows in current_buffer. */
9354static int
9355overlay_arrow_in_current_buffer_p ()
9356{
9357 Lisp_Object vlist;
9358
9359 for (vlist = Voverlay_arrow_variable_list;
9360 CONSP (vlist);
9361 vlist = XCDR (vlist))
9362 {
9363 Lisp_Object var = XCAR (vlist);
9364 Lisp_Object val;
9365
9366 if (!SYMBOLP (var))
9367 continue;
9368 val = find_symbol_value (var);
9369 if (MARKERP (val)
9370 && current_buffer == XMARKER (val)->buffer)
9371 return 1;
9372 }
9373 return 0;
9374}
9375
9376
9377/* Return 1 if any overlay_arrows have moved or overlay-arrow-string
9378 has changed. */
9379
9380static int
9381overlay_arrows_changed_p ()
9382{
9383 Lisp_Object vlist;
9384
9385 for (vlist = Voverlay_arrow_variable_list;
9386 CONSP (vlist);
9387 vlist = XCDR (vlist))
9388 {
9389 Lisp_Object var = XCAR (vlist);
9390 Lisp_Object val, pstr;
9391
9392 if (!SYMBOLP (var))
9393 continue;
9394 val = find_symbol_value (var);
9395 if (!MARKERP (val))
9396 continue;
9397 if (! EQ (COERCE_MARKER (val),
9398 Fget (var, Qlast_arrow_position))
9399 || ! (pstr = overlay_arrow_string_or_property (var, 0),
9400 EQ (pstr, Fget (var, Qlast_arrow_string))))
9401 return 1;
9402 }
9403 return 0;
9404}
9405
9406/* Mark overlay arrows to be updated on next redisplay. */
9407
9408static void
9409update_overlay_arrows (up_to_date)
9410 int up_to_date;
9411{
9412 Lisp_Object vlist;
9413
9414 for (vlist = Voverlay_arrow_variable_list;
9415 CONSP (vlist);
9416 vlist = XCDR (vlist))
9417 {
9418 Lisp_Object var = XCAR (vlist);
9419
9420 if (!SYMBOLP (var))
9421 continue;
9422
9423 if (up_to_date)
9424 {
9425 Lisp_Object val = find_symbol_value (var);
9426 Fput (var, Qlast_arrow_position,
9427 COERCE_MARKER (val));
9428 Fput (var, Qlast_arrow_string,
9429 overlay_arrow_string_or_property (var, 0));
9430 }
9431 else if (up_to_date < 0
9432 || !NILP (Fget (var, Qlast_arrow_position)))
9433 {
9434 Fput (var, Qlast_arrow_position, Qt);
9435 Fput (var, Qlast_arrow_string, Qt);
9436 }
9437 }
9438}
9439
9440
9441/* Return overlay arrow string at row, or nil. */
9442
9443static Lisp_Object
9444overlay_arrow_at_row (f, row, pbitmap)
9445 struct frame *f;
9446 struct glyph_row *row;
9447 int *pbitmap;
9448{
9449 Lisp_Object vlist;
9450
9451 for (vlist = Voverlay_arrow_variable_list;
9452 CONSP (vlist);
9453 vlist = XCDR (vlist))
9454 {
9455 Lisp_Object var = XCAR (vlist);
9456 Lisp_Object val;
9457
9458 if (!SYMBOLP (var))
9459 continue;
9460
9461 val = find_symbol_value (var);
9462
9463 if (MARKERP (val)
9464 && current_buffer == XMARKER (val)->buffer
9465 && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val)))
9466 {
9467 val = overlay_arrow_string_or_property (var, pbitmap);
9468 if (FRAME_WINDOW_P (f))
9469 return Qt;
9470 else if (STRINGP (val))
9471 return val;
9472 break;
9473 }
9474 }
9475
9476 *pbitmap = 0;
9477 return Qnil;
9478}
9479
9319/* Return 1 if point moved out of or into a composition. Otherwise 9480/* Return 1 if point moved out of or into a composition. Otherwise
9320 return 0. PREV_BUF and PREV_PT are the last point buffer and 9481 return 0. PREV_BUF and PREV_PT are the last point buffer and
9321 position. BUF and PT are the current point buffer and position. */ 9482 position. BUF and PT are the current point buffer and position. */
@@ -9595,8 +9756,7 @@ redisplay_internal (preserve_echo_area)
9595 9756
9596 /* If specs for an arrow have changed, do thorough redisplay 9757 /* If specs for an arrow have changed, do thorough redisplay
9597 to ensure we remove any arrow that should no longer exist. */ 9758 to ensure we remove any arrow that should no longer exist. */
9598 if (! EQ (COERCE_MARKER (Voverlay_arrow_position), last_arrow_position) 9759 if (overlay_arrows_changed_p ())
9599 || ! EQ (Voverlay_arrow_string, last_arrow_string))
9600 consider_all_windows_p = windows_or_buffers_changed = 1; 9760 consider_all_windows_p = windows_or_buffers_changed = 1;
9601 9761
9602 /* Normally the message* functions will have already displayed and 9762 /* Normally the message* functions will have already displayed and
@@ -10056,11 +10216,7 @@ redisplay_internal (preserve_echo_area)
10056 CHARPOS (this_line_start_pos) = 0; 10216 CHARPOS (this_line_start_pos) = 0;
10057 10217
10058 /* Let the overlay arrow be updated the next time. */ 10218 /* Let the overlay arrow be updated the next time. */
10059 if (!NILP (last_arrow_position)) 10219 update_overlay_arrows (0);
10060 {
10061 last_arrow_position = Qt;
10062 last_arrow_string = Qt;
10063 }
10064 10220
10065 /* If we pause after scrolling, some rows in the current 10221 /* If we pause after scrolling, some rows in the current
10066 matrices of some windows are not valid. */ 10222 matrices of some windows are not valid. */
@@ -10076,8 +10232,8 @@ redisplay_internal (preserve_echo_area)
10076 consider_all_windows_p is set. */ 10232 consider_all_windows_p is set. */
10077 mark_window_display_accurate_1 (w, 1); 10233 mark_window_display_accurate_1 (w, 1);
10078 10234
10079 last_arrow_position = COERCE_MARKER (Voverlay_arrow_position); 10235 /* Say overlay arrows are up to date. */
10080 last_arrow_string = Voverlay_arrow_string; 10236 update_overlay_arrows (1);
10081 10237
10082 if (FRAME_DISPLAY (sf)->frame_up_to_date_hook != 0) 10238 if (FRAME_DISPLAY (sf)->frame_up_to_date_hook != 0)
10083 FRAME_DISPLAY (sf)->frame_up_to_date_hook (sf); 10239 FRAME_DISPLAY (sf)->frame_up_to_date_hook (sf);
@@ -10273,16 +10429,14 @@ mark_window_display_accurate (window, accurate_p)
10273 10429
10274 if (accurate_p) 10430 if (accurate_p)
10275 { 10431 {
10276 last_arrow_position = COERCE_MARKER (Voverlay_arrow_position); 10432 update_overlay_arrows (1);
10277 last_arrow_string = Voverlay_arrow_string;
10278 } 10433 }
10279 else 10434 else
10280 { 10435 {
10281 /* Force a thorough redisplay the next time by setting 10436 /* Force a thorough redisplay the next time by setting
10282 last_arrow_position and last_arrow_string to t, which is 10437 last_arrow_position and last_arrow_string to t, which is
10283 unequal to any useful value of Voverlay_arrow_... */ 10438 unequal to any useful value of Voverlay_arrow_... */
10284 last_arrow_position = Qt; 10439 update_overlay_arrows (-1);
10285 last_arrow_string = Qt;
10286 } 10440 }
10287} 10441}
10288 10442
@@ -11033,8 +11187,7 @@ try_cursor_movement (window, startp, scroll_step)
11033 && INTEGERP (w->window_end_vpos) 11187 && INTEGERP (w->window_end_vpos)
11034 && XFASTINT (w->window_end_vpos) < w->current_matrix->nrows 11188 && XFASTINT (w->window_end_vpos) < w->current_matrix->nrows
11035 && (FRAME_WINDOW_P (f) 11189 && (FRAME_WINDOW_P (f)
11036 || !MARKERP (Voverlay_arrow_position) 11190 || !overlay_arrow_in_current_buffer_p ()))
11037 || current_buffer != XMARKER (Voverlay_arrow_position)->buffer))
11038 { 11191 {
11039 int this_scroll_margin; 11192 int this_scroll_margin;
11040 struct glyph_row *row = NULL; 11193 struct glyph_row *row = NULL;
@@ -12786,8 +12939,7 @@ try_window_id (w)
12786 GIVE_UP (10); 12939 GIVE_UP (10);
12787 12940
12788 /* Can use this if overlay arrow position and or string have changed. */ 12941 /* Can use this if overlay arrow position and or string have changed. */
12789 if (!EQ (last_arrow_position, COERCE_MARKER (Voverlay_arrow_position)) 12942 if (overlay_arrows_changed_p ())
12790 || !EQ (last_arrow_string, Voverlay_arrow_string))
12791 GIVE_UP (12); 12943 GIVE_UP (12);
12792 12944
12793 12945
@@ -13724,14 +13876,15 @@ usage: (trace-to-stderr STRING &rest OBJECTS) */)
13724 arrow. Only used for non-window-redisplay windows. */ 13876 arrow. Only used for non-window-redisplay windows. */
13725 13877
13726static struct glyph_row * 13878static struct glyph_row *
13727get_overlay_arrow_glyph_row (w) 13879get_overlay_arrow_glyph_row (w, overlay_arrow_string)
13728 struct window *w; 13880 struct window *w;
13881 Lisp_Object overlay_arrow_string;
13729{ 13882{
13730 struct frame *f = XFRAME (WINDOW_FRAME (w)); 13883 struct frame *f = XFRAME (WINDOW_FRAME (w));
13731 struct buffer *buffer = XBUFFER (w->buffer); 13884 struct buffer *buffer = XBUFFER (w->buffer);
13732 struct buffer *old = current_buffer; 13885 struct buffer *old = current_buffer;
13733 const unsigned char *arrow_string = SDATA (Voverlay_arrow_string); 13886 const unsigned char *arrow_string = SDATA (overlay_arrow_string);
13734 int arrow_len = SCHARS (Voverlay_arrow_string); 13887 int arrow_len = SCHARS (overlay_arrow_string);
13735 const unsigned char *arrow_end = arrow_string + arrow_len; 13888 const unsigned char *arrow_end = arrow_string + arrow_len;
13736 const unsigned char *p; 13889 const unsigned char *p;
13737 struct it it; 13890 struct it it;
@@ -13758,7 +13911,7 @@ get_overlay_arrow_glyph_row (w)
13758 13911
13759 /* Get its face. */ 13912 /* Get its face. */
13760 ilisp = make_number (p - arrow_string); 13913 ilisp = make_number (p - arrow_string);
13761 face = Fget_text_property (ilisp, Qface, Voverlay_arrow_string); 13914 face = Fget_text_property (ilisp, Qface, overlay_arrow_string);
13762 it.face_id = compute_char_face (f, it.c, face); 13915 it.face_id = compute_char_face (f, it.c, face);
13763 13916
13764 /* Compute its width, get its glyphs. */ 13917 /* Compute its width, get its glyphs. */
@@ -14197,6 +14350,8 @@ display_line (it)
14197 struct it *it; 14350 struct it *it;
14198{ 14351{
14199 struct glyph_row *row = it->glyph_row; 14352 struct glyph_row *row = it->glyph_row;
14353 int overlay_arrow_bitmap;
14354 Lisp_Object overlay_arrow_string;
14200 14355
14201 /* We always start displaying at hpos zero even if hscrolled. */ 14356 /* We always start displaying at hpos zero even if hscrolled. */
14202 xassert (it->hpos == 0 && it->current_x == 0); 14357 xassert (it->hpos == 0 && it->current_x == 0);
@@ -14592,17 +14747,16 @@ display_line (it)
14592 mark this glyph row as the one containing the overlay arrow. 14747 mark this glyph row as the one containing the overlay arrow.
14593 This is clearly a mess with variable size fonts. It would be 14748 This is clearly a mess with variable size fonts. It would be
14594 better to let it be displayed like cursors under X. */ 14749 better to let it be displayed like cursors under X. */
14595 if (MARKERP (Voverlay_arrow_position) 14750 if (! overlay_arrow_seen
14596 && current_buffer == XMARKER (Voverlay_arrow_position)->buffer 14751 && (overlay_arrow_string
14597 && (MATRIX_ROW_START_CHARPOS (row) 14752 = overlay_arrow_at_row (it->f, row, &overlay_arrow_bitmap),
14598 == marker_position (Voverlay_arrow_position)) 14753 !NILP (overlay_arrow_string)))
14599 && STRINGP (Voverlay_arrow_string)
14600 && ! overlay_arrow_seen)
14601 { 14754 {
14602 /* Overlay arrow in window redisplay is a fringe bitmap. */ 14755 /* Overlay arrow in window redisplay is a fringe bitmap. */
14603 if (!FRAME_WINDOW_P (it->f)) 14756 if (!FRAME_WINDOW_P (it->f))
14604 { 14757 {
14605 struct glyph_row *arrow_row = get_overlay_arrow_glyph_row (it->w); 14758 struct glyph_row *arrow_row
14759 = get_overlay_arrow_glyph_row (it->w, overlay_arrow_string);
14606 struct glyph *glyph = arrow_row->glyphs[TEXT_AREA]; 14760 struct glyph *glyph = arrow_row->glyphs[TEXT_AREA];
14607 struct glyph *arrow_end = glyph + arrow_row->used[TEXT_AREA]; 14761 struct glyph *arrow_end = glyph + arrow_row->used[TEXT_AREA];
14608 struct glyph *p = row->glyphs[TEXT_AREA]; 14762 struct glyph *p = row->glyphs[TEXT_AREA];
@@ -14626,6 +14780,7 @@ display_line (it)
14626 } 14780 }
14627 14781
14628 overlay_arrow_seen = 1; 14782 overlay_arrow_seen = 1;
14783 it->w->overlay_arrow_bitmap = overlay_arrow_bitmap;
14629 row->overlay_arrow_p = 1; 14784 row->overlay_arrow_p = 1;
14630 } 14785 }
14631 14786
@@ -17707,6 +17862,9 @@ produce_image_glyph (it)
17707 if (it->image_id < 0) 17862 if (it->image_id < 0)
17708 { 17863 {
17709 /* Fringe bitmap. */ 17864 /* Fringe bitmap. */
17865 it->ascent = it->phys_ascent = 0;
17866 it->descent = it->phys_descent = 0;
17867 it->pixel_width = 0;
17710 it->nglyphs = 0; 17868 it->nglyphs = 0;
17711 return; 17869 return;
17712 } 17870 }
@@ -21433,10 +21591,15 @@ syms_of_xdisp ()
21433 list_of_error = Fcons (intern ("error"), Qnil); 21591 list_of_error = Fcons (intern ("error"), Qnil);
21434 staticpro (&list_of_error); 21592 staticpro (&list_of_error);
21435 21593
21436 last_arrow_position = Qnil; 21594 Qlast_arrow_position = intern ("last-arrow-position");
21437 last_arrow_string = Qnil; 21595 staticpro (&Qlast_arrow_position);
21438 staticpro (&last_arrow_position); 21596 Qlast_arrow_string = intern ("last-arrow-string");
21439 staticpro (&last_arrow_string); 21597 staticpro (&Qlast_arrow_string);
21598
21599 Qoverlay_arrow_string = intern ("overlay-arrow-string");
21600 staticpro (&Qoverlay_arrow_string);
21601 Qoverlay_arrow_bitmap = intern ("overlay-arrow-bitmap");
21602 staticpro (&Qoverlay_arrow_bitmap);
21440 21603
21441 echo_buffer[0] = echo_buffer[1] = Qnil; 21604 echo_buffer[0] = echo_buffer[1] = Qnil;
21442 staticpro (&echo_buffer[0]); 21605 staticpro (&echo_buffer[0]);
@@ -21500,9 +21663,17 @@ See also `overlay-arrow-string'. */);
21500 Voverlay_arrow_position = Qnil; 21663 Voverlay_arrow_position = Qnil;
21501 21664
21502 DEFVAR_LISP ("overlay-arrow-string", &Voverlay_arrow_string, 21665 DEFVAR_LISP ("overlay-arrow-string", &Voverlay_arrow_string,
21503 doc: /* String to display as an arrow. See also `overlay-arrow-position'. */); 21666 doc: /* String to display as an arrow in non-window frames.
21667See also `overlay-arrow-position'. */);
21504 Voverlay_arrow_string = Qnil; 21668 Voverlay_arrow_string = Qnil;
21505 21669
21670 DEFVAR_LISP ("overlay-arrow-variable-list", &Voverlay_arrow_variable_list,
21671 doc: /* List of variables (symbols) which hold markers for overlay arrows.
21672The symbols on this list are examined during redisplay to determine
21673where to display overlay arrows. */);
21674 Voverlay_arrow_variable_list
21675 = Fcons (intern ("overlay-arrow-position"), Qnil);
21676
21506 DEFVAR_INT ("scroll-step", &scroll_step, 21677 DEFVAR_INT ("scroll-step", &scroll_step,
21507 doc: /* *The number of lines to try scrolling a window by when point moves out. 21678 doc: /* *The number of lines to try scrolling a window by when point moves out.
21508If that fails to bring point back on frame, point is centered instead. 21679If that fails to bring point back on frame, point is centered instead.
diff --git a/src/xfns.c b/src/xfns.c
index 9f21cc98502..b2b16defdbd 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -3762,8 +3762,17 @@ If omitted or nil, that stands for the selected frame's display. */)
3762{ 3762{
3763 struct x_display_info *dpyinfo = check_x_display_info (display); 3763 struct x_display_info *dpyinfo = check_x_display_info (display);
3764 3764
3765 return make_number (DisplayCells (dpyinfo->display, 3765 int nr_planes = DisplayPlanes (dpyinfo->display,
3766 XScreenNumberOfScreen (dpyinfo->screen))); 3766 XScreenNumberOfScreen (dpyinfo->screen));
3767
3768 /* Truncate nr_planes to 24 to avoid integer overflow.
3769 Some displays says 32, but only 24 bits are actually significant.
3770 There are only very few and rare video cards that have more than
3771 24 significant bits. Also 24 bits is more than 16 million colors,
3772 it "should be enough for everyone". */
3773 if (nr_planes > 24) nr_planes = 24;
3774
3775 return make_number (1 << nr_planes);
3767} 3776}
3768 3777
3769DEFUN ("x-server-max-request-size", Fx_server_max_request_size, 3778DEFUN ("x-server-max-request-size", Fx_server_max_request_size,