Merged in changes from CVS HEAD
authorKaroly Lorentey <lorentey@elte.hu>
Sun, 7 Mar 2004 15:30:22 +0000 (15:30 +0000)
committerKaroly Lorentey <lorentey@elte.hu>
Sun, 7 Mar 2004 15:30:22 +0000 (15:30 +0000)
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

66 files changed:
ChangeLog
Makefile.in
etc/NEWS
etc/TUTORIAL.fr
leim/ChangeLog
leim/Makefile.in
leim/makefile.nt
leim/makefile.w32-in
lib-src/ChangeLog
lib-src/makefile.w32-in
lisp/ChangeLog
lisp/Makefile.in
lisp/allout.el
lisp/desktop.el
lisp/emulation/tpu-edt.el
lisp/eshell/em-smart.el
lisp/files.el
lisp/font-lock.el
lisp/gdb-ui.el
lisp/gnus/ChangeLog
lisp/gnus/message.el
lisp/help-at-pt.el
lisp/hexl.el
lisp/isearch.el
lisp/mail/mail-utils.el
lisp/mail/rmail.el
lisp/mail/sendmail.el
lisp/mouse-sel.el
lisp/net/browse-url.el
lisp/newcomment.el
lisp/pcvs-info.el
lisp/printing.el
lisp/progmodes/ebnf-iso.el
lisp/progmodes/ebnf-otz.el
lisp/progmodes/ebnf-yac.el
lisp/progmodes/sh-script.el
lisp/ps-print.el
lisp/simple.el
lisp/sort.el
lisp/startup.el
lisp/textmodes/fill.el
lisp/xml.el
lispref/ChangeLog
lispref/abbrevs.texi
lispref/hash.texi
lispref/lists.texi
lispref/markers.texi
lispref/processes.texi
man/ChangeLog
man/buffers.texi
man/mule.texi
man/programs.texi
man/search.texi
src/ChangeLog
src/buffer.c
src/doc.c
src/editfns.c
src/fringe.c
src/indent.c
src/makefile.w32-in
src/s/sol2-6.h
src/w32term.c
src/window.c
src/window.h
src/xdisp.c
src/xfns.c

index e29f94f..3a28630 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,12 +1,15 @@
+2004-03-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * Makefile.in (maintainer-clean): Clean in the lisp dir as well.
+       (bootstrap): Use the new boostrap-prepare target in lisp.
+
 2004-02-18  Kim F. Storm  <storm@cua.dk>
 
-       * INSTALL.CVS: Add info about ssh/cvs related problems and
-       work-around.
+       * INSTALL.CVS: Add info about ssh/cvs related problems and work-around.
 
 2004-02-16  Eli Zaretskii  <eliz@elta.co.il>
 
-       * make-dist: Don't link index.*perm and permute-index into
-       tempdir.
+       * make-dist: Don't link index.*perm and permute-index into tempdir.
 
 2004-02-14  Jonathan Yavner  <jyavner@member.fsf.org>
 
index cf572f2..d7ed067 100644 (file)
@@ -2,8 +2,8 @@
 # DIST: make most of the changes to this file you might want, so try
 # DIST: that first.
 
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#  2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright (C) 1992,93,94,95,96,97,98,1999,2000,01,02,03,2004
+#   Free Software Foundation, Inc.
 
 # This file is part of GNU Emacs.
 
@@ -634,6 +634,7 @@ maintainer-clean: FRC
        -(cd lispref &&   $(MAKE) $(MFLAGS) maintainer-clean)
        -(cd lispintro &&   $(MAKE) $(MFLAGS) maintainer-clean)
        (cd leim;     $(MAKE) $(MFLAGS) maintainer-clean)
+       (cd lisp;     $(MAKE) $(MFLAGS) maintainer-clean)
        ${top_distclean}
 
 ### This doesn't actually appear in the coding standards, but Karl
@@ -734,7 +735,7 @@ maybe_bootstrap:
        fi
 
 bootstrap: bootstrap-clean-before info FRC
-       (cd lisp; $(MAKE) $(MFLAGS) bootstrap-clean)
+       (cd lisp; $(MAKE) $(MFLAGS) bootstrap-prepare)
        (cd src; $(MAKE) $(MFLAGS) bootstrap)
        (cd lisp; $(MAKE) $(MFLAGS) bootstrap EMACS=../src/bootstrap-emacs${EXEEXT})
        (cd src; $(MAKE) $(MFLAGS) mostlyclean)
index 16b55c0..5643bc9 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1826,6 +1826,11 @@ a match if part of it has a read-only property.
 configuration files.
 \f
 * Lisp Changes in Emacs 21.4
+
+** New macro with-local-quit temporarily sets inhibit-quit to nil for use
+around potentially blocking or long-running code in timers
+and post-command-hooks.
+
 +++
 ** New face attribute `min-colors' can be used to tailor the face color
 to the number of colors supported by a display, and define the
@@ -1863,6 +1868,18 @@ for displaying the bitmap.
 identifying the current fringe bitmaps in the display line at a given
 buffer position.  A nil value means no bitmap.
 
+** Multiple overlay arrows can now be defined and managed via the new
+variable `overlay-arrow-variable-list'.  It contains a list of
+varibles which contain overlay arrow position markers, including
+the original `overlay-arrow-position' variable.
+
+Each variable on this list may have individual `overlay-arrow-string'
+and `overlay-arrow-bitmap' properties that specify an overlay arrow
+string (for non-window terminals) or fringe bitmap (for window
+systems) to display at the corresponding overlay arrow position.
+If either property is not set, the default `overlay-arrow-string' or
+'overlay-arrow-fringe-bitmap' will be used.
+
 +++
 ** New function `line-number-at-pos' returns line number of current
 line in current buffer, or if optional buffer position is given, line
index d678f0d..953e9ed 100644 (file)
@@ -638,7 +638,7 @@ fichiers mais la liste obtenue par C-x C-b. Le tampon "*Messages*" ne
 correspond pas non plus à un fichier ; il contient la liste des
 messages apparus dans la ligne d'état pendant votre session Emacs.
 
->> Faites C-x C-b *Messages* <Entrée> pour visualiser le tampon des
+>> Faites C-x b *Messages* <Entrée> pour visualiser le tampon des
    messages.
    Puis, faites C-x b TUTORIAL <Entrée> pour revenir à ce didacticiel.
 
index 1b048bc..2f44746 100644 (file)
@@ -1,3 +1,20 @@
+2004-02-28  Kenichi Handa  <handa@m17n.org>
+
+       * Makefile.in (all): Depends on ${WORLD} instead of ${TIT} and
+       ${MISC-DIC}.
+       (clean, mostlyclean): Don't delete *.elc distributed with tarball.
+       (maintainer-clean): Delete files that are not in CVS repository.
+
+       * makefile.nt (all): Depends on $(WORLD) instead of $(TIT) and
+       $(MISC-DIC).
+       (clean, mostlyclean): Don't delete *.elc distributed with tarball.
+       (maintainer-clean): Delete files that are not in CVS repository.
+
+       * makefile.w32-in (all): Depends on $(WORLD) instead of $(TIT) and
+       $(MISC-DIC).
+       (clean, mostlyclean): Don't delete *.elc distributed with tarball.
+       (maintainer-clean): Delete files that are not in CVS repository.
+
 2004-02-16  J\e,bi\e(Br\e,bt\e(Bme Marant  <jmarant@nerim.net>  (tiny change)
 
        * Makefile.in (distclean maintainer-clean): Depend on clean.
index af20c27..1ef0a2f 100644 (file)
@@ -147,7 +147,7 @@ NON-TIT=${CHINESE-NON-TIT} ${JAPANESE} ${KOREAN} ${EUROPEAN} ${MISC}
 .el.elc:
        ${RUN-EMACS} -f batch-byte-compile $<
 
-all: ${BUILT-EMACS} ${SUBDIRS} ${TIT} ${MISC-DIC} leim-list.el
+all: ${BUILT-EMACS} ${SUBDIRS} ${WORLD} leim-list.el
 
 # To ensure that we can run Emacs.  This target is ignored (never
 # being hit) if a user changes default value of EMACS.
@@ -223,14 +223,17 @@ install: all
        -chmod -R a+r ${INSTALLDIR}
 
 clean mostlyclean:
-       rm -f ${TIT} ${NON-TIT} ${WORLD} ${TIT:.elc=.el} \
-         ${MISC-DIC} ${MISC-DIC:.elc=.el} leim-list.el
+       rm -f ${TIT} ${TIT:.elc=.el} ${MISC-DIC} ${MISC-DIC:.elc=.el} \
+               leim-list.el
 
-distclean maintainer-clean: clean
+distclean: clean
        if test -f stamp-subdir; then rm -rf ${SUBDIRS} stamp-subdir; fi
        rm -f Makefile
 
-extraclean: distclean
+maintainer-clean: distclean
+       rm -f ${WORLD}
+
+extraclean: maintainer-clean
        -rm -f *~ \#* m/?*~ s/?*~
 
 # arch-tag: f666a939-8145-4d64-a6a6-cc1f61bd32ca
index 3793986..41dc8e2 100644 (file)
@@ -132,7 +132,7 @@ WORLD=$(ASIA) $(EUROPEAN) $(MISC)
 TIT=$(CHINESE_TIT)
 NON_TIT=$(CHINESE_NON_TIT) $(JAPANESE) $(KOREAN) $(EUROPEAN) $(MISC)
 
-all: $(BUILT_EMACS) $(SUBDIRS) $(TIT) $(MISC_DIC) leim-list.el
+all: $(BUILT_EMACS) $(SUBDIRS) $(WORLD) leim-list.el
 
 # To ensure that we can run Emacs.  This target is ignored (never
 # being hit) if a user changes default value of EMACS.
@@ -196,11 +196,13 @@ clean mostlyclean:
        for %%f in ($(TIT_EL:/=\)) do $(DEL) %%f
        for %%f in ($(MISC_DIC:/=\)) do $(DEL) %%f
        for %%f in ($(MISC_DIC_EL:/=\)) do $(DEL) %%f
-       for %%f in ($(WORLD:/=\)) do $(DEL) %%f
        $(DEL) leim-list.el
 
-distclean maintainer-clean:
+distclean: clean
        if exist stamp-subdir $(DELTREE) $(SUBDIRS)
        $(DEL) stamp-subdir
 
+maintainer-clean: distclean
+       for %%f in ($(WORLD:/=\)) do $(DEL) %%f
+
 # arch-tag: cded53b4-4803-496b-8c05-7daff80e5b3b
index 5d27337..f19aceb 100644 (file)
@@ -142,7 +142,7 @@ NON_TIT=$(CHINESE_NON_TIT) $(JAPANESE) $(KOREAN) $(EUROPEAN) $(MISC)
 .el.elc:
        $(RUN_EMACS) -f batch-byte-compile $<
 
-all: $(BUILT_EMACS) $(SUBDIRS) $(TIT) $(MISC_DIC) leim-list.el
+all: $(BUILT_EMACS) $(SUBDIRS) $(WORLD) leim-list.el
 
 # To ensure that we can run Emacs.  This target is ignored (never
 # being hit) if a user changes default value of EMACS.
@@ -192,14 +192,16 @@ install: all
 
 clean mostlyclean:
        - $(FOREACH) $(TIT) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR)
-       - $(FOREACH) $(WORLD) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR)
        - $(FOREACH) $(MISC_DIC) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR)
        - $(FOREACH) $(TIT:.elc=.el) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR)
        - $(FOREACH) $(MISC_DIC:.elc=.el) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR)
        - $(DEL) leim-list.el
 
-distclean maintainer-clean:
+distclean clean:
        if exist stamp-subdir $(DELTREE) $(SUBDIRS)
        - $(DEL) stamp-subdir
 
+maintainer-clean: distclean
+       - $(FOREACH) $(WORLD) $(FORDO) $(DEL) $(FORVAR) $(ENDFOR)
+
 # arch-tag: 08250c45-fa9c-4f39-a175-a0c5c36dd67b
index 5758a6d..9876b0b 100644 (file)
@@ -1,3 +1,7 @@
+2004-03-01  Juanma Barranquero  <lektu@terra.es>
+
+       * makefile.w32-in (obj): Add fringe.c.
+
 2004-02-14  Paul Eggert  <eggert@twinsun.com>
 
        * rcs2log: Work correctly if CVSROOT specifies :fork: or
@@ -9,7 +13,7 @@
        along with some related bugs I discovered by inspecting how
        CVS itself parses $CVSROOT.
 
-2004-02-04  J\e,bi\e(Br\e,bt\e(Bme Marant <jmarant@nerim.net> (tiny)
+2004-02-04  J\e,bi\e(Br\e,bt\e(Bme Marant  <jmarant@nerim.net>  (tiny change)
 
        * emacsclient.c (decode_options): Fix handling of alternate editor.
 
        Now used as element of a linked list.
        (patterns, num_patterns): Global variables deleted.
        (p_head): New global variable.
-       (forced_lang):  New global variable (replaces lang_func).
+       (forced_lang): New global variable (replaces lang_func).
        (get_language_from_name, get_language_from_interpreter)
        (get_language_from_suffix): Semantics changed.  All callers changed.
        (last_node): New global variable.
@@ -2902,7 +2906,7 @@ Tue Jul  1 01:09:07 1997  Geoff Voelker  <voelker@cs.washington.edu>
 
        * etags.c (lowcase): Use the standard tolower function.
        (substitute): Remove some wrong and some useless code related with
-       escape `\` character in regexp replacement string.
+       escape '\' character in regexp replacement string.
        (TEX_defenv): Added part, appendix, entry, index.  Removed typeout.
        (lang_suffixes): New suffixes: .hpp for C++; .f90 for Fortran;
        .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>
 
 1994-02-17  Francesco Potorti`  (pot@cnuce.cnr.it)
 
-       * etags.c (--absolute-pathnames):  option removed.
+       * etags.c (--absolute-pathnames): Option removed.
 
 1994-02-16  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
@@ -4384,8 +4388,8 @@ Tue Jul  1 01:09:07 1997  Geoff Voelker  <voelker@cs.washington.edu>
 
 1993-05-30  Jim Blandy  (jimb@wookumz.gnu.ai.mit.edu)
 
-       * Makefile.in: (${archlibdir}): Use `(cd foo && pwd)` instead of
-       `(cd foo ; pwd)` to get the canonical name of a directory; cd
+       * Makefile.in: (${archlibdir}): Use `(cd foo && pwd)' instead of
+       `(cd foo ; pwd)' to get the canonical name of a directory; cd
        might fail, and have pwd print out the current directory.
 
        * 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>
        * etags.c (C_entries): Process token before handling end of line.
        When inner loops reach end of line, just back up.
        Let the real end of line processing happen in just one place.
-       (consider_token):  Likewise.
+       (consider_token): Likewise.
 
 1991-04-11  Jim Blandy  (jimb@geech.gnu.ai.mit.edu)
 
@@ -5183,7 +5187,7 @@ Tue Jul  1 01:09:07 1997  Geoff Voelker  <voelker@cs.washington.edu>
 
 1990-03-14  Joseph Arceneaux  (jla@churchy.ai.mit.edu)
 
-       * etags.c (getit):  Recognize '$' as beginning identifiers.
+       * etags.c (getit): Recognize '$' as beginning identifiers.
 
 1990-02-22  David Lawrence  (tale@pogo.ai.mit.edu)
 
index 6f92bd7..20cf472 100644 (file)
@@ -126,7 +126,7 @@ $(BLD)/ctags.$(O): ctags.c
 #
 # From ..\src\makefile.nt.
 #
-obj = 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
+obj = 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
 #
 # These are the lisp files that are loaded up in loadup.el
 #
index b945703..63081ea 100644 (file)
+2004-03-05  Nick Roberts  <nick@nick.uklinux.net>
+
+       * gdb-ui.el (gdb-assembler-mode): Create a second overlay arrow
+       for the assembler buffer.
+       (gdb-assembler-custom): Position the overlay arrow.
+       (gdb-put-arrow, gdb-remove-arrow): Delete functions.
+
+2004-03-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * mail/sendmail.el (mail-mode): Set comment-start-skip.
+
+       * newcomment.el (uncomment-region): Allow non-terminated comment.
+       (comment-normalize-vars): Check the user-specified comstart marker.
+
+2004-03-04  Jesper Harder  <harder@ifa.au.dk>
+
+       * sort.el (sort-columns): Don't use external 'sort' on ms-windows.
+       Otherwise, do use it if the region only contains font-lock text
+       properties.
+
+2004-03-04  Masatake YAMATO  <jet@gyve.org>
+
+       * hexl.el (hexl-mode): Set `hexl-print-current-point-info'
+       as the callback function for eldoc.
+       (hexl-print-current-point-info): New function.
+       (hexl-current-address): Print the address in both decimal
+       and hexadecimal format.
+
+2004-03-04  Richard M. Stallman  <rms@gnu.org>
+
+       * mail/rmail.el (rmail-convert-to-babyl-format):
+       Specify t for UNIBYTE when calling mail-unquote-printable-region.
+
+       * mail/mail-utils.el (mail-unquote-printable-region):
+       New arg UNIBYTE.
+
+       * startup.el (command-switch-alist): Doc fix.
+
+       * simple.el (undo): Temporarily set this-command to `undo-start',
+       then set it to `undo' once undo-start returns without error.
+
+       * simple.el (minibuffer-history-sexp-flag): Doc fix.
+
+       * simple.el (kill-line): Don't disregard trailing whitespace
+       in eol condition, if show-trailing-whitespace is set.
+
+       * mouse-sel.el (mouse-sel-has-been-enabled): New var.
+       (mouse-sel-mode): When enabling, set mouse-sel-has-been-enabled.
+       When disabling, restore old values only if mouse-sel-has-been-enabled.
+
+       * isearch.el (isearch-*-char): New arg WANT-BACKSLASH.
+       (isearch-{-char): New function.
+       (isearch-mode-map): Bind { to isearch-{-char.
+
+       * font-lock.el (lisp-font-lock-keywords-2):
+       Turn off the CL with-... and do-... general patterns.
+       Instead, recognize several specific with... and do... constructs.
+
+       * files.el (switch-to-buffer-other-window):
+       Bind same-window-buffer-names and same-window-regexps to nil.
+       (switch-to-buffer-other-frame): Likewise.
+
+2004-03-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/fill.el (fill-comment-paragraph): Be more careful when
+       recognizing leading comment on code line.
+
+2004-03-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * textmodes/fill.el (fill-paragraph): Don't check comment-start-skip,
+       only comment-start (in case the mode hasn't set it).
+
+       * Makefile.in (AUTOGENEL): New var.
+       (bootstrap-prepare): Rename from bootstrap-clean.
+       Don't remove elc files.
+       (maintainer-clean): New target.
+
+       * xml.el (xml-get-attribute-or-nil): Simplify.
+
+2004-03-02  Juri Linkov  <juri@jurta.org>
+
+       * net/browse-url.el (browse-url-netscape, browse-url-mozilla)
+       (browse-url-galeon, browse-url-epiphany): Encode dollar signs in
+       URL to prevent their substitution with the environment variable
+       values by browsers.
+
+2004-03-03  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * ps-print.el: Doc fix.
+       (ps-print-version): New version number (6.6.3).
+       (ps-right-header, ps-right-footer, ps-left-header, ps-left-footer):
+       Docstring fix.
+       (ps-kill-emacs-check): Check if ps-print temporary buffer is killed
+       before printing.
+       (ps-time-stamp-yyyy-mm-dd): New fun.
+       (ps-time-stamp-iso8601): Alias for ps-time-stamp-yyyy-mm-dd.
+
+2004-03-02  Kim F. Storm  <storm@cua.dk>
+
+       * gdb-ui.el (gdb-mouse-toggle-breakpoint): Remove debug message.
+
+2004-03-01  Juanma Barranquero  <lektu@terra.es>
+
+       * allout.el (allout-rebullet-heading): Fix typo in docstring.
+
+       * desktop.el (desktop-file-version)
+       (desktop-after-read-hook): Fix typos.
+       (desktop-clear-preserve-buffers): Remove redundant info in
+       docstring already shown by the obsolescence message.
+       (desktop-truncate, desktop-internal-v2s)
+       (desktop-value-to-string): Change argument name to match docstring.
+
+       * emulation/tpu-edt.el (tpu-set-mark): Fix typo in docstring.
+
+       * eshell/em-smart.el (eshell-smart-maybe-jump-to-end): Fix typo in
+       docstring.
+
+2004-02-29  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+       * printing.el: Replace "As Is..." in PostScript file print/preview by
+       "No Preprocessing...".  Suggested by Colin Marquardt
+       <marquardt@zmd.de>.
+       (pr-insert-section-4): Adjust buffer interface.
+
 2004-02-29  Kai Grossjohann  <kai.grossjohann@gmx.net>
 
        Version 2.0.39 of Tramp released.
 
        * net/tramp.el (tramp-handle-file-local-copy)
-       (tramp-handle-write-region, tramp-open-connection-rsh): Variable
-       name typo.  Small change.  From Patrick Tullmann
+       (tramp-handle-write-region, tramp-open-connection-rsh):
+       Variable name typo.  Small change.  From Patrick Tullmann
        <tullmann@flux.utah.edu>.
        (tramp-process-connection-type): New variable.
        (tramp-maybe-open-connection): Use it.
-       (tramp-do-copy-or-rename-via-buffer): Handle KEEP-DATE arg, if
-       possible.
+       (tramp-do-copy-or-rename-via-buffer): Handle KEEP-DATE arg if possible.
        (tramp-touch): Set last-modified time of a remote file.
-       (tramp-handle-write-region): Say which function is used when
-       encoding.
+       (tramp-handle-write-region): Say which function is used when encoding.
 
 2004-02-29  Michael Albinus  <Michael.Albinus@alcatel.de>
 
        output.  If it was received chunkwise, there have been problems.
        Remove the "prompt not found" error message; it is obvious.
        Simplify algorithm.
-       (tramp-smb-process-running): Removed.  Since we acknowledge the
+       (tramp-smb-process-running): Remove.  Since we acknowledge the
        virtual prompt for shares, there's no need for distinction of
        reading shares (process ends afterwards) and interactive mode of
        smblient.
        (tramp-smb-maybe-open-connection): Set `process-connection-type'
        to 'pty.  Suggested by Piet van Oostrum <piet@cs.uu.nl>.
        (top-level): Setting default value in `tramp-default-method-alist'
-       corrected.  Order of USER and HOST have been wrong.  Nobody
-       claimed for months ...
-       (tramp-smb-maybe-open-connection): Use
-       `tramp-process-connection-type'.
-       (tramp-smb-open-connection): Clear password cache if login has
-       failed.
-
-       * net/tramp.el (tramp-completion-mode) Don't check for 'xemacs but
+       corrected.  Order of USER and HOST have been wrong.
+       Nobody complaimed for months ...
+       (tramp-smb-maybe-open-connection): Use `tramp-process-connection-type'.
+       (tramp-smb-open-connection): Clear password cache if login has failed.
+
+       * net/tramp.el (tramp-completion-mode) Don't check for 'xemacs' but
        `tramp-unified-filenames'.
        (tramp-completion-mode): Make test for XEmacs explicitely.
-       `event-to-character' can exists in Emacs packages too.  Reported
-       by Matt Swift <swift@alum.mit.edu>.
+       `event-to-character' can exists in Emacs packages too.
+       Reported by Matt Swift <swift@alum.mit.edu>.
        (tramp-buffer-name): Buffer name must contain the user if exists.
        Reported by Adrian Phillips <a.phillips@met.no>.
-       (tramp-do-copy-or-rename-file): Handle out-of-band methods.  Call
-       `tramp-do-copy-or-rename-file-out-of-band' this case.
-       (tramp-do-copy-or-rename-file-out-of-band): Renamed from
+       (tramp-do-copy-or-rename-file): Handle out-of-band methods.
+       Call `tramp-do-copy-or-rename-file-out-of-band' this case.
+       (tramp-do-copy-or-rename-file-out-of-band): Rename from
        `tramp-do-copy-or-rename-file-one-local', because it handles also
        the case both files use the same out-of-band method.
        Implementation added.
        (tramp-completion-function-alist): It's a defvar now, because we
        want to apply the optimized `tramp-set-completion-function'
        instead of a static list.
-       (tramp-set-completion-function): Implementation tuned.  Avoid
-       double entries, and entries where the function or the
+       (tramp-set-completion-function): Implementation tuned.
+       Avoid double entries, and entries where the function or the
        file/directory doesn't exist.
        (tramp-parse-shostkeys, tramp-parse-sknownhosts): New functions
        for SSH2.
        (tramp-file-name-handler-alist): Add `dired-compress-file' entry.
        (tramp-handle-dired-compress-file): New function.
        (tramp-async-proc): New variable.
-       (tramp-handle-shell-command): Adding asynchronous processes.  They
-       are far from being perfect, but it works at least for
+       (tramp-handle-shell-command): Adding asynchronous processes.
+       They are far from being perfect, but it works at least for
        `find-grep-dired' and `find-name-dired' in Emacs 21.4.
        (top-level): Require password.el if visible.  Should be mandatory
        once No Gnus has found its way into (X)Emacs.
        `read-passwd' otherwise. `ange-ftp-read-passwd' isn't used as
        fallback any longer.
        (tramp-clear-passwd): New function.
-       (tramp-process-actions, tramp-process-multi-actions): Clear
-       password cache if login has failed.
+       (tramp-process-actions, tramp-process-multi-actions):
+       Clear password cache if login has failed.
 
        * net/tramp-ftp.el (Commentary): Remove pointer to EFS.  It has
        its own module.
        relative directory names.
        (dired-at-point-prompter): Treat directories as a directory, get
        the directory component from files.
-       (ffap-string-at-point): Return string from region if region is
-       active.
+       (ffap-string-at-point): Return string from region if region is active.
        (ffap-file-at-point): Remove redundant code.
 
 2004-02-28  Kim F. Storm  <storm@cua.dk>
        (gdb-put-breakpoint-icon): New defun which displays a breakpoint
        icon in fringe (if available), or else as icon or text in display
        margin.  Creates necessary icons in breakpoint-bitmap,
-       breakpoint-enabled-icon, and/or breakpoint-disabled-icon.  Also
-       make left window margin if required.
+       breakpoint-enabled-icon, and/or breakpoint-disabled-icon.
+       Also make left window margin if required.
        (gdb-remove-breakpoint-icons): New defun to remove breakpoint
        icons inserted by gdb-put-breakpoint-icon.  Remove left margin if
        no longer needed.
 2004-02-27  Kevin Ryde  <user42@zip.com.au>
 
        * info-look.el: In scheme-mode symbol regexp, disallow backquote and
-        comma, so that it DTRT in macros.
+       comma, so that it DTRT in macros.
 
 2004-02-27  Markus Rost  <rost@mathematik.uni-bielefeld.de>
 
 
        * font-lock.el (font-lock-comment-face, font-lock-string-face)
        (font-lock-keyword-face, font-lock-function-name-face)
-       (font-lock-variable-name-face, font-lock-constant-face): Use
-       `min-colors'.
+       (font-lock-variable-name-face, font-lock-constant-face):
+       Use `min-colors'.
 
-       * isearch.el (isearch, isearch-lazy-highlight-face): Use
-       `min-colors'.
+       * isearch.el (isearch, isearch-lazy-highlight-face): Use `min-colors'.
 
 2004-02-25  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
        * ebnf-abn.el: New file, implements an ABNF parser.
 
        * ebnf2ps.el: Doc fix.  Accept ABNF (Augmented BNF).  New arrow shapes:
-       semi-up-hollow, semi-up-full, semi-down-hollow and semi-down-full.  Fix
-       a bug on productions like test = {"test"}* | ( "tt" ["test"] ).
+       semi-up-hollow, semi-up-full, semi-down-hollow and semi-down-full.
+       Fix a bug on productions like test = {"test"}* | ( "tt" ["test"] ).
        Reported by Markus Dreyer <mdreyer@ix.urz.uni-heidelberg.de>.
        (ebnf-version): New version number (4.0).
        (ebnf-print-directory, ebnf-print-file, ebnf-spool-directory)
        (gdb-var-delete): Make interactive (really).
        (gdb-edit-value): Make non-interactive.
 
-       * progmodes/gud.el (gud-install-speedbar-variables): Bind
-       gdb-var-delete to "D".
-       (gud-speedbar-menu-items): Add gdb-var-delete and, indirectly,
-       gdb-edit-value.
+       * progmodes/gud.el (gud-speedbar-menu-items):
+       Add gdb-var-delete and, indirectly, gdb-edit-value.
+       (gud-install-speedbar-variables): Bind gdb-var-delete to "D".
        (gud-speedbar-buttons): Remove gdb-var-delete from tag-line.
        (gud-gdb-marker-filter): Add comment for annotations.
 
 2004-02-21  Stephen Compall  <s11@member.fsf.org>
 
        * saveplace.el (save-place-forget-unreadable-files)
-       (save-place-save-skipped, save-place-skip-check-regexp): New
-       defcustoms.
+       (save-place-save-skipped, save-place-skip-check-regexp): New vars.
        (save-place-forget-unreadable-files): New function.
        (save-place-alist-to-file): Use it to filter out files that are
        no longer readable.
 
 2004-02-20  John Wiegley  <johnw@newartisans.com>
 
-       * eshell/em-pred.el (eshell-modifier-alist): Changed the "eval
+       * eshell/em-pred.el (eshell-modifier-alist): Change the "eval
        again" modifier from 'e' to 'E', since 'e' is also used by the
        "file extension" modifier.
 
 
        * gdb-ui.el (gdb-use-colon-colon-notation): Set default to nil for
        case of variables defined in compound statements.
-       (gdb-setup-windows, gdb-source-info, gdb-source-info): Simplify
-       constructions using switch-to-buffer.
+       (gdb-setup-windows, gdb-source-info, gdb-source-info):
+       Simplify constructions using switch-to-buffer.
 
 2004-02-19  Simon Josefsson  <jas@extundo.com>
 
        * rmail-spam-filter.el: (vm-use-spam-filter)
        (rsf-min-region-length-added-to-spam-list): New variables.
        (rsf-bbdb-auto-delete-spam-bbdb-entries): Rename from
-       rmail-bbdb-auto-delete-spam-entries.  Added cc: to recipients for
+       rmail-bbdb-auto-delete-spam-entries.  Add cc: to recipients for
        spam testing.  Don't delete spam message if automatic deletion
        after output via variable rmail-delete-after-output is turned on.
        (rsf-bbdb-dont-create-entries-for-deleted-messages): Rename from
        (diff, diff-backup): Use it.
        (diff): Clean up the args construction.  Use backquote.
        Use listp instead of consp to avoid putting a nil arg.
+       (diff): Add a revert-buffer function.
 
 2004-02-10  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
 
 2003-08-26  Glenn Morris  <gmorris@ast.cam.ac.uk>
 
-       * mail/smtpmail.el Fix previous change:
+       * mail/smtpmail.el: Fix previous change.
        (smtpmail-send-queued-mail): Set smtpmail-mail-address before
        calling smtpmail-via-smtp.
        (smtpmail-via-smtp): Add fall-back values for envelope-from.
index fad1370..e1c6b77 100644 (file)
@@ -1,5 +1,5 @@
 # Maintenance productions for the Lisp directory
-# Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+# Copyright (C) 2000, 01, 03, 2004  Free Software Foundation, Inc.
 
 # This file is part of GNU Emacs.
 
@@ -110,6 +110,13 @@ DONTCOMPILE = \
        $(lisp)/term/wyse50.el \
        $(lisp)/version.el
 
+# Elisp files auto-generated.
+AUTOGENEL = loaddefs.el \
+       cus-load.el \
+       finder-inf.el \
+       subdirs.el \
+       eshell/esh-groups.el
+
 # Files to compile before others during a bootstrap.  This is done to
 # speed up the bootstrap process.  The CC files are compiled first
 # because CC mode tweaks the compilation process, and requiring
@@ -131,14 +138,14 @@ emacs = EMACSLOADPATH=$(lisp) $(EMACS) $(EMACSOPT)
 
 setwins=subdirs=`find $$wd -type d -print`; \
        for file in $$subdirs; do \
-          case $$file in */Old | */RCS | */CVS | */CVS/* | */.arch-ids | */.arch-ids/* | */=* ) ;; \
+          case $$file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* ) ;; \
                *) wins="$$wins $$file" ;; \
           esac; \
         done
 
 setwins_almost=subdirs=`find $$wd -type d -print`; \
        for file in $$subdirs; do \
-          case $$file in */Old | */RCS | */CVS | */CVS/* | */=* | */obsolete | */term ) ;; \
+          case $$file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* | */obsolete | */term ) ;; \
                *) wins="$$wins $$file" ;; \
           esac; \
         done
@@ -294,11 +301,8 @@ $(lisp)/progmodes/cc-mode.elc: \
 # it's necessary for generating the binary (because loaddefs.el is an
 # automatically generated file, we don't want to store it in the source
 # repository).
-#
-# Remove compiled Lisp files so that bootstrap-emacs will be built from
-# sources only.
 
-bootstrap-clean:
+bootstrap-prepare:
        if test -x $(EMACS); then                               \
          $(MAKE) $(MFLAGS) autoloads;                          \
        else                                                    \
@@ -306,7 +310,9 @@ bootstrap-clean:
            cp $(lisp)/ldefs-boot.el $(lisp)/loaddefs.el;       \
          fi                                                    \
        fi
-       cd $(lisp); rm -f *.elc */*.elc
+
+maintainer-clean:
+       cd $(lisp); rm -f *.elc */*.elc $(AUTOGENEL)
 
 # Generate/update files for the bootstrap process.
 
index 32ecb35..bd5cd6c 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Ken Manheimer <klm@zope.com>
 ;; Maintainer: Ken Manheimer <klm@zope.com>
 ;; Created: Dec 1991 - first release to usenet
-;; Version: $Id: allout.el,v 1.45 2003/10/16 16:28:30 eliz Exp $||
+;; Version: $Id: allout.el,v 1.46 2004/03/01 22:44:04 lektu Exp $||
 ;; Keywords: outlines mode wp languages
 
 ;; This file is part of GNU Emacs.
@@ -508,7 +508,7 @@ behavior."
 ;;;_  : Version
 ;;;_   = allout-version
 (defvar allout-version
-  (let ((rcs-rev "$Revision: 1.45 $"))
+  (let ((rcs-rev "$Revision: 1.46 $"))
     (condition-case err
        (save-match-data
          (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
 numbered form.  It has effect only if `allout-numbered-bullet' is
 non-nil and soliciting was not explicitly invoked (via first arg).
 Its effect, numbering or denumbering, then depends on the setting
-of the forth arg, INDEX.
+of the fourth arg, INDEX.
 
-If NUMBER-CONTROL is non-nil and forth arg INDEX is nil, then the
+If NUMBER-CONTROL is non-nil and fourth arg INDEX is nil, then the
 prefix of the topic is forced to be non-numbered.  Null index and
 non-nil NUMBER-CONTROL forces denumbering.  Non-nil INDEX (and
 non-nil NUMBER-CONTROL) forces a numbered-prefix form.  If non-nil
index 0cff5e5..beac1f3 100644 (file)
@@ -90,7 +90,7 @@
   (mapcar 'require '(info dired reporter)))
 
 (defvar desktop-file-version "206"
-  "Verion number of desktop file format.
+  "Version number of desktop file format.
 Written into the desktop file and used at desktop read to provide
 backward compatibility.")
 
@@ -163,7 +163,7 @@ May e.g. be used to show a dired buffer."
   :group 'desktop)
 
 (defcustom desktop-after-read-hook nil
-  "Normal hook run after a sucessful `desktop-read'.
+  "Normal hook run after a successful `desktop-read'.
 May e.g. be used to show a buffer list."
   :type 'hook
   :group 'desktop)
@@ -212,8 +212,7 @@ to the value obtained by evaluateing FORM."
 ;; Maintained for backward compatibility
 (defcustom desktop-clear-preserve-buffers nil
   "*List of buffer names that `desktop-clear' should not delete.
-This variable is maintained for backward compatibility only.  Use
-`desktop-clear-preserve-buffers-regexp' instead."
+This variable is maintained for backward compatibility only."
   :type '(repeat string)
   :group 'desktop)
 (make-obsolete-variable 'desktop-clear-preserve-buffers
@@ -349,9 +348,9 @@ this table."
   "Hooks run after all buffers are loaded; intended for internal use.")
 
 ;; ----------------------------------------------------------------------------
-(defun desktop-truncate (l n)
+(defun desktop-truncate (list n)
   "Truncate LIST to at most N elements destructively."
-  (let ((here (nthcdr (1- n) l)))
+  (let ((here (nthcdr (1- n) list)))
     (if (consp here)
        (setcdr here nil))))
 
@@ -424,22 +423,22 @@ is nil, ask the user where to save the desktop."
       value)))
 
 ;; ----------------------------------------------------------------------------
-(defun desktop-internal-v2s (val)
+(defun desktop-internal-v2s (value)
   "Convert VALUE to a pair (QUOTE . TXT); (eval (read TXT)) gives VALUE.
 TXT is a string that when read and evaluated yields value.
 QUOTE may be `may' (value may be quoted),
 `must' (values must be quoted), or nil (value may not be quoted)."
   (cond
-   ((or (numberp val) (null val) (eq t val))
-    (cons 'may (prin1-to-string val)))
-   ((stringp val)
-    (let ((copy (copy-sequence val)))
+   ((or (numberp value) (null value) (eq t value))
+    (cons 'may (prin1-to-string value)))
+   ((stringp value)
+    (let ((copy (copy-sequence value)))
       (set-text-properties 0 (length copy) nil copy)
       ;; Get rid of text properties because we cannot read them
       (cons 'may (prin1-to-string copy))))
-   ((symbolp val)
-    (cons 'must (prin1-to-string val)))
-   ((vectorp val)
+   ((symbolp value)
+    (cons 'must (prin1-to-string value)))
+   ((vectorp value)
     (let* ((special nil)
           (pass1 (mapcar
                   (lambda (el)
@@ -447,7 +446,7 @@ QUOTE may be `may' (value may be quoted),
                       (if (null (car res))
                           (setq special t))
                       res))
-                  val)))
+                  value)))
       (if special
          (cons nil (concat "(vector "
                            (mapconcat (lambda (el)
@@ -458,8 +457,8 @@ QUOTE may be `may' (value may be quoted),
                                       " ")
                            ")"))
        (cons 'may (concat "[" (mapconcat 'cdr pass1 " ") "]")))))
-   ((consp val)
-    (let ((p val)
+   ((consp value)
+    (let ((p value)
          newlist
          use-list*
          anynil)
@@ -489,13 +488,13 @@ QUOTE may be `may' (value may be quoted),
                        ")"))
        (cons 'must
              (concat "(" (mapconcat 'cdr newlist " ") ")")))))
-   ((subrp val)
+   ((subrp value)
     (cons nil (concat "(symbol-function '"
-                     (substring (prin1-to-string val) 7 -1)
+                     (substring (prin1-to-string value) 7 -1)
                      ")")))
-   ((markerp val)
-    (let ((pos (prin1-to-string (marker-position val)))
-         (buf (prin1-to-string (buffer-name (marker-buffer val)))))
+   ((markerp value)
+    (let ((pos (prin1-to-string (marker-position value)))
+         (buf (prin1-to-string (buffer-name (marker-buffer value)))))
       (cons nil (concat "(let ((mk (make-marker)))"
                        " (add-hook 'desktop-delay-hook"
                        " (list 'lambda '() (list 'set-marker mk "
@@ -504,12 +503,12 @@ QUOTE may be `may' (value may be quoted),
     (cons 'may "\"Unprintable entity\""))))
 
 ;; ----------------------------------------------------------------------------
-(defun desktop-value-to-string (val)
+(defun desktop-value-to-string (value)
   "Convert VALUE to a string that when read evaluates to the same value.
 Not all types of values are supported."
   (let* ((print-escape-newlines t)
         (float-output-format nil)
-        (quote.txt (desktop-internal-v2s val))
+        (quote.txt (desktop-internal-v2s value))
         (quote (car quote.txt))
         (txt (cdr quote.txt)))
     (if (eq quote 'must)
index 8e29055..b164588 100644 (file)
@@ -551,7 +551,7 @@ version of Emacs."
        (t (mark))))
 
 (defun tpu-set-mark (pos)
-  "TPU-edt verion of the `set-mark' function.
+  "TPU-edt version of the `set-mark' function.
 Sets the mark at POS and activates the region according to the
 current version of Emacs."
   (set-mark pos)
index 6725f96..fb53948 100644 (file)
@@ -242,7 +242,7 @@ The options are `begin', `after' or `end'."
 
 (defun eshell-smart-maybe-jump-to-end ()
   "Jump to the end of the input buffer.
-This is done whenever a command exits sucessfully and both the command
+This is done whenever a command exits successfully and both the command
 and the end of the buffer are still visible."
   (when (and (= eshell-last-command-status 0)
             (if (eq eshell-review-quick-commands 'not-even-short-output)
index 3b178af..a63aea9 100644 (file)
@@ -855,7 +855,9 @@ do not put this buffer at the front of the list of recently selected ones.
 This uses the function `display-buffer' as a subroutine; see its
 documentation for additional customization information."
   (interactive "BSwitch to buffer in other window: ")
-  (let ((pop-up-windows t))
+  (let ((pop-up-windows t)
+       ;; Don't let these interfere.
+       same-window-buffer-names same-window-regexps)
     (pop-to-buffer buffer t norecord)))
 
 (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.
 This uses the function `display-buffer' as a subroutine; see its
 documentation for additional customization information."
   (interactive "BSwitch to buffer in other frame: ")
-  (let ((pop-up-frames t))
+  (let ((pop-up-frames t)
+       same-window-buffer-names same-window-regexps)
     (pop-to-buffer buffer t norecord)
     (raise-frame (window-frame (selected-window)))))
 
index 4deacb9..ad69cdd 100644 (file)
@@ -1890,10 +1890,13 @@ This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item."
                    "condition-case" "track-mouse"
                    "eval-after-load" "eval-and-compile" "eval-when-compile"
                    "eval-when"
+                   "with-category-table"
                    "with-current-buffer" "with-electric-help"
+                   "with-local-quit" "with-no-warnings"
                    "with-output-to-string" "with-output-to-temp-buffer"
+                   "with-selected-window" "with-syntax-table"
                    "with-temp-buffer" "with-temp-file" "with-temp-message"
-                   "with-timeout") t)
+                   "with-timeout" "with-timeout-handler") t)
             "\\>")
            1)
       ;;
@@ -1908,7 +1911,13 @@ This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item."
                    "proclaim" "declaim" "declare" "symbol-macrolet"
                    "lexical-let" "lexical-let*" "flet" "labels" "compiler-let"
                    "destructuring-bind" "macrolet" "tagbody" "block"
-                   "return" "return-from") t)
+                   "return" "return-from"
+                   "with-accessors" "with-compilation-unit"
+                   "with-condition-restarts" "with-hash-table-iterator"
+                   "with-input-from-string" "with-open-file"
+                   "with-open-stream" "with-output-to-string"
+                   "with-package-iterator" "with-simple-restart"
+                   "with-slots" "with-standard-io-syntax") t)
             "\\>")
            1)
       ;;
@@ -1933,8 +1942,11 @@ This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item."
       ;; ELisp and CLisp `&' keywords as types.
       '("\\&\\sw+\\>" . font-lock-type-face)
       ;;
-      ;; CL `with-' and `do-' constructs
-      '("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face)
+;;; This is too general -- rms.
+;;; A user complained that he has functions whose names start with `do'
+;;; and that they get the wrong color.
+;;;      ;; CL `with-' and `do-' constructs
+;;;      '("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face)
       )))
   "Gaudy level highlighting for Lisp modes.")
 
index 0040fb4..85b03fb 100644 (file)
@@ -1087,7 +1087,6 @@ static char *magick[] = {
   (interactive "e")
   (mouse-minibuffer-check event)
   (let ((posn (event-end event)))
-    (message "pt=%S posn=%S" (posn-point posn) posn)
     (if (numberp (posn-point posn))
        (with-selected-window (posn-window posn)
          (save-excursion
@@ -1808,32 +1807,6 @@ BUFFER nil or omitted means use the current buffer."
                            left-margin-width
                            right-margin-width))))
 
-(defun gdb-put-arrow (putstring pos)
-  "Put arrow string PUTSTRING in the left margin in front of POS
-in the current buffer.  PUTSTRING is displayed by putting an
-overlay into the current buffer with a `before-string'
-\"gdb-arrow\" that has a `display' property whose value is
-PUTSTRING. POS may be an integer or marker."
-  (let ((gdb-string "gdb-arrow")
-       (buffer (current-buffer)))
-    (let ((overlay (make-overlay pos pos buffer))
-         (prop (list (list 'margin 'left-margin) putstring)))
-      (put-text-property 0 (length gdb-string) 'display prop gdb-string)
-      (overlay-put overlay 'put-arrow t)
-      (overlay-put overlay 'before-string gdb-string))))
-
-(defun gdb-remove-arrow (&optional buffer)
-  "Remove arrow in BUFFER.
-Remove only images that were put in BUFFER with calls to `put-arrow'.
-BUFFER nil or omitted means use the current buffer."
-  (unless buffer
-    (setq buffer (current-buffer)))
-  (let ((overlays (overlays-in (point-min) (point-max))))
-    (while overlays
-      (let ((overlay (car overlays)))
-       (when (overlay-get overlay 'put-arrow)
-         (delete-overlay overlay)))
-      (setq overlays (cdr overlays)))))
 \f
 ;;
 ;; Assembler buffer.
@@ -1850,16 +1823,20 @@ BUFFER nil or omitted means use the current buffer."
 
 (defun gdb-assembler-custom ()
   (let ((buffer (gdb-get-buffer 'gdb-assembler-buffer))
-       (gdb-arrow-position 1) (address) (flag))
+       (pos 1) (address) (flag))
     (with-current-buffer buffer
       (if (not (equal gdb-current-address "main"))
          (progn
-           (gdb-remove-arrow)
            (goto-char (point-min))
            (if (re-search-forward gdb-current-address nil t)
                (progn
-                 (setq gdb-arrow-position (point))
-                 (gdb-put-arrow "=>" (point))))))
+                 (setq pos (point))
+                 (setq gdb-overlay-arrow-string "=>")
+                 (beginning-of-line)
+                 (or gdb-overlay-arrow-position
+                     (setq gdb-overlay-arrow-position (make-marker)))
+                 (set-marker gdb-overlay-arrow-position
+                             (point) (current-buffer))))))
       ;; remove all breakpoint-icons in assembler buffer before updating.
       (gdb-remove-breakpoint-icons (point-min) (point-max)))
     (with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer)
@@ -1880,7 +1857,7 @@ BUFFER nil or omitted means use the current buffer."
                  (if (re-search-forward address nil t)
                      (gdb-put-breakpoint-icon (eq flag ?y))))))))
     (if (not (equal gdb-current-address "main"))
-       (set-window-point (get-buffer-window buffer) gdb-arrow-position))))
+       (set-window-point (get-buffer-window buffer) pos))))
 
 (defvar gdb-assembler-mode-map
   (let ((map (make-sparse-keymap)))
@@ -1893,6 +1870,8 @@ BUFFER nil or omitted means use the current buffer."
 \\{gdb-assembler-mode-map}"
   (setq major-mode 'gdb-assembler-mode)
   (setq mode-name "Machine")
+  (push 'gdb-overlay-arrow-position overlay-arrow-variable-list)
+  (setq gdb-overlay-arrow-position nil)
   (setq fringes-outside-margins t)
   (setq buffer-read-only t)
   (use-local-map gdb-assembler-mode-map)
index 60679f8..7fa3fb6 100644 (file)
@@ -1,3 +1,7 @@
+2004-03-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * message.el (message-mode): Set comment-start-skip.
+
 2004-02-08  Andreas Schwab  <schwab@suse.de>
 
        * nnlistserv.el (nnlistserv-kk-wash-article): Fix paren nesting.
@@ -30,8 +34,8 @@
 
 2003-05-06  Jesper Harder  <harder@ifa.au.dk>
 
-       * gnus-cus.el (gnus-group-customize, gnus-score-parameters): Don't
-       quote nil and t in docstrings.
+       * gnus-cus.el (gnus-group-customize, gnus-score-parameters):
+       Don't quote nil and t in docstrings.
 
        * gnus-score.el (gnus-score-lower-thread): Likewise.
 
@@ -47,8 +51,7 @@
 
 2003-02-18  Juanma Barranquero  <lektu@terra.es>
 
-       * ietf-drums.el (ietf-drums-remove-whitespace): Fix character
-       constant.
+       * ietf-drums.el (ietf-drums-remove-whitespace): Fix character constant.
 
 2003-02-14  Juanma Barranquero  <lektu@terra.es>
 
index 8edb514..4c6284b 100644 (file)
@@ -1,5 +1,5 @@
 ;;; message.el --- composing mail and news messages  -*- coding: iso-latin-1 -*-
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -1531,7 +1531,10 @@ M-RET    `message-newline-and-reformat' (break the line and reformat)."
   (set (make-local-variable 'message-mime-part) 0)
   (message-setup-fill-variables)
   ;; Allow using comment commands to add/remove quoting.
-  (set (make-local-variable 'comment-start) message-yank-prefix)
+  (when message-yank-prefix
+    (set (make-local-variable 'comment-start) message-yank-prefix)
+    (set (make-local-variable 'comment-start-skip)
+        (concat "^" (regexp-quote message-yank-prefix) "[ \t]*")))
   ;;(when (fboundp 'mail-hist-define-keys)
   ;;  (mail-hist-define-keys))
   (if (featurep 'xemacs)
index 3d01ed6..67a0af2 100644 (file)
@@ -101,7 +101,7 @@ The value may be an integer or floating point number.
 If a timer is already active, there are two ways to make the new
 value take effect immediately.  After setting the value, you can
 first call `help-at-pt-cancel-timer' and then set a new timer
-with `help-at-pt-set-timer' .  Alternatively, you can set this
+with `help-at-pt-set-timer'.  Alternatively, you can set this
 variable through Custom.  This will not set a timer if none is
 active, but if one is already active, Custom will make it use the
 new value."
index 413344f..40e3c92 100644 (file)
@@ -42,6 +42,8 @@
 
 ;;; Code:
 
+(require 'eldoc)
+
 ;;
 ;; vars here
 ;;
@@ -236,6 +238,13 @@ You can use \\[hexl-find-file] to visit a file in Hexl mode.
 
     (add-hook 'change-major-mode-hook 'hexl-maybe-dehexlify-buffer nil t)
 
+    ;; Set a callback function for eldoc.
+    (set (make-variable-buffer-local 'eldoc-print-current-symbol-info-function)
+        'hexl-print-current-point-info)
+    (eldoc-add-command-completions "hexl-")
+    (eldoc-remove-command "hexl-save-buffer" 
+                         "hexl-current-address")
+
     (if hexl-follow-ascii (hexl-follow-ascii 1)))
   (run-hooks 'hexl-mode-hook))
 
@@ -361,9 +370,15 @@ Ask the user for confirmation."
                 (- current-column 41)
               (/ (- current-column  (/ current-column 5)) 2))))
     (when (interactive-p)
-      (message "Current address is %d" hexl-address))
+      (message "Current address is %d/0x%08x" hexl-address hexl-address))
     hexl-address))
 
+(defun hexl-print-current-point-info ()
+  "Return current hexl-address in string.
+This function is indented to be used as eldoc callback."
+  (let ((addr (hexl-current-address)))
+    (format "Current address is %d/0x%08x" addr addr)))
+
 (defun hexl-address-to-marker (address)
   "Return buffer position for ADDRESS."
   (interactive "nAddress: ")
index 6eecd62..91a2c34 100644 (file)
@@ -301,6 +301,7 @@ Default value, nil, means edit the string instead."
     ;; Nothing special for + because it matches at least once.
     (define-key map "*" 'isearch-*-char)
     (define-key map "?" 'isearch-*-char)
+    (define-key map "{" 'isearch-{-char)
     (define-key map "|" 'isearch-|-char)
 
     ;; 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."
   (isearch-update))
 
 
+(defun isearch-{-char ()
+  "Handle \{ specially in regexps."
+  (interactive)
+  (isearch-*-char t))
+
 ;; *, ?, and | chars can make a regexp more liberal.
 ;; They can make a regexp match sooner or make it succeed instead of failing.
 ;; So go back to place last successful search started
 ;; or to the last ^S/^R (barrier), whichever is nearer.
 ;; + needs no special handling because the string must match at least once.
 
-(defun isearch-*-char ()
-  "Handle * and ? specially in regexps."
+(defun isearch-*-char (&optional want-backslash)
+  "Handle * and ? specially in regexps.
+When WANT-BACKSLASH is non-nil, do special handling for \{."
   (interactive)
   (if isearch-regexp
       (let ((idx (length isearch-string)))
        (while (and (> idx 0)
                    (eq (aref isearch-string (1- idx)) ?\\))
          (setq idx (1- idx)))
-       (when (= (mod (- (length isearch-string) idx) 2) 0)
+       ;; * and ? are special when not preceded by \.
+       ;; { is special when it is preceded by \.
+       (when (= (mod (- (length isearch-string) idx) 2)
+                (if want-backslash 1 0))
          (setq isearch-adjusted t)
          ;; Get the isearch-other-end from before the last search.
          ;; We want to start from there,
index 96a57b3..aecc87c 100644 (file)
@@ -108,11 +108,15 @@ we expect to find and remove the wrapper characters =?ISO-8859-1?Q?....?=."
       (apply 'concat (nreverse (cons (substring string i) strings))))))
 
 ;;;###autoload
-(defun mail-unquote-printable-region (beg end &optional wrapper noerror)
+(defun mail-unquote-printable-region (beg end &optional wrapper noerror
+                                         unibyte)
   "Undo the \"quoted printable\" encoding in buffer from BEG to END.
 If the optional argument WRAPPER is non-nil,
 we expect to find and remove the wrapper characters =?ISO-8859-1?Q?....?=.
-If NOERROR is non-nil, return t if successful."
+If NOERROR is non-nil, return t if successful.
+If UNIBYTE is non-nil, insert converted characters as unibyte.
+That is useful if you are going to character code decoding afterward,
+as Rmail does."
   (interactive "r\nP")
   (let (failed)
     (save-match-data
@@ -131,13 +135,16 @@ If NOERROR is non-nil, return t if successful."
                  ((= (char-after (match-beginning 1)) ?=)
                   (replace-match "="))
                  ((match-beginning 2)
-                  (replace-match
-                   (make-string 1
-                                (+ (* 16 (mail-unquote-printable-hexdigit
-                                          (char-after (match-beginning 2))))
-                                   (mail-unquote-printable-hexdigit
-                                    (char-after (1+ (match-beginning 2))))))
-                   t t))
+                  (let ((char (+ (* 16 (mail-unquote-printable-hexdigit
+                                        (char-after (match-beginning 2))))
+                                 (mail-unquote-printable-hexdigit
+                                  (char-after (1+ (match-beginning 2)))))))
+                    (if unibyte
+                        (progn
+                          (replace-match "")
+                          ;; insert-char will insert this as unibyte,
+                          (insert-char char 1))
+                      (replace-match (make-string 1 char) t t))))
                  (noerror
                   (setq failed t))
                  (t
index 4090749..c890ae6 100644 (file)
@@ -1733,7 +1733,7 @@ It returns t if it got any new messages."
                   (if quoted-printable-header-field-end
                       (save-excursion
                         (unless
-                            (mail-unquote-printable-region header-end (point) nil t)
+                            (mail-unquote-printable-region header-end (point) nil t t)
                           (message "Malformed MIME quoted-printable message"))
                         ;; Change "quoted-printable" to "8bit",
                         ;; to reflect the decoding we just did.
@@ -1880,7 +1880,7 @@ It returns t if it got any new messages."
                 (if quoted-printable-header-field-end
                     (save-excursion
                       (unless
-                          (mail-unquote-printable-region header-end (point) nil t)
+                          (mail-unquote-printable-region header-end (point) nil t t)
                         
                         (message "Malformed MIME quoted-printable message"))
                       ;; Change "quoted-printable" to "8bit",
@@ -1917,7 +1917,10 @@ It returns t if it got any new messages."
                   (goto-char (point-min))
                   (while (search-forward "\n\^_" nil t); single char
                     (replace-match "\n^_")))); 2 chars: "^" and "_"
-              (or (bolp) (newline)) ; in case we lost the final newline.
+              ;; This is for malformed messages that don't end in newline.
+              ;; There shouldn't be any, but some users say occasionally
+              ;; there are some.
+              (or (bolp) (newline))
               (insert ?\^_)
               (setq last-coding-system-used nil)
               (or rmail-enable-mime
index c44ea46..932f522 100644 (file)
@@ -1,6 +1,6 @@
 ;;; sendmail.el --- mail sending commands for Emacs.  -*- byte-compile-dynamic: t -*-
 
-;; Copyright (C) 1985, 86, 92, 93, 94, 95, 96, 98, 2000, 2001, 2002, 2003
+;; Copyright (C) 1985, 86, 92, 93, 94, 95, 96, 98, 2000, 2001, 2002, 03, 2004
 ;;   Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
@@ -512,6 +512,9 @@ Turning on Mail mode runs the normal hooks `text-mode-hook' and
   ;; Allow using comment commands to add/remove quoting (this only does
   ;; anything if mail-yank-prefix is set to a non-nil value).
   (set (make-local-variable 'comment-start) mail-yank-prefix)
+  (if mail-yank-prefix
+      (set (make-local-variable 'comment-start-skip)
+          (concat "^" (regexp-quote mail-yank-prefix) "[ \t]*")))
   (make-local-variable 'adaptive-fill-regexp)
   (setq adaptive-fill-regexp
        (concat "[ \t]*[-[:alnum:]]+>+[ \t]*\\|"
index 92e8376..f9b90fb 100644 (file)
@@ -196,6 +196,9 @@ If nil, point will always be placed at the beginning of the region."
 
 ;;=== User Command ========================================================
 
+(defvar mouse-sel-has-been-enabled nil
+  "Non-nil if Mouse Sel mode has been enabled at least once.")
+
 (defvar mouse-sel-original-bindings nil)
 (defvar mouse-sel-original-interprogram-cut-function nil)
 (defvar mouse-sel-original-interprogram-paste-function nil)
@@ -252,7 +255,8 @@ primary selection and region."
          (setq mouse-sel-original-interprogram-cut-function
                interprogram-cut-function
                mouse-sel-original-interprogram-paste-function
-               interprogram-paste-function)
+               interprogram-paste-function
+               mouse-sel-has-been-enabled t)
          (unless (eq mouse-sel-default-bindings 'interprogram-cut-paste)
            (setq interprogram-cut-function nil
                  interprogram-paste-function nil))))
@@ -261,10 +265,13 @@ primary selection and region."
     (remove-hook 'x-lost-selection-hooks 'mouse-sel-lost-selection-hook)
     (dolist (binding mouse-sel-original-bindings)
       (global-set-key (car binding) (cdr binding)))
-    (setq interprogram-cut-function
-          mouse-sel-original-interprogram-cut-function
-          interprogram-paste-function
-          mouse-sel-original-interprogram-paste-function)))
+    ;; Restore the old values of these variables,
+    ;; only if they were actually saved previously.
+    (if mouse-sel-has-been-enabled
+       (setq interprogram-cut-function
+             mouse-sel-original-interprogram-cut-function
+             interprogram-paste-function
+             mouse-sel-original-interprogram-paste-function))))
 
 ;;=== Internal Variables/Constants ========================================
 
index 5a25801..d590e8b 100644 (file)
@@ -818,8 +818,8 @@ When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'."
   (interactive (browse-url-interactive-arg "URL: "))
   ;; URL encode any `confusing' characters in the URL.  This needs to
-  ;; include at least commas; presumably also close parens.
-  (while (string-match "[,)]" url)
+  ;; include at least commas; presumably also close parens and dollars.
+  (while (string-match "[,)$]" url)
     (setq url (replace-match
               (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
   (let* ((process-environment (browse-url-process-environment))
@@ -889,8 +889,8 @@ When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'."
   (interactive (browse-url-interactive-arg "URL: "))
   ;; URL encode any `confusing' characters in the URL.  This needs to
-  ;; include at least commas; presumably also close parens.
-  (while (string-match "[,)]" url)
+  ;; include at least commas; presumably also close parens and dollars.
+  (while (string-match "[,)$]" url)
     (setq url (replace-match
               (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
   (let* ((process-environment (browse-url-process-environment))
@@ -942,8 +942,8 @@ When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'."
   (interactive (browse-url-interactive-arg "URL: "))
   ;; URL encode any `confusing' characters in the URL.  This needs to
-  ;; include at least commas; presumably also close parens.
-  (while (string-match "[,)]" url)
+  ;; include at least commas; presumably also close parens and dollars.
+  (while (string-match "[,)$]" url)
     (setq url (replace-match
               (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
   (let* ((process-environment (browse-url-process-environment))
@@ -991,8 +991,8 @@ When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'."
   (interactive (browse-url-interactive-arg "URL: "))
   ;; URL encode any `confusing' characters in the URL.  This needs to
-  ;; include at least commas; presumably also close parens.
-  (while (string-match "[,)]" url)
+  ;; include at least commas; presumably also close parens and dollars.
+  (while (string-match "[,)$]" url)
     (setq url (replace-match
               (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
   (let* ((process-environment (browse-url-process-environment))
index 9194350..1c9c0df 100644 (file)
@@ -1,6 +1,6 @@
 ;;; newcomment.el --- (un)comment regions of buffers
 
-;; Copyright (C) 1999,2000,2003  Free Software Foundation Inc.
+;; Copyright (C) 1999,2000,2003,2004  Free Software Foundation Inc.
 
 ;; Author: code extracted from Emacs-20's simple.el
 ;; 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
 the variables are properly set."
   (unless (and (not comment-start) noerror)
     (unless comment-start
-      (set (make-local-variable 'comment-start)
-          (read-string "No comment syntax is defined.  Use: ")))
+      (let ((cs (read-string "No comment syntax is defined.  Use: ")))
+       (if (zerop (length cs))
+           (error "No comment syntax defined")
+         (set (make-local-variable 'comment-start) cs))))
     ;; comment-use-syntax
     (when (eq comment-use-syntax 'undecided)
       (set (make-local-variable 'comment-use-syntax)
@@ -716,35 +718,9 @@ comment markers."
                ;; Find the end of the comment.
                (ept (progn
                       (goto-char spt)
-                      (unless
-                          (or
-                           (comment-forward)
-                           ;; Allow eob as comment-end instead of \n.
-                           (and
-                            (eobp)
-                            (let ((s1 (aref (syntax-table) (char-after spt)))
-                                  (s2 (aref (syntax-table)
-                                            (or (char-after (1+ spt)) 0)))
-                                  (sn (aref (syntax-table) ?\n))
-                                  (flag->b (car (string-to-syntax "> b")))
-                                  (flag-1b (car (string-to-syntax "  1b")))
-                                  (flag-2b (car (string-to-syntax "  2b"))))
-                              (cond
-                               ;; One-character comment-start terminated by
-                               ;; \n.
-                               ((and
-                                 (equal sn (string-to-syntax ">"))
-                                 (equal s1 (string-to-syntax "<")))
-                                (insert-char ?\n 1)
-                                t)
-                               ;; Two-character type b comment-start
-                               ;; terminated by \n.
-                               ((and
-                                 (= (logand (car sn) flag->b) flag->b)
-                                 (= (logand (car s1) flag-1b) flag-1b)
-                                 (= (logand (car s2) flag-2b) flag-2b))
-                                (insert-char ?\n 1)
-                                t)))))
+                      (unless (or (comment-forward)
+                                  ;; Allow non-terminated comments.
+                                  (eobp))
                         (error "Can't find the comment end"))
                       (point)))
                (box nil)
index 6fa47b9..52989e4 100644 (file)
@@ -1,6 +1,7 @@
 ;;; pcvs-info.el --- internal representation of a fileinfo entry
 
-;; Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000  Free Software Foundation, Inc.
+;; Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2004
+;;           Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@cs.yale.edu>
 ;; Keywords: pcl-cvs
@@ -219,8 +220,8 @@ to confuse some users sometimes."
         (file (cvs-fileinfo->file fileinfo))
         (default-directory (file-name-as-directory (expand-file-name dir)))
         (files (directory-files "." nil
-                                (concat "^" (regexp-quote cvs-bakprefix)
-                                        (regexp-quote file) "\\.")))
+                                (concat "\\`" (regexp-quote cvs-bakprefix)
+                                        (regexp-quote file) "\\(\\.[0-9]+\\.[0-9]+\\)+\\'")))
         bf)
     (dolist (f files bf)
       (when (and (file-readable-p f)
index a9c1a92..6694805 100644 (file)
@@ -5,13 +5,13 @@
 
 ;; Author: Vinicius Jose Latorre <vinicius@cpqd.com.br>
 ;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br>
-;; Time-stamp: <2004/02/26 00:43:07 vinicius>
+;; Time-stamp: <2004/02/29 23:18:15 vinicius>
 ;; Keywords: wp, print, PostScript
 ;; Version: 6.7.2
 ;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
 
 (defconst pr-version "6.7.2"
-  "printing.el, v 6.7.2 <2004/02/26 vinicius>
+  "printing.el, v 6.7.2 <2004/02/29 vinicius>
 
 Please send all bug fixes and enhancements to
        Vinicius Jose Latorre <vinicius@cpqd.com.br>
@@ -517,7 +517,7 @@ Please send all bug fixes and enhancements to
 ;;     5  |   Print                    >|---\ | |Despool... |  |
 ;;     6  |   Text Printer: name       >|-\ | | +-----------+  |
 ;;        +-----------------------------+ | | | +---------+   +------------+
-;; III 7  |[ ]Landscape                 | | | \-|Directory|   |   As Is... | Ia
+;; III 7  |[ ]Landscape                 | | | \-|Directory|   | No Prep... | Ia
 ;;     8  |[ ]Print Header              | | |   |Buffer   |   +------------+ Ib
 ;;     9  |[ ]Print Header Frame        | | |   |Region   |   |   name    >|- C
 ;;     10 |[ ]Line Number               | | |   +---------+   +------------+
@@ -581,8 +581,8 @@ Please send all bug fixes and enhancements to
 ;;
 ;;      NOTE 2: There are the following options for PostScript file
 ;;              processing:
-;;              Ia. Print the file *as is*, that is, send it directly to
-;;                  PostScript printer.
+;;              Ia. Print the file *No Preprocessing*, that is, send it
+;;                  directly to PostScript printer.
 ;;              Ib. PostScript utility processing selection.
 ;;                  See `pr-ps-utility-alist' and `pr-setting-database' for
 ;;                  documentation.
@@ -2415,7 +2415,7 @@ See `pr-ps-printer-alist'.")
          ["Other..." (pr-ps-mode-preview nil t)
           :keys "\\[pr-ps-mode-preview]"])
         ("File"
-         ["As Is..."  (call-interactively 'pr-ps-file-preview)
+         ["No Preprocessing..." (call-interactively 'pr-ps-file-preview)
           :keys "\\[pr-ps-file-preview]"
           :help "Preview PostScript file"]
          "--"
@@ -2470,7 +2470,7 @@ See `pr-ps-printer-alist'.")
          ["Other..." (pr-ps-mode-ps-print nil t)
           :keys "\\[pr-ps-mode-ps-print]"])
         ("File"
-         ["As Is..."  (call-interactively 'pr-ps-file-ps-print)
+         ["No Preprocessing..." (call-interactively 'pr-ps-file-ps-print)
           :keys "\\[pr-ps-file-ps-print]"
           :help "Send PostScript file to printer"]
          "--"
@@ -2624,7 +2624,7 @@ See `pr-ps-printer-alist'.")
          ["Other..." (pr-ps-mode-preview nil t)
           :keys "\\[pr-ps-mode-preview]"])
         ("File"
-         ["As Is..."  (call-interactively 'pr-ps-file-preview)
+         ["No Preprocessing..." (call-interactively 'pr-ps-file-preview)
           :keys "\\[pr-ps-file-preview]"]
          "--"
          ["PostScript Utility" pr-update-menus :active pr-ps-utility-alist]
@@ -2672,7 +2672,7 @@ See `pr-ps-printer-alist'.")
          ["Other..." (pr-ps-mode-ps-print nil t)
           :keys "\\[pr-ps-mode-ps-print]"])
         ("File"
-         ["As Is..."  (call-interactively 'pr-ps-file-ps-print)
+         ["No Preprocessing..." (call-interactively 'pr-ps-file-ps-print)
           :keys "\\[pr-ps-file-ps-print]"]
          "--"
          ["PostScript Utility" pr-update-menus :active pr-ps-utility-alist]
@@ -2861,7 +2861,7 @@ II  4  |   Printify                 >|-----\\ |File      >|--\\  +--------+
     5  |   Print                    >|---\\ | |Despool... |  |
     6  |   Text Printer: name       >|-\\ | | +-----------+  |
        +-----------------------------+ | | | +---------+   +------------+
-III 7  |[ ]Landscape                 | | | \\-|Directory|   |   As Is... | Ia
+III 7  |[ ]Landscape                 | | | \\-|Directory|   | No Prep... | Ia
     8  |[ ]Print Header              | | |   |Buffer   |   +------------+ Ib
     9  |[ ]Print Header Frame        | | |   |Region   |   |   name    >|- C
     10 |[ ]Line Number               | | |   +---------+   +------------+
@@ -2923,8 +2923,8 @@ I. PostScript printing:
              switch from gnus *Summary* buffer first.
 
       NOTE 2: There are the following options for PostScript file processing:
-             Ia. Print the file *as is*, that is, send it directly to
-                 PostScript printer.
+             Ia. Print the file *No Preprocessing*, that is, send it
+                 directly to PostScript printer.
              Ib. PostScript utility processing selection.
                  See `pr-ps-utility-alist' and `pr-setting-database' for
                  documentation.
@@ -3130,7 +3130,7 @@ The printing interface buffer has the following sections:
       NOTE 2: Don't forget to download and install the utilities declared on
              `pr-ps-utility-alist'.
 
-      * Use It AS-IS :
+      * No Preprocessing:
         If it's turned on, don't use the PostScript utility to preprocess the
         PostScript file before printing/previewing.
 
@@ -5752,9 +5752,8 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order."
                  (pr-choice-alist pr-ps-utility-alist)
                  "\n      PostScript Utility : "
                  "    ")
-  ;;    1c. PostScript File: Use It AS-IS
-  (pr-insert-toggle 'pr-i-ps-as-is " Use It ")
-  (pr-insert-italic "AS-IS"))
+  ;;    1c. PostScript File: No Preprocessing
+  (pr-insert-toggle 'pr-i-ps-as-is " No Preprocessing"))
 
 
 (defun pr-insert-section-2 ()
@@ -5882,7 +5881,8 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order."
   (pr-insert-toggle 'pr-print-using-ghostscript " Print via Ghostscript\n  ")
 
   ;; 4. Settings: Upside-Down           Page Parity
-  (pr-insert-toggle 'ps-print-upside-down " Upside-Down           ")
+  (pr-insert-toggle 'ps-print-upside-down " Upside-Down")
+  (pr-insert-italic "\n\nSelect Pages  :   " 2 14)
   (pr-insert-menu "Page Parity" 'ps-even-or-odd-pages
                  (mapcar #'(lambda (alist)
                              (list 'quote
index 148f23d..0d9977d 100644 (file)
@@ -5,7 +5,7 @@
 
 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
-;; Time-stamp: <2004/02/22 14:24:55 vinicius>
+;; Time-stamp: <2004/02/29 18:31:33 vinicius>
 ;; Keywords: wp, ebnf, PostScript
 ;; Version: 1.7
 
 ;; ISO EBNF accepts the characters given by <character> production above,
 ;; HORIZONTAL TAB (^I), VERTICAL TAB (^K), NEWLINE (^J or ^M) and FORM FEED
 ;; (^L), any other characters are illegal.  But ebnf2ps accepts also the
-;; european 8-bit accentuated characters (from \240 to \377) and underscore.
+;; european 8-bit accentuated characters (from \240 to \377) and underscore
+;; (_).
 ;;
 ;;
 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
index aae8906..5c98677 100644 (file)
@@ -5,7 +5,7 @@
 
 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
-;; Time-stamp: <2004/02/22 14:24:37 vinicius>
+;; Time-stamp: <2004/02/29 18:40:14 vinicius>
 ;; Keywords: wp, ebnf, PostScript
 ;; Version: 1.0
 
 ;; See ebnf2ps.el for documentation.
 ;;
 ;;
+;; Optimizations
+;; -------------
+;;
+;;
+;; *To be implemented*:
+;;    left recursion:
+;;    A = B | A C B | A C D.   ==>   A = B {C (B | D)}*.
+;;
+;;    right recursion:
+;;    A = B | C A.             ==>   A = {C}* B.
+;;    A = B | D | C A | E A.   ==>   A = { C | E }* ( B | D ).
+;;
+;;    optional:
+;;    A = B | C B.             ==>   A = [C] B.
+;;    A = B | B C.             ==>   A = B [C].
+;;    A = D | B D | B C D.     ==>   A = [B [C]] D.
+;;
+;;
+;; *Already implemented*:
+;;    left recursion:
+;;    A = B | A C.             ==>   A = B {C}*.
+;;    A = B | A B.             ==>   A = {B}+.
+;;    A =   | A B.             ==>   A = {B}*.
+;;    A = B | A C B.           ==>   A = {B || C}+.
+;;    A = B | D | A C | A E.   ==>   A = ( B | D ) { C | E }*.
+;;
+;;    optional:
+;;    A = B | .                ==>   A = [B].
+;;    A =   | B .              ==>   A = [B].
+;;
+;;    factoration:
+;;    A = B C | B D.           ==>   A = B (C | D).
+;;    A = C B | D B.           ==>   A = (C | D) B.
+;;    A = B C E | B D E.       ==>   A = B (C | D) E.
+;;
+;;    none:
+;;    A = B | C | .            ==>   A = B | C | .
+;;    A = B | C A D.           ==>   A = B | C A D.
+;;
+;;
 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;;; Code:
index 199e076..ff097b5 100644 (file)
@@ -5,7 +5,7 @@
 
 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
-;; Time-stamp: <2004/02/22 14:24:17 vinicius>
+;; Time-stamp: <2004/02/29 20:23:29 vinicius>
 ;; Keywords: wp, ebnf, PostScript
 ;; Version: 1.2.1
 
@@ -68,7 +68,7 @@
 ;; Name = "[A-Za-z][A-Za-z0-9_.]*".
 ;;
 ;; Comment = "/*" "any character, but the sequence \"*/\"" "*/"
-;;         | "//" "any character" "\\n".
+;;         | "//" "any character, but the newline \"\\n\"" "\\n".
 ;;
 ;;
 ;; In other words, a valid Name begins with a letter (upper or lower case)
index f765b37..5635a1b 100644 (file)
@@ -1,6 +1,6 @@
 ;;; sh-script.el --- shell-script editing commands for Emacs
 
-;; Copyright (C) 1993, 94, 95, 96, 97, 1999, 2001, 2003
+;; Copyright (C) 1993, 94, 95, 96, 97, 1999, 2001, 03, 2004
 ;;  Free Software Foundation, Inc.
 
 ;; Author: Daniel Pfeiffer <occitan@esperanto.org>
@@ -917,7 +917,7 @@ be indented (i.e. a <<- was used rather than just <<)."
          ;; Skip through one pattern
          (while
              (or (/= 0 (skip-syntax-backward "w_"))
-                 (/= 0 (skip-chars-backward "?[]*/\\"))
+                 (/= 0 (skip-chars-backward "?[]*@/\\"))
                  (and (sh-is-quoted-p (1- (point)))
                       (goto-char (- (point) 2)))
                  (when (memq (char-before) '(?\" ?\'))
index e49d5f5..7cf9ec8 100644 (file)
@@ -1,7 +1,7 @@
 ;;; ps-print.el --- print text from the buffer as PostScript
 
 ;; Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003 Free Software Foundation, Inc.
+;; 2003, 2004 Free Software Foundation, Inc.
 
 ;; Author: Jim Thompson (was <thompson@wg2.waii.com>)
 ;;     Jacques Duthen (was <duthen@cegelec-red.fr>)
 ;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters)
 ;;     Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Keywords: wp, print, PostScript
-;; Time-stamp: <2003/07/10 19:19:12 vinicius>
-;; Version: 6.6.2
+;; Time-stamp: <2004/02/29 00:07:55 vinicius>
+;; Version: 6.6.3
 ;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
 
-(defconst ps-print-version "6.6.2"
-  "ps-print.el, v 6.6.2 <2003/07/10 vinicius>
+(defconst ps-print-version "6.6.3"
+  "ps-print.el, v 6.6.3 <2004/02/29 vinicius>
 
 Vinicius's last change version -- this file may have been edited as part of
 Emacs without changes to the version number.  When reporting bugs, please also
@@ -1213,6 +1213,9 @@ Please send all bug fixes and enhancements to
 ;;
 ;; [vinicius] Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;;
+;;    20040229
+;;      `ps-time-stamp-yyyy-mm-dd', `ps-time-stamp-iso8601'
+;;
 ;;    20010619
 ;;      `ps-time-stamp-locale-default'
 ;;
@@ -1261,7 +1264,7 @@ Please send all bug fixes and enhancements to
 ;;
 ;; [keinichi] 19990509 Kein'ichi Handa <handa@etl.go.jp>
 ;;
-;; `ps-print-region-function'
+;;    `ps-print-region-function'
 ;;
 ;; [vinicius] Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;;
@@ -1274,7 +1277,7 @@ Please send all bug fixes and enhancements to
 ;;
 ;; [keinichi] 19980819 Kein'ichi Handa <handa@etl.go.jp>
 ;;
-;; Multi-byte buffer handling.
+;;    Multi-byte buffer handling.
 ;;
 ;; [vinicius] Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;;
@@ -1370,9 +1373,11 @@ Please send all bug fixes and enhancements to
 ;; Thanks to David X Callaway <dxc@xprt.net> for helping debugging PostScript
 ;; level 1 compatibility.
 ;;
-;; Thanks to Colin Marquardt <colin.marquardt@usa.alcatel.com> for upside-down,
-;; line number step, line number start and zebra stripe follow suggestions, and
-;; for XEmacs beta-tests.
+;; Thanks to Colin Marquardt <colin.marquardt@usa.alcatel.com> for:
+;;    - upside-down, line number step, line number start and zebra stripe
+;;     follow suggestions.
+;;    - `ps-time-stamp-yyyy-mm-dd' and `ps-time-stamp-iso8601' suggestion.
+;;    - and for XEmacs beta-tests.
 ;;
 ;; Thanks to Klaus Berndl <klaus.berndl@sdm.de> for user defined PostScript
 ;; prologue code suggestion, for odd/even printing suggestion and for
@@ -3111,7 +3116,9 @@ delimiters '(' and ')'.
 For symbols with bound functions, the function is called and should return a
 string to be inserted into the array.  For symbols with bound values, the value
 should be a string to be inserted into the array.  In either case, function or
-variable, the string value has PostScript string delimiters added to it."
+variable, the string value has PostScript string delimiters added to it.
+
+If symbols are unbounded, they are silently ignored."
   :type '(repeat (choice :menu-tag "Left Header"
                         :tag "Left Header"
                         string symbol))
@@ -3135,6 +3142,11 @@ There are the following basic functions implemented:
 
    `ps-time-stamp-mon-dd-yyyy'         Return date as \"Jun 18 2001\".
 
+   `ps-time-stamp-yyyy-mm-dd'          Return date as \"2001-06-18\" (ISO
+                                       date).
+
+   `ps-time-stamp-iso8601'             Alias for `ps-time-stamp-yyyy-mm-dd'.
+
 You can also create your own time stamp function by using `format-time-string'
 \(which see)."
   :type '(repeat (choice :menu-tag "Right Header"
@@ -3157,7 +3169,9 @@ string literals should be delimited with PostScript string delimiters '(' and
 For symbols with bound functions, the function is called and should return a
 string to be inserted into the array.  For symbols with bound values, the value
 should be a string to be inserted into the array.  In either case, function or
-variable, the string value has PostScript string delimiters added to it."
+variable, the string value has PostScript string delimiters added to it.
+
+If symbols are unbounded, they are silently ignored."
   :version "21.1"
   :type '(repeat (choice :menu-tag "Left Footer"
                         :tag "Left Footer"
@@ -3182,6 +3196,11 @@ There are the following basic functions implemented:
 
    `ps-time-stamp-mon-dd-yyyy'         Return date as \"Jun 18 2001\".
 
+   `ps-time-stamp-yyyy-mm-dd'          Return date as \"2001-06-18\" (ISO
+                                       date).
+
+   `ps-time-stamp-iso8601'             Alias for `ps-time-stamp-yyyy-mm-dd'.
+
 You can also create your own time stamp function by using `format-time-string'
 \(which see)."
   :version "21.1"
@@ -3694,6 +3713,15 @@ It can be retrieved with `(ps-get ALIST-SYM KEY)'."
   (format-time-string "%b %d %Y"))
 
 
+(defun ps-time-stamp-yyyy-mm-dd ()
+  "Return date as \"2001-06-18\" (ISO date)."
+  (format-time-string "%Y-%m-%d"))
+
+
+(defalias 'ps-time-stamp-iso8601 'ps-time-stamp-yyyy-mm-dd
+  "Alias for `ps-time-stamp-yyyy-mm-dd' (which see).")
+
+
 (defun ps-time-stamp-hh:mm:ss ()
   "Return time as \"17:28:31\"."
   (format-time-string "%T"))
@@ -6608,10 +6636,12 @@ If FACE is not a valid face name, it is used default face."
 (defun ps-kill-emacs-check ()
   (let (ps-buffer)
     (and (setq ps-buffer (get-buffer ps-spool-buffer-name))
+        (buffer-name ps-buffer)        ; check if it's not killed
         (buffer-modified-p ps-buffer)
         (y-or-n-p "Unprinted PostScript waiting; print now? ")
         (ps-despool))
     (and (setq ps-buffer (get-buffer ps-spool-buffer-name))
+        (buffer-name ps-buffer)        ; check if it's not killed
         (buffer-modified-p ps-buffer)
         (not (yes-or-no-p "Unprinted PostScript waiting; exit anyway? "))
         (error "Unprinted PostScript"))))
index d3e189d..1f71057 100644 (file)
@@ -739,11 +739,11 @@ to get different commands to edit and resubmit."
 This is used for all minibuffer input
 except when an alternate history list is specified.")
 (defvar minibuffer-history-sexp-flag nil
-  "Non-nil when doing history operations on the variable `command-history'.
-More generally, indicates that the history list being acted on
-contains expressions rather than strings.
-It is only valid if its value equals the current minibuffer depth,
-to handle recursive uses of the minibuffer.")
+  "Control whether history list elements are expressions or strings.
+If the value of this variable equals current minibuffer depth,
+they are expressions; otherwise they are strings.
+\(That convention is designed to do the right thing fora
+recursive uses of the minibuffer.)")
 (setq minibuffer-history-variable 'minibuffer-history)
 (setq minibuffer-history-position nil)
 (defvar minibuffer-history-search-history nil)
@@ -972,9 +972,13 @@ as an argument limits undo to changes within the current region."
   ;; another undo command will find the undo history empty
   ;; and will get another error.  To begin undoing the undos,
   ;; you must type some other command.
-  (setq this-command 'undo)
   (let ((modified (buffer-modified-p))
        (recent-save (recent-auto-save-p)))
+    ;; If we get an error in undo-start,
+    ;; the next command should not be a "consecutive undo".
+    ;; So set `this-command' to something other than `undo'.
+    (setq this-command 'undo-start)
+
     (unless (eq last-command 'undo)
       (setq undo-in-region
            (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."
        (undo-start))
       ;; get rid of initial undo boundary
       (undo-more 1))
+    ;; If we got this far, the next command should be a consecutive undo. 
+    (setq this-command 'undo)
     ;; Check to see whether we're hitting a redo record, and if
     ;; so, ask the user whether she wants to skip the redo/undo pair.
     (let ((equiv (gethash pending-undo-list undo-equiv-table)))
@@ -2239,7 +2245,10 @@ even beep.)"
                          (save-excursion
                            (end-of-visible-line) (point))))
                     (if (or (save-excursion
-                              (skip-chars-forward " \t" end)
+                              ;; If trailing whitespace is visible,
+                              ;; don't treat it as nothing.
+                              (unless show-trailing-whitespace
+                                (skip-chars-forward " \t" end))
                               (= (point) end))
                             (and kill-whole-line (bolp)))
                         (forward-visible-line 1)
index 541f598..76559f1 100644 (file)
@@ -480,19 +480,30 @@ Use \\[untabify] to convert tabs to spaces before sorting."
       (setq col-end (max col-beg1 col-end1))
       (if (search-backward "\t" beg1 t)
          (error "sort-columns does not work with tabs -- use M-x untabify"))
-      (if (not (or (eq system-type 'vax-vms)
-                  (text-properties-at beg1)
-                  (< (next-property-change beg1 nil end1) end1)))
+      (if (not (or (memq system-type '(vax-vms windows-nt ms-dos))
+                  (let ((pos beg1) plist fontified)
+                    (catch 'found
+                      (while (< pos end1)
+                        (setq plist (text-properties-at pos))
+                        (setq fontified (plist-get plist 'fontified))
+                        (while (consp plist)
+                          (unless (or (eq (car plist) 'fontified)
+                                      (and (eq (car plist) 'face)
+                                           fontified))
+                            (throw 'found t))
+                          (setq plist (cddr plist)))
+                        (setq pos (next-property-change pos nil end1)))))))
          ;; Use the sort utility if we can; it is 4 times as fast.
-         ;; Do not use it if there are any properties in the region,
-         ;; since the sort utility would lose the properties.
+         ;; Do not use it if there are any non-font-lock properties
+         ;; in the region, since the sort utility would lose the
+         ;; properties.
          (let ((sort-args (list (if reverse "-rt\n" "-t\n")
                                 (concat "+0." (int-to-string col-start))
                                 (concat "-0." (int-to-string col-end)))))
            (when sort-fold-case
              (push "-f" sort-args))
            (apply #'call-process-region beg1 end1 "sort" t t nil sort-args))
-       ;; On VMS, use Emacs's own facilities.
+       ;; On VMS and ms-windows, use Emacs's own facilities.
        (save-excursion
          (save-restriction
            (narrow-to-region beg1 end1)
index e79ea44..3186c8a 100644 (file)
@@ -83,8 +83,8 @@ the startup message unless he personally acts to inhibit it."
 (defvar command-switch-alist nil
   "Alist of command-line switches.
 Elements look like (SWITCH-STRING . HANDLER-FUNCTION).
-HANDLER-FUNCTION receives switch name as sole arg;
-remaining command-line args are in the variable `command-line-args-left'.")
+HANDLER-FUNCTION receives the switch string as its sole argument;
+the remaining command-line args are in the variable `command-line-args-left'.")
 
 (defvar command-line-args-left nil
   "List of command-line args not yet processed.")
index 5aded4a..7a794d6 100644 (file)
@@ -1,6 +1,6 @@
 ;;; fill.el --- fill commands for Emacs
 
-;; Copyright (C) 1985,86,92,94,95,96,97,1999,2001,02,2003
+;; Copyright (C) 1985,86,92,94,95,96,97,1999,2001,02,03,2004
 ;;               Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
@@ -732,7 +732,7 @@ If `fill-paragraph-function' is nil, return the `fill-prefix' used for filling."
       ;; Then try our syntax-aware filling code.
       (and fill-paragraph-handle-comment
           ;; Our code only handles \n-terminated comments right now.
-          comment-start comment-start-skip (equal comment-end "")
+          comment-start (equal comment-end "")
           (let ((fill-paragraph-handle-comment nil))
             (fill-comment-paragraph arg)))
       ;; 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'."
                             (looking-at comment-re)))
                 ;; We may have gone too far.  Go forward again.
                 (line-beginning-position
-                 (if (looking-at (concat ".*\\(?:" comment-start-skip "\\)"))
+                 (if (progn
+                       (goto-char
+                        (or (comment-search-forward (line-end-position) t)
+                            (point)))
+                       (looking-at comment-re))
                      1 2))))
           ;; Find the beginning of the first line past the region to fill.
           (save-excursion
index dbd991f..61a79b3 100644 (file)
@@ -1,6 +1,6 @@
 ;;; xml.el --- XML parser
 
-;; Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 01, 03, 2004  Free Software Foundation, Inc.
 
 ;; Author: Emmanuel Briot  <briot@gnat.com>
 ;; Maintainer: Mark A. Hershberger <mah@everybody.org>
@@ -109,10 +109,7 @@ CHILD-NAME should be a lower case symbol."
 Return `nil' if the attribute was not found.
 
 See also `xml-get-attribute'."
-  (when (xml-node-attributes node)
-    (let ((value (assoc attribute (xml-node-attributes node))))
-      (when value
-       (cdr value)))))
+  (cdr (assoc attribute (xml-node-attributes node))))
 
 (defsubst xml-get-attribute (node attribute)
   "Get from NODE the value of ATTRIBUTE.
index c71a5ad..01ab3c1 100644 (file)
@@ -1,3 +1,12 @@
+2004-03-04  Richard M. Stallman  <rms@gnu.org>
+
+       * processes.texi: Fix typos.
+
+       * lists.texi (Building Lists): Minor clarification.
+
+       * hash.texi (Creating Hash): Correct the meaning of t for WEAK
+       in make-hash-table.
+
 2004-02-29  Juanma Barranquero  <lektu@terra.es>
 
        * makefile.w32-in (clean, maintainer-clean): Use $(DEL) instead of
index 33ebecd..ff6cdf7 100644 (file)
@@ -288,12 +288,12 @@ expansion.
 @end defopt
 
 @defvar abbrev-start-location
-This is a marker pointing to the buffer position for
-@code{expand-abbrev} to use as the start of the next abbrev to be
-expanded.  (@code{nil} means use the word before point instead.)
-@code{abbrev-start-location} is set to @code{nil} each time
-@code{expand-abbrev} is called.  This variable is also set by
-@code{abbrev-prefix-mark}.
+The value of this variable is a marker pointing to the buffer position
+for @code{expand-abbrev} to use as the start of the next abbrev to be
+expanded.  The value can also be @code{nil}, which means to use the
+word before point instead.  @code{abbrev-start-location} is set to
+@code{nil} each time @code{expand-abbrev} is called.  This variable is
+also set by @code{abbrev-prefix-mark}.
 @end defvar
 
 @defvar abbrev-start-location-buffer
index 3c4cb4d..bf4555d 100644 (file)
@@ -98,7 +98,7 @@ value in the hash table preserves it from garbage collection.
 
 The value, @var{weak}, must be one of @code{nil}, @code{key},
 @code{value}, @code{key-or-value}, @code{key-and-value}, or @code{t}
-which is an alias for @code{key-or-value}.  If @var{weak} is @code{key}
+which is an alias for @code{key-and-value}.  If @var{weak} is @code{key}
 then the hash table does not prevent its keys from being collected as
 garbage (if they are not referenced anywhere else); if a particular key
 does get collected, the corresponding association is removed from the
index e3891f8..41b3918 100644 (file)
@@ -448,11 +448,11 @@ interesting to note that @code{list} is used more times in the source
 code for Emacs than @code{cons}.
 
 @defun cons object1 object2
-This function is the fundamental function for building new list
+This function is the most basic function for building new list
 structure.  It creates a new cons cell, making @var{object1} the
-@sc{car}, and @var{object2} the @sc{cdr}.  It then returns the new cons
-cell.  The arguments @var{object1} and @var{object2} may be any Lisp
-objects, but most often @var{object2} is a list.
+@sc{car}, and @var{object2} the @sc{cdr}.  It then returns the new
+cons cell.  The arguments @var{object1} and @var{object2} may be any
+Lisp objects, but most often @var{object2} is a list.
 
 @example
 @group
index 7f4ab1d..859edb0 100644 (file)
@@ -337,9 +337,10 @@ text is inserted at its position.  If @var{type} is @code{nil},
 This function reports the current insertion type of @var{marker}.
 @end defun
 
-Most functions that create markers, without explicitly specifying an
-insertion type, create them with insertion type @code{nil}.  Also, the
-mark has, by default, insertion type @code{nil}.
+Most functions that create markers, without an argument allowing to
+specify the insertion type, create them with insertion type
+@code{nil}.  Also, the mark has, by default, insertion type
+@code{nil}.
 
 @node Moving Markers
 @section Moving Marker Positions
index c762619..7a7c19e 100644 (file)
@@ -382,7 +382,7 @@ inputinput@point{}
 
 @defun call-process-shell-command command &optional infile destination display &rest args
 This function executes the shell command @var{command} synchronously
-in separate process.  The final arguments @var{args} are additional
+in separate process.  The final arguments @var{args} are additional
 arguments to add at the end of @var{command}.  The other arguments
 are handled as in @code{call-process}.
 @end defun
@@ -1512,7 +1512,7 @@ and @code{failed}.  For a network server, the status is always
 @code{listen}.  None of those values is possible for a real
 subprocess.  @xref{Process Information}.
 
-  You can stop and resume operation of a network processes by calling
+  You can stop and resume operation of a network process by calling
 @code{stop-process} and @code{continue-process}.  For a server
 process, being stopped means not accepting new connections.  (Up to 5
 connection 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.
 @section Datagrams 
 @cindex datagrams
 
-  A datagram connection communicates with individual packets
-rather than streams of data.  Each call to @code{process-send}
-sends one datagram packet, and each datagram received results
-in one call to the filter function.
+  A datagram connection communicates with individual packets rather
+than streams of data.  Each call to @code{process-send} sends one
+datagram packet (@pxref{Input to Processes}), and each datagram
+received results in one call to the filter function.
 
   The datagram connection doesn't have to talk with the same remote
 peer all the time.  It has a @dfn{remote peer address} which specifies
@@ -1771,10 +1771,10 @@ in the local address space.
 @item
 An ``unsupported family'' address is represented by a cons
 @code{(@var{f} . @var{av})}, where @var{f} is the family number and
-@var{av} is a vector specifying the socket address using with one
-element per address data byte.  Do not rely on this format in portable
-code, as it may depend on implementation defined constants, data
-sizes, and data structure alignment.
+@var{av} is a vector specifying the socket address using one element
+per address data byte.  Do not rely on this format in portable code,
+as it may depend on implementation defined constants, data sizes, and
+data structure alignment.
 @end itemize
 
 @item :nowait @var{bool}
index a437299..c949d6f 100644 (file)
@@ -1,3 +1,17 @@
+2004-03-04  Richard M. Stallman  <rms@gnu.org>
+
+       * search.texi (Regexps): Explain that ^ and $ have their
+       special meanings only in certain contexts.
+
+       * programs.texi (Expressions): Doc C-M-SPC as alias for C-M-@.
+
+       * mule.texi (Specify Coding): Doc C-x RET F.
+
+       * buffers.texi (Misc Buffer): Explain use of M-x rename-uniquely
+       for multiple compile and grep buffers.
+       (Indirect Buffers): Don't recommand clone-indirect-buffer
+       for multiple compile and grep buffers.
+
 2004-02-29  Simon Josefsson  <jas@extundo.com>
 
        * smtpmail.texi (Authentication): Changed the list of supported
index b03209c..7f4c4f3 100644 (file)
@@ -217,14 +217,18 @@ the new name as a minibuffer argument.  There is no default.  If you
 specify a name that is in use for some other buffer, an error happens and
 no renaming is done.
 
-  @kbd{M-x rename-uniquely} renames the current buffer to a similar name
-with a numeric suffix added to make it both different and unique.  This
-command does not need an argument.  It is useful for creating multiple
-shell buffers: if you rename the @samp{*Shell*} buffer, then do @kbd{M-x
-shell} again, it makes a new shell buffer named @samp{*Shell*};
-meanwhile, the old shell buffer continues to exist under its new name.
-This method is also good for mail buffers, compilation buffers, and most
-Emacs features that create special buffers with particular names.
+  @kbd{M-x rename-uniquely} renames the current buffer to a similar
+name with a numeric suffix added to make it both different and unique.
+This command does not need an argument.  It is useful for creating
+multiple shell buffers: if you rename the @samp{*Shell*} buffer, then
+do @kbd{M-x shell} again, it makes a new shell buffer named
+@samp{*Shell*}; meanwhile, the old shell buffer continues to exist
+under its new name.  This method is also good for mail buffers,
+compilation buffers, and most Emacs features that create special
+buffers with particular names.  (With some of these features, such as
+@kbd{M-x compile}, @kbd{M-x grep} an @kbd{M-x info}, you need to
+switch to some other buffer before using the command, in order for it
+to make a different buffer.)
 
 @findex view-buffer
   @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.
   One way to use indirect buffers is to display multiple views of an
 outline.  @xref{Outline Views}.
 
-@cindex multiple @samp{*info*} and @samp{*Help*} buffers
   A quick and handy way to make an indirect buffer is with the command
 @kbd{M-x clone-indirect-buffer}.  It creates and selects an indirect
 buffer whose base buffer is the current buffer.  With a numeric
 argument, it prompts for the name of the indirect buffer; otherwise it
 defaults to the name of the current buffer, modifying it by adding a
-@samp{<@var{n}>} prefix if required.  @kbd{C-x 4 c}
+@samp{<@var{n}>} suffix if required.  @kbd{C-x 4 c}
 (@code{clone-indirect-buffer-other-window}) works like @kbd{M-x
-clone-indirect-buffer}, but it selects the cloned buffer in another
-window.  These commands come in handy if you want to create new
-@samp{*info*} or @samp{*Help*} buffers, for example.
-
-  The more general way is with the command @kbd{M-x
-make-indirect-buffer}.  It creates an indirect buffer from buffer
-@var{base-buffer}, under the name @var{indirect-name}.  It prompts for
-both @var{base-buffer} and @var{indirect-name} using the minibuffer.
+clone-indirect-buffer}, but it selects the new buffer in another
+window.
+
+  The more general way to make an indirect buffer is with the command
+@kbd{M-x make-indirect-buffer}.  It creates an indirect buffer from
+buffer @var{base-buffer}, under the name @var{indirect-name}.  It
+prompts for both @var{base-buffer} and @var{indirect-name} using the
+minibuffer.
 
 @node Buffer Convenience
 @section Convenience Features and Customization of Buffer Handling
index 73c589b..86349c0 100644 (file)
@@ -917,6 +917,12 @@ subprocess input and output in the current buffer.
 Use coding system @var{coding} for transferring selections to and from
 other programs through the window system.
 
+@item C-x @key{RET} F @var{coding} @key{RET}
+Use coding system @var{coding} for encoding and decoding file
+@emph{names}.  This affects the use of non-ASCII characters in file
+names.  It has no effect on reading and writing the @emph{contents} of
+files.
+
 @item C-x @key{RET} X @var{coding} @key{RET}
 Use coding system @var{coding} for transferring @emph{one}
 selection---the next one---to or from the window system.
@@ -1044,12 +1050,16 @@ current language environment.
 
 @vindex file-name-coding-system
 @cindex file names with non-@acronym{ASCII} characters
-  The variable @code{file-name-coding-system} specifies a coding system
-to use for encoding file names.  If you set the variable to a coding
-system name (as a Lisp symbol or a string), Emacs encodes file names
-using that coding system for all file operations.  This makes it
-possible to use non-@acronym{ASCII} characters in file names---or, at least, those
-non-@acronym{ASCII} characters which the specified coding system can encode.
+@findex set-file-name-coding-system
+@kindex C-x @key{RET} F
+  The variable @code{file-name-coding-system} specifies a coding
+system to use for encoding file names.  If you set the variable to a
+coding system name (as a Lisp symbol or a string), Emacs encodes file
+names using that coding system for all file operations.  This makes it
+possible to use non-@acronym{ASCII} characters in file names---or, at
+least, those non-@acronym{ASCII} characters which the specified coding
+system can encode.  Use @kbd{C-x @key{RET} F}
+(@code{set-file-name-coding-system}) to specify this interactively.
 
   If @code{file-name-coding-system} is @code{nil}, Emacs uses a default
 coding system determined by the selected language environment.  In the
index 6b3776e..84f3e6f 100644 (file)
@@ -641,6 +641,7 @@ Kill balanced expression forward (@code{kill-sexp}).
 @item C-M-t
 Transpose expressions (@code{transpose-sexps}).
 @item C-M-@@
+@itemx C-M-@key{SPC}
 Put mark after following expression (@code{mark-sexp}).
 @end table
 
@@ -701,12 +702,14 @@ rather than doing nothing, transposes the balanced expressions ending
 at or after point and the mark.
 
 @kindex C-M-@@
+@kindex C-M-@key{SPC}
 @findex mark-sexp
   To set the region around the next balanced expression in the buffer,
 use @kbd{C-M-@@} (@code{mark-sexp}), which sets mark at the same place
 that @kbd{C-M-f} would move to.  @kbd{C-M-@@} takes arguments like
 @kbd{C-M-f}.  In particular, a negative argument is useful for putting
 the mark at the beginning of the previous balanced expression.
+The alias @kbd{C-M-@key{SPC}} is equivalent to @kbd{C-M-@@}.
 
   In languages that use infix operators, such as C, it is not possible
 to recognize all balanced expressions as such because there can be
index ef2d577..303074d 100644 (file)
@@ -576,10 +576,18 @@ beginning of a line in the text being matched.  Otherwise it fails to
 match anything.  Thus, @samp{^foo} matches a @samp{foo} that occurs at
 the beginning of a line.
 
+For historical compatibility reasons, @samp{^} can be used with this
+meaning only at the beginning of the regular expression, or after
+@samp{\(} or @samp{\|}.
+
 @item @kbd{$}
 is similar to @samp{^} but matches only at the end of a line.  Thus,
 @samp{x+$} matches a string of one @samp{x} or more at the end of a line.
 
+For historical compatibility reasons, @samp{$} can be used with this
+meaning only at the end of the regular expression, or before @samp{\)}
+or @samp{\|}.
+
 @item @kbd{\}
 has two functions: it quotes the special characters (including
 @samp{\}), and it introduces additional special constructs.
index c1a63aa..bb8ef04 100644 (file)
@@ -1,3 +1,78 @@
+2004-03-04  Richard M. Stallman  <rms@gnu.org>
+
+       * s/sol2-6.h (LD_SWITCH_SYSTEM_TEMACS): New definition.
+
+       * window.c (Fdisplay_buffer): Doc fix.
+
+       * buffer.c (Fpop_to_buffer): Doc fix.
+
+2004-03-03  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (display_line): Fix call to get_overlay_arrow_glyph_row.
+
+2004-03-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * editfns.c (Ftranslate_region): Lisp_Object/int mixup.
+
+2004-03-02  Richard M. Stallman  <rms@gnu.org>
+
+       * indent.c (compute_motion): Save vpos in prev_vpos, like hpos etc.
+
+2004-03-02  Kenichi Handa  <handa@m17n.org>
+
+       * doc.c (Fsubstitute_command_keys): Fix counding bytes.
+
+2004-03-02  Kim F. Storm  <storm@cua.dk>
+
+       * window.h (struct window): New member overlay_arrow_bitmap.
+
+       * window.c (make_window): Initialize overlay_arrow_bitmap.
+
+       * xdisp.c (Voverlay_arrow_variable_list): New variable to properly
+       implement and integrate multiple overlay arrows with redisplay.
+       (syms_of_xdisp): DEFVAR_LISP and initialize it.
+       (last_arrow_position, last_arrow_string): Replace by properties.
+       (Qlast_arrow_position, Qlast_arrow_string)
+       (Qoverlay_arrow_string, Qoverlay_arrow_bitmap): New variables.
+       (syms_of_xdisp): Intern and staticpro them.
+       (overlay_arrow_string_or_property, update_overlay_arrows)
+       (overlay_arrow_in_current_buffer_p, overlay_arrows_changed_p)
+       (overlay_arrow_at_row): New functions for multiple overlay arrows.
+       (redisplay_internal): Use them instead of directly accessing
+       Voverlay_arrow_position etc. for multiple overlay arrows.
+       (mark_window_display_accurate): Use update_overlay_arrows.
+       (try_cursor_movement): Use overlay_arrow_in_current_buffer_p.
+       (try_window_id): Use overlay_arrows_changed_p.
+       (get_overlay_arrow_glyph_row): Add overlay_arrow_string arg.
+       (display_line): Use overlay_arrow_at_row to check multiple
+       overlay arrows, and get relevant overlay-arrow-string and
+       overlay-arrow-bitmap.  Set w->overlay_arrow_bitmap accordingly.
+       (produce_image_glyph): Set pixel_width = 0 for fringe bitmap.
+       (syms_of_xdisp): Remove last_arrow_position and last_arrow_string.
+
+       * fringe.c (draw_fringe_bitmap): Use w->overlay_arrow_bitmap if set.
+       (update_window_fringes): Remove unused code.
+
+2004-03-01  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (w32_read_socket): Fix last change to ButtonPress handling.
+
+2004-03-01  Juanma Barranquero  <lektu@terra.es>
+
+       * fringe.c (Fdefine_fringe_bitmap): Fix typo in docstring.
+
+       * makefile.w32-in ($(BLD)/fringe.$(O)): Add dependencies.
+
+2004-03-01  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfns.c (Fx_display_color_cells): Use number of planes to calculate
+       how many colors can be displayed.
+
+2004-03-01  Kenichi Handa  <handa@m17n.org>
+
+       * editfns.c (Ftranslate_region): Handle multibyte chars in TABLE
+       correctly.
+
 2004-02-28  Kim F. Storm  <storm@cua.dk>
 
        * dispnew.c (update_window): Update header line also if there are
 
 2004-02-28  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
-       * xfns.c (x_window): Fixed indentation.
+       * xfns.c (x_window): Fix indentation.
 
        * xterm.c (x_calc_absolute_position): Call x_real_positions
        to get WM window sizes and use those to calculate position.
-       (x_set_offset): Removed code commented out.
+       (x_set_offset): Remove code commented out.
 
 2004-02-28  Miles Bader  <miles@gnu.org>
 
        * keyboard.h (kbd_buffer_store_event_hold): Add prototype.
        (gen_help_event): Fix prototype.
 
-       * macterm.c (XTread_socket):  Remove bufp_r and
+       * macterm.c (XTread_socket): Remove bufp_r and
        numcharsp args.  Add hold_quit arg.
        Rework to use just one, local, inev input_event. Store inev
        directly in fifo using kbd_buffer_store_event_hold.
        initialize local hold_quit event to handle postponed quit event
        (and store it if set by kbd_buffer_store_event_hold).
 
-       * term.c (read_socket_hook): Fix arg list. 
+       * term.c (read_socket_hook): Fix arg list.
 
        * termhooks.h (read_socket_hook): Fix prototype.
 
 
        * xsmfns.c (x_session_check_input): Remove numchars arg.
 
-       * xterm.c (x_focus_changed, x_detect_focus_change): Remove
-       numchars arg.  Always store event into bufp arg.  Return nothing.
-       Callers changed accordingly.
+       * xterm.c (x_focus_changed, x_detect_focus_change):
+       Remove numchars arg.  Always store event into bufp arg.
+       Return nothing.  Callers changed accordingly.
        (glyph_rect): Simplify.
        (STORE_KEYSYM_FOR_DEBUG): New macro.
        (SET_SAVED_MENU_EVENT): Use inev instead of bufp, etc.
        * xterm.h (x_session_check_input): Fix prototype.
 
 2004-02-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
-       
-       * s/darwin.h (LD_SWITCH_SYSTEM_TEMACS): Add `-framework
-       QuickTime'.
-       
+
+       * s/darwin.h (LD_SWITCH_SYSTEM_TEMACS): Add `-framework QuickTime'.
+
        * dispextern.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in
        macgui.h).
-       
+
        * emacs.c (main) [HAVE_CARBON]: Call init_xfns.
-       
+
        * macgui.h [MAC_OSX]: Include Carbon/Carbon.h.
        (mktime, DEBUG, Z, free, malloc, realloc, max, min)
        (init_process) [MAC_OSX] : Avoid conflicts with Carbon/Carbon.h.
        (Bitmap): Remove typedef.
        (Pixmap): Change int to GWorldPtr.
 
-       * macmenu.c [MAC_OSX]: Do not include Carbon/Carbon.h (now in
-       macgui.h).
-       
-       * macterm.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in
-       macgui.h).
-       (RED16_FROM_ULONG, GREEN16_FROM_ULONG, BLUE16_FROM_ULONG): New
-       #define to extract 16-bit depth color components from unsigned
+       * macmenu.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h).
+
+       * macterm.h [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h).
+       (RED16_FROM_ULONG, GREEN16_FROM_ULONG, BLUE16_FROM_ULONG):
+       New #define to extract 16-bit depth color components from unsigned
        long representation.
        (PIX_MASK_DRAW, PIX_MASK_RETAIN): New #define to represent pixel
        colors used for masks.
        (struct mac_display_info): Add color_p.  Remove n_cbits.
-       
+
        * macfns.c: Include sys/types.h and sys/stat.h.
        [MAC_OSX]: Do not include Carbon/Carbon.h (now in macgui.h).
        Include QuickTime/QuickTime.h.
        (ZPixmap): New #define for compatibility with xfns.c.
        (XGetImage, XPutPixel, XGetPixel, XDestroyImage)
        (x_create_x_image_and_pixmap, x_destroy_x_image, x_put_x_image)
-       (find_image_fsspec, image_load_qt_1, image_load_quicktime): New
-       functions.
+       (find_image_fsspec, image_load_qt_1, image_load_quicktime):
+       New functions.
        (four_corners_best, x_create_x_image_and_pixmap)
-       (x_destroy_x_image, unwind_create_frame, x_disable_image,
-       (x_edge_detection, init_color_table, colors_in_color_table,
+       (x_destroy_x_image, unwind_create_frame, x_disable_image)
+       (x_edge_detection, init_color_table, colors_in_color_table)
        (lookup_rgb_color, lookup_pixel_color, postprocess_image)
        (x_put_x_image, slurp_file, xbm_scan, xbm_load, xbm_load_image)
        (xbm_image_p, xbm_read_bitmap_data, xbm_file_p, x_to_xcolors)
        (enum pbm_keyword_index, pbm_format, enum png_keyword_index)
        (png_format, png_image_p, enum jpeg_keyword_index, jpeg_format)
        (jpeg_image_p, enum tiff_keyword_index, tiff_format, tiff_image_p)
-       (enum gif_keyword_index, gif_format, gif_image_p): Sync with
-       xfns.c.
+       (enum gif_keyword_index, gif_format, gif_image_p): Sync with xfns.c.
        (x_make_gc): Sync with xfns.c.  Enclose unused `border_tile' with
        #if 0.
        (x_free_gcs): Sync with xfns.c.  Enclose unused `border_tile' with
        #if 0.  Free white_relief.gc and black_relief.gc.
-       (unwind_create_frame, x_emboss, x_laplace, x_edge_detection): New
-       functions (from xfns.c).
+       (unwind_create_frame, x_emboss, x_laplace, x_edge_detection):
+       New functions (from xfns.c).
        (Fx_create_frame): Record unwind_create_frame.
        (Fxw_display_color_p): Use dpyinfo->color_p.
        (Fx_display_grayscale_p, Fx_display_planes): Don't use
        (Fimage_size, Fimage_mask_p, four_corners_best, image_background)
        (x_clear_image_1, postprocess_image, slurp_file, xbm_load_image)
        (xbm_file_p, x_to_xcolors, x_from_xcolors, x_detect_edges)
-       (image_background_transparent): New function (from xfns.c).  Use
-       PIX_MASK_DRAW/PIX_MASK_RETAIN.
+       (image_background_transparent): New function (from xfns.c).
+       Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
        (image_load_quicktime): Add declaration.
        [MAC_OSX] (image_load_quartz2d): Likewise.
        [MAC_OSX] (CGImageCreateWithPNGDataProviderProcType): New typedef.
        [MAC_OSX] (MyCGImageCreateWithPNGDataProvider): New variable.
-       [MAC_OSX] (init_image_func_pointer, image_load_quartz2d): New
-       functions.
+       [MAC_OSX] (init_image_func_pointer, image_load_quartz2d): New funs.
        (xbm_load_image_from_file, x_laplace_read_row)
        (x_laplace_write_row, pbm_read_file): Remove functions.
        [HAVE_XPM] (enum xpm_keyword_index, xpm_format, xpm_image_p)
        (lookup_rgb_color): Don't lookup color table.  Just do gamma
        correction.
        (COLOR_INTENSITY): New #define (from xfns.c).
-       (x_disable_image): New function (from xfns.c).  Use
-       PIX_MASK_DRAW/PIX_MASK_RETAIN.
-       (x_build_heuristic_mask): Sync with xfns.c.  Use
-       PIX_MASK_DRAW/PIX_MASK_RETAIN.
+       (x_disable_image): New function (from xfns.c).
+       Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
+       (x_build_heuristic_mask): Sync with xfns.c.
+       Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
        (HAVE_PBM): Remove #ifdef.
        (pbm_load): Sync with xfns.c.  Set img->width and img->height
        before IMAGE_BACKGROUND.
-       (png_image_p, png_load): Don't enclose declarations with #if
-       HAVE_PNG.
+       (png_image_p, png_load): Don't enclose declarations with #if HAVE_PNG.
        (Qpng, enum png_keyword_index, png_format, png_type, png_image_p):
        Don't enclose with #if HAVE_PNG.
        [!HAVE_PNG] (png_load) [MAC_OSX]: Use image_load_quartz2d if a
-       symbol _CGImageCreateWithPNGDataProvider is defined.  Otherwise
-       use image_load_quicktime.
+       symbol _CGImageCreateWithPNGDataProvider is defined.
+       Otherwise use image_load_quicktime.
        [!HAVE_PNG] (png_load) [!MAC_OSX]: Use image_load_quicktime.
-       [HAVE_PNG] (png_load): Sync with xfns.c.  Use
-       PIX_MASK_DRAW/PIX_MASK_RETAIN.
+       [HAVE_PNG] (png_load): Sync with xfns.c.
+       Use PIX_MASK_DRAW/PIX_MASK_RETAIN.
        (jpeg_image_p, jpeg_load): Don't enclose declarations with #if
        HAVE_JPEG.
        (Qjpeg, enum jpeg_keyword_index, jpeg_format, jpeg_type)
        (Qtiff, enum tiff_keyword_index, tiff_format, tiff_type)
        (tiff_image_p): Don't enclose with #if HAVE_TIFF.
        [!HAVE_TIFF] (tiff_load): Use image_load_quicktime.
-       [HAVE_TIFF] (tiff_error_handler, tiff_warning_handler): New
-       functions (from xfns.c).
+       [HAVE_TIFF] (tiff_error_handler, tiff_warning_handler):
+       New functions (from xfns.c).
        [HAVE_TIFF] (tiff_load): Sync with xfns.c.
-       (gif_image_p, gif_load): Don't enclose declarations with #if
-       HAVE_GIF.
+       (gif_image_p, gif_load): Don't enclose declarations with #if HAVE_GIF.
        (Qgif, enum gif_keyword_index, gif_format, gif_type, gif_image_p):
        Don't enclose with #if HAVE_GIF.
        [!HAVE_GIF] (gif_load): Use Quicktime Movie Toolbox if it is
        image types.  Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and
        HAVE_PNG.  Add defsubr for Simage_size and Simage_mask_p.
        (init_xfns): Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and
-       HAVE_PNG.  Call EnterMovies to support animated gifs.  Call
-       init_image_func_pointer to bind a symbol
+       HAVE_PNG.  Call EnterMovies to support animated gifs.
+       Call init_image_func_pointer to bind a symbol
        _CGImageCreateWithPNGDataProvider if it is defined.
-       
-       * macterm.c [MAC_OSX]: Do not include Carbon/Carbon.h (now in
-       macgui.h).
+
+       * macterm.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h).
        (x_draw_bar_cursor): Sync declaration with xterm.c.
        (XFreePixmap, mac_draw_rectangle_to_pixmap, mac_copy_area)
        (mac_copy_area_to_pixmap): Implementation with GWorld (offscreen
        (mac_set_forecolor, mac_set_backcolor): Use RED16_FROM_ULONG etc.
        (mac_draw_line_to_pixmap, XCreatePixmap)
        (XCreatePixmapFromBitmapData, mac_fill_rectangle_to_pixmap)
-       (mac_copy_area_with_mask, mac_copy_area_with_mask_to_pixmap): New
-       functions.
-       (mac_draw_bitmap) [TARGET_API_MAC_CARBON]: Use
-       GetPortBitMapForCopyBits instead of the cast to Bitmap *.  Cast
-       bits to char *.
+       (mac_copy_area_with_mask, mac_copy_area_with_mask_to_pixmap):
+       New functions.
+       (mac_draw_bitmap) [TARGET_API_MAC_CARBON]:
+       Use GetPortBitMapForCopyBits instead of the cast to Bitmap *.
+       Cast bits to char *.
        (reflect_byte): New function (from w32fns.c).
        (mac_create_bitmap_from_bitmap_data): Use it and don't stuff bits
        due to byte alignment.
-       (mac_scroll_area) [TARGET_API_MAC_CARBON]: Use
-       GetPortBitMapForCopyBits instead of the cast to Bitmap *.
+       (mac_scroll_area) [TARGET_API_MAC_CARBON]:
+       Use GetPortBitMapForCopyBits instead of the cast to Bitmap *.
        (XSetForeground): Remove static (now used in macfns.c).
        (HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New #define (from w32term.c).
        (mac_alloc_lighter_color, x_destroy_window): Sync with w32term.c.
        (x_free_frame_resources): New funcion (from xterm.c).
        (XTread_socket): Call handle_tool_bar_click if mouse up/down event
        occurs in tool bar area.
-       (mac_initialize_display_info): Remove dpyinfo->n_cbits.  Set
-       dpyinfo->color_p.  Determine dpyinfo->n_planes using HasDepth.
+       (mac_initialize_display_info): Remove dpyinfo->n_cbits.
+       Set dpyinfo->color_p.  Determine dpyinfo->n_planes using HasDepth.
        Initialize image cache.
        (stricmp, wildstrieq, mac_font_pattern_match, mac_font_match):
        Enclose unused functions with #if 0.
        (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): New variables.
        (decode_mac_font_name): New function to apply code conversions
-       from a mac font name to an XLFD font name according to its script
-       code.
+       from a mac font name to an XLFD font name according to its script code.
        (x_font_name_to_mac_font_name): Apply code conversion from an XLFD
-       font name to a mac font name according to REGISTRY and ENCODING
-       fields.
+       font name to a mac font name according to REGISTRY and ENCODING fields.
        (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't use a font
        whose name starts with `.'.
        (init_font_name_table): Use decode_mac_font_name.  Add both
        * xfns.c (lookup_image): Remove xassert(!interrupt_input_blocked);
        BLOCK_INPUT can be nested, so it doesn't make much sense.
 
-2004-02-24  Michael Mauger <mmaug@yahoo.com>
+2004-02-24  Michael Mauger  <mmaug@yahoo.com>
 
        * w32fns.c (slurp_file, xbm_scan, xbm_load_image)
        (xbm_read_bitmap_data): Use unsigned char for image data.
 
        * emacs.c (USAGE1): Split into two halves.
        (USAGE2): Second half of the old USAGE1.
-       (USAGE3): Renamed from USAGE2.
-       (USAGE4): Renamed from USAGE3.
+       (USAGE3): Rename from USAGE2.
+       (USAGE4): Rename from USAGE3.
 
 2004-02-21  Juri Linkov  <juri@jurta.org>
 
        in one call to read_socket_hook.  Value is 8.
        (read_avail_input): Separate and rework handling of read_socket_hook
        and non-read_socket_hook cases.  Use smaller input_event buffer
-       in read_socket_hook case, and repeat if full buffer is read.  Use
-       new local variable 'discard' to skip input after C-g.
+       in read_socket_hook case, and repeat if full buffer is read.
+       Use new local variable 'discard' to skip input after C-g.
        In non-read_socket_hook case, just use a single input_event, and
        call kbd_buffer_store_event on the fly for each character.
 
        Add prototypes.
 
        * macterm.c (mac_draw_bitmap): Add overlay_p arg.
-       (x_draw_fringe_bitmap):  Handle overlayed fringe bitmaps;
+       (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps;
        thanks to YAMAMOTO Mitsuharu for advice on how to do this.
        Use cursor color for displaying cursor in fringe.
        (x_redisplay_interface): Add null handlers for
 
        * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
 
-2004-01-27  Steven Tamm <steventamm@mac.com>
+2004-01-27  Steven Tamm  <steventamm@mac.com>
 
        * unexmacosx.c (unexec_copy): Do not copy more than was
        requested to prevent overwriting during unexec.
 
        * process.h: Add extern to synch_process_termsig.
 
-2004-01-27  Steven Tamm <steventamm@mac.com>
+2004-01-27  Steven Tamm  <steventamm@mac.com>
 
        * macterm.c (make_mac_frame, make_mac_terminal_frame):
        Move setting of scroll bars from make_mac_frame to
 
        * buffer.h (struct buffer): New member indicate_buffer_boundaries.
 
-       * buffer.c (init_buffer_once):  Set buffer_defaults and
+       * buffer.c (init_buffer_once): Set buffer_defaults and
        buffer_local_flags for indicate_buffer_boundaries.
        (syms_of_buffer): Defvar_per_buffer it, and defvar_lisp_nopro
        default- variable for it.
        to the definition of `signal' in the Elisp manual.
        * eval.c (Fsignal): Ditto.
 
-2003-12-29  James Clark <jjc@jclark.com>  (tiny change)
+2003-12-29  James Clark  <jjc@jclark.com>  (tiny change)
 
        * fns.c (internal_equal): Return t for two NaN arguments.
 
 
        * minibuf.c (Fcompleting_read): Undo previous change.
 
-2003-12-25  Lars Hansen <larsh@math.ku.dk>
+2003-12-25  Lars Hansen  <larsh@math.ku.dk>
 
        * dired.c (Fdirectory_files, Fdirectory_files_and_attributes):
        Arguments GCPRO'ed in call to file name handler.
        * xdisp.c (note_mode_line_or_margin_highlight): Adapt to new
        mode_line_string and marginal_area_string parameters.
 
-2003-11-22  Lars Hansen <larsh@math.ku.dk>
+2003-11-22  Lars Hansen  <larsh@math.ku.dk>
 
        * w32.c (struct the_group, getgrgid): Add.
        * mac.c (struct my_group, getgrgid): Add.
        * frame.c (store_frame_param):
        * fontset.c (Fset_fontset_font):
        * emacs.c (shut_down_emacs):
-       * ccl.c (ccl_driver):  Remove period at end of error message.
+       * ccl.c (ccl_driver): Remove period at end of error message.
 
        * config.in: Regenerate.
 
        Set BUF_INTERVALS (buffer)->up_obj when appropriate.
        Handle over_used when splitting UNDER.
 
-2003-09-30  YAMAMOTO  Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2003-09-30  YAMAMOTO  Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * regex.c (regex_compile): Free the stack when returning from function.
 
 
        * w32term.c (w32_read_socket): Fix WM_MOUSEWHEEL assignment.
 
-2003-08-26  Terje Rosten <terjeros@phys.ntnu.no>
+2003-08-26  Terje Rosten  <terjeros@phys.ntnu.no>
 
        * xfns.c (Vgtk_version_string): New variable.
        (syms_of_xfns): DEFVAR_LISP it.  Provide gtk.
        (draw_fringe_bitmap): Rework to handle per-window fringes and new
        fringe vs. display margin position.
        (hscroll_window_tree): Use window_box_width instead of window_box.
-       (redisplay_window):  Adapt to per-window scroll bars.
-       (draw_glyphs):  Rework to handle per-window fringes and scroll
+       (redisplay_window): Adapt to per-window scroll bars.
+       (draw_glyphs): Rework to handle per-window fringes and scroll
        bars, and new fringe vs. display margin position.
        Use WINDOW_LEFT_EDGE_X, WINDOW_TOTAL_WIDTH, and window_box_left.
-       (x_clear_end_of_line):  Adapt to per-window fringes and scroll
+       (x_clear_end_of_line): Adapt to per-window fringes and scroll
        bars, and new fringe vs. display margin position.  Fix bug which
        increased total width of full_width rows by width of scroll bars
        although window's total width already includes that.
        (w32_draw_window_cursor): New W32-specific functions for RIF.
        (w32_redisplay_interface): Add new members.
 
-       * w32gui.h (No_Cursor):  Define as 0 for W32.
+       * w32gui.h (No_Cursor): Define as 0 for W32.
        (XRectangle): Add X compatible rectangle type.
        (NativeRectangle): Declare as RECT for W32.
        (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros.
 
        * lisp.h: Declare Vx_resource_name extern.
 
-       * keyboard.c (kbd_buffer_get_event):  Check MENU_BAR_ACTIVATE_EVENT
+       * keyboard.c (kbd_buffer_get_event): Check MENU_BAR_ACTIVATE_EVENT
        for USE_GTK.
        (make_lispy_event): Check MENU_BAR_EVENT for USE_GTK.
 
        Its primary purpose at this time is to initialize the global variable
        track_mouse_event_fn.
 
-       * w32fns.c (w32_wnd_proc):  Remove initialization of
+       * w32fns.c (w32_wnd_proc): Remove initialization of
        track_mouse_event_fn from the handler for the WM_SETFOCUS message.
 
        * w32fns.c (syms_of_w32fns): Call globals_of_w32fns.
 
-       * w32menu.c (globals_of_w32menu):  New function. Used to
+       * w32menu.c (globals_of_w32menu): New function. Used to
        initialize those global variables that must always be initialized
        on startup even when the global variable initialized is non zero.
        Its primary purpose at this time is to initialize the global
 
 2001-12-03  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
 
-       * xdisp.c (syms_of_xdisp): Make `tool-bar-button-relief` an option.
+       * xdisp.c (syms_of_xdisp): Make `tool-bar-button-relief' an option.
 
 2001-12-02  Pavel Jan\e,Am\e(Bk  <Pavel@Janik.cz>
 
index ad1dde9..27b1284 100644 (file)
@@ -1675,8 +1675,9 @@ DEFUN ("pop-to-buffer", Fpop_to_buffer, Spop_to_buffer, 1, 3, 0,
        doc: /* Select buffer BUFFER in some window, preferably a different one.
 If BUFFER is nil, then some other buffer is chosen.
 If `pop-up-windows' is non-nil, windows can be split to do this.
-If optional second arg OTHER-WINDOW is non-nil, insist on finding another
-window even if BUFFER is already visible in the selected window.
+If optional second arg OTHER-WINDOW is nil, insist on finding another
+window even if BUFFER is already visible in the selected window,
+and ignore `same-window-regexps' and `same-window-buffer-names'.
 This uses the function `display-buffer' as a subroutine; see the documentation
 of `display-buffer' for additional customization information.
 
index 0e22f6d..930afc8 100644 (file)
--- a/src/doc.c
+++ b/src/doc.c
@@ -821,7 +821,7 @@ thus, \\=\\=\\=\\= puts \\=\\= into the output, and \\=\\=\\=\\[ puts \\=\\[ int
          start = strp;
          start_idx = start - SDATA (string);
 
-         while ((strp - SDATA (string) < SCHARS (string))
+         while ((strp - SDATA (string) < SBYTES (string))
                 && *strp != '}' && *strp != '>')
            strp++;
 
index 9a1ce81..51435af 100644 (file)
@@ -1,5 +1,5 @@
 /* Lisp functions pertaining to editing.
-   Copyright (C) 1985,86,87,89,93,94,95,96,97,98, 1999, 2000, 2001, 02, 2003
+   Copyright (C) 1985,86,87,89,93,94,95,96,97,98,1999,2000,01,02,03,2004
        Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
@@ -2741,85 +2741,84 @@ DEFUN ("translate-region", Ftranslate_region, Stranslate_region, 3, 3, 0,
        doc: /* From START to END, translate characters according to TABLE.
 TABLE is a string; the Nth character in it is the mapping
 for the character with code N.
-This function does not alter multibyte characters.
 It returns the number of characters changed.  */)
      (start, end, table)
      Lisp_Object start;
      Lisp_Object end;
      register Lisp_Object table;
 {
-  register int pos_byte, stop; /* Limits of the region. */
   register unsigned char *tt;  /* Trans table. */
   register int nc;             /* New character. */
   int cnt;                     /* Number of changes made. */
   int size;                    /* Size of translate table. */
-  int pos;
+  int pos, pos_byte;
   int multibyte = !NILP (current_buffer->enable_multibyte_characters);
+  int string_multibyte;
 
   validate_region (&start, &end);
   CHECK_STRING (table);
 
-  size = SBYTES (table);
+  if (multibyte != (SCHARS (table) < SBYTES (table)))
+    table = (multibyte
+            ? string_make_multibyte (table)
+            : string_make_unibyte (table));
+  string_multibyte = SCHARS (table) < SBYTES (table);
+
+  size = SCHARS (table);
   tt = SDATA (table);
 
-  pos_byte = CHAR_TO_BYTE (XINT (start));
-  stop = CHAR_TO_BYTE (XINT (end));
-  modify_region (current_buffer, XINT (start), XINT (end));
   pos = XINT (start);
+  pos_byte = CHAR_TO_BYTE (pos);
+  modify_region (current_buffer, pos, XINT (end));
 
   cnt = 0;
-  for (; pos_byte < stop; )
+  for (; pos < XINT (end); )
     {
       register unsigned char *p = BYTE_POS_ADDR (pos_byte);
-      int len;
+      unsigned char *str;
+      int len, str_len;
       int oc;
-      int pos_byte_next;
 
       if (multibyte)
-       oc = STRING_CHAR_AND_LENGTH (p, stop - pos_byte, len);
+       oc = STRING_CHAR_AND_LENGTH (p, MAX_MULTIBYTE_LENGTH, len);
       else
        oc = *p, len = 1;
-      pos_byte_next = pos_byte + len;
-      if (oc < size && len == 1)
+      if (oc < size)
        {
-         nc = tt[oc];
+         if (string_multibyte)
+           {
+             str = tt + string_char_to_byte (table, oc);
+             nc = STRING_CHAR_AND_LENGTH (str, MAX_MULTIBYTE_LENGTH, str_len);
+           }
+         else
+           {
+             str = tt + oc;
+             nc = tt[oc], str_len = 1;
+           }
          if (nc != oc)
            {
-             /* Take care of the case where the new character
-                combines with neighboring bytes.  */
-             if (!ASCII_BYTE_P (nc)
-                 && (CHAR_HEAD_P (nc)
-                     ? ! CHAR_HEAD_P (FETCH_BYTE (pos_byte + 1))
-                     : (pos_byte > BEG_BYTE
-                        && ! ASCII_BYTE_P (FETCH_BYTE (pos_byte - 1)))))
+             if (len != str_len)
                {
                  Lisp_Object string;
 
-                 string = make_multibyte_string (tt + oc, 1, 1);
                  /* This is less efficient, because it moves the gap,
-                    but it handles combining correctly.  */
-                 replace_range (pos, pos + 1, string,
-                                1, 0, 1);
-                 pos_byte_next = CHAR_TO_BYTE (pos);
-                 if (pos_byte_next > pos_byte)
-                   /* Before combining happened.  We should not
-                      increment POS.  So, to cancel the later
-                      increment of POS, we decrease it now.  */
-                   pos--;
-                 else
-                   INC_POS (pos_byte_next);
+                    but it should multibyte characters correctly.  */
+                 string = make_multibyte_string (str, 1, str_len);
+                 replace_range (pos, pos + 1, string, 1, 0, 1);
+                 len = str_len;
                }
              else
                {
                  record_change (pos, 1);
-                 *p = nc;
+                 while (str_len-- > 0)
+                   *p++ = *str++;
                  signal_after_change (pos, 1, 1);
                  update_compositions (pos, pos + 1, CHECK_BORDER);
                }
              ++cnt;
            }
        }
-      pos_byte = pos_byte_next;
+      pos_byte += len;
       pos++;
     }
 
index b14668e..48a6447 100644 (file)
@@ -637,7 +637,10 @@ draw_fringe_bitmap (w, row, left_p)
   draw_fringe_bitmap_1 (w, row, left_p, overlay, NO_FRINGE_BITMAP);
 
   if (left_p && row->overlay_arrow_p)
-    draw_fringe_bitmap_1 (w, row, 1, 1, OVERLAY_ARROW_BITMAP);
+    draw_fringe_bitmap_1 (w, row, 1, 1,
+                         (w->overlay_arrow_bitmap
+                          ? w->overlay_arrow_bitmap
+                          : OVERLAY_ARROW_BITMAP));
 }
 
 
@@ -738,7 +741,7 @@ update_window_fringes (w, force_p)
        {
          unsigned indicate_bob_p, indicate_top_line_p;
          unsigned indicate_eob_p, indicate_bottom_line_p;
-         
+
          row = w->desired_matrix->rows + rn;
          if (!row->enabled_p)
            row = w->current_matrix->rows + rn;
@@ -747,7 +750,7 @@ update_window_fringes (w, force_p)
          indicate_top_line_p = row->indicate_top_line_p;
          indicate_eob_p = row->indicate_eob_p;
          indicate_bottom_line_p = row->indicate_bottom_line_p;
-         
+
          row->indicate_bob_p = row->indicate_top_line_p = 0;
          row->indicate_eob_p = row->indicate_bottom_line_p = 0;
 
@@ -800,10 +803,6 @@ update_window_fringes (w, force_p)
          left = row->left_user_fringe_bitmap;
          left_face_id = row->left_user_fringe_face_id;
        }
-#if 0  /* this is now done via an overlay */
-      else if (row->overlay_arrow_p)
-       left = OVERLAY_ARROW_BITMAP;
-#endif
       else if (row->indicate_bob_p && boundary_pos <= 0)
        left = ((row->indicate_eob_p && boundary_pos < 0)
                ? LEFT_BRACKET_BITMAP : TOP_LEFT_ANGLE_BITMAP);
@@ -882,7 +881,7 @@ update_window_fringes (w, force_p)
 }
 
 
-/* Compute actual fringe widths for frame F.  
+/* Compute actual fringe widths for frame F.
 
    If REDRAW is 1, redraw F if the fringe settings was actually
    modified and F is visible.
@@ -1099,7 +1098,7 @@ DEFUN ("define-fringe-bitmap", Fdefine_fringe_bitmap, Sdefine_fringe_bitmap,
 BITS is either a string or a vector of integers.
 HEIGHT is height of bitmap.  If HEIGHT is nil, use length of BITS.
 WIDTH must be an integer between 1 and 16, or nil which defaults to 8.
-Optional forth arg ALIGN may be one of `top', `center', or `bottom',
+Optional fourth arg ALIGN may be one of `top', `center', or `bottom',
 indicating the positioning of the bitmap relative to the rows where it
 is used; the default is to center the bitmap.  Fourth arg may also be a
 list (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.  */)
          fill2 = fb.height - h - fill1;
        }
     }
-  
+
   if (NILP (width))
     fb.width = 8;
   else
@@ -1220,7 +1219,7 @@ Return new bitmap number, or nil of no more free bitmap slots.  */)
 
 DEFUN ("set-fringe-bitmap-face", Fset_fringe_bitmap_face, Sset_fringe_bitmap_face,
        1, 2, 0,
-       doc:  /* Set face for fringe bitmap FRINGE-ID to FACE.
+       doc: /* Set face for fringe bitmap FRINGE-ID to FACE.
 If FACE is nil, reset face to default fringe face.  */)
   (fringe_id, face)
      Lisp_Object fringe_id, face;
@@ -1247,7 +1246,7 @@ If FACE is nil, reset face to default fringe face.  */)
 
 DEFUN ("fringe-bitmaps-at-pos", Ffringe_bitmaps_at_pos, Sfringe_bitmaps_at_pos,
        0, 2, 0,
-       doc:  /* Return fringe bitmaps of row containing position POS in window WINDOW.
+       doc: /* Return fringe bitmaps of row containing position POS in window WINDOW.
 If WINDOW is nil, use selected window.  If POS is nil, use value of point
 in that window.  Return value is a cons (LEFT . RIGHT) where LEFT and RIGHT
 are the fringe bitmap numbers for the bitmaps in the left and right fringe,
@@ -1349,7 +1348,7 @@ w32_reset_fringes ()
 {
   /* Destroy row bitmaps.  */
   int bt;
-  
+
   for (bt = NO_FRINGE_BITMAP + 1; bt < max_used_fringe_bitmap; bt++)
     rif->destroy_fringe_bitmap (bt);
 }
index 1b3e584..32efcbd 100644 (file)
@@ -1199,7 +1199,6 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
     = (INTEGERP (current_buffer->selective_display)
        ? XINT (current_buffer->selective_display)
        : !NILP (current_buffer->selective_display) ? -1 : 0);
-  int prev_hpos = 0;
   int selective_rlen
     = (selective && dp && VECTORP (DISP_INVIS_VECTOR (dp))
        ? XVECTOR (DISP_INVIS_VECTOR (dp))->size : 0);
@@ -1227,6 +1226,8 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
   int wide_column_end_hpos = 0;
   int prev_pos;                        /* Previous buffer position.  */
   int prev_pos_byte;           /* Previous buffer position.  */
+  int prev_hpos = 0;
+  int prev_vpos = 0;
   int contin_hpos;             /* HPOS of last column of continued line.  */
   int prev_tab_offset;         /* Previous tab offset.  */
 
@@ -1275,6 +1276,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
                  pos = prev_pos;
                  pos_byte = prev_pos_byte;
                  hpos = prev_hpos;
+                 vpos = prev_vpos;
                  tab_offset = prev_tab_offset;
                }
              break;
@@ -1384,6 +1386,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
                  if (pos >= next_boundary)
                    next_boundary = pos + 1;
                  prev_hpos = width;
+                 prev_vpos = vpos;
                  prev_tab_offset = tab_offset;
                }
            }
@@ -1416,6 +1419,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
          pos = prev_pos;
          pos_byte = prev_pos_byte;
          hpos = prev_hpos;
+         vpos = prev_vpos;
          tab_offset = prev_tab_offset;
 
          /* NOTE on contin_hpos, hpos, and prev_hpos.
@@ -1436,10 +1440,6 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
              hpos = contin_hpos;
              vpos = vpos - 1;
            }
-         else if (c == '\n')
-           /* If previous character is NEWLINE,
-              set VPOS back to previous line */
-           vpos = vpos - 1;
          break;
        }
 
@@ -1457,6 +1457,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
              pos = prev_pos;
              pos_byte = prev_pos_byte;
              hpos = prev_hpos;
+             vpos = prev_vpos;
              tab_offset = prev_tab_offset;
            }
          break;
@@ -1465,6 +1466,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
        break;
 
       prev_hpos = hpos;
+      prev_vpos = vpos;
       prev_pos = pos;
       prev_pos_byte = pos_byte;
       wide_column_end_hpos = 0;
index 1007e39..0c153b1 100644 (file)
@@ -723,6 +723,21 @@ $(BLD)/frame.$(O) : \
        $(SRC)/w32term.h \
        $(SRC)/window.h
 
+$(BLD)/fringe.$(O) : \
+       $(SRC)/fringe.c \
+       $(EMACS_ROOT)/src/s/ms-w32.h \
+       $(EMACS_ROOT)/src/m/intel386.h \
+       $(EMACS_ROOT)/src/config.h \
+       $(SRC)/atimer.h \
+       $(SRC)/blockinput.h \
+       $(SRC)/buffer.h \
+       $(SRC)/dispextern.h \
+       $(SRC)/frame.h \
+       $(SRC)/systime.h \
+       $(SRC)/w32bdf.h \
+       $(SRC)/w32gui.h \
+       $(SRC)/window.h
+
 $(BLD)/gmalloc.$(O) : \
        $(SRC)/gmalloc.c \
        $(EMACS_ROOT)/src/s/ms-w32.h \
index a43443e..3ba9ed1 100644 (file)
@@ -7,5 +7,10 @@
 #define UNEXEC unexsol.o
 #endif
 
+/* "Dennis McRitchie" <dmcr@Princeton.EDU> reported failures
+   with GNU ld without this.  */
+
+#define LD_SWITCH_SYSTEM_TEMACS -znocombreloc
+
 /* arch-tag: 71ea3857-89dc-4395-9623-77964e6ed3ca
    (do not change this comment) */
index c59dabc..41c188a 100644 (file)
@@ -4394,7 +4394,7 @@ w32_read_socket (sd, expected, hold_quit)
 
                 if (tool_bar_p
                    || (dpyinfo->w32_focus_frame
-                       && f == dpyinfo->w32_focus_frame))
+                       && f != dpyinfo->w32_focus_frame))
                  inev.kind = NO_EVENT;
              }
 
index 7419239..0192aa4 100644 (file)
@@ -281,6 +281,7 @@ make_window ()
   p->fringes_outside_margins = Qnil;
   p->scroll_bar_width = Qnil;
   p->vertical_scroll_bar_type = Qt;
+  p->overlay_arrow_bitmap = 0;
 
   Vwindow_list = Qnil;
   return val;
@@ -3269,9 +3270,10 @@ Returns the window displaying BUFFER.
 If `display-buffer-reuse-frames' is non-nil, and another frame is currently
 displaying BUFFER, then simply raise that frame.
 
-The variables `special-display-buffer-names', `special-display-regexps',
-`same-window-buffer-names', and `same-window-regexps' customize how certain
-buffer names are handled.
+The variables `special-display-buffer-names',
+`special-display-regexps', `same-window-buffer-names', and
+`same-window-regexps' customize how certain buffer names are handled.
+The latter two take effect only if NOT-THIS-WINDOW is t.
 
 If optional argument FRAME is `visible', search all visible frames.
 If FRAME is 0, search all visible and iconified frames.
index f45ca39..ef81da4 100644 (file)
@@ -254,6 +254,9 @@ struct window
     /* This is handy for undrawing the cursor.  */
     int phys_cursor_ascent, phys_cursor_height;
 
+    /* Alternate overlay-arrow-bitmap in this window.  */
+    int overlay_arrow_bitmap;
+
     /* Non-zero means the cursor is currently displayed.  This can be
        set to zero by functions overpainting the cursor image.  */
     unsigned phys_cursor_on_p : 1;
index 67f2144..bb7ce74 100644 (file)
@@ -403,6 +403,13 @@ int multiple_frames;
 
 Lisp_Object Vglobal_mode_string;
 
+
+/* List of variables (symbols) which hold markers for overlay arrows.
+   The symbols on this list are examined during redisplay to determine
+   where to display overlay arrows.  */ 
+
+Lisp_Object Voverlay_arrow_variable_list;
+
 /* Marker for where to display an arrow on top of the buffer text.  */
 
 Lisp_Object Voverlay_arrow_position;
@@ -411,11 +418,17 @@ Lisp_Object Voverlay_arrow_position;
 
 Lisp_Object Voverlay_arrow_string;
 
-/* Values of those variables at last redisplay.  However, if
-   Voverlay_arrow_position is a marker, last_arrow_position is its
+/* Values of those variables at last redisplay are stored as
+   properties on `overlay-arrow-position' symbol.  However, if
+   Voverlay_arrow_position is a marker, last-arrow-position is its
    numerical position.  */
 
-static Lisp_Object last_arrow_position, last_arrow_string;
+Lisp_Object Qlast_arrow_position, Qlast_arrow_string;
+
+/* Alternative overlay-arrow-string and overlay-arrow-bitmap
+   properties on a symbol in overlay-arrow-variable-list.  */
+
+Lisp_Object Qoverlay_arrow_string, Qoverlay_arrow_bitmap;
 
 /* Like mode-line-format, but for the title bar on a visible frame.  */
 
@@ -828,7 +841,8 @@ static struct text_pos display_prop_end P_ ((struct it *, Lisp_Object,
 static int compute_window_start_on_continuation_line P_ ((struct window *));
 static Lisp_Object safe_eval_handler P_ ((Lisp_Object));
 static void insert_left_trunc_glyphs P_ ((struct it *));
-static struct glyph_row *get_overlay_arrow_glyph_row P_ ((struct window *));
+static struct glyph_row *get_overlay_arrow_glyph_row P_ ((struct window *,
+                                                         Lisp_Object));
 static void extend_face_to_end_of_line P_ ((struct it *));
 static int append_space P_ ((struct it *, int));
 static int make_cursor_line_fully_visible P_ ((struct window *));
@@ -9316,6 +9330,153 @@ redisplay ()
 }
 
 
+static Lisp_Object
+overlay_arrow_string_or_property (var, pbitmap)
+     Lisp_Object var;
+     int *pbitmap;
+{
+  Lisp_Object pstr = Fget (var, Qoverlay_arrow_string);
+  Lisp_Object bitmap;
+
+  if (pbitmap)
+    {
+      *pbitmap = 0;
+      if (bitmap  = Fget (var, Qoverlay_arrow_bitmap), INTEGERP (bitmap))
+       *pbitmap = XINT (bitmap);
+    }
+
+  if (!NILP (pstr))
+    return pstr;
+  return Voverlay_arrow_string;
+}
+
+/* Return 1 if there are any overlay-arrows in current_buffer.  */
+static int
+overlay_arrow_in_current_buffer_p ()
+{
+  Lisp_Object vlist;
+
+  for (vlist = Voverlay_arrow_variable_list;
+       CONSP (vlist);
+       vlist = XCDR (vlist))
+    {
+      Lisp_Object var = XCAR (vlist);
+      Lisp_Object val;
+
+      if (!SYMBOLP (var))
+       continue;
+      val = find_symbol_value (var);
+      if (MARKERP (val)
+         && current_buffer == XMARKER (val)->buffer)
+       return 1;
+    }
+  return 0;
+}
+
+
+/* Return 1 if any overlay_arrows have moved or overlay-arrow-string
+   has changed.  */
+
+static int
+overlay_arrows_changed_p ()
+{
+  Lisp_Object vlist;
+
+  for (vlist = Voverlay_arrow_variable_list;
+       CONSP (vlist);
+       vlist = XCDR (vlist))
+    {
+      Lisp_Object var = XCAR (vlist);
+      Lisp_Object val, pstr;
+
+      if (!SYMBOLP (var))
+       continue;
+      val = find_symbol_value (var);
+      if (!MARKERP (val))
+       continue;
+      if (! EQ (COERCE_MARKER (val),
+               Fget (var, Qlast_arrow_position))
+         || ! (pstr = overlay_arrow_string_or_property (var, 0),
+               EQ (pstr, Fget (var, Qlast_arrow_string))))
+       return 1;
+    }
+  return 0;
+}
+
+/* Mark overlay arrows to be updated on next redisplay.  */
+
+static void
+update_overlay_arrows (up_to_date)
+     int up_to_date;
+{
+  Lisp_Object vlist;
+
+  for (vlist = Voverlay_arrow_variable_list;
+       CONSP (vlist);
+       vlist = XCDR (vlist))
+    {
+      Lisp_Object var = XCAR (vlist);
+
+      if (!SYMBOLP (var))
+       continue;
+
+      if (up_to_date)
+       {
+         Lisp_Object val = find_symbol_value (var);
+         Fput (var, Qlast_arrow_position,
+               COERCE_MARKER (val));
+         Fput (var, Qlast_arrow_string,
+               overlay_arrow_string_or_property (var, 0));
+       }
+      else if (up_to_date < 0
+              || !NILP (Fget (var, Qlast_arrow_position)))
+       {
+         Fput (var, Qlast_arrow_position, Qt);
+         Fput (var, Qlast_arrow_string, Qt);
+       }
+    }
+}
+
+
+/* Return overlay arrow string at row, or nil.  */
+
+static Lisp_Object
+overlay_arrow_at_row (f, row, pbitmap)
+     struct frame *f;
+     struct glyph_row *row;
+     int *pbitmap;
+{
+  Lisp_Object vlist;
+
+  for (vlist = Voverlay_arrow_variable_list;
+       CONSP (vlist);
+       vlist = XCDR (vlist))
+    {
+      Lisp_Object var = XCAR (vlist);
+      Lisp_Object val;
+
+      if (!SYMBOLP (var))
+       continue;
+
+      val = find_symbol_value (var);
+      
+      if (MARKERP (val)
+         && current_buffer == XMARKER (val)->buffer
+         && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val)))
+       {
+         val = overlay_arrow_string_or_property (var, pbitmap);
+         if (FRAME_WINDOW_P (f))
+           return Qt;
+         else if (STRINGP (val))
+           return val;
+         break;
+       }
+    }
+
+  *pbitmap = 0;
+  return Qnil;
+}
+
 /* Return 1 if point moved out of or into a composition.  Otherwise
    return 0.  PREV_BUF and PREV_PT are the last point buffer and
    position.  BUF and PT are the current point buffer and position.  */
@@ -9595,8 +9756,7 @@ redisplay_internal (preserve_echo_area)
 
   /* If specs for an arrow have changed, do thorough redisplay
      to ensure we remove any arrow that should no longer exist.  */
-  if (! EQ (COERCE_MARKER (Voverlay_arrow_position), last_arrow_position)
-      || ! EQ (Voverlay_arrow_string, last_arrow_string))
+  if (overlay_arrows_changed_p ())
     consider_all_windows_p = windows_or_buffers_changed = 1;
 
   /* Normally the message* functions will have already displayed and
@@ -10056,11 +10216,7 @@ redisplay_internal (preserve_echo_area)
       CHARPOS (this_line_start_pos) = 0;
 
       /* Let the overlay arrow be updated the next time.  */
-      if (!NILP (last_arrow_position))
-       {
-         last_arrow_position = Qt;
-         last_arrow_string = Qt;
-       }
+      update_overlay_arrows (0);
 
       /* If we pause after scrolling, some rows in the current
         matrices of some windows are not valid.  */
@@ -10076,8 +10232,8 @@ redisplay_internal (preserve_echo_area)
             consider_all_windows_p is set.  */
          mark_window_display_accurate_1 (w, 1);
 
-         last_arrow_position = COERCE_MARKER (Voverlay_arrow_position);
-         last_arrow_string = Voverlay_arrow_string;
+         /* Say overlay arrows are up to date.  */
+         update_overlay_arrows (1);
 
          if (FRAME_DISPLAY (sf)->frame_up_to_date_hook != 0)
            FRAME_DISPLAY (sf)->frame_up_to_date_hook (sf);
@@ -10273,16 +10429,14 @@ mark_window_display_accurate (window, accurate_p)
 
   if (accurate_p)
     {
-      last_arrow_position = COERCE_MARKER (Voverlay_arrow_position);
-      last_arrow_string = Voverlay_arrow_string;
+      update_overlay_arrows (1);
     }
   else
     {
       /* Force a thorough redisplay the next time by setting
         last_arrow_position and last_arrow_string to t, which is
         unequal to any useful value of Voverlay_arrow_...  */
-      last_arrow_position = Qt;
-      last_arrow_string = Qt;
+      update_overlay_arrows (-1);
     }
 }
 
@@ -11033,8 +11187,7 @@ try_cursor_movement (window, startp, scroll_step)
       && INTEGERP (w->window_end_vpos)
       && XFASTINT (w->window_end_vpos) < w->current_matrix->nrows
       && (FRAME_WINDOW_P (f)
-         || !MARKERP (Voverlay_arrow_position)
-         || current_buffer != XMARKER (Voverlay_arrow_position)->buffer))
+         || !overlay_arrow_in_current_buffer_p ()))
     {
       int this_scroll_margin;
       struct glyph_row *row = NULL;
@@ -12786,8 +12939,7 @@ try_window_id (w)
     GIVE_UP (10);
 
   /* Can use this if overlay arrow position and or string have changed.  */
-  if (!EQ (last_arrow_position, COERCE_MARKER (Voverlay_arrow_position))
-      || !EQ (last_arrow_string, Voverlay_arrow_string))
+  if (overlay_arrows_changed_p ())
     GIVE_UP (12);
 
 
@@ -13724,14 +13876,15 @@ usage: (trace-to-stderr STRING &rest OBJECTS)  */)
    arrow.  Only used for non-window-redisplay windows.  */
 
 static struct glyph_row *
-get_overlay_arrow_glyph_row (w)
+get_overlay_arrow_glyph_row (w, overlay_arrow_string)
      struct window *w;
+     Lisp_Object overlay_arrow_string;
 {
   struct frame *f = XFRAME (WINDOW_FRAME (w));
   struct buffer *buffer = XBUFFER (w->buffer);
   struct buffer *old = current_buffer;
-  const unsigned char *arrow_string = SDATA (Voverlay_arrow_string);
-  int arrow_len = SCHARS (Voverlay_arrow_string);
+  const unsigned char *arrow_string = SDATA (overlay_arrow_string);
+  int arrow_len = SCHARS (overlay_arrow_string);
   const unsigned char *arrow_end = arrow_string + arrow_len;
   const unsigned char *p;
   struct it it;
@@ -13758,7 +13911,7 @@ get_overlay_arrow_glyph_row (w)
 
       /* Get its face.  */
       ilisp = make_number (p - arrow_string);
-      face = Fget_text_property (ilisp, Qface, Voverlay_arrow_string);
+      face = Fget_text_property (ilisp, Qface, overlay_arrow_string);
       it.face_id = compute_char_face (f, it.c, face);
 
       /* Compute its width, get its glyphs.  */
@@ -14197,6 +14350,8 @@ display_line (it)
      struct it *it;
 {
   struct glyph_row *row = it->glyph_row;
+  int overlay_arrow_bitmap;
+  Lisp_Object overlay_arrow_string;
 
   /* We always start displaying at hpos zero even if hscrolled.  */
   xassert (it->hpos == 0 && it->current_x == 0);
@@ -14592,17 +14747,16 @@ display_line (it)
      mark this glyph row as the one containing the overlay arrow.
      This is clearly a mess with variable size fonts.  It would be
      better to let it be displayed like cursors under X.  */
-  if (MARKERP (Voverlay_arrow_position)
-      && current_buffer == XMARKER (Voverlay_arrow_position)->buffer
-      && (MATRIX_ROW_START_CHARPOS (row)
-         == marker_position (Voverlay_arrow_position))
-      && STRINGP (Voverlay_arrow_string)
-      && ! overlay_arrow_seen)
+  if (! overlay_arrow_seen
+      && (overlay_arrow_string
+           = overlay_arrow_at_row (it->f, row, &overlay_arrow_bitmap),
+         !NILP (overlay_arrow_string)))
     {
       /* Overlay arrow in window redisplay is a fringe bitmap.  */
       if (!FRAME_WINDOW_P (it->f))
        {
-         struct glyph_row *arrow_row = get_overlay_arrow_glyph_row (it->w);
+         struct glyph_row *arrow_row
+           = get_overlay_arrow_glyph_row (it->w, overlay_arrow_string);
          struct glyph *glyph = arrow_row->glyphs[TEXT_AREA];
          struct glyph *arrow_end = glyph + arrow_row->used[TEXT_AREA];
          struct glyph *p = row->glyphs[TEXT_AREA];
@@ -14626,6 +14780,7 @@ display_line (it)
        }
 
       overlay_arrow_seen = 1;
+      it->w->overlay_arrow_bitmap = overlay_arrow_bitmap;
       row->overlay_arrow_p = 1;
     }
 
@@ -17707,6 +17862,9 @@ produce_image_glyph (it)
   if (it->image_id < 0)
     {
       /* Fringe bitmap.  */
+      it->ascent = it->phys_ascent = 0;
+      it->descent = it->phys_descent = 0;
+      it->pixel_width = 0;
       it->nglyphs = 0;
       return;
     }
@@ -21433,10 +21591,15 @@ syms_of_xdisp ()
   list_of_error = Fcons (intern ("error"), Qnil);
   staticpro (&list_of_error);
 
-  last_arrow_position = Qnil;
-  last_arrow_string = Qnil;
-  staticpro (&last_arrow_position);
-  staticpro (&last_arrow_string);
+  Qlast_arrow_position = intern ("last-arrow-position");
+  staticpro (&Qlast_arrow_position);
+  Qlast_arrow_string = intern ("last-arrow-string");
+  staticpro (&Qlast_arrow_string);
+
+  Qoverlay_arrow_string = intern ("overlay-arrow-string");
+  staticpro (&Qoverlay_arrow_string);
+  Qoverlay_arrow_bitmap = intern ("overlay-arrow-bitmap");
+  staticpro (&Qoverlay_arrow_bitmap);
 
   echo_buffer[0] = echo_buffer[1] = Qnil;
   staticpro (&echo_buffer[0]);
@@ -21500,9 +21663,17 @@ See also `overlay-arrow-string'.  */);
   Voverlay_arrow_position = Qnil;
 
   DEFVAR_LISP ("overlay-arrow-string", &Voverlay_arrow_string,
-    doc: /* String to display as an arrow.  See also `overlay-arrow-position'.  */);
+    doc: /* String to display as an arrow in non-window frames.
+See also `overlay-arrow-position'.  */);
   Voverlay_arrow_string = Qnil;
 
+  DEFVAR_LISP ("overlay-arrow-variable-list", &Voverlay_arrow_variable_list,
+    doc: /* List of variables (symbols) which hold markers for overlay arrows.
+The symbols on this list are examined during redisplay to determine
+where to display overlay arrows.  */);
+  Voverlay_arrow_variable_list
+    = Fcons (intern ("overlay-arrow-position"), Qnil);
+
   DEFVAR_INT ("scroll-step", &scroll_step,
     doc: /* *The number of lines to try scrolling a window by when point moves out.
 If that fails to bring point back on frame, point is centered instead.
index 9f21cc9..b2b16de 100644 (file)
@@ -3762,8 +3762,17 @@ If omitted or nil, that stands for the selected frame's display.  */)
 {
   struct x_display_info *dpyinfo = check_x_display_info (display);
 
-  return make_number (DisplayCells (dpyinfo->display,
-                                   XScreenNumberOfScreen (dpyinfo->screen)));
+  int nr_planes = DisplayPlanes (dpyinfo->display,
+                                 XScreenNumberOfScreen (dpyinfo->screen));
+
+  /* Truncate nr_planes to 24 to avoid integer overflow.
+     Some displays says 32, but only 24 bits are actually significant.
+     There are only very few and rare video cards that have more than
+     24 significant bits.  Also 24 bits is more than 16 million colors,
+     it "should be enough for everyone".  */
+  if (nr_planes > 24) nr_planes = 24;
+
+  return make_number (1 << nr_planes);
 }
 
 DEFUN ("x-server-max-request-size", Fx_server_max_request_size,