1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-01 11:14:55 +00:00

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
This commit is contained in:
Karoly Lorentey 2004-10-10 16:41:56 +00:00
commit d914383aad
37 changed files with 684 additions and 149 deletions

View File

@ -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

147
configure vendored
View File

@ -12130,6 +12130,153 @@ fi
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

View File

@ -2313,6 +2313,9 @@ if test "${with_carbon}" != "no"; then
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

View File

@ -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

View File

@ -98,6 +98,11 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
* 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'
@ -1166,12 +1171,23 @@ to new-kill-line, these commands now report:
- C-h w and C-h f new-kill-line reports:
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'
@ -2517,10 +2533,12 @@ If either property is not set, the default `overlay-arrow-string' or
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

View File

@ -17,7 +17,7 @@ Tapez C-x C-c (deux caract
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 @@ touche META, EDIT ou ALT).
>> 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 @@ avant la position courante du curseur.
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 @@ espaces, les effacent (vous ne pouvez donc pas r
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 @@ sauvegardez, Emacs garde le fichier original sous un nom modifi
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 @@ l'
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 @@ non.
* 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 @@ param
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 @@ zone d'
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 @@ Emacs poss
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 @@ haut dans le texte, faites plut
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

View File

@ -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.

View File

@ -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 @@ paragraph of it that point is in, preserving the comment's indentation
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 @@ and initial semicolons."
;; 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 @@ means don't indent that line."
(provide 'lisp-mode)
;;; arch-tag: 414c7f93-c245-4b77-8ed5-ed05ef7ff1bf
;; arch-tag: 414c7f93-c245-4b77-8ed5-ed05ef7ff1bf
;;; lisp-mode.el ends here

View File

@ -1254,8 +1254,8 @@ might return the position of the end of the line."
(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.

View File

@ -234,6 +234,13 @@ we will act as though we couldn't find a full name in the address."
: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 @@ Unless NO-REPLACE is true, at each of the positions in LIST-SYMBOL
"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 @@ consing a string.)"
(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))

View File

@ -1229,10 +1229,10 @@ where they were found."
(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 @@ where they were found."
(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 @@ where they were found."
(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

View File

@ -2664,5 +2664,132 @@ The properties used on SYMBOL are `composefunc', `sendfunc',
(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

View File

@ -404,11 +404,11 @@ Place a dired-like listing on the front;
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 @@ is visible (and the real data of the buffer is hidden)."
(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 @@ is visible (and the real data of the buffer is hidden)."
;; 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))

View File

@ -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 @@ This is relevant for filling. See also `sentence-end-without-period'
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 @@ For example, a sentence in Thai text ends with double space but
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 @@ and `sentence-end-without-space'. The default value specifies
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)}]*"

View File

@ -727,14 +727,9 @@ This follows the rule [28] in the XML specifications."
(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))

View File

@ -4009,7 +4009,7 @@ the @dfn{else-part}, for the case when the true-or-false-test returns
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 @@ beginning.
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

View File

@ -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.

View File

@ -16,6 +16,7 @@ that Emacs presents to the user.
* 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 @@ symbols. If it matches the first few elements in a warning type, then
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

View File

@ -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 @@ an @code{invalid-regexp} error is signaled.
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 @@ deciphered as follows:
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,23 +1698,25 @@ whitespace or starting with a form feed (after its left margin).
@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:
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.)
@example
"[.?!][]\"')@}]*\\($\\| $\\|\t\\|@ @ \\)[ \t\n]*"
@end example
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.
For a detailed explanation of this regular expression, see @ref{Regexp
Example}.
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
@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
@end ignore

View File

@ -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 @@ the text around point.
@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.

View File

@ -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>

View File

@ -21981,7 +21981,7 @@ back on.
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)}).

View File

@ -1391,48 +1391,46 @@ appointment list with @kbd{M-x appt-delete}.
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

View File

@ -2858,7 +2858,7 @@ or @key{DEL} to scroll backward. Various other commands are provided
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

View File

@ -14002,7 +14002,7 @@ Let's look at an example value of this variable first:
;; @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.}

View File

@ -840,7 +840,7 @@ effect of bringing up the Windows menu, it alters the meaning of
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

View File

@ -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 @@ repeat the search will then search for a string including that
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 @@ matches any character that does @emph{not} belong to category
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]*"

View File

@ -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.

View File

@ -352,6 +352,9 @@ Boston, MA 02111-1307, USA. */
/* 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 @@ Boston, MA 02111-1307, USA. */
/* 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. */

View File

@ -2633,7 +2633,7 @@ extern int x_intersect_rectangles P_ ((XRectangle *, XRectangle *,
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));

View File

@ -723,19 +723,35 @@ draw_row_fringe_bitmaps (w, row)
}
/* 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.
void
draw_window_fringes (w)
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.
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 @@ draw_window_fringes (w)
continue;
draw_row_fringe_bitmaps (w, row);
row->redraw_fringe_bitmaps_p = 0;
updated++;
}
return updated;
}
@ -951,11 +970,7 @@ update_window_fringes (w, force_p)
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

View File

@ -24,6 +24,7 @@ Boston, MA 02111-1307, USA. */
#include <stdio.h>
#include <errno.h>
#include <time.h>
#include <utime.h>
#include <dirent.h>
#include <sys/types.h>

View File

@ -1291,9 +1291,8 @@ x_update_window_end (w, cursor_on_p, mouse_face_overwritten_p)
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 @@ mac_get_window_bounds (f, inner, outer)
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 @@ x_set_offset (f, xoff, yoff, change_gravity)
{
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 @@ XTread_socket (sd, expected, hold_quit)
switch (GetEventClass (eventRef))
{
case kEventClassWindow:
if (GetEventKind (eventRef) == kEventWindowBoundsChanged)
if (GetEventKind (eventRef) == kEventWindowBoundsChanged)
{
WindowPtr window_ptr;
GetEventParameter(eventRef, kEventParamDirectObject,
@ -8431,7 +8430,7 @@ XTread_socket (sd, expected, hold_quit)
if (!is_emacs_window (window_ptr))
break;
f = mac_window_to_frame (window_ptr);
if ((er.modifiers & activeFlag) != 0)

View File

@ -99,7 +99,12 @@ Boston, MA 02111-1307, USA. */
#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

View File

@ -540,9 +540,8 @@ x_update_window_end (w, cursor_on_p, mouse_face_overwritten_p)
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;
}

View File

@ -12218,7 +12218,8 @@ redisplay_window (window, just_this_one_p)
{
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);
}

View File

@ -572,9 +572,8 @@ x_update_window_end (w, cursor_on_p, mouse_face_overwritten_p)
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;
}