summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiles Bader <miles@gnu.org>2005-09-06 00:25:20 +0000
committerMiles Bader <miles@gnu.org>2005-09-06 00:25:20 +0000
commit621806aab200b6d9bc592471b55e8664aa3646f3 (patch)
tree03f0069816f1b8ca9f92532cb16abf6217dc7a94
parentd4cccb140682cfa548a8658f905764ceb4a38cb2 (diff)
parent4a2358e9b441957fee140ac981cea71720984e6f (diff)
downloademacs-621806aab200b6d9bc592471b55e8664aa3646f3.tar.gz
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-79
Merge from emacs--cvs-trunk--0 Patches applied: * emacs--cvs-trunk--0 (patch 519-530) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 106-111) - Merge from emacs--cvs-trunk--0 - Update from CVS
-rw-r--r--ChangeLog4
-rw-r--r--admin/ChangeLog9
-rw-r--r--admin/FOR-RELEASE16
-rw-r--r--admin/notes/years6
-rwxr-xr-xconfig.guess791
-rwxr-xr-xconfig.sub234
-rw-r--r--etc/ChangeLog16
-rw-r--r--etc/NEWS4
-rw-r--r--etc/PROBLEMS2
-rw-r--r--etc/emacsclient.148
-rw-r--r--etc/orgcard.ps967
-rw-r--r--etc/orgcard.tex13
-rw-r--r--lisp/ChangeLog479
-rw-r--r--lisp/ansi-color.el2
-rw-r--r--lisp/bs.el2
-rw-r--r--lisp/calendar/cal-bahai.el14
-rw-r--r--lisp/calendar/cal-china.el1
-rw-r--r--lisp/calendar/cal-coptic.el2
-rw-r--r--lisp/calendar/cal-french.el2
-rw-r--r--lisp/calendar/cal-hebrew.el4
-rw-r--r--lisp/calendar/cal-islam.el3
-rw-r--r--lisp/calendar/cal-iso.el2
-rw-r--r--lisp/calendar/cal-julian.el1
-rw-r--r--lisp/calendar/cal-mayan.el2
-rw-r--r--lisp/calendar/cal-menu.el2
-rw-r--r--lisp/calendar/cal-persia.el2
-rw-r--r--lisp/calendar/lunar.el1
-rw-r--r--lisp/calendar/solar.el1
-rw-r--r--lisp/cus-edit.el58
-rw-r--r--lisp/cus-theme.el5
-rw-r--r--lisp/custom.el61
-rw-r--r--lisp/diff-mode.el2
-rw-r--r--lisp/dired-x.el2
-rw-r--r--lisp/dired.el9
-rw-r--r--lisp/emacs-lisp/checkdoc.el5
-rw-r--r--lisp/emacs-lisp/lisp-mode.el7
-rw-r--r--lisp/emacs-lisp/lselect.el5
-rw-r--r--lisp/emacs-lisp/pp.el2
-rw-r--r--lisp/emacs-lisp/syntax.el2
-rw-r--r--lisp/emacs-lisp/tcover-ses.el3
-rw-r--r--lisp/emacs-lisp/tcover-unsafep.el2
-rw-r--r--lisp/emerge.el16
-rw-r--r--lisp/eshell/esh-arg.el6
-rw-r--r--lisp/eshell/esh-cmd.el14
-rw-r--r--lisp/eshell/esh-ext.el2
-rw-r--r--lisp/faces.el2
-rw-r--r--lisp/files.el103
-rw-r--r--lisp/find-lisp.el3
-rw-r--r--lisp/font-lock.el18
-rw-r--r--lisp/gnus/ChangeLog120
-rw-r--r--lisp/gnus/gnus-art.el9
-rw-r--r--lisp/gnus/gnus-fun.el4
-rw-r--r--lisp/gnus/gnus-msg.el31
-rw-r--r--lisp/gnus/gnus-spec.el1
-rw-r--r--lisp/gnus/gnus-sum.el3
-rw-r--r--lisp/gnus/gnus-util.el62
-rw-r--r--lisp/gnus/gnus.el63
-rw-r--r--lisp/gnus/message.el3
-rw-r--r--lisp/gnus/mm-bodies.el2
-rw-r--r--lisp/gnus/mm-decode.el2
-rw-r--r--lisp/gnus/mm-encode.el2
-rw-r--r--lisp/gnus/mm-extern.el2
-rw-r--r--lisp/gnus/mm-url.el4
-rw-r--r--lisp/gnus/mm-view.el8
-rw-r--r--lisp/gnus/mml-smime.el14
-rw-r--r--lisp/gnus/mml.el10
-rw-r--r--lisp/gnus/mml1991.el6
-rw-r--r--lisp/gnus/mml2015.el2
-rw-r--r--lisp/gnus/nnheader.el2
-rw-r--r--lisp/gnus/nnweb.el46
-rw-r--r--lisp/gnus/rfc1843.el4
-rw-r--r--lisp/gnus/spam-stat.el2
-rw-r--r--lisp/ibuf-ext.el8
-rw-r--r--lisp/ibuffer.el23
-rw-r--r--lisp/ido.el2
-rw-r--r--lisp/info-xref.el40
-rw-r--r--lisp/international/mule-cmds.el18
-rw-r--r--lisp/language/ethio-util.el3
-rw-r--r--lisp/language/thai-util.el2
-rw-r--r--lisp/log-view.el2
-rw-r--r--lisp/longlines.el10
-rw-r--r--lisp/mail/metamail.el3
-rw-r--r--lisp/mail/mspools.el8
-rw-r--r--lisp/mail/rmail-spam-filter.el3
-rw-r--r--lisp/mail/rmail.el10
-rw-r--r--lisp/mail/rmailkwd.el7
-rw-r--r--lisp/mail/rmailmsc.el3
-rw-r--r--lisp/mail/rmailsum.el2
-rw-r--r--lisp/mail/uce.el4
-rw-r--r--lisp/man.el12
-rw-r--r--lisp/menu-bar.el20
-rw-r--r--lisp/net/eudc.el2
-rw-r--r--lisp/net/tramp.el92
-rw-r--r--lisp/obsolete/bg-mouse.el11
-rw-r--r--lisp/obsolete/fast-lock.el46
-rw-r--r--lisp/obsolete/lazy-lock.el10
-rw-r--r--lisp/obsolete/rnews.el8
-rw-r--r--lisp/obsolete/rnewspost.el2
-rw-r--r--lisp/obsolete/scribe.el2
-rw-r--r--lisp/obsolete/sun-curs.el14
-rw-r--r--lisp/obsolete/sun-fns.el10
-rw-r--r--lisp/obsolete/swedish.el7
-rw-r--r--lisp/obsolete/x-menu.el2
-rw-r--r--lisp/outline.el75
-rw-r--r--lisp/play/handwrite.el3
-rw-r--r--lisp/progmodes/ada-mode.el3
-rw-r--r--lisp/progmodes/antlr-mode.el9
-rw-r--r--lisp/progmodes/autoconf.el2
-rw-r--r--lisp/progmodes/cmacexp.el3
-rw-r--r--lisp/progmodes/compile.el35
-rw-r--r--lisp/progmodes/cperl-mode.el33
-rw-r--r--lisp/progmodes/flymake.el6
-rw-r--r--lisp/progmodes/fortran.el6
-rw-r--r--lisp/progmodes/gdb-ui.el16
-rw-r--r--lisp/progmodes/grep.el3
-rw-r--r--lisp/progmodes/gud.el19
-rw-r--r--lisp/progmodes/idlw-complete-structtag.el13
-rw-r--r--lisp/progmodes/idlw-help.el149
-rw-r--r--lisp/progmodes/mixal-mode.el2
-rw-r--r--lisp/progmodes/octave-hlp.el4
-rw-r--r--lisp/progmodes/octave-inf.el4
-rw-r--r--lisp/progmodes/octave-mod.el6
-rw-r--r--lisp/progmodes/perl-mode.el4
-rw-r--r--lisp/progmodes/prolog.el3
-rw-r--r--lisp/progmodes/python.el1
-rw-r--r--lisp/progmodes/sh-script.el3
-rw-r--r--lisp/progmodes/sql.el6
-rw-r--r--lisp/progmodes/vhdl-mode.el1899
-rw-r--r--lisp/shell.el4
-rw-r--r--lisp/simple.el7
-rw-r--r--lisp/smerge-mode.el3
-rw-r--r--lisp/speedbar.el6
-rw-r--r--lisp/subr.el54
-rw-r--r--lisp/term/mac-win.el3
-rw-r--r--lisp/term/tty-colors.el2
-rw-r--r--lisp/term/w32-win.el2
-rw-r--r--lisp/term/x-win.el4
-rw-r--r--lisp/term/xterm.el61
-rw-r--r--lisp/textmodes/artist.el29
-rw-r--r--lisp/textmodes/conf-mode.el12
-rw-r--r--lisp/textmodes/ispell.el6
-rw-r--r--lisp/textmodes/makeinfo.el42
-rw-r--r--lisp/textmodes/org.el508
-rw-r--r--lisp/textmodes/reftex-global.el25
-rw-r--r--lisp/textmodes/reftex-index.el140
-rw-r--r--lisp/textmodes/reftex-toc.el8
-rw-r--r--lisp/textmodes/reftex.el2
-rw-r--r--lisp/textmodes/sgml-mode.el4
-rw-r--r--lisp/textmodes/tex-mode.el29
-rw-r--r--lisp/textmodes/texinfo.el1
-rw-r--r--lisp/tooltip.el2
-rw-r--r--lisp/url/ChangeLog9
-rw-r--r--lisp/url/url-mailto.el17
-rw-r--r--lisp/url/url-util.el8
-rw-r--r--lisp/w32-fns.el2
-rw-r--r--lispref/ChangeLog46
-rw-r--r--lispref/elisp.texi8
-rw-r--r--lispref/files.texi4
-rw-r--r--lispref/intro.texi22
-rw-r--r--lispref/modes.texi2
-rw-r--r--lispref/os.texi4
-rw-r--r--lispref/searching.texi458
-rw-r--r--lispref/text.texi12
-rw-r--r--lispref/tips.texi14
-rw-r--r--man/ChangeLog18
-rw-r--r--man/custom.texi56
-rw-r--r--man/gnus.texi15
-rw-r--r--man/org.texi14
-rw-r--r--man/search.texi6
-rw-r--r--man/ses.texi20
-rw-r--r--src/ChangeLog83
-rw-r--r--src/dired.c46
-rw-r--r--src/dispnew.c8
-rw-r--r--src/editfns.c5
-rw-r--r--src/emacs.c2
-rw-r--r--src/fns.c2
-rw-r--r--src/image.c372
-rw-r--r--src/intervals.c8
-rw-r--r--src/macgui.h4
-rw-r--r--src/macterm.h5
-rw-r--r--src/syntax.c14
-rw-r--r--src/w32menu.c18
-rw-r--r--src/xdisp.c33
183 files changed, 5151 insertions, 3190 deletions
diff --git a/ChangeLog b/ChangeLog
index d216ab222d8..5f4a80df113 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2005-09-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess, config.sub: Updated from master source.
+
2005-08-03 Juanma Barranquero <lekktu@gmail.com>
* .cvsignore: Add `lock'.
diff --git a/admin/ChangeLog b/admin/ChangeLog
index afaa571e1a6..3f6f6aee58a 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,12 @@
+2005-08-31 Romain Francoise <romain@orebokech.com>
+
+ * FOR-RELEASE: (New features): Remove vhdl-mode.el update
+ item (Done).
+
+2005-08-27 Romain Francoise <romain@orebokech.com>
+
+ * FOR-RELEASE (Bugs): Remove compile-internal item (Done).
+
2005-07-04 Lute Kamstra <lute@gnu.org>
Update FSF's address in GPL notices.
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index d38cd815fb0..d41dcec061b 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -33,13 +33,6 @@ To be done by Andre Spiegel <spiegel@gnu.org>.
** Update Speedbar.
-** Update vhdl-mode.el based on changes in
- http://opensource.ethz.ch/emacs/vhdl-mode.html.
-
-** Debug custom themes.
-
-** Get rid of the defadvice calls in org.el.
-
* FATAL ERRORS
** Investigate reported crashes in compact_small_strings.
@@ -62,8 +55,6 @@ back burner waiting for a legal comment or an alternate implementation
** The header-line buttons in the buffer list buffer
should respond to Mouse-1.
-** Fix those modes that still use compile-internal, to not use it.
-
** Fix recognition of shell's `dirs' command.
Is his change right?
@@ -120,15 +111,10 @@ The class A seems to be missing.
* DOCUMENTATION
-** Document Custom Themes.
-
** Update man/info.texi.
** Add missing years in copyright notices of all files.
-Policy document admin/notes/years must be updated before
-making further progress on this task!!!
-
Please record your name here and say which part of the distribution
you're going to handle.
@@ -251,7 +237,7 @@ lispref/hash.texi "Luc Teirlinck" Chong Yidong
lispref/help.texi "Luc Teirlinck" Chong Yidong
lispref/hooks.texi Lute Kamstra
lispref/internals.texi "Luc Teirlinck" Chong Yidong
-lispref/intro.texi "Luc Teirlinck"
+lispref/intro.texi "Luc Teirlinck" Josh Varner
lispref/keymaps.texi "Luc Teirlinck" Chong Yidong
lispref/lists.texi "Luc Teirlinck" Chong Yidong
lispref/loading.texi "Luc Teirlinck" Chong Yidong
diff --git a/admin/notes/years b/admin/notes/years
index 0434193db3e..155ccd6f065 100644
--- a/admin/notes/years
+++ b/admin/notes/years
@@ -12,6 +12,12 @@ How to Maintain Copyright Years for GNU Emacs
--RMS, 2005-07-13
+For the refcards under etc/, it's ok to simply use the latest year
+(typically in a `\def\year{YEAR}' expression) for the rendered copyright
+notice, while maintaining the full list of years in the copyright notice
+in the comments.
+
+
------------------------------------------------------------------------------
diff --git a/config.guess b/config.guess
index 1f1b4f23216..ad5281e66e9 100755
--- a/config.guess
+++ b/config.guess
@@ -1,9 +1,9 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-timestamp='2002-11-13'
+timestamp='2005-08-03'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -17,13 +17,15 @@ timestamp='2002-11-13'
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
+
# Originally written by Per Bothner <per@bothner.com>.
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
@@ -53,7 +55,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -66,11 +68,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
+ echo "$timestamp" ; exit ;;
--version | -v )
- echo "$version" ; exit 0 ;;
+ echo "$version" ; exit ;;
--help | --h* | -h )
- echo "$usage"; exit 0 ;;
+ echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@@ -98,14 +100,18 @@ trap 'exit 1' 1 2 15
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
# use `HOST_CC' if defined, but it is deprecated.
-# This shell variable is my proudest work .. or something. --bje
+# Portable tmp directory creation inspired by the Autoconf team.
-set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ;
-(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old)
- || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ;
-dummy=$tmpdir/dummy ;
-files="$dummy.c $dummy.o $dummy.rel $dummy" ;
-trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ;
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
case $CC_FOR_BUILD,$HOST_CC,$CC in
,,) echo "int x;" > $dummy.c ;
for c in cc gcc c89 c99 ; do
@@ -113,15 +119,13 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in
CC_FOR_BUILD="$c"; break ;
fi ;
done ;
- rm -f $files ;
if test x"$CC_FOR_BUILD" = x ; then
CC_FOR_BUILD=no_compiler_found ;
fi
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ;
-unset files'
+esac ; set_cc_for_build= ;'
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
@@ -178,144 +182,125 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
;;
esac
# The OS release
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
- exit 0 ;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- macppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvmeppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- pmax:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sgi:OpenBSD:*:*)
- echo mipseb-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- wgrisc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
alpha:OSF1:*:*)
- if test $UNAME_RELEASE = "V4.0"; then
+ case $UNAME_RELEASE in
+ *4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- fi
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- eval $set_cc_for_build
- cat <<EOF >$dummy.s
- .data
-\$Lformat:
- .byte 37,100,45,37,120,10,0 # "%d-%x\n"
-
- .text
- .globl main
- .align 4
- .ent main
-main:
- .frame \$30,16,\$26,0
- ldgp \$29,0(\$27)
- .prologue 1
- .long 0x47e03d80 # implver \$0
- lda \$2,-1
- .long 0x47e20c21 # amask \$2,\$1
- lda \$16,\$Lformat
- mov \$0,\$17
- not \$1,\$18
- jsr \$26,printf
- ldgp \$29,0(\$26)
- mov 0,\$16
- jsr \$26,exit
- .end main
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null
- if test "$?" = 0 ; then
- case `$dummy` in
- 0-0)
- UNAME_MACHINE="alpha"
- ;;
- 1-0)
- UNAME_MACHINE="alphaev5"
- ;;
- 1-1)
- UNAME_MACHINE="alphaev56"
- ;;
- 1-101)
- UNAME_MACHINE="alphapca56"
- ;;
- 2-303)
- UNAME_MACHINE="alphaev6"
- ;;
- 2-307)
- UNAME_MACHINE="alphaev67"
- ;;
- 2-1307)
- UNAME_MACHINE="alphaev68"
- ;;
- 3-1307)
- UNAME_MACHINE="alphaev7"
- ;;
- esac
- fi
- rm -f $dummy.s $dummy && rmdir $tmpdir
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
# of the specific Alpha model?
echo alpha-pc-interix
- exit 0 ;;
+ exit ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
- exit 0 ;;
+ exit ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4
- exit 0;;
+ exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
+ exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
+ exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
- exit 0 ;;
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
echo hppa1.1-hitachi-hiuxmpp
- exit 0;;
+ exit ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
@@ -323,29 +308,32 @@ EOF
else
echo pyramid-pyramid-bsd
fi
- exit 0 ;;
+ exit ;;
NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
- exit 0 ;;
- DRS?6000:UNIX_SV:4.2*:7*)
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7 && exit 0 ;;
+ sparc) echo sparc-icl-nx7; exit ;;
esac ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
i86pc:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
Series*|S4*)
@@ -354,10 +342,10 @@ EOF
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
+ exit ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
@@ -369,10 +357,10 @@ EOF
echo sparc-sun-sunos${UNAME_RELEASE}
;;
esac
- exit 0 ;;
+ exit ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor
@@ -383,37 +371,40 @@ EOF
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
echo m68k-milan-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
echo m68k-hades-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
- exit 0 ;;
+ exit ;;
RISC*:ULTRIX:*:*)
echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -437,33 +428,33 @@ EOF
exit (-1);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c \
- && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
- rm -f $dummy.c $dummy && rmdir $tmpdir
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
- exit 0 ;;
+ exit ;;
Motorola:*:4.3:PL8-*)
echo powerpc-harris-powermax
- exit 0 ;;
+ exit ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
echo powerpc-harris-powermax
- exit 0 ;;
+ exit ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
- exit 0 ;;
+ exit ;;
m88k:CX/UX:7*:*)
echo m88k-harris-cxux7
- exit 0 ;;
+ exit ;;
m88k:*:4*:R4*)
echo m88k-motorola-sysv4
- exit 0 ;;
+ exit ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
- exit 0 ;;
+ exit ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
@@ -479,29 +470,29 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit 0 ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
- exit 0 ;;
+ exit ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
echo m88k-motorola-sysv3
- exit 0 ;;
+ exit ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
echo m88k-tektronix-sysv3
- exit 0 ;;
+ exit ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
echo m68k-tektronix-bsd
- exit 0 ;;
+ exit ;;
*:IRIX*:*:*)
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
+ exit ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i*86:AIX:*:*)
echo i386-ibm-aix
- exit 0 ;;
+ exit ;;
ia64:AIX:*:*)
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
@@ -509,7 +500,7 @@ EOF
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit 0 ;;
+ exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
eval $set_cc_for_build
@@ -524,15 +515,18 @@ EOF
exit(0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
- rm -f $dummy.c $dummy && rmdir $tmpdir
- echo rs6000-ibm-aix3.2.5
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
else
echo rs6000-ibm-aix3.2
fi
- exit 0 ;;
+ exit ;;
*:AIX:*:[45])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
@@ -546,28 +540,28 @@ EOF
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
+ exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
- exit 0 ;;
+ exit ;;
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
- exit 0 ;;
+ exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
+ exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
- exit 0 ;;
+ exit ;;
DPX/2?00:B.O.S.:*:*)
echo m68k-bull-sysv3
- exit 0 ;;
+ exit ;;
9000/[34]??:4.3bsd:1.*:*)
echo m68k-hp-bsd
- exit 0 ;;
+ exit ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
- exit 0 ;;
+ exit ;;
9000/[34678]??:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
case "${UNAME_MACHINE}" in
@@ -624,16 +618,36 @@ EOF
}
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
- rm -f $dummy.c $dummy && rmdir $tmpdir
+ test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
+ exit ;;
ia64:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ia64-hp-hpux${HPUX_REV}
- exit 0 ;;
+ exit ;;
3050*:HI-UX:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -661,149 +675,166 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
- rm -f $dummy.c $dummy && rmdir $tmpdir
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
- exit 0 ;;
+ exit ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
echo hppa1.1-hp-bsd
- exit 0 ;;
+ exit ;;
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
- exit 0 ;;
+ exit ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
echo hppa1.0-hp-mpeix
- exit 0 ;;
+ exit ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
- exit 0 ;;
+ exit ;;
hp8??:OSF1:*:*)
echo hppa1.0-hp-osf
- exit 0 ;;
+ exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
echo ${UNAME_MACHINE}-unknown-osf1mk
else
echo ${UNAME_MACHINE}-unknown-osf1
fi
- exit 0 ;;
+ exit ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
- exit 0 ;;
+ exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit 0 ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit 0 ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit 0 ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit 0 ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit 0 ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*[A-Z]90:*:*:*)
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*T3D:*:*:*)
- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*T3E:*:*:*)
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
sparc*:BSD/OS:*:*)
echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:BSD/OS:*:*)
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:FreeBSD:*:*)
- # Determine whether the default compiler uses glibc.
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #if __GLIBC__ >= 2
- LIBC=gnu
- #else
- LIBC=
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- rm -f $dummy.c && rmdir $tmpdir
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
- exit 0 ;;
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
- exit 0 ;;
+ exit ;;
i*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
- exit 0 ;;
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
- exit 0 ;;
- x86:Interix*:3*)
- echo i386-pc-interix3
- exit 0 ;;
+ exit ;;
+ x86:Interix*:[34]*)
+ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+ exit ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
- exit 0 ;;
+ exit ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
# UNAME_MACHINE based on the output of uname instead of i386?
- echo i386-pc-interix
- exit 0 ;;
+ echo i586-pc-interix
+ exit ;;
i*:UWIN*:*)
echo ${UNAME_MACHINE}-pc-uwin
- exit 0 ;;
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin
- exit 0 ;;
+ exit ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
*:GNU:*:*)
+ # the GNU system
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
- exit 0 ;;
+ exit ;;
arm*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
mips:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -821,15 +852,36 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- rm -f $dummy.c && rmdir $tmpdir
- test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
ppc64:Linux:*:*)
echo powerpc64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
@@ -843,7 +895,7 @@ EOF
objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit 0 ;;
+ exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
@@ -851,22 +903,25 @@ EOF
PA8*) echo hppa2.0-unknown-linux-gnu ;;
*) echo hppa-unknown-linux-gnu ;;
esac
- exit 0 ;;
+ exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
echo hppa64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
- exit 0 ;;
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
x86_64:Linux:*:*)
echo x86_64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
i*86:Linux:*:*)
# The BFD linker knows what the default object file format is, so
# first see if it will tell us. cd to the root directory to prevent
@@ -884,15 +939,15 @@ EOF
;;
a.out-i386-linux)
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit 0 ;;
+ exit ;;
coff-i386)
echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit 0 ;;
+ exit ;;
"")
# Either a pre-BFD a.out linker (linux-gnuoldld) or
# one that does not give us useful --help.
echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit 0 ;;
+ exit ;;
esac
# Determine whether the default compiler is a.out or elf
eval $set_cc_for_build
@@ -915,18 +970,23 @@ EOF
LIBC=gnuaout
#endif
#endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- rm -f $dummy.c && rmdir $tmpdir
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
# sysname and nodename.
echo i386-sequent-sysv4
- exit 0 ;;
+ exit ;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
@@ -934,7 +994,27 @@ EOF
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
@@ -942,15 +1022,16 @@ EOF
else
echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
fi
- exit 0 ;;
- i*86:*:5:[78]*)
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit 0 ;;
+ exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
@@ -968,79 +1049,73 @@ EOF
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
- exit 0 ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit 0 ;;
+ exit ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i386.
echo i386-pc-msdosdjgpp
- exit 0 ;;
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
- exit 0 ;;
+ exit ;;
paragon:*:*:*)
echo i860-intel-osf1
- exit 0 ;;
+ exit ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
fi
- exit 0 ;;
+ exit ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
echo m68010-convergent-sysv
- exit 0 ;;
+ exit ;;
mc68k:UNIX:SYSTEM5:3.51m)
echo m68k-convergent-sysv
- exit 0 ;;
+ exit ;;
M680?0:D-NIX:5.3:*)
echo m68k-diab-dnix
- exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
+ && { echo i486-ncr-sysv4; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
- exit 0 ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
- exit 0 ;;
+ exit ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
- exit 0 ;;
+ exit ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
@@ -1048,64 +1123,73 @@ EOF
else
echo ns32k-sni-sysv
fi
- exit 0 ;;
+ exit ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
- exit 0 ;;
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
echo hppa1.1-stratus-sysv4
- exit 0 ;;
+ exit ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
- exit 0 ;;
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
echo hppa1.1-stratus-vos
- exit 0 ;;
+ exit ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
- exit 0 ;;
+ exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
else
echo mips-unknown-sysv${UNAME_RELEASE}
fi
- exit 0 ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
- exit 0 ;;
+ exit ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
echo powerpc-apple-beos
- exit 0 ;;
+ exit ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
- exit 0 ;;
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SX-5:SUPER-UX:*:*)
echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Rhapsody:*:*)
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Darwin:*:*)
- echo `uname -p`-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ *86) UNAME_PROCESSOR=i686 ;;
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = "x86"; then
@@ -1113,22 +1197,25 @@ EOF
UNAME_MACHINE=pc
fi
echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
- exit 0 ;;
- NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
- exit 0 ;;
+ exit ;;
BS2000:POSIX*:*:*)
echo bs2000-siemens-sysv
- exit 0 ;;
+ exit ;;
DS/*:UNIX_System_V:*:*)
echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
@@ -1139,36 +1226,44 @@ EOF
UNAME_MACHINE="$cputype"
fi
echo ${UNAME_MACHINE}-unknown-plan9
- exit 0 ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit 0 ;;
+ exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
- exit 0 ;;
+ exit ;;
*:TENEX:*:*)
echo pdp10-unknown-tenex
- exit 0 ;;
+ exit ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
echo pdp10-dec-tops20
- exit 0 ;;
+ exit ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
echo pdp10-xkl-tops20
- exit 0 ;;
+ exit ;;
*:TOPS-20:*:*)
echo pdp10-unknown-tops20
- exit 0 ;;
+ exit ;;
*:ITS:*:*)
echo pdp10-unknown-its
- exit 0 ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit 0 ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit 0 ;;
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1200,7 +1295,7 @@ main ()
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
+ printf ("arm-acorn-riscix\n"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
@@ -1289,12 +1384,12 @@ main ()
}
EOF
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
-rm -f $dummy.c $dummy && rmdir $tmpdir
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
# Convex versions that predate uname can use getsysinfo(1)
@@ -1303,22 +1398,22 @@ then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
- exit 0 ;;
+ exit ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit 0 ;;
+ exit ;;
c34*)
echo c34-convex-bsd
- exit 0 ;;
+ exit ;;
c38*)
echo c38-convex-bsd
- exit 0 ;;
+ exit ;;
c4*)
echo c4-convex-bsd
- exit 0 ;;
+ exit ;;
esac
fi
@@ -1329,7 +1424,9 @@ This script, last modified $timestamp, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
- ftp://ftp.gnu.org/pub/gnu/config/
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
If the version you run ($0) is already up to date, please
send the following data and any information you think might be
diff --git a/config.sub b/config.sub
index 11ab23c1ac3..1c366dfde9a 100755
--- a/config.sub
+++ b/config.sub
@@ -1,9 +1,9 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-timestamp='2002-11-13'
+timestamp='2005-07-08'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -21,14 +21,15 @@ timestamp='2002-11-13'
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor,
-# Boston, MA 02110-1301, USA.
-
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
+
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
#
@@ -70,7 +71,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -83,11 +84,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
+ echo "$timestamp" ; exit ;;
--version | -v )
- echo "$version" ; exit 0 ;;
+ echo "$version" ; exit ;;
--help | --h* | -h )
- echo "$usage"; exit 0 ;;
+ echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@@ -99,7 +100,7 @@ while test $# -gt 0 ; do
*local*)
# First pass through any local machine types.
echo $1
- exit 0;;
+ exit ;;
* )
break ;;
@@ -118,7 +119,8 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -144,7 +146,7 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis)
+ -apple | -axis | -knuth | -cray)
os=
basic_machine=$1
;;
@@ -228,14 +230,16 @@ case $basic_machine in
| a29k \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
- | clipper \
+ | bfin \
+ | c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
| fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
- | ip2k \
- | m32r | m68000 | m68k | m88k | mcore \
+ | ip2k | iq2000 \
+ | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -244,28 +248,37 @@ case $basic_machine in
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
| mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
+ | ms1 \
+ | msp430 \
| ns16k | ns32k \
- | openrisc | or32 \
+ | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
- | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+ | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b \
| strongarm \
- | tahoe | thumb | tic80 | tron \
+ | tahoe | thumb | tic4x | tic80 | tron \
| v850 | v850e \
| we32k \
- | x86 | xscale | xstormy16 | xtensa \
+ | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k)
basic_machine=$basic_machine-unknown
;;
+ m32c)
+ basic_machine=$basic_machine-unknown
+ ;;
m6811 | m68hc11 | m6812 | m68hc12)
# Motorola 68HC11/12.
basic_machine=$basic_machine-unknown
@@ -293,19 +306,19 @@ case $basic_machine in
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* \
- | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \
- | clipper-* | cydra-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* \
- | m32r-* \
+ | ip2k-* | iq2000-* \
+ | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | mcore-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -314,29 +327,40 @@ case $basic_machine in
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipstx39 | mipstx39el \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | ms1-* \
+ | msp430-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
| romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
- | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
- | xtensa-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa-* \
| ymp-* \
| z8k-*)
;;
+ m32c-*)
+ ;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
386bsd)
@@ -353,6 +377,9 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
adobe68k)
basic_machine=m68010-adobe
os=-scout
@@ -367,6 +394,12 @@ case $basic_machine in
basic_machine=a29k-none
os=-bsd
;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
amdahl)
basic_machine=580-amdahl
os=-sysv
@@ -426,12 +459,27 @@ case $basic_machine in
basic_machine=j90-cray
os=-unicos
;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16c)
+ basic_machine=cr16c-unknown
+ os=-elf
+ ;;
crds | unos)
basic_machine=m68k-crds
;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
cris | cris-* | etrax*)
basic_machine=cris-axis
;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
da30 | da30-*)
basic_machine=m68k-da30
;;
@@ -454,6 +502,10 @@ case $basic_machine in
basic_machine=m88k-motorola
os=-sysv3
;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
@@ -632,10 +684,6 @@ case $basic_machine in
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
- mmix*)
- basic_machine=mmix-knuth
- os=-mmixware
- ;;
monitor)
basic_machine=m68k-rom68k
os=-coff
@@ -723,9 +771,12 @@ case $basic_machine in
basic_machine=hppa1.1-oki
os=-proelf
;;
- or32 | or32-*)
+ openrisc | openrisc-*)
basic_machine=or32-unknown
- os=-coff
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
@@ -758,18 +809,24 @@ case $basic_machine in
pentiumpro | p6 | 6x86 | athlon | athlon_*)
basic_machine=i686-pc
;;
- pentiumii | pentium2)
+ pentiumii | pentium2 | pentiumiii | pentium3)
basic_machine=i686-pc
;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-* | 6x86-* | athlon-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
- pentiumii-* | pentium2-*)
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
pn)
basic_machine=pn-gould
;;
@@ -828,6 +885,10 @@ case $basic_machine in
sb1el)
basic_machine=mipsisa64sb1el-unknown
;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
sequent)
basic_machine=i386-sequent
;;
@@ -835,6 +896,9 @@ case $basic_machine in
basic_machine=sh-hitachi
os=-hms
;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
sparclite-wrs | simso-wrs)
basic_machine=sparclite-wrs
os=-vxworks
@@ -901,10 +965,6 @@ case $basic_machine in
basic_machine=i386-sequent
os=-dynix
;;
- t3d)
- basic_machine=alpha-cray
- os=-unicos
- ;;
t3e)
basic_machine=alphaev5-cray
os=-unicos
@@ -913,14 +973,18 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
- tic4x | c4x*)
- basic_machine=tic4x-unknown
- os=-coff
- ;;
tic54x | c54x*)
basic_machine=tic54x-unknown
os=-coff
;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
tx39)
basic_machine=mipstx39-unknown
;;
@@ -934,6 +998,10 @@ case $basic_machine in
tower | tower-32)
basic_machine=m68k-ncr
;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
udi29k)
basic_machine=a29k-amd
os=-udi
@@ -977,6 +1045,10 @@ case $basic_machine in
basic_machine=hppa1.1-winbond
os=-proelf
;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
xps | xps100)
basic_machine=xps100-honeywell
;;
@@ -1007,6 +1079,9 @@ case $basic_machine in
romp)
basic_machine=romp-ibm
;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
rs6000)
basic_machine=rs6000-ibm
;;
@@ -1023,13 +1098,10 @@ case $basic_machine in
we32k)
basic_machine=we32k-att
;;
- sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele)
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparc | sparcv9 | sparcv9b)
+ sparc | sparcv8 | sparcv9 | sparcv9b)
basic_machine=sparc-sun
;;
cydra)
@@ -1102,19 +1174,21 @@ case $os in
| -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix*)
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1126,16 +1200,21 @@ case $os in
;;
esac
;;
+ -nto-qnx*)
+ ;;
-nto*)
- os=-nto-qnx
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;;
-mac*)
os=`echo $os | sed -e 's|mac|macos|'`
;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
@@ -1148,6 +1227,9 @@ case $os in
-opened*)
os=-openedition
;;
+ -os400*)
+ os=-os400
+ ;;
-wince*)
os=-wince
;;
@@ -1169,6 +1251,9 @@ case $os in
-atheos*)
os=-atheos
;;
+ -syllable*)
+ os=-syllable
+ ;;
-386bsd)
os=-bsd
;;
@@ -1191,6 +1276,9 @@ case $os in
-sinix*)
os=-sysv4
;;
+ -tpf*)
+ os=-tpf
+ ;;
-triton*)
os=-sysv3
;;
@@ -1221,6 +1309,15 @@ case $os in
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
os=-mint
;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
-none)
;;
*)
@@ -1252,6 +1349,9 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
# This must come before the *-dec entry.
pdp10-*)
os=-tops20
@@ -1295,9 +1395,15 @@ case $basic_machine in
*-be)
os=-beos
;;
+ *-haiku)
+ os=-haiku
+ ;;
*-ibm)
os=-aix
;;
+ *-knuth)
+ os=-mmixware
+ ;;
*-wec)
os=-proelf
;;
@@ -1430,9 +1536,15 @@ case $basic_machine in
-mvs* | -opened*)
vendor=ibm
;;
+ -os400*)
+ vendor=ibm
+ ;;
-ptx*)
vendor=sequent
;;
+ -tpf*)
+ vendor=ibm
+ ;;
-vxsim* | -vxworks* | -windiss*)
vendor=wrs
;;
@@ -1457,7 +1569,7 @@ case $basic_machine in
esac
echo $basic_machine$os
-exit 0
+exit
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 07c05935fed..bf83b688b17 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,19 @@
+2005-08-31 Michael Albinus <michael.albinus@gmx.de>
+
+ * NEWS: Add entry for `make-auto-save-file-name'.
+
+2005-08-19 Emilio C. Lopes <eclig@gmx.net>
+
+ * emacsclient.1 (DESCRIPTION): Reflect inclusion in the
+ Emacs distribution. Make role of EDITOR clearer.
+ (OPTIONS): Document `-s', `-V' and `-h'
+ as well as their long name counterparts.
+ (BUGS): Remove.
+
+2005-08-26 Romain Francoise <romain@orebokech.com>
+
+ * PROBLEMS: Fix capitalization of "Gnus".
+
2005-08-20 Chong Yidong <cyd@stupidchicken.com>
* MORE.STUFF: Update links and URLs.
diff --git a/etc/NEWS b/etc/NEWS
index 9e5c090ec80..ca64a31c52b 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3983,6 +3983,10 @@ operations.
This is useful for autoloaded handlers, to prevent them from being
autoloaded when not really necessary.
++++
+*** The function `make-auto-save-file-name' is now handled by file
+name handlers. This will be exploited for remote files mainly.
+
** Input changes:
+++
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 472611b7130..8e6fc32121e 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -342,7 +342,7 @@ The solution is to use gawk (GNU awk).
*** Emacs fails to understand most Internet host names, even though
the names work properly with other programs on the same system.
*** Emacs won't work with X-windows if the value of DISPLAY is HOSTNAME:0.
-*** GNUs can't make contact with the specified host for nntp.
+*** Gnus can't make contact with the specified host for nntp.
This typically happens on Suns and other systems that use shared
libraries. The cause is that the site has installed a version of the
diff --git a/etc/emacsclient.1 b/etc/emacsclient.1
index e562d37360e..bd641c9fc68 100644
--- a/etc/emacsclient.1
+++ b/etc/emacsclient.1
@@ -9,28 +9,30 @@ emacsclient \- tells a running Emacs to visit a file
.SH "DESCRIPTION"
This manual page documents briefly the
.BR emacsclient
-command.
-This manual page was written for the Debian GNU/Linux distribution
-because the original program does not have a manual page.
-Instead, it has documentation in the GNU Info format; see below.
+command. Full documentation is available in the GNU Info format; see
+below.
+This manual page was originally written for the Debian GNU/Linux
+distribution, but is not specific to that system.
.PP
-.B emacsclient
-works in conjunction with the built-in server of Emacs.
-.PP
-You typically do not call
.B emacsclient
-directly. Instead, you set the environment variable EDITOR
-to
+works in conjunction with the built-in Emacs server.
+.PP
+You can either call
.B emacsclient
-and let programs like 'vipw' or 'bug' or anything run
-it for you, which will use an existing Emacs to visit the file.
+directly or let other programs run it for you when necessary. On
+GNU and Unix systems many programs consult the environment
+variable EDITOR (sometimes also VISUAL) to obtain the command used for
+editing. Thus, setting this environment variable to 'emacsclient'
+will allow these programs to use an already running Emacs for editing.
+Other operating systems might have their own methods for defining the
+default editor.
For
-.B emacsclient
-to work, you need an already running Emacs with a server. Within Emacs, call
+.B emacsclient
+to work, you need an already running Emacs with a server. Within Emacs, call
the function
`server-start'. (Your `.emacs' file can do this automatically if you
-add the expression `(server-start)' to it.)
+add the expression `(server-start)' to it.)
When you've finished editing the buffer, type `C-x #'
(`server-edit'). This saves the file and sends a message back to the
@@ -54,23 +56,25 @@ immediately without waiting for you to "finish" the buffer in Emacs.
do not visit files but instead evaluate the arguments as Emacs
Lisp expressions.
.TP
+.B \-s, \-\-socket-name=FILENAME
+Use socket named FILENAME for communication.
+.TP
.B \-a, \-\-alternate-editor=EDITOR
if the Emacs server is not running, run the specified editor instead.
This can also be specified via the `ALTERNATE_EDITOR' environment variable.
.TP
.B \-d, \-\-display=DISPLAY
tell the server to display the files on the given display.
+.TP
+.B \-V, \-\-version
+print version information and exit
+.TP
+.B \-h, \-\-help
+print this usage information message and exit
.SH "SEE ALSO"
The program is documented fully in
.IR "Using Emacs as a Server"
available via the Info system.
-.SH BUGS
-If there is no running Emacs server,
-.B emacsclient
-cannot launch one. I use a small Perl script instead of raw
-.B emacsclient
-to do it (it works only with systems which have BSD sockets, which is fine
-for Debian GNU/Linux).
.SH AUTHOR
This manual page was written by Stephane Bortzmeyer <bortzmeyer@debian.org>,
for the Debian GNU/Linux system (but may be used by others).
diff --git a/etc/orgcard.ps b/etc/orgcard.ps
index 3715ab6d290..de5513954bc 100644
--- a/etc/orgcard.ps
+++ b/etc/orgcard.ps
@@ -10,7 +10,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -t landscape -o orgcard.ps orgcard.dvi
%DVIPSParameters: dpi=600, compressed
-%DVIPSSource: TeX output 2005.07.19:1850
+%DVIPSSource: TeX output 2005.08.30:1410
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -352,214 +352,210 @@ B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E07BB563C96C0A3E
CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43
0B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F
08E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E
-588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C3
-975289D47E7F35898FD87E0BE88100E53DDB356245666E7F724C208CF200B76D
-6E86BB756E083DC34DE1DCF484CD664C826962DC9CD5DB207262A43EDB8A18BC
-7D3F35237299AE378AD68A89E97D65CB05503E2C2D951E3AD2A544DABB19973C
-2B9AC59428D1FBCD89C058532357D2F4D53F35D49FCDC303475E1B41B3A2E18C
-657AA0AE4D04BFBEEE2A24D462249CDB73EB96B6702C174BDF87642C3CB6F3C0
-86B02C65EE7D5ED2F636F15F50E5D1894F48AE024E1CEB56AEAA3967DCF5ED5A
-63C9DD1DAEB9C8A353C2C90BFAA6B66B9E0B13BA0CE464A3C8CB2C5AE94AAB37
-72C62E70CEFD0558E483789630CB0FDF76E9EF75D8012E5F7FF85253C480F841
-CAA7F9FC1E4AD4576BFAD1825C989D197024F8ADB77B7DF5D341E2B68BD7FF5E
-414852120B733078E1B703AC4845E63CB624BFBC2B575CFF29AFB89BC5957A1C
-D3838B3FEE6252CDDEABBA24259E50B48741EC36BCCC888E09B9A0BDDE044D9B
-0551B31409E7FE2922D73B7E52B08C32481A2F29E81F2B1573D085997BF65B06
-12E062C2ADDB75A199AE7785015967917D9FFF94DCC8CD8CA79B95560EE9C09B
-04441CC622B2374030B08089E51AA9E9566AEAA9F81411C638F547B15793F884
-E04DAA850CD17CF5093F73DEA68AD40C288EA0C25CFD9FEB596DBC7F86C9E13A
-2F2E43BE780B66A03B4154191383951FF535D8866735B6879C5D4C51147C7553
-A012AB7FC667F7DF259690D47B1F2DE226FE539DAE8EE6FFEBDF3186E6ECDEE8
-8B3E2CBC6006456AA69276CD025F387ACD73F0CEE35CC1ED6771107E3A1B866F
-19C5C17A18552EA2DBA65EB75D493D05DA9D1247D77F65968CE5BCF68D56E249
-3D41AA3360275F993A8C0C7A33D6317AED8C6426C374E7833241E88DB88862FB
-411E711280F84C46E1A18D0F520A2474E7AF7455709AD19CCFA00463033FD0B8
-61D2CEB925BA10D19FC97AF1953C8F0EEC15254F2C4C56E9FFEF66D00E8E0BF7
-97B60CBB7F8B56B82B2F846A53E2E36CB5D27ED3881206B27DA02F35B6D32962
-54D89A03F67E672D019F2DD19195E80C0D0DECD8FCFD259907FCA25D5C407882
-CA7E54D31995F1F14376D72BF33D1AF534A05FF3D323CBBD48003F2A44369C55
-80BAF975090EF0D6CF0347C0DB4C6CE743447C7A48981E50BD1667B08CEF2A06
-0B85DFC727BD8BBC56767F0D814FAD4AADB1E2E674D9D400AA6B108A7B341F4E
-3CEC41E8B5BEDB76CB87C0CC5408B3985FA4F651B8B73A893CDB2A6506003EEC
-F83AF0FED73ED31B150DB8990AED1C1A46AAE6B4E1D4182A29E8504DBBB39036
-135745E3E2736AE23E09384761667ECAC0F24F1110FF9EACEA55DBCF86BDBFFE
-F492582A7BA7DA88932AA88B02C0E5A5B0A1DD266A36756D81CA3A056213183A
-1B09434C9FE4C98579512A77072BE31ACF25C5EC8B38A5394484303B8BE36FDB
-7146EC7DE53DF053DB16D0C2C9EFBE6E52AE86CCD389E2AC772A7231044CE76B
-ABFAE8E0F0D8BE84DC7293FE1D0FEAB9181D44BF19C2DB4C20F03DDEEFE7E463
-AD5A53B316CCFE4485D61E30913A3D77F5E364ABD1E3EDA95EC4DAF296261CBF
-22DCE22DD10B20B08876A8CAD51F4E17D981D38E6A63BF604D76901685DC3BCE
-9900E47A255606DD46ABFFC30D423333F49FF75A76C51EE968B190A3A848BDA1
-C793ECF0E41DA7338F387D3EE4DADA226AFF695AD31EFCBBA7245C348DBE726A
-C8B1C993D6FA12A4BD8B9BA30C9CE324CF051C63987866A0453F12A28C975E4D
-4A8761C33887FC2419A63312CB4E8E6DBB0C32C1642733102B587E95F0D1A5E0
-364E6D6B3995970C747B0D147832A321A942A8065FABAC9EEE96A2E316149411
-F5F3FA0690F82CBB928FA1E325CE16E119A74AB166A368A276A3FC805D7898DA
-869B51B99DB656B41527A83CF03050F8DB995CED24D926B8AF5C78504533F065
-9DD3733CDF1C97907AC47CD82407271C09486765B33BEB2950B8CD2AEF17D03E
-B93B464003418B94A165424EB4570DDB2DAB66DF48AAE2617851C443C288F122
-A44FDC795902732BB0AA746B4C16A1136966284913E14A44265671D4299FEFEA
-C5628C6CDDD52F76670D294C991C0CFF4986127A90832E4913D72457AC3EA8DB
-F9594539B0B1472825491EC9E13137C4FB5C4DC185130BF57D63D9D977A98365
-F51D64D6B9595BED8EDA9296E9436C759F06620AAC3C453CFCD8852C65D147A9
-99756DFD2399D4B8082A217E05D9713DED24E1E681A3E0D67175439B26B9C655
-440B992B158167C6C8866295CA085C094E447FC633477AF7EEADD2BC9CC6A83C
-EAC88183913966289847788602602ABF3D2BB742F24FA7F82FCB485AAA884F94
-D14BED3F1092FCF775BBC405267DAD50FA0FC972F9CB186FA350BC1E20CBDA18
-1C68E560D2FB05BF7BF45CFA16FD95BB3A92B687AB514FD2338FD965466F69EC
-EF1E1F5453596FD2A3ADC3888756D217A48EE48A11624E07545CD78EC7993BDD
-EF7B2AFBD5C5BE2526D9FD331FD13E6867ADD74CD2EC7464A193E53D428BD4B9
-AC7E96D33B684AC2F0D8F6E34D1CE086A7D7763D0D6CB811888AA6FE0BA9C5DE
-F700F213299DBF40FF4E6448F99FECD32DA0B6BC8E11E23C96B1DC16438D6D58
-AB396C890349AB2588D0B4BDE1163EB4765E2380B9B071EBA0485C3F478CEFEB
-0AFF7F36149668C6C8B93C9DC211B8219FB219F093CC921E22EB70EDA6FB0EC1
-3A05289BBDCB26BAF5B00DCBCE835BA66807E25354C3FF568E4D3D80A8D07345
-3EF15442EBD1757642D2EF0FEE55F95583545A29F7F665C0DD11A13A2F172AE5
-088656741A2FE3A7AEEC690FD9E328CCA2FC882C44665D56370347561CEE3A7B
-CBEF131B2FC47DCDBCCD8829B5D54DFDBB65D563D8F7E3E9BACDD012CAEECEA8
-A546FA226B93F21AB00E1F6B8B201874AE14D19D9AA36A50D36AB1CBAE4E06B6
-23C979AE1C120AF31123037ED8306DA84A600F73837D7143CEC4D4FA2C9D6A80
-DC32A657614E781EAD5C47CBA6988C80269C521EF82DB442CE86B4741B314D53
-779480EFB208752C601223637E90B4C6154821928D0C5852890D8B27C90E5B63
-6579E0ADF4904E268DB32CD14C4D7EB5C57C830632498DC6F637FA7345154450
-4B938FB0EFABEAFF0753B770A1A81EB6A2391C369AFBB28BFB545B7DF8C5D843
-BE2624182D1E0221C3DC415E0591828926A2B39DF8CEFDAFB6E37B085B8087CE
-38C72FABFB40D87EC3AA2926CBFF805BD55CFA6F2A2E3AC9BC3613B673346CC0
-00CA684A027A472F29D61001BE2DAFC38D3B40F165CEDE2C364B87527A01599C
-AA1BF372920926A31C0C3F0DC333088A040387445CD2AD339B7F80F38B2331EF
-2D308D7DE22212E942D928DBEC495798B4D1C345E7E0A4E850D0E0E0DF806F22
-E6BFF56A87D1566EEF4E5F0F5324B5C50FC8BEA1F2F56D2F9DC86028BF3E0C78
-F3CAA5AC2C95B69A74DF70DE61FF2C400A5A87C9496355ECD9A3F6A5689B95A6
-DD789210074316A9500985D727C5D598DAF98D72F52A7FD4A0DAB32CDCDCB1F6
-FC3CD5033C63E1A2723178DB9F0D30CDF7F976BB043411A9B52DC2E25EE41E62
-F5D7C906130515A2E871807357273606423D064280E1E0BE9C8E08406DF92012
-88D6AFD9A7F94364E3210CEFF7AA42F8771E9F57818E58B90BE3F70CB6E2BAA1
-09B5DEB0F835339A3EBCC9CC91EC95362F8A82583F5FEA4A2B1E52CFF7EB08C6
-498A0BE9922EB85DE8DC2F4C4C8BAE8A556E8799B393A1DD9A02048DE1C0BD9D
-9E08CFA6747D7D54CAC2F0530905D7BFA55A2725AC87B3BDA4C3E641FD40290A
-CB21839AABD1123E885C056098C604C1BA610DAF070884DE4F9101A5979E3521
-16829B81A06D640539D2138120C62BF7207B0292CE093BDF51EBA7FC7F3B0A41
-70D2392D19D708B5C9139E42C18EC86FDEFDB3B8110795EBAAE6969F2E1579AB
-8C3F01698EF67A733A561BF577EEF58E669358AEA0730E14A12BA0A3FBE00719
-1E1D66904BB731D4F0DB772393C47B8894FFA70AD68E895943D7EE69647CCC5B
-129C5BDC027E93E534568C8D74108DF96E3EF84B872415FC9636B46B45D55E55
-BD1C1933C4110C832076A57B253210D7AB19D10D2001AB8FB7629E5ED5313ABF
-0F6473F479EDB06401777FA50E657CAC8CAE78AB6C226919B2696F4EE4D68B62
-42B464F72E2DDB2CEE2F8D0CB5B817CF32C6D919BB64C1D8C09FFA63E99ECA7C
-334ED10FDB888A6BB4E2FEA1ECBB8B65AD694F3F0D46F833BDDCBBD326377543
-28403188A1517C7E9B6E6CEA07FCBF028D8CFBC554B877EE3EA87E3A47177488
-F1CEF87232E8F3B05ABC727E605AF1E6EF0491FFBB6024BDAC9E230A05D93896
-208253F0B553F6EE3DB0938A2D20544E839A8ABB574CB1A8ACE6BEC53409BF7C
-DD2E51D1B78E222141050DE03325D69DBC93E83DAD6C21550AED849EC7008989
-27AFFC46E63EA2BEB727CD69B7C25D790B0EB860A57CC6ABCB5F1D70AAABEEF4
-F756B93CA11A3F900ABDF10E2B61FEF8B7C06614B7C951F64DBD81F0525B4FA9
-B8F911FE3B138A2A92EB3DCCE4B1ED5EA4D5120CC6B5D9DD91AACBF96F85D5F1
-5EC81E82DBB6200174C99C6D3F1ED83B6787175419D71FD1D9DCE43C3A533AAD
-84EBFD6DA02E3FFF2671A12EC04FD54B62DFB1BFE94F6551F97D2D71101E535D
-49462DC28F44E9CF47141EE173B2081D27FD71818FB6759AD8F9E8EE6B4F4C42
-D2F5BD0EF0E42986960EBDDD1B86A8F5CCFBA8CE13790931F81A173F100262DD
-E5F0C88FFD92B7068C76537AB7E662C9F62A2E50CEFCDCACC22E0AAF29179981
-7D26ECBFCD3834D74CB191D98BC4FE269A49916A8C6DF3252A36E1C9667E195B
-3A6D4712F9E741BEFAE5464E8E62C16FC094006E6E0E44971B5477B3F613F0FD
-FB1F6157A8BD3850337EF664AB1BBCAAB6EF028A6DA82BF8BD37C87F556FC65A
-F27A92B2F03CFA2CE1C942D2F4175A1FD332F956AE4558BD42D20AF36119E967
-D4DF353D508ED5E3E1DB0A6D1DE3DC974AB489A0A2F1A817E798CD15124047A2
-0BB986DDEA0C530BAD8CC74643B3F8D6D9A4249C4A049C6624AEB9D0F5B073DF
-391DA641ED9A5719C8DF4BECC5EB464C5FED010778A7B3EEC7C4E63063ACEE75
-C91F966F93B81B09B80C4B708EF232D4B3CB86E35112AE94EFB1509767F86EDC
-CDD4D87A6CED2C54BA3D7A27D31F4D9C3C3E4BD59D5ED4FAA0EF35A95D533A46
-9CEF9CA8B889F5CA51C83FD1B2364D73DB45D3CBC584662928ADBE635370FA02
-6B27BB763476DB708A43F9056F580C234E97E925E06014F2DC0684A2B608796F
-07B9ED031153BF3F54BEA155F5CF5796EC4F413F529B7B1623A99AB18DEB5A77
-638FCA175C6B608E0CA86A0006AAED13C7E32B5D2D9F5DDA900526BBE5F2A72B
-F6AC4738D9D5F1C0C64D6EF08FBF42A93163405AFD2BE799FEF6F261AA4B1983
-D7A478B8483473A8E410938149A88E2D8F2731828C578EC94A0A1524AC6AE968
-6FF30BA8F8941E766A3400B7C90BB0C35ACC0E151EE2DE95C96CB57870B70571
-7780F054B0E0C6875303E6C8A86E327CFBA2A9A63C6A4A412BF4204A9A6CC043
-F4181DEA58886B75E8717EAC5ECA4130E3C3ACC63C974BC25168CD479B8FF2E7
-9D7383B759D7F4CA647133895B6F27060736344E17847A5376900650E8F1DE91
-35A64E2BA826FDAED6126E695B383190EE119E3D2A0C55EA00B96A87D6C31D91
-FC138FB980FBDBB123E8528D8C6902E722B0C4D5F697D08875C4AF3B54CC9D26
-000AE20D642627527F9122D8F7B4269226FA6996A086DA7993FAB72D12760980
-112A7282307B973FE18CF3AB3541320F1D56B60F10D057D55110DB5B19EA8673
-A04150ED3E31FB13C2AB1984FC035668D97F29ED5AC599E470DDC96EC55CF3AD
-CC2292D5ED757017FA84B95B1A835F35FD0D053B795099C1FA04ABADF189CC05
-CD3AB170C4676045F6218746E7BBFA8EEC7447461DE88A82CE72809B2574DD3C
-F742892BA4F986690998054D545A958FBDD657B159DEE0E20C09695E945D991A
-5A7060E0B43557D69720E5F0DA325071BA4E8612BA2CBCF0017D1DE7F75114F0
-7732430DE5B93F037BCCAAEC7FF15A3CE253B1B1ED90E176A5FFA28AE4D31F89
-8C23F25A0B3B9048B77C97251B710D6AA597F38E8A0170864721B490F332BEE3
-3451CDFF7EA716F7B61CAF9A7379C0736869A4B7A9C4FE67E00B6121A0B80799
-313059C1F350FFC355A9659DE24FE94DEF95A7453C402FDB76BB37A3E969920D
-A02E416D8BA1525DB382A268F8482D8C1F2BF85C3E0BD8BDAB6D69792018D112
-46AC210621CA7D1211854407CD771D007CCF721DFB38BF230F1FF6F4A975A29A
-5277FFECC83570E3F5F2AC00BF65CA7D6EE973E073DA7EF5C4169F2BC9EDC891
-7161AEBB815EC74BF843AD52A05CBBD770842B9A8D49EC5B2E81F9E0FDE14F1C
-EBE5751331A84B761173AF701630BAFD6BEA0EC21A6CDE53DE1B77008E4CADD3
-A8E3DB2E1E9DABBB88779E4FFBAEE434E1A4F7CE2D1617A499BE976C26168FCC
-D15CF368EB734E55A6AD683B870DB893552C47D703FF1C60F83BA255C2C2DF31
-36404158B385CBD3689657DA10DB47A4ED88CE3B2A96D71574E2581002447493
-9B2406886B0C0C63A4A8A7146E6A7376AED21B844175E225B19480E868DC4C77
-98D4E711CA2359CCC49DFEA8E46A328EEC393DE1D63DA45124F4943B0214D6FD
-4E315E3B5E0628CFAF7CBEF0D6026A346F33B66F373A303D1CC81A38D46D2CE6
-7D8B39CAC15AF7E0F1DE6B7991AA90DECA4E35BB7D1238CE7AA94FE3D2576B33
-3B28014FAF2CA6AEC8C1D97997CB762F0F7D0FF4992A683047F6C8584606A8D6
-E7325296CBE312E7CEB74D5DDDC61B86B17547E0E68278136740A3B48BEA681C
-5DA905773ADF372E0C87312506FE1BB9F375524E3F02D6BAA197E7AE619FA82A
-D18A24E4A384D56515B6DFB85618EA77F20007D212B8D79190B8A117CD1DCC9B
-40D74E4E494D174A77A174C6AF775310F7F57CD69206FCA5526EBB963951B1DA
-29E594C254B480F0D20BBA199F7F5750D34A50402E4EED113CDDDA5B7920294E
-EB9C6F18F0182BCFB1E4B9B86AF6BF073260060AC88AA344F83907E7C5613324
-1898F31B43CE8C173D1DC670BDD0FD3B75C42796FEF88BD60669FF00D6704D02
-99678D55012907C2D659A254E86F1BA20DCFECF7B07A2C240A5B1AF4D778E3EF
-6358A8B10E38679D57FCF28BD6581C824A1840BF91206398E81B39012C0095F2
-CD2C73D8845182F02BB80ABE77EEF1F709C017FC586BE7A23D0771EFC8A78165
-FF88DDAC78A4C2979C0D16ACC0A0A74A71140BADBB7B51B79A54842497F51E6A
-90A8B4CB10DDFB40D4FFCBC7ECE911A5D8A8E9053D8801813178028468E07D93
-C6645E1034CCCDC333A095C42F48AD776066DB50EA5A1048E6C13EE0838BD184
-0D4956E0576DCC1F6A2C6E21E38E1E837F311FA04120C2E3360DFBD7A0DC3E03
-59C07009AED7F8FAF16A1BCD15F01EB87AD10E096822B38CF2591EFB971D368A
-C29A3DAFA38DDA281EC38E0195ED98AA177067FC873D207ACDABA3AD341F16D2
-B7DFAFB1093FA798094251F9097EA5D8B13615A1A358758DEA0F17C8ABFFF0C4
-5184AE86AEA2EA55A9FDE19482663F37872CDA41971E5E85DD3893C486196104
-A892DD7B5D03E5D346E0D7D45F9514C7C41AA75C807F56A85C65A39405B2D07B
-7B53B082BAFA4FE094A4BC15E06A4D97EB4B0D736DBA96C10A6B13828C06B543
-5D99F79B9086F88B10E5445B8D71D587D36036D0E7095D378063F59E697A7D73
-55DD21A26CC5BA1743D41A268B16362EFF242D60119F0068F381098CA56DF9D5
-0CDE40763AC2D072F5E65B4466D612E972BFB343F829F3932012637A2C2740A9
-4BA1A01D61225010ACA3013DE57EA5D6334DAF8DAAC64DD24BB1C75A70999C9A
-7F5FA55D2E4FFE4B1B21BA2504961D0E4E7CB14C0C6A789DB141AF8DC74ADB8F
-041AC348DB7BA5ACD513735941B3234930514AAB66F7EF22D8927C5B87EA52D1
-6126D517E98965256505F2C19D973FCD26702AEFCE06501AD33861907D5F5609
-A96FE16F854B011FDBB4C332A17A36A714B00A4358E2DA5342D91AEC57C4F61B
-84F80554E8BD6C643435D36574B7A4C20F2FC49C3362A26BB2C594A7AAF50A33
-B9A6540004A1A6F455920A4E282321607CB5D58F5262B03E338461284AE25BFC
-254CF4A119A306233FEEBAB31CBC72F8B1B8D9EB3BEEE24427506823A432022D
-98B856009A7D06A49FA4EF48A54783AC536996CA1729707A97E7FF8344837BC7
-44014D12C10C2CD224D355E31FD7355427D5B19090021F607A2A44E7E45155CD
-5284F8D641D78C7F506B8E1D3537F491334DC36B3494DFFE999507A7D7A2B1CE
-23EB2F904B799B160FCA2BCF91BF7A139A0EAE690E1DAB7E382F0DC371D0BAF6
-D1F057AD27C8020025688ED5EB3609B6A26AF62270C0C4198240157766D57B7A
-638946EEC867B34DCCDB1FDFAFC587CAB7149D14396CE508FB1784F785B54D8E
-A9DCF5B823CFEE22643EF13114AF35E726DE6C9F65BC00B43BC2B7997948E878
-52C67D065440503BCD20AF6AB2E612F583388D8323C5117C3AA01CABB74E5F4D
-1370DD67C55ECCA8446700CC02F0B22099CE1E4C0AB29562E5AA11B07D3538B4
-F1E7001510CB69852E95769C4B8C663E50C3C62310096F2041810C37711445A7
-475EE2E0001639453132374212076813AE1A86D1D77780AF6B769E460DD34AA3
-A015539C85AED5D175E00231E2C476F4363945208471B458D2BDE57D51352465
-C9E4C989475D1B416E9E70B2521E9571B5986CF1347C5E59D4A0624899E70FF6
-C906A7274CE96B5B8A503A3E6A6BAD424FFE0EC4EA784669AB62DB1A3F52AAEA
-A6A04AA6D98C551F1D2F04790F52F7745D2BB3960D8264845B953B414594D5D4
-8B46D75E37AA04BBBBB3063A742B43B38B380F53038E4DC91416EB14F24B2C9E
-F5CBCFF0F116879CE571FB5DE18136795655CD15D6A0DF5813B83C16991DA0D4
-85BDF299365B87DEDFA429E0A960427FB468E07B30CF2D2788FD423B65754AD2
-F4F5974176F35E34BB068DA31C7AEF659B89F9E1376F260BD18A03DF4514BCAE
-C6DB005B366B6793914379DC4E9480B5CF2BE00D8D72503EA43D598250F95ED3
-6D6CD0522D1D36E3F64E57067F86660FF4E9536D0EEE981541B56BD894E3F876
-5D600C3B8ED301CF7AF582539B9037AA1D616D6E494ABC7F7BF3BF341B8D7520
-68DCDF4E4140E9AB85F0898E634FBF91AE7352C407365B06D5AEEE21069EDAB7
-B06A99F8BFF1335AF2039095F54B5A3D62CDEF5C95B858586B344AE958124121
-2A990E05212EDD915CC7A8FDA48424
+588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C2
+C87A1A169C5ADE44B561EC1660E617FB39D1B1547B33C0FEB33C3A1D7340A62A
+CD9CEFA49481F19B39A704A53A0B98A11744143CDDA0E668E6325935C6497A9F
+AFF471194932AFECBF25B441AD55A43751FBAB76F3E544C4254AEC4BEB5CFE4C
+C1318C3A0FAD0E8C1BABEE20B203E1DD9412E66BC55BEBD6FBBEBA84F56604FD
+85D50F733D9794611F4137EC10ACB4C4ECA5A81CAACC45213E92ED3C26726BBE
+91430E7633A2BDB8EA3D0C55259D7DBE468AC0964A63728C9B8EA4E15CF0EEA3
+2E754B9170EAE6B8818DCCDDAD643B9F6C91C3C5B245CD442358C60AF390DC76
+342E659D4EC45552626F069F346F46B18062CE26D5912336C6B29FCBFA5C3113
+ED86E44B529CD95B7B5B934D899762C4F3457F56ACCC763BCCD5BD08975EB5F1
+C5216DA4CBF3409EC71054B0145183F7DFB31517D199EB16D4C6DB0AF05E5720
+10B06F395BE3C8C59CEEBCEA1E00F9EA3FD880AC197508CEC11E33B6B6EABE3C
+0FAEBF246743F62D280875D052656696AA88DABB918F793CB2994A1ACCFA0CAE
+AF6FDDF489109DEF07F93B5B0078FC5FD9829DD296F62F23400F5DD6CB096557
+EDA737413C744FDBB0615BD40A79EA2929EB7AC767E58D886B310700733D2895
+3925911133631F28291974294AACF4A35F92A5E5262DCF33810A6F9C51E9D141
+F84B0C26B5ADECB44B646C79DD1C656529B7122739C0459B2B47A2C357EF9A36
+2B376DDF54F1F4F133419EF14CCC6010D360DFA8A7B122FFC5A4C560ED184F16
+057D3F76B6B2E935B31B17FC4066916FFBA0B9AFF287D251985AB3FC3D0D7E9A
+91F094356B3D6CDBCB2D74A3FDE23526B22C223EA35C9E5054053B23AF004324
+80F023FCDFDFA6B8F0E03A799D87FC2690C5D1ABB9C52B03402E37309091A1FC
+1D66EB48FE3E4BD326AA65839A9A7276C876F8079C11F2F3A7CBFDAB5AD3D4A3
+8377AE4862F390039E3FBE5D79B5318774B0A9B1321AAFCE8E87568C0AD0E82F
+D4DCEEA5DD4EFDB2E89D336174E76036DA08DE4A26FC63560057B87FDE9E060A
+3AA30E1B447B1E8EF31762C0998DF24B2860CF8B589FCE1050CC259171420306
+F4DAC090E032E4C3E0DD43305541155C1EB135B2093F7E23106387AB7A3DA0E6
+1A835F6D058227003A8C974907CC073F2ADE33AA774165BB24381E65DF19FD6E
+F15BB66BBAB0129C79A80CF32E542B68FFAD1BCBF6A4D867933FBBFA82771E7F
+1B2E677040596B7872A038FF8F23511C33E23D362CED5E303736D1CA28D78AA2
+20701B83020AE62003DC59413C6A2413C593CDC819644742F8CDF60D541710C6
+5A23FFCE6F6CF6AE26953CA4F01A62D6F7DB8F122B30506891DA023D16E56BE4
+84D72EC9DE3B16197B3BF97EB8A840BD2C17861583477317DEA062693B2EA959
+5F5233B416B4E1D63C6014BB96D0718DD9D81A885793F315402E91C274122E5D
+96AF9A05E10DA6276A33E861C006807BBA6B005583CD961491D5F183B62EA558
+C50F25F2F6B211BD3723FF98E01167C48C0A6CCEA0477895D21519AE86FEB4D7
+47C77202688775B4C86882C20D24EBF7AC98A3B9BCBFF750433E17824A4425C5
+7444E5201F1313A4C9FF361FCD9ECB1597C1F0605FEA98DD109C636433920603
+6671529E0E7AE2EC8A7D196FCA784D3CD2F88190B3F150533BAF3CFE15247D01
+864A2552F602D65088AA7F0D87C02768D8FA62930E18702F98558982C5A202AC
+111C6B0359273116F1DF9E5610AC46B99995425144D1352A881C79D9E0042850
+B51B2375DA55C34A47510C7D7435FAE7D391BAEC1F8BC0C93B866E7CE261384C
+6B277C66E817BF006B636AB133309384FE0985DBC34190E1E1ABB3A63892361C
+9970FC5732C7A4259809EEF348E6D3BC6AAB5BB012A098A02E33F9BDDA250A8A
+421EE4EBA46B82C10A5A6ADB2390A7B363CF16A0FFEFAAD7F6D2A80FE4720095
+BD78A6E4B95D6FC7DA4196E61C5FD0F9F37537E6BA581496E38625EF0B7826DF
+F021663E6D5DF3C93C5EC2C5B510867ABFC5404F490C683337EE7B22D3CBE7DC
+8EB4F9F2C25034C8779010A6835ACED2B05B9CF9753760A803073509C71A6372
+3634DB39F894B6EBAA9A34511357F3C106E42E9A6A592C1B49BB0AF668C95448
+9E0968CE39754452648068F82C53CA2ABE392713979634E7DD66819E7B3FF5D3
+A8890FA876857F4560A44029389A6E425ED8DBB25BFDDCFB510C071414760191
+A36723D251F10830B03E21B6FD61C1E92BD630B5EFD283AF248DA69C537D6F0C
+1CDC58032A7A91E836FF66810D886A73453A28044F55F754CD70A9B3EB5D27DF
+51D6E57085AC4487C5D015FC51F840F7DBB1733500062C608802C556F8A4623D
+0F94B67BC91E07FC2AD7E067F3C033E53216804B7371498113125A8CFC63D450
+4760B98ED1397A8862A8FA5D13923D22ABDF48B7F502916EF7C7D6BC52EBA5F7
+AD95E37E4979B7417C8C0E2599E4BB85883AF9E9A3C9DA432859AF9C909DDA53
+8ED9C0B3DC6BF49C5FB81780078209D21E6B54A8E669212B6E3569B615502ECA
+D67BC610E59409178B640ECD0A125371ECAA360FDD5843892BCBD22BF4D640EB
+99515496E12E2C68567610FC8F6E03C176D14B692A9A23BE3B50C2EB30BCE5F4
+481500B293CA54AAE5CA0A85C221493792B967423418E870C4DC7344E07A7E52
+1B2DED4C2FED4C602DCF37065FEE9BDE6D1FD95FEC1F30A5E3A1833B09E6B1DA
+D6A41C57493D4C1D8D87C8BE2443D2B917A0E3D26C324CA101E84369AFA73586
+E499C3627661DCFABF7478DCEF651E33C666957BE759F9DCB9F263AD3FA48BBF
+B47A84A914CFD8297141FF5AD0186753DADAD79315D14C68C19305D73DE6E4DB
+56BDDF037DA982E956F9C3B554E0746178294ABF6F46D1669D1675AEB8C924EB
+F9966956C8AC25940640B8C9DE9A76B36D04806A918FB4F7160503031AEB7DD4
+61C04BD3F6711F09EC71FEB6EA3904FD8AF75054659ECE0DAAEA1A614AAC6574
+9098FB7BD891E65552583AA519C7E4F9E6B5531B2215300CB262F42763BFDF5D
+FA2E6EB7E7F6585C80CD880ABAE340087A781C7EABD56C59A14EC17920FA7AE3
+049BA2DE8D5BB77ADECA23767F842642B7C0CC9AA177990CF0DD00A9DD8458CA
+5506DD3A5E5BCF2329047F560F0E30FCA7CA304594B738A0C7C70D8FE364AF59
+620E6527C061B6FECEBEEF0841969656F1A7A27731338B640A3AF243F58FBBF8
+E8ADA1CCD8DE701243EBA2E1F44C732143BFC4FA89B24B3B473CDC022111D477
+ADDB77AAA600B6C6948133D05EF0838BD1E1EA1C747BDBA8A0BBF92DADE753EE
+9F556D938E16961C2D13E7534B2B5F9EFEB2AFD65FADA831E81237BEDE73F7FA
+B076E562E08D57555B3830834B64E4C1E0E1F89D9A5BFB959032106B1EFEE431
+DC828EB4EF66DEA434DAF191E92F1EFDC31954D055DDD87B1A2762DAD6AE5994
+322DC4FA2FCA4AADC293158C75900C540BC85384340B29A4B25F486145C311D0
+4296CA91BB16569CDAFDC9047D9FC8C26792828DD3CA18E045A2F9B473491501
+CD3ADB57FB1D94C1A0353861EAC98E1630E14BEA6DFB04A5B3FAE97F4EA3C792
+2C9ACBF61A5C14605AC9D0DA7E4D9904C6C6FDFF564723FDE4E72413067055C7
+22946CD598266AE7FBC63FF62068CA4F40B80C8EF9961503F7894AF2A392B595
+376F0CA48B4B23AB7112453DA02274095741C7102733C553B6EFB43A6E1DB0AC
+C320C44357C4C7E98B96B30D9FEE86B7083080F0B6262FD69E07557FD018C1E4
+2CF6A276E789A63A9CEBCC8867E12C60D78B81F7C1AB5592E4AFE1AB1C8ADF1C
+FE8A4773FDC6FC01BF698E5D46B4282983FF16F028D14104423D07047AC7003E
+6B5CD6FC2D30DD0E6162498FF67D4091D68AC65A4658215B845AF706F4B74262
+C3A28732A7E1E786006F544853CCCED8B530ECE3460B11E11CC87B22DC0AB93A
+AB7EC47BCE2BAEF0FC23C9A15C0D421D75AD13D931B8669F1018A207D8C57228
+028FEBB6453827DE33B1CDD0527CC4815CA2CF05CDF4735A1EFB79DED9AA8AC5
+A074DA91B9B860EE88F5269AC4C604DE488C269959A108FC5175637DFFB08DBD
+2AE093CFF20E15AA2624D8E2A141EC3290852E27FBAC6BE21B65CD8036221193
+9967C4A6AD631F2374582F8DA277621961DE7EA41FA110782DD3E1E7CFC51058
+C961948FDBF02A2E7BF0A299EE696F0B98A0C4ABB7CB67AB28A2EF50D3D212AC
+1C51DF3909E484FC3430FF1AB2CD9CE667A9EB489A981A9A02F8F999D9215F5A
+DD609F5DF9519DA3410867680942AAFF2275D255709997653E88CB23D16A110D
+C5C65DC18750D868C8F60E64265C81DD7CD7C2036D13532E3DC7D12600FAAFDE
+EC32EB7989458A220339D451A25E3C4B2D52D265875F06465C913FD75BA30285
+AC61B32BD2C307FCBAF38E14FF6A64C6A5C874A2D7DFE3025E3CD30BA9C60D89
+00BE5411544E97D9791949722F76A99D549D344BC1EB88C9B8BFEB74EC94D190
+F5DE00D2EA0003DECDD4FDEDC0834053AFE3EFF04193E360460A286794D02FDD
+A174E3CE72C69D32C7C4EF33B97CAB2929A26662E4E3C2313469ACB6BD21CAFD
+8C81FBAB0EE7C26BC5B40AC9880623CB5D595A4351BF7848CA3212D74AE449CB
+35BE1BE2C6C795B56D2731C0BC9C5DBCC652F025212C35C50B3937212871472C
+7B6AA7AA075FCE6068BCF7474EE3FCA088733439E5AB06D78F62A574157DFCDC
+43990D8A9673300AF0D2450C2B9B9000BDC9C4A5CE57764A7236370458E8A0D5
+0D777DC1156A9D82D070FFE0DEA2DED3854CB7A09FD34F1B3513821C26FB6F6E
+F3BA660EBB0C08D8B976CB89B4E05C95A20EB2F74F4C1DA67E783E9C936A749A
+E20866E646774E132A0A12BD5907BA8D7FCBACC83004895110BD65223C4A2821
+02C709F5A8E1E9EE3C0C2430D6CDD4AAC32F45093EEB1AE961B1BCAA823E7F55
+0B9E5614DF4B2703532E2260B70062E33F40463B176D7645168DD4AF226B39E5
+8B74BCA01988FCF9475B9935412016704A09A331365D2E745E778331ACAED5E9
+AF662A9D5C7A5FECE76F73EE20E2BBD0647304E75161347291906E7ADB3F2446
+9769F36EEBCEC59167199793122D96428A44A2D8C9B704802543B0569C140134
+8F180AFAAEDC8550B566E6D460544DB84402A9AF79D8A315C53FAFA3A5898B26
+CF8D7EAEF6B7E19B9DDF927B7DAEA9249FFF69872A6C3F4289546E6969D29360
+0A8684B1D5025DDEBF2554248AF53EE9D53F9412CA89F004911834BE96221C1E
+8582F51F1A345ADAD0537938A96E73E35063A2207FF7FFCC55C9F7AEF734D089
+A0693D41848236FCE67E85AD5372C73B61BF5B58CC2D9616FB78144198E65267
+6940C7E3E3381C91C877B7F78B4747F46D12CF347E20C1A2A78BFAF96C42D81F
+16715D7E1FE7E671242791DA7D84D5D885F905093969F3836299BF6874A8B12E
+9E1F3A05D940BFABFDD7D3085AF8A4FD01092C88CB75F4060BD85F2F958DB0A6
+64145DC3DCA6903E0E018A7594BD7114F336D12C61AE4E29138A0165FE21BE5C
+C2F4B9D496ACE81861919BB69DC06E5AEABD3F5E5BDFF3F507BDA4E366BDD481
+05558CE1213A6D28CC2D5D2E5265A754141E312F42B64EA2D51C79C71DA5BC92
+920821C437120A19F9EA3BC48F16073251D458BA53C4C7DDF0035ABB32939C11
+4842DA0E489C7C2025B432B66352C56D78BB8391DA79E75DDEC29588C596BB4D
+67EDF9492B91B83D9F1F26444094D60329A5D3F1BDE976DB2E71B6E4CA9B8EA4
+BF43C91A16A2D9D23E5448C2FA38B8D24D142549E45572A29655C9BD31755718
+A58C3DC4964C0B49791F36809863835CD8E4B196CE8D18D714B2B3AE2BE90C4D
+65C1210B9E3A8F248BAFB0CC5579302F6FC26FC3E197076891FB758B0595DC4E
+7F1EEC99FFB654D46736BCE43BF37DB7681CF7655DF55592B7A494EA541AFFC5
+CE5815E1D989D9E1CE87E116DA4BCB7E16AFAD2327C434AC71EC756B96476BBC
+0C997DC8C439E839EC939B55BEA698E3435BD911258234B6993B3890077DADCA
+4DE92B37E94166A24DABCEAC3BB808557FE09FAAFD6DD316F44952A6710B4824
+6F5B5D4AE9F8A14DD207DFB697D5DC67FC3EBAE49A1A339525ED5ADBFFE58333
+43E8AAD4030869427226950AEEBD11A07815D9C3BBF2570A51D6C0249CCE9026
+B12ECEBAF112069547DBD47B7C8869523AFA7177F6E87F534A5425693DB8AD79
+497B95A90B056F61B6B4A89A7BB23B4F93BF5DAF637D71DDF4F48E34CF347EB4
+12173D9A72526C9B561F6CB2C3D43B0487E09B2C7B1822E9CF5D2D3836553AE5
+5A71793EFB52216CAA4948C203E1EA410B3BA72B6E2059AD04B5ADF54B6A5BD6
+33EDE67267334D9170FF9E7F9802516295D91F1A63EA8433F696E3565EBDDB1F
+1055025C16B5EB6708479CBDE2188D8371EE8863CBCD8533DE37E0242842C0AD
+114045C8B131BA3790146335EE07690C8DCAFE2F61824BE4F109F33486663D45
+24391006E700052BC8E90098BE7B5F13EF5412DAF6BDF0DFE9775FDC185369B1
+C53AAAEB34A9727AF997415595F8EED263C0B1B9448119E705396F6143E8276C
+C6C586E5FA8FF1C6B701578D1399211EA9398DB2A6397F68C7B7E0B6434DD516
+E4F039207D1BE48AD5F63C3E804C2DCEB39E97DA8D1D6E8C73180A916D8923FB
+5EA2430412C28ADEE42F3B6390ADD6159BE501FE3252B6EDE96AAD8035E2C8DA
+B00C25B07488F2BCD84508719DA8D309F8191B86CDC22E73730C9C91B7CD6062
+86032E22F92B948647A3351A31DABAD5F5F8D2C9911892C359471026AC047E49
+BFCC10C17712C6B7123EC9FE3BDF0ADFBA2BEC0A69B18DA231B43BE20694139C
+D6C856E3B7C6907F8BFEAFD753BDD5B50F8B25ACC61C778FE96B229CA7F891C6
+07EAA8551B790D6CAB23C80436A3E2A7F24FE4CDA84AB81AF8D4105E2386F3EF
+D77DD83730332F0F4B176E0C4ABF39ACC995CE3EECCE76C6363557C08F0DC723
+5E2B680D852174AF6BADB73DAF19EB4F921AC61E1FCE16EACABEB591173F687A
+DDD0909654D7A243F4105F8201B6343221DAA1589DB4C496C1F702E0BD3CE68D
+75071205B4D8ED2DF85276A3E53AAA46573771E0868482A2BC805C6A9D6C5480
+E23F690D6FA9CA9600A9F42F7F0EC92853C8FF64E2F137DB193543F78356EC5D
+A090542039B0501650B6184093DDA5CDD52B6F8CE4460AC781C2F93EA339F10C
+4921774575EDAB301E387C5A9200679ED86127611043364A319CB0C68B6FE176
+B0BA672AB3DE3F2B14A9E7C8CEA1DF76C716FD53CBFE583D1D0D20D0062A3DE2
+689408AE3D527703C591BA8C9982607CC08384A1049A1B328846A719FCA05D38
+087619AE510325FBDC54307AA468827EC8D84A19376740210EE95E5844872259
+7E2A055BFDC40D3C12946ACFE8CF26095719C3E10670A10417679DA5639B4175
+9DF86246392C78E114D745B9FCBE5D4D33E4E5935E6D4EB9F00F408045AAAB98
+47E445AE32BFAFF24107A37EDE0E9BA08934370E212F39035BA2AA51E2D711F4
+6D7215A05F5AD11422C9E8F65B80405D29CCDEE79165F59EBED93F9EB264792D
+35F8C1FD095F18511EB516DB40AC15B6045D2A24A2B910EF3A632278208A0D66
+E19963591F45FD61AC0183CD5D4C5C1C8D69020874EF6079376801145636901B
+D9EA1E35EF1E6B37D257D5B90862CED7C0D1F1B32C5324A28716EAC93B556BE4
+C2716C85ACD7AF85D52DA2E33312C42A6B7F28797BE80102E37B7F9C933BBE85
+121C64FCA542C6D5B7FA7FCB7CD0C41295625FA2D99E6FFC4D08450EE7C1EE81
+BC356927FF6F5AB869D083929EC1A643515702F602AB140A410378A65A721DE8
+1BE9F270589F468D5D2003FAC662A907296302C873DE919466A128FBECF122AE
+6259456457D21A217D359EFFF23758BB537BD97472F22EC4EBE932F762884EAB
+5D59AAC0097E2EE5A9EF77B1E0376AECE3AA529E5E518A24569007F5DB2F27BB
+776BFF2348E9B2E9AB0B07B9BDBCA49E37E11E2980754CEF43ADCBBF32B9575A
+C611F4AEBEB5A718524AB25FEA08E9E913E24FD94AB4E2E4FEFEF29C7A70055B
+5FA0FA771D485CADF65EFFDD9B6897F675598532D8E974CB042BC7DD6B5A4B99
+F5D36E27D80AAA8417465223649E44E28D5AFABE693265DED4FE7711BB4BA083
+DC71244042798FE7E1965A469B8F8202DEB7C563F43A7E17A088FA36180AEDDE
+345A2D7705A5ECEE8E305218791D9956DB2E848E422291D7E2E249329246BE92
+892554EBAC59949D310F38819EDCCAB09F4DCB80144604F8F1F43447138B311C
+FCA400AD225FEF31D3B0F6A5E8DF91E4FBC39C93DDD11A2E54D1B8ECF5F386B8
+FD0DA95AE3E981FB36D9FA0344D6D41CCBE8F2320539411FA23360B88ECB4D38
+FADCAABE8049B06887D053FBF3ECC8A89BDE4A9F1ED7F6629866FA14ABAA2924
+9BDB9D6C93F6080593A4BBC0CE2567813B2AD04C99FB09443A684E644BA51B9E
+9480AE4AB2148A081F6BCE154261D4B0F03864C6F79DBD622EF471A844048766
+6A872C8E99A82CB468B6FA50260CDD90B81CCB48A6F3BCE3865AE56A86569E23
+16B13DD6114D98293C0DF2585F4E2D01E5EC8E43DD6FFE027E2F0C9CC360BE2B
+823DAB713978E73D7AA80DF69CADA74D8E23D902B9DA35EA2BC9D03AEF265D54
+79E86089AC4E8312FB9CE325D8DC9E4DB22BC048CD1F0EFCD64E62B785D97685
+6A34EB62E657BB2F3658B1EA87B4C07C45C8D8283BD35634EC67399AB00AA2F4
+A15A723E8EF9AD000007ADE862D7ADFF32A907D40BF9491FE05BCEADFDB83187
+2825ABF2EF18608411F9E31C3306B37E245F1571155D5651BA291AE16EBC0390
+FEEF8EDA9B9EAB02F1D3BABA0C4DE4FD20FEBC2DDA743FA0C32F7A746FBFAB22
+27B2B8547359B5EC413F98024A5574F48349213502D0F1C71093EF2AF2A7EE88
+67332DDCB9D9652B705E9D2ED1BEF1B9699D84F9B8520DDE2609F752E8D77F8D
+ECF010C2F18EA526B4E2EAE1694834494990A4AFAF57286E171E4053788F3B2A
+B7A2DDF04308E47448A06C66E987C2BEE43B5FD8890A1E11FCF4E0548E201941
+8437B4BC7A92174B7D5D8F4E9E98F48779968F00803F2FF59B1764EE197873EE
+D1DFF6B12B54459FB5A6864CA9D73B89ADCBDBCA2DAAD3B42C4A9175F503F21D
+C48D5145E2C6AA7D7FD787BC0D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -2028,271 +2024,274 @@ A208ED52A9684A802003AAD6D9FCD5A3CF635FCC938931CB94C751212CCCDA6E
6EAD4AEF60B83DB1E356D7B6844375FB3AAA0389F56D070F426C759ECD2F970B
2E65032797BEE2FFDD78CF0B7C9684F6EB8FAAB6502F4676CA8F23D37CC4D4A3
42EFDCFAC381E4B95D63E26FAC8DC58232288CDF0A98F076816242E68A3C3189
-9B293751D51E7582AAD19F4E575CFC301E8BDCD72F85C1BD69BC0180C1D871B4
-29AC63BB64E6B4F285AF1B0CE241C9658286523DEF4107AB12CABD9576D33F44
-493E76711E0E75D532025539810B03BE39B802AB13458A02D7815F75CE5E621F
-5ECACF9B00ADFA4652530425A808B4B65B60DD4EAC947E4FA3ECF5BE3D91559D
-6A9B0F16ACC5294AFD284ECF519B6612D9BADD8EF7911723F1786F2AD7D171F6
-B55F98D80F8D65CF39EF1C58A76A8649816FD7AA1E8B091939845DD338CA2C02
-6ACBE870783FB4D5CD36267F4A4CF2527DE0060978524E869DE7CDAF056FBB81
-84D3FCD9D1E6F076892137B190CF20066D1E05ACF410A0024505E97EA6202686
-62EBB56DE57D3298558C9EC9489312450A6D02E0490C88FC657EE2005040AE5A
-2B4BDDD4BE2706EEAB70C3163CCEC2C2D346E10B50E82EEA4564A96AC436C0B7
-54E3D9AE06257502FC0A4F9AECF410779E47492F48C8DF69D211AB390467F1A9
-2B8C820F50E0608EE015D80DB22D2067608759F0CF469C6D45CE48E1E67C2843
-3B6024D1D1828CBEA138A6F089389E6BE0CC0C1963E788E2696F4A950481DFC5
-BBA53DC81D7AD91FDEE11146D8E242F098477E69BDA5D990386316D7224884D6
-35F5C2AF00236F13FB8986ADC4518CDC93C2D1E1D256FA0DAA14577C61D4F6F6
-5BF08537E60599F7084EC51099B9463A0FE88BD4496BDB5F853FFC53424B0608
-E8F821F943CC9B3F3911C3E13931272E2A99258DB306F5F01397A7D9D00F7858
-CBAE627A78842ACFDBB3EAC00A0AB5B4C1BA5AC3FE5E11E5FE389932B09055D7
-BCF80F8A50586E33F48844F5DFFCE3A7217597CF16952229F2CE5A20C0736A0B
-2E280594E7EC9EEDBDF338A52DA3A8C3ED7FA85BA0DE4B080E0708588321D2EE
-1B9FFA8678E1A8FC5B7FA8322EBA857D5991F76DD9B171B3AA8D7CA3C932DCF2
-6432D88A9F8B3982D26595491C3B5563DE6FE8BCF41C162B61C716FE00397BCB
-5DD42814590FA24014282794104D8F27676053805A311B795469644BE6CF35F5
-EAD2C4382ACD7D250F2E1F6C814DCE68855536638B96159A3B9661FE9B3028A4
-9E064166B8D39BE15834E40875CCEA8FF08F344A3E2BE9CE9086A5CDB973F6DC
-3A214DC1AF1F81555AC450679150E02440198BD0D9D386A6E6B4855E6F9719B3
-AA4DFFCBA16DAE0CC848A4FA97E5F040352A8775A4B6025EF8D9A8FD61CC81A1
-A0B7BFEF55F765592DB8347B2ABA20A3AAADB88B030DACD939E1E70DCF5A887B
-7B65F09168F08A6D1CD30FE0F0770A9DA4B23EC783F0D9C95DC0A6354913BE9D
-D5522D1C35D993A36D8225A148BA8867F6538B583FF2E1EA5A6C8572F4AF834A
-431BD595B9C5D1ECD00326CA1A9EDC1B1195A15D3DE3B6D1049124BF7E911769
-FCC5D21ADB72B794F1AB56F08CA339026AF6D991713F6B4A1DB4A233BC571717
-A15A691E9DC191E6E2450B8F57469D1A00726E74CF8850F4812D93CFAF924D27
-D9B39963B01946F06A6EA9E2A6724232C4081CFA933436A8892406D2E7AF1B75
-D75D837D5B0A84E908B65705071912657FF16B480A4DBE894300749A16DF2833
-E0EBD750D22F28F6E958693BBEF81D635E8F1E60CBD720E853177EC41C17C1F2
-5FEBA206EE5234A246D731516AA0AEB5915E3AD101B7ACF69CA24706F9ADB04A
-2AF8E90402B5762D04DAC08EC4799554724471EBF446E7F6C9759E6D4E268724
-115153F8532A844B933E6CD4F61D43A2BA73AA53ED9F2A905299ED8EC3AA7215
-BAF9E131E4F80FEB1DC72B3086A15D5EFF32B0F5A8DCD30BBDC1047ACC79605C
-BA4F1E4138F8632E78E00E6B22C76241D1E88868D6785A39219BF6AEF386B42A
-DDB156A7BECE2B3234896551C894062D156328B803979A4DFEBBFAD3E1E039CF
-0075DA923DF2A6380A6141121D9AA40FD735A158AAFEA4D64F893256C114F231
-574D2F16C2668E4E45E3CA3B181012D5323C7EE1A92A01C2AC0AE30AD5086B20
-C96310A4537301E1D9DAF410467722F5BE87FCAE624562B5DE40B033C759F8EA
-B2734A2A2041C0BB44C5CDD3EEA3576A77BC2C39B7BCA32F8900CA40B542B837
-9DDFBDB5B325B38672F22B23F51A20E4303DF98CFCF59BA2D0AD5DD866530F01
-B410B62607CAD08422108A83920F767E4A45538AA2DA3148B87CAECD16F4CF55
-2806C64FA88AF9027565132309B5A51025B8CE6F17CCEE3BAED7011D4677D075
-4A63193C4B501D80C1E31904B2B3E8B7A01F3F85FF742B0A13D2D3570984E262
-2C92F7C9DD4FB1E1A7B61AFD0193AA1C24C800B2CB92969DEC6D24DEA026B30B
-E7CBA45177A45CAF5629B783C030163703FE5FEF406420F441D972FCA1DEFA21
-195264C0A104B847B66C556D2BF35A317AE0990670F86F3CCFECC3791F9E56EC
-B145F67A503447EE875795498242E2F35F8814A2D494208851E6A206EBF4AC47
-1C85EE20386C9B22CFAB59389D427A12B8F62678C51D128FF14942925DE6C3D7
-274176D06D7F2E4295400606478DBE1E75F8AA7F482285897AB1992DF462DCD3
-482C05E7FA03AC3CD445C79EC43C9BB6CB845CDBEFB0A0DDF9AA38911D0BAB55
-FD831183B737A738EDF8F5BE2817BBAB1AA8459A01977B76F7100A30C580439C
-EE6EEED014D41B3FB226AF22BF9D001E3EF2779E4504C648BFE7932E6BC42B23
-F4B30FED418B8FC6AE909169A0A045D4DD170AD5B4572D2110C5D546532E4071
-2278C9CC0EF6746F8DC75DEEE4D7B14E464862A414EB912CAD09A06065E82162
-4175203ECA375560F62B0C27BA57EF65D843E8A3C692BD481560B1CF971730BD
-0188E4FBF3D0A1B0F9C1D4C0FBEC598EA6EA1B1FD4BFE3610500BEF50EBB5B05
-389B149385313B3F3E4CF65EBD53220CC81C1023C4455C11574B3636C1964A4A
-A5EFAD4C41D06FD44F281E112F1401BCD2B9EF2F9D244EA5F2CCD5B900CF324A
-B97268F3564F0B5F73D18DFAA8DEFE4C4A886D5B8D58E0853058B8704F6F44F3
-0BD42EEBB38C5B7907B4F48F63796E183B14D8D337C9B5B84A2B88038F6D7678
-F286C8FCDD0328716D483B8A813FABCE8BC2C7195BC0CA833B34B65C98826F3A
-422E60407C681903403747CA0238E90DBA1677598AC8AE992A6314B28BE29B78
-478FCA65793BCC02310803F60B142F2DD9B219DC8A79C537DCED3EDBA677638D
-C2CD9B29FD96FF384B147380E0EFDCF1A5B6B6FBC4C44DD72F6E781D5C6C76EF
-227ADA8B8A2E6D172BEE63F361FD00DD992095A386B1124E40D90CC946779602
-8A65D2B4FD14874121B4839E848B3DF70BC60BF4E04D9F2852BC48E16B1D35FD
-F7DDEE0FEF8950CAF10CB6F1A50FFE74B4B55D2974E1AA5B0EB3B9D6976D7A7E
-1BB9B9121BA8E367B123BEC64D3FA53001DF59917935EEBC0D9475A9F54281CA
-1FCC265496F1B1BD3B8627458FF0058D670296C666F26340F7F117E23AF6399D
-6916E874FB63739188AEFB38442C49CC4943299F521E32153D5C4442BBC16147
-42720BEC8B068C579C4EFFAAE8F96738A1137DC9C20CF23463AD692547820C46
-0A782C06A370FE6246E22C481076C366753439B6CE9A230BEB52E6B4AF45A9A0
-C26810B594F3A9E0662544A92A90744808F8C4A4C962E4C1D0E39F0F4BEBB95C
-CDB0F08F23335159FBB51577FBF27A778D97BF5565BD0EDC997DF7F29AF3C103
-148A2A20082C61ADE0663454087D5E6BC74E43A9C232C4CF6F912E203D82DBC4
-CD2EF6359E7C758896F3036C37012335A08A5BF506277B31C255AA6CDB380B94
-A0C6EA590035765131E6032050A9E07BF66A23EC6F414BAA50DE3CE5E18E875C
-A7D1AABFD7EF30A34AEA87B36D8465CCD6A027B87CFF2A2CAD98EBDA0C24FC3C
-2594B560EBABCC9FF40CF56F19B4066A3D469C963E5128EB16FFFAB62E975B19
-70DC9EBEE56F14DE5444B76B2031DFC03D3A9DEFC0980DAECEB02E1A36FA77D7
-7CDFFD2C94B0D250F8E70415DA72D3F2117384B5BDADFFFC3F25446A5F845CE6
-E9AAA0B316D15CB8025ED0ED3882D2EBEFC6E93F4E58E5B4D6E904958E6CAB79
-30B28FC4314D24F20F00DB8F39BB208540B24CA419AD1A491FD6CAEDEB23333E
-602367F8FEA628AC535EA9F0BE0476B8C57BC56756C6B44829EC75C8A09134FD
-0AB4B6D1268F94C1973E781172FC066CE1FB2FC39B3B20F420B664A5CAB14EE9
-D0D216C2847C427F8825F859D8D9289BD8C912A16DF327EC4CB41F8A2B8D2F01
-585C4616FBF6B25E50EEFFD4494C808304B36714A82269007101446AD43277BE
-4AC365CF6CB93EB047A73D4378087BF09AC717CE489A16E1D36B89116D3EA8C4
-5CBE0A9F629795FCDBAC49D2E3577E32779C33CD82F74A78800D868E302957D7
-B766FE1D26467E86A4881125608881EA7C5697E1E8AD377D514BDFF9A1BF1566
-8A43C39EC482B6F20AFA8DEC15B7F444BD717E984AF6A37C99DECC94BF2B8A30
-1F03A05752C8AF0879168D70562B63022C61B23BC115B1D92DEC97F2978B28DA
-7DD4AB976BA0F0FD9BEA14F4E3D3304E95CDA39F9BB85EDBDBC28BFED6C80A66
-B9613AE5F1FB97B0D5E78290B367CD0A34061830EC30CDE6C6AFCBAB9323677F
-45959F7FD0608ABB2F1B8931A91A6D1DA51BEDC8037F421FA53758B4AB91E28C
-0789FE95B0C897CEE807B3F1EA03110300CB738E8B3C38E90D159A1E85407869
-87FC294E89F8DC85C1A5545D74BB35A48144EA434A933F1E403C4FF0415FE13B
-D8B841C74816764E9A32230DF236FDA89EAAE9406CE0E33E672388EE47666F70
-5107D107E089D1FC113ACF6730DDC765049F6D6C657A99C14C8D560D6961BF89
-F1DDE04EDB867BA7667A54700F995ABDE094D67152BB4E4A191AD52404ADB97A
-B6A50585C7618399A94407224DF225E0627E2F377CE95DBACEC28F277099E40F
-0474D56C1E5D6CFB36078F2FD96B34DA83F14FA6AFBEE67C0E335C844D4988D6
-8B9BB4E646B814B25479081F0FB82F5AC6BB2932EF1046269ABFC9CCE8C77548
-36DC56E43A2BEA3643E44E273DE5B0E76DB139A0C0A42450E5DA96C6C99A64B9
-A9FDDCA3DF9A560889D798ACF492A433C6DF6D22480BB0A78C347B307114DEFB
-2B81CCE915E07EC11F829265F88F8407B4545A030AA909082ACCD43E0FFB25D0
-76148792B7902E41CF04BC63A67F6C17493B2607CF7CEC2EBEFE697C1724D927
-5CC49FD9F51A61A838D5B6330F0A48E248893201F8931B663668DA04545F38C9
-6ADBD9A42A47151B4FD5C37ACDB0D7305D67AFE9B8B90F52065A1C9E7C4D1A4D
-F933C37C617FE0130094B11E337F718C43FF041110DE150023E5AAF163A03084
-C59FC78FB50DA0EC4ABFFD70FA1F7FF9E1399D983446D500C86F6C59EE97C4E5
-A429A0F2C0BEB819D3618E126CECF45E27AC02768692437C632D19C5F92327FC
-60D68C595725D3394659B7D89F0A95D62D8A66B49396A110BF64707AD6FE4E1C
-2457C86C83D2A174D3DCD73FF023F13E94710E3491F5FEF7A6723EF7AA201B88
-3D3709B4C9CE187F16D838853A0F6A84F13246BCF4E923ABA3AF52F4346A9518
-40F55F93D88E6A2A41DE8FB279F165131D1C6AD203D04723482F714688F8299F
-BCCFFF3C9C7E6523CEEE130E4878D392C2E2E2F2274B2FD9DE63E65B7A263C77
-74C290265FA2B3ADFBF425D59A43CA8A0FFAA114FD1F912B9950BC4CC0A6E236
-C40E2BE21E4D21AC0B9EB1DFB56940AA6F1FE1F15CA9EC254D963BDDD4A522F6
-94D6DB74970D2E8DFBC51D4642FEA8279BFEBFF8BDEE03578C26E700548D6E0F
-D514C2EAF8DA61BAB330EC647A939374D913ACD6673D6E931A620EB84E3DF5D5
-8BB91EFB4C22FC96F27786C9959EC5BEABADB9E216D4F3B57BF1E377D7D1385F
-68DD7FB703F5713CC2D9E4067488B863436DCFF55D2950124E18F87DB83791C9
-72F5B9F39CCE7A05C2432845CA869A271753DFA0025FE7514EA09DA99365EE62
-3C98B603FABDB4CB421F625A4CD82049F402C455DB2841B066F40085E497BA62
-BD35AEE50F51E6B434E6DCD2EF90B42A1E9FEA21B8C99E21FA1D5D5FC28F9797
-873A2FA8371A7DA96D8859C7E9CD7B688F9A23BC7B62290213D19424D2515D7A
-383F8BDAA8D76836096DAF29CCF7B51C200266D5510ED2F9131444C4D8BB571B
-EBC0C77EDDF79956BC1D8A01EEB3B83D52D156A650B13F1D5054C8279E0D5458
-16F8518EFD81BCA14DE678E3A1385CE39BAAC3005F16AFF7CED554577ABCC7BD
-AEB60BF6E98BA2C46E4389E247F0816383103594FC218540348E32B66E2CF7E5
-820494111AF1A2D2739A9F6D9D11DDB8EE0F92368A0B5006070EE15239E566AE
-032B6CEA0798E76644A4989AF332A5731B2BFB71BAB1F0AF77B88050B14E5CEA
-B6A7C010EDDCE8E9AB9E074A675B8B6DBE76AFC5FD2794FBBBD0199E00E031A5
-F8BF616BFD5775896B7FE4C0167AA435605A8AC86820D10A82F172C8D3056D8D
-C4EAFC3824B4E508E050D8B04485DBB016CA08C41F41008E327DCD775732893B
-B32719F5B323D0C448E9077687AA52208B886472AF2C3D32104486BAC57ED9AD
-EA6C496CBD0402BDCEDBE0BC0F2E5DCE0173D4295F0A6A64BC91ECD30BDFC7BE
-B61E0F00651B9E77714A7005B1343B4A3307ECC0A2FE1078A775B66FF250D7D0
-AFC71E3194F19FA4BAA305E1B728A28E5C6283B9B59B88C874F4B792F4FAC98C
-929EEAFA2861E5146C988CB334EEF702140F956617025D3A9277C8684971F7F2
-3DED17E68275C6E02634F0C7FE54515EC9608F4AAD08648AAB819778A5A49B12
-8D37D277ECBB796779E1604D12464026C58EC5078097CDDE149A36940EBDED9C
-B9D85362D5F8A2373979D4EC849A803E25394973BAB1987EB84F5A4B0DCB1546
-A8079EF9F9FF53F2627283E47E814EFF1BF808872BFBEADD5F0E59E5EFE3414B
-C473CD84E9C5C786D57DA240060618D1BEFA19CAD721C849F4EDFE61EBC5F845
-46E4E4EC253714BE81B50AE3F7988BA94F302E6D8FC4EC497D6EEEF44C5AAC16
-E173553CD5EE65038CF1326AB2718D6EADEC5C901ECF04D3777369FCBD20B929
-FF472729A0793B4597A81364D91CE416F4FA78FD03739BDF796704071E6CA58A
-2F496B6C2987C7DD12121FF1894BE614216FB465FDFB2E2ACCD182AECC7D01D1
-1FCCB5AA63B69486DD5540846B786FE54056BB60DDDFCFB4F7AF0C6C0834A0FF
-835F751E60561109D628503937399CC8D8F264AE71F183DFF1D8B07823714F20
-F514146CF945FBFD953553169A654DB183DC8C83600EF2C2BE0B200FB20DB604
-F5D3C8091FA066B8CBBCE4443A889BD5C9D2651707832ABC1B8B2C2FD1C29025
-FB48BC7A3EA273CFEF1E03A3953EF9BA0B20CF5927DA061586E4EB1582500E09
-5A7E6C46164997E48B0DDB56F429FEDAE8D29E683F8367442B1906D23574A8B4
-EEC2C0709646CFC2CE3E01B96BE3D7B00024D7C5BB74654E3A4B87BCFB86C63C
-F4D7619DF568C184993E51902A7F9F38B2540FCD9B46AAD44380919E931DF436
-F712B973A641BCD336DC7B67FA411500D7867F86D926F541B7572A0413FBE788
-4360203C36C5867812D3B44D54DF7BAAFB823597E6CC60902729BB956D2E682A
-55CAACF596C73930167F8C984DDE9FBEA620DE0D08D018D61584D9B25EDA3565
-EDF9D800FE84AD6186ABFAAEC6277E0AEA3628E9CAD817F5CEA33A30FE3EA14C
-D83822AB9C8D6623143314C284A0590D32184D3186D63CF8A5F79459518DB39B
-D164795BB5C84950DCCA976551D40CDD62852C860310B5A59ADCA296F1596924
-75E16C4ADBF3DBE28E1815A6E770A47DA53E94721BA678C054F2817FD44B30F5
-D51E5D2368E59F3FB911582851F5A030C1042CD31B77222A490882428E81F26C
-70BB082E265B5F199B29661B95542D766F0B0FC5A9F814C6B5386D285B809346
-BFDA6A762B7BC0026D472E417E9E7266A7281256BEB054D6B4872DC64E144CB4
-F737AB7F014466FCD41DF79C6686112DA89BD0D29AA3FA559A2BC19ADC89F884
-5C2B294889ED373ABC2301C2DD1DFC0D51671B9D7D220D4386CE5A23C4C4E857
-07E5A7EAF6DF73C712D23E24E9C7A2D80F6147A9665C9178C91B3C40911B9393
-08BA1952EC21A8378DA8FAA8CD751A2913AD8B744B640FFBB66C2CD68644E0D8
-5E24B33F5669F6A8562012FDF6578C814EE05377712F7A74E0D602AF487E298B
-FACAC20A401BA6CD3807E9F7DE10CF36B689F46BD14ADD3C574445CEB0671B91
-010858ECDD461FF2CF713F561372BA84C3EC5B00CBCEB4AE4994506F6F4456F5
-5E26867F6535650C6682FE58333E6791642F00ECFCD856C6A09DB7A237EA903D
-1E1B438E00848852B3C2B9C315B74309BD50BF6E7C203DA049BED675D4049DB5
-10C4276285D754A6F3E754E98CF96DFFE52A34E316720652FE5CC9A0AE6975F6
-9E31E137BAAD6678E7989A7A806EDAF3A0E1167FBA787CD9B9ABA1E80CB62AC5
-785FCD591C4FF54A861933FCD6ED065345266AD82D10D5924EB9B7C3AABD9C7C
-513DC51709B815022AF3C0AF34E49FD99CE592B595AD7132C93634909209100D
-463A20C4361454C1A4760B09736385B0B39D1A3E823CB3145A7770CA823EAE28
-90AEAF81BFF978634953B02F58E89CFBA6900A099171DE2AB435391DB7587644
-65328E1D61013B23F4F094B31A8DBB86AAA939D1FA8D75A72B1FBB00D13B3F1C
-B339F7AD3CB8AE253DF7F4F3B399605CDDE708B148E3C0C5AD208502324BBE18
-A5A486825D8DD5DDF85036572B0DDA791AC650C705F46DFC590A6F3426DDF7C5
-2A079D8D089C99E1600600E7BBB79BF4419776773BC08163E13D6A05AD80614C
-CB02CFB6A86942BBA32F01C7B84F0F6685B75EFF1B413C0F58E5B03F10F286E9
-6B988C313040CAFF7F18E0A43D86175B65CEBCC3B4C07E56F05DF620937D7321
-886A7F6AB6E462572EB69C9559B3C82C7641CF750CB6B2D28433E2943B3213C9
-5CCBA6D90C5897256116A3F15ADE3E6A751B2A2F0CFB60148A5C71FC0964B9DA
-15C23FA6B14C168B512300A24C9C001375B3FC6A1C7CFC09A61D8ED089052150
-4578358876149C5DECC2C612186BB7981C2A11CD99FE26D44EDDCA89E71ACE47
-81B076C12384E855F6698FA2515C65407A15A585CA438CD1C2C615D2EFA298F0
-464331837B45A383E9A2E8C663810B3AE1258642741FC0CBCD05BE52FA290E26
-2D2FF964091850BBE5D1582BA6CA5A555C2C8E55E8D56955DD48314CC8BA1851
-EE75DED90DACA301A6A85B5703E01DBFAE4DD7AAC249DC86615A3F99237EA745
-E850B87C30C64ADC874028EFFC3119F423606A23710D0BA80B1108A187AF5937
-5E316AA55E9AD9A478CD10D50B71A8497D3C1F53328B0DEF1C6D21A53181D62A
-5EDF953288250964446508ED06DFC0B165B46F4A5E3A7F381B47A5F94A0883DE
-7695CB39203E1BBF91976CB314CA6E247F35539ED40A995DF6119BE2F29FD693
-AE193119649AFAE8B6367D2295C353C9D3FBF01D145EF6628F920D4FCF67115D
-71259E3AF555A29A77935A94C97CD6A2F52716559AC73E5818EC15936B0322F2
-43A353B47F7842C3919E38892565747F5B1B0855E3D531B8603AB914A2885F41
-D2391864960361689DA8A1FE2EF26DADCD18445B5743F1AB744446E11F8FFF63
-995B7A0A48902C1BF963B81B5209D55C3ADF80398D0D57D9034283C48DD96E67
-C5B56FF59884C9399808E7E7C5D7E773DBB2DB168EE4668446681DC429130D97
-17067D28A3639CD643D2F87A25C44962538E82C2591DE2F5A29B2FC1FF8B9D8E
-830A9F5B15D0CB57FA9A803765C598BFDB51B55B5E8FD76F8F65231C2E478C20
-18F9A237CDAFFF986CDEF61D30C8BA87440220C0777111DAB353AD4118BAAA3F
-BD76BE63F22DD456C1EB7793AEFA3827A73E887AD2B1307F6E81B48EDB105419
-A2BF1F715B73ECF7733516639F6FB7E558C6C28E945256A422CF94AF182FDB1C
-384EC08E3D7F5D06FB49E00430EE06C6838AA8FBA740957784DD199FD2E9BC6F
-3D8542CBFD7485BEEBF76C2FA18D5AFD2EE239F54AE861B685FD00E6125D701C
-22BC8780C4CACB241DDCB77934A1735B01482CA3738212C39E6F9B5561800F58
-C5C1953F95B4769FF0370F9B922EB647E138222061E75AAE9873E7BA6A4AE756
-8E9A885753CE75078EDC94A365E28C479804D0C36BA39F5D1F02BCF6722DC36A
-DCD0B89271665266650E391AFFFDFA75E693AF1B918267F11DB1D1E55A4D651B
-4B83DAC0DAA849FA1F55F4DC4A8BE1D4BD6D8585C9A892E4D4AE26383F5328E2
-C08FF079DA850B45F1339D9A94A271A2F683A619EECDD5A357FF85FBB5824ABB
-39396D0D96FD99D9D9743F2168F8C1D0ACA41F6909A49CD4DA9F9E265097E0CC
-2AA552CB9E19779DCCBF7A76D71CB27FF30CC6EC4E6C7F9669F95111015C20C8
-0F0C5314804C0D5D8D5B7D74CDEA322F7B51AC3F7AB5058B6DCFAC33B1CD0DCB
-6CB4E7DB7537F7AE5B828A141A612933FAEE43AB160823F34C0672CBCB80EDA6
-2AB7D719B9A6BE29CBFAAC47336F453AA907CF3B6E8D7FF4BB43FF44498AC4F5
-BB7DBD6DE4B2B3792DC1A9C552CE4BF4D6BABC2C3A11F32622022F51D665FD2A
-0078CC6D15CDA90EDDF91A7F2956A11C03478D5F54997BA2F71796B524974336
-5D2F6442D67D3F7AE78B853A5306FC9540C873083A8177891DB4D228095523EA
-C16AC4E8E62422D93F27AA80C195C9F5941E0672CA120290AB23EF8BF5F56F5D
-458C245296DA0FAFD6DD159A89EB24CA38659E9EEA2B2CB2648D8F6CB0B1FD32
-6A1D9F236D6B166CB49FBD7C8875DE08FC6FA10D26E6A4FFAD94A620F4F94488
-F2A4B1773B6BF3CD0876F87D0CCD19227968EB33FA313773ADE29BFD69E91203
-E294ADED630580A5669A1892F27EF26006A707A3E66DE7071A82191B69D05AEF
-75CEC8910E439305DC9986005691CDF05951F454CD2E1CA7F92503B3C87EA23F
-60C2E37F76132B0690F262077AB47694F0151898EF6F432D9A6CD73885F2C5AB
-57D3800E45CE7011D65B9F3343F1F438DA3B63F111C3C5CD619C4C2DE89561F2
-9F7FD0AA3BC9357930DA4A82DDEEA685CBFECB6FE7D6DD5559FA2C4AAB94CA34
-3E23685944DB6C55CD2F1E74D0D3C0E4E9025BADBF4CD7F52DE8BBA4AEDC669E
-A4DD2BF21C1AF636DEE51B180AFCF993A33B59E967FFB551F4305656268BA952
-997ED1A8696ECBC4708039169695BD332C1E7A089A54F96ED5915DD75AC52707
-517ECD5CBD5F21A5CFC3573D889E30200F9E52CB35A5AFC0ED57A620A8597096
-D03D9C5B217C3CE502BBA73B0642F612AA19F1278A704F3B488DB397A0D673AF
-A2046D8C1CB06B8C3BD389E8855E0B43D705832AF415C3B2338C5267FEB382D5
-735F288C177AF742347FCC76AFB650ADE48CCB4B5544E05BF9CA8DB89F393E01
-B3CDD0721DFB11300BAC7D3A55C772AA8EFF5EAF18DB6399C8FFC93EF0CCCD8C
-BA4082BDAEAE0CC9A1E753F58C4C7E3DB4F70809BA7096D228B8E38A4BB01B1A
-F568CA003CC2C7DEE8ACFE0BAF71717822CA654E9935548F88ACDB3BC123A340
-FCF823EE9C0EBF7273268424745EF9E7B6DF2FA55B258C61EB8544AB3F909B58
-FC1B4A41F17187A9333821BC4FF44305530CDFDA14DC1CF267A3658D6B1E6A87
-023D6B300F000D55AB02FAA24F40F8E1976B1471CEE988638E2E06CEA73E7156
-ED2CBCB52D79B20A263E3FB9D73957DA47634419819A801D40D985B24E28F0D2
-04FDDA67FF546A0B32AB483E261B6D604019CB686F255C69E54019C79B2E18D5
-678D50672FE8BD02DA01AD947CEFAD69A1DF1EBC5CA112AC077354B2DB5169A6
-836583C79B9863279ADECF97F2D09F8728C15958220297C43DF1DB15257C970F
-A68D43B004059E422FD37C458F98D8ED3764529765903D8938AFB452F14D818A
-927BFEB85EAE7B3889DE3AB3FDE0F8EFC3B88AF700002CFCAFFFFF26E7B1E6F4
-FC2509373F8311D361F57FDCD828D2CB06AF9F39F7F9D0274ABC16E1C5657C0D
-084C4DAC3C166CBCFF1D7DCCB1BC40A69B
+9B2F6F8F06DF0A52211E3953A57A51EE1327E6C519A50F2B0857987530CA262F
+A7634CBCBE1BABB7EF1917AD836C66FB19A1C993ACEA40D291AA07755E5F4CE3
+877EA9256745044ED37695871840F5FD39ECC03B9A65955C2886E773F51BA327
+36D4B9077056B5C4D31075BDB84D95F39217123A292CCD32F072F3DFFFB937F1
+7A543C93033C9BE51423EAF43AFE5D40F75C7614C707D898342BF2E84E557470
+A08F92931617AF53A9E90036C4E235DF6C8A66366558DEEDBC6267DDB46D1DDB
+B943EF9381859201FA74BC1EE0D11E52A75D89678663CAF13969A433B817D0BF
+AFE672FD7B7E0E318140A2E18A2829FB9BF621B9519FD20B415F338E2DAAB087
+FD4F4FCB88E7AF5C24C95D596F35D46AE8075E7AF122CBFD661A144081C53AC8
+AEB6F0121693634DD7514440936609024EA1609687A6BCF2AAF1302FB5D59126
+E724B35374577B44AD979B36CCD696E4B8C86B659C7A07C12F1B07DF63902F46
+DB26E527586481898BA0C1C4D0343E72D90C446446C5A5BA75B6D6E3A45646E2
+6161A12398845D942EC234685037E7FD00EB78E2DDFEB6FBF29EB0D2507ED3E5
+645F4CF42B5164A3052755B879329C913274965209606A41AA739A8072E3C7A3
+68B2E9B1FD527C93AF479C377271D51821315A483ADBE61E4E5B8AD254E17DF9
+4D4832CED4009A88EF7A13CE454500545B81911091C6965B384A8F8AF977318E
+3F5C7120A28882A2176C5B815E337C52FA5A66BEB55528A34FAADB58884EA98C
+D8226D65ECF97382A37C9D02350C87F7D9E050D45814D2DC6B2490EA5A19D366
+10D06715C71F9505F9169A3B210B1B8ADCF919A2CFC751BFC47AA8132F660073
+5C6C9629E8DF4A06AC8FD77039C5B292BA00600E039217297C519FA7CDC5171E
+5B8E1DD51B4DFBBCC7BEB3AF99C723F4C6148F6F4187E15C9A5C5F24A565722B
+FE9DFBA7CC0C6A01BDA00C8075623ABCF59FB8062983174198FA1818CC644D6B
+A7C7E3773993773D2B4C009FDAF9DE26A95EB4F7B7157472028965A2AE646234
+B13F3406DD2C8C078CD8A4078364413CBDF63FB582B25E9C0E4B8A7F9F0BF493
+E9E1F0C3B711D5FFBE44E588422055F792D7D5D3A2482120333C99AB487308BC
+614DA8C5B16E239689ADE4FDEB69E9F61578786E38036B913EE77A89B3B7867C
+E27D009FB44BF2D9DFDCD9F66FD2D13BC1599B13F2E19F4D34182B3929758BD1
+F0B825E52213B52C5C091DD2E6E9216CD4E8AF0B82A0789FE40DB0EED926AC4A
+C8A67A33101086A925F3E677B7F6EF0A5C33CD3A354464EA92C3D860B90D08F0
+7E2CD9F57A06EF377955ADD81969BB714DD25267F29115C02FA60F8F7B3E1646
+48FB8C60D0F0E08560DF756D96F320ABD285FD35FFBAA476C6ACB989BCF92394
+11CD8FE3FA053111EF9A7CD5A32A4986150A5F800340849B5D4CAC1FD9C581E8
+D0E0166EAD80174CFABC7EEC0F1C3928BD465CC690E73DE9E0F91ECBCB6E694F
+BA399F2998FF36013EFADC8D4C24D76EFC29AC6EC6766E61FB9D1738C70848AA
+C5E93D89FD24B6053F40775BF36A1137464BAC9CADBC12CFB564B030D0AA2CC4
+0D2C53EFA25F3DB0712532C89D9156B498B9FA8D7B5F6EFB475650866CF6E79D
+DA67C0533FD0F8536CAAF909744672E14CA51A667845689D5D94473242E1B804
+D6A717F082000AE27D8A159BB2042E36FAE0B193DBBB218F5C528BD203F4D146
+057399E10E7BA35BE63B729ABF9DC1891239A573A67B44E361F29962A2C4E628
+E106F9E0A7390B0EDA6FBFA1DFB6C99C71D56E977B1EE6C0D2AC1FA77511F2A0
+4F80FBC1173CEF67FE8D3F0EAE17224FB730041148F4E9A6E7D401810D30A923
+249F6DC070651B57B47A513DCD5C06D82C8319A92629B36278EB6BFE9739F203
+26B15E42525FE6D439BA608478213F5848E8BBAB6872011F130F003A94C8612A
+ED46690E81CDA8EC5948CA0F57455116B81A0AFCB200285EADBECAF3F3249279
+E80D9ABD82F22F12A9E14F6BC249942717E73CFF0BF9B205301F80EA09C6A847
+AB937AA4C2D0E60AA335177B4B86A1D4D5ACEF074120E2DE632A82598D51FCB0
+B32C6C900255A00101E57AA5EFE2DB09CC07BE8DC99F796713092DB97D6912BD
+D8B0C40313F3D6061F0AFC4B89413514A9EE113ED95BB7729E29F144AA0D42EC
+CBDA616D1295537975D0E09D3F59F7BD2D5965E2C35C85EC56383CE14EA9D8FB
+7F28F5A3F3088F970C4BE07982E140F52E1345FAEFE04F4C508A33672611D76E
+33DC6BE4C84BBAD738A71539E8416E5C8B2DF65068B29FA0ADADA5992DC6941B
+AA856C98EE3B244520159B884CF4339C891B86E917E7DD54A712B5B572AB5696
+9256DCA1D8E073C2F5E754C845FF861419026385F21F5B5134372D27AEE08B72
+E234E74D06FAFAA327A769105DBD300D0F75C286F4AC3A7706B377321B828CF9
+85A48B4394C32B09F6CA7A92F93B8143AFB83FB6C1FB0F181C64A23C04651AB1
+830A7CB62F5755D3A0B780FED3A290C752678D4A30C7EE1B8179749D415202DC
+85C2DF88383A620044BF850B733EA1ABCD96BEEF7BDF2FD6EA0449B6D61DBD07
+D3A8FABDFC7961B06F7C2F2906BAB7A3BD33BA8928109E8BC4B405D9163D3CBC
+5C664B1B2A18BC21C3EF35CD3E7D99999DA3205F41B15BBE2C9E76CE7EECCF18
+E5186D5A4AEF72CD7DCF1C76DF9CCE29C92BB28B8C1A9A05C4602B82DEAB9354
+9258C2CBA3D9146358B69C420BE22F1603F6FE4C39D2423FDCBDD2BEE0BF6B40
+4F7BDE641C19DCF7684E7495EADDF3A86D3DA4C4E93DC00398C5CCEE3F3C95A2
+D72201367CC2D4A5BA6B0DAA88E488CA671EF45FFEBDFFEAB634811BB0884670
+7EA730CECC91C30A2B6ED9CD41CC8465209F05DF45C3FA514703BEAFF3A6DBE4
+978CD593E8E540D4B2D99055CA68FACCC4D1A2F709615805E885B840A806C952
+E5B0BA85C23488AA8EEB924B99489C748602F82973B081BAB206D808C08F8C11
+75B1D192FAFF8C8BC3148AED1B7206AEC32CAD33D1E15DB3CB4CF58957F2FFE1
+9A2D1E838916289220638EE91B9DDD691EF6D83017F35EB2E924708E655A8CB1
+CBA59DCAA9F787DD62352699DC1AD43CA225BC10B53B8298AC5B8C316FE433A5
+FFF41E657EBF3DA92F7815919E3693C9C6F14098F35F206EC9D9972517D1C233
+6A838D0FC455502DE6C9CFEC92560026D5E9FBFB9CA05A15BEE9992F7FD73779
+3AF7CBCE1CDE7AEC92F2453431A1712E20B7C8222656589D379348583058DD50
+035F956EF757456D651B53B0E2E12AAC4FDF5B063B9BFA53DAE05542D55AF892
+B2AA10EB49EB839625A0FB4344F552F24279DEAA4E0E25E5EF1C73DABE4F1C84
+44CA224F92C9CB2FD5EBDBB510B98F3FCADB388FB72418BB298934195D623CC4
+EC6177AA90E8DC19CCCDD49B0B5E4588DFBA825C32135F92494B37C5C13C80FD
+4199D717A7BC47E9F43ED5751DBF7DB3B1296E37E6C4E0C9858C4FB0EB5373B0
+E70643A0BD54D080D8B4A7EE78A455240D2BA072A20FC76EB2121BC58C1654CD
+2F9EB646568BD4C95F4AD8505921041A20DA936FE009F1758CECB5838173133A
+ADF49A309504BCA3C0E1C61CAB5ADB599130F1987943B7A2D0AA2C7883AD7BBC
+5483F8225867EC447117DD15D7976B924F12BE6D1D83E9157E02FFBD5D9BE32E
+3173FF8C0D6DE6E8932E02B2ED98E320172C97118F8A20049CACE8CC3DA954A7
+6613384E2619602E9BF84E3470B14A692371F6C9BD320D207BBFDDD4B5F7FD10
+16E495EEF83B33C6A6E490806C9E95AFCA72209760AF1BD12E8D454E29882181
+1E78BEA63628526F89724BCBA66266EC783B6CC3846F9C4F14E49ED879647D0E
+79C3EAFE8F21A85727214955CA5F7E4C4DE351D560C2E5F6585572B31199F88D
+CCEDB5E2F1D98627F4D701E06D1492DE6A6BC55200A18C811FE7F34BFE805AFC
+CD62FF2CC89AF62DE15A81E5749DFE00DF841697466967BD315E282A21711EDC
+ECB58F3C0469CAEBE96FCF3C34AC90428765C57419FED782EC8F497341565D0C
+9ADB90CCE9022B299C7B7036FF1773AEAEFBA6B4CAFC5CC2E1EB60B01DF29813
+F7990B64DCDDA4E8D614907093030734F52C87D2D70F6C41314E02231AA15E22
+5B4EAFD207E6003C88A986FBC0678FD6385BD57F147EE134522E16C674183041
+9CED60638095EA1574C7A56A1A08ABC233D65D257D64594E3ACC6FECD22D6277
+62724C1EA3BB6E141D8C1318E6DDF314CA8342FA8AA3D586DDCFE9B491A34D06
+FB96033D2CF9A0CE07E5B985F953AC5BFEBDD740BF2E4E84234A9873CFFCC429
+E62C40E98C198C6A8600375B8C57F94B99DB9F39718718C63F71B7013BD50DF4
+8B07070F306E3867CE805847066DE7A8889F745CA3325AB658AE774229A12EE0
+2754E9AE1A2CC0BFB41CE64EDE6C35F64D3B31393A633961A65B0948942435E3
+C135496114762A1C96C359A017102CC8514ABC5F8FD478C4D948377C62095B0D
+5941FCEB8976498D64E5AF4847E90D91356B02F5D3F1DD82EE9CB361A7BD30BD
+90ED3211D307B07A3E86C65CBDC303D1209F45B24FB163893ABCDCFE016A618B
+EF5577344EFA756DA4BA55B4F5783D97398D9F0BF1E2C4ADC5CEE0197D7FE6AB
+5F2993332A8F5D1505292307642A38A29217AC559BAC069186B81A0CD3061A8C
+87F94EDE385C9E391EFF99F1D4BFEC8954F396314A75D66E8051B334048B243D
+B4997AFB7594C8A99364AC553875A4E136C4E6BE5CC819D74C6B6A242FF119C5
+D65141D2C57A82C6A23FB2CCE13F7B0F9D0F1F638A285B828EFC971A6DA81560
+7069805EF29C3B54DCCC41304E41EDA03F49455FE03D4778544926538ACF49C0
+145CECAE7C3E55C7524883C0F3AFE5434A728960653BE4A85348763E2A32A12E
+7AEDF42B6CD1FA2F3233A677F914008A55EA0904BC3AB68A578F71EB628A3B9C
+D044EE55D7E0199A1D12254371E9178CD23B04EA9652F138104C81DB89625F79
+8DE1334A827DCF796A23EA8B51A1E694F2DD4F90A9ACCD4444B598DEB7C03424
+325FDABF04A476D9F5ECFA4F3FC0117FDBE5038FED06A0A37081D72158A97BC9
+ABE850B51A6875B8D71C31F6A47B65DEEC08C1A7A2939A116365B21B58324065
+F0764301DA41634E83358DBD3D5443883F2CF9776FEFEB5671D036DD05FF9FEC
+48E47776C13E10F7FD4EB2E542B4A8D74E1D50DAE2FD949235838C33A9940EB1
+EF77C7655DDC5C2CE4C16303DF83E4CC78DF773AD2E3273FF071E4B04D0FC8E3
+FAA7EE4880A63C620F02E13AB11D05A61C97FF1189CDC9BDD7D5DCD77FE5E59A
+80E0FFA93B933B37CC51E382C264281704D35A8FC56D31E7B33A020C25F22A25
+91FE54E44380484DD5676FFBBB49AFDE6682FFAE124A8A126483C207E6442F28
+5AE4A7BF8CF7FE15A764212C5D69B290D174D586E7D7720DE5A4C39C00B7CBCE
+EC1C270661EB0254A773D951F44170306A22866CB23F9C968817532F7BAF9B50
+C4CC8F167D11E24F3C673F466BDA42936AA8EE3A28EA11C0BF7C67598DB45862
+EE00FDF6A9FD7A1A66F3616E1910422D17466D169FF553F2FDDD533A7E0271E7
+870EAF618B153D88BDC83FB599151E6385C2EF9A10D8E60FAB9769D92F230838
+F68922A3CB0A464A4CC11DB15F452B990752F49C114A5CC8B683F44C6C430D3F
+4B72157F1D80D39672CB326DD0FD543B0F269B70C3F9901DA2A4308CAB155C1D
+0641FAD7B74CB1CF11FDE1078EDF5B97C18C6E21CCB01768537D5E4860BC090E
+45617C7D605EB165C1882B111A0FE68ED219D5066B17C10EA722965A5B5AED1B
+AB06E59D586C1FA30F806B01EBB9B2F16890AA768D4BCF8714F5DDA695E00D5F
+D60063E20356610830D24DB4BBF20C6FB34F9D0772AA79904A81FBEA67E59254
+0E93D259FCA04ACE24FDF64644472B09C8919E7FF0775744460026E6BF994E85
+20128B9E699F5AE3E54FFC891B59FDADA39D0F270571FC1349E036B95D7A138C
+73A4C487E1009677EEEBFF2D4AC4FC8B54082F9556104959F6D5FB7F93F55435
+82AC9F999D2BD61FECF71669FD2A92F79CA12C8ACA80281E5023EA0F5F29C545
+DA6912173E8C03774EBA0F6CF988E97360A0F025EBB33A4D96F60542F8CC55BE
+9394D13D5416149D28FE1E2737D99888846182153CF8412750DC06DE7D69CA8B
+4E2EF5F60BF49E8FA303307DD211ECB9D48419A61A0F1FAF7F27D047EBDE5E47
+10BBB3D73217BD6D02328039B28F6289ED67E3685380C89BD7C863B10A5CD28C
+74FE3D9DD16CD17670DB0372953E2507669C4C790FD78571FD084870D2BCBE41
+2BB1F34E907CC27345776DE346EFBEFBB3E1CDB281C57EF9C35E201605B9FE9C
+29D7C668D3D978773AF7B0ECD12DA7F3DA93549740246B962AABE06B35C70960
+5E2584C24AA8C85D57F30D26997B708728970F2088C7CDB31951F15553CA8F84
+10F6736DEB73F54C8C7385ECE031E21659919200E0405F7C125C2F02E9B91CA5
+F7F16189ACF40DABD4E49ABD0655B38A9F45DC55580FF6117EFE285B244E9246
+73B994BA85A3B34189E5E501D7E62B75DA9264EA295D04C2376572D33EC65660
+3AED8708ECBD0804C5192BEC8E76DB9612E61AE8F4A7EC82C95AE01AE4B2AB38
+E0AB1E8FDEF7FE0B767F81D85196D46F915AB8CB3E9228293762EFD7DE31F4F9
+0DE2FC0E65E7D82B882A809DF681F19DFA11443487B6280518579F98B4F1A502
+EA4B74C001DE061E8C09BF15FB500A26AB8A63EC8D7957DB52FB736D6AB6D401
+ADCF4213EA6CF340E1156D125DBD8B19F456008F8094E98B06EB6DA5096ABDC5
+6BACB34BFA69816F1F2265E0117177A5544502BA91AC3593E2930AA30D276CA7
+59A56BCCF1CECA5A74D6BAA897BB4103249F13C8504DE04E5C0E22A733D7CB62
+153DC1E8534706C59D20F2BB5966CCE975C05C4F95D1BB69C7D45FF329F8C01F
+CCDFDFA2C0941B083203D1F0A7648B7F6B8C33A1115081A1DB09D9541088494C
+AF44453108961AB4161A40A2A1A8F1B1C454E181D9AD054BA86FEBE2A1B901B9
+B9A9BA4B9633F90D45C2138CCF1EAB4BEEEF2336EDE66FB7CFD0A84A226ACF64
+680C748BB7BDFB62F93C2BEE638ABB3A59F3CD19055AC504A0E160CB13A7C1F5
+1D1AD0095D138A3FD85F25CCF4304E82D758E963C69CB8392EA5C995B7D1802C
+9D7CB493E2F572E9998346A157CF9FCBFB95846088C7376AC82F58BE46B16281
+A87532D5F6EE9E85C23C3F1960FF99CD970E6EDD1BE8D492D312359BDFBDF59E
+E0B6738BEDC5F16B7EBE0F7A775EAB4BE2CBD067F7F77CAF443A4BD9AE10B7FE
+7173FEE658922032B21F77A7A48325E51CC52FED690023344E49EF2614F0A63F
+D474E6D89BE40194235F5BD341B449DFBBCC9E8AF23241A36EAA316BAB5FFD8C
+69DA203716290169CB07A0EEE2BC4BD005CC548090B8D4EB82104C83696FDB7E
+10D4B935924EA19E7C35E9379F204C10BB0854C55E7867194D9D3544EA1DA675
+5E9B3A0792BE2E87B611F92BBA99C01ED1F21366699464733D774BEC5B0A2B4C
+6E8C68CFAEF8E0C69A1685BCCEBD8900C1E9C5CD26808696D16D125DAB3E5A79
+4A9484029864AD3BBDA91883A4D5DB1DF9BF789D7F18A6D5BF13A72680682A5B
+196BC80E977E553FBD0EA62F08952013D77814F6ADDFC5C68A667B43B26FCD50
+EDD49E8F1B6DD262DC0B4E2EF5A1150B3DBCA61E4F0ABA689BF862FB62AB65CA
+1E64F0C816D45BD236B557E1A8668EC76644EF5F607205E3F789CE757D4FDCE3
+A4D9F039F1CB8A40AA352BFBAD6643E30579D4265002BD3EFA420E275FEAA4A9
+412E33C557C0625F06A565F856989D62581CEB59A4877CA6DE7935E7D7CD2D81
+029F282754F1D25B522EE9374EED11147A229A44D5447F3265226E0889DB7C4C
+2D262A6CBD15E4565C324A5508564CFEE3534C4572581E818396620BF86AF511
+3200CCAA7DB922183B3D4DD6A9C2429AAEE0A1384C74A61715E96C5D69A4E4FF
+6408DD6ECF517D44BC8130971441BBD4819D25993C4CBED0591CEA1D2BDEB54D
+CBF02D516A2AB97E6EBAA7D883F90C521C130BB0049FB9C22A55402C162D1E54
+2EB04A71BBCC56812460362093742AC01579A95F3E0E1BE0C6E26FAACBF5980A
+A1EC5FE4811A1506C01931ABD5AF4800CD13EFD3F6F5B5F1A862EB3E7EA70CED
+FD99468911AB9C55E8A5CFE3F17855AC3825BBF7EDDDB6E44603F8E9FD0DBB51
+A990B69EB47CBE44770BFD17A9DBA044FDC61AC83F5017B5C0D2E6521A217503
+430D75EF4BFE5FCAE780CF8BAC999C8B3947AE40BC76CF2BCA11BE8D4EB40BC7
+EF1E2791B9F186FE4CC9426E909162AA6B8ED62121844A58A7AD67A119A94F8E
+875129AF889A8B2D49B7822EDB60132A4CFFCD4D5484E9967A3045B9AFD4B608
+A9BB626BF68B1F304E2E4E8F3E492E07DEBA18627ED11EB09E3C619B1DF9C7F7
+26F8BF1463A1E2DE2156B15FD44199E7A0C130EFC3EA967C0C8EAC057D821733
+7C923B779B2EB4C7F8CDA663708FEDFDDD2359B1DB313CCC890F7188DC1078C2
+FC523A2AD140ED1197301E87CA2F279B3545829AB7BDB40FC5FCFE5034EA7A70
+EF18705FD531098B573691DC707570426AA6FE1462CF9DBF00DC67D81FB83FFE
+CFDBB288207180B0BD705938B41AA48E68E557186BAEAD79759D699266A9A9DD
+D7477F7F45E7F28C7F63F597A7E67762DED6C385EB2FBE9CFD52A5D714741720
+5BB4ADD90DDBA6C760C231A58AE55F2EAD1EE93F11C5E8C708F22DAB168469B9
+BD3FDCD68EADBC1CC464C54E0D16C93269010EBAA0C5370E8E945C7BAFF08A95
+940A574143B6F9670D39FB03A25E49E164CD4DE8B3131FAC9D15F5B0447CCFC7
+4452E108BBA7358698B0FAB49402B21C3A69000223667EF56BC5873CEC8D8EE5
+F019652EA7C433C11D7B0C4996F2D21899DCBDED1A8D530733A7C92B925F75B1
+D2D6A25B3862BAB0025A66E29BB5744AF1F68CB10DE298C36B620C115B942F90
+3912F0D9646907EFCAAD7C05E5E0B053F3639EAE98A853466C5F0ADB18495648
+262C3FB2813EEA2D2211B71F1447522E0B4C5C745EA34A154214D57C8943893C
+248CA1CF244490775F70B52BB2D959A9D892A241C298C495FB39AC7BF0D6C655
+3F150712AA065FCB56C3EB03F8A9CA8268DB79C11B4CEC8C9E84DFDD2BA3671E
+CF1B12AEDCEAF5884548F7F9EA628262CE709321E47F8B4214C2A108E5ABD663
+783CD6AC5984CC08DBEBA75F7ACCF2A3A6CA42BE5A3777080F30182C1C038F6C
+9426B5488684A0E82966E4C8EE3ECD5674B6E5508F43E0526E14F38618BE6DE9
+EE175DA4CA32A6405D726C411D89C755A8ED1F73D9DBE67FEADC9DB448668FB3
+CB6838C400F05B902D27F3AFA0BA11148541288201DFEC8A08D6B3D1D972AA53
+8DAE043A766E84CEC8894D30B7E77CAC1683363E747A4FEE17D9B83BA9754796
+20FC1A0AEED75C71EF48FED0E99317B67F690F615CCD479133B7E08DD8EB46CA
+D5895810E01E07ED6D17BB54F5B9AA19D2B1ECF2795E777227B12242C07BCAA7
+2D5F6AA8083B43C6928FA28EECE66CB90899763AA1037E4C1AC76741097DF3F8
+6BD297528CC9F538C5AEEFD5A7038CAA230A09DE750B740DC8398072A0876528
+946BE8088F6EB74ECA0CC1DA30A43AC47351AC7934E90A88DAD80EC957087768
+B9893241462946A9C5A843D454DF125A906D70D9C4812EB36759537E0372D2B5
+3F4905D8F605EBA26C49A167D48E177BB6821FD39E775D9569D387673B976306
+57537EB480132851DED5740C2E175D5B08CF40BE96EC1810865DEE2B52B1CF44
+CDE1607EDD185CAC4330016DA7343C9F3DCD21BB3492FA1D027CF81E76E45358
+55F5DD22884FB50B80A2388F673EF7FD7CFF4AD4AC212EC5BBFED0EAF7ABD2FE
+1FD35C0C7360DA40622DA59FEA983B702A6C53FB975EA85DF0A5DACFCC8C8549
+786DAE9D57A2029DE7185AD4E283AE57618BA3CF37744C18C882678F34A161D3
+8ADD4757DAB9B77FB891EE0DE945D551043A286426751CD6A62279E99F21D0F1
+C4E3042E8A474AF9920CF416B50A94ED092661711C4FF54A8606E1912066F340
+59CD492D9BEA791E7AC9486E6CB214169B238084ECA7515D03F9F78601AFC144
+18EA9CF8C814CA5D2F05AE6D23BED9E8A0D41E323CF572CE98599BAEA8562285
+6327E1B8A141E395C2FFE6DC90F6648598DF8B8389D8AB2E1D982F1FDC71A6CF
+51994FAB23671F641D0A54906AD41759FFC09A2273D48AE572258FAFB3B768E7
+2CCDACF0DC0125F7E1D56388B817F0ACF62258E3F80317494E3D21F8A317AC28
+A82E16A930CBB531D05F7BA59667AFD26474333C201768124C80E97F92EB0A6D
+73AE9A8BDD37FA688920AE2A5AF906CAF90ECBA54E5F6ADBBBC0F45DE40F147E
+B2F17C816231D41ACB54D82D2D3498A9D41A4172BFDB56CFA196986AD6D28430
+983186893BA6C30408997347FB265BD80EE95E011E6C397D1D1592CC1C34AEA1
+7706D3B35D946E0C0790652F688879A53231202AB3A6B495E6E251E6829F0549
+94F5A375E8AC0696660E002B6C195446D0E08BB7BE160EFCF356A81BEDA21934
+B3365D78CEDCCDB705594895418C48D91C9AD97637D37DFE69624F7885106965
+C574270839038CC543B62CC351A2FEB42F664810D5613D27B1D86351C669FE8C
+37787213F68E0657240DF253186228CA5CEC4283A4C0A125F6262B566190B701
+3AF5BDAD86A1F84029FDD7ACB5A11A23107E5413E67809AB9DA6BA5C3CCCC2EA
+9D4270831EAD274C3AC9DF833BC8EBF339376EADEE48D748C4F71C97B43DBA6A
+FD014C2F73B6F18EB9E52F3A7B1994B00E38020C6EF4529C318386E1F62ADA34
+95B878B5F1A3F2D7FE2EE48CC8FFB79E3140993DB96AD77281A7D314880464BD
+0C205CE8A86714EE8B3A334E002DD04AFBE3C3B95E8A2B4F41CEAFA6A2CF2F95
+A06B2D1412E221D968E847313C86AAB3DE19725D2A380484CB7FE6B636DEB3BD
+1C01FF657B8287339DB0A67F62AA692F14BD29175748552DF93E3247CCF71BC9
+04D1F745A4159C7AC635EF6A41106A821F3017BCA5C0D8FCBB1ABCCED6302ED7
+B9DCE19F8E88C23CD19CFA9550FC79A609942ED70B8E6BBF29422A2D7E28B9D1
+4797414CF2766E7CC48626049DAD906C45EA994EF5C3352342A127081B7632EA
+61293A7A688022E6380B68CB3E60D5F464F8B2D1F185F2C56D2879C65F1EDC6C
+E31AC52A05C95D96DFE2AB700DD868C718EA003669F163CDFFA3568DC92941D7
+471E6B53BB763A3A6CEEC8771287709FC88D048749CACC598977ED1676EF1F16
+34B7285528C06B059EB6528368F622FF958555AFF122823B4FCC62E4AA36BAC0
+B7CD09BB34A19A926A66AF74F996D7A6FDFBBCAE7BAC2F7C6F9432FFB4B767E5
+5EC547750CC6C4CD4202F7E289B7E8A842D8046BF9D3F38F5B401DA65FC0A792
+4EC3116BAD5B959468EDBCA52C433209E602EED5066765E2489C6BBB0F094CE5
+5FC789A3413D958578ABDDE73153553092916729EFB532556990ADBC56865AFC
+A9812247D518F0E035E08D9DEA3C3764041F02301DD5C66EA559B3D47E18CE25
+BB4A6691C178902DDE9B1ECFE9CAC98190BB39465B5B1736B15583708878CE1B
+E81750434A6D847218D4348AF6C56A2FFDFFE0934DDE3BB25A9678FA201A67E0
+717A6311D0E49A9474A29B0A251473F267C7F8886B9B55BCB6F609D98D2E8038
+718ACEEA982EC047A5FA3F28F9546A8010A1DF995F41E11E64B997046CE7EB2B
+3556D4B27D23AF70E78A0EE95BF48FB0F7C217E39EE61DB6635EB84434464C73
+2D3B0F36AC2959BF039038A018ED1DE4CF72B7BD7A51D5CCB9FEC0B2B1968E19
+23491E9C97ADB33FC9B09FD5EABAD326D0BDBE90AFB69122C71A488F401CD387
+45DD12DD92022DB180DDCBB531ABA3CA4A5892F3E1D3528384596FD646ED97A2
+C9E2C29F1299FA52159F7CF060810CB99F2B1B261708AAF94AFA022F9A3CD267
+11432D4DF4F9F7BCF1434F9D9C94EC5BEBC6C98432BC339E0DB2461623880887
+1CFE5DA076E7A3CED52E2E307B1CDDB1D0E273A4774177DB4664C75B69C857BC
+FB693B1E0DE72065D2B6BF7466FD272B1BF9DA5B838E04DA93C92F7A526F4389
+3063774999A51F2A863D118592
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -2307,8 +2306,8 @@ TeXDict begin 55380996 39158280 1000 600 600 (orgcard.dvi)
@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1
49.8132 /CMSY6 rf /Fb 134[32 1[43 32 34 24 24 24 1[34
30 34 50 18 32 1[18 34 30 19 27 34 27 34 30 13[34 44
-1[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 4[30 30 30 30
-30 30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }42
+1[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 4[30 1[30 30
+30 30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }41
49.8132 /CMR6 rf /Fc 135[33 3[24 29 4[40 58 18 2[22 36
2[33 36 33 33 36 50[22 46[{ TeX74afc74cEncoding ReEncodeFont }14
66.4176 /CMTI8 rf /Fd 134[43 43 59 43 45 32 32 34 1[45
@@ -2331,10 +2330,10 @@ TeXDict begin 55380996 39158280 1000 600 600 (orgcard.dvi)
rf /Fi 133[31 37 37 51 37 39 27 28 28 37 39 35 39 59
20 37 22 20 39 35 22 31 39 31 39 35 2[35 1[35 3[53 72
53 53 51 39 52 1[48 55 53 65 44 55 1[25 53 55 46 48 54
-51 50 53 6[20 5[35 35 35 35 1[35 20 24 20 55 35 27 27
-20 2[35 59 35 20 19[39 39 41 11[{ TeXf7b6d320Encoding ReEncodeFont }71
-66.4176 /CMR8 rf /Fj 141[57 2[69 76 6[69 42 63 76 61
-1[67 14[103 2[103 1[131 9[99 16[69 69 1[69 1[46 3[53
+51 50 53 6[20 4[35 1[35 35 35 1[35 20 24 20 55 35 27
+27 20 2[35 59 35 20 19[39 39 41 11[{ TeXf7b6d320Encoding ReEncodeFont }
+71 66.4176 /CMR8 rf /Fj 141[57 2[69 76 6[69 42 63 76
+61 1[67 14[103 2[103 1[131 9[99 16[69 69 1[69 1[46 3[53
53 40[{ TeXf7b6d320Encoding ReEncodeFont }19 119.552
/CMBX10 rf end
%%EndProlog
@@ -2347,7 +2346,7 @@ TeXDict begin
%%Page: 1 1
TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45
b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
-(3.14\))-150 -42 y Fh(Getting)37 b(Started)-150 125 y
+(3.15\))-150 -42 y Fh(Getting)37 b(Started)-150 125 y
Fi(Put)24 b(the)h(follo)n(wing)e(in)g(y)n(our)h Fg(~/.emacs)931
102 y Ff(1)-150 199 y Fg(\(autoload)38 b('org-mode)g("org")e("Org)h
(mode")g(t\))-150 268 y(\(autoload)h('org-diary)g("org")f("Org)f(mode)h
@@ -2560,7 +2559,7 @@ end
%%Page: 2 2
TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45
b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
-(3.14\))-150 -36 y Fh(Timeline)37 b(and)g(Agenda)-150
+(3.15\))-150 -36 y Fh(Timeline)37 b(and)g(Agenda)-150
120 y Fi(sho)n(w)24 b(timeline)f(of)h(curren)n(t)g(org)f(\014le)458
b Fg(C-c)36 b(C-r)-150 190 y Fi(...)30 b(include)24 b(past)h(dates)793
b Fg(C-u)36 b(C-c)g(C-r)-150 288 y Fi(add)24 b(curren)n(t)g(\014le)g
@@ -2632,7 +2631,7 @@ b(C-x)g(h)2046 169 y Fi(exp)r(ort)25 b(as)e(HTML)g(and)h(op)r(en)h(in)e
b(arg)g(sets)g(n)n(b.)31 b(of)23 b(headline)i(lev)n(els,)e(e.g.)182
b Fg(C-3)36 b(C-c)g(C-x)g(h)2046 337 y Fi(insert)23 b(template)j(of)d
(exp)r(ort)h(options)423 b Fg(C-c)36 b(C-x)g(t)2046 435
-y Fi(toggle)25 b(\014xed)f(width)g(for)f(line)g(or)h(region)346
+y Fi(toggle)25 b(\014xed)f(width)g(for)f(en)n(try)h(or)g(region)295
b Fg(C-c)36 b(:)2046 534 y Fd(HTML)27 b(formatting)2046
632 y Fi(mak)n(e)d(w)n(ords)g Fd(b)r(old)897 b Fg(*bold*)2046
702 y Fi(mak)n(e)24 b(w)n(ords)g Fc(italic)898 b Fg(/italic/)2046
@@ -2746,7 +2745,7 @@ b Fi(with)g(the)h(cur-)4242 3574 y(sor)h(still)g(in)g(a)h(line)f(to)h
Fg(org-CUA-compatibility)p Fi(.)4535 3770 y Fb(Cop)n(yrigh)n(t)4838
3768 y(c)4821 3770 y Fa(\015)d Fb(2005)i(F)-5 b(ree)21
b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3826
-y(v3.14)h(for)h(Org-Mo)r(de)e(3.14,)i(2005)4912 3882
+y(v3.15)h(for)h(Org-Mo)r(de)e(3.15,)i(2005)4912 3882
y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3937 y(based)j(on)g(refcard)g
(design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242
4022 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e
diff --git a/etc/orgcard.tex b/etc/orgcard.tex
index 22a85c7f8d4..e90b602b443 100644
--- a/etc/orgcard.tex
+++ b/etc/orgcard.tex
@@ -1,11 +1,11 @@
-% Reference Card for Org Mode 3.14
+% Reference Card for Org Mode 3.15
%
%**start of header
\newcount\columnsperpage
% This file can be printed with 1, 2, or 3 columns per page (see below).
% At the moment this card works quite nicely in 3 column format and
-% currently takes most of 2 pages. It is thus suited to producing one
+% currently takes 2 full pages. It is thus suited to producing one
% double-side page when printed.
% There are a couple of tweaks in the format of this card which make it work
@@ -18,8 +18,7 @@
\columnsperpage=3
-% Copyright (C) 2004 Philip Rooke
-% Coypright (C) 2005 Free Software Foundation, Inc.
+% Copyright (c) 2004 Philip Rooke, 2005 Free Software Foundation
% GNU Emacs is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
@@ -59,11 +58,11 @@
% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
% for their many good ideas.
-\def\orgversionnumber{3.14}
+\def\orgversionnumber{3.15}
\def\year{2005}
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
- \centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
+ \centerline{\small \copyright\ 2004, 2005\ Free Software Foundation, Inc.
Permissions on back. v\orgversionnumber}}
\def\copyrightnotice{
@@ -595,7 +594,7 @@ in the current directory.
\key{insert template of export options}{C-c C-x t}
-\key{toggle fixed width for line or region}{C-c :}
+\key{toggle fixed width for entry or region}{C-c :}
{\bf HTML formatting}
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index fcc80dc0d59..c515f9accc7 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,464 @@
+2005-09-05 Chong Yidong <cyd@stupidchicken.com>
+
+ * cus-theme.el (custom-theme-write-faces): Save the current face
+ spec, not the defface spec.
+
+ * custom.el (custom-known-themes): Clarify meaning of "standard".
+ (custom-push-theme): Save old values in the standard theme.
+ (disable-theme): Correct typo.
+ (custom-face-theme-value) Deleted unused function.
+ (custom-theme-recalc-face): Rewritten to treat enable/disable
+ properly.
+
+2005-09-05 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/compile.el (compilation-goto-locus): Take into account
+ iconified frames when determining whether the buffer is
+ already visible.
+ Don't reset window height if the window already existed.
+
+2005-09-04 Chong Yidong <cyd@stupidchicken.com>
+
+ * custom.el (load-theme): Rename from require-theme.
+ Add interactive spec.
+ (enable-theme): Rename from custom-enable-theme.
+ Add interactive spec.
+ (disable-theme): Rename from custom-disable-theme.
+ Add interactive spec.
+ (custom-make-theme-feature): Doc fix.
+ (custom-theme-directory): Doc fix.
+ (provide-theme): Call enable-theme.
+
+2005-09-02 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * obsolete/lazy-lock.el (lazy-lock-mode):
+ * obsolete/fast-lock.el (fast-lock-mode): Don't try to turn on
+ font-lock-mode if it's off. Print a warning instead.
+
+ * progmodes/compile.el (compilation-start): Ignore errors if the
+ process died before we get to send-eof.
+
+ * textmodes/tex-mode.el (tex-send-tex-command, tex-bibtex-file):
+ Undo last change. Enclosing the result in quotes broke things on Unix
+ since tex-send-command passes it through shell-quote-argument.
+ (tex-send-command): Pass `file' through convert-standard-filename
+ when possible.
+ (tex-uptodate-p): Handle the case where TeX hasn't put additional
+ info in a transcript.
+
+2005-09-02 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * term/xterm.el (terminal-init-xterm): Add eval-when-compile to
+ fix compilation warning. Reorder the key definitions to group
+ together keys emitted by the current version of xterm.
+
+ * progmodes/vhdl-mode.el (vhdl-highlight-faces)
+ (vhdl-speedbar-entity-face, vhdl-speedbar-entity-selected-face):
+ Reorder predicates to correct min-color usage.
+
+2005-09-01 Chong Yidong <cyd@stupidchicken.com>
+
+ * longlines.el (longlines-mode): Inhibit read-only when encoding.
+ Kill local variables when longlines-mode is turned off.
+
+2005-09-01 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * international/mule-cmds.el (set-locale-environment): Soothe compiler.
+
+ * obsolete/lazy-lock.el (lazy-lock) <defgroup>: Move from font-lock.el.
+
+ * obsolete/fast-lock.el (fast-lock) <defgroup>: Move from font-lock.el.
+
+ * font-lock.el (fast-lock, lazy-lock) <defgroup>: Remove.
+ (font-lock-lines-before): Change default to being inactive.
+ (font-lock-default-fontify-region): Obey font-lock-lines-before.
+ (font-lock-after-change-function): Don't handle f-l-lines-before here.
+
+2005-08-31 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-handle-make-auto-save-file-name):
+ Deactivate temporarily advice if active (not needed for Emacs 22,
+ but for backwards compatibility).
+ (tramp-exists-file-name-handler): Rewrite. First implementation
+ was too simple.
+ (tramp-advice-make-auto-save-file-name):
+ Call `tramp-handle-make-auto-save-file-name' (again, just for
+ backwards compatibility).
+
+2005-08-31 Reto Zimmermann <reto@gnu.org>
+
+ * progmodes/vhdl-mode.el
+ (vhdl-update-sensitivity-list): Handle multi-dimensional array access.
+ (vhdl-end-p): Fix indentation bug "else" after "-- when".
+ (vhdl-set-default-project): New function (easier setting of default).
+ (vhdl-port-copy): Handle extended identifiers for generics.
+ (vhdl-compiler-alist): Better description for error message regexp.
+ (vhdl-make): Query for target, use previous as default.
+ (vhdl-port-copy): Fix port copy for port names starting with "signal".
+ (vhdl-font-lock-keywords-2): Fix fontification for record
+ el. assign.
+ (vhdl-speedbar-make-subpack-line): Add package body link.
+ (vhdl-generate-makefile-1): Not include itself as dependency.
+ (vhdl-font-lock-init): Highlight c-preprocessor directives.
+ (vhdl-*ward-syntactic-ws): Skip c-preprocessor directives.
+ (vhdl-get-syntactic-context): Handle c-preprocessor directives.
+ (vhdl-update-sensitivity-list): Start scan at opening parenthesis.
+ (vhdl-fixup-whitespace-region): Fix jumping point (infinite loop).
+ (vhdl-update-sensitivity-list-buffer): Add string argument for `error'.
+ (vhdl-import-project): Add string argument for `error'.
+ (vhdl-compose-configuration)
+ (vhdl-compose-configuration-architecture): Add configuration
+ declaration generation.
+ (vhdl-scan-directory-contents): Scan for block/generate hierarchy.
+ (vhdl-trailer-re): Add "record" keyword (better indentation).
+ (vhdl-fixup-whitespace-region): "[^ \t\"-]+" instead of
+ "[^ \t-\"]+".
+ (vhdl-font-lock-keywords-2): Not highlight formal parameter after '|'.
+ (vhdl-testbench-entity-file-name)
+ (vhdl-testbench-architecture-file-name): Allow separate
+ customization of testbench file names.
+ (vhdl-beginning-of-block): Handle optional subprogram parameter list.
+ (vhdl-get-visible-signals): Allow newline within alias declaration.
+ (vhdl-update-sensitivity-list): Signal read only on certain attributes.
+ (vhdl-fixup-whitespace-region): Fix bug with strings (double quotes).
+ (member-ignore-case): Alias for missing function in XEmacs.
+ (vhdl-compiler-alist): Add unit-to-file name mapping for Cadence NC.
+ (vhdl-update-sensitivity-list): Ignore case on read signals.
+ (vhdl-replace-string): Adjust case only for file names.
+ (vhdl-update-sensitivity-list): Fix search for read signals.
+ (vhdl-update-sensitivity-list): Exclude formal parameters.
+ (vhdl-get-visible-signals): Include aliases of signals.
+ (vhdl-get-visible-signals): Fix signal name searching.
+ (vhdl-port-flatten, vhdl-port-reverse-direction): Better message.
+ (vhdl-fixup-whitespace-region): Fix for character
+ literals (e.g. ':').
+
+2005-08-31 Juanma Barranquero <lekktu@gmail.com>
+
+ * ansi-color.el (comint-last-output-start):
+ * bs.el (font-lock-verbose):
+ * diff-mode.el (add-log-buffer-file-name-function):
+ * dired-x.el (vm-folder-directory):
+ * faces.el (help-xref-stack-item):
+ * files.el (font-lock-keywords):
+ * find-lisp.el (dired-buffers, dired-subdir-alist):
+ * ido.el (cua-inhibit-cua-keys):
+ * log-view.el (cvs-minor-wrap-function):
+ * outline.el (font-lock-warning-face):
+ * simple.el (compilation-current-error):
+ * speedbar.el (ange-ftp-path-format, efs-path-regexp)
+ (font-lock-keywords, x-pointer-hand2, x-pointer-top-left-arrow):
+ * tooltip.el (comint-prompt-regexp):
+ * w32-fns.el (explicit-shell-file-name):
+ * term/mac-win.el (mac-charset-info-alist)
+ (mac-services-selection, mac-system-script-code):
+ * term/tty-colors.el (msdos-color-values):
+ * term/w32-win.el (xlfd-regexp-registry-subnum):
+ * term/x-win.el (x-keysym-table, x-selection-timeout)
+ (x-session-id, x-session-previous-id):
+ * textmodes/ispell.el (mail-yank-prefix):
+ * textmodes/makeinfo.el (tex-end-of-header, tex-start-of-header):
+ * textmodes/org.el (calc-embedded-close-formula)
+ (calc-embedded-open-formula)
+ (font-lock-unfontify-region-function):
+ * textmodes/reftex-global.el (isearch-next-buffer-function)
+ (TeX-master):
+ * textmodes/reftex.el (font-lock-keywords):
+ * textmodes/tex-mode.el (font-lock-comment-face)
+ (font-lock-doc-face):
+ * textmodes/texinfo.el (outline-heading-alist):
+ Add defvars.
+
+ * textmodes/artist.el (x-pointer-crosshair): Add defvar.
+ (artist-spray-chars, artist-mode-init, artist-replace-string)
+ (artist-select-erase-char, artist-vap-find-endpoints-horiz)
+ (artist-vap-find-endpoints-vert, artist-vap-find-endpoints-swne)
+ (artist-vap-find-endpoints-nwse): "?\ " -> "?\s".
+
+ * textmodes/conf-mode.el (outline-heading-end-regexp): Add defvar.
+ (conf-align-assignments): "?\ " -> "?\s".
+
+ * textmodes/reftex-index.el (TeX-master): Add defvar.
+ (reftex-index-phrases-marker): Move up defvar.
+
+ * textmodes/reftex-toc.el (zmacs-regions): Add defvar.
+ (reftex-toc-include-labels-indicator)
+ (reftex-toc-include-index-indicator)
+ (reftex-toc-max-level-indicator): Move up declarations.
+
+ * net/tramp.el (tramp-handle-make-auto-save-file-name): Pass list
+ of args to `tramp-run-real-handler', even if it's empty in this case.
+
+2005-08-31 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * dired.el (dired-move-to-filename-regexp): Add date format for
+ Mac OS X 10.3 in East Asian locales.
+
+2005-08-31 Michael Albinus <michael.albinus@gmx.de>
+
+ * files.el (make-auto-save-file-name): Add file name handler call
+ if applicable.
+
+ * net/tramp.el (tramp-file-name-handler-alist)
+ (tramp-file-name-for-operation): Add `make-auto-save-file-name'.
+ (tramp-handle-make-auto-save-file-name): Rename from
+ `tramp-make-auto-save-file-name'.
+ (tramp-exists-file-name-handler): New defun.
+ (tramp-advice-make-auto-save-file-name): Make defadvice only when
+ `make-auto-save-file-name' is not a magic file name operation.
+
+2005-08-30 Carsten Dominik <dominik@science.uva.nl>
+
+ * textmodes/org.el (org-special-keyword): New face.
+ (org-table-copy-down, org-table-eval-formula)
+ (org-table-recalculate, org-init-section-numbers):
+ Use `string-to-number' instead of `string-to-int'.
+ (org-get-location): Use `insert-buffer-substring' instead of
+ `insert-buffer'.
+ (org-modify-diary-entry-string): New function.
+ (org-get-entries-from-diary): Set the hook for `add-to-diary-list'.
+ (org-disable-agenda-to-diary): Rename from `org-disable-diary'.
+ (org-toggle-fixed-width-section): Use QUOTE keyword if there is no
+ active region.
+ (org-export-as-html): Handle QUOTE keyword.
+ (org-quote-string): New option.
+ (org-bookmark-jump-unhide): New function, used for
+ `bookmark-after-jump-hook'.
+ (org-diary-default-entry): Apply only when not called through
+ `org-agenda'.
+
+2005-08-30 Juanma Barranquero <lekktu@gmail.com>
+
+ * net/eudc.el (mode-popup-menu):
+ * play/handwrite.el (ps-printer-name, ps-lpr-command):
+ * progmodes/ada-mode.el (compile-auto-highlight)
+ (skeleton-further-elements):
+ * progmodes/autoconf.el (font-lock-syntactic-keywords):
+ * progmodes/cmacexp.el (msdos-shells):
+ * progmodes/compile.el (font-lock-extra-managed-props)
+ (font-lock-keywords, font-lock-maximum-size)
+ (font-lock-support-mode):
+ * progmodes/grep.el (font-lock-lines-before):
+ * progmodes/idlw-complete-structtag.el (idlwave-completion-help-info):
+ * progmodes/mixal-mode.el (compile-command):
+ * progmodes/perl-mode.el (font-lock-comment-face)
+ (font-lock-doc-face, font-lock-string-face):
+ * progmodes/prolog.el (comint-prompt-regexp):
+ * progmodes/sh-script.el (font-lock-comment-face)
+ (font-lock-set-defaults, font-lock-string-face):
+ * progmodes/sql.el (font-lock-keyword-face)
+ (font-lock-set-defaults, font-lock-string-face):
+ * progmodes/vhdl-mode.el (compilation-file-regexp-alist)
+ (itimer-version, lazy-lock-defer-contextually)
+ (lazy-lock-defer-on-scrolling, lazy-lock-defer-on-the-fly):
+ Add defvars.
+
+ * progmodes/cperl-mode.el (cperl-electric-lbrace)
+ (cperl-electric-keyword, cperl-electric-pod)
+ (cperl-electric-backspace, cperl-forward-re)
+ (cperl-fix-line-spacing, cperl-fill-paragraph): "?\ " -> "?\s".
+ (vc-rcs-header, vc-sccs-header): Add defvars.
+
+ * progmodes/fortran.el (fortran-indent-to-column): "?\ " -> "?\s".
+ (font-lock-syntactic-keywords, gud-find-expr-function):
+ Add defvars.
+
+ * progmodes/gdb-ui.el (tool-bar-map): Add defvar.
+ (gdb-frame-parameters): Declare before use.
+
+ * progmodes/gud.el (gdb-active-process, gdb-define-alist)
+ (gdb-macro-info, gdb-server-prefix, gdb-show-changed-values)
+ (gdb-var-changed, gdb-var-list, tool-bar-map): Add defvars.
+ (gud-expr-compound-sep, gud-expr-compound): "?\ " -> "?\s".
+
+ * progmodes/idlw-help.el (browse-url-generic-args): Add defvar.
+ (idlwave-help-with-source): Use `insert-buffer-substring', not
+ `insert-buffer'.
+
+2005-08-29 Juri Linkov <juri@jurta.org>
+
+ * outline.el (hide-entry, hide-leaves, outline-toggle-children):
+ Put outline-back-to-heading function call inside save-excursion.
+
+2005-08-29 Juanma Barranquero <lekktu@gmail.com>
+
+ * man.el (Man-init-defvars, Man-translate-references)
+ (Man-support-local-filenames, Man-highlight-references):
+ * progmodes/sql.el (sql-interactive-mode):
+ * shell.el (shell-mode, shell-resync-dirs): Fix typos in docstrings.
+
+ * emacs-lisp/checkdoc.el (compilation-error-regexp-alist)
+ (compilation-mode-font-lock-keywords): Add defvars.
+ (checkdoc-interactive-loop): "?\ " -> "?\s".
+
+ * emacs-lisp/lisp-mode.el (font-lock-comment-face)
+ (font-lock-doc-face, font-lock-string-face)
+ (font-lock-keywords-case-fold-search): Add defvars.
+ (emacs-lisp-mode-syntax-table): "?\ " -> "?\s".
+
+ * obsolete/sun-fns.el (mouse-select-or-drag-move-point):
+ Don't pass X and Y (they are ignored anyway).
+ (mouse-set-mark, mouse-select-window, mouse-delete-other-windows)
+ (mouse-delete-window): Make arguments optional.
+
+ * obsolete/rnews.el (news-add-news-group): Don't use `end-of-line'.
+ (caesar-translate-table, minor-modes, news-buffer-save)
+ (news-group-name, news-minor-modes): Add defvars.
+
+ * emacs-lisp/lselect.el (mouse-highlight-priority)
+ (x-lost-selection-functions, zmacs-regions):
+ * emacs-lisp/pp.el (font-lock-verbose):
+ * emacs-lisp/syntax.el (font-lock-beginning-of-syntax-function):
+ * emacs-lisp/tcover-ses.el (ses-initial-global-parameters)
+ (ses-mode-map):
+ * emacs-lisp/tcover-unsafep.el (safe-functions):
+ * international/mule-cmds.el (mac-system-coding-system)
+ (mac-system-locale):
+ * language/ethio-util.el (rmail-current-message)
+ (rmail-message-vector):
+ * language/thai-util.el (thai-auto-composition-mode):
+ * mail/metamail.el (rmail-current-message, rmail-message-vector):
+ * mail/mspools.el (rmail-inbox-list, vm-crash-box)
+ (vm-folder-directory, vm-init-file, vm-init-file-loaded)
+ (vm-primary-inbox, vm-spool-files):
+ * mail/rmail.el (deleted-head, font-lock-fontified)
+ (mail-abbrev-syntax-table, mail-abbrevs, messages-head)
+ (rmail-use-spam-filter, rsf-beep, rsf-sleep-after-message)
+ (total-messages):
+ * mail/rmail-spam-filter.el (bbdb/mail_auto_create_p)
+ (rmail-summary-mode-map):
+ * mail/rmailkwd.el (rmail-buffer, rmail-current-message)
+ (rmail-last-label, rmail-last-multi-labels)
+ (rmail-summary-vector, rmail-total-messages):
+ * mail/rmailmsc.el (rmail-current-message, rmail-inbox-list):
+ * mail/rmailsum.el (msgnum):
+ * mail/uce.el (gnus-original-article-buffer, mail-reply-buffer)
+ (rmail-current-message):
+ * obsolete/fast-lock.el (font-lock-face-list):
+ * obsolete/rnewspost.el (mail-reply-buffer):
+ * obsolete/scribe.el (compile-command):
+ * obsolete/x-menu.el (x-process-mouse-hook): Add defvars.
+
+2005-08-28 John Paul Wallington <jpw@gnu.org>
+
+ * ibuf-ext.el (ibuffer-auto-update-changed):
+ Use `frame-or-buffer-changed-p' to check whether we need to update.
+ (ibuffer-auto-mode): Don't advise `get-buffer-create' and
+ `kill-buffer'. Initialise `ibuffer-auto-buffers-changed'
+ as a `frame-or-buffer-changed-p' state vector instead.
+
+2005-08-27 Romain Francoise <romain@orebokech.com>
+
+ * textmodes/makeinfo.el (makeinfo-compile):
+ Use `compilation-start'. Set `next-error-function' according to
+ `disable-errors'.
+ (makeinfo-next-error): New function.
+ (makeinfo-region): Adjust to new `makeinfo-compile' prototype.
+ (makeinfo-buffer): Likewise.
+
+ * progmodes/compile.el (compilation-start): Add autoload cookie.
+
+ * progmodes/antlr-mode.el: Don't autoload `compilation-start'.
+ * textmodes/sgml-mode.el: Likewise.
+ * progmodes/python.el: Likewise.
+
+2005-08-27 Eli Zaretskii <eliz@gnu.org>
+
+ * simple.el (blink-matching-paren-distance): Document the meaning
+ of nil value, and allow to customize to nil.
+
+ * eshell/esh-ext.el (eshell-windows-shell-file): Look for
+ command.com, not command.exe.
+
+2005-08-26 John Wiegley <johnw@newartisans.com>
+
+ * eshell/esh-cmd.el (eshell-rewrite-named-command): Change the
+ code around a bit so that an extraneous nil argument is not added
+ to a command when no args are given.
+
+ * eshell/esh-arg.el (eshell-parse-double-quote): If a
+ double-quoted argument resolves to nil, return it as an empty
+ string rather than as nil. This made it impossible to pass "" to
+ a shell script as a null string argument.
+
+2005-08-26 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * outline.el (outline-invent-heading): New fun.
+ (outline-promote, outline-demote): Use it.
+ (outline-move-subtree-down): Remove unused vars `re' and `txt'.
+ (outline-end-of-subtree): Remove unused var `opoint'.
+
+2005-08-26 David Reitter <david.reitter@gmail.com>
+
+ * menu-bar.el (truncate-lines, write-file, print-buffer)
+ (ps-print-buffer-faces, ps-print-buffer, split-window):
+ Disable menu items when the frame they refer to is invisible, or when
+ they refer to a buffer and the minibuffer is selected.
+
+2005-08-26 Pavel Kobiakov <pk_at_work@yahoo.com>
+
+ * progmodes/flymake.el (flymake-highlight-err-lines):
+ Use save-excursion around flymake-highlight-line to preserve point.
+
+2005-08-26 Eli Zaretskii <eliz@gnu.org>
+
+ * progmodes/octave-mod.el: Change Author and Maintainer address.
+ (octave-maintainer-address): Change Kurt's email address.
+ * progmodes/octave-inf.el: Change Author and Maintainer address.
+ * progmodes/octave-hlp.el: Change Author and Maintainer address.
+
+2005-08-26 Kim F. Storm <storm@cua.dk>
+
+ * subr.el (version-list-<, version-list-<=, version-list-=):
+ Renamed from integer-list-*.
+ (version-list-not-zero): Likewise. Fix while loop.
+ (version=): Use version-list-= instead of string-equal.
+
+2005-08-26 Richard M. Stallman <rms@gnu.org>
+
+ * outline.el (outline-promote): Try shortening the heading.
+ As last resort, read the heading to use.
+ (outline-demote): As last resort, read the heading to use.
+
+2005-08-26 Romain Francoise <romain@orebokech.com>
+
+ * progmodes/compile.el (compilation-start): Doc fix.
+
+ * progmodes/antlr-mode.el (antlr-default): Fix defface form.
+ (antlr-font-lock-additional-keywords): Fix reference to
+ `antlr-font-lock-literal-regexp' erroneously changed during the
+ mass face rename.
+ (antlr-run-tool): Use `compilation-start'.
+
+ * textmodes/sgml-mode.el (sgml-validate): Use `compilation-start'
+ instead of the obsolete `compile-internal'.
+
+2005-08-26 Juanma Barranquero <lekktu@gmail.com>
+
+ * calendar/cal-bahai.el (date, displayed-month, displayed-year)
+ (number, original-date):
+ * calendar/cal-china.el (date):
+ * calendar/cal-coptic.el (date):
+ * calendar/cal-french.el (date):
+ * calendar/cal-hebrew.el (date, entry, number, original-date):
+ * calendar/cal-islam.el (date, number, original-date):
+ * calendar/cal-iso.el (date):
+ * calendar/cal-julian.el (date):
+ * calendar/cal-mayan.el (date):
+ * calendar/cal-menu.el (date, event):
+ * calendar/cal-persia.el (date):
+ * calendar/lunar.el (date):
+ * calendar/solar.el (date): Add defvars.
+
+ * emerge.el:
+ * ibuffer.el:
+ * info-xref.el:
+ * obsolete/bg-mouse.el:
+ * obsolete/sun-curs.el:
+ * obsolete/swedish.el: Move the `defvar's to the top level.
+
+ * smerge-mode.el (smerge-refined-change): Add :group.
+
2005-08-25 Stefan Monnier <monnier@iro.umontreal.ca>
* smerge-mode.el (smerge-remove-props): Make the args non-optional.
@@ -47,6 +508,12 @@
New hook.
(add-to-diary-list): Call `diary-modify-entry-list-string-function'
+2005-08-24 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/easy-mmode.el (define-minor-mode): Simplify.
+
+ * custom.el (custom-theme-set-variables): Sort minor modes last.
+
2005-08-24 Vinicius Jose Latorre <viniciusjl@ig.com.br>
* subr.el (version-separator, version-regexp-alist): New vars used by
@@ -122,18 +589,16 @@
(xscheme-allow-output-p, xscheme-prompt, xscheme-mode-string):
Move to beginning of file.
(scheme-interaction-mode-commands-alist)
- (scheme-interaction-mode-map, scheme-debugger-mode-map): Declare
- them before use. Note: the initialization code for the variables
- has not been moved because it uses functions that reference the
- variables.
+ (scheme-interaction-mode-map, scheme-debugger-mode-map):
+ Declare them before use. Note: the initialization code for the variables
+ has not been moved because it uses functions that reference the variables.
(xscheme-control-g-message-string, xscheme-process-filter-alist)
(xscheme-prompt-for-expression-map): Declare them before use.
(scheme-debugger-mode-commands): "?\ " -> "?\s".
2005-08-23 Ed Swarthout <ed.swarthout@gmail.com> (tiny change)
- * hexl.el (hexl-print-current-point-info): Fix simple spelling
- error.
+ * hexl.el (hexl-print-current-point-info): Fix simple spelling error.
2005-08-22 Juri Linkov <juri@jurta.org>
@@ -10161,7 +10626,7 @@
2005-01-21 Ren,Ai(B Kyllingstad <listmailxemacs@kyllingstad.com>
- * pcomplete.el: define pcomplete-read-event instead of read-event,
+ * pcomplete.el: Define pcomplete-read-event instead of read-event,
since it's not a complete read-event implementation
2005-01-20 Jay Belanger <belanger@truman.edu>
diff --git a/lisp/ansi-color.el b/lisp/ansi-color.el
index c329bab5788..ce84af445a5 100644
--- a/lisp/ansi-color.el
+++ b/lisp/ansi-color.el
@@ -86,6 +86,8 @@
;;; Code:
+(defvar comint-last-output-start)
+
;; Customization
(defgroup ansi-colors nil
diff --git a/lisp/bs.el b/lisp/bs.el
index 6f5281fc1e2..2e4fc881d9f 100644
--- a/lisp/bs.el
+++ b/lisp/bs.el
@@ -131,6 +131,8 @@
;;; Code:
+(defvar font-lock-verbose)
+
;; ----------------------------------------------------------------------
;; Globals for customization
;; ----------------------------------------------------------------------
diff --git a/lisp/calendar/cal-bahai.el b/lisp/calendar/cal-bahai.el
index 6bf84d11951..dd06ca6b9ef 100644
--- a/lisp/calendar/cal-bahai.el
+++ b/lisp/calendar/cal-bahai.el
@@ -54,6 +54,12 @@
;;; Code:
+(defvar date)
+(defvar displayed-month)
+(defvar displayed-year)
+(defvar number)
+(defvar original-date)
+
(require 'cal-julian)
(defvar bahai-calendar-month-name-array
@@ -215,7 +221,7 @@ calendar. This function is provided for use with the
(mark (regexp-quote diary-nonmarking-symbol)))
(calendar-for-loop i from 1 to number do
(let* ((d diary-date-forms)
- (bdate (calendar-bahai-from-absolute
+ (bdate (calendar-bahai-from-absolute
(calendar-absolute-from-gregorian gdate)))
(month (extract-calendar-month bdate))
(day (extract-calendar-day bdate))
@@ -460,7 +466,7 @@ Prefix arg will make the entry nonmarking."
(make-diary-entry
(concat
bahai-diary-entry-symbol
- (calendar-date-string
+ (calendar-date-string
(calendar-bahai-from-absolute
(calendar-absolute-from-gregorian
(calendar-cursor-to-date t)))
@@ -478,7 +484,7 @@ Prefix arg will make the entry nonmarking."
(make-diary-entry
(concat
bahai-diary-entry-symbol
- (calendar-date-string
+ (calendar-date-string
(calendar-bahai-from-absolute
(calendar-absolute-from-gregorian
(calendar-cursor-to-date t)))))
@@ -497,7 +503,7 @@ Prefix arg will make the entry nonmarking."
(make-diary-entry
(concat
bahai-diary-entry-symbol
- (calendar-date-string
+ (calendar-date-string
(calendar-bahai-from-absolute
(calendar-absolute-from-gregorian
(calendar-cursor-to-date t)))))
diff --git a/lisp/calendar/cal-china.el b/lisp/calendar/cal-china.el
index 79beef836be..24d9c4f161b 100644
--- a/lisp/calendar/cal-china.el
+++ b/lisp/calendar/cal-china.el
@@ -49,6 +49,7 @@
;;; Code:
+(defvar date)
(defvar displayed-month)
(defvar displayed-year)
diff --git a/lisp/calendar/cal-coptic.el b/lisp/calendar/cal-coptic.el
index 65a633b5d5c..14b3c65796f 100644
--- a/lisp/calendar/cal-coptic.el
+++ b/lisp/calendar/cal-coptic.el
@@ -40,6 +40,8 @@
;;; Code:
+(defvar date)
+
(require 'cal-julian)
(defvar coptic-calendar-month-name-array
diff --git a/lisp/calendar/cal-french.el b/lisp/calendar/cal-french.el
index bdb4d971bbf..7bab001a0bb 100644
--- a/lisp/calendar/cal-french.el
+++ b/lisp/calendar/cal-french.el
@@ -43,6 +43,8 @@
;;; Code:
+(defvar date)
+
(require 'calendar)
(defun french-calendar-accents ()
diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el
index 168476b01c3..9805a00cc7a 100644
--- a/lisp/calendar/cal-hebrew.el
+++ b/lisp/calendar/cal-hebrew.el
@@ -41,8 +41,12 @@
;;; Code:
+(defvar date)
(defvar displayed-month)
(defvar displayed-year)
+(defvar entry)
+(defvar number)
+(defvar original-date)
(require 'calendar)
diff --git a/lisp/calendar/cal-islam.el b/lisp/calendar/cal-islam.el
index c52d26c0de6..9cdcba6a370 100644
--- a/lisp/calendar/cal-islam.el
+++ b/lisp/calendar/cal-islam.el
@@ -40,8 +40,11 @@
;;; Code:
+(defvar date)
(defvar displayed-month)
(defvar displayed-year)
+(defvar number)
+(defvar original-date)
(require 'cal-julian)
diff --git a/lisp/calendar/cal-iso.el b/lisp/calendar/cal-iso.el
index 021ea6d60ee..b32bd4eb2df 100644
--- a/lisp/calendar/cal-iso.el
+++ b/lisp/calendar/cal-iso.el
@@ -41,6 +41,8 @@
;;; Code:
+(defvar date)
+
(require 'calendar)
(defun calendar-absolute-from-iso (date)
diff --git a/lisp/calendar/cal-julian.el b/lisp/calendar/cal-julian.el
index bff0d0e066d..48fe8725b06 100644
--- a/lisp/calendar/cal-julian.el
+++ b/lisp/calendar/cal-julian.el
@@ -40,6 +40,7 @@
;;; Code:
+(defvar date)
(defvar displayed-month)
(defvar displayed-year)
diff --git a/lisp/calendar/cal-mayan.el b/lisp/calendar/cal-mayan.el
index 0c491b4c296..da411c14984 100644
--- a/lisp/calendar/cal-mayan.el
+++ b/lisp/calendar/cal-mayan.el
@@ -53,6 +53,8 @@
;;; Code:
+(defvar date)
+
(require 'calendar)
(defconst calendar-mayan-days-before-absolute-zero 1137142
diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el
index dabb933785f..0291c41c1c6 100644
--- a/lisp/calendar/cal-menu.el
+++ b/lisp/calendar/cal-menu.el
@@ -38,8 +38,10 @@
;;; Code:
+(defvar date)
(defvar displayed-month)
(defvar displayed-year)
+(defvar event)
(eval-when-compile (require 'calendar))
(require 'easymenu)
diff --git a/lisp/calendar/cal-persia.el b/lisp/calendar/cal-persia.el
index 85e79327dcc..b92f8c29b8c 100644
--- a/lisp/calendar/cal-persia.el
+++ b/lisp/calendar/cal-persia.el
@@ -40,6 +40,8 @@
;;; Code:
+(defvar date)
+
(require 'cal-julian)
(defvar persian-calendar-month-name-array
diff --git a/lisp/calendar/lunar.el b/lisp/calendar/lunar.el
index c611cf2ac29..d4d5cf23157 100644
--- a/lisp/calendar/lunar.el
+++ b/lisp/calendar/lunar.el
@@ -49,6 +49,7 @@
;;; Code:
+(defvar date)
(defvar displayed-month)
(defvar displayed-year)
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el
index fde19650d87..ea027a50ca6 100644
--- a/lisp/calendar/solar.el
+++ b/lisp/calendar/solar.el
@@ -60,6 +60,7 @@
;;; Code:
+(defvar date)
(defvar displayed-month)
(defvar displayed-year)
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index c0e54b4add3..9827ab7d594 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -670,7 +670,7 @@ If `last', order groups after non-groups."
:type 'boolean
:group 'custom-browse)
-(defcustom custom-buffer-sort-alphabetically nil
+(defcustom custom-buffer-sort-alphabetically t
"If non-nil, sort members of each customization group alphabetically."
:type 'boolean
:group 'custom-buffer)
@@ -3836,8 +3836,9 @@ Optional EVENT is the location for the menu."
(setq magics (cdr magics)))))
(widget-put widget :custom-state found)))
(custom-magic-reset widget))
+
+;;; Reading and writing the custom file.
-;;; The `custom-save-all' Function.
;;;###autoload
(defcustom custom-file nil
"File used for storing customization information.
@@ -3898,17 +3899,33 @@ if only the first line of the docstring is shown."))
(setq user-init-file default-init-file))
user-init-file))))
+;;;###autoload
+(defun custom-save-all ()
+ "Save all customizations in `custom-file'."
+ (let* ((filename (custom-file))
+ (recentf-exclude (if recentf-mode
+ (cons (concat "\\`"
+ (regexp-quote (custom-file))
+ "\\'")
+ recentf-exclude)))
+ (old-buffer (find-buffer-visiting filename)))
+ (with-current-buffer (or old-buffer (find-file-noselect filename))
+ (let ((inhibit-read-only t))
+ (custom-save-variables)
+ (custom-save-faces))
+ (let ((file-precious-flag t))
+ (save-buffer))
+ (unless old-buffer
+ (kill-buffer (current-buffer))))))
+
+;; Editing the custom file contents in a buffer.
+
(defun custom-save-delete (symbol)
- "Visit `custom-file' and delete all calls to SYMBOL from it.
+ "Delete all calls to SYMBOL from the contents of the current buffer.
Leave point at the old location of the first such call,
-or (if there were none) at the end of the buffer."
- (let ((default-major-mode 'emacs-lisp-mode)
- (recentf-exclude (if recentf-mode
- (cons (concat "\\`"
- (regexp-quote (custom-file))
- "\\'")
- recentf-exclude))))
- (set-buffer (find-file-noselect (custom-file))))
+or (if there were none) at the end of the buffer.
+
+This function does not save the buffer."
(goto-char (point-min))
;; Skip all whitespace and comments.
(while (forward-comment 1))
@@ -4128,24 +4145,7 @@ or (if there were none) at the end of the buffer."
(put symbol 'customized-face-comment nil)))))
;; We really should update all custom buffers here.
(custom-save-all))
-
-;;;###autoload
-(defun custom-save-all ()
- "Save all customizations in `custom-file'."
- (let ((inhibit-read-only t))
- (custom-save-variables)
- (custom-save-faces)
- (save-excursion
- (let ((default-major-mode nil)
- (recentf-exclude (if recentf-mode
- (cons (concat "\\`"
- (regexp-quote (custom-file))
- "\\'")
- recentf-exclude))))
- (set-buffer (find-file-noselect (custom-file))))
- (let ((file-precious-flag t))
- (save-buffer)))))
-
+
;;; The Customize Menu.
;;; Menu support
diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index 95a0a4b2896..43cf96e34fa 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -168,8 +168,9 @@ It includes all faces in list FACES."
(princ " '(")
(prin1 symbol)
(princ " ")
- (prin1 (or (get symbol 'customized-face)
- (get symbol 'face-defface-spec)))
+ (prin1 (list (append '(t)
+ (custom-face-attributes-get
+ 'font-lock-comment-face nil))))
(princ ")")))
faces)
(if (bolp)
diff --git a/lisp/custom.el b/lisp/custom.el
index 0831535f181..2b714a7b458 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -583,7 +583,7 @@ This recursively follows aliases."
(defvar custom-known-themes '(user standard)
"Themes that have been defined with `deftheme'.
The default value is the list (user standard). The theme `standard'
-contains the Emacs standard settings from the original Lisp files. The
+contains the settings before custom themes are applied. The
theme `user' contains all the settings the user customized and saved.
Additional themes declared with the `deftheme' macro will be added to
the front of this list.")
@@ -649,6 +649,16 @@ See `custom-known-themes' for a list of known themes."
(progn
(setcar (cdr setting) mode)
(setcar (cddr setting) value))
+ (if (null old)
+ (setq old
+ (list
+ (list 'standard 'set
+ (if (eq prop 'theme-value)
+ (symbol-value symbol)
+ (list
+ (append
+ '(t)
+ (custom-face-attributes-get symbol nil))))))))
(put symbol prop (cons (list theme mode value) old)))
;; Record, for each theme, all its settings.
(put theme 'theme-settings
@@ -953,7 +963,7 @@ into `features'.
This allows for a file-name convention for autoloading themes:
Every theme X has a property `provide-theme' whose value is \"X-theme\".
-\(require-theme X) then attempts to load the file `X-theme.el'."
+\(load-theme X) then attempts to load the file `X-theme.el'."
(intern (concat (symbol-name theme) "-theme")))
;;; Loading themes.
@@ -996,7 +1006,7 @@ Every theme X has a property `provide-theme' whose value is \"X-theme\".
"~/_emacs.d/"
"~/.emacs.d/")
"Directory in which Custom theme files should be written.
-`require-theme' searches this directory in addition to load-path.
+`load-theme' searches this directory in addition to load-path.
The command `customize-create-theme' writes the files it produces
into this directory."
:type 'string
@@ -1031,11 +1041,11 @@ by `custom-make-theme-feature'."
;; `user' must always be the highest-precedence enabled theme.
;; Make that remain true. (This has the effect of making user settings
;; override the ones just loaded, too.)
- (custom-enable-theme 'user))
+ (enable-theme 'user))
-(defun require-theme (theme)
+(defun load-theme (theme)
"Try to load a theme's settings from its file.
-This also enables the theme; use `custom-disable-theme' to disable it."
+This also enables the theme; use `disable-theme' to disable it."
;; THEME's feature is stored in THEME's `theme-feature' property.
;; Usually the `theme-feature' property contains a symbol created
@@ -1043,6 +1053,7 @@ This also enables the theme; use `custom-disable-theme' to disable it."
;; Note we do no check for validity of the theme here.
;; This allows to pull in themes by a file-name convention
+ (interactive "SCustom theme name: ")
(let ((load-path (if (file-directory-p custom-theme-directory)
(cons custom-theme-directory load-path)
load-path)))
@@ -1070,12 +1081,12 @@ All the themes loaded for BY-THEME are recorded in BY-THEME's property
(let ((themes-loaded (get by-theme 'theme-loads-themes)))
(dolist (theme body)
(cond ((and (consp theme) (eq (car theme) 'reset))
- (custom-disable-theme (cadr theme)))
+ (disable-theme (cadr theme)))
((and (consp theme) (eq (car theme) 'hidden))
- (require-theme (cadr theme))
- (custom-disable-theme (cadr theme)))
+ (load-theme (cadr theme))
+ (disable-theme (cadr theme)))
(t
- (require-theme theme)))
+ (load-theme theme)))
(push theme themes-loaded))
(put by-theme 'theme-loads-themes themes-loaded)))
@@ -1087,10 +1098,11 @@ See `custom-theme-load-themes' for more information on BODY."
;;; Enabling and disabling loaded themes.
-(defun custom-enable-theme (theme)
+(defun enable-theme (theme)
"Reenable all variable and face settings defined by THEME.
The newly enabled theme gets the highest precedence (after `user').
If it is already enabled, just give it highest precedence (after `user')."
+ (interactive "SEnable Custom theme: ")
(let ((settings (get theme 'theme-settings)))
(dolist (s settings)
(let* ((prop (car s))
@@ -1104,17 +1116,18 @@ If it is already enabled, just give it highest precedence (after `user')."
(cons theme (delq theme custom-enabled-themes)))
;; `user' must always be the highest-precedence enabled theme.
(unless (eq theme 'user)
- (custom-enable-theme 'user)))
+ (enable-theme 'user)))
-(defun custom-disable-theme (theme)
+(defun disable-theme (theme)
"Disable all variable and face settings defined by THEME.
See `custom-known-themes' for a list of known themes."
+ (interactive "SDisable Custom theme: ")
(let ((settings (get theme 'theme-settings)))
(dolist (s settings)
(let* ((prop (car s))
(symbol (cadr s))
(spec-list (get symbol prop)))
- (put symbol 'theme-value (assq-delete-all theme spec-list))
+ (put symbol prop (assq-delete-all theme spec-list))
(if (eq prop 'theme-value)
(custom-theme-recalc-variable symbol)
(custom-theme-recalc-face symbol)))))
@@ -1153,13 +1166,6 @@ This function returns nil if no custom theme specifies a value for VARIABLE."
(if theme-value
(custom-theme-value (car (car theme-value)) theme-value))))
-(defun custom-face-theme-value (face)
- "Return the face spec of FACE according to currently enabled custom themes.
-This function returns nil if no custom theme specifies anything for FACE."
- (let* ((theme-value (get face 'theme-face)))
- (if theme-value
- (custom-theme-value (car (car theme-value)) theme-value))))
-
(defun custom-theme-recalc-variable (variable)
"Set VARIABLE according to currently enabled custom themes."
(let ((valspec (custom-variable-theme-value variable)))
@@ -1174,16 +1180,9 @@ This function returns nil if no custom theme specifies anything for FACE."
(defun custom-theme-recalc-face (face)
"Set FACE according to currently enabled custom themes."
- (let ((spec (custom-face-theme-value face)))
- (when spec
- (put face 'save-face spec))
- (unless spec
- (setq spec (get face 'face-defface-spec)))
- (when spec
- (when (or (get face 'force-face) (facep face))
- (unless (facep face)
- (make-empty-face face))
- (face-spec-set face spec)))))
+ (let ((theme-faces (reverse (get face 'theme-face))))
+ (dolist (spec theme-faces)
+ (face-spec-set face (car (cddr spec))))))
(defun custom-theme-reset-variables (theme &rest args)
"Reset the specs in THEME of some variables to their values in other themes.
diff --git a/lisp/diff-mode.el b/lisp/diff-mode.el
index 6cd4c843ad1..09c3b6a8939 100644
--- a/lisp/diff-mode.el
+++ b/lisp/diff-mode.el
@@ -55,6 +55,8 @@
(eval-when-compile (require 'cl))
+(defvar add-log-buffer-file-name-function)
+
(defgroup diff-mode ()
"Major mode for viewing/editing diffs."
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 074bdc376a4..8ce5e5d48d0 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -111,6 +111,8 @@
(require 'dired-aux)
+(defvar vm-folder-directory)
+
;;; User-defined variables.
(defgroup dired-x nil
diff --git a/lisp/dired.el b/lisp/dired.el
index 508bc39bbb5..e06e808e1ae 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -1860,9 +1860,12 @@ DIR must be a directory name, not a file name."
(western-comma (concat month s "+" dd "," s "+" yyyy))
;; Japanese MS-Windows ls-lisp has one-digit months, and
;; omits the Kanji characters after month and day-of-month.
+ ;; On Mac OS X 10.3, the date format in East Asian locales is
+ ;; day-of-month digits followed by month digits.
(mm "[ 0-1]?[0-9]")
- (japanese
- (concat mm l "?" s dd l "?" s "+"
+ (east-asian
+ (concat "\\(" mm l "?" s dd l "?" s "+"
+ "\\|" dd s mm s "+" "\\)"
"\\(" HH:MM "\\|" yyyy l "?" "\\)")))
;; The "[0-9]" below requires the previous column to end in a digit.
;; This avoids recognizing `1 may 1997' as a date in the line:
@@ -1872,7 +1875,7 @@ DIR must be a directory name, not a file name."
;; This avoids recognizing `jservice 10 1024' as a date in the line:
;; drwxr-xr-x 3 jservice 10 1024 Jul 2 1997 esg-host
(concat ".*[0-9][BkKMGTPEZY]?" s
- "\\(" western "\\|" western-comma "\\|" japanese "\\|" iso "\\)"
+ "\\(" western "\\|" western-comma "\\|" east-asian "\\|" iso "\\)"
s "+"))
"Regular expression to match up to the file name in a directory listing.
The default value is designed to recognize dates and times
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index 6b6d3ba4393..913ffcf1941 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -190,6 +190,9 @@
(defmacro defcustom (var value doc &rest args)
`(defvar ,var ,value ,doc))))
+(defvar compilation-error-regexp-alist)
+(defvar compilation-mode-font-lock-keywords)
+
(defcustom checkdoc-autofix-flag 'semiautomatic
"*Non-nil means attempt auto-fixing of doc strings.
If this value is the symbol `query', then the user is queried before
@@ -653,7 +656,7 @@ style."
"No Additional style errors. Continuing...")
(sit-for 2))))))
;; Move to the next error (if available)
- ((or (checkdoc-char= c ?n) (checkdoc-char= c ?\ ))
+ ((or (checkdoc-char= c ?n) (checkdoc-char= c ?\s))
(let ((ne (funcall findfunc nil)))
(if (not ne)
(if showstatus
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 6d281e5deb2..e50d5bd125c 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -30,6 +30,11 @@
;;; Code:
+(defvar font-lock-comment-face)
+(defvar font-lock-doc-face)
+(defvar font-lock-keywords-case-fold-search)
+(defvar font-lock-string-face)
+
(defvar lisp-mode-abbrev-table nil)
(defvar emacs-lisp-mode-syntax-table
@@ -50,7 +55,7 @@
(while (< i 128)
(modify-syntax-entry i "_ " table)
(setq i (1+ i)))
- (modify-syntax-entry ? " " table)
+ (modify-syntax-entry ?\s " " table)
(modify-syntax-entry ?\t " " table)
(modify-syntax-entry ?\f " " table)
(modify-syntax-entry ?\n "> " table)
diff --git a/lisp/emacs-lisp/lselect.el b/lisp/emacs-lisp/lselect.el
index 38ae8b74460..d0b333edfe4 100644
--- a/lisp/emacs-lisp/lselect.el
+++ b/lisp/emacs-lisp/lselect.el
@@ -34,6 +34,11 @@
;; all upper-case; this may seem tasteless, but it makes there be a 1:1
;; correspondence between these symbols and X Atoms (which are upcased.)
+;; This is Lucid/XEmacs stuff
+(defvar mouse-highlight-priority)
+(defvar x-lost-selection-functions)
+(defvar zmacs-regions)
+
(defalias 'x-get-cutbuffer 'x-get-cut-buffer)
(defalias 'x-store-cutbuffer 'x-set-cut-buffer)
diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el
index 542948c777c..1635aa4bfeb 100644
--- a/lisp/emacs-lisp/pp.el
+++ b/lisp/emacs-lisp/pp.el
@@ -27,6 +27,8 @@
;;; Code:
+(defvar font-lock-verbose)
+
(defgroup pp nil
"Pretty printer for Emacs Lisp."
:prefix "pp-"
diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el
index a3683e82d2b..126c8d50dd9 100644
--- a/lisp/emacs-lisp/syntax.el
+++ b/lisp/emacs-lisp/syntax.el
@@ -47,6 +47,8 @@
(eval-when-compile (require 'cl))
+(defvar font-lock-beginning-of-syntax-function)
+
(defsubst syntax-ppss-depth (ppss)
(nth 0 ppss))
diff --git a/lisp/emacs-lisp/tcover-ses.el b/lisp/emacs-lisp/tcover-ses.el
index 1374aa1fdc0..e79c42180f4 100644
--- a/lisp/emacs-lisp/tcover-ses.el
+++ b/lisp/emacs-lisp/tcover-ses.el
@@ -23,6 +23,9 @@
(require 'testcover)
+(defvar ses-initial-global-parameters)
+(defvar ses-mode-map)
+
;;;Here are some macros that exercise SES. Set `pause' to t if you want the
;;;macros to pause after each step.
(let* ((pause nil)
diff --git a/lisp/emacs-lisp/tcover-unsafep.el b/lisp/emacs-lisp/tcover-unsafep.el
index 354cfe6ab16..7f7a8fa57de 100644
--- a/lisp/emacs-lisp/tcover-unsafep.el
+++ b/lisp/emacs-lisp/tcover-unsafep.el
@@ -25,6 +25,8 @@
(require 'testcover)
+(defvar safe-functions)
+
;;;These forms are all considered safe
(defconst testcover-unsafep-safe
'(((lambda (x) (* x 2)) 14)
diff --git a/lisp/emerge.el b/lisp/emerge.el
index e55a75ef2fc..447e45f14f3 100644
--- a/lisp/emerge.el
+++ b/lisp/emerge.el
@@ -44,11 +44,17 @@
;;;###autoload (define-key menu-bar-emerge-menu [emerge-buffers]
;;;###autoload '("Buffers..." . emerge-buffers))
-(eval-when-compile
- ;; There aren't really global variables, just dynamic bindings
- (defvar merge-begin) (defvar merge-end) (defvar template)
- (defvar A-begin) (defvar A-end) (defvar B-begin) (defvar B-end)
- (defvar diff) (defvar diff-vector) (defvar valid-diff))
+;; There aren't really global variables, just dynamic bindings
+(defvar A-begin)
+(defvar A-end)
+(defvar B-begin)
+(defvar B-end)
+(defvar diff)
+(defvar diff-vector)
+(defvar merge-begin)
+(defvar merge-end)
+(defvar template)
+(defvar valid-diff)
;;; Macros
diff --git a/lisp/eshell/esh-arg.el b/lisp/eshell/esh-arg.el
index 7e0be3138e8..322a0173b27 100644
--- a/lisp/eshell/esh-arg.el
+++ b/lisp/eshell/esh-arg.el
@@ -342,8 +342,10 @@ special character that is not itself a backslash."
(save-restriction
(forward-char)
(narrow-to-region (point) end)
- (list 'eshell-escape-arg
- (eshell-parse-argument)))
+ (let ((arg (eshell-parse-argument)))
+ (if (eq arg nil)
+ ""
+ (list 'eshell-escape-arg arg))))
(goto-char (1+ end)))))))
(defun eshell-parse-special-reference ()
diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el
index d396908d8a6..e655a87f898 100644
--- a/lisp/eshell/esh-cmd.el
+++ b/lisp/eshell/esh-cmd.el
@@ -453,12 +453,14 @@ hooks should be run before and after the command."
(defun eshell-rewrite-named-command (terms)
"If no other rewriting rule transforms TERMS, assume a named command."
- (list (if eshell-in-pipeline-p
- 'eshell-named-command*
- 'eshell-named-command)
- (car terms)
- (and (cdr terms)
- (append (list 'list) (cdr terms)))))
+ (let ((sym (if eshell-in-pipeline-p
+ 'eshell-named-command*
+ 'eshell-named-command))
+ (cmd (car terms))
+ (args (cdr terms)))
+ (if args
+ (list sym cmd (append (list 'list) (cdr terms)))
+ (list sym cmd))))
(eshell-deftest cmd named-command
"Execute named command"
diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el
index e7192399a96..0aa3f4486ad 100644
--- a/lisp/eshell/esh-ext.el
+++ b/lisp/eshell/esh-ext.el
@@ -92,7 +92,7 @@ since nothing else but Eshell will be able to understand
(if (string-match "\\(\\`cmdproxy\\|sh\\)\\.\\(com\\|exe\\)"
shell-file-name)
(or (eshell-search-path "cmd.exe")
- (eshell-search-path "command.exe"))
+ (eshell-search-path "command.com"))
shell-file-name))
"*The name of the shell command to use for DOS/Windows batch files.
This defaults to nil on non-Windows systems, where this variable is
diff --git a/lisp/faces.el b/lisp/faces.el
index 738bd99ba24..238c4c788f4 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -32,6 +32,8 @@
;; Warning suppression -- can't require x-win in batch:
(autoload 'xw-defined-colors "x-win"))
+(defvar help-xref-stack-item)
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Font selection.
diff --git a/lisp/files.el b/lisp/files.el
index 1613f3add95..1ffd17eefd4 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -30,6 +30,9 @@
;;; Code:
+(defvar font-lock-keywords)
+
+
(defgroup backup nil
"Backups of edited data files."
:group 'files)
@@ -2407,7 +2410,7 @@ If VAL is nil or omitted, the question is whether any value might be
dangerous."
(let ((safep (get sym 'safe-local-variable)))
(or (get sym 'risky-local-variable)
- (and (string-match "-hooks?$\\|-functions?$\\|-forms?$\\|-program$\\|-command$\\|-predicate$\\|font-lock-keywords$\\|font-lock-keywords-[0-9]+$\\|font-lock-syntactic-keywords$\\|-frame-alist$\\|-mode-alist$\\|-map$\\|-map-alist$"
+ (and (string-match "-hooks?$\\|-functions?$\\|-forms?$\\|-program$\\|-commands?$\\|-predicates?$\\|font-lock-keywords$\\|font-lock-keywords-[0-9]+$\\|font-lock-syntactic-keywords$\\|-frame-alist$\\|-mode-alist$\\|-map$\\|-map-alist$"
(symbol-name sym))
(not safep))
;; If the safe-local-variable property isn't t or nil,
@@ -4062,53 +4065,57 @@ Does not consider `auto-save-visited-file-name' as that variable is checked
before calling this function. You can redefine this for customization.
See also `auto-save-file-name-p'."
(if buffer-file-name
- (let ((list auto-save-file-name-transforms)
- (filename buffer-file-name)
- result uniq)
- ;; Apply user-specified translations
- ;; to the file name.
- (while (and list (not result))
- (if (string-match (car (car list)) filename)
- (setq result (replace-match (cadr (car list)) t nil
- filename)
- uniq (car (cddr (car list)))))
- (setq list (cdr list)))
- (if result
- (if uniq
- (setq filename (concat
- (file-name-directory result)
- (subst-char-in-string
- ?/ ?!
- (replace-regexp-in-string "!" "!!"
- filename))))
- (setq filename result)))
- (setq result
- (if (and (eq system-type 'ms-dos)
- (not (msdos-long-file-names)))
- ;; We truncate the file name to DOS 8+3 limits
- ;; before doing anything else, because the regexp
- ;; passed to string-match below cannot handle
- ;; extensions longer than 3 characters, multiple
- ;; dots, and other atrocities.
- (let ((fn (dos-8+3-filename
- (file-name-nondirectory buffer-file-name))))
- (string-match
- "\\`\\([^.]+\\)\\(\\.\\(..?\\)?.?\\|\\)\\'"
- fn)
- (concat (file-name-directory buffer-file-name)
- "#" (match-string 1 fn)
- "." (match-string 3 fn) "#"))
- (concat (file-name-directory filename)
- "#"
- (file-name-nondirectory filename)
- "#")))
- ;; Make sure auto-save file names don't contain characters
- ;; invalid for the underlying filesystem.
- (if (and (memq system-type '(ms-dos windows-nt))
- ;; Don't modify remote (ange-ftp) filenames
- (not (string-match "^/\\w+@[-A-Za-z0-9._]+:" result)))
- (convert-standard-filename result)
- result))
+ (let ((handler (find-file-name-handler buffer-file-name
+ 'make-auto-save-file-name)))
+ (if handler
+ (funcall handler 'make-auto-save-file-name)
+ (let ((list auto-save-file-name-transforms)
+ (filename buffer-file-name)
+ result uniq)
+ ;; Apply user-specified translations
+ ;; to the file name.
+ (while (and list (not result))
+ (if (string-match (car (car list)) filename)
+ (setq result (replace-match (cadr (car list)) t nil
+ filename)
+ uniq (car (cddr (car list)))))
+ (setq list (cdr list)))
+ (if result
+ (if uniq
+ (setq filename (concat
+ (file-name-directory result)
+ (subst-char-in-string
+ ?/ ?!
+ (replace-regexp-in-string "!" "!!"
+ filename))))
+ (setq filename result)))
+ (setq result
+ (if (and (eq system-type 'ms-dos)
+ (not (msdos-long-file-names)))
+ ;; We truncate the file name to DOS 8+3 limits
+ ;; before doing anything else, because the regexp
+ ;; passed to string-match below cannot handle
+ ;; extensions longer than 3 characters, multiple
+ ;; dots, and other atrocities.
+ (let ((fn (dos-8+3-filename
+ (file-name-nondirectory buffer-file-name))))
+ (string-match
+ "\\`\\([^.]+\\)\\(\\.\\(..?\\)?.?\\|\\)\\'"
+ fn)
+ (concat (file-name-directory buffer-file-name)
+ "#" (match-string 1 fn)
+ "." (match-string 3 fn) "#"))
+ (concat (file-name-directory filename)
+ "#"
+ (file-name-nondirectory filename)
+ "#")))
+ ;; Make sure auto-save file names don't contain characters
+ ;; invalid for the underlying filesystem.
+ (if (and (memq system-type '(ms-dos windows-nt))
+ ;; Don't modify remote (ange-ftp) filenames
+ (not (string-match "^/\\w+@[-A-Za-z0-9._]+:" result)))
+ (convert-standard-filename result)
+ result))))
;; Deal with buffers that don't have any associated files. (Mail
;; mode tends to create a good number of these.)
diff --git a/lisp/find-lisp.el b/lisp/find-lisp.el
index b019fd6ba98..59dac2f62d6 100644
--- a/lisp/find-lisp.el
+++ b/lisp/find-lisp.el
@@ -46,6 +46,9 @@
;;; Code:
+(defvar dired-buffers)
+(defvar dired-subdir-alist)
+
;; Internal variables
(defvar find-lisp-regexp nil
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 3dca353f2ef..38ea3aa029d 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -224,17 +224,6 @@
(defgroup font-lock-extra-types nil
"Extra mode-specific type names for highlighting declarations."
:group 'font-lock)
-
-;; Define support mode groups here to impose `font-lock' group order.
-(defgroup fast-lock nil
- "Font Lock support mode to cache fontification."
- :load 'fast-lock
- :group 'font-lock)
-
-(defgroup lazy-lock nil
- "Font Lock support mode to fontify lazily."
- :load 'lazy-lock
- :group 'font-lock)
;; User variables.
@@ -293,7 +282,7 @@ If a number, only buffers greater than this size have fontification messages."
(integer :tag "size"))
:group 'font-lock)
-(defcustom font-lock-lines-before 1
+(defcustom font-lock-lines-before 0
"*Number of lines before the changed text to include in refontification."
:type 'integer
:group 'font-lock
@@ -1049,6 +1038,8 @@ a very meaningful entity to highlight.")
;; Use the fontification syntax table, if any.
(when font-lock-syntax-table
(set-syntax-table font-lock-syntax-table))
+ (goto-char beg)
+ (setq beg (line-beginning-position (- 1 font-lock-lines-before)))
;; check to see if we should expand the beg/end area for
;; proper multiline matches
(when (and font-lock-multiline
@@ -1105,8 +1096,7 @@ what properties to clear before refontifying a region.")
(save-match-data
;; Rescan between start of lines enclosing the region.
(font-lock-fontify-region
- (progn (goto-char beg)
- (forward-line (- font-lock-lines-before)) (point))
+ (progn (goto-char beg) (forward-line 0) (point))
(progn (goto-char end) (forward-line 1) (point)))))))
(defun font-lock-fontify-block (&optional arg)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index cc85c51f5e2..530758aefb0 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,121 @@
+2005-09-05 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * message.el (message-tab-body-function): Fixed mismatched custom
+ type.
+
+ * gnus.el (gnus-group-change-level-function): Ditto.
+
+ * gnus-msg.el (gnus-outgoing-message-group): Ditto.
+
+ * gnus-art.el (gnus-signature-limit)
+ (gnus-article-mime-part-function): Ditto.
+
+2005-09-04 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * nnweb.el (nnweb-type-definition, nnweb-google-wash-article):
+ Make fetching article by MID work again for Google Groups. Added
+ FIXME concerning gnus-group-make-web-group.
+
+ * mml-smime.el (mml-smime-sign-query, mml-smime-get-dns-cert):
+ Don't depend on Gnus by using mail-extract-address-components if
+ gnus-extract-address-components is not bound.
+
+ * gnus.el (gnus-user-agent): Use list of symbols instead of
+ symbols. Display full version number for (S)XEmacs. Optionally
+ display (S)XEmacs codename.
+
+ * gnus-util.el (gnus-emacs-version): Update for new
+ `gnus-user-agent'.
+
+ * gnus-msg.el (gnus-extended-version): Make it possible to omit
+ Gnus version.
+
+2005-09-02 Hrvoje Niksic <hniksic@xemacs.org>
+
+ * mm-encode.el (mm-encode-content-transfer-encoding): Likewise
+ when encoding.
+
+ * mm-bodies.el (mm-decode-content-transfer-encoding):
+ De-canonicalize CRLF for all text content types, not just
+ text/plain.
+
+2005-09-02 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-sum.el (gnus-thread-hide-subtree): Doc fix.
+
+ * gnus-msg.el (gnus-inews-insert-gcc): Fix the mistake of using
+ list, not listp.
+
+2005-08-29 Romain Francoise <romain@orebokech.com>
+
+ * gnus-fun.el (gnus-convert-image-to-face-command): Fix typo in
+ docstring.
+ (gnus-face-from-file): Likewise.
+
+2005-08-31 Juanma Barranquero <lekktu@gmail.com>
+
+ * gnus-art.el (w3m-minor-mode-map):
+ * gnus-spec.el (gnus-newsrc-file-version):
+ * gnus-util.el (nnmail-active-file-coding-system)
+ (gnus-original-article-buffer, gnus-user-agent):
+ * gnus.el (gnus-ham-process-destinations)
+ (gnus-parameter-ham-marks-alist)
+ (gnus-parameter-spam-marks-alist, gnus-spam-autodetect)
+ (gnus-spam-autodetect-methods, gnus-spam-newsgroup-contents)
+ (gnus-spam-process-destinations, gnus-spam-process-newsgroups):
+ * mm-decode.el (gnus-current-window-configuration):
+ * mm-extern.el (gnus-article-mime-handles):
+ * mm-url.el (url-current-object, url-package-name)
+ (url-package-version):
+ * mm-view.el (gnus-article-mime-handles, gnus-newsgroup-charset)
+ (smime-keys, w3m-cid-retrieve-function-alist)
+ (w3m-current-buffer, w3m-display-inline-images)
+ (w3m-minor-mode-map):
+ * mml-smime.el (gnus-extract-address-components):
+ * mml.el (gnus-article-mime-handles, gnus-mouse-2)
+ (gnus-newsrc-hashtb, message-default-charset)
+ (message-deletable-headers, message-options)
+ (message-posting-charset, message-required-mail-headers)
+ (message-required-news-headers):
+ * mml1991.el (mc-pgp-always-sign):
+ * mml2015.el (mc-pgp-always-sign):
+ * nnheader.el (nnmail-extra-headers):
+ * rfc1843.el (gnus-decode-encoded-word-function)
+ (gnus-decode-header-function, gnus-newsgroup-name):
+ * spam-stat.el (gnus-original-article-buffer): Add defvars.
+
+2005-08-31 Juanma Barranquero <lekktu@gmail.com>
+
+ * gnus-art.el (w3m-minor-mode-map):
+ * gnus-spec.el (gnus-newsrc-file-version):
+ * gnus-util.el (nnmail-active-file-coding-system)
+ (gnus-original-article-buffer, gnus-user-agent):
+ * gnus.el (gnus-ham-process-destinations)
+ (gnus-parameter-ham-marks-alist)
+ (gnus-parameter-spam-marks-alist, gnus-spam-autodetect)
+ (gnus-spam-autodetect-methods, gnus-spam-newsgroup-contents)
+ (gnus-spam-process-destinations, gnus-spam-process-newsgroups):
+ * mm-decode.el (gnus-current-window-configuration):
+ * mm-extern.el (gnus-article-mime-handles):
+ * mm-url.el (url-current-object, url-package-name)
+ (url-package-version):
+ * mm-view.el (gnus-article-mime-handles, gnus-newsgroup-charset)
+ (smime-keys, w3m-cid-retrieve-function-alist)
+ (w3m-current-buffer, w3m-display-inline-images)
+ (w3m-minor-mode-map):
+ * mml-smime.el (gnus-extract-address-components):
+ * mml.el (gnus-article-mime-handles, gnus-mouse-2)
+ (gnus-newsrc-hashtb, message-default-charset)
+ (message-deletable-headers, message-options)
+ (message-posting-charset, message-required-mail-headers)
+ (message-required-news-headers):
+ * mml1991.el (mc-pgp-always-sign):
+ * mml2015.el (mc-pgp-always-sign):
+ * nnheader.el (nnmail-extra-headers):
+ * rfc1843.el (gnus-decode-encoded-word-function)
+ (gnus-decode-header-function, gnus-newsgroup-name):
+ * spam-stat.el (gnus-original-article-buffer): Add defvars.
+
2005-08-22 Karl Chen <quarl@cs.berkeley.edu> (tiny change)
* gnus-art.el (gnus-treatment-function-alist): Move date-lapsed to
@@ -18,7 +136,7 @@
w3/url.
(pgg-insert-url-with-w3): Don't load url here.
-2005-08-05 Daiki Ueno <ueno@unixuser.org>
+2005-08-05 Daiki Ueno <ueno@unixuser.org>
* mml2015.el (mml2015-pgg-sign): Make sure micalg is correct.
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 40476ec2f23..b07954772d2 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -29,7 +29,8 @@
(eval-when-compile
(require 'cl)
- (defvar tool-bar-map))
+ (defvar tool-bar-map)
+ (defvar w3m-minor-mode-map))
(require 'gnus)
(require 'gnus-sum)
@@ -235,7 +236,8 @@ longer (in lines) than that number. If it is a function, the function
will be called without any parameters, and if it returns nil, there is
no signature in the buffer. If it is a string, it will be used as a
regexp. If it matches, the text in question is not a signature."
- :type '(choice (integer :value 200)
+ :type '(choice (const nil)
+ (integer :value 200)
(number :value 4.0)
(function :value fun)
(regexp :value ".*"))
@@ -868,7 +870,8 @@ see http://www.cs.indiana.edu/picons/ftp/index.html"
This is meant for people who want to do something automatic based
on parts -- for instance, adding Vcard info to a database."
:group 'gnus-article-mime
- :type 'function)
+ :type '(choice (const nil)
+ function))
(defcustom gnus-mime-multipart-functions nil
"An alist of MIME types to functions to display them."
diff --git a/lisp/gnus/gnus-fun.el b/lisp/gnus/gnus-fun.el
index 94f42efc360..43cd02c1b5e 100644
--- a/lisp/gnus/gnus-fun.el
+++ b/lisp/gnus/gnus-fun.el
@@ -54,7 +54,7 @@ on stdout."
:type 'string)
(defcustom gnus-convert-image-to-face-command "djpeg %s | ppmnorm | pnmscale -width 48 -height 48 | ppmquant %d | pnmtopng"
- "Command for converting an image to an Face.
+ "Command for converting an image to a Face.
By default it takes a JPEG filename and output the Face header data
on stdout."
:version "22.1"
@@ -110,7 +110,7 @@ Output to the current buffer, replace text, and don't mingle error."
;;;###autoload
(defun gnus-face-from-file (file)
- "Return an Face header based on an image file."
+ "Return a Face header based on an image file."
(interactive "fImage file name (by default JPEG): ")
(when (file-exists-p file)
(let ((done nil)
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index 0614a2304f7..eced2a8097a 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -67,8 +67,10 @@ message in, you can set this variable to a function that checks the
current newsgroup name and then returns a suitable group name (or list
of names)."
:group 'gnus-message
- :type '(choice (string :tag "Group")
- (function)))
+ :type '(choice (const nil)
+ (function)
+ (string :tag "Group")
+ (repeat :tag "List of groups" (string :tag "Group"))))
(defcustom gnus-mailing-list-groups nil
"*If non-nil a regexp matching groups that are really mailing lists.
@@ -1031,17 +1033,18 @@ If SILENT, don't prompt the user."
"Stringified Gnus version and Emacs version.
See the variable `gnus-user-agent'."
(interactive)
- (let* ((float-output-format nil)
- (gnus-v
- (concat "Gnus/"
- (prin1-to-string (gnus-continuum-version gnus-version) t)
- " (" gnus-version ")"))
- (emacs-v (gnus-emacs-version)))
- (if (stringp gnus-user-agent)
- gnus-user-agent
- (concat gnus-v
- (when emacs-v
- (concat " " emacs-v))))))
+ (if (stringp gnus-user-agent)
+ gnus-user-agent
+ ;; `gnus-user-agent' is a list:
+ (let* ((float-output-format nil)
+ (gnus-v
+ (when (memq 'gnus gnus-user-agent)
+ (concat "Gnus/"
+ (prin1-to-string (gnus-continuum-version gnus-version) t)
+ " (" gnus-version ")")))
+ (emacs-v (gnus-emacs-version)))
+ (concat gnus-v (when (and gnus-v emacs-v) " ")
+ emacs-v))))
;;;
@@ -1661,7 +1664,7 @@ this is a reply."
(gcc (cond
((functionp group)
(funcall group))
- ((or (stringp group) (list group))
+ ((or (stringp group) (listp group))
group))))
(when gcc
(insert "Gcc: "
diff --git a/lisp/gnus/gnus-spec.el b/lisp/gnus/gnus-spec.el
index 784f9605037..67c0ba88742 100644
--- a/lisp/gnus/gnus-spec.el
+++ b/lisp/gnus/gnus-spec.el
@@ -28,6 +28,7 @@
;;; Code:
(eval-when-compile (require 'cl))
+(defvar gnus-newsrc-file-version)
(require 'gnus)
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index c2f7143a9ca..73837e21902 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -257,8 +257,7 @@ simplification is selected."
"*If non-nil, hide all threads initially.
This can be a predicate specifier which says which threads to hide.
If threads are hidden, you have to run the command
-`gnus-summary-show-thread' by hand or use `gnus-select-article-hook'
-to expose hidden threads."
+`gnus-summary-show-thread' by hand or select an article."
:group 'gnus-thread
:type '(radio (sexp :format "Non-nil\n"
:match (lambda (widget value)
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 6514eb37aa3..4c1721029be 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -1,7 +1,7 @@
;;; gnus-util.el --- utility functions for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news
@@ -40,9 +40,12 @@
(require 'cl)
;; Fixme: this should be a gnus variable, not nnmail-.
(defvar nnmail-pathname-coding-system)
+ (defvar nnmail-active-file-coding-system)
;; Inappropriate references to other parts of Gnus.
(defvar gnus-emphasize-whitespace-regexp)
+ (defvar gnus-original-article-buffer)
+ (defvar gnus-user-agent)
)
(require 'time-date)
(require 'netrc)
@@ -1514,41 +1517,48 @@ predicate on the elements."
(nconc (nreverse res) list1 list2))))
(eval-when-compile
- (defvar xemacs-codename))
+ (defvar xemacs-codename)
+ (defvar sxemacs-codename)
+ (defvar emacs-program-version))
(defun gnus-emacs-version ()
"Stringified Emacs version."
- (let ((system-v
- (cond
- ((eq gnus-user-agent 'emacs-gnus-config)
- system-configuration)
- ((eq gnus-user-agent 'emacs-gnus-type)
- (symbol-name system-type))
- (t nil))))
+ (let* ((lst (if (listp gnus-user-agent)
+ gnus-user-agent
+ '(gnus emacs type)))
+ (system-v (cond ((memq 'config lst)
+ system-configuration)
+ ((memq 'type lst)
+ (symbol-name system-type))
+ (t nil)))
+ codename emacsname)
+ (cond ((featurep 'sxemacs)
+ (setq emacsname "SXEmacs"
+ codename sxemacs-codename))
+ ((featurep 'xemacs)
+ (setq emacsname "XEmacs"
+ codename xemacs-codename))
+ (t
+ (setq emacsname "Emacs")))
(cond
- ((eq gnus-user-agent 'gnus)
+ ((not (memq 'emacs lst))
nil)
((string-match "^\\(\\([.0-9]+\\)*\\)\\.[0-9]+$" emacs-version)
+ ;; Emacs:
(concat "Emacs/" (match-string 1 emacs-version)
(if system-v
(concat " (" system-v ")")
"")))
- ((string-match
- "\\([A-Z]*[Mm][Aa][Cc][Ss]\\)[^(]*\\(\\((beta.*)\\|'\\)\\)?"
- emacs-version)
- (concat
- (match-string 1 emacs-version)
- (format "/%d.%d" emacs-major-version emacs-minor-version)
- (if (match-beginning 3)
- (match-string 3 emacs-version)
- "")
- (if (boundp 'xemacs-codename)
- (concat
- " (" xemacs-codename
- (if system-v
- (concat ", " system-v ")")
+ ((or (featurep 'sxemacs) (featurep 'xemacs))
+ ;; XEmacs or SXEmacs:
+ (concat emacsname "/" emacs-program-version
+ " ("
+ (when (and (memq 'codename lst)
+ codename)
+ (concat codename
+ (when system-v ", ")))
+ (when system-v system-v)
")"))
- "")))
(t emacs-version))))
(defun gnus-rename-file (old-path new-path &optional trim)
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index f621d1088e3..d0e199e2d06 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -35,6 +35,17 @@
(require 'mm-util)
(require 'nnheader)
+;; These are defined afterwards with gnus-define-group-parameter
+(defvar gnus-ham-process-destinations)
+(defvar gnus-parameter-ham-marks-alist)
+(defvar gnus-parameter-spam-marks-alist)
+(defvar gnus-spam-autodetect)
+(defvar gnus-spam-autodetect-methods)
+(defvar gnus-spam-newsgroup-contents)
+(defvar gnus-spam-process-destinations)
+(defvar gnus-spam-process-newsgroups)
+
+
(defgroup gnus nil
"The coffee-brewing, all singing, all dancing, kitchen sink newsreader."
:group 'news
@@ -2332,7 +2343,8 @@ following hook:
"Function run when a group level is changed.
It is called with three parameters -- GROUP, LEVEL and OLDLEVEL."
:group 'gnus-group-levels
- :type 'function)
+ :type '(choice (const nil)
+ function))
;;; Face thingies.
@@ -2461,24 +2473,45 @@ This should be an alist for Emacs, or a plist for XEmacs."
(symbol :tag "Parameter")
(sexp :tag "Value")))))
-(defcustom gnus-user-agent 'emacs-gnus-type
+(defcustom gnus-user-agent '(emacs gnus type)
"Which information should be exposed in the User-Agent header.
-It can be one of the symbols `gnus' \(show only Gnus version\), `emacs-gnus'
-\(show only Emacs and Gnus versions\), `emacs-gnus-config' \(same as
-`emacs-gnus' plus system configuration\), `emacs-gnus-type' \(same as
-`emacs-gnus' plus system type\) or a custom string. If you set it to a
-string, be sure to use a valid format, see RFC 2616."
+Can be a list of symbols or a string. Valid symbols are `gnus'
+\(show Gnus version\) and `emacs' \(show Emacs version\). In
+addition to the Emacs version, you can add `codename' \(show
+\(S\)XEmacs codename\) or either `config' \(show system
+configuration\) or `type' \(show system type\). If you set it to
+a string, be sure to use a valid format, see RFC 2616."
+
:version "22.1"
:group 'gnus-message
- :type '(choice
- (item :tag "Show Gnus and Emacs versions and system type"
- emacs-gnus-type)
- (item :tag "Show Gnus and Emacs versions and system configuration"
- emacs-gnus-config)
- (item :tag "Show Gnus and Emacs versions" emacs-gnus)
- (item :tag "Show only Gnus version" gnus)
- (string :tag "Other")))
+ :type '(choice (list (set :inline t
+ (const gnus :tag "Gnus version")
+ (const emacs :tag "Emacs version")
+ (choice :tag "system"
+ (const type :tag "system type")
+ (const config :tag "system configuration"))
+ (const codename :tag "Emacs codename")))
+ (string)))
+
+;; Convert old (No Gnus < 2005-01-10, v5-10 < 2005-09-05) symbol type values:
+(when (symbolp gnus-user-agent)
+ (setq gnus-user-agent
+ (cond ((eq gnus-user-agent 'emacs-gnus-config)
+ '(emacs gnus config))
+ ((eq gnus-user-agent 'emacs-gnus-type)
+ '(emacs gnus type))
+ ((eq gnus-user-agent 'emacs-gnus)
+ '(emacs gnus))
+ ((eq gnus-user-agent 'gnus)
+ '(gnus))
+ (t gnus-user-agent)))
+ (gnus-message 1 "Converted `gnus-user-agent' to `%s'." gnus-user-agent)
+ (sit-for 1)
+ (if (get 'gnus-user-agent 'saved-value)
+ (customize-save-variable 'gnus-user-agent gnus-user-agent)
+ (gnus-message 1 "Edit your init file to make this change permanent.")
+ (sit-for 2)))
;;; Internal variables
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index d427e852996..75554a6079c 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -6631,7 +6631,8 @@ If nil, the function bound in `text-mode-map' or `global-map' is executed."
:version "22.1"
:group 'message
:link '(custom-manual "(message)Various Commands")
- :type 'function)
+ :type '(choice (const nil)
+ function))
(defun message-tab ()
"Complete names according to `message-completion-alist'.
diff --git a/lisp/gnus/mm-bodies.el b/lisp/gnus/mm-bodies.el
index 4a5a9cd17db..50de732eca7 100644
--- a/lisp/gnus/mm-bodies.el
+++ b/lisp/gnus/mm-bodies.el
@@ -227,7 +227,7 @@ If TYPE is `text/plain' CRLF->LF translation may occur."
nil))
(when (and
(memq encoding '(base64 x-uuencode x-uue x-binhex x-yenc))
- (equal type "text/plain"))
+ (string-match "\\`text/" type))
(goto-char (point-min))
(while (search-forward "\r\n" nil t)
(replace-match "\n" t t)))))
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index 78b953946f8..435940faec2 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -38,6 +38,8 @@
(autoload 'mm-inline-external-body "mm-extern")
(autoload 'mm-insert-inline "mm-view"))
+(defvar gnus-current-window-configuration)
+
(add-hook 'gnus-exit-gnus-hook 'mm-destroy-postponed-undisplay-list)
(defgroup mime-display ()
diff --git a/lisp/gnus/mm-encode.el b/lisp/gnus/mm-encode.el
index fd6251c37d3..5e149d16ed3 100644
--- a/lisp/gnus/mm-encode.el
+++ b/lisp/gnus/mm-encode.el
@@ -118,7 +118,7 @@ ENCODING can be: nil (do nothing); one of `quoted-printable', `base64';
;; Likewise base64 below.
(quoted-printable-encode-region (point-min) (point-max) t))
((eq encoding 'base64)
- (when (equal type "text/plain")
+ (when (string-match "\\`text/" type)
(goto-char (point-min))
(while (search-forward "\n" nil t)
(replace-match "\r\n" t t)))
diff --git a/lisp/gnus/mm-extern.el b/lisp/gnus/mm-extern.el
index 27263d2a18d..2f75139497e 100644
--- a/lisp/gnus/mm-extern.el
+++ b/lisp/gnus/mm-extern.el
@@ -33,6 +33,8 @@
(require 'mm-decode)
(require 'mm-url)
+(defvar gnus-article-mime-handles)
+
(defvar mm-extern-function-alist
'((local-file . mm-extern-local-file)
(url . mm-extern-url)
diff --git a/lisp/gnus/mm-url.el b/lisp/gnus/mm-url.el
index afed46f2f86..961ee0ea4fb 100644
--- a/lisp/gnus/mm-url.el
+++ b/lisp/gnus/mm-url.el
@@ -43,6 +43,10 @@
(require 'timer-funcs)
(require 'timer)))
+(defvar url-current-object)
+(defvar url-package-name)
+(defvar url-package-version)
+
(defgroup mm-url nil
"A wrapper of url package and external url command for Gnus."
:group 'gnus)
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index 735cc2569c3..2d78ccab864 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -40,6 +40,14 @@
(unless (fboundp 'diff-mode)
(autoload 'diff-mode "diff-mode" "" t nil)))
+(defvar gnus-article-mime-handles)
+(defvar gnus-newsgroup-charset)
+(defvar smime-keys)
+(defvar w3m-cid-retrieve-function-alist)
+(defvar w3m-current-buffer)
+(defvar w3m-display-inline-images)
+(defvar w3m-minor-mode-map)
+
(defvar mm-text-html-renderer-alist
'((w3 . mm-inline-text-html-render-with-w3)
(w3m . mm-inline-text-html-render-with-w3m)
diff --git a/lisp/gnus/mml-smime.el b/lisp/gnus/mml-smime.el
index 2c37c52e3bc..25cb3094cbb 100644
--- a/lisp/gnus/mml-smime.el
+++ b/lisp/gnus/mml-smime.el
@@ -29,6 +29,8 @@
(eval-when-compile (require 'cl))
+(defvar gnus-extract-address-components)
+
(require 'smime)
(require 'mm-decode)
(autoload 'message-narrow-to-headers "message")
@@ -54,7 +56,7 @@
(if (not (and (not (file-exists-p tmp))
(get-buffer tmp)))
(push tmp certfiles)
- (setq file (mm-make-temp-file (expand-file-name "mml."
+ (setq file (mm-make-temp-file (expand-file-name "mml."
mm-tmp-directory)))
(with-current-buffer tmp
(write-region (point-min) (point-max) file))
@@ -79,7 +81,10 @@
(list 'keyfile
(if (= (length smime-keys) 1)
(cadar smime-keys)
- (or (let ((from (cadr (funcall gnus-extract-address-components
+ (or (let ((from (cadr (funcall (if (boundp
+ 'gnus-extract-address-components)
+ gnus-extract-address-components
+ 'mail-extract-address-components)
(or (save-excursion
(save-restriction
(message-narrow-to-headers)
@@ -105,7 +110,10 @@
(while (not result)
(setq who (read-from-minibuffer
(format "%sLookup certificate for: " (or bad ""))
- (cadr (funcall gnus-extract-address-components
+ (cadr (funcall (if (boundp
+ 'gnus-extract-address-components)
+ gnus-extract-address-components
+ 'mail-extract-address-components)
(or (save-excursion
(save-restriction
(message-narrow-to-headers)
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index af17669562d..bca56b6083b 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -41,6 +41,16 @@
(autoload 'fill-flowed-encode "flow-fill")
(autoload 'message-posting-charset "message"))
+(defvar gnus-article-mime-handles)
+(defvar gnus-mouse-2)
+(defvar gnus-newsrc-hashtb)
+(defvar message-default-charset)
+(defvar message-deletable-headers)
+(defvar message-options)
+(defvar message-posting-charset)
+(defvar message-required-mail-headers)
+(defvar message-required-news-headers)
+
(defcustom mml-content-type-parameters
'(name access-type expiration size permission format)
"*A list of acceptable parameters in MML tag.
diff --git a/lisp/gnus/mml1991.el b/lisp/gnus/mml1991.el
index fc6d9e8921d..932737dc4be 100644
--- a/lisp/gnus/mml1991.el
+++ b/lisp/gnus/mml1991.el
@@ -32,6 +32,8 @@
(require 'cl)
(require 'mm-util))
+(defvar mc-pgp-always-sign)
+
(autoload 'quoted-printable-decode-region "qp")
(autoload 'quoted-printable-encode-region "qp")
@@ -182,7 +184,7 @@
(delete-region (point-min) (point)))
(mm-with-unibyte-current-buffer
(with-temp-buffer
- (flet ((gpg-encrypt-func
+ (flet ((gpg-encrypt-func
(sign plaintext ciphertext result recipients &optional
passphrase sign-with-key armor textmode)
(if sign
@@ -270,7 +272,7 @@
(delete-region (point-min) (point)))
(mm-decode-content-transfer-encoding cte)
(unless (pgg-encrypt-region
- (point-min) (point-max)
+ (point-min) (point-max)
(split-string
(or
(message-options-get 'message-recipients)
diff --git a/lisp/gnus/mml2015.el b/lisp/gnus/mml2015.el
index 590e9276a0f..c8d46c99f51 100644
--- a/lisp/gnus/mml2015.el
+++ b/lisp/gnus/mml2015.el
@@ -35,6 +35,8 @@
(require 'mm-util)
(require 'mml)
+(defvar mc-pgp-always-sign)
+
(defvar mml2015-use (or
(progn
(ignore-errors
diff --git a/lisp/gnus/nnheader.el b/lisp/gnus/nnheader.el
index 5cc26cb07d9..45e030027a9 100644
--- a/lisp/gnus/nnheader.el
+++ b/lisp/gnus/nnheader.el
@@ -31,6 +31,8 @@
(eval-when-compile (require 'cl))
+(defvar nnmail-extra-headers)
+
;; Requiring `gnus-util' at compile time creates a circular
;; dependency between nnheader.el and gnus-util.el.
;;(eval-when-compile (require 'gnus-util))
diff --git a/lisp/gnus/nnweb.el b/lisp/gnus/nnweb.el
index d05520ee1dc..85c8d4c5239 100644
--- a/lisp/gnus/nnweb.el
+++ b/lisp/gnus/nnweb.el
@@ -27,6 +27,12 @@
;; Note: You need to have `w3' installed for some functions to work.
+;; FIXME: Due to changes in the HTML output of Google Groups and Gmane, stuff
+;; related to web groups (gnus-group-make-web-group) doesn't work anymore.
+
+;; Fetching an article by MID (cf. gnus-refer-article-method) over Google
+;; Groups should work.
+
;;; Code:
(eval-when-compile (require 'cl))
@@ -54,13 +60,13 @@ Valid types include `google', `dejanews', and `gmane'.")
(defvar nnweb-type-definition
'((google
- (article . ignore)
- (id . "http://groups.google.de/groups?selm=%s&output=gplain")
+ (id . "http://www.google.com/groups?as_umsgid=%s&hl=en&dmode=source")
+ (article . nnweb-google-wash-article)
(reference . identity)
(map . nnweb-google-create-mapping)
(search . nnweb-google-search)
- (address . "http://groups.google.de/groups")
- (base . "http://groups.google.de")
+ (address . "http://groups.google.com/groups")
+ (base . "http://groups.google.com")
(identifier . nnweb-google-identity))
(dejanews ;; alias of google
(article . ignore)
@@ -306,35 +312,19 @@ Valid types include `google', `dejanews', and `gmane'.")
(current-buffer))))))
;;;
-;;; Deja bought by google.com
+;;; groups.google.com
;;;
(defun nnweb-google-wash-article ()
- (let ((case-fold-search t) url)
- (goto-char (point-min))
- (re-search-forward "^<pre>" nil t)
- (narrow-to-region (point-min) (point))
- (search-backward "<table " nil t 2)
- (delete-region (point-min) (point))
- (if (re-search-forward "Search Result [0-9]+" nil t)
- (replace-match ""))
- (if (re-search-forward "View complete thread ([0-9]+ articles?)" nil t)
- (replace-match ""))
+ ;; We have Google's masked e-mail addresses here. :-/
+ (let ((case-fold-search t))
(goto-char (point-min))
- (while (search-forward "<br>" nil t)
- (replace-match "\n"))
- (mm-url-remove-markup)
+ (delete-region (point-min)
+ (1+ (re-search-forward "^<pre>" nil t)))
(goto-char (point-min))
- (while (re-search-forward "^[ \t]*\n" nil t)
- (replace-match ""))
- (goto-char (point-max))
- (insert "\n")
- (widen)
- (narrow-to-region (point) (point-max))
- (search-forward "</pre>" nil t)
- (delete-region (point) (point-max))
- (mm-url-remove-markup)
- (widen)))
+ (delete-region (- (re-search-forward "^</pre>" nil t) (length "</pre>"))
+ (point-max))
+ (mm-url-decode-entities)))
(defun nnweb-google-parse-1 (&optional Message-ID)
(let ((i 0)
diff --git a/lisp/gnus/rfc1843.el b/lisp/gnus/rfc1843.el
index 2214a1b7b88..55150fbdacf 100644
--- a/lisp/gnus/rfc1843.el
+++ b/lisp/gnus/rfc1843.el
@@ -37,6 +37,10 @@
(eval-when-compile (require 'cl))
(require 'mm-util)
+(defvar gnus-decode-encoded-word-function)
+(defvar gnus-decode-header-function)
+(defvar gnus-newsgroup-name)
+
(defvar rfc1843-word-regexp
"~\\({\\([\041-\167][\041-\176]\\| \\)+\\)\\(~}\\|$\\)")
diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el
index 436e7cc5fc7..c8870454be8 100644
--- a/lisp/gnus/spam-stat.el
+++ b/lisp/gnus/spam-stat.el
@@ -123,6 +123,8 @@
;;; Code:
+(defvar gnus-original-article-buffer)
+
(defgroup spam-stat nil
"Statistical spam detection for Emacs.
Use the functions to build a dictionary of words and their statistical
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index da3ca20e5aa..e6fc1d67b8e 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -222,8 +222,7 @@ Currently, this only applies to `ibuffer-saved-filters' and
(ibuffer-buf-matches-predicates buf ibuffer-always-show-predicates)))))
(defun ibuffer-auto-update-changed ()
- (when ibuffer-auto-buffers-changed
- (setq ibuffer-auto-buffers-changed nil)
+ (when (frame-or-buffer-changed-p 'ibuffer-auto-buffers-changed)
(mapcar #'(lambda (buf)
(ignore-errors
(with-current-buffer buf
@@ -243,10 +242,7 @@ With numeric ARG, enable auto-update if and only if ARG is positive."
(if arg
(plusp arg)
(not ibuffer-auto-mode)))
- (defadvice get-buffer-create (after ibuffer-notify-create activate)
- (setq ibuffer-auto-buffers-changed t))
- (defadvice kill-buffer (after ibuffer-notify-kill activate)
- (setq ibuffer-auto-buffers-changed t))
+ (frame-or-buffer-changed-p 'ibuffer-auto-buffers-changed)
(add-hook 'post-command-hook 'ibuffer-auto-update-changed)
(ibuffer-update-mode-name))
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 24bc63becec..7d6b72b06af 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -40,15 +40,20 @@
(require 'font-core)
-(eval-when-compile
- ;; These come from ibuf-ext.el, which can not be require'd at compile time
- ;; because it has a recursive dependency on ibuffer.el
- (defvar ibuffer-auto-mode) (defvar ibuffer-cached-filter-formats)
- (defvar ibuffer-compiled-filter-formats) (defvar ibuffer-filter-format-alist)
- (defvar ibuffer-filter-group-kill-ring) (defvar ibuffer-filter-groups)
- (defvar ibuffer-filtering-qualifiers) (defvar ibuffer-hidden-filter-groups)
- (defvar ibuffer-inline-columns) (defvar ibuffer-show-empty-filter-groups)
- (defvar ibuffer-tmp-hide-regexps) (defvar ibuffer-tmp-show-regexps))
+;; These come from ibuf-ext.el, which can not be require'd at compile time
+;; because it has a recursive dependency on ibuffer.el
+(defvar ibuffer-auto-mode)
+(defvar ibuffer-cached-filter-formats)
+(defvar ibuffer-compiled-filter-formats)
+(defvar ibuffer-filter-format-alist)
+(defvar ibuffer-filter-group-kill-ring)
+(defvar ibuffer-filter-groups)
+(defvar ibuffer-filtering-qualifiers)
+(defvar ibuffer-hidden-filter-groups)
+(defvar ibuffer-inline-columns)
+(defvar ibuffer-show-empty-filter-groups)
+(defvar ibuffer-tmp-hide-regexps)
+(defvar ibuffer-tmp-show-regexps)
(defgroup ibuffer nil
"An advanced replacement for `buffer-menu'.
diff --git a/lisp/ido.el b/lisp/ido.el
index 2ea7476ce45..7c9d269417a 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -323,6 +323,8 @@
(provide 'ido)
+(defvar cua-inhibit-cua-keys)
+
;;; User Variables
;;
;; These are some things you might want to change.
diff --git a/lisp/info-xref.el b/lisp/info-xref.el
index 1a9b196a764..18d64cf0a1c 100644
--- a/lisp/info-xref.el
+++ b/lisp/info-xref.el
@@ -138,27 +138,25 @@ should open up the purported top file and see what subfiles it says."
;; Some dynamic variables are used to share information with sub-functions
;; below.
;;
-(eval-when-compile
- ;;
- ;; info-xref-filename-header - a heading message for the current top-level
- ;; filename, or "" when it's been printed.
- ;;
- (defvar info-xref-xfile-alist)
- ;;
- ;; info-xref-good - count of good cross references.
- ;;
- (defvar info-xref-good)
- ;;
- ;; info-xref-bad - count of bad cross references.
- ;;
- (defvar info-xref-bad)
- ;;
- ;; info-xref-xfile-alist - indexed by "(foo)" with value nil or t according
- ;; to whether "(foo)" exists or not. This is used to suppress duplicate
- ;; messages about foo not being available. (Duplicates within one
- ;; top-level file that is.)
- ;;
- (defvar info-xref-filename-heading))
+;; info-xref-filename-header - a heading message for the current top-level
+;; filename, or "" when it's been printed.
+;;
+(defvar info-xref-xfile-alist)
+;;
+;; info-xref-good - count of good cross references.
+;;
+(defvar info-xref-good)
+;;
+;; info-xref-bad - count of bad cross references.
+;;
+(defvar info-xref-bad)
+;;
+;; info-xref-xfile-alist - indexed by "(foo)" with value nil or t according
+;; to whether "(foo)" exists or not. This is used to suppress duplicate
+;; messages about foo not being available. (Duplicates within one
+;; top-level file that is.)
+;;
+(defvar info-xref-filename-heading)
(defun info-xref-check-list (filename-list)
"Check external references in info documents in FILENAME-LIST."
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index cdb76a2ccc1..c297ce5e27b 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -36,6 +36,9 @@
(defvar dos-codepage)
(autoload 'widget-value "wid-edit"))
+(defvar mac-system-coding-system)
+(defvar mac-system-locale)
+
;;; MULE related key bindings and menus.
(defvar mule-keymap (make-sparse-keymap)
@@ -2392,12 +2395,15 @@ See also `locale-charset-language-names', `locale-language-names',
(= 0 (length locale))) ; nil or empty string
(setq locale (getenv (pop vars))))))
- (unless (or locale (not (fboundp 'mac-get-preference)))
- (setq locale (mac-get-preference "AppleLocale"))
- (unless locale
- (let ((languages (mac-get-preference "AppleLanguages")))
- (unless (= (length languages) 0) ; nil or empty vector
- (setq locale (aref languages 0))))))
+ (unless locale
+ ;; The two tests are kept separate so the byte-compiler sees
+ ;; that mac-get-preference is only called after checking its existence.
+ (when (fboundp 'mac-get-preference)
+ (setq locale (mac-get-preference "AppleLocale"))
+ (unless locale
+ (let ((languages (mac-get-preference "AppleLanguages")))
+ (unless (= (length languages) 0) ; nil or empty vector
+ (setq locale (aref languages 0)))))))
(unless (or locale (not (boundp 'mac-system-locale)))
(setq locale mac-system-locale))
diff --git a/lisp/language/ethio-util.el b/lisp/language/ethio-util.el
index 82ccc6a28fd..8f00571dd9a 100644
--- a/lisp/language/ethio-util.el
+++ b/lisp/language/ethio-util.el
@@ -36,6 +36,9 @@
(require 'robin)
+(defvar rmail-current-message)
+(defvar rmail-message-vector)
+
;; Information for exiting Ethiopic environment.
(defvar exit-ethiopic-environment-data nil)
diff --git a/lisp/language/thai-util.el b/lisp/language/thai-util.el
index 230007a61b8..8bae6e1e8ee 100644
--- a/lisp/language/thai-util.el
+++ b/lisp/language/thai-util.el
@@ -28,6 +28,8 @@
;;; Code:
+(defvar thai-auto-composition-mode)
+
;; Setting information of Thai characters.
(defconst thai-category-table (make-category-table))
diff --git a/lisp/log-view.el b/lisp/log-view.el
index fbe83d79513..cd403a83145 100644
--- a/lisp/log-view.el
+++ b/lisp/log-view.el
@@ -37,6 +37,8 @@
(require 'pcvs-util)
(autoload 'vc-version-diff "vc")
+(defvar cvs-minor-wrap-function)
+
(defgroup log-view nil
"Major mode for browsing log output of RCS/CVS/SCCS."
:group 'pcl-cvs
diff --git a/lisp/longlines.el b/lisp/longlines.el
index d51effdb7e2..6ce5dfaebc4 100644
--- a/lisp/longlines.el
+++ b/lisp/longlines.el
@@ -116,6 +116,7 @@ are indicated with a symbol."
(add-hook 'window-configuration-change-hook
'longlines-window-change-function nil t))
(let ((buffer-undo-list t)
+ (inhibit-read-only t)
(mod (buffer-modified-p)))
;; Turning off undo is OK since (spaces + newlines) is
;; conserved, except for a corner case in
@@ -136,7 +137,8 @@ are indicated with a symbol."
(setq buffer-file-format (delete 'longlines buffer-file-format))
(if longlines-showing
(longlines-unshow-hard-newlines))
- (let ((buffer-undo-list t))
+ (let ((buffer-undo-list t)
+ (inhibit-read-only t))
(longlines-encode-region (point-min) (point-max)))
(remove-hook 'change-major-mode-hook 'longlines-mode-off t)
(remove-hook 'before-kill-functions 'longlines-encode-region t)
@@ -144,7 +146,11 @@ are indicated with a symbol."
(remove-hook 'post-command-hook 'longlines-post-command-function t)
(remove-hook 'window-configuration-change-hook
'longlines-window-change-function t)
- (kill-local-variable 'fill-column)))
+ (when longlines-wrap-follows-window-size
+ (kill-local-variable 'fill-column))
+ (kill-local-variable 'require-final-newline)
+ (kill-local-variable 'buffer-substring-filters)
+ (kill-local-variable 'use-hard-newlines)))
(defun longlines-mode-off ()
"Turn off longlines mode.
diff --git a/lisp/mail/metamail.el b/lisp/mail/metamail.el
index 0814f6e008b..6d13bda9823 100644
--- a/lisp/mail/metamail.el
+++ b/lisp/mail/metamail.el
@@ -36,6 +36,9 @@
;;; Code:
+(defvar rmail-current-message)
+(defvar rmail-message-vector)
+
(defgroup metamail nil
"Metamail interface for Emacs."
:group 'mail
diff --git a/lisp/mail/mspools.el b/lisp/mail/mspools.el
index 575c233d9a7..7a01a5e5361 100644
--- a/lisp/mail/mspools.el
+++ b/lisp/mail/mspools.el
@@ -110,6 +110,14 @@
;;; Code:
+(defvar rmail-inbox-list)
+(defvar vm-crash-box)
+(defvar vm-folder-directory)
+(defvar vm-init-file)
+(defvar vm-init-file-loaded)
+(defvar vm-primary-inbox)
+(defvar vm-spool-files)
+
;;; User Variables
(defgroup mspools nil
diff --git a/lisp/mail/rmail-spam-filter.el b/lisp/mail/rmail-spam-filter.el
index 20acb87831a..7be5146f722 100644
--- a/lisp/mail/rmail-spam-filter.el
+++ b/lisp/mail/rmail-spam-filter.el
@@ -86,6 +86,9 @@
(require 'rmailsum)
(if (not (fboundp 'rmail-make-summary-line)) (load-library "rmailsum")))
+(defvar bbdb/mail_auto_create_p)
+(defvar rmail-summary-mode-map)
+
;; For find-if and other cool common lisp functions we may want to use.
(eval-when-compile
(require 'cl))
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index e216300997e..9c4fe335828 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -42,6 +42,16 @@
(require 'mail-utils)
(eval-when-compile (require 'mule-util)) ; for detect-coding-with-priority
+(defvar deleted-head)
+(defvar font-lock-fontified)
+(defvar mail-abbrev-syntax-table)
+(defvar mail-abbrevs)
+(defvar messages-head)
+(defvar rmail-use-spam-filter)
+(defvar rsf-beep)
+(defvar rsf-sleep-after-message)
+(defvar total-messages)
+
; These variables now declared in paths.el.
;(defvar rmail-spool-directory "/usr/spool/mail/"
; "This is the name of the directory used by the system mailer for\n\
diff --git a/lisp/mail/rmailkwd.el b/lisp/mail/rmailkwd.el
index 9ccf45348a3..843c6fc80a3 100644
--- a/lisp/mail/rmailkwd.el
+++ b/lisp/mail/rmailkwd.el
@@ -27,6 +27,13 @@
;;; Code:
+(defvar rmail-buffer)
+(defvar rmail-current-message)
+(defvar rmail-last-label)
+(defvar rmail-last-multi-labels)
+(defvar rmail-summary-vector)
+(defvar rmail-total-messages)
+
;; Global to all RMAIL buffers. It exists primarily for the sake of
;; completion. It is better to use strings with the label functions
;; and let them worry about making the label.
diff --git a/lisp/mail/rmailmsc.el b/lisp/mail/rmailmsc.el
index 798d247a7d2..26d61b56837 100644
--- a/lisp/mail/rmailmsc.el
+++ b/lisp/mail/rmailmsc.el
@@ -26,6 +26,9 @@
;;; Code:
+(defvar rmail-current-message)
+(defvar rmail-inbox-list)
+
;;;###autoload
(defun set-rmail-inbox-list (file-name)
"Set the inbox list of the current RMAIL file to FILE-NAME.
diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el
index 129f3f48528..ad2c275a679 100644
--- a/lisp/mail/rmailsum.el
+++ b/lisp/mail/rmailsum.el
@@ -31,6 +31,8 @@
;;; Code:
+(defvar msgnum)
+
;; For rmail-select-summary
(require 'rmail)
diff --git a/lisp/mail/uce.el b/lisp/mail/uce.el
index 6dcf67e6d79..07c09765971 100644
--- a/lisp/mail/uce.el
+++ b/lisp/mail/uce.el
@@ -115,6 +115,10 @@
;;; Code:
+(defvar gnus-original-article-buffer)
+(defvar mail-reply-buffer)
+(defvar rmail-current-message)
+
(require 'sendmail)
;; Those sections of code which are dependent upon
;; RMAIL are only evaluated if we have received a message with RMAIL...
diff --git a/lisp/man.el b/lisp/man.el
index d1b607600a5..60fc7c009e1 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -445,7 +445,7 @@ Otherwise, the value is whatever the function
;; utilities
(defun Man-init-defvars ()
- "Used for initialising variables based on display's color support.
+ "Used for initializing variables based on display's color support.
This is necessary if one wants to dump man.el with Emacs."
;; Avoid possible error in call-process by using a directory that must exist.
@@ -553,8 +553,8 @@ This is necessary if one wants to dump man.el with Emacs."
(defun Man-translate-references (ref)
"Translates REF from \"chmod(2V)\" to \"2v chmod\" style.
Leave it as is if already in that style. Possibly downcase and
-translate the section (see the Man-downcase-section-letters-flag
-and the Man-section-translations-alist variables)."
+translate the section (see the `Man-downcase-section-letters-flag'
+and the `Man-section-translations-alist' variables)."
(let ((name "")
(section "")
(slist Man-section-translations-alist))
@@ -592,7 +592,7 @@ This option allows `man' to interpret command line arguments
as local filenames.
Return the value of the variable `Man-support-local-filenames'
if it was set to nil or t before the call of this function.
-If t, the man command supports `-l' option. If nil, it don't.
+If t, the man command supports `-l' option. If nil, it doesn't.
Otherwise, if the value of `Man-support-local-filenames'
is neither t nor nil, then determine a new value, set it
to the variable `Man-support-local-filenames' and return
@@ -905,8 +905,8 @@ Same for the ANSI bold and normal escape sequences."
(defun Man-highlight-references ()
"Highlight the references on mouse-over.
-references include items in the SEE ALSO section,
-header file(#include <foo.h>) and files in FILES"
+References include items in the SEE ALSO section,
+header file (#include <foo.h>) and files in FILES."
(let ((dummy 0))
(Man-highlight-references0
Man-see-also-regexp Man-reference-regexp 1 dummy
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 1de753e75e5..302ede8c8ff 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -105,6 +105,10 @@ A large number or nil slows down menu responsiveness."
(define-key menu-bar-file-menu [split-window]
'(menu-item "Split Window" split-window-vertically
+ :enable (and (frame-live-p menu-updating-frame)
+ (frame-visible-p menu-updating-frame )
+ (not (window-minibuffer-p
+ (frame-selected-window menu-updating-frame))))
:help "Split selected window in two windows"))
(define-key menu-bar-file-menu [separator-window]
@@ -116,6 +120,8 @@ A large number or nil slows down menu responsiveness."
:help "Pretty-print marked region in black and white to PostScript printer"))
(define-key menu-bar-file-menu [ps-print-buffer]
'(menu-item "Postscript Print Buffer (B+W)" ps-print-buffer
+ :enable (and (frame-live-p menu-updating-frame)
+ (frame-visible-p menu-updating-frame ))
:help "Pretty-print current buffer in black and white to PostScript printer"))
(define-key menu-bar-file-menu [ps-print-region-faces]
'(menu-item "Postscript Print Region" ps-print-region-with-faces
@@ -123,6 +129,8 @@ A large number or nil slows down menu responsiveness."
:help "Pretty-print marked region to PostScript printer"))
(define-key menu-bar-file-menu [ps-print-buffer-faces]
'(menu-item "Postscript Print Buffer" ps-print-buffer-with-faces
+ :enable (and (frame-live-p menu-updating-frame)
+ (frame-visible-p menu-updating-frame ))
:help "Pretty-print current buffer to PostScript printer"))
(define-key menu-bar-file-menu [print-region]
'(menu-item "Print Region" print-region
@@ -130,6 +138,8 @@ A large number or nil slows down menu responsiveness."
:help "Print region between mark and current position"))
(define-key menu-bar-file-menu [print-buffer]
'(menu-item "Print Buffer" print-buffer
+ :enable (and (frame-live-p menu-updating-frame)
+ (frame-visible-p menu-updating-frame ))
:help "Print current buffer with page headings"))
(define-key menu-bar-file-menu [separator-print]
@@ -160,8 +170,10 @@ A large number or nil slows down menu responsiveness."
:help "Re-read current buffer from its file"))
(define-key menu-bar-file-menu [write-file]
'(menu-item "Save As..." write-file
- :enable (not (window-minibuffer-p
- (frame-selected-window menu-updating-frame)))
+ :enable (and (frame-live-p menu-updating-frame)
+ (frame-visible-p menu-updating-frame )
+ (not (window-minibuffer-p
+ (frame-selected-window menu-updating-frame))))
:help "Write current buffer to another file"))
(define-key menu-bar-file-menu [save-buffer]
'(menu-item "Save" save-buffer
@@ -1030,7 +1042,9 @@ mail status in mode line"))
'(menu-item "Truncate Long Lines in this Buffer"
toggle-truncate-lines
:help "Truncate long lines on the screen"
- :button (:toggle . truncate-lines)))
+ :button (:toggle . truncate-lines)
+ :enable (and (frame-live-p menu-updating-frame)
+ (frame-visible-p menu-updating-frame))))
(define-key menu-bar-options-menu [highlight-separator]
'("--"))
diff --git a/lisp/net/eudc.el b/lisp/net/eudc.el
index a2d5baf1204..1c5fb7fbbcf 100644
--- a/lisp/net/eudc.el
+++ b/lisp/net/eudc.el
@@ -76,6 +76,8 @@
(defvar eudc-form-widget-list nil)
(defvar eudc-mode-map nil)
+(defvar mode-popup-menu)
+
;; List of known servers
;; Alist of (SERVER . PROTOCOL)
(defvar eudc-server-hotlist nil)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index e3ad3959591..e721f3fb016 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1856,6 +1856,7 @@ on the FILENAME argument, even if VISIT was a string.")
(insert-file-contents . tramp-handle-insert-file-contents)
(write-region . tramp-handle-write-region)
(find-backup-file-name . tramp-handle-find-backup-file-name)
+ (make-auto-save-file-name . tramp-handle-make-auto-save-file-name)
(unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
(dired-compress-file . tramp-handle-dired-compress-file)
(dired-call-process . tramp-handle-dired-call-process)
@@ -1863,7 +1864,7 @@ on the FILENAME argument, even if VISIT was a string.")
. tramp-handle-dired-recursive-delete-directory)
(set-visited-file-modtime . tramp-handle-set-visited-file-modtime)
(verify-visited-file-modtime . tramp-handle-verify-visited-file-modtime))
- "Alist of handler functions.
+ "Alist of handler functions.
Operations not mentioned here will be handled by the normal Emacs functions.")
;; Handlers for partial tramp file names. For GNU Emacs just
@@ -3807,6 +3808,41 @@ This will break if COMMAND prints a newline, followed by the value of
(tramp-run-real-handler 'find-backup-file-name (list filename)))))
+(defun tramp-handle-make-auto-save-file-name ()
+ "Like `make-auto-save-file-name' for tramp files.
+Returns a file name in `tramp-auto-save-directory' for autosaving this file."
+ (when tramp-auto-save-directory
+ (unless (file-exists-p tramp-auto-save-directory)
+ (make-directory tramp-auto-save-directory t)))
+ ;; jka-compr doesn't like auto-saving, so by appending "~" to the
+ ;; file name we make sure that jka-compr isn't used for the
+ ;; auto-save file.
+ (let ((buffer-file-name
+ (if tramp-auto-save-directory
+ (expand-file-name
+ (tramp-subst-strs-in-string
+ '(("_" . "|")
+ ("/" . "_a")
+ (":" . "_b")
+ ("|" . "__")
+ ("[" . "_l")
+ ("]" . "_r"))
+ (buffer-file-name))
+ tramp-auto-save-directory)
+ (buffer-file-name))))
+ ;; Run plain `make-auto-save-file-name'. There might be an advice when
+ ;; it is not a magic file name operation (since Emacs 22).
+ ;; We must deactivate it temporarily.
+ (if (not (ad-is-active 'make-auto-save-file-name))
+ (tramp-run-real-handler
+ 'make-auto-save-file-name nil)
+ ;; else
+ (ad-deactivate 'make-auto-save-file-name)
+ (prog1
+ (tramp-run-real-handler
+ 'make-auto-save-file-name nil)
+ (ad-activate 'make-auto-save-file-name)))))
+
;; CCC grok APPEND, LOCKNAME, CONFIRM
(defun tramp-handle-write-region
@@ -4086,8 +4122,9 @@ ARGS are the arguments OPERATION has been called with."
(nth 2 args))
; BUF
((member operation
- (list 'set-visited-file-modtime 'verify-visited-file-modtime
- ; XEmacs only
+ (list 'make-auto-save-file-name
+ 'set-visited-file-modtime 'verify-visited-file-modtime
+ ; XEmacs only
'backup-buffer))
(buffer-file-name
(if (bufferp (nth 0 args)) (nth 0 args) (current-buffer))))
@@ -6905,33 +6942,28 @@ as default."
;; Auto saving to a special directory.
-(defun tramp-make-auto-save-file-name (fn)
- "Returns a file name in `tramp-auto-save-directory' for autosaving this file."
- (when tramp-auto-save-directory
- (unless (file-exists-p tramp-auto-save-directory)
- (make-directory tramp-auto-save-directory t)))
- ;; jka-compr doesn't like auto-saving, so by appending "~" to the
- ;; file name we make sure that jka-compr isn't used for the
- ;; auto-save file.
- (let ((buffer-file-name (expand-file-name
- (tramp-subst-strs-in-string '(("_" . "|")
- ("/" . "_a")
- (":" . "_b")
- ("|" . "__")
- ("[" . "_l")
- ("]" . "_r"))
- fn)
- tramp-auto-save-directory)))
- (make-auto-save-file-name)))
-
-(defadvice make-auto-save-file-name
- (around tramp-advice-make-auto-save-file-name () activate)
- "Invoke `tramp-make-auto-save-file-name' for tramp files."
- (if (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))
- tramp-auto-save-directory)
- (setq ad-return-value
- (tramp-make-auto-save-file-name (buffer-file-name)))
- ad-do-it))
+(defun tramp-exists-file-name-handler (operation &rest args)
+ (let ((buffer-file-name "/")
+ (fnha file-name-handler-alist)
+ (check-file-name-operation operation)
+ (file-name-handler-alist
+ (list
+ (cons "/"
+ '(lambda (operation &rest args)
+ "Returns OPERATION if it is the one to be checked"
+ (if (equal check-file-name-operation operation)
+ operation
+ (let ((file-name-handler-alist fnha))
+ (apply operation args))))))))
+ (eq (apply operation args) operation)))
+
+(unless (tramp-exists-file-name-handler 'make-auto-save-file-name)
+ (defadvice make-auto-save-file-name
+ (around tramp-advice-make-auto-save-file-name () activate)
+ "Invoke `tramp-handle-make-auto-save-file-name' for tramp files."
+ (if (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name)))
+ (setq ad-return-value (tramp-handle-make-auto-save-file-name))
+ ad-do-it)))
;; In Emacs < 22 and XEmacs < 21.5 autosaved remote files have
;; permission 0666 minus umask. This is a security threat.
diff --git a/lisp/obsolete/bg-mouse.el b/lisp/obsolete/bg-mouse.el
index 7bb378c544e..687619a051b 100644
--- a/lisp/obsolete/bg-mouse.el
+++ b/lisp/obsolete/bg-mouse.el
@@ -50,11 +50,12 @@
;;; semicolon screws up indenting, so use this instead
(defconst semicolon ?\;)
-(eval-when-compile
- (defvar bg-mouse-x) (defvar bg-mouse-y) (defvar bg-cursor-window)
- ;; This variable does not exist since 1991, so it's a safe bet
- ;; this package is not really used anymore. Still...
- (defvar mouse-map))
+(defvar bg-mouse-x)
+(defvar bg-mouse-y)
+(defvar bg-cursor-window)
+;; This variable does not exist since 1991, so it's a safe bet
+;; this package is not really used anymore. Still...
+(defvar mouse-map)
;;; Defuns:
diff --git a/lisp/obsolete/fast-lock.el b/lisp/obsolete/fast-lock.el
index 725e2b21e70..495e95706ca 100644
--- a/lisp/obsolete/fast-lock.el
+++ b/lisp/obsolete/fast-lock.el
@@ -187,6 +187,8 @@
(if (and (eq system-type 'ms-dos) (not (msdos-long-file-names)))
(error "`fast-lock' was written for long file name systems"))
+(defvar font-lock-face-list)
+
(eval-when-compile
;;
;; We don't do this at the top-level as we only use non-autoloaded macros.
@@ -234,22 +236,27 @@
(defmacro defcustom (symbol value doc &rest args)
`(defvar ,symbol ,value ,doc))))
-;(defun fast-lock-submit-bug-report ()
-; "Submit via mail a bug report on fast-lock.el."
-; (interactive)
-; (let ((reporter-prompt-for-summary-p t))
-; (reporter-submit-bug-report "simon@gnu.org" "fast-lock 3.14"
-; '(fast-lock-cache-directories fast-lock-minimum-size
-; fast-lock-save-others fast-lock-save-events fast-lock-save-faces
-; fast-lock-verbose)
-; nil nil
-; (concat "Hi Si.,
-;
-;I want to report a bug. I've read the `Bugs' section of `Info' on Emacs, so I
-;know how to make a clear and unambiguous report. To reproduce the bug:
-;
-;Start a fresh editor via `" invocation-name " -no-init-file -no-site-file'.
-;In the `*scratch*' buffer, evaluate:"))))
+;;(defun fast-lock-submit-bug-report ()
+;; "Submit via mail a bug report on fast-lock.el."
+;; (interactive)
+;; (let ((reporter-prompt-for-summary-p t))
+;; (reporter-submit-bug-report "simon@gnu.org" "fast-lock 3.14"
+;; '(fast-lock-cache-directories fast-lock-minimum-size
+;; fast-lock-save-others fast-lock-save-events fast-lock-save-faces
+;; fast-lock-verbose)
+;; nil nil
+;; (concat "Hi Si.,
+;;
+;;I want to report a bug. I've read the `Bugs' section of `Info' on Emacs, so I
+;;know how to make a clear and unambiguous report. To reproduce the bug:
+;;
+;;Start a fresh editor via `" invocation-name " -no-init-file -no-site-file'.
+;;In the `*scratch*' buffer, evaluate:"))))
+
+(defgroup fast-lock nil
+ "Font Lock support mode to cache fontification."
+ :load 'fast-lock
+ :group 'font-lock)
(defvar fast-lock-mode nil) ; Whether we are turned on.
(defvar fast-lock-cache-timestamp nil) ; For saving/reading.
@@ -372,8 +379,9 @@ For saving, see variables `fast-lock-minimum-size', `fast-lock-save-events',
(if arg (> (prefix-numeric-value arg) 0) (not fast-lock-mode))))
(if (and fast-lock-mode (not font-lock-mode))
;; Turned on `fast-lock-mode' rather than `font-lock-mode'.
- (let ((font-lock-support-mode 'fast-lock-mode))
- (font-lock-mode t))
+ (progn
+ (message "Use font-lock-support-mode rather than calling fast-lock-mode")
+ (sit-for 2))
;; Let's get down to business.
(set (make-local-variable 'fast-lock-cache-timestamp) nil)
(set (make-local-variable 'fast-lock-cache-filename) nil)
@@ -860,5 +868,5 @@ See `fast-lock-get-face-properties'."
(provide 'fast-lock)
-;;; arch-tag: 638c431e-8cae-4538-80a1-963ff97d233e
+;; arch-tag: 638c431e-8cae-4538-80a1-963ff97d233e
;;; fast-lock.el ends here
diff --git a/lisp/obsolete/lazy-lock.el b/lisp/obsolete/lazy-lock.el
index 2daf779bc73..eaef84a6ab4 100644
--- a/lisp/obsolete/lazy-lock.el
+++ b/lisp/obsolete/lazy-lock.el
@@ -299,6 +299,10 @@ until TEST returns nil."
`(while (progn ,@body ,test)))
(put 'do-while 'lisp-indent-function (get 'while 'lisp-indent-function)))
+(defgroup lazy-lock nil
+ "Font Lock support mode to fontify lazily."
+ :group 'font-lock)
+
(defvar lazy-lock-mode nil) ; Whether we are turned on.
(defvar lazy-lock-buffers nil) ; For deferral.
(defvar lazy-lock-timers (cons nil nil)) ; For deferral and stealth.
@@ -522,8 +526,8 @@ verbosity is controlled via the variable `lazy-lock-stealth-verbose'."
(if arg (> (prefix-numeric-value arg) 0) (not was-on)))))
(cond ((and now-on (not font-lock-mode))
;; Turned on `lazy-lock-mode' rather than `font-lock-mode'.
- (let ((font-lock-support-mode 'lazy-lock-mode))
- (font-lock-mode t)))
+ (message "Use font-lock-support-mode rather than calling lazy-lock-mode")
+ (sit-for 2))
(now-on
;; Turn ourselves on.
(set (make-local-variable 'lazy-lock-mode) t)
@@ -1050,5 +1054,5 @@ verbosity is controlled via the variable `lazy-lock-stealth-verbose'."
(provide 'lazy-lock)
-;;; arch-tag: c1776846-f046-4a45-9684-54b951b12fc9
+;; arch-tag: c1776846-f046-4a45-9684-54b951b12fc9
;;; lazy-lock.el ends here
diff --git a/lisp/obsolete/rnews.el b/lisp/obsolete/rnews.el
index 71158f47b4c..e6ab3e8c872 100644
--- a/lisp/obsolete/rnews.el
+++ b/lisp/obsolete/rnews.el
@@ -59,6 +59,12 @@
(require 'mail-utils)
(require 'sendmail)
+(defvar caesar-translate-table)
+(defvar minor-modes)
+(defvar news-buffer-save)
+(defvar news-group-name)
+(defvar news-minor-modes)
+
(autoload 'rmail-output "rmailout"
"Append this message to Unix mail file named FILE-NAME."
t)
@@ -887,7 +893,7 @@ Using ls was found to be too slow in a previous version."
(progn
(message
"Added %s to your list of newsgroups." gp)
- (end-of-buffer)
+ (goto-char (point-max))
(insert gp ": 1-1\n")))
(search-backward gp nil t)
(let (start end endofline tem)
diff --git a/lisp/obsolete/rnewspost.el b/lisp/obsolete/rnewspost.el
index 3dbeb5d871a..221f1a0e675 100644
--- a/lisp/obsolete/rnewspost.el
+++ b/lisp/obsolete/rnewspost.el
@@ -60,6 +60,8 @@
(require 'sendmail)
(require 'rnews)
+(defvar mail-reply-buffer)
+
(defvar news-reply-mode-map () "Mode map used by news-reply.")
(or news-reply-mode-map
diff --git a/lisp/obsolete/scribe.el b/lisp/obsolete/scribe.el
index 2870b93fade..1be01ebc5bb 100644
--- a/lisp/obsolete/scribe.el
+++ b/lisp/obsolete/scribe.el
@@ -30,6 +30,8 @@
;;; Code:
+(defvar compile-command)
+
(defgroup scribe nil
"Scribe mode."
:prefix "scribe-"
diff --git a/lisp/obsolete/sun-curs.el b/lisp/obsolete/sun-curs.el
index de372fe6836..769d4de868f 100644
--- a/lisp/obsolete/sun-curs.el
+++ b/lisp/obsolete/sun-curs.el
@@ -32,11 +32,15 @@
;;;
;;; 9-dec-86 Jeff Peck, Sun Microsystems Inc. <peck@sun.com>
-(eval-when-compile
- (require 'cl)
- (defvar *edit-icon*) (defvar char)
- ;; These are from term/sun-mouse.el
- (defvar *mouse-window*) (defvar *mouse-x*) (defvar *mouse-y*) (defvar menu))
+(eval-when-compile (require 'cl))
+
+(defvar *edit-icon*)
+(defvar char)
+;; These are from term/sun-mouse.el
+(defvar *mouse-window*)
+(defvar *mouse-x*)
+(defvar *mouse-y*)
+(defvar menu)
(require 'sun-fns)
diff --git a/lisp/obsolete/sun-fns.el b/lisp/obsolete/sun-fns.el
index bca76730e48..614b352ad3a 100644
--- a/lisp/obsolete/sun-fns.el
+++ b/lisp/obsolete/sun-fns.el
@@ -85,7 +85,7 @@
(setq this-command 'mouse-yank-move))
)
-(defun mouse-set-mark (window x y)
+(defun mouse-set-mark (&optional window x y)
"Set mark at mouse cursor."
(eval-in-window window ;; use this to get the unwind protect
(let ((point (point)))
@@ -137,7 +137,7 @@ and put the region in the stuff buffer."
"Select window if not selected, otherwise do mouse-drag-move-point."
(if (eq (selected-window) window)
(mouse-drag-move-point window x y)
- (mouse-select-window window x y)))
+ (mouse-select-window window)))
;;;
;;; esoterica:
@@ -283,15 +283,15 @@ this command is insensitive to mouse location."
"Split the window vertically at the mouse cursor."
(eval-in-window window (split-window-vertically (1+ y))))
-(defun mouse-select-window (window x y)
+(defun mouse-select-window (&optional window x y)
"Selects the window, restoring point."
(select-window window))
-(defun mouse-delete-other-windows (window x y)
+(defun mouse-delete-other-windows (&optional window x y)
"Deletes all windows except the one mouse is in."
(delete-other-windows window))
-(defun mouse-delete-window (window x y)
+(defun mouse-delete-window (window &optional x y)
"Deletes the window mouse is in."
(delete-window window))
diff --git a/lisp/obsolete/swedish.el b/lisp/obsolete/swedish.el
index 0021e1f1404..a247d565643 100644
--- a/lisp/obsolete/swedish.el
+++ b/lisp/obsolete/swedish.el
@@ -35,10 +35,9 @@
;; See iso-swed.el for a description of the character set.
-(eval-when-compile
- (defvar news-inews-hook)
- (defvar news-group-hook-alist)
- (defvar mail-send-hook))
+(defvar mail-send-hook)
+(defvar news-group-hook-alist)
+(defvar news-inews-hook)
(defvar swedish-re
"[ \t\n]\\(och\\|att\\|en\\|{r\\|\\[R\\|p}\\|P\\]\\|som\\|det\\|av\\|den\\|f|r\\|F\\\\R\\)[ \t\n.,?!:;'\")}]"
diff --git a/lisp/obsolete/x-menu.el b/lisp/obsolete/x-menu.el
index 048cea05ecb..12427f803cc 100644
--- a/lisp/obsolete/x-menu.el
+++ b/lisp/obsolete/x-menu.el
@@ -23,6 +23,8 @@
;;; Code:
+(defvar x-process-mouse-hook)
+
(defun x-menu-mode ()
"Major mode for creating permanent menus for use with X.
These menus are implemented entirely in Lisp; popup menus, implemented
diff --git a/lisp/outline.el b/lisp/outline.el
index 213bc34aba7..012396c2eb0 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -37,6 +37,9 @@
;;; Code:
+(defvar font-lock-warning-face)
+
+
(defgroup outlines nil
"Support for hierarchical outlining."
:prefix "outline-"
@@ -453,6 +456,20 @@ If INVISIBLE-OK is non-nil, an invisible heading line is ok too."
(save-excursion (newline-and-indent)))
(run-hooks 'outline-insert-heading-hook)))
+(defun outline-invent-heading (head up)
+ (save-match-data
+ ;; Let's try to invent one by repeating or deleting the last char.
+ (let ((new-head (if up (substring head 0 -1)
+ (concat head (substring head -1)))))
+ (if (string-match (concat "\\`\\(?:" outline-regexp "\\)")
+ new-head)
+ ;; Why bother checking that it is indeed higher/lower level ?
+ new-head
+ ;; Didn't work, so ask what to do.
+ (read-string (format "%s heading for `%s': "
+ (if up "Parent" "Demoted") head)
+ head nil nil t)))))
+
(defun outline-promote (&optional children)
"Promote headings higher up the tree.
If prefix argument CHILDREN is given, promote also all the children.
@@ -471,13 +488,18 @@ in the region."
(save-excursion (outline-get-next-sibling) (point))))
(t
(outline-back-to-heading t)
- (let* ((head (match-string 0))
+ (let* ((head (match-string-no-properties 0))
(level (save-match-data (funcall outline-level)))
(up-head (or (outline-head-from-level (1- level) head)
+ ;; Use the parent heading, if it is really
+ ;; one level less.
(save-excursion
(save-match-data
(outline-up-heading 1 t)
- (match-string 0))))))
+ (and (= (1- level) (funcall outline-level))
+ (match-string-no-properties 0))))
+ ;; Bummer!! There is no lower level heading.
+ (outline-invent-heading head 'up))))
(unless (rassoc level outline-heading-alist)
(push (cons head level) outline-heading-alist))
@@ -501,7 +523,7 @@ in the region."
(point)
(save-excursion (outline-get-next-sibling) (point))))
(t
- (let* ((head (match-string 0))
+ (let* ((head (match-string-no-properties 0))
(level (save-match-data (funcall outline-level)))
(down-head
(or (outline-head-from-level (1+ level) head)
@@ -516,21 +538,13 @@ in the region."
(<= (funcall outline-level) level))))
(unless (eobp)
(looking-at outline-regexp)
- (match-string 0))))
- (save-match-data
- ;; Bummer!! There is no lower heading in the buffer.
- ;; Let's try to invent one by repeating the first char.
- (let ((new-head (concat (substring head 0 1) head)))
- (if (string-match (concat "\\`\\(?:" outline-regexp "\\)")
- new-head)
- ;; Why bother checking that it is indeed lower level ?
- new-head
- ;; Didn't work: keep it as is so it's still a heading.
- head))))))
-
- (unless (rassoc level outline-heading-alist)
- (push (cons head level) outline-heading-alist))
- (replace-match down-head nil t)))))
+ (match-string-no-properties 0))))
+ ;; Bummer!! There is no higher-level heading in the buffer.
+ (outline-invent-heading head nil))))
+
+ (unless (rassoc level outline-heading-alist)
+ (push (cons head level) outline-heading-alist))
+ (replace-match down-head nil t)))))
(defun outline-head-from-level (level head &optional alist)
"Get new heading with level LEVEL from ALIST.
@@ -593,12 +607,11 @@ the match data is set appropriately."
(defun outline-move-subtree-down (&optional arg)
"Move the currrent subtree down past ARG headlines of the same level."
(interactive "p")
- (let ((re (concat "^\\(?:" outline-regexp "\\)"))
- (movfunc (if (> arg 0) 'outline-get-next-sibling
+ (let ((movfunc (if (> arg 0) 'outline-get-next-sibling
'outline-get-last-sibling))
(ins-point (make-marker))
(cnt (abs arg))
- beg end txt folded)
+ beg end folded)
;; Select the tree
(outline-back-to-heading)
(setq beg (point))
@@ -739,8 +752,8 @@ If FLAG is nil then text is shown, while if FLAG is t the text is hidden."
(defun hide-entry ()
"Hide the body directly following this heading."
(interactive)
- (outline-back-to-heading)
(save-excursion
+ (outline-back-to-heading)
(outline-end-of-heading)
(outline-flag-region (point) (progn (outline-next-preface) (point)) t)))
@@ -792,8 +805,8 @@ Show the heading too, if it is currently invisible."
(defun hide-leaves ()
"Hide all body after this heading at deeper levels."
(interactive)
- (outline-back-to-heading)
(save-excursion
+ (outline-back-to-heading)
(outline-end-of-heading)
(hide-region-body (point) (progn (outline-end-of-subtree) (point)))))
@@ -850,11 +863,12 @@ Show the heading too, if it is currently invisible."
(defun outline-toggle-children ()
"Show or hide the current subtree depending on its current state."
(interactive)
- (outline-back-to-heading)
- (if (not (outline-invisible-p (line-end-position)))
- (hide-subtree)
- (show-children)
- (show-entry)))
+ (save-excursion
+ (outline-back-to-heading)
+ (if (not (outline-invisible-p (line-end-position)))
+ (hide-subtree)
+ (show-children)
+ (show-entry))))
(defun outline-flag-subtree (flag)
(save-excursion
@@ -866,8 +880,7 @@ Show the heading too, if it is currently invisible."
(defun outline-end-of-subtree ()
(outline-back-to-heading)
- (let ((opoint (point))
- (first t)
+ (let ((first t)
(level (funcall outline-level)))
(while (and (not (eobp))
(or first (> (funcall outline-level) level)))
@@ -1027,5 +1040,5 @@ convenient way to make a table of contents of the buffer."
(provide 'outline)
(provide 'noutline)
-;;; arch-tag: 1724410e-7d4d-4f46-b801-49e18171e874
+;; arch-tag: 1724410e-7d4d-4f46-b801-49e18171e874
;;; outline.el ends here
diff --git a/lisp/play/handwrite.el b/lisp/play/handwrite.el
index 61f8f54d9da..066832e7eb3 100644
--- a/lisp/play/handwrite.el
+++ b/lisp/play/handwrite.el
@@ -69,6 +69,9 @@
;;; Code:
+(defvar ps-printer-name)
+(defvar ps-lpr-command)
+
;; Variables
diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el
index ea99369d16b..3b6a6d611d2 100644
--- a/lisp/progmodes/ada-mode.el
+++ b/lisp/progmodes/ada-mode.el
@@ -133,6 +133,9 @@
(require 'which-func nil t)
(require 'compile nil t))
+(defvar compile-auto-highlight)
+(defvar skeleton-further-elements)
+
;; this function is needed at compile time
(eval-and-compile
(defun ada-check-emacs-version (major minor &optional is-xemacs)
diff --git a/lisp/progmodes/antlr-mode.el b/lisp/progmodes/antlr-mode.el
index 0415aa910dd..229bec56dd5 100644
--- a/lisp/progmodes/antlr-mode.el
+++ b/lisp/progmodes/antlr-mode.el
@@ -829,7 +829,7 @@ in the grammar's actions and semantic predicates, see
`antlr-font-lock-maximum-decoration'.")
(defvar antlr-default-face 'antlr-default)
-(defface antlr-default
+(defface antlr-default nil
"Face to prevent strings from language dependent highlighting.
Do not change."
:group 'antlr)
@@ -925,7 +925,7 @@ group. The string matched by the first group is highlighted with
("\\$\\sw+" (0 keyword-face))
;; the tokens are already fontified as string/docstrings:
(,(lambda (limit)
- (if antlr-literal-regexp
+ (if antlr-font-lock-literal-regexp
(antlr-re-search-forward antlr-font-lock-literal-regexp limit)))
(1 antlr-literal-face t)
:XEMACS (0 nil)) ; XEmacs bug workaround
@@ -2241,9 +2241,8 @@ called interactively, the buffers are always saved, see also variable
(interactive (antlr-run-tool-interactive))
(or saved (save-some-buffers (not antlr-ask-about-save)))
(let ((default-directory (file-name-directory file)))
- (require 'compile) ; only `compile' autoload
- (compile-internal (concat command " " (file-name-nondirectory file))
- "No more errors" "Antlr-Run")))
+ (compilation-start (concat command " " (file-name-nondirectory file))
+ nil #'(lambda (mode-name) "*Antlr-Run*"))))
(defun antlr-run-tool-interactive ()
;; code in `interactive' is not compiled
diff --git a/lisp/progmodes/autoconf.el b/lisp/progmodes/autoconf.el
index 98ba14d8f24..2949b2da92f 100644
--- a/lisp/progmodes/autoconf.el
+++ b/lisp/progmodes/autoconf.el
@@ -38,6 +38,8 @@
;;; Code:
+(defvar font-lock-syntactic-keywords)
+
(defvar autoconf-mode-map (make-sparse-keymap))
(defvar autoconf-mode-hook nil
diff --git a/lisp/progmodes/cmacexp.el b/lisp/progmodes/cmacexp.el
index 8db5d0c03fe..e2bcf984586 100644
--- a/lisp/progmodes/cmacexp.el
+++ b/lisp/progmodes/cmacexp.el
@@ -93,6 +93,9 @@
(provide 'cmacexp)
+(defvar msdos-shells)
+
+
(defgroup c-macro nil
"Expand C macros in a region."
:group 'c)
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index dff4de60e45..f0836cbf2b0 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -70,6 +70,12 @@
(eval-when-compile (require 'cl))
+(defvar font-lock-extra-managed-props)
+(defvar font-lock-keywords)
+(defvar font-lock-maximum-size)
+(defvar font-lock-support-mode)
+
+
(defgroup compilation nil
"Run compiler as inferior of Emacs, parse error messages."
:group 'tools
@@ -287,11 +293,11 @@ File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?"
\\(?:: \\(warning:\\)?\\|$\\| ),\\)" 1 2 nil (3))
(gcov-file
- "^ +-: \\(0\\):Source:\\(.+\\)$" 2 1 nil 0)
+ "^ +-: \\(0\\):Source:\\(.+\\)$" 2 1 nil 0)
(gcov-bb-file
- "^ +-: \\(0\\):Object:\\(?:.+\\)$" nil 1 nil 0)
+ "^ +-: \\(0\\):Object:\\(?:.+\\)$" nil 1 nil 0)
(gcov-never-called-line
- "^ +\\(#####\\): +\\([0-9]+\\):.+$" nil 2 nil 2 nil
+ "^ +\\(#####\\): +\\([0-9]+\\):.+$" nil 2 nil 2 nil
(1 compilation-error-face))
(gcov-called-line
"^ +[-0-9]+: +\\([1-9]\\|[0-9]\\{2,\\}\\):.*$" nil 1 nil 0)
@@ -911,6 +917,7 @@ Otherwise, construct a buffer name from MODE-NAME."
(compilation-start command nil name-function highlight-regexp)))
(make-obsolete 'compile-internal 'compilation-start)
+;;;###autoload
(defun compilation-start (command &optional mode name-function highlight-regexp)
"Run compilation command COMMAND (low level interface).
If COMMAND starts with a cd command, that becomes the `default-directory'.
@@ -918,7 +925,8 @@ The rest of the arguments are optional; for them, nil means use the default.
MODE is the major mode to set in the compilation buffer. Mode
may also be t meaning use `compilation-shell-minor-mode' under `comint-mode'.
-NAME-FUNCTION is a function called to name the buffer.
+If NAME-FUNCTION is non-nil, call it with one argument (the mode name)
+to determine the buffer name.
If HIGHLIGHT-REGEXP is non-nil, `next-error' will temporarily highlight
the matching section of the visited source line; the default is to use the
@@ -1030,11 +1038,14 @@ Returns the compilation buffer created."
outbuf command))))
;; Make the buffer's mode line show process state.
(setq mode-line-process '(":%s"))
- (when compilation-disable-input
- (process-send-eof proc))
(set-process-sentinel proc 'compilation-sentinel)
(set-process-filter proc 'compilation-filter)
(set-marker (process-mark proc) (point) outbuf)
+ (when compilation-disable-input
+ (condition-case nil
+ (process-send-eof proc)
+ ;; The process may have exited already.
+ (error nil)))
(setq compilation-in-progress
(cons proc compilation-in-progress)))
;; No asynchronous processes available.
@@ -1677,14 +1688,18 @@ and overlay is highlighted between MK and END-MK."
;; Show compilation buffer in other window, scrolled to this error.
(let* ((pop-up-windows t)
;; Use an existing window if it is in a visible frame.
- (w (or (get-buffer-window (marker-buffer msg) 'visible)
- ;; Pop up a window.
- (display-buffer (marker-buffer msg))))
+ (pre-existing (get-buffer-window (marker-buffer msg) 0))
+ (w (let ((display-buffer-reuse-frames t))
+ ;; Pop up a window.
+ (display-buffer (marker-buffer msg))))
(highlight-regexp (with-current-buffer (marker-buffer msg)
;; also do this while we change buffer
(compilation-set-window w msg)
compilation-highlight-regexp)))
- (compilation-set-window-height w)
+ ;; Ideally, the window-size should be passed to `display-buffer' (via
+ ;; something like special-display-buffer) so it's only used when
+ ;; creating a new window.
+ (unless pre-existing (compilation-set-window-height w))
(when highlight-regexp
(if (timerp next-error-highlight-timer)
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 6d4766bd6ae..f25d5c29081 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -68,6 +68,9 @@
;;; Code:
+(defvar vc-rcs-header)
+(defvar vc-sccs-header)
+
;; Some macros are needed for `defcustom'
(eval-when-compile
(condition-case nil
@@ -1775,7 +1778,7 @@ char is \"{\", insert extra newline before only if
(save-excursion
(skip-chars-backward "$")
(looking-at "\\(\\$\\$\\)*\\$\\([^\\$]\\|$\\)"))
- (insert ?\ ))
+ (insert ?\s))
;; Check whether we are in comment
(if (and
(save-excursion
@@ -1871,7 +1874,7 @@ to nil."
(let ((beg (save-excursion (beginning-of-line) (point)))
(dollar (and (eq last-command-char ?$)
(eq this-command 'self-insert-command)))
- (delete (and (memq last-command-char '(?\ ?\n ?\t ?\f))
+ (delete (and (memq last-command-char '(?\s ?\n ?\t ?\f))
(memq this-command '(self-insert-command newline))))
my do)
(and (save-excursion
@@ -1946,7 +1949,7 @@ to nil."
(defun cperl-electric-pod ()
"Insert a POD chunk appropriate after a =POD directive."
- (let ((delete (and (memq last-command-char '(?\ ?\n ?\t ?\f))
+ (let ((delete (and (memq last-command-char '(?\s ?\n ?\t ?\f))
(memq this-command '(self-insert-command newline))))
head1 notlast name p really-delete over)
(and (save-excursion
@@ -2224,7 +2227,7 @@ key. Will untabify if `cperl-electric-backspace-untabify' is non-nil."
(memq last-command '(cperl-electric-semi
cperl-electric-terminator
cperl-electric-lbrace))
- (memq (preceding-char) '(?\ ?\t ?\n)))
+ (memq (preceding-char) '(?\s ?\t ?\n)))
(let (p)
(if (eq last-command 'cperl-electric-lbrace)
(skip-chars-forward " \t\n"))
@@ -2236,7 +2239,7 @@ key. Will untabify if `cperl-electric-backspace-untabify' is non-nil."
(setq this-command 'cperl-electric-else-really))
(if (and cperl-auto-newline
(eq last-command 'cperl-electric-else-really)
- (memq (preceding-char) '(?\ ?\t ?\n)))
+ (memq (preceding-char) '(?\s ?\t ?\n)))
(let (p)
(skip-chars-forward " \t\n")
(setq p (point))
@@ -3039,7 +3042,7 @@ Returns true if comment is found."
(progn
(setq i (point) i2 i)
(if ender
- (if (memq (following-char) '(?\ ?\t ?\n ?\f))
+ (if (memq (following-char) '(?\s ?\t ?\n ?\f))
(progn
(if (looking-at "[ \t\n\f]+\\(#[^\n]*\n[ \t\n\f]*\\)+")
(goto-char (match-end 0))
@@ -4031,7 +4034,7 @@ Returns some position at the last line."
(setq p (point))
(skip-chars-forward " \t\n")
(delete-region p (point))
- (insert (make-string cperl-indent-region-fix-constructs ?\ ))
+ (insert (make-string cperl-indent-region-fix-constructs ?\s))
(beginning-of-line)))
;; Looking at:
;; } else
@@ -4039,7 +4042,7 @@ Returns some position at the last line."
(progn
(search-forward "}")
(delete-horizontal-space)
- (insert (make-string cperl-indent-region-fix-constructs ?\ ))
+ (insert (make-string cperl-indent-region-fix-constructs ?\s))
(beginning-of-line)))
;; Looking at:
;; else {
@@ -4048,7 +4051,7 @@ Returns some position at the last line."
(progn
(forward-word 1)
(delete-horizontal-space)
- (insert (make-string cperl-indent-region-fix-constructs ?\ ))
+ (insert (make-string cperl-indent-region-fix-constructs ?\s))
(beginning-of-line)))
;; Looking at:
;; foreach my $var
@@ -4057,7 +4060,7 @@ Returns some position at the last line."
(progn
(forward-word 2)
(delete-horizontal-space)
- (insert (make-string cperl-indent-region-fix-constructs ?\ ))
+ (insert (make-string cperl-indent-region-fix-constructs ?\s))
(beginning-of-line)))
;; Looking at:
;; foreach my $var (
@@ -4067,7 +4070,7 @@ Returns some position at the last line."
(forward-sexp 3)
(delete-horizontal-space)
(insert
- (make-string cperl-indent-region-fix-constructs ?\ ))
+ (make-string cperl-indent-region-fix-constructs ?\s))
(beginning-of-line)))
;; Looking at:
;; } foreach my $var () {
@@ -4111,7 +4114,7 @@ Returns some position at the last line."
(cperl-fix-line-spacing end parse-data)
(setq ret (point)))))
(insert
- (make-string cperl-indent-region-fix-constructs ?\ ))))
+ (make-string cperl-indent-region-fix-constructs ?\s))))
((and (looking-at "[ \t]*\n")
(not (if ml
cperl-extra-newline-before-brace-multiline
@@ -4120,7 +4123,7 @@ Returns some position at the last line."
(skip-chars-forward " \t\n")
(delete-region pp (point))
(insert
- (make-string cperl-indent-region-fix-constructs ?\ ))))
+ (make-string cperl-indent-region-fix-constructs ?\s))))
;; Now we are before `{'
(if (looking-at "[ \t\n]*{[ \t]*[^ \t\n#]")
(progn
@@ -4297,7 +4300,7 @@ indentation and initial hashes. Behaves usually outside of comment."
(looking-at "#+[ \t]*")
(setq start (point) c (current-column)
comment-fill-prefix
- (concat (make-string (current-column) ?\ )
+ (concat (make-string (current-column) ?\s)
(buffer-substring (match-beginning 0) (match-end 0)))
spaces (progn (skip-chars-backward " \t")
(buffer-substring (point) start))
@@ -5449,7 +5452,7 @@ Will not move the position at the start to the left."
(setq e (point))
(skip-chars-backward " \t")
(delete-region (point) e)
- (indent-to-column col) ;(make-string (- col (current-column)) ?\ ))
+ (indent-to-column col) ;(make-string (- col (current-column)) ?\s))
(beginning-of-line 2)
(and (< (point) end)
(re-search-forward search end t)
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 8854d57915c..d137284f795 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -806,11 +806,13 @@ line number outside the file being compiled."
(defun flymake-highlight-err-lines (buffer err-info-list)
"Highlight error lines in BUFFER using info from ERR-INFO-LIST."
(with-current-buffer buffer
+ (save-excursion
(let* ((idx 0)
(count (length err-info-list)))
(while (< idx count)
- (flymake-highlight-line (car (nth idx err-info-list)) (nth 1 (nth idx err-info-list)))
- (setq idx (1+ idx))))))
+ (flymake-highlight-line (car (nth idx err-info-list))
+ (nth 1 (nth idx err-info-list)))
+ (setq idx (1+ idx)))))))
(defun flymake-overlay-p (ov)
"Determine whether overlay OV was created by flymake."
diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el
index 5ea2e4b7838..3b6c77fef29 100644
--- a/lisp/progmodes/fortran.el
+++ b/lisp/progmodes/fortran.el
@@ -55,6 +55,8 @@
(eval-when-compile ; silence compiler
(defvar dabbrev-case-fold-search)
+ (defvar font-lock-syntactic-keywords)
+ (defvar gud-find-expr-function)
(defvar imenu-case-fold-search)
(defvar imenu-syntax-alist))
@@ -1646,7 +1648,7 @@ notes: 1) A non-zero/non-blank character in column 5 indicates a continuation
(let* ((char (if (stringp fortran-comment-indent-char)
(aref fortran-comment-indent-char 0)
fortran-comment-indent-char))
- (chars (string ? ?\t char)))
+ (chars (string ?\s ?\t char)))
(goto-char (match-end 0))
(skip-chars-backward chars)
(delete-region (point) (progn (skip-chars-forward chars)
@@ -1656,7 +1658,7 @@ notes: 1) A non-zero/non-blank character in column 5 indicates a continuation
(if indent-tabs-mode
(goto-char (match-end 0))
(delete-char 2)
- (insert-char ? 5)
+ (insert-char ?\s 5)
(insert fortran-continuation-string))
(if (looking-at " \\{5\\}[^ 0\n]")
(if indent-tabs-mode
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index a1c6f0a80b0..6c960c4c5d5 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -79,6 +79,8 @@
(require 'gud)
+(defvar tool-bar-map)
+
(defvar gdb-frame-address "main" "Initialization for Assembler buffer.")
(defvar gdb-previous-frame-address nil)
(defvar gdb-memory-address "main")
@@ -704,6 +706,13 @@ The key should be one of the cars in `gdb-buffer-rules-assoc'."
(gdb-display-buffer
(gdb-get-create-buffer 'gdb-inferior-io))))
+(defconst gdb-frame-parameters
+ '((height . 14) (width . 80)
+ (unsplittable . t)
+ (tool-bar-lines . nil)
+ (menu-bar-lines . nil)
+ (minibuffer . nil)))
+
(defun gdb-frame-inferior-io-buffer ()
"Display IO of inferior in a new frame."
(interactive)
@@ -1410,13 +1419,6 @@ static char *magick[] = {
(gdb-display-buffer
(gdb-get-create-buffer 'gdb-breakpoints-buffer)))
-(defconst gdb-frame-parameters
- '((height . 14) (width . 80)
- (unsplittable . t)
- (tool-bar-lines . nil)
- (menu-bar-lines . nil)
- (minibuffer . nil)))
-
(defun gdb-frame-breakpoints-buffer ()
"Display status of user-settable breakpoints in a new frame."
(interactive)
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index 6dc5fcabd41..48d1c09d138 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -33,6 +33,9 @@
(require 'compile)
+(defvar font-lock-lines-before)
+
+
(defgroup grep nil
"Run compiler as inferior of Emacs, parse error messages."
:group 'tools
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 0577e2a2bb7..1486825b07a 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -45,6 +45,15 @@
(require 'comint)
(require 'font-lock)
+(defvar gdb-active-process)
+(defvar gdb-define-alist)
+(defvar gdb-macro-info)
+(defvar gdb-server-prefix)
+(defvar gdb-show-changed-values)
+(defvar gdb-var-changed)
+(defvar gdb-var-list)
+(defvar tool-bar-map)
+
;; ======================================================================
;; GUD commands must be visible in C buffers visited by GUD
@@ -508,9 +517,9 @@ off the specialized speedbar mode."
;; to return - we don't include the marker in this text.
output (concat output
(substring gud-marker-acc 0 (match-beginning 0)))
-
+
;; Set the accumulator to the remaining text.
-
+
gud-marker-acc (substring gud-marker-acc (match-end 0)))
(if (string-equal match "error-begin")
(put-text-property 0 (length gud-marker-acc)
@@ -2865,12 +2874,12 @@ the character after the end of the expr."
If `->' is found, return `?.'. If `.' is found, return `?.'.
If any other punctuation is found, return `??'.
If no punctuation is found, return `? '."
- (let ((result ?\ )
+ (let ((result ?\s)
(syntax))
(while (< span-start span-end)
(setq syntax (char-syntax (char-after span-start)))
(cond
- ((= syntax ?\ ) t)
+ ((= syntax ?\s) t)
((= syntax ?.) (setq syntax (char-after span-start))
(cond
((= syntax ?.) (setq result ?.))
@@ -2902,7 +2911,7 @@ Link exprs of the form:
((= (car first) (car second)) nil)
((= (cdr first) (cdr second)) nil)
((= syntax ?.) t)
- ((= syntax ?\ )
+ ((= syntax ?\s)
(setq span-start (char-after (- span-start 1)))
(setq span-end (char-after span-end))
(cond
diff --git a/lisp/progmodes/idlw-complete-structtag.el b/lisp/progmodes/idlw-complete-structtag.el
index 8808b3ff8a5..bc659666a08 100644
--- a/lisp/progmodes/idlw-complete-structtag.el
+++ b/lisp/progmodes/idlw-complete-structtag.el
@@ -53,10 +53,10 @@
;;
;; INSTALLATION
;; ============
-;; Put this file on the emacs load path and load it with the following
+;; Put this file on the emacs load path and load it with the following
;; line in your .emacs file:
;;
-;; (add-hook 'idlwave-load-hook
+;; (add-hook 'idlwave-load-hook
;; (lambda () (require 'idlw-complete-structtag)))
;;
;; DESCRIPTION
@@ -87,6 +87,7 @@
;; - You can force an update of the tag list with the usual command
;; to update routine info in IDLWAVE: C-c C-i
+(defvar idlwave-completion-help-info)
;; Some variables to identify the previously used structure
(defvar idlwave-current-tags-var nil)
@@ -144,9 +145,9 @@ an up-to-date completion list."
(not (equal start idlwave-current-tags-completion-pos)))
(idlwave-prepare-structure-tag-completion var))
(setq idlwave-current-tags-completion-pos start)
- (setq idlwave-completion-help-info
+ (setq idlwave-completion-help-info
(list 'idlwave-complete-structure-tag-help))
- (idlwave-complete-in-buffer 'structtag 'structtag
+ (idlwave-complete-in-buffer 'structtag 'structtag
idlwave-current-struct-tags nil
"Select a structure tag" "structure tag")
t) ; we did the completion: return t to skip other completions
@@ -165,7 +166,7 @@ an up-to-date completion list."
(if (eq major-mode 'idlwave-shell-mode)
;; OK, we are in the shell, do it dynamically
(progn
- (message "preparing shell tags")
+ (message "preparing shell tags")
;; The following call puts the tags into `idlwave-current-struct-tags'
(idlwave-complete-structure-tag-query-shell var)
;; initialize
@@ -187,7 +188,7 @@ an up-to-date completion list."
;; Find possible definitions of the structure.
(while (idlwave-find-structure-definition var nil 'all)
(let ((tags (idlwave-struct-tags)))
- (when tags
+ (when tags
;; initialize
(setq idlwave-sint-structtags nil
idlwave-current-tags-buffer (current-buffer)
diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el
index 8c43831ebac..0a848128032 100644
--- a/lisp/progmodes/idlw-help.el
+++ b/lisp/progmodes/idlw-help.el
@@ -36,11 +36,13 @@
;; information, at:
;;
;; http://idlwave.org
-;;
+;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Code:
+(defvar browse-url-generic-args)
+
(defvar idlwave-help-browse-url-available nil
"Whether browse-url is available")
@@ -58,10 +60,10 @@
:group 'idlwave-online-help
:type 'boolean)
-(defvar idlwave-html-link-sep
+(defvar idlwave-html-link-sep
(if idlwave-html-help-pre-v6 "#" "#wp"))
-(defcustom idlwave-html-help-location
+(defcustom idlwave-html-help-location
(if (memq system-type '(ms-dos windows-nt))
nil
"/usr/local/etc/")
@@ -89,7 +91,7 @@ Defaults to `browse-url-browser-function', which see."
:group 'idlwave-online-help
:type 'string)
-(defcustom idlwave-help-browser-generic-args
+(defcustom idlwave-help-browser-generic-args
(if (boundp 'browse-url-generic-args)
browse-url-generic-args "")
"Program args to use if using browse-url-generic-program."
@@ -196,7 +198,7 @@ support."
(defvar idlwave-help-activate-links-aggressively nil
"Obsolete variable.")
-
+
(defvar idlwave-completion-help-info)
(defvar idlwave-help-frame nil
@@ -324,7 +326,7 @@ It collects and prints the diagnostics messages."
(setq idlwave-last-context-help-pos marker)
(idlwave-do-context-help1 arg)
(if idlwave-help-diagnostics
- (message "%s" (mapconcat 'identity
+ (message "%s" (mapconcat 'identity
(nreverse idlwave-help-diagnostics)
"; "))))))
@@ -337,7 +339,7 @@ It collects and prints the diagnostics messages."
(defun idlwave-do-context-help1 (&optional arg)
"The work-horse version of `idlwave-context-help', which see."
(save-excursion
- (if (equal (char-after) ?/)
+ (if (equal (char-after) ?/)
(forward-char 1)
(if (equal (char-before) ?=)
(backward-char 1)))
@@ -347,7 +349,7 @@ It collects and prints the diagnostics messages."
(beg (save-excursion (skip-chars-backward chars) (point)))
(end (save-excursion (skip-chars-forward chars) (point)))
(this-word (buffer-substring-no-properties beg end))
- (st-ass (assoc (downcase this-word)
+ (st-ass (assoc (downcase this-word)
idlwave-help-special-topic-words))
(classtag (and (string-match "self\\." this-word)
(< beg (- end 4))))
@@ -355,7 +357,7 @@ It collects and prints the diagnostics messages."
(string-match "\\`\\([^.]+\\)\\." this-word)
(< beg (- end 4))))
module keyword cw mod1 mod2 mod3)
- (if (or arg
+ (if (or arg
(and (not st-ass)
(not classtag)
(not structtag)
@@ -374,15 +376,15 @@ It collects and prints the diagnostics messages."
(setq module (list "init" 'fun (match-string 1 str))
idlwave-current-obj_new-class (match-string 1 str))
)))))
- (cond
+ (cond
(arg (setq mod1 module))
-
+
;; A special topic -- only system help
(st-ass (setq mod1 (list (cdr st-ass))))
-
+
;; A system variable -- only system help
- ((string-match
- "\\`!\\([a-zA-Z0-9_]+\\)\\(\.\\([A-Za-z0-9_]+\\)\\)?"
+ ((string-match
+ "\\`!\\([a-zA-Z0-9_]+\\)\\(\.\\([A-Za-z0-9_]+\\)\\)?"
this-word)
(let* ((word (match-string-no-properties 1 this-word))
(entry (assq (idlwave-sintern-sysvar word)
@@ -394,10 +396,10 @@ It collects and prints the diagnostics messages."
(cdr (assq 'tags entry))))))
(link (nth 1 (assq 'link entry))))
(if tag-target
- (setq link (idlwave-substitute-link-target link
+ (setq link (idlwave-substitute-link-target link
tag-target)))
(setq mod1 (list link))))
-
+
;; An executive command -- only system help
((string-match "^\\.\\([A-Z_]+\\)" this-word)
(let* ((word (match-string 1 this-word))
@@ -405,7 +407,7 @@ It collects and prints the diagnostics messages."
word
idlwave-executive-commands-alist t))))
(setq mod1 (list link))))
-
+
;; A class -- system OR in-text help (via class__define).
((and (eq cw 'class)
(or (idlwave-in-quote) ; e.g. obj_new
@@ -419,28 +421,28 @@ It collects and prints the diagnostics messages."
(name (concat (downcase this-word) "__define"))
(link (nth 1 (assq 'link entry))))
(setq mod1 (list link name 'pro))))
-
+
;; A class structure tag (self.BLAH) -- only in-text help available
(classtag
(let ((tag (substring this-word (match-end 0)))
class-with found-in)
- (when (setq class-with
+ (when (setq class-with
(idlwave-class-or-superclass-with-tag
(nth 2 (idlwave-current-routine))
tag))
(setq found-in (idlwave-class-found-in class-with))
- (if (assq (idlwave-sintern-class class-with)
+ (if (assq (idlwave-sintern-class class-with)
idlwave-system-class-info)
(error "No help available for system class tags"))
(setq idlwave-help-do-class-struct-tag t)
- (setq mod1 (list nil
+ (setq mod1 (list nil
(if found-in
(cons (concat found-in "__define") class-with)
(concat class-with "__define"))
'pro
nil ; no class.... it's a procedure!
tag)))))
-
+
;; A regular structure tag -- only in text, and if
;; optional `complete-structtag' loaded.
(structtag
@@ -451,7 +453,7 @@ It collects and prints the diagnostics messages."
(setq idlwave-help-do-struct-tag
idlwave-structtag-struct-location
mod1 (list nil nil nil nil tag))))
-
+
;; A routine keyword -- in text or system help
((and (memq cw '(function-keyword procedure-keyword))
(stringp this-word)
@@ -493,7 +495,7 @@ It collects and prints the diagnostics messages."
(setq mod1 (append (list t) module (list keyword))
mod2 (list t this-word 'fun nil)
mod3 (append (list t) module)))))
-
+
;; Everything else
(t
(setq mod1 (append (list t) module))))
@@ -526,14 +528,14 @@ Needs additional info stored in global `idlwave-completion-help-info'."
word link)
(mouse-set-point ev)
-
+
;; See if we can also find help somewhere, e.g. for multiple classes
(setq word (idlwave-this-word))
(if (string= word "")
(error "No help item selected"))
(setq link (get-text-property 0 'link word))
(select-window cw)
- (cond
+ (cond
;; Routine name
((memq what '(procedure function routine))
(setq name word)
@@ -544,9 +546,9 @@ Needs additional info stored in global `idlwave-completion-help-info'."
type)))
(setq link t) ; No specific link valid yet
(if sclasses
- (setq classes (idlwave-members-only
+ (setq classes (idlwave-members-only
classes (cons class sclasses))))
- (setq class (idlwave-popup-select ev classes
+ (setq class (idlwave-popup-select ev classes
"Select Class" 'sort))))
;; XXX is this necessary, given all-method-classes?
@@ -566,7 +568,7 @@ Needs additional info stored in global `idlwave-completion-help-info'."
type)))
(setq link t) ; Link can't be correct yet
(if sclasses
- (setq classes (idlwave-members-only
+ (setq classes (idlwave-members-only
classes (cons class sclasses))))
(setq class (idlwave-popup-select ev classes
"Select Class" 'sort))
@@ -578,14 +580,14 @@ Needs additional info stored in global `idlwave-completion-help-info'."
(if (string= (downcase name) "obj_new")
(setq class idlwave-current-obj_new-class
name "Init"))))
-
+
;; Class name
((eq what 'class)
(setq class word
word nil))
-
+
;; A special named function to call which sets some of our variables
- ((and (symbolp what)
+ ((and (symbolp what)
(fboundp what))
(funcall what 'set word))
@@ -600,7 +602,7 @@ Needs additional info stored in global `idlwave-completion-help-info'."
"Highlight all completions for which help is available and attach link.
Those words in `idlwave-completion-help-links' have links. The
`idlwave-help-link' face is used for this."
- (if idlwave-highlight-help-links-in-completion
+ (if idlwave-highlight-help-links-in-completion
(with-current-buffer (get-buffer "*Completions*")
(save-excursion
(let* ((case-fold-search t)
@@ -616,7 +618,7 @@ Those words in `idlwave-completion-help-links' have links. The
(setq beg (match-beginning 1) end (match-end 1)
word (match-string 1) doit nil)
;; Call special completion function test
- (if (and (symbolp what)
+ (if (and (symbolp what)
(fboundp what))
(setq doit (funcall what 'test word))
;; Look for special link property passed in help-links
@@ -647,13 +649,13 @@ Those words in `idlwave-completion-help-links' have links. The
;; Try to select the return frame.
;; This can crash on slow network connections, obviously when
;; we kill the help frame before the return-frame is selected.
- ;; To protect the workings, we wait for up to one second
+ ;; To protect the workings, we wait for up to one second
;; and check if the return-frame *is* now selected.
;; This is marked "eperimental" since we are not sure when its OK.
(let ((maxtime 1.0) (time 0.) (step 0.1))
(select-frame idlwave-help-return-frame)
(while (and (sit-for step)
- (not (eq (selected-frame)
+ (not (eq (selected-frame)
idlwave-help-return-frame))
(< (setq time (+ time step)) maxtime)))))
(delete-frame idlwave-help-frame))
@@ -666,7 +668,7 @@ Those words in `idlwave-completion-help-links' have links. The
(defvar default-toolbar-visible-p)
(defun idlwave-help-display-help-window (&optional pos-or-func)
- "Display the help window.
+ "Display the help window.
Move window start to POS-OR-FUNC, if passed as a position, or call it
if passed as a function. See `idlwave-help-use-dedicated-frame'."
(let ((cw (selected-window))
@@ -677,13 +679,13 @@ if passed as a function. See `idlwave-help-use-dedicated-frame'."
(switch-to-buffer buf))
;; Do it in this frame and save the window configuration
(if (not (get-buffer-window buf nil))
- (setq idlwave-help-window-configuration
+ (setq idlwave-help-window-configuration
(current-window-configuration)))
(display-buffer buf nil (selected-frame))
(select-window (get-buffer-window buf)))
(raise-frame)
- (if pos-or-func
- (if (functionp pos-or-func)
+ (if pos-or-func
+ (if (functionp pos-or-func)
(funcall pos-or-func)
(goto-char pos-or-func)
(recenter 0)))
@@ -705,31 +707,31 @@ if passed as a function. See `idlwave-help-use-dedicated-frame'."
(select-frame idlwave-help-return-frame)))
(defun idlwave-online-help (link &optional name type class keyword)
- "Display HTML or other special help on a certain topic.
+ "Display HTML or other special help on a certain topic.
Either loads an HTML link, if LINK is non-nil, or gets special-help on
the optional arguments, if any special help is defined. If LINK is
`t', first look up the optional arguments in the routine info list to
see if a link is set for it. Try extra help functions if necessary."
;; Lookup link
- (if (eq link t)
- (let ((entry (idlwave-best-rinfo-assoc name type class
+ (if (eq link t)
+ (let ((entry (idlwave-best-rinfo-assoc name type class
(idlwave-routines) nil t)))
(cond
;; Try keyword link
- ((and keyword
+ ((and keyword
(setq link (cdr (idlwave-entry-find-keyword entry keyword)))))
;; Default, regular entry link
(t (setq link (idlwave-entry-has-help entry))))))
(cond
;; An explicit link
- ((stringp link)
+ ((stringp link)
(idlwave-help-html-link link))
-
+
;; Any extra help
(idlwave-extra-help-function
(idlwave-help-get-special-help name type class keyword))
-
+
;; Nothing worked
(t (idlwave-help-error name type class keyword))))
@@ -740,7 +742,7 @@ see if a link is set for it. Try extra help functions if necessary."
(help-pos (save-excursion
(set-buffer (idlwave-help-get-help-buffer))
(let ((buffer-read-only nil))
- (funcall idlwave-extra-help-function
+ (funcall idlwave-extra-help-function
name type class keyword)))))
(if help-pos
(idlwave-help-display-help-window help-pos)
@@ -754,7 +756,7 @@ see if a link is set for it. Try extra help functions if necessary."
(browse-url-generic-program idlwave-help-browser-generic-program)
;(browse-url-generic-args idlwave-help-browser-generic-args)
full-link)
-
+
(unless idlwave-help-browse-url-available
(error "browse-url is not available -- install it to use HTML help."))
@@ -772,12 +774,12 @@ see if a link is set for it. Try extra help functions if necessary."
;; Just a regular file name (+ anchor name)
(unless (and (stringp help-loc)
(file-directory-p help-loc))
- (error
+ (error
"Invalid help location; customize `idlwave-html-help-location'."))
- (setq full-link (concat
+ (setq full-link (concat
"file://"
- (expand-file-name
- link
+ (expand-file-name
+ link
(expand-file-name "idl_html_help" help-loc)))))
;; Check for a local browser
@@ -812,7 +814,7 @@ This function can be used as `idlwave-extra-help-function'."
(if class-only ;Help with class? Using "Init" as source.
(setq name "Init"
type 'fun))
- (if (not struct-tag)
+ (if (not struct-tag)
(setq file
(idlwave-routine-source-file
(nth 3 (idlwave-best-rinfo-assoc
@@ -825,7 +827,7 @@ This function can be used as `idlwave-extra-help-function'."
(if (or struct-tag (stringp file))
(progn
(setq in-buf ; structure-tag completion is always in current buffer
- (if struct-tag
+ (if struct-tag
idlwave-current-tags-buffer
(idlwave-get-buffer-visiting file)))
;; see if file is in a visited buffer, insert those contents
@@ -833,7 +835,8 @@ This function can be used as `idlwave-extra-help-function'."
(progn
(setq file (buffer-file-name in-buf))
(erase-buffer)
- (insert-buffer in-buf))
+ (insert-buffer-substring in-buf)
+ (goto-char (point-min)))
(if (file-exists-p file) ;; otherwise just load the file
(progn
(erase-buffer)
@@ -847,19 +850,19 @@ This function can be used as `idlwave-extra-help-function'."
;; Try to find a good place to display
(setq def-pos
;; Find the class structure tag if that's what we're after
- (cond
+ (cond
;; Class structure tags: find the class or named structure
;; definition
(class-struct-tag
- (save-excursion
+ (save-excursion
(setq class
- (if (string-match "[a-zA-Z0-9]\\(__\\)" name)
+ (if (string-match "[a-zA-Z0-9]\\(__\\)" name)
(substring name 0 (match-beginning 1))
idlwave-current-tags-class))
(and
(idlwave-find-class-definition class nil real-class)
(idlwave-find-struct-tag keyword))))
-
+
;; Generic structure tags: the structure definition
;; location within the file has been recorded in
;; `struct-tag'
@@ -869,14 +872,14 @@ This function can be used as `idlwave-extra-help-function'."
(integerp struct-tag)
(goto-char struct-tag)
(idlwave-find-struct-tag keyword))))
-
+
;; Just find the routine definition
(t
(if class-only (point-min)
(idlwave-help-find-routine-definition name type class keyword))))
idlwave-help-def-pos def-pos)
- (if (and idlwave-help-source-try-header
+ (if (and idlwave-help-source-try-header
(not (or struct-tag class-struct-tag)))
;; Check if we can find the header
(save-excursion
@@ -886,7 +889,7 @@ This function can be used as `idlwave-extra-help-function'."
idlwave-help-in-header header-pos)))
(if (or header-pos def-pos)
- (progn
+ (progn
(if (boundp 'idlwave-help-min-frame-width)
(setq idlwave-help-min-frame-width 80))
(goto-char (or header-pos def-pos)))
@@ -900,7 +903,7 @@ This function can be used as `idlwave-extra-help-function'."
KEYWORD is ignored. Returns the point of match if successful, nil otherwise."
(save-excursion
(goto-char (point-max))
- (if (re-search-backward
+ (if (re-search-backward
(concat "^[ \t]*"
(if (eq type 'pro) "pro"
(if (eq type 'fun) "function"
@@ -946,22 +949,22 @@ with spaces allowed between the keyword and the following dash or equal sign.
If there is a match, we assume it is the keyword description."
(let* ((case-fold-search t)
(rname (if (stringp class)
- (concat
+ (concat
"\\("
;; Traditional name or class::name
"\\("
"\\(" (regexp-quote (downcase class)) "::\\)?"
(regexp-quote (downcase name))
"\\>\\)"
- (concat
+ (concat
"\\|"
;; class__define or just class
(regexp-quote (downcase class)) "\\(__define\\)?")
"\\)")
(regexp-quote (downcase name))))
-
+
;; NAME tag plus the routine name. The new version is from JD.
- (name-re (concat
+ (name-re (concat
"\\(^;+\\*?[ \t]*"
idlwave-help-doclib-name
"\\([ \t]*:\\|[ \t]*$\\)[ \t]*\\(\n;+[ \t]*\\)*"
@@ -996,7 +999,7 @@ If there is a match, we assume it is the keyword description."
(regexp-quote (upcase keyword))
"\\>")))
dstart dend name-pos kwds-pos kwd-pos)
- (catch 'exit
+ (catch 'exit
(save-excursion
(goto-char (point-min))
(while (and (setq dstart (re-search-forward idlwave-doclib-start nil t))
@@ -1004,7 +1007,7 @@ If there is a match, we assume it is the keyword description."
;; found a routine header
(goto-char dstart)
(if (setq name-pos (re-search-forward name-re dend t))
- (progn
+ (progn
(if keyword
;; We do need a keyword
(progn
@@ -1086,7 +1089,7 @@ When DING is non-nil, ring the bell as well."
(idlwave-help-find-first-header nil)
(setq idlwave-help-in-header nil)
(idlwave-help-toggle-header-match-and-def arg 'top)))
-
+
(defun idlwave-help-toggle-header-match-and-def (arg &optional top)
(interactive "P")
(let ((args idlwave-help-args)
@@ -1098,7 +1101,7 @@ When DING is non-nil, ring the bell as well."
(setq pos idlwave-help-def-pos))
;; Try to display header
(setq pos (apply 'idlwave-help-find-in-doc-header
- (if top
+ (if top
(list (car args) (nth 1 args) (nth 2 args) nil)
args)))
(if pos
@@ -1132,7 +1135,7 @@ Useful when source code is displayed as help. See the option
(font-lock-fontify-buffer))
(set-syntax-table syntax-table)))))
-
+
(defun idlwave-help-error (name type class keyword)
(error "Can't find help on %s%s %s"
(or (and (or class name) (idlwave-make-full-name class name))
diff --git a/lisp/progmodes/mixal-mode.el b/lisp/progmodes/mixal-mode.el
index 8f9806c15bb..fd494324303 100644
--- a/lisp/progmodes/mixal-mode.el
+++ b/lisp/progmodes/mixal-mode.el
@@ -55,6 +55,8 @@
;;; Code:
+(defvar compile-command)
+
;;; Key map
(defvar mixal-mode-map
(let ((map (make-sparse-keymap)))
diff --git a/lisp/progmodes/octave-hlp.el b/lisp/progmodes/octave-hlp.el
index a6e66ed4078..f9654ef71cb 100644
--- a/lisp/progmodes/octave-hlp.el
+++ b/lisp/progmodes/octave-hlp.el
@@ -3,9 +3,9 @@
;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005
;; Free Software Foundation, Inc.
-;; Author: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>
+;; Author: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
;; Author: John Eaton <jwe@bevo.che.wisc.edu>
-;; Maintainer: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>
+;; Maintainer: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
;; Keywords: languages
;; This file is part of GNU Emacs.
diff --git a/lisp/progmodes/octave-inf.el b/lisp/progmodes/octave-inf.el
index 40820c8c223..917016cf159 100644
--- a/lisp/progmodes/octave-inf.el
+++ b/lisp/progmodes/octave-inf.el
@@ -3,9 +3,9 @@
;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005
;; Free Software Foundation, Inc.
-;; Author: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>
+;; Author: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
;; Author: John Eaton <jwe@bevo.che.wisc.edu>
-;; Maintainer: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>
+;; Maintainer: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
;; Keywords: languages
;; This file is part of GNU Emacs.
diff --git a/lisp/progmodes/octave-mod.el b/lisp/progmodes/octave-mod.el
index febd3cc4fa8..e37f3b14a15 100644
--- a/lisp/progmodes/octave-mod.el
+++ b/lisp/progmodes/octave-mod.el
@@ -3,9 +3,9 @@
;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005
;; Free Software Foundation, Inc.
-;; Author: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>
+;; Author: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
;; Author: John Eaton <jwe@bevo.che.wisc.edu>
-;; Maintainer: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>
+;; Maintainer: Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>
;; Keywords: languages
;; This file is part of GNU Emacs.
@@ -52,7 +52,7 @@
(defvar inferior-octave-receive-in-progress nil)
(defconst octave-maintainer-address
- "Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at>, bug-gnu-emacs@gnu.org"
+ "Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>, bug-gnu-emacs@gnu.org"
"Current maintainer of the Emacs Octave package.")
(defvar octave-abbrev-table nil
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index 9c9db9aab30..25a414e69d2 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -107,6 +107,10 @@
(eval-when-compile (require 'cl))
+(defvar font-lock-comment-face)
+(defvar font-lock-doc-face)
+(defvar font-lock-string-face)
+
(defgroup perl nil
"Major mode for editing Perl code."
:prefix "perl-"
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index 0e2d8d94724..d23dbad0762 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -31,6 +31,9 @@
;;; Code:
+(defvar comint-prompt-regexp)
+
+
(defgroup prolog nil
"Major mode for editing and running Prolog under Emacs."
:group 'languages)
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index f5431431902..433476f7957 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -67,7 +67,6 @@
(eval-when-compile
(require 'compile)
(autoload 'info-lookup-maybe-add-help "info-look"))
-(autoload 'compilation-start "compile")
(defgroup python nil
"Silly walks in the Python language."
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index aeb09927535..d39cc4b7281 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -199,6 +199,9 @@
(require 'comint))
(require 'executable)
+(defvar font-lock-comment-face)
+(defvar font-lock-set-defaults)
+(defvar font-lock-string-face)
(defgroup sh nil
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el
index 7e259dfb6e4..6d73abb1432 100644
--- a/lisp/progmodes/sql.el
+++ b/lisp/progmodes/sql.el
@@ -219,6 +219,10 @@
(eval-when-compile ;; needed in Emacs 19, 20
(setq max-specpdl-size 2000))
+(defvar font-lock-keyword-face)
+(defvar font-lock-set-defaults)
+(defvar font-lock-string-face)
+
;;; Allow customization
(defgroup SQL nil
@@ -2299,7 +2303,7 @@ hooks on `comint-input-filter-functions' are run. After each SQL
interpreter output, the hooks on `comint-output-filter-functions' are
run.
-Variable `sql-input-ring-file-name' controls the initialisation of the
+Variable `sql-input-ring-file-name' controls the initialization of the
input ring history.
Variables `comint-output-filter-functions', a hook, and
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 75f2bb56aa4..1caaa1f35b6 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -4,13 +4,14 @@
;; Authors: Reto Zimmermann <reto@gnu.org>
;; Rodney J. Whitby <software.vhdl-mode@rwhitby.net>
-;; Maintainer: FSF (Because Reto Zimmermann seems to have disappeared)
+;; Maintainer: Reto Zimmermann <reto@gnu.org>
;; Keywords: languages vhdl
+;; WWW: http://opensource.ethz.ch/emacs/vhdl-mode.html
-(defconst vhdl-version "3.32.12"
+(defconst vhdl-version "3.33.6"
"VHDL Mode version number.")
-(defconst vhdl-time-stamp "2003-02-28"
+(defconst vhdl-time-stamp "2005-08-30"
"VHDL Mode time stamp for last update.")
;; This file is part of GNU Emacs.
@@ -43,6 +44,8 @@
;; - Insertion of file headers
;; - Insertion of user-specified models
;; - Port translation / testbench generation
+;; - Structural composition
+;; - Configuration generation
;; - Sensitivity list updating
;; - File browser
;; - Design hierarchy browser
@@ -126,7 +129,15 @@
"Non-nil if XEmacs is used.")
;; Emacs 21+ handling
(defconst vhdl-emacs-21 (and (<= 21 emacs-major-version) (not vhdl-xemacs))
- "Non-nil if Emacs 21, 22, ... is used.")
+ "Non-nil if GNU Emacs 21, 22, ... is used.")
+(defconst vhdl-emacs-22 (and (<= 22 emacs-major-version) (not vhdl-xemacs))
+ "Non-nil if GNU Emacs 22, ... is used.")
+
+(defvar compilation-file-regexp-alist)
+(defvar itimer-version)
+(defvar lazy-lock-defer-contextually)
+(defvar lazy-lock-defer-on-scrolling)
+(defvar lazy-lock-defer-on-the-fly)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -174,7 +185,7 @@ Examples:
"Customizations for VHDL Mode."
:prefix "vhdl-"
:group 'languages
-; :version "20.4" ; comment out for XEmacs
+; :version "21.2" ; comment out for XEmacs
)
(defgroup vhdl-mode nil
@@ -222,7 +233,8 @@ Overrides local variable `indent-tabs-mode'."
("Cadence NC" "ncvhdl" "-work \\1" "make" "-f \\1"
nil "mkdir \\1" "./" "work/" "Makefile" "ncvhdl"
("ncvhdl_p: \\*E,\\w+ (\\(.+\\),\\([0-9]+\\)|\\([0-9]+\\)):" 1 2 3) ("" 0)
- nil)
+ ("\\1/entity/pc.db" "\\2/\\1/pc.db" "\\1/configuration/pc.db"
+ "\\1/package/pc.db" "\\1/body/pc.db" downcase))
;; Ikos Voyager: analyze test.vhd
;; analyze test.vhd
;; E L4/C5: this library unit is inaccessible
@@ -337,7 +349,7 @@ Compiler:
Makefile name : name of Makefile (default is \"Makefile\")
ID string : compiler identification string (see `vhdl-project-alist')
Error message:
- Regexp : regular expression to match error messages
+ Regexp : regular expression to match error messages (*)
File subexp index: index of subexpression that matches the file name
Line subexp index: index of subexpression that matches the line number
Column subexp idx: index of subexpression that matches the column number
@@ -350,6 +362,9 @@ Unit-to-file name mapping: mapping of library unit names to names of files
\"\\2\" inserts the entity name for architectures)
Case adjustment : adjust case of inserted unit names
+\(*) The regular expression must match the error message starting from the
+ beginning of the line (but not necessarily to the end of the line).
+
Compile options allows insertion of the library name (see `vhdl-project-alist')
in order to set the compilers library option (e.g. \"vcom -work my_lib\").
@@ -379,8 +394,8 @@ assigning its name to option `vhdl-compiler'.
Please send any missing or erroneous compiler properties to the maintainer for
updating.
-NOTE: Reflect the new setting in the choice list of option `vhdl-compiler'
- by restarting Emacs."
+NOTE: Activate new error and file message regexps and reflect the new setting
+ in the choice list of option `vhdl-compiler' by restarting Emacs."
:type '(repeat
(list :tag "Compiler" :indent 2
(string :tag "Compiler name ")
@@ -420,7 +435,7 @@ NOTE: Reflect the new setting in the choice list of option `vhdl-compiler'
(const :tag "Upcase" upcase)
(const :tag "Downcase" downcase))))))
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-update-mode-menu))
+ (vhdl-custom-set variable value 'vhdl-update-mode-menu))
:group 'vhdl-compile)
(defcustom vhdl-compiler "ModelSim"
@@ -583,7 +598,7 @@ NOTE: Reflect the new setting in the choice list of option `vhdl-project'
(string :tag "Description: (type `C-j' for newline)"
:format "%t\n%v\n")))
:set (lambda (variable value)
- (vhdl-custom-set variable value
+ (vhdl-custom-set variable value
'vhdl-update-mode-menu
'vhdl-speedbar-refresh))
:group 'vhdl-project)
@@ -660,7 +675,7 @@ NOTE: Activate the new setting in a VHDL buffer by using the menu entry
(const :tag "VHDL-AMS" ams)
(const :tag "Math packages" math)))
:set (lambda (variable value)
- (vhdl-custom-set variable value
+ (vhdl-custom-set variable value
'vhdl-template-map-init
'vhdl-mode-abbrev-table-init
'vhdl-template-construct-alist-init
@@ -680,7 +695,7 @@ This value is used by + and - symbols in `vhdl-offsets-alist'."
This is done when typed or expanded or by the fix case functions."
:type 'boolean
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-abbrev-list-init))
+ (vhdl-custom-set variable value 'vhdl-abbrev-list-init))
:group 'vhdl-style)
(defcustom vhdl-upper-case-types nil
@@ -688,7 +703,7 @@ This is done when typed or expanded or by the fix case functions."
This is done when expanded or by the fix case functions."
:type 'boolean
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-abbrev-list-init))
+ (vhdl-custom-set variable value 'vhdl-abbrev-list-init))
:group 'vhdl-style)
(defcustom vhdl-upper-case-attributes nil
@@ -696,7 +711,7 @@ This is done when expanded or by the fix case functions."
This is done when expanded or by the fix case functions."
:type 'boolean
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-abbrev-list-init))
+ (vhdl-custom-set variable value 'vhdl-abbrev-list-init))
:group 'vhdl-style)
(defcustom vhdl-upper-case-enum-values nil
@@ -704,7 +719,7 @@ This is done when expanded or by the fix case functions."
This is done when expanded or by the fix case functions."
:type 'boolean
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-abbrev-list-init))
+ (vhdl-custom-set variable value 'vhdl-abbrev-list-init))
:group 'vhdl-style)
(defcustom vhdl-upper-case-constants t
@@ -712,7 +727,7 @@ This is done when expanded or by the fix case functions."
This is done when expanded."
:type 'boolean
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-abbrev-list-init))
+ (vhdl-custom-set variable value 'vhdl-abbrev-list-init))
:group 'vhdl-style)
(defcustom vhdl-use-direct-instantiation 'standard
@@ -747,9 +762,22 @@ taken from the file name of the current buffer."
"*Specifies how the architecture file name is obtained.
The architecture file name can be obtained by modifying the entity
and/or architecture name (e.g. attaching or stripping off a substring). The
-string that is matched against the regexp is the concatenation of the entity
-and the architecture name separated by a space. This gives access to both
-names (see default setting as example)."
+file extension is automatically taken from the file name of the current
+buffer. The string that is matched against the regexp is the concatenation
+of the entity and the architecture name separated by a space. This gives
+access to both names (see default setting as example)."
+ vhdl-name-doc-string)
+ :type '(cons (regexp :tag "From regexp")
+ (string :tag "To string "))
+ :group 'vhdl-naming
+ :group 'vhdl-compose)
+
+(defcustom vhdl-configuration-file-name '(".*" . "\\&")
+ (concat
+ "*Specifies how the configuration file name is obtained.
+The configuration file name can be obtained by modifying the configuration
+name (e.g. attaching or stripping off a substring). The file extension is
+automatically taken from the file name of the current buffer."
vhdl-name-doc-string)
:type '(cons (regexp :tag "From regexp")
(string :tag "To string "))
@@ -761,7 +789,9 @@ names (see default setting as example)."
"*Specifies how the package file name is obtained.
The package file name can be obtained by modifying the package name (e.g.
attaching or stripping off a substring). The file extension is automatically
-taken from the file name of the current buffer."
+taken from the file name of the current buffer. Package files can be created
+in a different directory by prepending a relative or absolute path to the
+file name."
vhdl-name-doc-string)
:type '(cons (regexp :tag "From regexp")
(string :tag "To string "))
@@ -795,7 +825,7 @@ follows:
:type '(set (const :tag "VHDL keywords" vhdl)
(const :tag "User model keywords" user))
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-mode-abbrev-table-init))
+ (vhdl-custom-set variable value 'vhdl-mode-abbrev-table-init))
:group 'vhdl-template)
(defcustom vhdl-optional-labels 'process
@@ -1029,7 +1059,7 @@ begin -- process <label>
<cursor>
elsif <clock>'event and <clock> = '1' then -- rising clock edge
if <enable> = '1' then -- synchronous load
-
+
end if;
end if;
end process <label>;"
@@ -1069,7 +1099,7 @@ NOTE: Activate the new setting in a VHDL buffer by using the menu entry
(sexp :tag "Key binding" x)
(string :tag "Keyword " :format "%t: %v\n")))
:set (lambda (variable value)
- (vhdl-custom-set variable value
+ (vhdl-custom-set variable value
'vhdl-model-map-init
'vhdl-model-defun
'vhdl-mode-abbrev-table-init
@@ -1077,6 +1107,99 @@ NOTE: Activate the new setting in a VHDL buffer by using the menu entry
:group 'vhdl-model)
+(defgroup vhdl-compose nil
+ "Customizations for structural composition."
+ :group 'vhdl)
+
+(defcustom vhdl-compose-architecture-name '(".*" . "str")
+ (concat
+ "*Specifies how the component architecture name is obtained.
+The component architecture name can be obtained by modifying the entity name
+\(e.g. attaching or stripping off a substring).
+If TO STRING is empty, the architecture name is queried."
+ vhdl-name-doc-string)
+ :type '(cons (regexp :tag "From regexp")
+ (string :tag "To string "))
+ :group 'vhdl-compose)
+
+(defcustom vhdl-compose-configuration-name
+ '("\\(.*\\) \\(.*\\)" . "\\1_\\2_cfg")
+ (concat
+ "*Specifies how the configuration name is obtained.
+The configuration name can be obtained by modifying the entity and/or
+architecture name (e.g. attaching or stripping off a substring). The string
+that is matched against the regexp is the concatenation of the entity and the
+architecture name separated by a space. This gives access to both names (see
+default setting as example)."
+ vhdl-name-doc-string)
+ :type '(cons (regexp :tag "From regexp")
+ (string :tag "To string "))
+ :group 'vhdl-compose)
+
+(defcustom vhdl-components-package-name
+ '((".*" . "\\&_components") . "components")
+ (concat
+ "*Specifies how the name for the components package is obtained.
+The components package is a package containing all component declarations for
+the current design. It's name can be obtained by modifying the project name
+\(e.g. attaching or stripping off a substring). If no project is defined, the
+DIRECTORY entry is chosen."
+ vhdl-name-doc-string)
+ :type '(cons (cons :tag "Project" :indent 2
+ (regexp :tag "From regexp")
+ (string :tag "To string "))
+ (string :tag "Directory:\n String "))
+ :group 'vhdl-compose)
+
+(defcustom vhdl-use-components-package nil
+ "*Non-nil means use a separate components package for component declarations.
+Otherwise, component declarations are inserted and searched for in the
+architecture declarative parts."
+ :type 'boolean
+ :group 'vhdl-compose)
+
+(defcustom vhdl-compose-include-header t
+ "*Non-nil means include a header in automatically generated files."
+ :type 'boolean
+ :group 'vhdl-compose)
+
+(defcustom vhdl-compose-create-files 'single
+ "*Specifies whether new files should be created for the new component.
+The component's entity and architecture are inserted:
+ None : in current buffer
+ Single file : in new single file
+ Separate files: in two separate files
+The file names are obtained from variables `vhdl-entity-file-name' and
+`vhdl-architecture-file-name'."
+ :type '(choice (const :tag "None" none)
+ (const :tag "Single file" single)
+ (const :tag "Separate files" separate))
+ :group 'vhdl-compose)
+
+(defcustom vhdl-compose-configuration-create-file nil
+ "*Specifies whether a new file should be created for the configuration.
+If non-nil, a new file is created for the configuration.
+The file name is obtained from variable `vhdl-configuration-file-name'."
+ :type 'boolean
+ :group 'vhdl-compose)
+
+(defcustom vhdl-compose-configuration-hierarchical t
+ "*Specifies whether hierarchical configurations should be created.
+If non-nil, automatically created configurations are hierarchical and include
+the whole hierarchy of subcomponents. Otherwise the configuration only
+includes one level of subcomponents."
+ :type 'boolean
+ :group 'vhdl-compose)
+
+(defcustom vhdl-compose-configuration-use-subconfiguration t
+ "*Specifies whether subconfigurations should be used inside configurations.
+If non-nil, automatically created configurations use configurations in binding
+indications for subcomponents, if such configurations exist. Otherwise,
+entities are used in binding indications for subcomponents."
+ :type 'boolean
+ :group 'vhdl-compose)
+
+
(defgroup vhdl-port nil
"Customizations for port translation functions."
:group 'vhdl
@@ -1156,8 +1279,7 @@ If TO STRING is empty, the architecture name is queried."
(string :tag "To string "))
:group 'vhdl-testbench)
-(defcustom vhdl-testbench-configuration-name
- '("\\(.*\\) \\(.*\\)" . "\\1_\\2_cfg")
+(defcustom vhdl-testbench-configuration-name vhdl-compose-configuration-name
(concat
"*Specifies how the testbench configuration name is obtained.
The configuration name of a testbench can be obtained by modifying the entity
@@ -1206,7 +1328,7 @@ Type `C-j' for newlines."
WaveGen_Proc: process
begin
-- insert signal assignments here
-
+
wait until Clk = '1';
end process WaveGen_Proc;
"
@@ -1239,67 +1361,40 @@ testbench entity and architecture are inserted:
None : in current buffer
Single file : in new single file
Separate files: in two separate files
-Note that the files have the same name as the contained design unit."
+The file names are obtained from variables `vhdl-testbench-entity-file-name'
+and `vhdl-testbench-architecture-file-name'."
:type '(choice (const :tag "None" none)
(const :tag "Single file" single)
(const :tag "Separate files" separate))
:group 'vhdl-testbench)
-
-(defgroup vhdl-compose nil
- "Customizations for structural composition."
- :group 'vhdl)
-
-(defcustom vhdl-compose-create-files 'single
- "*Specifies whether new files should be created for the new component.
-The component's entity and architecture are inserted:
- None : in current buffer
- Single file : in new single file
- Separate files: in two separate files
-The file names are obtained from variables `vhdl-entity-file-name' and
-`vhdl-architecture-file-name'."
- :type '(choice (const :tag "None" none)
- (const :tag "Single file" single)
- (const :tag "Separate files" separate))
- :group 'vhdl-compose)
-
-(defcustom vhdl-compose-include-header t
- "*Non-nil means include a header in automatically generated files."
- :type 'boolean
- :group 'vhdl-compose)
-
-(defcustom vhdl-compose-architecture-name '(".*" . "str")
+(defcustom vhdl-testbench-entity-file-name vhdl-entity-file-name
(concat
- "*Specifies how the component architecture name is obtained.
-The component architecture name can be obtained by modifying the entity name
-\(e.g. attaching or stripping off a substring).
-If TO STRING is empty, the architecture name is queried."
+ "*Specifies how the testbench entity file name is obtained.
+The entity file name can be obtained by modifying the testbench entity name
+\(e.g. attaching or stripping off a substring). The file extension is
+automatically taken from the file name of the current buffer. Testbench
+files can be created in a different directory by prepending a relative or
+absolute path to the file name."
vhdl-name-doc-string)
:type '(cons (regexp :tag "From regexp")
(string :tag "To string "))
- :group 'vhdl-compose)
+ :group 'vhdl-testbench)
-(defcustom vhdl-components-package-name
- '((".*" . "\\&_components") . "components")
+(defcustom vhdl-testbench-architecture-file-name vhdl-architecture-file-name
(concat
- "*Specifies how the name for the components package is obtained.
-The components package is a package containing all component declarations for
-the current design. Its name can be obtained by modifying the project name
-\(e.g. attaching or stripping off a substring). If no project is defined, the
-DIRECTORY entry is chosen."
+ "*Specifies how the testbench architecture file name is obtained.
+The architecture file name can be obtained by modifying the testbench entity
+and/or architecture name (e.g. attaching or stripping off a substring). The
+string that is matched against the regexp is the concatenation of the entity
+and the architecture name separated by a space. This gives access to both
+names (see default setting as example). Testbench files can be created in
+a different directory by prepending a relative or absolute path to the file
+name."
vhdl-name-doc-string)
- :type '(cons (cons :tag "Project" :indent 2
- (regexp :tag "From regexp")
- (string :tag "To string "))
- (string :tag "Directory:\n String "))
- :group 'vhdl-compose)
-
-(defcustom vhdl-use-components-package nil
- "*Non-nil means use a separate components package for component declarations.
-Otherwise, component declarations are inserted and searched for in the
-architecture declarative parts."
- :type 'boolean
- :group 'vhdl-compose)
+ :type '(cons (regexp :tag "From regexp")
+ (string :tag "To string "))
+ :group 'vhdl-testbench)
(defgroup vhdl-comment nil
@@ -1378,17 +1473,17 @@ Option `vhdl-align-groups' still applies within these blocks."
(defcustom vhdl-highlight-keywords t
"*Non-nil means highlight VHDL keywords and other standardized words.
The following faces are used:
- `font-lock-keyword-face' : keywords
- `font-lock-type' : standardized types
- `vhdl-attribute' : standardized attributes
- `vhdl-enumvalue' : standardized enumeration values
- `vhdl-function' : standardized function and package names
+ `font-lock-keyword-face' : keywords
+ `font-lock-type-face' : standardized types
+ `vhdl-font-lock-attribute-face': standardized attributes
+ `vhdl-font-lock-enumvalue-face': standardized enumeration values
+ `vhdl-font-lock-function-face' : standardized function and package names
NOTE: Activate the new setting in a VHDL buffer by re-fontifying it (menu
entry \"Fontify Buffer\")."
:type 'boolean
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-font-lock-init))
+ (vhdl-custom-set variable value 'vhdl-font-lock-init))
:group 'vhdl-highlight)
(defcustom vhdl-highlight-names t
@@ -1397,7 +1492,7 @@ The following faces are used:
`font-lock-function-name-face' : names in declarations of units,
subprograms, components, as well as labels of VHDL constructs
`font-lock-type-face' : names in type/nature declarations
- `vhdl-attribute' : names in attribute declarations
+ `vhdl-font-lock-attribute-face': names in attribute declarations
`font-lock-variable-name-face' : names in declarations of signals,
variables, constants, subprogram parameters, generics, and ports
@@ -1405,7 +1500,7 @@ NOTE: Activate the new setting in a VHDL buffer by re-fontifying it (menu
entry \"Fontify Buffer\")."
:type 'boolean
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-font-lock-init))
+ (vhdl-custom-set variable value 'vhdl-font-lock-init))
:group 'vhdl-highlight)
(defcustom vhdl-highlight-special-words nil
@@ -1418,34 +1513,34 @@ NOTE: Activate the new setting in a VHDL buffer by re-fontifying it (menu
entry \"Fontify Buffer\")."
:type 'boolean
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-font-lock-init))
+ (vhdl-custom-set variable value 'vhdl-font-lock-init))
:group 'vhdl-highlight)
(defcustom vhdl-highlight-forbidden-words nil
"*Non-nil means highlight forbidden words.
The reserved words specified in option `vhdl-forbidden-words' or having the
syntax specified in option `vhdl-forbidden-syntax' are highlighted in a
-warning color (face `vhdl-reserved-word') to indicate not to
+warning color (face `vhdl-font-lock-reserved-words-face') to indicate not to
use them.
NOTE: Activate the new setting in a VHDL buffer by re-fontifying it (menu
entry \"Fontify Buffer\")."
:type 'boolean
:set (lambda (variable value)
- (vhdl-custom-set variable value
+ (vhdl-custom-set variable value
'vhdl-words-init 'vhdl-font-lock-init))
:group 'vhdl-highlight)
(defcustom vhdl-highlight-verilog-keywords nil
"*Non-nil means highlight Verilog keywords as reserved words.
Verilog keywords are highlighted in a warning color (face
-`vhdl-reserved-word') to indicate not to use them.
+`vhdl-font-lock-reserved-words-face') to indicate not to use them.
NOTE: Activate the new setting in a VHDL buffer by re-fontifying it (menu
entry \"Fontify Buffer\")."
:type 'boolean
:set (lambda (variable value)
- (vhdl-custom-set variable value
+ (vhdl-custom-set variable value
'vhdl-words-init 'vhdl-font-lock-init))
:group 'vhdl-highlight)
@@ -1453,14 +1548,14 @@ NOTE: Activate the new setting in a VHDL buffer by re-fontifying it (menu
"*Non-nil means background-highlight code excluded from translation.
That is, all code between \"-- pragma translate_off\" and
\"-- pragma translate_on\" is highlighted using a different background color
-\(face `vhdl-translate-off').
+\(face `vhdl-font-lock-translate-off-face').
Note: this might slow down on-the-fly fontification (and thus editing).
NOTE: Activate the new setting in a VHDL buffer by re-fontifying it (menu
entry \"Fontify Buffer\")."
:type 'boolean
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-font-lock-init))
+ (vhdl-custom-set variable value 'vhdl-font-lock-init))
:group 'vhdl-highlight)
(defcustom vhdl-highlight-case-sensitive nil
@@ -1500,7 +1595,7 @@ different kinds of signals (e.g. \"Clk50\", \"Rst_n\") or objects (e.g.
\"Signal_s\", \"Variable_v\", \"Constant_c\") by distinguishing them using
common substrings or name suffices.
For each entry, a new face is generated with the specified colors and name
-\"vhdl-\" + name.
+\"vhdl-font-lock-\" + name + \"-face\".
NOTE: Activate a changed regexp in a VHDL buffer by re-fontifying it (menu
entry \"Fontify Buffer\"). All other changes require restarting Emacs."
@@ -1510,7 +1605,7 @@ NOTE: Activate a changed regexp in a VHDL buffer by re-fontifying it (menu
(string :tag "Color (light)")
(string :tag "Color (dark) ")))
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-font-lock-init))
+ (vhdl-custom-set variable value 'vhdl-font-lock-init))
:group 'vhdl-highlight)
(defcustom vhdl-forbidden-words '()
@@ -1522,7 +1617,7 @@ NOTE: Activate the new setting in a VHDL buffer by re-fontifying it (menu
entry \"Fontify Buffer\")."
:type '(repeat (string :format "%v"))
:set (lambda (variable value)
- (vhdl-custom-set variable value
+ (vhdl-custom-set variable value
'vhdl-words-init 'vhdl-font-lock-init))
:group 'vhdl-highlight)
@@ -1537,7 +1632,7 @@ NOTE: Activate the new setting in a VHDL buffer by re-fontifying it (menu
entry \"Fontify Buffer\")."
:type 'regexp
:set (lambda (variable value)
- (vhdl-custom-set variable value
+ (vhdl-custom-set variable value
'vhdl-words-init 'vhdl-font-lock-init))
:group 'vhdl-highlight)
@@ -1733,7 +1828,7 @@ NOTE: Activate the new setting in a VHDL buffer by using the menu entry
\"Activate Options\"."
:type 'boolean
:set (lambda (variable value)
- (vhdl-custom-set variable value 'vhdl-mode-syntax-table-init))
+ (vhdl-custom-set variable value 'vhdl-mode-syntax-table-init))
:group 'vhdl-misc)
@@ -1779,24 +1874,25 @@ reported and the syntactic symbol is ignored.")
"*If non-nil, syntactic info is echoed when the line is indented.")
(defconst vhdl-offsets-alist-default
- '((string . -1000)
- (block-open . 0)
- (block-close . 0)
- (statement . 0)
- (statement-cont . vhdl-lineup-statement-cont)
+ '((string . -1000)
+ (cpp-macro . -1000)
+ (block-open . 0)
+ (block-close . 0)
+ (statement . 0)
+ (statement-cont . vhdl-lineup-statement-cont)
(statement-block-intro . +)
(statement-case-intro . +)
- (case-alternative . +)
- (comment . vhdl-lineup-comment)
- (arglist-intro . +)
- (arglist-cont . 0)
+ (case-alternative . +)
+ (comment . vhdl-lineup-comment)
+ (arglist-intro . +)
+ (arglist-cont . 0)
(arglist-cont-nonempty . vhdl-lineup-arglist)
- (arglist-close . vhdl-lineup-arglist)
- (entity . 0)
- (configuration . 0)
- (package . 0)
- (architecture . 0)
- (package-body . 0)
+ (arglist-close . vhdl-lineup-arglist)
+ (entity . 0)
+ (configuration . 0)
+ (package . 0)
+ (architecture . 0)
+ (package-body . 0)
)
"Default settings for offsets of syntactic elements.
Do not change this constant! See the variable `vhdl-offsets-alist' for
@@ -2030,6 +2126,10 @@ Ignore byte-compiler warnings you might see."
(setq dirs (cdr dirs)))
contents)))
+;; `member-ignore-case' undefined (XEmacs)
+(unless (fboundp 'member-ignore-case)
+ (defalias 'member-ignore-case 'member))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Compatibility with older VHDL Mode versions
@@ -2569,25 +2669,25 @@ STRING are replaced by `-' and substrings are converted to lower case."
"Initialize `vhdl-mode-map'."
(setq vhdl-mode-map (make-sparse-keymap))
;; template key bindings
- (define-key vhdl-mode-map "\C-c\C-t" vhdl-template-map)
+ (define-key vhdl-mode-map "\C-c\C-t" vhdl-template-map)
;; model key bindings
- (define-key vhdl-mode-map "\C-c\C-m" vhdl-model-map)
+ (define-key vhdl-mode-map "\C-c\C-m" vhdl-model-map)
;; standard key bindings
- (define-key vhdl-mode-map "\M-a" 'vhdl-beginning-of-statement)
- (define-key vhdl-mode-map "\M-e" 'vhdl-end-of-statement)
- (define-key vhdl-mode-map "\M-\C-f" 'vhdl-forward-sexp)
- (define-key vhdl-mode-map "\M-\C-b" 'vhdl-backward-sexp)
- (define-key vhdl-mode-map "\M-\C-u" 'vhdl-backward-up-list)
- (define-key vhdl-mode-map "\M-\C-a" 'vhdl-backward-same-indent)
- (define-key vhdl-mode-map "\M-\C-e" 'vhdl-forward-same-indent)
+ (define-key vhdl-mode-map "\M-a" 'vhdl-beginning-of-statement)
+ (define-key vhdl-mode-map "\M-e" 'vhdl-end-of-statement)
+ (define-key vhdl-mode-map "\M-\C-f" 'vhdl-forward-sexp)
+ (define-key vhdl-mode-map "\M-\C-b" 'vhdl-backward-sexp)
+ (define-key vhdl-mode-map "\M-\C-u" 'vhdl-backward-up-list)
+ (define-key vhdl-mode-map "\M-\C-a" 'vhdl-backward-same-indent)
+ (define-key vhdl-mode-map "\M-\C-e" 'vhdl-forward-same-indent)
(unless vhdl-xemacs ; would override `M-backspace' in XEmacs
- (define-key vhdl-mode-map "\M-\C-h" 'vhdl-mark-defun))
- (define-key vhdl-mode-map "\M-\C-q" 'vhdl-indent-sexp)
- (define-key vhdl-mode-map "\M-^" 'vhdl-delete-indentation)
+ (define-key vhdl-mode-map "\M-\C-h" 'vhdl-mark-defun))
+ (define-key vhdl-mode-map "\M-\C-q" 'vhdl-indent-sexp)
+ (define-key vhdl-mode-map "\M-^" 'vhdl-delete-indentation)
;; backspace/delete key bindings
- (define-key vhdl-mode-map [backspace] 'backward-delete-char-untabify)
+ (define-key vhdl-mode-map [backspace] 'backward-delete-char-untabify)
(unless (boundp 'delete-key-deletes-forward) ; XEmacs variable
- (define-key vhdl-mode-map [delete] 'delete-char)
+ (define-key vhdl-mode-map [delete] 'delete-char)
(define-key vhdl-mode-map [(meta delete)] 'kill-word))
;; mode specific key bindings
(define-key vhdl-mode-map "\C-c\C-m\C-e" 'vhdl-electric-mode)
@@ -2597,7 +2697,7 @@ STRING are replaced by `-' and substrings are converted to lower case."
(define-key vhdl-mode-map "\C-c\C-p\C-m" 'vhdl-import-project)
(define-key vhdl-mode-map "\C-c\C-p\C-x" 'vhdl-export-project)
(define-key vhdl-mode-map "\C-c\C-s\C-k" 'vhdl-set-compiler)
- (define-key vhdl-mode-map "\C-c\C-k" 'vhdl-compile)
+ (define-key vhdl-mode-map "\C-c\C-k" 'vhdl-compile)
(define-key vhdl-mode-map "\C-c\M-\C-k" 'vhdl-make)
(define-key vhdl-mode-map "\C-c\M-k" 'vhdl-generate-makefile)
(define-key vhdl-mode-map "\C-c\C-p\C-w" 'vhdl-port-copy)
@@ -2623,13 +2723,14 @@ STRING are replaced by `-' and substrings are converted to lower case."
(define-key vhdl-mode-map "\C-c\C-c\C-n" 'vhdl-compose-new-component)
(define-key vhdl-mode-map "\C-c\C-c\C-p" 'vhdl-compose-place-component)
(define-key vhdl-mode-map "\C-c\C-c\C-w" 'vhdl-compose-wire-components)
+ (define-key vhdl-mode-map "\C-c\C-c\C-f" 'vhdl-compose-configuration)
(define-key vhdl-mode-map "\C-c\C-c\C-k" 'vhdl-compose-components-package)
(define-key vhdl-mode-map "\C-cc" 'vhdl-comment-uncomment-region)
- (define-key vhdl-mode-map "\C-c-" 'vhdl-comment-append-inline)
- (define-key vhdl-mode-map "\C-c\M--" 'vhdl-comment-display-line)
+ (define-key vhdl-mode-map "\C-c-" 'vhdl-comment-append-inline)
+ (define-key vhdl-mode-map "\C-c\M--" 'vhdl-comment-display-line)
(define-key vhdl-mode-map "\C-c\C-i\C-l" 'indent-according-to-mode)
(define-key vhdl-mode-map "\C-c\C-i\C-g" 'vhdl-indent-group)
- (define-key vhdl-mode-map "\M-\C-\\" 'vhdl-indent-region)
+ (define-key vhdl-mode-map "\M-\C-\\" 'vhdl-indent-region)
(define-key vhdl-mode-map "\C-c\C-i\C-b" 'vhdl-indent-buffer)
(define-key vhdl-mode-map "\C-c\C-a\C-g" 'vhdl-align-group)
(define-key vhdl-mode-map "\C-c\C-a\C-a" 'vhdl-align-group)
@@ -2659,38 +2760,35 @@ STRING are replaced by `-' and substrings are converted to lower case."
(define-key vhdl-mode-map "\C-c\C-x\C-c" 'vhdl-fix-case-buffer)
(define-key vhdl-mode-map "\C-c\C-x\M-w" 'vhdl-fixup-whitespace-region)
(define-key vhdl-mode-map "\C-c\C-x\C-w" 'vhdl-fixup-whitespace-buffer)
- (define-key vhdl-mode-map "\C-c\M-b" 'vhdl-beautify-region)
- (define-key vhdl-mode-map "\C-c\C-b" 'vhdl-beautify-buffer)
+ (define-key vhdl-mode-map "\C-c\M-b" 'vhdl-beautify-region)
+ (define-key vhdl-mode-map "\C-c\C-b" 'vhdl-beautify-buffer)
(define-key vhdl-mode-map "\C-c\C-u\C-s" 'vhdl-update-sensitivity-list-process)
(define-key vhdl-mode-map "\C-c\C-u\M-s" 'vhdl-update-sensitivity-list-buffer)
- (define-key vhdl-mode-map "\C-cf" 'vhdl-fontify-buffer)
- (define-key vhdl-mode-map "\C-cs" 'vhdl-statistics-buffer)
- (define-key vhdl-mode-map "\C-c\M-m" 'vhdl-show-messages)
- (define-key vhdl-mode-map "\C-c\C-h" 'vhdl-doc-mode)
- (define-key vhdl-mode-map "\C-c\C-v" 'vhdl-version)
- (define-key vhdl-mode-map "\M-\t" 'insert-tab)
+ (define-key vhdl-mode-map "\C-cf" 'vhdl-fontify-buffer)
+ (define-key vhdl-mode-map "\C-cs" 'vhdl-statistics-buffer)
+ (define-key vhdl-mode-map "\C-c\M-m" 'vhdl-show-messages)
+ (define-key vhdl-mode-map "\C-c\C-h" 'vhdl-doc-mode)
+ (define-key vhdl-mode-map "\C-c\C-v" 'vhdl-version)
+ (define-key vhdl-mode-map "\M-\t" 'insert-tab)
;; insert commands bindings
(define-key vhdl-mode-map "\C-c\C-i\C-t" 'vhdl-template-insert-construct)
(define-key vhdl-mode-map "\C-c\C-i\C-p" 'vhdl-template-insert-package)
(define-key vhdl-mode-map "\C-c\C-i\C-d" 'vhdl-template-insert-directive)
(define-key vhdl-mode-map "\C-c\C-i\C-m" 'vhdl-model-insert)
;; electric key bindings
- (define-key vhdl-mode-map " " 'vhdl-electric-space)
- (if vhdl-intelligent-tab
- (define-key vhdl-mode-map "\t" 'vhdl-electric-tab)
- ;; The default binding of TAB already calls `indent-according-to-mode'.
- ;; (define-key vhdl-mode-map "\t" 'indent-according-to-mode)
- )
- (define-key vhdl-mode-map "\r" 'vhdl-electric-return)
- (define-key vhdl-mode-map "-" 'vhdl-electric-dash)
- (define-key vhdl-mode-map "[" 'vhdl-electric-open-bracket)
- (define-key vhdl-mode-map "]" 'vhdl-electric-close-bracket)
- (define-key vhdl-mode-map "'" 'vhdl-electric-quote)
- (define-key vhdl-mode-map ";" 'vhdl-electric-semicolon)
- (define-key vhdl-mode-map "," 'vhdl-electric-comma)
- (define-key vhdl-mode-map "." 'vhdl-electric-period)
+ (define-key vhdl-mode-map " " 'vhdl-electric-space)
+ (when vhdl-intelligent-tab
+ (define-key vhdl-mode-map "\t" 'vhdl-electric-tab))
+ (define-key vhdl-mode-map "\r" 'vhdl-electric-return)
+ (define-key vhdl-mode-map "-" 'vhdl-electric-dash)
+ (define-key vhdl-mode-map "[" 'vhdl-electric-open-bracket)
+ (define-key vhdl-mode-map "]" 'vhdl-electric-close-bracket)
+ (define-key vhdl-mode-map "'" 'vhdl-electric-quote)
+ (define-key vhdl-mode-map ";" 'vhdl-electric-semicolon)
+ (define-key vhdl-mode-map "," 'vhdl-electric-comma)
+ (define-key vhdl-mode-map "." 'vhdl-electric-period)
(when (vhdl-standard-p 'ams)
- (define-key vhdl-mode-map "=" 'vhdl-electric-equal)))
+ (define-key vhdl-mode-map "=" 'vhdl-electric-equal)))
;; initialize mode map for VHDL Mode
(vhdl-mode-map-init)
@@ -2795,134 +2893,134 @@ STRING are replaced by `-' and substrings are converted to lower case."
(when (memq 'vhdl vhdl-electric-keywords)
;; VHDL'93 keywords
'(
- ("--" "" vhdl-template-display-comment-hook 0 t)
- ("abs" "" vhdl-template-default-hook 0 t)
- ("access" "" vhdl-template-default-hook 0 t)
- ("after" "" vhdl-template-default-hook 0 t)
- ("alias" "" vhdl-template-alias-hook 0 t)
- ("all" "" vhdl-template-default-hook 0 t)
- ("and" "" vhdl-template-default-hook 0 t)
- ("arch" "" vhdl-template-architecture-hook 0 t)
- ("architecture" "" vhdl-template-architecture-hook 0 t)
- ("array" "" vhdl-template-default-hook 0 t)
- ("assert" "" vhdl-template-assert-hook 0 t)
- ("attr" "" vhdl-template-attribute-hook 0 t)
- ("attribute" "" vhdl-template-attribute-hook 0 t)
- ("begin" "" vhdl-template-default-indent-hook 0 t)
- ("block" "" vhdl-template-block-hook 0 t)
- ("body" "" vhdl-template-default-hook 0 t)
- ("buffer" "" vhdl-template-default-hook 0 t)
- ("bus" "" vhdl-template-default-hook 0 t)
- ("case" "" vhdl-template-case-hook 0 t)
- ("comp" "" vhdl-template-component-hook 0 t)
- ("component" "" vhdl-template-component-hook 0 t)
- ("cond" "" vhdl-template-conditional-signal-asst-hook 0 t)
- ("conditional" "" vhdl-template-conditional-signal-asst-hook 0 t)
- ("conf" "" vhdl-template-configuration-hook 0 t)
- ("configuration" "" vhdl-template-configuration-hook 0 t)
- ("cons" "" vhdl-template-constant-hook 0 t)
- ("constant" "" vhdl-template-constant-hook 0 t)
- ("disconnect" "" vhdl-template-disconnect-hook 0 t)
- ("downto" "" vhdl-template-default-hook 0 t)
- ("else" "" vhdl-template-else-hook 0 t)
- ("elseif" "" vhdl-template-elsif-hook 0 t)
- ("elsif" "" vhdl-template-elsif-hook 0 t)
- ("end" "" vhdl-template-default-indent-hook 0 t)
- ("entity" "" vhdl-template-entity-hook 0 t)
- ("exit" "" vhdl-template-exit-hook 0 t)
- ("file" "" vhdl-template-file-hook 0 t)
- ("for" "" vhdl-template-for-hook 0 t)
- ("func" "" vhdl-template-function-hook 0 t)
- ("function" "" vhdl-template-function-hook 0 t)
- ("generic" "" vhdl-template-generic-hook 0 t)
- ("group" "" vhdl-template-group-hook 0 t)
- ("guarded" "" vhdl-template-default-hook 0 t)
- ("if" "" vhdl-template-if-hook 0 t)
- ("impure" "" vhdl-template-default-hook 0 t)
- ("in" "" vhdl-template-default-hook 0 t)
- ("inertial" "" vhdl-template-default-hook 0 t)
- ("inout" "" vhdl-template-default-hook 0 t)
- ("inst" "" vhdl-template-instance-hook 0 t)
- ("instance" "" vhdl-template-instance-hook 0 t)
- ("is" "" vhdl-template-default-hook 0 t)
- ("label" "" vhdl-template-default-hook 0 t)
- ("library" "" vhdl-template-library-hook 0 t)
- ("linkage" "" vhdl-template-default-hook 0 t)
- ("literal" "" vhdl-template-default-hook 0 t)
- ("loop" "" vhdl-template-bare-loop-hook 0 t)
- ("map" "" vhdl-template-map-hook 0 t)
- ("mod" "" vhdl-template-default-hook 0 t)
- ("nand" "" vhdl-template-default-hook 0 t)
- ("new" "" vhdl-template-default-hook 0 t)
- ("next" "" vhdl-template-next-hook 0 t)
- ("nor" "" vhdl-template-default-hook 0 t)
- ("not" "" vhdl-template-default-hook 0 t)
- ("null" "" vhdl-template-default-hook 0 t)
- ("of" "" vhdl-template-default-hook 0 t)
- ("on" "" vhdl-template-default-hook 0 t)
- ("open" "" vhdl-template-default-hook 0 t)
- ("or" "" vhdl-template-default-hook 0 t)
- ("others" "" vhdl-template-others-hook 0 t)
- ("out" "" vhdl-template-default-hook 0 t)
- ("pack" "" vhdl-template-package-hook 0 t)
- ("package" "" vhdl-template-package-hook 0 t)
- ("port" "" vhdl-template-port-hook 0 t)
- ("postponed" "" vhdl-template-default-hook 0 t)
- ("procedure" "" vhdl-template-procedure-hook 0 t)
- ("process" "" vhdl-template-process-hook 0 t)
- ("pure" "" vhdl-template-default-hook 0 t)
- ("range" "" vhdl-template-default-hook 0 t)
- ("record" "" vhdl-template-default-hook 0 t)
- ("register" "" vhdl-template-default-hook 0 t)
- ("reject" "" vhdl-template-default-hook 0 t)
- ("rem" "" vhdl-template-default-hook 0 t)
- ("report" "" vhdl-template-report-hook 0 t)
- ("return" "" vhdl-template-return-hook 0 t)
- ("rol" "" vhdl-template-default-hook 0 t)
- ("ror" "" vhdl-template-default-hook 0 t)
- ("select" "" vhdl-template-selected-signal-asst-hook 0 t)
- ("severity" "" vhdl-template-default-hook 0 t)
- ("shared" "" vhdl-template-default-hook 0 t)
- ("sig" "" vhdl-template-signal-hook 0 t)
- ("signal" "" vhdl-template-signal-hook 0 t)
- ("sla" "" vhdl-template-default-hook 0 t)
- ("sll" "" vhdl-template-default-hook 0 t)
- ("sra" "" vhdl-template-default-hook 0 t)
- ("srl" "" vhdl-template-default-hook 0 t)
- ("subtype" "" vhdl-template-subtype-hook 0 t)
- ("then" "" vhdl-template-default-hook 0 t)
- ("to" "" vhdl-template-default-hook 0 t)
- ("transport" "" vhdl-template-default-hook 0 t)
- ("type" "" vhdl-template-type-hook 0 t)
- ("unaffected" "" vhdl-template-default-hook 0 t)
- ("units" "" vhdl-template-default-hook 0 t)
- ("until" "" vhdl-template-default-hook 0 t)
- ("use" "" vhdl-template-use-hook 0 t)
- ("var" "" vhdl-template-variable-hook 0 t)
- ("variable" "" vhdl-template-variable-hook 0 t)
- ("wait" "" vhdl-template-wait-hook 0 t)
- ("when" "" vhdl-template-when-hook 0 t)
- ("while" "" vhdl-template-while-loop-hook 0 t)
- ("with" "" vhdl-template-with-hook 0 t)
- ("xnor" "" vhdl-template-default-hook 0 t)
- ("xor" "" vhdl-template-default-hook 0 t)
+ ("--" "" vhdl-template-display-comment-hook 0)
+ ("abs" "" vhdl-template-default-hook 0)
+ ("access" "" vhdl-template-default-hook 0)
+ ("after" "" vhdl-template-default-hook 0)
+ ("alias" "" vhdl-template-alias-hook 0)
+ ("all" "" vhdl-template-default-hook 0)
+ ("and" "" vhdl-template-default-hook 0)
+ ("arch" "" vhdl-template-architecture-hook 0)
+ ("architecture" "" vhdl-template-architecture-hook 0)
+ ("array" "" vhdl-template-default-hook 0)
+ ("assert" "" vhdl-template-assert-hook 0)
+ ("attr" "" vhdl-template-attribute-hook 0)
+ ("attribute" "" vhdl-template-attribute-hook 0)
+ ("begin" "" vhdl-template-default-indent-hook 0)
+ ("block" "" vhdl-template-block-hook 0)
+ ("body" "" vhdl-template-default-hook 0)
+ ("buffer" "" vhdl-template-default-hook 0)
+ ("bus" "" vhdl-template-default-hook 0)
+ ("case" "" vhdl-template-case-hook 0)
+ ("comp" "" vhdl-template-component-hook 0)
+ ("component" "" vhdl-template-component-hook 0)
+ ("cond" "" vhdl-template-conditional-signal-asst-hook 0)
+ ("conditional" "" vhdl-template-conditional-signal-asst-hook 0)
+ ("conf" "" vhdl-template-configuration-hook 0)
+ ("configuration" "" vhdl-template-configuration-hook 0)
+ ("cons" "" vhdl-template-constant-hook 0)
+ ("constant" "" vhdl-template-constant-hook 0)
+ ("disconnect" "" vhdl-template-disconnect-hook 0)
+ ("downto" "" vhdl-template-default-hook 0)
+ ("else" "" vhdl-template-else-hook 0)
+ ("elseif" "" vhdl-template-elsif-hook 0)
+ ("elsif" "" vhdl-template-elsif-hook 0)
+ ("end" "" vhdl-template-default-indent-hook 0)
+ ("entity" "" vhdl-template-entity-hook 0)
+ ("exit" "" vhdl-template-exit-hook 0)
+ ("file" "" vhdl-template-file-hook 0)
+ ("for" "" vhdl-template-for-hook 0)
+ ("func" "" vhdl-template-function-hook 0)
+ ("function" "" vhdl-template-function-hook 0)
+ ("generic" "" vhdl-template-generic-hook 0)
+ ("group" "" vhdl-template-group-hook 0)
+ ("guarded" "" vhdl-template-default-hook 0)
+ ("if" "" vhdl-template-if-hook 0)
+ ("impure" "" vhdl-template-default-hook 0)
+ ("in" "" vhdl-template-default-hook 0)
+ ("inertial" "" vhdl-template-default-hook 0)
+ ("inout" "" vhdl-template-default-hook 0)
+ ("inst" "" vhdl-template-instance-hook 0)
+ ("instance" "" vhdl-template-instance-hook 0)
+ ("is" "" vhdl-template-default-hook 0)
+ ("label" "" vhdl-template-default-hook 0)
+ ("library" "" vhdl-template-library-hook 0)
+ ("linkage" "" vhdl-template-default-hook 0)
+ ("literal" "" vhdl-template-default-hook 0)
+ ("loop" "" vhdl-template-bare-loop-hook 0)
+ ("map" "" vhdl-template-map-hook 0)
+ ("mod" "" vhdl-template-default-hook 0)
+ ("nand" "" vhdl-template-default-hook 0)
+ ("new" "" vhdl-template-default-hook 0)
+ ("next" "" vhdl-template-next-hook 0)
+ ("nor" "" vhdl-template-default-hook 0)
+ ("not" "" vhdl-template-default-hook 0)
+ ("null" "" vhdl-template-default-hook 0)
+ ("of" "" vhdl-template-default-hook 0)
+ ("on" "" vhdl-template-default-hook 0)
+ ("open" "" vhdl-template-default-hook 0)
+ ("or" "" vhdl-template-default-hook 0)
+ ("others" "" vhdl-template-others-hook 0)
+ ("out" "" vhdl-template-default-hook 0)
+ ("pack" "" vhdl-template-package-hook 0)
+ ("package" "" vhdl-template-package-hook 0)
+ ("port" "" vhdl-template-port-hook 0)
+ ("postponed" "" vhdl-template-default-hook 0)
+ ("procedure" "" vhdl-template-procedure-hook 0)
+ ("process" "" vhdl-template-process-hook 0)
+ ("pure" "" vhdl-template-default-hook 0)
+ ("range" "" vhdl-template-default-hook 0)
+ ("record" "" vhdl-template-default-hook 0)
+ ("register" "" vhdl-template-default-hook 0)
+ ("reject" "" vhdl-template-default-hook 0)
+ ("rem" "" vhdl-template-default-hook 0)
+ ("report" "" vhdl-template-report-hook 0)
+ ("return" "" vhdl-template-return-hook 0)
+ ("rol" "" vhdl-template-default-hook 0)
+ ("ror" "" vhdl-template-default-hook 0)
+ ("select" "" vhdl-template-selected-signal-asst-hook 0)
+ ("severity" "" vhdl-template-default-hook 0)
+ ("shared" "" vhdl-template-default-hook 0)
+ ("sig" "" vhdl-template-signal-hook 0)
+ ("signal" "" vhdl-template-signal-hook 0)
+ ("sla" "" vhdl-template-default-hook 0)
+ ("sll" "" vhdl-template-default-hook 0)
+ ("sra" "" vhdl-template-default-hook 0)
+ ("srl" "" vhdl-template-default-hook 0)
+ ("subtype" "" vhdl-template-subtype-hook 0)
+ ("then" "" vhdl-template-default-hook 0)
+ ("to" "" vhdl-template-default-hook 0)
+ ("transport" "" vhdl-template-default-hook 0)
+ ("type" "" vhdl-template-type-hook 0)
+ ("unaffected" "" vhdl-template-default-hook 0)
+ ("units" "" vhdl-template-default-hook 0)
+ ("until" "" vhdl-template-default-hook 0)
+ ("use" "" vhdl-template-use-hook 0)
+ ("var" "" vhdl-template-variable-hook 0)
+ ("variable" "" vhdl-template-variable-hook 0)
+ ("wait" "" vhdl-template-wait-hook 0)
+ ("when" "" vhdl-template-when-hook 0)
+ ("while" "" vhdl-template-while-loop-hook 0)
+ ("with" "" vhdl-template-with-hook 0)
+ ("xnor" "" vhdl-template-default-hook 0)
+ ("xor" "" vhdl-template-default-hook 0)
))
;; VHDL-AMS keywords
(when (and (memq 'vhdl vhdl-electric-keywords) (vhdl-standard-p 'ams))
'(
- ("across" "" vhdl-template-default-hook 0 t)
- ("break" "" vhdl-template-break-hook 0 t)
- ("limit" "" vhdl-template-limit-hook 0 t)
- ("nature" "" vhdl-template-nature-hook 0 t)
- ("noise" "" vhdl-template-default-hook 0 t)
- ("procedural" "" vhdl-template-procedural-hook 0 t)
- ("quantity" "" vhdl-template-quantity-hook 0 t)
- ("reference" "" vhdl-template-default-hook 0 t)
- ("spectrum" "" vhdl-template-default-hook 0 t)
- ("subnature" "" vhdl-template-subnature-hook 0 t)
- ("terminal" "" vhdl-template-terminal-hook 0 t)
- ("through" "" vhdl-template-default-hook 0 t)
- ("tolerance" "" vhdl-template-default-hook 0 t)
+ ("across" "" vhdl-template-default-hook 0)
+ ("break" "" vhdl-template-break-hook 0)
+ ("limit" "" vhdl-template-limit-hook 0)
+ ("nature" "" vhdl-template-nature-hook 0)
+ ("noise" "" vhdl-template-default-hook 0)
+ ("procedural" "" vhdl-template-procedural-hook 0)
+ ("quantity" "" vhdl-template-quantity-hook 0)
+ ("reference" "" vhdl-template-default-hook 0)
+ ("spectrum" "" vhdl-template-default-hook 0)
+ ("subnature" "" vhdl-template-subnature-hook 0)
+ ("terminal" "" vhdl-template-terminal-hook 0)
+ ("through" "" vhdl-template-default-hook 0)
+ ("tolerance" "" vhdl-template-default-hook 0)
))
;; user model keywords
(when (memq 'user vhdl-electric-keywords)
@@ -2934,7 +3032,7 @@ STRING are replaced by `-' and substrings are converted to lower case."
(setq abbrev-list
(cons (list keyword ""
(vhdl-function-name
- "vhdl-model" (nth 0 (car alist)) "hook") 0 t)
+ "vhdl-model" (nth 0 (car alist)) "hook") 0)
abbrev-list)))
(setq alist (cdr alist)))
abbrev-list)))))
@@ -3088,6 +3186,7 @@ STRING are replaced by `-' and substrings are converted to lower case."
(vhdl-menu-split menu-list "Project"))
'("--" "--"
["Select Project..." vhdl-set-project t]
+ ["Set As Default Project" vhdl-set-default-project t]
"--"
["Duplicate Project" vhdl-duplicate-project vhdl-project]
["Import Project..." vhdl-import-project
@@ -3274,9 +3373,11 @@ STRING are replaced by `-' and substrings are converted to lower case."
:style toggle :selected vhdl-port-reversed-direction :active vhdl-port-list])
("Compose"
["New Component" vhdl-compose-new-component t]
+ ["Copy Component" vhdl-port-copy t]
["Place Component" vhdl-compose-place-component vhdl-port-list]
["Wire Components" vhdl-compose-wire-components t]
"--"
+ ["Generate Configuration" vhdl-compose-configuration t]
["Generate Components Package" vhdl-compose-components-package t])
("Subprogram"
["Copy" vhdl-subprog-copy t]
@@ -3520,6 +3621,8 @@ STRING are replaced by `-' and substrings are converted to lower case."
["Entity File Name..." (customize-option 'vhdl-entity-file-name) t]
["Architecture File Name..."
(customize-option 'vhdl-architecture-file-name) t]
+ ["Configuration File Name..."
+ (customize-option 'vhdl-configuration-file-name) t]
["Package File Name..." (customize-option 'vhdl-package-file-name) t]
("File Name Case"
["As Is"
@@ -3689,11 +3792,29 @@ STRING are replaced by `-' and substrings are converted to lower case."
:style radio :selected (eq 'single vhdl-testbench-create-files)]
["Separate"
(customize-set-variable 'vhdl-testbench-create-files 'separate)
- :style radio :selected (eq 'separate vhdl-testbench-create-files)]))
+ :style radio :selected (eq 'separate vhdl-testbench-create-files)])
+ ["Testbench Entity File Name..."
+ (customize-option 'vhdl-testbench-entity-file-name) t]
+ ["Testbench Architecture File Name..."
+ (customize-option 'vhdl-testbench-architecture-file-name) t])
"--"
["Customize Group..." (customize-group 'vhdl-port) t])
("Compose"
- ("Create Files"
+ ["Architecture Name..."
+ (customize-option 'vhdl-compose-architecture-name) t]
+ ["Configuration Name..."
+ (customize-option 'vhdl-compose-configuration-name) t]
+ ["Components Package Name..."
+ (customize-option 'vhdl-components-package-name) t]
+ ["Use Components Package"
+ (customize-set-variable 'vhdl-use-components-package
+ (not vhdl-use-components-package))
+ :style toggle :selected vhdl-use-components-package]
+ ["Include Header"
+ (customize-set-variable 'vhdl-compose-include-header
+ (not vhdl-compose-include-header))
+ :style toggle :selected vhdl-compose-include-header]
+ ("Create Entity/Architecture Files"
["None"
(customize-set-variable 'vhdl-compose-create-files 'none)
:style radio :selected (eq 'none vhdl-compose-create-files)]
@@ -3703,18 +3824,18 @@ STRING are replaced by `-' and substrings are converted to lower case."
["Separate"
(customize-set-variable 'vhdl-compose-create-files 'separate)
:style radio :selected (eq 'separate vhdl-compose-create-files)])
- ["Include Header"
- (customize-set-variable 'vhdl-compose-include-header
- (not vhdl-compose-include-header))
- :style toggle :selected vhdl-compose-include-header]
- ["Architecture Name..."
- (customize-option 'vhdl-compose-architecture-name) t]
- ["Components Package Name..."
- (customize-option 'vhdl-components-package-name) t]
- ["Use Components Package"
- (customize-set-variable 'vhdl-use-components-package
- (not vhdl-use-components-package))
- :style toggle :selected vhdl-use-components-package]
+ ["Create Configuration File"
+ (customize-set-variable 'vhdl-compose-configuration-create-file
+ (not vhdl-compose-configuration-create-file))
+ :style toggle :selected vhdl-compose-configuration-create-file]
+ ["Hierarchical Configuration"
+ (customize-set-variable 'vhdl-compose-configuration-hierarchical
+ (not vhdl-compose-configuration-hierarchical))
+ :style toggle :selected vhdl-compose-configuration-hierarchical]
+ ["Use Subconfiguration"
+ (customize-set-variable 'vhdl-compose-configuration-use-subconfiguration
+ (not vhdl-compose-configuration-use-subconfiguration))
+ :style toggle :selected vhdl-compose-configuration-use-subconfiguration]
"--"
["Customize Group..." (customize-group 'vhdl-compose) t])
("Comment"
@@ -4166,13 +4287,13 @@ Usage:
symbols are surrounded by one space, and multiple spaces are eliminated.
-| CODE FILLING:
-| Code filling allows to condens code (e.g. sensitivity lists or port
-| maps) by removing comments and newlines and re-wrapping so that all
-| lines are maximally filled (block filling). `C-c C-f C-f' fills a list
-| enclosed by parenthesis, `C-c C-f C-g' a group of lines separated by
-| blank lines, `C-c C-f C-i' a block of lines with same indent, and
-| `C-c C-f M-f' an entire region.
+ CODE FILLING:
+ Code filling allows to condense code (e.g. sensitivity lists or port
+ maps) by removing comments and newlines and re-wrapping so that all
+ lines are maximally filled (block filling). `C-c C-f C-f' fills a list
+ enclosed by parenthesis, `C-c C-f C-g' a group of lines separated by
+ blank lines, `C-c C-f C-i' a block of lines with same indent, and
+ `C-c C-f M-f' an entire region.
CODE BEAUTIFICATION:
@@ -4197,21 +4318,21 @@ Usage:
A clause with several generic/port names on the same line can be
flattened (`C-c C-p C-f') so that only one name per line exists. The
-| direction of ports can be reversed (`C-c C-p C-r'), i.e., inputs become
-| outputs and vice versa, which can be useful in testbenches. (This
-| reversion is done on the internal data structure and is only reflected
-| in subsequent paste operations.)
+ direction of ports can be reversed (`C-c C-p C-r'), i.e., inputs become
+ outputs and vice versa, which can be useful in testbenches. (This
+ reversion is done on the internal data structure and is only reflected
+ in subsequent paste operations.)
Names for actual ports, instances, testbenches, and
design-under-test instances can be derived from existing names according
to options `vhdl-...-name'. See customization group `vhdl-port'.
-| SUBPROGRAM TRANSLATION:
-| Similar functionality exists for copying/pasting the interface of
-| subprograms (function/procedure). A subprogram interface can be copied
-| and then pasted as a subprogram declaration, body or call (uses
-| association list with formals).
+ SUBPROGRAM TRANSLATION:
+ Similar functionality exists for copying/pasting the interface of
+ subprograms (function/procedure). A subprogram interface can be copied
+ and then pasted as a subprogram declaration, body or call (uses
+ association list with formals).
TESTBENCH GENERATION:
@@ -4267,38 +4388,54 @@ Usage:
required by secondary units.
-| STRUCTURAL COMPOSITION:
-| Enables simple structural composition. `C-c C-c C-n' creates a skeleton
-| for a new component. Subcomponents (i.e. component declaration and
-| instantiation) can be automatically placed from a previously read port
-| \(`C-c C-c C-p') or directly from the hierarchy browser (`P'). Finally,
-| all subcomponents can be automatically connected using internal signals
-| and ports (`C-c C-c C-w') following these rules:
-| - subcomponent actual ports with same name are considered to be
-| connected by a signal (internal signal or port)
-| - signals that are only inputs to subcomponents are considered as
-| inputs to this component -> input port created
-| - signals that are only outputs from subcomponents are considered as
-| outputs from this component -> output port created
-| - signals that are inputs to AND outputs from subcomponents are
-| considered as internal connections -> internal signal created
-|
-| Component declarations can be placed in a components package (option
-| `vhdl-use-components-package') which can be automatically generated for
-| an entire directory or project (`C-c C-c M-p'). The VHDL'93 direct
-| component instantiation is also supported (option
-| `vhdl-use-direct-instantiation').
-|
-| Purpose: With appropriate naming conventions it is possible to
-| create higher design levels with only a few mouse clicks or key
-| strokes. A new design level can be created by simply generating a new
-| component, placing the required subcomponents from the hierarchy
-| browser, and wiring everything automatically.
-|
-| Note: Automatic wiring only works reliably on templates of new
-| components and component instantiations that were created by VHDL mode.
+ STRUCTURAL COMPOSITION:
+ Enables simple structural composition. `C-c C-c C-n' creates a skeleton
+ for a new component. Subcomponents (i.e. component declaration and
+ instantiation) can be automatically placed from a previously read port
+ \(`C-c C-c C-p') or directly from the hierarchy browser (`P'). Finally,
+ all subcomponents can be automatically connected using internal signals
+ and ports (`C-c C-c C-w') following these rules:
+ - subcomponent actual ports with same name are considered to be
+ connected by a signal (internal signal or port)
+ - signals that are only inputs to subcomponents are considered as
+ inputs to this component -> input port created
+ - signals that are only outputs from subcomponents are considered as
+ outputs from this component -> output port created
+ - signals that are inputs to AND outputs from subcomponents are
+ considered as internal connections -> internal signal created
+
+ Purpose: With appropriate naming conventions it is possible to
+ create higher design levels with only a few mouse clicks or key
+ strokes. A new design level can be created by simply generating a new
+ component, placing the required subcomponents from the hierarchy
+ browser, and wiring everything automatically.
+
+ Note: Automatic wiring only works reliably on templates of new
+ components and component instantiations that were created by VHDL mode.
+
+ Component declarations can be placed in a components package (option
+ `vhdl-use-components-package') which can be automatically generated for
+ an entire directory or project (`C-c C-c M-p'). The VHDL'93 direct
+ component instantiation is also supported (option
+ `vhdl-use-direct-instantiation').
+
+| Configuration declarations can automatically be generated either from
+| the menu (`C-c C-c C-f') (for the architecture the cursor is in) or from
+| the speedbar menu (for the architecture under the cursor). The
+| configurations can optionally be hierarchical (i.e. include all
+| component levels of a hierarchical design, option
+| `vhdl-compose-configuration-hierarchical') or include subconfigurations
+| (option `vhdl-compose-configuration-use-subconfiguration'). For
+| subcomponents in hierarchical configurations, the most-recently-analyzed
+| (mra) architecture is selected. If another architecture is desired, it
+| can be marked as most-recently-analyzed (speedbar menu) before
+| generating the configuration.
|
-| See the options group `vhdl-compose' for all relevant user options.
+| Note: Configurations of subcomponents (i.e. hierarchical configuration
+| declarations) are currently not considered when displaying
+| configurations in speedbar.
+
+ See the options group `vhdl-compose' for all relevant user options.
SOURCE FILE COMPILATION:
@@ -4562,12 +4699,13 @@ Key bindings:
(set (make-local-variable 'paragraph-separate) paragraph-start)
(set (make-local-variable 'paragraph-ignore-fill-prefix) t)
(set (make-local-variable 'require-final-newline)
- mode-require-final-newline)
+ (if vhdl-emacs-22 mode-require-final-newline t))
(set (make-local-variable 'parse-sexp-ignore-comments) t)
(set (make-local-variable 'indent-line-function) 'vhdl-indent-line)
(set (make-local-variable 'comment-start) "--")
(set (make-local-variable 'comment-end) "")
- (set (make-local-variable 'comment-padding) "")
+ (when vhdl-emacs-21
+ (set (make-local-variable 'comment-padding) ""))
(set (make-local-variable 'comment-column) vhdl-inline-comment-column)
(set (make-local-variable 'end-comment-column) vhdl-end-comment-column)
(set (make-local-variable 'comment-start-skip) "--+\\s-*")
@@ -4620,7 +4758,9 @@ Key bindings:
(if noninteractive "" " See menu for documentation and release notes."))
;; run hooks
- (run-mode-hooks 'vhdl-mode-hook))
+ (if vhdl-emacs-22
+ (run-mode-hooks 'vhdl-mode-hook)
+ (run-hooks 'vhdl-mode-hook)))
(defun vhdl-activate-customizations ()
"Activate all customizations on local variables."
@@ -5229,6 +5369,7 @@ the offset is simply returned."
(cond
((nth 3 state) 'string)
((nth 4 state) 'comment)
+ ((vhdl-beginning-of-macro) 'pound)
(t nil)))))
(defun vhdl-forward-comment (&optional direction)
@@ -5311,14 +5452,19 @@ negative, skip forward otherwise."
(defun vhdl-forward-syntactic-ws (&optional lim)
"Forward skip of syntactic whitespace."
- (save-restriction
- (let* ((lim (or lim (point-max)))
- (here lim)
- (hugenum (point-max)))
- (narrow-to-region lim (point))
- (while (/= here (point))
- (setq here (point))
- (vhdl-forward-comment hugenum)))))
+ (let* ((here (point-max))
+ (hugenum (point-max)))
+ (while (/= here (point))
+ (setq here (point))
+ (vhdl-forward-comment hugenum)
+ ;; skip preprocessor directives
+ (when (and (eq (char-after) ?#)
+ (= (vhdl-point 'boi) (point)))
+ (while (and (eq (char-before (vhdl-point 'eol)) ?\\)
+ (= (forward-line 1) 0)))
+ (end-of-line)))
+ (if lim (goto-char (min (point) lim)))))
+
;; This is the best we can do in Win-Emacs.
(defun vhdl-win-fsws (&optional lim)
@@ -5336,18 +5482,28 @@ negative, skip forward otherwise."
(and (string-match "Win-Emacs" emacs-version)
(fset 'vhdl-forward-syntactic-ws 'vhdl-win-fsws))
+(defun vhdl-beginning-of-macro (&optional lim)
+ "Go to the beginning of a cpp macro definition (nicked from `cc-engine')."
+ (let ((here (point)))
+ (beginning-of-line)
+ (while (eq (char-before (1- (point))) ?\\)
+ (forward-line -1))
+ (back-to-indentation)
+ (if (and (<= (point) here)
+ (eq (char-after) ?#))
+ t
+ (goto-char here)
+ nil)))
+
(defun vhdl-backward-syntactic-ws (&optional lim)
"Backward skip over syntactic whitespace."
- (save-restriction
- (let* ((lim (or lim (point-min)))
- (here lim)
- (hugenum (- (point-max))))
- (if (< lim (point))
- (progn
- (narrow-to-region lim (point))
- (while (/= here (point))
- (setq here (point))
- (vhdl-forward-comment hugenum)))))))
+ (let* ((here (point-min))
+ (hugenum (- (point-max))))
+ (while (/= here (point))
+ (setq here (point))
+ (vhdl-forward-comment hugenum)
+ (vhdl-beginning-of-macro))
+ (if lim (goto-char (max (point) lim)))))
;; This is the best we can do in Win-Emacs.
(defun vhdl-win-bsws (&optional lim)
@@ -5597,7 +5753,8 @@ keyword."
(save-excursion
(re-search-backward ";\\|\\bwhen\\b[^_]" lim 'move)
(or (eq (following-char) ?\;)
- (eq (point) lim)))))
+ (eq (point) lim)
+ (vhdl-in-literal)))))
(defun vhdl-corresponding-begin (&optional lim)
"If the word at the current position corresponds to an \"end\"
@@ -5666,15 +5823,15 @@ of an identifier that just happens to contain an \"end\" keyword."
;; return an alist of (statement . keyword) mappings
'(
;; "begin ... end [id]":
- ("begin" . nil)
+ ("begin" . nil)
;; "architecture ... is ... begin ... end [id]":
- ("architecture" . "is")
+ ("architecture" . "is")
;; "configuration ... is ... end [id]":
("configuration" . "is")
;; "entity ... is ... end [id]":
- ("entity" . "is")
+ ("entity" . "is")
;; "package ... is ... end [id]":
- ("package" . "is")
+ ("package" . "is")
;; "procedure ... is ... begin ... end [id]":
("procedure" . "is")
;; "function ... is ... begin ... end [id]":
@@ -5715,7 +5872,7 @@ of an identifier that just happens to contain an \"end\" keyword."
)))
(defconst vhdl-trailer-re
- "\\b\\(is\\|then\\|generate\\|loop\\)\\b[^_]")
+ "\\b\\(is\\|then\\|generate\\|loop\\|record\\)\\b[^_]")
(defconst vhdl-statement-fwd-re
"\\b\\(if\\|for\\|while\\)\\b\\([^_]\\|\\'\\)"
@@ -6070,8 +6227,8 @@ Returns the location of the corresponding begin keyword, unless search
stops due to beginning or end of buffer."
;; Note that if point is between the "defun" keyword and the
;; corresponding "begin" keyword, then that defun will not be
- ;; recognised, and the search will continue backwards. If point is
- ;; at the "begin" keyword, then the defun will be recognised. The
+ ;; recognized, and the search will continue backwards. If point is
+ ;; at the "begin" keyword, then the defun will be recognized. The
;; returned point is at the first character of the "defun" keyword.
(interactive "p")
(let ((count (or count 1))
@@ -6132,8 +6289,8 @@ one. If within a string or comment, or next to a comment (only
whitespace between), move by sentences instead of statements.
When called from a program, this function takes 3 optional args: the
-prefix arg, and a buffer position limit which is the farthest back to
-search, and something whose meaning I don't understand."
+prefix arg, a buffer position limit which is the farthest back to
+search, and an argument indicating an interactive call."
(interactive "p\np")
(let ((count (or count 1))
(case-fold-search t)
@@ -6692,6 +6849,8 @@ is not moved."
(skip-chars-forward " \t")
(if (looking-at "--")
(vhdl-add-syntax 'comment))
+ (if (eq literal 'pound)
+ (vhdl-add-syntax 'cpp-macro))
;; return the syntax
vhdl-syntactic-context))))
@@ -6767,7 +6926,7 @@ only-lines."
vhdl-comment-only-line-offset)
(or (cdr-safe vhdl-comment-only-line-offset)
(car-safe vhdl-comment-only-line-offset)
- -1000 ;jam it against the left side
+ -1000 ;jam it against the left side
)))))
(defun vhdl-lineup-statement-cont (langelem)
@@ -7461,35 +7620,29 @@ end of line, do nothing in comments and strings."
(setq end (point-marker))
;; have no space before and one space after `,' and ';'
(goto-char beg)
- (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\)\\|\\(\\s-*\\([,;]\\)\\)" end t)
+ (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|\'.\'\\)\\|\\(\\s-*\\([,;]\\)\\)" end t)
(if (match-string 1)
(goto-char (match-end 1))
(replace-match "\\3 " nil nil nil 3)))
;; have no space after `('
(goto-char beg)
- (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\)\\|\\((\\)\\s-+" end t)
+ (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|\'.\'\\)\\|\\((\\)\\s-+" end t)
(if (match-string 1)
(goto-char (match-end 1))
(replace-match "\\2")))
;; have no space before `)'
(goto-char beg)
- (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|^\\s-+\\)\\|\\s-+\\()\\)" end t)
+ (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|\'.\'\\|^\\s-+\\)\\|\\s-+\\()\\)" end t)
(if (match-string 1)
(goto-char (match-end 1))
(replace-match "\\2")))
;; surround operator symbols by one space
(goto-char beg)
- (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\)\\|\\(\\([^/:<>=]\\)\\(:\\|=\\|<\\|>\\|:=\\|<=\\|>=\\|=>\\|/=\\)\\([^=>]\\|$\\)\\)" end t)
+ (while (re-search-forward "\\(--.*\n\\|\"[^\"\n]*[\"\n]\\|\'.\'\\)\\|\\(\\([^/:<>=]\\)\\(:\\|=\\|<\\|>\\|:=\\|<=\\|>=\\|=>\\|/=\\)\\([^=>]\\|$\\)\\)" end t)
(if (match-string 1)
(goto-char (match-end 1))
- (save-excursion
- (goto-char (match-beginning 4))
- (unless (eq (preceding-char) ?\ )
- (insert " "))
- (goto-char (match-end 4))
- (unless (eq (following-char) ?\ )
- (insert " ")))
- (goto-char (match-end 4))))
+ (replace-match "\\3 \\4 \\5")
+ (goto-char (match-end 2))))
;; eliminate multiple spaces and spaces at end of line
(goto-char beg)
(while (or (and (looking-at "--.*\n") (re-search-forward "--.*\n" end t))
@@ -7503,7 +7656,8 @@ end of line, do nothing in comments and strings."
(progn (replace-match " " nil nil) t))
(and (looking-at "\\s-+") (re-search-forward "\\s-+" end t)
(progn (replace-match " " nil nil) t))
- (re-search-forward "[^ \t-]+" end t))))
+; (re-search-forward "[^ \t-]+" end t))))
+ (re-search-forward "[^ \t\"-]+" end t))))
(unless no-message (message "Fixing up whitespace...done")))
(defun vhdl-fixup-whitespace-buffer ()
@@ -7621,7 +7775,7 @@ buffer."
(message "Updating sensitivity lists...")
(while (re-search-forward "^\\s-*\\(\\w+[ \t\n]*:[ \t\n]*\\)?process\\>" nil t)
(goto-char (match-beginning 0))
- (condition-case nil (vhdl-update-sensitivity-list) (error)))
+ (condition-case nil (vhdl-update-sensitivity-list) (error "")))
(message "Updating sensitivity lists...done"))))
(defun vhdl-update-sensitivity-list ()
@@ -7665,8 +7819,10 @@ buffer."
((re-search-forward "^\\s-*case\\>" proc-end t)
(re-search-forward "\\<is\\>" proc-end t))
;; parameter list of procedure call
- ((re-search-forward "^\\s-*\\w+[ \t\n]*(" proc-end t)
- (progn (backward-char) (forward-sexp) (point)))))
+ ((and (re-search-forward "^\\s-*\\w+[ \t\n]*(" proc-end t)
+ (1- (point)))
+ (progn (backward-char) (forward-sexp)
+ (while (looking-at "(") (forward-sexp)) (point)))))
name read-list sens-list signal-list
sens-beg sens-end beg end margin)
;; scan for signals in old sensitivity list
@@ -7707,10 +7863,16 @@ buffer."
(< (point) (caar tmp-list)))
(setq tmp-list (cdr tmp-list)))
(and tmp-list (< (point) (cdar tmp-list))))))
- (while (vhdl-re-search-forward "[^'\"]\\<\\([a-zA-Z]\\w*\\)\\>" end t)
+ (while (vhdl-re-search-forward "[^'\"]\\<\\([a-zA-Z]\\w*\\)\\>[ \t\n]*\\('\\(\\w+\\)\\|\\(=>\\)\\)?" end t)
(setq name (match-string 1))
- (when (member (downcase name) signal-list)
- (add-to-list 'read-list name)))))
+ (when (and (not (match-string 4)) ; not when formal parameter
+ (not (and (match-string 3) ; not event attribute
+ (not (member (downcase (match-string 3))
+ '("event" "last_event" "transaction")))))
+ (member (downcase name) signal-list))
+ (unless (member-ignore-case name read-list)
+ (setq read-list (cons name read-list))))
+ (goto-char (match-end 1)))))
(setq scan-regions-list (cdr scan-regions-list)))
;; update sensitivity list
(goto-char sens-beg)
@@ -7734,65 +7896,94 @@ buffer."
(defun vhdl-get-visible-signals ()
"Get all signals visible in the current block."
- (save-excursion
- (let (beg end signal-list entity-name file-name)
- ;; search for signals declared in surrounding block declarative parts
- (save-excursion
- (while (and (progn (while (and (setq beg (re-search-backward "^\\s-*\\(\\w+\\s-*:\\s-*block\\|\\(end\\)\\s-+block\\)\\>" nil t))
- (match-string 2))
- (goto-char (match-end 2))
- (vhdl-backward-sexp)
- (re-search-backward "^\\s-*\\w+\\s-*:\\s-*block\\>" nil t))
- beg)
- (setq end (re-search-forward "^\\s-*begin\\>" nil t)))
- ;; scan for all declared signal names
- (goto-char beg)
- (while (re-search-forward "^\\s-*signal\\>" end t)
- (while (and (not (looking-at "[ \t\n]*:"))
- (re-search-forward "[ \t\n,]+\\(\\w+\\)" end t))
- (setq signal-list
- (cons (downcase (match-string 1)) signal-list))))
- (goto-char beg)))
- ;; search for signals declared in architecture declarative part
- (if (not (and (setq beg (re-search-backward "^\\(architecture\\s-+\\w+\\s-+of\\s-+\\(\\w+\\)\\|end\\)\\>" nil t))
+ (let (beg end signal-list entity-name file-name)
+ (vhdl-prepare-search-2
+ ;; get entity name
+ (save-excursion
+ (unless (and (re-search-backward "^\\(architecture\\s-+\\w+\\s-+of\\s-+\\(\\w+\\)\\|end\\)\\>" nil t)
(not (equal "END" (upcase (match-string 1))))
- (setq entity-name (match-string 2))
- (setq end (re-search-forward "^begin\\>" nil t))))
- (error "ERROR: No architecture declarative part found")
- ;; scan for all declared signal names
- (goto-char beg)
- (while (re-search-forward "^\\s-*signal\\>" end t)
- (while (and (not (looking-at "[ \t\n]*:"))
- (re-search-forward "[ \t\n,]+\\(\\w+\\)" end t))
- (setq signal-list
- (cons (downcase (match-string 1)) signal-list)))))
- ;; search for signals declared in entity port clause
- (goto-char (point-min))
- (unless (re-search-forward (concat "^entity\\s-+" entity-name "\\>") nil t)
- (setq file-name
- (concat (vhdl-replace-string vhdl-entity-file-name entity-name)
- "." (file-name-extension (buffer-file-name)))))
- (vhdl-visit-file
- file-name t
- (vhdl-prepare-search-2
- (goto-char (point-min))
- (if (not (re-search-forward (concat "^entity\\s-+" entity-name "\\>") nil t))
- (error "ERROR: Entity \"%s\" not found:\n --> see option `vhdl-entity-file-name'" entity-name)
- (when (setq beg (re-search-forward
- "^\\s-*port[ \t\n]*("
- (save-excursion
- (re-search-forward "^end\\>" nil t)) t))
- (setq end (save-excursion
- (backward-char) (forward-sexp) (point)))
- (vhdl-forward-syntactic-ws)
- (while (< (point) end)
- (while (and (not (looking-at "[ \t\n]*:"))
- (re-search-forward "[ \t\n,]*\\(\\w+\\)" end t))
- (setq signal-list
- (cons (downcase (match-string 1)) signal-list)))
- (re-search-forward ";" end 1)
- (vhdl-forward-syntactic-ws))))))
- signal-list)))
+ (setq entity-name (match-string 2)))
+ (error "ERROR: Not within an architecture")))
+ ;; search for signals declared in entity port clause
+ (save-excursion
+ (goto-char (point-min))
+ (unless (re-search-forward (concat "^entity\\s-+" entity-name "\\>") nil t)
+ (setq file-name
+ (concat (vhdl-replace-string vhdl-entity-file-name entity-name t)
+ "." (file-name-extension (buffer-file-name)))))
+ (vhdl-visit-file
+ file-name t
+ (vhdl-prepare-search-2
+ (goto-char (point-min))
+ (if (not (re-search-forward (concat "^entity\\s-+" entity-name "\\>") nil t))
+ (error "ERROR: Entity \"%s\" not found:\n --> see option `vhdl-entity-file-name'" entity-name)
+ (when (setq beg (re-search-forward
+ "^\\s-*port[ \t\n]*("
+ (save-excursion
+ (re-search-forward "^end\\>" nil t)) t))
+ (setq end (save-excursion
+ (backward-char) (forward-sexp) (point)))
+ (vhdl-forward-syntactic-ws)
+ (while (< (point) end)
+ (when (looking-at "signal[ \t\n]+")
+ (goto-char (match-end 0)))
+ (while (looking-at "\\(\\w+\\)[ \t\n,]+")
+ (setq signal-list
+ (cons (downcase (match-string 1)) signal-list))
+ (goto-char (match-end 0))
+ (vhdl-forward-syntactic-ws))
+ (re-search-forward ";" end 1)
+ (vhdl-forward-syntactic-ws)))))))
+ ;; search for signals declared in architecture declarative part
+ (save-excursion
+ (if (not (and (setq beg (re-search-backward "^\\(architecture\\s-+\\w+\\s-+of\\s-+\\(\\w+\\)\\|end\\)\\>" nil t))
+ (not (equal "END" (upcase (match-string 1))))
+ (setq end (re-search-forward "^begin\\>" nil t))))
+ (error "ERROR: No architecture declarative part found")
+ ;; scan for all declared signal and alias names
+ (goto-char beg)
+ (while (re-search-forward "^\\s-*\\(\\(signal\\)\\|alias\\)\\>" end t)
+ (when (= 0 (nth 0 (parse-partial-sexp beg (point))))
+ (if (match-string 2)
+ ;; scan signal name
+ (while (looking-at "[ \t\n,]+\\(\\w+\\)")
+ (setq signal-list
+ (cons (downcase (match-string 1)) signal-list))
+ (goto-char (match-end 0)))
+ ;; scan alias name, check is alias of (declared) signal
+ (when (and (looking-at "[ \t\n]+\\(\\w+\\)[^;]*\\<is[ \t\n]+\\(\\w+\\)")
+ (member (downcase (match-string 2)) signal-list))
+ (setq signal-list
+ (cons (downcase (match-string 1)) signal-list))
+ (goto-char (match-end 0))))
+ (setq beg (point))))))
+ ;; search for signals declared in surrounding block declarative parts
+ (save-excursion
+ (while (and (progn (while (and (setq beg (re-search-backward "^\\s-*\\(\\w+\\s-*:\\s-*block\\|\\(end\\)\\s-+block\\)\\>" nil t))
+ (match-string 2))
+ (goto-char (match-end 2))
+ (vhdl-backward-sexp)
+ (re-search-backward "^\\s-*\\w+\\s-*:\\s-*block\\>" nil t))
+ beg)
+ (setq end (re-search-forward "^\\s-*begin\\>" nil t)))
+ ;; scan for all declared signal names
+ (goto-char beg)
+ (while (re-search-forward "^\\s-*\\(\\(signal\\)\\|alias\\)\\>" end t)
+ (when (= 0 (nth 0 (parse-partial-sexp beg (point))))
+ (if (match-string 2)
+ ;; scan signal name
+ (while (looking-at "[ \t\n,]+\\(\\w+\\)")
+ (setq signal-list
+ (cons (downcase (match-string 1)) signal-list))
+ (goto-char (match-end 0)))
+ ;; scan alias name, check is alias of (declared) signal
+ (when (and (looking-at "[ \t\n]+\\(\\w+\\)[^;]*\\<is[ \t\n]+\\(\\w+\\)")
+ (member (downcase (match-string 2)) signal-list))
+ (setq signal-list
+ (cons (downcase (match-string 1)) signal-list))
+ (goto-char (match-end 0))))))
+ (goto-char beg)))
+ signal-list)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Generic/port clause fixing
@@ -9614,11 +9805,14 @@ specification, if not already there."
(match-string 2))))
(equal (downcase library) "work"))
(vhdl-insert-keyword "LIBRARY ")
- (insert library ";\n")
- (indent-to margin))
- (vhdl-insert-keyword "USE ")
- (insert library "." package)
- (vhdl-insert-keyword ".ALL;"))))
+ (insert library ";")
+ (when package
+ (insert "\n")
+ (indent-to margin)))
+ (when package
+ (vhdl-insert-keyword "USE ")
+ (insert library "." package)
+ (vhdl-insert-keyword ".ALL;")))))
(defun vhdl-template-package-math-complex ()
"Insert specification of `math_complex' package."
@@ -10317,7 +10511,10 @@ else insert tab (used for word completion in VHDL minibuffer)."
(save-match-data
(save-excursion
(goto-char (match-end 5))
- (forward-word 1) (forward-sexp)
+ (forward-word 1)
+ (vhdl-forward-syntactic-ws)
+ (when (looking-at "(")
+ (forward-sexp))
(re-search-forward "\\<is\\>\\|\\(;\\)" nil t))
(match-string 1)))
;; not consider configuration specifications
@@ -10677,12 +10874,14 @@ but not if inside a comment or quote)."
(vhdl-current-line) string)))
nil))
-(defun vhdl-replace-string (regexp-cons string)
+(defun vhdl-replace-string (regexp-cons string &optional adjust-case)
"Replace STRING from car of REGEXP-CONS to cdr of REGEXP-CONS."
(vhdl-prepare-search-1
(if (string-match (car regexp-cons) string)
- (funcall vhdl-file-name-case
- (replace-match (cdr regexp-cons) t nil string))
+ (if adjust-case
+ (funcall vhdl-file-name-case
+ (replace-match (cdr regexp-cons) t nil string))
+ (replace-match (cdr regexp-cons) t nil string))
string)))
(defun vhdl-parse-group-comment ()
@@ -10691,6 +10890,7 @@ but not if inside a comment or quote)."
string)
(vhdl-forward-comment (point-max))
(setq string (buffer-substring-no-properties start (point)))
+ (vhdl-forward-syntactic-ws)
;; strip off leading blanks and first newline
(while (string-match "^\\(\\s-+\\)" string)
(setq string (concat (substring string 0 (match-beginning 1))
@@ -10716,11 +10916,13 @@ with INDENT."
"Indicates whether a port has been flattened.")
(defun vhdl-port-flatten (&optional as-alist)
- "Flatten port list so that only one generic/port exists per line."
+ "Flatten port list so that only one generic/port exists per line.
+This operation is performed on an internally stored port and is only
+reflected in a subsequent paste operation."
(interactive)
(if (not vhdl-port-list)
(error "ERROR: No port has been read")
- (message "Flattening port...")
+ (message "Flattening port for next paste...")
(let ((new-vhdl-port-list (list (car vhdl-port-list)))
(old-vhdl-port-list (cdr vhdl-port-list))
old-port-list new-port-list old-port new-port names)
@@ -10743,17 +10945,19 @@ with INDENT."
(setq vhdl-port-list
(append new-vhdl-port-list (list old-vhdl-port-list))
vhdl-port-flattened t)
- (message "Flattening port...done"))))
+ (message "Flattening port for next paste...done"))))
(defvar vhdl-port-reversed-direction nil
"Indicates whether port directions are reversed.")
(defun vhdl-port-reverse-direction ()
- "Reverse direction for all ports (useful in testbenches)."
+ "Reverse direction for all ports (useful in testbenches).
+This operation is performed on an internally stored port and is only
+reflected in a subsequent paste operation."
(interactive)
(if (not vhdl-port-list)
(error "ERROR: No port has been read")
- (message "Reversing port directions...")
+ (message "Reversing port directions for next paste...")
(let ((port-list (nth 2 vhdl-port-list))
port-dir-car port-dir)
;; traverse port list and reverse directions
@@ -10766,7 +10970,7 @@ with INDENT."
(t port-dir)))
(setq port-list (cdr port-list)))
(setq vhdl-port-reversed-direction (not vhdl-port-reversed-direction))
- (message "Reversing port directions...done"))))
+ (message "Reversing port directions for next paste...done"))))
(defun vhdl-port-copy ()
"Get generic and port information from an entity or component declaration."
@@ -10797,8 +11001,8 @@ with INDENT."
(setq group-comment (vhdl-parse-group-comment))
(setq end-of-list (vhdl-parse-string ")[ \t\n]*;[ \t\n]*" t))
(while (not end-of-list)
- ;; parse names
- (vhdl-parse-string "\\(\\w+\\)[ \t\n]*")
+ ;; parse names (accept extended identifiers)
+ (vhdl-parse-string "\\(\\w+\\|\\\\[^\\]+\\\\\\)[ \t\n]*")
(setq names (list (match-string-no-properties 1)))
(while (vhdl-parse-string ",[ \t\n]*\\(\\w+\\)[ \t\n]*" t)
(setq names
@@ -10864,7 +11068,7 @@ with INDENT."
(while (not end-of-list)
;; parse object
(setq object
- (and (vhdl-parse-string "\\(signal\\|quantity\\|terminal\\)[ \t\n]*" t)
+ (and (vhdl-parse-string "\\<\\(signal\\|quantity\\|terminal\\)\\>[ \t\n]*" t)
(match-string-no-properties 1)))
;; parse names (accept extended identifiers)
(vhdl-parse-string "\\(\\w+\\|\\\\[^\\]+\\\\\\)[ \t\n]*")
@@ -10874,7 +11078,7 @@ with INDENT."
;; parse direction
(vhdl-parse-string ":[ \t\n]*")
(setq direct
- (and (vhdl-parse-string "\\(in\\|out\\|inout\\|buffer\\|linkage\\)[ \t\n]+" t)
+ (and (vhdl-parse-string "\\<\\(in\\|out\\|inout\\|buffer\\|linkage\\)\\>[ \t\n]+" t)
(match-string-no-properties 1)))
;; parse type
(vhdl-parse-string "\\([^();\n]+\\)")
@@ -11091,7 +11295,10 @@ with INDENT."
(car (nth 0 (car generic-list)))
(or (nth 2 (car generic-list)) " ")))
(setq generic-list (cdr generic-list))
- (insert (if generic-list ", " ")")))
+ (insert (if generic-list ", " ")"))
+ (when (and (not generic-list) secondary
+ (null (nth 2 vhdl-port-list)))
+ (insert ";")))
(unless vhdl-argument-list-indent
(insert "\n") (indent-to (+ margin vhdl-basic-offset)))
(setq list-margin (current-column))
@@ -11107,6 +11314,9 @@ with INDENT."
(or (nth 2 generic) "")))
(setq generic-list (cdr generic-list))
(insert (if generic-list "," ")"))
+ (when (and (not generic-list) secondary
+ (null (nth 2 vhdl-port-list)))
+ (insert ";"))
;; paste comment
(when (or vhdl-include-type-comments
(and vhdl-include-port-comments (nth 3 generic)))
@@ -11134,7 +11344,7 @@ with INDENT."
(insert (vhdl-replace-string vhdl-actual-port-name
(car (nth 0 (car port-list)))))
(setq port-list (cdr port-list))
- (insert (if port-list ", " ");")))
+ (insert (if port-list ", " ")")))
(unless vhdl-argument-list-indent
(insert "\n") (indent-to (+ margin vhdl-basic-offset)))
(setq list-margin (current-column))
@@ -11214,6 +11424,8 @@ with INDENT."
(when (nth 2 vhdl-port-list)
(insert "\n") (indent-to (+ margin vhdl-basic-offset))
(vhdl-port-paste-port-map))
+ (unless (or (nth 1 vhdl-port-list) (nth 2 vhdl-port-list))
+ (insert ";"))
(message "Pasting port as instantiation \"%s\"...done" name))
(setq vhdl-port-list orig-vhdl-port-list))))
@@ -11355,7 +11567,9 @@ with INDENT."
;; open entity file
(unless (eq vhdl-testbench-create-files 'none)
(setq ent-file-name
- (concat ent-name "." (file-name-extension (buffer-file-name))))
+ (concat (vhdl-replace-string vhdl-testbench-entity-file-name
+ ent-name t)
+ "." (file-name-extension (buffer-file-name))))
(if (file-exists-p ent-file-name)
(if (y-or-n-p
(concat "File \"" ent-file-name "\" exists; overwrite? "))
@@ -11402,8 +11616,9 @@ with INDENT."
(insert "\n")
(setq ent-buffer (current-buffer))
(setq arch-file-name
- (concat ent-name "_" arch-name "."
- (file-name-extension (buffer-file-name))))
+ (concat (vhdl-replace-string vhdl-testbench-architecture-file-name
+ (concat ent-name " " arch-name) t)
+ "." (file-name-extension (buffer-file-name))))
(when (and (file-exists-p arch-file-name)
(not (y-or-n-p (concat "File \"" arch-file-name
"\" exists; overwrite? "))))
@@ -11708,7 +11923,7 @@ with INDENT."
(vhdl-paste-group-comment (nth 5 vhdl-subprog-list) list-margin))
;; paste return type
(insert "return " (nth 3 vhdl-subprog-list))
- (if (eq kind 'decl) (insert ";") (vhdl-insert-keyword " is"))
+ (if (eq kind 'decl) (insert ";") (vhdl-insert-keyword " is"))
(when (and vhdl-include-port-comments (nth 4 vhdl-subprog-list))
(vhdl-comment-insert-inline (nth 4 vhdl-subprog-list) t)))
;; align parameter list
@@ -11932,7 +12147,9 @@ options vhdl-upper-case-{keywords,types,attributes,enum-values}."
"Return the line number of the line containing point."
(save-restriction
(widen)
- (1+ (count-lines (point-min) (line-beginning-position)))))
+ (save-excursion
+ (beginning-of-line)
+ (1+ (count-lines 1 (point))))))
(defun vhdl-line-kill-entire (&optional arg)
"Delete entire line."
@@ -12059,7 +12276,8 @@ File statistics: \"%s\"\n\
# statements : %5d\n\
# code lines : %5d\n\
# total lines : %5d\n\ "
- (buffer-file-name) no-stats no-code-lines no-lines)))
+ (buffer-file-name) no-stats no-code-lines no-lines)
+ (unless vhdl-emacs-21 (vhdl-show-messages))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Help functions
@@ -12102,6 +12320,12 @@ File statistics: \"%s\"\n\
(vhdl-warning (format "Unknown VHDL project: \"%s\"" name))))
(vhdl-speedbar-update-current-project))
+(defun vhdl-set-default-project ()
+ "Set current project as default on startup."
+ (interactive)
+ (customize-set-variable 'vhdl-project vhdl-project)
+ (customize-save-customized))
+
(defun vhdl-toggle-project (name token indent)
"Set current project to NAME or unset if NAME is current project."
(vhdl-set-project (if (equal name vhdl-project) "" name)))
@@ -12159,7 +12383,7 @@ File statistics: \"%s\"\n\
(load-file file-name)
(when (/= (length (aget vhdl-project-alist vhdl-project t)) 10)
(adelete 'vhdl-project-alist vhdl-project)
- (error))
+ (error ""))
(when not-make-current
(setq vhdl-project current-project))
(vhdl-update-mode-menu)
@@ -12367,8 +12591,8 @@ File statistics: \"%s\"\n\
(save-match-data
(goto-char (match-end 1))
;; move to next item
- (if (looking-at "\\s-*,")
- (goto-char (match-end 0))
+ (if (looking-at "\\(\\s-*,\\)")
+ (goto-char (match-end 1))
(end-of-line) t))))
(error t)))
@@ -12416,7 +12640,7 @@ This does highlighting of keywords and standard identifiers.")
"postponed\\|process\\|"
(when (vhdl-standard-p 'ams) "procedural\\|")
"with\\|while"
- "\\)\\>\\|\\w+\\s-*\\(([^\n]*)\\)*\\s-*<=\\)")
+ "\\)\\>\\|\\w+\\s-*\\(([^\n]*)\\|\\.\\w+\\)*\\s-*<=\\)")
1 'font-lock-function-name-face)
;; highlight label and component name of component instantiations
@@ -12483,7 +12707,7 @@ This does highlighting of keywords and standard identifiers.")
(list
(concat
"^\\s-*attribute\\s-+\\(\\w+\\)")
- 1 'vhdl-attribute)
+ 1 'vhdl-font-lock-attribute-face)
;; highlight type/nature name in (sub)type/(sub)nature declarations
(list
@@ -12515,7 +12739,7 @@ This does highlighting of keywords and standard identifiers.")
(while (= (preceding-char) ?\)) (backward-sexp))
(skip-syntax-backward "w_")
(skip-syntax-backward " ")
- (when (memq (preceding-char) '(?n ?N))
+ (when (memq (preceding-char) '(?n ?N ?|))
(goto-char (point-max))))
(goto-char (match-end 1)) (1 font-lock-variable-name-face)))
@@ -12541,39 +12765,40 @@ This does highlighting of additional reserved words.")
(defconst vhdl-font-lock-keywords-5
;; background highlight translate-off regions
- '((vhdl-match-translate-off (0 vhdl-translate-off-face append)))
+ '((vhdl-match-translate-off (0 vhdl-font-lock-translate-off-face append)))
"For consideration as a value of `vhdl-font-lock-keywords'.
This does background highlighting of translate-off regions.")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Font and color definitions
-(defvar vhdl-prompt-face 'vhdl-prompt
+(defvar vhdl-font-lock-prompt-face 'vhdl-font-lock-prompt-face
"Face name to use for prompts.")
-(defvar vhdl-attribute-face 'vhdl-attribute
+(defvar vhdl-font-lock-attribute-face 'vhdl-font-lock-attribute-face
"Face name to use for standardized attributes.")
-(defvar vhdl-enumvalue-face 'vhdl-enumvalue
+(defvar vhdl-font-lock-enumvalue-face 'vhdl-font-lock-enumvalue-face
"Face name to use for standardized enumeration values.")
-(defvar vhdl-function-face 'vhdl-function
+(defvar vhdl-font-lock-function-face 'vhdl-font-lock-function-face
"Face name to use for standardized functions and packages.")
-(defvar vhdl-directive-face 'vhdl-directive
+(defvar vhdl-font-lock-directive-face 'vhdl-font-lock-directive-face
"Face name to use for directives.")
-(defvar vhdl-reserved-words-face 'vhdl-reserved-words
+(defvar vhdl-font-lock-reserved-words-face 'vhdl-font-lock-reserved-words-face
"Face name to use for additional reserved words.")
-(defvar vhdl-translate-off-face 'vhdl-translate-off
+(defvar vhdl-font-lock-translate-off-face 'vhdl-font-lock-translate-off-face
"Face name to use for translate-off regions.")
;; face names to use for words with special syntax.
(let ((syntax-alist vhdl-special-syntax-alist)
name)
(while syntax-alist
- (setq name (vhdl-function-name "vhdl" (nth 0 (car syntax-alist))))
+ (setq name (vhdl-function-name
+ "vhdl-font-lock" (nth 0 (car syntax-alist)) "face"))
(eval `(defvar ,name ',name
,(concat "Face name to use for "
(nth 0 (car syntax-alist)) ".")))
@@ -12597,7 +12822,7 @@ This does background highlighting of translate-off regions.")
(custom-add-to-group
'vhdl-highlight-faces 'font-lock-variable-name-face 'custom-face)
-(defface vhdl-prompt
+(defface vhdl-font-lock-prompt-face
'((((min-colors 88) (class color) (background light))
(:foreground "Red1" :bold t))
(((class color) (background light)) (:foreground "Red" :bold t))
@@ -12606,50 +12831,40 @@ This does background highlighting of translate-off regions.")
"Font lock mode face used to highlight prompts."
:group 'vhdl-highlight-faces
:group 'font-lock-highlighting-faces)
-;; backward-compatibility alias
-(put 'vhdl-font-lock-prompt-face 'face-alias 'vhdl-prompt)
-(defface vhdl-attribute
+(defface vhdl-font-lock-attribute-face
'((((class color) (background light)) (:foreground "Orchid"))
(((class color) (background dark)) (:foreground "LightSteelBlue"))
(t (:italic t :bold t)))
"Font lock mode face used to highlight standardized attributes."
:group 'vhdl-highlight-faces
:group 'font-lock-highlighting-faces)
-;; backward-compatibility alias
-(put 'vhdl-font-lock-attribute-face 'face-alias 'vhdl-attribute)
-(defface vhdl-enumvalue
+(defface vhdl-font-lock-enumvalue-face
'((((class color) (background light)) (:foreground "SaddleBrown"))
(((class color) (background dark)) (:foreground "BurlyWood"))
(t (:italic t :bold t)))
"Font lock mode face used to highlight standardized enumeration values."
:group 'vhdl-highlight-faces
:group 'font-lock-highlighting-faces)
-;; backward-compatibility alias
-(put 'vhdl-font-lock-enumvalue-face 'face-alias 'vhdl-enumvalue)
-(defface vhdl-function
+(defface vhdl-font-lock-function-face
'((((class color) (background light)) (:foreground "Cyan4"))
(((class color) (background dark)) (:foreground "Orchid1"))
(t (:italic t :bold t)))
"Font lock mode face used to highlight standardized functions and packages."
:group 'vhdl-highlight-faces
:group 'font-lock-highlighting-faces)
-;; backward-compatibility alias
-(put 'vhdl-font-lock-function-face 'face-alias 'vhdl-function)
-(defface vhdl-directive
+(defface vhdl-font-lock-directive-face
'((((class color) (background light)) (:foreground "CadetBlue"))
(((class color) (background dark)) (:foreground "Aquamarine"))
(t (:italic t :bold t)))
"Font lock mode face used to highlight directives."
:group 'vhdl-highlight-faces
:group 'font-lock-highlighting-faces)
-;; backward-compatibility alias
-(put 'vhdl-font-lock-directive-face 'face-alias 'vhdl-directive)
-(defface vhdl-reserved-word
+(defface vhdl-font-lock-reserved-words-face
'((((class color) (background light)) (:foreground "Orange" :bold t))
(((min-colors 88) (class color) (background dark))
(:foreground "Yellow1" :bold t))
@@ -12658,23 +12873,20 @@ This does background highlighting of translate-off regions.")
"Font lock mode face used to highlight additional reserved words."
:group 'vhdl-highlight-faces
:group 'font-lock-highlighting-faces)
-;; backward-compatibility alias
-(put 'vhdl-font-lock-reserved-words-face 'face-alias 'vhdl-reserved-word)
-(defface vhdl-translate-off
+(defface vhdl-font-lock-translate-off-face
'((((class color) (background light)) (:background "LightGray"))
(((class color) (background dark)) (:background "DimGray"))
(t ()))
"Font lock mode face used to background highlight translate-off regions."
:group 'vhdl-highlight-faces
:group 'font-lock-highlighting-faces)
-;; backward-compatibility alias
-(put 'vhdl-font-lock-translate-off-face 'face-alias 'vhdl-translate-off)
;; font lock mode faces used to highlight words with special syntax.
(let ((syntax-alist vhdl-special-syntax-alist))
(while syntax-alist
- (eval `(defface ,(vhdl-function-name "vhdl" (caar syntax-alist))
+ (eval `(defface ,(vhdl-function-name
+ "vhdl-font-lock" (caar syntax-alist) "face")
'((((class color) (background light))
(:foreground ,(nth 2 (car syntax-alist))))
(((class color) (background dark))
@@ -12691,23 +12903,28 @@ This does background highlighting of translate-off regions.")
(defun vhdl-font-lock-init ()
"Initialize fontification."
- ;; highlight template prompts and directives
+ ;; highlight template prompts and directives
(setq vhdl-font-lock-keywords-0
(list (list (concat "\\(^\\|[ \t(.']\\)\\(<"
vhdl-template-prompt-syntax ">\\)")
- 2 'vhdl-prompt t)
+ 2 'vhdl-font-lock-prompt-face t)
(list (concat "--\\s-*"
vhdl-directive-keywords-regexp "\\s-+\\(.*\\)$")
- 2 'vhdl-directive t)))
+ 2 'vhdl-font-lock-directive-face t)
+ ;; highlight c-preprocessor directives
+ (list "^#[ \t]*\\(\\w+\\)\\([ \t]+\\(\\w+\\)\\)?"
+ '(1 font-lock-builtin-face)
+ '(3 font-lock-variable-name-face nil t))))
;; highlight keywords and standardized types, attributes, enumeration
;; values, and subprograms
(setq vhdl-font-lock-keywords-1
(list
- (list (concat "'" vhdl-attributes-regexp) 1 'vhdl-attribute)
+ (list (concat "'" vhdl-attributes-regexp)
+ 1 'vhdl-font-lock-attribute-face)
(list vhdl-types-regexp 1 'font-lock-type-face)
- (list vhdl-functions-regexp 1 'vhdl-function)
- (list vhdl-packages-regexp 1 'vhdl-function)
- (list vhdl-enum-values-regexp 1 'vhdl-enumvalue)
+ (list vhdl-functions-regexp 1 'vhdl-font-lock-function-face)
+ (list vhdl-packages-regexp 1 'vhdl-font-lock-function-face)
+ (list vhdl-enum-values-regexp 1 'vhdl-font-lock-enumvalue-face)
(list vhdl-keywords-regexp 1 'font-lock-keyword-face)))
;; highlight words with special syntax.
(setq vhdl-font-lock-keywords-3
@@ -12718,13 +12935,14 @@ This does background highlighting of translate-off regions.")
(cons
(cons (concat "\\<\\(" (nth 1 (car syntax-alist)) "\\)\\>")
(vhdl-function-name
- "vhdl" (nth 0 (car syntax-alist))))
+ "vhdl-font-lock" (nth 0 (car syntax-alist)) "face"))
keywords))
(setq syntax-alist (cdr syntax-alist)))
keywords))
;; highlight additional reserved words
(setq vhdl-font-lock-keywords-4
- (list (list vhdl-reserved-words-regexp 1 'vhdl-reserved-word)))
+ (list (list vhdl-reserved-words-regexp 1
+ 'vhdl-font-lock-reserved-words-face)))
;; highlight everything together
(setq vhdl-font-lock-keywords
(append
@@ -12749,7 +12967,7 @@ This does background highlighting of translate-off regions.")
'(font-lock-syntactic-keywords . vhdl-font-lock-syntactic-keywords)))
(when (fboundp 'font-lock-unset-defaults)
(font-lock-unset-defaults)) ; not implemented in XEmacs
- (font-lock-set-defaults) ;What for? --Stef
+ (font-lock-set-defaults)
(font-lock-mode nil)
(font-lock-mode t))
@@ -12762,12 +12980,18 @@ This does background highlighting of translate-off regions.")
(unless (or (not vhdl-print-customize-faces)
ps-print-color-p)
(set (make-local-variable 'ps-bold-faces)
- '(font-lock-keyword-face font-lock-type-face
- vhdl-attribute vhdl-enumvalue vhdl-directive))
+ '(font-lock-keyword-face
+ font-lock-type-face
+ vhdl-font-lock-attribute-face
+ vhdl-font-lock-enumvalue-face
+ vhdl-font-lock-directive-face))
(set (make-local-variable 'ps-italic-faces)
'(font-lock-comment-face
- font-lock-function-name-face font-lock-type-face
- vhdl-attribute vhdl-enumvalue vhdl-directive))
+ font-lock-function-name-face
+ font-lock-type-face
+ vhdl-font-lock-attribute-face
+ vhdl-font-lock-enumvalue-face
+ vhdl-font-lock-directive-face))
(set (make-local-variable 'ps-underlined-faces)
'(font-lock-string-face))
(setq ps-always-build-face-reference t))
@@ -12811,9 +13035,9 @@ project/directory.")
;; (ent-key ent-name ent-file ent-line
;; (arch-key arch-name arch-file arch-line
;; (inst-key inst-name inst-file inst-line inst-comp-name inst-ent-key
-;; inst-arch-key inst-conf-key inst-lib-key)
-;; (lib-name pack-key))
-;; (lib-name pack-key))
+;; inst-arch-key inst-conf-key inst-lib-key inst-path)
+;; (lib-name pack-key))
+;; mra-key (lib-name pack-key))
(defvar vhdl-config-alist nil
"Cache with configurations for each project/directory.")
@@ -12821,7 +13045,7 @@ project/directory.")
;; (cache-key
;; (conf-key conf-name conf-file conf-line ent-key arch-key
;; (inst-key inst-comp-name inst-ent-key inst-arch-key
-;; inst-conf-key inst-lib-key)
+;; inst-conf-key inst-lib-key)
;; (lib-name pack-key)))
(defvar vhdl-package-alist nil
@@ -12846,7 +13070,7 @@ project/directory.")
;; structure: (parenthesised expression means list of such entries)
;; (cache-key
;; (file-name (ent-list) (arch-list) (arch-ent-list) (conf-list)
-;; (pack-list) (pack-body-list) (inst-list) (inst-ent-list))
+;; (pack-list) (pack-body-list) (inst-list) (inst-ent-list))
(defvar vhdl-directory-alist nil
"Cache with source directories for each project.")
@@ -12979,7 +13203,6 @@ hierarchy otherwise.")
(let* ((ent-name (match-string-no-properties 1))
(ent-key (downcase ent-name))
(ent-entry (aget ent-alist ent-key t))
- (arch-alist (nth 3 ent-entry))
(lib-alist (vhdl-scan-context-clause)))
(if (nth 1 ent-entry)
(vhdl-warning-when-idle
@@ -12989,10 +13212,11 @@ hierarchy otherwise.")
(setq ent-list (cons ent-key ent-list))
(aput 'ent-alist ent-key
(list ent-name file-name (vhdl-current-line)
- arch-alist lib-alist)))))
+ (nth 3 ent-entry) (nth 4 ent-entry)
+ lib-alist)))))
;; scan for architectures
(goto-char (point-min))
- (while (re-search-forward "^[ \t]*architecture[ \t\n]+\\(\\w+\\)[ \t\n]+of[ \t\n]+\\(\\w+\\)[ \t\n]+is\\>" nil t)
+ (while (re-search-forward "^[ \t]*architecture[ \t\n]+\\(\\w+\\)[ \t\n]+of[ \t\n]+\\(\\w+\\)[ \t\n]+is\\>" nil t)
(let* ((arch-name (match-string-no-properties 1))
(arch-key (downcase arch-name))
(ent-name (match-string-no-properties 2))
@@ -13015,7 +13239,7 @@ hierarchy otherwise.")
(list (or (nth 0 ent-entry) ent-name)
(nth 1 ent-entry) (nth 2 ent-entry)
(vhdl-sort-alist arch-alist)
- (nth 4 ent-entry))))))
+ arch-key (nth 5 ent-entry))))))
;; scan for configurations
(goto-char (point-min))
(while (re-search-forward "^[ \t]*configuration[ \t\n]+\\(\\w+\\)[ \t\n]+of[ \t\n]+\\(\\w+\\)[ \t\n]+is\\>" nil t)
@@ -13132,47 +13356,61 @@ hierarchy otherwise.")
(beg-of-unit (point))
(end-of-unit (vhdl-get-end-of-unit))
(inst-no 0)
- inst-alist)
+ inst-alist inst-path)
;; scan for contained instantiations
(while (and (re-search-forward
(concat "^[ \t]*\\(\\w+\\)[ \t\n]*:[ \t\n]*\\("
"\\(\\w+\\)[ \t\n]+\\(--[^\n]*\n[ \t\n]*\\)*\\(generic\\|port\\)[ \t\n]+map\\>\\|"
"component[ \t\n]+\\(\\w+\\)\\|"
- "\\(\\(entity\\)\\|configuration\\)[ \t\n]+\\(\\(\\w+\\)\\.\\)?\\(\\w+\\)\\([ \t\n]*(\\(\\w+\\))\\)?\\)") end-of-unit t)
+ "\\(\\(entity\\)\\|configuration\\)[ \t\n]+\\(\\(\\w+\\)\\.\\)?\\(\\w+\\)\\([ \t\n]*(\\(\\w+\\))\\)?\\|"
+ "\\(\\(for\\|if\\)\\>[^;:]+\\<generate\\>\\|block\\>\\)\\)\\|"
+ "\\(^[ \t]*end[ \t\n]+\\(generate\\|block\\)\\>\\)") end-of-unit t)
(or (not limit-hier-inst-no)
(<= (setq inst-no (1+ inst-no))
limit-hier-inst-no)))
- (let* ((inst-name (match-string-no-properties 1))
- (inst-key (downcase inst-name))
- (inst-comp-name
- (or (match-string-no-properties 3)
- (match-string-no-properties 6)))
- (inst-ent-key
- (or (and (match-string 8)
- (vhdl-match-string-downcase 11))
- (and inst-comp-name
- (downcase inst-comp-name))))
- (inst-arch-key (vhdl-match-string-downcase 13))
- (inst-conf-key
- (and (not (match-string 8))
- (vhdl-match-string-downcase 11)))
- (inst-lib-key (vhdl-match-string-downcase 10)))
- (goto-char (match-end 1))
- (setq inst-list (cons inst-key inst-list)
- inst-ent-list (cons inst-ent-key inst-ent-list))
- (setq inst-alist
- (append
- inst-alist
- (list (list inst-key inst-name file-name
- (vhdl-current-line) inst-comp-name
- inst-ent-key inst-arch-key
- inst-conf-key inst-lib-key))))))
+ (cond
+ ;; block/generate beginning found
+ ((match-string 14)
+ (setq inst-path
+ (cons (match-string-no-properties 1) inst-path)))
+ ;; block/generate end found
+ ((match-string 16)
+ (setq inst-path (cdr inst-path)))
+ ;; instantiation found
+ (t
+ (let* ((inst-name (match-string-no-properties 1))
+ (inst-key (downcase inst-name))
+ (inst-comp-name
+ (or (match-string-no-properties 3)
+ (match-string-no-properties 6)))
+ (inst-ent-key
+ (or (and (match-string 8)
+ (vhdl-match-string-downcase 11))
+ (and inst-comp-name
+ (downcase inst-comp-name))))
+ (inst-arch-key (vhdl-match-string-downcase 13))
+ (inst-conf-key
+ (and (not (match-string 8))
+ (vhdl-match-string-downcase 11)))
+ (inst-lib-key (vhdl-match-string-downcase 10)))
+ (goto-char (match-end 1))
+ (setq inst-list (cons inst-key inst-list)
+ inst-ent-list
+ (cons inst-ent-key inst-ent-list))
+ (setq inst-alist
+ (append
+ inst-alist
+ (list (list inst-key inst-name file-name
+ (vhdl-current-line) inst-comp-name
+ inst-ent-key inst-arch-key
+ inst-conf-key inst-lib-key
+ (reverse inst-path)))))))))
;; scan for contained configuration specifications
(goto-char beg-of-unit)
(while (re-search-forward
(concat "^[ \t]*for[ \t\n]+\\(\\w+\\([ \t\n]*,[ \t\n]*\\w+\\)*\\)[ \t\n]*:[ \t\n]*\\(\\w+\\)[ \t\n]+\\(--[^\n]*\n[ \t\n]*\\)*"
"use[ \t\n]+\\(\\(entity\\)\\|configuration\\)[ \t\n]+\\(\\(\\w+\\)\\.\\)?\\(\\w+\\)\\([ \t\n]*(\\(\\w+\\))\\)?") end-of-unit t)
- (let* ((inst-comp-name (match-string-no-properties 3))
+ (let* ((inst-comp-name (match-string-no-properties 3))
(inst-ent-key
(and (match-string 6)
(vhdl-match-string-downcase 9)))
@@ -13216,7 +13454,7 @@ hierarchy otherwise.")
(aput 'ent-alist ent-key
(list (nth 0 ent-entry) (nth 1 ent-entry)
(nth 2 ent-entry) (vhdl-sort-alist arch-alist)
- (nth 4 ent-entry)))
+ (nth 4 ent-entry) (nth 5 ent-entry)))
(when (and limit-hier-inst-no
(> inst-no limit-hier-inst-no))
(message "WARNING: Scan limit (hierarchy: instances per architecture) reached in file:\n \"%s\"" file-name)
@@ -13409,7 +13647,7 @@ of PROJECT."
(if (or (nth 1 entry) arch-alist)
(aput 'ent-alist ent-key
(list (nth 0 entry) (nth 1 entry) (nth 2 entry)
- arch-alist (nth 4 entry)))
+ arch-alist (nth 4 entry) (nth 5 entry)))
(adelete 'ent-alist ent-key)))
(setq arch-list (cdr arch-list)
arch-ent-list (cdr arch-ent-list)))
@@ -13473,6 +13711,7 @@ of PROJECT."
updated))
(setq file-list (cdr file-list)))
(setq vhdl-modified-file-list nil)
+ (vhdl-speedbar-update-current-unit)
(when updated (message "Updating hierarchy...done")))))
;; structure (parenthesised expression means list of such entries)
@@ -13527,17 +13766,18 @@ entity ENT-KEY."
(setq inst-ent-entry (aget ent-alist inst-ent-key t))
;; determine architecture
(setq inst-arch-key
- (or (nth 3 (car tmp-list)) ; from configuration
- (nth 4 inst-conf-entry) ; from subconfiguration
- (nth 6 inst-entry) ; from direct instantiation
+ (or (nth 3 (car tmp-list)) ; from configuration
+ (nth 4 inst-conf-entry) ; from subconfiguration
+ (nth 6 inst-entry) ; from direct instantiation
(nth 4 (aget conf-alist (nth 7 inst-entry)))
- ; from configuration spec.
- (caar (nth 3 inst-ent-entry)))) ; random (simplified MRA)
+ ; from configuration spec.
+ (nth 4 inst-ent-entry) ; MRA
+ (caar (nth 3 inst-ent-entry)))) ; first alphabetically
(setq inst-arch-entry (aget (nth 3 inst-ent-entry) inst-arch-key t))
;; set library
(setq inst-lib-key
- (or (nth 5 (car tmp-list)) ; from configuration
- (nth 8 inst-entry))) ; from direct instantiation
+ (or (nth 5 (car tmp-list)) ; from configuration
+ (nth 8 inst-entry))) ; from direct instantiation
;; gather information for this instance
(setq comp-entry
(list (nth 1 inst-entry)
@@ -13709,7 +13949,7 @@ entity ENT-KEY."
(progn (load-file file-dir-name)
(string< (mapconcat
(lambda (a) (format "%3d" (string-to-number a)))
- (split-string "3.31.14" "\\.") "")
+ (split-string "3.33" "\\.") "")
(mapconcat
(lambda (a) (format "%3d" (string-to-number a)))
(split-string vhdl-cache-version "\\.") "")))
@@ -13769,6 +14009,8 @@ if required."
(define-key vhdl-speedbar-key-map "_" 'vhdl-speedbar-contract-all)
(define-key vhdl-speedbar-key-map "C" 'vhdl-speedbar-port-copy)
(define-key vhdl-speedbar-key-map "P" 'vhdl-speedbar-place-component)
+ (define-key vhdl-speedbar-key-map "F" 'vhdl-speedbar-configuration)
+ (define-key vhdl-speedbar-key-map "A" 'vhdl-speedbar-select-mra)
(define-key vhdl-speedbar-key-map "K" 'vhdl-speedbar-make-design)
(define-key vhdl-speedbar-key-map "R" 'vhdl-speedbar-rescan-hierarchy)
(define-key vhdl-speedbar-key-map "S" 'vhdl-save-caches)
@@ -13810,6 +14052,10 @@ if required."
(vhdl-speedbar-check-unit 'subprogram))]
["Place Component" vhdl-speedbar-place-component
(vhdl-speedbar-check-unit 'entity)]
+ ["Generate Configuration" vhdl-speedbar-configuration
+ (vhdl-speedbar-check-unit 'architecture)]
+ ["Select as MRA" vhdl-speedbar-select-mra
+ (vhdl-speedbar-check-unit 'architecture)]
["Make" vhdl-speedbar-make-design
(save-excursion (beginning-of-line) (looking-at "[0-9]+: *[[<]"))]
["Generate Makefile" vhdl-speedbar-generate-makefile
@@ -13976,7 +14222,7 @@ otherwise use cached data."
'bracket ?+ 'vhdl-speedbar-expand-entity (nth 0 ent-entry)
(nth 1 ent-entry) 'vhdl-speedbar-find-file
(cons (nth 2 ent-entry) (nth 3 ent-entry))
- 'vhdl-speedbar-entity depth)
+ 'vhdl-speedbar-entity-face depth)
(unless (nth 2 ent-entry)
(end-of-line 0) (insert "!") (forward-char 1))
(unless (member (nth 0 ent-entry) ent-inst-list)
@@ -13990,7 +14236,7 @@ otherwise use cached data."
'bracket ?+ 'vhdl-speedbar-expand-config (nth 0 conf-entry)
(nth 1 conf-entry) 'vhdl-speedbar-find-file
(cons (nth 2 conf-entry) (nth 3 conf-entry))
- 'vhdl-speedbar-configuration depth)
+ 'vhdl-speedbar-configuration-face depth)
(setq conf-alist (cdr conf-alist)))
;; insert packages
(when pack-alist (vhdl-speedbar-make-title-line "Packages:" depth))
@@ -14159,7 +14405,8 @@ otherwise use cached data."
(ent-entry (aget ent-alist token t))
(arch-alist (nth 3 ent-entry))
(inst-alist (vhdl-get-instantiations token indent))
- (subpack-alist (nth 4 ent-entry))
+ (subpack-alist (nth 5 ent-entry))
+ (multiple-arch (> (length arch-alist) 1))
arch-entry inst-entry)
(if (not (or arch-alist inst-alist subpack-alist))
(speedbar-change-expand-button-char ??)
@@ -14181,7 +14428,10 @@ otherwise use cached data."
(cons token (nth 0 arch-entry))
(nth 1 arch-entry) 'vhdl-speedbar-find-file
(cons (nth 2 arch-entry) (nth 3 arch-entry))
- 'vhdl-speedbar-architecture (1+ indent))
+ 'vhdl-speedbar-architecture-face (1+ indent))
+ (when (and multiple-arch
+ (equal (nth 0 arch-entry) (nth 4 ent-entry)))
+ (end-of-line 0) (insert " (mra)") (forward-char 1))
(setq arch-alist (cdr arch-alist)))
;; insert instantiations
(when inst-alist
@@ -14364,7 +14614,7 @@ otherwise use cached data."
(cons token (nth 0 comp-entry))
(nth 1 comp-entry) 'vhdl-speedbar-find-file
(cons (nth 2 comp-entry) (nth 3 comp-entry))
- 'vhdl-speedbar-entity (1+ indent))
+ 'vhdl-speedbar-entity-face (1+ indent))
(setq comp-alist (cdr comp-alist)))
;; insert subprograms
(when func-alist
@@ -14414,7 +14664,8 @@ otherwise use cached data."
(setq pack-entry (aget pack-alist pack-key t))
(vhdl-speedbar-make-subpack-line
(or (nth 0 pack-entry) pack-key) lib-name
- (cons (nth 1 pack-entry) (nth 2 pack-entry)) indent)
+ (cons (nth 1 pack-entry) (nth 2 pack-entry))
+ (cons (nth 6 pack-entry) (nth 7 pack-entry)) indent)
(setq subpack-alist (cdr subpack-alist)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -14480,43 +14731,43 @@ NO-POSITION non-nil means do not re-position cursor."
(let* ((file-entry (aget file-alist speedbar-last-selected-file t)))
(vhdl-speedbar-update-units
"\\[.\\] " (nth 0 file-entry)
- speedbar-last-selected-file 'vhdl-speedbar-entity)
+ speedbar-last-selected-file 'vhdl-speedbar-entity-face)
(vhdl-speedbar-update-units
"{.} " (nth 1 file-entry)
- speedbar-last-selected-file 'vhdl-speedbar-architecture)
+ speedbar-last-selected-file 'vhdl-speedbar-architecture-face)
(vhdl-speedbar-update-units
"\\[.\\] " (nth 3 file-entry)
- speedbar-last-selected-file 'vhdl-speedbar-configuration)
+ speedbar-last-selected-file 'vhdl-speedbar-configuration-face)
(vhdl-speedbar-update-units
"[]>] " (nth 4 file-entry)
- speedbar-last-selected-file 'vhdl-speedbar-package)
+ speedbar-last-selected-file 'vhdl-speedbar-package-face)
(vhdl-speedbar-update-units
"\\[.\\].+(" '("body")
- speedbar-last-selected-file 'vhdl-speedbar-package)
+ speedbar-last-selected-file 'vhdl-speedbar-package-face)
(vhdl-speedbar-update-units
"> " (nth 6 file-entry)
- speedbar-last-selected-file 'vhdl-speedbar-instantiation))
+ speedbar-last-selected-file 'vhdl-speedbar-instantiation-face))
;; highlight current units
(let* ((file-entry (aget file-alist file-name t)))
(setq
pos (vhdl-speedbar-update-units
"\\[.\\] " (nth 0 file-entry)
- file-name 'vhdl-speedbar-entity-selected pos)
+ file-name 'vhdl-speedbar-entity-selected-face pos)
pos (vhdl-speedbar-update-units
"{.} " (nth 1 file-entry)
- file-name 'vhdl-speedbar-architecture-selected pos)
+ file-name 'vhdl-speedbar-architecture-selected-face pos)
pos (vhdl-speedbar-update-units
"\\[.\\] " (nth 3 file-entry)
- file-name 'vhdl-speedbar-configuration-selected pos)
+ file-name 'vhdl-speedbar-configuration-selected-face pos)
pos (vhdl-speedbar-update-units
"[]>] " (nth 4 file-entry)
- file-name 'vhdl-speedbar-package-selected pos)
+ file-name 'vhdl-speedbar-package-selected-face pos)
pos (vhdl-speedbar-update-units
"\\[.\\].+(" '("body")
- file-name 'vhdl-speedbar-package-selected pos)
+ file-name 'vhdl-speedbar-package-selected-face pos)
pos (vhdl-speedbar-update-units
"> " (nth 6 file-entry)
- file-name 'vhdl-speedbar-instantiation-selected pos))))))
+ file-name 'vhdl-speedbar-instantiation-selected-face pos))))))
;; move speedbar so the first highlighted unit is visible
(when (and pos (not no-position))
(goto-char pos)
@@ -14567,21 +14818,21 @@ NO-POSITION non-nil means do not re-position cursor."
(insert "(top)")
(insert inst-name)
(speedbar-make-button
- start (point) 'vhdl-speedbar-instantiation 'speedbar-highlight-face
+ start (point) 'vhdl-speedbar-instantiation-face 'speedbar-highlight-face
'vhdl-speedbar-find-file inst-file-marker))
(insert delimiter)
(when ent-name
(setq start (point))
(insert ent-name)
(speedbar-make-button
- start (point) 'vhdl-speedbar-entity 'speedbar-highlight-face
+ start (point) 'vhdl-speedbar-entity-face 'speedbar-highlight-face
'vhdl-speedbar-find-file ent-file-marker)
(when arch-name
(insert " (")
(setq start (point))
(insert arch-name)
(speedbar-make-button
- start (point) 'vhdl-speedbar-architecture 'speedbar-highlight-face
+ start (point) 'vhdl-speedbar-architecture-face 'speedbar-highlight-face
'vhdl-speedbar-find-file arch-file-marker)
(insert ")"))
(when conf-name
@@ -14589,14 +14840,14 @@ NO-POSITION non-nil means do not re-position cursor."
(setq start (point))
(insert conf-name)
(speedbar-make-button
- start (point) 'vhdl-speedbar-configuration 'speedbar-highlight-face
+ start (point) 'vhdl-speedbar-configuration-face 'speedbar-highlight-face
'vhdl-speedbar-find-file conf-file-marker)
(insert ")")))
(when (and lib-name (not (equal lib-name (downcase (vhdl-work-library)))))
(setq start (point))
(insert " (" lib-name ")")
(put-text-property (+ 2 start) (1- (point)) 'face
- 'vhdl-speedbar-library))
+ 'vhdl-speedbar-library-face))
(insert-char ?\n 1)
(put-text-property visible-start (point) 'invisible nil)))
@@ -14620,7 +14871,7 @@ NO-POSITION non-nil means do not re-position cursor."
(setq start (point))
(insert pack-name)
(speedbar-make-button
- start (point) 'vhdl-speedbar-package 'speedbar-highlight-face
+ start (point) 'vhdl-speedbar-package-face 'speedbar-highlight-face
'vhdl-speedbar-find-file pack-file-marker)
(unless (car pack-file-marker)
(insert "!"))
@@ -14629,14 +14880,14 @@ NO-POSITION non-nil means do not re-position cursor."
(setq start (point))
(insert "body")
(speedbar-make-button
- start (point) 'vhdl-speedbar-package 'speedbar-highlight-face
+ start (point) 'vhdl-speedbar-package-face 'speedbar-highlight-face
'vhdl-speedbar-find-file body-file-marker)
(insert ")"))
(insert-char ?\n 1)
(put-text-property visible-start (point) 'invisible nil)))
(defun vhdl-speedbar-make-subpack-line (pack-name lib-name pack-file-marker
- depth)
+ pack-body-file-marker depth)
"Insert used package entry."
(let ((start (point))
visible-start)
@@ -14653,12 +14904,20 @@ NO-POSITION non-nil means do not re-position cursor."
(setq start (point))
(insert pack-name)
(speedbar-make-button
- start (point) 'vhdl-speedbar-package 'speedbar-highlight-face
+ start (point) 'vhdl-speedbar-package-face 'speedbar-highlight-face
'vhdl-speedbar-find-file pack-file-marker)
+ (when (car pack-body-file-marker)
+ (insert " (")
+ (setq start (point))
+ (insert "body")
+ (speedbar-make-button
+ start (point) 'vhdl-speedbar-package-face 'speedbar-highlight-face
+ 'vhdl-speedbar-find-file pack-body-file-marker)
+ (insert ")"))
(setq start (point))
(insert " (" lib-name ")")
(put-text-property (+ 2 start) (1- (point)) 'face
- 'vhdl-speedbar-library)
+ 'vhdl-speedbar-library-face)
(insert-char ?\n 1)
(put-text-property visible-start (point) 'invisible nil)))
@@ -14681,14 +14940,14 @@ NO-POSITION non-nil means do not re-position cursor."
(setq start (point))
(insert func-name)
(speedbar-make-button
- start (point) 'vhdl-speedbar-subprogram 'speedbar-highlight-face
+ start (point) 'vhdl-speedbar-subprogram-face 'speedbar-highlight-face
'vhdl-speedbar-find-file func-file-marker)
(when (car func-body-file-marker)
(insert " (")
(setq start (point))
(insert "body")
(speedbar-make-button
- start (point) 'vhdl-speedbar-subprogram 'speedbar-highlight-face
+ start (point) 'vhdl-speedbar-subprogram-face 'speedbar-highlight-face
'vhdl-speedbar-find-file func-body-file-marker)
(insert ")"))
(insert-char ?\n 1)
@@ -14776,22 +15035,22 @@ NO-POSITION non-nil means do not re-position cursor."
(message
"%s \"%s\" in \"%s\""
;; design unit kind
- (cond ((or (eq face 'vhdl-speedbar-entity)
- (eq face 'vhdl-speedbar-entity-selected))
+ (cond ((or (eq face 'vhdl-speedbar-entity-face)
+ (eq face 'vhdl-speedbar-entity-selected-face))
(if (equal (match-string 2) ">") "Component" "Entity"))
- ((or (eq face 'vhdl-speedbar-architecture)
- (eq face 'vhdl-speedbar-architecture-selected))
+ ((or (eq face 'vhdl-speedbar-architecture-face)
+ (eq face 'vhdl-speedbar-architecture-selected-face))
"Architecture")
- ((or (eq face 'vhdl-speedbar-configuration)
- (eq face 'vhdl-speedbar-configuration-selected))
+ ((or (eq face 'vhdl-speedbar-configuration-face)
+ (eq face 'vhdl-speedbar-configuration-selected-face))
"Configuration")
- ((or (eq face 'vhdl-speedbar-package)
- (eq face 'vhdl-speedbar-package-selected))
+ ((or (eq face 'vhdl-speedbar-package-face)
+ (eq face 'vhdl-speedbar-package-selected-face))
"Package")
- ((or (eq face 'vhdl-speedbar-instantiation)
- (eq face 'vhdl-speedbar-instantiation-selected))
+ ((or (eq face 'vhdl-speedbar-instantiation-face)
+ (eq face 'vhdl-speedbar-instantiation-selected-face))
"Instantiation")
- ((eq face 'vhdl-speedbar-subprogram)
+ ((eq face 'vhdl-speedbar-subprogram-face)
"Subprogram")
(t ""))
;; design unit name
@@ -14811,6 +15070,18 @@ NO-POSITION non-nil means do not re-position cursor."
(set-text-properties 0 (length string) nil string)
string))
+(defun vhdl-speedbar-higher-text ()
+ "Get speedbar-line-text of higher level."
+ (let (depth string)
+ (save-excursion
+ (beginning-of-line)
+ (looking-at "^\\([0-9]+\\):")
+ (setq depth (string-to-number (match-string 1)))
+ (when (re-search-backward (format "^%d: *[[<{][-+?][]>}] \\([^ \n]+\\)" (1- depth)) nil t)
+ (setq string (match-string 1))
+ (set-text-properties 0 (length string) nil string)
+ string))))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Help functions
@@ -14935,6 +15206,31 @@ is already shown in a buffer."
(vhdl-compose-place-component)
(select-frame speedbar-frame)))
+(defun vhdl-speedbar-configuration ()
+ "Generate configuration for the architecture under the cursor."
+ (interactive)
+ (if (not (vhdl-speedbar-check-unit 'architecture))
+ (error "ERROR: No architecture under cursor")
+ (let ((arch-name (vhdl-speedbar-line-text))
+ (ent-name (vhdl-speedbar-higher-text)))
+ (if (fboundp 'speedbar-select-attached-frame)
+ (speedbar-select-attached-frame)
+ (select-frame speedbar-attached-frame))
+ (vhdl-compose-configuration ent-name arch-name))))
+
+(defun vhdl-speedbar-select-mra ()
+ "Select the architecture under the cursor as MRA."
+ (interactive)
+ (if (not (vhdl-speedbar-check-unit 'architecture))
+ (error "ERROR: No architecture under cursor")
+ (let* ((arch-key (downcase (vhdl-speedbar-line-text)))
+ (ent-key (downcase (vhdl-speedbar-higher-text)))
+ (ent-alist (aget vhdl-entity-alist
+ (or (vhdl-project-p) default-directory) t))
+ (ent-entry (aget ent-alist ent-key t)))
+ (setcar (cddr (cddr ent-entry)) arch-key) ; (nth 4 ent-entry)
+ (speedbar-refresh))))
+
(defun vhdl-speedbar-make-design ()
"Make (compile) design unit or directory/project under the cursor."
(interactive)
@@ -14967,11 +15263,15 @@ expansion function)."
(speedbar-position-cursor-on-line)
(cond ((eq design-unit 'entity)
(memq (get-text-property (match-end 0) 'face)
- '(vhdl-speedbar-entity
- vhdl-speedbar-entity-selected)))
+ '(vhdl-speedbar-entity-face
+ vhdl-speedbar-entity-selected-face)))
+ ((eq design-unit 'architecture)
+ (memq (get-text-property (match-end 0) 'face)
+ '(vhdl-speedbar-architecture-face
+ vhdl-speedbar-architecture-selected-face)))
((eq design-unit 'subprogram)
(eq (get-text-property (match-end 0) 'face)
- 'vhdl-speedbar-subprogram))
+ 'vhdl-speedbar-subprogram-face))
(t nil))))
(defun vhdl-speedbar-set-depth (depth)
@@ -14982,106 +15282,82 @@ expansion function)."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Fontification
-(defface vhdl-speedbar-entity
+(defface vhdl-speedbar-entity-face
'((((class color) (background light)) (:foreground "ForestGreen"))
(((class color) (background dark)) (:foreground "PaleGreen")))
"Face used for displaying entity names."
:group 'speedbar-faces)
-;; backward-compatibility alias
-(put 'vhdl-speedbar-entity-face 'face-alias 'vhdl-speedbar-entity)
-(defface vhdl-speedbar-architecture
+(defface vhdl-speedbar-architecture-face
'((((min-colors 88) (class color) (background light)) (:foreground "Blue1"))
(((class color) (background light)) (:foreground "Blue"))
+
(((class color) (background dark)) (:foreground "LightSkyBlue")))
"Face used for displaying architecture names."
:group 'speedbar-faces)
-;; backward-compatibility alias
-(put 'vhdl-speedbar-architecture-face 'face-alias 'vhdl-speedbar-architecture)
-(defface vhdl-speedbar-configuration
+(defface vhdl-speedbar-configuration-face
'((((class color) (background light)) (:foreground "DarkGoldenrod"))
(((class color) (background dark)) (:foreground "Salmon")))
"Face used for displaying configuration names."
:group 'speedbar-faces)
-;; backward-compatibility alias
-(put 'vhdl-speedbar-configuration-face 'face-alias 'vhdl-speedbar-configuration)
-(defface vhdl-speedbar-package
+(defface vhdl-speedbar-package-face
'((((class color) (background light)) (:foreground "Grey50"))
(((class color) (background dark)) (:foreground "Grey80")))
"Face used for displaying package names."
:group 'speedbar-faces)
-;; backward-compatibility alias
-(put 'vhdl-speedbar-package-face 'face-alias 'vhdl-speedbar-package)
-(defface vhdl-speedbar-library
+(defface vhdl-speedbar-library-face
'((((class color) (background light)) (:foreground "Purple"))
(((class color) (background dark)) (:foreground "Orchid1")))
"Face used for displaying library names."
:group 'speedbar-faces)
-;; backward-compatibility alias
-(put 'vhdl-speedbar-library-face 'face-alias 'vhdl-speedbar-library)
-(defface vhdl-speedbar-instantiation
+(defface vhdl-speedbar-instantiation-face
'((((class color) (background light)) (:foreground "Brown"))
(((min-colors 88) (class color) (background dark)) (:foreground "Yellow1"))
(((class color) (background dark)) (:foreground "Yellow")))
"Face used for displaying instantiation names."
:group 'speedbar-faces)
-;; backward-compatibility alias
-(put 'vhdl-speedbar-instantiation-face 'face-alias 'vhdl-speedbar-instantiation)
-(defface vhdl-speedbar-subprogram
+(defface vhdl-speedbar-subprogram-face
'((((class color) (background light)) (:foreground "Orchid4"))
(((class color) (background dark)) (:foreground "BurlyWood2")))
"Face used for displaying subprogram names."
:group 'speedbar-faces)
-;; backward-compatibility alias
-(put 'vhdl-speedbar-subprogram-face 'face-alias 'vhdl-speedbar-subprogram)
-(defface vhdl-speedbar-entity-selected
+(defface vhdl-speedbar-entity-selected-face
'((((class color) (background light)) (:foreground "ForestGreen" :underline t))
(((class color) (background dark)) (:foreground "PaleGreen" :underline t)))
"Face used for displaying entity names."
:group 'speedbar-faces)
-;; backward-compatibility alias
-(put 'vhdl-speedbar-entity-selected-face 'face-alias 'vhdl-speedbar-entity-selected)
-(defface vhdl-speedbar-architecture-selected
- '((((min-colors 88) (class color) (background light)) (:foreground "Blue1" :underline t))
- (((min-colors 88) (class color) (background light)) (:foreground "Blue1" :underline t))
+(defface vhdl-speedbar-architecture-selected-face
+ '((((min-colors 88) (class color) (background light)) (:foreground
+ "Blue1" :underline t))
(((class color) (background light)) (:foreground "Blue" :underline t))
(((class color) (background dark)) (:foreground "LightSkyBlue" :underline t)))
"Face used for displaying architecture names."
:group 'speedbar-faces)
-;; backward-compatibility alias
-(put 'vhdl-speedbar-architecture-selected-face 'face-alias 'vhdl-speedbar-architecture-selected)
-(defface vhdl-speedbar-configuration-selected
+(defface vhdl-speedbar-configuration-selected-face
'((((class color) (background light)) (:foreground "DarkGoldenrod" :underline t))
(((class color) (background dark)) (:foreground "Salmon" :underline t)))
"Face used for displaying configuration names."
:group 'speedbar-faces)
-;; backward-compatibility alias
-(put 'vhdl-speedbar-configuration-selected-face 'face-alias 'vhdl-speedbar-configuration-selected)
-(defface vhdl-speedbar-package-selected
+(defface vhdl-speedbar-package-selected-face
'((((class color) (background light)) (:foreground "Grey50" :underline t))
(((class color) (background dark)) (:foreground "Grey80" :underline t)))
"Face used for displaying package names."
:group 'speedbar-faces)
-;; backward-compatibility alias
-(put 'vhdl-speedbar-package-selected-face 'face-alias 'vhdl-speedbar-package-selected)
-(defface vhdl-speedbar-instantiation-selected
+(defface vhdl-speedbar-instantiation-selected-face
'((((class color) (background light)) (:foreground "Brown" :underline t))
- (((min-colors 88) (class color) (background dark)) (:foreground "Yellow1" :underline t))
(((class color) (background dark)) (:foreground "Yellow" :underline t)))
"Face used for displaying instantiation names."
:group 'speedbar-faces)
-;; backward-compatibility alias
-(put 'vhdl-speedbar-instantiation-selected-face 'face-alias 'vhdl-speedbar-instantiation-selected)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Initialization
@@ -15133,7 +15409,7 @@ expansion function)."
;; open entity file
(unless (eq vhdl-compose-create-files 'none)
(setq ent-file-name
- (concat (vhdl-replace-string vhdl-entity-file-name ent-name)
+ (concat (vhdl-replace-string vhdl-entity-file-name ent-name t)
"." (file-name-extension (buffer-file-name))))
(when (and (file-exists-p ent-file-name)
(not (y-or-n-p (concat "File \"" ent-file-name
@@ -15174,7 +15450,7 @@ expansion function)."
(setq ent-buffer (current-buffer))
(setq arch-file-name
(concat (vhdl-replace-string vhdl-architecture-file-name
- (concat ent-name " " arch-name))
+ (concat ent-name " " arch-name) t)
"." (file-name-extension (buffer-file-name))))
(when (and (file-exists-p arch-file-name)
(not (y-or-n-p (concat "File \"" arch-file-name
@@ -15211,7 +15487,7 @@ expansion function)."
(vhdl-insert-keyword "END ")
(unless (vhdl-standard-p '87) (vhdl-insert-keyword "ARCHITECTURE "))
(insert arch-name ";\n\n")
- ;; insert footer
+ ;; insert footer and save
(if (and vhdl-compose-include-header (not (equal vhdl-file-footer "")))
(vhdl-template-footer)
(vhdl-comment-display-line) (insert "\n"))
@@ -15239,7 +15515,7 @@ component instantiation."
(error "ERROR: No architecture found"))
(let* ((ent-name (match-string 1))
(ent-file-name
- (concat (vhdl-replace-string vhdl-entity-file-name ent-name)
+ (concat (vhdl-replace-string vhdl-entity-file-name ent-name t)
"." (file-name-extension (buffer-file-name))))
(orig-buffer (current-buffer)))
(message "Placing component \"%s\"..." (nth 0 vhdl-port-list))
@@ -15291,14 +15567,14 @@ component instantiation."
(error "ERROR: No architecture found"))
(let* ((ent-name (match-string 1))
(ent-file-name
- (concat (vhdl-replace-string vhdl-entity-file-name ent-name)
+ (concat (vhdl-replace-string vhdl-entity-file-name ent-name t)
"." (file-name-extension (buffer-file-name))))
(arch-decl-pos (point-marker))
(arch-stat-pos (re-search-forward "^begin\\>" nil))
(arch-end-pos (re-search-forward "^end\\>" nil))
(pack-name (vhdl-get-components-package-name))
(pack-file-name
- (concat (vhdl-replace-string vhdl-package-file-name pack-name)
+ (concat (vhdl-replace-string vhdl-package-file-name pack-name t)
"." (file-name-extension (buffer-file-name))))
inst-name comp-name comp-ent-name comp-ent-file-name has-generic
port-alist generic-alist inst-alist
@@ -15334,7 +15610,7 @@ component instantiation."
(vhdl-port-copy)))
;; ... from entity declaration (direct instantiation)
(setq comp-ent-file-name
- (concat (vhdl-replace-string vhdl-entity-file-name comp-ent-name)
+ (concat (vhdl-replace-string vhdl-entity-file-name comp-ent-name t)
"." (file-name-extension (buffer-file-name))))
(vhdl-visit-file
comp-ent-file-name t
@@ -15345,7 +15621,8 @@ component instantiation."
(vhdl-port-copy))))
(vhdl-port-flatten t)
(setq generic-alist (nth 1 vhdl-port-list)
- port-alist (nth 2 vhdl-port-list))
+ port-alist (nth 2 vhdl-port-list)
+ vhdl-port-list nil)
(setq constant-alist nil
signal-alist nil)
(when has-generic
@@ -15614,7 +15891,7 @@ current project/directory."
(let* ((project (vhdl-project-p))
(pack-name (vhdl-get-components-package-name))
(pack-file-name
- (concat (vhdl-replace-string vhdl-package-file-name pack-name)
+ (concat (vhdl-replace-string vhdl-package-file-name pack-name t)
"." (file-name-extension (buffer-file-name))))
(ent-alist (aget vhdl-entity-alist
(or project default-directory) t))
@@ -15673,6 +15950,178 @@ current project/directory."
(message "Generating components package \"%s\"...done\n File created: \"%s\""
pack-name pack-file-name)))
+(defun vhdl-compose-configuration-architecture (ent-name arch-name inst-alist
+ &optional insert-conf)
+ "Generate block configuration for architecture."
+ (let ((margin (current-indentation))
+ (beg (save-excursion (beginning-of-line) (point)))
+ ent-entry inst-entry inst-path inst-prev-path cons-key tmp-alist)
+ ;; insert block configuration (for architecture)
+ (vhdl-insert-keyword "FOR ") (insert arch-name "\n")
+ (setq margin (+ margin vhdl-basic-offset))
+ ;; process all instances
+ (while inst-alist
+ (setq inst-entry (car inst-alist))
+ ;; is component?
+ (when (nth 4 inst-entry)
+ (setq insert-conf t)
+ (setq inst-path (nth 9 inst-entry))
+ ;; skip common path with previous instance
+ (while (and inst-path (equal (car inst-path) (car inst-prev-path)))
+ (setq inst-path (cdr inst-path)
+ inst-prev-path (cdr inst-prev-path)))
+ ;; insert block configuration end (for previous block/generate)
+ (while inst-prev-path
+ (setq margin (- margin vhdl-basic-offset))
+ (indent-to margin)
+ (vhdl-insert-keyword "END FOR;\n")
+ (setq inst-prev-path (cdr inst-prev-path)))
+ ;; insert block configuration beginning (for current block/generate)
+ (indent-to margin)
+ (while inst-path
+ (setq margin (+ margin vhdl-basic-offset))
+ (vhdl-insert-keyword "FOR ")
+ (insert (car inst-path) "\n")
+ (indent-to margin)
+ (setq inst-path (cdr inst-path)))
+ ;; insert component configuration beginning
+ (vhdl-insert-keyword "FOR ")
+ (insert (nth 1 inst-entry) " : " (nth 4 inst-entry) "\n")
+ ;; find subconfiguration
+ (setq conf-key (nth 7 inst-entry))
+ (setq tmp-alist conf-alist)
+ ;; use first configuration found for instance's entity
+ (while (and tmp-alist (null conf-key))
+ (when (equal (nth 5 inst-entry) (nth 4 (car tmp-alist)))
+ (setq conf-key (nth 0 (car tmp-alist))))
+ (setq tmp-alist (cdr tmp-alist)))
+ (setq conf-entry (aget conf-alist conf-key t))
+ ;; insert binding indication ...
+ ;; ... with subconfiguration (if exists)
+ (if (and vhdl-compose-configuration-use-subconfiguration conf-entry)
+ (progn
+ (indent-to (+ margin vhdl-basic-offset))
+ (vhdl-insert-keyword "USE CONFIGURATION ")
+ (insert (vhdl-work-library) "." (nth 0 conf-entry))
+ (insert ";\n"))
+ ;; ... with entity (if exists)
+ (setq ent-entry (aget ent-alist (nth 5 inst-entry) t))
+ (when ent-entry
+ (indent-to (+ margin vhdl-basic-offset))
+ (vhdl-insert-keyword "USE ENTITY ")
+ (insert (vhdl-work-library) "." (nth 0 ent-entry))
+ ;; insert architecture name (if architecture exists)
+ (when (nth 3 ent-entry)
+ (setq arch-name
+ ;; choose architecture name a) from configuration,
+ ;; b) from mra, or c) from first architecture
+ (or (nth 0 (aget (nth 3 ent-entry)
+ (or (nth 6 inst-entry)
+ (nth 4 ent-entry)) t))
+ (nth 1 (car (nth 3 ent-entry)))))
+ (insert "(" arch-name ")"))
+ (insert ";\n")
+ ;; insert block configuration (for architecture of subcomponent)
+ (when (and vhdl-compose-configuration-hierarchical
+ (nth 3 ent-entry))
+ (indent-to (+ margin vhdl-basic-offset))
+ (vhdl-compose-configuration-architecture
+ (nth 0 ent-entry) arch-name
+ (nth 3 (aget (nth 3 ent-entry) (downcase arch-name) t))))))
+ ;; insert component configuration end
+ (indent-to margin)
+ (vhdl-insert-keyword "END FOR;\n")
+ (setq inst-prev-path (nth 9 inst-entry)))
+ (setq inst-alist (cdr inst-alist)))
+ ;; insert block configuration end (for block/generate)
+ (while inst-prev-path
+ (setq margin (- margin vhdl-basic-offset))
+ (indent-to margin)
+ (vhdl-insert-keyword "END FOR;\n")
+ (setq inst-prev-path (cdr inst-prev-path)))
+ (indent-to (- margin vhdl-basic-offset))
+ ;; insert block configuration end or remove beginning (for architecture)
+ (if insert-conf
+ (vhdl-insert-keyword "END FOR;\n")
+ (delete-region beg (point)))))
+
+(defun vhdl-compose-configuration (&optional ent-name arch-name)
+ "Generate configuration declaration."
+ (interactive)
+ (vhdl-require-hierarchy-info)
+ (let ((ent-alist (aget vhdl-entity-alist
+ (or (vhdl-project-p) default-directory) t))
+ (conf-alist (aget vhdl-config-alist
+ (or (vhdl-project-p) default-directory) t))
+ (from-speedbar ent-name)
+ inst-alist conf-name conf-file-name pos)
+ (vhdl-prepare-search-2
+ ;; get entity and architecture name
+ (unless ent-name
+ (save-excursion
+ (unless (and (re-search-backward "^\\(architecture\\s-+\\(\\w+\\)\\s-+of\\s-+\\(\\w+\\)\\|end\\)\\>" nil t)
+ (not (equal "END" (upcase (match-string 1))))
+ (setq ent-name (match-string-no-properties 3))
+ (setq arch-name (match-string-no-properties 2)))
+ (error "ERROR: Not within an architecture"))))
+ (setq conf-name (vhdl-replace-string
+ vhdl-compose-configuration-name
+ (concat ent-name " " arch-name)))
+ (setq inst-alist
+ (nth 3 (aget (nth 3 (aget ent-alist (downcase ent-name) t))
+ (downcase arch-name) t))))
+ (message "Generating configuration \"%s\"..." conf-name)
+ (if vhdl-compose-configuration-create-file
+ ;; open configuration file
+ (progn
+ (setq conf-file-name
+ (concat (vhdl-replace-string vhdl-configuration-file-name
+ conf-name t)
+ "." (file-name-extension (buffer-file-name))))
+ (when (and (file-exists-p conf-file-name)
+ (not (y-or-n-p (concat "File \"" conf-file-name
+ "\" exists; overwrite? "))))
+ (error "ERROR: Creating configuration...aborted"))
+ (find-file conf-file-name)
+ (erase-buffer)
+ (set-buffer-modified-p nil)
+ ;; insert header
+ (if vhdl-compose-include-header
+ (progn (vhdl-template-header
+ (concat "Configuration declaration for design \""
+ ent-name "(" arch-name ")\""))
+ (goto-char (point-max)))
+ (vhdl-comment-display-line) (insert "\n\n")))
+ ;; goto end of architecture
+ (unless from-speedbar
+ (re-search-forward "^end\\>" nil)
+ (end-of-line) (insert "\n\n")
+ (vhdl-comment-display-line) (insert "\n\n")))
+ ;; insert library clause
+ (setq pos (point))
+ (vhdl-template-standard-package (vhdl-work-library) nil)
+ (when (/= pos (point))
+ (insert "\n\n"))
+ ;; insert configuration
+ (vhdl-insert-keyword "CONFIGURATION ") (insert conf-name)
+ (vhdl-insert-keyword " OF ") (insert ent-name)
+ (vhdl-insert-keyword " IS\n")
+ (indent-to vhdl-basic-offset)
+ ;; insert block configuration (for architecture)
+ (vhdl-compose-configuration-architecture ent-name arch-name inst-alist t)
+ (vhdl-insert-keyword "END ") (insert conf-name ";")
+ (when conf-file-name
+ ;; insert footer and save
+ (insert "\n\n")
+ (if (and vhdl-compose-include-header (not (equal vhdl-file-footer "")))
+ (vhdl-template-footer)
+ (vhdl-comment-display-line) (insert "\n"))
+ (save-buffer))
+ (message
+ (concat (format "Generating configuration \"%s\"...done" conf-name)
+ (and conf-file-name
+ (format "\n File created: \"%s\"" conf-file-name))))))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Compilation / Makefile generation
@@ -15853,11 +16302,17 @@ do not print any file names."
(compile (concat command " " options " " file-name)))
(vhdl-warning "Your project settings tell me not to compile this file"))))
+(defvar vhdl-make-target "all"
+ "Default target for `vhdl-make' command.")
+
(defun vhdl-make (&optional target)
"Call make command for compilation of all updated source files (requires
`Makefile'). Optional argument TARGET allows to compile the design
specified by a target."
(interactive)
+ (setq vhdl-make-target
+ (or target (read-from-minibuffer "Target: " vhdl-make-target
+ vhdl-minibuffer-local-map)))
(vhdl-compile-init)
(let* ((project (aget vhdl-project-alist vhdl-project))
(compiler (or (aget vhdl-compiler-alist vhdl-compiler)
@@ -15869,7 +16324,7 @@ specified by a target."
(error "ERROR: Compile directory does not exist: \"%s\"" default-directory))
;; run make
(compile (concat (if (equal command "") "make" command)
- " " options " " target))))
+ " " options " " vhdl-make-target))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Makefile generation
@@ -15948,7 +16403,7 @@ specified by a target."
(setq ent-file-name (file-relative-name
(nth 2 ent-entry) compile-directory)
arch-alist (nth 4 ent-entry)
- lib-alist (nth 5 ent-entry)
+ lib-alist (nth 6 ent-entry)
rule (aget rule-alist ent-file-name)
target-list (nth 0 rule)
depend-list (nth 1 rule)
@@ -16218,7 +16673,8 @@ specified by a target."
(insert " \\\n\t\t$(UNIT-" work-library "-" (car second-list) ")")
(setq second-list (cdr second-list)))
(while subcomp-list
- (when (assoc (car subcomp-list) unit-list)
+ (when (and (assoc (car subcomp-list) unit-list)
+ (not (equal unit-key (car subcomp-list))))
(insert " \\\n\t\t" (car subcomp-list)))
(setq subcomp-list (cdr subcomp-list)))
(insert "\n")
@@ -16323,8 +16779,10 @@ specified by a target."
'vhdl-upper-case-enum-values
'vhdl-upper-case-constants
'vhdl-use-direct-instantiation
+ 'vhdl-compose-configuration-name
'vhdl-entity-file-name
'vhdl-architecture-file-name
+ 'vhdl-configuration-file-name
'vhdl-package-file-name
'vhdl-file-name-case
'vhdl-electric-keywords
@@ -16367,7 +16825,12 @@ specified by a target."
'vhdl-testbench-include-library
'vhdl-testbench-include-configuration
'vhdl-testbench-create-files
+ 'vhdl-testbench-entity-file-name
+ 'vhdl-testbench-architecture-file-name
'vhdl-compose-create-files
+ 'vhdl-compose-configuration-create-file
+ 'vhdl-compose-configuration-hierarchical
+ 'vhdl-compose-configuration-use-subconfiguration
'vhdl-compose-include-header
'vhdl-compose-architecture-name
'vhdl-components-package-name
@@ -16430,102 +16893,34 @@ specified by a target."
(defconst vhdl-doc-release-notes nil
"\
-Release Notes for VHDL Mode 3.32
+Release Notes for VHDL Mode 3.33
================================
- New Features
- - Enhanced Features
- User Options
- - Remarks
New Features
------------
-STRUCTURAL COMPOSITION:
- - Enables simple structural composition similar to graphical editors.
- Simplifies the creation of higher design levels where subcomponents
- are simply sticked together:
- 1. Create a skeleton for a new component
- 2. Place subcomponents in it directly from the hierarchy browser
- 3. Automatically connect all subcomponents and create the ports
- for the new component (based on names of actual ports)
- - Automatic generation of a components package (package containing
- component declarations for all entities).
- - Find more information in the online documentation (`C-c C-h').
-
-PORT TRANSLATION:
- - Reverse direction of ports (useful for testbenches).
-
-SUBPROGRAM TRANSLATION:
- - Copy/paste of subprogram interfaces (similar to port translation).
-
-CODE FILLING:
- - Condense code using code-sensitive block filling.
-
-CODE STATISTICS:
- - Calculate number of code lines and statements in a buffer.
-
-
-Enhanced Features
------------------
-
-TESTBENCH GENERATION:
- - Enhanced templates and user option default values.
-
-Emacs 21 compatibility/enhancements:
- - `lazy-lock-mode' is not used anymore (built-in `jit-lock-mode' is faster).
-
-And many other minor fixes and enhancements.
+CONFIGURATION DECLARATION GENERATION:
+ - Automatic generation of a configuration declaration for a design.
+ (See documentation (`C-c C-h') in section on STRUCTURAL COMPOSITION.)
User Options
------------
-`vhdl-project-file-name': (enhanced)
- Include user name in project setup file name.
-`vhdl-speedbar-cache-file-name': (enhanced, changed default)
- Include user name in cache file name.
-`vhdl-default-library': (new)
- Default working library if no project is active.
-`vhdl-architecture-file-name': (new)
- Specify how the architecture file name is obtained.
-`vhdl-package-file-name': (new)
- Specify how the package file name is obtained.
-`vhdl-file-name-case': (new)
- Allows to change case when deriving file names.
-`vhdl-compose-create-files': (new)
- Specify whether new files should be created for a new component.
-`vhdl-compose-include-header': (new)
- Specify whether a header is included in a new component's file.
-`vhdl-compose-architecture-name': (new)
- Specify how a new component's architecture name is obtained.
-`vhdl-components-package-name': (new)
- Specify how the name for the components package is obtained.
-`vhdl-use-components-package': (new)
- Specify whether component declarations go in a components package.
-`vhdl-use-direct-instantiation': (new)
- Specify whether to use VHDL'93 direct component instantiation.
-`vhdl-instance-name': (changed default)
- Allows insertion of a running number to generate unique instance names.
-`vhdl-testbench-entity-header', `vhdl-testbench-architecture-header':(obsolete)
- Headers are now automatically derived from the standard header.
-`vhdl-testbench-include-header': (new)
- Specify whether a header is included in testbench files.
-`vhdl-testbench-declaration', `vhdl-testbench-statements': (changed default)
- Non-empty default values for more complete testbench templates.
-
-
-Remarks
--------
-
-- Changed key binding for `vhdl-comment-uncomment-region': `C-c c'
- (`C-c C-c ...' is now used for structural composition).
-
-- Automatic buffer highlighting (font-lock) is now controlled by option
- `global-font-lock-mode' in GNU Emacs (`font-lock-auto-fontify' in XEmacs).
- \(Important: You MUST customize this option in order to turn automatic
- buffer highlighting on.)
+`vhdl-configuration-file-name': (new)
+ Specify how the configuration file name is obtained.
+`vhdl-compose-configuration-name': (new)
+ Specify how the configuration name is optained.
+`vhdl-compose-configuration-create-file': (new)
+ Specify whether a new file should be created for a configuration.
+`vhdl-compose-configuration-hierarchical': (new)
+ Specify whether hierarchical configurations should be created.
+`vhdl-compose-configuration-use-subconfiguration': (new)
+ Specify whether subconfigurations should be used inside configurations.
")
@@ -16595,7 +16990,8 @@ to visually support naming conventions.")
(interactive)
(unless vhdl-xemacs
(help-setup-xref (list #'vhdl-doc-variable variable) (interactive-p)))
- (with-output-to-temp-buffer (if (fboundp 'help-buffer) (help-buffer) "*Help*")
+ (with-output-to-temp-buffer
+ (if (fboundp 'help-buffer) (help-buffer) "*Help*")
(princ (documentation-property variable 'variable-documentation))
(with-current-buffer standard-output
(help-mode))
@@ -16606,7 +17002,8 @@ to visually support naming conventions.")
(interactive)
(unless vhdl-xemacs
(help-setup-xref (list #'vhdl-doc-mode) (interactive-p)))
- (with-output-to-temp-buffer (if (fboundp 'help-buffer) (help-buffer) "*Help*")
+ (with-output-to-temp-buffer
+ (if (fboundp 'help-buffer) (help-buffer) "*Help*")
(princ mode-name)
(princ " mode:\n")
(princ (documentation 'vhdl-mode))
diff --git a/lisp/shell.el b/lisp/shell.el
index 6b25cf3abde..0f71d8d8205 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -412,7 +412,7 @@ Variable `shell-completion-fignore' is used to initialize the value of
`comint-completion-fignore'.
Variables `comint-input-ring-file-name' and `comint-input-autoexpand' control
-the initialisation of the input ring history, and history expansion.
+the initialization of the input ring history, and history expansion.
Variables `comint-output-filter-functions', a hook, and
`comint-scroll-to-bottom-on-input' and `comint-scroll-to-bottom-on-output'
@@ -791,7 +791,7 @@ line output and parses it to form the new directory stack.
DON'T issue this command unless the buffer is at a shell prompt.
Also, note that if some other subprocess decides to do output
immediately after the query, its output will be taken as the
-new directory stack -- you lose. If this happens, just do the
+new directory stack -- you lose. If this happens, just do the
command again."
(interactive)
(let* ((proc (get-buffer-process (current-buffer)))
diff --git a/lisp/simple.el b/lisp/simple.el
index fc6d2a502ac..746c670b086 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -34,6 +34,8 @@
(autoload 'widget-convert "wid-edit")
(autoload 'shell-mode "shell"))
+(defvar compilation-current-error)
+
(defcustom idle-update-delay 0.5
"*Idle time delay before updating various things on the screen.
Various Emacs features that update auxiliary information when point moves
@@ -4207,8 +4209,9 @@ when it is off screen)."
:group 'paren-blinking)
(defcustom blink-matching-paren-distance (* 25 1024)
- "*If non-nil, is maximum distance to search for matching open-paren."
- :type 'integer
+ "*If non-nil, maximum distance to search backwards for matching open-paren.
+If nil, search stops at the beginning of the accessible portion of the buffer."
+ :type '(choice (const nil) integer)
:group 'paren-blinking)
(defcustom blink-matching-delay 1
diff --git a/lisp/smerge-mode.el b/lisp/smerge-mode.el
index 71fb650da7d..4b677edc36a 100644
--- a/lisp/smerge-mode.el
+++ b/lisp/smerge-mode.el
@@ -131,7 +131,8 @@ Used in `smerge-diff-base-mine' and related functions."
(defface smerge-refined-change
'((t :background "yellow"))
- "Face used for char-based changes shown by `smerge-refine'.")
+ "Face used for char-based changes shown by `smerge-refine'."
+ :group 'smerge)
(easy-mmode-defmap smerge-basic-map
`(("n" . smerge-next)
diff --git a/lisp/speedbar.el b/lisp/speedbar.el
index 12d25ed7ee0..434025ec07c 100644
--- a/lisp/speedbar.el
+++ b/lisp/speedbar.el
@@ -180,6 +180,12 @@
(require 'image)
(error nil))
+(defvar ange-ftp-path-format)
+(defvar efs-path-regexp)
+(defvar font-lock-keywords)
+(defvar x-pointer-hand2)
+(defvar x-pointer-top-left-arrow)
+
(defvar speedbar-xemacsp (string-match "XEmacs" emacs-version)
"Non-nil if we are running in the XEmacs environment.")
(defvar speedbar-xemacs20p (and speedbar-xemacsp
diff --git a/lisp/subr.el b/lisp/subr.el
index db3ea4d9d8b..91d21aa85a6 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2851,8 +2851,9 @@ convenience wrapper around `make-progress-reporter' and friends.
(setq ,(car spec) (1+ ,(car spec)))))
(progress-reporter-done ,temp2)
nil ,@(cdr (cdr spec)))))
+
-;;;; Integer list & Version funs.
+;;;; Compare Version Strings
(defvar version-separator "."
"*Specify the string used to separate the version elements.
@@ -2952,7 +2953,7 @@ See documentation for `version-separator' and `version-regexp-alist'."
(nreverse lst)))))
-(defun integer-list-< (l1 l2)
+(defun version-list-< (l1 l2)
"Return t if integer list L1 is lesser than L2.
Note that integer list (1) is equal to (1 0), (1 0 0), (1 0 0 0),
@@ -2968,12 +2969,12 @@ which is greater than (1 -3)."
;; l1 null and l2 null ==> l1 length = l2 length
((and (null l1) (null l2)) nil)
;; l1 not null and l2 null ==> l1 length > l2 length
- (l1 (< (integer-list-not-zero l1) 0))
+ (l1 (< (version-list-not-zero l1) 0))
;; l1 null and l2 not null ==> l2 length > l1 length
- (t (< 0 (integer-list-not-zero l2)))))
+ (t (< 0 (version-list-not-zero l2)))))
-(defun integer-list-= (l1 l2)
+(defun version-list-= (l1 l2)
"Return t if integer list L1 is equal to L2.
Note that integer list (1) is equal to (1 0), (1 0 0), (1 0 0 0),
@@ -2989,12 +2990,12 @@ which is greater than (1 -3)."
;; l1 null and l2 null ==> l1 length = l2 length
((and (null l1) (null l2)))
;; l1 not null and l2 null ==> l1 length > l2 length
- (l1 (zerop (integer-list-not-zero l1)))
+ (l1 (zerop (version-list-not-zero l1)))
;; l1 null and l2 not null ==> l2 length > l1 length
- (t (zerop (integer-list-not-zero l2)))))
+ (t (zerop (version-list-not-zero l2)))))
-(defun integer-list-<= (l1 l2)
+(defun version-list-<= (l1 l2)
"Return t if integer list L1 is lesser than or equal to L2.
Note that integer list (1) is equal to (1 0), (1 0 0), (1 0 0 0),
@@ -3010,15 +3011,20 @@ which is greater than (1 -3)."
;; l1 null and l2 null ==> l1 length = l2 length
((and (null l1) (null l2)))
;; l1 not null and l2 null ==> l1 length > l2 length
- (l1 (<= (integer-list-not-zero l1) 0))
+ (l1 (<= (version-list-not-zero l1) 0))
;; l1 null and l2 not null ==> l2 length > l1 length
- (t (<= 0 (integer-list-not-zero l2)))))
-
+ (t (<= 0 (version-list-not-zero l2)))))
-(defalias 'version= 'string-equal
- "Return t if version V1 is equal to V2.
+(defun version-list-not-zero (lst)
+ "Return the first non-zero element of integer list LST.
-Compare version string using `string-equal'.")
+If all LST elements are zeroes or LST is nil, return zero."
+ (while (and lst (zerop (car lst)))
+ (setq lst (cdr lst)))
+ (if lst
+ (car lst)
+ ;; there is no element different of zero
+ 0))
(defun version< (v1 v2)
@@ -3028,7 +3034,7 @@ Note that version string \"1\" is equal to \"1.0\", \"1.0.0\", \"1.0.0.0\",
etc. That is, the trailing \".0\"s are irrelevant. Also, version string \"1\"
is greater than \"1pre\" which is greater than \"1beta\" which is greater than
\"1alpha\"."
- (integer-list-< (version-to-list v1) (version-to-list v2)))
+ (version-list-< (version-to-list v1) (version-to-list v2)))
(defun version<= (v1 v2)
@@ -3038,19 +3044,17 @@ Note that version string \"1\" is equal to \"1.0\", \"1.0.0\", \"1.0.0.0\",
etc. That is, the trailing \".0\"s are irrelevant. Also, version string \"1\"
is greater than \"1pre\" which is greater than \"1beta\" which is greater than
\"1alpha\"."
- (integer-list-<= (version-to-list v1) (version-to-list v2)))
+ (version-list-<= (version-to-list v1) (version-to-list v2)))
+(defun version= (v1 v2)
+ "Return t if version V1 is equal to V2.
-(defun integer-list-not-zero (lst)
- "Return the first non-zero element of integer list LST.
+Note that version string \"1\" is equal to \"1.0\", \"1.0.0\", \"1.0.0.0\",
+etc. That is, the trailing \".0\"s are irrelevant. Also, version string \"1\"
+is greater than \"1pre\" which is greater than \"1beta\" which is greater than
+\"1alpha\"."
+ (version-list-= (version-to-list v1) (version-to-list v2)))
-If all LST elements are zeroes or LST is nil, return zero."
- (while (zerop (car lst))
- (setq lst (cdr lst)))
- (if lst
- (car lst)
- ;; there is no element different of zero
- 0))
;; arch-tag: f7e0e6e5-70aa-4897-ae72-7a3511ec40bc
diff --git a/lisp/term/mac-win.el b/lisp/term/mac-win.el
index a95cccaeaad..25863508ea6 100644
--- a/lisp/term/mac-win.el
+++ b/lisp/term/mac-win.el
@@ -79,6 +79,9 @@
(require 'fontset)
(require 'dnd)
+(defvar mac-charset-info-alist)
+(defvar mac-services-selection)
+(defvar mac-system-script-code)
(defvar x-invocation-args)
(defvar x-command-line-resources nil)
diff --git a/lisp/term/tty-colors.el b/lisp/term/tty-colors.el
index d3aee8e64f0..6fcf5d3edba 100644
--- a/lisp/term/tty-colors.el
+++ b/lisp/term/tty-colors.el
@@ -62,6 +62,8 @@
;;; Code:
+(defvar msdos-color-values)
+
;; The following list is taken from rgb.txt distributed with X.
;;
;; WARNING: Some colors, such as "lightred", do not appear in this
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index 33bb1e9a79d..64c571240e8 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -80,6 +80,8 @@
(require 'dnd)
(require 'code-pages)
+(defvar xlfd-regexp-registry-subnum)
+
;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
(if (fboundp 'new-fontset)
(require 'fontset))
diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el
index fc07f94bca2..43601188e69 100644
--- a/lisp/term/x-win.el
+++ b/lisp/term/x-win.el
@@ -80,6 +80,10 @@
(require 'x-dnd)
(defvar x-invocation-args)
+(defvar x-keysym-table)
+(defvar x-selection-timeout)
+(defvar x-session-id)
+(defvar x-session-previous-id)
(defvar x-command-line-resources nil)
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index 3be1a50823e..ce37d1b6086 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -33,8 +33,8 @@
;; better in that case to use rxvt's initializion function.
(if (and (getenv "COLORTERM")
(string-match "\\`rxvt" (getenv "COLORTERM")))
- (progn
- (load "term/rxvt")
+ (progn
+ (eval-when-compile (load "term/rxvt"))
(terminal-init-rxvt))
;; The terminal intialization C code file might have initialized
@@ -98,20 +98,11 @@
(substitute-key-definition [f60] [A-f12] function-key-map)
(let ((map (make-sparse-keymap)))
- (define-key map "\e[A" [up])
- (define-key map "\e[B" [down])
- (define-key map "\e[C" [right])
- (define-key map "\e[D" [left])
- (define-key map "\e[1~" [home])
- (define-key map "\e[2~" [insert])
- (define-key map "\e[3~" [delete])
- (define-key map "\e[4~" [select])
- (define-key map "\e[5~" [prior])
- (define-key map "\e[6~" [next])
- (define-key map "\e[11~" [f1])
- (define-key map "\e[12~" [f2])
- (define-key map "\e[13~" [f3])
- (define-key map "\e[14~" [f4])
+ ;; xterm from X.org 6.8.2 uses these key definitions.
+ (define-key map "\eOP" [f1])
+ (define-key map "\eOQ" [f2])
+ (define-key map "\eOR" [f3])
+ (define-key map "\eOS" [f4])
(define-key map "\e[15~" [f5])
(define-key map "\e[17~" [f6])
(define-key map "\e[18~" [f7])
@@ -120,12 +111,6 @@
(define-key map "\e[21~" [f10])
(define-key map "\e[23~" [f11])
(define-key map "\e[24~" [f12])
- (define-key map "\e[29~" [print])
-
- (define-key map "\eOP" [f1])
- (define-key map "\eOQ" [f2])
- (define-key map "\eOR" [f3])
- (define-key map "\eOS" [f4])
(define-key map "\eO2P" [S-f1])
(define-key map "\eO2Q" [S-f2])
@@ -179,6 +164,13 @@
(define-key map "\e[23;3~" [A-f11])
(define-key map "\e[24;3~" [A-f12])
+ (define-key map "\eOA" [up])
+ (define-key map "\eOB" [down])
+ (define-key map "\eOC" [right])
+ (define-key map "\eOD" [left])
+ (define-key map "\eOF" [end])
+ (define-key map "\eOH" [home])
+
(define-key map "\e[1;2A" [S-up])
(define-key map "\e[1;2B" [S-down])
(define-key map "\e[1;2C" [S-right])
@@ -207,6 +199,11 @@
(define-key map "\e[1;3F" [A-end])
(define-key map "\e[1;3H" [A-home])
+ (define-key map "\e[2~" [insert])
+ (define-key map "\e[3~" [delete])
+ (define-key map "\e[5~" [prior])
+ (define-key map "\e[6~" [next])
+
(define-key map "\e[2;2~" [S-insert])
(define-key map "\e[3;2~" [S-delete])
(define-key map "\e[5;2~" [S-prior])
@@ -227,12 +224,15 @@
(define-key map "\e[5;3~" [A-prior])
(define-key map "\e[6;3~" [A-next])
- (define-key map "\eOA" [up])
- (define-key map "\eOB" [down])
- (define-key map "\eOC" [right])
- (define-key map "\eOD" [left])
- (define-key map "\eOF" [end])
- (define-key map "\eOH" [home])
+ (define-key map "\e[4~" [select])
+ (define-key map "\e[29~" [print])
+
+ ;; Other versions of xterm might emit these.
+ (define-key map "\e[A" [up])
+ (define-key map "\e[B" [down])
+ (define-key map "\e[C" [right])
+ (define-key map "\e[D" [left])
+ (define-key map "\e[1~" [home])
(define-key map "\eO2A" [S-up])
(define-key map "\eO2B" [S-down])
@@ -248,6 +248,11 @@
(define-key map "\eO5F" [C-end])
(define-key map "\eO5H" [C-home])
+ (define-key map "\e[11~" [f1])
+ (define-key map "\e[12~" [f2])
+ (define-key map "\e[13~" [f3])
+ (define-key map "\e[14~" [f4])
+
;; Use inheritance to let the main keymap override those defaults.
;; This way we don't override terminfo-derived settings or settings
;; made in the .emacs file.
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el
index c50239ec635..ea43f71e756 100644
--- a/lisp/textmodes/artist.el
+++ b/lisp/textmodes/artist.el
@@ -199,6 +199,7 @@
(defconst artist-version "1.2.6")
(defconst artist-maintainer-address "tab@lysator.liu.se")
+(defvar x-pointer-crosshair)
(eval-and-compile
(condition-case ()
@@ -404,7 +405,7 @@ Example:
:type 'integer)
-(defvar artist-spray-chars '(?\ ?. ?- ?+ ?m ?% ?* ?#)
+(defvar artist-spray-chars '(?\s ?. ?- ?+ ?m ?% ?* ?#)
;; This is a defvar, not a defcustom, since the custom
;; package shows lists of characters as a lists of integers,
;; which is confusing
@@ -1389,9 +1390,9 @@ Keymap summary
(while (< i 256)
(aset artist-replacement-table i i)
(setq i (1+ i))))
- (aset artist-replacement-table ?\n ?\ )
- (aset artist-replacement-table ?\t ?\ )
- (aset artist-replacement-table 0 ?\ )
+ (aset artist-replacement-table ?\n ?\s)
+ (aset artist-replacement-table ?\t ?\s)
+ (aset artist-replacement-table 0 ?\s)
(make-local-variable 'artist-key-is-drawing)
(make-local-variable 'artist-key-endpoint1)
(make-local-variable 'artist-key-poly-point-list)
@@ -2013,7 +2014,7 @@ With optional argument SEE-THRU, set to non-nil, text in the buffer
(blink-matching-paren nil))
(while char-list
(let ((c (car char-list)))
- (if (and see-thru (= (aref artist-replacement-table c) ?\ ))
+ (if (and see-thru (= (aref artist-replacement-table c) ?\s))
(artist-move-to-xy (1+ (artist-current-column))
(artist-current-line))
(artist-replace-char c)))
@@ -3069,26 +3070,26 @@ An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y)."
(defun artist-vap-find-endpoints-horiz (x y)
"Find endpoints for a horizontal line through X, Y.
An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y)."
- (list (artist-vap-find-endpoint x y 1 0 '(?- ?+) '(? ))
- (artist-vap-find-endpoint x y -1 0 '(?- ?+) '(? ))))
+ (list (artist-vap-find-endpoint x y 1 0 '(?- ?+) '(?\s))
+ (artist-vap-find-endpoint x y -1 0 '(?- ?+) '(?\s))))
(defun artist-vap-find-endpoints-vert (x y)
"Find endpoints for a vertical line through X, Y.
An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y)."
- (list (artist-vap-find-endpoint x y 0 1 '(?| ?+) '(? ))
- (artist-vap-find-endpoint x y 0 -1 '(?| ?+) '(? ))))
+ (list (artist-vap-find-endpoint x y 0 1 '(?| ?+) '(?\s))
+ (artist-vap-find-endpoint x y 0 -1 '(?| ?+) '(?\s))))
(defun artist-vap-find-endpoints-swne (x y)
"Find endpoints for a diagonal line (made by /'s) through X, Y.
An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y)."
- (list (artist-vap-find-endpoint x y 1 -1 '(?/ ?X) '(? ))
- (artist-vap-find-endpoint x y -1 1 '(?/ ?X) '(? ))))
+ (list (artist-vap-find-endpoint x y 1 -1 '(?/ ?X) '(?\s))
+ (artist-vap-find-endpoint x y -1 1 '(?/ ?X) '(?\s))))
(defun artist-vap-find-endpoints-nwse (x y)
"Find endpoints for a diagonal line (made by \\'s) through X, Y.
An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y)."
- (list (artist-vap-find-endpoint x y 1 1 '(?\\ ?X) '(? ))
- (artist-vap-find-endpoint x y -1 -1 '(?\\ ?X) '(? ))))
+ (list (artist-vap-find-endpoint x y 1 1 '(?\\ ?X) '(?\s))
+ (artist-vap-find-endpoint x y -1 -1 '(?\\ ?X) '(?\s))))
(defun artist-vap-find-endpoints (x y)
@@ -4454,7 +4455,7 @@ If N is negative, move backward."
(defun artist-select-erase-char (c)
"Set current erase character to be C."
(interactive "cType char to use when erasing (type RET for normal): ")
- (cond ((eq c ?\r) (setq artist-erase-char ?\ )
+ (cond ((eq c ?\r) (setq artist-erase-char ?\s)
(message "Normal erasing"))
(t (setq artist-erase-char c)
(message "Erasing with \"%c\"" c)))
diff --git a/lisp/textmodes/conf-mode.el b/lisp/textmodes/conf-mode.el
index 1a73465467a..8c009921d09 100644
--- a/lisp/textmodes/conf-mode.el
+++ b/lisp/textmodes/conf-mode.el
@@ -33,6 +33,8 @@
(require 'newcomment)
+(defvar outline-heading-end-regexp)
+
;; Variables:
(defgroup conf nil
@@ -229,15 +231,15 @@ whitespace.")
(if (>= arg 0)
(progn
(indent-to-column arg)
- (or (not conf-assignment-space) (memq (char-before (point)) '(? ?\t)) (insert ? ))
- (insert conf-assignment-sign (if (and conf-assignment-space (not (eolp))) ?\ "")))
- (insert (if conf-assignment-space ?\ "") conf-assignment-sign)
+ (or (not conf-assignment-space) (memq (char-before (point)) '(?\s ?\t)) (insert ?\s))
+ (insert conf-assignment-sign (if (and conf-assignment-space (not (eolp))) ?\s "")))
+ (insert (if conf-assignment-space ?\s "") conf-assignment-sign)
(unless (eolp)
(indent-to-column (- arg))
- (or (not conf-assignment-space) (memq (char-before (point)) '(? ?\t)) (insert ? ))))
+ (or (not conf-assignment-space) (memq (char-before (point)) '(?\s ?\t)) (insert ?\s))))
(unless (eolp)
(if (>= (current-column) (abs arg))
- (insert ? )
+ (insert ?\s)
(indent-to-column (abs arg))))))
(forward-line))))
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index 358ee1f96e7..d8b6b6e23de 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -201,6 +201,8 @@
;;; Code:
+(defvar mail-yank-prefix)
+
;;; Custom.el macros require recompiling this when they are not present.
;;; Add in backward compatible custom support.
(eval-when-compile
@@ -914,7 +916,7 @@ Assumes that value contains no whitespace."
(insert-file-contents data-file)
;; There is zero or one line with special characters declarations.
(when (search-forward-regexp "^special" nil t)
- (let ((specials (split-string
+ (let ((specials (split-string
(buffer-substring (point)
(progn (end-of-line) (point))))))
;; The line looks like: special ' -** - -** . -** : -*-
@@ -951,7 +953,7 @@ Assumes that value contains no whitespace."
(insert-file-contents alias-file)
;; Look for a line "add FOO.multi", extract FOO
(when (search-forward-regexp "^add \\([^.]+\\)\\.multi" nil t)
- (let* ((aliasname (file-name-sans-extension
+ (let* ((aliasname (file-name-sans-extension
(file-name-nondirectory alias-file)))
(already-exists-p (assoc aliasname ispell-dictionary-alist))
(realname (match-string 1))
diff --git a/lisp/textmodes/makeinfo.el b/lisp/textmodes/makeinfo.el
index f2c407975e2..542c4829e9c 100644
--- a/lisp/textmodes/makeinfo.el
+++ b/lisp/textmodes/makeinfo.el
@@ -50,6 +50,10 @@
(require 'compile)
(require 'info)
+(defvar tex-end-of-header)
+(defvar tex-start-of-header)
+
+
(defgroup makeinfo nil
"Run makeinfo conveniently."
:group 'docs)
@@ -171,22 +175,27 @@ command to gain use of `next-error'."
makeinfo-options
" "
makeinfo-temp-file)
- "Use `makeinfo-buffer' to gain use of the `next-error' command"
- nil
+ t
'makeinfo-compilation-sentinel-region)))))))
-;;; Actually run makeinfo. COMMAND is the command to run.
-;;; ERROR-MESSAGE is what to say when next-error can't find another error.
-;;; If PARSE-ERRORS is non-nil, do try to parse error messages.
-(defun makeinfo-compile (command error-message parse-errors sentinel)
- (let ((buffer
- (compile-internal command error-message nil
- (and (not parse-errors)
- ;; If we do want to parse errors, pass nil.
- ;; Otherwise, use this function, which won't
- ;; ever find any errors.
- (lambda (&rest ignore)
- (setq compilation-error-list nil))))))
+(defun makeinfo-next-error (arg reset)
+ "This function is used to disable `next-error' if the user has
+used `makeinfo-region'. Since the compilation process is used on
+a temporary file in that case, calling `next-error' would give
+nonsensical results."
+ (error "Use `makeinfo-buffer' to gain use of the `next-error' command"))
+
+;; Actually run makeinfo. COMMAND is the command to run. If
+;; DISABLE-ERRORS is non-nil, disable `next-error' by setting
+;; `next-error-function' to `makeinfo-next-error' in the compilation
+;; buffer.
+(defun makeinfo-compile (command disable-errors sentinel)
+ (let ((buffer (compilation-start command)))
+ (with-current-buffer buffer
+ (setq next-error-function
+ (if disable-errors
+ 'makeinfo-next-error
+ 'compilation-next-error-function)))
(set-process-sentinel (get-buffer-process buffer) sentinel)))
;; Delete makeinfo-temp-file after processing is finished,
@@ -249,9 +258,8 @@ Use the \\[next-error] command to move to the next error
(save-excursion
(makeinfo-compile
(concat makeinfo-run-command " " makeinfo-options
- " " buffer-file-name)
- "No more errors."
- t
+ " " buffer-file-name)
+ nil
'makeinfo-compilation-sentinel-buffer)))
(defun makeinfo-compilation-sentinel-buffer (proc msg)
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index b7d714249dc..6150ac6cccd 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -1,12 +1,11 @@
-;; org.el --- Outline-based notes management and organizer
+;;; org.el --- Outline-based notes management and organizer
;; Carstens outline-mode for keeping track of everything.
-
-;; Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+;; Copyright (c) 2004, 2005 Free Software Foundation
;;
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 3.14
+;; Version: 3.15
;;
;; This file is part of GNU Emacs.
;;
@@ -81,6 +80,13 @@
;;
;; Changes:
;; -------
+;; Version 3.15
+;; - QUOTE keyword at the beginning of an entry causes fixed-width export
+;; of unmodified entry text. `C-c :' toggles this keyword.
+;; - New face `org-special-keyword' which is used for COMMENT, QUOTE,
+;; DEADLINE and SCHEDULED, and priority cookies. Default is only a weak
+;; color, to reduce the amount of aggressive color in the buffer.
+;;
;; Version 3.14
;; - Formulas for individual fields in table.
;; - Automatic recalculation in calculating tables.
@@ -187,9 +193,13 @@
(require 'time-date)
(require 'easymenu)
+(defvar calc-embedded-close-formula)
+(defvar calc-embedded-open-formula)
+(defvar font-lock-unfontify-region-function)
+
;;; Customization variables
-(defvar org-version "3.14"
+(defvar org-version "3.15"
"The version number of the file org.el.")
(defun org-version ()
(interactive)
@@ -388,6 +398,15 @@ Changes become only effective after restarting Emacs."
:group 'org-keywords
:type 'string)
+(defcustom org-quote-string "QUOTE"
+ "Entries starting with this keyword will be exported in fixed-width font.
+Quoting applies only to the text in the entry following the headline, and does
+not extend beyond the next headline, even if that is lower level.
+An entry can be toggled between QUOTE and normal with
+\\[org-toggle-fixed-width-section]"
+ :group 'org-keywords
+ :type 'string)
+
(defcustom org-after-todo-state-change-hook nil
"Hook which is run after the state of a TODO item was changed.
The new state (a string with a todo keyword, or nil) is available in the
@@ -1593,6 +1612,14 @@ Otherwise, the buffer will just be saved to a file and stay hidden."
"Face used for level 8 headlines."
:group 'org-faces)
+(defface org-special-keyword ;; font-lock-string-face
+ '((((type tty) (class color)) (:foreground "green"))
+ (((class color) (background light)) (:foreground "RosyBrown"))
+ (((class color) (background dark)) (:foreground "LightSalmon"))
+ (t (:italic t)))
+ "Face used for level 8 headlines."
+ :group 'org-faces)
+
(defface org-warning ;; font-lock-warning-face
'((((type tty) (class color)) (:foreground "red"))
(((class color) (background light)) (:foreground "Red" :bold t))
@@ -1919,17 +1946,22 @@ The following commands are available:
'(org-activate-dates (0 'org-link))
(list (concat "^\\*+[ \t]*" org-not-done-regexp)
'(1 'org-warning t))
- (list (concat "\\[#[A-Z]\\]") '(0 'org-warning t))
- (list (concat "\\<" org-deadline-string) '(0 'org-warning t))
- (list (concat "\\<" org-scheduled-string) '(0 'org-warning t))
+ (list (concat "\\[#[A-Z]\\]") '(0 'org-special-keyword t))
+; (list (concat "\\<" org-deadline-string) '(0 'org-warning t))
+; (list (concat "\\<" org-scheduled-string) '(0 'org-warning t))
+ (list (concat "\\<" org-deadline-string) '(0 'org-special-keyword t))
+ (list (concat "\\<" org-scheduled-string) '(0 'org-special-keyword t))
;; '("\\(\\s-\\|^\\)\\(\\*\\([a-zA-Z]+\\)\\*\\)\\([^a-zA-Z*]\\|$\\)"
;; (3 'bold))
;; '("\\(\\s-\\|^\\)\\(/\\([a-zA-Z]+\\)/\\)\\([^a-zA-Z*]\\|$\\)"
;; (3 'italic))
;; '("\\(\\s-\\|^\\)\\(_\\([a-zA-Z]+\\)_\\)\\([^a-zA-Z*]\\|$\\)"
;; (3 'underline))
- (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>")
- '(1 'org-warning t))
+; (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>")
+; '(1 'org-warning t))
+ (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string
+ "\\|" org-quote-string "\\)\\>")
+ '(1 'org-special-keyword t))
'("^#.*" (0 'font-lock-comment-face t))
(if org-fontify-done-headline
(list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\(.*\\)\\>")
@@ -2216,7 +2248,7 @@ or nil."
(shrink-window-if-larger-than-buffer (get-buffer-window "*Help*"))
(setq buffer-read-only nil)
(erase-buffer)
- (insert-buffer buf)
+ (insert-buffer-substring buf)
(let ((org-startup-truncated t)
(org-startup-folded t)
(org-startup-with-deadline-check nil))
@@ -4013,7 +4045,7 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
(get-text-property (point) 'org-marker))
(org-agenda-show)))
-(defvar org-disable-diary nil) ;Dynamically-scoped param.
+(defvar org-disable-agenda-to-diary nil) ;Dynamically-scoped param.
(defun org-get-entries-from-diary (date)
"Get the (Emacs Calendar) diary entries for DATE."
@@ -4021,8 +4053,10 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
(diary-display-hook '(fancy-diary-display))
(list-diary-entries-hook
(cons 'org-diary-default-entry list-diary-entries-hook))
+ (diary-file-name-prefix-function nil) ; turn this feature off
+ (diary-modify-entry-list-string-function 'org-modify-diary-entry-string)
entries
- (org-disable-diary t))
+ (org-disable-agenda-to-diary t))
(save-excursion
(save-window-excursion
(list-diary-entries date 1)))
@@ -4076,35 +4110,43 @@ date. Itt also removes lines that contain only whitespace."
(if (re-search-forward "^Org-mode dummy\n?" nil t)
(replace-match "")))
-;; Advise the add-to-diary-list function to allow org to jump to
-;; diary entries. Wrapped into eval-after-load to avoid loading
-;; advice unnecessarily
+;; Make sure entries from the diary have the right text properties.
(eval-after-load "diary-lib"
- '(defadvice add-to-diary-list (before org-mark-diary-entry activate)
- "Make the position visible."
- (if (and org-disable-diary ;; called from org-agenda
- (stringp string)
- (buffer-file-name))
- (add-text-properties
- 0 (length string)
- (list 'mouse-face 'highlight
- 'keymap org-agenda-keymap
- 'help-echo
- (format
- "mouse-2 or RET jump to diary file %s"
- (abbreviate-file-name (buffer-file-name)))
- 'org-agenda-diary-link t
- 'org-marker (org-agenda-new-marker (point-at-bol)))
- string))))
+ '(if (boundp 'diary-modify-entry-list-string-function)
+ ;; We can rely on the hook, nothing to do
+ nil
+ ;; Hook not avaiable, must use advice to make this work
+ (defadvice add-to-diary-list (before org-mark-diary-entry activate)
+ "Make the position visible."
+ (if (and org-disable-agenda-to-diary ;; called from org-agenda
+ (stringp string)
+ (buffer-file-name))
+ (setq string (org-modify-diary-entry-string string))))))
+
+(defun org-modify-diary-entry-string (string)
+ "Add text properties to string, allowing org-mode to act on it."
+ (add-text-properties
+ 0 (length string)
+ (list 'mouse-face 'highlight
+ 'keymap org-agenda-keymap
+ 'help-echo
+ (format
+ "mouse-2 or RET jump to diary file %s"
+ (abbreviate-file-name (buffer-file-name)))
+ 'org-agenda-diary-link t
+ 'org-marker (org-agenda-new-marker (point-at-bol)))
+ string)
+ string)
(defun org-diary-default-entry ()
"Add a dummy entry to the diary.
Needed to avoid empty dates which mess up holiday display."
;; Catch the error if dealing with the new add-to-diary-alist
- (condition-case nil
- (add-to-diary-list original-date "Org-mode dummy" "")
- (error
- (add-to-diary-list original-date "Org-mode dummy" "" nil))))
+ (when org-disable-agenda-to-diary
+ (condition-case nil
+ (add-to-diary-list original-date "Org-mode dummy" "")
+ (error
+ (add-to-diary-list original-date "Org-mode dummy" "" nil)))))
(defun org-add-file (&optional file)
"Add current file to the list of files in variable `org-agenda-files'.
@@ -4238,11 +4280,12 @@ function from a program - use `org-agenda-get-day-entries' instead."
file rtn results)
;; If this is called during org-agenda, don't return any entries to
;; the calendar. Org Agenda will list these entries itself.
- (if org-disable-diary (setq files nil))
+ (if org-disable-agenda-to-diary (setq files nil))
(while (setq file (pop files))
(setq rtn (apply 'org-agenda-get-day-entries file date args))
(setq results (append results rtn)))
- (concat (org-finalize-agenda-entries results) "\n")))
+ (if results
+ (concat (org-finalize-agenda-entries results) "\n"))))
(defun org-agenda-get-day-entries (file date &rest args)
"Does the work for `org-diary' and `org-agenda'.
@@ -6270,7 +6313,7 @@ integer, it will be incremented while copying."
(progn
(if (and org-table-copy-increment
(string-match "^[0-9]+$" txt))
- (setq txt (format "%d" (+ (string-to-int txt) 1))))
+ (setq txt (format "%d" (+ (string-to-number txt) 1))))
(insert txt)
(org-table-maybe-recalculate-line)
(org-table-align))
@@ -6997,9 +7040,9 @@ If NLAST is a number, only the NLAST fields will actually be summed."
(t n))))
(defun org-table-get-vertical-vector (desc &optional tbeg col)
- "Get a calc vector from a column, according to descriptor DESC.
-Optional arguments TBEG and COL can give the beginning of the table
-and the current column, to avoid unnecessary parsing."
+ "Get a calc vector from a column, accorting to desctiptor DESC.
+Optional arguments TBEG and COL can give the beginning of the table and
+the current column, to avoid unnecessary parsing."
(save-excursion
(or tbeg (setq tbeg (org-table-begin)))
(or col (setq col (org-table-current-column)))
@@ -7440,7 +7483,7 @@ not overwrite the stored one."
;; Insert the references to fields in same row
(while (string-match "\\$\\([0-9]+\\)?" form)
(setq n (if (match-beginning 1)
- (string-to-int (match-string 1 form))
+ (string-to-number (match-string 1 form))
n0)
x (nth (1- n) fields))
(unless x (error "Invalid field specifier \"%s\""
@@ -7539,7 +7582,7 @@ $1-> %s\n" orig formula form))
(setq eql eqlnum)
(while (setq entry (pop eql))
(goto-line org-last-recalc-line)
- (org-table-goto-column (string-to-int (car entry)) nil 'force)
+ (org-table-goto-column (string-to-number (car entry)) nil 'force)
(org-table-eval-formula nil (cdr entry) 'noalign 'nocst 'nostore))))
(goto-line thisline)
(org-table-goto-column thiscol)
@@ -7801,7 +7844,7 @@ table editor in arbitrary modes.")
(and c (setq minor-mode-map-alist
(cons c (delq c minor-mode-map-alist)))))
(set (make-local-variable (quote org-table-may-need-update)) t)
- (make-local-hook (quote before-change-functions))
+ (make-local-hook (quote before-change-functions)) ; needed for XEmacs
(add-hook 'before-change-functions 'org-before-change-function
nil 'local)
(set (make-local-variable 'org-old-auto-fill-inhibit-regexp)
@@ -8620,14 +8663,13 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
(insert s)))
(defun org-toggle-fixed-width-section (arg)
- "Toggle the fixed-width indicator at the beginning of lines in the region.
-If there is no active region, only acts on the current line.
-If the first non-white character in the first line of the region is a
-vertical bar \"|\", then the command removes the bar from all lines in
-the region. If the first character is not a bar, the command adds a
-bar to all lines, in the column given by the beginning of the region.
-
-If there is a numerical prefix ARG, create ARG new lines starting with \"|\"."
+ "Toggle the fixed-width export.
+If there is no active region, the QUOTE keyword at the current headline is
+inserted or removed. When present, it causes the text between this headline
+and the next to be exported as fixed-width text, and unmodified.
+If there is an active region, this command adds or removes a colon as the
+first character of this line. If the first character of a line is a colon,
+this line is also exported in fixed-width font."
(interactive "P")
(let* ((cc 0)
(regionp (org-region-active-p))
@@ -8636,23 +8678,33 @@ If there is a numerical prefix ARG, create ARG new lines starting with \"|\"."
(nlines (or arg (if (and beg end) (count-lines beg end) 1)))
(re "[ \t]*\\(:\\)")
off)
- (save-excursion
- (goto-char beg)
- (setq cc (current-column))
- (beginning-of-line 1)
- (setq off (looking-at re))
- (while (> nlines 0)
- (setq nlines (1- nlines))
- (beginning-of-line 1)
- (cond
- (arg
- (move-to-column cc t)
- (insert ":\n")
- (forward-line -1))
- ((and off (looking-at re))
- (replace-match "" t t nil 1))
- ((not off) (move-to-column cc t) (insert ":")))
- (forward-line 1)))))
+ (if regionp
+ (save-excursion
+ (goto-char beg)
+ (setq cc (current-column))
+ (beginning-of-line 1)
+ (setq off (looking-at re))
+ (while (> nlines 0)
+ (setq nlines (1- nlines))
+ (beginning-of-line 1)
+ (cond
+ (arg
+ (move-to-column cc t)
+ (insert ":\n")
+ (forward-line -1))
+ ((and off (looking-at re))
+ (replace-match "" t t nil 1))
+ ((not off) (move-to-column cc t) (insert ":")))
+ (forward-line 1)))
+ (save-excursion
+ (org-back-to-heading)
+ (if (looking-at (concat outline-regexp
+ "\\( +\\<" org-quote-string "\\>\\)"))
+ (replace-match "" t t nil 1)
+ (if (looking-at outline-regexp)
+ (progn
+ (goto-char (match-end 0))
+ (insert " " org-quote-string))))))))
(defun org-export-as-html-and-open (arg)
"Export the outline as HTML and immediately open it with a browser.
@@ -8681,28 +8733,30 @@ headlines. The default is 3. Lower levels will become bulleted lists."
(setq-default org-deadline-line-regexp org-deadline-line-regexp)
(setq-default org-done-string org-done-string)
(let* ((region-p (org-region-active-p))
- (region
- (buffer-substring
- (if region-p (region-beginning) (point-min))
- (if region-p (region-end) (point-max))))
- (all_lines
- (org-skip-comments (org-split-string region "[\r\n]")))
- (lines (org-export-find-first-heading-line all_lines))
- (level 0) (line "") (origline "") txt todo
- (umax nil)
- (filename (concat (file-name-sans-extension (buffer-file-name))
- ".html"))
- (buffer (find-file-noselect filename))
- (levels-open (make-vector org-level-max nil))
- (date (format-time-string "%Y/%m/%d" (current-time)))
+ (region
+ (buffer-substring
+ (if region-p (region-beginning) (point-min))
+ (if region-p (region-end) (point-max))))
+ (all_lines
+ (org-skip-comments (org-split-string region "[\r\n]")))
+ (lines (org-export-find-first-heading-line all_lines))
+ (level 0) (line "") (origline "") txt todo
+ (umax nil)
+ (filename (concat (file-name-sans-extension (buffer-file-name))
+ ".html"))
+ (buffer (find-file-noselect filename))
+ (levels-open (make-vector org-level-max nil))
+ (date (format-time-string "%Y/%m/%d" (current-time)))
(time (format-time-string "%X" (current-time)))
- (author user-full-name)
+ (author user-full-name)
(title (buffer-name))
- (options nil)
+ (options nil)
+ (quote-re (concat "^\\*+[ \t]*" org-quote-string "\\>"))
+ (inquote nil)
(email user-mail-address)
- (language org-export-default-language)
+ (language org-export-default-language)
(text nil)
- (lang-words nil)
+ (lang-words nil)
(head-count 0) cnt
(start 0)
table-open type
@@ -8716,22 +8770,22 @@ headlines. The default is 3. Lower levels will become bulleted lists."
;; Search for the export key lines
(org-parse-key-lines)
(setq lang-words (or (assoc language org-export-language-setup)
- (assoc "en" org-export-language-setup)))
+ (assoc "en" org-export-language-setup)))
;; Switch to the output buffer
(if (or hidden (not org-export-html-show-new-buffer))
- (set-buffer buffer)
+ (set-buffer buffer)
(switch-to-buffer-other-window buffer))
(erase-buffer)
(fundamental-mode)
(let ((case-fold-search nil))
(if options (org-parse-export-options options))
(setq umax (if arg (prefix-numeric-value arg)
- org-export-headline-levels))
+ org-export-headline-levels))
;; File header
(insert (format
- "<html lang=\"%s\"><head>
+ "<html lang=\"%s\"><head>
<title>%s</title>
<meta http-equiv=\"Content-Type\" content=\"text/html\">
<meta name=generator content=\"Org-mode\">
@@ -8739,15 +8793,15 @@ headlines. The default is 3. Lower levels will become bulleted lists."
<meta name=author content=\"%s\">
</head><body>
"
- language (org-html-expand title) date time author))
+ language (org-html-expand title) date time author))
(if title (insert (concat "<H1 align=\"center\">"
(org-html-expand title) "</H1>\n")))
(if author (insert (concat (nth 1 lang-words) ": " author "\n")))
(if email (insert (concat "<a href=\"mailto:" email "\">&lt;"
- email "&gt;</a>\n")))
+ email "&gt;</a>\n")))
(if (or author email) (insert "<br>\n"))
(if (and date time) (insert (concat (nth 2 lang-words) ": "
- date " " time "<br>\n")))
+ date " " time "<br>\n")))
(if text (insert (concat "<p>\n" (org-html-expand text))))
(if org-export-with-toc
(progn
@@ -8802,124 +8856,141 @@ headlines. The default is 3. Lower levels will become bulleted lists."
))
(setq head-count 0)
(org-init-section-numbers)
+
(while (setq line (pop lines) origline line)
- ;; Protect the links
- (setq start 0)
- (while (string-match org-link-maybe-angles-regexp line start)
- (setq start (match-end 0))
- (setq line (replace-match
- (concat "\000" (match-string 1 line) "\000")
- t t line)))
-
- ;; replace "<" and ">" by "&lt;" and "&gt;"
- ;; handle @<..> HTML tags (replace "@&gt;..&lt;" by "<..>")
- (setq line (org-html-expand line))
-
- ;; Verbatim lines
- (if (and org-export-with-fixed-width
- (string-match "^[ \t]*:\\(.*\\)" line))
+ ;; end of quote?
+ (when (and inquote (string-match "^\\*+" line))
+ (insert "</pre>\n")
+ (setq inquote nil))
+ ;; inquote
+ (if inquote
(progn
- (let ((l (match-string 1 line)))
- (while (string-match " " l)
- (setq l (replace-match "&nbsp;" t t l)))
- (insert "\n<span style='font-family:Courier'>"
- l "</span>"
- (if (and lines
- (not (string-match "^[ \t]+\\(:.*\\)"
- (car lines))))
- "<br>\n" "\n"))))
+ (insert line "\n")
+ (setq line (org-html-expand line))) ;;????? FIXME: not needed?
+
+ ;; Protect the links
(setq start 0)
- (while (string-match org-protected-link-regexp line start)
- (setq start (- (match-end 0) 2))
- (setq type (match-string 1 line))
- (cond
- ((member type '("http" "https" "ftp" "mailto" "news"))
- ;; standard URL
- (setq line (replace-match
-; "<a href=\"\\1:\\2\">&lt;\\1:\\2&gt;</a>"
- "<a href=\"\\1:\\2\">\\1:\\2</a>"
- nil nil line)))
- ((string= type "file")
- ;; FILE link
- (let* ((filename (match-string 2 line))
- (abs-p (file-name-absolute-p filename))
- (thefile (if abs-p (expand-file-name filename) filename))
- (thefile (save-match-data
- (if (string-match ":[0-9]+$" thefile)
- (replace-match "" t t thefile)
- thefile)))
- (file-is-image-p
- (save-match-data
- (string-match (org-image-file-name-regexp) thefile))))
+ (while (string-match org-link-maybe-angles-regexp line start)
+ (setq start (match-end 0))
+ (setq line (replace-match
+ (concat "\000" (match-string 1 line) "\000")
+ t t line)))
+
+ ;; replace "<" and ">" by "&lt;" and "&gt;"
+ ;; handle @<..> HTML tags (replace "@&gt;..&lt;" by "<..>")
+ (setq line (org-html-expand line))
+
+ ;; Verbatim lines
+ (if (and org-export-with-fixed-width
+ (string-match "^[ \t]*:\\(.*\\)" line))
+ (progn
+ (let ((l (match-string 1 line)))
+ (while (string-match " " l)
+ (setq l (replace-match "&nbsp;" t t l)))
+ (insert "\n<span style='font-family:Courier'>"
+ l "</span>"
+ (if (and lines
+ (not (string-match "^[ \t]+\\(:.*\\)"
+ (car lines))))
+ "<br>\n" "\n"))))
+
+ (setq start 0)
+ (while (string-match org-protected-link-regexp line start)
+ (setq start (- (match-end 0) 2))
+ (setq type (match-string 1 line))
+ (cond
+ ((member type '("http" "https" "ftp" "mailto" "news"))
+ ;; standard URL
(setq line (replace-match
- (if (and org-export-html-inline-images
- file-is-image-p)
- (concat "<img src=\"" thefile "\"/>")
- (concat "<a href=\"" thefile "\">\\1:\\2</a>"))
- nil nil line))))
-
- ((member type '("bbdb" "vm" "wl" "rmail" "gnus" "shell"))
- (setq line (replace-match
- "<i>&lt;\\1:\\2&gt;</i>" nil nil line)))))
-
- ;; TODO items
- (if (and (string-match org-todo-line-regexp line)
- (match-beginning 2))
- (if (equal (match-string 2 line) org-done-string)
+ ; "<a href=\"\\1:\\2\">&lt;\\1:\\2&gt;</a>"
+ "<a href=\"\\1:\\2\">\\1:\\2</a>"
+ nil nil line)))
+ ((string= type "file")
+ ;; FILE link
+ (let* ((filename (match-string 2 line))
+ (abs-p (file-name-absolute-p filename))
+ (thefile (if abs-p (expand-file-name filename) filename))
+ (thefile (save-match-data
+ (if (string-match ":[0-9]+$" thefile)
+ (replace-match "" t t thefile)
+ thefile)))
+ (file-is-image-p
+ (save-match-data
+ (string-match (org-image-file-name-regexp) thefile))))
(setq line (replace-match
- "<span style='color:green'>\\2</span>"
- nil nil line 2))
- (setq line (replace-match "<span style='color:red'>\\2</span>"
- nil nil line 2))))
+ (if (and org-export-html-inline-images
+ file-is-image-p)
+ (concat "<img src=\"" thefile "\"/>")
+ (concat "<a href=\"" thefile "\">\\1:\\2</a>"))
+ nil nil line))))
- ;; DEADLINES
- (if (string-match org-deadline-line-regexp line)
- (progn
- (if (save-match-data
- (string-match "<a href"
- (substring line 0 (match-beginning 0))))
- nil ; Don't do the replacement - it is inside a link
- (setq line (replace-match "<span style='color:red'>\\&</span>"
- nil nil line 1)))))
+ ((member type '("bbdb" "vm" "wl" "rmail" "gnus" "shell"))
+ (setq line (replace-match
+ "<i>&lt;\\1:\\2&gt;</i>" nil nil line)))))
+
+ ;; TODO items
+ (if (and (string-match org-todo-line-regexp line)
+ (match-beginning 2))
+ (if (equal (match-string 2 line) org-done-string)
+ (setq line (replace-match
+ "<span style='color:green'>\\2</span>"
+ nil nil line 2))
+ (setq line (replace-match "<span style='color:red'>\\2</span>"
+ nil nil line 2))))
+
+ ;; DEADLINES
+ (if (string-match org-deadline-line-regexp line)
+ (progn
+ (if (save-match-data
+ (string-match "<a href"
+ (substring line 0 (match-beginning 0))))
+ nil ; Don't do the replacement - it is inside a link
+ (setq line (replace-match "<span style='color:red'>\\&</span>"
+ nil nil line 1)))))
- (cond
- ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
- ;; This is a headline
- (setq level (- (match-end 1) (match-beginning 1))
- txt (match-string 2 line))
- (if (<= level umax) (setq head-count (+ head-count 1)))
- (org-html-level-start level txt umax
- (and org-export-with-toc (<= level umax))
- head-count))
-
- ((and org-export-with-tables
- (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)" line))
- (if (not table-open)
- ;; New table starts
- (setq table-open t table-buffer nil table-orig-buffer nil))
- ;; Accumulate lines
- (setq table-buffer (cons line table-buffer)
- table-orig-buffer (cons origline table-orig-buffer))
- (when (or (not lines)
- (not (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)"
- (car lines))))
- (setq table-open nil
- table-buffer (nreverse table-buffer)
- table-orig-buffer (nreverse table-orig-buffer))
- (insert (org-format-table-html table-buffer table-orig-buffer))))
- (t
- ;; Normal lines
- ;; Lines starting with "-", and empty lines make new paragraph.
- ;; FIXME: Should we add + and *?
- (if (string-match "^ *-\\|^[ \t]*$" line) (insert "<p>"))
- (insert line (if org-export-preserve-breaks "<br>\n" "\n"))))
- ))
- (if org-export-html-with-timestamp
- (insert org-export-html-html-helper-timestamp))
- (insert "</body>\n</html>\n")
- (normal-mode)
- (save-buffer)
- (goto-char (point-min)))))
+
+ (cond
+ ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
+ ;; This is a headline
+ (setq level (- (match-end 1) (match-beginning 1))
+ txt (match-string 2 line))
+ (if (<= level umax) (setq head-count (+ head-count 1)))
+ (org-html-level-start level txt umax
+ (and org-export-with-toc (<= level umax))
+ head-count)
+ ;; QUOTES
+ (when (string-match quote-re line)
+ (insert "<pre>")
+ (setq inquote t)))
+
+ ((and org-export-with-tables
+ (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)" line))
+ (if (not table-open)
+ ;; New table starts
+ (setq table-open t table-buffer nil table-orig-buffer nil))
+ ;; Accumulate lines
+ (setq table-buffer (cons line table-buffer)
+ table-orig-buffer (cons origline table-orig-buffer))
+ (when (or (not lines)
+ (not (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)"
+ (car lines))))
+ (setq table-open nil
+ table-buffer (nreverse table-buffer)
+ table-orig-buffer (nreverse table-orig-buffer))
+ (insert (org-format-table-html table-buffer table-orig-buffer))))
+ (t
+ ;; Normal lines
+ ;; Lines starting with "-", and empty lines make new paragraph.
+ ;; FIXME: Should we add + and *?
+ (if (string-match "^ *-\\|^[ \t]*$" line) (insert "<p>"))
+ (insert line (if org-export-preserve-breaks "<br>\n" "\n"))))
+ )))
+ (if org-export-html-with-timestamp
+ (insert org-export-html-html-helper-timestamp))
+ (insert "</body>\n</html>\n")
+ (normal-mode)
+ (save-buffer)
+ (goto-char (point-min)))))
(defun org-format-table-html (lines olines)
"Find out which HTML converter to use and return the HTML code."
@@ -9229,7 +9300,7 @@ stacked delimiters is N. Escaping delimiters is not possible."
(if (string-match "\\`[A-Z]\\'" number-string)
(aset org-section-numbers i
(- (string-to-char number-string) ?A -1))
- (aset org-section-numbers i (string-to-int number-string)))
+ (aset org-section-numbers i (string-to-number number-string)))
(pop numbers))
(setq i (1- i)))))
@@ -9998,14 +10069,23 @@ Show the heading too, if it is currently invisible."
"\\):[ \t]*"
(if org-noutline-p "\\(.+\\)" "\\([^\n\r]+\\)")))
-;; Advise the bookmark-jump function to make jump position visible
-;; Wrapped into eval-after-load to avoid loading advice unnecessarily
+;; Make `bookmark-jump' show the jump location if it was hidden.
(eval-after-load "bookmark"
- '(defadvice bookmark-jump (after org-make-visible activate)
- "Make the position visible."
- (and (eq major-mode 'org-mode)
- (org-invisible-p)
- (org-show-hierarchy-above))))
+ '(if (boundp 'bookmark-after-jump-hook)
+ ;; We can use the hook
+ (add-hook 'bookmark-after-jump-hook 'org-bookmark-jump-unhide)
+ ;; Hook not available, use advice
+ (defadvice bookmark-jump (after org-make-visible activate)
+ "Make the position visible."
+ (org-bookmark-jump-unhide))))
+
+(defun org-bookmark-jump-unhide ()
+ "Unhide the current position, to show the bookmark location."
+ (and (eq major-mode 'org-mode)
+ (or (org-invisible-p)
+ (save-excursion (goto-char (max (point-min) (1- (point))))
+ (org-invisible-p)))
+ (org-show-hierarchy-above)))
;;; Finish up
diff --git a/lisp/textmodes/reftex-global.el b/lisp/textmodes/reftex-global.el
index 281e852a40d..3b5c51d2c9d 100644
--- a/lisp/textmodes/reftex-global.el
+++ b/lisp/textmodes/reftex-global.el
@@ -32,6 +32,9 @@
(require 'reftex)
;;;
+(defvar isearch-next-buffer-function)
+(defvar TeX-master)
+
(defun reftex-create-tags-file ()
"Create TAGS file by running `etags' on the current document.
The TAGS file is also immediately visited with `visit-tags-table'."
@@ -137,7 +140,7 @@ No active TAGS table is required."
(set (make-local-variable 'TeX-master) master)
(erase-buffer)
(insert " MULTIPLE LABELS IN CURRENT DOCUMENT:\n")
- (insert
+ (insert
" Move point to label and type `r' to run a query-replace on the label\n"
" and its references. Type `q' to exit this buffer.\n\n")
(insert " LABEL FILE\n")
@@ -195,8 +198,8 @@ one with the `xr' package."
(not (yes-or-no-p "Replacing all simple labels in multiple files is risky. Continue? ")))
(error "Abort"))
;; Make the translation list
- (let* ((re-core (concat "\\("
- (mapconcat 'cdr reftex-typekey-to-prefix-alist "\\|")
+ (let* ((re-core (concat "\\("
+ (mapconcat 'cdr reftex-typekey-to-prefix-alist "\\|")
"\\)"))
(label-re (concat "\\`" re-core "\\([0-9]+\\)\\'"))
(search-re (concat "[{,]\\(" re-core "\\([0-9]+\\)\\)[,}]"))
@@ -229,11 +232,11 @@ one with the `xr' package."
(reftex-save-all-document-buffers)
;; First test to check for erros
- (setq n (reftex-translate
+ (setq n (reftex-translate
files search-re translate-alist error-fmt 'test))
;; Now the real thing.
- (if (yes-or-no-p
+ (if (yes-or-no-p
(format "Replace %d items at %d places in %d files? "
(length translate-alist) n (length files)))
(progn
@@ -251,9 +254,9 @@ one with the `xr' package."
(defun reftex-translate (files search-re translate-alist error-fmt test)
;; In FILES, look for SEARCH-RE and replace match 1 of it with
- ;; its association in TRANSLATE-ALSIT.
+ ;; its association in TRANSLATE-ALSIT.
;; If we do not find an association and TEST is non-nil, query
- ;; to ignore the problematic string.
+ ;; to ignore the problematic string.
;; If TEST is nil, it is ignored without query.
;; Return the number of replacements.
(let ((n 0) file label match-data buf macro pos cell)
@@ -279,7 +282,7 @@ one with the `xr' package."
(or (looking-at "\\\\ref")
(looking-at "\\\\[a-zA-Z]*ref\\(range\\)?[^a-zA-Z]")
(looking-at "\\\\ref[a-zA-Z]*[^a-zA-Z]")
- (looking-at (format
+ (looking-at (format
reftex-find-label-regexp-format
(regexp-quote label)))))
;; OK, we should replace it.
@@ -342,7 +345,7 @@ Also checks if buffers visiting the files are in read-only mode."
(defun reftex-isearch-wrap-function ()
(if (not isearch-word)
- (switch-to-buffer
+ (switch-to-buffer
(funcall isearch-next-buffer-function (current-buffer) t)))
(goto-char (if isearch-forward (point-min) (point-max))))
@@ -428,7 +431,7 @@ With no argument, this command toggles
`reftex-isearch-minor-mode' on iff ARG is positive."
(interactive "P")
(let ((old-reftex-isearch-minor-mode reftex-isearch-minor-mode))
- (setq reftex-isearch-minor-mode
+ (setq reftex-isearch-minor-mode
(not (or (and (null arg) reftex-isearch-minor-mode)
(<= (prefix-numeric-value arg) 0))))
(unless (eq reftex-isearch-minor-mode old-reftex-isearch-minor-mode)
@@ -459,7 +462,7 @@ With no argument, this command toggles
;; Force modeline redisplay.
(set-buffer-modified-p (buffer-modified-p))))
-(add-minor-mode 'reftex-isearch-minor-mode "/I" nil nil
+(add-minor-mode 'reftex-isearch-minor-mode "/I" nil nil
'reftex-isearch-minor-mode)
;;; arch-tag: 2dbf7633-92c8-4340-8656-7aa019d0f80d
diff --git a/lisp/textmodes/reftex-index.el b/lisp/textmodes/reftex-index.el
index ebcc5d06754..804672c1847 100644
--- a/lisp/textmodes/reftex-index.el
+++ b/lisp/textmodes/reftex-index.el
@@ -32,6 +32,9 @@
(require 'reftex)
;;;
+(defvar reftex-index-phrases-marker)
+(defvar TeX-master)
+
;; START remove for XEmacs release
(defvar mark-active)
(defvar zmacs-regions)
@@ -53,13 +56,13 @@ which is part of AUCTeX, the string is first processed with the
(active (if (boundp 'zmacs-regions)
(and zmacs-regions (region-exists-p)) ; XEmacs
(and transient-mark-mode mark-active))) ; Emacs
- (beg (if active
+ (beg (if active
(region-beginning)
- (save-excursion
+ (save-excursion
(skip-syntax-backward "w\\") (point))))
(end (if active
(region-end)
- (save-excursion
+ (save-excursion
(skip-syntax-forward "w\\") (point))))
(sel (buffer-substring beg end))
(mathp (condition-case nil (texmathp) (error nil)))
@@ -90,7 +93,7 @@ which is part of AUCTeX, the string is first processed with the
;; Delete what is in the buffer and make the index entry
(delete-region beg end)
(reftex-index def-char full-entry def-tag sel)))))
-
+
(defun reftex-index (&optional char key tag sel no-insert)
"Query for an index macro and insert it along with its argments.
The index macros available are those defined in `reftex-index-macro' or
@@ -166,7 +169,7 @@ will prompt for other arguments."
;; OPT-ARGS is a list of optional argument indices, as given by
;; `reftex-parse-args'.
(let* ((opt (and (integerp itag) (member itag opt-args)))
- (index-tags (cdr (assq 'index-tags
+ (index-tags (cdr (assq 'index-tags
(symbol-value reftex-docstruct-symbol))))
(default (reftex-default-index))
(prompt (concat "Index tag"
@@ -180,17 +183,17 @@ will prompt for other arguments."
(defun reftex-index-select-tag ()
;; Have the user select an index tag.
;; FIXME: should we cache tag-alist, prompt and help?
- (let* ((index-tags (cdr (assoc 'index-tags
+ (let* ((index-tags (cdr (assoc 'index-tags
(symbol-value reftex-docstruct-symbol))))
(default (reftex-default-index)))
- (cond
+ (cond
((null index-tags)
(error "No index tags available"))
((= (length index-tags) 1)
;; Just one index, use it
(car index-tags))
-
+
((> (length index-tags) 1)
;; Several indices, ask.
(let* ((tags (copy-sequence index-tags))
@@ -211,12 +214,12 @@ will prompt for other arguments."
(unless (assq (aref tag i) tag-alist)
(push (list (aref tag i)
tag
- (concat (substring tag 0 i)
+ (concat (substring tag 0 i)
"[" (substring tag i (incf i)) "]"
(substring tag i)))
tag-alist)
(throw 'exit t)))
- (push (list (+ ?0 (incf cnt)) tag
+ (push (list (+ ?0 (incf cnt)) tag
(concat "[" (int-to-string cnt) "]:" tag))
tag-alist)))
(setq tag-alist (nreverse tag-alist))
@@ -231,7 +234,7 @@ will prompt for other arguments."
(if default
(format "[^M] %s (the default)\n" default)
"")
- (mapconcat (lambda(x)
+ (mapconcat (lambda(x)
(apply 'format "[%c] %s" x))
tag-alist "\n")))
;; Query the user for an index-tag
@@ -260,7 +263,7 @@ will prompt for other arguments."
key))
(defun reftex-index-update-taglist (newtag)
- ;; add NEWTAG to the list of available index tags.
+ ;; add NEWTAG to the list of available index tags.
(let ((cell (assoc 'index-tags (symbol-value reftex-docstruct-symbol))))
(and newtag (cdr cell) (not (member newtag (cdr cell)))
(push newtag (cdr cell)))))
@@ -341,7 +344,7 @@ _ ^ Add/Remove parent key (to make this item a subitem).
;; Note: This function just looks for the nearest match of the
;; context string and may fail if the entry moved and an identical
;; entry is close to the old position. Frequent rescans make this
- ;; safer.
+ ;; safer.
(let* ((file (nth 3 data))
(literal (nth 2 data))
(pos (nth 4 data))
@@ -389,7 +392,7 @@ With prefix 3, restrict index to region."
(calling-file (buffer-file-name))
(restriction
(or overriding-restriction
- (and (not redo)
+ (and (not redo)
(reftex-get-restriction current-prefix-arg docstruct))))
(locations
;; See if we are on an index macro as initial position
@@ -398,7 +401,7 @@ With prefix 3, restrict index to region."
(macro (car what-macro))
(here-I-am (when (member macro reftex-macros-with-index)
(save-excursion
- (goto-char (+ (cdr what-macro)
+ (goto-char (+ (cdr what-macro)
(length macro)))
(reftex-move-over-touching-args)
(reftex-where-am-I)))))
@@ -409,7 +412,7 @@ With prefix 3, restrict index to region."
(setq buffer-name (reftex-make-index-buffer-name index-tag))
;; Goto the buffer and put it into the correct mode
-
+
(when (or restriction current-prefix-arg)
(reftex-kill-buffer buffer-name))
@@ -502,7 +505,7 @@ SPC=view TAB=goto RET=goto+hide [e]dit [q]uit [r]escan [f]ollow [?]Help
;; Delete the entry at place
(and (bolp) (forward-char 1))
(delete-region (previous-single-property-change (1+ (point)) :data)
- (or (next-single-property-change (point) :data)
+ (or (next-single-property-change (point) :data)
(point-max))))
;; Walk through the list and insert all entries
@@ -523,7 +526,7 @@ SPC=view TAB=goto RET=goto+hide [e]dit [q]uit [r]escan [f]ollow [?]Help
(insert indent (nth 7 cell))
(when font
(setq to (point))
- (put-text-property
+ (put-text-property
(- (point) (length (nth 7 cell))) to
'face index-face)
(goto-char to))
@@ -551,7 +554,7 @@ SPC=view TAB=goto RET=goto+hide [e]dit [q]uit [r]escan [f]ollow [?]Help
(defun reftex-index-insert-new-letter (letter &optional font)
;; Start a new section in the index
(let ((from (point)))
- (insert "\n" letter letter letter
+ (insert "\n" letter letter letter
"-----------------------------------------------------------------")
(when font
(put-text-property from (point) 'face reftex-index-section-face))
@@ -628,10 +631,10 @@ SPC=view TAB=goto RET=goto+hide [e]dit [q]uit [r]escan [f]ollow [?]Help
(interactive "p")
(setq reftex-callback-fwd t)
(or (eobp) (forward-char 1))
- (goto-char (or (next-single-property-change (point) :data)
+ (goto-char (or (next-single-property-change (point) :data)
(point)))
(unless (get-text-property (point) :data)
- (goto-char (or (next-single-property-change (point) :data)
+ (goto-char (or (next-single-property-change (point) :data)
(point)))))
(defun reftex-index-previous (&optional arg)
"Move to previous selectable item."
@@ -774,7 +777,7 @@ When index is restricted, select the next section as restriction criterion."
(reftex-index-restrict-to-section t)
(setq reftex-index-restriction-indicator (nth 6 bor)
reftex-index-restriction-data
- (list bor
+ (list bor
(car (memq (assq 'toc (cdr (memq bor docstruct)))
docstruct))))
(reftex-index-revert))))
@@ -806,7 +809,7 @@ When index is restricted, select the previous section as restriction criterion."
show-window show-buffer match)
(unless data (error "Don't know which index entry to visit"))
-
+
(if (eq (car data) 'index)
(setq match (reftex-index-show-entry data no-revisit)))
@@ -877,7 +880,7 @@ When index is restricted, select the previous section as restriction criterion."
attr (nth 2 analyze))
(setf (nth 2 analyze) (if (string= attr bor) "" bor))
(setq new (apply 'concat analyze))
- (reftex-index-change-entry
+ (reftex-index-change-entry
new (if (string= (nth 2 analyze) bor)
"Entry is now START-OF-PAGE-RANGE"
"START-OF-PAGE-RANGE canceled"))))
@@ -935,7 +938,7 @@ When index is restricted, select the previous section as restriction criterion."
(t (setf (nth n analyze) (concat initial npart))))
(setq new (apply 'concat analyze))
;; Change the entry and insert the changed version into the index.
- (reftex-index-change-entry
+ (reftex-index-change-entry
new (if (string= npart "")
(format "Deleted: %s" opart)
(format "New value is: %s" npart)))))
@@ -949,14 +952,14 @@ When index is restricted, select the previous section as restriction criterion."
(unless data (error "Don't know which index entry to change"))
(setq old (nth 2 data)
key (nth 6 data)
- prefix (completing-read
- "Prefix: "
- (reftex-sublist-nth
+ prefix (completing-read
+ "Prefix: "
+ (reftex-sublist-nth
docstruct 6
(lambda (x)
(and (eq (car x) 'index)
(string= (nth 1 x) reftex-index-tag))) t)))
- (unless (string-match
+ (unless (string-match
(concat (regexp-quote (car reftex-index-special-chars)) "\\'")
prefix)
(setq prefix (concat prefix (car reftex-index-special-chars))))
@@ -996,7 +999,7 @@ When index is restricted, select the previous section as restriction criterion."
(defun reftex-index-change-entry (new &optional message)
;; Change the full context string of the index entry at point to
;; NEW. This actually edits the buffer where the entry is defined.
-
+
(let* ((data (get-text-property (point) :data))
old beg end info)
(unless data (error "Cannot change entry"))
@@ -1088,14 +1091,14 @@ When index is restricted, select the previous section as restriction criterion."
(if (eq char ?!)
(error "This <%s> index does not contain entries sorted before the letters"
reftex-index-tag)
- (error "This <%s> index does not contain entries starting with `%c'"
+ (error "This <%s> index does not contain entries starting with `%c'"
reftex-index-tag char)))))
-(easy-menu-define
+(easy-menu-define
reftex-index-menu reftex-index-map
"Menu for Index buffer"
`("Index"
- ["Goto section A-Z"
+ ["Goto section A-Z"
(message "To go to a section, just press any of: !%s"
reftex-index-section-letters) t]
["Show Entry" reftex-index-view-entry t]
@@ -1135,7 +1138,7 @@ When index is restricted, select the previous section as restriction criterion."
["Context" reftex-index-toggle-context :style toggle
:selected reftex-index-include-context]
"--"
- ["Follow Mode" reftex-index-toggle-follow :style toggle
+ ["Follow Mode" reftex-index-toggle-follow :style toggle
:selected reftex-index-follow-mode])
"--"
["Help" reftex-index-show-help t]))
@@ -1187,7 +1190,7 @@ You get a chance to edit the entry in the phrases buffer - finish with
(set-marker reftex-index-return-marker (point))
(reftex-index-selection-or-word arg 'phrase)
(if (eq major-mode 'reftex-index-phrases-mode)
- (message
+ (message
(substitute-command-keys
"Return to LaTeX with \\[reftex-index-phrases-save-and-return]"))))
@@ -1216,7 +1219,7 @@ If the buffer is non-empty, delete the old header first."
(sort (copy-sequence reftex-index-macro-alist)
(lambda (a b) (equal (car a) default-macro))))
macro entry key repeat)
-
+
(if master (set (make-local-variable 'TeX-master)
(file-name-nondirectory master)))
@@ -1229,7 +1232,7 @@ If the buffer is non-empty, delete the old header first."
(if (looking-at reftex-index-phrases-comment-regexp)
(beginning-of-line 2))
(while (looking-at "^[ \t]*$")
- (beginning-of-line 2))
+ (beginning-of-line 2))
(cond ((fboundp 'zmacs-activate-region) (zmacs-activate-region))
((boundp 'make-active) (setq mark-active t)))
(if (yes-or-no-p "Delete and rebuilt header ")
@@ -1305,7 +1308,7 @@ Here are all local bindings.
(setq major-mode 'reftex-index-phrases-mode
mode-name "Phrases")
(use-local-map reftex-index-phrases-map)
- (set (make-local-variable 'font-lock-defaults)
+ (set (make-local-variable 'font-lock-defaults)
reftex-index-phrases-font-lock-defaults)
(easy-menu-add reftex-index-phrases-menu reftex-index-phrases-map)
(set (make-local-variable 'reftex-index-phrases-marker) (make-marker))
@@ -1315,7 +1318,7 @@ Here are all local bindings.
;; Font Locking stuff
(let ((ss (if (featurep 'xemacs) 'secondary-selection ''secondary-selection)))
(setq reftex-index-phrases-font-lock-keywords
- (list
+ (list
(cons reftex-index-phrases-comment-regexp 'font-lock-comment-face)
(list reftex-index-phrases-macrodef-regexp
'(1 font-lock-type-face)
@@ -1339,11 +1342,10 @@ Here are all local bindings.
(setq reftex-index-phrases-font-lock-defaults
'((reftex-index-phrases-font-lock-keywords)
nil t nil beginning-of-line))
- (put 'reftex-index-phrases-mode 'font-lock-defaults
+ (put 'reftex-index-phrases-mode 'font-lock-defaults
reftex-index-phrases-font-lock-defaults) ; XEmacs
)
-(defvar reftex-index-phrases-marker)
(defun reftex-index-next-phrase (&optional arg)
"Index the next ARG phrases in the phrases buffer."
(interactive "p")
@@ -1402,10 +1404,10 @@ match, the user will be asked to confirm the replacement."
(move-marker reftex-index-phrases-marker
(match-beginning 0) (current-buffer))
;; Start the query-replace
- (reftex-query-index-phrase-globally
- files phrase macro-fmt
+ (reftex-query-index-phrase-globally
+ files phrase macro-fmt
index-key repeat as-words)
- (message "%s replaced"
+ (message "%s replaced"
(reftex-number replace-count "occurrence"))))))
(t (error "Cannot parse this line")))))
@@ -1448,7 +1450,7 @@ the document and stores the list in `reftex-index-phrases-files'."
(unless buf (error "Master file %s not found" master))
(set-buffer buf)
(reftex-access-scan-info)
- (setq reftex-index-phrases-files
+ (setq reftex-index-phrases-files
(reftex-all-document-files))))
;; Parse the files header for macro definitions
(setq reftex-index-phrases-macro-data nil)
@@ -1463,7 +1465,7 @@ the document and stores the list in `reftex-index-phrases-files'."
;; Reverse the list, so that the first macro is first
(if (null reftex-index-phrases-macro-data)
(error "No valid MACRO DEFINITION line in %s file (make sure to use TAB separators)" reftex-index-phrase-file-extension))
- (setq reftex-index-phrases-macro-data
+ (setq reftex-index-phrases-macro-data
(nreverse reftex-index-phrases-macro-data))
(goto-char (point-min)))))
@@ -1475,7 +1477,7 @@ you need to add/change text in an already indexed document and want to
index the new part without having to go over the unchanged parts again."
(interactive "r")
(let ((win-conf (current-window-configuration))
- (reftex-index-phrases-restrict-file (buffer-file-name)))
+ (reftex-index-phrases-restrict-file (buffer-file-name)))
(save-excursion
(save-restriction
(narrow-to-region beg end)
@@ -1498,7 +1500,7 @@ index the new part without having to go over the unchanged parts again."
(setq text (reftex-index-simplify-phrase text))
(goto-char (point-min))
(if (re-search-forward
- (concat "^\\(\\S-*\\)\t\\(" (regexp-quote text)
+ (concat "^\\(\\S-*\\)\t\\(" (regexp-quote text)
"\\) *[\t\n]") nil t)
(progn
(goto-char (match-end 2))
@@ -1528,7 +1530,7 @@ this function repeatedly."
(let* ((phrase (match-string 3))
(case-fold-search reftex-index-phrases-case-fold-search)
(re (reftex-index-phrases-find-dup-re phrase t)))
- (if (save-excursion
+ (if (save-excursion
(goto-char (point-min))
(and (re-search-forward re nil t)
(re-search-forward re nil t)))
@@ -1621,7 +1623,7 @@ this function repeatedly."
(progn
(princ (format " Superphrases: Phrase matches the following %s in the phrase buffer:\n"
(reftex-number ntimes2 "line")))
- (mapcar (lambda(x)
+ (mapcar (lambda(x)
(princ (format " Line %4d: %s\n" (car x) (cdr x))))
(nreverse superphrases))))))))
@@ -1674,7 +1676,7 @@ it first compares the macro identifying chars and then the phrases."
beg end)
(goto-char (point-min))
;; Find first and last phrase line in buffer
- (setq beg
+ (setq beg
(and (re-search-forward reftex-index-phrases-phrase-regexp12 nil t)
(match-beginning 0)))
(goto-char (point-max))
@@ -1701,15 +1703,15 @@ it first compares the macro identifying chars and then the phrases."
(if (string-match reftex-index-phrases-phrase-regexp12 a)
(progn
;; Extract macro char and phrase-or-key for a
- (setq ca (match-string 1 a)
- pa (downcase
+ (setq ca (match-string 1 a)
+ pa (downcase
(or (and reftex-index-phrases-sort-prefers-entry
(match-string 6 a))
(match-string 3 a))))
(if (string-match reftex-index-phrases-phrase-regexp12 b)
(progn
;; Extract macro char and phrase-or-key for b
- (setq cb (match-string 1 b)
+ (setq cb (match-string 1 b)
pb (downcase
(or (and reftex-index-phrases-sort-prefers-entry
(match-string 6 b))
@@ -1717,7 +1719,7 @@ it first compares the macro identifying chars and then the phrases."
(setq c-p (string< ca cb)
p-p (string< pa pb))
;; Do the right comparison, based on the value of `chars-first'
- ;; `chars-first' is bound locally in the calling function
+ ;; `chars-first' is bound locally in the calling function
(if chars-first
(if (string= ca cb) p-p c-p)
(if (string= pa pb) c-p p-p)))))
@@ -1728,7 +1730,7 @@ it first compares the macro identifying chars and then the phrases."
(not reftex-index-phrases-sort-in-blocks))))
(defvar reftex-index-phrases-menu)
-(defun reftex-index-make-phrase-regexp (phrase &optional
+(defun reftex-index-make-phrase-regexp (phrase &optional
as-words allow-newline)
"Return a regexp matching PHRASE, even if distributed over lines.
With optional arg AS-WORDS, require word boundary at beginning and end.
@@ -1739,12 +1741,12 @@ With optional arg ALLOW-NEWLINE, allow single newline between words."
"\\([ \t]+\\)")))
(concat (if (and as-words (string-match "\\`\\w" (car words)))
"\\(\\<\\|[`']\\)" "")
- (mapconcat (lambda (w) (regexp-quote
+ (mapconcat (lambda (w) (regexp-quote
(if reftex-index-phrases-case-fold-search
(downcase w)
w)))
words space-re)
- (if (and as-words
+ (if (and as-words
(string-match "\\w\\'" (nth (1- (length words)) words)))
"\\(\\>\\|'\\)" ""))))
@@ -1767,8 +1769,8 @@ Treats the logical `and' for index phrases."
(let ((index-keys (split-string (or index-key match)
reftex-index-phrases-logical-and-regexp)))
(concat
- (mapconcat (lambda (x)
- (format macro-fmt
+ (mapconcat (lambda (x)
+ (format macro-fmt
(format (if mathp reftex-index-math-format "%s") x)))
index-keys "")
(if repeat (reftex-index-simplify-phrase match) ""))))
@@ -1780,7 +1782,7 @@ Treats the logical `and' for index phrases."
(unless files (error "No files"))
(unwind-protect
(progn
- (switch-to-buffer-other-window (reftex-get-file-buffer-force
+ (switch-to-buffer-other-window (reftex-get-file-buffer-force
(car files)))
(catch 'no-more-files
(while (setq file (pop files))
@@ -1820,12 +1822,12 @@ AS-WORDS means, the search for PHRASE should require word boundaries at
both ends."
(let* ((re (reftex-index-make-phrase-regexp phrase as-words 'allow-newline))
(case-fold-search reftex-index-phrases-case-fold-search)
- (index-keys (split-string
+ (index-keys (split-string
(or index-key phrase)
reftex-index-phrases-logical-or-regexp))
(nkeys (length index-keys))
(ckey (nth 0 index-keys))
- (all-yes nil)
+ (all-yes nil)
match rpl char beg end mathp)
(unwind-protect
(while (re-search-forward re nil t)
@@ -1847,16 +1849,16 @@ both ends."
end)))
(throw 'next-match nil))
(reftex-highlight 0 (match-beginning 0) (match-end 0))
- (setq rpl
+ (setq rpl
(save-match-data
(reftex-index-make-replace-string
macro-fmt (match-string 0) ckey repeat mathp)))
- (while
+ (while
(not
(catch 'loop
(message "REPLACE: %s? (yn!qoe%s?)"
rpl
- (if (> nkeys 1)
+ (if (> nkeys 1)
(concat "1-" (int-to-string nkeys))
""))
(setq char (if all-yes ?y (read-char-exclusive)))
@@ -1890,7 +1892,7 @@ both ends."
((member char '(?o ?O))
;; Select a differnt macro
(let* ((nc (reftex-index-select-phrases-macro 2))
- (macro-data
+ (macro-data
(cdr (assoc nc reftex-index-phrases-macro-data)))
(macro-fmt (car macro-data))
(repeat (nth 1 macro-data)))
@@ -1908,7 +1910,7 @@ both ends."
;; Recursive edit
(save-match-data
(save-excursion
- (message
+ (message
(substitute-command-keys
"Recursive edit. Resume with \\[exit-recursive-edit]"))
(recursive-edit))))
@@ -2041,7 +2043,7 @@ Does not do a save-excursion."
("\C-i" . self-insert-command))
do (define-key reftex-index-phrases-map (car x) (cdr x)))
-(easy-menu-define
+(easy-menu-define
reftex-index-phrases-menu reftex-index-phrases-map
"Menu for Phrases buffer"
'("Phrases"
diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el
index 7f922ce85a4..6ebb1104797 100644
--- a/lisp/textmodes/reftex-toc.el
+++ b/lisp/textmodes/reftex-toc.el
@@ -36,6 +36,11 @@
"Keymap used for *toc* buffer.")
(defvar reftex-toc-menu)
+(defvar zmacs-regions)
+
+(defvar reftex-toc-include-labels-indicator nil)
+(defvar reftex-toc-include-index-indicator nil)
+(defvar reftex-toc-max-level-indicator nil)
(defun reftex-toc-mode ()
"Major mode for managing Table of Contents for LaTeX files.
@@ -81,9 +86,6 @@ Here are all local bindings.
(defvar reftex-last-window-height nil)
(defvar reftex-last-window-width nil)
-(defvar reftex-toc-include-labels-indicator nil)
-(defvar reftex-toc-include-index-indicator nil)
-(defvar reftex-toc-max-level-indicator nil)
(defvar reftex-toc-return-marker (make-marker)
"Marker which makes it possible to return from toc to old position.")
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index 01d40a6ea5b..29f12116cde 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -289,6 +289,8 @@
(setq reftex-tables-dirty t)
(set symbol value)))
+(defvar font-lock-keywords)
+
;;; =========================================================================
;;;
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 3288023c835..49bdd5a1cce 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -899,8 +899,6 @@ With prefix argument ARG, repeat this ARG times."
(forward-list)))))))
-(autoload 'compile-internal "compile")
-
(defun sgml-validate (command)
"Validate an SGML document.
Runs COMMAND, a shell command, in a separate process asynchronously
@@ -917,7 +915,7 @@ and move to the line in the SGML document that caused it."
(file-name-nondirectory name))))))))
(setq sgml-saved-validate-command command)
(save-some-buffers (not compilation-ask-about-save) nil)
- (compile-internal command "No more errors"))
+ (compilation-start command))
(defsubst sgml-at-indentation-p ()
"Return true if point is at the first non-whitespace character on the line."
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index ebb00756c9d..fa6fdea8b18 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -36,6 +36,9 @@
(require 'cl)
(require 'skeleton))
+(defvar font-lock-comment-face)
+(defvar font-lock-doc-face)
+
(require 'shell)
(require 'compile)
@@ -1577,12 +1580,14 @@ Return the process in which TeX is running."
(star (string-match "\\*" cmd))
(string
(concat
- (if file
- (if star (concat (substring cmd 0 star)
- (shell-quote-argument file)
- (substring cmd (1+ star)))
- (concat cmd " " (shell-quote-argument file)))
- cmd)
+ (if (null file)
+ cmd
+ (if (file-name-absolute-p file)
+ (setq file (convert-standard-filename file)))
+ (if star (concat (substring cmd 0 star)
+ (shell-quote-argument file)
+ (substring cmd (1+ star)))
+ (concat cmd " " (shell-quote-argument file))))
(if background "&" ""))))
;; Switch to buffer before checking for subproc output in it.
(set-buffer buf)
@@ -1760,7 +1765,11 @@ FILE is typically the output DVI or PDF file."
(save-excursion
(goto-char (point-max))
(and (re-search-backward
- "(see the transcript file for additional information)" nil t)
+ (concat
+ "(see the transcript file for additional information)"
+ "\\|^Output written on .*"
+ (regexp-quote (file-name-nondirectory file))
+ " (.*)\\.") nil t)
(> (save-excursion
(or (re-search-backward "\\[[0-9]+\\]" nil t)
(point-min)))
@@ -1942,8 +1951,7 @@ FILE is typically the output DVI or PDF file."
default-directory))))
(not dir))
(let (shell-dirtrack-verbose)
- (tex-send-command tex-shell-cd-command
- (concat "\"" (convert-standard-filename dir) "\""))))
+ (tex-send-command tex-shell-cd-command dir)))
(with-current-buffer (process-buffer (tex-send-command cmd))
(setq compilation-last-buffer (current-buffer))
(compilation-forget-errors)
@@ -2308,8 +2316,7 @@ Runs the shell command defined by `tex-show-queue-command'."
(tex-out-file
(tex-append (file-name-nondirectory (buffer-file-name)) ""))
(file-dir (file-name-directory (buffer-file-name))))
- (tex-send-command tex-shell-cd-command
- (concat "\"" (convert-standard-filename file-dir) "\""))
+ (tex-send-command tex-shell-cd-command file-dir)
(tex-send-command tex-bibtex-command tex-out-file))
(tex-display-shell))
diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el
index 8fce8099ed7..a0dec653165 100644
--- a/lisp/textmodes/texinfo.el
+++ b/lisp/textmodes/texinfo.el
@@ -42,6 +42,7 @@
`(defvar ,var ,value ,doc)))
(eval-when-compile (require 'tex-mode) (require 'cl))
+(defvar outline-heading-alist)
(defgroup texinfo nil
"Texinfo Mode."
diff --git a/lisp/tooltip.el b/lisp/tooltip.el
index 59f07df0089..25032f69c4e 100644
--- a/lisp/tooltip.el
+++ b/lisp/tooltip.el
@@ -27,6 +27,8 @@
;;; Code:
+(defvar comint-prompt-regexp)
+
;;; Customizable settings
(defgroup tooltip nil
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index e1d8406ae70..ad0ee150207 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,12 @@
+2005-09-01 Chong Yidong <cyd@stupidchicken.com>
+
+ * url-util.el (url-parse-query-string): New optional argument
+ allow-newlines allows decoding of newlines.
+
+ * url-mailto.el (url-mailto): Allow newlines in URL arguments.
+ Don't lose original "to" value when there is a "to" header.
+ Remove carriage return characters in message body.
+
2005-08-24 Juanma Barranquero <lekktu@gmail.com>
* url-news.el (nntp-open-tls-stream, nntp-open-ssl-stream):
diff --git a/lisp/url/url-mailto.el b/lisp/url/url-mailto.el
index 86f5d4a88b6..3316b7c4b9d 100644
--- a/lisp/url/url-mailto.el
+++ b/lisp/url/url-mailto.el
@@ -73,7 +73,7 @@
(setq headers-start (match-end 0)
to (url-unhex-string (substring url 0 (match-beginning 0)))
args (url-parse-query-string
- (substring url headers-start nil) t))
+ (substring url headers-start nil) t t))
(setq to (url-unhex-string url)))
(setq source-url (url-view-url t))
(if (and url-request-data (not (assoc "subject" args)))
@@ -84,16 +84,23 @@
(if (and source-url (not (assoc "x-url-from" args)))
(setq args (cons (list "x-url-from" source-url) args)))
- (if (assoc "to" args)
- (push (cdr (assoc "to" args)) to)
- (setq args (cons (list "to" to) args)))
+ (let ((tolist (assoc "to" args)))
+ (if tolist
+ (if (not (string= to ""))
+ (setcdr tolist
+ (list (concat to ", " (cadr tolist)))))
+ (setq args (cons (list "to" to) args))))
+
(setq subject (cdr-safe (assoc "subject" args)))
(if (fboundp url-mail-command) (funcall url-mail-command) (mail))
(while args
(if (string= (caar args) "body")
(progn
(goto-char (point-max))
- (insert (mapconcat 'identity (cdar args) "\n")))
+ (insert (mapconcat
+ #'(lambda (string)
+ (replace-regexp-in-string "\r\n" "\n" string))
+ (cdar args) "\n")))
(url-mail-goto-field (caar args))
(setq func (intern-soft (concat "mail-" (caar args))))
(insert (mapconcat 'identity (cdar args) ", ")))
diff --git a/lisp/url/url-util.el b/lisp/url/url-util.el
index bec0c7a3133..538eb3eca45 100644
--- a/lisp/url/url-util.el
+++ b/lisp/url/url-util.el
@@ -270,7 +270,7 @@ Will not do anything if `url-show-status' is nil."
(t (file-name-directory file))))
;;;###autoload
-(defun url-parse-query-string (query &optional downcase)
+(defun url-parse-query-string (query &optional downcase allow-newlines)
(let (retval pairs cur key val)
(setq pairs (split-string query "&"))
(while pairs
@@ -278,8 +278,10 @@ Will not do anything if `url-show-status' is nil."
pairs (cdr pairs))
(if (not (string-match "=" cur))
nil ; Grace
- (setq key (url-unhex-string (substring cur 0 (match-beginning 0)))
- val (url-unhex-string (substring cur (match-end 0) nil)))
+ (setq key (url-unhex-string (substring cur 0 (match-beginning 0))
+ allow-newlines))
+ (setq val (url-unhex-string (substring cur (match-end 0) nil)
+ allow-newlines))
(if downcase
(setq key (downcase key)))
(setq cur (assoc key retval))
diff --git a/lisp/w32-fns.el b/lisp/w32-fns.el
index 6e04b6039ce..290f23276b1 100644
--- a/lisp/w32-fns.el
+++ b/lisp/w32-fns.el
@@ -35,6 +35,8 @@
;;; Code:
+(defvar explicit-shell-file-name)
+
;; Map delete and backspace
(define-key function-key-map [backspace] "\177")
(define-key function-key-map [delete] "\C-d")
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 2a094262bb1..ec8885138b5 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,45 @@
+2005-09-03 Richard M. Stallman <rms@gnu.org>
+
+ * tips.texi (Programming Tips): Add conventions for minibuffer
+ questions and prompts.
+
+2005-09-03 Joshua Varner <jlvarner@gmail.com> (tiny change)
+
+ * intro.texi (nil and t): Minor cleanup.
+ Delete spurious mention of keyword symbols.
+ (Evaluation Notation): Add index entry.
+ (A Sample Function Description): Minor cleanup.
+ (A Sample Variable Description): Not all vars can be set.
+
+2005-09-03 Thien-Thi Nguyen <ttn@gnu.org>
+
+ * text.texi (Buffer Contents): Use "\n" in examples' result strings.
+
+ (Insertion): Document precise type of `insert-char' arg COUNT.
+
+2005-09-02 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * modes.texi (Other Font Lock Variables): Sync the default of
+ font-lock-lines-before.
+
+2005-08-31 Michael Albinus <michael.albinus@gmx.de>
+
+ * files.texi (Magic File Names): Add `make-auto-save-file-name'.
+
+2005-08-29 Richard M. Stallman <rms@gnu.org>
+
+ * elisp.texi (Top): Update subnode menu.
+
+ * searching.texi (Searching and Matching): Move node.
+ Rearrange contents and add overall explanation.
+ (Searching and Case): Move node.
+ (Searching and Matching): Update menu.
+
+2005-08-27 Eli Zaretskii <eliz@gnu.org>
+
+ * os.texi (Startup Summary): Fix the description of the initial
+ startup message display.
+
2005-08-25 Richard M. Stallman <rms@gnu.org>
* searching.texi (Search and Replace): Add replace-regexp-in-string.
@@ -6,7 +48,7 @@
* display.texi (Finding Overlays): Fix `find-overlay-prop' in
`next-overlay-change' example.
-
+
2005-08-22 Juri Linkov <juri@jurta.org>
* display.texi (Attribute Functions): Add set-face-inverse-video-p.
@@ -51,7 +93,7 @@
(Frame Parameters): Refer to Geometry.
* buffers.texi (The Buffer List): Fix xrefs.
-
+
* windows.texi (Splitting Windows): Fix xref.
* frames.texi (Layout Parameters): Add xref.
diff --git a/lispref/elisp.texi b/lispref/elisp.texi
index 8c99ee6acaa..726636fc71a 100644
--- a/lispref/elisp.texi
+++ b/lispref/elisp.texi
@@ -912,13 +912,13 @@ Non-ASCII Characters
Searching and Matching
* String Search:: Search for an exact match.
+* Searching and Case:: Case-independent or case-significant searching.
* Regular Expressions:: Describing classes of strings.
* Regexp Search:: Searching for a match for a regexp.
* POSIX Regexps:: Searching POSIX-style for the longest match.
-* Search and Replace:: Internals of @code{query-replace}.
-* Match Data:: Finding out which part of the text matched
- various parts of a regexp, after regexp search.
-* Searching and Case:: Case-independent or case-significant searching.
+* Match Data:: Finding out which part of the text matched,
+ after a string or regexp search.
+* Search and Replace:: Commands that loop, searching and replacing.
* Standard Regexps:: Useful regexps for finding sentences, pages,...
Regular Expressions
diff --git a/lispref/files.texi b/lispref/files.texi
index d8d47964cdf..1ec4b2e5dc2 100644
--- a/lispref/files.texi
+++ b/lispref/files.texi
@@ -2580,7 +2580,9 @@ Here are the operations that a magic file name handler gets to handle:
@code{get-file-buffer},
@code{insert-directory},
@code{insert-file-contents},@*
-@code{load}, @code{make-directory},
+@code{load},
+@code{make-auto-save-file-name},
+@code{make-directory},
@code{make-directory-internal},
@code{make-symbolic-link},@*
@code{rename-file}, @code{set-file-modes}, @code{set-file-times},
diff --git a/lispref/intro.texi b/lispref/intro.texi
index 01ffeb3321c..8c3501c823b 100644
--- a/lispref/intro.texi
+++ b/lispref/intro.texi
@@ -197,7 +197,7 @@ in Lisp programs also.
(not nil) ; @r{Emphasize the truth value @var{false}}
@end example
-@cindex @code{t} and truth
+@cindex @code{t}, uses of
@cindex true
In contexts where a truth value is expected, any non-@code{nil} value
is considered to be @var{true}. However, @code{t} is the preferred way
@@ -209,14 +209,14 @@ choosing, use @code{t}. The symbol @code{t} always has the value
In Emacs Lisp, @code{nil} and @code{t} are special symbols that always
evaluate to themselves. This is so that you do not need to quote them
to use them as constants in a program. An attempt to change their
-values results in a @code{setting-constant} error. The same is true of
-any symbol whose name starts with a colon (@samp{:}). @xref{Constant
+values results in a @code{setting-constant} error. @xref{Constant
Variables}.
@node Evaluation Notation
@subsection Evaluation Notation
@cindex evaluation notation
@cindex documentation notation
+@cindex notation
A Lisp expression that you can evaluate is called a @dfn{form}.
Evaluating a form always produces a result, which is a Lisp object. In
@@ -355,11 +355,11 @@ indicates that the subsequent arguments may be omitted (omitted
arguments default to @code{nil}). Do not write @code{&optional} when
you call the function.
- The keyword @code{&rest} (which must be followed by a single argument
-name) indicates that any number of arguments can follow. The single
-following argument name will have a value, as a variable, which is a
-list of all these remaining arguments. Do not write @code{&rest} when
-you call the function.
+ The keyword @code{&rest} (which must be followed by a single
+argument name) indicates that any number of arguments can follow. The
+single argument name following @code{&rest} will receive, as its
+value, a list of all the remaining arguments passed to the function.
+Do not write @code{&rest} when you call the function.
Here is a description of an imaginary function @code{foo}:
@@ -450,9 +450,9 @@ from @var{body}, which includes all remaining elements of the form.
@cindex variable descriptions
@cindex option descriptions
- A @dfn{variable} is a name that can hold a value. Although any
-variable can be set by the user, certain variables that exist
-specifically so that users can change them are called @dfn{user
+ A @dfn{variable} is a name that can hold a value. Although nearly
+all variables can be set by the user, certain variables exist
+specifically so that users can change them; these are called @dfn{user
options}. Ordinary variables and user options are described using a
format like that for functions except that there are no arguments.
diff --git a/lispref/modes.texi b/lispref/modes.texi
index 49b05021d91..a391f27a80f 100644
--- a/lispref/modes.texi
+++ b/lispref/modes.texi
@@ -2767,7 +2767,7 @@ arguments, the beginning and end of the region. The default value is
This variable specifies the number of extra lines to consider when
refontifying the buffer after each text change. Font lock begins
refontifying from that number of lines before the changed region. The
-default is 1, but using a larger value can be useful for coping with
+default is 0, but using a larger value can be useful for coping with
multi-line patterns.
@end defvar
diff --git a/lispref/os.texi b/lispref/os.texi
index 3f00ae99cf0..ac2350ac255 100644
--- a/lispref/os.texi
+++ b/lispref/os.texi
@@ -119,7 +119,7 @@ mode or using a window system.
@item
It displays the initial echo area message, unless you have suppressed
-that with @code{inhibit-startup-echo-area-message} or @samp{-Q}.
+that with @code{inhibit-startup-echo-area-message}.
@item
It processes the action arguments from the command line.
@@ -138,7 +138,7 @@ It runs @code{window-setup-hook}. @xref{Window Systems}.
@item
It displays copyleft, nonwarranty, and basic use information, provided
the value of @code{inhibit-startup-message} is @code{nil}, you didn't
-specify @samp{--no-splash} or @samp{-Q}, and the buffer is still empty.
+specify @samp{--no-splash} or @samp{-Q}.
@end enumerate
@defopt inhibit-startup-message
diff --git a/lispref/searching.texi b/lispref/searching.texi
index e702469a14b..84de54984ae 100644
--- a/lispref/searching.texi
+++ b/lispref/searching.texi
@@ -16,13 +16,13 @@ portions of it.
@menu
* String Search:: Search for an exact match.
+* Searching and Case:: Case-independent or case-significant searching.
* Regular Expressions:: Describing classes of strings.
* Regexp Search:: Searching for a match for a regexp.
* POSIX Regexps:: Searching POSIX-style for the longest match.
-* Search and Replace:: Internals of @code{query-replace}.
* Match Data:: Finding out which part of the text matched,
after a string or regexp search.
-* Searching and Case:: Case-independent or case-significant searching.
+* Search and Replace:: Commands that loop, searching and replacing.
* Standard Regexps:: Useful regexps for finding sentences, pages,...
@end menu
@@ -157,6 +157,53 @@ except that it searches backward and normally leaves point at the
beginning of the match.
@end deffn
+@node Searching and Case
+@section Searching and Case
+@cindex searching and case
+
+ By default, searches in Emacs ignore the case of the text they are
+searching through; if you specify searching for @samp{FOO}, then
+@samp{Foo} or @samp{foo} is also considered a match. This applies to
+regular expressions, too; thus, @samp{[aB]} would match @samp{a} or
+@samp{A} or @samp{b} or @samp{B}.
+
+ If you do not want this feature, set the variable
+@code{case-fold-search} to @code{nil}. Then all letters must match
+exactly, including case. This is a buffer-local variable; altering the
+variable affects only the current buffer. (@xref{Intro to
+Buffer-Local}.) Alternatively, you may change the value of
+@code{default-case-fold-search}, which is the default value of
+@code{case-fold-search} for buffers that do not override it.
+
+ Note that the user-level incremental search feature handles case
+distinctions differently. When given a lower case letter, it looks for
+a match of either case, but when given an upper case letter, it looks
+for an upper case letter only. But this has nothing to do with the
+searching functions used in Lisp code.
+
+@defopt case-replace
+This variable determines whether the higher level replacement
+functions should preserve case. If the variable is @code{nil}, that
+means to use the replacement text verbatim. A non-@code{nil} value
+means to convert the case of the replacement text according to the
+text being replaced.
+
+This variable is used by passing it as an argument to the function
+@code{replace-match}. @xref{Replacing Match}.
+@end defopt
+
+@defopt case-fold-search
+This buffer-local variable determines whether searches should ignore
+case. If the variable is @code{nil} they do not ignore case; otherwise
+they do ignore case.
+@end defopt
+
+@defvar default-case-fold-search
+The value of this variable is the default value for
+@code{case-fold-search} in buffers that do not override it. This is the
+same as @code{(default-value 'case-fold-search)}.
+@end defvar
+
@node Regular Expressions
@section Regular Expressions
@cindex regular expression
@@ -1070,231 +1117,15 @@ backtracking specified by the POSIX standard for regular expression
matching.
@end defun
-@ignore
-@deffn Command delete-matching-lines regexp
-This function is identical to @code{delete-non-matching-lines}, save
-that it deletes what @code{delete-non-matching-lines} keeps.
-
-In the example below, point is located on the first line of text.
-
-@example
-@group
----------- Buffer: foo ----------
-We hold these truths
-to be self-evident,
-that all men are created
-equal, and that they are
----------- Buffer: foo ----------
-@end group
-
-@group
-(delete-matching-lines "the")
- @result{} nil
-
----------- Buffer: foo ----------
-to be self-evident,
-that all men are created
----------- Buffer: foo ----------
-@end group
-@end example
-@end deffn
-
-@deffn Command flush-lines regexp
-This function is the same as @code{delete-matching-lines}.
-@end deffn
-
-@defun delete-non-matching-lines regexp
-This function deletes all lines following point which don't
-contain a match for the regular expression @var{regexp}.
-@end defun
-
-@deffn Command keep-lines regexp
-This function is the same as @code{delete-non-matching-lines}.
-@end deffn
-
-@deffn Command how-many regexp
-This function counts the number of matches for @var{regexp} there are in
-the current buffer following point. It prints this number in
-the echo area, returning the string printed.
-@end deffn
-
-@deffn Command count-matches regexp
-This function is a synonym of @code{how-many}.
-@end deffn
-
-@deffn Command list-matching-lines regexp &optional nlines
-This function is a synonym of @code{occur}.
-Show all lines following point containing a match for @var{regexp}.
-Display each line with @var{nlines} lines before and after,
-or @code{-}@var{nlines} before if @var{nlines} is negative.
-@var{nlines} defaults to @code{list-matching-lines-default-context-lines}.
-Interactively it is the prefix arg.
-
-The lines are shown in a buffer named @samp{*Occur*}.
-It serves as a menu to find any of the occurrences in this buffer.
-@kbd{C-h m} (@code{describe-mode}) in that buffer gives help.
-@end deffn
-
-@defopt list-matching-lines-default-context-lines
-Default value is 0.
-Default number of context lines to include around a @code{list-matching-lines}
-match. A negative number means to include that many lines before the match.
-A positive number means to include that many lines both before and after.
-@end defopt
-@end ignore
-
-@node Search and Replace
-@section Search and Replace
-@cindex replacement
-
-@defun replace-regexp-in-string regexp rep string &optional fixedcase literal subexp start
-This function copies @var{string} and searches it for matches for
-@var{regexp}, and replaces them with @var{rep}. It returns the
-modified copy. If @var{start} is non-@code{nil}, the search for
-matches starts at that index in @var{string}, so matches starting
-before that index are not changed.
-
-This function uses @code{replace-match} to do the replacement, and it
-passes the optional arguments @var{fixedcase}, @var{literal} and
-@var{subexp} along to @code{replace-match}.
-
-Instead of a string, @var{rep} can be a function. In that case,
-@code{replace-regexp-in-string} calls @var{rep} for each match,
-passing the text of the match as its sole argument. It collects the
-value @var{rep} returns and passes that to @code{replace-match} as the
-replacement string. The match-data at this point are the result
-of matching @var{regexp} against a substring of @var{string}.
-@end defun
-
-@defun perform-replace from-string replacements query-flag regexp-flag delimited-flag &optional repeat-count map start end
-This function is the guts of @code{query-replace} and related
-commands. It searches for occurrences of @var{from-string} in the
-text between positions @var{start} and @var{end} and replaces some or
-all of them. If @var{start} is @code{nil} (or omitted), point is used
-instead, and the end of the buffer's accessible portion is used for
-@var{end}.
-
-If @var{query-flag} is @code{nil}, it replaces all
-occurrences; otherwise, it asks the user what to do about each one.
-
-If @var{regexp-flag} is non-@code{nil}, then @var{from-string} is
-considered a regular expression; otherwise, it must match literally. If
-@var{delimited-flag} is non-@code{nil}, then only replacements
-surrounded by word boundaries are considered.
-
-The argument @var{replacements} specifies what to replace occurrences
-with. If it is a string, that string is used. It can also be a list of
-strings, to be used in cyclic order.
-
-If @var{replacements} is a cons cell, @code{(@var{function}
-. @var{data})}, this means to call @var{function} after each match to
-get the replacement text. This function is called with two arguments:
-@var{data}, and the number of replacements already made.
-
-If @var{repeat-count} is non-@code{nil}, it should be an integer. Then
-it specifies how many times to use each of the strings in the
-@var{replacements} list before advancing cyclically to the next one.
-
-If @var{from-string} contains upper-case letters, then
-@code{perform-replace} binds @code{case-fold-search} to @code{nil}, and
-it uses the @code{replacements} without altering the case of them.
-
-Normally, the keymap @code{query-replace-map} defines the possible user
-responses for queries. The argument @var{map}, if non-@code{nil}, is a
-keymap to use instead of @code{query-replace-map}.
-
-@strong{Usage note:} Do not use this function in your own programs
-unless you want to do something very similar to what
-@code{query-replace} does, including setting the mark and possibly
-querying the user. For most purposes a simple loop like, for
-instance:
-
-@example
-(while (re-search-forward "foo[ \t]+bar" nil t)
- (replace-match "foobar"))
-@end example
-
-@noindent
-is preferable. It runs faster and avoids side effects, such as
-setting the mark. @xref{Replacing Match,, Replacing the Text that
-Matched}, for a description of @code{replace-match}.
-@end defun
-
-@defvar query-replace-map
-This variable holds a special keymap that defines the valid user
-responses for @code{query-replace} and related functions, as well as
-@code{y-or-n-p} and @code{map-y-or-n-p}. It is unusual in two ways:
-
-@itemize @bullet
-@item
-The ``key bindings'' are not commands, just symbols that are meaningful
-to the functions that use this map.
-
-@item
-Prefix keys are not supported; each key binding must be for a
-single-event key sequence. This is because the functions don't use
-@code{read-key-sequence} to get the input; instead, they read a single
-event and look it up ``by hand.''
-@end itemize
-@end defvar
-
-Here are the meaningful ``bindings'' for @code{query-replace-map}.
-Several of them are meaningful only for @code{query-replace} and
-friends.
-
-@table @code
-@item act
-Do take the action being considered---in other words, ``yes.''
-
-@item skip
-Do not take action for this question---in other words, ``no.''
-
-@item exit
-Answer this question ``no,'' and give up on the entire series of
-questions, assuming that the answers will be ``no.''
-
-@item act-and-exit
-Answer this question ``yes,'' and give up on the entire series of
-questions, assuming that subsequent answers will be ``no.''
-
-@item act-and-show
-Answer this question ``yes,'' but show the results---don't advance yet
-to the next question.
-
-@item automatic
-Answer this question and all subsequent questions in the series with
-``yes,'' without further user interaction.
-
-@item backup
-Move back to the previous place that a question was asked about.
-
-@item edit
-Enter a recursive edit to deal with this question---instead of any
-other action that would normally be taken.
-
-@item delete-and-edit
-Delete the text being considered, then enter a recursive edit to replace
-it.
-
-@item recenter
-Redisplay and center the window, then ask the same question again.
-
-@item quit
-Perform a quit right away. Only @code{y-or-n-p} and related functions
-use this answer.
-
-@item help
-Display some help, then ask again.
-@end table
-
@node Match Data
@section The Match Data
@cindex match data
Emacs keeps track of the start and end positions of the segments of
-text found during a search. This means, for example, that you can
-search for a complex pattern, such as a date in an Rmail message, and
-then extract parts of the match under control of the pattern.
+text found during a search; this is called the @dfn{match data}.
+Thanks to the match data, you can search for a complex pattern, such
+as a date in a mail message, and then extract parts of the match under
+control of the pattern.
Because the match data normally describe the most recent search only,
you must be careful not to do another search inadvertently between the
@@ -1313,8 +1144,8 @@ match data around it, to prevent it from being overwritten.
@node Replacing Match
@subsection Replacing the Text that Matched
- This function replaces the text matched by the last search with
-@var{replacement}.
+ This function replaces all or part of the text matched by the last
+search. It works by means of the match data.
@cindex case in replacements
@defun replace-match replacement &optional fixedcase literal string subexp
@@ -1661,53 +1492,156 @@ associated with it still exists.
@end smallexample
@end ignore
-@node Searching and Case
-@section Searching and Case
-@cindex searching and case
+@node Search and Replace
+@section Search and Replace
+@cindex replacement
- By default, searches in Emacs ignore the case of the text they are
-searching through; if you specify searching for @samp{FOO}, then
-@samp{Foo} or @samp{foo} is also considered a match. This applies to
-regular expressions, too; thus, @samp{[aB]} would match @samp{a} or
-@samp{A} or @samp{b} or @samp{B}.
+ If you want to find all matches for a regexp in part of the buffer,
+and replace them, the best way is to write an explicit loop using
+@code{re-search-forward} and @code{replace-match}, like this:
- If you do not want this feature, set the variable
-@code{case-fold-search} to @code{nil}. Then all letters must match
-exactly, including case. This is a buffer-local variable; altering the
-variable affects only the current buffer. (@xref{Intro to
-Buffer-Local}.) Alternatively, you may change the value of
-@code{default-case-fold-search}, which is the default value of
-@code{case-fold-search} for buffers that do not override it.
+@example
+(while (re-search-forward "foo[ \t]+bar" nil t)
+ (replace-match "foobar"))
+@end example
- Note that the user-level incremental search feature handles case
-distinctions differently. When given a lower case letter, it looks for
-a match of either case, but when given an upper case letter, it looks
-for an upper case letter only. But this has nothing to do with the
-searching functions used in Lisp code.
+@noindent
+@xref{Replacing Match,, Replacing the Text that Matched}, for a
+description of @code{replace-match}.
-@defopt case-replace
-This variable determines whether the higher level replacement
-functions should preserve case. If the variable is @code{nil}, that
-means to use the replacement text verbatim. A non-@code{nil} value
-means to convert the case of the replacement text according to the
-text being replaced.
+ However, replacing matches in a string is more complex, especially
+if you want to do it efficiently. So Emacs provides a function to do
+this.
-This variable is used by passing it as an argument to the function
-@code{replace-match}. @xref{Replacing Match}.
-@end defopt
+@defun replace-regexp-in-string regexp rep string &optional fixedcase literal subexp start
+This function copies @var{string} and searches it for matches for
+@var{regexp}, and replaces them with @var{rep}. It returns the
+modified copy. If @var{start} is non-@code{nil}, the search for
+matches starts at that index in @var{string}, so matches starting
+before that index are not changed.
-@defopt case-fold-search
-This buffer-local variable determines whether searches should ignore
-case. If the variable is @code{nil} they do not ignore case; otherwise
-they do ignore case.
-@end defopt
+This function uses @code{replace-match} to do the replacement, and it
+passes the optional arguments @var{fixedcase}, @var{literal} and
+@var{subexp} along to @code{replace-match}.
-@defvar default-case-fold-search
-The value of this variable is the default value for
-@code{case-fold-search} in buffers that do not override it. This is the
-same as @code{(default-value 'case-fold-search)}.
+Instead of a string, @var{rep} can be a function. In that case,
+@code{replace-regexp-in-string} calls @var{rep} for each match,
+passing the text of the match as its sole argument. It collects the
+value @var{rep} returns and passes that to @code{replace-match} as the
+replacement string. The match-data at this point are the result
+of matching @var{regexp} against a substring of @var{string}.
+@end defun
+
+ If you want to write a command along the lines of @code{query-replace},
+you can use @code{perform-replace} to do the work.
+
+@defun perform-replace from-string replacements query-flag regexp-flag delimited-flag &optional repeat-count map start end
+This function is the guts of @code{query-replace} and related
+commands. It searches for occurrences of @var{from-string} in the
+text between positions @var{start} and @var{end} and replaces some or
+all of them. If @var{start} is @code{nil} (or omitted), point is used
+instead, and the end of the buffer's accessible portion is used for
+@var{end}.
+
+If @var{query-flag} is @code{nil}, it replaces all
+occurrences; otherwise, it asks the user what to do about each one.
+
+If @var{regexp-flag} is non-@code{nil}, then @var{from-string} is
+considered a regular expression; otherwise, it must match literally. If
+@var{delimited-flag} is non-@code{nil}, then only replacements
+surrounded by word boundaries are considered.
+
+The argument @var{replacements} specifies what to replace occurrences
+with. If it is a string, that string is used. It can also be a list of
+strings, to be used in cyclic order.
+
+If @var{replacements} is a cons cell, @code{(@var{function}
+. @var{data})}, this means to call @var{function} after each match to
+get the replacement text. This function is called with two arguments:
+@var{data}, and the number of replacements already made.
+
+If @var{repeat-count} is non-@code{nil}, it should be an integer. Then
+it specifies how many times to use each of the strings in the
+@var{replacements} list before advancing cyclically to the next one.
+
+If @var{from-string} contains upper-case letters, then
+@code{perform-replace} binds @code{case-fold-search} to @code{nil}, and
+it uses the @code{replacements} without altering the case of them.
+
+Normally, the keymap @code{query-replace-map} defines the possible
+user responses for queries. The argument @var{map}, if
+non-@code{nil}, specifies a keymap to use instead of
+@code{query-replace-map}.
+@end defun
+
+@defvar query-replace-map
+This variable holds a special keymap that defines the valid user
+responses for @code{perform-replace} and the commands that use it, as
+well as @code{y-or-n-p} and @code{map-y-or-n-p}. This map is unusual
+in two ways:
+
+@itemize @bullet
+@item
+The ``key bindings'' are not commands, just symbols that are meaningful
+to the functions that use this map.
+
+@item
+Prefix keys are not supported; each key binding must be for a
+single-event key sequence. This is because the functions don't use
+@code{read-key-sequence} to get the input; instead, they read a single
+event and look it up ``by hand.''
+@end itemize
@end defvar
+Here are the meaningful ``bindings'' for @code{query-replace-map}.
+Several of them are meaningful only for @code{query-replace} and
+friends.
+
+@table @code
+@item act
+Do take the action being considered---in other words, ``yes.''
+
+@item skip
+Do not take action for this question---in other words, ``no.''
+
+@item exit
+Answer this question ``no,'' and give up on the entire series of
+questions, assuming that the answers will be ``no.''
+
+@item act-and-exit
+Answer this question ``yes,'' and give up on the entire series of
+questions, assuming that subsequent answers will be ``no.''
+
+@item act-and-show
+Answer this question ``yes,'' but show the results---don't advance yet
+to the next question.
+
+@item automatic
+Answer this question and all subsequent questions in the series with
+``yes,'' without further user interaction.
+
+@item backup
+Move back to the previous place that a question was asked about.
+
+@item edit
+Enter a recursive edit to deal with this question---instead of any
+other action that would normally be taken.
+
+@item delete-and-edit
+Delete the text being considered, then enter a recursive edit to replace
+it.
+
+@item recenter
+Redisplay and center the window, then ask the same question again.
+
+@item quit
+Perform a quit right away. Only @code{y-or-n-p} and related functions
+use this answer.
+
+@item help
+Display some help, then ask again.
+@end table
+
@node Standard Regexps
@section Standard Regular Expressions Used in Editing
@cindex regexps used standardly in editing
diff --git a/lispref/text.texi b/lispref/text.texi
index 59259415cc0..14a9dc9d5c6 100644
--- a/lispref/text.texi
+++ b/lispref/text.texi
@@ -191,12 +191,11 @@ This is the contents of buffer foo
@group
(buffer-substring 1 10)
-@result{} "This is t"
+ @result{} "This is t"
@end group
@group
(buffer-substring (point-max) 10)
-@result{} "he contents of buffer foo
-"
+ @result{} "he contents of buffer foo\n"
@end group
@end example
@end defun
@@ -257,8 +256,7 @@ This is the contents of buffer foo
---------- Buffer: foo ----------
(buffer-string)
- @result{} "This is the contents of buffer foo
-"
+ @result{} "This is the contents of buffer foo\n"
@end group
@end example
@end defun
@@ -397,8 +395,8 @@ overlay.
@defun insert-char character count &optional inherit
This function inserts @var{count} instances of @var{character} into the
-current buffer before point. The argument @var{count} should be a
-number, and @var{character} must be a character. The value is @code{nil}.
+current buffer before point. The argument @var{count} should be an
+integer, and @var{character} must be a character. The value is @code{nil}.
This function does not convert unibyte character codes 128 through 255
to multibyte characters, not even if the current buffer is a multibyte
diff --git a/lispref/tips.texi b/lispref/tips.texi
index 46eb887dce8..d651eb95f0e 100644
--- a/lispref/tips.texi
+++ b/lispref/tips.texi
@@ -374,6 +374,20 @@ An error message should start with a capital letter but should not end
with a period.
@item
+A question asked in the minibuffer with @code{y-or-n-p} or
+@code{yes-or-no-p} should start with a capital letter and end with
+@samp{? }.
+
+@item
+When you mention a default value in a minibuffer prompt,
+put it and the word @samp{default} inside parentheses.
+It should look like this:
+
+@example
+Enter the answer: (default 42)
+@end example
+
+@item
In @code{interactive}, if you use a Lisp expression to produce a list
of arguments, don't try to provide the ``correct'' default values for
region or position arguments. Instead, provide @code{nil} for those
diff --git a/man/ChangeLog b/man/ChangeLog
index d9b86056304..3f956c71625 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,21 @@
+2005-09-05 Chong Yidong <cyd@stupidchicken.com>
+
+ * custom.texi (Custom Themes): New node.
+
+2005-09-03 Richard M. Stallman <rms@gnu.org>
+
+ * search.texi (Search Case): Mention vars that control
+ case-fold-search for various operations.
+
+2005-08-30 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi: Version 3.15.
+
+2005-08-29 Luc Teirlinck <teirllm@auburn.edu>
+
+ * ses.texi: Combine all three indices into one.
+ Correct a few typos.
+
2005-08-19 Katsumi Yamaoka <yamaoka@jpl.org>
* emacs-mime.texi (time-date): Fix description of safe-date-to-time.
diff --git a/man/custom.texi b/man/custom.texi
index d531d92eb0f..87722f63b69 100644
--- a/man/custom.texi
+++ b/man/custom.texi
@@ -199,6 +199,8 @@ the active fields and other features.
* Face Customization:: How to edit the attributes of a face.
* Specific Customization:: Making a customization buffer for specific
variables, faces, or groups.
+* Custom Themes:: How to define collections of customized options
+ that can be loaded and unloaded together.
@end menu
@node Customization Groups
@@ -652,6 +654,60 @@ changes. Use @kbd{M-x customize-saved} to look at the options that
you have saved. Use @kbd{M-x customize-customized} to look at the
options that you have set but not saved.
+@node Custom Themes
+@subsection Customization Themes
+@cindex custom themes
+
+@dfn{Custom themes} are collections of customized options that can be
+enabled or disabled as a unit. You can use Custom themes to switch
+quickly and easily between various collections of settings, and to
+transfer such collections from one computer to another.
+
+@findex customize-create-theme
+To define a Custom theme, use the command
+@kbd{M-x customize-create-theme}, which brings up a buffer named
+@samp{*New Custom Theme*}. At the top of the buffer is an editable
+field where you can specify the name of the theme. To add a
+customization option to the theme, click on the @samp{INS} button to
+open up a field where you can insert the name of the option. The
+current value of that option is applied to the theme. After adding as
+many options as you like, click on @samp{Done} to save the Custom
+theme.
+
+@vindex custom-theme-directory
+Saving a Custom theme named @var{foo} writes its definition into the
+file @file{@var{foo}-theme.el}, in the directory @file{~/.emacs.d/}
+(you can specify the directory by setting
+@code{custom-theme-directory}).
+
+@findex load-theme
+@findex enable-theme
+@findex disable-theme
+You can load the themes you've previously defined with the command
+@code{load-theme}. It prompts for a theme name in the minibuffer,
+then loads that theme if it isn't already loaded. It also
+@dfn{enables} the theme, which means putting its settings into effect.
+An enabled theme can be @dfn{disabled} with the command
+@kbd{M-x disable-theme}; this returns the options specified in the
+theme to their original values. To re-enable the theme, use the
+command @kbd{M-x enable-theme}.
+
+To enable a Custom theme named @var{foo} whenever Emacs is started up,
+add the line @code{(load-theme '@var{foo})} to your @file{.emacs} file
+(@pxref{Init File}).
+
+Enabling a custom theme does not disable the themes already enabled;
+instead, they are all enabled together. If two enabled Custom themes
+specify different values for an option, the last theme to be enabled
+takes effect.
+
+The options that you set in the ordinary customization buffer
+(@pxref{Easy Customization}) are also considered part of a Custom
+theme, called @samp{user}. The @samp{user} theme is always enabled,
+and always takes precedence over all other enabled Custom themes.
+Additionally, the @samp{user} theme is recorded in your @file{.emacs}
+file, rather than a @file{user-theme.el} file.
+
@node Variables
@section Variables
@cindex variable
diff --git a/man/gnus.texi b/man/gnus.texi
index 131a92fae64..d1eb9325863 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -5090,10 +5090,10 @@ the server and display it in the article buffer.
@item gnus-select-article-hook
@vindex gnus-select-article-hook
-This hook is called whenever an article is selected. By default it
-exposes any threads hidden under the selected article. If you would
-like each article to be saved in the Agent as you read it, putting
-@code{gnus-agent-fetch-selected-article} on this hook will do so.
+This hook is called whenever an article is selected. The default is
+@code{nil}. If you would like each article to be saved in the Agent as
+you read it, putting @code{gnus-agent-fetch-selected-article} on this
+hook will do so.
@item gnus-mark-article-hook
@vindex gnus-mark-article-hook
@@ -5103,8 +5103,8 @@ like each article to be saved in the Agent as you read it, putting
This hook is called whenever an article is selected. It is intended to
be used for marking articles as read. The default value is
@code{gnus-summary-mark-read-and-unread-as-read}, and will change the
-mark of almost any article you read to @code{gnus-unread-mark}. The
-only articles not affected by this function are ticked, dormant, and
+mark of almost any article you read to @code{gnus-read-mark}. The only
+articles not affected by this function are ticked, dormant, and
expirable articles. If you'd instead like to just have unread articles
marked as read, you can use @code{gnus-summary-mark-unread-as-read}
instead. It will leave marks like @code{gnus-low-score-mark},
@@ -13833,7 +13833,8 @@ is to say where the incoming files will be stored if the variable
Prefix for file name for storing incoming mail. The default is
@file{Incoming}, in which case files will end up with names like
@file{Incoming30630D_} or @file{Incoming298602ZD}. This is really only
-relevant if @code{mail-source-delete-incoming} is @code{nil}.
+relevant if @code{mail-source-delete-incoming} is @code{nil} or a
+number.
@item mail-source-default-file-modes
@vindex mail-source-default-file-modes
diff --git a/man/org.texi b/man/org.texi
index e214927df5f..0545cf462ff 100644
--- a/man/org.texi
+++ b/man/org.texi
@@ -4,8 +4,8 @@
@setfilename ../info/org
@settitle Org Mode Manual
-@set VERSION 3.14
-@set DATE July 2005
+@set VERSION 3.15
+@set DATE September 2005
@dircategory Emacs
@direntry
@@ -35,7 +35,7 @@
@copying
This manual is for Org-mode (version @value{VERSION}).
-Copyright @copyright{} 2004, 2005 Free Software Foundation, Inc.
+Copyright @copyright{} 2004, 2005 Free Software Foundation
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1536,7 +1536,7 @@ continuing until the entry is marked DONE. An example:
@end example
@item SCHEDULED
-@cindex DEADLINE keyword
+@cindex SCHEDULED keyword
If a time stamp is preceded by the word @samp{SCHEDULED:}, it means
you are planning to start working on that task on the given date. The
headline will be listed under the given date. In addition, a reminder
@@ -2217,8 +2217,10 @@ horizontal separator line will be formatted as table header fields.
@cindex fixed width
@item
-Lines starting with @samp{:} are typeset in a fixed-width font, to
-allow quoting of computer code etc.
+If a headline starts with the word @samp{QUOTE}, the text below the
+headline will be typeset as fixed-width, to allow quoting of computer
+codes etc. Lines starting with @samp{:} are also typeset in
+fixed-width font.
@cindex HTML tags
@item
diff --git a/man/search.texi b/man/search.texi
index 0233f7ce8de..b252e9c7c8c 100644
--- a/man/search.texi
+++ b/man/search.texi
@@ -907,6 +907,12 @@ searches also, including those performed by the replace commands
(@pxref{Replace}) and the minibuffer history matching commands
(@pxref{Minibuffer History}).
+ Several related variables control case-sensitivity of searching and
+matching for specific commands or activities. For instance,
+@code{tags-case-fold-search} controls case sensitivity for
+@code{find-tag}. To find these variables, do @kbd{M-x
+apropos-variable @key{RET} case-fold-search @key{RET}}.
+
@node Replace
@section Replacement Commands
@cindex replacement
diff --git a/man/ses.texi b/man/ses.texi
index 1cb2ef3cad1..10d52dd66e0 100644
--- a/man/ses.texi
+++ b/man/ses.texi
@@ -3,6 +3,9 @@
@setfilename ../info/ses
@settitle SES: Simple Emacs Spreadsheet
@setchapternewpage off
+@syncodeindex fn cp
+@syncodeindex vr cp
+@syncodeindex ky cp
@c %**end of header
@copying
@@ -534,7 +537,7 @@ the formula becomes
@end lisp
and the new row is not included in the sum.
-The macro @code{(ses-range @var{from} @var{to})} evalutes to a list of
+The macro @code{(ses-range @var{from} @var{to})} evaluates to a list of
the values in a rectangle of cells. If your formula is
@lisp
(apply '+ (ses-range A1 A3))
@@ -655,7 +658,7 @@ tabs, so these are replaced with question marks.
@table @kbd
@item C-c C-t
Confine a cell to its own column (@code{ses-truncate-cell}). This
-alows you to move point to a rightward cell that would otherwise be
+allows you to move point to a rightward cell that would otherwise be
covered by a spill-over. If you don't change the rightward cell, the
confined cell will spill over again the next time it is reprinted.
@@ -704,7 +707,7 @@ substitute always signals an error.
Formulas or printers that you type in are checked immediately for
safety. If found to be possibly unsafe and you press N to disapprove,
-the action is cancelled and the old formula or printer will remain.
+the action is canceled and the old formula or printer will remain.
Besides viruses (which try to copy themselves to other files),
@code{unsafep} can also detect all other kinds of Trojan horses, such as
@@ -919,19 +922,10 @@ cell.
@c ===================================================================
@node Index, Acknowledgements, For Gurus, Top
-@unnumbered Concept Index
+@unnumbered Index
@printindex cp
-@heading Function Index
-
-@printindex fn
-
-@heading Variable Index
-
-@printindex vr
-
-
@c ===================================================================
@node Acknowledgements, , Index, Top
diff --git a/src/ChangeLog b/src/ChangeLog
index 80117561faa..7faeafe2329 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,15 +1,80 @@
+2005-09-03 Richard M. Stallman <rms@gnu.org>
+
+ * xdisp.c (redisplay_internal): Make UPDATED as long as needed.
+ (move_it_in_display_line_to): Stop after last char on line even
+ on a windowing terminal, if that's the specified stop position.
+
+ * fns.c (Fsort): Doc fix.
+
+ * editfns.c (Fpropertize): Don't insist that properties be symbols.
+
+2005-09-02 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * dired.c (directory_files_internal_unwind, directory_files_internal)
+ (file_name_completion): Use a Save_Value object rather than a cons of
+ two 16bit ints to store the DIR*.
+ (directory_files_internal, file_name_completion): Handle both EINTR and
+ EAGAIN consistently after `readdir'.
+
+2005-09-01 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * intervals.c (update_interval): Add position info in error.
+
+ * dispnew.c (window_to_frame_hpos, update_window):
+ Avoid gcc warning about unused variable `f'.
+
+2005-08-31 Jason Rumney <jasonr@gnu.org>
+
+ * w32menu.c (add_menu_item): If unicode_append_menu returns an
+ error, revert to using AppendMenu.
+
+2005-08-31 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * image.c (PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument.
+ All uses changed.
+ [MAC_OS] (XPutPixel, XGetPixel): Add efficient versions for common
+ cases.
+ (x_create_x_image_and_pixmap) [MAC_OS]: Don't call x_destroy_x_image.
+ [MAC_OS] (find_image_fsspec) [!MAC_OSX]: Don't use FSRef.
+ Use posix_pathname_to_fsspec.
+ [MAC_OS] (xpm_load_image): Fill in background_transparent field
+ while we have mask.
+
+ * macgui.h [!TARGET_API_MAC_CARBON] (GetPixDepth): New define.
+
+ * macterm.h (PIX_MASK_DRAW, PIX_MASK_RETAIN): Move defines to image.c.
+
+2005-08-29 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * syntax.c (update_syntax_table): Properly reproduce the special +1
+ setting of e_property at the end of the buffer when bumping into the
+ INTERVALS_AT_ONCE limit.
+
+2005-08-27 Eli Zaretskii <eliz@gnu.org>
+
+ * emacs.c (USAGE1): Fix the description of the -Q option.
+
+2005-08-26 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * xdisp.c (pos_visible_p): Yet another int/Lisp_Object mixup (YAILOM).
+
+2005-08-26 Kim F. Storm <storm@cua.dk>
+
+ * xdisp.c (resize_mini_window): Fix 2005-08-20 change.
+ Don't move PT to new window start.
+
2005-08-25 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* keyboard.c (kbd_buffer_get_event) [MAC_OS]: Make events for
ICONIFY/DEICONIFY_EVENT.
- * macterm.c (mac_copy_area, mac_copy_area_with_mask): Restore
- background color.
+ * macterm.c (mac_copy_area, mac_copy_area_with_mask):
+ Restore background color.
(mac_handle_visibility_change): New function.
(x_make_frame_invisible, x_iconify_frame)
(XTread_socket) [!USE_CARBON_EVENTS]: Use it.
[USE_CARBON_EVENTS] (mac_handle_window_event)
- (install_window_handler): Handle visibilty change events.
+ (install_window_handler): Handle visibility change events.
(x_make_frame_visible): Don't reposition window if it is iconified
or asked for visible before. Select and uncollapse window when it
is made visible.
@@ -93,7 +158,8 @@
2005-08-14 Richard M. Stallman <rms@gnu.org>
- * image.c (syms_of_image): Init Qxbm, Qpbm before calling define_image_type.
+ * image.c (syms_of_image): Init Qxbm, Qpbm before calling
+ define_image_type.
2005-08-13 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
@@ -109,7 +175,8 @@
2005-08-11 Richard M. Stallman <rms@gnu.org>
- * image.c (syms_of_image): Init image_types here, and call define_image_type.
+ * image.c (syms_of_image): Init image_types here, and call
+ define_image_type.
(init_image): Not here.
2005-08-09 Richard M. Stallman <rms@gnu.org>
@@ -232,8 +299,7 @@
* macmenu.c (Fx_popup_menu, Fx_popup_dialog): Doc fixes.
- * macselect.c (Fx_own_selection_internal): Follow error
- conventions.
+ * macselect.c (Fx_own_selection_internal): Follow error conventions.
(Fx_get_selection_internal, Fx_selection_owner_p)
(Fx_selection_exists_p): Doc fixes.
(syms_of_macselect) <selection-converter-alist>: Likewise.
@@ -290,8 +356,7 @@
2005-07-19 Kenichi Handa <handa@m17n.org>
- * fns.c (Fstring_as_multibyte): Escape backslashes in the
- docstring.
+ * fns.c (Fstring_as_multibyte): Escape backslashes in the docstring.
2005-07-18 Stefan Monnier <monnier@iro.umontreal.ca>
diff --git a/src/dired.c b/src/dired.c
index 206b21402a3..4725644ee33 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -132,7 +132,7 @@ Lisp_Object
directory_files_internal_unwind (dh)
Lisp_Object dh;
{
- DIR *d = (DIR *) ((XINT (XCAR (dh)) << 16) + XINT (XCDR (dh)));
+ DIR *d = (DIR *) XSAVE_VALUE (dh)->pointer;
closedir (d);
return Qnil;
}
@@ -156,7 +156,6 @@ directory_files_internal (directory, full, match, nosort, attrs, id_format)
int count = SPECPDL_INDEX ();
struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
DIRENTRY *dp;
- int retry_p;
/* Because of file name handlers, these functions might call
Ffuncall, and cause a GC. */
@@ -190,12 +189,6 @@ directory_files_internal (directory, full, match, nosort, attrs, id_format)
/* Now *bufp is the compiled form of MATCH; don't call anything
which might compile a new regexp until we're done with the loop! */
- /* Do this opendir after anything which might signal an error; if
- an error is signaled while the directory stream is open, we
- have to make sure it gets closed, and setting up an
- unwind_protect to do so would be a pain. */
- retry:
-
d = opendir (SDATA (dirfilename));
if (d == NULL)
report_file_error ("Opening directory", Fcons (directory, Qnil));
@@ -204,8 +197,7 @@ directory_files_internal (directory, full, match, nosort, attrs, id_format)
file-attributes on filenames, both of which can throw, so we must
do a proper unwind-protect. */
record_unwind_protect (directory_files_internal_unwind,
- Fcons (make_number (((unsigned long) d) >> 16),
- make_number (((unsigned long) d) & 0xffff)));
+ make_save_value (d, 0));
directory_nbytes = SBYTES (directory);
re_match_object = Qt;
@@ -223,10 +215,15 @@ directory_files_internal (directory, full, match, nosort, attrs, id_format)
errno = 0;
dp = readdir (d);
+ if (dp == NULL && (0
#ifdef EAGAIN
- if (dp == NULL && errno == EAGAIN)
- continue;
+ || errno == EAGAIN
+#endif
+#ifdef EINTR
+ || errno == EINTR
#endif
+ ))
+ { QUIT; continue; }
if (dp == NULL)
break;
@@ -317,22 +314,11 @@ directory_files_internal (directory, full, match, nosort, attrs, id_format)
}
}
- retry_p = 0;
-#ifdef EINTR
- retry_p |= errno == EINTR;
-#endif
-
closedir (d);
/* Discard the unwind protect. */
specpdl_ptr = specpdl + count;
- if (retry_p)
- {
- list = Qnil;
- goto retry;
- }
-
if (NILP (nosort))
list = Fsort (Fnreverse (list),
attrs ? Qfile_attributes_lessp : Qstring_lessp);
@@ -520,8 +506,7 @@ file_name_completion (file, dirname, all_flag, ver_flag)
report_file_error ("Opening directory", Fcons (dirname, Qnil));
record_unwind_protect (directory_files_internal_unwind,
- Fcons (make_number (((unsigned long) d) >> 16),
- make_number (((unsigned long) d) & 0xffff)));
+ make_save_value (d, 0));
/* Loop reading blocks */
/* (att3b compiler bug requires do a null comparison this way) */
@@ -533,8 +518,19 @@ file_name_completion (file, dirname, all_flag, ver_flag)
#ifdef VMS
dp = (*readfunc) (d);
#else
+ errno = 0;
dp = readdir (d);
+ if (dp == NULL && (0
+# ifdef EAGAIN
+ || errno == EAGAIN
+# endif
+# ifdef EINTR
+ || errno == EINTR
+# endif
+ ))
+ { QUIT; continue; }
#endif
+
if (!dp) break;
len = NAMLEN (dp);
diff --git a/src/dispnew.c b/src/dispnew.c
index 1f9d2dc4189..b001db82781 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -3310,9 +3310,7 @@ window_to_frame_hpos (w, hpos)
struct window *w;
int hpos;
{
- struct frame *f = XFRAME (w->frame);
-
- xassert (!FRAME_WINDOW_P (f));
+ xassert (!FRAME_WINDOW_P (XFRAME (w->frame)));
hpos += WINDOW_LEFT_EDGE_COL (w);
return hpos;
}
@@ -4087,10 +4085,8 @@ update_window (w, force_p)
extern int input_pending;
extern Lisp_Object do_mouse_tracking;
#if GLYPH_DEBUG
- struct frame *f = XFRAME (WINDOW_FRAME (w));
-
/* Check that W's frame doesn't have glyph matrices. */
- xassert (FRAME_WINDOW_P (f));
+ xassert (FRAME_WINDOW_P (XFRAME (WINDOW_FRAME (w))));
xassert (updating_frame != NULL);
#endif
diff --git a/src/editfns.c b/src/editfns.c
index dea951c32fa..8a61a7a1033 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -3392,10 +3392,7 @@ usage: (propertize STRING &rest PROPERTIES) */)
string = Fcopy_sequence (args[0]);
for (i = 1; i < nargs; i += 2)
- {
- CHECK_SYMBOL (args[i]);
- properties = Fcons (args[i], Fcons (args[i + 1], properties));
- }
+ properties = Fcons (args[i], Fcons (args[i + 1], properties));
Fadd_text_properties (make_number (0),
make_number (SCHARS (string)),
diff --git a/src/emacs.c b/src/emacs.c
index 35dd1d47919..54e33f810ca 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -266,7 +266,7 @@ Initialization options:\n\
--no-site-file do not load site-start.el\n\
--no-splash do not display a splash screen on startup\n\
--no-window-system, -nw do not communicate with X, ignoring $DISPLAY\n\
---quick, -Q equivalent to -q --no-site-file\n\
+--quick, -Q equivalent to -q --no-site-file --no-splash\n\
--script FILE run FILE as an Emacs Lisp script\n\
--terminal, -t DEVICE use DEVICE for terminal I/O\n\
--unibyte, --no-multibyte run Emacs in unibyte mode\n\
diff --git a/src/fns.c b/src/fns.c
index 7a4498ce211..12474dc87a4 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -1813,7 +1813,7 @@ DEFUN ("sort", Fsort, Ssort, 2, 2, 0,
doc: /* Sort LIST, stably, comparing elements using PREDICATE.
Returns the sorted list. LIST is modified by side effects.
PREDICATE is called with two elements of LIST, and should return non-nil
-if the first element is "less" than the second. */)
+if the first element should sort before the second. */)
(list, predicate)
Lisp_Object list, predicate;
{
diff --git a/src/image.c b/src/image.c
index 3e8a62801b0..6ec0734e785 100644
--- a/src/image.c
+++ b/src/image.c
@@ -54,8 +54,8 @@ typedef struct x_bitmap_record Bitmap_Record;
#define RGB_PIXEL_COLOR unsigned long
-#define PIX_MASK_RETAIN(f) 0
-#define PIX_MASK_DRAW(f) 1
+#define PIX_MASK_RETAIN 0
+#define PIX_MASK_DRAW 1
#endif /* HAVE_X_WINDOWS */
@@ -71,8 +71,8 @@ typedef struct w32_bitmap_record Bitmap_Record;
#define RGB_PIXEL_COLOR COLORREF
-#define PIX_MASK_RETAIN(f) 0
-#define PIX_MASK_DRAW(f) 1
+#define PIX_MASK_RETAIN 0
+#define PIX_MASK_DRAW 1
#define FRAME_X_VISUAL(f) FRAME_X_DISPLAY_INFO (f)->visual
#define x_defined_color w32_defined_color
@@ -112,6 +112,11 @@ typedef struct mac_bitmap_record Bitmap_Record;
#define RGB_PIXEL_COLOR unsigned long
+/* A black pixel in a mask bitmap/pixmap means ``draw a source
+ pixel''. A white pixel means ``retain the current pixel''. */
+#define PIX_MASK_DRAW RGB_TO_ULONG(0,0,0)
+#define PIX_MASK_RETAIN RGB_TO_ULONG(255,255,255)
+
#define FRAME_X_VISUAL(f) FRAME_X_DISPLAY_INFO (f)->visual
#define x_defined_color mac_defined_color
#define DefaultDepthOfScreen(screen) (one_mac_display_info.n_planes)
@@ -181,19 +186,43 @@ XPutPixel (ximage, x, y, pixel)
int x, y;
unsigned long pixel;
{
- CGrafPtr old_port;
- GDHandle old_gdh;
- RGBColor color;
+ PixMapHandle pixmap = GetGWorldPixMap (ximage);
+ short depth = GetPixDepth (pixmap);
- GetGWorld (&old_port, &old_gdh);
- SetGWorld (ximage, NULL);
+ if (depth == 32)
+ {
+ char *base_addr = GetPixBaseAddr (pixmap);
+ short row_bytes = GetPixRowBytes (pixmap);
- color.red = RED16_FROM_ULONG (pixel);
- color.green = GREEN16_FROM_ULONG (pixel);
- color.blue = BLUE16_FROM_ULONG (pixel);
- SetCPixel (x, y, &color);
+ ((unsigned long *) (base_addr + y * row_bytes))[x] = pixel;
+ }
+ else if (depth == 1)
+ {
+ char *base_addr = GetPixBaseAddr (pixmap);
+ short row_bytes = GetPixRowBytes (pixmap);
- SetGWorld (old_port, old_gdh);
+ if (pixel == PIX_MASK_DRAW)
+ base_addr[y * row_bytes + x / 8] |= (1 << 7) >> (x & 7);
+ else
+ base_addr[y * row_bytes + x / 8] &= ~((1 << 7) >> (x & 7));
+ }
+ else
+ {
+ CGrafPtr old_port;
+ GDHandle old_gdh;
+ RGBColor color;
+
+ GetGWorld (&old_port, &old_gdh);
+ SetGWorld (ximage, NULL);
+
+ color.red = RED16_FROM_ULONG (pixel);
+ color.green = GREEN16_FROM_ULONG (pixel);
+ color.blue = BLUE16_FROM_ULONG (pixel);
+
+ SetCPixel (x, y, &color);
+
+ SetGWorld (old_port, old_gdh);
+ }
}
static unsigned long
@@ -201,17 +230,40 @@ XGetPixel (ximage, x, y)
XImagePtr ximage;
int x, y;
{
- CGrafPtr old_port;
- GDHandle old_gdh;
- RGBColor color;
+ PixMapHandle pixmap = GetGWorldPixMap (ximage);
+ short depth = GetPixDepth (pixmap);
- GetGWorld (&old_port, &old_gdh);
- SetGWorld (ximage, NULL);
+ if (depth == 32)
+ {
+ char *base_addr = GetPixBaseAddr (pixmap);
+ short row_bytes = GetPixRowBytes (pixmap);
- GetCPixel (x, y, &color);
+ return ((unsigned long *) (base_addr + y * row_bytes))[x];
+ }
+ else if (depth == 1)
+ {
+ char *base_addr = GetPixBaseAddr (pixmap);
+ short row_bytes = GetPixRowBytes (pixmap);
- SetGWorld (old_port, old_gdh);
- return RGB_TO_ULONG (color.red >> 8, color.green >> 8, color.blue >> 8);
+ if (base_addr[y * row_bytes + x / 8] & (1 << (~x & 7)))
+ return PIX_MASK_DRAW;
+ else
+ return PIX_MASK_RETAIN;
+ }
+ else
+ {
+ CGrafPtr old_port;
+ GDHandle old_gdh;
+ RGBColor color;
+
+ GetGWorld (&old_port, &old_gdh);
+ SetGWorld (ximage, NULL);
+
+ GetCPixel (x, y, &color);
+
+ SetGWorld (old_port, old_gdh);
+ return RGB_TO_ULONG (color.red >> 8, color.green >> 8, color.blue >> 8);
+ }
}
static void
@@ -1300,7 +1352,7 @@ image_background_transparent (img, f, mask)
}
img->background_transparent
- = (four_corners_best (mask, img->width, img->height) == PIX_MASK_RETAIN (f));
+ = (four_corners_best (mask, img->width, img->height) == PIX_MASK_RETAIN);
if (free_mask)
Destroy_Image (mask, prev);
@@ -2003,7 +2055,6 @@ x_create_x_image_and_pixmap (f, width, height, depth, ximg, pixmap)
*pixmap = XCreatePixmap (display, window, width, height, depth);
if (*pixmap == NO_PIXMAP)
{
- x_destroy_x_image (*ximg);
*ximg = NULL;
image_error ("Unable to create X pixmap", Qnil, Qnil);
return 0;
@@ -2166,10 +2217,8 @@ find_image_fsspec (specified_file, file, fss)
Lisp_Object specified_file, *file;
FSSpec *fss;
{
-#if TARGET_API_MAC_CARBON
+#if MAC_OSX
FSRef fsr;
-#else
- Str255 mac_pathname;
#endif
OSErr err;
@@ -2178,15 +2227,12 @@ find_image_fsspec (specified_file, file, fss)
return fnfErr; /* file or directory not found;
incomplete pathname */
/* Try to open the image file. */
-#if TARGET_API_MAC_CARBON
+#if MAC_OSX
err = FSPathMakeRef (SDATA (*file), &fsr, NULL);
if (err == noErr)
err = FSGetCatalogInfo (&fsr, kFSCatInfoNone, NULL, NULL, fss, NULL);
#else
- if (posix_to_mac_pathname (SDATA (*file), mac_pathname, MAXPATHLEN+1) == 0)
- return fnfErr;
- c2pstr (mac_pathname);
- err = FSMakeFSSpec (0, 0, mac_pathname, fss);
+ err = posix_pathname_to_fsspec (SDATA (*file), fss);
#endif
return err;
}
@@ -3850,24 +3896,24 @@ xpm_load (f, img)
Only XPM version 3 (without any extensions) is supported. */
static int xpm_scan P_ ((unsigned char **, unsigned char *,
- unsigned char **, int *));
+ unsigned char **, int *));
static Lisp_Object xpm_make_color_table_v
P_ ((void (**) (Lisp_Object, unsigned char *, int, Lisp_Object),
Lisp_Object (**) (Lisp_Object, unsigned char *, int)));
static void xpm_put_color_table_v P_ ((Lisp_Object, unsigned char *,
- int, Lisp_Object));
+ int, Lisp_Object));
static Lisp_Object xpm_get_color_table_v P_ ((Lisp_Object,
- unsigned char *, int));
+ unsigned char *, int));
static Lisp_Object xpm_make_color_table_h
P_ ((void (**) (Lisp_Object, unsigned char *, int, Lisp_Object),
Lisp_Object (**) (Lisp_Object, unsigned char *, int)));
static void xpm_put_color_table_h P_ ((Lisp_Object, unsigned char *,
- int, Lisp_Object));
+ int, Lisp_Object));
static Lisp_Object xpm_get_color_table_h P_ ((Lisp_Object,
- unsigned char *, int));
+ unsigned char *, int));
static int xpm_str_to_color_key P_ ((char *));
static int xpm_load_image P_ ((struct frame *, struct image *,
- unsigned char *, unsigned char *));
+ unsigned char *, unsigned char *));
/* Tokens returned from xpm_scan. */
@@ -3896,49 +3942,49 @@ xpm_scan (s, end, beg, len)
{
/* Skip white-space. */
while (*s < end && (c = *(*s)++, isspace (c)))
- ;
+ ;
/* gnus-pointer.xpm uses '-' in its identifier.
- sb-dir-plus.xpm uses '+' in its identifier. */
+ sb-dir-plus.xpm uses '+' in its identifier. */
if (isalpha (c) || c == '_' || c == '-' || c == '+')
- {
- *beg = *s - 1;
- while (*s < end &&
- (c = **s, isalnum (c) || c == '_' || c == '-' || c == '+'))
- ++*s;
- *len = *s - *beg;
- return XPM_TK_IDENT;
- }
+ {
+ *beg = *s - 1;
+ while (*s < end &&
+ (c = **s, isalnum (c) || c == '_' || c == '-' || c == '+'))
+ ++*s;
+ *len = *s - *beg;
+ return XPM_TK_IDENT;
+ }
else if (c == '"')
- {
- *beg = *s;
- while (*s < end && **s != '"')
- ++*s;
- *len = *s - *beg;
- if (*s < end)
- ++*s;
- return XPM_TK_STRING;
- }
+ {
+ *beg = *s;
+ while (*s < end && **s != '"')
+ ++*s;
+ *len = *s - *beg;
+ if (*s < end)
+ ++*s;
+ return XPM_TK_STRING;
+ }
else if (c == '/')
- {
- if (*s < end && **s == '*')
- {
- /* C-style comment. */
- ++*s;
- do
- {
- while (*s < end && *(*s)++ != '*')
- ;
- }
- while (*s < end && **s != '/');
- if (*s < end)
- ++*s;
- }
- else
- return c;
- }
+ {
+ if (*s < end && **s == '*')
+ {
+ /* C-style comment. */
+ ++*s;
+ do
+ {
+ while (*s < end && *(*s)++ != '*')
+ ;
+ }
+ while (*s < end && **s != '/');
+ if (*s < end)
+ ++*s;
+ }
+ else
+ return c;
+ }
else
- return c;
+ return c;
}
return XPM_TK_EOF;
@@ -3988,9 +4034,9 @@ xpm_make_color_table_h (put_func, get_func)
*put_func = xpm_put_color_table_h;
*get_func = xpm_get_color_table_h;
return make_hash_table (Qequal, make_number (DEFAULT_HASH_SIZE),
- make_float (DEFAULT_REHASH_SIZE),
- make_float (DEFAULT_REHASH_THRESHOLD),
- Qnil, Qnil, Qnil);
+ make_float (DEFAULT_REHASH_SIZE),
+ make_float (DEFAULT_REHASH_THRESHOLD),
+ Qnil, Qnil, Qnil);
}
static void
@@ -4016,7 +4062,7 @@ xpm_get_color_table_h (color_table, chars_start, chars_len)
{
struct Lisp_Hash_Table *table = XHASH_TABLE (color_table);
int i = hash_lookup (table, make_unibyte_string (chars_start, chars_len),
- NULL);
+ NULL);
return i >= 0 ? HASH_VALUE (table, i) : Qnil;
}
@@ -4065,17 +4111,17 @@ xpm_load_image (f, img, contents, end)
#define match() \
LA1 = xpm_scan (&s, end, &beg, &len)
-#define expect(TOKEN) \
- if (LA1 != (TOKEN)) \
- goto failure; \
- else \
+#define expect(TOKEN) \
+ if (LA1 != (TOKEN)) \
+ goto failure; \
+ else \
match ()
-#define expect_ident(IDENT) \
+#define expect_ident(IDENT) \
if (LA1 == XPM_TK_IDENT \
- && strlen ((IDENT)) == len && memcmp ((IDENT), beg, len) == 0) \
- match (); \
- else \
+ && strlen ((IDENT)) == len && memcmp ((IDENT), beg, len) == 0) \
+ match (); \
+ else \
goto failure
if (!(end - s >= 9 && memcmp (s, "/* XPM */", 9) == 0))
@@ -4096,7 +4142,7 @@ xpm_load_image (f, img, contents, end)
memcpy (buffer, beg, len);
buffer[len] = '\0';
if (sscanf (buffer, "%d %d %d %d", &width, &height,
- &num_colors, &chars_per_pixel) != 4
+ &num_colors, &chars_per_pixel) != 4
|| width <= 0 || height <= 0
|| num_colors <= 0 || chars_per_pixel <= 0)
goto failure;
@@ -4107,17 +4153,17 @@ xpm_load_image (f, img, contents, end)
best_key = XPM_COLOR_KEY_C;
else if (!NILP (Fx_display_grayscale_p (frame)))
best_key = (XFASTINT (Fx_display_planes (frame)) > 2
- ? XPM_COLOR_KEY_G : XPM_COLOR_KEY_G4);
+ ? XPM_COLOR_KEY_G : XPM_COLOR_KEY_G4);
else
best_key = XPM_COLOR_KEY_M;
color_symbols = image_spec_value (img->spec, QCcolor_symbols, NULL);
if (chars_per_pixel == 1)
color_table = xpm_make_color_table_v (&put_color_table,
- &get_color_table);
+ &get_color_table);
else
color_table = xpm_make_color_table_h (&put_color_table,
- &get_color_table);
+ &get_color_table);
while (num_colors-- > 0)
{
@@ -4128,71 +4174,71 @@ xpm_load_image (f, img, contents, end)
expect (XPM_TK_STRING);
if (len <= chars_per_pixel || len >= BUFSIZ + chars_per_pixel)
- goto failure;
+ goto failure;
memcpy (buffer, beg + chars_per_pixel, len - chars_per_pixel);
buffer[len - chars_per_pixel] = '\0';
str = strtok (buffer, " \t");
if (str == NULL)
- goto failure;
+ goto failure;
key = xpm_str_to_color_key (str);
if (key < 0)
- goto failure;
+ goto failure;
do
- {
- color = strtok (NULL, " \t");
- if (color == NULL)
- goto failure;
+ {
+ color = strtok (NULL, " \t");
+ if (color == NULL)
+ goto failure;
- while (str = strtok (NULL, " \t"))
- {
- next_key = xpm_str_to_color_key (str);
- if (next_key >= 0)
- break;
- color[strlen (color)] = ' ';
- }
+ while (str = strtok (NULL, " \t"))
+ {
+ next_key = xpm_str_to_color_key (str);
+ if (next_key >= 0)
+ break;
+ color[strlen (color)] = ' ';
+ }
- if (key == XPM_COLOR_KEY_S)
- {
- if (NILP (symbol_color))
- symbol_color = build_string (color);
- }
- else if (max_key < key && key <= best_key)
- {
- max_key = key;
- max_color = color;
- }
- key = next_key;
- }
+ if (key == XPM_COLOR_KEY_S)
+ {
+ if (NILP (symbol_color))
+ symbol_color = build_string (color);
+ }
+ else if (max_key < key && key <= best_key)
+ {
+ max_key = key;
+ max_color = color;
+ }
+ key = next_key;
+ }
while (str);
color_val = Qnil;
if (!NILP (color_symbols) && !NILP (symbol_color))
- {
- Lisp_Object specified_color = Fassoc (symbol_color, color_symbols);
-
- if (CONSP (specified_color) && STRINGP (XCDR (specified_color)))
- if (xstricmp (SDATA (XCDR (specified_color)), "None") == 0)
- color_val = Qt;
- else if (x_defined_color (f, SDATA (XCDR (specified_color)),
- &cdef, 0))
- color_val = make_number (cdef.pixel);
- }
+ {
+ Lisp_Object specified_color = Fassoc (symbol_color, color_symbols);
+
+ if (CONSP (specified_color) && STRINGP (XCDR (specified_color)))
+ if (xstricmp (SDATA (XCDR (specified_color)), "None") == 0)
+ color_val = Qt;
+ else if (x_defined_color (f, SDATA (XCDR (specified_color)),
+ &cdef, 0))
+ color_val = make_number (cdef.pixel);
+ }
if (NILP (color_val) && max_key > 0)
- if (xstricmp (max_color, "None") == 0)
- color_val = Qt;
- else if (x_defined_color (f, max_color, &cdef, 0))
- color_val = make_number (cdef.pixel);
+ if (xstricmp (max_color, "None") == 0)
+ color_val = Qt;
+ else if (x_defined_color (f, max_color, &cdef, 0))
+ color_val = make_number (cdef.pixel);
if (!NILP (color_val))
- (*put_color_table) (color_table, beg, chars_per_pixel, color_val);
+ (*put_color_table) (color_table, beg, chars_per_pixel, color_val);
expect (',');
}
if (!x_create_x_image_and_pixmap (f, width, height, 0,
- &ximg, &img->pixmap)
+ &ximg, &img->pixmap)
|| !x_create_x_image_and_pixmap (f, width, height, 1,
- &mask_img, &img->mask))
+ &mask_img, &img->mask))
{
image_error ("Out of memory (%s)", img->spec, Qnil);
goto error;
@@ -4203,21 +4249,21 @@ xpm_load_image (f, img, contents, end)
expect (XPM_TK_STRING);
str = beg;
if (len < width * chars_per_pixel)
- goto failure;
+ goto failure;
for (x = 0; x < width; x++, str += chars_per_pixel)
- {
- Lisp_Object color_val =
- (*get_color_table) (color_table, str, chars_per_pixel);
-
- XPutPixel (ximg, x, y,
- (INTEGERP (color_val) ? XINT (color_val)
- : FRAME_FOREGROUND_PIXEL (f)));
- XPutPixel (mask_img, x, y,
- (!EQ (color_val, Qt) ? PIX_MASK_DRAW (f)
- : (have_mask = 1, PIX_MASK_RETAIN (f))));
- }
+ {
+ Lisp_Object color_val =
+ (*get_color_table) (color_table, str, chars_per_pixel);
+
+ XPutPixel (ximg, x, y,
+ (INTEGERP (color_val) ? XINT (color_val)
+ : FRAME_FOREGROUND_PIXEL (f)));
+ XPutPixel (mask_img, x, y,
+ (!EQ (color_val, Qt) ? PIX_MASK_DRAW
+ : (have_mask = 1, PIX_MASK_RETAIN)));
+ }
if (y + 1 < height)
- expect (',');
+ expect (',');
}
img->width = width;
@@ -4227,6 +4273,10 @@ xpm_load_image (f, img, contents, end)
x_destroy_x_image (ximg);
if (have_mask)
{
+ /* Fill in the background_transparent field while we have the
+ mask handy. */
+ image_background_transparent (img, f, mask_img);
+
x_put_x_image (f, mask_img, img->mask, width, height);
x_destroy_x_image (mask_img);
}
@@ -4272,19 +4322,19 @@ xpm_load (f, img)
file = x_find_image_file (file_name);
GCPRO1 (file);
if (!STRINGP (file))
- {
- image_error ("Cannot find image file `%s'", file_name, Qnil);
- UNGCPRO;
- return 0;
- }
+ {
+ image_error ("Cannot find image file `%s'", file_name, Qnil);
+ UNGCPRO;
+ return 0;
+ }
contents = slurp_file (SDATA (file), &size);
if (contents == NULL)
- {
- image_error ("Error loading XPM image `%s'", img->spec, Qnil);
- UNGCPRO;
- return 0;
- }
+ {
+ image_error ("Error loading XPM image `%s'", img->spec, Qnil);
+ UNGCPRO;
+ return 0;
+ }
success_p = xpm_load_image (f, img, contents, contents + size);
xfree (contents);
@@ -4296,7 +4346,7 @@ xpm_load (f, img)
data = image_spec_value (img->spec, QCdata, NULL);
success_p = xpm_load_image (f, img, SDATA (data),
- SDATA (data) + SBYTES (data));
+ SDATA (data) + SBYTES (data));
}
return success_p;
@@ -4973,7 +5023,7 @@ x_disable_image (f, img)
#ifdef MAC_OS
#define XCreateGC_pixmap(dpy, pixmap) XCreateGC (dpy, NULL, 0, NULL)
-#define MaskForeground(f) PIX_MASK_DRAW (f)
+#define MaskForeground(f) PIX_MASK_DRAW
#else
#define XCreateGC_pixmap(dpy, pixmap) XCreateGC (dpy, pixmap, 0, NULL)
#define MaskForeground(f) WHITE_PIX_DEFAULT (f)
@@ -5121,7 +5171,7 @@ x_build_heuristic_mask (f, img, how)
for (y = 0; y < img->height; ++y)
for (x = 0; x < img->width; ++x)
XPutPixel (mask_img, x, y, (XGetPixel (ximg, x, y) != bg
- ? PIX_MASK_DRAW (f) : PIX_MASK_RETAIN (f)));
+ ? PIX_MASK_DRAW : PIX_MASK_RETAIN));
/* Fill in the background_transparent field while we have the mask handy. */
image_background_transparent (img, f, mask_img);
@@ -6123,7 +6173,7 @@ png_load (f, img)
if (channels == 4)
{
if (mask_img)
- XPutPixel (mask_img, x, y, *p > 0 ? PIX_MASK_DRAW (f) : PIX_MASK_RETAIN (f));
+ XPutPixel (mask_img, x, y, *p > 0 ? PIX_MASK_DRAW : PIX_MASK_RETAIN);
++p;
}
}
diff --git a/src/intervals.c b/src/intervals.c
index 792dd5e2116..e054c6ca429 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -791,14 +791,14 @@ update_interval (i, pos)
/* Move right. */
if (pos < INTERVAL_LAST_POS (i) + TOTAL_LENGTH (i->right))
{
- i->right->position = INTERVAL_LAST_POS (i) +
- LEFT_TOTAL_LENGTH (i->right);
+ i->right->position = INTERVAL_LAST_POS (i)
+ + LEFT_TOTAL_LENGTH (i->right);
i = i->right; /* Move to the right child */
}
else if (NULL_PARENT (i))
- error ("Point after end of properties");
+ error ("Point %d after end of properties", pos);
else
- i = INTERVAL_PARENT (i);
+ i = INTERVAL_PARENT (i);
continue;
}
else
diff --git a/src/macgui.h b/src/macgui.h
index 9591b7a8e3d..607890317e1 100644
--- a/src/macgui.h
+++ b/src/macgui.h
@@ -87,6 +87,10 @@ typedef GWorldPtr Pixmap;
#define FACE_DEFAULT (~0)
+#if !TARGET_API_MAC_CARBON
+#define GetPixDepth(pmh) ((*(pmh))->pixelSize)
+#endif
+
/* Emulate XCharStruct. */
typedef struct _XCharStruct
diff --git a/src/macterm.h b/src/macterm.h
index a4af9381867..b3855f142c6 100644
--- a/src/macterm.h
+++ b/src/macterm.h
@@ -39,11 +39,6 @@ Boston, MA 02110-1301, USA. */
#define BLACK_PIX_DEFAULT(f) RGB_TO_ULONG(0,0,0)
#define WHITE_PIX_DEFAULT(f) RGB_TO_ULONG(255,255,255)
-/* A black pixel in a mask bitmap/pixmap means ``draw a source
- pixel''. A white pixel means ``retain the current pixel''. */
-#define PIX_MASK_DRAW(f) BLACK_PIX_DEFAULT(f)
-#define PIX_MASK_RETAIN(f) WHITE_PIX_DEFAULT(f)
-
#define FONT_WIDTH(f) ((f)->max_bounds.width)
#define FONT_HEIGHT(f) ((f)->ascent + (f)->descent)
#define FONT_BASE(f) ((f)->ascent)
diff --git a/src/syntax.c b/src/syntax.c
index b30678243bf..e3e1f27b9d8 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -134,7 +134,7 @@ update_syntax_table (charpos, count, init, object)
{
Lisp_Object tmp_table;
int cnt = 0, invalidate = 1;
- INTERVAL i, oldi;
+ INTERVAL i;
if (init)
{
@@ -165,7 +165,7 @@ update_syntax_table (charpos, count, init, object)
gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset;
goto update;
}
- oldi = i = count > 0 ? gl_state.forward_i : gl_state.backward_i;
+ i = count > 0 ? gl_state.forward_i : gl_state.backward_i;
/* We are guaranteed to be called with CHARPOS either in i,
or further off. */
@@ -250,7 +250,8 @@ update_syntax_table (charpos, count, init, object)
}
else
{
- gl_state.b_property = i->position + LENGTH (i) - gl_state.offset;
+ gl_state.b_property
+ = i->position + LENGTH (i) - gl_state.offset;
gl_state.backward_i = i;
}
return;
@@ -259,7 +260,12 @@ update_syntax_table (charpos, count, init, object)
{
if (count > 0)
{
- gl_state.e_property = i->position + LENGTH (i) - gl_state.offset;
+ gl_state.e_property
+ = i->position + LENGTH (i) - gl_state.offset
+ /* e_property at EOB is not set to ZV but to ZV+1, so that
+ we can do INC(from);UPDATE_SYNTAX_TABLE_FORWARD without
+ having to check eob between the two. */
+ + (NULL_INTERVAL_P (next_interval (i)) ? 1 : 0);
gl_state.forward_i = i;
}
else
diff --git a/src/w32menu.c b/src/w32menu.c
index 75c55ef4f85..d441d14b259 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -2321,7 +2321,23 @@ add_menu_item (HMENU menu, widget_value *wv, HMENU item)
item != NULL ? (UINT) item
: (UINT) wv->call_data,
utf16_string);
- if (fuFlags & MF_OWNERDRAW)
+ if (!return_value)
+ {
+ /* On W9x/ME, unicode menus are not supported, though AppendMenuW
+ apparently does exist at least in some cases and appears to be
+ stubbed out to do nothing. out_string is UTF-8, but since
+ our standard menus are in English and this is only going to
+ happen the first time a menu is used, the encoding is
+ of minor importance compared with menus not working at all. */
+ return_value =
+ AppendMenu (menu, fuFlags,
+ item != NULL ? (UINT) item: (UINT) wv->call_data,
+ out_string);
+ /* Don't use unicode menus in future. */
+ unicode_append_menu = NULL;
+ }
+
+ if (unicode_append_menu && (fuFlags & MF_OWNERDRAW))
local_free (out_string);
}
else
diff --git a/src/xdisp.c b/src/xdisp.c
index cd00255e775..529dd7e4cd3 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -1350,8 +1350,8 @@ pos_visible_p (w, charpos, x, y, rtop, rbot, exact_mode_line_heights_p)
current_header_line_height = current_mode_line_height = -1;
- if (visible_p && w->hscroll > 0)
- *x -= w->hscroll;
+ if (visible_p && XFASTINT (w->hscroll) > 0)
+ *x -= XFASTINT (w->hscroll);
return visible_p;
}
@@ -6106,6 +6106,8 @@ move_it_in_display_line_to (it, to_charpos, to_x, op)
glyphs have the same width. */
int single_glyph_width = it->pixel_width / it->nglyphs;
int new_x;
+ int x_before_this_char = x;
+ int hpos_before_this_char = it->hpos;
for (i = 0; i < it->nglyphs; ++i, x = new_x)
{
@@ -6137,8 +6139,22 @@ move_it_in_display_line_to (it, to_charpos, to_x, op)
{
++it->hpos;
it->current_x = new_x;
+
+ /* The character's last glyph just barely fits
+ in this row. */
if (i == it->nglyphs - 1)
{
+ /* If this is the destination position,
+ return a position *before* it in this row,
+ now that we know it fits in this row. */
+ if (BUFFER_POS_REACHED_P ())
+ {
+ it->hpos = hpos_before_this_char;
+ it->current_x = x_before_this_char;
+ result = MOVE_POS_MATCH_OR_ZV;
+ break;
+ }
+
set_iterator_to_next (it, 1);
#ifdef HAVE_WINDOW_SYSTEM
if (IT_OVERFLOW_NEWLINE_INTO_FRINGE (it))
@@ -7802,7 +7818,7 @@ resize_mini_window_1 (a1, exactly, a3, a4)
/* Resize mini-window W to fit the size of its contents. EXACT:P
means size the window exactly to the size needed. Otherwise, it's
only enlarged until W's buffer is empty.
-
+
Set W->start to the right place to begin display. If the whole
contents fit, start at the beginning. Otherwise, start so as
to make the end of the contents appear. This is particularly
@@ -7891,7 +7907,6 @@ resize_mini_window (w, exact_p)
init_iterator (&it, w, ZV, ZV_BYTE, NULL, DEFAULT_FACE_ID);
move_it_vertically_backward (&it, (height - 1) * unit);
start = it.current.pos;
- SET_PT_BOTH (CHARPOS (start), BYTEPOS (start));
}
else
SET_TEXT_POS (start, BEGV, BEGV_BYTE);
@@ -10703,9 +10718,13 @@ redisplay_internal (preserve_echo_area)
if (consider_all_windows_p)
{
Lisp_Object tail, frame;
- int i, n = 0, size = 50;
- struct frame **updated
- = (struct frame **) alloca (size * sizeof *updated);
+ int i, n = 0, size = 5;
+ struct frame **updated;
+
+ FOR_EACH_FRAME (tail, frame)
+ size++;
+
+ updated = (struct frame **) alloca (size * sizeof *updated);
/* Recompute # windows showing selected buffer. This will be
incremented each time such a window is displayed. */