Mercurial > emacs
changeset 90225:a3716f7538f2
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
line wrap: on
line diff
--- a/ChangeLog Fri Aug 26 09:51:52 2005 +0000 +++ b/ChangeLog Tue Sep 06 00:25:20 2005 +0000 @@ -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'.
--- a/admin/ChangeLog Fri Aug 26 09:51:52 2005 +0000 +++ b/admin/ChangeLog Tue Sep 06 00:25:20 2005 +0000 @@ -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.
--- a/admin/FOR-RELEASE Fri Aug 26 09:51:52 2005 +0000 +++ b/admin/FOR-RELEASE Tue Sep 06 00:25:20 2005 +0000 @@ -33,13 +33,6 @@ ** 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 @@ ** 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 @@ * 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/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
--- a/admin/notes/years Fri Aug 26 09:51:52 2005 +0000 +++ b/admin/notes/years Tue Sep 06 00:25:20 2005 +0000 @@ -12,6 +12,12 @@ --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. + + ------------------------------------------------------------------------------
--- a/config.guess Fri Aug 26 09:51:52 2005 +0000 +++ b/config.guess Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ # # 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 @@ 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 @@ 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 @@ # 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 @@ 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 @@ ;; 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 @@ 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 @@ 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 @@ 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 @@ # 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 (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 @@ 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 @@ #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 @@ 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 @@ 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 @@ ;; 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 @@ 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 @@ # 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ #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 @@ } 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 @@ 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 @@ 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
--- a/config.sub Fri Aug 26 09:51:52 2005 +0000 +++ b/config.sub Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ # # 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 @@ 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 @@ 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 @@ *local*) # First pass through any local machine types. echo $1 - exit 0;; + exit ;; * ) break ;; @@ -118,7 +119,8 @@ # 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 @@ -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 @@ | 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 @@ | 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 @@ | 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 @@ | 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 @@ basic_machine=a29k-amd os=-udi ;; + abacus) + basic_machine=abacus-unknown + ;; adobe68k) basic_machine=m68010-adobe os=-scout @@ -367,6 +394,12 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ sb1el) basic_machine=mipsisa64sb1el-unknown ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; sequent) basic_machine=i386-sequent ;; @@ -835,6 +896,9 @@ 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 @@ basic_machine=i386-sequent os=-dynix ;; - t3d) - basic_machine=alpha-cray - os=-unicos - ;; t3e) basic_machine=alphaev5-cray os=-unicos @@ -913,12 +973,16 @@ basic_machine=t90-cray os=-unicos ;; - tic4x | c4x*) - basic_machine=tic4x-unknown + tic54x | c54x*) + basic_machine=tic54x-unknown os=-coff ;; - tic54x | c54x*) - basic_machine=tic54x-unknown + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown os=-coff ;; tx39) @@ -934,6 +998,10 @@ 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 @@ basic_machine=hppa1.1-winbond os=-proelf ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; xps | xps100) basic_machine=xps100-honeywell ;; @@ -1007,6 +1079,9 @@ romp) basic_machine=romp-ibm ;; + mmix) + basic_machine=mmix-knuth + ;; rs6000) basic_machine=rs6000-ibm ;; @@ -1023,13 +1098,10 @@ 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 @@ | -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 @@ ;; 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 @@ -opened*) os=-openedition ;; + -os400*) + os=-os400 + ;; -wince*) os=-wince ;; @@ -1169,6 +1251,9 @@ -atheos*) os=-atheos ;; + -syllable*) + os=-syllable + ;; -386bsd) os=-bsd ;; @@ -1191,6 +1276,9 @@ -sinix*) os=-sysv4 ;; + -tpf*) + os=-tpf + ;; -triton*) os=-sysv3 ;; @@ -1221,6 +1309,15 @@ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; -none) ;; *) @@ -1252,6 +1349,9 @@ arm*-semi) os=-aout ;; + c4x-* | tic4x-*) + os=-coff + ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 @@ -1295,9 +1395,15 @@ *-be) os=-beos ;; + *-haiku) + os=-haiku + ;; *-ibm) os=-aix ;; + *-knuth) + os=-mmixware + ;; *-wec) os=-proelf ;; @@ -1430,9 +1536,15 @@ -mvs* | -opened*) vendor=ibm ;; + -os400*) + vendor=ibm + ;; -ptx*) vendor=sequent ;; + -tpf*) + vendor=ibm + ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; @@ -1457,7 +1569,7 @@ esac echo $basic_machine$os -exit 0 +exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp)
--- a/etc/ChangeLog Fri Aug 26 09:51:52 2005 +0000 +++ b/etc/ChangeLog Tue Sep 06 00:25:20 2005 +0000 @@ -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.
--- a/etc/NEWS Fri Aug 26 09:51:52 2005 +0000 +++ b/etc/NEWS Tue Sep 06 00:25:20 2005 +0000 @@ -3983,6 +3983,10 @@ 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: +++
--- a/etc/PROBLEMS Fri Aug 26 09:51:52 2005 +0000 +++ b/etc/PROBLEMS Tue Sep 06 00:25:20 2005 +0000 @@ -342,7 +342,7 @@ *** 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
--- a/etc/emacsclient.1 Fri Aug 26 09:51:52 2005 +0000 +++ b/etc/emacsclient.1 Tue Sep 06 00:25:20 2005 +0000 @@ -9,28 +9,30 @@ .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. +.B emacsclient +works in conjunction with the built-in Emacs server. .PP -You typically do not call +You can either call .B emacsclient -directly. Instead, you set the environment variable EDITOR -to -.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 @@ 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).
--- a/etc/orgcard.ps Fri Aug 26 09:51:52 2005 +0000 +++ b/etc/orgcard.ps Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ 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 @@ 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 @@ @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 @@ 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 @@ %%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 @@ %%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(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 @@ 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
--- a/etc/orgcard.tex Fri Aug 26 09:51:52 2005 +0000 +++ b/etc/orgcard.tex Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ \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}
--- a/lisp/ChangeLog Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/ChangeLog Tue Sep 06 00:25:20 2005 +0000 @@ -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>
--- a/lisp/ansi-color.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/ansi-color.el Tue Sep 06 00:25:20 2005 +0000 @@ -86,6 +86,8 @@ ;;; Code: +(defvar comint-last-output-start) + ;; Customization (defgroup ansi-colors nil
--- a/lisp/bs.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/bs.el Tue Sep 06 00:25:20 2005 +0000 @@ -131,6 +131,8 @@ ;;; Code: +(defvar font-lock-verbose) + ;; ---------------------------------------------------------------------- ;; Globals for customization ;; ----------------------------------------------------------------------
--- a/lisp/calendar/cal-bahai.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/cal-bahai.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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 @@ (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 @@ (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 @@ (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)))))
--- a/lisp/calendar/cal-china.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/cal-china.el Tue Sep 06 00:25:20 2005 +0000 @@ -49,6 +49,7 @@ ;;; Code: +(defvar date) (defvar displayed-month) (defvar displayed-year)
--- a/lisp/calendar/cal-coptic.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/cal-coptic.el Tue Sep 06 00:25:20 2005 +0000 @@ -40,6 +40,8 @@ ;;; Code: +(defvar date) + (require 'cal-julian) (defvar coptic-calendar-month-name-array
--- a/lisp/calendar/cal-french.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/cal-french.el Tue Sep 06 00:25:20 2005 +0000 @@ -43,6 +43,8 @@ ;;; Code: +(defvar date) + (require 'calendar) (defun french-calendar-accents ()
--- a/lisp/calendar/cal-hebrew.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/cal-hebrew.el Tue Sep 06 00:25:20 2005 +0000 @@ -41,8 +41,12 @@ ;;; Code: +(defvar date) (defvar displayed-month) (defvar displayed-year) +(defvar entry) +(defvar number) +(defvar original-date) (require 'calendar)
--- a/lisp/calendar/cal-islam.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/cal-islam.el Tue Sep 06 00:25:20 2005 +0000 @@ -40,8 +40,11 @@ ;;; Code: +(defvar date) (defvar displayed-month) (defvar displayed-year) +(defvar number) +(defvar original-date) (require 'cal-julian)
--- a/lisp/calendar/cal-iso.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/cal-iso.el Tue Sep 06 00:25:20 2005 +0000 @@ -41,6 +41,8 @@ ;;; Code: +(defvar date) + (require 'calendar) (defun calendar-absolute-from-iso (date)
--- a/lisp/calendar/cal-julian.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/cal-julian.el Tue Sep 06 00:25:20 2005 +0000 @@ -40,6 +40,7 @@ ;;; Code: +(defvar date) (defvar displayed-month) (defvar displayed-year)
--- a/lisp/calendar/cal-mayan.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/cal-mayan.el Tue Sep 06 00:25:20 2005 +0000 @@ -53,6 +53,8 @@ ;;; Code: +(defvar date) + (require 'calendar) (defconst calendar-mayan-days-before-absolute-zero 1137142
--- a/lisp/calendar/cal-menu.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/cal-menu.el Tue Sep 06 00:25:20 2005 +0000 @@ -38,8 +38,10 @@ ;;; Code: +(defvar date) (defvar displayed-month) (defvar displayed-year) +(defvar event) (eval-when-compile (require 'calendar)) (require 'easymenu)
--- a/lisp/calendar/cal-persia.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/cal-persia.el Tue Sep 06 00:25:20 2005 +0000 @@ -40,6 +40,8 @@ ;;; Code: +(defvar date) + (require 'cal-julian) (defvar persian-calendar-month-name-array
--- a/lisp/calendar/lunar.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/lunar.el Tue Sep 06 00:25:20 2005 +0000 @@ -49,6 +49,7 @@ ;;; Code: +(defvar date) (defvar displayed-month) (defvar displayed-year)
--- a/lisp/calendar/solar.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/calendar/solar.el Tue Sep 06 00:25:20 2005 +0000 @@ -60,6 +60,7 @@ ;;; Code: +(defvar date) (defvar displayed-month) (defvar displayed-year)
--- a/lisp/cus-edit.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/cus-edit.el Tue Sep 06 00:25:20 2005 +0000 @@ -670,7 +670,7 @@ :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 @@ (setq magics (cdr magics))))) (widget-put widget :custom-state found))) (custom-magic-reset widget)) - -;;; The `custom-save-all' Function. + +;;; Reading and writing the custom file. + ;;;###autoload (defcustom custom-file nil "File used for storing customization information. @@ -3898,17 +3899,33 @@ (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 @@ (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
--- a/lisp/cus-theme.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/cus-theme.el Tue Sep 06 00:25:20 2005 +0000 @@ -168,8 +168,9 @@ (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)
--- a/lisp/custom.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/custom.el Tue Sep 06 00:25:20 2005 +0000 @@ -583,7 +583,7 @@ (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 @@ (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 @@ 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 @@ "~/_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 @@ ;; `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 @@ ;; 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 @@ (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 @@ ;;; 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 @@ (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 @@ (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 @@ (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.
--- a/lisp/diff-mode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/diff-mode.el Tue Sep 06 00:25:20 2005 +0000 @@ -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."
--- a/lisp/dired-x.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/dired-x.el Tue Sep 06 00:25:20 2005 +0000 @@ -111,6 +111,8 @@ (require 'dired-aux) +(defvar vm-folder-directory) + ;;; User-defined variables. (defgroup dired-x nil
--- a/lisp/dired.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/dired.el Tue Sep 06 00:25:20 2005 +0000 @@ -1860,9 +1860,12 @@ (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 @@ ;; 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
--- a/lisp/emacs-lisp/checkdoc.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/emacs-lisp/checkdoc.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ "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
--- a/lisp/emacs-lisp/lisp-mode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/emacs-lisp/lisp-mode.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/emacs-lisp/lselect.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/emacs-lisp/lselect.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/emacs-lisp/pp.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/emacs-lisp/pp.el Tue Sep 06 00:25:20 2005 +0000 @@ -27,6 +27,8 @@ ;;; Code: +(defvar font-lock-verbose) + (defgroup pp nil "Pretty printer for Emacs Lisp." :prefix "pp-"
--- a/lisp/emacs-lisp/syntax.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/emacs-lisp/syntax.el Tue Sep 06 00:25:20 2005 +0000 @@ -47,6 +47,8 @@ (eval-when-compile (require 'cl)) +(defvar font-lock-beginning-of-syntax-function) + (defsubst syntax-ppss-depth (ppss) (nth 0 ppss))
--- a/lisp/emacs-lisp/tcover-ses.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/emacs-lisp/tcover-ses.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/emacs-lisp/tcover-unsafep.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/emacs-lisp/tcover-unsafep.el Tue Sep 06 00:25:20 2005 +0000 @@ -25,6 +25,8 @@ (require 'testcover) +(defvar safe-functions) + ;;;These forms are all considered safe (defconst testcover-unsafep-safe '(((lambda (x) (* x 2)) 14)
--- a/lisp/emerge.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/emerge.el Tue Sep 06 00:25:20 2005 +0000 @@ -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
--- a/lisp/eshell/esh-arg.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/eshell/esh-arg.el Tue Sep 06 00:25:20 2005 +0000 @@ -342,8 +342,10 @@ (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 ()
--- a/lisp/eshell/esh-cmd.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/eshell/esh-cmd.el Tue Sep 06 00:25:20 2005 +0000 @@ -453,12 +453,14 @@ (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"
--- a/lisp/eshell/esh-ext.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/eshell/esh-ext.el Tue Sep 06 00:25:20 2005 +0000 @@ -92,7 +92,7 @@ (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
--- a/lisp/faces.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/faces.el Tue Sep 06 00:25:20 2005 +0000 @@ -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.
--- a/lisp/files.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/files.el Tue Sep 06 00:25:20 2005 +0000 @@ -30,6 +30,9 @@ ;;; Code: +(defvar font-lock-keywords) + + (defgroup backup nil "Backups of edited data files." :group 'files) @@ -2407,7 +2410,7 @@ 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 @@ 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.)
--- a/lisp/find-lisp.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/find-lisp.el Tue Sep 06 00:25:20 2005 +0000 @@ -46,6 +46,9 @@ ;;; Code: +(defvar dired-buffers) +(defvar dired-subdir-alist) + ;; Internal variables (defvar find-lisp-regexp nil
--- a/lisp/font-lock.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/font-lock.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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 @@ ;; 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 @@ (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)
--- a/lisp/gnus/ChangeLog Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/ChangeLog Tue Sep 06 00:25:20 2005 +0000 @@ -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.
--- a/lisp/gnus/gnus-art.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/gnus-art.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ 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 @@ 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."
--- a/lisp/gnus/gnus-fun.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/gnus-fun.el Tue Sep 06 00:25:20 2005 +0000 @@ -54,7 +54,7 @@ :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 @@ ;;;###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)
--- a/lisp/gnus/gnus-msg.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/gnus-msg.el Tue Sep 06 00:25:20 2005 +0000 @@ -67,8 +67,10 @@ 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 @@ "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 @@ (gcc (cond ((functionp group) (funcall group)) - ((or (stringp group) (list group)) + ((or (stringp group) (listp group)) group)))) (when gcc (insert "Gcc: "
--- a/lisp/gnus/gnus-spec.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/gnus-spec.el Tue Sep 06 00:25:20 2005 +0000 @@ -28,6 +28,7 @@ ;;; Code: (eval-when-compile (require 'cl)) +(defvar gnus-newsrc-file-version) (require 'gnus)
--- a/lisp/gnus/gnus-sum.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/gnus-sum.el Tue Sep 06 00:25:20 2005 +0000 @@ -257,8 +257,7 @@ "*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)
--- a/lisp/gnus/gnus-util.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/gnus-util.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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)
--- a/lisp/gnus/gnus.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/gnus.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ "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 @@ (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
--- a/lisp/gnus/message.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/message.el Tue Sep 06 00:25:20 2005 +0000 @@ -6631,7 +6631,8 @@ :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'.
--- a/lisp/gnus/mm-bodies.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/mm-bodies.el Tue Sep 06 00:25:20 2005 +0000 @@ -227,7 +227,7 @@ 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)))))
--- a/lisp/gnus/mm-decode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/mm-decode.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 ()
--- a/lisp/gnus/mm-encode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/mm-encode.el Tue Sep 06 00:25:20 2005 +0000 @@ -118,7 +118,7 @@ ;; 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)))
--- a/lisp/gnus/mm-extern.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/mm-extern.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/gnus/mm-url.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/mm-url.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/gnus/mm-view.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/mm-view.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/gnus/mml-smime.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/mml-smime.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/gnus/mml.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/mml.el Tue Sep 06 00:25:20 2005 +0000 @@ -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.
--- a/lisp/gnus/mml1991.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/mml1991.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/gnus/mml2015.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/mml2015.el Tue Sep 06 00:25:20 2005 +0000 @@ -35,6 +35,8 @@ (require 'mm-util) (require 'mml) +(defvar mc-pgp-always-sign) + (defvar mml2015-use (or (progn (ignore-errors
--- a/lisp/gnus/nnheader.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/nnheader.el Tue Sep 06 00:25:20 2005 +0000 @@ -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))
--- a/lisp/gnus/nnweb.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/nnweb.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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 @@ (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)
--- a/lisp/gnus/rfc1843.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/rfc1843.el Tue Sep 06 00:25:20 2005 +0000 @@ -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]\\| \\)+\\)\\(~}\\|$\\)")
--- a/lisp/gnus/spam-stat.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/gnus/spam-stat.el Tue Sep 06 00:25:20 2005 +0000 @@ -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
--- a/lisp/ibuf-ext.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/ibuf-ext.el Tue Sep 06 00:25:20 2005 +0000 @@ -222,8 +222,7 @@ (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 @@ (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))
--- a/lisp/ibuffer.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/ibuffer.el Tue Sep 06 00:25:20 2005 +0000 @@ -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'.
--- a/lisp/ido.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/ido.el Tue Sep 06 00:25:20 2005 +0000 @@ -323,6 +323,8 @@ (provide 'ido) +(defvar cua-inhibit-cua-keys) + ;;; User Variables ;; ;; These are some things you might want to change.
--- a/lisp/info-xref.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/info-xref.el Tue Sep 06 00:25:20 2005 +0000 @@ -138,27 +138,25 @@ ;; 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."
--- a/lisp/international/mule-cmds.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/international/mule-cmds.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (= 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))
--- a/lisp/language/ethio-util.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/language/ethio-util.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/language/thai-util.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/language/thai-util.el Tue Sep 06 00:25:20 2005 +0000 @@ -28,6 +28,8 @@ ;;; Code: +(defvar thai-auto-composition-mode) + ;; Setting information of Thai characters. (defconst thai-category-table (make-category-table))
--- a/lisp/log-view.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/log-view.el Tue Sep 06 00:25:20 2005 +0000 @@ -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
--- a/lisp/longlines.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/longlines.el Tue Sep 06 00:25:20 2005 +0000 @@ -116,6 +116,7 @@ (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 @@ (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 @@ (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.
--- a/lisp/mail/metamail.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/mail/metamail.el Tue Sep 06 00:25:20 2005 +0000 @@ -36,6 +36,9 @@ ;;; Code: +(defvar rmail-current-message) +(defvar rmail-message-vector) + (defgroup metamail nil "Metamail interface for Emacs." :group 'mail
--- a/lisp/mail/mspools.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/mail/mspools.el Tue Sep 06 00:25:20 2005 +0000 @@ -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
--- a/lisp/mail/rmail-spam-filter.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/mail/rmail-spam-filter.el Tue Sep 06 00:25:20 2005 +0000 @@ -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))
--- a/lisp/mail/rmail.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/mail/rmail.el Tue Sep 06 00:25:20 2005 +0000 @@ -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\
--- a/lisp/mail/rmailkwd.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/mail/rmailkwd.el Tue Sep 06 00:25:20 2005 +0000 @@ -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.
--- a/lisp/mail/rmailmsc.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/mail/rmailmsc.el Tue Sep 06 00:25:20 2005 +0000 @@ -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.
--- a/lisp/mail/rmailsum.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/mail/rmailsum.el Tue Sep 06 00:25:20 2005 +0000 @@ -31,6 +31,8 @@ ;;; Code: +(defvar msgnum) + ;; For rmail-select-summary (require 'rmail)
--- a/lisp/mail/uce.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/mail/uce.el Tue Sep 06 00:25:20 2005 +0000 @@ -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...
--- a/lisp/man.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/man.el Tue Sep 06 00:25:20 2005 +0000 @@ -445,7 +445,7 @@ ;; 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 @@ (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 @@ 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 @@ (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
--- a/lisp/menu-bar.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/menu-bar.el Tue Sep 06 00:25:20 2005 +0000 @@ -105,6 +105,10 @@ (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 @@ :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 @@ :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 @@ :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 @@ :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 @@ '(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] '("--"))
--- a/lisp/net/eudc.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/net/eudc.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/net/tramp.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/net/tramp.el Tue Sep 06 00:25:20 2005 +0000 @@ -1856,6 +1856,7 @@ (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 @@ . 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 @@ (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 @@ (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 @@ ;; 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.
--- a/lisp/obsolete/bg-mouse.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/obsolete/bg-mouse.el Tue Sep 06 00:25:20 2005 +0000 @@ -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:
--- a/lisp/obsolete/fast-lock.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/obsolete/fast-lock.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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 @@ (provide 'fast-lock) -;;; arch-tag: 638c431e-8cae-4538-80a1-963ff97d233e +;; arch-tag: 638c431e-8cae-4538-80a1-963ff97d233e ;;; fast-lock.el ends here
--- a/lisp/obsolete/lazy-lock.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/obsolete/lazy-lock.el Tue Sep 06 00:25:20 2005 +0000 @@ -299,6 +299,10 @@ `(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 @@ (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 @@ (provide 'lazy-lock) -;;; arch-tag: c1776846-f046-4a45-9684-54b951b12fc9 +;; arch-tag: c1776846-f046-4a45-9684-54b951b12fc9 ;;; lazy-lock.el ends here
--- a/lisp/obsolete/rnews.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/obsolete/rnews.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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)
--- a/lisp/obsolete/rnewspost.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/obsolete/rnewspost.el Tue Sep 06 00:25:20 2005 +0000 @@ -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
--- a/lisp/obsolete/scribe.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/obsolete/scribe.el Tue Sep 06 00:25:20 2005 +0000 @@ -30,6 +30,8 @@ ;;; Code: +(defvar compile-command) + (defgroup scribe nil "Scribe mode." :prefix "scribe-"
--- a/lisp/obsolete/sun-curs.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/obsolete/sun-curs.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/obsolete/sun-fns.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/obsolete/sun-fns.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ "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 @@ "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))
--- a/lisp/obsolete/swedish.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/obsolete/swedish.el Tue Sep 06 00:25:20 2005 +0000 @@ -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.,?!:;'\")}]"
--- a/lisp/obsolete/x-menu.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/obsolete/x-menu.el Tue Sep 06 00:25:20 2005 +0000 @@ -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
--- a/lisp/outline.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/outline.el Tue Sep 06 00:25:20 2005 +0000 @@ -37,6 +37,9 @@ ;;; Code: +(defvar font-lock-warning-face) + + (defgroup outlines nil "Support for hierarchical outlining." :prefix "outline-" @@ -453,6 +456,20 @@ (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 @@ (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 @@ (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 @@ (<= (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)))))) + (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))))) + (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (provide 'outline) (provide 'noutline) -;;; arch-tag: 1724410e-7d4d-4f46-b801-49e18171e874 +;; arch-tag: 1724410e-7d4d-4f46-b801-49e18171e874 ;;; outline.el ends here
--- a/lisp/play/handwrite.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/play/handwrite.el Tue Sep 06 00:25:20 2005 +0000 @@ -69,6 +69,9 @@ ;;; Code: +(defvar ps-printer-name) +(defvar ps-lpr-command) + ;; Variables
--- a/lisp/progmodes/ada-mode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/ada-mode.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/progmodes/antlr-mode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/antlr-mode.el Tue Sep 06 00:25:20 2005 +0000 @@ -829,7 +829,7 @@ `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 @@ ("\\$\\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 @@ (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
--- a/lisp/progmodes/autoconf.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/autoconf.el Tue Sep 06 00:25:20 2005 +0000 @@ -38,6 +38,8 @@ ;;; Code: +(defvar font-lock-syntactic-keywords) + (defvar autoconf-mode-map (make-sparse-keymap)) (defvar autoconf-mode-hook nil
--- a/lisp/progmodes/cmacexp.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/cmacexp.el Tue Sep 06 00:25:20 2005 +0000 @@ -93,6 +93,9 @@ (provide 'cmacexp) +(defvar msdos-shells) + + (defgroup c-macro nil "Expand C macros in a region." :group 'c)
--- a/lisp/progmodes/compile.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/compile.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ \\(?:: \\(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 @@ (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 @@ 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 @@ 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 @@ ;; 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)
--- a/lisp/progmodes/cperl-mode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/cperl-mode.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (save-excursion (skip-chars-backward "$") (looking-at "\\(\\$\\$\\)*\\$\\([^\\$]\\|$\\)")) - (insert ?\ )) + (insert ?\s)) ;; Check whether we are in comment (if (and (save-excursion @@ -1871,7 +1874,7 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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)
--- a/lisp/progmodes/flymake.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/flymake.el Tue Sep 06 00:25:20 2005 +0000 @@ -806,11 +806,13 @@ (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."
--- a/lisp/progmodes/fortran.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/fortran.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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 @@ (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
--- a/lisp/progmodes/gdb-ui.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/gdb-ui.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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 @@ (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)
--- a/lisp/progmodes/grep.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/grep.el Tue Sep 06 00:25:20 2005 +0000 @@ -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
--- a/lisp/progmodes/gud.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/gud.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ ;; 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 @@ 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 @@ ((= (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
--- a/lisp/progmodes/idlw-complete-structtag.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/idlw-complete-structtag.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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 @@ (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 @@ ;; 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)
--- a/lisp/progmodes/idlw-help.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/idlw-help.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ :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 @@ (defvar idlwave-help-activate-links-aggressively nil "Obsolete variable.") - + (defvar idlwave-completion-help-info) (defvar idlwave-help-frame nil @@ -324,7 +326,7 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ (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 @@ (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 @@ (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 @@ 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 @@ 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 @@ 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 @@ (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 @@ "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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ 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 @@ 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 @@ 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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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))
--- a/lisp/progmodes/mixal-mode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/mixal-mode.el Tue Sep 06 00:25:20 2005 +0000 @@ -55,6 +55,8 @@ ;;; Code: +(defvar compile-command) + ;;; Key map (defvar mixal-mode-map (let ((map (make-sparse-keymap)))
--- a/lisp/progmodes/octave-hlp.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/octave-hlp.el Tue Sep 06 00:25:20 2005 +0000 @@ -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.
--- a/lisp/progmodes/octave-inf.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/octave-inf.el Tue Sep 06 00:25:20 2005 +0000 @@ -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.
--- a/lisp/progmodes/octave-mod.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/octave-mod.el Tue Sep 06 00:25:20 2005 +0000 @@ -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
--- a/lisp/progmodes/perl-mode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/perl-mode.el Tue Sep 06 00:25:20 2005 +0000 @@ -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-"
--- a/lisp/progmodes/prolog.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/prolog.el Tue Sep 06 00:25:20 2005 +0000 @@ -31,6 +31,9 @@ ;;; Code: +(defvar comint-prompt-regexp) + + (defgroup prolog nil "Major mode for editing and running Prolog under Emacs." :group 'languages)
--- a/lisp/progmodes/python.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/python.el Tue Sep 06 00:25:20 2005 +0000 @@ -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."
--- a/lisp/progmodes/sh-script.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/sh-script.el Tue Sep 06 00:25:20 2005 +0000 @@ -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
--- a/lisp/progmodes/sql.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/sql.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ 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
--- a/lisp/progmodes/vhdl-mode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/progmodes/vhdl-mode.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 - -(defconst vhdl-version "3.32.12" +;; WWW: http://opensource.ethz.ch/emacs/vhdl-mode.html + +(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 @@ "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 @@ ("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 @@ 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 @@ \"\\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 @@ 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 @@ (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 @@ (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 @@ (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 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 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." :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." :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." :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 @@ "*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 @@ "*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 @@ :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 @@ <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 @@ (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 @@ :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 @@ (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 @@ WaveGen_Proc: process begin -- insert signal assignments here - + wait until Clk = '1'; end process WaveGen_Proc; " @@ -1239,67 +1361,40 @@ 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) - -(defcustom vhdl-components-package-name - '((".*" . "\\&_components") . "components") + :group 'vhdl-testbench) + +(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 @@ (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 @@ `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 @@ 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 @@ 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 @@ "*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 @@ \"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 @@ (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 @@ 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 @@ 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 @@ \"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 @@ "*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 @@ (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 @@ "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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ :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 @@ ["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 @@ :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 @@ ["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 @@ 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 @@ 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 @@ 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 + 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. | -| 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. -| -| 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ ))) (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 @@ 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 @@ 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 @@ (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 @@ 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 @@ (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 @@ (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 @@ (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 @@ ((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 @@ (< (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ "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 @@ (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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ "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 @@ # 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 @@ (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 @@ (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 @@ (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 @@ "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 @@ (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 @@ (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 @@ (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 @@ (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 @@ "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 @@ "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 @@ (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 @@ (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 @@ '(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 @@ (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 @@ ;; (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 @@ ;; (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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ '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 @@ '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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ '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 @@ '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 @@ (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 @@ (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 @@ (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))
--- a/lisp/shell.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/shell.el Tue Sep 06 00:25:20 2005 +0000 @@ -412,7 +412,7 @@ `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 @@ 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)))
--- a/lisp/simple.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/simple.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ :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
--- a/lisp/smerge-mode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/smerge-mode.el Tue Sep 06 00:25:20 2005 +0000 @@ -131,7 +131,8 @@ (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)
--- a/lisp/speedbar.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/speedbar.el Tue Sep 06 00:25:20 2005 +0000 @@ -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
--- a/lisp/subr.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/subr.el Tue Sep 06 00:25:20 2005 +0000 @@ -2851,8 +2851,9 @@ (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 @@ (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 @@ ;; 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))))) - - -(defun integer-list-= (l1 l2) + (t (< 0 (version-list-not-zero 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 @@ ;; 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))))) - - -(defun integer-list-<= (l1 l2) + (t (zerop (version-list-not-zero 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 @@ ;; 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))))) - - -(defalias 'version= 'string-equal - "Return t if version V1 is equal to V2. - -Compare version string using `string-equal'.") + (t (<= 0 (version-list-not-zero l2))))) + +(defun version-list-not-zero (lst) + "Return the first non-zero element of integer list LST. + +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 @@ 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 @@ 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))) - - -(defun integer-list-not-zero (lst) - "Return the first non-zero element of integer list LST. - -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)) + (version-list-<= (version-to-list v1) (version-to-list v2))) + +(defun version= (v1 v2) + "Return t if version V1 is equal to V2. + +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))) + ;; arch-tag: f7e0e6e5-70aa-4897-ae72-7a3511ec40bc
--- a/lisp/term/mac-win.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/term/mac-win.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/term/tty-colors.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/term/tty-colors.el Tue Sep 06 00:25:20 2005 +0000 @@ -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
--- a/lisp/term/w32-win.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/term/w32-win.el Tue Sep 06 00:25:20 2005 +0000 @@ -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))
--- a/lisp/term/x-win.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/term/x-win.el Tue Sep 06 00:25:20 2005 +0000 @@ -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)
--- a/lisp/term/xterm.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/term/xterm.el Tue Sep 06 00:25:20 2005 +0000 @@ -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.
--- a/lisp/textmodes/artist.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/textmodes/artist.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ :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 @@ (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 @@ (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 @@ (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 @@ (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)))
--- a/lisp/textmodes/conf-mode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/textmodes/conf-mode.el Tue Sep 06 00:25:20 2005 +0000 @@ -33,6 +33,8 @@ (require 'newcomment) +(defvar outline-heading-end-regexp) + ;; Variables: (defgroup conf nil @@ -229,15 +231,15 @@ (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))))
--- a/lisp/textmodes/ispell.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/textmodes/ispell.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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 @@ (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))
--- a/lisp/textmodes/makeinfo.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/textmodes/makeinfo.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ 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 @@ (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)
--- a/lisp/textmodes/org.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/textmodes/org.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ :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 @@ "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 @@ '(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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ <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 "\"><" - email "></a>\n"))) + email "></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 @@ )) (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 "<" and ">" - ;; handle @<..> HTML tags (replace "@>..<" 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 " " 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\"><\\1:\\2></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 "<" and ">" + ;; handle @<..> HTML tags (replace "@>..<" 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 " " 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><\\1:\\2></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\"><\\1:\\2></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)))) - - ;; 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))))) + (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><\\1:\\2></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) + ;; 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 @@ (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 @@ "\\):[ \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
--- a/lisp/textmodes/reftex-global.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/textmodes/reftex-global.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ `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 @@ ;; 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
--- a/lisp/textmodes/reftex-index.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/textmodes/reftex-index.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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 @@ ;; 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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ 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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ ["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 @@ (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 @@ (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 (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 @@ (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 @@ ;; 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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ 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 @@ (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 @@ (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 @@ (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 @@ 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 @@ (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 @@ (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 @@ (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 @@ "\\([ \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 @@ (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 @@ (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 @@ 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 @@ 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 @@ ((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 @@ ;; 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 @@ ("\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"
--- a/lisp/textmodes/reftex-toc.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/textmodes/reftex-toc.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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.")
--- a/lisp/textmodes/reftex.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/textmodes/reftex.el Tue Sep 06 00:25:20 2005 +0000 @@ -289,6 +289,8 @@ (setq reftex-tables-dirty t) (set symbol value))) +(defvar font-lock-keywords) + ;;; ========================================================================= ;;;
--- a/lisp/textmodes/sgml-mode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/textmodes/sgml-mode.el Tue Sep 06 00:25:20 2005 +0000 @@ -899,8 +899,6 @@ (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 @@ (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."
--- a/lisp/textmodes/tex-mode.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/textmodes/tex-mode.el Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ (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 @@ (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 @@ 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 @@ (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))
--- a/lisp/textmodes/texinfo.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/textmodes/texinfo.el Tue Sep 06 00:25:20 2005 +0000 @@ -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."
--- a/lisp/tooltip.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/tooltip.el Tue Sep 06 00:25:20 2005 +0000 @@ -27,6 +27,8 @@ ;;; Code: +(defvar comint-prompt-regexp) + ;;; Customizable settings (defgroup tooltip nil
--- a/lisp/url/ChangeLog Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/url/ChangeLog Tue Sep 06 00:25:20 2005 +0000 @@ -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):
--- a/lisp/url/url-mailto.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/url/url-mailto.el Tue Sep 06 00:25:20 2005 +0000 @@ -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) ", ")))
--- a/lisp/url/url-util.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/url/url-util.el Tue Sep 06 00:25:20 2005 +0000 @@ -270,7 +270,7 @@ (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 @@ 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))
--- a/lisp/w32-fns.el Fri Aug 26 09:51:52 2005 +0000 +++ b/lisp/w32-fns.el Tue Sep 06 00:25:20 2005 +0000 @@ -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")
--- a/lispref/ChangeLog Fri Aug 26 09:51:52 2005 +0000 +++ b/lispref/ChangeLog Tue Sep 06 00:25:20 2005 +0000 @@ -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.
--- a/lispref/elisp.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/lispref/elisp.texi Tue Sep 06 00:25:20 2005 +0000 @@ -912,13 +912,13 @@ 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
--- a/lispref/files.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/lispref/files.texi Tue Sep 06 00:25:20 2005 +0000 @@ -2580,7 +2580,9 @@ @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},
--- a/lispref/intro.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/lispref/intro.texi Tue Sep 06 00:25:20 2005 +0000 @@ -197,7 +197,7 @@ (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 @@ 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 @@ 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 @@ @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.
--- a/lispref/modes.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/lispref/modes.texi Tue Sep 06 00:25:20 2005 +0000 @@ -2767,7 +2767,7 @@ 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
--- a/lispref/os.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/lispref/os.texi Tue Sep 06 00:25:20 2005 +0000 @@ -119,7 +119,7 @@ @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 @@ @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
--- a/lispref/searching.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/lispref/searching.texi Tue Sep 06 00:25:20 2005 +0000 @@ -16,13 +16,13 @@ @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 @@ 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 @@ 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 @@ @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,52 +1492,155 @@ @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 + + 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: + +@example +(while (re-search-forward "foo[ \t]+bar" nil t) + (replace-match "foobar")) +@end example + +@noindent +@xref{Replacing Match,, Replacing the Text that Matched}, for a +description of @code{replace-match}. + + 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. + +@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}. - 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}. +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 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. +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. - 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. +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: -@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. +@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.'' -This variable is used by passing it as an argument to the function -@code{replace-match}. @xref{Replacing Match}. -@end defopt +@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. -@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 +@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. -@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 +@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
--- a/lispref/text.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/lispref/text.texi Tue Sep 06 00:25:20 2005 +0000 @@ -191,12 +191,11 @@ @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 @@ ---------- 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 @@ @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
--- a/lispref/tips.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/lispref/tips.texi Tue Sep 06 00:25:20 2005 +0000 @@ -374,6 +374,20 @@ 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
--- a/man/ChangeLog Fri Aug 26 09:51:52 2005 +0000 +++ b/man/ChangeLog Tue Sep 06 00:25:20 2005 +0000 @@ -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.
--- a/man/custom.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/man/custom.texi Tue Sep 06 00:25:20 2005 +0000 @@ -199,6 +199,8 @@ * 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 @@ 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
--- a/man/gnus.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/man/gnus.texi Tue Sep 06 00:25:20 2005 +0000 @@ -5090,10 +5090,10 @@ @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 @@ 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 @@ 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
--- a/man/org.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/man/org.texi Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ @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 @@ @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
--- a/man/search.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/man/search.texi Tue Sep 06 00:25:20 2005 +0000 @@ -907,6 +907,12 @@ (@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
--- a/man/ses.texi Fri Aug 26 09:51:52 2005 +0000 +++ b/man/ses.texi Tue Sep 06 00:25:20 2005 +0000 @@ -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 @@ @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 @@ @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 @@ 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 @@ @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
--- a/src/ChangeLog Fri Aug 26 09:51:52 2005 +0000 +++ b/src/ChangeLog Tue Sep 06 00:25:20 2005 +0000 @@ -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>
--- a/src/dired.c Fri Aug 26 09:51:52 2005 +0000 +++ b/src/dired.c Tue Sep 06 00:25:20 2005 +0000 @@ -132,7 +132,7 @@ 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 @@ 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 @@ /* 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 @@ 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 @@ 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 @@ } } - 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 @@ 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 @@ #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);
--- a/src/dispnew.c Fri Aug 26 09:51:52 2005 +0000 +++ b/src/dispnew.c Tue Sep 06 00:25:20 2005 +0000 @@ -3310,9 +3310,7 @@ 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 @@ 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
--- a/src/editfns.c Fri Aug 26 09:51:52 2005 +0000 +++ b/src/editfns.c Tue Sep 06 00:25:20 2005 +0000 @@ -3392,10 +3392,7 @@ 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)),
--- a/src/emacs.c Fri Aug 26 09:51:52 2005 +0000 +++ b/src/emacs.c Tue Sep 06 00:25:20 2005 +0000 @@ -266,7 +266,7 @@ --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\
--- a/src/fns.c Fri Aug 26 09:51:52 2005 +0000 +++ b/src/fns.c Tue Sep 06 00:25:20 2005 +0000 @@ -1813,7 +1813,7 @@ 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; {
--- a/src/image.c Fri Aug 26 09:51:52 2005 +0000 +++ b/src/image.c Tue Sep 06 00:25:20 2005 +0000 @@ -54,8 +54,8 @@ #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 @@ #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 @@ #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 @@ int x, y; unsigned long pixel; { - 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); + PixMapHandle pixmap = GetGWorldPixMap (ximage); + short depth = GetPixDepth (pixmap); + + if (depth == 32) + { + char *base_addr = GetPixBaseAddr (pixmap); + short row_bytes = GetPixRowBytes (pixmap); + + ((unsigned long *) (base_addr + y * row_bytes))[x] = pixel; + } + else if (depth == 1) + { + char *base_addr = GetPixBaseAddr (pixmap); + short row_bytes = GetPixRowBytes (pixmap); + + 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 @@ XImagePtr ximage; int x, y; { - 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); + PixMapHandle pixmap = GetGWorldPixMap (ximage); + short depth = GetPixDepth (pixmap); + + if (depth == 32) + { + char *base_addr = GetPixBaseAddr (pixmap); + short row_bytes = GetPixRowBytes (pixmap); + + return ((unsigned long *) (base_addr + y * row_bytes))[x]; + } + else if (depth == 1) + { + char *base_addr = GetPixBaseAddr (pixmap); + short row_bytes = GetPixRowBytes (pixmap); + + 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 @@ } 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 @@ *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 @@ 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 @@ 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 @@ 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 @@ { /* 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 @@ *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 @@ { 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 @@ #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 @@ 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 @@ 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 @@ 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; - - 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; - } + { + 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)] = ' '; + } + + 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ #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 @@ 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 @@ 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; } }
--- a/src/intervals.c Fri Aug 26 09:51:52 2005 +0000 +++ b/src/intervals.c Tue Sep 06 00:25:20 2005 +0000 @@ -791,14 +791,14 @@ /* 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
--- a/src/macgui.h Fri Aug 26 09:51:52 2005 +0000 +++ b/src/macgui.h Tue Sep 06 00:25:20 2005 +0000 @@ -87,6 +87,10 @@ #define FACE_DEFAULT (~0) +#if !TARGET_API_MAC_CARBON +#define GetPixDepth(pmh) ((*(pmh))->pixelSize) +#endif + /* Emulate XCharStruct. */ typedef struct _XCharStruct
--- a/src/macterm.h Fri Aug 26 09:51:52 2005 +0000 +++ b/src/macterm.h Tue Sep 06 00:25:20 2005 +0000 @@ -39,11 +39,6 @@ #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)
--- a/src/syntax.c Fri Aug 26 09:51:52 2005 +0000 +++ b/src/syntax.c Tue Sep 06 00:25:20 2005 +0000 @@ -134,7 +134,7 @@ { Lisp_Object tmp_table; int cnt = 0, invalidate = 1; - INTERVAL i, oldi; + INTERVAL i; if (init) { @@ -165,7 +165,7 @@ 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 @@ } 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 @@ { 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
--- a/src/w32menu.c Fri Aug 26 09:51:52 2005 +0000 +++ b/src/w32menu.c Tue Sep 06 00:25:20 2005 +0000 @@ -2321,7 +2321,23 @@ 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
--- a/src/xdisp.c Fri Aug 26 09:51:52 2005 +0000 +++ b/src/xdisp.c Tue Sep 06 00:25:20 2005 +0000 @@ -1350,8 +1350,8 @@ 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 @@ 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 @@ { ++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 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 @@ 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 @@ 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. */