changeset 83216:4f2f1522636c

Merged in changes from CVS trunk. Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-604 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-605 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-606 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-607 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-256
author Karoly Lorentey <lorentey@elte.hu>
date Sun, 10 Oct 2004 16:41:56 +0000
parents a9f716fbb9c6 (current diff) 1729414f0bae (diff)
children 8131adf4ac7b
files ChangeLog lisp/ChangeLog lisp/subr.el man/ChangeLog src/config.in src/dispextern.h src/fringe.c src/macterm.c src/w32term.c src/xdisp.c src/xterm.c
diffstat 37 files changed, 684 insertions(+), 149 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Oct 10 16:41:15 2004 +0000
+++ b/ChangeLog	Sun Oct 10 16:41:56 2004 +0000
@@ -1,3 +1,8 @@
+2004-10-08  Steven Tamm  <steventamm@mac.com>
+
+	* configure.in (HAVE_MALLOC_MALLOC_H): Test for malloc/malloc.h
+	* configure: Rebuild
+
 2004-10-06  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
 	* configure.in (HAVE_RANDOM_HEAPSTART): Change AC_MSG_ERROR to
--- a/configure	Sun Oct 10 16:41:15 2004 +0000
+++ b/configure	Sun Oct 10 16:41:56 2004 +0000
@@ -12130,6 +12130,153 @@
 
 fi
 
+if test "${ac_cv_header_malloc_malloc_h+set}" = set; then
+  echo "$as_me:$LINENO: checking for malloc/malloc.h" >&5
+echo $ECHO_N "checking for malloc/malloc.h... $ECHO_C" >&6
+if test "${ac_cv_header_malloc_malloc_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_malloc_malloc_h" >&5
+echo "${ECHO_T}$ac_cv_header_malloc_malloc_h" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking malloc/malloc.h usability" >&5
+echo $ECHO_N "checking malloc/malloc.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <malloc/malloc.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking malloc/malloc.h presence" >&5
+echo $ECHO_N "checking malloc/malloc.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <malloc/malloc.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: malloc/malloc.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: malloc/malloc.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: malloc/malloc.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: malloc/malloc.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: malloc/malloc.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: malloc/malloc.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: malloc/malloc.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: malloc/malloc.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: malloc/malloc.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: malloc/malloc.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: malloc/malloc.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: malloc/malloc.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: malloc/malloc.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: malloc/malloc.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: malloc/malloc.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: malloc/malloc.h: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for malloc/malloc.h" >&5
+echo $ECHO_N "checking for malloc/malloc.h... $ECHO_C" >&6
+if test "${ac_cv_header_malloc_malloc_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_malloc_malloc_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_malloc_malloc_h" >&5
+echo "${ECHO_T}$ac_cv_header_malloc_malloc_h" >&6
+
+fi
+if test $ac_cv_header_malloc_malloc_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MALLOC_MALLOC_H 1
+_ACEOF
+
+fi
+
+
+
 if test "${HAVE_CARBON}" = "yes"; then
 
 cat >>confdefs.h <<\_ACEOF
--- a/configure.in	Sun Oct 10 16:41:15 2004 +0000
+++ b/configure.in	Sun Oct 10 16:41:56 2004 +0000
@@ -2313,6 +2313,9 @@
   AC_CHECK_HEADER(Carbon/Carbon.h, HAVE_CARBON=yes)
 fi
 
+dnl Check for malloc/malloc.h on darwin
+AC_CHECK_HEADER(malloc/malloc.h, AC_DEFINE(HAVE_MALLOC_MALLOC_H, 1, [Define to 1 if you have the <malloc/malloc.h> header file.]))
+
 if test "${HAVE_CARBON}" = "yes"; then
   AC_DEFINE(HAVE_CARBON, 1, [Define to 1 if you are using the Carbon API on Mac OS X.])
   window_system=mac
--- a/etc/ChangeLog	Sun Oct 10 16:41:15 2004 +0000
+++ b/etc/ChangeLog	Sun Oct 10 16:41:56 2004 +0000
@@ -1,3 +1,7 @@
+2004-10-08  Fr,Ai(Bd,Ai(Bric Bothamy  <frederic.bothamy@free.fr>  (tiny change)
+
+	* TUTORIAL.fr: Minor wording fix.
+
 2004-10-04  Luc Teirlinck  <teirllm@auburn.edu>
 
 	* enriched.doc: Update for new bindings of `set-left-margin' and
--- a/etc/NEWS	Sun Oct 10 16:41:15 2004 +0000
+++ b/etc/NEWS	Sun Oct 10 16:41:56 2004 +0000
@@ -99,6 +99,11 @@
 * Changes in Emacs 21.4
 
 +++
+** New functions `make-progress-reporter', `progress-reporter-update',
+`progress-reporter-force-update' and `progress-reporter-done' provide
+a simple and efficient way of printing progress messages to the user.
+
++++
 ** In Enriched mode, `set-left-margin' and `set-right-margin' are now
 by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
 and `C-c C-r'.
@@ -1167,12 +1172,23 @@
   new-kill-line is on C-k
 
 +++
+** Vertical scrolling is now possible within incremental search.
+To enable this feature, customize the new user option
+`isearch-allow-scroll'.  User written commands which satisfy stringent
+constraints can be marked as "scrolling commands".  See the Emacs manual
+for details.
+
++++
 ** C-w in incremental search now grabs either a character or a word,
 making the decision in a heuristic way.  This new job is done by the
 command `isearch-yank-word-or-char'.  To restore the old behavior,
 bind C-w to `isearch-yank-word' in `isearch-mode-map'.
 
 +++
+** C-y in incremental search now grabs the next line if point is already
+at the end of a line.
+
++++
 ** C-M-w deletes and C-M-y grabs a character in isearch mode.
 Another method to grab a character is to enter the minibuffer by `M-e'
 and to type `C-f' at the end of the search string in the minibuffer.
@@ -2517,10 +2533,12 @@
 line in current buffer, or if optional buffer position is given, line
 number of corresponding line in current buffer.
 
++++
 ** The default value of `sentence-end' is now defined using the new
 variable `sentence-end-without-space' which contains such characters
 that end a sentence without following spaces.
 
++++
 ** The function `sentence-end' should be used to obtain the value of
 the variable `sentence-end'.  If the variable `sentence-end' is nil,
 then this function returns the regexp constructed from the variables
--- a/etc/TUTORIAL.fr	Sun Oct 10 16:41:15 2004 +0000
+++ b/etc/TUTORIAL.fr	Sun Oct 10 16:41:56 2004 +0000
@@ -17,7 +17,7 @@
 Dans ce didacticiel, les caractères ">>" en marge gauche indiquent les
 directions à suivre pour essayer une commande. Ainsi :
 <<Lignes blanches insérées après cette ligne par help-with-tutorial>>
-[Centre de page deliberéement vide. Le texte continue ci-dessous.]
+[Centre de page delibérément vide. Le texte continue ci-dessous.]
 >>  Tapez C-v (Voir l'écran suivant) pour passer à l'écran suivant
     (faites-le, pressez la touche CTRL tout en pressant la touche v).
     À partir de maintenant, vous devrez le faire à chaque fois que
@@ -36,7 +36,7 @@
 >>  Faites M-v, puis C-v plusieurs fois.
 
 Si votre terminal en dispose, vous pouvez également utiliser les
-touches PgUp et PgDn pour monter ou descendre d'un écran, bien les
+touches PgUp et PgDn pour monter ou descendre d'un écran, bien que les
 combinaisons C-v et M-v soient plus efficaces.
 
 * RÉSUMÉ
@@ -347,7 +347,7 @@
 Lorsqu'une ligne de texte devient trop longue pour tenir sur une seule
 ligne de l'écran, elle se « continue » sur une deuxième ligne
 d'écran. Une barre de fraction inverse (« \ ») ou, si vous utilisez un
-environnement grapgique, une petite flèche recourbée, sur la marge
+environnement graphique, une petite flèche recourbée, sur la marge
 droite indique une ligne qui se poursuit sur la ligne suivante.
 
 >> Insérez du texte jusqu'à atteindre la marge droite et continuez
@@ -423,7 +423,7 @@
 Notez qu'un simple C-k supprime le contenu de la ligne et qu'un second
 détruit la ligne elle-même, ce qui fait remonter toutes les lignes
 suivantes. C-k traite son paramètre numérique d'une façon spéciale :
-il détruit ce nombre de lignes ET leurs contenus. Ce n'est pas une
+il détruit ce nombre de lignes ET leur contenu. Ce n'est pas une
 simple répétition : C-u 2 C-k détruit deux lignes et leurs Newlines
 alors que taper deux fois C-k n'aurait pas le même effet.
 
@@ -523,7 +523,7 @@
 cas où vous décideriez ensuite d'annuler vos modifications.
 
 Si vous examinez le bas de l'écran, vous verrez une ligne qui commence
-et finit par des tirets et débute par « --:-- TUTORIAL.fr » ou quelque
+et finit par des tirets et débute par « -1:-- TUTORIAL.fr » ou quelque
 chose comme ça. Cette partie de l'écran montre normalement le nom du
 fichier que vous êtes en train de visiter. Pour l'instant, vous
 visitez un fichier appelé « TUTORIAL.fr », qui est votre copie
@@ -584,7 +584,7 @@
 encore. C'est ainsi que l'on crée un fichier avec Emacs : on trouve le
 fichier, qui démarre vide, puis on insère du texte. Lorsque l'on
 demande à « sauvegarder » le fichier, Emacs crée alors vraiment le
-fichier avec le texte que l'on a inséré. À partir de ce moment là,
+fichier avec le texte que l'on a inséré. À partir de ce moment-là,
 vous pouvez considérer que vous éditez un fichier déjà existant.
 
 
@@ -666,10 +666,10 @@
 * EXTENSION DU JEU DE COMMANDES
 -------------------------------
 
-Il y bien plus de commandes Emacs qu'il ne serait possible d'en créer
-avec tous les caractères de contrôle et les caractères Meta. Emacs
-contourne ce problème à l'aide de la commande X (eXtension). Celle-ci
-se présente sous deux déclinaisons :
+Il y a bien plus de commandes Emacs qu'il ne serait possible d'en
+créer avec tous les caractères de contrôle et Meta. Emacs contourne ce
+problème à l'aide de la commande X (eXtension). Celle-ci se présente
+sous deux déclinaisons :
 
 	C-x	eXtension caractère, suivie d'un seul caractère.
 	M-x	eXtension d'une commande nommée, suivie d'un nom long.
@@ -742,7 +742,7 @@
 
 Lorsque vous avez modifié un fichier, mais que vous ne l'avez pas
 encore sauvegardé, ces modifications pourraient être perdues si votre
-système se plantait. Pour vous protéger ce de problème, Emacs écrit
+système se plantait. Pour vous protéger de ce problème, Emacs écrit
 périodiquement un fichier de « sauvegarde automatique » pour chaque
 fichier en cours d'édition. Le nom de ce fichier commence et se
 termine par un # : si, par exemple, votre fichier s'appelle
@@ -772,14 +772,14 @@
 La ligne placée immédiatement au dessus de la zone d'écho s'appelle la
 « ligne de mode ». Elle affiche quelque chose comme ça :
 
---:**  TUTORIAL.fr          (Fundamental)--L752--67%----------------
+-1:**  TUTORIAL.fr          (Fundamental)--L752--67%----------------
 
 Cette ligne donne des informations sur l'état d'Emacs et sur le texte
 que vous êtes en train d'éditer.
 
 Vous savez déjà ce que signifie le nom de fichier -- c'est celui que
 vous avez chargé.  -NN%-- indique votre position actuelle dans le
-texte ; cela signifie que NN pourcent du texte se trouve au dessus du
+texte ; cela signifie que NN pour cent du texte se trouve au dessus du
 sommet de l'écran. Si le début du fichier est sur l'écran, il
 s'affichera --Top-- et non --00%--.  Si le bas du texte est sur
 l'écran, il s'affichera --Bot--. Si tout le texte tient dans l'écran,
@@ -802,7 +802,7 @@
 prévus pour éditer différents langages et/ou types de texte (mode
 Lisp, mode Text, etc). À tout instant, il n'y a qu'un seul mode majeur
 actif et son nom se trouve toujours dans la ligne de mode, à l'endroit
-ou « Fundamental » se trouve actuellement.
+où « Fundamental » se trouve actuellement.
 
 Chaque mode majeur modifie le comportement de quelques commandes. Il
 existe, par exemple, des commandes pour créer des commentaires dans un
@@ -940,7 +940,7 @@
 C-s s'applique également à C-r, sauf que la direction de la recherche
 est inversée.
 
-* FENETRES MULTIPLES
+* FENÊTRES MULTIPLES
 --------------------
 
 L'une des caractéristiques les plus agréables d'Emacs est que vous
--- a/lisp/ChangeLog	Sun Oct 10 16:41:15 2004 +0000
+++ b/lisp/ChangeLog	Sun Oct 10 16:41:56 2004 +0000
@@ -1,3 +1,48 @@
+2004-10-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* textmodes/paragraphs.el (sentence-end-double-space)
+	(sentence-end-without-period, sentence-end-without-space)
+	(sentence-end): Doc fixes.
+
+2004-10-08  Peter Seibel  <peter@javamonkey.com>  (tiny change)
+
+	* emacs-lisp/lisp-mode.el (lisp-fill-paragraph): Change
+	paragraph-start regexp so we don't fill code starting with #'(
+
+2004-10-08  Sebastien Kirche  <seki@seki.fr>  (tiny change)
+
+	* mail/mail-extr.el (mail-extr-ignore-realname-equals-mailbox-name):
+	New defcustom.
+	(extract-address-components): Use it.
+
+2004-10-08  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+	* subr.el (make-progress-reporter, progress-reporter-update)
+	(progress-reporter-force-update, progress-reporter-do-update)
+	(progress-reporter-done): New functions.
+
+	* tar-mode.el (tar-summarize-buffer): Use progress reporter.
+
+	* progmodes/etags.el (etags-tags-completion-table): Use progress
+	reporter.
+	(etags-tags-apropos): Likewise.
+
+2004-10-08  Alan Mackenzie  <acm@muc.de>
+
+	* isearch.el (isearch-yank-line): C-y yanks to next EOL, not end
+	of current line.
+
+2004-10-08  Masatake YAMATO  <jet@gyve.org>
+
+	* server.el (server-process-filter): Wrap `process-send-region'
+	by `condition-case' to guard the case when the pipe to PROC is
+	closed.
+
+2004-10-07  Mark A. Hershberger  <mah@everybody.org>
+
+	* xml.el (xml-substitute-special): Limit handling of external
+	entities.
+
 2004-10-06  Nick Roberts  <nickrob@snap.net.nz>
 
 	* progmodes/gdb-ui.el (gdb-ann3): (Re-)initialise gdb-input-queue.
--- a/lisp/emacs-lisp/lisp-mode.el	Sun Oct 10 16:41:15 2004 +0000
+++ b/lisp/emacs-lisp/lisp-mode.el	Sun Oct 10 16:41:56 2004 +0000
@@ -1,6 +1,7 @@
 ;;; lisp-mode.el --- Lisp mode, and its idiosyncratic commands
 
-;; Copyright (C) 1985,86,1999,2000,01,03,2004  Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1999, 2000, 2001, 2003, 2004
+;;           Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: lisp, languages
@@ -1153,7 +1154,8 @@
 and initial semicolons."
   (interactive "P")
   (or (fill-comment-paragraph justify)
-      ;; Point is on a program line (a line no comment); we are interested
+      ;; Since fill-comment-paragraph returned nil, that means we're not in
+      ;; a comment: Point is on a program line; we are interested
       ;; particularly in docstring lines.
       ;;
       ;; We bind `paragraph-start' and `paragraph-separate' temporarily.  They
@@ -1182,7 +1184,7 @@
       ;; The `fill-column' is temporarily bound to
       ;; `emacs-lisp-docstring-fill-column' if that value is an integer.
       (let ((paragraph-start (concat paragraph-start
-				     "\\|\\s-*\\([\(;:\"]\\|`\(\\)"))
+				     "\\|\\s-*\\([(;:\"]\\|`(\\|#'(\\)"))
 	    (paragraph-separate
 	     (concat paragraph-separate "\\|\\s-*\".*[,\\.]$"))
             (fill-column (if (integerp emacs-lisp-docstring-fill-column)
@@ -1227,5 +1229,5 @@
 
 (provide 'lisp-mode)
 
-;;; arch-tag: 414c7f93-c245-4b77-8ed5-ed05ef7ff1bf
+;; arch-tag: 414c7f93-c245-4b77-8ed5-ed05ef7ff1bf
 ;;; lisp-mode.el ends here
--- a/lisp/isearch.el	Sun Oct 10 16:41:15 2004 +0000
+++ b/lisp/isearch.el	Sun Oct 10 16:41:56 2004 +0000
@@ -1254,8 +1254,8 @@
 (defun isearch-yank-line ()
   "Pull rest of line from buffer into search string."
   (interactive)
-  (isearch-yank-internal 'line-end-position))
-
+  (isearch-yank-internal
+   (lambda () (line-end-position (if (eolp) 2 1)))))
 
 (defun isearch-search-and-update ()
   ;; Do the search and update the display.
--- a/lisp/mail/mail-extr.el	Sun Oct 10 16:41:15 2004 +0000
+++ b/lisp/mail/mail-extr.el	Sun Oct 10 16:41:56 2004 +0000
@@ -234,6 +234,13 @@
   :version "21.4"
   :group 'mail-extr)
 
+(defcustom mail-extr-ignore-realname-equals-mailbox-name t
+"*Whether to ignore a name that is equal to the mailbox name.
+If true, then when the address is like \"Single <single@address.com>\"
+we will act as though we couldn't find a full name in the address."
+  :type 'boolean
+  :group 'mail-extr)
+
 ;; Matches a leading title that is not part of the name (does not
 ;; contribute to uniquely identifying the person).
 (defcustom mail-extr-full-name-prefixes
@@ -694,7 +701,7 @@
   "Given an RFC-822 address ADDRESS, extract full name and canonical address.
 Returns a list of the form (FULL-NAME CANONICAL-ADDRESS).
 If no name can be extracted, FULL-NAME will be nil.  Also see
-`mail-extr-ignore-single-names'.
+`mail-extr-ignore-single-names' and `mail-extr-ignore-realname-equals-mailbox-name'.
 
 If the optional argument ALL is non-nil, then ADDRESS can contain zero
 or more recipients, separated by commas, and we return a list of
@@ -1404,8 +1411,9 @@
 		    (setq names-match-flag nil))
 		(setq i (1+ i)))
 	      (delete-region (+ (point-min) buffer-length) (point-max))
-	      (if names-match-flag
-		  (narrow-to-region (point) (point)))))
+	      (and names-match-flag 
+			   mail-extr-ignore-realname-equals-mailbox-name
+			   (narrow-to-region (point) (point)))))
 
 	  ;; Nuke name if it's just one word.
 	  (goto-char (point-min))
--- a/lisp/progmodes/etags.el	Sun Oct 10 16:41:15 2004 +0000
+++ b/lisp/progmodes/etags.el	Sun Oct 10 16:41:56 2004 +0000
@@ -1229,10 +1229,10 @@
 
 (defun etags-tags-completion-table ()
   (let ((table (make-vector 511 0))
-	(point-max (/ (float (point-max)) 100.0))
-	(msg-fmt (format 
-		  "Making tags completion table for %s...%%d%%%%"
-		  buffer-file-name)))
+	(progress-reporter
+	 (make-progress-reporter
+	  (format "Making tags completion table for %s..." buffer-file-name)
+	  (point-min) (point-max))))
     (save-excursion
       (goto-char (point-min))
       ;; This monster regexp matches an etags tag line.
@@ -1253,7 +1253,7 @@
 			   (buffer-substring (match-beginning 5) (match-end 5))
 			 ;; No explicit tag name.  Best guess.
 			 (buffer-substring (match-beginning 3) (match-end 3)))
-		  (message msg-fmt (/ (point) point-max)))
+		  (progress-reporter-update progress-reporter (point)))
 		table)))
     table))
 
@@ -1433,11 +1433,12 @@
     (tags-with-face 'highlight (princ buffer-file-name))
     (princ "':\n\n"))
   (goto-char (point-min))
-  (let ((point-max (/ (float (point-max)) 100.0)))
+  (let ((progress-reporter (make-progress-reporter
+			    (format "Making tags apropos buffer for `%s'..."
+				    string)
+			    (point-min) (point-max))))
     (while (re-search-forward string nil t)
-      (message "Making tags apropos buffer for `%s'...%d%%"
-	       string
-	       (/ (point) point-max))
+      (progress-reporter-update progress-reporter (point))
       (beginning-of-line)
 
       (let* ( ;; Get the local value in the tags table
--- a/lisp/subr.el	Sun Oct 10 16:41:15 2004 +0000
+++ b/lisp/subr.el	Sun Oct 10 16:41:56 2004 +0000
@@ -2664,5 +2664,132 @@
   (put symbol 'abortfunc (or abortfunc 'kill-buffer))
   (put symbol 'hookvar (or hookvar 'mail-send-hook)))
 
+;; Standardized progress reporting
+
+;; Progress reporter has the following structure:
+;;
+;;	(NEXT-UPDATE-VALUE . [NEXT-UPDATE-TIME
+;;			      MIN-VALUE
+;;			      MAX-VALUE
+;;			      MESSAGE
+;;			      MIN-CHANGE
+;;			      MIN-TIME])
+;;
+;; This weirdeness is for optimization reasons: we want
+;; `progress-reporter-update' to be as fast as possible, so
+;; `(car reporter)' is better than `(aref reporter 0)'.
+;;
+;; NEXT-UPDATE-TIME is a float.  While `float-time' loses a couple
+;; digits of precision, it doesn't really matter here.  On the other
+;; hand, it greatly simplifies the code.
+
+(defun make-progress-reporter (message min-value max-value
+				       &optional current-value
+				       min-change min-time)
+  "Return an object suitable for reporting operation progress with `progress-reporter-update'.
+
+MESSAGE is shown in the echo area.  When at least 1% of operation
+is complete, the exact percentage will be appended to the
+MESSAGE.  When you call `progress-reporter-done', word \"done\"
+is printed after the MESSAGE.  You can change MESSAGE of an
+existing progress reporter with `progress-reporter-force-update'.
+
+MIN-VALUE and MAX-VALUE designate starting (0% complete) and
+final (100% complete) states of operation.  The latter should be
+larger; if this is not the case, then simply negate all values.
+Optional CURRENT-VALUE specifies the progress by the moment you
+call this function.  You should omit it or set it to nil in most
+cases since it defaults to MIN-VALUE.
+
+Optional MIN-CHANGE determines the minimal change in percents to
+report (default is 1%.)  Optional MIN-TIME specifies the minimal
+time before echo area updates (default is 0.2 seconds.)  If
+`float-time' function is not present, then time is not tracked
+at all.  If OS is not capable of measuring fractions of seconds,
+then this parameter is effectively rounded up."
+
+  (unless min-time
+    (setq min-time 0.2))
+  (let ((reporter
+	 (cons min-value ;; Force a call to `message' now
+	       (vector (if (and (fboundp 'float-time)
+				(>= min-time 0.02))
+			   (float-time) nil)
+		       min-value
+		       max-value
+		       message
+		       (if min-change (max (min min-change 50) 1) 1)
+		       min-time))))
+    (progress-reporter-update reporter (or current-value min-value))
+    reporter))
+
+(defsubst progress-reporter-update (reporter value)
+  "Report progress of an operation in the echo area.
+However, if the change since last echo area update is too small
+or not enough time has passed, then do nothing (see
+`make-progress-reporter' for details).
+
+First parameter, REPORTER, should be the result of a call to
+`make-progress-reporter'.  Second, VALUE, determines the actual
+progress of operation; it must be between MIN-VALUE and MAX-VALUE
+as passed to `make-progress-reporter'.
+
+This function is very inexpensive, you may not bother how often
+you call it."
+  (when (>= value (car reporter))
+    (progress-reporter-do-update reporter value)))
+
+(defun progress-reporter-force-update (reporter value &optional new-message)
+  "Report progress of an operation in the echo area unconditionally.
+
+First two parameters are the same as for
+`progress-reporter-update'.  Optional NEW-MESSAGE allows you to
+change the displayed message."
+  (let ((parameters (cdr reporter)))
+    (when new-message
+      (aset parameters 3 new-message))
+    (when (aref parameters 0)
+      (aset parameters 0 (float-time)))
+    (progress-reporter-do-update reporter value)))
+
+(defun progress-reporter-do-update (reporter value)
+  (let* ((parameters   (cdr reporter))
+	 (min-value    (aref parameters 1))
+	 (max-value    (aref parameters 2))
+	 (one-percent  (/ (- max-value min-value) 100.0))
+	 (percentage   (truncate (/ (- value min-value) one-percent)))
+	 (update-time  (aref parameters 0))
+	 (current-time (float-time))
+	 (enough-time-passed
+	  ;; See if enough time has passed since the last update.
+	  (or (not update-time)
+	      (when (>= current-time update-time)
+		;; Calculate time for the next update
+		(aset parameters 0 (+ update-time (aref parameters 5)))))))
+    ;;
+    ;; Calculate NEXT-UPDATE-VALUE.  If we are not going to print
+    ;; message this time because not enough time has passed, then use
+    ;; 1 instead of MIN-CHANGE.  This makes delays between echo area
+    ;; updates closer to MIN-TIME.
+    (setcar reporter
+	    (min (+ min-value (* (+ percentage
+				    (if enough-time-passed
+					(aref parameters 4) ;; MIN-CHANGE
+				      1))
+				 one-percent))
+		 max-value))
+    (when (integerp value)
+      (setcar reporter (ceiling (car reporter))))
+    ;;
+    ;; Only print message if enough time has passed
+    (when enough-time-passed
+      (if (> percentage 0)
+	  (message "%s%d%%" (aref parameters 3) percentage)
+	(message "%s" (aref parameters 3))))))
+
+(defun progress-reporter-done (reporter)
+  "Print reporter's message followed by word \"done\" in echo area."
+  (message "%sdone" (aref (cdr reporter) 3)))
+
 ;; arch-tag: f7e0e6e5-70aa-4897-ae72-7a3511ec40bc
 ;;; subr.el ends here
--- a/lisp/tar-mode.el	Sun Oct 10 16:41:15 2004 +0000
+++ b/lisp/tar-mode.el	Sun Oct 10 16:41:56 2004 +0000
@@ -404,11 +404,11 @@
 then narrow to it, so that only that listing
 is visible (and the real data of the buffer is hidden)."
   (set-buffer-multibyte nil)
-  (message "Parsing tar file...")
   (let* ((result '())
 	 (pos (point-min))
-	 (bs (max 1 (- (buffer-size) 1024))) ; always 2+ empty blocks at end.
-	 (bs100 (max 1 (/ bs 100)))
+	 (progress-reporter
+	  (make-progress-reporter "Parsing tar file..."
+				  (point-min) (max 1 (- (buffer-size) 1024))))
 	 tokens)
     (while (and (<= (+ pos 512) (point-max))
 		(not (eq 'empty-tar-block
@@ -416,10 +416,7 @@
 			       (tar-header-block-tokenize
 				(buffer-substring pos (+ pos 512)))))))
       (setq pos (+ pos 512))
-      (message "Parsing tar file...%d%%"
-	       ;(/ (* pos 100) bs)   ; this gets round-off lossage
-	       (/ pos bs100)         ; this doesn't
-	       )
+      (progress-reporter-update progress-reporter pos)
       (if (eq (tar-header-link-type tokens) 20)
 	  ;; Foo.  There's an extra empty block after these.
 	  (setq pos (+ pos 512)))
@@ -446,7 +443,7 @@
     ;; A tar file should end with a block or two of nulls,
     ;; but let's not get a fatal error if it doesn't.
     (if (eq tokens 'empty-tar-block)
-	(message "Parsing tar file...done")
+	(progress-reporter-done progress-reporter)
       (message "Warning: premature EOF parsing tar file")))
   (save-excursion
     (goto-char (point-min))
--- a/lisp/textmodes/paragraphs.el	Sun Oct 10 16:41:15 2004 +0000
+++ b/lisp/textmodes/paragraphs.el	Sun Oct 10 16:41:56 2004 +0000
@@ -1,6 +1,6 @@
 ;;; paragraphs.el --- paragraph and sentence parsing
 
-;; Copyright (C) 1985, 86, 87, 91, 94, 95, 96, 1997, 1999, 2000, 2001
+;; Copyright (C) 1985, 86, 87, 91, 94, 95, 96, 1997, 1999, 2000, 2001, 2004
 ;;    Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
@@ -122,8 +122,8 @@
 and `colon-double-space'.
 
 This value is used by the function `sentence-end' to construct the
-regexp describing the end of a sentence, in case when the value of
-the variable `sentence-end' is nil.  See Info node `Sentences'."
+regexp describing the end of a sentence, when the value of the variable
+`sentence-end' is nil.  See Info node `(elisp)Standard Regexps'."
   :type 'boolean
   :group 'fill)
 
@@ -133,18 +133,18 @@
 without a period.
 
 This value is used by the function `sentence-end' to construct the
-regexp describing the end of a sentence, in case when the value of
-the variable `sentence-end' is nil.  See Info node `Sentences'."
+regexp describing the end of a sentence, when the value of the variable
+`sentence-end' is nil.  See Info node `(elisp)Standard Regexps'."
   :type 'boolean
   :group 'fill)
 
 (defcustom sentence-end-without-space
   "$B!#!%!)!*$A!##.#?#!$(0!$!%!)!*$(G!$!%!)!*(B"
-  "*String containing characters that end sentence without following spaces.
+  "*String of characters that end sentence without following spaces.
 
 This value is used by the function `sentence-end' to construct the
-regexp describing the end of a sentence, in case when the value of
-the variable `sentence-end' is nil.  See Info node `Sentences'."
+regexp describing the end of a sentence, when the value of the variable
+`sentence-end' is nil.  See Info node `(elisp)Standard Regexps'."
   :group 'paragraphs
   :type 'string)
 
@@ -169,7 +169,7 @@
 that in order to be recognized as the end of a sentence, the
 ending period, question mark, or exclamation point must be
 followed by two spaces, unless it's inside some sort of quotes or
-parenthesis.  See Info node `Sentences'."
+parenthesis.  See Info node `(elisp)Standard Regexps'."
   (or sentence-end
       (concat (if sentence-end-without-period "\\w  \\|")
               "\\([.?!][]\"'\xd0c9\x5397d)}]*"
--- a/lisp/xml.el	Sun Oct 10 16:41:15 2004 +0000
+++ b/lisp/xml.el	Sun Oct 10 16:41:56 2004 +0000
@@ -727,14 +727,9 @@
 				(match-string 1 this-part)))))))
 
 	(cond ((null children)
-	       (if (and (eq (length expansion) 1)
-			(stringp (cadr expansion)))
-		   (setq children (concat prev-part expansion))
-		 (if (stringp (car expansion))
-		     (setq children
-			   (list (concat prev-part (car expansion))
-				 (append (cdr expansion))))
-		   (setq children (append expansion prev-part)))))
+	       ;; FIXME: If we have an entity that expands into XML, this won't work.
+	       (setq children
+		     (concat prev-part expansion)))
 	      ((stringp children)
 	       (if (stringp expansion)
 		   (setq children (concat children prev-part expansion))
--- a/lispintro/emacs-lisp-intro.texi	Sun Oct 10 16:41:15 2004 +0000
+++ b/lispintro/emacs-lisp-intro.texi	Sun Oct 10 16:41:56 2004 +0000
@@ -4009,7 +4009,7 @@
 false.  When this happens, the second argument or then-part of the
 overall @code{if} expression is @emph{not} evaluated, but the third or
 else-part @emph{is} evaluated.  You might think of this as the cloudy
-day alternative for the decision `if it is warm and sunny, then go to
+day alternative for the decision ``if it is warm and sunny, then go to
 the beach, else read a book!''.
 
 The word ``else'' is not written in the Lisp code; the else-part of an
@@ -18025,7 +18025,7 @@
 
 Sometimes when you you write text, you duplicate words---as with ``you
 you'' near the beginning of this sentence.  I find that most
-frequently, I duplicate ``the'; hence, I call the function for
+frequently, I duplicate ``the''; hence, I call the function for
 detecting duplicated words, @code{the-the}.
 
 @need 1250
--- a/lispref/ChangeLog	Sun Oct 10 16:41:15 2004 +0000
+++ b/lispref/ChangeLog	Sun Oct 10 16:41:56 2004 +0000
@@ -1,3 +1,17 @@
+2004-10-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* text.texi (Filling): Add anchor for definition of
+	`sentence-end-double-space'.
+
+	* searching.texi (Regexp Example): Update description of how
+	Emacs currently recognizes the end of a sentence.
+	(Standard Regexps): Update definition of the variable
+	`sentence-end'.  Add definition of the function `sentence-end'.
+
+2004-10-08  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+	* display.texi (Progress): New node.
+
 2004-10-05  Kim F. Storm  <storm@cua.dk>
 
 	* display.texi (Fringe Bitmaps): Update fringe-bitmaps-at-pos.
--- a/lispref/display.texi	Sun Oct 10 16:41:15 2004 +0000
+++ b/lispref/display.texi	Sun Oct 10 16:41:56 2004 +0000
@@ -16,6 +16,7 @@
 * Truncation::          Folding or wrapping long text lines.
 * The Echo Area::       Where messages are displayed.
 * Warnings::            Displaying warning messages for the user.
+* Progress::            Informing user about progress of a long operation.
 * Invisible Text::      Hiding part of the buffer text.
 * Selective Display::   Hiding part of the buffer text (the old way).
 * Overlay Arrow::       Display of an arrow to indicate position.
@@ -533,6 +534,104 @@
 that warning is not logged.
 @end defopt
 
+@node Progress
+@section Reporting Operation Progress
+@cindex progress reporting
+
+When an operation can take a while to finish, you should inform the
+user about the progress it makes.  This way the user can estimate
+remaining time and clearly see that Emacs is busy working, not hung.
+
+Functions listed in this section provide simple and efficient way of
+reporting operation progress.  Here is a working example that does
+nothing useful:
+
+@example
+(let ((progress-reporter
+       (make-progress-reporter "Collecting some mana for Emacs..."
+                               0  500)))
+  (dotimes (k 500)
+    (sit-for 0.01)
+    (progress-reporter-update progress-reporter k))
+  (progress-reporter-done progress-reporter))
+@end example
+
+@defun make-progress-reporter message min-value max-value &optional current-value min-change min-time
+This function creates a progress reporter---the object you will use as
+an argument for all other functions listed here.  The idea is to
+precompute as much data as possible to make progress reporting very
+fast.
+
+The @var{message} will be displayed in the echo area, followed by
+progress percentage.  @var{message} is treated as a simple string.  If
+you need it to depend on a filename, for instance, use @code{format}
+before calling this function.
+
+@var{min-value} and @var{max-value} arguments stand for starting and
+final states of your operation.  For instance, if you scan a buffer,
+they should be the results of @code{point-min} and @code{point-max}
+correspondingly.  It is required that @var{max-value} is greater than
+@var{min-value}.  If you create progress reporter when some part of
+the operation has already been completed, then specify
+@var{current-value} argument.  But normally you should omit it or set
+it to @code{nil}---it will default to @var{min-value} then.
+
+Remaining arguments control the rate of echo area updates.  Progress
+reporter will wait for at least @var{min-change} more percents of the
+operation to be completed before printing next message.
+@var{min-time} specifies the minimum time in seconds to pass between
+successive prints.  It can be fractional.  Depending on Emacs and
+system capabilities, progress reporter may or may not respect this
+last argument or do it with varying precision.  Default value for
+@var{min-change} is 1 (one percent), for @var{min-time}---0.2
+(seconds.)
+
+This function calls @code{progress-reporter-update}, so the first
+message is printed immediately.
+@end defun
+
+@defun progress-reporter-update reporter value
+This function does the main work of reporting progress of your
+operation.  It print the message of @var{reporter} followed by
+progress percentage determined by @var{value}.  If percentage is zero,
+then it is not printed at all.
+
+@var{reporter} must be the result of a call to
+@code{make-progress-reporter}.  @var{value} specifies the current
+state of your operation and must be between @var{min-value} and
+@var{max-value} (inclusive) as passed to
+@code{make-progress-reporter}.  For instance, if you scan a buffer,
+then @var{value} should be the result of a call to @code{point}.
+
+This function respects @var{min-change} and @var{min-time} as passed
+to @code{make-progress-reporter} and so does not output new messages
+on every invocation.  It is thus very fast and normally you should not
+try to reduce the number of calls to it: resulting overhead will most
+likely negate your effort.
+@end defun
+
+@defun progress-reporter-force-update reporter value &optional new-message
+This function is similar to @code{progress-reporter-update} except
+that it prints a message in the echo area unconditionally.
+
+The first two arguments have the same meaning as for
+@code{progress-reporter-update}.  Optional @var{new-message} allows
+you to change the message of the @var{reporter}.  Since this functions
+always updates the echo area, such a change will be immediately
+presented to the user.
+@end defun
+
+@defun progress-reporter-done reporter
+This function should be called when the operation is finished.  It
+prints the message of @var{reporter} followed by word ``done'' in the
+echo area.
+
+You should always call this function and not hope for
+@code{progress-reporter-update} to print ``100%.''  Firstly, it may
+never print it, there are many good reasons for this not to happen.
+Secondly, ``done'' is more explicit.
+@end defun
+
 @node Invisible Text
 @section Invisible Text
 
--- a/lispref/searching.texi	Sun Oct 10 16:41:15 2004 +0000
+++ b/lispref/searching.texi	Sun Oct 10 16:41:56 2004 +0000
@@ -1,6 +1,6 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999
+@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2004
 @c   Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
 @setfilename ../info/searching
@@ -694,9 +694,9 @@
 
   Here is a complicated regexp which was formerly used by Emacs to
 recognize the end of a sentence together with any whitespace that
-follows.  It was used as the variable @code{sentence-end}.  (Its value
-nowadays contains alternatives for @samp{.}, @samp{?} and @samp{!} in
-other character sets.)
+follows.  (Nowadays Emacs uses a similar but more complex default
+regexp constructed by the function @code{sentence-end}.
+@xref{Standard Regexps}.)
 
   First, we show the regexp as a string in Lisp syntax to distinguish
 spaces from tab characters.  The string constant begins and ends with a
@@ -730,9 +730,9 @@
 The first part of the pattern is a character alternative that matches
 any one of three characters: period, question mark, and exclamation
 mark.  The match must begin with one of these three characters.  (This
-is the one point where the new value of @code{sentence-end} differs
-from the old.  The new value also lists sentence ending
-non-@acronym{ASCII} characters.)
+is one point where the new default regexp used by Emacs differs from
+the old.  The new value also allows some non-@acronym{ASCII}
+characters that end a sentence without any following whitespace.)
 
 @item []\"')@}]*
 The second part of the pattern matches any closing braces and quotation
@@ -1698,22 +1698,24 @@
 @end defvar
 
 @defvar sentence-end
-This is the regular expression describing the end of a sentence.  (All
-paragraph boundaries also end sentences, regardless.)  The (slightly
-simplified) default value is:
-
-@example
-"[.?!][]\"')@}]*\\($\\| $\\|\t\\|@ @ \\)[ \t\n]*"
-@end example
+If non-@code{nil}, the value should be a regular expression describing
+the end of a sentence, including the whitespace following the
+sentence.  (All paragraph boundaries also end sentences, regardless.)
 
-This means a period, question mark or exclamation mark (the actual
-default value also lists their alternatives in other character sets),
-followed optionally by closing parenthetical characters, followed by
-tabs, spaces or new lines.
+If the value is @code{nil}, the default, then the function
+@code{sentence-end} has to construct the regexp.  That is why you
+should always call the function @code{sentence-end} to obtain the
+regexp to be used to recognize the end of a sentence.
+@end defvar
 
-For a detailed explanation of this regular expression, see @ref{Regexp
-Example}.
-@end defvar
+@defun sentence-end
+This function returns the value of the variable @code{sentence-end},
+if non-@code{nil}.  Otherwise it returns a default value based on the
+values of the variables @code{sentence-end-double-space}
+(@pxref{Definition of sentence-end-double-space}),
+@code{sentence-end-without-period} and
+@code{sentence-end-without-space}.
+@end defun
 
 @ignore
    arch-tag: c2573ca2-18aa-4839-93b8-924043ef831f
--- a/lispref/text.texi	Sun Oct 10 16:41:15 2004 +0000
+++ b/lispref/text.texi	Sun Oct 10 16:41:56 2004 +0000
@@ -1,6 +1,7 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001
+@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999,
+@c 2000, 2001, 2004
 @c   Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
 @setfilename ../info/text
@@ -1448,6 +1449,7 @@
 @end defun
 
 @defopt sentence-end-double-space
+@anchor{Definition of sentence-end-double-space}
 If this variable is non-@code{nil}, a period followed by just one space
 does not count as the end of a sentence, and the filling functions
 avoid breaking the line at such a place.
--- a/man/ChangeLog	Sun Oct 10 16:41:15 2004 +0000
+++ b/man/ChangeLog	Sun Oct 10 16:41:56 2004 +0000
@@ -1,3 +1,21 @@
+2004-10-09  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* files.texi (Misc File Ops): View mode is a minor mode.
+
+2004-10-09  Juri Linkov  <juri@jurta.org>
+
+	* gnus.texi (Fancy Mail Splitting): Remove backslash in the
+	example of nnmail-split-fancy.
+
+2004-10-08  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+	* calendar.texi (iCalendar): Style changes.
+
+2004-10-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* search.texi (Regexps): The regexp described in the example is no
+	longer stored in the variable `sentence-end'.
+
 2004-10-06  Karl Berry  <karl@gnu.org>
 
 	* info.texi (@kbd{1}--@kbd{9}): no space around --, for
@@ -8,12 +26,14 @@
 	* building.texi (Starting GUD): Note that multiple debugging
 	sessions requires `gdb --fullname'.
 
+2004-10-05  Ulf Jasper  <ulf.jasper@web.de>
+
+	* calendar.texi (iCalendar): New section for a new package.
+
 2004-10-05  Karl Berry  <karl@gnu.org>
 
 	* info.texi: consistently use --- throughout, periods at end of
 	menu descriptions, and a couple typos.
-	From: Benno Schulenberg <benno@nietvergeten.nl>,
-	in bug-texinfo mail.
 
 2004-10-05  Luc Teirlinck  <teirllm@auburn.edu>
 
--- a/man/calc.texi	Sun Oct 10 16:41:15 2004 +0000
+++ b/man/calc.texi	Sun Oct 10 16:41:56 2004 +0000
@@ -21981,7 +21981,7 @@
 The most basic default simplification is the evaluation of functions.
 For example, @cite{2 + 3} is evaluated to @cite{5}, and @cite{@t{sqrt}(9)}
 is evaluated to @cite{3}.  Evaluation does not occur if the arguments
-to a function are somehow of the wrong type (@cite{@t{tan}([2,3,4])},
+to a function are somehow of the wrong type (@cite{@t{tan}([2,3,4])}),
 range (@cite{@t{tan}(90)}), or number (@cite{@t{tan}(3,5)}), or if the
 function name is not recognized (@cite{@t{f}(5)}), or if ``symbolic''
 mode (@pxref{Symbolic Mode}) prevents evaluation (@cite{@t{sqrt}(2)}).
--- a/man/calendar.texi	Sun Oct 10 16:41:15 2004 +0000
+++ b/man/calendar.texi	Sun Oct 10 16:41:56 2004 +0000
@@ -1391,48 +1391,46 @@
   The icalendar package aims at providing an implementation of the
 iCalendar standard, as defined in ``RFC 2445 -- Internet Calendaring and
 Scheduling Core Object Specification (iCalendar)''.  It provides a means
-for importing [iv]Calendar data into Emacs diary files and vice versa.
+for importing iCalendar (and the earlier vCalendar format) data into
+Emacs diary files and vice versa.
 
-  Importing should work correctly for ``ordinary'', i.e. non-recurring,
-events.  Recurring events may not be imported correctly, if they are
-imported at all.  Exporting of diary files into iCalendar files should
-work correctly for most diary entries.  Please note that
-@file{icalendar.el} is work in progress, so usage may evolve in future.
-
-@subsection Usage
+  Importing works for ``ordinary'' (i.e. non-recurring) events, but (at
+present) may not work correctly (if at all) for recurring events.
+Exporting of diary files into iCalendar files should work correctly for
+most diary entries.  Please note that @file{icalendar.el} is work in
+progress, so usage may evolve in future.
 
   To activate the package, use @code{(require 'icalendar)}.
 
 @findex icalendar-extract-ical-from-buffer
   The command @code{icalendar-extract-ical-from-buffer} extracts
 iCalendar data from the current buffer and adds it to your (default)
-diary file.  It can be used interactively, or for automatic extraction
-of iCalendar data; for example with the VM mail reader one could use:
+diary file.  This function is also suitable for automatic extraction of
+iCalendar data; for example with the Rmail mail client one could use:
 
 @example
-(add-hook 'vm-select-new-message-hook 'icalendar-extract-ical-from-buffer)
+(add-hook 'rmail-show-message-hook 'icalendar-extract-ical-from-buffer)
 @end example
 
 @findex icalendar-import-file
-  The function @code{icalendar-import-file} can be used
-non-interactively to import an iCalendar file.  @strong{Caution:} the
-contents of the target diary file are @emph{deleted} by default!  It is
-highly recommended to use a dedicated diary file for importing.  For
-example:
+  The command @code{icalendar-import-file} imports an iCalendar file.
+@strong{Caution:} the contents of the target diary file are
+@emph{deleted} by default!  It is highly recommended to use a dedicated
+diary file for importing.  For example:
 
 @example
 (icalendar-import-file "/here/is/calendar.ics" "/there/goes/ical-diary")
 @end example
 
 @noindent
-The import file can be added to the diary using an @code{#include}
-directive.  @xref{Fancy Diary Display,,, elisp, The Emacs Lisp Reference
-Manual}.
+You can use an @code{#include} directive to add the import file contents
+to the diary.  @xref{Fancy Diary Display,,, elisp, The Emacs Lisp
+Reference Manual}.
 
 @findex icalendar-convert-diary-to-ical
-  Use @code{icalendar-convert-diary-to-ical} to interactively export an
-Emacs diary file to iCalendar format.  @strong{Caution:} the contents of
-the target file are @emph{deleted} by default!
+  The command @code{icalendar-convert-diary-to-ical} exports an Emacs
+diary file to iCalendar format.  @strong{Caution:} the contents of the
+target file are @emph{deleted} by default!
 
 
 @node Daylight Savings
--- a/man/files.texi	Sun Oct 10 16:41:15 2004 +0000
+++ b/man/files.texi	Sun Oct 10 16:41:56 2004 +0000
@@ -2858,7 +2858,7 @@
 for moving around in the file, but none for changing it; type @kbd{?}
 while viewing for a list of them.  They are mostly the same as normal
 Emacs cursor motion commands.  To exit from viewing, type @kbd{q}.
-The commands for viewing are defined by a special major mode called View
+The commands for viewing are defined by a special minor mode called View
 mode.
 
   A related command, @kbd{M-x view-buffer}, views a buffer already present
--- a/man/gnus.texi	Sun Oct 10 16:41:15 2004 +0000
+++ b/man/gnus.texi	Sun Oct 10 16:41:56 2004 +0000
@@ -14002,7 +14002,7 @@
       ;; @r{the bugs- list, but allow cross-posting when the}
       ;; @r{message was really cross-posted.}
       (any "bugs-mypackage@@somewhere" "mypkg.bugs")
-      (any "mypackage@@somewhere\" - "bugs-mypackage" "mypkg.list")
+      (any "mypackage@@somewhere" - "bugs-mypackage" "mypkg.list")
       ;; @r{People@dots{}}
       (any "larsi@@ifi\\.uio\\.no" "people.Lars_Magne_Ingebrigtsen"))
    ;; @r{Unmatched mail goes to the catch all group.}
--- a/man/msdog.texi	Sun Oct 10 16:41:15 2004 +0000
+++ b/man/msdog.texi	Sun Oct 10 16:41:56 2004 +0000
@@ -840,7 +840,7 @@
 subsequent commands.  Many users find this frustrating.
 
 @vindex w32-pass-alt-to-system
-You can reenable Windows's default handling of tapping the @key{ALT} key
+You can re-enable Windows' default handling of tapping the @key{ALT} key
 by setting @code{w32-pass-alt-to-system} to a non-@code{nil} value.
 
 @ignore
--- a/man/search.texi	Sun Oct 10 16:41:15 2004 +0000
+++ b/man/search.texi	Sun Oct 10 16:41:56 2004 +0000
@@ -1,5 +1,5 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000, 2001
+@c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000, 2001, 2004
 @c   Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @node Search, Fixit, Display, Top
@@ -193,9 +193,11 @@
 character or word.
 
   @kbd{C-y} is similar to @kbd{C-w} but copies all the rest of the
-current line into the search string.  Both @kbd{C-y} and @kbd{C-w}
-convert the text they copy to lower case if the search is currently
-not case-sensitive; this is so the search remains case-insensitive.
+current line into the search string.  If point is already at the end
+of a line, it grabs the entire next line.  Both @kbd{C-y} and
+@kbd{C-w} convert the text they copy to lower case if the search is
+currently not case-sensitive; this is so the search remains
+case-insensitive.
 
   @kbd{C-M-w} and @kbd{C-M-y} modify the search string by only one
 character at a time: @kbd{C-M-w} deletes the last character from the
@@ -777,13 +779,13 @@
   The constructs that pertain to words and syntax are controlled by the
 setting of the syntax table (@pxref{Syntax}).
 
-  Here is a complicated regexp, stored in @code{sentence-end} and used
-by Emacs to recognize the end of a sentence together with any
-whitespace that follows.  We show its Lisp syntax to distinguish the
-spaces from the tab characters.  In Lisp syntax, the string constant
-begins and ends with a double-quote.  @samp{\"} stands for a
-double-quote as part of the regexp, @samp{\\} for a backslash as part
-of the regexp, @samp{\t} for a tab, and @samp{\n} for a newline.
+  Here is a complicated regexp.  It is a simplified version of the
+regexp that Emacs uses, by default, to recognize the end of a sentence
+together with any whitespace that follows.  We show its Lisp syntax to
+distinguish the spaces from the tab characters.  In Lisp syntax, the
+string constant begins and ends with a double-quote.  @samp{\"} stands
+for a double-quote as part of the regexp, @samp{\\} for a backslash as
+part of the regexp, @samp{\t} for a tab, and @samp{\n} for a newline.
 
 @example
 "[.?!][]\"')]*\\($\\| $\\|\t\\|  \\)[ \t\n]*"
--- a/src/ChangeLog	Sun Oct 10 16:41:15 2004 +0000
+++ b/src/ChangeLog	Sun Oct 10 16:41:56 2004 +0000
@@ -1,3 +1,27 @@
+2004-10-08  Steven Tamm  <steventamm@mac.com>
+
+	* config.in (HAVE_MALLOC_MALLOC_H): Regenerate
+	* macterm.c (mac_check_for_quit_char): Remove warning for using
+	NULL where 0 should be used
+	* unexmacosx.c: Use malloc/malloc.h on Tiger instead of
+	objc/malloc.h
+	* mac.c: Include time.h for Tiger compatibility
+
+2004-10-07  Kim F. Storm  <storm@cua.dk>
+
+	* xdisp.c (redisplay_window): Fix flicker on vertical line between
+	windows.  Update vertical line after drawing window fringes, but
+	only if actually drawing any bitmaps--or there is no fringe.
+
+	* xterm.c (x_update_window_end): Likewise.
+	* macterm.c (x_update_window_end): Likewise.
+	* w32term.c (x_update_window_end): Likewise.
+
+	* fringe.c (draw_window_fringes): Return value now indicates if
+	any fringe bitmaps were redrawn (or there are no fringes).
+
+	* dispextern.h (draw_window_fringes): Update prototype.
+
 2004-10-06  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
 	* macfns.c (mac_get_window_bounds): Add extern.
@@ -5,7 +29,7 @@
 
 	* macmenu.c (update_submenu_strings): Apply 2004-09-07 change for
 	xmenu.c (YAILOM).
-	
+
 	* macterm.c [!MAC_OSX]: Include Windows.h.
 	(front_emacs_window): Rename from mac_front_window.  All uses
 	changed.  Return the frontmost non-tooltip emacs window.
--- a/src/config.in	Sun Oct 10 16:41:15 2004 +0000
+++ b/src/config.in	Sun Oct 10 16:41:56 2004 +0000
@@ -352,6 +352,9 @@
 /* Define to 1 if you have the <maillock.h> header file. */
 #undef HAVE_MAILLOCK_H
 
+/* Define to 1 if you have the <malloc/malloc.h> header file. */
+#undef HAVE_MALLOC_MALLOC_H
+
 /* Define to 1 if you have the `mblen' function. */
 #undef HAVE_MBLEN
 
@@ -754,9 +757,9 @@
 /* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
    automatically deduced at run-time.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
+        STACK_DIRECTION > 0 => grows toward higher addresses
+        STACK_DIRECTION < 0 => grows toward lower addresses
+        STACK_DIRECTION = 0 => direction of growth unknown */
 #undef STACK_DIRECTION
 
 /* Define to 1 if you have the ANSI C header files. */
--- a/src/dispextern.h	Sun Oct 10 16:41:15 2004 +0000
+++ b/src/dispextern.h	Sun Oct 10 16:41:56 2004 +0000
@@ -2633,7 +2633,7 @@
 int lookup_fringe_bitmap (Lisp_Object);
 void draw_fringe_bitmap P_ ((struct window *, struct glyph_row *, int));
 void draw_row_fringe_bitmaps P_ ((struct window *, struct glyph_row *));
-void draw_window_fringes P_ ((struct window *));
+int draw_window_fringes P_ ((struct window *, int));
 int update_window_fringes P_ ((struct window *, int));
 void compute_fringe_widths P_ ((struct frame *, int));
 
--- a/src/fringe.c	Sun Oct 10 16:41:15 2004 +0000
+++ b/src/fringe.c	Sun Oct 10 16:41:56 2004 +0000
@@ -723,19 +723,35 @@
 }
 
 /* Draw the fringes of window W.  Only fringes for rows marked for
-   update in redraw_fringe_bitmaps_p are drawn.  */
+   update in redraw_fringe_bitmaps_p are drawn.
+
+   Return >0 if left or right fringe was redrawn in any way.
+
+   If NO_FRINGE is non-zero, also return >0 if either fringe has zero width.
 
-void
-draw_window_fringes (w)
+   A return value >0 indicates that the vertical line between windows
+   needs update (as it may be drawn in the fringe).
+*/
+
+int
+draw_window_fringes (w, no_fringe)
      struct window *w;
+     int no_fringe;
 {
   struct glyph_row *row;
   int yb = window_text_bottom_y (w);
   int nrows = w->current_matrix->nrows;
   int y = 0, rn;
+  int updated = 0;
 
   if (w->pseudo_window_p)
-    return;
+    return 0;
+
+  /* Must draw line if no fringe */
+  if (no_fringe
+      && (WINDOW_LEFT_FRINGE_WIDTH (w) == 0
+	  || WINDOW_RIGHT_FRINGE_WIDTH (w) == 0))
+    updated++;
 
   for (y = 0, rn = 0, row = w->current_matrix->rows;
        y < yb && rn < nrows;
@@ -745,7 +761,10 @@
 	continue;
       draw_row_fringe_bitmaps (w, row);
       row->redraw_fringe_bitmaps_p = 0;
+      updated++;
     }
+
+  return updated;
 }
 
 
@@ -951,11 +970,7 @@
    Typically, we add an equal amount (+/- 1 pixel) to each fringe,
    but a negative width value is taken literally (after negating it).
 
-   We never make the fringes narrower than specified.  It is planned
-   to make fringe bitmaps customizable and expandable, and at that
-   time, the user will typically specify the minimum number of pixels
-   needed for his bitmaps, so we shouldn't select anything less than
-   what is specified.
+   We never make the fringes narrower than specified.
 */
 
 void
--- a/src/mac.c	Sun Oct 10 16:41:15 2004 +0000
+++ b/src/mac.c	Sun Oct 10 16:41:56 2004 +0000
@@ -24,6 +24,7 @@
 
 #include <stdio.h>
 #include <errno.h>
+#include <time.h>
 #include <utime.h>
 #include <dirent.h>
 #include <sys/types.h>
--- a/src/macterm.c	Sun Oct 10 16:41:15 2004 +0000
+++ b/src/macterm.c	Sun Oct 10 16:41:56 2004 +0000
@@ -1291,9 +1291,8 @@
 				output_cursor.vpos,
 				output_cursor.x, output_cursor.y);
 
-      x_draw_vertical_border (w);
-
-      draw_window_fringes (w);
+      if (draw_window_fringes (w, 1))
+	x_draw_vertical_border (w);
 
       UNBLOCK_INPUT;
     }
@@ -5050,7 +5049,7 @@
   GetWindowBounds (FRAME_MAC_WINDOW (f), kWindowStructureRgn, outer);
 #else /* not TARGET_API_MAC_CARBON */
   RgnHandle region = NewRgn ();
-    
+
   GetWindowRegion (FRAME_MAC_WINDOW (f), kWindowContentRgn, region);
   *inner = (*region)->rgnBBox;
   GetWindowRegion (FRAME_MAC_WINDOW (f), kWindowStructureRgn, region);
@@ -5143,7 +5142,7 @@
   {
     Rect inner, outer, screen_rect, dummy;
     RgnHandle region = NewRgn ();
-    
+
     mac_get_window_bounds (f, &inner, &outer);
     f->x_pixels_diff = inner.left - outer.left;
     f->y_pixels_diff = inner.top - outer.top;
@@ -8114,7 +8113,7 @@
 	switch (GetEventClass (eventRef))
 	  {
 	  case kEventClassWindow:
-	    if (GetEventKind (eventRef) == kEventWindowBoundsChanged) 
+	    if (GetEventKind (eventRef) == kEventWindowBoundsChanged)
 	      {
 		WindowPtr window_ptr;
 		GetEventParameter(eventRef, kEventParamDirectObject,
@@ -8431,7 +8430,7 @@
 
 	    if (!is_emacs_window (window_ptr))
 	      break;
-	    
+
 	    f = mac_window_to_frame (window_ptr);
 
 	    if ((er.modifiers & activeFlag) != 0)
--- a/src/unexmacosx.c	Sun Oct 10 16:41:15 2004 +0000
+++ b/src/unexmacosx.c	Sun Oct 10 16:41:56 2004 +0000
@@ -99,7 +99,12 @@
 #if defined (__ppc__)
 #include <mach-o/ppc/reloc.h>
 #endif
+#if defined (HAVE_MALLOC_MALLOC_H)
+#include <malloc/malloc.h>
+#else
 #include <objc/malloc.h>
+#endif
+
 
 #define VERBOSE 1
 
--- a/src/w32term.c	Sun Oct 10 16:41:15 2004 +0000
+++ b/src/w32term.c	Sun Oct 10 16:41:56 2004 +0000
@@ -540,9 +540,8 @@
 				output_cursor.vpos,
 				output_cursor.x, output_cursor.y);
 
-      x_draw_vertical_border (w);
-
-      draw_window_fringes (w);
+      if (draw_window_fringes (w, 1))
+	x_draw_vertical_border (w);
 
       UNBLOCK_INPUT;
     }
--- a/src/xdisp.c	Sun Oct 10 16:41:15 2004 +0000
+++ b/src/xdisp.c	Sun Oct 10 16:41:56 2004 +0000
@@ -12218,7 +12218,8 @@
     {
       update_begin (f);
       BLOCK_INPUT;
-      draw_window_fringes (w);
+      if (draw_window_fringes (w, 1))
+	x_draw_vertical_border (w);
       UNBLOCK_INPUT;
       update_end (f);
     }
--- a/src/xterm.c	Sun Oct 10 16:41:15 2004 +0000
+++ b/src/xterm.c	Sun Oct 10 16:41:56 2004 +0000
@@ -572,9 +572,8 @@
 				output_cursor.vpos,
 				output_cursor.x, output_cursor.y);
 
-      x_draw_vertical_border (w);
-
-      draw_window_fringes (w);
+      if (draw_window_fringes (w, 1))
+	x_draw_vertical_border (w);
 
       UNBLOCK_INPUT;
     }