From: tomo Date: Wed, 19 Jan 2000 08:37:29 +0000 (+0000) Subject: XEmacs 21.2.27 "Hera". X-Git-Tag: r21-2-27~1 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5eeb6918c29470b36f8461c402eb0c65cb19bd2;p=chise%2Fxemacs-chise.git.1 XEmacs 21.2.27 "Hera". --- diff --git a/CHANGES-beta b/CHANGES-beta index 7a22198..d46ad3a 100644 --- a/CHANGES-beta +++ b/CHANGES-beta @@ -1,3 +1,22 @@ +to 21.2.27 "Hera" +-- Dynamic layout for widgets from Andy Piper +-- config.sub, config.guess major upgrade, Marcus Thiessel +-- gdbinit renamed to .gdbinit +-- dbxrc renamed to .dbxrc +-- Mail locking overhaul, Michael Sperber +-- Info-visit-file can now be used non-interactively, Martin Buchholz +-- FAQ updates, Sandra Wambold +-- Document lisp-level error handling, Hrvoje Niksic +-- Windows changes, Kirill Katsnelson +-- Portable dumper ported to Windows, Kirill Katsnelson +-- idlwave-mode added, Carsten Dominik +-- Info changes, Yoshiki Hayashi and Didier Verna. +-- Again support BSD/OS 2.0 +-- minibuf.* changes, Yoshiki Hayashi +-- hyper-apropos changes, Yoshiki Hayashi +-- buffers tab has its own face, Andy Piper +-- modeline scrolling changes, Didier Verna + to 21.2.26 "Millenium" -- Fix unpredictable results, perhaps even crashes, if using the `return from debugger feature' and errors in `eval' or `funcall'. diff --git a/ChangeLog b/ChangeLog index ecb6c94..690a98e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,48 @@ +2000-01-18 Martin Buchholz + + * XEmacs 21.2.27 is released. + +2000-01-15 Adrian Aichner + + * etc/TUTORIAL.de: Update copyright and fix typo. + +2000-01-14 Martin Buchholz + + * configure.in: Create a .dbxrc in the src directory, like .gdbinit. + + * configure.in: Add `tests' symlink to make it easier to find + automated tests directory. + +2000-01-14 Andy Piper + + * configure.in: for cygwin 1.0 we must pick up the mingw32 headers + before the cygwin headers. + +2000-01-08 Martin Buchholz + + * configure.in: + - Allow find-tag to work in the build directory. + - rename src/gdbinit to src/.gdbinit, so that gdb can find it. + - Less verbose messages when creating .sbinit, .gdbinit, TAGS. + +2000-01-07 Marcus Thiessel + + * config.sub: Upgrade to 1.169, imported from autoconf's CVS + * config.guess: Upgrade to 1.158, imported from autoconf's CVS + +2000-01-03 Michael Sperber [Mr. Preprocessor] + + * etc/NEWS: Document mail spool locking overhaul. + + * configure.usage (--mail-locking): + * configure.in: Handle --mail-locking option correctly in + preparation for the movemail locking overhaul. + +2000-01-05 Daniel Pittman + + * configure.in (Installation): Report which Athena header/library + combo is being used. + 1999-12-31 Martin Buchholz * XEmacs 21.2.26 is released. diff --git a/README.packages b/README.packages index dbbc6c5..d618862 100644 --- a/README.packages +++ b/README.packages @@ -9,8 +9,10 @@ Real Real Quickstart FAQ ------------------------ Q. Do I need to have the packages to compile XEmacs? -A. If you want to compile with MULE, you need the mule-base package installed. - Otherwise, no package is required before compilation. +A. No, XEmacs will build and install just fine without any packages + installed. However, only the most basic editing functions will be + available with no packages installed, so installing packages is an + essential part of making your installed XEmacs _useful_. Q. I really liked the old way that packages were bundled and do not want to mess with packages at all. @@ -20,11 +22,11 @@ A. You can grab all the packages at once like you used to with old A note of caution ----------------- -The XEmacs package system is still in its infancy. Please expect a few -minor hurdles on the way. Also neither the interface nor the structure is +The XEmacs package system is still in its infancy. Please expect a few +minor hurdles on the way. Also neither the interface nor the structure is set in stone. The XEmacs maintainers reserve the right to sacrifice backwards compatibility as quirks are worked out over the coming -releases. +releases. Some Package Theory ------------------- @@ -35,7 +37,7 @@ have been unbundled. They have been replaced by the package system. Each elisp add-on (or groups of them when they are small) now comes in its own tarball that contains a small search hierarchy. -You select just the ones you need. Install them by untarring them into +You select just the ones you need. Install them by untarring them into the right place. On startup XEmacs will find them, set up the load path correctly, install autoloads, etc, etc. @@ -60,7 +62,7 @@ Where to get the packages ------------------------- Packages are available from ftp://ftp.xemacs.org/pub/xemacs/packages -and its mirror. +and its mirrors. How to install the packages --------------------------- @@ -73,14 +75,14 @@ The Sumo Tarball ---------------- Those with little time, cheap connections and plenty of disk space can -install all packages at once using the sumo tarballs. +install all the packages at once using the sumo tarballs. Download the file -xemacs-sumo-.tar.gz +xemacs-sumo.tar.gz For an XEmacs compiled with Mule you also need -xemacs-mule-sumo-.tar.gz +xemacs-mule-sumo.tar.gz N.B. They are called 'Sumo Tarballs' for good reason. They are currently about 15MB and 2.3MB (gzipped) respectively. @@ -120,8 +122,8 @@ XEmacs comes with some tools to make the periodic updating and installing easier. It will notice if new packages or versions are available and will fetch them from the ftp site. -Unfortunately this requires that a few packages are already in place. -You will have to install them by hand as above or use a SUMO tarball. +Unfortunately this requires that a few packages are already in place. +You will have to install them by hand as above or use a SUMO tarball. This requirement will hopefully go away in the future. The packages you need are: @@ -132,7 +134,7 @@ and optionally: mailcrypt - If you have PGP installed and want to verify the signature of the index file. - mule-base - Needed if you want to compile XEmacs with MULE. + mule-base - Needed if you want to use XEmacs with MULE. After installing these by hand, you can start XEmacs. (It is a good idea to use 'xemacs -vanilla' here as your startup files might need @@ -164,7 +166,7 @@ things now moved to packages.) - When you are finished choosing packages, invoke 'Packages->Install/Remove Select' from the menu or type 'x' to begin installing packages. - + After Installation ------------------ @@ -173,7 +175,7 @@ New packages can only be used by XEmacs after a restart. Note to MULE users ------------------ -Unlike all other packages the mule-base package is used at build/dump +Unlike all other packages the mule-base package is used at build/dump time. This means that you need this available before compiling XEmacs with MULE. Also it is a good idea to keep packages that are MULE-only separate by putting them in the mule-packages hierarchy. @@ -200,7 +202,7 @@ Upgrading/Removing Packages --------------------------- As the exact files and their locations contained in a package may -change it is recommend to remove a package first before installing a +change it is recommended to remove a package first before installing a new version. In order to facilitate removal each package contains an pgkinfo/MANIFEST.pkgname file which list all the files belong to the package. M-x package-admin-delete-binary-package RET can be used to @@ -230,7 +232,7 @@ Finding the right packages If you want to find out which package contains the functionality you are looking for, use M-x package-get-package-provider, and give it a -symbol that is likely to be in that package. eg, if some code you -want to use has a (require 'thingatpt) in it, try doing +symbol that is likely to be in that package. For example, if some +code you want to use has a (require 'thingatpt) in it, try doing M-x package-get-package-provider RET thingatpt , which will return something like: (fsf-compat "1.06"). diff --git a/config.guess b/config.guess index 7f2ead9..e1b5871 100755 --- a/config.guess +++ b/config.guess @@ -1,6 +1,7 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 +# Free Software Foundation, Inc. # # 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 @@ -23,6 +24,7 @@ # Written by Per Bothner . # The master version of this file is at the FSF in /home/gd/gnu/lib. +# Please send patches to . # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and @@ -35,6 +37,20 @@ # (but try to keep the structure clean). # +# Use $HOST_CC if defined. $CC may point to a cross-compiler +if test x"$CC_FOR_BUILD" = x; then + if test x"$HOST_CC" != x; then + CC_FOR_BUILD="$HOST_CC" + else + if test x"$CC" != x; then + CC_FOR_BUILD="$CC" + else + CC_FOR_BUILD=cc + fi + fi +fi + + # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 8/24/94.) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then @@ -46,7 +62,8 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 +dummy=dummy-$$ +trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 # Note: order is significant - the case branches are not exclusive. @@ -59,7 +76,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # 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. - cat <dummy.s + cat <$dummy.s .globl main .ent main main: @@ -76,9 +93,9 @@ main: ret \$31,(\$26),1 .end main EOF - ${CC-cc} dummy.s -o dummy 2>/dev/null + $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null if test "$?" = 0 ; then - ./dummy + ./$dummy case "$?" in 7) UNAME_MACHINE="alpha" @@ -97,8 +114,14 @@ EOF ;; esac fi - rm -f dummy.s dummy - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]` + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + 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 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 @@ -133,6 +156,9 @@ EOF wgrisc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; @@ -142,7 +168,7 @@ EOF SR2?01:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; - Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*) + 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 echo pyramid-pyramid-sysv3 @@ -150,7 +176,7 @@ EOF echo pyramid-pyramid-bsd fi exit 0 ;; - NILE:*:*:dcosx) + NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; sun4H:SunOS:5.*:*) @@ -201,6 +227,32 @@ EOF atari*:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; + # 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 + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; sun3*:NetBSD:*:*) echo m68k-sun-netbsd${UNAME_RELEASE} exit 0 ;; @@ -234,12 +286,16 @@ EOF VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; - 2020:CLIX:*:*) + 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) - sed 's/^ //' << EOF >dummy.c - int main (argc, argv) int argc; char **argv; { + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); @@ -254,10 +310,10 @@ EOF exit (-1); } EOF - ${CC-cc} dummy.c -o dummy \ - && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy + $CC_FOR_BUILD $dummy.c -o $dummy \ + && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Night_Hawk:Power_UNIX:*:*) @@ -275,15 +331,18 @@ EOF AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ - -o ${TARGET_BINARY_INTERFACE}x = x ] ; then + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then echo m88k-dg-dgux${UNAME_RELEASE} - else + else echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} fi - else echo i586-dg-dgux${UNAME_RELEASE} - fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 @@ -309,7 +368,7 @@ EOF exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - sed 's/^ //' << EOF >dummy.c + sed 's/^ //' << EOF >$dummy.c #include main() @@ -320,8 +379,8 @@ EOF exit(0); } EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 @@ -369,24 +428,24 @@ EOF 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - sed 's/^ //' << EOF >dummy.c + sed 's/^ //' << EOF >$dummy.c #include #include - + int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); - #endif + #endif long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) + + switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: + case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) - switch (bits) + switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; @@ -394,20 +453,20 @@ EOF } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; - #endif + #endif default: puts ("hppa1.0"); break; } exit (0); } EOF - ${CC-cc} dummy.c -o dummy && HP_ARCH=`./dummy` - rm -f dummy.c dummy + (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` + rm -f $dummy.c $dummy esac HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) - sed 's/^ //' << EOF >dummy.c + sed 's/^ //' << EOF >$dummy.c #include int main () @@ -432,8 +491,8 @@ EOF exit (0); } EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) @@ -442,6 +501,9 @@ EOF 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; + *9??*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; @@ -458,6 +520,9 @@ EOF parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; + hppa*:OpenBSD:*:*) + echo hppa-unknown-openbsd + exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; @@ -490,11 +555,14 @@ EOF CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} exit 0 ;; + CRAY*T3E:*:*:*) + echo alpha-cray-unicosmk${UNAME_RELEASE} + exit 0 ;; CRAY-2:*:*:*) echo cray2-cray-unicos exit 0 ;; F300:UNIX_System_V:*:*) - FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; @@ -507,29 +575,47 @@ EOF hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; + i?86:BSD/386:*:* | i?86:BSD/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; - i?86:BSD/386:*:* | *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) + if test -x /usr/bin/objformat; then + if test "elf" = "`/usr/bin/objformat`"; then + echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'` + exit 0 + fi + fi echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; *:NetBSD:*:*) - echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'` exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` exit 0 ;; i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin32 + echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; + 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 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin32 + echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -538,15 +624,11 @@ EOF echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; *:Linux:*:*) - # uname on the ARM produces all sorts of strangeness, and we need to - # filter it out. - case "$UNAME_MACHINE" in - arm* | sa110*) UNAME_MACHINE="arm" ;; - esac # The BFD linker knows what the default object file format is, so - # first see if it will tell us. - ld_help_string=`ld --help 2>&1` + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + ld_help_string=`cd /; ld --help 2>&1` ld_supported_emulations=`echo $ld_help_string \ | sed -ne '/supported emulations:/!d s/[ ][ ]*/ /g @@ -554,16 +636,74 @@ EOF s/ .*// p'` case "$ld_supported_emulations" in - i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; - i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; - sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;; + *ia64) + echo "${UNAME_MACHINE}-unknown-linux" + exit 0 + ;; + i?86linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 + ;; + i?86coff) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 + ;; + sparclinux) + echo "${UNAME_MACHINE}-unknown-linux-gnuaout" + exit 0 + ;; + armlinux) + echo "${UNAME_MACHINE}-unknown-linux-gnuaout" + exit 0 + ;; + elf32arm*) + echo "${UNAME_MACHINE}-unknown-linux-gnu" + exit 0 + ;; + armelf_linux*) + echo "${UNAME_MACHINE}-unknown-linux-gnu" + exit 0 + ;; + m68klinux) + echo "${UNAME_MACHINE}-unknown-linux-gnuaout" + exit 0 + ;; + elf32ppc) + # Determine Lib Version + cat >$dummy.c < +#if defined(__GLIBC__) +extern char __libc_version[]; +extern char __libc_release[]; +#endif +main(argc, argv) + int argc; + char *argv[]; +{ +#if defined(__GLIBC__) + printf("%s %s\n", __libc_version, __libc_release); +#else + printf("unkown\n"); +#endif + return 0; +} +EOF + LIBC="" + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null + if test "$?" = 0 ; then + ./$dummy | grep 1\.99 > /dev/null + if test "$?" = 0 ; then + LIBC="libc1" + fi + fi + rm -f $dummy.c $dummy + echo powerpc-unknown-linux-gnu${LIBC} + exit 0 + ;; esac if test "${UNAME_MACHINE}" = "alpha" ; then - sed 's/^ //' <dummy.s + sed 's/^ //' <$dummy.s .globl main .ent main main: @@ -581,9 +721,9 @@ EOF .end main EOF LIBC="" - ${CC-cc} dummy.s -o dummy 2>/dev/null + $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null if test "$?" = 0 ; then - ./dummy + ./$dummy case "$?" in 7) UNAME_MACHINE="alpha" @@ -600,22 +740,23 @@ EOF 16) UNAME_MACHINE="alphaev6" ;; - esac + esac - objdump --private-headers dummy | \ + objdump --private-headers $dummy | \ grep ld.so.1 > /dev/null if test "$?" = 0 ; then LIBC="libc1" fi - fi - rm -f dummy.s dummy + fi + rm -f $dummy.s $dummy echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 elif test "${UNAME_MACHINE}" = "mips" ; then - cat >dummy.c <$dummy.c </dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy else # Either a pre-BFD a.out linker (linux-gnuoldld) # or one that does not give us useful --help. @@ -645,12 +786,13 @@ EOF ;; esac # Determine whether the default compiler is a.out or elf - cat >dummy.c <$dummy.c < -main(argc, argv) - int argc; - char *argv[]; -{ +#ifdef __cplusplus + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 @@ -667,8 +809,8 @@ main(argc, argv) return 0; } EOF - ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy fi ;; # 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. @@ -684,10 +826,20 @@ EOF echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; 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 - echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i?86:*:5:7*) + # Fixed at (any) Pentium or better + UNAME_MACHINE=i586 + if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then + echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION} else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} fi exit 0 ;; i?86:*:3.2:*) @@ -699,18 +851,15 @@ EOF (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 + (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; - i?86:UnixWare:*:*) - if /bin/uname -X 2>/dev/null >/dev/null ; then - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - fi - echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION} - exit 0 ;; pc:*:*:*) # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. @@ -752,7 +901,7 @@ EOF mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; - i?86:LynxOS:2.*:*) + i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; TSUNAMI:LynxOS:2.*:*) @@ -764,6 +913,9 @@ EOF SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; @@ -794,7 +946,7 @@ EOF news*:NEWS-OS:*:6*) echo mips-sony-newsos6 exit 0 ;; - R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*) + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else @@ -810,12 +962,27 @@ EOF BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-qnx-qnx${UNAME_VERSION} + exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 -cat >dummy.c <$dummy.c < # include @@ -853,7 +1020,10 @@ main () #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif @@ -913,8 +1083,8 @@ main () } EOF -${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 -rm -f dummy.c dummy +$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 +rm -f $dummy.c $dummy # Apollos put the system type in the environment. diff --git a/config.sub b/config.sub index f791166..28426bb 100755 --- a/config.sub +++ b/config.sub @@ -1,6 +1,6 @@ #! /bin/sh # Configuration validation subroutine script, version 1.1. -# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc. +# Copyright (C) 1991, 92-97, 1998, 1999 Free Software Foundation, Inc. # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. @@ -98,11 +98,21 @@ case $os in os= basic_machine=$1 ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; -hiux*) os=-hiuxwe2 ;; -sco5) - os=sco3.2v5 + os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) @@ -121,6 +131,9 @@ case $os in os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -143,22 +156,33 @@ case $os in -psos*) os=-psos ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. - tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ + tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ - | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \ - | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \ - | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \ - | mips64 | mipsel | mips64el | mips64orion | mips64orionel \ - | mipstx39 | mipstx39el \ - | sparc | sparclet | sparclite | sparc64 | v850) + | 580 | i960 | h8300 \ + | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ + | alpha | alphaev[4-7] | alphaev56 | alphapca5[67] \ + | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \ + | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \ + | mips64orion | mips64orionel | mipstx39 | mipstx39el \ + | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ + | mips64vr5000 | miprs64vr5000el | mcore \ + | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ + | thumb | d10v | fr30) basic_machine=$basic_machine-unknown ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl) + ;; + # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. @@ -171,27 +195,45 @@ case $basic_machine in exit 1 ;; # Recognize the basic CPU types with company name. - vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \ + # FIXME: clean up the formatting here. + vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ - | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \ - | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \ - | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \ - | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \ + | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ + | xmp-* | ymp-* \ + | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \ + | alpha-* | alphaev[4-7]-* | alphaev56-* | alphapca5[67]-* \ + | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ + | clipper-* | orion-* \ | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ - | sparc64-* | mips64-* | mipsel-* \ - | mips64el-* | mips64orion-* | mips64orionel-* \ - | mipstx39-* | mipstx39el-* \ - | f301-*) + | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ + | mipstx39-* | mipstx39el-* | mcore-* \ + | f301-* | armv*-* | t3e-* \ + | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ + | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* ) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; alliant | fx80) basic_machine=fx80-alliant ;; @@ -221,6 +263,10 @@ case $basic_machine in basic_machine=m68k-apollo os=-sysv ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; aux) basic_machine=m68k-apple os=-aux @@ -297,6 +343,10 @@ case $basic_machine in encore | umax | mmax) basic_machine=ns32k-encore ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; fx2800) basic_machine=i860-alliant ;; @@ -315,6 +365,14 @@ case $basic_machine in basic_machine=h8300-hitachi os=-hms ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; harris) basic_machine=m88k-harris os=-sysv3 @@ -330,13 +388,30 @@ case $basic_machine in basic_machine=m68k-hp os=-hpux ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; - hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) @@ -345,9 +420,16 @@ case $basic_machine in hppa-next) os=-nextstep3 ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; i370-ibm* | ibm*) basic_machine=i370-ibm - os=-mvs ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i[34567]86v32) @@ -366,6 +448,25 @@ case $basic_machine in basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + i386-go32 | go32) + basic_machine=i386-unknown + os=-go32 + ;; + i386-mingw32 | mingw32) + basic_machine=i386-unknown + os=-mingw32 + ;; + i386-qnx | qnx) + basic_machine=i386-qnx + ;; iris | iris4d) basic_machine=mips-sgi case $os in @@ -394,6 +495,10 @@ case $basic_machine in miniframe) basic_machine=m68000-convergent ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; mipsel*-linux*) basic_machine=mipsel-unknown os=-linux-gnu @@ -408,10 +513,30 @@ case $basic_machine in mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + msdos) + basic_machine=i386-unknown + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos @@ -424,6 +549,10 @@ case $basic_machine in basic_machine=mips-sony os=-newsos ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; next | m*-next ) basic_machine=m68k-next case $os in @@ -449,9 +578,25 @@ case $basic_machine in basic_machine=i960-intel os=-nindy ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; np1) basic_machine=np1-gould ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 @@ -469,19 +614,19 @@ case $basic_machine in pc532 | pc532-*) basic_machine=ns32k-pc532 ;; - pentium | p5 | k5 | nexen) + pentium | p5 | k5 | k6 | nexen) basic_machine=i586-pc ;; - pentiumpro | p6 | k6 | 6x86) + pentiumpro | p6 | 6x86) basic_machine=i686-pc ;; pentiumii | pentium2) basic_machine=i786-pc ;; - pentium-* | p5-* | k5-* | nexen-*) + pentium-* | p5-* | k5-* | k6-* | nexen-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - pentiumpro-* | p6-* | k6-* | 6x86-*) + pentiumpro-* | p6-* | 6x86-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) @@ -505,12 +650,20 @@ case $basic_machine in ps2) basic_machine=i386-ibm ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; sequent) basic_machine=i386-sequent ;; @@ -518,6 +671,10 @@ case $basic_machine in basic_machine=sh-hitachi os=-hms ;; + sparclite-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; sps7) basic_machine=m68k-bull os=-sysv2 @@ -525,6 +682,13 @@ case $basic_machine in spur) basic_machine=spur-unknown ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; sun2) basic_machine=m68000-sun ;; @@ -569,6 +733,10 @@ case $basic_machine in basic_machine=i386-sequent os=-dynix ;; + t3e) + basic_machine=t3e-cray + os=-unicos + ;; tx39) basic_machine=mipstx39-unknown ;; @@ -586,6 +754,10 @@ case $basic_machine in basic_machine=a29k-nyu os=-sym1 ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; vaxv) basic_machine=vax-dec os=-sysv @@ -609,6 +781,14 @@ case $basic_machine in basic_machine=a29k-wrs os=-vxworks ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; xmp) basic_machine=xmp-cray os=-unicos @@ -616,6 +796,10 @@ case $basic_machine in xps | xps100) basic_machine=xps100-honeywell ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; none) basic_machine=none-none os=-none @@ -623,6 +807,15 @@ case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; mips) if [ x$os = x-linux-gnu ]; then basic_machine=mips-unknown @@ -645,7 +838,7 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; - sparc) + sparc | sparcv9) basic_machine=sparc-sun ;; cydra) @@ -657,6 +850,16 @@ case $basic_machine in orion105) basic_machine=clipper-highlevel ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + c4x*) + basic_machine=c4x-none + os=-coff + ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 @@ -710,13 +913,21 @@ case $os in | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos*) + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -rhapsody* | -opened* | -openstep* | -oskit*) # Remember, each alternative MUST END IN *, to match a version number. ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; @@ -726,6 +937,9 @@ case $os in -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; + -opened*) + os=-openedition + ;; -osfrose*) os=-osfrose ;; @@ -741,6 +955,9 @@ case $os in -acis*) os=-aos ;; + -386bsd) + os=-bsd + ;; -ctix* | -uts*) os=-sysv ;; @@ -760,6 +977,9 @@ case $os in -oss*) os=-sysv3 ;; + -qnx) + os=-qnx4 + ;; -svr4) os=-sysv4 ;; @@ -772,9 +992,18 @@ case $os in # This must come after -sysvr4. -sysv*) ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; -xenix) os=-xenix ;; + -*mint | -*MiNT) + os=-mint + ;; -none) ;; *) @@ -800,6 +1029,9 @@ case $basic_machine in *-acorn) os=-riscix1.2 ;; + arm*-rebel) + os=-linux + ;; arm*-semi) os=-aout ;; @@ -821,6 +1053,15 @@ case $basic_machine in # default. # os=-sunos4 ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; @@ -833,6 +1074,15 @@ case $basic_machine in *-ibm) os=-aix ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; *-hp) os=-hpux ;; @@ -896,6 +1146,18 @@ case $basic_machine in f301-fujitsu) os=-uxpv ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; *) os=-none ;; @@ -917,9 +1179,15 @@ case $basic_machine in -aix*) vendor=ibm ;; + -beos*) + vendor=be + ;; -hpux*) vendor=hp ;; + -mpeix*) + vendor=hp + ;; -hiux*) vendor=hitachi ;; @@ -935,7 +1203,7 @@ case $basic_machine in -genix*) vendor=ns ;; - -mvs*) + -mvs* | -opened*) vendor=ibm ;; -ptx*) @@ -947,6 +1215,15 @@ case $basic_machine in -aux*) vendor=apple ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -*MiNT) + vendor=atari + ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; diff --git a/configure b/configure index c022376..d57c721 100755 --- a/configure +++ b/configure @@ -515,10 +515,11 @@ echo " Use \`$progname --help' to show usage.") >&2 && exit 1 ;; case "$val" in lockf ) val=lockf ;; flock ) val=flock ;; - file ) val=file ;; + file | dot ) val=file ;; + locking ) val=locking ;; * ) (echo "$progname: Usage error:" echo " " "The \`--$optname' option must have one of these values: - \`lockf', \`flock', or \`file'." + \`lockf', \`flock', \`file', \`locking', or \`mmdf'." echo " Use \`$progname --help' to show usage.") >&2 && exit 1 ;; esac eval "$opt=\"$val\"" @@ -830,7 +831,7 @@ echo " Use \`$progname --help' to show usage.") >&2 && exit 1 fi echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:834: checking whether ln -s works" >&5 +echo "configure:835: checking whether ln -s works" >&5 rm -f conftestdata if ln -s X conftestdata 2>/dev/null @@ -848,7 +849,7 @@ else fi -for dir in lisp etc man info; do +for dir in lisp etc man info tests; do if test ! -d "$dir" ; then echo Making symbolic link to "$srcdir/$dir" ${LN_S} "$srcdir/$dir" "$dir" @@ -1075,7 +1076,7 @@ EOF echo $ac_n "checking "host system type"""... $ac_c" 1>&6 -echo "configure:1079: checking "host system type"" >&5 +echo "configure:1080: checking "host system type"" >&5 internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'` canonical=`${CONFIG_SHELL-/bin/sh} $srcdir/config.sub "$internal_configuration"` configuration=`echo "$configuration" | sed 's/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/'` @@ -1569,7 +1570,7 @@ xe_save_CFLAGS="$CFLAGS" # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1573: checking for $ac_word" >&5 +echo "configure:1574: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1596,7 +1597,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1600: checking for $ac_word" >&5 +echo "configure:1601: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1644,7 +1645,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1648: checking for $ac_word" >&5 +echo "configure:1649: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1673,7 +1674,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1677: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1678: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS' @@ -1686,12 +1687,12 @@ cross_compiling=no cat > conftest.$ac_ext << EOF -#line 1690 "configure" +#line 1691 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1719,19 +1720,19 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1723: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1724: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1728: checking whether we are using GNU C" >&5 +echo "configure:1729: checking whether we are using GNU C" >&5 cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1749,7 +1750,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1753: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1754: checking whether ${CC-cc} accepts -g" >&5 echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then @@ -1782,7 +1783,7 @@ if test "$with_gcc" = "no" -a "$GCC" = "yes"; then # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1786: checking for $ac_word" >&5 +echo "configure:1787: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1809,7 +1810,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1813: checking for $ac_word" >&5 +echo "configure:1814: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1857,7 +1858,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1861: checking for $ac_word" >&5 +echo "configure:1862: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1886,7 +1887,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1890: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1891: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS' @@ -1899,12 +1900,12 @@ cross_compiling=no cat > conftest.$ac_ext << EOF -#line 1903 "configure" +#line 1904 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1932,19 +1933,19 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1936: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1937: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1941: checking whether we are using GNU C" >&5 +echo "configure:1942: checking whether we are using GNU C" >&5 cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1949: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1962,7 +1963,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1966: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1967: checking whether ${CC-cc} accepts -g" >&5 echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then @@ -1995,7 +1996,7 @@ elif test "$with_gcc" = "yes" -a "$GCC" != "yes" ; then # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1999: checking for $ac_word" >&5 +echo "configure:2000: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2022,7 +2023,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2026: checking for $ac_word" >&5 +echo "configure:2027: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2070,7 +2071,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2074: checking for $ac_word" >&5 +echo "configure:2075: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2099,7 +2100,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:2103: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:2104: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS' @@ -2112,12 +2113,12 @@ cross_compiling=no cat > conftest.$ac_ext << EOF -#line 2116 "configure" +#line 2117 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:2121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -2145,19 +2146,19 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:2149: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2150: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:2154: checking whether we are using GNU C" >&5 +echo "configure:2155: checking whether we are using GNU C" >&5 cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2162: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -2175,7 +2176,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:2179: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:2180: checking whether ${CC-cc} accepts -g" >&5 echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then @@ -2212,7 +2213,7 @@ test -n "$CPP" -a -d "$CPP" && CPP= test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:2216: checking how to run the C preprocessor" >&5 +echo "configure:2217: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2225,13 +2226,13 @@ if test -z "$CPP"; then # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2236: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -2242,13 +2243,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2253: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -2259,13 +2260,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2269: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2270: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -2290,9 +2291,9 @@ echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for AIX""... $ac_c" 1>&6 -echo "configure:2294: checking for AIX" >&5 +echo "configure:2295: checking for AIX" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2323: checking for GNU libc" >&5 +echo "configure:2324: checking for GNU libc" >&5 cat > conftest.$ac_ext < int main() { @@ -2333,7 +2334,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:2337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* have_glibc=yes else @@ -2355,7 +2356,7 @@ EOF cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:2372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else @@ -2540,6 +2541,12 @@ configure___ mail_use_lockf=yes configure___ mail_use_lockf=no #endif +#ifdef MAIL_USE_LOCKING +configure___ mail_use_locking=yes +#else +configure___ mail_use_locking=no +#endif + #ifdef HAVE_WIN32_PROCESSES configure___ win32_processes=yes #else @@ -2557,6 +2564,12 @@ rm $tempcname test "$extra_verbose" = "yes" && \ for var in libs_machine libs_system libs_termcap libs_standard objects_machine objects_system c_switch_machine c_switch_system ld_switch_machine ld_switch_system unexec ld_switch_shared ld lib_gcc ld_text_start_addr start_files ordinary_link have_terminfo mail_use_flock mail_use_lockf; do eval "echo \"$var = '\$$var'\""; done && echo "" +case "$opsys" in mingw*) mingw_include=`eval "gcc -print-file-name=libc.a"` ; + mingw_include=`eval "dirname $mingw_include"` ; + mingw_include="-I$mingw_include/../include/mingw32" ; + c_switch_system="$c_switch_system $mingw_include" && if test "$extra_verbose" = "yes"; then echo " Appending \"$mingw_include\" to \$c_switch_system"; fi ;; +esac + test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc" test "$__DECC" = "yes" && c_switch_site="$c_switch_site -std" && if test "$extra_verbose" = "yes"; then echo " Appending \"-std\" to \$c_switch_site"; fi @@ -2641,7 +2654,7 @@ test -n "$unexec" && extra_objs="$extra_objs $unexec" && if test "$ext fi echo $ac_n "checking for dynodump""... $ac_c" 1>&6 -echo "configure:2645: checking for dynodump" >&5 +echo "configure:2658: checking for dynodump" >&5 if test "$unexec" != "unexsol2.o"; then echo "$ac_t""no" 1>&6 else @@ -2679,12 +2692,12 @@ if test "$unexec" = "unexaix.o"; then done echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6 -echo "configure:2683: checking for terminateAndUnload in -lC" >&5 +echo "configure:2696: checking for terminateAndUnload in -lC" >&5 ac_lib_var=`echo C'_'terminateAndUnload | sed 'y%./+-%__p_%'` xe_check_libs=" -lC " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2799,7 +2812,7 @@ fi if test "$add_runtime_path" = "yes"; then echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6 -echo "configure:2803: checking "for runtime libraries flag"" >&5 +echo "configure:2816: checking "for runtime libraries flag"" >&5 case "$opsys" in sol2 ) dash_r="-R" ;; decosf* | linux* | irix*) dash_r="-rpath " ;; @@ -2821,14 +2834,14 @@ if test "$GCC" = "yes"; then done fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* dash_r="$try_dash_r" else @@ -2930,10 +2943,10 @@ else fi after_morecore_hook_exists=yes echo $ac_n "checking for malloc_get_state""... $ac_c" 1>&6 -echo "configure:2934: checking for malloc_get_state" >&5 +echo "configure:2947: checking for malloc_get_state" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_malloc_get_state=yes" else @@ -2976,10 +2989,10 @@ doug_lea_malloc=no fi echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6 -echo "configure:2980: checking for malloc_set_state" >&5 +echo "configure:2993: checking for malloc_set_state" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_malloc_set_state=yes" else @@ -3022,16 +3035,16 @@ doug_lea_malloc=no fi echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6 -echo "configure:3026: checking whether __after_morecore_hook exists" >&5 +echo "configure:3039: checking whether __after_morecore_hook exists" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -3090,7 +3103,7 @@ fi # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3094: checking for $ac_word" >&5 +echo "configure:3107: checking for $ac_word" >&5 if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -3145,7 +3158,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:3149: checking for a BSD compatible install" >&5 +echo "configure:3162: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" @@ -3199,7 +3212,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3203: checking for $ac_word" >&5 +echo "configure:3216: checking for $ac_word" >&5 if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. @@ -3231,15 +3244,15 @@ for ac_hdr in mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3235: checking for $ac_hdr" >&5 +echo "configure:3248: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3243: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3256: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3272,15 +3285,15 @@ for ac_hdr in utime.h locale.h libgen.h fcntl.h ulimit.h cygwin/version.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3276: checking for $ac_hdr" >&5 +echo "configure:3289: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3297: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3313,15 +3326,15 @@ for ac_hdr in kstat.h sys/pstat.h inttypes.h sys/un.h a.out.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3317: checking for $ac_hdr" >&5 +echo "configure:3330: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3351,10 +3364,10 @@ fi done echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:3355: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:3368: checking for sys/wait.h that is POSIX.1 compatible" >&5 cat > conftest.$ac_ext < #include @@ -3370,7 +3383,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:3374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3387: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -3394,10 +3407,10 @@ EOF fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3398: checking for ANSI C header files" >&5 +echo "configure:3411: checking for ANSI C header files" >&5 cat > conftest.$ac_ext < #include @@ -3405,7 +3418,7 @@ cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3409: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3422,7 +3435,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3440,7 +3453,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3458,7 +3471,7 @@ fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -3469,7 +3482,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:3473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:3486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else @@ -3495,10 +3508,10 @@ EOF fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:3499: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:3512: checking whether time.h and sys/time.h may both be included" >&5 cat > conftest.$ac_ext < #include @@ -3507,7 +3520,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:3511: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -3531,10 +3544,10 @@ EOF fi echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 -echo "configure:3535: checking for sys_siglist declaration in signal.h or unistd.h" >&5 +echo "configure:3548: checking for sys_siglist declaration in signal.h or unistd.h" >&5 cat > conftest.$ac_ext < #include @@ -3546,7 +3559,7 @@ int main() { char *msg = *(sys_siglist + 1); ; return 0; } EOF -if { (eval echo configure:3550: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3563: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else @@ -3571,9 +3584,9 @@ fi echo $ac_n "checking for struct utimbuf""... $ac_c" 1>&6 -echo "configure:3575: checking for struct utimbuf" >&5 +echo "configure:3588: checking for struct utimbuf" >&5 cat > conftest.$ac_ext < @@ -3592,7 +3605,7 @@ int main() { static struct utimbuf x; x.actime = x.modtime; ; return 0; } EOF -if { (eval echo configure:3596: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 { test "$extra_verbose" = "yes" && cat << \EOF @@ -3612,10 +3625,10 @@ fi rm -f conftest* echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:3616: checking return type of signal handlers" >&5 +echo "configure:3629: checking return type of signal handlers" >&5 cat > conftest.$ac_ext < #include @@ -3632,7 +3645,7 @@ int main() { int i; ; return 0; } EOF -if { (eval echo configure:3636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3649: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -3654,10 +3667,10 @@ EOF echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3658: checking for size_t" >&5 +echo "configure:3671: checking for size_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3688,10 +3701,10 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:3692: checking for pid_t" >&5 +echo "configure:3705: checking for pid_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3722,10 +3735,10 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:3726: checking for uid_t in sys/types.h" >&5 +echo "configure:3739: checking for uid_t in sys/types.h" >&5 cat > conftest.$ac_ext < EOF @@ -3761,10 +3774,10 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:3765: checking for mode_t" >&5 +echo "configure:3778: checking for mode_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3795,10 +3808,10 @@ EOF fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3799: checking for off_t" >&5 +echo "configure:3812: checking for off_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3829,10 +3842,10 @@ EOF fi echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 -echo "configure:3833: checking for ssize_t" >&5 +echo "configure:3846: checking for ssize_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3864,9 +3877,9 @@ fi echo $ac_n "checking for struct timeval""... $ac_c" 1>&6 -echo "configure:3868: checking for struct timeval" >&5 +echo "configure:3881: checking for struct timeval" >&5 cat > conftest.$ac_ext < @@ -3882,7 +3895,7 @@ int main() { static struct timeval x; x.tv_sec = x.tv_usec; ; return 0; } EOF -if { (eval echo configure:3886: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3899: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 HAVE_TIMEVAL=yes @@ -3904,10 +3917,10 @@ fi rm -f conftest* echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:3908: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:3921: checking whether struct tm is in sys/time.h or time.h" >&5 cat > conftest.$ac_ext < #include @@ -3915,7 +3928,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:3919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3932: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -3939,10 +3952,10 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:3943: checking for tm_zone in struct tm" >&5 +echo "configure:3956: checking for tm_zone in struct tm" >&5 cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -3950,7 +3963,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:3954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -3973,10 +3986,10 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:3977: checking for tzname" >&5 +echo "configure:3990: checking for tzname" >&5 cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -3986,7 +3999,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:3990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -4012,10 +4025,10 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:4016: checking for working const" >&5 +echo "configure:4029: checking for working const" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4081: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -4089,7 +4102,7 @@ fi echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:4093: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:4106: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` cat > conftestmake <<\EOF @@ -4114,12 +4127,12 @@ fi echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4118: checking whether byte ordering is bigendian" >&5 +echo "configure:4131: checking whether byte ordering is bigendian" >&5 ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4130,11 +4143,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4147: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4145,7 +4158,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:4149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4162: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4162,7 +4175,7 @@ fi rm -f conftest* if test $ac_cv_c_bigendian = unknown; then cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_bigendian=no else @@ -4202,10 +4215,10 @@ fi echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:4206: checking size of short" >&5 +echo "configure:4219: checking size of short" >&5 cat > conftest.$ac_ext < main() @@ -4216,7 +4229,7 @@ main() exit(0); } EOF -if { (eval echo configure:4220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_short=`cat conftestval` else @@ -4244,10 +4257,10 @@ if test "$ac_cv_sizeof_short" = 0; then exit 1 fi echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:4248: checking size of int" >&5 +echo "configure:4261: checking size of int" >&5 cat > conftest.$ac_ext < main() @@ -4258,7 +4271,7 @@ main() exit(0); } EOF -if { (eval echo configure:4262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_int=`cat conftestval` else @@ -4280,10 +4293,10 @@ EOF echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:4284: checking size of long" >&5 +echo "configure:4297: checking size of long" >&5 cat > conftest.$ac_ext < main() @@ -4294,7 +4307,7 @@ main() exit(0); } EOF -if { (eval echo configure:4298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_long=`cat conftestval` else @@ -4316,10 +4329,10 @@ EOF echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:4320: checking size of long long" >&5 +echo "configure:4333: checking size of long long" >&5 cat > conftest.$ac_ext < main() @@ -4330,7 +4343,7 @@ main() exit(0); } EOF -if { (eval echo configure:4334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_long_long=`cat conftestval` else @@ -4352,10 +4365,10 @@ EOF echo $ac_n "checking size of void *""... $ac_c" 1>&6 -echo "configure:4356: checking size of void *" >&5 +echo "configure:4369: checking size of void *" >&5 cat > conftest.$ac_ext < main() @@ -4366,7 +4379,7 @@ main() exit(0); } EOF -if { (eval echo configure:4370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_void_p=`cat conftestval` else @@ -4389,7 +4402,7 @@ EOF echo $ac_n "checking for long file names""... $ac_c" 1>&6 -echo "configure:4393: checking for long file names" >&5 +echo "configure:4406: checking for long file names" >&5 ac_cv_sys_long_file_names=yes # Test for long file names in all the places we know might matter: @@ -4435,10 +4448,10 @@ fi echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:4439: checking for sin" >&5 +echo "configure:4452: checking for sin" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -4479,12 +4492,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 -echo "configure:4483: checking for sin in -lm" >&5 +echo "configure:4496: checking for sin in -lm" >&5 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'` xe_check_libs=" -lm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4539,14 +4552,14 @@ EOF cat > conftest.$ac_ext < int main() { return atanh(1.0) + asinh(1.0) + acosh(1.0); ; return 0; } EOF -if { (eval echo configure:4550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_INVERSE_HYPERBOLIC @@ -4563,37 +4576,115 @@ fi rm -f conftest* echo "checking type of mail spool file locking" 1>&6 -echo "configure:4567: checking type of mail spool file locking" >&5 +echo "configure:4580: checking type of mail spool file locking" >&5 +for ac_func in lockf flock +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:4584: checking for $ac_func" >&5 + +cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:4610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + { test "$extra_verbose" = "yes" && cat << EOF + Defining $ac_tr_func +EOF +cat >> confdefs.h <&6 +fi +done + test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf +test -z "$mail_locking" -a "$mail_use_locking" = "yes" && mail_locking=locking if test "$mail_locking" = "lockf"; then { test "$extra_verbose" = "yes" && cat << \EOF - Defining REAL_MAIL_USE_LOCKF + Defining MAIL_LOCK_LOCKF EOF cat >> confdefs.h <<\EOF -#define REAL_MAIL_USE_LOCKF 1 +#define MAIL_LOCK_LOCKF 1 EOF } elif test "$mail_locking" = "flock"; then { test "$extra_verbose" = "yes" && cat << \EOF - Defining REAL_MAIL_USE_FLOCK + Defining MAIL_LOCK_FLOCK EOF cat >> confdefs.h <<\EOF -#define REAL_MAIL_USE_FLOCK 1 +#define MAIL_LOCK_FLOCK 1 +EOF +} + +elif test "$mail_locking" = "locking"; then { test "$extra_verbose" = "yes" && cat << \EOF + Defining MAIL_LOCK_LOCKING +EOF +cat >> confdefs.h <<\EOF +#define MAIL_LOCK_LOCKING 1 +EOF +} + +else mail_locking="dot-locking"; { test "$extra_verbose" = "yes" && cat << \EOF + Defining MAIL_LOCK_DOT +EOF +cat >> confdefs.h <<\EOF +#define MAIL_LOCK_DOT 1 EOF } -else mail_locking="dot-locking" fi +test "$mail_locking" = "lockf" -a "$ac_cv_func_lockf" != "yes" && \ + { echo "Error:" "lockf mail locking requested but not available." >&2; exit 1; } +test "$mail_locking" = "flock" -a "$ac_cv_func_flock" != "yes" && \ + { echo "Error:" "flock mail locking requested but not available." >&2; exit 1; } +test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \ + { echo "Error:" "locking mail locking requested but not available." >&2; exit 1; } case "$opsys" in decosf*) echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6 -echo "configure:4592: checking for cma_open in -lpthreads" >&5 +echo "configure:4683: checking for cma_open in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'cma_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lpthreads " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4640,7 +4731,7 @@ fi esac echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6 -echo "configure:4644: checking whether the -xildoff compiler flag is required" >&5 +echo "configure:4735: checking whether the -xildoff compiler flag is required" >&5 if ${CC-cc} '-###' -xildon no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then echo "$ac_t""no" 1>&6; @@ -4651,7 +4742,7 @@ fi if test "$opsys" = "sol2" && test "$OS_RELEASE" -ge 56; then echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6 -echo "configure:4655: checking for \"-z ignore\" linker flag" >&5 +echo "configure:4746: checking for \"-z ignore\" linker flag" >&5 case "`ld -h 2>&1`" in *-z\ ignore\|record* ) echo "$ac_t""yes" 1>&6 ld_switch_site="-z ignore $ld_switch_site" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-z ignore\" to \$ld_switch_site"; fi ;; @@ -4661,7 +4752,7 @@ fi echo "checking "for specified window system"" 1>&6 -echo "configure:4665: checking "for specified window system"" >&5 +echo "configure:4756: checking "for specified window system"" >&5 if test "$with_x11" != "no"; then test "$x_includes $x_libraries" != "NONE NONE" && \ @@ -4694,7 +4785,7 @@ if test "$with_x11" != "no"; then # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:4698: checking for X" >&5 +echo "configure:4789: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -4754,12 +4845,12 @@ if test "$ac_x_includes" = NO; then # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4763: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4828,14 +4919,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -4944,17 +5035,17 @@ else case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:4948: checking whether -R must be followed by a space" >&5 +echo "configure:5039: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -4970,14 +5061,14 @@ rm -f conftest* else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -5013,12 +5104,12 @@ ac_cv_lib_dnet_dnet_ntoa=no else echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:5017: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:5108: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` xe_check_libs=" -ldnet " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5053,12 +5144,12 @@ fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:5057: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:5148: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` xe_check_libs=" -ldnet_stub " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5098,10 +5189,10 @@ fi # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:5102: checking for gethostbyname" >&5 +echo "configure:5193: checking for gethostbyname" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -5145,12 +5236,12 @@ fi if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:5149: checking for gethostbyname in -lnsl" >&5 +echo "configure:5240: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` xe_check_libs=" -lnsl " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5256: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5191,10 +5282,10 @@ fi # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:5195: checking for connect" >&5 +echo "configure:5286: checking for connect" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -5240,12 +5331,12 @@ fi xe_msg_checking="for connect in -lsocket" test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:5244: checking "$xe_msg_checking"" >&5 +echo "configure:5335: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` xe_check_libs=" -lsocket $X_EXTRA_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5280,10 +5371,10 @@ fi # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:5284: checking for remove" >&5 +echo "configure:5375: checking for remove" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -5327,12 +5418,12 @@ fi if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:5331: checking for remove in -lposix" >&5 +echo "configure:5422: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` xe_check_libs=" -lposix " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5367,10 +5458,10 @@ fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:5371: checking for shmat" >&5 +echo "configure:5462: checking for shmat" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -5414,12 +5505,12 @@ fi if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:5418: checking for shmat in -lipc" >&5 +echo "configure:5509: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` xe_check_libs=" -lipc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5466,12 +5557,12 @@ fi xe_msg_checking="for IceConnectionNumber in -lICE" test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:5470: checking "$xe_msg_checking"" >&5 +echo "configure:5561: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` xe_check_libs=" -lICE $X_EXTRA_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5651,7 +5742,7 @@ EOF echo "checking for X defines extracted by xmkmf" 1>&6 -echo "configure:5655: checking for X defines extracted by xmkmf" >&5 +echo "configure:5746: checking for X defines extracted by xmkmf" >&5 rm -fr conftestdir if mkdir conftestdir; then cd conftestdir @@ -5683,15 +5774,15 @@ EOF ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6 -echo "configure:5687: checking for X11/Intrinsic.h" >&5 +echo "configure:5778: checking for X11/Intrinsic.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5695: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5715,12 +5806,12 @@ fi echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:5719: checking for XOpenDisplay in -lX11" >&5 +echo "configure:5810: checking for XOpenDisplay in -lX11" >&5 ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5756,12 +5847,12 @@ fi xe_msg_checking="for XGetFontProperty in -lX11" test -n "-b i486-linuxaout" && xe_msg_checking="$xe_msg_checking using extra libs -b i486-linuxaout" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:5760: checking "$xe_msg_checking"" >&5 +echo "configure:5851: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo X11'_'XGetFontProperty | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 -b i486-linuxaout" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5799,12 +5890,12 @@ fi echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6 -echo "configure:5803: checking for XShapeSelectInput in -lXext" >&5 +echo "configure:5894: checking for XShapeSelectInput in -lXext" >&5 ac_lib_var=`echo Xext'_'XShapeSelectInput | sed 'y%./+-%__p_%'` xe_check_libs=" -lXext " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5838,12 +5929,12 @@ fi echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6 -echo "configure:5842: checking for XtOpenDisplay in -lXt" >&5 +echo "configure:5933: checking for XtOpenDisplay in -lXt" >&5 ac_lib_var=`echo Xt'_'XtOpenDisplay | sed 'y%./+-%__p_%'` xe_check_libs=" -lXt " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5877,14 +5968,14 @@ fi echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6 -echo "configure:5881: checking the version of X11 being used" >&5 +echo "configure:5972: checking the version of X11 being used" >&5 cat > conftest.$ac_ext < int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; } EOF -if { (eval echo configure:5888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:5979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ./conftest foobar; x11_release=$? else @@ -5909,15 +6000,15 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5913: checking for $ac_hdr" >&5 +echo "configure:6004: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6012: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5948,7 +6039,7 @@ done echo $ac_n "checking for XFree86""... $ac_c" 1>&6 -echo "configure:5952: checking for XFree86" >&5 +echo "configure:6043: checking for XFree86" >&5 if test -d "/usr/X386/include" -o \ -f "/etc/XF86Config" -o \ -f "/etc/X11/XF86Config" -o \ @@ -5968,12 +6059,12 @@ EOF test -z "$with_xmu" && { echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6 -echo "configure:5972: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 +echo "configure:6063: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 ac_lib_var=`echo Xmu'_'XmuReadBitmapDataFromFile | sed 'y%./+-%__p_%'` xe_check_libs=" -lXmu " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6023,19 +6114,19 @@ EOF echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6 -echo "configure:6027: checking for main in -lXbsd" >&5 +echo "configure:6118: checking for main in -lXbsd" >&5 ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lXbsd " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6072,22 +6163,22 @@ fi fi if test "$with_msw" != "no"; then echo "checking for MS-Windows" 1>&6 -echo "configure:6076: checking for MS-Windows" >&5 +echo "configure:6167: checking for MS-Windows" >&5 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6 -echo "configure:6079: checking for main in -lgdi32" >&5 +echo "configure:6170: checking for main in -lgdi32" >&5 ac_lib_var=`echo gdi32'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lgdi32 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6153,12 +6244,12 @@ EOF fi fi cat > conftest.$ac_ext < int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; } EOF -if { (eval echo configure:6162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:6253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_MSG_SELECT @@ -6234,7 +6325,7 @@ case "$x_libraries" in *X11R4* ) esac echo "checking for WM_COMMAND option" 1>&6 -echo "configure:6238: checking for WM_COMMAND option" >&5; +echo "configure:6329: checking for WM_COMMAND option" >&5; if test "$with_wmcommand" != "no"; then { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_WMCOMMAND @@ -6249,15 +6340,15 @@ fi test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no test -z "$with_xauth" && { ac_safe=`echo "X11/Xauth.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xauth.h""... $ac_c" 1>&6 -echo "configure:6253: checking for X11/Xauth.h" >&5 +echo "configure:6344: checking for X11/Xauth.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6261: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6352: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6280,12 +6371,12 @@ fi } test -z "$with_xauth" && { echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6 -echo "configure:6284: checking for XauGetAuthByAddr in -lXau" >&5 +echo "configure:6375: checking for XauGetAuthByAddr in -lXau" >&5 ac_lib_var=`echo Xau'_'XauGetAuthByAddr | sed 'y%./+-%__p_%'` xe_check_libs=" -lXau " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6341,15 +6432,15 @@ if test "$with_tooltalk" != "no" ; then for dir in "" "Tt/" "desktop/" ; do ac_safe=`echo "${dir}tt_c.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ${dir}tt_c.h""... $ac_c" 1>&6 -echo "configure:6345: checking for ${dir}tt_c.h" >&5 +echo "configure:6436: checking for ${dir}tt_c.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6353: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6444: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6385,12 +6476,12 @@ if test "$with_tooltalk" != "no" ; then xe_msg_checking="for tt_message_create in -ltt" test -n "$extra_libs" && xe_msg_checking="$xe_msg_checking using extra libs $extra_libs" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6389: checking "$xe_msg_checking"" >&5 +echo "configure:6480: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo tt'_'tt_message_create | sed 'y%./+-%__p_%'` xe_check_libs=" -ltt $extra_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6458,15 +6549,15 @@ fi test -z "$with_cde" && { ac_safe=`echo "Dt/Dt.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Dt/Dt.h""... $ac_c" 1>&6 -echo "configure:6462: checking for Dt/Dt.h" >&5 +echo "configure:6553: checking for Dt/Dt.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6561: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6489,12 +6580,12 @@ fi } test -z "$with_cde" && { echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6 -echo "configure:6493: checking for DtDndDragStart in -lDtSvc" >&5 +echo "configure:6584: checking for DtDndDragStart in -lDtSvc" >&5 ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'` xe_check_libs=" -lDtSvc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6574,7 +6665,7 @@ EOF fi echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6 -echo "configure:6578: checking if drag and drop API is needed" >&5 +echo "configure:6669: checking if drag and drop API is needed" >&5 if test "$with_dragndrop" != "no" ; then if test -n "$dragndrop_proto" ; then with_dragndrop=yes @@ -6595,18 +6686,18 @@ EOF fi echo "checking for LDAP" 1>&6 -echo "configure:6599: checking for LDAP" >&5 +echo "configure:6690: checking for LDAP" >&5 test -z "$with_ldap" && { ac_safe=`echo "ldap.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ldap.h""... $ac_c" 1>&6 -echo "configure:6602: checking for ldap.h" >&5 +echo "configure:6693: checking for ldap.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6610: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6629,15 +6720,15 @@ fi } test -z "$with_ldap" && { ac_safe=`echo "lber.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for lber.h""... $ac_c" 1>&6 -echo "configure:6633: checking for lber.h" >&5 +echo "configure:6724: checking for lber.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6641: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6732: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6661,12 +6752,12 @@ fi if test "$with_ldap" != "no"; then echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6 -echo "configure:6665: checking for ldap_search in -lldap" >&5 +echo "configure:6756: checking for ldap_search in -lldap" >&5 ac_lib_var=`echo ldap'_'ldap_search | sed 'y%./+-%__p_%'` xe_check_libs=" -lldap " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6702,12 +6793,12 @@ fi xe_msg_checking="for ldap_open in -lldap" test -n "-llber" && xe_msg_checking="$xe_msg_checking using extra libs -llber" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6706: checking "$xe_msg_checking"" >&5 +echo "configure:6797: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lldap -llber" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6813: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6743,12 +6834,12 @@ fi xe_msg_checking="for ldap_open in -lldap" test -n "-llber -lkrb" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6747: checking "$xe_msg_checking"" >&5 +echo "configure:6838: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lldap -llber -lkrb" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6784,12 +6875,12 @@ fi xe_msg_checking="for ldap_open in -lldap" test -n "-llber -lkrb -ldes" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb -ldes" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6788: checking "$xe_msg_checking"" >&5 +echo "configure:6879: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lldap -llber -lkrb -ldes" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6851,10 +6942,10 @@ EOF for ac_func in ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6855: checking for $ac_func" >&5 +echo "configure:6946: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6909,15 +7000,15 @@ fi if test "$window_system" != "none"; then echo "checking for graphics libraries" 1>&6 -echo "configure:6913: checking for graphics libraries" >&5 +echo "configure:7004: checking for graphics libraries" >&5 xpm_problem="" if test -z "$with_xpm"; then echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6 -echo "configure:6918: checking for Xpm - no older than 3.4f" >&5 +echo "configure:7009: checking for Xpm - no older than 3.4f" >&5 xe_check_libs=-lXpm cat > conftest.$ac_ext < int main(int c, char **v) { @@ -6925,7 +7016,7 @@ echo "configure:6918: checking for Xpm - no older than 3.4f" >&5 XpmIncludeVersion != XpmLibraryVersion() ? 1 : XpmIncludeVersion < 30406 ? 2 : 0 ;} EOF -if { (eval echo configure:6929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:7020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ./conftest dummy_arg; xpm_status=$?; if test "$xpm_status" = "0"; then @@ -6967,17 +7058,17 @@ EOF libs_x="-lXpm $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXpm\" to \$libs_x"; fi echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6 -echo "configure:6971: checking for \"FOR_MSW\" xpm" >&5 +echo "configure:7062: checking for \"FOR_MSW\" xpm" >&5 xe_check_libs=-lXpm cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* xpm_for_msw=no else @@ -7003,15 +7094,15 @@ EOF test -z "$with_xface" && { ac_safe=`echo "compface.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for compface.h""... $ac_c" 1>&6 -echo "configure:7007: checking for compface.h" >&5 +echo "configure:7098: checking for compface.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7015: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7106: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7034,12 +7125,12 @@ fi } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:7038: checking for UnGenFace in -lcompface" >&5 +echo "configure:7129: checking for UnGenFace in -lcompface" >&5 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'` xe_check_libs=" -lcompface " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7102,12 +7193,12 @@ EOF if test "$with_png $with_tiff" != "no no"; then echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6 -echo "configure:7106: checking for inflate in -lc" >&5 +echo "configure:7197: checking for inflate in -lc" >&5 ac_lib_var=`echo c'_'inflate | sed 'y%./+-%__p_%'` xe_check_libs=" -lc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7137,12 +7228,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6 -echo "configure:7141: checking for inflate in -lz" >&5 +echo "configure:7232: checking for inflate in -lz" >&5 ac_lib_var=`echo z'_'inflate | sed 'y%./+-%__p_%'` xe_check_libs=" -lz " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7172,12 +7263,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6 -echo "configure:7176: checking for inflate in -lgz" >&5 +echo "configure:7267: checking for inflate in -lgz" >&5 ac_lib_var=`echo gz'_'inflate | sed 'y%./+-%__p_%'` xe_check_libs=" -lgz " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7218,15 +7309,15 @@ fi test -z "$with_jpeg" && { ac_safe=`echo "jpeglib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for jpeglib.h""... $ac_c" 1>&6 -echo "configure:7222: checking for jpeglib.h" >&5 +echo "configure:7313: checking for jpeglib.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7249,12 +7340,12 @@ fi } test -z "$with_jpeg" && { echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6 -echo "configure:7253: checking for jpeg_destroy_decompress in -ljpeg" >&5 +echo "configure:7344: checking for jpeg_destroy_decompress in -ljpeg" >&5 ac_lib_var=`echo jpeg'_'jpeg_destroy_decompress | sed 'y%./+-%__p_%'` xe_check_libs=" -ljpeg " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7301,10 +7392,10 @@ EOF png_problem="" test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6 -echo "configure:7305: checking for pow" >&5 +echo "configure:7396: checking for pow" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_pow=yes" else @@ -7348,15 +7439,15 @@ fi } test -z "$with_png" && { ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for png.h""... $ac_c" 1>&6 -echo "configure:7352: checking for png.h" >&5 +echo "configure:7443: checking for png.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7360: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7379,12 +7470,12 @@ fi } test -z "$with_png" && { echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6 -echo "configure:7383: checking for png_read_image in -lpng" >&5 +echo "configure:7474: checking for png_read_image in -lpng" >&5 ac_lib_var=`echo png'_'png_read_image | sed 'y%./+-%__p_%'` xe_check_libs=" -lpng " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7418,10 +7509,10 @@ fi } if test -z "$with_png"; then echo $ac_n "checking for workable png version information""... $ac_c" 1>&6 -echo "configure:7422: checking for workable png version information" >&5 +echo "configure:7513: checking for workable png version information" >&5 xe_check_libs="-lpng -lz" cat > conftest.$ac_ext < int main(int c, char **v) { @@ -7429,7 +7520,7 @@ echo "configure:7422: checking for workable png version information" >&5 if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1; return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;} EOF -if { (eval echo configure:7433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:7524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ./conftest dummy_arg; png_status=$?; if test "$png_status" = "0"; then @@ -7472,15 +7563,15 @@ EOF test -z "$with_tiff" && { ac_safe=`echo "tiffio.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for tiffio.h""... $ac_c" 1>&6 -echo "configure:7476: checking for tiffio.h" >&5 +echo "configure:7567: checking for tiffio.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7484: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7575: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7503,12 +7594,12 @@ fi } test -z "$with_tiff" && { echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6 -echo "configure:7507: checking for TIFFClientOpen in -ltiff" >&5 +echo "configure:7598: checking for TIFFClientOpen in -ltiff" >&5 ac_lib_var=`echo tiff'_'TIFFClientOpen | sed 'y%./+-%__p_%'` xe_check_libs=" -ltiff " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7558,10 +7649,10 @@ fi if test "$with_x11" = "yes"; then echo "checking for X11 graphics libraries" 1>&6 -echo "configure:7562: checking for X11 graphics libraries" >&5 +echo "configure:7653: checking for X11 graphics libraries" >&5 echo "checking for the Athena widgets" 1>&6 -echo "configure:7565: checking for the Athena widgets" >&5 +echo "configure:7656: checking for the Athena widgets" >&5 case "$with_athena" in "xaw" | "") athena_variant=Xaw athena_3d=no ;; @@ -7575,12 +7666,12 @@ echo "configure:7565: checking for the Athena widgets" >&5 if test "$athena_3d" = "no"; then echo $ac_n "checking for XawScrollbarSetThumb in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:7579: checking for XawScrollbarSetThumb in -l$athena_variant" >&5 +echo "configure:7670: checking for XawScrollbarSetThumb in -l$athena_variant" >&5 ac_lib_var=`echo $athena_variant'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'` xe_check_libs=" -l$athena_variant " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7607,12 +7698,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:7611: checking for threeDClassRec in -l$athena_variant" >&5 +echo "configure:7702: checking for threeDClassRec in -l$athena_variant" >&5 ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'` xe_check_libs=" -l$athena_variant " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7654,12 +7745,12 @@ fi else echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:7658: checking for threeDClassRec in -l$athena_variant" >&5 +echo "configure:7749: checking for threeDClassRec in -l$athena_variant" >&5 ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'` xe_check_libs=" -l$athena_variant " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7688,12 +7779,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for threeDClassRec in -lXaw""... $ac_c" 1>&6 -echo "configure:7692: checking for threeDClassRec in -lXaw" >&5 +echo "configure:7783: checking for threeDClassRec in -lXaw" >&5 ac_lib_var=`echo Xaw'_'threeDClassRec | sed 'y%./+-%__p_%'` xe_check_libs=" -lXaw " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7718,7 +7809,7 @@ xe_check_libs="" if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - athena_lib=Xaw; + athena_lib=Xaw; echo "configure: warning: "Assuming that libXaw is actually $athena_variant."" 1>&2; else @@ -7735,15 +7826,15 @@ fi if test "$athena_3d" = "no"; then ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6 -echo "configure:7739: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:7830: checking for X11/Xaw/ThreeD.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7747: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7838: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7763,15 +7854,15 @@ else echo "$ac_t""no" 1>&6 ac_safe=`echo "X11/Xaw/XawInit.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xaw/XawInit.h""... $ac_c" 1>&6 -echo "configure:7767: checking for X11/Xaw/XawInit.h" >&5 +echo "configure:7858: checking for X11/Xaw/XawInit.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7797,15 +7888,15 @@ fi else ac_safe=`echo "X11/$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/$athena_variant/XawInit.h""... $ac_c" 1>&6 -echo "configure:7801: checking for X11/$athena_variant/XawInit.h" >&5 +echo "configure:7892: checking for X11/$athena_variant/XawInit.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7900: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7822,15 +7913,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_safe=`echo "X11/$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/$athena_variant/ThreeD.h""... $ac_c" 1>&6 -echo "configure:7826: checking for X11/$athena_variant/ThreeD.h" >&5 +echo "configure:7917: checking for X11/$athena_variant/ThreeD.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7834: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7925: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7858,15 +7949,15 @@ fi if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then ac_safe=`echo "X11/Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xaw3d/XawInit.h""... $ac_c" 1>&6 -echo "configure:7862: checking for X11/Xaw3d/XawInit.h" >&5 +echo "configure:7953: checking for X11/Xaw3d/XawInit.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7870: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7961: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7883,15 +7974,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_safe=`echo "X11/Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xaw3d/ThreeD.h""... $ac_c" 1>&6 -echo "configure:7887: checking for X11/Xaw3d/ThreeD.h" >&5 +echo "configure:7978: checking for X11/Xaw3d/ThreeD.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7986: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7923,15 +8014,15 @@ fi if test -z "$athena_h_path"; then ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6 -echo "configure:7927: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:8018: checking for X11/Xaw/ThreeD.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7935: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8026: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7966,15 +8057,15 @@ fi ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:7970: checking for Xm/Xm.h" >&5 +echo "configure:8061: checking for Xm/Xm.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8069: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7991,12 +8082,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6 -echo "configure:7995: checking for XmStringFree in -lXm" >&5 +echo "configure:8086: checking for XmStringFree in -lXm" >&5 ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'` xe_check_libs=" -lXm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8036,9 +8127,9 @@ fi if test "$have_motif" = "yes"; then echo $ac_n "checking for Lesstif""... $ac_c" 1>&6 -echo "configure:8040: checking for Lesstif" >&5 +echo "configure:8131: checking for Lesstif" >&5 cat > conftest.$ac_ext < #ifdef LESSTIF_VERSION @@ -8371,7 +8462,7 @@ fi if test "$with_mule" = "yes" ; then echo "checking for Mule-related features" 1>&6 -echo "configure:8375: checking for Mule-related features" >&5 +echo "configure:8466: checking for Mule-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining MULE EOF @@ -8396,15 +8487,15 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8400: checking for $ac_hdr" >&5 +echo "configure:8491: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8499: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8435,12 +8526,12 @@ done echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6 -echo "configure:8439: checking for strerror in -lintl" >&5 +echo "configure:8530: checking for strerror in -lintl" >&5 ac_lib_var=`echo intl'_'strerror | sed 'y%./+-%__p_%'` xe_check_libs=" -lintl " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8484,18 +8575,18 @@ fi echo "checking for Mule input methods" 1>&6 -echo "configure:8488: checking for Mule input methods" >&5 +echo "configure:8579: checking for Mule input methods" >&5 case "$with_xim" in "" | "yes" ) echo "checking for XIM" 1>&6 -echo "configure:8491: checking for XIM" >&5 +echo "configure:8582: checking for XIM" >&5 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6 -echo "configure:8494: checking for XOpenIM in -lX11" >&5 +echo "configure:8585: checking for XOpenIM in -lX11" >&5 ac_lib_var=`echo X11'_'XOpenIM | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8530,12 +8621,12 @@ fi if test "$have_motif $have_lesstif" = "yes no"; then echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6 -echo "configure:8534: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:8625: checking for XmImMbLookupString in -lXm" >&5 ac_lib_var=`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'` xe_check_libs=" -lXm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8641: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8611,15 +8702,15 @@ EOF if test "$with_xfs" = "yes" ; then echo "checking for XFontSet" 1>&6 -echo "configure:8615: checking for XFontSet" >&5 +echo "configure:8706: checking for XFontSet" >&5 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6 -echo "configure:8618: checking for XmbDrawString in -lX11" >&5 +echo "configure:8709: checking for XmbDrawString in -lX11" >&5 ac_lib_var=`echo X11'_'XmbDrawString | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8670,15 +8761,15 @@ EOF test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support test -z "$with_wnn" && { ac_safe=`echo "wnn/jllib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for wnn/jllib.h""... $ac_c" 1>&6 -echo "configure:8674: checking for wnn/jllib.h" >&5 +echo "configure:8765: checking for wnn/jllib.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8682: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8773: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8703,10 +8794,10 @@ fi for ac_func in crypt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8707: checking for $ac_func" >&5 +echo "configure:8798: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8758,12 +8849,12 @@ done test "$ac_cv_func_crypt" != "yes" && { echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:8762: checking for crypt in -lcrypt" >&5 +echo "configure:8853: checking for crypt in -lcrypt" >&5 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'` xe_check_libs=" -lcrypt " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8809,12 +8900,12 @@ fi if test -z "$with_wnn" -o "$with_wnn" = "yes"; then echo $ac_n "checking for jl_dic_list_e in -lwnn""... $ac_c" 1>&6 -echo "configure:8813: checking for jl_dic_list_e in -lwnn" >&5 +echo "configure:8904: checking for jl_dic_list_e in -lwnn" >&5 ac_lib_var=`echo wnn'_'jl_dic_list_e | sed 'y%./+-%__p_%'` xe_check_libs=" -lwnn " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8843,12 +8934,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for jl_dic_list_e in -lwnn4""... $ac_c" 1>&6 -echo "configure:8847: checking for jl_dic_list_e in -lwnn4" >&5 +echo "configure:8938: checking for jl_dic_list_e in -lwnn4" >&5 ac_lib_var=`echo wnn4'_'jl_dic_list_e | sed 'y%./+-%__p_%'` xe_check_libs=" -lwnn4 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8877,12 +8968,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for jl_dic_list_e in -lwnn6""... $ac_c" 1>&6 -echo "configure:8881: checking for jl_dic_list_e in -lwnn6" >&5 +echo "configure:8972: checking for jl_dic_list_e in -lwnn6" >&5 ac_lib_var=`echo wnn6'_'jl_dic_list_e | sed 'y%./+-%__p_%'` xe_check_libs=" -lwnn6 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8911,12 +9002,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dic_list_e in -lwnn6_fromsrc""... $ac_c" 1>&6 -echo "configure:8915: checking for dic_list_e in -lwnn6_fromsrc" >&5 +echo "configure:9006: checking for dic_list_e in -lwnn6_fromsrc" >&5 ac_lib_var=`echo wnn6_fromsrc'_'dic_list_e | sed 'y%./+-%__p_%'` xe_check_libs=" -lwnn6_fromsrc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8975,12 +9066,12 @@ EOF if test "$with_wnn6" != "no"; then echo $ac_n "checking for jl_fi_dic_list in -l$libwnn""... $ac_c" 1>&6 -echo "configure:8979: checking for jl_fi_dic_list in -l$libwnn" >&5 +echo "configure:9070: checking for jl_fi_dic_list in -l$libwnn" >&5 ac_lib_var=`echo $libwnn'_'jl_fi_dic_list | sed 'y%./+-%__p_%'` xe_check_libs=" -l$libwnn " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9026,15 +9117,15 @@ EOF if test "$with_canna" != "no"; then ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6 -echo "configure:9030: checking for canna/jrkanji.h" >&5 +echo "configure:9121: checking for canna/jrkanji.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9038: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9061,15 +9152,15 @@ fi c_switch_site="$c_switch_site -I/usr/local/canna/include" ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6 -echo "configure:9065: checking for canna/jrkanji.h" >&5 +echo "configure:9156: checking for canna/jrkanji.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9073: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9164: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9097,15 +9188,15 @@ fi test -z "$with_canna" && { ac_safe=`echo "canna/RK.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for canna/RK.h""... $ac_c" 1>&6 -echo "configure:9101: checking for canna/RK.h" >&5 +echo "configure:9192: checking for canna/RK.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9200: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9128,12 +9219,12 @@ fi } test -z "$with_canna" && { echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6 -echo "configure:9132: checking for RkBgnBun in -lRKC" >&5 +echo "configure:9223: checking for RkBgnBun in -lRKC" >&5 ac_lib_var=`echo RKC'_'RkBgnBun | sed 'y%./+-%__p_%'` xe_check_libs=" -lRKC " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9167,12 +9258,12 @@ fi } test -z "$with_canna" && { echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6 -echo "configure:9171: checking for jrKanjiControl in -lcanna" >&5 +echo "configure:9262: checking for jrKanjiControl in -lcanna" >&5 ac_lib_var=`echo canna'_'jrKanjiControl | sed 'y%./+-%__p_%'` xe_check_libs=" -lcanna " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9232,12 +9323,12 @@ if test "$need_motif" = "yes" ; then libs_x="-lXm $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXm\" to \$libs_x"; fi echo $ac_n "checking for layout_object_getvalue in -li18n""... $ac_c" 1>&6 -echo "configure:9236: checking for layout_object_getvalue in -li18n" >&5 +echo "configure:9327: checking for layout_object_getvalue in -li18n" >&5 ac_lib_var=`echo i18n'_'layout_object_getvalue | sed 'y%./+-%__p_%'` xe_check_libs=" -li18n " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9331,13 +9422,13 @@ fi fi -for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf +for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf fsync ftruncate umask do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:9338: checking for $ac_func" >&5 +echo "configure:9429: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -9401,10 +9492,10 @@ case "$opsys" in * ) for ac_func in realpath do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:9405: checking for $ac_func" >&5 +echo "configure:9496: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -9463,10 +9554,10 @@ esac for ac_func in getloadavg do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:9467: checking for $ac_func" >&5 +echo "configure:9558: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -9525,12 +9616,12 @@ then echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6 -echo "configure:9529: checking for kstat_open in -lkstat" >&5 +echo "configure:9620: checking for kstat_open in -lkstat" >&5 ac_lib_var=`echo kstat'_'kstat_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lkstat " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9575,12 +9666,12 @@ fi echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6 -echo "configure:9579: checking for kvm_read in -lkvm" >&5 +echo "configure:9670: checking for kvm_read in -lkvm" >&5 ac_lib_var=`echo kvm'_'kvm_read | sed 'y%./+-%__p_%'` xe_check_libs=" -lkvm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9625,16 +9716,16 @@ fi fi echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6 -echo "configure:9629: checking whether netdb declares h_errno" >&5 +echo "configure:9720: checking whether netdb declares h_errno" >&5 cat > conftest.$ac_ext < int main() { return h_errno; ; return 0; } EOF -if { (eval echo configure:9638: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 { test "$extra_verbose" = "yes" && cat << \EOF @@ -9654,16 +9745,16 @@ fi rm -f conftest* echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6 -echo "configure:9658: checking for sigsetjmp" >&5 +echo "configure:9749: checking for sigsetjmp" >&5 cat > conftest.$ac_ext < int main() { sigjmp_buf bar; sigsetjmp (bar, 0); ; return 0; } EOF -if { (eval echo configure:9667: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 { test "$extra_verbose" = "yes" && cat << \EOF @@ -9683,11 +9774,11 @@ fi rm -f conftest* echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6 -echo "configure:9687: checking whether localtime caches TZ" >&5 +echo "configure:9778: checking whether localtime caches TZ" >&5 if test "$ac_cv_func_tzset" = "yes"; then cat > conftest.$ac_ext < #if STDC_HEADERS @@ -9722,7 +9813,7 @@ main() exit (0); } EOF -if { (eval echo configure:9726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:9817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then emacs_cv_localtime_cache=no else @@ -9752,9 +9843,9 @@ fi if test "$HAVE_TIMEVAL" = "yes"; then echo $ac_n "checking whether gettimeofday accepts one or two arguments""... $ac_c" 1>&6 -echo "configure:9756: checking whether gettimeofday accepts one or two arguments" >&5 +echo "configure:9847: checking whether gettimeofday accepts one or two arguments" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9871: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""two" 1>&6 else @@ -9798,19 +9889,19 @@ fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:9802: checking for inline" >&5 +echo "configure:9893: checking for inline" >&5 ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -9860,17 +9951,17 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:9864: checking for working alloca.h" >&5 +echo "configure:9955: checking for working alloca.h" >&5 cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:9874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -9894,10 +9985,10 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:9898: checking for alloca" >&5 +echo "configure:9989: checking for alloca" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -9964,10 +10055,10 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:9968: checking whether alloca needs Cray hooks" >&5 +echo "configure:10059: checking whether alloca needs Cray hooks" >&5 cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:9995: checking for $ac_func" >&5 +echo "configure:10086: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -10047,10 +10138,10 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:10051: checking stack direction for C alloca" >&5 +echo "configure:10142: checking stack direction for C alloca" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:10164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_stack_direction=1 else @@ -10098,15 +10189,15 @@ test -n "$ALLOCA" && extra_objs="$extra_objs $ALLOCA" && if test "$extra_verbos ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 -echo "configure:10102: checking for vfork.h" >&5 +echo "configure:10193: checking for vfork.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10110: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10201: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10134,10 +10225,10 @@ else fi echo $ac_n "checking for working vfork""... $ac_c" 1>&6 -echo "configure:10138: checking for working vfork" >&5 +echo "configure:10229: checking for working vfork" >&5 cat > conftest.$ac_ext < @@ -10232,7 +10323,7 @@ main() { } } EOF -if { (eval echo configure:10236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:10327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_vfork_works=yes else @@ -10258,10 +10349,10 @@ fi echo $ac_n "checking for working strcoll""... $ac_c" 1>&6 -echo "configure:10262: checking for working strcoll" >&5 +echo "configure:10353: checking for working strcoll" >&5 cat > conftest.$ac_ext < main () @@ -10271,7 +10362,7 @@ main () strcoll ("123", "456") >= 0); } EOF -if { (eval echo configure:10275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:10366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_strcoll_works=yes else @@ -10299,10 +10390,10 @@ fi for ac_func in getpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10303: checking for $ac_func" >&5 +echo "configure:10394: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -10353,10 +10444,10 @@ fi done echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:10357: checking whether getpgrp takes no argument" >&5 +echo "configure:10448: checking whether getpgrp takes no argument" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:10506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_getpgrp_void=yes else @@ -10438,10 +10529,10 @@ fi echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:10442: checking for working mmap" >&5 +echo "configure:10533: checking for working mmap" >&5 case "$opsys" in ultrix* ) have_mmap=no ;; *) cat > conftest.$ac_ext < #include @@ -10474,7 +10565,7 @@ int main (int argc, char *argv[]) return 1; } EOF -if { (eval echo configure:10478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:10569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then have_mmap=yes else @@ -10509,15 +10600,15 @@ EOF ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termios.h""... $ac_c" 1>&6 -echo "configure:10513: checking for termios.h" >&5 +echo "configure:10604: checking for termios.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10612: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10560,15 +10651,15 @@ else echo "$ac_t""no" 1>&6 ac_safe=`echo "termio.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termio.h""... $ac_c" 1>&6 -echo "configure:10564: checking for termio.h" >&5 +echo "configure:10655: checking for termio.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10572: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10663: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10600,10 +10691,10 @@ fi echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:10604: checking for socket" >&5 +echo "configure:10695: checking for socket" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_socket=yes" else @@ -10641,15 +10732,15 @@ if eval "test \"`echo '$ac_cv_func_'socket`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_safe=`echo "netinet/in.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for netinet/in.h""... $ac_c" 1>&6 -echo "configure:10645: checking for netinet/in.h" >&5 +echo "configure:10736: checking for netinet/in.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10653: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10666,15 +10757,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_safe=`echo "arpa/inet.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for arpa/inet.h""... $ac_c" 1>&6 -echo "configure:10670: checking for arpa/inet.h" >&5 +echo "configure:10761: checking for arpa/inet.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10678: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10699,9 +10790,9 @@ EOF } echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6 -echo "configure:10703: checking "for sun_len member in struct sockaddr_un"" >&5 +echo "configure:10794: checking "for sun_len member in struct sockaddr_un"" >&5 cat > conftest.$ac_ext < @@ -10712,7 +10803,7 @@ int main() { static struct sockaddr_un x; x.sun_len = 1; ; return 0; } EOF -if { (eval echo configure:10716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_SOCKADDR_SUN_LEN @@ -10730,9 +10821,9 @@ else fi rm -f conftest* echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6 -echo "configure:10734: checking "for ip_mreq struct in netinet/in.h"" >&5 +echo "configure:10825: checking "for ip_mreq struct in netinet/in.h"" >&5 cat > conftest.$ac_ext < @@ -10742,7 +10833,7 @@ int main() { static struct ip_mreq x; ; return 0; } EOF -if { (eval echo configure:10746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_MULTICAST @@ -10773,10 +10864,10 @@ fi echo $ac_n "checking for msgget""... $ac_c" 1>&6 -echo "configure:10777: checking for msgget" >&5 +echo "configure:10868: checking for msgget" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_msgget=yes" else @@ -10814,15 +10905,15 @@ if eval "test \"`echo '$ac_cv_func_'msgget`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_safe=`echo "sys/ipc.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/ipc.h""... $ac_c" 1>&6 -echo "configure:10818: checking for sys/ipc.h" >&5 +echo "configure:10909: checking for sys/ipc.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10917: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10839,15 +10930,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_safe=`echo "sys/msg.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/msg.h""... $ac_c" 1>&6 -echo "configure:10843: checking for sys/msg.h" >&5 +echo "configure:10934: checking for sys/msg.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10942: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10885,15 +10976,15 @@ fi ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dirent.h""... $ac_c" 1>&6 -echo "configure:10889: checking for dirent.h" >&5 +echo "configure:10980: checking for dirent.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10988: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10920,15 +11011,15 @@ else echo "$ac_t""no" 1>&6 ac_safe=`echo "sys/dir.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/dir.h""... $ac_c" 1>&6 -echo "configure:10924: checking for sys/dir.h" >&5 +echo "configure:11015: checking for sys/dir.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10932: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11023: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10961,15 +11052,15 @@ fi ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for nlist.h""... $ac_c" 1>&6 -echo "configure:10965: checking for nlist.h" >&5 +echo "configure:11056: checking for nlist.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10973: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11064: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10999,22 +11090,22 @@ fi echo "checking "for sound support"" 1>&6 -echo "configure:11003: checking "for sound support"" >&5 +echo "configure:11094: checking "for sound support"" >&5 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes if test "$with_native_sound" != "no"; then if test -n "$native_sound_lib"; then ac_safe=`echo "multimedia/audio_device.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for multimedia/audio_device.h""... $ac_c" 1>&6 -echo "configure:11010: checking for multimedia/audio_device.h" >&5 +echo "configure:11101: checking for multimedia/audio_device.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11018: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11062,12 +11153,12 @@ fi if test -z "$native_sound_lib"; then echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6 -echo "configure:11066: checking for ALopenport in -laudio" >&5 +echo "configure:11157: checking for ALopenport in -laudio" >&5 ac_lib_var=`echo audio'_'ALopenport | sed 'y%./+-%__p_%'` xe_check_libs=" -laudio " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11109,12 +11200,12 @@ fi if test -z "$native_sound_lib"; then echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6 -echo "configure:11113: checking for AOpenAudio in -lAlib" >&5 +echo "configure:11204: checking for AOpenAudio in -lAlib" >&5 ac_lib_var=`echo Alib'_'AOpenAudio | sed 'y%./+-%__p_%'` xe_check_libs=" -lAlib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11163,15 +11254,15 @@ fi for dir in "machine" "sys" "linux"; do ac_safe=`echo "${dir}/soundcard.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ${dir}/soundcard.h""... $ac_c" 1>&6 -echo "configure:11167: checking for ${dir}/soundcard.h" >&5 +echo "configure:11258: checking for ${dir}/soundcard.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11175: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11266: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11225,15 +11316,15 @@ fi if test "$with_nas_sound" != "no"; then ac_safe=`echo "audio/audiolib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for audio/audiolib.h""... $ac_c" 1>&6 -echo "configure:11229: checking for audio/audiolib.h" >&5 +echo "configure:11320: checking for audio/audiolib.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11237: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11251,12 +11342,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo $ac_n "checking for AuOpenServer in -laudio""... $ac_c" 1>&6 -echo "configure:11255: checking for AuOpenServer in -laudio" >&5 +echo "configure:11346: checking for AuOpenServer in -laudio" >&5 ac_lib_var=`echo audio'_'AuOpenServer | sed 'y%./+-%__p_%'` xe_check_libs=" -laudio " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11306,7 +11397,7 @@ EOF fi libs_x="-laudio $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-laudio\" to \$libs_x"; fi cat > conftest.$ac_ext < EOF @@ -11337,7 +11428,7 @@ if test "$with_esd_sound" != "no"; then # Extract the first word of "esd-config", so it can be a program name with args. set dummy esd-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:11341: checking for $ac_word" >&5 +echo "configure:11432: checking for $ac_word" >&5 if test -n "$have_esd_config"; then ac_cv_prog_have_esd_config="$have_esd_config" # Let the user override the test. @@ -11366,10 +11457,10 @@ fi c_switch_site="$c_switch_site `esd-config --cflags`" && if test "$extra_verbose" = "yes"; then echo " Appending \"`esd-config --cflags`\" to \$c_switch_site"; fi LIBS="`esd-config --libs` $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"`esd-config --libs`\" to \$LIBS"; fi echo $ac_n "checking for esd_play_stream""... $ac_c" 1>&6 -echo "configure:11370: checking for esd_play_stream" >&5 +echo "configure:11461: checking for esd_play_stream" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_esd_play_stream=yes" else @@ -11443,7 +11534,7 @@ test -z "$with_tty" && with_tty=yes if test "$with_tty" = "yes" ; then echo "checking for TTY-related features" 1>&6 -echo "configure:11447: checking for TTY-related features" >&5 +echo "configure:11538: checking for TTY-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_TTY EOF @@ -11459,12 +11550,12 @@ EOF if test -z "$with_ncurses"; then echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6 -echo "configure:11463: checking for tgetent in -lncurses" >&5 +echo "configure:11554: checking for tgetent in -lncurses" >&5 ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -lncurses " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11508,15 +11599,15 @@ EOF ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6 -echo "configure:11512: checking for ncurses/curses.h" >&5 +echo "configure:11603: checking for ncurses/curses.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11611: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11538,15 +11629,15 @@ fi ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6 -echo "configure:11542: checking for ncurses/term.h" >&5 +echo "configure:11633: checking for ncurses/term.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11550: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11641: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11576,15 +11667,15 @@ fi c_switch_site="$c_switch_site -I/usr/include/ncurses" ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6 -echo "configure:11580: checking for ncurses/curses.h" >&5 +echo "configure:11671: checking for ncurses/curses.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11588: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11619,12 +11710,12 @@ fi for lib in curses termlib termcap; do echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6 -echo "configure:11623: checking for tgetent in -l$lib" >&5 +echo "configure:11714: checking for tgetent in -l$lib" >&5 ac_lib_var=`echo $lib'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -l$lib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11666,12 +11757,12 @@ fi else echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6 -echo "configure:11670: checking for tgetent in -lcurses" >&5 +echo "configure:11761: checking for tgetent in -lcurses" >&5 ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -lcurses " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11700,12 +11791,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6 -echo "configure:11704: checking for tgetent in -ltermcap" >&5 +echo "configure:11795: checking for tgetent in -ltermcap" >&5 ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -ltermcap " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11764,15 +11855,15 @@ EOF test -z "$with_gpm" && { ac_safe=`echo "gpm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for gpm.h""... $ac_c" 1>&6 -echo "configure:11768: checking for gpm.h" >&5 +echo "configure:11859: checking for gpm.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11776: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11867: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11795,12 +11886,12 @@ fi } test -z "$with_gpm" && { echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6 -echo "configure:11799: checking for Gpm_Open in -lgpm" >&5 +echo "configure:11890: checking for Gpm_Open in -lgpm" >&5 ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'` xe_check_libs=" -lgpm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11861,20 +11952,20 @@ test "$with_x11" = "yes" -o "$with_tty" = "yes" && extra_objs="$extra_objs event test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \ != "no no no" && echo "checking for database support" 1>&6 -echo "configure:11865: checking for database support" >&5 +echo "configure:11956: checking for database support" >&5 if test "$with_database_gdbm $with_database_dbm" != "no no"; then ac_safe=`echo "ndbm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ndbm.h""... $ac_c" 1>&6 -echo "configure:11870: checking for ndbm.h" >&5 +echo "configure:11961: checking for ndbm.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11878: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11969: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11904,12 +11995,12 @@ fi if test "$with_database_gdbm" != "no"; then echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6 -echo "configure:11908: checking for dbm_open in -lgdbm" >&5 +echo "configure:11999: checking for dbm_open in -lgdbm" >&5 ac_lib_var=`echo gdbm'_'dbm_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lgdbm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11948,10 +12039,10 @@ fi if test "$with_database_dbm" != "no"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:11952: checking for dbm_open" >&5 +echo "configure:12043: checking for dbm_open" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_dbm_open=yes" else @@ -11993,12 +12084,12 @@ else echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6 -echo "configure:11997: checking for dbm_open in -ldbm" >&5 +echo "configure:12088: checking for dbm_open in -ldbm" >&5 ac_lib_var=`echo dbm'_'dbm_open | sed 'y%./+-%__p_%'` xe_check_libs=" -ldbm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -12050,10 +12141,10 @@ EOF if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6 -echo "configure:12054: checking for Berkeley db.h" >&5 +echo "configure:12145: checking for Berkeley db.h" >&5 for path in "db/db.h" "db.h"; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:12166: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_path="$path"; break else @@ -12087,9 +12178,9 @@ rm -f conftest* if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6 -echo "configure:12091: checking for Berkeley DB version" >&5 +echo "configure:12182: checking for Berkeley DB version" >&5 cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 1 @@ -12108,10 +12199,10 @@ fi rm -f conftest* echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6 -echo "configure:12112: checking for $dbfunc" >&5 +echo "configure:12203: checking for $dbfunc" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$dbfunc=yes" else @@ -12153,12 +12244,12 @@ else echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6 -echo "configure:12157: checking for $dbfunc in -ldb" >&5 +echo "configure:12248: checking for $dbfunc in -ldb" >&5 ac_lib_var=`echo db'_'$dbfunc | sed 'y%./+-%__p_%'` xe_check_libs=" -ldb " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -12233,12 +12324,12 @@ fi if test "$with_socks" = "yes"; then echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:12237: checking for SOCKSinit in -lsocks" >&5 +echo "configure:12328: checking for SOCKSinit in -lsocks" >&5 ac_lib_var=`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'` xe_check_libs=" -lsocks " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -12304,19 +12395,19 @@ fi if test "$with_modules" != "no"; then echo "checking for module support" 1>&6 -echo "configure:12308: checking for module support" >&5 +echo "configure:12399: checking for module support" >&5 ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:12312: checking for dlfcn.h" >&5 +echo "configure:12403: checking for dlfcn.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12334,12 +12425,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:12338: checking for dlopen in -ldl" >&5 +echo "configure:12429: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` xe_check_libs=" -ldl " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -12369,12 +12460,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6 -echo "configure:12373: checking for dlopen in -lc" >&5 +echo "configure:12464: checking for dlopen in -lc" >&5 ac_lib_var=`echo c'_'dlopen | sed 'y%./+-%__p_%'` xe_check_libs=" -lc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -12424,12 +12515,12 @@ EOF else echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:12428: checking for shl_load in -ldld" >&5 +echo "configure:12519: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` xe_check_libs=" -ldld " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -12467,12 +12558,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:12471: checking for dld_init in -ldld" >&5 +echo "configure:12562: checking for dld_init in -ldld" >&5 ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'` xe_check_libs=" -ldld " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -12528,7 +12619,7 @@ xehost=$canonical xealias=$internal_configuration echo "checking how to build dynamic libraries for ${xehost}" 1>&6 -echo "configure:12532: checking how to build dynamic libraries for ${xehost}" >&5 +echo "configure:12623: checking how to build dynamic libraries for ${xehost}" >&5 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts. case "$xehost" in *-*-linux-gnu*) ;; @@ -12556,9 +12647,9 @@ if test "$GCC" = "yes"; then XEGCC=yes else echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:12560: checking checking whether we are using GNU C" >&5 +echo "configure:12651: checking checking whether we are using GNU C" >&5 cat > conftest.$ac_ext <&6 -echo "configure:12584: checking how to produce PIC code" >&5 +echo "configure:12675: checking how to produce PIC code" >&5 wl= can_build_shared=yes @@ -12673,18 +12764,18 @@ if test -n "$dll_cflags"; then # Check to make sure the dll_cflags actually works. echo $ac_n "checking if PIC flag ${dll_cflags} really works""... $ac_c" 1>&6 -echo "configure:12677: checking if PIC flag ${dll_cflags} really works" >&5 +echo "configure:12768: checking if PIC flag ${dll_cflags} really works" >&5 save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $dll_cflags -DPIC" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:12779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # On HP-UX, the stripped-down bundled CC doesn't accept +Z, but also @@ -12715,7 +12806,7 @@ cc_produces_so=no xldf= xcldf= echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6 -echo "configure:12719: checking if C compiler can produce shared libraries" >&5 +echo "configure:12810: checking if C compiler can produce shared libraries" >&5 if test "$XEGCC" = yes; then xcldf="-shared" xldf="-shared" @@ -12766,14 +12857,14 @@ if test -n "$xcldf"; then xe_libs= ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5' cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cc_produces_so=yes else @@ -12798,7 +12889,7 @@ if test -z "$LTLD"; then if test "$XEGCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:12802: checking for ld used by GCC" >&5 +echo "configure:12893: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -12823,7 +12914,7 @@ echo "configure:12802: checking for ld used by GCC" >&5 esac else echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:12827: checking for GNU ld" >&5 +echo "configure:12918: checking for GNU ld" >&5 fi if test -z "$LTLD"; then @@ -12861,7 +12952,7 @@ ld_dynamic_link_flags= # Check to see if it really is or isn't GNU ld. echo $ac_n "checking if the linker is GNU ld""... $ac_c" 1>&6 -echo "configure:12865: checking if the linker is GNU ld" >&5 +echo "configure:12956: checking if the linker is GNU ld" >&5 # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LTLD -v 2>&1 &5; then xe_gnu_ld=yes @@ -12888,7 +12979,7 @@ else # OK - only NOW do we futz about with ld. # See if the linker supports building shared libraries. echo $ac_n "checking whether the linker supports shared libraries""... $ac_c" 1>&6 -echo "configure:12892: checking whether the linker supports shared libraries" >&5 +echo "configure:12983: checking whether the linker supports shared libraries" >&5 dll_ld=$CC dll_ldflags=$LDFLAGS ld_shlibs=yes @@ -13103,10 +13194,10 @@ EOF for ac_func in dlerror _dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:13107: checking for $ac_func" >&5 +echo "configure:13198: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -13168,11 +13259,11 @@ done fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:13267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else @@ -13313,13 +13404,25 @@ if test "$extra_verbose" = "yes"; then echo "" fi -if test -f $srcdir/src/gdbinit -a ! -f src/gdbinit ; then - echo "creating src/gdbinit"; echo "" - echo "source $srcdir/src/gdbinit" > src/gdbinit + +if test -f "$srcdir/src/.gdbinit" -a ! -f "src/.gdbinit"; then + test "$extra_verbose" = "yes" && echo "creating src/.gdbinit" + echo "source $srcdir/src/.gdbinit" > "src/.gdbinit" +fi + +if test -f "$srcdir/src/.dbxrc" -a ! -f "src/.dbxrc"; then + test "$extra_verbose" = "yes" && echo "creating src/.dbxrc" + echo ". $srcdir/src/.dbxrc" > "src/.dbxrc" +fi + +if test -f "$srcdir/TAGS" -a ! -f "TAGS"; then + test "$extra_verbose" = "yes" && echo "creating TAGS" + echo " +$srcdir/TAGS,include" > "TAGS" fi if test "$__SUNPRO_C" = "yes"; then - echo "creating .sbinit"; echo "" + test "$extra_verbose" = "yes" && echo "creating .sbinit" ( echo "# For use with Sun WorkShop's Source browser." echo "# See sbquery(1) and sbinit(4) for more information" for dir in $MAKE_SUBDIR; do echo "import $dir"; done @@ -13801,6 +13904,10 @@ fi if test -n "$runpath"; then echo " Runtime library search path: $runpath" fi +if test "$have_xaw" = "yes"; then + echo " Athena library to link: $athena_lib" + echo " Athena header include path: $athena_h_path" +fi test "$with_dnet" = yes && echo " Compiling in support for DNET." test "$with_socks" = yes && echo " Compiling in support for SOCKS." test "$with_xauth" = yes && echo " Compiling in support for XAUTH." @@ -13884,13 +13991,11 @@ case "$with_scrollbars" in lucid ) echo " Using Lucid scrollbars." ;; motif ) echo " Using Motif scrollbars." ;; athena ) echo " Using Athena scrollbars." ;; - athena3d ) echo " Using Athena-3d scrollbars." ;; msw ) echo " Using MS-Windows scrollbars." ;; esac case "$with_widgets" in motif ) echo " Using Motif native widgets." ;; athena ) echo " Using Athena native widgets." ;; - athena3d ) echo " Using Athena-3d native widgets." ;; msw ) echo " Using MS-Windows native widgets." ;; esac case "$with_dialogs" in @@ -13904,7 +14009,6 @@ case "$with_dialogs" in fi; fi ;; athena ) echo " Using Athena dialog boxes." ;; - athena3d ) echo " Using Athena-3d dialog boxes." ;; msw ) echo " Using MS-Windows dialog boxes." ;; esac test "$with_modules" = "yes" && echo " Compiling in dynamic shared object module support." diff --git a/configure.in b/configure.in index 54eccbf..792a5ba 100644 --- a/configure.in +++ b/configure.in @@ -673,9 +673,10 @@ The default is to autodetect all sound support."]) case "$val" in lockf ) val=lockf ;; flock ) val=flock ;; - file ) val=file ;; + file | dot ) val=file ;; + locking ) val=locking ;; * ) USAGE_ERROR(["The \`--$optname' option must have one of these values: - \`lockf', \`flock', or \`file'."]) ;; + \`lockf', \`flock', \`file', \`locking', or \`mmdf'."]) ;; esac eval "$opt=\"$val\"" ;; @@ -906,7 +907,7 @@ dnl is still relative. We do not symlink lock because someone may dnl have stuck the source on a read-only partition. Instead we dnl create it as an actual directory later on if it does not already dnl exist. -for dir in lisp etc man info; do +for dir in lisp etc man info tests; do if test ! -d "$dir" ; then echo Making symbolic link to "$srcdir/$dir" ${LN_S} "$srcdir/$dir" "$dir" @@ -1769,8 +1770,10 @@ configure___ start_files=START_FILES CPP_boolean_to_sh(ORDINARY_LINK, ordinary_link) CPP_boolean_to_sh(SYSTEM_MALLOC, system_malloc) CPP_boolean_to_sh(TERMINFO, have_terminfo) +dnl The MAIL_USE_xxx variables come from the s&m headers CPP_boolean_to_sh(MAIL_USE_FLOCK, mail_use_flock) CPP_boolean_to_sh(MAIL_USE_LOCKF, mail_use_lockf) +CPP_boolean_to_sh(MAIL_USE_LOCKING, mail_use_locking) CPP_boolean_to_sh(HAVE_WIN32_PROCESSES, win32_processes) EOF @@ -1793,6 +1796,13 @@ test "$extra_verbose" = "yes" && \ ld lib_gcc ld_text_start_addr start_files ordinary_link have_terminfo mail_use_flock mail_use_lockf) && echo "" +dnl Pick up mingw32 include path +case "$opsys" in mingw*) mingw_include=`eval "gcc -print-file-name=libc.a"` ; + mingw_include=`eval "dirname $mingw_include"` ; + mingw_include="-I$mingw_include/../include/mingw32" ; + XE_APPEND($mingw_include, c_switch_system) ;; +esac + dnl Non-ordinary link usually requires -lc test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc" @@ -2255,12 +2265,22 @@ AC_TRY_LINK([#include ], dnl Determine type of mail locking from configure args and s&m headers AC_CHECKING(type of mail spool file locking) +AC_CHECK_FUNCS(lockf flock) +dnl The mail_use_xxx variables are set according to the s&m headers. test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf -if test "$mail_locking" = "lockf"; then AC_DEFINE(REAL_MAIL_USE_LOCKF) -elif test "$mail_locking" = "flock"; then AC_DEFINE(REAL_MAIL_USE_FLOCK) -else mail_locking="dot-locking" +test -z "$mail_locking" -a "$mail_use_locking" = "yes" && mail_locking=locking +if test "$mail_locking" = "lockf"; then AC_DEFINE(MAIL_LOCK_LOCKF) +elif test "$mail_locking" = "flock"; then AC_DEFINE(MAIL_LOCK_FLOCK) +elif test "$mail_locking" = "locking"; then AC_DEFINE(MAIL_LOCK_LOCKING) +else mail_locking="dot-locking"; AC_DEFINE(MAIL_LOCK_DOT) fi +test "$mail_locking" = "lockf" -a "$ac_cv_func_lockf" != "yes" && \ + XE_DIE("lockf mail locking requested but not available.") +test "$mail_locking" = "flock" -a "$ac_cv_func_flock" != "yes" && \ + XE_DIE("flock mail locking requested but not available.") +test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \ + XE_DIE("locking mail locking requested but not available.") case "$opsys" in decosf*) AC_CHECK_LIB(pthreads, cma_open) @@ -2899,7 +2919,7 @@ if test "$with_x11" = "yes"; then dnl What in heck did the user actually want? case "$with_athena" in - dnl This is the default, old fashioned flat Athena. + dnl This is the default, old fashioned flat Athena. "xaw" | "") athena_variant=Xaw athena_3d=no ;; "3d") athena_variant=Xaw3d athena_3d=yes ;; "next") athena_variant=neXtaw athena_3d=yes ;; @@ -2910,22 +2930,22 @@ if test "$with_x11" = "yes"; then dnl Search for the Athena library... if test "$athena_3d" = "no"; then - AC_CHECK_LIB($athena_variant, XawScrollbarSetThumb, + AC_CHECK_LIB($athena_variant, XawScrollbarSetThumb, [ dnl Must not be a 3d library... - AC_CHECK_LIB($athena_variant, threeDClassRec, + AC_CHECK_LIB($athena_variant, threeDClassRec, AC_MSG_WARN("Could not find a non-3d Athena widget library."), athena_lib=$athena_variant) - ], + ], AC_MSG_WARN("Could not find an Athena widget library.")) else dnl The real configuration, need 3d library AC_CHECK_LIB($athena_variant, threeDClassRec, athena_lib=$athena_variant, dnl OK, couldn't find it with a proper name, try the standard Athena lib dnl If that is 3d, presume the user asked for what they have installed. - AC_CHECK_LIB(Xaw, threeDClassRec, + AC_CHECK_LIB(Xaw, threeDClassRec, [ - athena_lib=Xaw; + athena_lib=Xaw; AC_MSG_WARN("Assuming that libXaw is actually $athena_variant."); ], AC_MSG_WARN("Could not find a 3d Athena widget library that looked like $athena_variant."))) @@ -3243,7 +3263,7 @@ if test "$need_motif" = "yes" ; then XE_COMPUTE_RUNPATH() fi -AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf) +AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf fsync ftruncate umask) dnl realpath is buggy on linux, decosf and aix4 @@ -3914,15 +3934,32 @@ if test "$extra_verbose" = "yes"; then echo "" fi -dnl Create some auxiliary files -if test -f $srcdir/src/gdbinit -a ! -f src/gdbinit ; then - echo "creating src/gdbinit"; echo "" - echo "source $srcdir/src/gdbinit" > src/gdbinit +dnl ---------------------------------------------- +dnl Create some auxiliary files for developers. +dnl ---------------------------------------------- + +dnl Create a .gdbinit useful for debugging XEmacs +if test -f "$srcdir/src/.gdbinit" -a ! -f "src/.gdbinit"; then + test "$extra_verbose" = "yes" && echo "creating src/.gdbinit" + echo "source $srcdir/src/.gdbinit" > "src/.gdbinit" +fi + +dnl Create a .dbxrc useful for debugging XEmacs +if test -f "$srcdir/src/.dbxrc" -a ! -f "src/.dbxrc"; then + test "$extra_verbose" = "yes" && echo "creating src/.dbxrc" + echo ". $srcdir/src/.dbxrc" > "src/.dbxrc" +fi + +dnl Create a useful TAGS file +if test -f "$srcdir/TAGS" -a ! -f "TAGS"; then + test "$extra_verbose" = "yes" && echo "creating TAGS" + echo " +$srcdir/TAGS,include" > "TAGS" fi dnl Create top level .sbinit for Sun compilers if test "$__SUNPRO_C" = "yes"; then - echo "creating .sbinit"; echo "" + test "$extra_verbose" = "yes" && echo "creating .sbinit" ( echo "# For use with Sun WorkShop's Source browser." echo "# See sbquery(1) and sbinit(4) for more information" for dir in $MAKE_SUBDIR; do echo "import $dir"; done @@ -4241,6 +4278,10 @@ fi if test -n "$runpath"; then echo " Runtime library search path: $runpath" fi +if test "$have_xaw" = "yes"; then + echo " Athena library to link: $athena_lib" + echo " Athena header include path: $athena_h_path" +fi test "$with_dnet" = yes && echo " Compiling in support for DNET." test "$with_socks" = yes && echo " Compiling in support for SOCKS." test "$with_xauth" = yes && echo " Compiling in support for XAUTH." @@ -4324,13 +4365,11 @@ case "$with_scrollbars" in lucid ) echo " Using Lucid scrollbars." ;; motif ) echo " Using Motif scrollbars." ;; athena ) echo " Using Athena scrollbars." ;; - athena3d ) echo " Using Athena-3d scrollbars." ;; msw ) echo " Using MS-Windows scrollbars." ;; esac case "$with_widgets" in motif ) echo " Using Motif native widgets." ;; athena ) echo " Using Athena native widgets." ;; - athena3d ) echo " Using Athena-3d native widgets." ;; msw ) echo " Using MS-Windows native widgets." ;; esac case "$with_dialogs" in @@ -4344,7 +4383,6 @@ case "$with_dialogs" in fi; fi ;; athena ) echo " Using Athena dialog boxes." ;; - athena3d ) echo " Using Athena-3d dialog boxes." ;; msw ) echo " Using MS-Windows dialog boxes." ;; esac test "$with_modules" = "yes" && echo " Compiling in dynamic shared object module support." diff --git a/configure.usage b/configure.usage index 71d3f8f..a6e9c6b 100644 --- a/configure.usage +++ b/configure.usage @@ -141,7 +141,7 @@ Additional features: installed LDAP libraries on the system). --mail-locking=TYPE (*) Specify the locking to be used by movemail to prevent concurrent updates of mail spool files. Valid types - are `lockf', `flock', and `file'. + are `lockf', `flock', and `dot'. --with-modules Compile in experimental support for dynamically loaded libraries (Dynamic Shared Objects). --with-site-lisp=yes Allow for a site-lisp directory in the XEmacs hierarchy diff --git a/etc/NEWS b/etc/NEWS index 3dcba1e..1c58518 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -136,6 +136,21 @@ The only thing selection doesn't do is set the clipboard automatically as this would break the MS-Windows model. If you want this behaviour then set `selection-sets-clipboard' to t +** Mail spool locking now works correctly. +XEmacs has always come with a little auxiliary program, movemail, +which moves mail out of the system's spool area into user storage. To +coordinate between XEmacs, the mail delivery agent, and other mail +user agents, movemail needs to properly lock the spool file before +moving it. Movemail now correctly respects the --mail-locking option +to configure. Moreover, movemail's locking behavior can be specified +at run-time, via a new command-line option -m to movemail, or through +the environment variable EMACSLOCKMETHOD. + +When installing XEmacs, make sure you configure it according to your +environment's mail spool locking conventions. When you're using a +binary kit, set the `mail-lock-method' variable at startup, or the +EMACSLOCKMETHOD environment variable. + ** New command-line switches -user-init-file and -user-init-directory. These can be used to specify alternate locations for what is normally ~/.emacs and ~/.xemacs. @@ -144,6 +159,10 @@ Moreover, -user (which used to only work in unpredictable ways) is now equivalent to -user-init-file ~/.emacs -user-init-directory ~/.xemacs. +** New variable `mswindows-meta-activates-menu'. +If you set this variable to nil then pressing the Alt key under +MS-Windows will no longer activate the menubar. The default is t. + ** Etags changes. *** In DOS, etags looks for file.cgz if it cannot find file.c. diff --git a/etc/TUTORIAL.de b/etc/TUTORIAL.de index f15c75d..def5aa3 100644 --- a/etc/TUTORIAL.de +++ b/etc/TUTORIAL.de @@ -1,4 +1,4 @@ -Copyright (c) 1997, Adrian Aichner . +Copyright (c) 1997-2000, Adrian Aichner . Copyright (c) 1985, 1996 Free Software Foundation, Inc. See end for conditions. @@ -39,7 +39,7 @@ weiterbewegt. Um eine Seite zur META-Taste gedrückt und tippe v oder tippe v wenn Deine Tastatur keine META-, EDIT- oder ALT-Taste besitzt). ->> Versuche ein paar Mal M-v und C-v zu tippen. +>> Versuche ein paarmal M-v und C-v zu tippen. * ZUSAMMENFASSUNG @@ -1137,7 +1137,7 @@ Diese Version des Tutorials ist, wie GNU Emacs selbst, urheberrechtlich geschützt und erlaubt die Verteilung von Kopien unter bestimmten Voraussetzungen: -Copyright (c) 1997, Adrian Aichner . +Copyright (c) 1997-2000, Adrian Aichner . Copyright (c) 1985, 1996 Free Software Foundation diff --git a/info/info.info b/info/info.info index 0ef2859..ba26c19 100644 --- a/info/info.info +++ b/info/info.info @@ -779,7 +779,7 @@ Emacs Info-mode Variables The following variables may modify the behaviour of Info-mode in Emacs; you may wish to set one or several of these variables interactively, or in your `~/.emacs' init file. *Note Examining and -Setting Variables: (emacs)Examining. +Setting Variables: (xemacs)Examining. `Info-enable-edit' Set to `nil', disables the `e' (`Info-edit') command. A non-`nil' @@ -835,6 +835,6 @@ Node: Cross-refs29271 Node: Tags29973 Node: Checking31275 Node: Emacs Info Variables32228 -Node: Creating an Info File33217 +Node: Creating an Info File33218  End Tag Table diff --git a/info/internals.info b/info/internals.info index 0674c50..c3f6ad1 100644 --- a/info/internals.info +++ b/info/internals.info @@ -42,11 +42,11 @@ Indirect: internals.info-1: 1770 internals.info-2: 45926 internals.info-3: 92999 -internals.info-4: 141365 -internals.info-5: 183396 -internals.info-6: 232817 -internals.info-7: 281547 -internals.info-8: 331004 +internals.info-4: 141367 +internals.info-5: 183398 +internals.info-6: 232819 +internals.info-7: 281549 +internals.info-8: 331006  Tag Table: (Indirect) @@ -74,106 +74,106 @@ Node: Conversion to and from External Data96749 Node: General Guidelines for Writing Mule-Aware Code101630 Node: An Example of Mule-Aware Code103661 Node: Techniques for XEmacs Developers105648 -Node: A Summary of the Various XEmacs Modules109413 -Node: Low-Level Modules110233 -Node: Basic Lisp Modules117755 -Node: Modules for Standard Editing Operations126079 -Node: Editor-Level Control Flow Modules131967 -Node: Modules for the Basic Displayable Lisp Objects135414 -Node: Modules for other Display-Related Lisp Objects137936 -Node: Modules for the Redisplay Mechanism139014 -Node: Modules for Interfacing with the File System141365 -Node: Modules for Other Aspects of the Lisp Interpreter and Object System145063 -Node: Modules for Interfacing with the Operating System150517 -Node: Modules for Interfacing with X Windows158178 -Node: Modules for Internationalization161614 -Node: Allocation of Objects in XEmacs Lisp164251 -Node: Introduction to Allocation164805 -Node: Garbage Collection170268 -Node: GCPROing173221 -Node: Garbage Collection - Step by Step180032 -Node: Invocation180424 -Node: garbage_collect_1183396 -Node: mark_object192876 -Node: gc_sweep194688 -Node: sweep_lcrecords_1199751 -Node: compact_string_chars200746 -Node: sweep_strings202926 -Node: sweep_bit_vectors_1203891 -Node: Integers and Characters204567 -Node: Allocation from Frob Blocks205319 -Node: lrecords206923 -Node: Low-level allocation219385 -Node: Pure Space223553 -Node: Cons223728 -Node: Vector224444 -Node: Bit Vector225021 -Node: Symbol225514 -Node: Marker226083 -Node: String226638 -Node: Compiled Function230253 -Node: Events and the Event Loop230422 -Node: Introduction to Events230901 -Node: Main Loop232817 -Node: Specifics of the Event Gathering Mechanism236393 -Node: Specifics About the Emacs Event248846 -Node: The Event Stream Callback Routines249101 -Node: Other Event Loop Functions249346 -Node: Converting Events250486 -Node: Dispatching Events; The Command Builder251095 -Node: Evaluation; Stack Frames; Bindings251330 -Node: Evaluation251672 -Node: Dynamic Binding; The specbinding Stack; Unwind-Protects258212 -Node: Simple Special Forms260596 -Node: Catch and Throw261378 -Node: Symbols and Variables263953 -Node: Introduction to Symbols264217 -Node: Obarrays265255 -Node: Symbol Values268788 -Node: Buffers and Textual Representation271076 -Node: Introduction to Buffers271734 -Node: The Text in a Buffer274397 -Node: Buffer Lists281547 -Node: Markers and Extents283498 -Node: Bufbytes and Emchars285763 -Node: The Buffer Object285978 -Node: MULE Character Sets and Encodings289458 -Node: Character Sets290520 -Node: Encodings293963 -Node: Japanese EUC (Extended Unix Code)295030 -Node: JIS7295844 -Node: Internal Mule Encodings297194 -Node: Internal String Encoding299024 -Node: Internal Character Encoding301137 -Node: CCL302861 -Node: The Lisp Reader and Compiler309613 -Node: Lstreams309826 -Node: Creating an Lstream310857 -Node: Lstream Types312067 -Node: Lstream Functions312319 -Node: Lstream Methods315888 -Node: Consoles; Devices; Frames; Windows319031 -Node: Introduction to Consoles; Devices; Frames; Windows319346 -Node: Point321838 -Node: Window Hierarchy323117 -Node: The Window Object327567 -Node: The Redisplay Mechanism331004 -Node: Critical Redisplay Sections331796 -Node: Line Start Cache332751 -Node: Redisplay Piece by Piece335988 -Node: Extents338024 -Node: Introduction to Extents338562 -Node: Extent Ordering339688 -Node: Format of the Extent Info340929 -Node: Zero-Length Extents342817 -Node: Mathematics of Extent Ordering344215 -Node: Extent Fragments348972 -Node: Faces350059 -Node: Glyphs350175 -Node: Specifiers353193 -Node: Menus353322 -Node: Subprocesses355580 -Node: Interface to X Windows357556 -Node: Index357727 +Node: A Summary of the Various XEmacs Modules109415 +Node: Low-Level Modules110235 +Node: Basic Lisp Modules117757 +Node: Modules for Standard Editing Operations126081 +Node: Editor-Level Control Flow Modules131969 +Node: Modules for the Basic Displayable Lisp Objects135416 +Node: Modules for other Display-Related Lisp Objects137938 +Node: Modules for the Redisplay Mechanism139016 +Node: Modules for Interfacing with the File System141367 +Node: Modules for Other Aspects of the Lisp Interpreter and Object System145065 +Node: Modules for Interfacing with the Operating System150519 +Node: Modules for Interfacing with X Windows158180 +Node: Modules for Internationalization161616 +Node: Allocation of Objects in XEmacs Lisp164253 +Node: Introduction to Allocation164807 +Node: Garbage Collection170270 +Node: GCPROing173223 +Node: Garbage Collection - Step by Step180034 +Node: Invocation180426 +Node: garbage_collect_1183398 +Node: mark_object192878 +Node: gc_sweep194690 +Node: sweep_lcrecords_1199753 +Node: compact_string_chars200748 +Node: sweep_strings202928 +Node: sweep_bit_vectors_1203893 +Node: Integers and Characters204569 +Node: Allocation from Frob Blocks205321 +Node: lrecords206925 +Node: Low-level allocation219387 +Node: Pure Space223555 +Node: Cons223730 +Node: Vector224446 +Node: Bit Vector225023 +Node: Symbol225516 +Node: Marker226085 +Node: String226640 +Node: Compiled Function230255 +Node: Events and the Event Loop230424 +Node: Introduction to Events230903 +Node: Main Loop232819 +Node: Specifics of the Event Gathering Mechanism236395 +Node: Specifics About the Emacs Event248848 +Node: The Event Stream Callback Routines249103 +Node: Other Event Loop Functions249348 +Node: Converting Events250488 +Node: Dispatching Events; The Command Builder251097 +Node: Evaluation; Stack Frames; Bindings251332 +Node: Evaluation251674 +Node: Dynamic Binding; The specbinding Stack; Unwind-Protects258214 +Node: Simple Special Forms260598 +Node: Catch and Throw261380 +Node: Symbols and Variables263955 +Node: Introduction to Symbols264219 +Node: Obarrays265257 +Node: Symbol Values268790 +Node: Buffers and Textual Representation271078 +Node: Introduction to Buffers271736 +Node: The Text in a Buffer274399 +Node: Buffer Lists281549 +Node: Markers and Extents283500 +Node: Bufbytes and Emchars285765 +Node: The Buffer Object285980 +Node: MULE Character Sets and Encodings289460 +Node: Character Sets290522 +Node: Encodings293965 +Node: Japanese EUC (Extended Unix Code)295032 +Node: JIS7295846 +Node: Internal Mule Encodings297196 +Node: Internal String Encoding299026 +Node: Internal Character Encoding301139 +Node: CCL302863 +Node: The Lisp Reader and Compiler309615 +Node: Lstreams309828 +Node: Creating an Lstream310859 +Node: Lstream Types312069 +Node: Lstream Functions312321 +Node: Lstream Methods315890 +Node: Consoles; Devices; Frames; Windows319033 +Node: Introduction to Consoles; Devices; Frames; Windows319348 +Node: Point321840 +Node: Window Hierarchy323119 +Node: The Window Object327569 +Node: The Redisplay Mechanism331006 +Node: Critical Redisplay Sections331798 +Node: Line Start Cache332753 +Node: Redisplay Piece by Piece335990 +Node: Extents338026 +Node: Introduction to Extents338564 +Node: Extent Ordering339690 +Node: Format of the Extent Info340931 +Node: Zero-Length Extents342819 +Node: Mathematics of Extent Ordering344217 +Node: Extent Fragments348974 +Node: Faces350061 +Node: Glyphs350177 +Node: Specifiers353195 +Node: Menus353324 +Node: Subprocesses355582 +Node: Interface to X Windows357558 +Node: Index357729  End Tag Table diff --git a/info/lispref.info b/info/lispref.info index 83889a8..da8e934 100644 --- a/info/lispref.info +++ b/info/lispref.info @@ -59,42 +59,42 @@ lispref.info-5: 195600 lispref.info-6: 243285 lispref.info-7: 291568 lispref.info-8: 340704 -lispref.info-9: 388026 -lispref.info-10: 436665 -lispref.info-11: 484903 -lispref.info-12: 531515 -lispref.info-13: 579414 -lispref.info-14: 627637 -lispref.info-15: 675891 -lispref.info-16: 725647 -lispref.info-17: 774398 -lispref.info-18: 821248 -lispref.info-19: 868299 -lispref.info-20: 917029 -lispref.info-21: 966451 -lispref.info-22: 1013370 -lispref.info-23: 1060397 -lispref.info-24: 1109796 -lispref.info-25: 1159478 -lispref.info-26: 1209388 -lispref.info-27: 1258611 -lispref.info-28: 1307378 -lispref.info-29: 1356815 -lispref.info-30: 1398150 -lispref.info-31: 1447293 -lispref.info-32: 1496506 -lispref.info-33: 1546080 -lispref.info-34: 1594257 -lispref.info-35: 1639889 -lispref.info-36: 1681205 -lispref.info-37: 1726146 -lispref.info-38: 1775833 -lispref.info-39: 1824937 -lispref.info-40: 1874341 -lispref.info-41: 1924225 -lispref.info-42: 1973216 -lispref.info-43: 2017108 -lispref.info-44: 2055444 +lispref.info-9: 387518 +lispref.info-10: 436970 +lispref.info-11: 485198 +lispref.info-12: 534963 +lispref.info-13: 582862 +lispref.info-14: 631085 +lispref.info-15: 679339 +lispref.info-16: 729095 +lispref.info-17: 777846 +lispref.info-18: 824696 +lispref.info-19: 871747 +lispref.info-20: 920477 +lispref.info-21: 969899 +lispref.info-22: 1016818 +lispref.info-23: 1063845 +lispref.info-24: 1113244 +lispref.info-25: 1162926 +lispref.info-26: 1212836 +lispref.info-27: 1262059 +lispref.info-28: 1310826 +lispref.info-29: 1360263 +lispref.info-30: 1401598 +lispref.info-31: 1450741 +lispref.info-32: 1499954 +lispref.info-33: 1549528 +lispref.info-34: 1597705 +lispref.info-35: 1643337 +lispref.info-36: 1684653 +lispref.info-37: 1729594 +lispref.info-38: 1779281 +lispref.info-39: 1828385 +lispref.info-40: 1877789 +lispref.info-41: 1927673 +lispref.info-42: 1976664 +lispref.info-43: 2020556 +lispref.info-44: 2058892  Tag Table: (Indirect) @@ -257,633 +257,633 @@ Node: Catch and Throw365912 Node: Examples of Catch369751 Node: Errors371770 Node: Signaling Errors373259 -Node: Processing of Errors376335 -Node: Handling Errors377664 -Node: Error Symbols384580 -Node: Cleanups388026 -Node: Variables391804 -Node: Global Variables393573 -Node: Constant Variables394649 -Node: Local Variables395275 -Node: Void Variables400212 -Node: Defining Variables403728 -Node: Accessing Variables410892 -Node: Setting Variables412317 -Node: Variable Scoping416836 -Node: Scope418435 -Node: Extent419960 -Node: Impl of Scope421439 -Node: Using Scoping423402 -Node: Buffer-Local Variables424924 -Node: Intro to Buffer-Local425760 -Node: Creating Buffer-Local428303 -Node: Default Value433522 -Node: Variable Aliases436665 -Node: Functions438450 -Node: What Is a Function439544 -Node: Lambda Expressions443590 -Node: Lambda Components444500 -Node: Simple Lambda446332 -Node: Argument List447989 -Node: Function Documentation451717 -Node: Function Names453659 -Node: Defining Functions456232 -Node: Calling Functions459272 -Node: Mapping Functions463121 -Node: Anonymous Functions465809 -Node: Function Cells469054 -Node: Inline Functions473864 -Node: Related Topics475674 -Node: Macros476727 -Node: Simple Macro478011 -Node: Expansion478746 -Node: Compiling Macros481750 -Node: Defining Macros483586 -Node: Backquote484903 -Node: Problems with Macros487300 -Node: Argument Evaluation487995 -Node: Surprising Local Vars490910 -Node: Eval During Expansion492978 -Node: Repeated Expansion494671 -Node: Customization496587 -Node: Common Keywords497056 -Node: Group Definitions499901 -Node: Variable Definitions502093 -Node: Customization Types507076 -Node: Simple Types508511 -Node: Composite Types510668 -Node: Splicing into Lists515358 -Node: Type Keywords517193 -Node: Loading520713 -Node: How Programs Do Loading522388 -Node: Autoload531515 -Node: Repeated Loading537594 -Node: Named Features539707 -Node: Unloading546139 -Node: Hooks for Loading548295 -Node: Byte Compilation549012 -Node: Speed of Byte-Code550929 -Node: Compilation Functions552136 -Node: Docs and Compilation558523 -Node: Dynamic Loading561176 -Node: Eval During Compile563540 -Node: Compiled-Function Objects564805 -Node: Disassembly569603 -Node: Debugging576857 -Node: Debugger578269 -Node: Error Debugging579414 -Node: Infinite Loops582167 -Node: Function Debugging583411 -Node: Explicit Debug586201 -Node: Using Debugger586972 -Node: Debugger Commands588834 -Node: Invoking the Debugger593151 -Node: Internals of Debugger597066 -Node: Syntax Errors601953 -Node: Excess Open603201 -Node: Excess Close605076 -Node: Compilation Errors606497 -Node: Edebug607785 -Node: Using Edebug609893 -Node: Instrumenting612590 -Node: Edebug Execution Modes616079 -Node: Jumping619189 -Node: Edebug Misc621532 -Node: Breakpoints622921 -Node: Global Break Condition625727 -Node: Embedded Breakpoints626682 -Node: Trapping Errors627637 -Node: Edebug Views629713 -Node: Edebug Eval631678 -Node: Eval List632855 -Node: Reading in Edebug636240 -Node: Printing in Edebug637039 -Node: Tracing638754 -Node: Coverage Testing640640 -Node: The Outside Context642681 -Node: Checking Whether to Stop643630 -Node: Edebug Display Update644277 -Node: Edebug Recursive Edit646300 -Node: Instrumenting Macro Calls647955 -Node: Specification List650437 -Node: Backtracking659848 -Node: Debugging Backquote661786 -Node: Specification Examples665492 -Node: Edebug Options667559 -Node: Read and Print672896 -Node: Streams Intro673873 -Node: Input Streams675891 -Node: Input Functions680792 -Node: Output Streams682852 -Node: Output Functions686903 -Node: Output Variables691203 -Node: Minibuffers696002 -Node: Intro to Minibuffers697154 -Node: Text from Minibuffer699342 -Node: Object from Minibuffer704217 -Node: Minibuffer History707444 -Node: Completion710423 -Node: Basic Completion712398 -Node: Minibuffer Completion717427 -Node: Completion Commands721004 -Node: High-Level Completion725647 -Node: Reading File Names729671 -Node: Programmed Completion733355 -Node: Yes-or-No Queries735737 -Node: Multiple Queries741474 -Node: Reading a Password745541 -Node: Minibuffer Misc746878 -Node: Command Loop751748 -Node: Command Overview753092 -Node: Defining Commands756370 -Node: Using Interactive757118 -Node: Interactive Codes761891 -Node: Interactive Examples767683 -Node: Interactive Call768997 -Node: Command Loop Info774398 -Node: Events779377 -Node: Event Types780837 -Node: Event Contents782760 -Node: Event Predicates787236 -Node: Accessing Mouse Event Positions788561 -Node: Frame-Level Event Position Info789260 -Node: Window-Level Event Position Info790300 -Node: Event Text Position Info792064 -Node: Event Glyph Position Info794556 -Node: Event Toolbar Position Info795879 -Node: Other Event Position Info796550 -Node: Accessing Other Event Info796959 -Node: Working With Events798579 -Node: Converting Events804567 -Node: Reading Input807520 -Node: Key Sequence Input808522 -Node: Reading One Event810476 -Node: Dispatching an Event813237 -Node: Quoted Character Input813688 -Node: Peeking and Discarding815036 -Node: Waiting818940 -Node: Quitting821248 -Node: Prefix Command Arguments825656 -Node: Recursive Editing830743 -Node: Disabling Commands835539 -Node: Command History837607 -Node: Keyboard Macros839344 -Node: Keymaps841561 -Node: Keymap Terminology843138 -Node: Format of Keymaps846067 -Node: Creating Keymaps846478 -Node: Inheritance and Keymaps848557 -Node: Key Sequences850929 -Node: Prefix Keys855499 -Node: Active Keymaps859084 -Node: Key Lookup868299 -Node: Functions for Key Lookup873462 -Node: Changing Key Bindings879159 -Node: Key Binding Commands886056 -Node: Scanning Keymaps888121 -Node: Other Keymap Functions896632 -Node: Menus897254 -Node: Menu Format897796 -Node: Menubar Format906381 -Node: Menubar907006 -Node: Modifying Menus910119 -Node: Menu Filters915133 -Node: Pop-Up Menus917029 -Node: Menu Accelerators919234 -Node: Creating Menu Accelerators919956 -Node: Keyboard Menu Traversal921274 -Node: Menu Accelerator Functions922001 -Node: Buffers Menu925036 -Node: Dialog Boxes926330 -Node: Dialog Box Format926497 -Node: Dialog Box Functions927867 -Node: Toolbar928264 -Node: Toolbar Intro928589 -Node: Toolbar Descriptor Format930999 -Node: Specifying the Toolbar935493 -Node: Other Toolbar Variables939098 -Node: Scrollbars943525 -Node: Drag and Drop943661 -Node: Supported Protocols944737 -Node: OffiX DND945240 -Node: CDE dt946247 -Node: MSWindows OLE946838 -Node: Loose ends947009 -Node: Drop Interface947401 -Node: Drag Interface948423 -Node: Modes948597 -Node: Major Modes949548 -Node: Major Mode Conventions952463 -Node: Example Major Modes958418 -Node: Auto Major Mode966451 -Node: Mode Help973899 -Node: Derived Modes975000 -Node: Minor Modes977191 -Node: Minor Mode Conventions978493 -Node: Keymaps and Minor Modes981356 -Node: Modeline Format982191 -Node: Modeline Data983959 -Node: Modeline Variables988229 -Node: %-Constructs992945 -Node: Hooks995856 -Node: Documentation1002618 -Node: Documentation Basics1004041 -Node: Accessing Documentation1007091 -Node: Keys in Documentation1013370 -Node: Describing Characters1016849 -Node: Help Functions1019198 -Node: Obsoleteness1025649 -Node: Files1028643 -Node: Visiting Files1030568 -Node: Visiting Functions1032073 -Node: Subroutines of Visiting1037120 -Node: Saving Buffers1039193 -Node: Reading from Files1045286 -Node: Writing to Files1047443 -Node: File Locks1050160 -Node: Information about Files1053213 -Node: Testing Accessibility1053974 -Node: Kinds of Files1057714 -Node: Truenames1059395 -Node: File Attributes1060397 -Node: Changing File Attributes1065536 -Node: File Names1070942 -Node: File Name Components1072551 -Node: Directory Names1075652 -Node: Relative File Names1079105 -Node: File Name Expansion1080183 -Node: Unique File Names1084090 -Node: File Name Completion1085705 -Node: User Name Completion1088366 -Node: Contents of Directories1089706 -Node: Create/Delete Dirs1093019 -Node: Magic File Names1094125 -Node: Partial Files1099755 -Node: Intro to Partial Files1099983 -Node: Creating a Partial File1101223 -Node: Detached Partial Files1102158 -Node: Format Conversion1103280 -Node: Files and MS-DOS1109796 -Node: Backups and Auto-Saving1111860 -Node: Backup Files1112535 -Node: Making Backups1113932 -Node: Rename or Copy1116681 -Node: Numbered Backups1119174 -Node: Backup Names1121418 -Node: Auto-Saving1124710 -Node: Reverting1132852 -Node: Buffers1136010 -Node: Buffer Basics1137427 -Node: Current Buffer1139480 -Node: Buffer Names1144168 -Node: Buffer File Name1147373 -Node: Buffer Modification1151492 -Node: Modification Time1153685 -Node: Read Only Buffers1157060 -Node: The Buffer List1159478 -Node: Creating Buffers1164308 -Node: Killing Buffers1166454 -Node: Indirect Buffers1170185 -Node: Windows1172757 -Node: Basic Windows1174235 -Node: Splitting Windows1177333 -Node: Deleting Windows1184222 -Node: Selecting Windows1186902 -Node: Cyclic Window Ordering1190031 -Node: Buffers and Windows1194655 -Node: Displaying Buffers1196496 -Node: Choosing Window1201672 -Node: Window Point1209388 -Node: Window Start1211434 -Node: Vertical Scrolling1215924 -Node: Horizontal Scrolling1222061 -Node: Size of Window1225570 -Node: Position of Window1230288 -Node: Resizing Windows1232528 -Node: Window Configurations1237957 -Node: Frames1241382 -Node: Creating Frames1243151 -Node: Frame Properties1244492 -Node: Property Access1245308 -Node: Initial Properties1246157 -Node: X Frame Properties1248643 -Node: Size and Position1253277 -Node: Frame Name1255273 -Node: Frame Titles1256187 -Node: Deleting Frames1258011 -Node: Finding All Frames1258611 -Node: Frames and Windows1260605 -Node: Minibuffers and Frames1262310 -Node: Input Focus1263228 -Node: Visibility of Frames1266305 -Node: Raising and Lowering1268224 -Node: Frame Configurations1270600 -Node: Frame Hooks1271194 -Node: Consoles and Devices1272999 -Node: Basic Console Functions1275743 -Node: Basic Device Functions1276166 -Node: Console Types and Device Classes1276882 -Node: Connecting to a Console or Device1279079 -Node: The Selected Console and Device1281242 -Node: Console and Device I/O1282268 -Node: Positions1283032 -Node: Point1284001 -Node: Motion1287091 -Node: Character Motion1287858 -Node: Word Motion1290095 -Node: Buffer End Motion1291596 -Node: Text Lines1293093 -Node: Screen Lines1297688 -Node: List Motion1301751 -Node: Skipping Characters1305159 -Node: Excursions1307378 -Node: Narrowing1310410 -Node: Markers1315735 -Node: Overview of Markers1316641 -Node: Predicates on Markers1321333 -Node: Creating Markers1322579 -Node: Information from Markers1326616 -Node: Changing Markers1327714 -Node: The Mark1329092 -Node: The Region1337586 -Node: Text1343273 -Node: Near Point1345972 -Node: Buffer Contents1350159 -Node: Comparing Text1351565 -Node: Insertion1352973 -Node: Commands for Insertion1356815 -Node: Deletion1359771 -Node: User-Level Deletion1363366 -Node: The Kill Ring1367527 -Node: Kill Ring Concepts1369701 -Node: Kill Functions1370755 -Node: Yank Commands1372660 -Node: Low-Level Kill Ring1374531 -Node: Internals of Kill Ring1377317 -Node: Undo1380097 -Node: Maintaining Undo1384426 -Node: Filling1387046 -Node: Margins1393040 -Node: Auto Filling1396969 -Node: Sorting1398150 -Node: Columns1407450 -Node: Indentation1409966 -Node: Primitive Indent1410745 -Node: Mode-Specific Indent1411989 -Node: Region Indent1414500 -Node: Relative Indent1417448 -Node: Indent Tabs1419830 -Node: Motion by Indent1421151 -Node: Case Changes1421930 -Node: Text Properties1425181 -Node: Examining Properties1426994 -Node: Changing Properties1428861 -Node: Property Search1432452 -Node: Special Properties1437163 -Node: Saving Properties1437444 -Node: Substitution1440586 -Node: Registers1443856 -Node: Transposition1446399 -Node: Change Hooks1447293 -Node: Transformations1449333 -Node: Searching and Matching1453718 -Node: String Search1454849 -Node: Regular Expressions1459573 -Node: Syntax of Regexps1460940 -Node: Regexp Example1475319 -Node: Regexp Search1477489 -Node: POSIX Regexps1483577 -Node: Search and Replace1485412 -Node: Match Data1488777 -Node: Simple Match Data1489907 -Node: Replacing Match1494172 -Node: Entire Match Data1496506 -Node: Saving Match Data1498497 -Node: Searching and Case1499878 -Node: Standard Regexps1501912 -Node: Syntax Tables1504110 -Node: Syntax Basics1505224 -Node: Syntax Descriptors1508196 -Node: Syntax Class Table1510046 -Node: Syntax Flags1516084 -Node: Syntax Table Functions1519301 -Node: Motion and Syntax1523165 -Node: Parsing Expressions1524617 -Node: Standard Syntax Tables1530686 -Node: Syntax Table Internals1531530 -Node: Abbrevs1532556 -Node: Abbrev Mode1534359 -Node: Abbrev Tables1535079 -Node: Defining Abbrevs1536612 -Node: Abbrev Files1538517 -Node: Abbrev Expansion1540290 -Node: Standard Abbrev Tables1544921 -Node: Extents1546080 -Node: Intro to Extents1547323 -Node: Creating and Modifying Extents1551317 -Node: Extent Endpoints1552824 -Node: Finding Extents1556087 -Node: Mapping Over Extents1559836 -Node: Extent Properties1565953 -Node: Detached Extents1576097 -Node: Extent Parents1577956 -Node: Duplicable Extents1579651 -Node: Extents and Events1582872 -Node: Atomic Extents1584779 -Node: Specifiers1585226 -Node: Introduction to Specifiers1587033 -Node: Specifiers In-Depth1589343 -Node: Specifier Instancing1594257 -Node: Specifier Types1597519 -Node: Adding Specifications1602593 -Node: Retrieving Specifications1611955 -Node: Specifier Tag Functions1615690 -Node: Specifier Instancing Functions1618924 -Node: Specifier Example1622331 -Node: Creating Specifiers1625437 -Node: Specifier Validation Functions1627686 -Node: Other Specification Functions1630070 -Node: Faces and Window-System Objects1633889 -Node: Faces1634213 -Node: Merging Faces1635830 -Node: Basic Face Functions1637791 -Node: Face Properties1639889 -Node: Face Convenience Functions1649448 -Node: Other Face Display Functions1652578 -Node: Fonts1653391 -Node: Font Specifiers1654092 -Node: Font Instances1654333 -Node: Font Instance Names1655300 -Node: Font Instance Size1656141 -Node: Font Instance Characteristics1657427 -Node: Font Convenience Functions1658596 -Node: Colors1659886 -Node: Color Specifiers1660326 -Node: Color Instances1660553 -Node: Color Instance Properties1661297 -Node: Color Convenience Functions1661923 -Node: Glyphs1662976 -Node: Glyph Functions1664568 -Node: Creating Glyphs1664975 -Node: Glyph Properties1666562 -Node: Glyph Convenience Functions1675729 -Node: Glyph Dimensions1679676 -Node: Images1680756 -Node: Image Specifiers1681205 -Node: Image Instantiator Conversion1692627 -Node: Image Instances1693992 -Node: Image Instance Types1694743 -Node: Image Instance Functions1697398 -Node: Glyph Types1701967 -Node: Mouse Pointer1703739 -Node: Redisplay Glyphs1706742 -Node: Subwindows1707775 -Node: Annotations1708018 -Node: Annotation Basics1709034 -Node: Annotation Primitives1712972 -Node: Annotation Properties1714301 -Node: Locating Annotations1717341 -Node: Margin Primitives1718178 -Node: Annotation Hooks1720072 -Node: Display1720732 -Node: Refresh Screen1721710 -Node: Truncation1723621 -Node: The Echo Area1726146 -Node: Warnings1732581 -Node: Invisible Text1737017 -Node: Selective Display1739596 -Node: Overlay Arrow1743722 -Node: Temporary Displays1745075 -Node: Blinking1749196 -Node: Usual Display1751381 -Node: Display Tables1753930 -Node: Display Table Format1754734 -Node: Active Display Table1756176 -Node: Character Descriptors1757368 -Node: Beeping1758125 -Node: Hash Tables1762891 -Node: Introduction to Hash Tables1763499 -Node: Working With Hash Tables1769522 -Node: Weak Hash Tables1770639 -Node: Range Tables1772438 -Node: Introduction to Range Tables1773127 -Node: Working With Range Tables1773558 -Node: Databases1774443 -Node: Connecting to a Database1774742 -Node: Working With a Database1775833 -Node: Other Database Functions1776691 -Node: Processes1777265 -Node: Subprocess Creation1779489 -Node: Synchronous Processes1782778 -Node: MS-DOS Subprocesses1789496 -Node: Asynchronous Processes1790570 -Node: Deleting Processes1794283 -Node: Process Information1796154 -Node: Input to Processes1800080 -Node: Signals to Processes1802370 -Node: Output from Processes1806790 -Node: Process Buffers1807602 -Node: Filter Functions1810469 -Node: Accepting Output1816039 -Node: Sentinels1817566 -Node: Process Window Size1821056 -Node: Transaction Queues1821405 -Node: Network1823103 -Node: System Interface1824937 -Node: Starting Up1826207 -Node: Start-up Summary1826801 -Node: Init File1830355 -Node: Terminal-Specific1832736 -Node: Command Line Arguments1835895 -Node: Getting Out1839384 -Node: Killing XEmacs1839953 -Node: Suspending XEmacs1841622 -Node: System Environment1844964 -Node: User Identification1851631 -Node: Time of Day1855160 -Node: Time Conversion1857947 -Node: Timers1862987 -Node: Terminal Input1865160 -Node: Input Modes1865663 -Node: Translating Input1868076 -Node: Recording Input1872241 -Node: Terminal Output1874341 -Node: Flow Control1877964 -Node: Batch Mode1881756 -Node: X-Windows1883138 -Node: X Selections1883950 -Node: X Server1886160 -Node: Resources1886561 -Node: Server Data1891702 -Node: Grabs1892909 -Node: X Miscellaneous1894490 -Node: ToolTalk Support1896875 -Node: XEmacs ToolTalk API Summary1897092 -Node: Sending Messages1898392 -Node: Example of Sending Messages1898643 -Node: Elisp Interface for Sending Messages1899705 -Node: Receiving Messages1906098 -Node: Example of Receiving Messages1906321 -Node: Elisp Interface for Receiving Messages1907157 -Node: LDAP Support1910982 -Node: Building XEmacs with LDAP support1911478 -Node: XEmacs LDAP API1912456 -Node: LDAP Variables1913186 -Node: The High-Level LDAP API1915662 -Node: The Low-Level LDAP API1916767 -Node: The LDAP Lisp Object1917041 -Node: Opening and Closing a LDAP Connection1917594 -Node: Searching on a LDAP Server (Low-level)1919377 -Node: Syntax of Search Filters1920770 -Node: Internationalization1922068 -Node: I18N Levels 1 and 21922405 -Node: I18N Level 31923111 -Node: Level 3 Basics1923392 -Node: Level 3 Primitives1924225 -Node: Dynamic Messaging1925831 -Node: Domain Specification1926294 -Node: Documentation String Extraction1928197 -Node: I18N Level 41929115 -Node: MULE1929307 -Node: Internationalization Terminology1930418 -Node: Charsets1938957 -Node: Charset Properties1939653 -Node: Basic Charset Functions1944339 -Node: Charset Property Functions1946520 -Node: Predefined Charsets1948563 -Node: MULE Characters1951483 -Node: Composite Characters1952330 -Node: ISO 20221953584 -Node: Coding Systems1959306 -Node: Coding System Types1961228 -Node: EOL Conversion1963047 -Node: Coding System Properties1964230 -Node: Basic Coding System Functions1968082 -Node: Coding System Property Functions1969986 -Node: Encoding and Decoding Text1970544 -Node: Detection of Textual Encoding1971680 -Node: Big5 and Shift-JIS Functions1973216 -Node: CCL1974304 -Node: CCL Syntax1977408 -Node: CCL Statements1978996 -Node: CCL Expressions1983644 -Node: Calling CCL1986183 -Node: CCL Examples1989172 -Node: Category Tables1989309 -Node: Tips1991668 -Node: Style Tips1992309 -Node: Compilation Tips2001828 -Node: Documentation Tips2003742 -Node: Comment Tips2009251 -Node: Library Headers2012253 -Node: Building XEmacs and Object Allocation2016225 -Node: Building XEmacs2017108 -Node: Pure Storage2023443 -Node: Garbage Collection2026231 -Node: Standard Errors2037370 -Node: Standard Buffer-Local Variables2041579 -Node: Standard Keymaps2044212 -Node: Standard Hooks2047944 -Node: Index2055444 +Node: Processing of Errors377998 +Node: Handling Errors380277 +Node: Error Symbols387518 +Node: Cleanups391474 +Node: Variables395252 +Node: Global Variables397021 +Node: Constant Variables398097 +Node: Local Variables398723 +Node: Void Variables403660 +Node: Defining Variables407176 +Node: Accessing Variables414340 +Node: Setting Variables415765 +Node: Variable Scoping420284 +Node: Scope421883 +Node: Extent423408 +Node: Impl of Scope424887 +Node: Using Scoping426850 +Node: Buffer-Local Variables428372 +Node: Intro to Buffer-Local429208 +Node: Creating Buffer-Local431751 +Node: Default Value436970 +Node: Variable Aliases440113 +Node: Functions441898 +Node: What Is a Function442992 +Node: Lambda Expressions447038 +Node: Lambda Components447948 +Node: Simple Lambda449780 +Node: Argument List451437 +Node: Function Documentation455165 +Node: Function Names457107 +Node: Defining Functions459680 +Node: Calling Functions462720 +Node: Mapping Functions466569 +Node: Anonymous Functions469257 +Node: Function Cells472502 +Node: Inline Functions477312 +Node: Related Topics479122 +Node: Macros480175 +Node: Simple Macro481459 +Node: Expansion482194 +Node: Compiling Macros485198 +Node: Defining Macros487034 +Node: Backquote488351 +Node: Problems with Macros490748 +Node: Argument Evaluation491443 +Node: Surprising Local Vars494358 +Node: Eval During Expansion496426 +Node: Repeated Expansion498119 +Node: Customization500035 +Node: Common Keywords500504 +Node: Group Definitions503349 +Node: Variable Definitions505541 +Node: Customization Types510524 +Node: Simple Types511959 +Node: Composite Types514116 +Node: Splicing into Lists518806 +Node: Type Keywords520641 +Node: Loading524161 +Node: How Programs Do Loading525836 +Node: Autoload534963 +Node: Repeated Loading541042 +Node: Named Features543155 +Node: Unloading549587 +Node: Hooks for Loading551743 +Node: Byte Compilation552460 +Node: Speed of Byte-Code554377 +Node: Compilation Functions555584 +Node: Docs and Compilation561971 +Node: Dynamic Loading564624 +Node: Eval During Compile566988 +Node: Compiled-Function Objects568253 +Node: Disassembly573051 +Node: Debugging580305 +Node: Debugger581717 +Node: Error Debugging582862 +Node: Infinite Loops585615 +Node: Function Debugging586859 +Node: Explicit Debug589649 +Node: Using Debugger590420 +Node: Debugger Commands592282 +Node: Invoking the Debugger596599 +Node: Internals of Debugger600514 +Node: Syntax Errors605401 +Node: Excess Open606649 +Node: Excess Close608524 +Node: Compilation Errors609945 +Node: Edebug611233 +Node: Using Edebug613341 +Node: Instrumenting616038 +Node: Edebug Execution Modes619527 +Node: Jumping622637 +Node: Edebug Misc624980 +Node: Breakpoints626369 +Node: Global Break Condition629175 +Node: Embedded Breakpoints630130 +Node: Trapping Errors631085 +Node: Edebug Views633161 +Node: Edebug Eval635126 +Node: Eval List636303 +Node: Reading in Edebug639688 +Node: Printing in Edebug640487 +Node: Tracing642202 +Node: Coverage Testing644088 +Node: The Outside Context646129 +Node: Checking Whether to Stop647078 +Node: Edebug Display Update647725 +Node: Edebug Recursive Edit649748 +Node: Instrumenting Macro Calls651403 +Node: Specification List653885 +Node: Backtracking663296 +Node: Debugging Backquote665234 +Node: Specification Examples668940 +Node: Edebug Options671007 +Node: Read and Print676344 +Node: Streams Intro677321 +Node: Input Streams679339 +Node: Input Functions684240 +Node: Output Streams686300 +Node: Output Functions690351 +Node: Output Variables694651 +Node: Minibuffers699450 +Node: Intro to Minibuffers700602 +Node: Text from Minibuffer702790 +Node: Object from Minibuffer707665 +Node: Minibuffer History710892 +Node: Completion713871 +Node: Basic Completion715846 +Node: Minibuffer Completion720875 +Node: Completion Commands724452 +Node: High-Level Completion729095 +Node: Reading File Names733119 +Node: Programmed Completion736803 +Node: Yes-or-No Queries739185 +Node: Multiple Queries744922 +Node: Reading a Password748989 +Node: Minibuffer Misc750326 +Node: Command Loop755196 +Node: Command Overview756540 +Node: Defining Commands759818 +Node: Using Interactive760566 +Node: Interactive Codes765339 +Node: Interactive Examples771131 +Node: Interactive Call772445 +Node: Command Loop Info777846 +Node: Events782825 +Node: Event Types784285 +Node: Event Contents786208 +Node: Event Predicates790684 +Node: Accessing Mouse Event Positions792009 +Node: Frame-Level Event Position Info792708 +Node: Window-Level Event Position Info793748 +Node: Event Text Position Info795512 +Node: Event Glyph Position Info798004 +Node: Event Toolbar Position Info799327 +Node: Other Event Position Info799998 +Node: Accessing Other Event Info800407 +Node: Working With Events802027 +Node: Converting Events808015 +Node: Reading Input810968 +Node: Key Sequence Input811970 +Node: Reading One Event813924 +Node: Dispatching an Event816685 +Node: Quoted Character Input817136 +Node: Peeking and Discarding818484 +Node: Waiting822388 +Node: Quitting824696 +Node: Prefix Command Arguments829104 +Node: Recursive Editing834191 +Node: Disabling Commands838987 +Node: Command History841055 +Node: Keyboard Macros842792 +Node: Keymaps845009 +Node: Keymap Terminology846586 +Node: Format of Keymaps849515 +Node: Creating Keymaps849926 +Node: Inheritance and Keymaps852005 +Node: Key Sequences854377 +Node: Prefix Keys858947 +Node: Active Keymaps862532 +Node: Key Lookup871747 +Node: Functions for Key Lookup876910 +Node: Changing Key Bindings882607 +Node: Key Binding Commands889504 +Node: Scanning Keymaps891569 +Node: Other Keymap Functions900080 +Node: Menus900702 +Node: Menu Format901244 +Node: Menubar Format909829 +Node: Menubar910454 +Node: Modifying Menus913567 +Node: Menu Filters918581 +Node: Pop-Up Menus920477 +Node: Menu Accelerators922682 +Node: Creating Menu Accelerators923404 +Node: Keyboard Menu Traversal924722 +Node: Menu Accelerator Functions925449 +Node: Buffers Menu928484 +Node: Dialog Boxes929778 +Node: Dialog Box Format929945 +Node: Dialog Box Functions931315 +Node: Toolbar931712 +Node: Toolbar Intro932037 +Node: Toolbar Descriptor Format934447 +Node: Specifying the Toolbar938941 +Node: Other Toolbar Variables942546 +Node: Scrollbars946973 +Node: Drag and Drop947109 +Node: Supported Protocols948185 +Node: OffiX DND948688 +Node: CDE dt949695 +Node: MSWindows OLE950286 +Node: Loose ends950457 +Node: Drop Interface950849 +Node: Drag Interface951871 +Node: Modes952045 +Node: Major Modes952996 +Node: Major Mode Conventions955911 +Node: Example Major Modes961866 +Node: Auto Major Mode969899 +Node: Mode Help977347 +Node: Derived Modes978448 +Node: Minor Modes980639 +Node: Minor Mode Conventions981941 +Node: Keymaps and Minor Modes984804 +Node: Modeline Format985639 +Node: Modeline Data987407 +Node: Modeline Variables991677 +Node: %-Constructs996393 +Node: Hooks999304 +Node: Documentation1006066 +Node: Documentation Basics1007489 +Node: Accessing Documentation1010539 +Node: Keys in Documentation1016818 +Node: Describing Characters1020297 +Node: Help Functions1022646 +Node: Obsoleteness1029097 +Node: Files1032091 +Node: Visiting Files1034016 +Node: Visiting Functions1035521 +Node: Subroutines of Visiting1040568 +Node: Saving Buffers1042641 +Node: Reading from Files1048734 +Node: Writing to Files1050891 +Node: File Locks1053608 +Node: Information about Files1056661 +Node: Testing Accessibility1057422 +Node: Kinds of Files1061162 +Node: Truenames1062843 +Node: File Attributes1063845 +Node: Changing File Attributes1068984 +Node: File Names1074390 +Node: File Name Components1075999 +Node: Directory Names1079100 +Node: Relative File Names1082553 +Node: File Name Expansion1083631 +Node: Unique File Names1087538 +Node: File Name Completion1089153 +Node: User Name Completion1091814 +Node: Contents of Directories1093154 +Node: Create/Delete Dirs1096467 +Node: Magic File Names1097573 +Node: Partial Files1103203 +Node: Intro to Partial Files1103431 +Node: Creating a Partial File1104671 +Node: Detached Partial Files1105606 +Node: Format Conversion1106728 +Node: Files and MS-DOS1113244 +Node: Backups and Auto-Saving1115308 +Node: Backup Files1115983 +Node: Making Backups1117380 +Node: Rename or Copy1120129 +Node: Numbered Backups1122622 +Node: Backup Names1124866 +Node: Auto-Saving1128158 +Node: Reverting1136300 +Node: Buffers1139458 +Node: Buffer Basics1140875 +Node: Current Buffer1142928 +Node: Buffer Names1147616 +Node: Buffer File Name1150821 +Node: Buffer Modification1154940 +Node: Modification Time1157133 +Node: Read Only Buffers1160508 +Node: The Buffer List1162926 +Node: Creating Buffers1167756 +Node: Killing Buffers1169902 +Node: Indirect Buffers1173633 +Node: Windows1176205 +Node: Basic Windows1177683 +Node: Splitting Windows1180781 +Node: Deleting Windows1187670 +Node: Selecting Windows1190350 +Node: Cyclic Window Ordering1193479 +Node: Buffers and Windows1198103 +Node: Displaying Buffers1199944 +Node: Choosing Window1205120 +Node: Window Point1212836 +Node: Window Start1214882 +Node: Vertical Scrolling1219372 +Node: Horizontal Scrolling1225509 +Node: Size of Window1229018 +Node: Position of Window1233736 +Node: Resizing Windows1235976 +Node: Window Configurations1241405 +Node: Frames1244830 +Node: Creating Frames1246599 +Node: Frame Properties1247940 +Node: Property Access1248756 +Node: Initial Properties1249605 +Node: X Frame Properties1252091 +Node: Size and Position1256725 +Node: Frame Name1258721 +Node: Frame Titles1259635 +Node: Deleting Frames1261459 +Node: Finding All Frames1262059 +Node: Frames and Windows1264053 +Node: Minibuffers and Frames1265758 +Node: Input Focus1266676 +Node: Visibility of Frames1269753 +Node: Raising and Lowering1271672 +Node: Frame Configurations1274048 +Node: Frame Hooks1274642 +Node: Consoles and Devices1276447 +Node: Basic Console Functions1279191 +Node: Basic Device Functions1279614 +Node: Console Types and Device Classes1280330 +Node: Connecting to a Console or Device1282527 +Node: The Selected Console and Device1284690 +Node: Console and Device I/O1285716 +Node: Positions1286480 +Node: Point1287449 +Node: Motion1290539 +Node: Character Motion1291306 +Node: Word Motion1293543 +Node: Buffer End Motion1295044 +Node: Text Lines1296541 +Node: Screen Lines1301136 +Node: List Motion1305199 +Node: Skipping Characters1308607 +Node: Excursions1310826 +Node: Narrowing1313858 +Node: Markers1319183 +Node: Overview of Markers1320089 +Node: Predicates on Markers1324781 +Node: Creating Markers1326027 +Node: Information from Markers1330064 +Node: Changing Markers1331162 +Node: The Mark1332540 +Node: The Region1341034 +Node: Text1346721 +Node: Near Point1349420 +Node: Buffer Contents1353607 +Node: Comparing Text1355013 +Node: Insertion1356421 +Node: Commands for Insertion1360263 +Node: Deletion1363219 +Node: User-Level Deletion1366814 +Node: The Kill Ring1370975 +Node: Kill Ring Concepts1373149 +Node: Kill Functions1374203 +Node: Yank Commands1376108 +Node: Low-Level Kill Ring1377979 +Node: Internals of Kill Ring1380765 +Node: Undo1383545 +Node: Maintaining Undo1387874 +Node: Filling1390494 +Node: Margins1396488 +Node: Auto Filling1400417 +Node: Sorting1401598 +Node: Columns1410898 +Node: Indentation1413414 +Node: Primitive Indent1414193 +Node: Mode-Specific Indent1415437 +Node: Region Indent1417948 +Node: Relative Indent1420896 +Node: Indent Tabs1423278 +Node: Motion by Indent1424599 +Node: Case Changes1425378 +Node: Text Properties1428629 +Node: Examining Properties1430442 +Node: Changing Properties1432309 +Node: Property Search1435900 +Node: Special Properties1440611 +Node: Saving Properties1440892 +Node: Substitution1444034 +Node: Registers1447304 +Node: Transposition1449847 +Node: Change Hooks1450741 +Node: Transformations1452781 +Node: Searching and Matching1457166 +Node: String Search1458297 +Node: Regular Expressions1463021 +Node: Syntax of Regexps1464388 +Node: Regexp Example1478767 +Node: Regexp Search1480937 +Node: POSIX Regexps1487025 +Node: Search and Replace1488860 +Node: Match Data1492225 +Node: Simple Match Data1493355 +Node: Replacing Match1497620 +Node: Entire Match Data1499954 +Node: Saving Match Data1501945 +Node: Searching and Case1503326 +Node: Standard Regexps1505360 +Node: Syntax Tables1507558 +Node: Syntax Basics1508672 +Node: Syntax Descriptors1511644 +Node: Syntax Class Table1513494 +Node: Syntax Flags1519532 +Node: Syntax Table Functions1522749 +Node: Motion and Syntax1526613 +Node: Parsing Expressions1528065 +Node: Standard Syntax Tables1534134 +Node: Syntax Table Internals1534978 +Node: Abbrevs1536004 +Node: Abbrev Mode1537807 +Node: Abbrev Tables1538527 +Node: Defining Abbrevs1540060 +Node: Abbrev Files1541965 +Node: Abbrev Expansion1543738 +Node: Standard Abbrev Tables1548369 +Node: Extents1549528 +Node: Intro to Extents1550771 +Node: Creating and Modifying Extents1554765 +Node: Extent Endpoints1556272 +Node: Finding Extents1559535 +Node: Mapping Over Extents1563284 +Node: Extent Properties1569401 +Node: Detached Extents1579545 +Node: Extent Parents1581404 +Node: Duplicable Extents1583099 +Node: Extents and Events1586320 +Node: Atomic Extents1588227 +Node: Specifiers1588674 +Node: Introduction to Specifiers1590481 +Node: Specifiers In-Depth1592791 +Node: Specifier Instancing1597705 +Node: Specifier Types1600967 +Node: Adding Specifications1606041 +Node: Retrieving Specifications1615403 +Node: Specifier Tag Functions1619138 +Node: Specifier Instancing Functions1622372 +Node: Specifier Example1625779 +Node: Creating Specifiers1628885 +Node: Specifier Validation Functions1631134 +Node: Other Specification Functions1633518 +Node: Faces and Window-System Objects1637337 +Node: Faces1637661 +Node: Merging Faces1639278 +Node: Basic Face Functions1641239 +Node: Face Properties1643337 +Node: Face Convenience Functions1652896 +Node: Other Face Display Functions1656026 +Node: Fonts1656839 +Node: Font Specifiers1657540 +Node: Font Instances1657781 +Node: Font Instance Names1658748 +Node: Font Instance Size1659589 +Node: Font Instance Characteristics1660875 +Node: Font Convenience Functions1662044 +Node: Colors1663334 +Node: Color Specifiers1663774 +Node: Color Instances1664001 +Node: Color Instance Properties1664745 +Node: Color Convenience Functions1665371 +Node: Glyphs1666424 +Node: Glyph Functions1668016 +Node: Creating Glyphs1668423 +Node: Glyph Properties1670010 +Node: Glyph Convenience Functions1679177 +Node: Glyph Dimensions1683124 +Node: Images1684204 +Node: Image Specifiers1684653 +Node: Image Instantiator Conversion1696075 +Node: Image Instances1697440 +Node: Image Instance Types1698191 +Node: Image Instance Functions1700846 +Node: Glyph Types1705415 +Node: Mouse Pointer1707187 +Node: Redisplay Glyphs1710190 +Node: Subwindows1711223 +Node: Annotations1711466 +Node: Annotation Basics1712482 +Node: Annotation Primitives1716420 +Node: Annotation Properties1717749 +Node: Locating Annotations1720789 +Node: Margin Primitives1721626 +Node: Annotation Hooks1723520 +Node: Display1724180 +Node: Refresh Screen1725158 +Node: Truncation1727069 +Node: The Echo Area1729594 +Node: Warnings1736029 +Node: Invisible Text1740465 +Node: Selective Display1743044 +Node: Overlay Arrow1747170 +Node: Temporary Displays1748523 +Node: Blinking1752644 +Node: Usual Display1754829 +Node: Display Tables1757378 +Node: Display Table Format1758182 +Node: Active Display Table1759624 +Node: Character Descriptors1760816 +Node: Beeping1761573 +Node: Hash Tables1766339 +Node: Introduction to Hash Tables1766947 +Node: Working With Hash Tables1772970 +Node: Weak Hash Tables1774087 +Node: Range Tables1775886 +Node: Introduction to Range Tables1776575 +Node: Working With Range Tables1777006 +Node: Databases1777891 +Node: Connecting to a Database1778190 +Node: Working With a Database1779281 +Node: Other Database Functions1780139 +Node: Processes1780713 +Node: Subprocess Creation1782937 +Node: Synchronous Processes1786226 +Node: MS-DOS Subprocesses1792944 +Node: Asynchronous Processes1794018 +Node: Deleting Processes1797731 +Node: Process Information1799602 +Node: Input to Processes1803528 +Node: Signals to Processes1805818 +Node: Output from Processes1810238 +Node: Process Buffers1811050 +Node: Filter Functions1813917 +Node: Accepting Output1819487 +Node: Sentinels1821014 +Node: Process Window Size1824504 +Node: Transaction Queues1824853 +Node: Network1826551 +Node: System Interface1828385 +Node: Starting Up1829655 +Node: Start-up Summary1830249 +Node: Init File1833803 +Node: Terminal-Specific1836184 +Node: Command Line Arguments1839343 +Node: Getting Out1842832 +Node: Killing XEmacs1843401 +Node: Suspending XEmacs1845070 +Node: System Environment1848412 +Node: User Identification1855079 +Node: Time of Day1858608 +Node: Time Conversion1861395 +Node: Timers1866435 +Node: Terminal Input1868608 +Node: Input Modes1869111 +Node: Translating Input1871524 +Node: Recording Input1875689 +Node: Terminal Output1877789 +Node: Flow Control1881412 +Node: Batch Mode1885204 +Node: X-Windows1886586 +Node: X Selections1887398 +Node: X Server1889608 +Node: Resources1890009 +Node: Server Data1895150 +Node: Grabs1896357 +Node: X Miscellaneous1897938 +Node: ToolTalk Support1900323 +Node: XEmacs ToolTalk API Summary1900540 +Node: Sending Messages1901840 +Node: Example of Sending Messages1902091 +Node: Elisp Interface for Sending Messages1903153 +Node: Receiving Messages1909546 +Node: Example of Receiving Messages1909769 +Node: Elisp Interface for Receiving Messages1910605 +Node: LDAP Support1914430 +Node: Building XEmacs with LDAP support1914926 +Node: XEmacs LDAP API1915904 +Node: LDAP Variables1916634 +Node: The High-Level LDAP API1919110 +Node: The Low-Level LDAP API1920215 +Node: The LDAP Lisp Object1920489 +Node: Opening and Closing a LDAP Connection1921042 +Node: Searching on a LDAP Server (Low-level)1922825 +Node: Syntax of Search Filters1924218 +Node: Internationalization1925516 +Node: I18N Levels 1 and 21925853 +Node: I18N Level 31926559 +Node: Level 3 Basics1926840 +Node: Level 3 Primitives1927673 +Node: Dynamic Messaging1929279 +Node: Domain Specification1929742 +Node: Documentation String Extraction1931645 +Node: I18N Level 41932563 +Node: MULE1932755 +Node: Internationalization Terminology1933866 +Node: Charsets1942405 +Node: Charset Properties1943101 +Node: Basic Charset Functions1947787 +Node: Charset Property Functions1949968 +Node: Predefined Charsets1952011 +Node: MULE Characters1954931 +Node: Composite Characters1955778 +Node: ISO 20221957032 +Node: Coding Systems1962754 +Node: Coding System Types1964676 +Node: EOL Conversion1966495 +Node: Coding System Properties1967678 +Node: Basic Coding System Functions1971530 +Node: Coding System Property Functions1973434 +Node: Encoding and Decoding Text1973992 +Node: Detection of Textual Encoding1975128 +Node: Big5 and Shift-JIS Functions1976664 +Node: CCL1977752 +Node: CCL Syntax1980856 +Node: CCL Statements1982444 +Node: CCL Expressions1987092 +Node: Calling CCL1989631 +Node: CCL Examples1992620 +Node: Category Tables1992757 +Node: Tips1995116 +Node: Style Tips1995757 +Node: Compilation Tips2005276 +Node: Documentation Tips2007190 +Node: Comment Tips2012699 +Node: Library Headers2015701 +Node: Building XEmacs and Object Allocation2019673 +Node: Building XEmacs2020556 +Node: Pure Storage2026891 +Node: Garbage Collection2029679 +Node: Standard Errors2040818 +Node: Standard Buffer-Local Variables2045027 +Node: Standard Keymaps2047660 +Node: Standard Hooks2051392 +Node: Index2058892  End Tag Table diff --git a/info/lispref.info-8 b/info/lispref.info-8 index c2d71fb..445d0fc 100644 --- a/info/lispref.info-8 +++ b/info/lispref.info-8 @@ -937,8 +937,8 @@ How to Signal an Error Most errors are signaled "automatically" within Lisp primitives which you call for other purposes, such as if you try to take the CAR of an integer or move forward a character at the end of the buffer; you -can also signal errors explicitly with the functions `error' and -`signal'. +can also signal errors explicitly with the functions `error', `signal', +and others. Quitting, which happens when the user types `C-g', is not considered an error, but it is handled almost like an error. *Note Quitting::. @@ -948,6 +948,11 @@ an error, but it is handled almost like an error. *Note Quitting::. applying `format' (*note String Conversion::) to FORMAT-STRING and ARGS. + This error is not continuable: you cannot continue execution after + the error using the debugger `r' or `c' commands. If you wish the + user to be able to continue execution, use `cerror' or `signal' + instead. + These examples show typical uses of `error': (error "You have committed an error. @@ -960,17 +965,23 @@ an error, but it is handled almost like an error. *Note Quitting::. `error' works by calling `signal' with two arguments: the error symbol `error', and a list containing the string returned by - `format'. + `format'. This is repeated in an endless loop, to ensure that + `error' never returns. If you want to use your own string as an error message verbatim, don't just write `(error STRING)'. If STRING contains `%', it will be interpreted as a format specifier, with undesirable results. Instead, use `(error "%s" STRING)'. + - Function: cerror format-string &rest args + This function behaves like `error', except that the error it + signals is continuable. That means that debugger commands `c' and + `r' can resume execution. + - Function: signal error-symbol data - This function signals an error named by ERROR-SYMBOL. The - argument DATA is a list of additional Lisp objects relevant to the - circumstances of the error. + This function signals a continuable error named by ERROR-SYMBOL. + The argument DATA is a list of additional Lisp objects relevant to + the circumstances of the error. The argument ERROR-SYMBOL must be an "error symbol"--a symbol bearing a property `error-conditions' whose value is a list of @@ -978,10 +989,10 @@ an error, but it is handled almost like an error. *Note Quitting::. sorts of errors. The number and significance of the objects in DATA depends on - ERROR-SYMBOL. For example, with a `wrong-type-arg' error, there - are two objects in the list: a predicate that describes the type - that was expected, and the object that failed to fit that type. - *Note Error Symbols::, for a description of error symbols. + ERROR-SYMBOL. For example, with a `wrong-type-argument' error, + there are two objects in the list: a predicate that describes the + type that was expected, and the object that failed to fit that + type. *Note Error Symbols::, for a description of error symbols. Both ERROR-SYMBOL and DATA are available to any error handlers that handle the error: `condition-case' binds a local variable to @@ -989,17 +1000,40 @@ an error, but it is handled almost like an error. *Note Quitting::. Errors::). If the error is not handled, these two values are used in printing the error message. - The function `signal' never returns (though in older Emacs versions - it could sometimes return). + The function `signal' can return, if the debugger is invoked and + the user invokes the "return from signal" option. If you want the + error not to be continuable, use `signal-error' instead. Note that + in FSF Emacs `signal' never returns. (signal 'wrong-number-of-arguments '(x y)) error--> Wrong number of arguments: x, y - (signal 'no-such-error '("My unknown error condition.")) - error--> peculiar error: "My unknown error condition." + (signal 'no-such-error '("My unknown error condition")) + error--> Peculiar error (no-such-error "My unknown error condition") + + - Function: signal-error error-symbol data + This function behaves like `signal', except that the error it + signals is not continuable. + + - Macro: check-argument-type predicate argument + This macro checks that ARGUMENT satisfies PREDICATE. If that is + not the case, it signals a continuable `wrong-type-argument' error + until the returned value satisfies PREDICATE, and assigns the + returned value to ARGUMENT. In other words, execution of the + program will not continue until PREDICATE is met. + + ARGUMENT is not evaluated, and should be a symbol. PREDICATE is + evaluated, and should name a function. - Common Lisp note: XEmacs Lisp has nothing like the Common Lisp - concept of continuable errors. + As shown in the following example, `check-argument-type' is useful + in low-level code that attempts to ensure the sanity of its data + before proceeding. + + (defun cache-object-internal (object wlist) + ;; Before doing anything, make sure that WLIST is indeed + ;; a weak list, which is what we expect. + (check-argument-type 'weak-list-p wlist) + ...)  File: lispref.info, Node: Processing of Errors, Next: Handling Errors, Prev: Signaling Errors, Up: Errors @@ -1022,6 +1056,25 @@ the command loop has an implicit handler for all kinds of errors. The command loop's handler uses the error symbol and associated data to print an error message. + Errors in command loop are processed using the `command-error' +function, which takes care of some necessary cleanup, and prints a +formatted error message to the echo area. The functions that do the +formatting are explained below. + + - Function: display-error error-object stream + This function displays ERROR-OBJECT on STREAM. ERROR-OBJECT is a + cons of error type, a symbol, and error arguments, a list. If the + error type symbol of one of its error condition superclasses has + an `display-error' property, that function is invoked for printing + the actual error message. Otherwise, the error is printed as + `Error: arg1, arg2, ...'. + + - Function: error-message-string error-object + This function converts ERROR-OBJECT to an error message string, + and returns it. The message is equivalent to the one that would be + printed by `display-error', except that it is conveniently returned + in string form. + An error that has no explicit handler may call the Lisp debugger. The debugger is enabled if the variable `debug-on-error' (*note Error Debugging::) is non-`nil'. Unlike error handlers, the debugger runs in @@ -1089,6 +1142,12 @@ such as failure to open a file in a call to `insert-file-contents'. It is also used to trap errors that are totally unpredictable, such as when the program evaluates an expression read from the user. + Even when an error is handled, the debugger may still be called if +the variable `debug-on-signal' (*note Error Debugging::) is non-`nil'. +Note that this may yield unpredictable results with code that traps +expected errors as normal part of its operation. Do not set +`debug-on-signal' unless you know what you are doing. + Error signaling and handling have some resemblance to `throw' and `catch', but they are entirely separate facilities. An error cannot be caught by a `catch', and a `throw' cannot be handled by an error @@ -1182,82 +1241,3 @@ including those signaled with `error': -| The error was: (error "Rats! The variable baz was 34, not 35") => 2 - -File: lispref.info, Node: Error Symbols, Prev: Handling Errors, Up: Errors - -Error Symbols and Condition Names -................................. - - When you signal an error, you specify an "error symbol" to specify -the kind of error you have in mind. Each error has one and only one -error symbol to categorize it. This is the finest classification of -errors defined by the XEmacs Lisp language. - - These narrow classifications are grouped into a hierarchy of wider -classes called "error conditions", identified by "condition names". -The narrowest such classes belong to the error symbols themselves: each -error symbol is also a condition name. There are also condition names -for more extensive classes, up to the condition name `error' which -takes in all kinds of errors. Thus, each error has one or more -condition names: `error', the error symbol if that is distinct from -`error', and perhaps some intermediate classifications. - - In order for a symbol to be an error symbol, it must have an -`error-conditions' property which gives a list of condition names. -This list defines the conditions that this kind of error belongs to. -(The error symbol itself, and the symbol `error', should always be -members of this list.) Thus, the hierarchy of condition names is -defined by the `error-conditions' properties of the error symbols. - - In addition to the `error-conditions' list, the error symbol should -have an `error-message' property whose value is a string to be printed -when that error is signaled but not handled. If the `error-message' -property exists, but is not a string, the error message `peculiar -error' is used. - - Here is how we define a new error symbol, `new-error': - - (put 'new-error - 'error-conditions - '(error my-own-errors new-error)) - => (error my-own-errors new-error) - (put 'new-error 'error-message "A new error") - => "A new error" - -This error has three condition names: `new-error', the narrowest -classification; `my-own-errors', which we imagine is a wider -classification; and `error', which is the widest of all. - - The error string should start with a capital letter but it should -not end with a period. This is for consistency with the rest of Emacs. - - Naturally, XEmacs will never signal `new-error' on its own; only an -explicit call to `signal' (*note Signaling Errors::) in your code can -do this: - - (signal 'new-error '(x y)) - error--> A new error: x, y - - This error can be handled through any of the three condition names. -This example handles `new-error' and any other errors in the class -`my-own-errors': - - (condition-case foo - (bar nil t) - (my-own-errors nil)) - - The significant way that errors are classified is by their condition -names--the names used to match errors with handlers. An error symbol -serves only as a convenient way to specify the intended error message -and list of condition names. It would be cumbersome to give `signal' a -list of condition names rather than one error symbol. - - By contrast, using only error symbols without condition names would -seriously decrease the power of `condition-case'. Condition names make -it possible to categorize errors at various levels of generality when -you write an error handler. Using error symbols alone would eliminate -all but the narrowest level of classification. - - *Note Standard Errors::, for a list of all the standard error symbols -and their conditions. - diff --git a/info/lispref.info-9 b/info/lispref.info-9 index 5b59644..d9a7549 100644 --- a/info/lispref.info-9 +++ b/info/lispref.info-9 @@ -50,6 +50,92 @@ may be included in a translation approved by the Free Software Foundation instead of in the original English.  +File: lispref.info, Node: Error Symbols, Prev: Handling Errors, Up: Errors + +Error Symbols and Condition Names +................................. + + When you signal an error, you specify an "error symbol" to specify +the kind of error you have in mind. Each error has one and only one +error symbol to categorize it. This is the finest classification of +errors defined by the XEmacs Lisp language. + + These narrow classifications are grouped into a hierarchy of wider +classes called "error conditions", identified by "condition names". +The narrowest such classes belong to the error symbols themselves: each +error symbol is also a condition name. There are also condition names +for more extensive classes, up to the condition name `error' which +takes in all kinds of errors. Thus, each error has one or more +condition names: `error', the error symbol if that is distinct from +`error', and perhaps some intermediate classifications. + + In other words, each error condition "inherits" from another error +condition, with `error' sitting at the top of the inheritance hierarchy. + + - Function: define-error error-symbol error-message &optional + inherits-from + This function defines a new error, denoted by ERROR-SYMBOL. + ERROR-MESSAGE is an informative message explaining the error, and + will be printed out when an unhandled error occurs. ERROR-SYMBOL + is a sub-error of INHERITS-FROM (which defaults to `error'). + + `define-error' internally works by putting on ERROR-SYMBOL an + `error-message' property whose value is ERROR-MESSAGE, and an + `error-conditions' property that is a list of ERROR-SYMBOL + followed by each of its super-errors, up to and including `error'. + You will sometimes see code that sets this up directly rather than + calling `define-error', but you should _not_ do this yourself, + unless you wish to maintain compatibility with FSF Emacs, which + does not provide `define-error'. + + Here is how we define a new error symbol, `new-error', that belongs +to a range of errors called `my-own-errors': + + (define-error 'my-own-errors "A whole range of errors" 'error) + (define-error 'new-error "A new error" 'my-own-errors) + +`new-error' has three condition names: `new-error', the narrowest +classification; `my-own-errors', which we imagine is a wider +classification; and `error', which is the widest of all. + + Note that it is not legal to try to define an error unless its +super-error is also defined. For instance, attempting to define +`new-error' before `my-own-errors' are defined will signal an error. + + The error string should start with a capital letter but it should +not end with a period. This is for consistency with the rest of Emacs. + + Naturally, XEmacs will never signal `new-error' on its own; only an +explicit call to `signal' (*note Signaling Errors::) in your code can +do this: + + (signal 'new-error '(x y)) + error--> A new error: x, y + + This error can be handled through any of the three condition names. +This example handles `new-error' and any other errors in the class +`my-own-errors': + + (condition-case foo + (bar nil t) + (my-own-errors nil)) + + The significant way that errors are classified is by their condition +names--the names used to match errors with handlers. An error symbol +serves only as a convenient way to specify the intended error message +and list of condition names. It would be cumbersome to give `signal' a +list of condition names rather than one error symbol. + + By contrast, using only error symbols without condition names would +seriously decrease the power of `condition-case'. Condition names make +it possible to categorize errors at various levels of generality when +you write an error handler. Using error symbols alone would eliminate +all but the narrowest level of classification. + + *Note Standard Errors::, for a list of all the standard error symbols +and their conditions. + + File: lispref.info, Node: Cleanups, Prev: Errors, Up: Nonlocal Exits Cleaning Up from Nonlocal Exits @@ -1126,86 +1212,3 @@ Creating and Deleting Buffer-Local Bindings appropriate for data pertaining to where the file came from or how to save it, rather than with how to edit the contents. - -File: lispref.info, Node: Default Value, Prev: Creating Buffer-Local, Up: Buffer-Local Variables - -The Default Value of a Buffer-Local Variable --------------------------------------------- - - The global value of a variable with buffer-local bindings is also -called the "default" value, because it is the value that is in effect -except when specifically overridden. - - The functions `default-value' and `setq-default' access and change a -variable's default value regardless of whether the current buffer has a -buffer-local binding. For example, you could use `setq-default' to -change the default setting of `paragraph-start' for most buffers; and -this would work even when you are in a C or Lisp mode buffer that has a -buffer-local value for this variable. - - The special forms `defvar' and `defconst' also set the default value -(if they set the variable at all), rather than any local value. - - - Function: default-value symbol - This function returns SYMBOL's default value. This is the value - that is seen in buffers that do not have their own values for this - variable. If SYMBOL is not buffer-local, this is equivalent to - `symbol-value' (*note Accessing Variables::). - - - Function: default-boundp symbol - The function `default-boundp' tells you whether SYMBOL's default - value is nonvoid. If `(default-boundp 'foo)' returns `nil', then - `(default-value 'foo)' would get an error. - - `default-boundp' is to `default-value' as `boundp' is to - `symbol-value'. - - - Special Form: setq-default symbol value - This sets the default value of SYMBOL to VALUE. It does not - evaluate SYMBOL, but does evaluate VALUE. The value of the - `setq-default' form is VALUE. - - If a SYMBOL is not buffer-local for the current buffer, and is not - marked automatically buffer-local, `setq-default' has the same - effect as `setq'. If SYMBOL is buffer-local for the current - buffer, then this changes the value that other buffers will see - (as long as they don't have a buffer-local value), but not the - value that the current buffer sees. - - ;; In buffer `foo': - (make-local-variable 'local) - => local - (setq local 'value-in-foo) - => value-in-foo - (setq-default local 'new-default) - => new-default - local - => value-in-foo - (default-value 'local) - => new-default - - ;; In (the new) buffer `bar': - local - => new-default - (default-value 'local) - => new-default - (setq local 'another-default) - => another-default - (default-value 'local) - => another-default - - ;; Back in buffer `foo': - local - => value-in-foo - (default-value 'local) - => another-default - - - Function: set-default symbol value - This function is like `setq-default', except that SYMBOL is - evaluated. - - (set-default (car '(a b c)) 23) - => 23 - (default-value 'a) - => 23 - diff --git a/info/new-users-guide.info b/info/new-users-guide.info index 32e78d1..a88cba6 100644 --- a/info/new-users-guide.info +++ b/info/new-users-guide.info @@ -19,58 +19,58 @@ preserved on all copies.  Indirect: new-users-guide.info-1: 635 -new-users-guide.info-2: 50471 -new-users-guide.info-3: 99973 +new-users-guide.info-2: 50468 +new-users-guide.info-3: 99970  Tag Table: (Indirect) Node: Top635 -Node: Intro4615 -Node: Entering7198 -Node: Enter8712 -Node: Frame9394 -Node: Exiting11063 -Node: Mode Line12263 -Node: Echo Area14410 -Node: Windows and Menus15765 -Node: XEmacs Window16218 -Node: Pull-down Menus19839 -Node: File menu20718 -Node: Edit menu23977 -Node: Options Menu26503 -Node: Buffers Menu31285 -Node: Help menu31671 -Node: Edit32169 -Node: Insert33763 -Node: Cursor Position35091 -Node: Erase37162 -Node: Numeric Argument38316 -Node: Undo39500 -Node: Customization Basics40263 -Node: Customizing key Bindings41492 -Node: Customizing Menus44982 -Node: Help50471 -Node: The Help Menu51159 -Node: Modes56084 -Node: Major Modes57000 -Node: Minor Modes60949 -Node: Files65035 -Node: File Names65757 -Node: Visiting67560 -Node: Saving Files69684 -Node: Other Customizations73061 -Node: Setting Variables75529 -Node: Init File78738 -Node: Select and Move84208 -Node: Selecting Text85162 -Node: Mouse86675 -Node: Region Operation88000 -Node: Moving Text89260 -Node: Accumulating text90500 -Node: Search and Replace92820 -Node: Key Index96684 -Node: Command Index99973 -Node: Variable Index104075 -Node: Concept Index104652 +Node: Intro4612 +Node: Entering7195 +Node: Enter8709 +Node: Frame9391 +Node: Exiting11060 +Node: Mode Line12260 +Node: Echo Area14407 +Node: Windows and Menus15762 +Node: XEmacs Window16215 +Node: Pull-down Menus19836 +Node: File menu20715 +Node: Edit menu23974 +Node: Options Menu26500 +Node: Buffers Menu31282 +Node: Help menu31668 +Node: Edit32166 +Node: Insert33760 +Node: Cursor Position35088 +Node: Erase37159 +Node: Numeric Argument38313 +Node: Undo39497 +Node: Customization Basics40260 +Node: Customizing key Bindings41489 +Node: Customizing Menus44979 +Node: Help50468 +Node: The Help Menu51156 +Node: Modes56081 +Node: Major Modes56997 +Node: Minor Modes60946 +Node: Files65032 +Node: File Names65754 +Node: Visiting67557 +Node: Saving Files69681 +Node: Other Customizations73058 +Node: Setting Variables75526 +Node: Init File78735 +Node: Select and Move84205 +Node: Selecting Text85159 +Node: Mouse86672 +Node: Region Operation87997 +Node: Moving Text89257 +Node: Accumulating text90497 +Node: Search and Replace92817 +Node: Key Index96681 +Node: Command Index99970 +Node: Variable Index104072 +Node: Concept Index104649  End Tag Table diff --git a/info/xemacs-faq.info b/info/xemacs-faq.info index 40abb30e4..b49967c 100644 --- a/info/xemacs-faq.info +++ b/info/xemacs-faq.info @@ -9,259 +9,256 @@ END-INFO-DIR-ENTRY  Indirect: xemacs-faq.info-1: 195 -xemacs-faq.info-2: 47990 -xemacs-faq.info-3: 95703 -xemacs-faq.info-4: 145538 -xemacs-faq.info-5: 195121 +xemacs-faq.info-2: 49906 +xemacs-faq.info-3: 99720 +xemacs-faq.info-4: 149713 +xemacs-faq.info-5: 199295  Tag Table: (Indirect) Node: Top195 -Node: Introduction16769 -Node: Q1.0.120249 -Node: Q1.0.220785 -Node: Q1.0.321280 -Node: Q1.0.421542 -Node: Q1.0.522992 -Node: Q1.0.623681 -Node: Q1.0.724687 -Node: Q1.0.824936 -Node: Q1.0.925151 -Node: Q1.0.1025429 -Node: Q1.0.1125672 -Node: Q1.0.1226129 -Node: Q1.0.1326497 -Node: Q1.0.1426732 -Node: Q1.1.127206 -Node: Q1.1.228283 -Node: Q1.1.328676 -Node: Q1.2.129627 -Node: Q1.2.230683 -Node: Q1.2.331117 -Node: Q1.3.132068 -Node: Q1.3.235986 -Node: Q1.3.336541 -Node: Q1.3.436782 -Node: Q1.3.537546 -Node: Q1.3.639961 -Node: Q1.3.741456 -Node: Q1.4.142391 -Node: Q1.4.243253 -Node: Q1.4.343594 -Node: Q1.4.444013 -Node: Q1.4.545553 -Node: Q1.4.645857 -Node: Q1.4.746865 -Node: Installation47990 -Node: Q2.0.150454 -Node: Q2.0.251327 -Node: Q2.0.358530 -Node: Q2.0.459828 -Node: Q2.0.560420 -Node: Q2.0.660788 -Node: Q2.0.761169 -Node: Q2.0.861550 -Node: Q2.0.963128 -Node: Q2.0.1064566 -Node: Q2.0.1165410 -Node: Q2.0.1266351 -Node: Q2.0.1367874 -Node: Q2.0.1468532 -Node: Q2.1.169100 -Node: Q2.1.271842 -Node: Q2.1.373019 -Node: Q2.1.474312 -Node: Q2.1.575111 -Node: Q2.1.675473 -Node: Q2.1.775950 -Node: Q2.1.876303 -Node: Q2.1.977819 -Node: Q2.1.1078241 -Node: Q2.1.1178998 -Node: Q2.1.1279863 -Node: Q2.1.1380818 -Node: Q2.1.1481849 -Node: Q2.1.1582960 -Node: Q2.1.1688918 -Node: Q2.1.1789612 -Node: Q2.1.1890209 -Node: Q2.1.1992006 -Node: Q2.1.2092536 -Node: Q2.1.2192918 -Node: Q2.1.2293208 -Node: Q2.1.2394505 -Node: Q2.1.2495173 -Node: Customization95703 -Node: Q3.0.1100590 -Node: Q3.0.2101296 -Node: Q3.0.3101860 -Node: Q3.0.4102277 -Node: Q3.0.5103110 -Node: Q3.0.6103891 -Node: Q3.0.7104471 -Node: Q3.0.8105135 -Node: Q3.0.9105981 -Node: Q3.1.1106542 -Node: Q3.1.2107279 -Node: Q3.1.3107710 -Node: Q3.1.4108295 -Node: Q3.1.5108831 -Node: Q3.1.6109215 -Node: Q3.1.7109896 -Node: Q3.1.8112120 -Node: Q3.2.1112662 -Node: Q3.2.2114070 -Node: Q3.2.3114869 -Node: Q3.2.4115471 -Node: Q3.2.5116505 -Node: Q3.2.6116972 -Node: Q3.3.1117934 -Node: Q3.3.2118327 -Node: Q3.3.3118958 -Node: Q3.3.4119339 -Node: Q3.3.5120433 -Node: Q3.4.1121927 -Node: Q3.4.2122570 -Node: Q3.5.1123082 -Node: Q3.5.2124536 -Node: Q3.5.3124954 -Node: Q3.5.4125794 -Node: Q3.5.5126626 -Node: Q3.5.6127766 -Node: Q3.5.7128756 -Node: Q3.5.8130108 -Node: Q3.5.9130855 -Node: Q3.5.10131635 -Node: Q3.5.11132271 -Node: Q3.6.1132824 -Node: Q3.6.2133564 -Node: Q3.6.3133992 -Node: Q3.7.1134492 -Node: Q3.7.2135380 -Node: Q3.7.3136039 -Node: Q3.7.4136461 -Node: Q3.7.5136804 -Node: Q3.7.6137272 -Node: Q3.7.7137987 -Node: Q3.7.8139007 -Node: Q3.8.1139426 -Node: Q3.8.2139886 -Node: Q3.8.3140349 -Node: Q3.8.4140955 -Node: Q3.8.5141674 -Node: Q3.9.1142459 -Node: Q3.9.2143399 -Node: Q3.9.3143997 -Node: Q3.9.4144659 -Node: Q3.10.1145538 -Node: Q3.10.2146356 -Node: Q3.10.3147137 -Node: Q3.10.4147865 -Node: Q3.10.5148248 -Node: Subsystems149258 -Node: Q4.0.1151743 -Node: Q4.0.2152268 -Node: Q4.0.3152826 -Node: Q4.0.4153147 -Node: Q4.0.5153389 -Node: Q4.0.6153620 -Node: Q4.0.7154201 -Node: Q4.0.8154526 -Node: Q4.0.9155753 -Node: Q4.0.10157791 -Node: Q4.0.11158245 -Node: Q4.0.12159095 -Node: Q4.1.1160068 -Node: Q4.1.2160471 -Node: Q4.1.3160798 -Node: Q4.2.1161107 -Node: Q4.2.2161737 -Node: Q4.2.3161977 -Node: Q4.2.4162521 -Node: Q4.3.1163174 -Node: Q4.3.2163758 -Node: Q4.3.3165239 -Node: Q4.3.4165511 -Node: Q4.3.5166188 -Node: Q4.4.1166816 -Node: Q4.4.2168302 -Node: Q4.5.1169506 -Node: Q4.6.1170275 -Node: Q4.7.1175535 -Node: Q4.7.2176490 -Node: Q4.7.3176787 -Node: Q4.7.4177133 -Node: Q4.7.5178017 -Node: Q4.7.6179659 -Node: Miscellaneous179948 -Node: Q5.0.1183368 -Node: Q5.0.2184102 -Node: Q5.0.3184956 -Node: Q5.0.4185658 -Node: Q5.0.5186597 -Node: Q5.0.6188577 -Node: Q5.0.7189234 -Node: Q5.0.8189839 -Node: Q5.0.9190358 -Node: Q5.0.10190872 -Node: Q5.0.11191120 -Node: Q5.0.12191681 -Node: Q5.0.13192598 -Node: Q5.0.14193282 -Node: Q5.0.15194047 -Node: Q5.0.16194344 -Node: Q5.0.17194856 -Node: Q5.0.18195121 -Node: Q5.0.19195647 -Node: Q5.0.20196071 -Node: Q5.1.1196986 -Node: Q5.1.2199055 -Node: Q5.1.3199791 -Node: Q5.1.4203185 -Node: Q5.1.5203720 -Node: Q5.1.6205814 -Node: Q5.1.7207203 -Node: Q5.1.8208804 -Node: Q5.1.9209356 -Node: Q5.1.10210241 -Node: Q5.1.11211372 -Node: Q5.2.1211921 -Node: Q5.2.2212492 -Node: Q5.2.3212909 -Node: Q5.2.4213144 -Node: Q5.3.1214054 -Node: Q5.3.2215275 -Node: Q5.3.3216051 -Node: Q5.3.4216535 -Node: Q5.3.5217202 -Node: Q5.3.6218071 -Node: Q5.3.7218316 -Node: Q5.3.8220506 -Node: Q5.3.9220753 -Node: Q5.3.10221706 -Node: Q5.3.11223790 -Node: Q5.3.12225339 -Node: MS Windows226613 -Node: Q6.0.1227944 -Node: Q6.0.2228691 -Node: Q6.0.3229156 -Node: Q6.0.4229436 -Node: Q6.1.1231717 -Node: Q6.1.2232588 -Node: Q6.1.3232869 -Node: Q6.1.4233151 -Node: Q6.1.5233529 -Node: Q6.1.6234361 -Node: Q6.2.1234945 -Node: Q6.2.2235846 -Node: Q6.2.3236247 -Node: Q6.3.1236536 -Node: Q6.3.2237630 -Node: Q6.3.3240811 -Node: Current Events241065 -Node: Q7.0.1241719 -Node: Q7.0.2242358 -Node: Q7.0.3243432 -Node: Q7.0.4243660 +Node: Introduction16541 +Node: Q1.0.119944 +Node: Q1.0.220480 +Node: Q1.0.320975 +Node: Q1.0.421237 +Node: Q1.0.522687 +Node: Q1.0.623376 +Node: Q1.0.724382 +Node: Q1.0.824631 +Node: Q1.0.924846 +Node: Q1.0.1025124 +Node: Q1.0.1125367 +Node: Q1.0.1225802 +Node: Q1.0.1326170 +Node: Q1.0.1426419 +Node: Q1.1.126893 +Node: Q1.1.227970 +Node: Q1.1.328363 +Node: Q1.2.129314 +Node: Q1.2.230370 +Node: Q1.2.330804 +Node: Q1.3.131888 +Node: Q1.3.235806 +Node: Q1.3.336361 +Node: Q1.3.436602 +Node: Q1.3.537366 +Node: Q1.3.639781 +Node: Q1.3.741276 +Node: Q1.4.142211 +Node: Q1.4.243073 +Node: Q1.4.343414 +Node: Q1.4.443833 +Node: Q1.4.545373 +Node: Q1.4.645677 +Node: Installation46670 +Node: Q2.0.149033 +Node: Q2.0.249906 +Node: Q2.0.357109 +Node: Q2.0.458407 +Node: Q2.0.558999 +Node: Q2.0.659367 +Node: Q2.0.759748 +Node: Q2.0.860129 +Node: Q2.0.961707 +Node: Q2.0.1063145 +Node: Q2.0.1163989 +Node: Q2.0.1264930 +Node: Q2.1.166452 +Node: Q2.1.269194 +Node: Q2.1.370371 +Node: Q2.1.471664 +Node: Q2.1.572463 +Node: Q2.1.672825 +Node: Q2.1.773302 +Node: Q2.1.873655 +Node: Q2.1.975171 +Node: Q2.1.1075593 +Node: Q2.1.1176350 +Node: Q2.1.1277215 +Node: Q2.1.1378170 +Node: Q2.1.1479201 +Node: Q2.1.1580312 +Node: Q2.1.1687344 +Node: Q2.1.1788038 +Node: Q2.1.1888635 +Node: Q2.1.1988762 +Node: Q2.1.2089292 +Node: Q2.1.2189674 +Node: Q2.1.2289867 +Node: Q2.1.2391164 +Node: Q2.1.2491832 +Node: Customization92362 +Node: Q3.0.197200 +Node: Q3.0.297906 +Node: Q3.0.398470 +Node: Q3.0.498887 +Node: Q3.0.599720 +Node: Q3.0.6100501 +Node: Q3.0.7101081 +Node: Q3.0.8101745 +Node: Q3.0.9102591 +Node: Q3.1.1103152 +Node: Q3.1.2103889 +Node: Q3.1.3104320 +Node: Q3.1.4104509 +Node: Q3.1.5104698 +Node: Q3.1.6105082 +Node: Q3.1.7105763 +Node: Q3.1.8107987 +Node: Q3.2.1108529 +Node: Q3.2.2109937 +Node: Q3.2.3110736 +Node: Q3.2.4111338 +Node: Q3.2.5112372 +Node: Q3.2.6112839 +Node: Q3.3.1113801 +Node: Q3.3.2114194 +Node: Q3.3.3114825 +Node: Q3.3.4115206 +Node: Q3.3.5116300 +Node: Q3.4.1117794 +Node: Q3.4.2118437 +Node: Q3.5.1118949 +Node: Q3.5.2120403 +Node: Q3.5.3120821 +Node: Q3.5.4121661 +Node: Q3.5.5122493 +Node: Q3.5.6123633 +Node: Q3.5.7124623 +Node: Q3.5.8125975 +Node: Q3.5.9126722 +Node: Q3.5.10127502 +Node: Q3.5.11128138 +Node: Q3.6.1128691 +Node: Q3.6.2129431 +Node: Q3.6.3129859 +Node: Q3.7.1130359 +Node: Q3.7.2131247 +Node: Q3.7.3131906 +Node: Q3.7.4132328 +Node: Q3.7.5132671 +Node: Q3.7.6133139 +Node: Q3.7.7133854 +Node: Q3.7.8134874 +Node: Q3.8.1135293 +Node: Q3.8.2135753 +Node: Q3.8.3136216 +Node: Q3.8.4136822 +Node: Q3.8.5137541 +Node: Q3.9.1138326 +Node: Q3.9.2139266 +Node: Q3.9.3139864 +Node: Q3.9.4140526 +Node: Q3.10.1141405 +Node: Q3.10.2142223 +Node: Q3.10.3143228 +Node: Q3.10.4143956 +Node: Q3.10.5144339 +Node: Subsystems145349 +Node: Q4.0.1147836 +Node: Q4.0.2148361 +Node: Q4.0.3148919 +Node: Q4.0.4149240 +Node: Q4.0.5149482 +Node: Q4.0.6149713 +Node: Q4.0.7150294 +Node: Q4.0.8150619 +Node: Q4.0.9151846 +Node: Q4.0.10153884 +Node: Q4.0.11154338 +Node: Q4.0.12155188 +Node: Q4.1.1156161 +Node: Q4.1.2156564 +Node: Q4.1.3156891 +Node: Q4.2.1157200 +Node: Q4.2.2157830 +Node: Q4.2.3158070 +Node: Q4.2.4158614 +Node: Q4.3.1159267 +Node: Q4.3.2159851 +Node: Q4.3.3161332 +Node: Q4.3.4161604 +Node: Q4.3.5162281 +Node: Q4.4.1162909 +Node: Q4.4.2164395 +Node: Q4.5.1165599 +Node: Q4.6.1166368 +Node: Q4.7.1171628 +Node: Q4.7.2172583 +Node: Q4.7.3172880 +Node: Q4.7.4173066 +Node: Q4.7.5173950 +Node: Q4.7.6175592 +Node: Miscellaneous175881 +Node: Q5.0.1179298 +Node: Q5.0.2180032 +Node: Q5.0.3180886 +Node: Q5.0.4181588 +Node: Q5.0.5182527 +Node: Q5.0.6184507 +Node: Q5.0.7185164 +Node: Q5.0.8185769 +Node: Q5.0.9186288 +Node: Q5.0.10186802 +Node: Q5.0.11187050 +Node: Q5.0.12187588 +Node: Q5.0.13188505 +Node: Q5.0.14189189 +Node: Q5.0.15189954 +Node: Q5.0.16190251 +Node: Q5.0.17190763 +Node: Q5.0.18191028 +Node: Q5.0.19191222 +Node: Q5.0.20191646 +Node: Q5.1.1192561 +Node: Q5.1.2194630 +Node: Q5.1.3195366 +Node: Q5.1.4198760 +Node: Q5.1.5199295 +Node: Q5.1.6201389 +Node: Q5.1.7202778 +Node: Q5.1.8204379 +Node: Q5.1.9204931 +Node: Q5.1.10205816 +Node: Q5.1.11206947 +Node: Q5.2.1207496 +Node: Q5.2.2208067 +Node: Q5.2.3208484 +Node: Q5.2.4208719 +Node: Q5.3.1209629 +Node: Q5.3.2210850 +Node: Q5.3.3211626 +Node: Q5.3.4212110 +Node: Q5.3.5212777 +Node: Q5.3.6213646 +Node: Q5.3.7213891 +Node: Q5.3.8216081 +Node: Q5.3.9216328 +Node: Q5.3.10217281 +Node: Q5.3.11219365 +Node: Q5.3.12220914 +Node: MS Windows222188 +Node: Q6.0.1223519 +Node: Q6.0.2224266 +Node: Q6.0.3224731 +Node: Q6.0.4225011 +Node: Q6.1.1227292 +Node: Q6.1.2228163 +Node: Q6.1.3228444 +Node: Q6.1.4228726 +Node: Q6.1.5229104 +Node: Q6.1.6229936 +Node: Q6.2.1230520 +Node: Q6.2.2231421 +Node: Q6.2.3231822 +Node: Q6.3.1232111 +Node: Q6.3.2233205 +Node: Q6.3.3236386 +Node: Current Events236640 +Node: Q7.0.1237294 +Node: Q7.0.2237933 +Node: Q7.0.3239007 +Node: Q7.0.4239235  End Tag Table diff --git a/info/xemacs-faq.info-1 b/info/xemacs-faq.info-1 index ccd10c3..1b14b52 100644 --- a/info/xemacs-faq.info-1 +++ b/info/xemacs-faq.info-1 @@ -88,7 +88,6 @@ Getting Started: * Q1.4.4:: May I see an example of a useful XEmacs Lisp function? * Q1.4.5:: And how do I bind it to a key? * Q1.4.6:: What's the difference between a macro and a function? -* Q1.4.7:: Why options saved with 19.13 don't work with 19.14 or later? Installation and Trouble Shooting @@ -104,8 +103,6 @@ Installation and Trouble Shooting * Q2.0.10:: After I run configure I find a coredump, is something wrong? * Q2.0.11:: XEmacs can't resolve host names. * Q2.0.12:: Why can't I strip XEmacs? -* Q2.0.13:: Can't link XEmacs on Solaris with Gcc. -* Q2.0.14:: Make on HP/UX 9 fails after linking temacs Trouble Shooting: * Q2.1.1:: XEmacs just crashed on me! @@ -125,10 +122,10 @@ Trouble Shooting: * Q2.1.15:: How to debug an XEmacs problem with a debugger. * Q2.1.16:: XEmacs crashes in `strcat' on HP/UX 10. * Q2.1.17:: `Marker does not point anywhere'. -* Q2.1.18:: 19.14 hangs on HP/UX 10.10. +* Q2.1.18:: [This question intentionally left blank] * Q2.1.19:: XEmacs does not follow the local timezone. * Q2.1.20:: `Symbol's function definition is void: hkey-help-show.' -* Q2.1.21:: Every so often the XEmacs frame freezes. +* Q2.1.21:: [This question intentionally left blank] * Q2.1.22:: XEmacs seems to take a really long time to do some things. * Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later. * Q2.1.24:: XEmacs won't start without network. (NEW) @@ -148,8 +145,8 @@ Customization and Options X Window System & Resources: * Q3.1.1:: Where is a list of X resources? * Q3.1.2:: How can I detect a color display? -* Q3.1.3:: `(set-screen-width)' worked in 19.6, but not in 19.13? -* Q3.1.4:: Specifying `Emacs*EmacsScreen.geometry' in `.emacs' does not work in 19.15? +* Q3.1.3:: [This question intentionally left blank] +* Q3.1.4:: [This question intentionally left blank] * Q3.1.5:: How can I get the icon to just say `XEmacs'? * Q3.1.6:: How can I have the window title area display the full path? * Q3.1.7:: `xemacs -name junk' doesn't work? @@ -268,7 +265,7 @@ Infodock: Other Unbundled Packages: * Q4.7.1:: What is AUC TeX? Where do you get it? * Q4.7.2:: Are there any Emacs Lisp Spreadsheets? -* Q4.7.3:: Byte compiling AUC TeX on XEmacs 19.14 +* Q4.7.3:: [This question intentionally left blank] * Q4.7.4:: Problems installing AUC TeX * Q4.7.5:: Is there a reason for an Emacs package not to be included in XEmacs? * Q4.7.6:: Is there a MatLab mode? @@ -285,14 +282,14 @@ The Miscellaneous Stuff * Q5.0.8:: Why does edt emulation not work? * Q5.0.9:: How can I emulate VI and use it as my default mode? * Q5.0.10:: [This question intentionally left blank] -* Q5.0.11:: Filladapt doesn't work in 19.15? +* Q5.0.11:: How do I turn on filladapt for all buffers? * Q5.0.12:: How do I disable gnuserv from opening a new frame? * Q5.0.13:: How do I start gnuserv so that each subsequent XEmacs is a client? * Q5.0.14:: Strange things are happening in Shell Mode. * Q5.0.15:: Where do I get the latest CC Mode? * Q5.0.16:: I find auto-show-mode disconcerting. How do I turn it off? * Q5.0.17:: How can I get two instances of info? -* Q5.0.18:: I upgraded to XEmacs 19.14 and gnuserv stopped working +* Q5.0.18:: [This question intentionally left blank] * Q5.0.19:: Is there something better than LaTeX mode? * Q5.0.20:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? @@ -437,7 +434,6 @@ Getting Started: * Q1.4.4:: May I see an example of a useful XEmacs Lisp function? * Q1.4.5:: And how do I bind it to a key? * Q1.4.6:: What's the difference between a macro and a function? -* Q1.4.7:: Why options saved with 19.13 don't work with 19.14 or later?  File: xemacs-faq.info, Node: Q1.0.1, Next: Q1.0.2, Prev: Introduction, Up: Introduction @@ -611,12 +607,10 @@ File: xemacs-faq.info, Node: Q1.0.11, Next: Q1.0.12, Prev: Q1.0.10, Up: Intr Q1.0.11: Is there a port of XEmacs to the Macintosh? ---------------------------------------------------- - There has been a port to the MachTen environment of XEmacs 19.13, -but no patches have been submitted to the maintainers to get this in the -mainstream distribution. - - For the MacOS, there is a port of Emacs 18.59 -(ftp://ftp.cs.cornell.edu/pub/parmet/). + Yes, there is a port of XEmacs 19.14, tested on MacOS 7.6.1 and MacOS +8.5.1 by Pitts Jarvis (pjarvis@ispchannel.com). It's available at +http://my.ispchannel.com/~pjarvis/xemacs.html +(http://my.ispchannel.com/~pjarvis/xemacs.html).  File: xemacs-faq.info, Node: Q1.0.12, Next: Q1.0.13, Prev: Q1.0.11, Up: Introduction @@ -634,7 +628,7 @@ File: xemacs-faq.info, Node: Q1.0.13, Next: Q1.0.14, Prev: Q1.0.12, Up: Intr Q1.0.13: Is there a port of XEmacs to OS/2? ------------------------------------------- - No, and there is no news of anyone working on it. + No, but Alexander Nikolaev is working on it.  File: xemacs-faq.info, Node: Q1.0.14, Next: Q1.1.1, Prev: Q1.0.13, Up: Introduction @@ -781,14 +775,20 @@ crash some time ago. * Curtis.N.Bingham + * Georges Brun-Cottan + * Richard Caley * Richard Cognot + * Mark Daku + * William G. Dubuque * Eric Eide + * Alain Fauconnet + * Chris Flatters * Evelyn Ginsparg @@ -1138,7 +1138,7 @@ Q1.4.5: And how do I bind it to a key? Or interactively, `M-x global-set-key' and follow the prompts.  -File: xemacs-faq.info, Node: Q1.4.6, Next: Q1.4.7, Prev: Q1.4.5, Up: Introduction +File: xemacs-faq.info, Node: Q1.4.6, Prev: Q1.4.5, Up: Introduction Q1.4.6: What's the difference between a macro and a function? ------------------------------------------------------------- @@ -1161,32 +1161,79 @@ another matter, entirely. A keyboard macro is a key bound to several other keys. Refer to manual for details.  -File: xemacs-faq.info, Node: Q1.4.7, Prev: Q1.4.6, Up: Introduction - -Q1.4.7: How come options saved with 19.13 don't work with 19.14 or later? -------------------------------------------------------------------------- - - There's a problem with options of the form: - - (add-spec-list-to-specifier (face-property 'searchm-field 'font) - '((global (nil)))) - - saved by a 19.13 XEmacs that causes a 19.14 XEmacs grief. You must -delete these options. XEmacs 19.14 and later no longer write the -options directly to `.emacs' which should allow us to deal with version -incompatibilities better in the future. - - Options saved under XEmacs 19.13 are protected by code that -specifically requires a version 19 XEmacs. This won't be a problem -unless you're using XEmacs v20. You should consider changing the code -to read: - - (cond - ((and (string-match "XEmacs" emacs-version) - (boundp 'emacs-major-version) - (or (and (= emacs-major-version 19) - (>= emacs-minor-version 12)) - (>= emacs-major-version 20))) - ... - )) +File: xemacs-faq.info, Node: Installation, Next: Customization, Prev: Introduction, Up: Top + +2 Installation and Trouble Shooting +*********************************** + + This is part 2 of the XEmacs Frequently Asked Questions list. This +section is devoted to Installation, Maintenance and Trouble Shooting. + +* Menu: + +Installation: +* Q2.0.1:: Running XEmacs without installing. +* Q2.0.2:: XEmacs is too big. +* Q2.0.3:: Compiling XEmacs with Netaudio. +* Q2.0.4:: Problems with Linux and ncurses. +* Q2.0.5:: Do I need X11 to run XEmacs? +* Q2.0.6:: I'm having strange crashes. What do I do? +* Q2.0.7:: Libraries in non-standard locations. +* Q2.0.8:: can't resolve symbol _h_errno +* Q2.0.9:: Where do I find external libraries? +* Q2.0.10:: After I run configure I find a coredump, is something wrong? +* Q2.0.11:: XEmacs can't resolve host names. +* Q2.0.12:: Why can't I strip XEmacs? + +Trouble Shooting: +* Q2.1.1:: XEmacs just crashed on me! +* Q2.1.2:: Cryptic Minibuffer messages. +* Q2.1.3:: Translation Table Syntax messages at Startup. +* Q2.1.4:: Startup warnings about deducing proper fonts? +* Q2.1.5:: XEmacs cannot connect to my X Terminal. +* Q2.1.6:: XEmacs just locked up my Linux X server. +* Q2.1.7:: HP Alt key as Meta. +* Q2.1.8:: got (wrong-type-argument color-instance-p nil)! +* Q2.1.9:: XEmacs causes my OpenWindows 3.0 server to crash. +* Q2.1.10:: Warnings from incorrect key modifiers. +* Q2.1.11:: Can't instantiate image error... in toolbar +* Q2.1.12:: Regular Expression Problems on DEC OSF1. +* Q2.1.13:: HP/UX 10.10 and `create_process' failure +* Q2.1.14:: C-g doesn't work for me. Is it broken? +* Q2.1.15:: How to debug an XEmacs problem with a debugger. +* Q2.1.16:: XEmacs crashes in `strcat' on HP/UX 10. +* Q2.1.17:: `Marker does not point anywhere'. +* Q2.1.18:: [This question intentionally left blank] +* Q2.1.19:: XEmacs does not follow the local timezone. +* Q2.1.20:: `Symbol's function definition is void: hkey-help-show.' +* Q2.1.21:: [This question intentionally left blank] +* Q2.1.22:: XEmacs seems to take a really long time to do some things. +* Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later. +* Q2.1.24:: XEmacs won't start without network. (NEW) + + +File: xemacs-faq.info, Node: Q2.0.1, Next: Q2.0.2, Prev: Installation, Up: Installation + +2.0: Installation +================= + +Q2.0.1: Running XEmacs without installing +----------------------------------------- + + The `INSTALL' file says that up to 108 MB of space is needed +temporarily during installation! How can I just try it out? + + XEmacs will run in place without requiring installation and copying +of the Lisp directories, and without having to specify a special +build-time flag. It's the copying of the Lisp directories that +requires so much space. XEmacs is largely written in Lisp. + + A good method is to make a shell alias for xemacs: + + alias xemacs=/i/xemacs-20.2/src/xemacs + + (You will obviously use whatever directory you downloaded the source +tree to instead of `/i/xemacs-20.2'). + + This will let you run XEmacs without massive copying. diff --git a/info/xemacs-faq.info-2 b/info/xemacs-faq.info-2 index 21af251..a759c37 100644 --- a/info/xemacs-faq.info-2 +++ b/info/xemacs-faq.info-2 @@ -7,85 +7,6 @@ START-INFO-DIR-ENTRY END-INFO-DIR-ENTRY  -File: xemacs-faq.info, Node: Installation, Next: Customization, Prev: Introduction, Up: Top - -2 Installation and Trouble Shooting -*********************************** - - This is part 2 of the XEmacs Frequently Asked Questions list. This -section is devoted to Installation, Maintenance and Trouble Shooting. - -* Menu: - -Installation: -* Q2.0.1:: Running XEmacs without installing. -* Q2.0.2:: XEmacs is too big. -* Q2.0.3:: Compiling XEmacs with Netaudio. -* Q2.0.4:: Problems with Linux and ncurses. -* Q2.0.5:: Do I need X11 to run XEmacs? -* Q2.0.6:: I'm having strange crashes. What do I do? -* Q2.0.7:: Libraries in non-standard locations. -* Q2.0.8:: can't resolve symbol _h_errno -* Q2.0.9:: Where do I find external libraries? -* Q2.0.10:: After I run configure I find a coredump, is something wrong? -* Q2.0.11:: XEmacs can't resolve host names. -* Q2.0.12:: Why can't I strip XEmacs? -* Q2.0.13:: Can't link XEmacs on Solaris with Gcc. -* Q2.0.14:: Make on HP/UX 9 fails after linking temacs - -Trouble Shooting: -* Q2.1.1:: XEmacs just crashed on me! -* Q2.1.2:: Cryptic Minibuffer messages. -* Q2.1.3:: Translation Table Syntax messages at Startup. -* Q2.1.4:: Startup warnings about deducing proper fonts? -* Q2.1.5:: XEmacs cannot connect to my X Terminal. -* Q2.1.6:: XEmacs just locked up my Linux X server. -* Q2.1.7:: HP Alt key as Meta. -* Q2.1.8:: got (wrong-type-argument color-instance-p nil)! -* Q2.1.9:: XEmacs causes my OpenWindows 3.0 server to crash. -* Q2.1.10:: Warnings from incorrect key modifiers. -* Q2.1.11:: Can't instantiate image error... in toolbar -* Q2.1.12:: Regular Expression Problems on DEC OSF1. -* Q2.1.13:: HP/UX 10.10 and `create_process' failure -* Q2.1.14:: C-g doesn't work for me. Is it broken? -* Q2.1.15:: How to debug an XEmacs problem with a debugger. -* Q2.1.16:: XEmacs crashes in `strcat' on HP/UX 10. -* Q2.1.17:: `Marker does not point anywhere'. -* Q2.1.18:: 19.14 hangs on HP/UX 10.10. -* Q2.1.19:: XEmacs does not follow the local timezone. -* Q2.1.20:: `Symbol's function definition is void: hkey-help-show.' -* Q2.1.21:: Every so often the XEmacs frame freezes. -* Q2.1.22:: XEmacs seems to take a really long time to do some things. -* Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later. -* Q2.1.24:: XEmacs won't start without network. (NEW) - - -File: xemacs-faq.info, Node: Q2.0.1, Next: Q2.0.2, Prev: Installation, Up: Installation - -2.0: Installation -================= - -Q2.0.1: Running XEmacs without installing ------------------------------------------ - - The `INSTALL' file says that up to 108 MB of space is needed -temporarily during installation! How can I just try it out? - - XEmacs will run in place without requiring installation and copying -of the Lisp directories, and without having to specify a special -build-time flag. It's the copying of the Lisp directories that -requires so much space. XEmacs is largely written in Lisp. - - A good method is to make a shell alias for xemacs: - - alias xemacs=/i/xemacs-20.2/src/xemacs - - (You will obviously use whatever directory you downloaded the source -tree to instead of `/i/xemacs-20.2'). - - This will let you run XEmacs without massive copying. - - File: xemacs-faq.info, Node: Q2.0.2, Next: Q2.0.3, Prev: Q2.0.1, Up: Installation Q2.0.2: XEmacs is too big @@ -464,7 +385,7 @@ that stock SunOS systems do not ship with DNS resolver code in libc. then proceed to link against the DNS resolver library code.  -File: xemacs-faq.info, Node: Q2.0.12, Next: Q2.0.13, Prev: Q2.0.11, Up: Installation +File: xemacs-faq.info, Node: Q2.0.12, Next: Q2.1.1, Prev: Q2.0.11, Up: Installation Q2.0.12: Why can't I strip XEmacs? ---------------------------------- @@ -507,44 +428,7 @@ Q2.0.12: Why can't I strip XEmacs? /usr/local/lib/xemacs-19.16/i586-unknown-linuxaout  -File: xemacs-faq.info, Node: Q2.0.13, Next: Q2.0.14, Prev: Q2.0.12, Up: Installation - -Q2.0.13: Problems linking with Gcc on Solaris ---------------------------------------------- - - There are known difficulties linking with Gnu ld on Solaris. A -typical error message might look like: - - unexec(): dlopen(../dynodump/dynodump.so): ld.so.1: ./temacs: - fatal: relocation error: - symbol not found: main: referenced in ../dynodump/dynodump.so - - Martin Buchholz writes: - - You need to specify `-fno-gnu-linker' as part of your flags to pass - to ld. Future releases of XEmacs will try to do this - automatically. - - -File: xemacs-faq.info, Node: Q2.0.14, Next: Q2.1.1, Prev: Q2.0.13, Up: Installation - -Q2.0.14: Make on HP/UX 9 fails after linking temacs ---------------------------------------------------- - - Problem when building xemacs-19.16 on hpux 9: - - Richard Cognot writes: - - make on hpux fails after linking temacs with a message: - - "make: don't know how to make .y." - - Solution: This is a problem with HP make revision 70.X. Either - use GNU make, or install PHCO_6552, which will bring make to - revision 72.24.1.17. - - -File: xemacs-faq.info, Node: Q2.1.1, Next: Q2.1.2, Prev: Q2.0.14, Up: Installation +File: xemacs-faq.info, Node: Q2.1.1, Next: Q2.1.2, Prev: Q2.0.12, Up: Installation 2.1: Trouble Shooting ===================== @@ -971,17 +855,55 @@ debugger. Here are some hints: you've got is a core dump, all is not lost. If you're using GDB, there are some macros in the file - `src/gdbinit' in the XEmacs source distribution that should make it - easier for you to decode Lisp objects. Copy this file to - `~/.gdbinit', or `source' it from `~/.gdbinit', and use the macros - defined therein. In particular, use the `pobj' macro to print the - internal C representation of a lisp object. This will work with a - core file or not-yet-run executable. The aliases `ldp' and `lbt' - are provided for conveniently calling `debug_print' and - `debug_backtrace'. + `src/.gdbinit' in the XEmacs source distribution that should make + it easier for you to decode Lisp objects. This file is + automatically read by gdb if gdb is run in the directory where + xemacs was built, and contains these useful macros to inspect the + state of xemacs: + + `pobj' + Usage: pobj lisp_object + Print the internal C representation of a lisp object. + + `xtype' + Usage: xtype lisp_object + Print the Lisp type of a lisp object. + + `lbt' + Usage: lbt + Print the current Lisp stack trace. Requires a running + xemacs process. + + `ldp' + Usage: ldp lisp_object + Print a Lisp Object value using the Lisp printer. Requires a + running xemacs process. + + `run-temacs' + Usage: run-temacs + Run temacs interactively, like xemacs. Use this with + debugging tools (like purify) that cannot deal with dumping, + or when temacs builds successfully, but xemacs does not. + + `dump-temacs' + Usage: dump-temacs + Run the dumping part of the build procedure. Use when + debugging temacs, not xemacs! Use this when temacs builds + successfully, but xemacs does not. + + `check-xemacs' + Usage: check-xemacs + Run the test suite. Equivalent to 'make check'. + + `check-temacs' + Usage: check-temacs + Run the test suite on temacs. Equivalent to 'make + check-temacs'. Use this with debugging tools (like purify) + that cannot deal with dumping, or when temacs builds + successfully, but xemacs does not. If you are using Sun's `dbx' debugger, there is an equivalent file - `src/dbxrc' to copy to or source from `~/.dbxrc'. + `src/.dbxrc', which defines the same commands for dbx. * If you're using a debugger to get a C stack backtrace and you're seeing stack traces with some of the innermost frames mangled, it @@ -1026,13 +948,12 @@ debugger. Here are some hints: * If you compile with the newer gcc variants gcc-2.8 or egcs, you - will also need gdb 4.17. Earlier releases of gdb can't handle the - debug information generated by the newer compilers. + will also need gdb 4.17 or above. Earlier releases of gdb can't + handle the debug information generated by the newer compilers. - * The above information on using `src/gdbinit' works for XEmacs-21.0 - and above. For older versions of XEmacs, there are different - `gdbinit' files provided in the `src' directory. Use the one - corresponding to the configure options used when building XEmacs. + * In versions of XEmacs before 21.2.27, `src/.gdbinit' was named + `src/gdbinit'. This had the disadvantage of not being sourced + automatically by gdb, so you had to set that up yourself.  @@ -1079,44 +1000,8 @@ reported (and fixed).  File: xemacs-faq.info, Node: Q2.1.18, Next: Q2.1.19, Prev: Q2.1.17, Up: Installation -Q2.1.18: 19.14 hangs on HP/UX 10.10. ------------------------------------- - - Richard Cognot writes: - - For the record, compiling on hpux 10.10 leads to a hang in Gnus - when compiled with optimization on. - - I've just discovered that my hpux 10.01 binary was working less - well than expected. In fact, on a 10.10 system, `(while t)' was not - interrupted by `C-g'. I defined `BROKEN_SIGIO' and recompiled on - 10.10, and... the hang is now gone. - - As far as configure goes, this will be a bit tricky: `BROKEN_SIGIO' - is needed on 10.10, but *not* on 10.01: if I run my 10.01 binary - on a 10.01 machine, without `BROKEN_SIGIO' being defined, `C-g' - works as expected. - - Richard Cognot adds: - - Apparently somebody has found the reason why there is this `poll: - interrupted...' message for each event. For some reason, libcurses - reimplements a `select()' system call, in a highly broken fashion. - The fix is to add a -lc to the link line _before_ the -lxcurses. - XEmacs will then use the right version of `select()'. - - Alain Fauconnet writes: - - The _real_ solution is to _not_ link -lcurses in! I just changed - -lcurses to -ltermcap in the Makefile and it fixed: - - 1. The `poll: interrupted system call' message. - - 2. A more serious problem I had discovered in the meantime, that - is the fact that subprocess handling was seriously broken: - subprocesses e.g. started by AUC TeX for TeX compilation of a - buffer would _hang_. Actually they would wait forever for - emacs to read the socket which connects stdout... +Q2.1.18: removed +----------------  File: xemacs-faq.info, Node: Q2.1.19, Next: Q2.1.20, Prev: Q2.1.18, Up: Installation @@ -1148,11 +1033,8 @@ Q2.1.20: `Symbol's function definition is void: hkey-help-show.'  File: xemacs-faq.info, Node: Q2.1.21, Next: Q2.1.22, Prev: Q2.1.20, Up: Installation -Q2.1.21: Every so often the XEmacs frame freezes ------------------------------------------------- - - This problem has been fixed in 19.15, and was due to a not easily -reproducible race condition. +Q2.1.21: [This question intentionally left blank] +-------------------------------------------------  File: xemacs-faq.info, Node: Q2.1.22, Next: Q2.1.23, Prev: Q2.1.21, Up: Installation @@ -1223,3 +1105,173 @@ not on the network, you may be missing a "localhost" entry in your Add that line, and XEmacs will be happy. + +File: xemacs-faq.info, Node: Customization, Next: Subsystems, Prev: Installation, Up: Top + +3 Customization and Options +*************************** + + This is part 3 of the XEmacs Frequently Asked Questions list. This +section is devoted to Customization and screen settings. + +* Menu: + +Customization---Emacs Lisp and `.emacs': +* Q3.0.1:: What version of Emacs am I running? +* Q3.0.2:: How do I evaluate Elisp expressions? +* Q3.0.3:: `(setq tab-width 6)' behaves oddly. +* Q3.0.4:: How can I add directories to the `load-path'? +* Q3.0.5:: How to check if a lisp function is defined? +* Q3.0.6:: Can I force the output of `(face-list)' to a buffer? +* Q3.0.7:: Font selections don't get saved after `Save Options'. +* Q3.0.8:: How do I make a single minibuffer frame? +* Q3.0.9:: What is `Customize'? + +X Window System & Resources: +* Q3.1.1:: Where is a list of X resources? +* Q3.1.2:: How can I detect a color display? +* Q3.1.3:: [This question intentionally left blank] +* Q3.1.4:: [This question intentionally left blank] +* Q3.1.5:: How can I get the icon to just say `XEmacs'? +* Q3.1.6:: How can I have the window title area display the full path? +* Q3.1.7:: `xemacs -name junk' doesn't work? +* Q3.1.8:: `-iconic' doesn't work. + +Textual Fonts & Colors: +* Q3.2.1:: How can I set color options from `.emacs'? +* Q3.2.2:: How do I set the text, menu and modeline fonts? +* Q3.2.3:: How can I set the colors when highlighting a region? +* Q3.2.4:: How can I limit color map usage? +* Q3.2.5:: My tty supports color, but XEmacs doesn't use them. +* Q3.2.6:: Can I have pixmap backgrounds in XEmacs? + +The Modeline: +* Q3.3.1:: How can I make the modeline go away? +* Q3.3.2:: How do you have XEmacs display the line number in the modeline? +* Q3.3.3:: How do I get XEmacs to put the time of day on the modeline? +* Q3.3.4:: How do I turn off current chapter from AUC TeX modeline? +* Q3.3.5:: How can one change the modeline color based on the mode used? + +3.4 Multiple Device Support: +* Q3.4.1:: How do I open a frame on another screen of my multi-headed display? +* Q3.4.2:: Can I really connect to a running XEmacs after calling up over a modem? How? + +3.5 The Keyboard: +* Q3.5.1:: How can I bind complex functions (or macros) to keys? +* Q3.5.2:: How can I stop down-arrow from adding empty lines to the bottom of my buffers? +* Q3.5.3:: How do I bind C-. and C-; to scroll one line up and down? +* Q3.5.4:: Globally binding Delete? +* Q3.5.5:: Scrolling one line at a time. +* Q3.5.6:: How to map Help key alone on Sun type4 keyboard? +* Q3.5.7:: How can you type in special characters in XEmacs? +* Q3.5.8:: Why does `(global-set-key [delete-forward] 'delete-char)' complain? +* Q3.5.9:: How do I make the Delete key delete forward? +* Q3.5.10:: Can I turn on "sticky" modifier keys? +* Q3.5.11:: How do I map the arrow keys? + +The Cursor: +* Q3.6.1:: Is there a way to make the bar cursor thicker? +* Q3.6.2:: Is there a way to get back the old block cursor where the cursor covers the character in front of the point? +* Q3.6.3:: Can I make the cursor blink? + +The Mouse and Highlighting: +* Q3.7.1:: How can I turn off Mouse pasting? +* Q3.7.2:: How do I set control/meta/etc modifiers on mouse buttons? +* Q3.7.3:: Clicking the left button does not do anything in buffer list. +* Q3.7.4:: How can I get a list of buffers when I hit mouse button 3? +* Q3.7.5:: Why does cut-and-paste not work between XEmacs and a cmdtool? +* Q3.7.6:: How I can set XEmacs up so that it pastes where the text cursor is? +* Q3.7.7:: How do I select a rectangular region? +* Q3.7.8:: Why does M-w take so long? + +The Menubar and Toolbar: +* Q3.8.1:: How do I get rid of the menu (or menubar)? +* Q3.8.2:: Can I customize the basic menubar? +* Q3.8.3:: How do I control how many buffers are listed in the menu `Buffers' list? +* Q3.8.4:: Resources like `Emacs*menubar*font' are not working? +* Q3.8.5:: How can I bind a key to a function to toggle the toolbar? + +Scrollbars: +* Q3.9.1:: How can I disable the scrollbar? +* Q3.9.2:: How can one use resources to change scrollbar colors? +* Q3.9.3:: Moving the scrollbar can move the point; can I disable this? +* Q3.9.4:: How can I get automatic horizontal scrolling? + +Text Selections: +* Q3.10.1:: How can I turn off or change highlighted selections? +* Q3.10.2:: How do I get that typing on an active region removes it? +* Q3.10.3:: Can I turn off the highlight during isearch? +* Q3.10.4:: How do I turn off highlighting after C-x C-p (mark-page)? +* Q3.10.5:: The region disappears when I hit the end of buffer while scrolling. + + +File: xemacs-faq.info, Node: Q3.0.1, Next: Q3.0.2, Prev: Customization, Up: Customization + +3.0: Customization - Emacs Lisp and .emacs +========================================== + +Q3.0.1: What version of Emacs am I running? +------------------------------------------- + + How can `.emacs' determine which of the family of Emacsen I am using? + + To determine if you are currently running GNU Emacs 18, GNU Emacs 19, +XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the +example given in `etc/sample.emacs'. There are other nifty things in +there as well! + + For all new code, all you really need to do is: + + (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)) + + +File: xemacs-faq.info, Node: Q3.0.2, Next: Q3.0.3, Prev: Q3.0.1, Up: Customization + +Q3.0.2: How can I evaluate Emacs-Lisp expressions? +-------------------------------------------------- + + I know I can evaluate Elisp expressions from `*scratch*' buffer with +`C-j' after the expression. How do I do it from another buffer? + + Press `M-:' (the default binding of `eval-expression'), and enter +the expression to the minibuffer. In XEmacs prior to 19.15 +`eval-expression' used to be a disabled command by default. If this is +the case, upgrade your XEmacs. + + +File: xemacs-faq.info, Node: Q3.0.3, Next: Q3.0.4, Prev: Q3.0.2, Up: Customization + +Q3.0.3: `(setq tab-width 6)' behaves oddly. +------------------------------------------- + + If you put `(setq tab-width 6)' in your `.emacs' file it does not +work! Is there a reason for this? If you do it at the EVAL prompt it +works fine!! How strange. + + Use `setq-default' instead, since `tab-width' is all-buffer-local. + + +File: xemacs-faq.info, Node: Q3.0.4, Next: Q3.0.5, Prev: Q3.0.3, Up: Customization + +Q3.0.4: How can I add directories to the `load-path'? +----------------------------------------------------- + + Here are two ways to do that, one that puts your directories at the +front of the load-path, the other at the end: + + ;;; Add things at the beginning of the load-path, do not add + ;;; duplicate directories: + (pushnew "bar" load-path :test 'equal) + + (pushnew "foo" load-path :test 'equal) + + ;;; Add things at the end, unconditionally + (setq load-path (nconc load-path '("foo" "bar"))) + + keith (k.p.) hanlan writes: + + To add directories using Unix shell metacharacters use + `expand-file-name' like this: + + (push (expand-file-name "~keithh/.emacsdir") load-path) + diff --git a/info/xemacs.info b/info/xemacs.info index 2347717..a64f7fc 100644 --- a/info/xemacs.info +++ b/info/xemacs.info @@ -32,367 +32,376 @@ translation approved by the author instead of in the original English.  Indirect: xemacs.info-1: 1350 -xemacs.info-2: 47938 -xemacs.info-3: 95895 -xemacs.info-4: 143999 -xemacs.info-5: 192198 -xemacs.info-6: 241563 -xemacs.info-7: 290379 -xemacs.info-8: 339922 -xemacs.info-9: 385201 -xemacs.info-10: 433025 -xemacs.info-11: 482195 -xemacs.info-12: 531344 -xemacs.info-13: 580168 -xemacs.info-14: 628309 -xemacs.info-15: 677063 -xemacs.info-16: 726588 -xemacs.info-17: 775149 -xemacs.info-18: 819067 -xemacs.info-19: 860230 -xemacs.info-20: 908226 -xemacs.info-21: 948946 +xemacs.info-2: 47935 +xemacs.info-3: 95892 +xemacs.info-4: 144418 +xemacs.info-5: 189682 +xemacs.info-6: 237752 +xemacs.info-7: 286779 +xemacs.info-8: 336120 +xemacs.info-9: 383861 +xemacs.info-10: 433167 +xemacs.info-11: 483000 +xemacs.info-12: 532860 +xemacs.info-13: 581970 +xemacs.info-14: 631330 +xemacs.info-15: 681149 +xemacs.info-16: 729643 +xemacs.info-17: 778293 +xemacs.info-18: 827922 +xemacs.info-19: 872280 +xemacs.info-20: 920951 +xemacs.info-21: 962858  Tag Table: (Indirect) Node: Top1350 -Node: License22509 -Node: Distrib35791 -Node: Intro37455 -Node: Frame40326 -Node: Point43594 -Node: Echo Area45561 -Node: Mode Line47938 -Node: XEmacs under X52369 -Node: Keystrokes55546 -Node: Intro to Keystrokes56390 -Node: Representing Keystrokes58493 -Node: Key Sequences59850 -Node: String Key Sequences63190 -Node: Meta Key63573 -Node: Super and Hyper Keys65046 -Node: Character Representation71270 -Node: Commands72290 -Node: Pull-down Menus75139 -Node: File Menu78488 -Node: Edit Menu82310 -Node: Apps Menu84693 -Node: Options Menu85183 -Node: Buffers Menu89163 -Node: Tools Menu89470 -Node: Help Menu89961 -Node: Menu Customization90362 -Node: Entering Emacs94592 -Node: Exiting95895 -Node: Command Switches98986 -Node: Startup Paths108173 -Node: Basic115753 -Node: Blank Lines125231 -Node: Continuation Lines126657 -Node: Position Info128089 -Node: Arguments131222 -Node: Undo134359 -Node: Minibuffer137306 -Node: Minibuffer File139790 -Node: Minibuffer Edit141426 -Node: Completion143999 -Node: Repetition150874 -Node: M-x153666 -Node: Help158760 -Node: Mark168679 -Node: Setting Mark170533 -Node: Using Region173655 -Node: Marking Objects174392 -Node: Mark Ring176230 -Node: Mouse Selection177946 -Node: Additional Mouse Operations179953 -Node: Killing184157 -Node: Yanking189793 -Node: Kill Ring190596 -Node: Appending Kills192198 -Node: Earlier Kills194235 -Node: Using X Selections196848 -Node: X Clipboard Selection198098 -Node: X Selection Commands200275 -Node: X Cut Buffers201361 -Node: Active Regions202720 -Node: Accumulating Text207300 -Node: Rectangles210373 -Node: Registers213892 -Node: RegPos214926 -Node: RegText215829 -Node: RegRect216913 -Node: Display217653 -Node: Scrolling219148 -Node: Horizontal Scrolling223291 -Node: Selective Display224486 -Node: Display Vars225705 -Node: Search228383 -Node: Incremental Search229576 -Node: Non-Incremental Search238503 -Node: Word Search239945 -Node: Regexp Search241563 -Node: Regexps243099 -Node: Search Case253400 -Node: Replace254181 -Node: Unconditional Replace255129 -Node: Regexp Replace256264 -Node: Replacement and Case257199 -Node: Query Replace258179 -Node: Other Repeating Search261406 -Node: Fixit262661 -Node: Kill Errors263241 -Node: Transpose264574 -Node: Fixing Case266978 -Node: Spelling267624 -Node: Files269085 -Node: File Names270395 -Node: Visiting274732 -Node: Saving281418 -Node: Backup286341 -Node: Backup Names287737 -Node: Backup Deletion289220 -Node: Backup Copying290379 -Node: Interlocking292085 -Node: Reverting296213 -Node: Auto Save298125 -Node: Auto Save Files299092 -Node: Auto Save Control300933 -Node: Recover302771 -Node: Version Control303926 -Node: Concepts of VC305964 -Node: Editing with VC307574 -Node: Variables for Check-in/out312830 -Node: Log Entries314729 -Node: Change Logs and VC315909 -Node: Old Versions319176 -Node: VC Status321179 -Node: Renaming and VC322893 -Node: Snapshots323572 -Node: Making Snapshots324073 -Node: Snapshot Caveats325366 -Node: Version Headers327175 -Node: ListDir329874 -Node: Comparing Files331923 -Node: Dired333456 -Node: Dired Enter334127 -Node: Dired Edit334952 -Node: Dired Deletion336699 -Node: Dired Immed339922 -Node: Misc File Ops341198 -Node: Buffers343686 -Node: Select Buffer345844 -Node: List Buffers347639 -Node: Misc Buffer349384 -Node: Kill Buffer351027 -Node: Several Buffers352157 -Node: Windows356023 -Node: Basic Window356734 -Node: Split Window358453 -Node: Other Window360586 -Node: Pop Up Window363015 -Node: Change Window364520 -Node: Mule367428 -Node: Mule Intro368691 -Node: Language Environments369707 -Node: Input Methods371814 -Node: Select Input Method375534 -Node: Coding Systems377689 -Node: Recognize Coding381875 -Node: Specify Coding385201 -Node: Major Modes390132 -Node: Choosing Modes392351 -Node: Indentation394741 -Node: Indentation Commands396836 -Node: Tab Stops399565 -Node: Just Spaces401414 -Node: Text402229 -Node: Text Mode404212 -Node: Nroff Mode406291 -Node: TeX Mode407934 -Node: TeX Editing410186 -Node: TeX Print413620 -Node: Outline Mode416839 -Node: Outline Format418320 -Node: Outline Motion421120 -Node: Outline Visibility422673 -Node: Words425594 -Node: Sentences428541 -Node: Paragraphs430737 -Node: Pages433025 -Node: Filling435625 -Node: Auto Fill436196 -Node: Fill Commands438343 -Node: Fill Prefix440508 -Node: Case442696 -Node: Programs444724 -Node: Program Modes447273 -Node: Lists449505 -Node: Defuns455345 -Node: Grinding457998 -Node: Basic Indent458626 -Node: Multi-line Indent460647 -Node: Lisp Indent462263 -Node: C Indent465713 -Node: Matching470953 -Node: Comments472475 -Node: Balanced Editing478927 -Node: Lisp Completion479941 -Node: Documentation480956 -Node: Change Log482195 -Node: Tags484773 -Node: Tag Syntax486422 -Node: Create Tags Table490366 -Node: Etags Regexps494426 -Node: Select Tags Table499084 -Node: Find Tag502822 -Node: Tags Search505786 -Node: List Tags509242 -Node: Fortran510271 -Node: Fortran Motion511347 -Node: Fortran Indent512167 -Node: ForIndent Commands512852 -Node: ForIndent Num513997 -Node: ForIndent Conv515271 -Node: ForIndent Vars516047 -Node: Fortran Comments517215 -Node: Fortran Columns520813 -Node: Fortran Abbrev522236 -Node: Asm Mode523145 -Node: Running523697 -Node: Compilation524667 -Node: Lisp Modes529517 -Node: Lisp Libraries530790 -Node: Loading531344 -Node: Compiling Libraries535804 -Node: Mocklisp538695 -Node: Lisp Eval539372 -Node: Lisp Debug543012 -Node: Lisp Interaction548437 -Node: External Lisp549792 -Node: Packages551866 -Node: Package Terminology552607 -Node: Using Packages553965 -Node: Building Packages562754 -Node: Abbrevs565276 -Node: Defining Abbrevs567476 -Node: Expanding Abbrevs569923 -Node: Editing Abbrevs572625 -Node: Saving Abbrevs574493 -Node: Dynamic Abbrevs576433 -Node: Picture577735 -Node: Basic Picture580168 -Node: Insert in Picture582453 -Node: Tabs in Picture583875 -Node: Rectangles in Picture585396 -Node: Sending Mail587304 -Node: Mail Format589015 -Node: Mail Headers590365 -Node: Mail Mode596775 -Node: Reading Mail600388 -Node: Calendar/Diary601963 -Node: Calendar Motion603635 -Node: Calendar Unit Motion604518 -Node: Move to Beginning or End606841 -Node: Specified Dates607974 -Node: Scroll Calendar608862 -Node: Mark and Region610653 -Node: General Calendar612559 -Node: LaTeX Calendar614167 -Node: Holidays616181 -Node: Sunrise/Sunset619283 -Node: Lunar Phases622326 -Node: Other Calendars623711 -Node: Calendar Systems625198 -Node: To Other Calendar628309 -Node: From Other Calendar630300 -Node: Mayan Calendar632605 -Node: Diary635800 -Node: Diary Commands637549 -Node: Format of Diary File640855 -Node: Date Formats643725 -Node: Adding to Diary646299 -Node: Special Diary Entries647930 -Node: Calendar Customization653269 -Node: Calendar Customizing654131 -Node: Holiday Customizing657350 -Node: Date Display Format663818 -Node: Time Display Format664776 -Node: Daylight Savings665914 -Node: Diary Customizing669102 -Node: Hebrew/Islamic Entries673723 -Node: Fancy Diary Display677063 -Node: Included Diary Files678960 -Node: Sexp Diary Entries679941 -Node: Appt Customizing685031 -Node: Sorting686077 -Node: Shell690883 -Node: Single Shell692176 -Node: Interactive Shell693775 -Node: Shell Mode697540 -Node: Terminal emulator700031 -Node: Term Mode702340 -Node: Paging in Term703254 -Node: Narrowing704052 -Node: Hardcopy706002 -Node: Recursive Edit706974 -Node: Dissociated Press709961 -Node: CONX712524 -Node: Amusements713548 -Node: Emulation714028 -Node: Customization715872 -Node: Minor Modes717596 -Node: Variables719228 -Node: Examining721184 -Node: Easy Customization722645 -Node: Customization Groups723659 -Node: Changing an Option726588 -Node: Face Customization732844 -Node: Specific Customization734608 -Node: Edit Options737215 -Node: Locals738799 -Node: File Variables741978 -Node: Keyboard Macros746504 -Node: Basic Kbd Macro748675 -Node: Save Kbd Macro750607 -Node: Kbd Macro Query752276 -Node: Key Bindings754218 -Node: Keymaps755092 -Node: Rebinding758942 -Node: Interactive Rebinding759638 -Node: Programmatic Rebinding761830 -Node: Key Bindings Using Strings764637 -Node: Disabling766243 -Node: Syntax768015 -Node: Syntax Entry768896 -Node: Syntax Change772980 -Node: Init File775149 -Node: Init Syntax776654 -Node: Init Examples779006 -Node: Terminal Init783196 -Node: Audible Bell784906 -Node: Faces788337 -Node: X Resources793174 -Node: Geometry Resources794795 -Node: Iconic Resources797243 -Node: Resource List797715 -Node: Face Resources804222 -Node: Widgets807899 -Node: Menubar Resources808838 -Node: Quitting809771 -Node: Lossage812749 -Node: Stuck Recursive813393 -Node: Screen Garbled814099 -Node: Text Garbled815233 -Node: Unasked-for Search815872 -Node: Emergency Escape816657 -Node: Total Frustration818436 -Node: Bugs819067 -Node: Glossary828601 -Node: Manifesto860230 -Node: Key Index883706 -Node: Command Index908226 -Node: Variable Index948946 -Node: Concept Index964897 +Node: License22506 +Node: Distrib35788 +Node: Intro37452 +Node: Frame40323 +Node: Point43591 +Node: Echo Area45558 +Node: Mode Line47935 +Node: XEmacs under X52366 +Node: Keystrokes55543 +Node: Intro to Keystrokes56387 +Node: Representing Keystrokes58490 +Node: Key Sequences59847 +Node: String Key Sequences63187 +Node: Meta Key63570 +Node: Super and Hyper Keys65043 +Node: Character Representation71267 +Node: Commands72287 +Node: Pull-down Menus75136 +Node: File Menu78485 +Node: Edit Menu82307 +Node: Apps Menu84690 +Node: Options Menu85180 +Node: Buffers Menu89160 +Node: Tools Menu89467 +Node: Help Menu89958 +Node: Menu Customization90359 +Node: Entering Emacs94589 +Node: Exiting95892 +Node: Command Switches98983 +Node: Startup Paths108170 +Node: Basic115750 +Node: Blank Lines125228 +Node: Continuation Lines126654 +Node: Position Info128086 +Node: Arguments131219 +Node: Undo134356 +Node: Minibuffer137303 +Node: Minibuffer File139913 +Node: Minibuffer Edit141718 +Node: Completion144418 +Node: Completion Example146349 +Node: Completion Commands147443 +Node: Strict Completion150099 +Node: Completion Options151880 +Node: Minibuffer History153174 +Node: Repetition156358 +Node: M-x159191 +Node: Help164285 +Node: Mark174204 +Node: Setting Mark176058 +Node: Using Region179180 +Node: Marking Objects179917 +Node: Mark Ring181755 +Node: Mouse Selection183471 +Node: Additional Mouse Operations185478 +Node: Killing189682 +Node: Yanking195318 +Node: Kill Ring196121 +Node: Appending Kills197723 +Node: Earlier Kills199760 +Node: Using X Selections202373 +Node: X Clipboard Selection203623 +Node: X Selection Commands205800 +Node: X Cut Buffers206886 +Node: Active Regions208245 +Node: Accumulating Text212825 +Node: Rectangles215898 +Node: Registers219417 +Node: RegPos220871 +Node: RegText222027 +Node: RegRect223133 +Node: RegConfig224012 +Node: RegNumbers224952 +Node: RegFiles225670 +Node: Bookmarks226328 +Node: Display229700 +Node: Scrolling231195 +Node: Horizontal Scrolling235338 +Node: Selective Display236533 +Node: Display Vars237752 +Node: Search240430 +Node: Incremental Search241623 +Node: Non-Incremental Search250550 +Node: Word Search251992 +Node: Regexp Search253610 +Node: Regexps255146 +Node: Search Case265447 +Node: Replace266228 +Node: Unconditional Replace267176 +Node: Regexp Replace268311 +Node: Replacement and Case269246 +Node: Query Replace270226 +Node: Other Repeating Search273453 +Node: Fixit274708 +Node: Kill Errors275288 +Node: Transpose276621 +Node: Fixing Case279025 +Node: Spelling279671 +Node: Files281132 +Node: File Names282442 +Node: Visiting286779 +Node: Saving293465 +Node: Backup298388 +Node: Backup Names299784 +Node: Backup Deletion301267 +Node: Backup Copying302426 +Node: Interlocking304132 +Node: Reverting308260 +Node: Auto Save310172 +Node: Auto Save Files311139 +Node: Auto Save Control312980 +Node: Recover314818 +Node: Version Control315973 +Node: Concepts of VC318011 +Node: Editing with VC319621 +Node: Variables for Check-in/out324877 +Node: Log Entries326776 +Node: Change Logs and VC327956 +Node: Old Versions331223 +Node: VC Status333226 +Node: Renaming and VC334940 +Node: Snapshots335619 +Node: Making Snapshots336120 +Node: Snapshot Caveats337413 +Node: Version Headers339222 +Node: ListDir341921 +Node: Comparing Files343970 +Node: Dired345503 +Node: Dired Enter346174 +Node: Dired Edit346999 +Node: Dired Deletion348746 +Node: Dired Immed351969 +Node: Misc File Ops353245 +Node: Buffers355733 +Node: Select Buffer357891 +Node: List Buffers359686 +Node: Misc Buffer361431 +Node: Kill Buffer363074 +Node: Several Buffers364204 +Node: Windows368070 +Node: Basic Window368781 +Node: Split Window370500 +Node: Other Window372633 +Node: Pop Up Window375062 +Node: Change Window376567 +Node: Mule379475 +Node: Mule Intro380738 +Node: Language Environments381754 +Node: Input Methods383861 +Node: Select Input Method387581 +Node: Coding Systems389736 +Node: Recognize Coding393922 +Node: Specify Coding397248 +Node: Major Modes402179 +Node: Choosing Modes404398 +Node: Indentation406788 +Node: Indentation Commands408883 +Node: Tab Stops411612 +Node: Just Spaces413461 +Node: Text414276 +Node: Text Mode416259 +Node: Nroff Mode418338 +Node: TeX Mode419981 +Node: TeX Editing422233 +Node: TeX Print425667 +Node: Outline Mode428886 +Node: Outline Format430367 +Node: Outline Motion433167 +Node: Outline Visibility434720 +Node: Words437641 +Node: Sentences440588 +Node: Paragraphs442784 +Node: Pages445072 +Node: Filling447672 +Node: Auto Fill448243 +Node: Fill Commands450390 +Node: Fill Prefix452555 +Node: Case454743 +Node: Programs456771 +Node: Program Modes459320 +Node: Lists461552 +Node: Defuns467392 +Node: Grinding470045 +Node: Basic Indent470673 +Node: Multi-line Indent472694 +Node: Lisp Indent474310 +Node: C Indent477760 +Node: Matching483000 +Node: Comments484522 +Node: Balanced Editing490974 +Node: Lisp Completion491988 +Node: Documentation493003 +Node: Change Log494242 +Node: Tags496820 +Node: Tag Syntax498469 +Node: Create Tags Table502413 +Node: Etags Regexps506473 +Node: Select Tags Table511131 +Node: Find Tag514869 +Node: Tags Search517833 +Node: List Tags521289 +Node: Fortran522318 +Node: Fortran Motion523394 +Node: Fortran Indent524214 +Node: ForIndent Commands524899 +Node: ForIndent Num526044 +Node: ForIndent Conv527318 +Node: ForIndent Vars528094 +Node: Fortran Comments529262 +Node: Fortran Columns532860 +Node: Fortran Abbrev534283 +Node: Asm Mode535192 +Node: Running535744 +Node: Compilation536714 +Node: Lisp Modes541564 +Node: Lisp Libraries542837 +Node: Loading543391 +Node: Compiling Libraries547851 +Node: Mocklisp550742 +Node: Lisp Eval551419 +Node: Lisp Debug555059 +Node: Lisp Interaction560484 +Node: External Lisp561839 +Node: Packages563913 +Node: Package Terminology564654 +Node: Using Packages566012 +Node: Building Packages574801 +Node: Abbrevs577323 +Node: Defining Abbrevs579523 +Node: Expanding Abbrevs581970 +Node: Editing Abbrevs584672 +Node: Saving Abbrevs586540 +Node: Dynamic Abbrevs588480 +Node: Picture589782 +Node: Basic Picture592215 +Node: Insert in Picture594500 +Node: Tabs in Picture595922 +Node: Rectangles in Picture597443 +Node: Sending Mail599351 +Node: Mail Format601062 +Node: Mail Headers602412 +Node: Mail Mode608822 +Node: Reading Mail612435 +Node: Calendar/Diary614010 +Node: Calendar Motion615682 +Node: Calendar Unit Motion616565 +Node: Move to Beginning or End618888 +Node: Specified Dates620021 +Node: Scroll Calendar620909 +Node: Mark and Region622700 +Node: General Calendar624606 +Node: LaTeX Calendar626214 +Node: Holidays628228 +Node: Sunrise/Sunset631330 +Node: Lunar Phases634373 +Node: Other Calendars635758 +Node: Calendar Systems637245 +Node: To Other Calendar640356 +Node: From Other Calendar642347 +Node: Mayan Calendar644652 +Node: Diary647847 +Node: Diary Commands649596 +Node: Format of Diary File652902 +Node: Date Formats655772 +Node: Adding to Diary658346 +Node: Special Diary Entries659977 +Node: Calendar Customization665316 +Node: Calendar Customizing666178 +Node: Holiday Customizing669397 +Node: Date Display Format675865 +Node: Time Display Format676823 +Node: Daylight Savings677961 +Node: Diary Customizing681149 +Node: Hebrew/Islamic Entries685770 +Node: Fancy Diary Display689110 +Node: Included Diary Files691007 +Node: Sexp Diary Entries691988 +Node: Appt Customizing697078 +Node: Sorting698124 +Node: Shell702930 +Node: Single Shell704223 +Node: Interactive Shell705822 +Node: Shell Mode709587 +Node: Terminal emulator712078 +Node: Term Mode714387 +Node: Paging in Term715301 +Node: Narrowing716099 +Node: Hardcopy718049 +Node: Recursive Edit719021 +Node: Dissociated Press722008 +Node: CONX724571 +Node: Amusements725595 +Node: Emulation726075 +Node: Customization727919 +Node: Minor Modes729643 +Node: Variables731275 +Node: Examining733231 +Node: Easy Customization734692 +Node: Customization Groups735706 +Node: Changing an Option738635 +Node: Face Customization744891 +Node: Specific Customization746655 +Node: Edit Options749262 +Node: Locals750846 +Node: File Variables754025 +Node: Keyboard Macros758551 +Node: Basic Kbd Macro760722 +Node: Save Kbd Macro762654 +Node: Kbd Macro Query764323 +Node: Key Bindings766265 +Node: Keymaps767139 +Node: Rebinding770989 +Node: Interactive Rebinding771688 +Node: Programmatic Rebinding773880 +Node: Key Bindings Using Strings776687 +Node: Disabling778293 +Node: Syntax780065 +Node: Syntax Entry780946 +Node: Syntax Change785030 +Node: Init File787199 +Node: Init Syntax788704 +Node: Init Examples791056 +Node: Terminal Init795246 +Node: Audible Bell796956 +Node: Faces800387 +Node: X Resources805224 +Node: Geometry Resources806845 +Node: Iconic Resources809293 +Node: Resource List809765 +Node: Face Resources816272 +Node: Widgets819949 +Node: Menubar Resources820888 +Node: Quitting821821 +Node: Lossage824799 +Node: Stuck Recursive825443 +Node: Screen Garbled826149 +Node: Text Garbled827283 +Node: Unasked-for Search827922 +Node: Emergency Escape828707 +Node: Total Frustration830486 +Node: Bugs831117 +Node: Glossary840651 +Node: Manifesto872280 +Node: Key Index895756 +Node: Command Index920951 +Node: Variable Index962858 +Node: Concept Index978995  End Tag Table diff --git a/info/xemacs.info-1 b/info/xemacs.info-1 index 0055d09..e8495cf 100644 --- a/info/xemacs.info-1 +++ b/info/xemacs.info-1 @@ -32,7 +32,8 @@ translation approved by the author instead of in the original English.  File: xemacs.info, Node: Top, Next: License, Up: (dir) - The XEmacs Editor ***************** +The XEmacs Editor +***************** XEmacs is the extensible, customizable, self-documenting real-time display editor. This Info file describes how to edit with Emacs and diff --git a/info/xemacs.info-3 b/info/xemacs.info-3 index e6fe2a8..de7a277 100644 --- a/info/xemacs.info-3 +++ b/info/xemacs.info-3 @@ -1058,18 +1058,18 @@ File: xemacs.info, Node: Minibuffer, Next: M-x, Prev: Undo, Up: Top The Minibuffer ************** - Emacs commands use the "minibuffer" to read arguments more -complicated than a single number. Minibuffer arguments can be file -names, buffer names, Lisp function names, Emacs command names, Lisp -expressions, and many other things, depending on the command reading the -argument. To edit the argument in the minibuffer, you can use Emacs -editing commands. + The "minibuffer" is the facility used by XEmacs commands to read +arguments more complicated than a single number. Minibuffer arguments +can be file names, buffer names, Lisp function names, XEmacs command +names, Lisp expressions, and many other things, depending on the command +reading the argument. You can use the usual XEmacs editing commands in +the minibuffer to edit the argument text. When the minibuffer is in use, it appears in the echo area, and the cursor moves there. The beginning of the minibuffer line displays a -"prompt" indicating what kind of input you should supply and how it -will be used. The prompt is often derived from the name of the command -the argument is for. The prompt normally ends with a colon. +"prompt" which says what kind of input you should supply and how it +will be used. Often this prompt is derived from the name of the command +that the argument is for. The prompt normally ends with a colon. Sometimes a "default argument" appears in parentheses after the colon; it, too, is part of the prompt. The default is used as the @@ -1078,13 +1078,14 @@ argument value if you enter an empty argument (e.g., by just typing default, which is the name of the buffer that will be used if you type just . - The simplest way to give a minibuffer argument is to type the text -you want, terminated by to exit the minibuffer. To get out of -the minibuffer and cancel the command that it was for, type `C-g'. + The simplest way to enter a minibuffer argument is to type the text +you want, terminated by which exits the minibuffer. You can +cancel the command that wants the argument, and get out of the +minibuffer, by typing `C-g'. Since the minibuffer uses the screen space of the echo area, it can -conflict with other ways Emacs customarily uses the echo area. Here is -how Emacs handles such conflicts: +conflict with other ways XEmacs customarily uses the echo area. Here is +how XEmacs handles such conflicts: * If a command gets an error while you are in the minibuffer, this does not cancel the minibuffer. However, the echo area is needed @@ -1092,10 +1093,10 @@ how Emacs handles such conflicts: hidden for a while. It comes back after a few seconds, or as soon as you type anything. - * If you use a command in the minibuffer whose purpose is to print a - message in the echo area (for example `C-x =') the message is - displayed normally, and the minibuffer is hidden for a while. It - comes back after a few seconds, or as soon as you type anything. + * If in the minibuffer you use a command whose purpose is to print a + message in the echo area, such as `C-x =', the message is printed + normally, and the minibuffer is hidden for a while. It comes back + after a few seconds, or as soon as you type anything. * Echoing of keystrokes does not take place while the minibuffer is in use. @@ -1105,6 +1106,7 @@ how Emacs handles such conflicts: * File: Minibuffer File. Entering file names with the minibuffer. * Edit: Minibuffer Edit. How to edit in the minibuffer. * Completion:: An abbreviation facility for minibuffer input. +* Minibuffer History:: Reusing recent minibuffer arguments. * Repetition:: Re-executing commands that used the minibuffer.  @@ -1115,30 +1117,32 @@ Minibuffers for File Names Sometimes the minibuffer starts out with text in it. For example, when you are supposed to give a file name, the minibuffer starts out -containing the "default directory", which ends with a slash. This -informs you in which directory the file will be looked for if you do -not specify a different one. For example, the minibuffer might start -out with: +containing the "default directory", which ends with a slash. This is +to inform you which directory the file will be found in if you do not +specify a directory. + + For example, the minibuffer might start out with these contents: Find File: /u2/emacs/src/ -where `Find File: ' is the prompt. Typing `buffer.c' specifies the file -`/u2/emacs/src/buffer.c'. To find files in nearby directories, use -`..'; thus, if you type `../lisp/simple.el', the file that you visit -will be the one named -`/u2/emacs/lisp/simple.el'. Alternatively, you can use `M-' to -kill directory names you don't want (*note Words::). +where `Find File: ' is the prompt. Typing `buffer.c' specifies the +file `/u2/emacs/src/buffer.c'. To find files in nearby directories, +use `..'; thus, if you type `../lisp/simple.el', you will get the file +named `/u2/emacs/lisp/simple.el'. Alternatively, you can kill with +`M-' the directory names you don't want (*note Words::). - You can also type an absolute file name, one starting with a slash -or a tilde, ignoring the default directory. For example, to find the -file `/etc/termcap', just type the name, giving: + If you don't want any of the default, you can kill it with `C-a +C-k'. But you don't need to kill the default; you can simply ignore it. +Insert an absolute file name, one starting with a slash or a tilde, +after the default directory. For example, to specify the file +`/etc/termcap', just insert that name, giving these minibuffer contents: Find File: /u2/emacs/src//etc/termcap -Two slashes in a row are not normally meaningful in Unix file names, but -they are allowed in XEmacs. They mean, "ignore everything before the -second slash in the pair." Thus, `/u2/emacs/src/' is ignored, and you -get the file `/etc/termcap'. +XEmacs gives a special meaning to a double slash (which is not normally +a useful thing to write): it means, "ignore everything before the +second slash in the pair." Thus, `/u2/emacs/src/' is ignored in the +example above, and you get the file `/etc/termcap'. If you set `insert-default-directory' to `nil', the default directory is not inserted in the minibuffer. This way, the minibuffer @@ -1151,50 +1155,53 @@ File: xemacs.info, Node: Minibuffer Edit, Next: Completion, Prev: Minibuffer Editing in the Minibuffer ========================= - The minibuffer is an Emacs buffer (albeit a peculiar one), and the -usual Emacs commands are available for editing the text of an argument + The minibuffer is an XEmacs buffer (albeit a peculiar one), and the +usual XEmacs commands are available for editing the text of an argument you are entering. Since in the minibuffer is defined to exit the minibuffer, you -must use `C-o' or `C-q ' to insert a newline into the minibuffer. -(Recall that a newline is really the character.) +can't use it to insert a newline in the minibuffer. To do that, type +`C-o' or `C-q C-j'. (Recall that a newline is really the character +control-J.) - The minibuffer has its own window, which always has space on the + The minibuffer has its own window which always has space on the screen but acts as if it were not there when the minibuffer is not in -use. The minibuffer window is just like the others; you can switch to -another window with `C-x o', edit text in other windows, and perhaps -even visit more files before returning to the minibuffer to submit the -argument. You can kill text in another window, return to the minibuffer -window, and then yank the text to use it in the argument. *Note -Windows::. - - There are, however, some restrictions on the use of the minibuffer -window. You cannot switch buffers in it--the minibuffer and its window -are permanently attached. You also cannot split or kill the minibuffer -window, but you can make it taller with `C-x ^'. - - If you are in the minibuffer and issue a command that displays help -text in another window, that window will be scrolled if you type -`M-C-v' while in the minibuffer until you exit the minibuffer. This -feature is helpful if a completing minibuffer gives you a long list of -possible completions. +use. When the minibuffer is in use, its window is just like the +others; you can switch to another window with `C-x o', edit text in +other windows and perhaps even visit more files, before returning to the +minibuffer to submit the argument. You can kill text in another window, +return to the minibuffer window, and then yank the text to use it in the +argument. *Note Windows::. + + There are some restrictions on the use of the minibuffer window, +however. You cannot switch buffers in it--the minibuffer and its +window are permanently attached. Also, you cannot split or kill the +minibuffer window. But you can make it taller in the normal fashion with +`C-x ^'. + + If while in the minibuffer you issue a command that displays help +text of any sort in another window, you can use the `C-M-v' command +while in the minibuffer to scroll the help text. This lasts until you +exit the minibuffer. This feature is especially useful if a completing +minibuffer gives you a list of possible completions. *Note Other +Window::. If the variable `minibuffer-confirm-incomplete' is `t', you are asked for confirmation if there is no known completion for the text you typed. For example, if you attempted to visit a non-existent file, the minibuffer might read: - Find File:chocolate_bar.c [no completions, confirm] + Find File: chocolate_bar.c [no completions, confirm] If you press `Return' again, that confirms the filename. Otherwise, you can continue editing it. - Emacs supports recursive use of the minibuffer. However, it is easy -to do this by accident (because of autorepeating keyboards, for -example) and get confused. Therefore, most Emacs commands that use the + XEmacs supports recursive use of the minibuffer. However, it is easy +to do this by accident (because of autorepeating keyboards, for example) +and get confused. Therefore, most XEmacs commands that use the minibuffer refuse to operate if the minibuffer window is selected. If the minibuffer is active but you have switched to a different window, recursive use of the minibuffer is allowed--if you know enough to try to do this, you probably will not get confused. - If you set the variable `enable-recursive-minibuffers' to be + If you set the variable `enable-recursive-minibuffers' to a non-`nil', recursive use of the minibuffer is always allowed. diff --git a/info/xemacs.info-4 b/info/xemacs.info-4 index 66ed5a7..4e46b44 100644 --- a/info/xemacs.info-4 +++ b/info/xemacs.info-4 @@ -30,34 +30,36 @@ versions, except that the sections entitled "The GNU Manifesto", translation approved by the author instead of in the original English.  -File: xemacs.info, Node: Completion, Next: Repetition, Prev: Minibuffer Edit, Up: Minibuffer +File: xemacs.info, Node: Completion, Next: Minibuffer History, Prev: Minibuffer Edit, Up: Minibuffer Completion ========== - When appropriate, the minibuffer provides a "completion" facility. -You type the beginning of an argument and one of the completion keys, -and Emacs visibly fills in the rest, depending on what you have already -typed. + For certain kinds of arguments, you can use "completion" to enter +the argument value. Completion means that you type part of the +argument, then XEmacs visibly fills in the rest, or as much as can be +determined from the part you have typed. When completion is available, certain keys--, , and ---are redefined to complete an abbreviation present in the -minibuffer into a longer string that it stands for, by matching it -against a set of "completion alternatives" provided by the command -reading the argument. `?' is defined to display a list of possible -completions of what you have inserted. - - For example, when the minibuffer is being used by `Meta-x' to read -the name of a command, it is given a list of all available Emacs command -names to complete against. The completion keys match the text in the -minibuffer against all the command names, find any additional -characters of the name that are implied by the ones already present in -the minibuffer, and add those characters to the ones you have given. +--are rebound to complete the text present in the minibuffer into +a longer string that it stands for, by matching it against a set of +"completion alternatives" provided by the command reading the argument. +`?' is defined to display a list of possible completions of what you +have inserted. + + For example, when `M-x' uses the minibuffer to read the name of a +command, it provides a list of all available XEmacs command names to +complete against. The completion keys match the text in the minibuffer +against all the command names, find any additional name characters +implied by the ones already present in the minibuffer, and add those +characters to the ones you have given. This is what makes it possible +to type `M-x inse b ' instead of `M-x insert-buffer ' +(for example). Case is normally significant in completion because it is significant -in most of the names that you can complete (buffer names, file names, -and command names). Thus, `fo' will not complete to `Foo'. When you -are completing a name in which case does not matter, case may be ignored +in most of the names that you can complete (buffer names, file names and +command names). Thus, `fo' does not complete to `Foo'. When you are +completing a name in which case does not matter, case may be ignored for completion's sake if specified by program. When a completion list is displayed, the completions will highlight @@ -65,40 +67,53 @@ as you move the mouse over them. Clicking the middle mouse button on any highlighted completion will "select" it just as if you had typed it in and hit . -A Completion Example --------------------- +* Menu: + +* Example: Completion Example. +* Commands: Completion Commands. +* Strict Completion:: +* Options: Completion Options. + + +File: xemacs.info, Node: Completion Example, Next: Completion Commands, Prev: Completion, Up: Completion - Consider the following example. If you type `Meta-x au ', +Completion Example +------------------ + + A concrete example may help here. If you type `M-x au ', the looks for alternatives (in this case, command names) that start -with `au'. There are only two commands: `auto-fill-mode' and -`auto-save-mode'. They are the same as far as `auto-', so the `au' in -the minibuffer changes to `auto-'. +with `au'. There are several, including `auto-fill-mode' and +`auto-save-mode'--but they are all the same as far as `auto', so the +`au' in the minibuffer changes to `auto'. - If you type again immediately, there are multiple possibilities -for the very next character--it could be `s' or `f'--so no more -characters are added; but a list of all possible completions is -displayed in another window. + If you type again immediately, there are multiple +possibilities for the very next character--it could be any of `c-'--so +no more characters are added; instead, displays a list of all +possible completions in another window. If you go on to type `f ', this sees `auto-f'. The only -command name starting this way is `auto-fill-mode', so completion -inserts the rest of that command. You now have `auto-fill-mode' in the -minibuffer after typing just `au f '. Note that has -this effect because in the minibuffer it is bound to the function -`minibuffer-complete' when completion is supposed to be done. +command name starting this way is `auto-fill-mode', so completion fills +in the rest of that. You now have `auto-fill-mode' in the minibuffer +after typing just `au f '. Note that has this effect +because in the minibuffer it is bound to the command +`minibuffer-complete' when completion is available. + + +File: xemacs.info, Node: Completion Commands, Next: Strict Completion, Prev: Completion Example, Up: Completion Completion Commands ------------------- - Here is a list of all the completion commands defined in the -minibuffer when completion is available. + Here is a list of the completion commands defined in the minibuffer +when completion is available. `' Complete the text in the minibuffer as much as possible (`minibuffer-complete'). `' - Complete the text in the minibuffer but don't add or fill out more - than one word (`minibuffer-complete-word'). + Complete the minibuffer text, but don't go beyond one word + (`minibuffer-complete-word'). `' Submit the text in the minibuffer as the argument, possibly @@ -117,13 +132,48 @@ minibuffer when completion is available. Clicking will select the highlighted completion and exit the minibuffer. (`minibuf-select-highlighted-completion'). - completes in a way that is similar to , but it never goes -beyond the next hyphen or space. If you have `auto-f' in the -minibuffer and type , it finds that the completion is -`auto-fill-mode', but it stops completing after `fill-'. The result is -`auto-fill-'. Another at this point completes all the way to -`auto-fill-mode'. in the minibuffer runs the function -`minibuffer-complete-word' when completion is available. + completes much like , but never goes beyond the next +hyphen or space. If you have `auto-f' in the minibuffer and type +, it finds that the completion is `auto-fill-mode', but it stops +completing after `fill-'. This gives `auto-fill-'. Another at +this point completes all the way to `auto-fill-mode'. in the +minibuffer when completion is available runs the command +`minibuffer-complete-word'. + + Here are some commands you can use to choose a completion from a +window that displays a list of completions: + +`button2up' + Clicking mouse button 2 on a completion in the list of possible + completions chooses that completion (`mouse-choose-completion'). + You normally use this command while point is in the minibuffer; + but you must click in the list of completions, not in the + minibuffer itself. + +`' + Typing _in the completion list buffer_ chooses the + completion that point is in or next to (`choose-completion'). To + use this command, you must first switch windows to the window that + shows the list of completions. + +`' +`' +`C-f' + Typing the right-arrow key , or `C-f' _in the + completion list buffer_ moves point to the following completion + (`next-list-mode-item'). + +`' +`C-b' + Typing the left-arrow key or `C-b' _in the completion list + buffer_ moves point toward the beginning of the buffer, to the + previous completion (`previous-list-mode-item'). + + +File: xemacs.info, Node: Strict Completion, Next: Completion Options, Prev: Completion Commands, Up: Completion + +Strict Completion +----------------- There are three different ways that can work in completing minibuffers, depending on how the argument will be used. @@ -144,27 +194,35 @@ minibuffers, depending on how the argument will be used. Cautious completion is used for reading file names for files that must already exist. - * "Permissive" completion is used when any string is meaningful, and - the list of completion alternatives is just a guide. For example, - when `C-x C-f' reads the name of a file to visit, any file name is - allowed, in case you want to create a file. In permissive - completion, takes the text in the minibuffer exactly as - given, without completing it. + * "Permissive" completion is used when any string whatever is + meaningful, and the list of completion alternatives is just a + guide. For example, when `C-x C-f' reads the name of a file to + visit, any file name is allowed, in case you want to create a + file. In permissive completion, takes the text in the + minibuffer exactly as given, without completing it. + + The completion commands display a list of all possible completions in +a window whenever there is more than one possibility for the very next +character. Also, typing `?' explicitly requests such a list. If the +list of completions is long, you can scroll it with `C-M-v' (*note +Other Window::). + + +File: xemacs.info, Node: Completion Options, Prev: Strict Completion, Up: Completion - The completion commands display a list of all possible completions -in a window whenever there is more than one possibility for the very -next character. Typing `?' explicitly requests such a list. The list -of completions counts as help text, so `C-M-v' typed in the minibuffer -scrolls the list. +Completion Options +------------------ When completion is done on file names, certain file names are usually ignored. The variable `completion-ignored-extensions' contains a list of strings; a file whose name ends in any of those strings is ignored as a possible completion. The standard value of this variable has several elements including `".o"', `".elc"', `".dvi"' and `"~"'. The -effect is that, for example, `foo' completes to `foo.c' even though -`foo.o' exists as well. If the only possible completions are files -that end in "ignored" strings, they are not ignored. +effect is that, for example, `foo' can complete to `foo.c' even though +`foo.o' exists as well. However, if _all_ the possible completions end +in "ignored" strings, then they are not ignored. Ignored extensions do +not apply to lists of completions--those always mention all possible +completions. If a completion command finds the next character is undetermined, it automatically displays a list of all possible completions. If the @@ -177,20 +235,89 @@ completions, an extra must be typed to confirm the response. This is helpful for catching typos.  -File: xemacs.info, Node: Repetition, Prev: Completion, Up: Minibuffer +File: xemacs.info, Node: Minibuffer History, Next: Repetition, Prev: Completion, Up: Minibuffer + +Minibuffer History +================== + + Every argument that you enter with the minibuffer is saved on a +"minibuffer history list" so that you can use it again later in another +argument. Special commands load the text of an earlier argument in the +minibuffer. They discard the old minibuffer contents, so you can think +of them as moving through the history of previous arguments. + +`' +`M-p' + Move to the next earlier argument string saved in the minibuffer + history (`previous-history-element'). + +`' +`M-n' + Move to the next later argument string saved in the minibuffer + history (`next-history-element'). + +`M-r REGEXP ' + Move to an earlier saved argument in the minibuffer history that + has a match for REGEXP (`previous-matching-history-element'). + +`M-s REGEXP ' + Move to a later saved argument in the minibuffer history that has a + match for REGEXP (`next-matching-history-element'). + + The simplest way to reuse the saved arguments in the history list is +to move through the history list one element at a time. While in the +minibuffer, use `M-p' or up-arrow (`previous-history-element') to "move +to" the next earlier minibuffer input, and use `M-n' or down-arrow +(`next-history-element') to "move to" the next later input. + + The previous input that you fetch from the history entirely replaces +the contents of the minibuffer. To use it as the argument, exit the +minibuffer as usual with . You can also edit the text before you +reuse it; this does not change the history element that you "moved" to, +but your new argument does go at the end of the history list in its own +right. + + For many minibuffer arguments there is a "default" value. In some +cases, the minibuffer history commands know the default value. Then you +can insert the default value into the minibuffer as text by using `M-n' +to move "into the future" in the history. + + There are also commands to search forward or backward through the +history; they search for history elements that match a regular +expression that you specify with the minibuffer. `M-r' +(`previous-matching-history-element') searches older elements in the +history, while `M-s' (`next-matching-history-element') searches newer +elements. By special dispensation, these commands can use the +minibuffer to read their arguments even though you are already in the +minibuffer when you issue them. As with incremental searching, an +uppercase letter in the regular expression makes the search +case-sensitive (*note Search Case::). + + All uses of the minibuffer record your input on a history list, but +there are separate history lists for different kinds of arguments. For +example, there is a list for file names, used by all the commands that +read file names. + + There are several other very specific history lists, including one +for command names read by `M-x', one for buffer names, one for arguments +of commands like `query-replace', and one for compilation commands read +by `compile'. Finally, there is one "miscellaneous" history list that +most minibuffer arguments use. + + +File: xemacs.info, Node: Repetition, Prev: Minibuffer History, Up: Minibuffer Repeating Minibuffer Commands ============================= Every command that uses the minibuffer at least once is recorded on a -special history list, together with the values of the minibuffer -arguments, so that you can repeat the command easily. In particular, -every use of `Meta-x' is recorded, since `M-x' uses the minibuffer to -read the command name. +special history list, together with the values of its arguments, so that +you can repeat the entire command. In particular, every use of `M-x' +is recorded there, since `M-x' uses the minibuffer to read the command +name. -`C-x ' - Re-execute a recent minibuffer command - (`repeat-complex-command'). +`C-x ' + Re-execute a recent minibuffer command (`repeat-complex-command'). `M-p' Within `C-x ', move to previous recorded command @@ -202,36 +329,37 @@ read the command name. `M-x list-command-history' Display the entire command history, showing all the commands `C-x - ' can repeat, most recent first. + ' can repeat, most recent first. - `C-x ' is used to re-execute a recent command that used the -minibuffer. With no argument, it repeats the last command. A numeric -argument specifies which command to repeat; 1 means the last one, and -larger numbers specify earlier commands. + `C-x ' is used to re-execute a recent minibuffer-using +command. With no argument, it repeats the last such command. A +numeric argument specifies which command to repeat; one means the last +one, and larger numbers specify earlier ones. - `C-x ' works by turning the previous command into a Lisp + `C-x ' works by turning the previous command into a Lisp expression and then entering a minibuffer initialized with the text for that expression. If you type just , the command is repeated as -before. You can also change the command by editing the Lisp expression. -The expression you finally submit will be executed. The repeated -command is added to the front of the command history unless it is -identical to the most recently executed command already there. +before. You can also change the command by editing the Lisp +expression. Whatever expression you finally submit is what will be +executed. The repeated command is added to the front of the command +history unless it is identical to the most recently executed command +already there. Even if you don't understand Lisp syntax, it will probably be obvious which command is displayed for repetition. If you do not change the text, you can be sure the command will repeat exactly as before. - If you are in the minibuffer for `C-x ' and the command shown -to you is not the one you want to repeat, you can move around the list -of previous commands using `M-n' and `M-p'. `M-p' replaces the + If you are in the minibuffer for `C-x ' and the command +shown to you is not the one you want to repeat, you can move around the +list of previous commands using `M-n' and `M-p'. `M-p' replaces the contents of the minibuffer with the next earlier recorded command, and `M-n' replaces it with the next later command. After finding the desired previous command, you can edit its expression and then resubmit it by typing . Any editing you have done on the command to be repeated is lost if you use `M-n' or `M-p'. - `M-n' and `M-p' are specially defined within `C-x ' to run the -commands `previous-history-element' and `next-history-element'. + `M-n' and `M-p' are specially defined within `C-x ' to +run the commands `previous-history-element' and `next-history-element'. The list of previous commands using the minibuffer is stored as a Lisp list in the variable `command-history'. Each element of the list @@ -1012,209 +1140,3 @@ and the text of the selection is deleted. selected text is immediately inserted after being selected; and the selection is immediately disowned afterwards. - -File: xemacs.info, Node: Killing, Next: Yanking, Prev: Additional Mouse Operations, Up: Top - -Deletion and Killing -==================== - - Most commands that erase text from the buffer save it. You can get -the text back if you change your mind, or you can move or copy it to -other parts of the buffer. Commands which erase text and save it in the -kill ring are known as "kill" commands. Some other commands erase text -but do not save it; they are known as "delete" commands. (This -distinction is made only for erasing text in the buffer.) - - The commands' names and individual descriptions use the words `kill' -and `delete' to indicate what they do. If you perform a kill or delete -command by mistake, use the `C-x u' (`undo') command to undo it (*note -Undo::). The delete commands include `C-d' (`delete-char') and -(`delete-backward-char'), which delete only one character at a time, -and those commands that delete only spaces or newlines. Commands that -can destroy significant amounts of nontrivial data usually kill. - -Deletion --------- - -`C-d' - Delete next character (`delete-char'). - -`' - Delete previous character (`delete-backward-char'). - -`M-\' - Delete spaces and tabs around point (`delete-horizontal-space'). - -`M-' - Delete spaces and tabs around point, leaving one space - (`just-one-space'). - -`C-x C-o' - Delete blank lines around the current line (`delete-blank-lines'). - -`M-^' - Join two lines by deleting the intervening newline, and any - indentation following it (`delete-indentation'). - - The most basic delete commands are `C-d' (`delete-char') and -(`delete-backward-char'). `C-d' deletes the character after point, the -one the cursor is "on top of". Point doesn't move. deletes the -character before the cursor, and moves point back. You can delete -newlines like any other characters in the buffer; deleting a newline -joins two lines. Actually, `C-d' and aren't always delete -commands; if you give them an argument, they kill instead, since they -can erase more than one character this way. - - The other delete commands delete only formatting characters: spaces, -tabs and newlines. `M-\' (`delete-horizontal-space') deletes all -spaces and tab characters before and after point. `M-' -(`just-one-space') does the same but leaves a single space after point, -regardless of the number of spaces that existed previously (even zero). - - `C-x C-o' (`delete-blank-lines') deletes all blank lines after the -current line. If the current line is blank, it deletes all blank lines -preceding the current line as well as leaving one blank line, the -current line. `M-^' (`delete-indentation') joins the current line and -the previous line, or, if given an argument, joins the current line and -the next line by deleting a newline and all surrounding spaces, possibly -leaving a single space. *Note M-^: Indentation. - -Killing by Lines ----------------- - -`C-k' - Kill rest of line or one or more lines (`kill-line'). - - The simplest kill command is `C-k'. If given at the beginning of a -line, it kills all the text on the line, leaving the line blank. If -given on a blank line, the blank line disappears. As a consequence, a -line disappears completely if you go to the front of a non-blank line -and type `C-k' twice. - - More generally, `C-k' kills from point up to the end of the line, -unless it is at the end of a line. In that case, it kills the newline -following the line, thus merging the next line into the current one. -Emacs ignores invisible spaces and tabs at the end of the line when -deciding which case applies: if point appears to be at the end of the -line, you can be sure the newline will be killed. - - If you give `C-k' a positive argument, it kills that many lines and -the newlines that follow them (however, text on the current line before -point is not killed). With a negative argument, `C-k' kills back to a -number of line beginnings. An argument of -2 means kill back to the -second line beginning. If point is at the beginning of a line, that -line beginning doesn't count, so `C-u - 2 C-k' with point at the front -of a line kills the two previous lines. - - `C-k' with an argument of zero kills all the text before point on the -current line. - -Other Kill Commands -------------------- - -`C-w' - Kill region (from point to the mark) (`kill-region'). *Note - Words::. - -`M-d' - Kill word (`kill-word'). - -`M-' - Kill word backwards (`backward-kill-word'). - -`C-x ' - Kill back to beginning of sentence (`backward-kill-sentence'). - *Note Sentences::. - -`M-k' - Kill to end of sentence (`kill-sentence'). - -`C-M-k' - Kill sexp (`kill-sexp'). *Note Lists::. - -`M-z CHAR' - Kill up to next occurrence of CHAR (`zap-to-char'). - - `C-w' (`kill-region') is a very general kill command; it kills -everything between point and the mark. You can use this command to kill -any contiguous sequence of characters by first setting the mark at one -end of a sequence of characters, then going to the other end and typing -`C-w'. - - A convenient way of killing is combined with searching: `M-z' -(`zap-to-char') reads a character and kills from point up to (but not -including) the next occurrence of that character in the buffer. If -there is no next occurrence, killing goes to the end of the buffer. A -numeric argument acts as a repeat count. A negative argument means to -search backward and kill text before point. - - Other syntactic units can be killed: words, with `M-' and `M-d' -(*note Words::); sexps, with `C-M-k' (*note Lists::); and sentences, -with `C-x ' and `M-k' (*note Sentences::). - - -File: xemacs.info, Node: Yanking, Next: Using X Selections, Prev: Killing, Up: Top - -Yanking -======= - - "Yanking" means getting back text which was killed. Some systems -call this "pasting". The usual way to move or copy text is to kill it -and then yank it one or more times. - -`C-y' - Yank last killed text (`yank'). - -`M-y' - Replace re-inserted killed text with the previously killed text - (`yank-pop'). - -`M-w' - Save region as last killed text without actually killing it - (`copy-region-as-kill'). - -`C-M-w' - Append next kill to last batch of killed text (`append-next-kill'). - -* Menu: - -* Kill Ring:: Where killed text is stored. Basic yanking. -* Appending Kills:: Several kills in a row all yank together. -* Earlier Kills:: Yanking something killed some time ago. - - -File: xemacs.info, Node: Kill Ring, Next: Appending Kills, Prev: Yanking, Up: Yanking - -The Kill Ring -------------- - - All killed text is recorded in the "kill ring", a list of blocks of -text that have been killed. There is only one kill ring, used in all -buffers, so you can kill text in one buffer and yank it in another -buffer. This is the usual way to move text from one file to another. -(*Note Accumulating Text::, for some other ways.) - - If you have two separate Emacs processes, you cannot use the kill -ring to move text. If you are using XEmacs under X, however, you can -use the X selection mechanism to move text from one to another. - - If you are using XEmacs under X and have one Emacs process with -multiple frames, they do share the same kill ring. You can kill or -copy text in one Emacs frame, then yank it in the other frame belonging -to the same process. - - The command `C-y' (`yank') reinserts the text of the most recent -kill. It leaves the cursor at the end of the text and sets the mark at -the beginning of the text. *Note Mark::. - - `C-u C-y' yanks the text, leaves the cursor in front of the text, -and sets the mark after it, if the argument is with just a `C-u'. Any -other argument, including `C-u' and digits, has different results, -described below, under "Yanking Earlier Kills". - - To copy a block of text, you can also use `M-w' -(`copy-region-as-kill'), which copies the region into the kill ring -without removing it from the buffer. `M-w' is similar to `C-w' followed -by `C-y' but does not mark the buffer as "modified" and does not -actually cut anything. - diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index db885d4..6b90ddb 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,47 @@ +2000-01-18 Martin Buchholz + + * XEmacs 21.2.27 is released. + +2000-01-18 Martin Buchholz + + * ootags.c: Ansify. + * etags.c: + * getopt.c: + * cvtmail.c: + Remove declarations of ANSI errno, getenv(), malloc(). + +2000-01-13 Martin Buchholz + + * movemail.c (main): + * make-docfile.c (write_c_args): + Simple compiler warning fixes. + +2000-01-09 Martin Buchholz + + * *.[ch]: Change <../src/config.h> to + * ellcc.c: Always use <...> to #include files not in `.' + * Makefile.in.in: Use safer -I paths. + Use $(top_srcdir) instead of $(srcdir)/../src + Add warning comment. + +2000-01-08 Martin Buchholz + + * movemail.c: Warning removal. + +2000-01-06 Norbert Koch + + * movemail.c: Typo fix. + +2000-01-03 Michael Sperber [Mr. Preprocessor] + + * movemail.c: Overhaul of the locking code. + +2000-01-03 Martin Buchholz + + * etags.c (etags_strrchr): Ansify. + (etags_strchr): Ansify. + (get_compressor_from_suffix): Remove warning, make code cleaner. + 1999-12-31 Martin Buchholz * XEmacs 21.2.26 is released. diff --git a/lib-src/Makefile.in.in b/lib-src/Makefile.in.in index 7730260..d926072 100644 --- a/lib-src/Makefile.in.in +++ b/lib-src/Makefile.in.in @@ -91,7 +91,7 @@ INSTALLABLES = $(INSTALLABLES_BASE) ellcc #ifdef HAVE_MS_WINDOWS INSTALLABLES = $(INSTALLABLES_BASE) runxemacs rungnuclient #else -INSTALLABLES = $(INSTALLABLES_BASE) +INSTALLABLES = $(INSTALLABLES_BASE) #endif #endif @@ -162,7 +162,13 @@ ld_libs_general=@ld_libs_general@ ## We need to #define emacs to get the right versions of some files. -cppflags = -Demacs -I$(top_srcdir)/src -I../src $(CPPFLAGS) +## To understand the order of -I flags, consider what happens if you run +## ./configure in the source tree, and then run +## $(srcdir).2.26/configure in some other build tree. +## Where will the generated files like config.h be included from? +## This is also why you _must_ use <...> instead of "..." +## when #include'ing generated files. +cppflags = -Demacs -I. -I../src -I$(srcdir) -I$(top_srcdir)/src $(CPPFLAGS) cflags = $(CFLAGS) $(cppflags) $(c_switch_general) ldflags = $(LDFLAGS) $(ld_switch_general) $(ld_libs_general) @@ -279,32 +285,29 @@ getopt.o: ${srcdir}/getopt.c ${srcdir}/getopt.h ${CC} -c $(cflags) ${srcdir}/getopt.c getopt1.o: ${srcdir}/getopt1.c ${srcdir}/getopt.h ${CC} -c $(cflags) ${srcdir}/getopt1.c -alloca.o: ${srcdir}/../src/alloca.c +alloca.o: ${top_srcdir}/src/alloca.c ${CC} -c $(cflags) ${srcdir}/../src/alloca.c -regex.o: ${srcdir}/../src/regex.c ${srcdir}/../src/regex.h +regex.o: ${srcdir}/../src/regex.c ${top_srcdir}/src/regex.h $(CC) -c `echo $(cflags) | sed 's/-Demacs/ /'` \ - -DINHIBIT_STRING_HEADER ${srcdir}/../src/regex.c + -DINHIBIT_STRING_HEADER ${top_srcdir}/src/regex.c -etags_args = -I. $(cflags) -I${srcdir} -I${srcdir}/../src \ - -DVERSION='"${version}"' ${srcdir}/etags.c \ +etags_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/etags.c \ $(GETOPTOBJS) regex.o $(ldflags) -etags_deps = ${srcdir}/etags.c $(GETOPTDEPS) regex.o ../src/config.h +etags_deps = ${srcdir}/etags.c $(GETOPTDEPS) regex.o ../src/config.h etags: ${etags_deps} $(CC) ${etags_args} -o $@ -ellcc_args = -I. $(cflags) -I${srcdir} -I${srcdir}/../src \ - ${srcdir}/ellcc.c $(ldflags) +ellcc_args = $(cflags) ${srcdir}/ellcc.c $(ldflags) ellcc_deps = ${srcdir}/ellcc.c ellcc.h ../src/config.h ellcc: ${ellcc_deps} $(CC) ${ellcc_args} -o $@ -run_args = -I. $(cflags) -I${srcdir} -I${srcdir}/../src \ - -DVERSION='"${version}"' ${srcdir}/run.c \ +run_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/run.c \ $(ldflags) -Wl,--subsystem,windows -e _mainCRTStartup -run_deps = ${srcdir}/run.c ${srcdir}/run.h ${srcdir}/run.rc \ +run_deps = ${srcdir}/run.c ${srcdir}/run.h ${srcdir}/run.rc \ ${srcdir}/../nt/xemacs.ico ${srcdir}/../nt/file.ico \ ${srcdir}/../nt/lisp.ico @@ -319,10 +322,9 @@ runxemacs: run rungnuclient: run cp run.exe $@.exe -ootags_args = -I. $(cflags) -I${srcdir} -I${srcdir}/../src \ - -DVERSION='"${version}"' ${srcdir}/ootags.c \ +ootags_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/ootags.c \ $(GETOPTOBJS) regex.o $(ldflags) -ootags_deps = ${srcdir}/ootags.c $(GETOPTDEPS) regex.o ../src/config.h +ootags_deps = ${srcdir}/ootags.c $(GETOPTDEPS) regex.o ../src/config.h ootags: ${ootags_deps} $(CC) ${ootags_args} -o $@ diff --git a/lib-src/b2m.c b/lib-src/b2m.c index dda077d..d92ea5a 100644 --- a/lib-src/b2m.c +++ b/lib-src/b2m.c @@ -19,7 +19,7 @@ by Francesco Potorti` . */ #ifdef HAVE_CONFIG_H -#include <../src/config.h> +#include /* On some systems, Emacs defines static as nothing for the sake of unexec. We don't want that here since we don't use unexec. */ #undef static diff --git a/lib-src/cvtmail.c b/lib-src/cvtmail.c index 768bcee..6bdcaf1 100644 --- a/lib-src/cvtmail.c +++ b/lib-src/cvtmail.c @@ -35,17 +35,12 @@ Boston, MA 02111-1307, USA. */ */ -#include <../src/config.h> +#include #include #include +#include -#if __STDC__ || defined(STDC_HEADERS) -# include -#else -char *malloc (); -char *getenv (); -#endif static void *xmalloc (unsigned int); static void *xrealloc (char *ptr, unsigned int); static void skip_to_lf (FILE *stream); @@ -68,7 +63,7 @@ main (int argc, char *argv[]) char name[14]; int c; - hd = (char *) getenv ("HOME"); + hd = getenv ("HOME"); md = (char *) xmalloc (strlen (hd) + 10); strcpy (md, hd); diff --git a/lib-src/digest-doc.c b/lib-src/digest-doc.c index a39ddc6..1fc540c 100644 --- a/lib-src/digest-doc.c +++ b/lib-src/digest-doc.c @@ -6,7 +6,7 @@ but in texinfo format and sorted by function/variable name. */ #ifdef emacs -#include <../src/config.h> +#include #endif #include diff --git a/lib-src/ellcc.c b/lib-src/ellcc.c index a116c9d..5168a11 100644 --- a/lib-src/ellcc.c +++ b/lib-src/ellcc.c @@ -58,7 +58,7 @@ the lines of: See the samples for more details. */ -#include <../src/config.h> +#include #include #include #include @@ -71,8 +71,9 @@ See the samples for more details. #endif /* HAVE_UNISTD_H */ #define EMODULES_GATHER_VERSION -#include "emodules.h" -#include "ellcc.h" + +#include +#include /* Generated files must be included using <...> */ #define DEBUG diff --git a/lib-src/etags.c b/lib-src/etags.c index 35a161e..12bdc61 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -96,9 +96,6 @@ char pot_etags_version[] = "@(#) pot revision number is 13.33"; #include #include #include -#ifndef errno - extern int errno; -#endif #include #include @@ -194,8 +191,6 @@ typedef struct char **interpreters; } language; -extern char *getenv (); - typedef struct node_st { /* sorting structure */ char *name; /* function or type name */ @@ -282,8 +277,8 @@ char *skip_spaces (char *cp); char *skip_non_spaces (char *cp); char *savenstr (char *cp, int len); char *savestr (char *cp); -char *etags_strchr (char *sp, char c); -char *etags_strrchr (char *sp, char c); +char *etags_strchr (const char *sp, int c); +char *etags_strrchr (const char *sp, int c); char *etags_getcwd (void); char *relative_filename (char *file, char *dir); char *absolute_filename (char *file, char *dir); @@ -1208,17 +1203,21 @@ get_compressor_from_suffix (file, extptr) /* Let those poor souls who live with DOS 8+3 file name limits get some solace by treating foo.cgz as if it were foo.c.gz, etc. Only the first do loop is run if not MSDOS */ +#ifdef MSDOS do { for (compr = compressors; compr->suffix != NULL; compr++) if (streq (compr->suffix, suffix)) return compr; -#ifndef MSDOS - break; -#endif if (extptr != NULL) *extptr = ++suffix; } while (*suffix != '\0'); +#else + for (compr = compressors; compr->suffix != NULL; compr++) + if (streq (compr->suffix, suffix)) + return compr; +#endif + return NULL; } @@ -5112,14 +5111,13 @@ savenstr (cp, len) /* * Return the ptr in sp at which the character c last * appears; NULL if not found - * - * Identical to System V strrchr, included for portability. */ char * etags_strrchr (sp, c) - register char *sp, c; + const char *sp; + int c; { - register char *r; + register const char *r; r = NULL; do @@ -5127,24 +5125,23 @@ etags_strrchr (sp, c) if (*sp == c) r = sp; } while (*sp++); - return r; + return (char *) r; } /* * Return the ptr in sp at which the character c first * appears; NULL if not found - * - * Identical to System V strchr, included for portability. */ char * etags_strchr (sp, c) - register char *sp, c; + const char *sp; + int c; { do { if (*sp == c) - return sp; + return (char *) sp; } while (*sp++); return NULL; } diff --git a/lib-src/fakemail.c b/lib-src/fakemail.c index d3e4786..63ac5d5 100644 --- a/lib-src/fakemail.c +++ b/lib-src/fakemail.c @@ -21,7 +21,7 @@ Boston, MA 02111-1307, USA. */ /* Synched up with: FSF 19.28. */ #define NO_SHORTNAMES -#include <../src/config.h> +#include #if defined (BSD) && !defined (BSD4_1) && !defined (USE_FAKEMAIL) /* This program is not used in BSD, so just avoid loader complaints. */ @@ -638,10 +638,6 @@ main (int argc, char *argv[]) register int size; FILE *the_pipe; -#if !(__STDC__ || defined(STDC_HEADERS)) - extern char *getenv (); -#endif - mail_program_name = getenv ("FAKEMAILER"); if (!(mail_program_name && *mail_program_name)) mail_program_name = (char *) MAIL_PROGRAM_NAME; diff --git a/lib-src/getopt.c b/lib-src/getopt.c index dd5cc71..21231de 100644 --- a/lib-src/getopt.c +++ b/lib-src/getopt.c @@ -31,7 +31,7 @@ USA. */ #endif #ifdef HAVE_CONFIG_H -#include <../src/config.h> +#include #endif #include @@ -202,11 +202,6 @@ static char *posixly_correct; #define my_index strchr #else -/* Avoid depending on library functions or files - whose names are inconsistent. */ - -char *getenv (); - static char * my_index (const char *str, int chr) { diff --git a/lib-src/getopt1.c b/lib-src/getopt1.c index 1492066..de15d66 100644 --- a/lib-src/getopt1.c +++ b/lib-src/getopt1.c @@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H -#include <../src/config.h> +#include #endif #include "getopt.h" diff --git a/lib-src/gnuserv.h b/lib-src/gnuserv.h index 9fb3edd..4e2ac5a 100644 --- a/lib-src/gnuserv.h +++ b/lib-src/gnuserv.h @@ -43,7 +43,7 @@ static char header_rcsid [] = "!Header: gnuserv.h,v 2.4 95/02/16 11:58:11 arup a #define NO_SHORTNAMES /* gnuserv should not be compiled using SOCKS */ #define DO_NOT_SOCKSIFY -#include <../src/config.h> +#include #undef read #undef write #undef open diff --git a/lib-src/hexl.c b/lib-src/hexl.c index 0a88b00..8d7f308 100644 --- a/lib-src/hexl.c +++ b/lib-src/hexl.c @@ -1,6 +1,6 @@ /* Synched up with: FSF 19.28. */ -#include <../src/config.h> +#include #include #include diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c index e28e38e..930990e 100644 --- a/lib-src/make-docfile.c +++ b/lib-src/make-docfile.c @@ -40,7 +40,7 @@ Boston, MA 02111-1307, USA. */ */ #define NO_SHORTNAMES /* Tell config not to load remap.h */ -#include <../src/config.h> +#include #include #include @@ -429,10 +429,10 @@ write_c_args (FILE *out, CONST char *func, char *buff, int minargs, static char lo[] = "Lisp_Object"; if ((C_IDENTIFIER_CHAR_P (c) != in_ident) && !in_ident && (strncmp (p, lo, sizeof (lo) - 1) == 0) && - isspace(*(p + sizeof (lo) - 1))) + isspace((unsigned char) (* (p + sizeof (lo) - 1)))) { p += (sizeof (lo) - 1); - while (isspace (*p)) + while (isspace ((unsigned char) (*p))) p++; c = *p; } diff --git a/lib-src/make-path.c b/lib-src/make-path.c index a8093e8..d27ba27 100644 --- a/lib-src/make-path.c +++ b/lib-src/make-path.c @@ -27,7 +27,7 @@ Boston, MA 02111-1307, USA. */ that option. */ #ifdef emacs -#include <../src/config.h> +#include #endif #include diff --git a/lib-src/movemail.c b/lib-src/movemail.c index 9a1a3c6..12f180a 100644 --- a/lib-src/movemail.c +++ b/lib-src/movemail.c @@ -1,35 +1,41 @@ /* movemail foo bar -- move file foo to file bar, - locking file foo the way /bin/mail respects. + locking file foo. Copyright (C) 1986, 1992, 1993, 1994, 1996 Free Software Foundation, Inc. -This file is part of GNU Emacs. +This file is part of XEmacs. -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 -the Free Software Foundation; either version 2, or (at your option) -any later version. +XEmacs is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. -GNU Emacs is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +XEmacs is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. You should have received a copy of the GNU General Public License -along with GNU Emacs; see the file COPYING. If not, write to +along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ +Boston, MA 02111-1307, USA. -/* Important notice: defining MAIL_USE_FLOCK or MAIL_USE_LOCKF *will - cause loss of mail* if you do it on a system that does not normally - use flock as its way of interlocking access to inbox files. The - setting of MAIL_USE_FLOCK and MAIL_USE_LOCKF *must agree* with the - system's own conventions. It is not a choice that is up to you. + Please mail bugs and suggestions to the XEmacs maintainer. +*/ - So, if your system uses lock files rather than flock, then the only way - you can get proper operation is to enable movemail to write lockfiles there. - This means you must either give that directory access modes - that permit everyone to write lockfiles in it, or you must make movemail - a setuid or setgid program. */ +/* Important notice: + * + * You *must* coordinate the locking method used by movemail with that + * used by your mail delivery agent, as well as that of the other mail + * user agents on your system. movemail allows you to do this at run + * time via the -m flag. Moreover, it uses a default determined by + * the MAIL_LOCK_DOT, MAIL_LOCK_LOCKF, MAIL_LOCK_FLOCK, + * MAIL_LOCK_LOCKING, and MAIL_LOCK_MMDF preprocessor settings. + */ + +/* + * Mike Sperber reorganized + * everything that has to with locking in December 1999. + */ /* * Modified January, 1986 by Michael R. Gretzinger (Project Athena) @@ -56,7 +62,7 @@ Boston, MA 02111-1307, USA. */ #define NO_SHORTNAMES /* Tell config not to load remap.h */ #define DONT_ENCAPSULATE -#include <../src/config.h> +#include #include #include #include @@ -106,7 +112,7 @@ char * strerror (int errnum); #include #endif /* WINDOWSNT */ -#if defined (HAVE_UNISTD_H) || defined (USG) +#if defined (HAVE_UNISTD_H) #include #endif /* unistd.h */ #ifndef F_OK @@ -116,23 +122,15 @@ char * strerror (int errnum); #define R_OK 4 #endif /* No F_OK */ -#if defined (HAVE_FCNTL_H) || defined (USG) +#if defined (HAVE_FCNTL_H) #include #endif /* fcntl.h */ -#if defined (XENIX) || defined (WINDOWSNT) +#ifdef HAVE_LOCKING #include #endif -#ifdef MAIL_USE_LOCKF -#define MAIL_USE_SYSTEM_LOCK -#endif - -#ifdef MAIL_USE_FLOCK -#define MAIL_USE_SYSTEM_LOCK -#endif - -#ifdef MAIL_USE_MMDF +#ifdef HAVE_MMDF extern int lk_open (), lk_close (); #endif @@ -144,6 +142,7 @@ extern int lk_open (), lk_close (); static void fatal (char *, char*); static void error (char *, char *, char *); +static void usage(int); static void pfatal_with_name (char *); static void pfatal_and_delete (char *); static char *concat (char *, char *, char *); @@ -160,9 +159,6 @@ static int pop_search_top (popserver server, int msgno, int lines, struct re_pattern_buffer* regexp); #endif -/* Nonzero means this is name of a lock file to delete on fatal error. */ -char *delete_lockname; - int verbose=0; #ifdef MAIL_USE_POP int reverse=0; @@ -184,10 +180,35 @@ struct option longopts[] = { "regex", required_argument, NULL, 'r' }, { "match-lines", required_argument, NULL, 'l' }, #endif + { "lock-method", required_argument, NULL, 'm' }, + { "help", no_argument, NULL, 'h' }, { "verbose", no_argument, NULL, 'v' }, { 0 } }; +#define DOTLOCKING 0 +#define FLOCKING 1 +#define LOCKFING 2 +#define MMDF 3 +#define LOCKING 4 + +#if defined(MAIL_LOCK_FLOCK) && defined(HAVE_FLOCK) +#define DEFAULT_LOCKING FLOCKING +#elif defined(MAIL_LOCK_LOCKF) && defined(HAVE_LOCKF) +#define DEFAULT_LOCKING LOCKFING +#elif defined(MAIL_LOCK_MMDF) && defined(HAVE_MMDF) +#define DEFAULT_LOCKING MMDF +#elif defined(MAIL_LOCK_LOCKING) && defined(HAVE_LOCKING) +#define DEFAULT_LOCKING LOCKING +#else +#define DEFAULT_LOCKING DOTLOCKING +#endif + +static void lock_dot(char *); +static void unlock_dot(char *); +static int parse_lock_method(char *); +static char *unparse_lock_method(int); + int main (int argc, char *argv[]) { @@ -198,23 +219,23 @@ main (int argc, char *argv[]) int status; #endif -#ifndef MAIL_USE_SYSTEM_LOCK - struct stat st; - long now; - int tem; - char *lockname, *p; - char *tempname; - int desc; -#endif /* not MAIL_USE_SYSTEM_LOCK */ + int lock_method = DEFAULT_LOCKING; + + char *maybe_lock_env; - delete_lockname = 0; + maybe_lock_env = getenv("EMACSLOCKMETHOD"); + if (maybe_lock_env) + { + printf("maybe-lock_env: %s\n", maybe_lock_env); + lock_method = parse_lock_method(maybe_lock_env); + } - while (1) + for (;;) { #ifdef MAIL_USE_POP - char* optstring = "i:o:p:l:r:xvk"; + char* optstring = "i:o:m:p:l:r:xvhk"; #else - char* optstring = "i:o:v"; + char* optstring = "i:o:m:vh"; #endif int opt = getopt_long (argc, argv, optstring, longopts, 0); @@ -255,7 +276,16 @@ main (int argc, char *argv[]) regexp_pattern = compile_regex (optarg); break; #endif - case 'v': verbose = 1; break; + + case 'm': + lock_method = parse_lock_method(optarg); + break; + case 'h': + usage(lock_method); + exit(0); + case 'v': + verbose = 1; + break; } } @@ -272,17 +302,19 @@ main (int argc, char *argv[]) if (!inname || !outname) { - fprintf (stderr, "Usage: movemail [-rvxk] [-l lines ] [-i] inbox [-o] destfile [[-p] POP-password]\n"); + usage(lock_method); exit(1); } -#ifdef MAIL_USE_MMDF - mmdf_init (argv[0]); +#ifdef HAVE_MMDF + if (lock_method == MMDF) + mmdf_init (argv[0]); #endif if (*outname == 0) fatal ("Destination file name is empty", 0); + VERBOSE(("checking access to output file\n")); /* Check access to output file. */ if (access (outname, F_OK) == 0 && access (outname, W_OK) != 0) pfatal_with_name (outname); @@ -320,121 +352,83 @@ main (int argc, char *argv[]) if (access (inname, R_OK | W_OK) != 0) pfatal_with_name (inname); -#ifndef MAIL_USE_MMDF -#ifndef MAIL_USE_SYSTEM_LOCK - /* Use a lock file named after our first argument with .lock appended: - If it exists, the mail file is locked. */ - /* Note: this locking mechanism is *required* by the mailer - (on systems which use it) to prevent loss of mail. - - On systems that use a lock file, extracting the mail without locking - WILL occasionally cause loss of mail due to timing errors! - - So, if creation of the lock file fails - due to access permission on the mail spool directory, - you simply MUST change the permission - and/or make movemail a setgid program - so it can create lock files properly. - - You might also wish to verify that your system is one - which uses lock files for this purpose. Some systems use other methods. - - If your system uses the `flock' system call for mail locking, - define MAIL_USE_SYSTEM_LOCK in config.h or the s-*.h file - and recompile movemail. If the s- file for your system - should define MAIL_USE_SYSTEM_LOCK but does not, send a bug report - to bug-gnu-emacs@prep.ai.mit.edu so we can fix it. */ - - lockname = concat (inname, ".lock", ""); - tempname = (char *) xmalloc (strlen (inname) + strlen ("EXXXXXX") + 1); - strcpy (tempname, inname); - p = tempname + strlen (tempname); - while (p != tempname && !IS_DIRECTORY_SEP (p[-1])) - p--; - *p = 0; - strcpy (p, "EXXXXXX"); - mktemp (tempname); - unlink (tempname); - while (1) + if (fork () == 0) { - /* Create the lock file, but not under the lock file name. */ - /* Give up if cannot do that. */ - desc = open (tempname, O_WRONLY | O_CREAT | O_EXCL, 0666); - if (desc < 0) - { - char *message = (char *) xmalloc (strlen (tempname) + 50); - sprintf (message, "%s--see source file lib-src/movemail.c", - tempname); - pfatal_with_name (message); - } - close (desc); + setuid (getuid ()); - tem = link (tempname, lockname); - unlink (tempname); - if (tem >= 0) - break; - sleep (1); + VERBOSE(("opening input file\n")); - /* If lock file is five minutes old, unlock it. - Five minutes should be good enough to cope with crashes - and wedgitude, and long enough to avoid being fooled - by time differences between machines. */ - if (stat (lockname, &st) >= 0) + switch (lock_method) { - now = time (0); - if (st.st_ctime < now - 300) - unlink (lockname); + case DOTLOCKING: + indesc = open (inname, O_RDONLY); + break; +#ifdef HAVE_LOCKF + case LOCKFING: + indesc = open (inname, O_RDWR); + break; +#endif +#ifdef HAVE_FLOCK + case FLOCKING: + indesc = open (inname, O_RDWR); + break; +#endif +#ifdef HAVE_LOCKING + case LOCKING: + indesc = open (inname, O_RDWR); + break; +#endif +#ifdef HAVE_MMDF + case MMDF: + indesc = lk_open (inname, O_RDONLY, 0, 0, 10); + break; +#endif + default: abort(); } - } - - delete_lockname = lockname; -#endif /* not MAIL_USE_SYSTEM_LOCK */ -#endif /* not MAIL_USE_MMDF */ - - if (fork () == 0) - { - setuid (getuid ()); - -#ifndef MAIL_USE_MMDF -#ifdef MAIL_USE_SYSTEM_LOCK - indesc = open (inname, O_RDWR); -#else /* if not MAIL_USE_SYSTEM_LOCK */ - indesc = open (inname, O_RDONLY); -#endif /* not MAIL_USE_SYSTEM_LOCK */ -#else /* MAIL_USE_MMDF */ - indesc = lk_open (inname, O_RDONLY, 0, 0, 10); -#endif /* MAIL_USE_MMDF */ if (indesc < 0) pfatal_with_name (inname); -#if defined (BSD) || defined (XENIX) +#ifdef HAVE_UMASK /* In case movemail is setuid to root, make sure the user can read the output file. */ - /* This is desirable for all systems - but I don't want to assume all have the umask system call */ umask (umask (0) & 0333); -#endif /* BSD or Xenix */ +#endif + outdesc = open (outname, O_WRONLY | O_CREAT | O_EXCL, 0666); if (outdesc < 0) pfatal_with_name (outname); -#ifdef MAIL_USE_SYSTEM_LOCK -#ifdef MAIL_USE_LOCKF - if (lockf (indesc, F_LOCK, 0) < 0) pfatal_with_name (inname); -#else /* not MAIL_USE_LOCKF */ -#ifdef XENIX - if (locking (indesc, LK_RLCK, 0L) < 0) pfatal_with_name (inname); -#else -#ifdef WINDOWSNT - if (locking (indesc, LK_RLCK, -1L) < 0) pfatal_with_name (inname); -#else - if (flock (indesc, LOCK_EX) < 0) pfatal_with_name (inname); + + VERBOSE(("locking input file\n")); + + switch (lock_method) + { +#ifdef HAVE_LOCKF + case LOCKFING: + if (lockf (indesc, F_LOCK, 0) < 0) + pfatal_with_name (inname); + break; +#endif +#ifdef HAVE_FLOCK + case FLOCKING: + if (flock (indesc, LOCK_EX) < 0) + pfatal_with_name (inname); + break; #endif +#ifdef HAVE_LOCKING + case LOCKING: + if (locking (indesc, LK_RLCK, -1L) < 0) + pfatal_with_name (inname); + break; #endif -#endif /* not MAIL_USE_LOCKF */ -#endif /* MAIL_USE_SYSTEM_LOCK */ + case DOTLOCKING: + lock_dot(inname); + break; + } + VERBOSE(("copying input file to output file\n")); + { char buf[1024]; @@ -453,7 +447,7 @@ main (int argc, char *argv[]) } } -#ifdef BSD +#ifdef HAVE_FSYNC if (fsync (outdesc) < 0) pfatal_and_delete (outname); #endif @@ -462,31 +456,29 @@ main (int argc, char *argv[]) if (close (outdesc) != 0) pfatal_and_delete (outname); -#ifdef MAIL_USE_SYSTEM_LOCK -#if defined (STRIDE) || defined (XENIX) || defined (WINDOWSNT) - /* Stride, xenix have file locking, but no ftruncate. This mess will do. */ - close (open (inname, O_CREAT | O_TRUNC | O_RDWR, 0666)); -#else - ftruncate (indesc, 0L); -#endif /* STRIDE or XENIX */ -#endif /* MAIL_USE_SYSTEM_LOCK */ + VERBOSE(("deleting or truncating input file\n")); -#ifdef MAIL_USE_MMDF - lk_close (indesc, 0, 0, 0); + switch (lock_method) + { + case LOCKFING: + case FLOCKING: + case LOCKING: +#ifdef HAVE_FTRUNCATE + ftruncate (indesc, 0L); #else - close (indesc); + close (open (inname, O_CREAT | O_TRUNC | O_RDWR, 0666)); #endif - -#ifndef MAIL_USE_SYSTEM_LOCK - /* Delete the input file; if we can't, at least get rid of its - contents. */ -#ifdef MAIL_UNLINK_SPOOL - /* This is generally bad to do, because it destroys the permissions - that were set on the file. Better to just empty the file. */ - if (unlink (inname) < 0 && errno != ENOENT) -#endif /* MAIL_UNLINK_SPOOL */ - creat (inname, 0600); -#endif /* not MAIL_USE_SYSTEM_LOCK */ + close (indesc); + break; +#ifdef HAVE_MMDF + case MMDF: + lk_close (indesc, 0, 0, 0); + break; +#endif + case DOTLOCKING: + creat (inname, 0600); + break; + } exit (0); } @@ -497,22 +489,162 @@ main (int argc, char *argv[]) else if (WEXITSTATUS (status) != 0) exit (WEXITSTATUS (status)); -#if !defined (MAIL_USE_MMDF) && !defined (MAIL_USE_SYSTEM_LOCK) - unlink (lockname); -#endif /* not MAIL_USE_MMDF and not MAIL_USE_SYSTEM_LOCK */ + if (lock_method == DOTLOCKING) + unlock_dot(inname); -#endif /* ! DISABLE_DIRECT_ACCESS */ +#endif /* not DISABLE_DIRECT_ACCESS */ return 0; } - + +static void +usage(int lock_method) +{ + printf ("Usage: movemail [-rvxkh] [-l lines ] [-m method ] [-i] inbox [-o] destfile [[-p] POP-password]\n"); + printf("where method is one of: dot"); +#ifdef HAVE_LOCKF + printf(", lockf"); +#endif +#ifdef HAVE_FLOCK + printf(", flock"); +#endif +#ifdef HAVE_MMDF + printf(", mmdf"); +#endif +#ifdef HAVE_LOCKING + printf(", locking"); +#endif + printf("\nDefault is: %s\n", unparse_lock_method(lock_method)); + +} + +static char * +unparse_lock_method(int lock_method) +{ + switch (lock_method) + { + case DOTLOCKING: return "dot"; + case FLOCKING: return "flock"; + case LOCKFING: return "lockf"; + case LOCKING: return "locking"; + case MMDF: return "mmdf"; + default: abort();return 0; + } +} + +static int +parse_lock_method(char *method_name) +{ + if (!strcmp("dot", method_name) || !strcmp("file", method_name)) + return DOTLOCKING; +#ifdef HAVE_LOCKF + else if (!strcmp("lockf", method_name)) + return LOCKFING; +#endif +#ifdef HAVE_FLOCK + else if (!strcmp("flock", method_name)) + return FLOCKING; +#endif +#ifdef HAVE_MMDF + else if (!strcmp("mmdf", method_name)) + return MMDF; +#endif +#ifdef HAVE_LOCKING + else if (!strcmp("locking", method_name)) + return LOCKING; +#endif + else + fatal("invalid lock method: %s", method_name); + return 0; /* unreached */ +} + +static char * +dot_filename(char *filename) +{ + return concat (filename, ".lock", ""); +} + +static char *dotlock_filename = NULL; + +static void +lock_dot(char *filename) +{ + struct stat st; + long now; + int tem; + char *lockname, *p; + char *tempname; + int desc; + + dotlock_filename = (char *) xmalloc(strlen(filename) + 1); + + /* Use a lock file named after our first argument with .lock appended: + If it exists, the mail file is locked. */ + + lockname = dot_filename(filename); + tempname = (char *) xmalloc (strlen (filename) + strlen ("EXXXXXX") + 1); + strcpy (tempname, filename); + p = tempname + strlen (tempname); + while (p != tempname && !IS_DIRECTORY_SEP (p[-1])) + p--; + *p = 0; + strcpy (p, "EXXXXXX"); + mktemp (tempname); + unlink (tempname); + + for (;;) + { + /* Create the lock file, but not under the lock file name. */ + /* Give up if cannot do that. */ + desc = open (tempname, O_WRONLY | O_CREAT | O_EXCL, 0666); + if (desc < 0) + { + char *message = (char *) xmalloc (strlen (tempname) + 50); + sprintf (message, "%s--see source file lib-src/movemail.c", + tempname); + pfatal_with_name (message); + } + close (desc); + + tem = link (tempname, lockname); + unlink (tempname); + if (tem >= 0) + break; + sleep (1); + + /* If lock file is five minutes old, unlock it. + Five minutes should be good enough to cope with crashes + and wedgitude, and long enough to avoid being fooled + by time differences between machines. */ + if (stat (lockname, &st) >= 0) + { + now = time (0); + if (st.st_ctime < now - 300) + unlink (lockname); + } + } + strcpy(dotlock_filename, filename); +} + +static void +unlock_dot(char *filename) +{ + unlink(dot_filename(filename)); +} + +static void +maybe_unlock_dot(void) +{ + if (dotlock_filename) + unlock_dot(dotlock_filename); +} + /* Print error message and exit. */ static void fatal (char *s1, char *s2) { - if (delete_lockname) - unlink (delete_lockname); + maybe_unlock_dot(); error (s1, s2, NULL); exit (1); } @@ -568,7 +700,7 @@ xmalloc (unsigned int size) fatal ("virtual memory exhausted", 0); return result; } - + /* This is the guts of the interface to the Post Office Protocol. */ #ifdef MAIL_USE_POP @@ -605,7 +737,7 @@ popmail (char *user, char *outfile, char *password) FILE *mbf; popserver server; - VERBOSE(("opening server\r")); + VERBOSE(("opening server\n")); server = pop_open (0, user, password, POP_NO_GETPASS); if (! server) { @@ -613,7 +745,7 @@ popmail (char *user, char *outfile, char *password) return (1); } - VERBOSE(("stat'ing messages\r")); + VERBOSE(("stat'ing messages\n")); if (pop_stat (server, &nmsgs, &nbytes)) { error (pop_error, NULL, NULL); @@ -654,13 +786,13 @@ popmail (char *user, char *outfile, char *password) for (idx = 0; idx < nmsgs; idx++) { i = reverse ? nmsgs - idx : idx + 1; - VERBOSE(("checking message %d \r", i)); + VERBOSE(("checking message %d \n", i)); if (!regexp_pattern || pop_search_top (server, i, match_lines, regexp_pattern) == POP_RETRIEVED) { - VERBOSE(("retrieving message %d \r", i)); + VERBOSE(("retrieving message %d \n", i)); mbx_delimit_begin (mbf); if (pop_retr (server, i, mbx_write, mbf) != POP_RETRIEVED) { @@ -689,7 +821,7 @@ popmail (char *user, char *outfile, char *password) * directories have lost mail when over quota because these checks were * not made in previous versions of movemail. */ -#ifdef BSD +#ifdef HAVE_FSYNC if (fsync (mbfi) < 0) { error ("Error in fsync: %s", strerror (errno), NULL); @@ -709,7 +841,7 @@ popmail (char *user, char *outfile, char *password) { if (retrieved_list[i] == 1) { - VERBOSE(("deleting message %d \r", i)); + VERBOSE(("deleting message %d \n", i)); if (pop_delete (server, i)) { error (pop_error, NULL, NULL); @@ -877,7 +1009,7 @@ compile_regex (char* pattern) #endif /* MAIL_USE_POP */ - + #ifndef HAVE_STRERROR char * strerror (int errnum) diff --git a/lib-src/ootags.c b/lib-src/ootags.c index 8a9d0c3..80b4cd0 100644 --- a/lib-src/ootags.c +++ b/lib-src/ootags.c @@ -104,9 +104,6 @@ char pot_etags_version[] = "@(#) pot revision number is 12.28"; #include #include #include -#ifndef errno - extern int errno; -#endif #include #include @@ -176,9 +173,9 @@ char pot_etags_version[] = "@(#) pot revision number is 12.28"; #ifdef OO_BROWSER #define set_construct(construct) \ if (!oo_browser_construct) oo_browser_construct = construct -void oo_browser_clear_all_globals(); -void oo_browser_clear_some_globals(); -void oo_browser_check_and_clear_structtype(); +void oo_browser_clear_all_globals(void); +void oo_browser_clear_some_globals(void); +void oo_browser_check_and_clear_structtype(void); #endif /* @@ -200,7 +197,7 @@ void oo_browser_check_and_clear_structtype(); typedef int bool; -typedef void Lang_function (); +typedef void Lang_function (FILE *); typedef struct { @@ -860,9 +857,7 @@ char *massage_name (s) int -main (argc, argv) - int argc; - char *argv[]; +main (int argc, char *argv[]) { int i; unsigned int nincluded_files; @@ -1654,8 +1649,7 @@ static char oo_browser_prefix; #endif void -put_entries (np) - register node *np; +put_entries (node *np) { register char *sp; @@ -1889,9 +1883,7 @@ struct C_stab_entry { char *name; int c_ext; enum sym_type type; }; /* maximum key range = 117, duplicates = 0 */ static unsigned int -hash (str, len) - register char *str; - register int unsigned len; +hash (char *str, unsigned int len) { static unsigned char asso_values[] = { @@ -1909,13 +1901,13 @@ hash (str, len) 10, 62, 59, 130, 28, 27, 50, 19, 3, 130, 130, 130, 130, 130, 130, 130, 130, 130, }; - return len + asso_values[str[2]] + asso_values[str[0]]; + return len + + asso_values[(unsigned char) str[2]] + + asso_values[(unsigned char) str[0]]; } -struct C_stab_entry * -in_word_set (str, len) - register char *str; - register unsigned int len; +static struct C_stab_entry * +in_word_set (char *str, unsigned int len) { static struct C_stab_entry wordlist[] = { @@ -2077,7 +2069,7 @@ enum sym_type structtype; #ifdef OO_BROWSER void -oo_browser_check_and_clear_structtype() +oo_browser_check_and_clear_structtype(void) { /* Allow for multiple enum_label tags. */ if (structtype != st_C_enum) @@ -2156,7 +2148,7 @@ int methodlen; #ifdef OO_BROWSER void -oo_browser_clear_all_globals() +oo_browser_clear_all_globals(void) { /* Initialize globals so there is no carry over between files. */ oo_browser_construct = C_NULL; @@ -2167,7 +2159,7 @@ oo_browser_clear_all_globals() } void -oo_browser_clear_some_globals() +oo_browser_clear_some_globals(void) { oo_browser_construct = C_NULL; structtype = st_none; @@ -3638,8 +3630,7 @@ Fortran_functions (inf) * look for '^[a-zA-Z_.$][a-zA_Z0-9_.$]*[: ^I^J]' */ void -Asm_labels (inf) - FILE *inf; +Asm_labels (FILE *inf) { register char *cp; diff --git a/lib-src/pop.c b/lib-src/pop.c index c50fc14..0c12cbe 100644 --- a/lib-src/pop.c +++ b/lib-src/pop.c @@ -21,7 +21,7 @@ Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #define NO_SHORTNAMES /* Tell config not to load remap.h */ -#include <../src/config.h> +#include #else #define MAIL_USE_POP #endif diff --git a/lib-src/profile.c b/lib-src/profile.c index ec62ebb..b0ab560 100644 --- a/lib-src/profile.c +++ b/lib-src/profile.c @@ -32,7 +32,7 @@ Boston, MA 02111-1307, USA. */ ** abstraction : a stopwatch ** operations: reset_watch, get_time */ -#include <../src/config.h> +#include #include #include #include "../src/systime.h" diff --git a/lib-src/sorted-doc.c b/lib-src/sorted-doc.c index b7c3baa..4b82143 100644 --- a/lib-src/sorted-doc.c +++ b/lib-src/sorted-doc.c @@ -7,7 +7,7 @@ /* Synched up with: FSF 19.28. */ -#include <../src/config.h> +#include #include #include diff --git a/lib-src/wakeup.c b/lib-src/wakeup.c index 979bd82..618938e 100644 --- a/lib-src/wakeup.c +++ b/lib-src/wakeup.c @@ -1,6 +1,6 @@ /* Program to produce output at regular intervals. */ -#include <../src/config.h> +#include #if __STDC__ || defined(STDC_HEADERS) #include diff --git a/lib-src/yow.c b/lib-src/yow.c index 6a76772..79d4635 100644 --- a/lib-src/yow.c +++ b/lib-src/yow.c @@ -10,7 +10,7 @@ /* Synched up with: FSF 19.28. */ #define DONT_ENCAPSULATE -#include <../src/config.h> +#include #include #include diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 15aecdc..5af0a45 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,148 @@ +2000-01-18 Martin Buchholz + + * XEmacs 21.2.27 is released. + +2000-01-18 Martin Buchholz + + * process.el (shell-command-to-string): Use the FSF docstring. + Make shell-command-to-string the standard function, and + exec-to-string the (deprecated) alias. + + * startup.el: typo fix. + +2000-01-16 Martin Buchholz + + * mule/mule-misc.el (char-octet): Move back into mule-charset.c. + +2000-01-14 Yoshiki Hayashi + + * menubar-items.el (sort-buffers-menu-alphabetically): Put invisible + buffers after visible buffers. + (sort-buffers-menu-by-mode-then-alphabetically): Ditto. + +2000-01-17 Yoshiki Hayashi + + * info.el (Info-extract-menu-node-name): Stop at a dot + followed by whitespace or right parenthesis. + +2000-01-15 Hrvoje Niksic + + * info.el (Info-directory-list): Warn against using Customize with + Info-directory-list. + +2000-01-15 Adrian Aichner + + * minibuf.el (read-file-name): doc fix. + + * autoload.el (update-file-autoloads): doc fix. + + * about.el (about-hackers): Change my E-mail address. + +2000-01-13 Martin Buchholz + + * info.el (Info-visit-file): Just use the `f' interactive spec to + read a filename in the standard way. + +2000-01-13 Andy Piper + + * gutter-items.el (gutter-buffers-tab-orientation): new variable. + (gutter-buffers-tab-extent): new variable. + (update-tab-in-gutter): call add-tab-to-gutter again if the + orientation has changed. + (add-tab-to-gutter): cope with different orientations. + +2000-01-11 Didier Verna + + * info.el (Info-following-node-name): backward-skip dots as well + as spaces (dots at the end of a node name aren't part of it). + (Info-extract-menu-node-name): don't skip dots. There could be + some in the node name. + (Info-index): allow dots to be part of a node name. + +2000-01-12 Andreas Jaeger + + * files.el (auto-mode-alist): Added idlwave-mode. + Patch by Carsten Dominik . + +1999-12-22 Yoshiki Hayashi + + * info.el (Info-search): Show default value. + +1999-12-20 Yoshiki Hayashi + + * info.el (Info-read-node-completion-table): New variable. + (Info-read-node-name-1): New function. + (Info-read-node-name): Use it. + (Info-follow-reference): Use DEFAULT argument of completing-read. + (Info-menu): Ditto. + +1999-12-27 Yoshiki Hayashi + + * hyper-apropos.el (hyper-describe-key-briefly): Save + window configuration. + (hyper-describe-face): Use DEFAULT of completing-read. + (hyper-apropos-read-variable-symbol): Ditto. + (hyper-apropos-read-function-symbol): Ditto. + +1999-12-27 Yoshiki Hayashi + + * mule/mule-cmds.el (set-default-coding-system): Set + comint-exec-hook to use coding-system-for-read and + coding-system-for-write so that C-x RET c works. + +1999-12-27 Yoshiki Hayashi + + * minibuf.el (minibuffer-confirm-incomplete): Customize. + (previous-matching-history-element): Increment + minibuffer-max-depth by 1. + (next-matching-history-element): Ditto. + +2000-01-11 Andy Piper + + * gutter-items.el (buffers-tab): Create a new face for the buffers + tab. + (buffers-tab-face): use it. + +2000-01-10 Didier Verna + + * modeline.el (modeline-scrolling-method): change modeline X + cursor appearance according to the value. + +2000-01-07 Andreas Jaeger + + * about.el (about-hackers): Moved my entry to contributor list. + (xemacs-hackers): Added myself. + (about-maintainer-info): Added description of myself. + + +2000-01-07 Didier Verna + + * modeline.el (modeline-scrolling-method): new variable. + (mouse-drag-modeline): add reference to it in the docstring. + (mouse-drag-modeline): handle it. + +2000-01-08 Andy Piper + + * gutter-items.el (update-tab-in-gutter): remove resize-subwindow + calls. + (remove-buffer-from-gutter-tab): ditto. + +2000-01-06 Per Abrahamsen + + * cus-edit.el (custom-hook-convert-widget): Fix comment. + (custom-face-edit): Fix grammatical error in help message. + +2000-01-03 Michael Sperber [Mr. Preprocessor] + + * movemail.el: Added. + + * dumped-lisp.el (preloaded-file-list): Added movemail.el. + +2000-01-03 Didier Verna + + * modeline.el (mouse-drag-modeline): remove the code related to + the modeline horizontal scrolling facility. + 1999-12-31 Martin Buchholz * XEmacs 21.2.26 is released. @@ -33,7 +178,7 @@ 1999-12-21 Martin Buchholz - * byte-optimize.el (byte-optimize-plus): + * byte-optimize.el (byte-optimize-plus): Optimize (+ 1) to 1 instead of (1+ nil). * files.el (basic-save-buffer): Rewrite for clarity. Use (char-before). @@ -64,7 +209,7 @@ 1999-12-13 Charles G Waldman - * gnuserv.el (gnuserv-process-filter): don't call + * gnuserv.el (gnuserv-process-filter): don't call gnuserv-write-to-client when gnuserv-current-client is nil 1999-12-14 Martin Buchholz @@ -266,7 +411,7 @@ 1999-10-06 Andy Piper - * files.el (recover-file): Don't use ls under windows for revert buffer. + * files.el (recover-file): Don't use ls under windows for revert buffer. 1999-09-25 Adrian Aichner @@ -285,8 +430,8 @@ 1999-09-27 Martin Buchholz - * modeline.el (modeline-format): - Only purecopy the strings. Else + * modeline.el (modeline-format): + Only purecopy the strings. Else (nsublis '(("%p" . "%P")) (default-value 'modeline-format) :test 'equal) barfs. @@ -351,13 +496,13 @@ 1999-08-30 Michael Sperber [Mr. Preprocessor] - * obsolete.el (init-file-user): - * startup.el: - * packages.el (packages-compute-package-locations): - * package-get.el (package-get-user-index-filename): - * menubar-items.el (maybe-add-init-button): - * info.el (Info-annotations-path): - * dump-paths.el: + * obsolete.el (init-file-user): + * startup.el: + * packages.el (packages-compute-package-locations): + * package-get.el (package-get-user-index-filename): + * menubar-items.el (maybe-add-init-button): + * info.el (Info-annotations-path): + * dump-paths.el: Change `user-init-directory' to be an absolute path. Use `user-init-directory' where appropriate. Zap `init-file-user' and its uses. @@ -420,7 +565,7 @@ 1999-09-03 Hrvoje Niksic - * obsolete.el (isearch-yank-x-clipboard): Define it as an obsolete + * obsolete.el (isearch-yank-x-clipboard): Define it as an obsolete alias. * isearch-mode.el (isearch-top-state): Restore isearch-word. @@ -494,7 +639,7 @@ (isearch-update-ring): New function. (isearch-done): Call it. (isearch-done): New argument EDIT. - (isearch-repeat): If search string is empty, look up at the car of + (isearch-repeat): If search string is empty, look up at the car of the search ring; ignore the yank pointer. (isearch-abort): Call isearch-done with NOPUSH. (isearch-cancel): New function. @@ -524,7 +669,7 @@ need to check isearch-fixed-case. (isearch-toggle-case-fold): Update highlighting of all matches before the pause. - (isearch-edit-string): + (isearch-edit-string): 1999-09-01 Hrvoje Niksic @@ -608,7 +753,7 @@ * faces.el (isearch-secondary): Create face here. - * isearch-mode.el: Rewrote the "lazy highlighting" code not to use + * isearch-mode.el: Rewrote the "lazy highlighting" code not to use timers. 1999-08-27 Hrvoje Niksic diff --git a/lisp/about.el b/lisp/about.el index 4448a0d..fa41b5e 100644 --- a/lisp/about.el +++ b/lisp/about.el @@ -56,6 +56,7 @@ ;; `about-maintainer-info' (and maybe `about-hackers'. (defvar xemacs-hackers '((ajc "Andrew Cosgriff" "ajc@bing.wattle.id.au") + (aj "Andreas Jaeger" "aj@suse.de") (baw "Barry Warsaw" "bwarsaw@python.org") (bw "Bob Weiner" "weiner@beopen.com") (chr "Christian Nybø" "chr@mediascience.no") @@ -987,6 +988,14 @@ internet startup called New Media Science, doing scripting and violation of HTML DTD's. After graduation, spring 1999, he'll be looking for a job involving lisp programming, French and Russian.") (widget-insert ".\n")) + (aj + (widget-insert "\ +In the XEmacs team I'm responsible for the packages which means mainly +applying patches and packaging the packages. + +I'm a software developer working for the SuSE Labs of the Linux +distributor SuSE. My main task is to improve the GNU C library.") + (widget-insert ".\n")) )) ;; Setup the buffer for a maintainer. @@ -1197,6 +1206,9 @@ Originator and maintainer of the gnus.org domain.\n") Beta tester and last hacker of calendar.\n") (about-show-linked-info 'chr "\ Maintainer of the XEmacs FAQ and proud author of `zap-up-to-char'.\n") + (about-show-linked-info 'aj "\ +`Package Patch Tender', beta tester and GNU libc developer.\n") + (flet ((print-short (name addr &optional shortinfo) (concat (about-with-face name 'italic) (about-tabs name) @@ -1263,7 +1275,7 @@ above. We couldn't have done it without them.\n\n" (print-short "Per Abrahamsen" "abraham@dina.kvl.dk") (print-short "Gary Adams" "gra@zeppo.East.Sun.COM") (print-short "Gennady Agranov" "agranov@csa.CS.Technion.Ac.IL") - (print-short "Adrian Aichner" "aichner@ecf.teradyne.com") + (print-short "Adrian Aichner" "adrian@xemacs.org") (print-short "Mark Allender" "allender@vnet.IBM.COM") (print-short "Stephen R. Anderson" "sra@bloch.ling.yale.edu") (print-short "Butch Anton" "butch@zaphod.uchicago.edu") @@ -1360,7 +1372,6 @@ above. We couldn't have done it without them.\n\n" (print-short "Tudor Hulubei" "tudor@cs.unh.edu") (print-short "Tatsuya Ichikawa" "ichikawa@hv.epson.co.jp") (print-short "Andrew Innes" "andrewi@harlequin.co.uk") - (print-short "Andreas Jaeger" "aj@arthur.rhein-neckar.de") (print-short "Markku Jarvinen" "Markku.Jarvinen@simpukka.funet.fi") (print-short "Robin Jeffries" "robin.jeffries@sun.com") (print-short "Philip Johnson" "johnson@uhics.ics.Hawaii.Edu") diff --git a/lisp/autoload.el b/lisp/autoload.el index ec70873..2862234 100644 --- a/lisp/autoload.el +++ b/lisp/autoload.el @@ -359,7 +359,7 @@ Unless you are an XEmacs maintainr, it is probably unwise to change this.") (defun update-file-autoloads (file) "Update the autoloads for FILE in `generated-autoload-file' \(which FILE might bind in its local variables). -This functions refuses to update autoloads files." +This function refuses to update autoloads files." (interactive "fUpdate autoloads for file: ") (setq file (expand-file-name file)) (when (and (file-newer-than-file-p file generated-autoload-file) diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index 983bace..734725f 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -1,6 +1,6 @@ ;;; cus-edit.el --- Tools for customizating Emacs and Lisp packages. ;; -;; Copyright (C) 1996, 1997 Free Software Foundation, Inc. +;; Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc. ;; ;; Author: Per Abrahamsen ;; Maintainer: Hrvoje Niksic @@ -2272,7 +2272,7 @@ Optional EVENT is the location for the menu." :format "%t: %v" :tag "Attributes" :extra-offset 12 - :button-args '(:help-echo "Control whether this attribute have any effect") + :button-args '(:help-echo "Control whether this attribute has any effect") :args (mapcar (lambda (att) (list 'group :inline t @@ -2756,7 +2756,7 @@ Optional EVENT is the location for the menu." :tag "Hook") (defun custom-hook-convert-widget (widget) - ;; Handle `:custom-options'. + ;; Handle `:options'. (let* ((options (widget-get widget :options)) (other `(editable-list :inline t :entry-format "%i %d%v" diff --git a/lisp/dumped-lisp.el b/lisp/dumped-lisp.el index b3468db..d1f445b 100644 --- a/lisp/dumped-lisp.el +++ b/lisp/dumped-lisp.el @@ -79,7 +79,7 @@ "text-mode" "fill" "auto-save" ; Added for 20.4 - + "movemail" ; Added for 21.2 (when-feature windows-nt "winnt") (when-feature lisp-float-type "float-sup") "itimer" ; for vars auto-save-timeout and diff --git a/lisp/files.el b/lisp/files.el index e643925..f59d54f 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -1157,6 +1157,7 @@ run `normal-mode' explicitly." ("\\.m\\(?:[mes]\\|an\\)\\'" . nroff-mode) ("\\.icn\\'" . icon-mode) ("\\.\\(?:[ckz]?sh\\|shar\\)\\'" . sh-mode) + ("\\.pro\\'" . idlwave-mode) ;; #### Unix-specific! ("/\\.\\(?:bash_\\|z\\)?\\(profile\\|login\\|logout\\)\\'" . sh-mode) ("/\\.\\(?:[ckz]sh\\|bash\\|tcsh\\|es\\|xinit\\|startx\\)rc\\'" . sh-mode) diff --git a/lisp/gutter-items.el b/lisp/gutter-items.el index 6b0b8f0..46b137f 100644 --- a/lisp/gutter-items.el +++ b/lisp/gutter-items.el @@ -40,6 +40,11 @@ customized through the options menu." (set-specifier default-gutter-visible-p val) (setq gutter-visible-p val))) +(defvar gutter-buffers-tab nil + "A tab widget in the gutter for displaying buffers. +Do not set this. Use `glyph-image-instance' and +`set-image-instance-property' to change the properties of the tab.") + (defcustom default-gutter-position (default-gutter-position) "The location of the default gutter. It can be 'top, 'bottom, 'left or @@ -51,7 +56,8 @@ customized through the options menu." (const :tag "right" 'right)) :set #'(lambda (var val) (set-default-gutter-position val) - (setq default-gutter-position val))) + (setq default-gutter-position val) + (when gutter-buffers-tab (update-tab-in-gutter)))) ;;; The Buffers tab @@ -59,10 +65,10 @@ customized through the options menu." "Customization of `Buffers' tab." :group 'gutter) -(defvar gutter-buffers-tab nil - "A tab widget in the gutter for displaying buffers. -Do not set this. Use `glyph-image-instance' and -`set-image-instance-property' to change the properties of the tab.") +(defvar gutter-buffers-tab-orientation 'top + "Where the buffers tab currently is. Do not set this.") + +(defvar gutter-buffers-tab-extent nil) (defcustom buffers-tab-max-size 6 "*Maximum number of entries which may appear on the \"Buffers\" tab. @@ -102,7 +108,10 @@ by `buffers-tab-grouping-regexp'." function) :group 'buffers-tab) -(defcustom buffers-tab-face 'default +(make-face 'buffers-tab "Face for displaying the buffers tab.") +(set-face-parent 'buffers-tab 'default) + +(defcustom buffers-tab-face 'buffers-tab "*Face to use for displaying the buffers tab." :type 'face :group 'buffers-tab) @@ -227,25 +236,51 @@ items by redefining the function `format-buffers-menu-line'." (defun add-tab-to-gutter () "Put a tab control in the gutter area to hold the most recent buffers." + (setq gutter-buffers-tab-orientation (default-gutter-position)) (let ((gutter-string "")) + (unless gutter-buffers-tab-extent + (setq gutter-buffers-tab-extent (make-extent 0 0 gutter-string))) (set-extent-begin-glyph - (make-extent 0 0 gutter-string) + gutter-buffers-tab-extent (setq gutter-buffers-tab (make-glyph (vector 'tab-control :descriptor "Buffers" :face buffers-tab-face + :orientation gutter-buffers-tab-orientation :properties (list :items (buffers-tab-items)))))) ;; This looks better than a 3d border (mapcar '(lambda (x) (when (valid-image-instantiator-format-p 'tab-control x) (set-specifier default-gutter-border-width 0 'global x) - (set-specifier default-gutter gutter-string 'global x))) + (set-specifier top-gutter nil 'global x) + (set-specifier bottom-gutter nil 'global x) + (set-specifier left-gutter nil 'global x) + (set-specifier right-gutter nil 'global x) + (set-specifier left-gutter-width 0 'global x) + (set-specifier right-gutter-width 0 'global x) + (cond ((eq gutter-buffers-tab-orientation 'top) + (set-specifier top-gutter gutter-string 'global x)) + ((eq gutter-buffers-tab-orientation 'bottom) + (set-specifier bottom-gutter gutter-string 'global x)) + ((eq gutter-buffers-tab-orientation 'left) + (set-specifier left-gutter gutter-string 'global x) + (set-specifier left-gutter-width + (glyph-width gutter-buffers-tab) + 'global x)) + ((eq gutter-buffers-tab-orientation 'right) + (set-specifier right-gutter gutter-string 'global x) + (set-specifier right-gutter-width + (glyph-width gutter-buffers-tab) + 'global x)) + ))) (console-type-list)))) (defun update-tab-in-gutter (&optional frame-or-buffer) "Update the tab control in the gutter area." (let ((locale (if (framep frame-or-buffer) frame-or-buffer))) (when (specifier-instance default-gutter-visible-p locale) - (unless gutter-buffers-tab + (unless (and gutter-buffers-tab + (eq (default-gutter-position) + gutter-buffers-tab-orientation)) (add-tab-to-gutter)) (when (valid-image-instantiator-format-p 'tab-control) (let ((inst (glyph-image-instance @@ -254,9 +289,7 @@ items by redefining the function `format-buffers-menu-line'." (last-nonminibuf-window frame-or-buffer))))) (set-image-instance-property inst :items (buffers-tab-items - nil locale)) - (resize-subwindow inst (gutter-pixel-width) nil)) - )))) + nil locale))))))) (defun remove-buffer-from-gutter-tab () "Remove the current buffer from the tab control in the gutter area." @@ -268,9 +301,7 @@ items by redefining the function `format-buffers-menu-line'." (setq buffers (build-buffers-tab-internal (list (get-buffer-create "*scratch*"))))) - (set-image-instance-property inst :items buffers) - (resize-subwindow inst (gutter-pixel-width) nil) - ))) + (set-image-instance-property inst :items buffers)))) (add-hook 'kill-buffer-hook 'remove-buffer-from-gutter-tab) (add-hook 'create-frame-hook 'update-tab-in-gutter) diff --git a/lisp/hyper-apropos.el b/lisp/hyper-apropos.el index dd3397a..a9c4d34 100644 --- a/lisp/hyper-apropos.el +++ b/lisp/hyper-apropos.el @@ -438,7 +438,9 @@ General Commands: (if (and (or (symbolp defn) (symbolp (setq defn (car-safe defn)))) defn show) - (hyper-apropos-get-doc defn t)))))) + (hyper-apropos-get-doc defn t)) + (or (memq major-mode '(hyper-apropos-mode hyper-apropos-help-mode)) + (setq hyper-apropos-prev-wconfig (current-window-configuration))))))) ;;;###autoload (defun hyper-describe-face (symbol &optional this-ref-buffer) @@ -460,10 +462,9 @@ See also `hyper-apropos' and `hyper-describe-function'." ": ")) (mapcar #'(lambda (x) (list (symbol-name x))) (face-list)) - nil t nil 'hyper-apropos-face-history))) - (list (if (string= val "") - (progn (push (symbol-name v) hyper-apropos-face-history) v) - (intern-soft val)) + nil t nil 'hyper-apropos-face-history + (and v (symbol-name v))))) + (list (intern-soft val) current-prefix-arg))) (if (null symbol) (message "Sorry, nothing to describe.") @@ -530,10 +531,10 @@ See also `hyper-apropos' and `hyper-describe-function'." (if v (format " (default %s): " v) ": ")) - obarray predicate t nil 'variable-history))) - (if (string= val "") - (progn (push (symbol-name v) variable-history) v) - (intern-soft val)))) + obarray predicate t nil 'variable-history + (and v (symbol-name v))))) + (intern-soft val))) + ;;;###autoload (define-obsolete-function-alias 'hypropos-read-variable-symbol 'hyper-apropos-read-variable-symbol) @@ -549,10 +550,9 @@ See also `hyper-apropos' and `hyper-describe-function'." (format "%s (default %s): " prompt fn) (format "%s: " prompt)) obarray 'fboundp t nil - 'function-history))) - (if (equal val "") - (progn (push (symbol-name fn) function-history) fn) - (intern-soft val)))) + 'function-history + (and fn (symbol-name fn))))) + (intern-soft val))) (defun hyper-apropos-last-help (arg) "Go back to the last symbol documented in the *Hyper Help* buffer." diff --git a/lisp/info.el b/lisp/info.el index d96c5ba..d90df95 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -437,9 +437,15 @@ nil or `never', the default, auto-generated info directory "List of directories to search for Info documentation files. The first directory in this list, the \"dir\" file there will become -the (dir)Top node of the Info documentation tree. If you wish to -modify the info search path, use `M-x customize-variable, -Info-directory-list' to do so.") +the (dir)Top node of the Info documentation tree. + +Note: DO NOT use the `customize' interface to change the value of this +variable. Its value is created dynamically on each startup, depending +on XEmacs packages installed on the system. If you want to change the +search path, make the needed modifications on the variable's value +from .emacs. For instance: + + (setq Info-directory-list (cons \"~/info\" Info-directory-list))") (defcustom Info-localdir-heading-regexp "^Locally installed XEmacs Packages:?" @@ -1489,12 +1495,10 @@ annotation for any node of any file. (See `a' and `x' commands.)" (or (equal tag "") (Info-find-node nil (format "<<%s>>" tag))))) ;;;###autoload -(defun Info-visit-file () +(defun Info-visit-file (file) "Directly visit an info file." - (interactive) - (let* ((insert-default-directory nil) - (file (read-file-name "Goto Info file: " "" ""))) - (or (equal file "") (Info-find-node (expand-file-name file) "Top")))) + (interactive "fVisit Info file: ") + (Info-find-node (expand-file-name file) "Top")) (defun Info-restore-point (&optional always) "Restore point to same location it had last time we were in this node." @@ -1513,13 +1517,33 @@ annotation for any node of any file. (See `a' and `x' commands.)" (set-window-start (get-buffer-window (current-buffer)) (+ (nth 2 entry) (point-min))))) +(defvar Info-read-node-completion-table) + +;; This function is used as the "completion table" while reading a node name. +;; It does completion using the alist in Info-read-node-completion-table +;; unless STRING starts with an open-paren. +(defun Info-read-node-name-1 (string predicate code) + (let ((no-completion (and (> (length string) 0) (eq (aref string 0) ?\()))) + (cond ((eq code nil) + (if no-completion + string + (try-completion string Info-read-node-completion-table predicate))) + ((eq code t) + (if no-completion + nil + (all-completions string Info-read-node-completion-table predicate))) + ((eq code 'lambda) + (if no-completion + t + (assoc string Info-read-node-completion-table)))))) + (defun Info-read-node-name (prompt &optional default) (Info-setup-initial) (let* ((completion-ignore-case t) - (nodename (completing-read prompt - (Info-build-node-completions) - nil nil nil - 'Info-minibuffer-history))) + (Info-read-node-completion-table (Info-build-node-completions)) + (nodename (completing-read prompt 'Info-read-node-name-1 + nil t nil 'Info-minibuffer-history + default))) (if (equal nodename "") (or default (Info-read-node-name prompt)) @@ -1576,10 +1600,14 @@ annotation for any node of any file. (See `a' and `x' commands.)" ;;;###autoload (defun Info-search (regexp) "Search for REGEXP, starting from point, and select node it's found in." - (interactive "sSearch (regexp): ") - (if (equal regexp "") - (setq regexp Info-last-search) - (setq Info-last-search regexp)) + (interactive (list + (read-from-minibuffer + (if Info-last-search + (format "Search (regexp, default %s): " + Info-last-search) + "Search (regexp): ") + nil nil nil nil nil Info-last-search))) + (setq Info-last-search regexp) (with-search-caps-disable-folding regexp t (let ((found ()) (onode Info-current-node) @@ -1666,7 +1694,7 @@ annotation for any node of any file. (See `a' and `x' commands.)" (skip-chars-forward (concat (or allowedchars "^,\t\n") "(")) (if (looking-at "(") (skip-chars-forward "^)"))) - (skip-chars-backward " ") + (skip-chars-backward " .") (point)))) (defun Info-next (&optional n) @@ -1761,7 +1789,8 @@ NAME may be an abbreviation of the reference name." default ") ") "Follow reference named: ") completions nil t nil - 'Info-minibuffer-history))) + 'Info-minibuffer-history + default))) (if (and (string= item "") default) (list default) (list item))) @@ -1845,7 +1874,19 @@ NAME may be an abbreviation of the reference name." (if (looking-at ":") (buffer-substring beg (1- (point))) (skip-chars-forward " \t\n") - (Info-following-node-name (if multi-line "^.,\t" "^.,\t\n")))) + ;; Kludge. + ;; Allow dots in node name not followed by whitespace. + (re-search-forward + (concat "\\(([^)]+)[^." + (if multi-line "" "\n") + "]*\\|\\([^.,\t" + (if multi-line "" "\n") + ;; We consider dots followed by newline as + ;; end of nodename even if multil-line. + ;; Also stops at .). It is generated by @pxref. + ;; Skips sequential dots. + "]\\|\\.+[^ \t\n)]\\)+\\)")) + (match-string 1))) (while (setq i (string-match "\n" str i)) (aset str i ?\ )) str)) @@ -1888,7 +1929,8 @@ Completion is allowed, and the menu item point is on is the default." default) "Menu item: ") completions nil t nil - 'Info-minibuffer-history))) + 'Info-minibuffer-history + default))) ;; we rely on the fact that completing-read accepts an input ;; of "" even when the require-match argument is true and "" ;; is not a valid possibility @@ -2095,7 +2137,7 @@ Give a blank topic name to go to the Index node itself." (interactive "sIndex topic: ") (let ((pattern (format "\n\\* \\([^\n:]*%s[^\n:]*\\):[ \t]*%s" (regexp-quote topic) - "\\([^.\n]*\\)\\.[ t]*\\([0-9]*\\)")) + "\\(.*\\)\\.[ t]*\\([0-9]*\\)$")) node) (message "Searching index for `%s'..." topic) (Info-goto-node "Top") diff --git a/lisp/menubar-items.el b/lisp/menubar-items.el index 0750bc8..4439044 100644 --- a/lisp/menubar-items.el +++ b/lisp/menubar-items.el @@ -93,17 +93,17 @@ (or buffer-undo-list pending-undo-list)) :suffix (if (or (eq last-command 'undo) (eq last-command 'advertised-undo)) - "More" "")] + "More" "")] ["Redo" redo :included (fboundp 'redo) :active (not (or (eq buffer-undo-list t) - (eq last-buffer-undo-list nil) - (not (or (eq last-buffer-undo-list buffer-undo-list) - (and (null (car-safe buffer-undo-list)) - (eq last-buffer-undo-list - (cdr-safe buffer-undo-list))))) - (or (eq buffer-undo-list pending-undo-list) - (eq (cdr buffer-undo-list) pending-undo-list)))) + (eq last-buffer-undo-list nil) + (not (or (eq last-buffer-undo-list buffer-undo-list) + (and (null (car-safe buffer-undo-list)) + (eq last-buffer-undo-list + (cdr-safe buffer-undo-list))))) + (or (eq buffer-undo-list pending-undo-list) + (eq (cdr buffer-undo-list) pending-undo-list)))) :suffix (if (eq last-command 'redo) "More" "")] ["Cut" kill-primary-selection :active (selection-owner-p)] @@ -634,24 +634,24 @@ (force-cursor-redisplay)) :style radio :selected (eq bar-cursor t)] - ["Bar cursor (2 pixels)" - (progn - (customize-set-variable 'bar-cursor 2) - (force-cursor-redisplay)) - :style radio - :selected (and bar-cursor (not (eq bar-cursor t)))] - "------" - ["Line Numbers" - (progn - (customize-set-variable 'line-number-mode (not line-number-mode)) - (redraw-modeline)) - :style toggle :selected line-number-mode] - ["Column Numbers" - (progn - (customize-set-variable 'column-number-mode - (not column-number-mode)) - (redraw-modeline)) - :style toggle :selected column-number-mode] + ["Bar cursor (2 pixels)" + (progn + (customize-set-variable 'bar-cursor 2) + (force-cursor-redisplay)) + :style radio + :selected (and bar-cursor (not (eq bar-cursor t)))] + "------" + ["Line Numbers" + (progn + (customize-set-variable 'line-number-mode (not line-number-mode)) + (redraw-modeline)) + :style toggle :selected line-number-mode] + ["Column Numbers" + (progn + (customize-set-variable 'column-number-mode + (not column-number-mode)) + (redraw-modeline)) + :style toggle :selected column-number-mode] ) ("Menubar Appearance" ["Buffers Menu Length..." @@ -1142,11 +1142,16 @@ Sorts the buffers in alphabetical order by name, but puts buffers beginning with a star at the end of the list." (let* ((nam1 (buffer-name buf1)) (nam2 (buffer-name buf2)) + (inv1p (not (null (string-match "\\` " nam1)))) + (inv2p (not (null (string-match "\\` " nam2)))) (star1p (not (null (string-match "\\`*" nam1)))) (star2p (not (null (string-match "\\`*" nam2))))) - (if (not (eq star1p star2p)) - (not star1p) - (string-lessp nam1 nam2)))) + (cond ((not (eq inv1p inv2p)) + (not inv1p)) + ((not (eq star1p star2p)) + (not star1p)) + (t + (string-lessp nam1 nam2))))) (defun sort-buffers-menu-by-mode-then-alphabetically (buf1 buf2) "For use as a value of `buffers-menu-sort-function'. @@ -1154,15 +1159,23 @@ Sorts first by major mode and then alphabetically by name, but puts buffers beginning with a star at the end of the list." (let* ((nam1 (buffer-name buf1)) (nam2 (buffer-name buf2)) + (inv1p (not (null (string-match "\\` " nam1)))) + (inv2p (not (null (string-match "\\` " nam2)))) (star1p (not (null (string-match "\\`*" nam1)))) (star2p (not (null (string-match "\\`*" nam2)))) (mode1 (symbol-value-in-buffer 'major-mode buf1)) (mode2 (symbol-value-in-buffer 'major-mode buf2))) - (cond ((not (eq star1p star2p)) (not star1p)) + (cond ((not (eq inv1p inv2p)) + (not inv1p)) + ((not (eq star1p star2p)) + (not star1p)) ((and star1p star2p (string-lessp nam1 nam2))) - ((string-lessp mode1 mode2) t) - ((string-lessp mode2 mode1) nil) - (t (string-lessp nam1 nam2))))) + ((string-lessp mode1 mode2) + t) + ((string-lessp mode2 mode1) + nil) + (t + (string-lessp nam1 nam2))))) ;; this version is too slow on some machines. (defun slow-format-buffers-menu-line (buffer) @@ -1544,4 +1557,4 @@ The menu is computed by combining `global-popup-menu' and `mode-popup-menu'." (provide 'x-menubar) (provide 'menubar-items) -;;; x-menubar.el ends here. +;;; menubar-items.el ends here. diff --git a/lisp/minibuf.el b/lisp/minibuf.el index 9f26bc5..af83e9c 100644 --- a/lisp/minibuf.el +++ b/lisp/minibuf.el @@ -77,10 +77,12 @@ t means to return a list of all possible completions of STRING. (defvar minibuffer-completion-confirm nil "Non-nil => demand confirmation of completion before exiting minibuffer.") -(defvar minibuffer-confirm-incomplete nil +(defcustom minibuffer-confirm-incomplete nil "If true, then in contexts where completing-read allows answers which are not valid completions, an extra RET must be typed to confirm the -response. This is helpful for catching typos, etc.") +response. This is helpful for catching typos, etc." + :type 'boolean + :group 'minibuffer) (defcustom completion-auto-help t "*Non-nil means automatically provide help for invalid completion input." @@ -1248,7 +1250,9 @@ With prefix argument N, search for Nth previous match. If N is negative, find the next or Nth next match." (interactive (let ((enable-recursive-minibuffers t) - (minibuffer-history-sexp-flag nil)) + (minibuffer-history-sexp-flag nil) + (minibuffer-max-depth (and minibuffer-max-depth + (1+ minibuffer-max-depth)))) (if (eq 't (symbol-value minibuffer-history-variable)) (error "History is not being recorded in this context")) (list (read-from-minibuffer "Previous element matching (regexp): " @@ -1296,7 +1300,9 @@ With prefix argument N, search for Nth next match. If N is negative, find the previous or Nth previous match." (interactive (let ((enable-recursive-minibuffers t) - (minibuffer-history-sexp-flag nil)) + (minibuffer-history-sexp-flag nil) + (minibuffer-max-depth (and minibuffer-max-depth + (1+ minibuffer-max-depth)))) (if (eq t (symbol-value minibuffer-history-variable)) (error "History is not being recorded in this context")) (list (read-from-minibuffer "Next element matching (regexp): " @@ -1646,7 +1652,7 @@ only existing buffer names are allowed." This will prompt with a dialog box if appropriate, according to `should-use-dialog-box-p'. Value is not expanded---you must call `expand-file-name' yourself. -Value is subject to interpreted by substitute-in-file-name however. +Value is subject to interpretation by `substitute-in-file-name' however. Default name to DEFAULT if user enters a null string. (If DEFAULT is omitted, the visited file name is used, except that if INITIAL-CONTENTS is specified, that combined with DIR is diff --git a/lisp/modeline.el b/lisp/modeline.el index ea16c56..778d2c9 100644 --- a/lisp/modeline.el +++ b/lisp/modeline.el @@ -19,7 +19,7 @@ ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with XEmacs; see the file COPYING. If not, write to the +;; along with XEmacs; see the file COPYING. If not, write to the ;; Free Software Foundation, 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. @@ -59,11 +59,36 @@ buffer list and clicking on the right half cycles backward." :type 'boolean :group 'modeline) +(defcustom modeline-scrolling-method nil + "*If non-nil, dragging the modeline with the mouse may also scroll its +text horizontally (vertical motion controls window resizing and horizontal +motion controls modeline scrolling). + +With a value of t, the modeline text is scrolled in the same direction as +the mouse motion. With a value of 'scrollbar, the modeline is considered as +a scrollbar for its own text, which then moves in the opposite direction." + :type '(choice (const :tag "none" nil) + (const :tag "text" t) + (const :tag "scrollbar" scrollbar)) + :set (lambda (sym val) + (set-default sym val) + (when (featurep 'x) + (cond ((eq val t) + (set-glyph-image modeline-pointer-glyph "hand2" 'global 'x)) + ((eq val 'scrollbar) + (set-glyph-image modeline-pointer-glyph "fleur" 'global 'x)) + (t + (set-glyph-image modeline-pointer-glyph "sb_v_double_arrow" + 'global 'x))))) + :group 'modeline) + (defun mouse-drag-modeline (event) "Resize a window by dragging its modeline. This command should be bound to a button-press event in modeline-map. Holding down a mouse button and moving the mouse up and down will -make the clicked-on window taller or shorter." +make the clicked-on window taller or shorter. + +See also the variable `modeline-scrolling-method'." (interactive "e") (or (button-press-event-p event) (error "%s must be invoked by a mouse-press" this-command)) @@ -79,9 +104,9 @@ make the clicked-on window taller or shorter." (start-event-frame (event-frame event)) (start-event-window (event-window event)) (start-nwindows (count-windows t)) -;; (hscroll-delta (face-width 'modeline)) -;; (start-hscroll (modeline-hscroll (event-window event))) -; (start-x-pixel (event-x-pixel event)) + (hscroll-delta (face-width 'modeline)) + (start-hscroll (modeline-hscroll (event-window event))) + (start-x-pixel (event-x-pixel event)) (last-timestamp 0) default-line-height modeline-height @@ -141,7 +166,9 @@ make the clicked-on window taller or shorter." ;; scroll) nore Y pos (modeline drag) have changed. (and modeline-click-swaps-buffers (= depress-line (event-y event)) -;; (= start-hscroll (modeline-hscroll start-event-window)) + (or (not modeline-scrolling-method) + (= start-hscroll + (modeline-hscroll start-event-window))) (modeline-swap-buffers event))) ((button-event-p event) (setq done t)) @@ -153,11 +180,14 @@ make the clicked-on window taller or shorter." drag-divider-event-lag) nil) (t -;; (set-modeline-hscroll start-event-window -;; (+ (/ (- (event-x-pixel event) -;; start-x-pixel) -;; hscroll-delta) -;; start-hscroll)) + (when modeline-scrolling-method + (let ((delta (/ (- (event-x-pixel event) start-x-pixel) + hscroll-delta))) + (set-modeline-hscroll start-event-window + (if (eq modeline-scrolling-method t) + (- start-hscroll delta) + (+ start-hscroll delta))) + )) (setq last-timestamp (event-timestamp event) y (event-y-pixel event) edges (window-pixel-edges start-event-window) @@ -263,7 +293,7 @@ the buffer of the window whose modeline was clicked upon.") (make-face 'modeline-mousable "Face for mousable portions of the modeline.") (set-face-parent 'modeline-mousable 'modeline nil '(default)) (when (featurep 'window-system) - (set-face-foreground 'modeline-mousable + (set-face-foreground 'modeline-mousable '(((default color x) . "firebrick") ((default color mswindows) . "firebrick")) 'global)) @@ -307,7 +337,7 @@ in the list takes precedence.") '(((default color x) . "green4") ((default color x) . "forestgreen") ((default color mswindows) . "green4") - ((default color mswindows) . "forestgreen")) + ((default color mswindows) . "forestgreen")) 'global)) (defvar modeline-mousable-minor-mode-extent (make-extent nil nil) @@ -391,7 +421,7 @@ Example: (add-minor-mode 'view-minor-mode \" View\" view-mode-map)" name))) (if (setq el (assq toggle minor-mode-alist)) (setcdr el (list hacked-name)) - (funcall add-elt + (funcall add-elt (list toggle hacked-name) 'minor-mode-alist)))) (when keymap @@ -508,7 +538,7 @@ parentheses on the modeline." "Face for the buffer ID string in the modeline.") (set-face-parent 'modeline-buffer-id 'modeline nil '(default)) (when (featurep 'window-system) - (set-face-foreground 'modeline-buffer-id + (set-face-foreground 'modeline-buffer-id '(((default color x) . "blue4") ((default color mswindows) . "blue4")) 'global)) @@ -521,7 +551,7 @@ parentheses on the modeline." (defvar modeline-buffer-id-extent (make-extent nil nil) "Extent covering the whole of the buffer-id string.") (set-extent-face modeline-buffer-id-extent 'modeline-buffer-id) - + (defvar modeline-buffer-id-left-extent (make-extent nil nil) "Extent covering the left half of the buffer-id string.") (set-extent-keymap modeline-buffer-id-left-extent diff --git a/lisp/mule/mule-cmds.el b/lisp/mule/mule-cmds.el index b0bd9f1..ddc1a39 100644 --- a/lisp/mule/mule-cmds.el +++ b/lisp/mule/mule-cmds.el @@ -168,11 +168,15 @@ This sets the following coding systems: ;;(setq default-keyboard-coding-system coding-system) (setq keyboard-coding-system coding-system) ;;(setq default-process-coding-system (cons coding-system coding-system)) + ;; Refer to coding-system-for-read and coding-system-for-write + ;; so that C-x RET c works. (add-hook 'comint-exec-hook `(lambda () (let ((proc (get-buffer-process (current-buffer)))) - (set-process-input-coding-system proc ',coding-system) - (set-process-output-coding-system proc ',coding-system))) + (set-process-input-coding-system + proc (or coding-system-for-read ',coding-system)) + (set-process-output-coding-system + proc (or coding-system-for-write ',coding-system)))) 'append) (setq file-name-coding-system coding-system)) diff --git a/lisp/mule/mule-misc.el b/lisp/mule/mule-misc.el index 9b4906e..2a411dd 100644 --- a/lisp/mule/mule-misc.el +++ b/lisp/mule/mule-misc.el @@ -163,8 +163,8 @@ If each element of LIST is not a string, it is converted to string (defalias 'sref 'aref) (defalias 'map-char-concat 'mapcar) (defun char-bytes (character) - "Return number of length a CHARACTER occupies in a string or buffer. -It returns only 1 in XEmacs. It is for compatibility with MULE 2.3." + "Return number of bytes a CHARACTER occupies in a string or buffer. +It always returns 1 in XEmacs. It is for compatibility with MULE 2.3." 1) (defalias 'char-length 'char-bytes) @@ -208,19 +208,6 @@ because its `find-charset-string' ignores ASCII charset." ; (cons charset dest) ; )))) -(defun char-octet (ch &optional n) - "Return the octet numbered N (should be 0 or 1) of char CH. -N defaults to 0 if omitted." - (let ((split (split-char ch))) - (setq n (or n 0)) - (cond ((eq n 0) - (nth 1 split)) - ((eq n 1) - (nth 2 split)) - (t (error "n must be 0 or 1"))))) -;; Made obsolete June 15, 1999. Delete ASAP. -(make-obsolete 'char-octet "Use split-char") - ;(defun split-char-or-char-int (char) ; "Return list of charset and one or two position-codes of CHAR. ;CHAR must be character or integer." diff --git a/lisp/process.el b/lisp/process.el index 0e3d478..db05e32 100644 --- a/lisp/process.el +++ b/lisp/process.el @@ -321,7 +321,7 @@ Ouput via `process-send-string' and input via buffer or filter (see `set-process-filter') are stream-oriented. That means UDP datagrams are not guaranteed to be sent and received in discrete packets. (But small datagrams around 500 bytes that are not truncated by `process-send-string' -are usually fine.) Note further that UDP protocol does not guard against +are usually fine.) Note further that UDP protocol does not guard against lost packets." (open-network-stream-internal name buffer host service protocol)) @@ -342,13 +342,11 @@ lost packets." start (1+ end))) (concat result (substring argument start)))))) -(defun exec-to-string (command) - "Execute COMMAND as an external process and return the output of that -process as a string" - ;; by "William G. Dubuque" +(defun shell-command-to-string (command) + "Execute shell command COMMAND and return its output as a string." (with-output-to-string (call-process shell-file-name nil t nil shell-command-switch command))) -(defalias 'shell-command-to-string 'exec-to-string) +(defalias 'exec-to-string 'shell-command-to-string) ;;; process.el ends here diff --git a/lisp/startup.el b/lisp/startup.el index ec39fc4..0f28447 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -30,7 +30,7 @@ ;; This file is dumped with XEmacs. -;; -batch, -t, and -nw are processed by main() in emacs.c and are +;; -batch, -t, and -nw are processed by main() in emacs.c and are ;; never seen by lisp code. ;; -version and -help are special-cased as well: they imply -batch, @@ -395,11 +395,11 @@ Type ^H^H^H (Control-h Control-h Control-h) to get more help options.\n") (setq emacs-roots (paths-find-emacs-roots invocation-directory invocation-name)) - + (if debug-paths (princ (format "emacs-roots:\n%S\n" emacs-roots) 'external-debugging-output)) - + (if (null emacs-roots) (startup-find-roots-warning) (startup-setup-paths emacs-roots @@ -413,7 +413,7 @@ Type ^H^H^H (Control-h Control-h Control-h) to get more help options.\n") lisp-directory) (load (expand-file-name (file-name-sans-extension autoload-file-name) lisp-directory) nil t)) - + (if (not inhibit-autoloads) (progn (if (not inhibit-early-packages) @@ -495,7 +495,7 @@ Type ^H^H^H (Control-h Control-h Control-h) to get more help options.\n") ;; (and (not (equal string "")) string))))) ;; (and ctype ;; (string-match iso-8859-1-locale-regexp ctype))) - ;; (progn + ;; (progn ;; (standard-display-european t) ;; (require 'iso-syntax))) @@ -597,7 +597,7 @@ If this is nil, no message will be displayed.") ;;; Load init files. (load-init-file) - + (with-current-buffer (get-buffer "*scratch*") (erase-buffer) ;; (insert initial-scratch-message) @@ -622,7 +622,7 @@ If this is nil, no message will be displayed.") ;; If -batch, terminate after processing the command options. (when (noninteractive) (kill-emacs t)))) -(defun load-terminal-library () +(defun load-terminal-library () (when term-file-prefix (let ((term (getenv "TERM")) hyphend) @@ -785,7 +785,7 @@ a new format, when variables have changed, etc." (setq end-of-options t)) (t (setq file-p t))) - + (when file-p (setq file-p nil) (incf file-count) @@ -823,7 +823,7 @@ a new format, when variables have changed, etc." (setq e (read-key-sequence (let ((p (keymap-prompt map t))) (cond ((symbolp map) - (if p + (if p (format "%s %s " map p) (format "%s " map))) (p) @@ -902,7 +902,7 @@ a new format, when variables have changed, etc." (defun startup-center-spaces (glyph) ;; Return the number of spaces to insert in order to center ;; the given glyph (may be a string or a pixmap). - ;; Assume spaces are as wide as avg-pixwidth. + ;; Assume spaces are as wide as avg-pixwidth. ;; Won't be quite right for proportional fonts, but it's the best we can do. ;; Maybe the new redisplay will export something a glyph-width function. ;;; #### Yes, there is a glyph-width function but it isn't quite what @@ -913,7 +913,7 @@ a new format, when variables have changed, etc." ;; This function is used in about.el too. (let* ((avg-pixwidth (round (/ (frame-pixel-width) (frame-width)))) (fill-area-width (* avg-pixwidth (- fill-column left-margin))) - (glyph-pixwidth (cond ((stringp glyph) + (glyph-pixwidth (cond ((stringp glyph) (* avg-pixwidth (length glyph))) ;; #### the pixmap option should be removed ;;((pixmapp glyph) @@ -933,12 +933,12 @@ a new format, when variables have changed, etc." `( "\ Sun provides support for the WorkShop/XEmacs integration package only. All other XEmacs packages are provided to you \"AS IS\".\n" - ,@(let ((lang (or (getenv "LC_ALL") (getenv "LC_MESSAGES") + ,@(let ((lang (or (getenv "LC_ALL") (getenv "LC_MESSAGES") (getenv "LANG")))) (if (and (not (featurep 'mule)) ;; Already got mule? ;; No Mule support on tty's yet - (not (eq 'tty (console-type))) + (not (eq 'tty (console-type))) lang ;; Non-English locale? (not (string= lang "C")) (not (string-match "^en" lang)) @@ -950,7 +950,7 @@ To handle other languages you need to run a Multi-lingual (`Mule') version of XEmacs, by either running the command `xemacs-mule', or by using the X resource `ESERVE*defaultXEmacsPath: xemacs-mule' when starting XEmacs from Sun WorkShop. \n"))))) - ((key describe-no-warranty) + ((key describe-no-warranty) ": "(face (red bold) "XEmacs comes with ABSOLUTELY NO WARRANTY\n")) ((key describe-copying) ": conditions to give out copies of XEmacs\n") @@ -963,11 +963,11 @@ Copyright (C) 1990-1994 Lucid, Inc. Copyright (C) 1993-1997 Sun Microsystems, Inc. All Rights Reserved. Copyright (C) 1994-1996 Board of Trustees, University of Illinois Copyright (C) 1995-1996 Ben Wing\n")) - + ((face (blue bold underline) "\nInformation, on-line help:\n\n") "XEmacs comes with plenty of documentation...\n\n" ,@(if (string-match "beta" emacs-version) - `((key describe-beta) + `((key describe-beta) ": " (face (red bold) "This is an Experimental version of XEmacs.\n")) `( "\n")) @@ -996,7 +996,7 @@ Copyright (C) 1995-1996 Ben Wing\n")) ; "If non-nil, function called to provide the startup logo. ;This function should return an initialized glyph if it is used.") -;; This will hopefully go away when gettext is functionnal. +;; This will hopefully go away when gettext is functional. (defconst splash-frame-static-body `(,(emacs-version) "\n\n" (face italic "`C-' means the control key,`M-' means the meta key\n\n"))) @@ -1128,7 +1128,7 @@ It's idempotent, so call this as often as you like!" (paths-construct-info-path roots early-packages late-packages last-packages)) - + (if debug-paths (princ (format "Info-directory-list:\n%S\n" Info-directory-list) 'external-debugging-output)) @@ -1137,7 +1137,7 @@ It's idempotent, so call this as often as you like!" (progn (setq lock-directory (paths-find-lock-directory roots)) (setq superlock-file (paths-find-superlock-file lock-directory)) - + (if debug-paths (progn (princ (format "lock-directory:\n%S\n" lock-directory) @@ -1158,7 +1158,7 @@ It's idempotent, so call this as often as you like!" (if debug-paths (princ (format "exec-path:\n%S\n" exec-path) 'external-debugging-output)) - + (setq doc-directory (paths-find-doc-directory roots)) (if debug-paths diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog index 655f241..8e6ab44 100644 --- a/lwlib/ChangeLog +++ b/lwlib/ChangeLog @@ -1,3 +1,27 @@ +2000-01-18 Martin Buchholz + + * XEmacs 21.2.27 is released. + +2000-01-15 Andy Piper + + * lwlib-Xlw.c (lw_update_one_widget): make sure global + properties gets set. + +2000-01-07 Martin Buchholz + + * config.h.in (ATHENA_INCLUDE): CPP trickery to make old cpps happy. + This extends support for gcc 2.6 (e.g. on BSD/OS 2.0) + + * lwlib.c: Fix up memset calls. + + * lwlib-Xm.c (xm_update_text): Warning suppression. + (xm_update_text_field): Warning suppression. + +2000-01-03 Martin Buchholz + + * lwlib-Xaw.c (xaw_update_one_widget): Emergency fix for this crash: + (yes-or-no-p-dialog-box "Yes or No") + 1999-12-31 Martin Buchholz * XEmacs 21.2.26 is released. diff --git a/lwlib/config.h.in b/lwlib/config.h.in index d94cb09..de51ba5 100644 --- a/lwlib/config.h.in +++ b/lwlib/config.h.in @@ -32,9 +32,12 @@ Boston, MA 02111-1307, USA. */ /* The path to the Athena widgets - the usual value is `X11/Xaw' */ #undef ATHENA_H_PATH -/* For use in #include statements. This extra level of macro indirection - is necessary because you can't use macros directly within <> or "" */ -#define ATHENA_INCLUDE(header_file) +/* For use in #include statements. + You can't use macros directly within the <> of a #include statement. + The multiply nested macros are necessary to make old gcc's happy. */ +#define INCLUDE_GLUE_2(dirname,basename) <##dirname##/##basename##> +#define INCLUDE_GLUE_1(dirname,basename) INCLUDE_GLUE_2(dirname,basename) +#define ATHENA_INCLUDE(header_file) INCLUDE_GLUE_1(ATHENA_H_PATH,header_file) #endif /* _LWLIB_CONFIG_H_ */ diff --git a/lwlib/lwlib-Xaw.c b/lwlib/lwlib-Xaw.c index 77aeb48..5329976 100644 --- a/lwlib/lwlib-Xaw.c +++ b/lwlib/lwlib-Xaw.c @@ -146,7 +146,7 @@ xaw_update_one_widget (widget_instance *instance, Widget widget, } #endif /* LWLIB_DIALOGS_ATHENA */ #ifdef LWLIB_WIDGETS_ATHENA - else if (XtIsSubclass (widget, labelWidgetClass)) + else if (XtClass (widget) == labelWidgetClass) { Arg al [1]; XtSetArg (al [0], XtNlabel, val->value); diff --git a/lwlib/lwlib-Xlw.c b/lwlib/lwlib-Xlw.c index 8063c7c..e4e91d6 100644 --- a/lwlib/lwlib-Xlw.c +++ b/lwlib/lwlib-Xlw.c @@ -536,6 +536,9 @@ xlw_update_one_widget (widget_instance* instance, Widget widget, widget_value* val, Boolean deep_p) { WidgetClass class = XtClass (widget); + /* Update up global arg values. */ + if (val->args && val->args->nargs) + XtSetValues (widget, val->args->args, val->args->nargs); if (0) ; diff --git a/lwlib/lwlib-Xm.c b/lwlib/lwlib-Xm.c index 85db133..99db011 100644 --- a/lwlib/lwlib-Xm.c +++ b/lwlib/lwlib-Xm.c @@ -680,7 +680,7 @@ xm_update_menu (widget_instance* instance, Widget widget, widget_value* val, static void xm_update_text (widget_instance* instance, Widget widget, widget_value* val) { - XmTextSetString (widget, val->value ? val->value : ""); + XmTextSetString (widget, val->value ? val->value : (char *) ""); XtRemoveAllCallbacks (widget, XmNactivateCallback); XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance); XtRemoveAllCallbacks (widget, XmNvalueChangedCallback); @@ -692,7 +692,7 @@ static void xm_update_text_field (widget_instance* instance, Widget widget, widget_value* val) { - XmTextFieldSetString (widget, val->value ? val->value : ""); + XmTextFieldSetString (widget, val->value ? val->value : (char *) ""); XtRemoveAllCallbacks (widget, XmNactivateCallback); XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance); XtRemoveAllCallbacks (widget, XmNvalueChangedCallback); diff --git a/lwlib/lwlib.c b/lwlib/lwlib.c index f55f092..1ecef08 100644 --- a/lwlib/lwlib.c +++ b/lwlib/lwlib.c @@ -111,7 +111,7 @@ malloc_widget_value (void) } if (wv) { - memset (wv, 0, sizeof (widget_value)); + memset (wv, '\0', sizeof (widget_value)); } return wv; } @@ -188,7 +188,7 @@ copy_scrollbar_values (widget_value *val, widget_value *copy) if (val->scrollbar_data) *copy->scrollbar_data = *val->scrollbar_data; else - memset (copy->scrollbar_data, 0, sizeof (scrollbar_values)); + memset (copy->scrollbar_data, '\0', sizeof (scrollbar_values)); } /* @@ -358,7 +358,7 @@ free_widget_info (widget_info *info) safe_free_str (info->type); safe_free_str (info->name); free_widget_value_tree (info->val); - memset ((void*)info, 0xDEADBEEF, sizeof (widget_info)); + memset (info, '\0', sizeof (widget_info)); free (info); } @@ -393,7 +393,7 @@ allocate_widget_instance (widget_info *info, Widget parent, Boolean pop_up_p) static void free_widget_instance (widget_instance *instance) { - memset ((void *) instance, 0xDEADBEEF, sizeof (widget_instance)); + memset (instance, '\0', sizeof (widget_instance)); free (instance); } @@ -1368,11 +1368,11 @@ void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value) if (!wv->args) { wv->args = (widget_args *) malloc (sizeof (widget_args)); - memset (wv->args, 0, sizeof (widget_args)); + memset (wv->args, '\0', sizeof (widget_args)); wv->args->ref_count = 1; wv->args->nargs = 0; wv->args->args = (ArgList) malloc (sizeof (Arg) * 10); - memset (wv->args->args, 0, sizeof (Arg) * 10); + memset (wv->args->args, '\0', sizeof (Arg) * 10); } if (wv->args->nargs > 10) diff --git a/man/ChangeLog b/man/ChangeLog index a163690..cefb9e8 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,78 @@ +2000-01-18 Martin Buchholz + + * XEmacs 21.2.27 is released. + +2000-01-17 Yoshiki Hayashi + + * xemacs/regs.texi: Synch with FSF 20.5. + +2000-01-14 Yoshiki Hayashi + + * info.texi: Change cross reference from emacs to xemacs. + +2000-01-14 Yoshiki Hayashi + + * xemacs/mini.texi: Synch with FSF 20.5. Update. + +2000-01-16 Martin Buchholz + + * xemacs-faq.texi (Q2.1.15): Fix up @table formatting. + +2000-01-14 Martin Buchholz + + * xemacs-faq.texi (Q2.1.15): Update dbx/gdb debugging info. + +2000-01-14 Sandra Wambold + + * xemacs-faq.texi: removed out-of-date XEmacs 19 questions. + +2000-01-14 Sandra Wambold + + * xemacs-faq.texi: Updated Macintosh information, + updated OS/2 info, changed turn-on-pending-delete answer. + +2000-01-08 Martin Buchholz + + * xemacs-faq.texi (Q2.1.15): Make debugging info current. + +2000-01-08 Hrvoje Niksic + + * lispref/control.texi (Signaling Errors): Document that `signal' + is continuable. + (Signaling Errors): Document `cerror', `signal-error', and + `check-argument-type'. + (Handling Errors): Mention `debug-on-signal'. + (Error Symbols): Document `define-error'. + (Processing of Errors): Document `display-error' and + `error-message-string'. + +2000-01-05 Yoshiki Hayashi + + * internals/internals.texi: Remove latin-1 char. + +2000-01-05 Didier Verna + + * xemacs/custom.texi (Key bindings using strings): add missing + whitespace. + + * xemacs/xemacs.texi (Top): + * new-users-guide/new-users-guide.texi (Top): add missing `@top' + node. + +1999-12-24 Yoshiki Hayashi + + * lispref/minibuf.texi (Reading a Password): New section. + +1999-12-21 Yoshiki Hayashi + + * lispref/minibuf.texi: Remove documentation about + minibuffer-local-ns-map, read-no-blanks-input. + +1999-12-21 Yoshiki Hayashi + + * lispref/minibuf.texi: Partial Synch with FSF manual. + Add description about DEFAULT argument of reading functions. + 1999-12-31 Martin Buchholz * XEmacs 21.2.26 is released. diff --git a/man/info.texi b/man/info.texi index e9eab51..bd827ee 100644 --- a/man/info.texi +++ b/man/info.texi @@ -3,7 +3,7 @@ @setfilename ../info/info.info @settitle Info @comment %**end of header -@comment $Id: info.texi,v 1.4.2.3 1999/12/05 19:02:24 martinb Exp $ +@comment $Id: info.texi,v 1.4.2.4 2000/01/18 07:27:42 yoshiki Exp $ @dircategory Texinfo documentation system @direntry @@ -855,9 +855,10 @@ node of the file with Emacs Info mode. The following variables may modify the behaviour of Info-mode in Emacs; you may wish to set one or several of these variables interactively, or -in your @file{~/.emacs} init file. @xref{Examining, Examining and Setting -Variables, Examining and Setting Variables, emacs, The GNU Emacs -Manual}. +in your @file{~/.emacs} init file. @xref{Examining, Examining and +Setting Variables, Examining and Setting Variables, xemacs, XEmacs +User's Manual}. + @vtable @code @item Info-enable-edit diff --git a/man/internals/internals.texi b/man/internals/internals.texi index f738f74..81b32d4 100644 --- a/man/internals/internals.texi +++ b/man/internals/internals.texi @@ -2650,8 +2650,8 @@ Unfortunately, Emacs Lisp is slow, and is going to stay slow. Function calls in elisp are especially expensive. Iterating over a long list is going to be 30 times faster implemented in C than in Elisp. -To get started debugging XEmacs, take a look at the @file{gdbinit} and -@file{dbxrc} files in the @file{src} directory. +To get started debugging XEmacs, take a look at the @file{.gdbinit} and +@file{.dbxrc} files in the @file{src} directory. @xref{Q2.1.15 - How to Debug an XEmacs problem with a debugger,,, xemacs-faq, XEmacs FAQ}. @@ -4993,7 +4993,7 @@ The first thing that is checked while marking an object is whether the object is a real Lisp object @code{Lisp_Type_Record} or just an integer or a character. Integers and characters are the only two types that are stored directly - without another level of indirection, and therefore they -don´t have to be marked and collected. +don't have to be marked and collected. @xref{How Lisp Objects Are Represented in C}. The second case is the one we have to handle. It is the one when we are @@ -5033,7 +5033,7 @@ bulkier objects are allocated and handled using that scheme of @code{lcrecords}. Each object is @code{malloc}ed separately instead of placing it in one of the contiguous frob blocks. All types that are currently stored -using @code{lcrecords}´s @code{alloc_lcrecord} and +using @code{lcrecords}'s @code{alloc_lcrecord} and @code{make_lcrecord_list} are the types: vectors, buffers, char-table, char-table-entry, console, weak-list, database, device, ldap, hash-table, command-builder, extent-auxiliary, extent-info, face, diff --git a/man/lispref/control.texi b/man/lispref/control.texi index 5ea470f..4588d48 100644 --- a/man/lispref/control.texi +++ b/man/lispref/control.texi @@ -662,7 +662,7 @@ instead. @xref{Catch and Throw}. which you call for other purposes, such as if you try to take the @sc{car} of an integer or move forward a character at the end of the buffer; you can also signal errors explicitly with the functions -@code{error} and @code{signal}. +@code{error}, @code{signal}, and others. Quitting, which happens when the user types @kbd{C-g}, is not considered an error, but it is handled almost like an error. @@ -673,6 +673,11 @@ This function signals an error with an error message constructed by applying @code{format} (@pxref{String Conversion}) to @var{format-string} and @var{args}. +This error is not continuable: you cannot continue execution after the +error using the debugger @kbd{r} or @kbd{c} commands. If you wish the +user to be able to continue execution, use @code{cerror} or +@code{signal} instead. + These examples show typical uses of @code{error}: @example @@ -691,7 +696,8 @@ These examples show typical uses of @code{error}: @code{error} works by calling @code{signal} with two arguments: the error symbol @code{error}, and a list containing the string returned by -@code{format}. +@code{format}. This is repeated in an endless loop, to ensure that +@code{error} never returns. If you want to use your own string as an error message verbatim, don't just write @code{(error @var{string})}. If @var{string} contains @@ -699,10 +705,16 @@ just write @code{(error @var{string})}. If @var{string} contains results. Instead, use @code{(error "%s" @var{string})}. @end defun +@defun cerror format-string &rest args +This function behaves like @code{error}, except that the error it +signals is continuable. That means that debugger commands @kbd{c} and +@kbd{r} can resume execution. +@end defun + @defun signal error-symbol data -This function signals an error named by @var{error-symbol}. The -argument @var{data} is a list of additional Lisp objects relevant to the -circumstances of the error. +This function signals a continuable error named by @var{error-symbol}. +The argument @var{data} is a list of additional Lisp objects relevant to +the circumstances of the error. The argument @var{error-symbol} must be an @dfn{error symbol}---a symbol bearing a property @code{error-conditions} whose value is a list of @@ -710,9 +722,9 @@ condition names. This is how XEmacs Lisp classifies different sorts of errors. The number and significance of the objects in @var{data} depends on -@var{error-symbol}. For example, with a @code{wrong-type-arg} error, -there are two objects in the list: a predicate that describes the type -that was expected, and the object that failed to fit that type. +@var{error-symbol}. For example, with a @code{wrong-type-argument} +error, there are two objects in the list: a predicate that describes the +type that was expected, and the object that failed to fit that type. @xref{Error Symbols}, for a description of error symbols. Both @var{error-symbol} and @var{data} are available to any error @@ -721,8 +733,10 @@ variable to a list of the form @code{(@var{error-symbol} .@: @var{data})} (@pxref{Handling Errors}). If the error is not handled, these two values are used in printing the error message. -The function @code{signal} never returns (though in older Emacs versions -it could sometimes return). +The function @code{signal} can return, if the debugger is invoked and +the user invokes the ``return from signal'' option. If you want the +error not to be continuable, use @code{signal-error} instead. Note that +in FSF Emacs @code{signal} never returns. @smallexample @group @@ -731,17 +745,42 @@ it could sometimes return). @end group @group -(signal 'no-such-error '("My unknown error condition.")) - @error{} peculiar error: "My unknown error condition." +(signal 'no-such-error '("My unknown error condition")) + @error{} Peculiar error (no-such-error "My unknown error condition") @end group @end smallexample @end defun -@cindex CL note---no continuable errors -@quotation -@b{Common Lisp note:} XEmacs Lisp has nothing like the Common Lisp -concept of continuable errors. -@end quotation +@defun signal-error error-symbol data +This function behaves like @code{signal}, except that the error it +signals is not continuable. +@end defun + +@defmac check-argument-type predicate argument +This macro checks that @var{argument} satisfies @var{predicate}. If +that is not the case, it signals a continuable +@code{wrong-type-argument} error until the returned value satisfies +@var{predicate}, and assigns the returned value to @var{argument}. In +other words, execution of the program will not continue until +@var{predicate} is met. + +@var{argument} is not evaluated, and should be a symbol. +@var{predicate} is evaluated, and should name a function. + +As shown in the following example, @code{check-argument-type} is useful +in low-level code that attempts to ensure the sanity of its data before +proceeding. + +@example +@group +(defun cache-object-internal (object wlist) + ;; @r{Before doing anything, make sure that @var{wlist} is indeed} + ;; @r{a weak list, which is what we expect.} + (check-argument-type 'weak-list-p wlist) + @dots{}) +@end group +@end example +@end defmac @node Processing of Errors @subsubsection How XEmacs Processes Errors @@ -761,6 +800,27 @@ command loop has an implicit handler for all kinds of errors. The command loop's handler uses the error symbol and associated data to print an error message. +Errors in command loop are processed using the @code{command-error} +function, which takes care of some necessary cleanup, and prints a +formatted error message to the echo area. The functions that do the +formatting are explained below. + +@defun display-error error-object stream +This function displays @var{error-object} on @var{stream}. +@var{error-object} is a cons of error type, a symbol, and error +arguments, a list. If the error type symbol of one of its error +condition superclasses has an @code{display-error} property, that +function is invoked for printing the actual error message. Otherwise, +the error is printed as @samp{Error: arg1, arg2, ...}. +@end defun + +@defun error-message-string error-object +This function converts @var{error-object} to an error message string, +and returns it. The message is equivalent to the one that would be +printed by @code{display-error}, except that it is conveniently returned +in string form. +@end defun + @cindex @code{debug-on-error} use An error that has no explicit handler may call the Lisp debugger. The debugger is enabled if the variable @code{debug-on-error} (@pxref{Error @@ -834,6 +894,13 @@ predictable, such as failure to open a file in a call to totally unpredictable, such as when the program evaluates an expression read from the user. +@cindex @code{debug-on-signal} use + Even when an error is handled, the debugger may still be called if the +variable @code{debug-on-signal} (@pxref{Error Debugging}) is +non-@code{nil}. Note that this may yield unpredictable results with +code that traps expected errors as normal part of its operation. Do not +set @code{debug-on-signal} unless you know what you are doing. + Error signaling and handling have some resemblance to @code{throw} and @code{catch}, but they are entirely separate facilities. An error cannot be caught by a @code{catch}, and a @code{throw} cannot be handled @@ -917,7 +984,9 @@ message and returns a very large number. @end smallexample @noindent -The handler specifies condition name @code{arith-error} so that it will handle only division-by-zero errors. Other kinds of errors will not be handled, at least not by this @code{condition-case}. Thus, +The handler specifies condition name @code{arith-error} so that it will +handle only division-by-zero errors. Other kinds of errors will not be +handled, at least not by this @code{condition-case}. Thus, @smallexample @group @@ -972,43 +1041,49 @@ one or more condition names: @code{error}, the error symbol if that is distinct from @code{error}, and perhaps some intermediate classifications. - In order for a symbol to be an error symbol, it must have an -@code{error-conditions} property which gives a list of condition names. -This list defines the conditions that this kind of error belongs to. -(The error symbol itself, and the symbol @code{error}, should always be -members of this list.) Thus, the hierarchy of condition names is -defined by the @code{error-conditions} properties of the error symbols. - - In addition to the @code{error-conditions} list, the error symbol -should have an @code{error-message} property whose value is a string to -be printed when that error is signaled but not handled. If the -@code{error-message} property exists, but is not a string, the error -message @samp{peculiar error} is used. -@cindex peculiar error + In other words, each error condition @dfn{inherits} from another error +condition, with @code{error} sitting at the top of the inheritance +hierarchy. + +@defun define-error error-symbol error-message &optional inherits-from + This function defines a new error, denoted by @var{error-symbol}. +@var{error-message} is an informative message explaining the error, and +will be printed out when an unhandled error occurs. @var{error-symbol} +is a sub-error of @var{inherits-from} (which defaults to @code{error}). + + @code{define-error} internally works by putting on @var{error-symbol} +an @code{error-message} property whose value is @var{error-message}, and +an @code{error-conditions} property that is a list of @var{error-symbol} +followed by each of its super-errors, up to and including @code{error}. +You will sometimes see code that sets this up directly rather than +calling @code{define-error}, but you should @emph{not} do this yourself, +unless you wish to maintain compatibility with FSF Emacs, which does not +provide @code{define-error}. +@end defun - Here is how we define a new error symbol, @code{new-error}: + Here is how we define a new error symbol, @code{new-error}, that +belongs to a range of errors called @code{my-own-errors}: @example @group -(put 'new-error - 'error-conditions - '(error my-own-errors new-error)) -@result{} (error my-own-errors new-error) -@end group -@group -(put 'new-error 'error-message "A new error") -@result{} "A new error" +(define-error 'my-own-errors "A whole range of errors" 'error) +(define-error 'new-error "A new error" 'my-own-errors) @end group @end example @noindent -This error has three condition names: @code{new-error}, the narrowest -classification; @code{my-own-errors}, which we imagine is a wider -classification; and @code{error}, which is the widest of all. +@code{new-error} has three condition names: @code{new-error}, the +narrowest classification; @code{my-own-errors}, which we imagine is a +wider classification; and @code{error}, which is the widest of all. + + Note that it is not legal to try to define an error unless its +super-error is also defined. For instance, attempting to define +@code{new-error} before @code{my-own-errors} are defined will signal an +error. The error string should start with a capital letter but it should not end with a period. This is for consistency with the rest of Emacs. - + Naturally, XEmacs will never signal @code{new-error} on its own; only an explicit call to @code{signal} (@pxref{Signaling Errors}) in your code can do this: @@ -1044,6 +1119,8 @@ make it possible to categorize errors at various levels of generality when you write an error handler. Using error symbols alone would eliminate all but the narrowest level of classification. + + @xref{Standard Errors}, for a list of all the standard error symbols and their conditions. diff --git a/man/lispref/debugging.texi b/man/lispref/debugging.texi index 72dd9eb..698d0ed 100644 --- a/man/lispref/debugging.texi +++ b/man/lispref/debugging.texi @@ -95,6 +95,12 @@ happen in process filter functions and sentinels. Therefore, these errors also can invoke the debugger. @xref{Processes}. @end defopt +@defopt debug-on-signal +This variable is similar to @code{debug-on-error} but breaks +whenever an error is signalled, regardless of whether it would be +handled. +@end defopt + @defopt debug-ignored-errors This variable specifies certain kinds of errors that should not enter the debugger. Its value is a list of error condition symbols and/or @@ -124,12 +130,6 @@ this: '(lambda () (setq debug-on-error t))) @end example -@defopt debug-on-signal -This variable is similar to @code{debug-on-error} but breaks -whenever an error is signalled, regardless of whether it would be -handled. -@end defopt - @node Infinite Loops @subsection Debugging Infinite Loops @cindex infinite loops diff --git a/man/new-users-guide/new-users-guide.texi b/man/new-users-guide/new-users-guide.texi index 3bed4da..2826aef 100644 --- a/man/new-users-guide/new-users-guide.texi +++ b/man/new-users-guide/new-users-guide.texi @@ -60,9 +60,8 @@ are preserved on all copies. @page @ifinfo @node Top, Intro, (dir), (dir) +@top The Emacs Editor -The Emacs Editor -**************** Emacs is the extensible, customizable, self-documenting real-time display editor. This Info file will help you get started on using diff --git a/man/xemacs-faq.texi b/man/xemacs-faq.texi index 65ef9d5..96e935b 100644 --- a/man/xemacs-faq.texi +++ b/man/xemacs-faq.texi @@ -7,7 +7,7 @@ @finalout @titlepage @title XEmacs FAQ -@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 1999/12/23 01:50:47 $ +@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2000/01/16 13:41:45 $ @sp 1 @author Tony Rossini @author Ben Wing @@ -139,7 +139,6 @@ Getting Started: * Q1.4.4:: May I see an example of a useful XEmacs Lisp function? * Q1.4.5:: And how do I bind it to a key? * Q1.4.6:: What's the difference between a macro and a function? -* Q1.4.7:: Why options saved with 19.13 don't work with 19.14 or later? Installation and Trouble Shooting @@ -155,8 +154,6 @@ Installation and Trouble Shooting * Q2.0.10:: After I run configure I find a coredump, is something wrong? * Q2.0.11:: XEmacs can't resolve host names. * Q2.0.12:: Why can't I strip XEmacs? -* Q2.0.13:: Can't link XEmacs on Solaris with Gcc. -* Q2.0.14:: Make on HP/UX 9 fails after linking temacs Trouble Shooting: * Q2.1.1:: XEmacs just crashed on me! @@ -176,10 +173,10 @@ Trouble Shooting: * Q2.1.15:: How to debug an XEmacs problem with a debugger. * Q2.1.16:: XEmacs crashes in @code{strcat} on HP/UX 10. * Q2.1.17:: @samp{Marker does not point anywhere}. -* Q2.1.18:: 19.14 hangs on HP/UX 10.10. +* Q2.1.18:: [This question intentionally left blank] * Q2.1.19:: XEmacs does not follow the local timezone. * Q2.1.20:: @samp{Symbol's function definition is void: hkey-help-show.} -* Q2.1.21:: Every so often the XEmacs frame freezes. +* Q2.1.21:: [This question intentionally left blank] * Q2.1.22:: XEmacs seems to take a really long time to do some things. * Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later. * Q2.1.24:: XEmacs won't start without network. (NEW) @@ -199,8 +196,8 @@ Customization and Options X Window System & Resources: * Q3.1.1:: Where is a list of X resources? * Q3.1.2:: How can I detect a color display? -* Q3.1.3:: @code{(set-screen-width)} worked in 19.6, but not in 19.13? -* Q3.1.4:: Specifying @code{Emacs*EmacsScreen.geometry} in @file{.emacs} does not work in 19.15? +* Q3.1.3:: [This question intentionally left blank] +* Q3.1.4:: [This question intentionally left blank] * Q3.1.5:: How can I get the icon to just say @samp{XEmacs}? * Q3.1.6:: How can I have the window title area display the full path? * Q3.1.7:: @samp{xemacs -name junk} doesn't work? @@ -319,7 +316,7 @@ Infodock: Other Unbundled Packages: * Q4.7.1:: What is AUC TeX? Where do you get it? * Q4.7.2:: Are there any Emacs Lisp Spreadsheets? -* Q4.7.3:: Byte compiling AUC TeX on XEmacs 19.14 +* Q4.7.3:: [This question intentionally left blank] * Q4.7.4:: Problems installing AUC TeX * Q4.7.5:: Is there a reason for an Emacs package not to be included in XEmacs? * Q4.7.6:: Is there a MatLab mode? @@ -336,14 +333,14 @@ The Miscellaneous Stuff * Q5.0.8:: Why does edt emulation not work? * Q5.0.9:: How can I emulate VI and use it as my default mode? * Q5.0.10:: [This question intentionally left blank] -* Q5.0.11:: Filladapt doesn't work in 19.15? +* Q5.0.11:: How do I turn on filladapt for all buffers? * Q5.0.12:: How do I disable gnuserv from opening a new frame? * Q5.0.13:: How do I start gnuserv so that each subsequent XEmacs is a client? * Q5.0.14:: Strange things are happening in Shell Mode. * Q5.0.15:: Where do I get the latest CC Mode? * Q5.0.16:: I find auto-show-mode disconcerting. How do I turn it off? * Q5.0.17:: How can I get two instances of info? -* Q5.0.18:: I upgraded to XEmacs 19.14 and gnuserv stopped working +* Q5.0.18:: [This question intentionally left blank] * Q5.0.19:: Is there something better than LaTeX mode? * Q5.0.20:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? @@ -487,7 +484,6 @@ Getting Started: * Q1.4.4:: May I see an example of a useful XEmacs Lisp function? * Q1.4.5:: And how do I bind it to a key? * Q1.4.6:: What's the difference between a macro and a function? -* Q1.4.7:: Why options saved with 19.13 don't work with 19.14 or later? @end menu @node Q1.0.1, Q1.0.2, Introduction, Introduction @@ -660,30 +656,30 @@ Yes, @xref{MS Windows}. @comment (NT and 95). The current betas require having an X server to run @comment XEmacs; however, a native NT/95 port is in alpha, thanks to @comment @email{jhar@@tardis.ed.ac.uk, Jonathan Harris}. -@comment +@comment @comment Although some features are still unimplemented, XEmacs 21.0 will support @comment MS-Windows. -@comment +@comment @comment The NT development is now coordinated by a mailing list at @comment @email{xemacs-nt@@xemacs.org}. -@comment +@comment @comment If you are willing to contribute or want to follow the progress, mail to @comment @iftex @comment @* @comment @end iftex @comment @email{xemacs-nt-request@@xemacs.org} to subscribe. -@comment +@comment @comment Furthermore, Altrasoft is seeking corporate and government sponsors to @comment help fund a fully native port of XEmacs to Windows 95 and NT using @comment full-time, senior-level staff working under a professionally managed @comment project structure. See @uref{http://www.altrasoft.com/, the Altrasoft @comment web site} for more details @comment or contact Altrasoft directly at 1-888-ALTSOFT. -@comment -@comment +@comment +@comment @comment The closest existing port is @dfn{Win-Emacs}, which is based on Lucid @comment Emacs 19.6. Available from @uref{http://www.pearlsoft.com/}. -@comment +@comment @comment There's a port of GNU Emacs (not XEmacs) at @comment @example @comment @uref{http://www.cs.washington.edu/homes/voelker/ntemacs.html}. @@ -693,12 +689,17 @@ Yes, @xref{MS Windows}. @unnumberedsubsec Q1.0.11: Is there a port of XEmacs to the Macintosh? @c changed -There has been a port to the MachTen environment of XEmacs 19.13, but no -patches have been submitted to the maintainers to get this in the -mainstream distribution. +@c There has been a port to the MachTen environment of XEmacs 19.13, but no +@c patches have been submitted to the maintainers to get this in the +@c mainstream distribution. +@c +@c For the MacOS, there is a port of +@c @uref{ftp://ftp.cs.cornell.edu/pub/parmet/, Emacs 18.59}. -For the MacOS, there is a port of -@uref{ftp://ftp.cs.cornell.edu/pub/parmet/, Emacs 18.59}. +Yes, there is a port of XEmacs 19.14, tested on MacOS 7.6.1 and MacOS +8.5.1 by @uref{pjarvis@@ispchannel.com,Pitts Jarvis}. It's available +at @uref{http://my.ispchannel.com/~pjarvis/xemacs.html, +http://my.ispchannel.com/~pjarvis/xemacs.html}. @node Q1.0.12, Q1.0.13, Q1.0.11, Introduction @unnumberedsubsec Q1.0.12: Is there a port of XEmacs to NextStep? @@ -710,12 +711,12 @@ XEmacs port, but never went any farther. @node Q1.0.13, Q1.0.14, Q1.0.12, Introduction @unnumberedsubsec Q1.0.13: Is there a port of XEmacs to OS/2? -No, and there is no news of anyone working on it. +No, but Alexander Nikolaev is working on it. @node Q1.0.14, Q1.1.1, Q1.0.13, Introduction @unnumberedsubsec Q1.0.14: Where can I obtain a printed copy of the XEmacs users manual? -Pre-printed manuals are not available. If you are familiar with +Pre-printed manuals are not available. If you are familiar with TeX, you can generate your own manual from the XEmacs sources. HTML and Postscript versions of XEmacs manuals may be available from the @@ -871,14 +872,20 @@ crash some time ago. @itemize @bullet @item @email{binge@@aloft.att.com, Curtis.N.Bingham} +@item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan} + @item @email{rjc@@cogsci.ed.ac.uk, Richard Caley} @item @email{cognot@@ensg.u-nancy.fr, Richard Cognot} +@item @email{daku@@nortel.ca, Mark Daku} + @item @email{wgd@@martigny.ai.mit.edu, William G. Dubuque} @item @email{eeide@@cs.utah.edu, Eric Eide} +@item @email{af@@biomath.jussieu.fr, Alain Fauconnet} + @item @email{cflatter@@nrao.edu, Chris Flatters} @item @email{ginsparg@@adra.com, Evelyn Ginsparg} @@ -977,7 +984,7 @@ characters. @node Q1.3.2, Q1.3.3, Q1.3.1, Introduction @unnumberedsubsec Q1.3.2: What is the status of Asian-language support, aka MULE? -MULE support is now available for UNIX versions of XEmacs. +MULE support is now available for UNIX versions of XEmacs. If you would like to help, you may want to join the @email{xemacs-mule@@xemacs.org} mailing list. Especially needed are @@ -1177,11 +1184,11 @@ it's available in a non-english language, type @kbd{C-u C-h t TAB}, type the first letters of your preferred language, then type @key{RET}. @comment There's an Emacs Lisp tutorial at -@comment +@comment @comment @example @comment @uref{ftp://prep.ai.mit.edu/pub/gnu/emacs-lisp-intro-1.04.tar.gz}. @comment @end example -@comment +@comment @comment @email{erik@@petaxp.rug.ac.be, Erik Sundermann} has made a tutorial web @comment page at @comment @iftex @@ -1235,7 +1242,7 @@ To bind to a key do: Or interactively, @kbd{M-x global-set-key} and follow the prompts. -@node Q1.4.6, Q1.4.7, Q1.4.5, Introduction +@node Q1.4.6, , Q1.4.5, Introduction @unnumberedsubsec Q1.4.6: What's the difference between a macro and a function? Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual: @@ -1255,36 +1262,6 @@ Do not confuse the two terms with @dfn{keyboard macros}, which are another matter, entirely. A keyboard macro is a key bound to several other keys. Refer to manual for details. -@node Q1.4.7, , Q1.4.6, Introduction -@unnumberedsubsec Q1.4.7: How come options saved with 19.13 don't work with 19.14 or later? - -There's a problem with options of the form: - -@lisp -(add-spec-list-to-specifier (face-property 'searchm-field 'font) - '((global (nil)))) -@end lisp - -saved by a 19.13 XEmacs that causes a 19.14 XEmacs grief. You must -delete these options. XEmacs 19.14 and later no longer write the -options directly to @file{.emacs} which should allow us to deal with -version incompatibilities better in the future. - -Options saved under XEmacs 19.13 are protected by code that specifically -requires a version 19 XEmacs. This won't be a problem unless you're -using XEmacs v20. You should consider changing the code to read: - -@lisp -(cond - ((and (string-match "XEmacs" emacs-version) - (boundp 'emacs-major-version) - (or (and (= emacs-major-version 19) - (>= emacs-minor-version 12)) - (>= emacs-major-version 20))) - ... - )) -@end lisp - @node Installation, Customization, Introduction, Top @unnumbered 2 Installation and Trouble Shooting @@ -1305,8 +1282,6 @@ Installation: * Q2.0.10:: After I run configure I find a coredump, is something wrong? * Q2.0.11:: XEmacs can't resolve host names. * Q2.0.12:: Why can't I strip XEmacs? -* Q2.0.13:: Can't link XEmacs on Solaris with Gcc. -* Q2.0.14:: Make on HP/UX 9 fails after linking temacs Trouble Shooting: * Q2.1.1:: XEmacs just crashed on me! @@ -1326,10 +1301,10 @@ Trouble Shooting: * Q2.1.15:: How to debug an XEmacs problem with a debugger. * Q2.1.16:: XEmacs crashes in @code{strcat} on HP/UX 10. * Q2.1.17:: @samp{Marker does not point anywhere}. -* Q2.1.18:: 19.14 hangs on HP/UX 10.10. +* Q2.1.18:: [This question intentionally left blank] * Q2.1.19:: XEmacs does not follow the local timezone. * Q2.1.20:: @samp{Symbol's function definition is void: hkey-help-show.} -* Q2.1.21:: Every so often the XEmacs frame freezes. +* Q2.1.21:: [This question intentionally left blank] * Q2.1.22:: XEmacs seems to take a really long time to do some things. * Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later. * Q2.1.24:: XEmacs won't start without network. (NEW) @@ -1758,7 +1733,7 @@ check to see if you've put DNS in the shared libc and will then proceed to link against the DNS resolver library code. @end quotation -@node Q2.0.12, Q2.0.13, Q2.0.11, Installation +@node Q2.0.12, Q2.1.1, Q2.0.11, Installation @unnumberedsubsec Q2.0.12: Why can't I strip XEmacs? @email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes: @@ -1813,46 +1788,7 @@ cp lib-src/DOC-19.16-XEmacs @end enumerate @end quotation -@node Q2.0.13, Q2.0.14, Q2.0.12, Installation -@unnumberedsubsec Q2.0.13: Problems linking with Gcc on Solaris - -There are known difficulties linking with Gnu ld on Solaris. A typical -error message might look like: - -@example -unexec(): dlopen(../dynodump/dynodump.so): ld.so.1: ./temacs: -fatal: relocation error: -symbol not found: main: referenced in ../dynodump/dynodump.so -@end example - -@email{martin@@xemacs.org, Martin Buchholz} writes: - -@quotation -You need to specify @samp{-fno-gnu-linker} as part of your flags to pass -to ld. Future releases of XEmacs will try to do this automatically. -@end quotation - -@node Q2.0.14, Q2.1.1, Q2.0.13, Installation -@unnumberedsubsec Q2.0.14: Make on HP/UX 9 fails after linking temacs - -Problem when building xemacs-19.16 on hpux 9: - -@email{cognot@@ensg.u-nancy.fr, Richard Cognot} writes: - -@quotation -make on hpux fails after linking temacs with a message: - -@example -"make: don't know how to make .y." -@end example - -Solution: This is a problem with HP make revision 70.X. Either use GNU -make, or install PHCO_6552, which will bring make to revision -72.24.1.17. -@end quotation - - -@node Q2.1.1, Q2.1.2, Q2.0.14, Installation +@node Q2.1.1, Q2.1.2, Q2.0.12, Installation @unnumberedsec 2.1: Trouble Shooting @unnumberedsubsec Q2.1.1: Help! XEmacs just crashed on me! @@ -2316,17 +2252,55 @@ it cannot display the internal C structure of a Lisp Object. Even if all you've got is a core dump, all is not lost. If you're using GDB, there are some macros in the file -@file{src/gdbinit} in the XEmacs source distribution that should make it -easier for you to decode Lisp objects. Copy this file to -@file{~/.gdbinit}, or @code{source} it from @file{~/.gdbinit}, and use -the macros defined therein. In particular, use the @code{pobj} macro to -print the internal C representation of a lisp object. This will work -with a core file or not-yet-run executable. The aliases @code{ldp} and -@code{lbt} are provided for conveniently calling @code{debug_print} and -@code{debug_backtrace}. +@file{src/.gdbinit} in the XEmacs source distribution that should make +it easier for you to decode Lisp objects. This file is automatically +read by gdb if gdb is run in the directory where xemacs was built, and +contains these useful macros to inspect the state of xemacs: + +@table @code +@item pobj +Usage: pobj lisp_object @* +Print the internal C representation of a lisp object. + +@item xtype +Usage: xtype lisp_object @* +Print the Lisp type of a lisp object. + +@item lbt +Usage: lbt @* +Print the current Lisp stack trace. +Requires a running xemacs process. + +@item ldp +Usage: ldp lisp_object @* +Print a Lisp Object value using the Lisp printer. +Requires a running xemacs process. + +@item run-temacs +Usage: run-temacs @* +Run temacs interactively, like xemacs. +Use this with debugging tools (like purify) that cannot deal with dumping, +or when temacs builds successfully, but xemacs does not. + +@item dump-temacs +Usage: dump-temacs @* +Run the dumping part of the build procedure. +Use when debugging temacs, not xemacs! +Use this when temacs builds successfully, but xemacs does not. + +@item check-xemacs +Usage: check-xemacs @* +Run the test suite. Equivalent to 'make check'. + +@item check-temacs +Usage: check-temacs @* +Run the test suite on temacs. Equivalent to 'make check-temacs'. +Use this with debugging tools (like purify) that cannot deal with dumping, +or when temacs builds successfully, but xemacs does not. +@end table If you are using Sun's @file{dbx} debugger, there is an equivalent file -@file{src/dbxrc} to copy to or source from @file{~/.dbxrc}. +@file{src/.dbxrc}, which defines the same commands for dbx. @item If you're using a debugger to get a C stack backtrace and you're seeing @@ -2377,14 +2351,13 @@ you'll have something useful. @item If you compile with the newer gcc variants gcc-2.8 or egcs, you will -also need gdb 4.17. Earlier releases of gdb can't handle the debug -information generated by the newer compilers. +also need gdb 4.17 or above. Earlier releases of gdb can't handle the +debug information generated by the newer compilers. @item -The above information on using @file{src/gdbinit} works for XEmacs-21.0 -and above. For older versions of XEmacs, there are different -@file{gdbinit} files provided in the @file{src} directory. Use the one -corresponding to the configure options used when building XEmacs. +In versions of XEmacs before 21.2.27, @file{src/.gdbinit} was named +@file{src/gdbinit}. This had the disadvantage of not being sourced +automatically by gdb, so you had to set that up yourself. @end itemize @@ -2430,58 +2403,7 @@ Upgrade your Gnus. @end enumerate @node Q2.1.18, Q2.1.19, Q2.1.17, Installation -@unnumberedsubsec Q2.1.18: 19.14 hangs on HP/UX 10.10. - -@email{cognot@@ensg.u-nancy.fr, Richard Cognot} writes: - -@quotation -For the record, compiling on hpux 10.10 leads to a hang in Gnus when -compiled with optimization on. - -I've just discovered that my hpux 10.01 binary was working less well -than expected. In fact, on a 10.10 system, @code{(while t)} was not -interrupted by @kbd{C-g}. I defined @code{BROKEN_SIGIO} and recompiled on -10.10, and... the hang is now gone. - -As far as configure goes, this will be a bit tricky: @code{BROKEN_SIGIO} -is needed on 10.10, but @strong{not} on 10.01: if I run my 10.01 binary -on a 10.01 machine, without @code{BROKEN_SIGIO} being defined, @kbd{C-g} -works as expected. -@end quotation - -@email{cognot@@ensg.u-nancy.fr, Richard Cognot} adds: - -@quotation -Apparently somebody has found the reason why there is this -@iftex -@* -@end iftex -@samp{poll: -interrupted...} message for each event. For some reason, libcurses -reimplements a @code{select()} system call, in a highly broken fashion. -The fix is to add a -lc to the link line @emph{before} the --lxcurses. XEmacs will then use the right version of @code{select()}. -@end quotation - - -@email{af@@biomath.jussieu.fr, Alain Fauconnet} writes: - -@quotation -The @emph{real} solution is to @emph{not} link -lcurses in! I just -changed -lcurses to -ltermcap in the Makefile and it fixed: - -@enumerate -@item -The @samp{poll: interrupted system call} message. - -@item -A more serious problem I had discovered in the meantime, that is the -fact that subprocess handling was seriously broken: subprocesses -e.g. started by AUC TeX for TeX compilation of a buffer would -@emph{hang}. Actually they would wait forever for emacs to read the -socket which connects stdout... -@end enumerate -@end quotation +@unnumberedsubsec Q2.1.18: removed @node Q2.1.19, Q2.1.20, Q2.1.18, Installation @unnumberedsubsec Q2.1.19: XEmacs does not follow the local timezone. @@ -2509,10 +2431,7 @@ This is a problem with a partially loaded hyperbole. Try adding: where you load hyperbole and the problem should go away. @node Q2.1.21, Q2.1.22, Q2.1.20, Installation -@unnumberedsubsec Q2.1.21: Every so often the XEmacs frame freezes - -This problem has been fixed in 19.15, and was due to a not easily -reproducible race condition. +@unnumberedsubsec Q2.1.21: [This question intentionally left blank] @node Q2.1.22, Q2.1.23, Q2.1.21, Installation @unnumberedsubsec Q2.1.22: XEmacs seems to take a really long time to do some things @@ -2603,8 +2522,8 @@ Customization---Emacs Lisp and @file{.emacs}: X Window System & Resources: * Q3.1.1:: Where is a list of X resources? * Q3.1.2:: How can I detect a color display? -* Q3.1.3:: @code{(set-screen-width)} worked in 19.6, but not in 19.13? -* Q3.1.4:: Specifying @code{Emacs*EmacsScreen.geometry} in @file{.emacs} does not work in 19.15? +* Q3.1.3:: [This question intentionally left blank] +* Q3.1.4:: [This question intentionally left blank] * Q3.1.5:: How can I get the icon to just say @samp{XEmacs}? * Q3.1.6:: How can I have the window title area display the full path? * Q3.1.7:: @samp{xemacs -name junk} doesn't work? @@ -2876,38 +2795,10 @@ in: @end lisp @node Q3.1.3, Q3.1.4, Q3.1.2, Customization -@unnumberedsubsec Q3.1.3: @code{(set-screen-width)} worked in 19.6, but not in 19.13? - -In Lucid Emacs 19.6 I did @code{(set-screen-width @var{characters})} and -@code{(set-screen-height @var{lines})} in my @file{.emacs} instead of -specifying @code{Emacs*EmacsScreen.geometry} in my -@iftex -@* -@end iftex -@file{.Xdefaults} but -this does not work in XEmacs 19.13. - -These two functions now take frame arguments: - -@lisp -(set-frame-width (selected-frame) @var{characters}) -(set-frame-height (selected-frame) @var{lines}) -@end lisp +@unnumberedsubsec Q3.1.3: [This question intentionally left blank] @node Q3.1.4, Q3.1.5, Q3.1.3, Customization -@unnumberedsubsec Q3.1.4: Specifying @code{Emacs*EmacsScreen.geometry} in @file{.emacs} does not work in 19.15? - -In XEmacs 19.11 I specified @code{Emacs*EmacsScreen.geometry} in -my @file{.emacs} but this does not work in XEmacs 19.15. - -We have switched from using the term @dfn{screen} to using the term -@dfn{frame}. - -The correct entry for your @file{.Xdefaults} is now: - -@example -Emacs*EmacsFrame.geometry -@end example +@unnumberedsubsec Q3.1.4: [This question intentionally left blank] @node Q3.1.5, Q3.1.6, Q3.1.4, Customization @unnumberedsubsec Q3.1.5: How can I get the icon to just say @samp{XEmacs}? @@ -3999,13 +3890,19 @@ is what happens when you select a region (with the mouse or keyboard) and you press a key to replace the selected region by the key you typed. Usually backspace kills the selected region. -To get this behavior, add the following line to your @file{.emacs}: +To get this behavior, add the following lines to your @file{.emacs}: @lisp -(turn-on-pending-delete) +(cond + ((fboundp 'turn-on-pending-delete) + (turn-on-pending-delete)) + ((fboundp 'pending-delete-on) + (pending-delete-on t))) @end lisp -Note that this will work with both Backspace and Delete. +Note that this will work with both Backspace and Delete. This code is a +tad more complicated than it has to be for XEmacs in order to make it +more portable. @node Q3.10.3, Q3.10.4, Q3.10.2, Customization @unnumberedsubsec Q3.10.3: Can I turn off the highlight during isearch? @@ -4122,7 +4019,7 @@ Infodock: Other Unbundled Packages: * Q4.7.1:: What is AUC TeX? Where do you get it? * Q4.7.2:: Are there any Emacs Lisp Spreadsheets? -* Q4.7.3:: Byte compiling AUC TeX on XEmacs 19.14 +* Q4.7.3:: [This question intentionally left blank] * Q4.7.4:: Problems installing AUC TeX * Q4.7.5:: Is there a reason for an Emacs package not to be included in XEmacs? * Q4.7.6:: Is there a MatLab mode? @@ -4637,12 +4534,12 @@ following patch: @@@@ -42,7 +42,7 @@@@ (defvar running-xemacs nil "t if we're running XEmacs") (defvar running-emacs nil "t if we're running GNU Emacs 19") - + -(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-version) +(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version) (setq running-xemacs t) (setq running-emacs t)) -@end format +@end format @@ -4859,17 +4756,7 @@ Yes. Check out @dfn{dismal} (which stands for Dis' Mode Ain't Lotus) at @uref{ftp://cs.nyu.edu/pub/local/fox/dismal/}. @node Q4.7.3, Q4.7.4, Q4.7.2, Subsystems -@unnumberedsubsec Q4.7.3: Byte compiling AUC TeX on XEmacs 19.14. - -@email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan} writes: - -@quotation -When byte compiling auctex-9.4g, you must use the command: - -@example -xemacs -batch -l lpath.el -@end example -@end quotation +@unnumberedsubsec Q4.7.3: [This question intentionally left blank] @node Q4.7.4, Q4.7.5, Q4.7.3, Subsystems @unnumberedsubsec Q4.7.4: Problems installing AUC TeX. @@ -4965,14 +4852,14 @@ Major & Minor Modes: * Q5.0.8:: Why does edt emulation not work? * Q5.0.9:: How can I emulate VI and use it as my default mode? * Q5.0.10:: [This question intentionally left blank] -* Q5.0.11:: Filladapt doesn't work in 19.15? +* Q5.0.11:: How do I turn on filladapt for all buffers? * Q5.0.12:: How do I disable gnuserv from opening a new frame? * Q5.0.13:: How do I start gnuserv so that each subsequent XEmacs is a client? * Q5.0.14:: Strange things are happening in Shell Mode. * Q5.0.15:: Where do I get the latest CC Mode? * Q5.0.16:: I find auto-show-mode disconcerting. How do I turn it off? * Q5.0.17:: How can I get two instances of info? -* Q5.0.18:: I upgraded to XEmacs 19.14 and gnuserv stopped working +* Q5.0.18:: [This question intentionally left blank] * Q5.0.19:: Is there something better than LaTeX mode? * Q5.0.20:: Is there a way to start a new XEmacs if there's no gnuserv running, and otherwise use gnuclient? @@ -5165,7 +5052,7 @@ rename-uniquely} to rename the @code{*shell*} buffer instead of @kbd{M-x rename-buffer}. Alternately, you can set the variable @code{shell-multiple-shells}. -If the value of this variable is non-nil, each time shell mode is invoked, +If the value of this variable is non-nil, each time shell mode is invoked, a new shell is made @node Q5.0.7, Q5.0.8, Q5.0.6, Miscellaneous @@ -5221,11 +5108,11 @@ it, otherwise some minor modes may not get viper-ized. Obsolete question, left blank to avoid renumbering @node Q5.0.11, Q5.0.12, Q5.0.10, Miscellaneous -@unnumberedsubsec Q5.0.11: Filladapt doesn't work in 19.15 +@unnumberedsubsec Q5.0.11: How do I turn on filladapt for all buffers? -Filladapt 2.x is included in 19.15. In it filladapt is now a minor -mode and minor modes are traditionally off by default. The following -added to your @file{.emacs} will turn it on for all buffers: +Filladapt is a minor mode and minor modes are traditionally off by +default. The following added to your @file{.emacs} will turn it on for +all buffers: @lisp (setq-default filladapt-mode t) @@ -5333,19 +5220,7 @@ enabled by default. To turn it off, put the following in your You can't. The @code{info} package does not provide for multiple info buffers. @node Q5.0.18, Q5.0.19, Q5.0.17, Miscellaneous -@unnumberedsubsec Q5.0.18: I upgraded to XEmacs 19.14 and gnuserv stopped working. - -@email{daku@@nortel.ca, Mark Daku} writes: - -@quotation -It turns out I was using an older version of gnuserv. The installation -didn't put the binary into the public bin directory. It put it in -@iftex -@* -@end iftex -@file{lib/xemacs-19.14/hppa1.1-hp-hpux9.05/gnuserv}. Shouldn't it have -been put in @file{bin/hppa1.1-hp-hpux9.0}? -@end quotation +@unnumberedsubsec Q5.0.18: [This question intentionally left blank] @node Q5.0.19, Q5.0.20, Q5.0.18, Miscellaneous @unnumberedsubsec Q5.0.19: Is there something better than LaTeX mode? @@ -6206,7 +6081,7 @@ port of XEmacs. General Info * Q6.0.1:: What is the status of the XEmacs port to Windows? -* Q6.0.2:: What flavors of MS Windows are supported? +* Q6.0.2:: What flavors of MS Windows are supported? * Q6.0.3:: Where are the XEmacs on MS Windows binaries? * Q6.0.4:: Does XEmacs on MS Windows require an X server to run? @@ -6317,7 +6192,7 @@ Pointers to X servers can be found at @iftex @* @end iftex -@uref{http://dao.gsfc.nasa.gov/software/grads/win32/X11R6.3/}; +@uref{http://dao.gsfc.nasa.gov/software/grads/win32/X11R6.3/}; look for "Where to get an X server". Also note that, although the above page talks about Cygnus gnu-win32 (Cygwin), the information on X servers @@ -6403,7 +6278,7 @@ well as pre-built ncurses and graphic libraries, from: @unnumberedsec 6.2: Customization and User Interface @unnumberedsubsec Q6.2.1: How will the port cope with differences in the Windows user interface? -XEmacs (and Emacs in general) UI is pretty +XEmacs (and Emacs in general) UI is pretty different from what is expected of a typical MS Windows program. How will the MS Windows port cope with it? @@ -6468,7 +6343,7 @@ Here is a recount of various Emacs versions running on MS Windows: @itemize @bullet -@item +@item Win-Emacs @itemize @minus @@ -6484,7 +6359,7 @@ Pearlsoft, but not anymore, since Pearlsoft went out of business. @item GNU Emacs for DOS -@itemize @minus +@itemize @minus @item GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS @@ -6496,7 +6371,7 @@ is far too big compared to typical DOS editors. @item GNU Emacs compiled with Win32 -@itemize @minus +@itemize @minus @item Starting with version 19.30, it has been possible to compile GNU Emacs @@ -6509,7 +6384,7 @@ flavor of XEmacs on MS Windows. @item NT Emacs -@itemize @minus +@itemize @minus @item NT Emacs is a version of GNU Emacs modified to compile and run under @@ -6518,7 +6393,7 @@ in spirit to the XEmacs "native" port. @item NT Emacs has been written by Geoff Voelker, and more information can be -found at +found at @iftex @* @end iftex @@ -6529,7 +6404,7 @@ found at @item XEmacs -@itemize @minus +@itemize @minus @item Beginning with XEmacs 19.12, XEmacs' architecture has been redesigned diff --git a/man/xemacs/custom.texi b/man/xemacs/custom.texi index d37a926..bcb9764 100644 --- a/man/xemacs/custom.texi +++ b/man/xemacs/custom.texi @@ -1093,9 +1093,9 @@ definitions for the same key. Or you can change the current buffer's local map, which affects all buffers using the same major mode. @menu -* Interactive Rebinding:: Changing Key Bindings Interactively -* Programmatic Rebinding:: Changing Key Bindings Programmatically -* Key Bindings Using Strings::Using Strings for Changing Key Bindings +* Interactive Rebinding:: Changing Key Bindings Interactively +* Programmatic Rebinding:: Changing Key Bindings Programmatically +* Key Bindings Using Strings:: Using Strings for Changing Key Bindings @end menu @node Interactive Rebinding diff --git a/man/xemacs/mini.texi b/man/xemacs/mini.texi index c46ce59..3d75b35 100644 --- a/man/xemacs/mini.texi +++ b/man/xemacs/mini.texi @@ -3,20 +3,19 @@ @chapter The Minibuffer @cindex minibuffer - Emacs commands use the @dfn{minibuffer} to read arguments more -complicated than a single number. Minibuffer arguments can be file -names, buffer names, Lisp function names, Emacs command names, Lisp -expressions, and many other things, depending on the command reading the -argument. To edit the argument in the minibuffer, you can use Emacs -editing commands. - + The @dfn{minibuffer} is the facility used by XEmacs commands to read +arguments more complicated than a single number. Minibuffer arguments +can be file names, buffer names, Lisp function names, XEmacs command +names, Lisp expressions, and many other things, depending on the command +reading the argument. You can use the usual XEmacs editing commands in +the minibuffer to edit the argument text. @cindex prompt When the minibuffer is in use, it appears in the echo area, and the cursor moves there. The beginning of the minibuffer line displays a -@dfn{prompt} indicating what kind of input you should supply and how it -will be used. The prompt is often derived from the name of the command -the argument is for. The prompt normally ends with a colon. +@dfn{prompt} which says what kind of input you should supply and how it +will be used. Often this prompt is derived from the name of the command +that the argument is for. The prompt normally ends with a colon. @cindex default argument Sometimes a @dfn{default argument} appears in parentheses after the @@ -26,14 +25,14 @@ For example, commands that read buffer names always show a default, which is the name of the buffer that will be used if you type just @key{RET}. @kindex C-g - The simplest way to give a minibuffer argument is to type the text you -want, terminated by @key{RET} to exit the minibuffer. To get out -of the minibuffer and cancel the command that it was for, type -@kbd{C-g}. + The simplest way to enter a minibuffer argument is to type the text +you want, terminated by @key{RET} which exits the minibuffer. You can +cancel the command that wants the argument, and get out of the +minibuffer, by typing @kbd{C-g}. Since the minibuffer uses the screen space of the echo area, it can -conflict with other ways Emacs customarily uses the echo area. Here is how -Emacs handles such conflicts: +conflict with other ways XEmacs customarily uses the echo area. Here is +how XEmacs handles such conflicts: @itemize @bullet @item @@ -44,9 +43,9 @@ while. It comes back after a few seconds, or as soon as you type anything. @item -If you use a command in the minibuffer whose purpose is to print a -message in the echo area (for example @kbd{C-x =}) the message is -displayed normally, and the minibuffer is hidden for a while. It comes back +If in the minibuffer you use a command whose purpose is to print a +message in the echo area, such as @kbd{C-x =}, the message is printed +normally, and the minibuffer is hidden for a while. It comes back after a few seconds, or as soon as you type anything. @item @@ -58,6 +57,7 @@ use. * File: Minibuffer File. Entering file names with the minibuffer. * Edit: Minibuffer Edit. How to edit in the minibuffer. * Completion:: An abbreviation facility for minibuffer input. +* Minibuffer History:: Reusing recent minibuffer arguments. * Repetition:: Re-executing commands that used the minibuffer. @end menu @@ -66,37 +66,43 @@ use. Sometimes the minibuffer starts out with text in it. For example, when you are supposed to give a file name, the minibuffer starts out containing -the @dfn{default directory}, which ends with a slash. This informs -you in which directory the file will be looked for if you do not specify -a different one. For example, the minibuffer might start out with: +the @dfn{default directory}, which ends with a slash. This is to inform +you which directory the file will be found in if you do not specify a +directory. + + For example, the minibuffer might start out with these contents: @example Find File: /u2/emacs/src/ @end example @noindent -where @samp{Find File:@: } is the prompt. Typing @kbd{buffer.c} specifies -the file -@*@file{/u2/emacs/src/buffer.c}. To find files in nearby -directories, use @samp{..}; thus, if you type @kbd{../lisp/simple.el}, the -file that you visit will be the one named -@*@file{/u2/emacs/lisp/simple.el}. -Alternatively, you can use @kbd{M-@key{DEL}} to kill directory names you -don't want (@pxref{Words}).@refill - - You can also type an absolute file name, one starting with a slash or a -tilde, ignoring the default directory. For example, to find the file -@file{/etc/termcap}, just type the name, giving: +where @samp{Find File:@: } is the prompt. Typing @kbd{buffer.c} +specifies the file @file{/u2/emacs/src/buffer.c}. To find files in +nearby directories, use @kbd{..}; thus, if you type +@kbd{../lisp/simple.el}, you will get the file named +@file{/u2/emacs/lisp/simple.el}. Alternatively, you can kill with +@kbd{M-@key{DEL}} the directory names you don't want (@pxref{Words}). + + If you don't want any of the default, you can kill it with @kbd{C-a +C-k}. But you don't need to kill the default; you can simply ignore it. +Insert an absolute file name, one starting with a slash or a tilde, +after the default directory. For example, to specify the file +@file{/etc/termcap}, just insert that name, giving these minibuffer +contents: @example Find File: /u2/emacs/src//etc/termcap @end example @noindent -Two slashes in a row are not normally meaningful in Unix file names, but -they are allowed in XEmacs. They mean, ``ignore everything before the -second slash in the pair.'' Thus, @samp{/u2/emacs/src/} is ignored, and -you get the file @file{/etc/termcap}. +@cindex // in file name +@cindex double slash in file name +@cindex slashes repeated in file name +XEmacs gives a special meaning to a double slash (which is not normally +a useful thing to write): it means, ``ignore everything before the +second slash in the pair.'' Thus, @samp{/u2/emacs/src/} is ignored in +the example above, and you get the file @file{/etc/termcap}. @vindex insert-default-directory If you set @code{insert-default-directory} to @code{nil}, the default @@ -107,126 +113,141 @@ interpreted with respect to the same default directory. @node Minibuffer Edit, Completion, Minibuffer File, Minibuffer @section Editing in the Minibuffer - The minibuffer is an Emacs buffer (albeit a peculiar one), and the usual -Emacs commands are available for editing the text of an argument you are -entering. + The minibuffer is an XEmacs buffer (albeit a peculiar one), and the +usual XEmacs commands are available for editing the text of an argument +you are entering. Since @key{RET} in the minibuffer is defined to exit the minibuffer, -you must use @kbd{C-o} or @kbd{C-q @key{LFD}} to insert a newline into -the minibuffer. (Recall that a newline is really the @key{LFD} -character.) - - The minibuffer has its own window, which always has space on the screen -but acts as if it were not there when the minibuffer is not in use. The -minibuffer window is just like the others; you can switch to another -window with @kbd{C-x o}, edit text in other windows, and perhaps even -visit more files before returning to the minibuffer to submit the -argument. You can kill text in another window, return to the minibuffer -window, and then yank the text to use it in the argument. @xref{Windows}. - - There are, however, some restrictions on the use of the minibuffer window. -You cannot switch buffers in it---the minibuffer and its window are -permanently attached. You also cannot split or kill the minibuffer -window, but you can make it taller with @kbd{C-x ^}. +you can't use it to insert a newline in the minibuffer. To do that, +type @kbd{C-o} or @kbd{C-q C-j}. (Recall that a newline is really the +character control-J.) + + The minibuffer has its own window which always has space on the screen +but acts as if it were not there when the minibuffer is not in use. +When the minibuffer is in use, its window is just like the others; you +can switch to another window with @kbd{C-x o}, edit text in other +windows and perhaps even visit more files, before returning to the +minibuffer to submit the argument. You can kill text in another window, +return to the minibuffer window, and then yank the text to use it in the +argument. @xref{Windows}. + + There are some restrictions on the use of the minibuffer window, +however. You cannot switch buffers in it---the minibuffer and its +window are permanently attached. Also, you cannot split or kill the +minibuffer window. But you can make it taller in the normal fashion with +@kbd{C-x ^}. @kindex C-M-v - If you are in the minibuffer and issue a command that displays help -text in another window, that window will be scrolled if you type -@kbd{M-C-v} while in the minibuffer until you exit the minibuffer. This -feature is helpful if a completing minibuffer gives you a long list of -possible completions. + If while in the minibuffer you issue a command that displays help text +of any sort in another window, you can use the @kbd{C-M-v} command while +in the minibuffer to scroll the help text. This lasts until you exit +the minibuffer. This feature is especially useful if a completing +minibuffer gives you a list of possible completions. @xref{Other Window}. +@vindex minibuffer-confirm-incomplete If the variable @code{minibuffer-confirm-incomplete} is @code{t}, you are asked for confirmation if there is no known completion for the text you typed. For example, if you attempted to visit a non-existent file, the minibuffer might read: @example - Find File:chocolate_bar.c [no completions, confirm] + Find File: chocolate_bar.c [no completions, confirm] @end example If you press @kbd{Return} again, that confirms the filename. Otherwise, you can continue editing it. - Emacs supports recursive use of the minibuffer. However, it is -easy to do this by accident (because of autorepeating keyboards, for -example) and get confused. Therefore, most Emacs commands that use the -minibuffer refuse to operate if the minibuffer window is selected. If the -minibuffer is active but you have switched to a different window, recursive -use of the minibuffer is allowed---if you know enough to try to do this, -you probably will not get confused. + XEmacs supports recursive use of the minibuffer. However, it is easy +to do this by accident (because of autorepeating keyboards, for example) +and get confused. Therefore, most XEmacs commands that use the +minibuffer refuse to operate if the minibuffer window is selected. If +the minibuffer is active but you have switched to a different window, +recursive use of the minibuffer is allowed---if you know enough to try +to do this, you probably will not get confused. @vindex enable-recursive-minibuffers - If you set the variable @code{enable-recursive-minibuffers} to be + If you set the variable @code{enable-recursive-minibuffers} to a non-@code{nil}, recursive use of the minibuffer is always allowed. -@node Completion, Repetition, Minibuffer Edit, Minibuffer +@node Completion, Minibuffer History, Minibuffer Edit, Minibuffer @section Completion @cindex completion - When appropriate, the minibuffer provides a @dfn{completion} facility. -You type the beginning of an argument and one of the completion keys, -and Emacs visibly fills in the rest, depending on what you have already -typed. + For certain kinds of arguments, you can use @dfn{completion} to enter +the argument value. Completion means that you type part of the +argument, then XEmacs visibly fills in the rest, or as much as +can be determined from the part you have typed. When completion is available, certain keys---@key{TAB}, @key{RET}, and -@key{SPC}---are redefined to complete an abbreviation present in the +@key{SPC}---are rebound to complete the text present in the minibuffer into a longer string that it stands for, by matching it against a set of @dfn{completion alternatives} provided by the command reading the argument. @kbd{?} is defined to display a list of possible completions of what you have inserted. - For example, when the minibuffer is being used by @kbd{Meta-x} to read -the name of a command, it is given a list of all available Emacs command -names to complete against. The completion keys match the text in the -minibuffer against all the command names, find any additional characters of -the name that are implied by the ones already present in the minibuffer, -and add those characters to the ones you have given. - - Case is normally significant in completion because it is significant in -most of the names that you can complete (buffer names, file names, and -command names). Thus, @samp{fo} will not complete to @samp{Foo}. When you -are completing a name in which case does not matter, case may be ignored -for completion's sake if specified by program. + For example, when @kbd{M-x} uses the minibuffer to read the name of a +command, it provides a list of all available XEmacs command names to +complete against. The completion keys match the text in the minibuffer +against all the command names, find any additional name characters +implied by the ones already present in the minibuffer, and add those +characters to the ones you have given. This is what makes it possible +to type @kbd{M-x inse @key{SPC} b @key{RET}} instead of @kbd{M-x +insert-buffer @key{RET}} (for example). + + Case is normally significant in completion because it is significant +in most of the names that you can complete (buffer names, file names and +command names). Thus, @samp{fo} does not complete to @samp{Foo}. When +you are completing a name in which case does not matter, case may be +ignored for completion's sake if specified by program. When a completion list is displayed, the completions will highlight as you move the mouse over them. Clicking the middle mouse button on any highlighted completion will ``select'' it just as if you had typed it in and hit @key{RET}. -@subsection A Completion Example +@menu +* Example: Completion Example. +* Commands: Completion Commands. +* Strict Completion:: +* Options: Completion Options. +@end menu + +@node Completion Example, Completion Commands, Completion, Completion +@subsection Completion Example @kindex TAB @findex minibuffer-complete - Consider the following example. If you type @kbd{Meta-x au @key{TAB}}, -@key{TAB} looks for alternatives (in this case, command names) that -start with @samp{au}. There are only two commands: @code{auto-fill-mode} and -@code{auto-save-mode}. They are the same as far as @code{auto-}, so the -@samp{au} in the minibuffer changes to @samp{auto-}.@refill - - If you type @key{TAB} again immediately, there are multiple possibilities -for the very next character---it could be @samp{s} or @samp{f}---so no more -characters are added; but a list of all possible completions is displayed -in another window. + A concrete example may help here. If you type @kbd{M-x au @key{TAB}}, +the @key{TAB} looks for alternatives (in this case, command names) that +start with @samp{au}. There are several, including +@code{auto-fill-mode} and @code{auto-save-mode}---but they are all the +same as far as @code{auto}, so the @samp{au} in the minibuffer changes +to @samp{auto}. + + If you type @key{TAB} again immediately, there are multiple +possibilities for the very next character---it could be any of +@samp{c-}---so no more characters are added; instead, @key{TAB} +displays a list of all possible completions in another window. If you go on to type @kbd{f @key{TAB}}, this @key{TAB} sees @samp{auto-f}. The only command name starting this way is -@code{auto-fill-mode}, so completion inserts the rest of that command. You -now have @samp{auto-fill-mode} in the minibuffer after typing just @kbd{au -@key{TAB} f @key{TAB}}. Note that @key{TAB} has this effect because in the -minibuffer it is bound to the function @code{minibuffer-complete} when -completion is supposed to be done.@refill +@code{auto-fill-mode}, so completion fills in the rest of that. You now +have @samp{auto-fill-mode} in the minibuffer after typing just @kbd{au +@key{TAB} f @key{TAB}}. Note that @key{TAB} has this effect because in +the minibuffer it is bound to the command @code{minibuffer-complete} +when completion is available. +@node Completion Commands, Strict Completion, Completion Example, Completion @subsection Completion Commands - Here is a list of all the completion commands defined in the minibuffer + Here is a list of the completion commands defined in the minibuffer when completion is available. @table @kbd @item @key{TAB} -Complete the text in the minibuffer as much as possible @* +Complete the text in the minibuffer as much as possible (@code{minibuffer-complete}). @item @key{SPC} -Complete the text in the minibuffer but don't add or fill out more -than one word (@code{minibuffer-complete-word}). +Complete the minibuffer text, but don't go beyond one word +(@code{minibuffer-complete-word}). @item @key{RET} Submit the text in the minibuffer as the argument, possibly completing first as described below (@code{minibuffer-complete-and-exit}). @@ -244,14 +265,51 @@ highlighted completion and exit the minibuffer. @kindex SPC @findex minibuffer-complete-word -@key{SPC} completes in a way that is similar to @key{TAB}, but it never -goes beyond the next hyphen or space. If you have @samp{auto-f} in the -minibuffer and type @key{SPC}, it finds that the completion is - @samp{auto-fill-mode}, but it stops completing after @samp{fill-}. -The result is @samp{auto-fill-}. Another @key{SPC} at this point -completes all the way to @samp{auto-fill-mode}. @key{SPC} in the -minibuffer runs the function @code{minibuffer-complete-word} when -completion is available.@refill + @key{SPC} completes much like @key{TAB}, but never goes beyond the +next hyphen or space. If you have @samp{auto-f} in the minibuffer and +type @key{SPC}, it finds that the completion is @samp{auto-fill-mode}, +but it stops completing after @samp{fill-}. This gives +@samp{auto-fill-}. Another @key{SPC} at this point completes all the +way to @samp{auto-fill-mode}. @key{SPC} in the minibuffer when +completion is available runs the command +@code{minibuffer-complete-word}. + + Here are some commands you can use to choose a completion from a +window that displays a list of completions: + +@table @kbd +@findex mouse-choose-completion +@item button2up +Clicking mouse button 2 on a completion in the list of possible +completions chooses that completion (@code{mouse-choose-completion}). +You normally use this command while point is in the minibuffer; but you +must click in the list of completions, not in the minibuffer itself. + +@findex choose-completion +@item @key{RET} +Typing @key{RET} @emph{in the completion list buffer} chooses the +completion that point is in or next to (@code{choose-completion}). To +use this command, you must first switch windows to the window that shows +the list of completions. + +@findex next-list-mode-item +@item @key{RIGHT} +@itemx @key{TAB} +@itemx C-f +Typing the right-arrow key @key{RIGHT}, @key{TAB} or @kbd{C-f} @emph{in +the completion list buffer} moves point to the following completion +(@code{next-list-mode-item}). + +@findex previous-list-mode-item +@item @key{LEFT} +@itemx C-b +Typing the left-arrow key @key{LEFT} or @kbd{C-b} @emph{in the +completion list buffer} moves point toward the beginning of the buffer, +to the previous completion (@code{previous-list-mode-item}). +@end table + +@node Strict Completion, Completion Options, Completion Commands, Completion +@subsection Strict Completion There are three different ways that @key{RET} can work in completing minibuffers, depending on how the argument will be used. @@ -276,7 +334,7 @@ Cautious completion is used for reading file names for files that must already exist. @item -@dfn{Permissive} completion is used when any string is +@dfn{Permissive} completion is used when any string whatever is meaningful, and the list of completion alternatives is just a guide. For example, when @kbd{C-x C-f} reads the name of a file to visit, any file name is allowed, in case you want to create a file. In @@ -284,21 +342,26 @@ permissive completion, @key{RET} takes the text in the minibuffer exactly as given, without completing it. @end itemize - The completion commands display a list of all possible completions in a -window whenever there is more than one possibility for the very next -character. Typing @kbd{?} explicitly requests such a list. The -list of completions counts as help text, so @kbd{C-M-v} typed in the -minibuffer scrolls the list. + The completion commands display a list of all possible completions in +a window whenever there is more than one possibility for the very next +character. Also, typing @kbd{?} explicitly requests such a list. If +the list of completions is long, you can scroll it with @kbd{C-M-v} +(@pxref{Other Window}). + +@node Completion Options, , Strict Completion, Completion +@subsection Completion Options @vindex completion-ignored-extensions When completion is done on file names, certain file names are usually -ignored. The variable @code{completion-ignored-extensions} contains a list -of strings; a file whose name ends in any of those strings is ignored as a -possible completion. The standard value of this variable has several -elements including @code{".o"}, @code{".elc"}, @code{".dvi"} and @code{"~"}. -The effect is that, for example, @samp{foo} completes to @samp{foo.c} -even though @samp{foo.o} exists as well. If the only possible completions -are files that end in ``ignored'' strings, they are not ignored.@refill +ignored. The variable @code{completion-ignored-extensions} contains a +list of strings; a file whose name ends in any of those strings is +ignored as a possible completion. The standard value of this variable +has several elements including @code{".o"}, @code{".elc"}, @code{".dvi"} +and @code{"~"}. The effect is that, for example, @samp{foo} can +complete to @samp{foo.c} even though @samp{foo.o} exists as well. +However, if @emph{all} the possible completions end in ``ignored'' +strings, then they are not ignored. Ignored extensions do not apply to +lists of completions---those always mention all possible completions. @vindex completion-auto-help If a completion command finds the next character is undetermined, it @@ -312,47 +375,135 @@ then in contexts where @code{completing-read} allows answers that are not valid completions, an extra @key{RET} must be typed to confirm the response. This is helpful for catching typos. -@node Repetition,, Completion, Minibuffer +@node Minibuffer History, Repetition, Completion, Minibuffer +@section Minibuffer History +@cindex minibuffer history +@cindex history of minibuffer input + + Every argument that you enter with the minibuffer is saved on a +@dfn{minibuffer history list} so that you can use it again later in +another argument. Special commands load the text of an earlier argument +in the minibuffer. They discard the old minibuffer contents, so you can +think of them as moving through the history of previous arguments. + +@table @kbd +@item @key{UP} +@itemx M-p +Move to the next earlier argument string saved in the minibuffer history +(@code{previous-history-element}). +@item @key{DOWN} +@itemx M-n +Move to the next later argument string saved in the minibuffer history +(@code{next-history-element}). +@item M-r @var{regexp} @key{RET} +Move to an earlier saved argument in the minibuffer history that has a +match for @var{regexp} (@code{previous-matching-history-element}). +@item M-s @var{regexp} @key{RET} +Move to a later saved argument in the minibuffer history that has a +match for @var{regexp} (@code{next-matching-history-element}). +@end table + +@kindex M-p @r{(minibuffer history)} +@kindex M-n @r{(minibuffer history)} +@findex next-history-element +@findex previous-history-element + The simplest way to reuse the saved arguments in the history list is +to move through the history list one element at a time. While in the +minibuffer, use @kbd{M-p} or up-arrow (@code{previous-history-element}) +to ``move to'' the next earlier minibuffer input, and use @kbd{M-n} or +down-arrow (@code{next-history-element}) to ``move to'' the next later +input. + + The previous input that you fetch from the history entirely replaces +the contents of the minibuffer. To use it as the argument, exit the +minibuffer as usual with @key{RET}. You can also edit the text before +you reuse it; this does not change the history element that you +``moved'' to, but your new argument does go at the end of the history +list in its own right. + + For many minibuffer arguments there is a ``default'' value. In some +cases, the minibuffer history commands know the default value. Then you +can insert the default value into the minibuffer as text by using +@kbd{M-n} to move ``into the future'' in the history. + +@findex previous-matching-history-element +@findex next-matching-history-element +@kindex M-r @r{(minibuffer history)} +@kindex M-s @r{(minibuffer history)} + There are also commands to search forward or backward through the +history; they search for history elements that match a regular +expression that you specify with the minibuffer. @kbd{M-r} +(@code{previous-matching-history-element}) searches older elements in +the history, while @kbd{M-s} (@code{next-matching-history-element}) +searches newer elements. By special dispensation, these commands can +use the minibuffer to read their arguments even though you are already +in the minibuffer when you issue them. As with incremental searching, +an uppercase letter in the regular expression makes the search +case-sensitive (@pxref{Search Case}). + + All uses of the minibuffer record your input on a history list, but +there are separate history lists for different kinds of arguments. For +example, there is a list for file names, used by all the commands that +read file names. + + There are several other very specific history lists, including one for +command names read by @kbd{M-x}, one for buffer names, one for arguments +of commands like @code{query-replace}, and one for compilation commands +read by @code{compile}. Finally, there is one ``miscellaneous'' history +list that most minibuffer arguments use. + +@c Do wee need this? +@ignore +@vindex history-length + The variable @code{history-length} specifies the maximum length of a +minibuffer history list; once a list gets that long, the oldest element +is deleted each time an element is added. If the value of +@code{history-length} is @code{t}, though, there is no maximum length +and elements are never deleted. +@end ignore + +@node Repetition, , Minibuffer History, Minibuffer @section Repeating Minibuffer Commands @cindex command history @cindex history of commands Every command that uses the minibuffer at least once is recorded on a -special history list, together with the values of the minibuffer arguments, -so that you can repeat the command easily. In particular, every -use of @kbd{Meta-x} is recorded, since @kbd{M-x} uses the minibuffer to -read the command name. +special history list, together with the values of its arguments, so that +you can repeat the entire command. In particular, every use of +@kbd{M-x} is recorded there, since @kbd{M-x} uses the minibuffer to read +the command name. @findex list-command-history @c widecommands @table @kbd -@item C-x @key{ESC} -Re-execute a recent minibuffer command @*(@code{repeat-complex-command}). +@item C-x @key{ESC} @key{ESC} +Re-execute a recent minibuffer command (@code{repeat-complex-command}). @item M-p Within @kbd{C-x @key{ESC}}, move to previous recorded command (@code{previous-history-element}). @item M-n Within @kbd{C-x @key{ESC}}, move to the next (more recent) recorded -command (@code{next-history-element}).@refill +command (@code{next-history-element}). @item M-x list-command-history Display the entire command history, showing all the commands -@kbd{C-x @key{ESC}} can repeat, most recent first.@refill +@kbd{C-x @key{ESC} @key{ESC}} can repeat, most recent first. @end table -@kindex C-x ESC +@kindex C-x ESC ESC @findex repeat-complex-command - @kbd{C-x @key{ESC}} is used to re-execute a recent command that used -the minibuffer. With no argument, it repeats the last command. A numeric -argument specifies which command to repeat; 1 means the last one, and -larger numbers specify earlier commands. - - @kbd{C-x @key{ESC}} works by turning the previous command into a Lisp -expression and then entering a minibuffer initialized with the text for -that expression. If you type just @key{RET}, the command is repeated as -before. You can also change the command by editing the Lisp expression. -The expression you finally submit will be executed. The repeated -command is added to the front of the command history unless it is -identical to the most recently executed command already there. + @kbd{C-x @key{ESC} @key{ESC}} is used to re-execute a recent +minibuffer-using command. With no argument, it repeats the last such +command. A numeric argument specifies which command to repeat; one +means the last one, and larger numbers specify earlier ones. + + @kbd{C-x @key{ESC} @key{ESC}} works by turning the previous command +into a Lisp expression and then entering a minibuffer initialized with +the text for that expression. If you type just @key{RET}, the command +is repeated as before. You can also change the command by editing the +Lisp expression. Whatever expression you finally submit is what will be +executed. The repeated command is added to the front of the command +history unless it is identical to the most recently executed command +already there. Even if you don't understand Lisp syntax, it will probably be obvious which command is displayed for repetition. If you do not change the text, @@ -362,17 +513,17 @@ you can be sure the command will repeat exactly as before. @kindex M-p @findex next-complex-command @findex previous-complex-command - If you are in the minibuffer for @kbd{C-x @key{ESC}} and the command shown -to you is not the one you want to repeat, you can move around the list of -previous commands using @kbd{M-n} and @kbd{M-p}. @kbd{M-p} replaces the -contents of the minibuffer with the next earlier recorded command, and -@kbd{M-n} replaces it with the next later command. After finding the -desired previous command, you can edit its expression and then -resubmit it by typing @key{RET}. Any editing you have done on the -command to be repeated is lost if you use @kbd{M-n} or @kbd{M-p}. - -@kbd{M-n} and @kbd{M-p} are specially defined within @kbd{C-x @key{ESC}} -to run the commands @code{previous-history-element} and + If you are in the minibuffer for @kbd{C-x @key{ESC} @key{ESC}} and the +command shown to you is not the one you want to repeat, you can move +around the list of previous commands using @kbd{M-n} and @kbd{M-p}. +@kbd{M-p} replaces the contents of the minibuffer with the next earlier +recorded command, and @kbd{M-n} replaces it with the next later command. +After finding the desired previous command, you can edit its expression +and then resubmit it by typing @key{RET}. Any editing you have done on +the command to be repeated is lost if you use @kbd{M-n} or @kbd{M-p}. + +@kbd{M-n} and @kbd{M-p} are specially defined within @kbd{C-x @key{ESC} +@key{ESC}} to run the commands @code{previous-history-element} and @code{next-history-element}. @vindex command-history diff --git a/man/xemacs/regs.texi b/man/xemacs/regs.texi index 9435e1e..fe7810f 100644 --- a/man/xemacs/regs.texi +++ b/man/xemacs/regs.texi @@ -3,22 +3,20 @@ @chapter Registers @cindex registers - Emacs @dfn{registers} are places in which you can save text or -positions for later use. Text saved in a register can be copied into -the buffer once or many times; a position saved in a register is used by -moving point to that position. Rectangles can also be copied into and -out of registers (@pxref{Rectangles}). + XEmacs @dfn{registers} are places in which you can save text or +positions for later use. Once you save text or a rectangle in a +register, you can copy it into the buffer once or many times; a position +saved in a register is used by moving point to that position. +Rectangles can also be copied into and out of registers +(@pxref{Rectangles}). - Each register has a name, which is a single character. A register can -store either a piece of text, a position, or a rectangle, but only one -thing at any given time. Whatever you store in a register remains -there until you store something else in that register. - -@menu -* RegPos:: Saving positions in registers. -* RegText:: Saving text in registers. -* RegRect:: Saving rectangles in registers. -@end menu +@findex view-register + Each register has a name which is a single character. A register can +store a piece of text, a rectangle, a position, a window configuration, +or a file name, but only one thing at any given time. Whatever you +store in a register remains there until you store something else in that +register. To see what a register @var{r} contains, use @kbd{M-x +view-register}. @table @kbd @item M-x view-register @key{RET} @var{r} @@ -29,34 +27,49 @@ Display a description of what register @var{r} contains. @kbd{M-x view-register} reads a register name as an argument and then displays the contents of the specified register. +@menu +* Position: RegPos. Saving positions in registers. +* Text: RegText. Saving text in registers. +* Rectangle: RegRect. Saving rectangles in registers. +* Configurations: RegConfig. Saving window configurations in registers. +* Files: RegFiles. File names in registers. +* Numbers: RegNumbers. Numbers in registers. +* Bookmarks:: Bookmarks are like registers, but persistent. +@end menu + @node RegPos, RegText, Registers, Registers @section Saving Positions in Registers - Saving a position records a spot in a buffer so you can move -back there later. Moving to a saved position re-selects the buffer -and moves point to the spot. + Saving a position records a place in a buffer so that you can move +back there later. Moving to a saved position switches to that buffer +and moves point to that place in it. @table @kbd -@item C-x r SPC @var{r} -Save the location of point in register @var{r} (@code{point-to-register}). +@item C-x r @key{SPC} @var{r} +Save position of point in register @var{r} (@code{point-to-register}). @item C-x r j @var{r} -Jump to the location saved in register @var{r} (@code{register-to-point}). +Jump to the position saved in register @var{r} (@code{jump-to-register}). @end table @kindex C-x r SPC @findex point-to-register - To save the current location of point in a register, choose a name -@var{r} and type @kbd{C-x r SPC @var{r}}. The register @var{r} retains -the location thus saved until you store something else in that -register.@refill + To save the current position of point in a register, choose a name +@var{r} and type @kbd{C-x r @key{SPC} @var{r}}. The register @var{r} +retains the position thus saved until you store something else in that +register. @kindex C-x r j -@findex register-to-point - The command @kbd{C-x r j @var{r}} moves point to the location recorded +@findex jump-to-register + The command @kbd{C-x r j @var{r}} moves point to the position recorded in register @var{r}. The register is not affected; it continues to record the same location. You can jump to the same position using the same register as often as you want. + If you use @kbd{C-x r j} to go to a saved position, but the buffer it +was saved from has been killed, @kbd{C-x r j} tries to create the buffer +again by visiting the same file. Of course, this works only for buffers +that were visiting files. + @node RegText, RegRect, RegPos, Registers @section Saving Text in Registers @@ -65,46 +78,234 @@ can be impractical to use the kill ring, since each subsequent kill moves the piece of text further down on the ring. It becomes hard to keep track of the argument needed to retrieve the same text with @kbd{C-y}. An alternative is to store the text in a register with @kbd{C-x r s} -(@code{copy-to-register}) and then retrieve it with @kbd{C-x r g} +(@code{copy-to-register}) and then retrieve it with @kbd{C-x r i} (@code{insert-register}). @table @kbd @item C-x r s @var{r} Copy region into register @var{r} (@code{copy-to-register}). @item C-x r g @var{r} +@itemx C-x r i @var{r} Insert text contents of register @var{r} (@code{insert-register}). @end table @kindex C-x r s @kindex C-x r g +@kindex C-x r i @findex copy-to-register @findex insert-register @kbd{C-x r s @var{r}} stores a copy of the text of the region into the -register named @var{r}. Given a numeric argument, @kbd{C-x r s} deletes the -text from the buffer as well. +register named @var{r}. Given a numeric argument, @kbd{C-x r s @var{r}} +deletes the text from the buffer as well. - @kbd{C-x r g @var{r}} inserts the text from register @var{r} in the buffer. -By default it leaves point before the text and places the mark after it. -With a numeric argument, it puts point after the text and the mark -before it. + @kbd{C-x r i @var{r}} inserts the text from register @var{r} in the buffer. +By default it leaves point before the text and places the mark after +it. With a numeric argument (@kbd{C-u}), it puts point after the text +and the mark before it. -@node RegRect,, RegText, Registers +@node RegRect, RegConfig, RegText, Registers @section Saving Rectangles in Registers @cindex rectangle -@findex copy-region-to-rectangle A register can contain a rectangle instead of lines of text. The rectangle is represented as a list of strings. @xref{Rectangles}, for basic information on rectangles and how to specify rectangles in a buffer. @table @kbd +@findex copy-rectangle-to-register +@kindex C-x r r @item C-x r r @var{r} -Copy the region-rectangle into register @var{r}(@code{copy-rectangle-to-register}). -With a numeric argument, delete it as well. +Copy the region-rectangle into register @var{r} +(@code{copy-rectangle-to-register}). With a numeric argument, delete it +as well. @item C-x r g @var{r} +@itemx C-x r i @var{r} Insert the rectangle stored in register @var{r} (if it contains a rectangle) (@code{insert-register}). @end table - The @kbd{C-x r g} command inserts linear text if the register contains + The @kbd{C-x r i @var{r}} command inserts linear text if the register + contains that, or inserts a rectangle if the register contains one. + + See also the command @code{sort-columns}, which you can think of +as sorting a rectangle. @xref{Sorting}. + +@node RegConfig, RegNumbers, RegRect, Registers +@section Saving Window Configurations in Registers + +@findex window-configuration-to-register +@findex frame-configuration-to-register +@kindex C-x r w +@c @kindex C-x r f + You can save the window configuration of the selected frame in a +register, or even the configuration of all windows in all frames, and +restore the configuration later. + +@table @kbd +@item C-x r w @var{r} +Save the state of the selected frame's windows in register @var{r} +(@code{window-configuration-to-register}). +@c @item C-x r f @var{r} +@item M-x frame-configuration-to-register @key{RET} @var{r} +Save the state of all frames, including all their windows, in register +@var{r} (@code{frame-configuration-to-register}). +@end table + + Use @kbd{C-x r j @var{r}} to restore a window or frame configuration. +This is the same command used to restore a cursor position. When you +restore a frame configuration, any existing frames not included in the +configuration become invisible. If you wish to delete these frames +instead, use @kbd{C-u C-x r j @var{r}}. + +@node RegNumbers, RegFiles, RegConfig, Registers +@section Keeping Numbers in Registers + + There are commands to store a number in a register, to insert +the number in the buffer in decimal, and to increment it. These commands +can be useful in keyboard macros (@pxref{Keyboard Macros}). + +@table @kbd +@item C-u @var{number} C-x r n @var{reg} +@kindex C-x r n +@findex number-to-register +Store @var{number} into register @var{reg} (@code{number-to-register}). +@item C-u @var{number} C-x r + @var{reg} +@kindex C-x r + +@findex increment-register +Increment the number in register @var{reg} by @var{number} +(@code{increment-register}). +@item C-x r g @var{reg} +Insert the number from register @var{reg} into the buffer. +@end table + + @kbd{C-x r g} is the same command used to insert any other +sort of register contents into the buffer. + +@node RegFiles, Bookmarks, RegNumbers, Registers +@section Keeping File Names in Registers + + If you visit certain file names frequently, you can visit them more +conveniently if you put their names in registers. Here's the Lisp code +used to put a file name in a register: + +@smallexample +(set-register ?@var{r} '(file . @var{name})) +@end smallexample + +@need 3000 +@noindent +For example, + +@smallexample +(set-register ?z '(file . "/usr/src/xemacs/src/ChangeLog")) +@end smallexample + +@noindent +puts the file name shown in register @samp{z}. + + To visit the file whose name is in register @var{r}, type @kbd{C-x r j +@var{r}}. (This is the same command used to jump to a position or +restore a frame configuration.) + +@node Bookmarks, , RegFiles, Registers +@section Bookmarks +@cindex bookmarks + + @dfn{Bookmarks} are somewhat like registers in that they record +positions you can jump to. Unlike registers, they have long names, and +they persist automatically from one Emacs session to the next. The +prototypical use of bookmarks is to record ``where you were reading'' in +various files. + + Note: bookmark.el is distributed in edit-utils package. You need to +install that to use bookmark facility (@pxref{Packages}). + +@table @kbd +@item C-x r m @key{RET} +Set the bookmark for the visited file, at point. + +@item C-x r m @var{bookmark} @key{RET} +@findex bookmark-set +Set the bookmark named @var{bookmark} at point (@code{bookmark-set}). + +@item C-x r b @var{bookmark} @key{RET} +@findex bookmark-jump +Jump to the bookmark named @var{bookmark} (@code{bookmark-jump}). + +@item C-x r l +@findex list-bookmarks +List all bookmarks (@code{list-bookmarks}). + +@item M-x bookmark-save +@findex bookmark-save +Save all the current bookmark values in the default bookmark file. +@end table + +@kindex C-x r m +@findex bookmark-set +@kindex C-x r b +@findex bookmark-jump + The prototypical use for bookmarks is to record one current position +in each of several files. So the command @kbd{C-x r m}, which sets a +bookmark, uses the visited file name as the default for the bookmark +name. If you name each bookmark after the file it points to, then you +can conveniently revisit any of those files with @kbd{C-x r b}, and move +to the position of the bookmark at the same time. + +@kindex C-x r l + To display a list of all your bookmarks in a separate buffer, type +@kbd{C-x r l} (@code{list-bookmarks}). If you switch to that buffer, +you can use it to edit your bookmark definitions or annotate the +bookmarks. Type @kbd{C-h m} in that buffer for more information about +its special editing commands. + + When you kill XEmacs, XEmacs offers to save your bookmark values in +your default bookmark file, @file{~/.emacs.bmk}, if you have changed any +bookmark values. You can also save the bookmarks at any time with the +@kbd{M-x bookmark-save} command. The bookmark commands load your +default bookmark file automatically. This saving and loading is how +bookmarks persist from one XEmacs session to the next. + +@vindex bookmark-save-flag + If you set the variable @code{bookmark-save-flag} to 1, then each +command that sets a bookmark will also save your bookmarks; this way, +you don't lose any bookmark values even if XEmacs crashes. (The value, +if a number, says how many bookmark modifications should go by between +saving.) + +@vindex bookmark-search-size + Bookmark position values are saved with surrounding context, so that +@code{bookmark-jump} can find the proper position even if the file is +modified slightly. The variable @code{bookmark-search-size} says how +many characters of context to record, on each side of the bookmark's +position. + + Here are some additional commands for working with bookmarks: + +@table @kbd +@item M-x bookmark-load @key{RET} @var{filename} @key{RET} +@findex bookmark-load +Load a file named @var{filename} that contains a list of bookmark +values. You can use this command, as well as @code{bookmark-write}, to +work with other files of bookmark values in addition to your default +bookmark file. + +@item M-x bookmark-write @key{RET} @var{filename} @key{RET} +@findex bookmark-write +Save all the current bookmark values in the file @var{filename}. + +@item M-x bookmark-delete @key{RET} @var{bookmark} @key{RET} +@findex bookmark-delete +Delete the bookmark named @var{bookmark}. + +@item M-x bookmark-insert-location @key{RET} @var{bookmark} @key{RET} +@findex bookmark-insert-location +Insert in the buffer the name of the file that bookmark @var{bookmark} +points to. + +@item M-x bookmark-insert @key{RET} @var{bookmark} @key{RET} +@findex bookmark-insert +Insert in the buffer the @emph{contents} of the file that bookmark +@var{bookmark} points to. +@end table diff --git a/man/xemacs/xemacs.texi b/man/xemacs/xemacs.texi index 0ad18f7..cbbf13c 100644 --- a/man/xemacs/xemacs.texi +++ b/man/xemacs/xemacs.texi @@ -90,9 +90,8 @@ translation approved by the author instead of in the original English. @page @ifinfo @node Top, License,, (dir) +@top The XEmacs Editor -The XEmacs Editor -***************** XEmacs is the extensible, customizable, self-documenting real-time display editor. This Info file describes how to edit with Emacs diff --git a/nt/ChangeLog b/nt/ChangeLog index 993621f..dcf8740 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,23 @@ +2000-01-18 Martin Buchholz + + * XEmacs 21.2.27 is released. + +2000-01-18 Martin Buchholz + + * minitar.c: Errno.h --> errno.h. Remove errno declaration. + +2000-01-13 Kirill 'Big K' Katsnelson + + * xemacs.mak: Added USE_PORTABLE_DUMPER make command line macro. + (temacs:) Added dependency for lastfile.lib so that 'make temacs' + builds it first. + +1999-12-28 Scott Blachowicz + + * minitar.mak: Add vars to allow building from main xemacs.mak. + + * xemacs.mak: Add rules to build & install minitar. + 1999-12-31 Martin Buchholz * XEmacs 21.2.26 is released. diff --git a/nt/config.h b/nt/config.h index e012c18..7571782 100644 --- a/nt/config.h +++ b/nt/config.h @@ -611,16 +611,8 @@ on various systems. */ /* Should movemail use hesiod for getting POP server host? */ #undef HESIOD /* Determine type of mail locking. */ -/* Play preprocessor games so that configure options override s&m files */ -#undef REAL_MAIL_USE_LOCKF -#undef REAL_MAIL_USE_FLOCK -#undef MAIL_USE_LOCKF -#undef MAIL_USE_FLOCK -#ifdef REAL_MAIL_USE_FLOCK -#define MAIL_USE_FLOCK -#endif -#ifdef REAL_MAIL_USE_LOCKF -#define MAIL_USE_LOCKF -#endif +#undef MAIL_LOCK_LOCKF +#undef REAL_LOCK_FLOCK +#undef MAIL_LOCK_DOT #endif /* _SRC_CONFIG_H_ */ diff --git a/nt/minitar.c b/nt/minitar.c index 75127f6..2fa8b52 100644 --- a/nt/minitar.c +++ b/nt/minitar.c @@ -13,7 +13,7 @@ #include -#include +#include #include @@ -43,7 +43,6 @@ int makepath(char *path) { char tmp[MAXNAMELEN]; char *cp; - extern int errno; for (cp=path; cp; cp = (char*)strchr(cp+1,'/')){ if (!*cp) diff --git a/nt/minitar.mak b/nt/minitar.mak index 6218f56..50e5c0d 100644 --- a/nt/minitar.mak +++ b/nt/minitar.mak @@ -1,10 +1,12 @@ ZLIB=\path\to\zlib +LIB_SRC=. +NT=. -all: minitar.exe +all: $(LIB_SRC)\minitar.exe -minitar.exe: minitar.obj - cl -o minitar.exe minitar.obj $(ZLIB)\zlib.lib +$(LIB_SRC)\minitar.exe: $(LIB_SRC)\minitar.obj + cl -o $@ $(LIB_SRC)\minitar.obj $(ZLIB)\zlib.lib -minitar.obj: minitar.c - cl -c minitar.c -I $(ZLIB) +$(LIB_SRC)\minitar.obj: $(NT)\minitar.c + cl -Fo$@ -c $(NT)\minitar.c -I $(ZLIB) diff --git a/nt/xemacs.mak b/nt/xemacs.mak index 9090b73..e04f1c3 100644 --- a/nt/xemacs.mak +++ b/nt/xemacs.mak @@ -129,12 +129,18 @@ DEBUG_XEMACS=0 !if !defined(USE_UNION_TYPE) USE_UNION_TYPE=0 !endif +!if !defined(USE_MINITAR) +USE_MINITAR=1 +!endif !if !defined(USE_MINIMAL_TAGBITS) USE_MINIMAL_TAGBITS=0 !endif !if !defined(USE_INDEXED_LRECORD_IMPLEMENTATION) USE_INDEXED_LRECORD_IMPLEMENTATION=0 !endif +!if !defined(USE_PORTABLE_DUMPER) +USE_PORTABLE_DUMPER=0 +!endif !if !defined(GUNG_HO) GUNG_HO=0 !endif @@ -341,6 +347,10 @@ TAGBITS_DEFINES=-DUSE_MINIMAL_TAGBITS LRECORD_DEFINES=-DUSE_INDEXED_LRECORD_IMPLEMENTATION !endif !if $(USE_UNION_TYPE) +!if $(USE_PORTABLE_DUMPER) +DUMPER_DEFINES=-DPDUMP +!endif + UNION_DEFINES=-DUSE_UNION_TYPE !endif @@ -359,7 +369,7 @@ PATH_DEFINES=-DPATH_PREFIX=\"$(PATH_PREFIX)\" INCLUDES=$(X_INCLUDES) $(MSW_INCLUDES) -I$(XEMACS)\nt\inc -I$(XEMACS)\src -I$(XEMACS)\lwlib DEFINES=$(X_DEFINES) $(MSW_DEFINES) $(MULE_DEFINES) \ - $(TAGBITS_DEFINES) $(LRECORD_DEFINES) $(UNION_DEFINES) \ + $(TAGBITS_DEFINES) $(LRECORD_DEFINES) $(UNION_DEFINES) $(DUMPER_DEFINES)\ -DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN -DWINDOWSNT -Demacs \ -DHAVE_CONFIG_H $(PROGRAM_DEFINES) $(PATH_DEFINES) @@ -428,6 +438,8 @@ $(LIB_SRC)/movemail.exe: $(LIB_SRC)/movemail.c $(LIB_SRC)/pop.c $(ETAGS_DEPS) cd $(LIB_SRC) $(CCV) -I. -I$(XEMACS)/src -I$(XEMACS)/nt/inc $(LIB_SRC_DEFINES) $(CFLAGS) -Fe$@ $** wsock32.lib -link -incremental:no cd $(NT) +$(LIB_SRC)/minitar.exe : $(NT)/minitar.mak $(NT)/minitar.c + nmake -nologo -f minitar.mak ZLIB="$(ZLIB_DIR)" NT="$(NT)" LIB_SRC="$(LIB_SRC)" LIB_SRC_TOOLS = \ $(LIB_SRC)/make-docfile.exe \ @@ -437,6 +449,14 @@ LIB_SRC_TOOLS = \ $(LIB_SRC)/sorted-doc.exe \ $(LIB_SRC)/wakeup.exe \ $(LIB_SRC)/etags.exe +!if $(USE_MINITAR) +LIB_SRC_TOOLS = \ + $(LIB_SRC_TOOLS) \ + $(LIB_SRC)/minitar.exe +!endif + +# Shorthand target +minitar: $(LIB_SRC)/minitar.exe #------------------------------------------------------------------------------ @@ -1142,6 +1162,7 @@ $(DOC): $(LIB_SRC)\make-docfile.exe $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC9) update-elc: + set EMACSBOOTSTRAPMODULEPATH=$(MODULES) set EMACSBOOTSTRAPLOADPATH=$(LISP);$(PACKAGE_PATH) set EMACSBOOTSTRAPMODULEPATH=$(MODULES) $(TEMACS) -batch -l $(TEMACS_DIR)\..\lisp\update-elc.el @@ -1163,7 +1184,7 @@ all: $(XEMACS)\Installation $(OUTDIR)\nul $(LASTFILE) $(LWLIB) \ $(LIB_SRC_TOOLS) $(RUNEMACS) $(TEMACS) update-elc $(DOC) dump-xemacs \ $(LISP)/auto-autoloads.el $(LISP)/custom-load.el info -temacs: $(TEMACS) +temacs: $(LASTFILE) $(TEMACS) # use this rule to install the system install: all @@ -1321,6 +1342,9 @@ XEmacs $(XEMACS_VERSION_STRING) $(xemacs_codename:"=\") configured for `$(EMACS_ !if $(USE_UNION_TYPE) Using union type for Lisp object storage. !endif +!if $(USE_PORTABLE_DUMPER) + Using portable dumper. +!endif !if $(DEBUG_XEMACS) Compiling in extra debug checks. XEmacs will be slow! !endif diff --git a/src/ChangeLog b/src/ChangeLog index c5cda0c..cb61c20 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,8474 +1,202 @@ -1999-12-31 Martin Buchholz +2000-01-18 Martin Buchholz - * XEmacs 21.2.26 is released. + * XEmacs 21.2.27 is released. -1999-12-31 Andy Piper +2000-01-18 Martin Buchholz - * glyphs-x.c (x_widget_instantiate): Avoid X errors calling - XMapWindow() on a NULL pointer X window. + * glyphs-eimage.c (struct tiff_error_struct): + (tiff_error_func): + (tiff_warning_func): + #if HAVE_VSNPRINTF ==> #ifdef HAVE_VSNPRINTF -1999-12-31 Martin Buchholz + * unexmips.c: + * unexhp9k3.c: + * unexfreebsd.c: + * unexec.c: Remove vestigial Lucid C code. + * unexalpha.c: + * unexaix.c: + * termcap.c: + * libsst.c: Ansify. + Remove declarations of errno and strerror(). - * data.c (indirect_function): Use signal_void_function_error(). + * eval.c (Fbacktrace): Small Purify-cation. Fix docstring. - * lisp.h: Modify prototypes for signal_*(). Add SUBR_FUNCTION macro. + * .dbxrc (run-temacs): Use the horrible ${1+"$@"} instead of "$@". - * eval.c (PRIMITIVE_FUNCALL): Optimize. - (signal_void_function_error): return result of Fsignal(). - (signal_invalid_function_error): return result of Fsignal(). - (signal_wrong_number_of_arguments_error): return result of Fsignal(). - (signal_malformed_list_error): Add DOESNT_RETURN. - (signal_malformed_property_list_error): Add DOESNT_RETURN. - (signal_circular_list_error): Add DOESNT_RETURN. - (signal_circular_property_list_error): Add DOESNT_RETURN. - (Feval): Use returned results of signal_*(). Avoids a crash! - (Ffuncall): Use returned results of signal_*(). Avoids the crash: - (setq debug-on-error t) (funcall 'foo) kbd{r42} kbd{RET} - - Only check for fun_nargs < subr_min_args if fun_nargs != max_args. - (function_argcount): Use signal_invalid_function_error(). - (funcall_lambda): Use signal_wrong_number_of_arguments_error(). - Use signal_invalid_function_error(). +2000-01-16 Martin Buchholz -1999-12-28 Andy Piper - - * debug.c: rename debug_loop elements to X_ to avoid name clashes. - - * menubar-x.c (menu_item_descriptor_to_widget_value_1): strdup - string_chars. - (menu_item_descriptor_to_widget_value_1): strdup name. - (pre_activate_callback): strdup name. - - * scrollbar-x.c (scrollbar_instance_to_widget_value): strdup name. - (x_update_scrollbar_instance_status): use free_widget_value_tree. - - * dialog-x.c (maybe_run_dbox_text_callback): strdup name. use - free_widget_value_tree. - (dbox_descriptor_to_widget_value): ditto. - - * gui-x.c (widget_value_unwind): use free_widget_value_tree. - (gui_items_to_widget_values_1): ditto. - (gui_items_to_widget_values): ditto. - (free_popup_widget_value_tree): free name. - -1999-12-27 Andy Piper - - * nt.c (fstat): use get_osfhandle rather than the handle - directly. From Fabrice Popineau. - - * process-nt.c (nt_open_network_stream): take types into account - when warning. From Fabrice Popineau. - -1999-12-24 Martin Buchholz - - * XEmacs 21.2.25 is released. - -1999-12-22 Yoshiki Hayashi - - * syntax.c (vars_of_syntax): Initialize parse-sexp_ignore_comments. - -1999-12-21 Martin Buchholz - - * editfns.c (Fpoint_min): - (Fpoint_min_marker): - (Fpoint_max): - (Fpoint_max_marker): - (Fchar_after): - (Fchar_before): - Docstring fixes. What's a `buffer pointer' anyways? - - * editfns.c (char=): Remove unused and undocumented optional - third BUFFER argument. - - * toolbar.h (DEVICE_SUPPORTS_TOOLBARS_P): - * fns.c (plists_differ): - * elhash.c (HASH_CODE): - * elhash.c (KEYS_EQUAL_P): - * redisplay-output.c (redisplay_move_cursor): - * redisplay.c (create_text_block): - * floatfns.c (Flogb): - * glyphs-msw.c (mswindows_initialize_image_instance_mask): - * glyphs-msw.c (xpm_to_eimage): - * buffer.h (POINT_MARKER_P): - * syntax.c (scan_lists): - * cmdloop.c (Fcommand_loop_1): - * widget.c (Fwidget_apply): - * regex.c (STREQ): - Remove extra parens, esp. of the form ((expr)) - - * floatfns.c (Flogb): Make 64-bit clean. - -1999-12-12 Daniel Pittman - - * configure.in: - * configure.usage: - Clean up Athena widget support: - - Add `with-athena' to select a variant. - - Remove all `athena3d' options. - - Robust detection of Athena libraries and headers. - - Refuse to build with mismatched library and headers. - - Only build a 3d Athena if the user asks for it. - -1999-12-21 Andy Piper - - * redisplay.c (redisplay_frame): check for faces changed when - reseting subwindow caches. - - * glyphs.h (struct ii_keyword_entry): add copy_p. - (struct image_instantiator_methods): add query_geometry_method and - layout_children_method. - (IIFORMAT_VALID_GENERIC_KEYWORD): new macro to take into account - copying characteristics of keywords. - (IIFORMAT_VALID_NONCOPY_KEYWORD): new macro for defining keywords - whose arguments should not be copied by the specifier code. - (image_instance_geometry): new enum for layouts. - (struct Lisp_Image_Instance): re-jig for layouts and update - macros. - - * glyphs.c (string_instantiate): rename variables. - (image_instantiate): add strings to those widgets that are - instantiated per-window. - (image_copy_vector_instantiator): new function for copying glyph - specifier instantiators. - (image_copy_instantiator): ditto. - - * glyphs-x.c (x_update_subwindow): use new face update functions. - (update_widget_face): update to use new lwlib arg functions. - (update_tab_widget_face): new function for updating tab control - label faces. - (x_widget_instantiate): use new face update functions and new - lwlib arg functions. - (x_tab_control_instantiate): ditto. - (x_tab_control_set_property): ditto. - - * glyphs-widget.c (VALID_GUI_KEYWORDS): use NONCOPY keyword for - callbacks and other things that could recurse. - (VALID_GUI_KEYWORDS): - - * event-msw.c: fix cpp stuff for cygwin < b20. - - * config.h.in: move uid_t and friends to before the s&m files so - that they can be used there. - - * Makefile.in.in (debug-temacs): new target that adds emacs - environment before invoking gdb. - - * lwlib.h (_widget_args): new structure for holding widget - args. It is reference counted so that we don't have to copy Xt - args. - (_widget_value): remove widget args. Add reference to widget_args. - - * lwlib.c (free_widget_value_contents): free widget args using - free_widget_value_args. - - * lwlib-Xaw.c (xaw_update_one_widget): use new arg packet. - (xaw_update_one_widget): use XtIsSubclass for determining labels. - - * lwlib.c (lw_add_value_args_to_args): modify to use our reference - counted arg packet. - (lw_add_widget_value_arg): new function. Add an arg to the arg - packet. - (free_widget_value_args): new function. Remove a reference counted - arg packet. - (lw_copy_widget_value_args): new function. Copy reference counted - arg packet. - (merge_widget_value_args): new function. Do a merge of widget - args. - (merge_widget_value): use it. - (copy_widget_value_tree): copy widget args using reference - counting, since we can't easily copy the args we have been given. - - * specifier.h (struct specifier_methods): add copy_instantiator_method. - - * specifier.c (build_up_processed_list): use - copy_instantiator_method if defined. - -1999-12-19 Martin Buchholz - - * fns.c (Ffillarray): Use O(N), not O(N^2) algorithm for strings. - -1999-12-19 Hrvoje Niksic - - * profile.c (sigprof_handler): FUN retrieved from the backtrace - can also be a cons representing anonymous interpreted function. - -1999-12-18 Martin Buchholz - - * fns.c (mapcar1): - (Fmapconcat): - (Fmapcar): - (Fmapvector): - Docstring fixes. Make them consistent with the lispref and ANSI Lisp. - -1999-12-17 Martin Buchholz - - * print.c (print_internal): print ?+ instead of ?\+, etc... - Make printing a little more efficient. - Prevent buffer overflow if sizeof EMACS_INT > 8. - My first 128-bit fix! - -1999-12-14 Karl M. Hegbloom - - * filelock.c (unlock_all_files): GC_CONSP should be CONSP - -1999-12-17 Martin Buchholz - - * database.c: - * window.c: - * event-stream.c: - Remove last vestigial uses of GC_* - - * fns.c (mapcar1): Fix ***THREE*** obscure crashes in one function! - - Two of those involve evil mapping functions that destructively - modify a list being mapped over. - - Any garbage collection when mapping over a string could cause a - crash (typically in mapconcat). - -1999-12-08 Adrian Aichner - - * s\windowsnt.h (DIRECTORY_SEP): Initialize from - `Vdirectory_sep_char'. - - * lisp.h: Add declaration for `Vdirectory_sep_char' to allow - customization of `DIRECTORY_SEP' under native Windows NT. - -1999-12-14 Katsumi Yamaoka - - * buffer.c (Fbury_buffer): Add directions to the docstring. - -1999-12-14 Martin Buchholz - - * XEmacs 21.2.24 is released. - -1999-12-13 Martin Buchholz - - * sound.c (vars_of_sound): Provide esd-sound if HAVE_ESD_SOUND - - * nas.c: Fix compiler warnings. Ansify. C++ compilation support. - -1999-12-13 Kazuyuki IENAGA - - * input-method-xlib.c: Make sure src/ does not use Athena, except - indirectly through lwlib. - -1999-12-13 Gunnar Evermann - - * dbxrc (pobj): Add opaque_ptr, remove opaque_list. - -1999-12-10 Shenghuo ZHU - - * file-coding.c (add_coding_system_to_list_mapper): - - (coding-system-list) should list aliases correctly. - -1999-12-07 Andy Piper - - * fileio.c (vars_of_fileio): directory separator fix from Mike Alexander. - * windowsnt.h (ditto): - -1999-11-27 Adrian Aichner - - * sysfile.h: Encapsulate `fstat' for Windows NT just like stat to - get consistent file modification times. - - * sysdep.h: Declare `wait_for_termination' to use process handle, - not PID, on Windows NT native. - - * sysdep.c (wait_for_termination): Use process handle, not PID, on - Windows NT native. Set exit code correctly on Windows NT. - (sys_subshell): Use process handle, not PID, - on Windows NT native. - (sys_fstat): Add ENCAPSULATE_FSTAT for Windows NT. - - * process-nt.c (nt_create_process): Remove negative pid hack for - Windows 95. - (nt_send_process): Declare vol_proc volatile. - (get_internet_address): warn_when_safe if IP address cannot be - found. - (nt_open_network_stream): warn_when_safe if network stream fails - to open. - - * ntproc.c (create_child): Remove negative pid hack for Windows - 95. Remove incorrect and unnecessary USE_UNION_TYPE handling. - - * nt.c (fstat): Encapsulate for Windows NT just like stat to get - consistent file modification times. - - * callproc.c (call_process_cleanup): Use process handle, not PID, - on Windows NT native. - (Fcall_process_internal): Ditto. Close fd_error in parent. Don't - check for negative pid on Windows NT/9[58]. - -1999-12-07 Martin Buchholz - - * XEmacs 21.2.23 is released. - -1999-12-06 Martin Buchholz - - * events.c (Fcopy_event): Don't copy the lrecord_header. - - * lisp.h (DO_REALLOC): + * mule-charset.c (Fchar_octet): Resurrect from earlier in 1999. Optimize. - Remove redundant parens. - Remove generic hygienic macro comment. - - * lrecord.h (set_lheader_implementation): Remove redundant parens. - -1999-12-05 Martin Buchholz - - * lstream.c (Lstream_adding): - - Never compare a size_t and a possibly negative number. - - Optimize. - -1999-12-05 Kyle Jones - - * lisp/itimer.el: (require 'lisp-float-type). Use - floats directly in itimer-time-difference. - -1999-12-05 Andy Piper - - * redisplay-output.c (redisplay_output_layout): avoid name hiding. - - * gui.h: declare gui_add_item_keywords_to_plist. - - * window.c (Fdelete_window): mark subwindows as changed so that - they can be GC'd if necessary. - -1999-12-02 Jan Vroonhof - - * src/callproc.c (Fcall_process_internal): Be careful in writing - terminating null when copying args. nargs can be < 4. - Idea from Klaus Frank - -1999-11-29 Kyle Jones - - * src/sound.c (Fding): Remove zero initialization of - static variables to avoid crashes on systems that dump - the initialized data segment read-only. - -1999-12-05 Jan Vroonhof - - * glyphs-x.c (convert_EImage_to_XImage): Guard against other - visual classes. From Rasmus Borup Hansen - -1999-12-04 Martin Buchholz - - * lstream.c: (filedesc_reader): - (filedesc_writer): Try number 2: Support broken systems where - return type of read() and write() is different from ssize_t. - - * systty.h: - * sysdep.h: - * sysdep.c: - - Replace macro calls to EMACS_GET_TTY and EMACS_SET_TTY with - function equivalents emacs_get_tty() and emacs_set_tty(). - - Moved prototypes to systty.h, where struct event_tty is defined. - - Renamed bogus `waitp' parameter to `flushp'. - - * lstream.c (filedesc_reader): Support broken systems where return - type of read() is different from ssize_t. - - * events.c (Fcopy_event): Avoid redundant EQ test if event2 is nil. - - * event-stream.c (menu_move_up): Remove redundant if block. - (menu_move_down): Gratuitous rewriting. - (menu_move_left): Work around Cygnus codefusion-990706 compiler bug. - (menu_move_right): Ditto. - - * lrecord.h (copy_lcrecord): - (zero_lcrecord): - Always add parentheses around uses of macro arguments. - - * sysdll.c: #include for exit(). - * unexhp9k800.x: #include for malloc(). - Use proper prototype for Save_Shared_Data(void). - -1999-12-04 Jan Vroonhof - - * src/redisplay.c (point_would_be_visible): Correct for topclip. - -1999-12-02 Hrvoje Niksic - - * lisp.h: Declare Qself_insert_defer_undo. - - * event-stream.c (Fdispatch_event): Get the magic undo thing from - a symbol property, so commands other than self-insert-command can - install it. - (syms_of_event_stream): Define Qself_insert_defer_undo. - -1999-11-30 Martin Buchholz - - * floatfns.c (emacs_rint): Rename rint to emacs_rint, so that - `#undef HAVE_RINT' works. - - * sysdep.h: Fix up prototypes for sys_read_1(), sys_write_1() - -1999-11-25 Andy Piper - - * select-msw.c (Fmswindows_set_clipboard): selection fixes from - Mike Alexander. - (Fmswindows_delete_selection): ditto. - - * redisplay.h (CLASS_REDISPLAY_FLAGS_CHANGEDP): add size_changed. - (GLOBAL_REDISPLAY_FLAGS_CHANGEDP): ditto. - - * redisplay.c (redisplay_device): move size changed to macros in - redisplay.h - (redisplay_without_hooks): ditto. - - * redisplay-output.c (redisplay_output_layout): rename to avoid - name hiding. - - * process-nt.c (struct nt_process_data): mks toolkit fixes from - Mike Alexander. - (nt_create_process): ditto. - (nt_send_process): ditto. - - * nt.c (init_environment): make sure mingw32 gets the cached - system info. - - * gui.h: declare gui_add_item_keywords_to_plist. - - * event-msw.c (mswindows_wnd_proc): Clipboard fixes from Mike - Alexander. - - * console-msw.h: fix cygwin define/header 1.0 problems. - * glyphs-msw.c: ditto. - * ntplay.c: ditto. - * unexcw.c: ditto. - * s/cygwin32/h: ditto. - -1999-11-29 XEmacs Build Bot - - * XEmacs 21.2.22 is released - -1999-11-28 Martin Buchholz - - * XEmacs 21.2.21 is released. - -1999-11-26 Martin Buchholz - - * callproc.c (Fcall_process_internal): - * config.h.in: - * esd.c: - * event-msw.c (ntpipe_slurp_reader): - * event-msw.c (ntpipe_shove_writer): - * event-msw.c (winsock_reader): - * event-msw.c (winsock_writer): - * event-stream.c (dribble_out_event): - * fileio.c: - * fileio.c (Fexpand_file_name): - * glyphs-x.c (write_lisp_string_to_temp_file): - * gpmevent.c (tty_get_foreign_selection): - * lisp.h: Update prototypes. - * lstream.c (Lstream_flush_out): - * lstream.c (Lstream_write_1): - * lstream.c (Lstream_was_blocked_p): - * lstream.c (Lstream_read_more): - * lstream.c (Lstream_read): - * lstream.c (Lstream_fputc): - * lstream.c (make_stdio_output_stream): - * lstream.c (stdio_flusher): - * lstream.c (stdio_closer): - * lstream.c (make_filedesc_output_stream): - * lstream.c (errno_would_block_p): - * lstream.c (filedesc_writer): - * lstream.c (make_lisp_string_input_stream): - * lstream.c (make_fixed_buffer_output_stream): - * lstream.c (fixed_buffer_reader): - * lstream.c (make_resizing_buffer_output_stream): - * lstream.c (make_dynarr_output_stream): - * lstream.c (make_lisp_buffer_output_stream): - * lstream.c (lisp_buffer_reader): - * lstream.h (lstream_implementation): - * md5.c (Fmd5): - * miscplay.h (reset_parsestate): - * process-nt.c (nt_send_process): - * process-unix.c (unix_send_process): - * sound.c: - * sysdep.c (sys_close): - * sysdep.c (sys_read_1): - * sysdep.c (sys_write_1): - * sysfile.h: - * file-coding.c (determine_real_coding_system): - * file-coding.c (Fdetect_coding_region): - * file-coding.c (struct decoding_stream): - * file-coding.c (decoding_reader): - * file-coding.c (Fdecode_coding_region): - * file-coding.c (struct encoding_stream): - * file-coding.c (encoding_reader): - * file-coding.c (Fencode_coding_region): - * file-coding.c (convert_to_external_format): - * file-coding.c (convert_from_external_format): - - Lstream functions mirror Unix98 read(),write(). Therefore use - Unix98 types size_t and ssize_t. - - Try to make Lstream* functions 64-bit clean. Someday someone - may actually want to read from a Lstream with more than 2**32 bytes. - - Add configure support for ssize_t. - - Update all callers of Lstream_read and Lstream_write to - use the new types. - - Fix esd* initiated C++ compile errors. - - Remove comments referring to `fpurge' - we don't want to call it - even if it's there. - - * lisp.h - - Remove some lingering Lucid compiler support. - - * lisp.h - - Add prototype for Fdelete_process. - - * gpmevent.c (Freceive_gpm_event): Remove unused variables. - -1999-11-27 Martin Buchholz - - * Makefile.in.in (depend): Only update `depend' if there were changes. -1999-11-26 Martin Buchholz +2000-01-14 Yoshiki Hayashi - * editfns.c (get_system_name): Remove. - -1999-11-26 Martin Buchholz - - * device-x.c (x_init_device): - - Replace magic number `17' with equivalent expn using sizeof. - - Replace strcmp with marginally more efficient memcmp. - - Avoid using C++ reserved word `class'. - - * file-coding.c (determine_real_coding_system): - - Look for both initial and final -*- cookies. - - Replace EQ (foo, Qnil) with NILP (foo) - - Make searching for cookies more efficient. - - Recognize only rfc 1521 characters in charset names. - -1999-11-22 Kazuyuki IENAGA - - * input-method-xlib.c (IMDestroyCallback): #ifdef'd by - "THIS_IS_X11R6", because it shouldn't be evaluated unless X11R6. - * input-method-xlib.c (IMInstantiateCallback): Ditto. - * input-method-xlib.c (XIM_init_device): Revive XOpenIM function - call for X11R5 systems. - * input-method-xlib.c (XIM_delete_frame): Enabled XDestroyIC() - again because XIM doesn't concern with frame deletion itself. - The XIC will be cleared by XIM when XIM is closing (at XIM destroy - callback). - -1999-10-25 Kazuyuki IENAGA - - * input-method-xlib.c: Added new lisp object Qxim_xlib. - New macro xim_warn(str), xim_warn1(fmt,str) and xim_info(str). - All the valid stderr_out were changed to those macros. - (IMDestroyCallback): Don't test the XIC if the frame is not X - frame. - (IMInstantiateCallback): Treat the client_data as "device" not - "frame" because the caller changed from frame to device. - Here initializes XIM and activates XICs for each frame which - doesn't have XIC. - (XIM_init_device): Register the XIM instantiation callback which - had been performed by XIM_init_frame() before. - (XIM_delete_frame): Added a test for the XIM before clearing XIC. - (XIM_init_frame): Placed an actual code for XIC activation which - was moved from IMInstantiateCallback. - (syms_of_input_method_xlib): New function which includes a symbol - Qxim_xlib that uses in emacs.c. - - * emacs.c: Added a function entry "syms_of_input_method_xlib" for - input_method_xlib. - - * symsinit.h: Added a declaration of "syms_of_input_method_xlib". - -1999-11-05 Robert Pluim - - * emacs.c (shut_down_emacs): Point users to PROBLEMS file - -1999-11-16 Jan Vroonhof - - * redisplay-output.c (compare_runes): Add comments about - results from profiling. - - * redisplay.h (struct rune): Do not use bitfields for members. - (struct rune): Add various comments about further optimizations. - -1999-11-19 Eric Darve - - * abbrev.c (abbrev_oblookup): Check whether wordend <= wordstart - if Vabbrev_start_location is used too. - -1999-10-27 Yoshiki Hayashi - - * file-coding.c (detect_eol_type): Return CR when two - sequential CR are found. - (determine_real_coding_system): Check EOL type when coding: - cookie is found and EOL type is not specified. - Don't assume 8bit char as part of coding: cookie. - -1999-10-26 Yoshiki Hayashi - - * file-coding.c (determine_real_coding_system): Check if - '-*-' exists. End searching for coding: cookie at the end - of line. Check whether character before coding: is space, - tab or ';'. - -1999-11-07 William M. Perry - - * gpmevent.c: Completely rewrote GPM mouse support for linux - console. The TTY console and event stream are modified at run - time, so this code can now be used as a module. - (tty_get_foreign_selection): New function to allow pasting from - other virtual consoles. - (Fgpm_enable): New lisp-visible function to turn GPM on or off - at run time. - - * device-tty.c (tty_asynch_device_change): No longer need to - notify GPM code of window/console height/width changes. - - * console-tty.c (tty_init_console): Removed outdated GPM support - that was part of the console/event code. - - * event-Xt.c (emacs_Xt_select_console): Ditto - - * event-Xt.c (emacs_Xt_unselect_console): Ditto - - * event-unixoid.c (read_event_from_tty_or_stream_desc): Ditto - - * frame-tty.c (console_type_create_frame_tty): Ditto - -1999-11-17 Martin Buchholz - - * nt.c: - * sysdep.c: - * s/mingw32.h: - * s/windowsnt.h: - - Use Unix 98 types uid_t, gid_t, pid_t. - - Define them. - -1999-11-01 Olivier Galibert - - * alloc.c (reinit_alloc_once_early): Move purify_flag init... - * emacs.c (main_1): ...here, to get the correct value even with - the portable dumper. - -1999-11-17 Martin Buchholz - - * lisp.h (BIT_VECTOR_LONG_STORAGE): Add extra parens. It's a macro! - - * tooltalk.c (tt_build_string): Remove extra parens. - * process.c (print_process): Remove extra parens. - * buffer.h (BI_BUF_PTR_BYTE_POS): - (BUF_PTR_BYTE_POS): - (BI_BUF_BYTE_ADDRESS): - (BI_BUF_BYTE_ADDRESS_BEFORE): - (valid_memind_p): - (bytind_to_memind): - (memind_to_bytind): - Remove extra parens. Inline functions are not macros. - - * editfns.c (Fuser_login_name): - (user_login_name): - Use proper type uid_t. - -1999-11-15 Martin Buchholz - - * syntax.c (complex_vars_of_syntax): Make more readable. - (define_standard_syntax): New function. - - * syntax.c (forward-comment): Gradually make XEmacs 64-bit-clean. - -1999-11-14 Martin Buchholz - - * mule-ccl.c (CCL_WRITE_STRING): Fix compiler warnings. - -1999-11-12 Yoshiki Hayashi - - * mule-charset.h (LEADING_BYTE_OFFICIAL_1, LEADING_BYTE_OFFICIAL_2): - New enum type to make sure no gap in the leading byte definition. - -1999-11-11 Yoshiki Hayashi - - * mule-charset.h (LEADING_BYTE_CYRILLIC_ISO_8859_5, - LEADING_BYTE_LATIN_ISO8859_9): Moved to 0x8B and 0x8C - to remove a hole in leading byte definition. - -1999-11-10 Yoshiki Hayashi - - * mule-charset.c (non_ascii_valid_charptr_p): Check if - private charset is defined. - -1999-11-09 Yoshiki Hayashi - - * mule-ccl.c (ccl_driver): Make sure generated sequences - are valid when doing `CCL_WRITE_STRING'. - (ccl-execute-on-string): Pass CCL_MODE_DECODING to ccl_driver. - -1999-11-10 XEmacs Build Bot - - * XEmacs 21.2.20 is released - -1999-11-04 Martin Buchholz - - * mule-ccl.c (ccl_driver): Warning suppression - -1999-11-01 SL Baur - - * emacs.c (main_1): Guard call to reinit_vars_of_debug when not - building a debugged XEmacs. - -1999-10-28 Andreas Jaeger - - * src/emacs.c (main_1): Don't set the malloc hooks if using - DOUG_LEA_MALLOC. - -1999-10-30 Olivier Galibert - - * alloc.c (pdump_dump_rtables): Don't forget to dump the last - registered type. - (pdump): Ditto. - -1999-10-25 Olivier Galibert - - * emacs.c (main_1): Call reinit_vars_of_scrollbar_x. - - * symsinit.h: Declare reinit_vars_of_scrollbar_x. - -1999-10-25 Martin Buchholz - - * redisplay.h (CLASS_RESET_CHANGED_FLAGS): - (GLOBAL_RESET_CHANGED_FLAGS): - (CLASS_REDISPLAY_FLAGS_CHANGEDP): - (RESET_CHANGED_SET_FLAGS): - Fix C++ compile errors/warnings. - These macros were just a tad too clever. - - * process-unix.c (unix_open_network_stream): - * objects-x.c (allocate_nearest_color): - * mule-charset.c (vars_of_mule_charset): - * fileio.c (Ffile_truename): - * file-coding.c (vars_of_file_coding): - Fix compile errors/warnings. - - * alloc.c (xstrdup): Use fact that memcpy returns its first arg. - (allocate_lisp_storage): Simplify. - -1999-10-24 Olivier Galibert - - * conslots.h: Add defines with first and last slot names. - * bufslots.h: Add defines with first and last slot names. - - * buffer.c (common_init_complex_vars_of_buffer): Renamed from - reinit_complex_vars_of_buffer - (reinit_complex_vars_of_buffer): Reset the slots to the dumped - value. - (complex_vars_of_buffer): Dump the slots values. - - * console.c (common_init_complex_vars_of_console): Renamed from - reinit_complex_vars_of_console - (reinit_complex_vars_of_console): Reset the slots to the dumped - value. - (complex_vars_of_console): Dump the slots values. - - * alloc.c: Rename reloc_table to pdump_reloc_table, rt_list to - pdump_rt_list and move them at the beginning of the file. - (gc_sweep): Unmark pdumped objects after the sweep phase. - (pdump_dump_rtables): Change a bare 256 to - last_lrecord_type_index_assigned. Add a separator between the - adresses or lrecords and the ones of C structs in the dump file. - (pdump_load): Cope with the new separator and the renamings. Stop - looking for the hash tables list after it has been found (duh!). - -1999-10-24 Robert Bihlmeyer - - * sound.c: support HAVE_ESD_SOUND - - * miscplay.c: - * miscplay.h: - * linuxplay.c: Move large part of linuxplay to generalized file - miscplay. Make it platform independent. - - * esd.c: New file - -1999-10-24 Adrian Aichner - - * lisp.h (Dynarr_declare): Fix boo-boo. - -1999-10-24 Olivier Galibert - - * process-unix.c (allocate_pty): Fix HAVE_GETPT. - * process.h: Ditto. - -1999-10-24 Jan Vroonhof - - * redisplay.c (start_with_line_at_pixpos): Remove assert(cur_elt - >=0). Handle the cur_elt == 0 case. - -1999-10-24 Jan Vroonhof - - * unexelf.c: Merge Martin's c++ fixes back in - -1999-10-20 Jan Vroonhof - - * unexelf.c (unexec): Only copy the global offset - table from memory on sgi machines. - -1999-08-13 Alexandre Oliva , Vin Shelton - - * unexelf.c: Enable GNU/Linux/alpha to build with gcc 2.95 by - adding support for an sbss section. Get IRIX 5.2 to build using - unexelf.c. - - * m/iris4d.h: Use unexelf.o for unexec. - - * m/iris5d.h: Use unexelf.o for unexec. - -1999-10-24 Jan Vroonhof - - * unexelf.c: Revert to 21.1 version - -1999-08-28 Jan Vroonhof - - * window.c (Fwindow_truncated_p): New function. - -1999-08-25 Jonathan Marten - - * window.c (window_truncation_on): Always return 0 for minibuffer - windows, to enable auto scrolling. - -1999-10-24 Neal Becker - * process.h: Unix98 PTY support - -1999-10-17 Jan Vroonhof - - * fileio.c (Ffile_truename): Do proper mule decoding on - the argument to xrealpath() - -1999-08-19 Stephen Tse - - * process-unix.c (unix_open_network_stream): Add udp network - support; rename variable Qtcpip to Qtcp, parameter family to - protocol for consistency with Qudp. - - * process-nt.c (nt_open_network_stream): Rename variable Qtcpip to - Qtcp, parameter family to protocol for consistency with Qudp. - - * process.c (global_variables): Add a new variable Qudp for udp - network support; rename variable Qtcpip to Qtcp for consistency - with Qudp. - (Fopen_network_stream_internal): Rename parameter FAMILY to - PROTOCOL for consistency; fix a minor typo and add an explanation - in docstring for udp programming. - (Fopen_multicast_group_internal): Fix a minor typo in docstring. - (syms_of_process): Add a new variable Qudp for udp network - support; rename variable Qtcpip to Qtcp for consistency with Qudp. - - * process.h (extern_variables): Add a new variable Qudp for udp - network support; rename variable Qtcpip to Qtcp for consistency - with Qudp. - - * procimpl.h: Add a new variable Qudp for udp network support; - rename variable Qtcpip to Qtcp for consistency with Qudp. - (struct process_methods): Rename parameter family to protocol. - - -1999-10-24 Olivier Galibert - - * alloc.c (pdump_make_hash): Divide pointers by 8 for a better hash. - -1999-10-23 Olivier Galibert - - * lrecord.h (struct lrecord_header): Removed dumped flags. - - * dynarr.c: Use DUMPEDP instead of dumped flag. - - * lisp.h (DUMPEDP): Added. Removed dumped flag from dynarr. - - * alloc.c: Removed hash_next linked list pointer. - - * *.c *.h: Removed markobj and mark_object parameters, removed GC_ - and XGC macros. - -1999-10-14 Andy Piper - - * redisplay-x.c (x_output_shadows): fix dodgy maths for border - calculations. - - * gutter.c (output_gutter): be more accurate about the area to be - cleared since X seems to manage to do the clear after drawing the - border. - - * redisplay.h (RESET_CHANGED_FLAGS): new macro for setting - redisplay flags as a group. - (RESET_CHANGED_SET_FLAGS): ditto. - (CLASS_RESET_CHANGED_FLAGS): ditto. - (GLOBAL_RESET_CHANGED_FLAGS): ditto. - (REDISPLAY_FLAGS_CHANGEDP): new macro for testing redisplay flags - as a group. - (CLASS_REDISPLAY_FLAGS_CHANGEDP): ditto. - (GLOBAL_REDISPLAY_FLAGS_CHANGEDP): ditto. - - * redisplay.c (redisplay_frame): use CLASS_RESET_CHANGED_FLAGS - instead of setting flags individually. - (redisplay_device): ditto CLASS_REDISPLAY_FLAGS_CHANGEDP. - (redisplay_device): ditto. - (redisplay_device): ditto CLASS_RESET_CHANGED_FLAGS. - (redisplay_without_hooks): ditto GLOBAL_REDISPLAY_FLAGS_CHANGEDP. - (redisplay_without_hooks): ditto CLASS_REDISPLAY_FLAGS_CHANGEDP. - (redisplay_without_hooks): ditto. - (redisplay_without_hooks): ditto GLOBAL_RESET_CHANGED_FLAGS. - - * redisplay-x.c (x_output_string): unmap subwindows in the area. - (x_output_blank): ditto. - - * redisplay-output.c (redisplay_output_display_block): don't unmap - subwindows in case layout optimization can avoid it. - (redisplay_output_subwindow): unmap subwindows in the area. - (redisplay_output_layout): optimize the output of layouts - only - output glyphs that have changed if nothing else of redisplay - significance has occurred. - (redisplay_output_pixmap): change args to - redisplay_clear_clipped_region. - (redisplay_clear_clipped_region): allow the clipped region to be - cleared of all subwindows except the one passed in. - - * redisplay-msw.c (mswindows_output_blank): unmap subwindows in - the area. - (mswindows_output_cursor): ditto. - (mswindows_output_string): ditto. - - * gutter.c (calculate_gutter_size): if the window buffer is nil - then don't continue. - (update_frame_gutters): be more lenient about when we actually - update the gutter. Layout optimization makes this - non-costly. Cache redisplay flags that we want to temporarily - ignore. - - * glyphs.c (Fglyph_animated_timeout_handler): handle image - specific timeouts rather than iterating over the instance cache. - (glyph_animated_timeout_mapper): deleted. - (add_glyph_animated_timeout): use a weak list to hold onto the - image so that it can be GC'ed. - (disable_glyph_animated_timeout): disable a specific timeout. - (vars_of_glyphs): disable-animated-pixmaps is a new boolean for - controlling whether pixmaps are animated or not. - - * glyphs-msw.c (mswindows_finalize_image_instance): make sure the - image timeout gets disabled when the image gets freed. - - * glyphs-eimage.c (gif_instantiate): remove meaningless - comment. Cope with timeouts specified in the gif extension block. - - * event-msw.c (vars_of_event_mswindows): new variable - mswindows-meta-activates-menu. - (mswindows_wnd_proc): only goto defproc with VK_MENU if the user - wants it. - - * glyphs-x.c (x_finalize_image_instance): delete mask first so - that we can compare with image. + * md5.c: + * file-coding.c: + * file-coding.h: + Change enum eol_type to eol_type_t. -1999-10-14 Jonathan Harris +2000-01-17 Yoshiki Hayashi - * event-msw.c (mswindows_key_to_emacs_keysym): - Recognise keypad keys as different from normal keys. + * gui.c (get_gui_callback): Check cons before accessing car. -1999-10-14 Didier Verna +2000-01-17 Yoshiki Hayashi - * glyphs-x.c (x_finalize_image_instance): avoid freeing null pixmaps. + * specifier.h (XSPECIFIER_TYPE): Add error checking version. + (XSETSPECIFIER_TYPE): Ditto. -1999-10-10 Olivier Galibert +2000-01-17 Didier Verna - * symbols.c (init_symbols_once_early): dump Vquit_flag. + * redisplay.c (generate_fstring_runes): compute string size in + characters, not bytes. - * symsinit.h: Updated. +2000-01-09 Hrvoje Niksic - * ntproc.c (vars_of_ntproc): Use defsymbol. + * window.c (Fwindow_minibuffer_p): Make WINDOW optional. - * emacs.c (main_1): Updated reinit calls. +2000-01-14 Hrvoje Niksic - * lisp.h: Removed Fpurecopy and pure_put declarations. - * fns.c: Removed pure_put. + * print.c (print_error_message): Call print_prepare(). - * eval.c (Fdefvar): pure_put -> Fput - (Fdefconst): Ditto. - * frame-x.c (init_x_prop_symbols): Ditto. - * symbols.c (deferror): Ditto. +2000-01-14 Martin Buchholz - * alloc.c (Fmake_byte_code): Remove Fpurecopy call. - * buffer.c (vars_of_buffer): Ditto. - * bytecode.c (Ffetch_bytecode): Ditto. - (optimize_compiled_function): Ditto. - * emacs.c (vars_of_emacs): Ditto. - * emodules.c (vars_of_module): Ditto. - * eval.c (define_function): Ditto. - (Fautoload): Ditto. - * frame.c (vars_of_frame): Ditto. - * intl.c (Fset_domain): Ditto. - * lread.c (load_force_doc_string_unwind): Ditto. - * menubar.c (vars_of_menubar): Ditto. - * minibuf.c (reinit_complex_vars_of_minibuf): Ditto. + * .dbxrc: Renamed from dbxrc. - * debug.c (reinit_vars_of_debug): Extracted. - * device-x.c (reinit_vars_of_device_x): Ditto. - * emodules.c (reinit_vars_of_module): Ditto. - * font-lock.c (reinit_vars_of_font_lock): Ditto. - * glyphs-widget.c (reinit_vars_of_glyphs_widget): Ditto. - * glyphs.c (reinit_vars_of_glyphs): Ditto. - * gui-x.c (reinit_vars_of_gui_x): Ditto. - * insdel.c (reinit_vars_of_insdel): Ditto. - * menubar-x.c (reinit_vars_of_menubar_x): Ditto. - * minibuf.c (reinit_complex_vars_of_minibuf): Ditto. - * mule-wnnfns.c (reinit_vars_of_mule_wnn): Ditto. - * print.c (reinit_vars_of_print): Ditto. - * redisplay.c (reinit_vars_of_redisplay): Ditto. - * select-x.c (reinit_vars_of_xselect): Ditto. - * undo.c (reinit_vars_of_undo): Ditto. + * events.c (event_to_character): + Use `assert (foo)' instead of `if (!foo) abort()' -1999-10-10 Olivier Galibert + * .gdbinit (xtype): Add documentation. + * .gdbinit (check-temacs): New function. + * .gdbinit (check-xemacs): New function. + * dbxrc (check-xemacs): New function. + * dbxrc (check-xemacs): New function. - * symsinit.h: Updated declarations, see other ChangeLog entries. +2000-01-14 Andy Piper - * redisplay.c (init_redisplay): Ensure proper reinitialisation. + * glyphs-widget.c (widget_query_geometry): Make sure that we + calculate default dimensions correctly. - * lrecord.h (XD_DYNARR_DESC): Introduce XD_INT_RESET and use it. +2000-01-13 Kirill 'Big K' Katsnelson - * glyphs.c: Add the ii_keyword_entry and related descriptions. - Fix the image_instantiator_methods one. + * symsinit.h: Added prototype for reinit_vars_of_frame_mswindows. - * file-coding.c: Plonk all data that needs to be dumped in a - dynamically allocated structure. + * event-msw.c (vars_of_event_mswindows): Fixed a mistyped + pdump_wire'd variable. - * extents.c (reinit_vars_of_extents): Extracted from - vars_of_extents. + * emacs.c: (main_1): Conditionalized calls to + reinit_vars_of_scrollbar_x and reinit_vars_of_module. - * event-stream.c (vars_of_event_stream): Don't staticpro when - pdump_wire is enough. +2000-01-13 Martin Buchholz - * event-msw.c (reinit_vars_of_event_mswindows): Extracted from - vars_of_event_mswindows. - - * event-Xt.c (reinit_vars_of_event_Xt): Extracted from - vars_of_event_Xt. - - * eval.c (vars_of_eval): Don't staticpro when pdump_wire is enough. - - * emacs.c (main_1): Added some reinit calls. - - * device-x.c (reinit_console_type_create_device_x): Extracted from - console_type_create_device_x. - - * console.h: Declare the console_type_entry_dynarr description. - - * console.c: Unstatic the console_type_entry_dynarr description. - - * alloc.c: Removed some dubious comments. Handle XD_INT_RESET. - -1999-10-07 Olivier Galibert - - * symsinit.h: Updated declarations, see other ChangeLog entries. - - * minibuf.c (reinit_complex_vars_of_minibuf): Extracted from - complex_vars_of_minibuf. - - * lrecord.h: Removed XD_PARENT_INDIRECT (unused and - unimplemented), added XD_LO_LINK. - - * lisp.h (pdump_wire_list): Add declaration. - - * glyphs.h (INITIALIZE_DEVICE_IIFORMAT): Fix bug found by Andy. - (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT): Fix stupid bug. - (REINITIALIZE_IMAGE_INSTANTIATOR_FORMAT): Remove, useless once the - stupid bug fixed. - - * glyphs.c (reinit_image_instantiator_format_create): Remove. - - * glyphs-x.c (reinit_image_instantiator_format_create_glyphs_x): - Remove. - - * glyphs-widget.c - (reinit_image_instantiator_format_create_glyphs_widget): Remove. - - * glyphs-msw.c - (reinit_image_instantiator_format_create_glyphs_mswindows): - Remove. - - * glyphs-eimage.c - (reinit_image_instantiator_format_create_glyphs_eimage): Remove. - - * frame.c (Fmake_frame): Don't reset the face cache when using the - stream device. - - * file-coding.c: Dumped the_codesys_prop_dynarr and added all - relevant descriptions. - - * events.c (reinit_vars_of_events): Extracted from vars_of_events. - - * eval.c: The subr is _not_ a lcrecord. - - * emacs.c (main_1): Call vars_of_specifier early before any - specifier creation (e.g in vars_of_glyphs, at least). Remove the - useless reinit_image_instantiator_format*. Add - reinit_vars_of_events and reinit_complex_vars_of_minibuf. Add - calls to lstream_type_create* and process_type_create*. - - * elhash.c: Dump Vall_weak_hash_tables correctly. - - * data.c: Dump Vall_weak_lists correctly. - - * console.c: Fix description. - - * console-stream.c (init_console_stream): Do initializations - correctly in the pdump case. - - * chartab.c: Fix description. Dump Vall_syntax_tables correctly. - (Fcopy_char_table): Link into Vall_syntax_tables. - - * alloc.c (pdump_wire_list): Added. - (Fgarbage_collect): Fix loop in stats couting missing the last - lrecord type. - (pdump_register_sub): Added XD_LO_LINK. - (pdump_dump_data): Ditto. Fixed XD_LO_RESET_NIL forgttting the - counter. - (pdump_reloc_one): Ditto. - (pdump_scan_by_alignement): Use last_lrecord_type_index_assigned - instead of 256. - (pdump_dump_wired): Added lists. - (pdump): Use last_lrecord_type_index_assigned instead of 256. - Dump last_lrecord_type_index_assigned value. Fix minor bugs. - -1999-10-07 Andy Piper - - * glyphs-msw.c (mswindows_finalize_image_instance): zero out - bitmap slices. - - * glyphs-x.c (x_finalize_image_instance): fix FMW problem. - -1999-10-06 Andy Piper - - * elhash.c (resize_hash_table): Correct reference to lrecord_header. - -1999-10-06 Damon Lipparelli - - * elhash.h: forward declare Lisp_Hash_Table. - -1999-10-06 Andy Piper - - * glyphs.c (Fset_image_instance_property): mark glyphs as dirty - after setting an image instance property. - -1999-10-05 Andy Piper - - * gutter.c (update_frame_gutters): output gutters if - windows_changed is set. This is the only way of catching changes - in selected window which obviously can affect the specifiers. - - * redisplay.c: new state flags, subwindows_state_changed and - subwindows_state_changed set. - (redisplay_window): use them. - (redisplay_device): ditto. - (redisplay_without_hooks): ditto. - (redisplay_frame): ditto. Reset subwindow cachels if - subwindows_changed is set. - (redisplay_window): call mark_glyph_cachels_as_clean after - redisplaying. - - * redisplay-x.c (x_output_x_pixmap): select correct - pixmap image for display depending on the currently selected - slice. - - * redisplay-output.c (compare_runes): check dirtiness when - checking RUNE_DGLYPH runes. - (compare_display_blocks): relax invalidation of display blocks - since we can now detect whether individual glyphs have changed or - not. - - * redisplay-msw.c (mswindows_output_dibitmap): select correct - bitmap image for display depending on the currently selected - slice. - - * glyphs.h (struct Lisp_Image_Instance): add a dirty flag. - (IMAGE_INSTANCE_DIRTYP): new macro. - (XIMAGE_INSTANCE_DIRTYP): ditto. - (MARK_IMAGE_INSTANCE_CHANGED): ditto. - (GLYPH_DIRTYP): ditto. - (XGLYPH_DIRTYP): ditto. - (MARK_GLYPH_CHANGED): ditto. - (GLYPH_CACHEL_DIRTYP): ditto. - (struct glyph_cachel): add a dirty flag. - - * glyphs.c (update_frame_subwindows): Don't update on - glyphs_changed. - (glyph_animated_timeout_mapper): new function. Map over the - instance cache lookinng for animated images to update. - (Fglyph_animated_timeout_handler): new function. Lisp callback for - handling animated image timeout events. - (disable_glyph_animated_timeout): new function. Add the animated - image timeout. - (disable_glyph_animated_timeout): new function. Remove the - animated image timeout. - (syms_of_glyphs): initialize Qglyph_animated_timeout_handler and - friends. - (vars_of_glyphs): initialize Vglyph_animated_ticker. - (image_instance_equal): add the currently displayed slice. - (image_instance_hash): ditto. - (allocate_glyph): initialize dirty flag. - (glyph_width): rename glyph -> glyph_or_image. - (glyph_height_internal): ditto. - (glyph_dirty_p): new function. Determine whether the image - instance in the domain and/or glyph is dirty. - (set_glyph_dirty_p): set the dirtiness. - (update_glyph_cachel_data): take dirtiness into account. Pass the - image instance we are interested in to glyph_width and friends. - (get_glyph_cachel_index): make non-static. Always call - update_glyph_cachel_data. - (mark_glyph_cachels_as_not_updated): meaningless formatting - change. - (mark_glyph_cachels_as_clean): new function. Clean dirtiness from - glyph cachels. - - * glyphs-x.h (struct x_image_instance_data): change - pixmap to a list of pixmaps. - (IMAGE_INSTANCE_X_PIXMAP_SLICE): new macro. - (IMAGE_INSTANCE_X_PIXMAP_SLICES): ditto. - (XIMAGE_INSTANCE_X_PIXMAP_SLICE): ditto. - (XIMAGE_INSTANCE_X_PIXMAP_SLICES): ditto. - - * glyphs-x.c (x_finalize_image_instance): make sure multi pixmap - images get deleted properly. - (init_image_instance_from_x_image): add slices paramater and use - it to initialize x_image_instance_data correctly. - (image_instance_add_x_image): new function. Add new pixmaps to our - set of instantiated pixmaps for an image. Used by animated images. - (x_init_image_instance_from_eimage): add a slices - parameter. Instantiate all images from the eimage. - (x_xpm_instantiate): update use of - init_image_instance_from_x_image. - (init_image_instance_from_xbm_inline): ditto. - (x_initialize_pixmap_image_instance): add slices paramater and use - it to allocate x_image_instance_data correctly. - - * glyphs-msw.h (struct mswindows_image_instance_data): change - bitmap to a list of bitmaps. - (IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE): new macro. - (IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES): ditto. - (XIMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE): ditto. - (XIMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES): ditto. - - * glyphs-msw.c (init_image_instance_from_dibitmap): add slices - paramater and use it to initialize mswindows_image_instance_data - correctly. - (image_instance_add_dibitmap): new function. Add new bitmaps to - our set of instantiated bitmaps for an image. Used by animated - images. - (mswindows_init_image_instance_from_eimage): add a slices - parameter. Instantiate all images from the eimage. - (mswindows_xpm_instantiate): update use of - init_image_instance_from_dibitmap. - (bmp_instantiate): ditto. - (init_image_instance_from_xbm_inline): ditto. - (mswindows_finalize_image_instance): make sure all the bitmap - slices get deleted. - (mswindows_initialize_dibitmap_image_instance): add slices - paramater and use it to allocate mswindows_image_instance_data - correctly. - - * glyphs-eimage.c (jpeg_instantiate): give extra paramter to - init_image_instance_from_eimage. - (png_instantiate): ditto. - (tiff_instantiate): ditto. - (gif_instantiate): allocate bitmaps for all gif slices not just - the first one. - - * device.h (struct device): add subwindows_state_changed flag. - (MARK_DEVICE_SUBWINDOWS_STATE_CHANGED): new macro. - (MARK_DEVICE_FRAMES_GLYPHS_CHANGED): ditto. - - * console.h (struct console_methods): add a slice parameter to - init_image_instance_from_eimage_method. - - * redisplay.c (create_string_text_block): Allow buffer to be nil - without crashing. - -1999-09-24 Andy Piper - - * glyphs-x.c: only include gui-x.h if we are building with - widgets. - - * gui-x.c (vars_of_gui_x): only set popup_up_p if we have popups. - -1999-09-28 Lee Kindness - - * objects-x.c (allocate_nearest_color): will return 0 (failure) - when the colormap is full and the color it has computed to be the - 'nearest' has been allocated read/write. - -1999-10-02 Olivier Galibert - - * search.c (reinit_vars_of_search): Reinit the search cache - correctly. - - * elhash.h: Make the description visible. Declare - resize_hash_table. - - * elhash.c (resize_hash_table): Extracted from enlarge_hash_table - to generalize the hash table reorganization. - (reorganize_hash_table): Added. - (enlarge_hash_table): Uses resize_has_table. - - * casetab.c (complex_vars_of_casetab): staticpro the mule mirror - tables. - - * alloc.c: Add correct management of blocks of structures. - Reorganize hash tables at reload since the hash values can change - with the pointers. - -1999-10-01 Olivier Galibert - - * lisp.h: Add pdump_wire declaration - - * elhash.c (vars_of_elhash): Wire Vall_weak_hash_tables. - * symbols.c (init_symbols_once_early): Wire Qnil and Qunbound. - - * alloc.c (pdump_wire): Added.. - (pdump_load): Support it. - (pdump): Support it - - * glyphs-msw.c - (reinit_image_instantiator_format_create_glyphs_mswindows): Fix - macro calls. - -1999-09-28 Olivier Galibert - - * symsinit.h: Added lots of prototypes. - - * symeval.h: Added defsymbol_nodump declaration. - - * symbols.c (find_symbol_value): Lame attempt at making the - startup go further. - (defsymbol_nodump): Added. - - * mule-charset.c: Collapsed global lisp objects arrays in one - dumpable structure. - - * lrecord.h: Added some flags. - - * lisp.h: Added dumped flag to dynarrs. Added dumpstruct - declaration. - - * glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM): Don't - staticpro dynamic variables. - - * glyphs.c (reinit_specifier_type_create_image): Added. - (image_instantiator_format_create): Dump image instantiator format - dynarr. - (reinit_image_instantiator_format_create): Added. - - * emacs.c (main_1): Added reinits calls. - - * dynarr.c: Protect dumped dynarrays from going berzek in free or - realloc. - - * specifier.h (INITIALIZE_SPECIFIER_TYPE): Don't staticpro dynamic - variables. - * specifier.c (specifier_type_create): Dump the specifier type - dynarr. - (reinit_specifier_type_create): Added. - * console.h (INITIALIZE_CONSOLE_TYPE): Don't staticpro dynamic - variables. - * console.c (console_type_create): Dump the console type dynarr. - (reinit_vars_of_console): Extracted from vars_of_console. - (reinit_complex_vars_of_console): Extracted from - complex_vars_of_console - * window.c (reinit_vars_of_window): Extracted from vars_of_window. - * toolbar.c (reinit_specifier_type_create_toolbar): Added. - * search.c (reinit_vars_of_search): Extracted from vars_of_search. - * objects.c (reinit_specifier_type_create_objects): Added. - (reinit_vars_of_objects): Extracted from vars_of_objects. - * lstream.c (reinit_vars_of_lstream): Extracted from - vars_of_lstream. - * lread.c (reinit_vars_of_lread): Extracted from vars_of_lread. - * gutter.c (reinit_specifier_type_create_gutter): Added. - * glyphs-x.c (reinit_image_instantiator_format_create_glyphs_x): - Added. - * glyphs-widget.c - (reinit_image_instantiator_format_create_glyphs_widget): Added - * glyphs-msw.c - (reinit_image_instantiator_format_create_glyphs_mswindows): Added. - * glyphs-eimage.c - (reinit_image_instantiator_format_create_glyphs_eimage): Added. - * event-stream.c (reinit_vars_of_event_stream): Extracted from - vars_of_event_stream - * eval.c (reinit_vars_of_eval): Extracted from vars_of_eval. - * device.c (reinit_vars_of_device): Extracted from vars_of_device. - * console-x.c (reinit_console_type_create_x): Added. - * console-tty.c (reinit_console_type_create_tty): Added - * console-stream.c (reinit_console_type_create_stream): Added. - (init_console_stream): If PDUMP, always reinitialise basic - devices. - * console-msw.c (reinit_console_type_create_mswindows): Added. - * buffer.c (reinit_vars_of_buffer): Extracted from - init_vars_of_buffer. - (reinit_complex_vars_of_buffer): Extracted from - complex_vars_of_buffer - - * alloc.c: Further with the portable dumping, the revenge. - (dumpstruct): Added. - (reinit_alloc_once_early): Extracted from init_alloc_once_early. - - * specifier.c (sizeof_specifier): Correct size computation. - (make_specifier_internal): Ditto. - -1999-09-27 Olivier Galibert - - * alloc.c: Further with the portable dumping. - -1999-09-27 Martin Buchholz - - * glyphs-x.c (update_widget_face): Remove bogus cast - - * data.c (sign_extent_lisp): - * data.c (check_int_range): - * data.c (Faref): - * data.c (Faset): - * data.c (number_char_or_marker_to_int): - * data.c (number_char_or_marker_to_double): - * data.c (Frem): - * data.c (Fmod): - * extents.c (print_extent_1): - * fns.c (print_bit_vector): - * fns.c (Flength): - * fns.c (Fsafe_length): - * fns.c (copy_list): - * fns.c (Fsubseq): - * fns.c (Felt): - * fns.c (Flast): - * fns.c (Fnbutlast): - * insdel.h: - * marker.c (print_marker): - * syntax.h: - * bytecode.c (bytecode_arithcompare): - * bytecode.c (bytecode_arithop): - * lisp.h: - * lisp.h (EXTERNAL_LIST_LOOP_DELETE_IF): - * lisp.h (TRUE_LIST_P): - * lisp.h (CHECK_TRUE_LIST): - * lisp.h (bit_vector_length): - * lisp.h (GCPRO4): Make consistent. - * lisp.h (NGCPRO4): Make consistent. - * lisp.h (NNGCPRO4): Make consistent. - * alloc.c (Fmake_list): - * alloc.c (Fmake_string): - Use proper 64-bit types, e.g. EMACS_INT or size_t instead of int. - This should make all arithmetic 64-bit clean. - - Use %ld with (long) casts in print statements of types with sizes - possibly larger than int. - - Following functions had mismatched prototypes!!: - do_marker_adjustment(), fixup_internal_substring(), scan_lists(), - char_quoted(), make_string_from_buffer(), - make_string_from_buffer_no_extents() - - The types of Bufpos, Bytind, Memind, Bytecount, Charcount, - Extcount are all now EMACS_INT. I hope to see the day when I can - create a buffer with more than INT_MAX characters, without having - XEmacs slow down to a crawl. I also hope to be able to create a - list with more than INT_MAX cons cells. - - * redisplay.c (decode_mode_spec): - The %p and %P specs in the mode line were not correct for buffers - larger than MAX_INT/100! The %p spec was off by .5% even for - small buffers! - -1999-09-27 Martin Buchholz - - * cmdloop.c (num_input_keys): - * print.c (debug_temp): - * emacs.c (Vinfo_directory): - Delete unused variables - - * console-x.h (x_interline_space): Mark as unimplemented. - * redisplay-x.c (x_interline_space): Mark as unimplemented. - - * event-Xt.c (pending_timeouts): - * linuxplay.c (linuxplay_sndbuf): - * profile.c (QS*): - * search.c (searchbufs): - * specifier.c (specifier_type_entry_dynarr): - * undo.c (pending_boundary): - * event-stream.c (the_low_level_timeout_blocktype): - * extents.c (gap_array_marker_freelist): - * extents.c (extent_list_marker_freelist): - * print.c (being_printed): - * print.c (alternate_do_pointer): - * alloc.c (first_string_chars_block): - * alloc.c (current_string_chars_block): - * emacs.c (initial_argv): - * emacs.c (initial_argc): - * eval.c (lisp_eval_depth): - * free-hook.c (pointer_table): - * free-hook.c (free_queue): - * free-hook.c (current_free): - * free-hook.c (strict_free_check): - * redisplay.c (formatted_string_emchar_dynarr): - * redisplay.c (formatted_string_display_line): - * redisplay.c (formatted_string_extent_dynarr): - * redisplay.c (formatted_string_extent_start_dynarr): - * redisplay.c (formatted_string_extent_end_dynarr): - * redisplay.c (updating_line_start_cache): - * redisplay.c (last_display_warning_tick): - * redisplay.c (display_warning_tick): - * redisplay.c (internal_cache): - * window.c (Vwindow_configuration_free_list): - Make static. - - * redisplay.c (Vinitial_window_system): Make CONST. - -1999-09-24 Martin Buchholz - - * redisplay-tty.c (term_get_fkeys_1): Minor aesthetic improvements. - - * doprnt.c (get_doprnt_args): Use int, not short, with va_arg. - -1999-09-24 Andy Piper - - * redisplay-output.c (output_display_line): only clear the borders - if we are not displaying the gutter. - -1999-09-24 Jan Vroonhof - - * frame-x.c (x_any_window_to_frame): Let Xt find the widget and - then use x_any_widget_or_parent_to_frame(). - (x_find_frame_for_window): remove special cases. - -1999-09-24 Andy Piper - - * scrollbar-x.c (x_window_is_scrollbar): deleted. - * scrollbar-x.h: ditto. - -1999-09-23 Martin Buchholz - - * alloc.c (this_marks_a_marked_record): Remove. - - * buffer.c (mark_buffer): - * buffer.c (nuke_all_buffer_slots): - * console.c (mark_console): - * console.c (nuke_all_console_slots): - * frame.c (mark_frame): - * frame.c (nuke_all_frame_slots): - Treat MARKED_SLOT() macros consistently. - - * device.h (error_check_device_type): - * faces.c (face_getprop): - * fileio.c (DRIVE_LETTER): - * filelock.c (lock_file_1): - * frame-x.c (x_create_widgets): - * frame.h (error_check_frame_type): - * keymap.c (print_keymap): - * keymap.c (Fkey_description): - * keymap.c (where_is_recursive_mapper): - * mule-charset.h (CHARSET_LEADING_BYTE): - * objects-msw.c (mswindows_color_instance_hash): - * objects.c (color_instance_equal): - * objects.h (struct color_specifier): - * objects.h (struct font_specifier): - * objects.h (struct face_boolean_specifier): - * opaque.h (get_opaque_ptr): - * opaque.h (set_opaque_ptr): - * process-unix.c (set_socket_nonblocking_maybe): - * specifier.h (SPECIFIER_TYPE_P): - * symbols.c (store_symval_forwarding): - * syssignal.h (EMACS_KILLPG): - * terminfo.c (emacs_tparam): - * glyphs.c (glyph_putprop): - * glyphs.c (glyph_remprop): - * glyphs.c (Fimage_instance_subwindow_id): - * window.c (mark_window): - * window.c (mark_window_config): * window.c (Fset_window_configuration): - * window.c (save_window_save): - * eval.c (Fuser_variable_p): - * eval.c (Fcommand_execute): - * eval.c (Feval): - * eval.c (Ffuncall): - * lisp.h (XPNTR): - * lisp.h (INT_OR_FLOATP): - * lisp.h (GC_INT_OR_FLOATP): - * lisp.h (XFLOATINT): - * lisp.h (IS_ANY_SEP): - * mule-ccl.c (Fccl_execute): - * mule-ccl.c (Fccl_execute_on_string): - * redisplay-x.c (x_output_string): - Remove redundant extra parentheses. - -1999-09-22 Martin Buchholz - - * chartab.c (word_boundary_p): Add prototype for warning avoidance. - * eval.c (PRIMITIVE_FUNCALL): ANSIfy - * free-hook.c (fun_ptr): ANSIfy - * getloadavg.c: Remove declaration for errno. - * gui.c (allocate_gui_item): ANSIfy - * gui.h (allocate_gui_item): ANSIfy - * mule-ccl.c (resolve_symbol_ccl_program): Make static - * realpath.c: Remove K&R support. - * redisplay-x.c (x_output_display_block): Don't shadow previous local - * glyphs-widget.c (layout_instantiate): Don't shadow previous local - * gutter.c (get_gutter_coords): Make static. - * lread.c (locate_file_map_suffixes): Make static. - * ralloc.c (relinquish): ANSIfy - * redisplay.c: - * lisp.h: - Move prototypes from redisplay.c to lisp.h - -1999-09-22 Martin Buchholz - - * glyphs-x.c (x_widget_set_property): - - Remove unnecessary initialization. - - Use char*, not Bufbyte *, with GET_C_STRING_OS_DATA_ALLOCA - * glyphs-x.c (x_widget_instantiate): - - Use char*, not Bufbyte *, with GET_C_STRING_OS_DATA_ALLOCA - * unexelf.c (unexec): - Add cast for C++ compilability. - * redisplay.h: - Fix a typo. - * ralloc.c (r_alloc_reinit): - SET_FUN_PTR was broken wrt ANSI aliasing! - To compensate, use __typeof__ when using gcc, else live with - possible (but rare) warnings. - * ralloc.c (init_ralloc): - Ditto - * ralloc.c: Use the real dlmalloc prototype for __morecore. - * lread.c (locate_file_map_suffixes): - * input-method-xlib.c (XIM_init_frame): - - Xlib functions should use XPointer, not XtPointer. - * input-method-xlib.c (XIM_delete_frame): - - Xlib functions should use XPointer, not XtPointer. - * input-method-xlib.c (IMDestroyCallback): - - Simplify. - - XFRAME (obj) can never be NULL, so don't test for it. - * gutter.h: - Add GUTTER_POS_LOOP for iterating over all gutter_pos'es - * gutter.c (SET_GUTTER_WAS_VISIBLE_FLAG): - Run c-backslash-region on macro body. - * gutter.c (gutter_was_visible): - Remove redundant parens - this is not a macro. - * gutter.c (redraw_exposed_gutters): - Use GUTTER_POS_LOOP. - * gutter.c (gutter_specs_changed): - Use GUTTER_POS_LOOP. - * gutter.c (gutter_geometry_changed_in_window): - Use GUTTER_POS_LOOP. - * gutter.c (update_frame_gutters): - Use GUTTER_POS_LOOP. - * gutter.c (init_frame_gutters): - Use GUTTER_POS_LOOP. - * file-coding.c (determine_real_coding_system): - Fix C++ compile error. - * emodules.c (find_make_module): - Cast return value from xrealloc - * emacs.c (Fkill_emacs): - Use __typeof__, when available. - * emacs.c (voodoo_free_hook): - Use __typeof__, when available. - (Unfortunately, the type of __free_hook is glibc-version-dependent) - * dired.c (user_cache): Use Bufbyte *, not char * - * dired.c (Fuser_name_all_completions): Ditto. - -1999-09-22 Andy Piper - - * redisplay.c (redisplay_frame): reset the gutter display lines - when we reset the subwindows. - - * gutter.c (reset_gutter_display_lines): new function. - - * window.c (Flast_nonminibuf_window): new function equivalent to - FRAME_LAST_NONMINIBUF_WINDOW (). - (syms_of_window): declare it. - - * redisplay.c (create_string_text_block): don't add bogus eol - markers to gutter display lines. - - * glyphs.c (reset_subwindow_cachels): make sure we unmap - subwindows using unmap_subwindow so that expose events get - registered correctly. - - * window.c (window_scroll): use Vwindow_pixel_scroll_increment to - determine how much to scroll the window. - (vars_of_window): Vwindow_pixel_scroll_increment is a new - variable. - -1999-09-20 Robert Pluim - - * glyphs-x.c (update_widget_face): Guard fontList declaration for - non-motif uses. - -1999-09-20 Andy Piper - - * glyphs-msw.c (mswindows_update_subwindow): update faces. - -1999-09-19 Andy Piper - - * glyphs.c (update_frame_subwindows): update if faces have - changed. - - * glyphs-x.c (x_widget_instantiate): create the clip widget using - lwlib rather than directly. - (x_finalize_image_instance): delete the clip widget using lwlib. - (x_update_subwindow): update widget faces. - (update_widget_face): new function for updating the face - properties of a widget. - (x_widget_set_property): update widget faces. - - * lwlib-Xlw.c (xlw_create_clip_window): new function. We need to - manage the clip widgets using lwlib so that we can delete them in - a safe manner. - -1999-09-16 Martin Buchholz - - * lisp-union.h: - * lisp-disunion.h: - Define new, potentially faster INT arithmetic macros - INT_PLUS, INT_MINUS, INT_PLUS1, INT_MINUS1 - * bytecode.c (execute_optimized_function): - Use new macros. - Fix metering code - * bytecode.c (bytecode_negate): - Optimize for integer case. - -1999-08-29 Andreas Jaeger - - * m/mips.h: Support for mips-linux: Add !linux around places - that are not valid for linux, define TEXT_START, DATA_START, - DATA_SEG_BITS. - -1999-09-16 Andy Piper - - * redisplay-output.c (redisplay_output_subwindow): clip subwindows - that don't completely fit on-screen rather than just unmapping - them. - - * glyphs.h: change signature of map_subwindow. - - * glyphs.c (map_subwindow): add display_glyph_area to the - signature. make sure the mapped area saved in the subwindow_cachel - reflects this. - (Fforce_subwindow_map): make a no-op. I don't think this does - anything useful. - - * glyphs-x.h (struct x_subwindow_data): save the Display rather - than the Screen. Add a clipwindow and clipwidget handle. - (IMAGE_INSTANCE_X_CLIPWINDOW): new accessor. - (IMAGE_INSTANCE_X_CLIPWIDGET): ditto. - (XIMAGE_INSTANCE_X_CLIPWIDGET): ditto. - (XIMAGE_INSTANCE_X_CLIPWINDOW): ditto. - - * glyphs-x.c (x_finalize_image_instance): destroy the clipwidget - as well as the widget itself. - (x_unmap_subwindow): unmap the clipwindow and clipwidget rather - than the widgets and subwindows themselves. move the widget inside - the clipwidget. - (x_subwindow_instantiate): hold onto the Display rather than the - Screen. allocate a clipwindow to put the subwindow inside. - (x_resize_subwindow): use saved Display directly. - (x_widget_instantiate): allocate a clipwidget of type EmacsManager - to put widgets inside. - - * glyphs-widget.c: remove group stuff. - - * glyphs-msw.h (struct mswindows_subwindow_data): new structure to - hold the clipwindow. - (IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW): new accessor. - (XIMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW): ditto. - - * glyphs-msw.c: remove group stuff. - (mswindows_finalize_image_instance): destroy clipwindow as well as - the widget itself. - (mswindows_unmap_subwindow): unmap the clipwindow rather than the - widget. - (mswindows_map_subwindow): ditto. move the widget within the - clipwindow. - (mswindows_subwindow_instantiate): allocate and initialize - mswindows_subwindow_data. allocate a clipwindow with the subwindow - as a child. - (mswindows_widget_instantiate): ditto. - (mswindows_control_wnd_proc): new function that allows us to - propagate events from the widget to the main windows control loop. - - * device-msw.c (mswindows_init_device): register new widget clip window - class. - - * console.h (struct console_methods): add display_glyph_area to - map_window. - - * console-msw.h: declare new window class and wnd proc for - widgets. - -1999-09-14 Martin Buchholz - - * general.c: - * eldap.c: - Move symbols used only by eldap.c into eldap.c as statics. - -1999-09-09 Martin Buchholz - - * window.c (syms_of_window): - * symbols.c (syms_of_symbols): - * redisplay.c (syms_of_redisplay): - * print.c (syms_of_print): - * lisp.h: - * intl.c (syms_of_intl): - * general.c (syms_of_general): - * frame.c (syms_of_frame): - * fileio.c (syms_of_fileio): - * file-coding.h: - * file-coding.c (syms_of_file_coding): - * extents.c (syms_of_extents): - * event-stream.c (syms_of_event_stream): - * event-stream.c (Fnext_event): - * device.c (syms_of_device): - * data.c (syms_of_data): - * casetab.c (syms_of_casetab): - * casetab.c (check_case_table): - * callint.c (syms_of_callint): - * buffer.c (syms_of_buffer): - Delete unused C symbols: - Qbuffer_file_name, Qbuffer_undo_list, Quser_variable_p, - Qcurrent_prefix_arg, Qtranslate_table, Qkeywordp, - Qnumber_or_marker_p, Qcons, Qkeyword, Qignore, Qdelete_device, - Qcommand_execute, Qglyph_invisible, - Qbuffer_file_coding_system, Qfile_name_handler_alist, - Qframe_x_p, Qframe_tty_p, Qblack, Qkeyboard, Qmenubar, Qpath, - Qvector, Qwhite, Qcase, Qdomain, Qalternate_debugging_output, - Qprint_escape_newlines, Qprint_readably, Qfloat_output_format, - Qwindow_scroll_functions, Qfboundp, Qscroll_up, Qscroll_down - - Rename symbols as required by the CHECK_RECORD macro: - - Qcase_table_p to Qcase_tablep - - Qcoding_system_p to Qcoding_systemp - - * debug.h: - * debug.c (syms_of_debug): - Make debug.c's internal Lisp_Objects static. - - * events.c (vars_of_events): - * events.c (syms_of_events): - Use regular old defsymbol instead of KEYSYM + staticpro(). - - * select-x.c (CHECK_CUTBUFFER): - Rewrite in accordance with coding standards. - - * keymap.c (syms_of_keymap): - Use SPC in the same way as RET, TAB, etc. - -1999-08-27 Jan Vroonhof - - * xemacs-20/src/menubar-x.c (make_dummy_xbutton_event): Don't add - offset twice if HAVE_WMCOMMAND is defined. - -1999-09-13 Mike McEwan - - * redisplay-x.c (x_output_vertical_divider): make sure - shadow_thickness is positive. - -1999-09-10 Julian Back - - * process-nt.c (nt_create_process): fixup to cope with - Vprocess_environment. - -1999-09-02 Andy Piper - - * redisplay-output.c (redisplay_output_layout): call output - routines with clear_clip false. output layout borders with text - correctly. - - * redisplay-msw.c (mswindows_output_blank): call output routines - with clear_clip true. - (mswindows_output_string): ditto. - (mswindows_output_display_block): ditto. - - * redisplay-x.c (x_output_display_block): call output routines - with clear_clip true. - - * redisplay.h: fix output routines for clear_clip parameter. - - * redisplay-output.c (redisplay_output_layout): cope with glyphs - in the border. - - * glyphs-widget.c (layout_instantiate): deal with border glyphs. - (check_valid_glyph_or_instantiator): renamed from - check_valid_glyph_or_image. - (check_valid_border): allow glyphs or their instantiators. - (check_valid_glyph_or_instantiator_list): renamed from - check_valid_glyph_or_image_list, - (glyph_instantiator_to_glyph): new function. make sure a glyph is - a glyph and not an instantiator. - (substitute_keyword_value): new function. replace a keyword value - with a new one. - -1999-09-01 Andy Piper - - * glyphs.c (string_set_property): new function to set the data of - a string. - (image_instantiator_format_create): use it. - -1999-09-07 Hrvoje Niksic - - * fns.c (Fmapc): Rename back to Fmapc_internal. - -1999-07-30 Gleb Arshinov - - * ntheap.h: CONST (semantically constant) name field of file_data - struct - - * unexnt.c (open_output_file): match function definition with - function declaration - - * editfns.c: #include "sysfile.h" for getcwd() prototype - - * gif_io.c: #include "sysfile.h" for close() prototype - -1999-09-02 Martin Buchholz - - * elhash.c: - * elhash.h: - Change the :type keyword to :weakness, for compatibility with the - GNU Emacs 20.5 hash table implementation. - Keep (but don't document) the :type keyword for compatibility. - Obsolete function hash-table-type - General cleanup. - Define function sxhash for compatibility with Common Lisp and GNU Emacs. - -1999-09-01 Martin Buchholz - - * floatfns.c (arith_error): - * floatfns.c (range_error): - * floatfns.c (range_error2): - * floatfns.c (domain_error): - * floatfns.c (domain_error2): - * lrecord.h (LRECORDP): - * console-x.h (X_ERROR_OCCURRED): - * console-x.h (HANDLING_X_ERROR): - * chartab.c (CATEGORYP): - * buffer.h (XCHAR_OR_CHAR_INT): - Remove redundant and confusing parentheses. - - * redisplay-output.c (redisplay_clear_to_window_end): - Remove redundant initialization. - - * redisplay.h: - * redisplay-msw.c: - * redisplay-x.c: - Move declarations of bevel_modeline() into redisplay.h. - -1999-08-30 Olivier Galibert - - * lisp.h: Add staticpro_nodump for undumped staticpro-ing. - * alloc.c: Add staticpro_nodump for undumped staticpro-ing. Add - alignment information for dumped data. Enhance - descriptions. Phase out Vterminal_* variables while - dumping. - * lrecord.h: Add chained descriptions and automagically-reset - lisp_objects to the description system. - - * console-stream.h: Declare the Vterminal_* variables. - - * buffer.c: Don't dump Vbuffer_alist, Vbuffer_defaults and - Vbuffer_local_symbols. - * console.c: Don't dump Vconsole_list, Vconsole_defaults and - Vconsole_local_symbols. - * eval.c: Don't dump Qunbound_suspended_errors_tag. - * lread.c: Don't dump Vread_buffer_stream. - * lstream.c: Don't dump Vlstream_free_list[]. - * search.c: Don't dump last_thing_searched. - * window.c: Don't dump minibuf_window and - Vwindow_configuration_free_list[]. - - * faces.c: Add face description. - * fns.c: Add bit_vector description. - * glyphs.c: Add image specifier description. - * objects.c: Add color, face and face boolean specifiers descriptions. - * opaque.c: Add opaque description. Don't dump Vopaque_ptr_free_list. - * rangetab.c: Add range table description. - * specifier.c: Add specifier and specifier methods description. - * specifier.h: Add specifier extra description support. - - * symbols.c: Fix symbol_value_buffer_local_description. - - * gdbinit (Lisp): Add opaque_ptr, remove opaque_list. - -1999-09-02 Hrvoje Niksic - - * extents.c (extent_remprop): Get extent's plist address - correctly. - -1999-08-31 Andy Piper - - * xmu.h: define Xmu/Converters.h things. - -1999-08-31 Andy Piper - - * opaque.c (equal_opaque_ptr): define. - (hash_opaque_ptr): define. - - * xmu.h: define Xmu/Misc.h things. - -1999-08-17 MORIOKA Tomohiko - - * file-coding.c (determine_real_coding_system): Treat `coding:' - cookie. - -1999-08-16 MORIOKA Tomohiko - - * file-coding.c (struct decoding_stream): New member `counter'. - (reset_decoding_stream): Initialize `counter'. - (decode_coding_ucs4): Use `counter'. - (decode_coding_utf8): Likewise. - -1999-08-31 Andy Piper - - * redisplay-output.c (redisplay_normalize_glyph_area): make sure - the clip offset doesn't exceed the height we have available to - show. - - * window.h (struct window): add top_yoffset and left_xoffset for - pixel scrolling. - (WINDOW_TEXT_TOP_CLIP): new macro. - - * window.c (window_scroll): add behaviour for pixel-scrolling of - tall lines. - - * redisplay.h (struct display_line): add top_clip. - (DISPLAY_LINE_HEIGHT): adjust for top_clip. - (DISPLAY_LINE_YPOS): ditto. - - * redisplay.c (position_redisplay_data_type): add - start_col_xoffset to prepare for pixel-based h-scrolling. - (WINDOW_SCROLLED): new macro. - (next_tab_position): use it. - (add_glyph_rune): use new hscoll vars. - (create_text_block): ditto. - (generate_displayable_area): adjust off-by-one error. - (regenerate_window): take top_clip into account. - (regenerate_window_extents_only_changed): ditto. - (regenerate_window_incrementally): ditto. - - * redisplay-x.c (x_output_display_block): use DISPLAY_LINE_YPOS, - DISPLAY_LINE_HEIGHT and DISPLAY_LINE_YEND macros. - (x_output_string): ditto. - (x_output_blank): ditto. - (x_output_hline): ditto. - (x_output_eol_cursor): ditto. - - * redisplay-output.c (output_display_line): allow for - top_clip. use DISPLAY_LINE_YPOS, DISPLAY_LINE_HEIGHT and - DISPLAY_LINE_YEND macros. - (redisplay_output_layout): output strings in layouts correctly. - (redisplay_clear_clipped_region): allow for top_clip. - (redisplay_calculate_display_boxes): ditto. - - * redisplay-msw.c (mswindows_output_blank): use DISPLAY_LINE_YPOS, - DISPLAY_LINE_HEIGHT and DISPLAY_LINE_YEND macros. - (mswindows_output_cursor): ditto. - (mswindows_output_string): ditto. - (mswindows_redraw_exposed_window): ditto. - (mswindows_output_display_block): ditto. - - * gutter.c: new specifier type gutter-size. - (gutter_size_validate): validate gutter-size specifier. - (Fgutter_size_specifier_p): predicate for gutter-size. - (Fredisplay_gutter_area): allow the gutter area to be redisplayed - under user contol, like Fredisplay_echo_area. - (syms_of_gutter): add new functions. - (specifier_type_create_gutter): add new specifier. - (specifier_vars_of_gutter): change specifier types of *-height to - gutter-size. - - * glyphs.c (glyph_width): make work with image instances. - - * console.h (struct console_methods): change api of output_string. - - * glyphs-x.c (x_map_subwindow): move before mapping as reported by - Stephen J. Turnbull - -1999-08-30 Andy Piper - - * glyphs-x.c (x_finalize_image_instance): X_MASK -> PIXMAP_MASK - for assignment. - (init_image_instance_from_x_image): ditto. - (x_xpm_instantiate): ditto. - (x_colorize_image_instance): ditto. Reported by Richard Cognot - - -1999-08-29 Andy Piper - - * glyphs-x.c (x_widget_instantiate): move font initialisation so - that it doesn't get saved in the user defined args. - (x_tab_control_instantiate): Set the fg color of the tab's - children. - (x_tab_control_set_property): ditto. - -1999-08-27 Damon Lipparelli - - * events.h (XTIMEOUT): must preface Lisp_Timeout with ``struct'' - (XSETTIMEOUT): fixup typo - -1999-08-11 Jan Vroonhof - - * syntax.c (scan_words): Unified Mule and Non-mule scanning. - Word boundary search looks back instead of forward so that it - doesn't peek over the limit. - -1999-08-20 Olivier Galibert - - * config.h.in: Add PDUMP define. - * emacs.c (Fdump_emacs): Hackish, call pdump() if configured in. - - * lrecord.h: Enhance description system. - * alloc.c: Fix vector and string description. Add portable - dumper enumeration fonctions. - - * symbols.c: Fix symbols description. Add symbol_value_forward - description. - * eval.c: Add subr description. - * elhash.c (CLEAR_HENTRY): Clean value pointer too. Fix hash - table description. - (remhash_1): CLEAR_HENTRY evaluates the parameter two times now. - -1999-08-20 Olivier Galibert - - * opaque.c: Kill opaque lists, make Lisp_Opaque_Ptr a lrecord of - its own. - * opaque.h: Ditto. - - * eval.c (eval_in_buffer_trapping_errors): - (run_hook_trapping_errors): - (safe_run_hook_trapping_errors): - (call0_trapping_errors): - (call1_trapping_errors): - (call2_trapping_errors): OPAQUEP -> OPAQUE_PTRP. make_opaque_ptr - now takes a non-const void *. - -1999-08-20 Olivier Galibert - - * opaque.c: Remove make_opaque_long. - - * opaque.h: Remove everything opaque_long related. - - * eval.c (vars_of_eval): Make Qunbound_suspended_errors_tag an - opaque_ptr. - - * emacs.c (main_1): Remove make_opaque_long from comment. - -1999-08-20 Olivier Galibert - - * event-stream.c (mark_timeout): - (print_timeout): - (event_stream_generate_wakeup): - (event_stream_resignal_wakeup): - (event_stream_disable_wakeup): - (event_stream_wakeup_pending_p): - (vars_of_event_stream): Lisp_Timeout is now a lrecord. - - * events.h (struct Lisp_Timeout): Added. - -1999-08-24 Andy Piper - - * console-x.h: declare new pixmap signatures. - -1999-08-23 Andy Piper - - * glyphs-x.c (x_update_subwindow): make sure the widget size is - maintained after an update. - - * event-Xt.c (emacs_Xt_handle_magic_event): use - find_matching_subwindow to check whether the exposure is totally - inside a subwindow, if it is then ignore it. - - * glyphs.c (find_matching_subwindow): new function. - - * toolbar-x.c (x_draw_blank_toolbar_button): use new - x_output_shadows signature. - (x_output_toolbar_button): use new x_output_x_pixmap signature. - - * redisplay.h (struct display_box): new structure. - (struct display_glyph_area): ditto. - declare new display_box functions. - - * redisplay-x.c (x_output_pixmap): update for new display - box stuff. - (x_bevel_area): update to allow multiple edge styles and border - segments. - (x_output_display_block): update for new display_box stuff and - signatures. - (x_clear_region): ditto. - (x_output_x_pixmap): ditto. adjust offsets rather than clip. - (console_type_create_redisplay_x): declare new console methods. - (x_output_vertical_divider): update for new bevel_area signature. - (x_output_shadows): update to allow selective drawing of edges. - - * redisplay-tty.c (tty_output_display_block): do nothing for - layouts. - - * redisplay-output.c (redisplay_output_subwindow): convert to use - display_box structure, this allows us to put subwindows anywhere - with any offset, useful for layout glyphs. - (redisplay_output_layout): new function. output a layout and its - sub-glyphs. - (redisplay_output_pixmap): new modular function combining generic - parts of the X and mswindows versions. convert to use display_box - structures. - (redisplay_clear_clipped_region): new function. clear the area a - glyph is going into. - (redisplay_normalize_glyph_area): new function. calculate the - bounds of a display_glyph_area given a display_box. - (redisplay_normalize_display_box): new function. shrink a - display_box to enclose a display_glyph_area. - (redisplay_display_boxes_in_window_p): check whether the input - display_box and display_glyph_area are actually in a window. - (redisplay_calculate_display_boxes): calculate display boxes based - on conventional display_line metrics. - (bevel_modeline): update for new bevel_area signature. - - * redisplay-msw.c (mswindows_output_blank): update for new - display_box stuff. - (mswindows_output_string): ditto. - (mswindows_output_dibitmap): ditto. - (mswindows_output_dibitmap_region): ditto. - (mswindows_output_pixmap): ditto. - (mswindows_bevel_area): update to allow multiple edge styles and - border segments. - (mswindows_output_display_block): update for new display_box stuff - and signatures. - (mswindows_clear_region): ditto. - (console_type_create_redisplay_mswindows): declare new console methods. - - * lisp.h (edge_style): new enum. - declare display_box and display_glyph_area. - - * gutter.c (output_gutter): update for new bevel_area signature. - - * glyphs.h (image_instance_type): add layout. - (IMAGE_LAYOUT_MASK): ditto. - (LAYOUT_IMAGE_INSTANCEP): new macro. - (CHECK_LAYOUT_IMAGE_INSTANCE): ditto. - (struct Lisp_Image_Instance): add offsets for layout and the - layout type itself. move mask here also. - (IMAGE_INSTANCE_LAYOUT_CHILDREN): new macro. - (IMAGE_INSTANCE_LAYOUT_BORDER): ditto. - (XIMAGE_INSTANCE_LAYOUT_CHILDREN): ditto. - (XIMAGE_INSTANCE_LAYOUT_BORDER): ditto. - - * glyphs.c (mark_image_instance): update for layouts. - (print_image_instance): ditto. - (image_instance_equal): ditto. - (image_instance_hash): ditto. - (allocate_image_instance): initialise offsets for layout. - (decode_image_instance_type): update for layouts. - (encode_image_instance_type): ditto. - (Fimage_instance_height): ditto. - (Fimage_instance_width): ditto. - (allocate_glyph): ditto. - (glyph_width): allow image instances as an argument. update for layouts. - (glyph_height_internal): ditto. - (syms_of_glyphs): add layout symbols. - - * glyphs-x.h (struct x_image_instance_data): remove mask entry. - (IMAGE_INSTANCE_X_MASK): update. - - * glyphs-x.c (x_label_instantiate): new function. instantiate a - label. - (image_instantiator_format_create_glyphs_x): initialise new layout - glyph type. - - * glyphs-widget.c: new layout type. - (check_valid_orientation): new keyword checker for layouts. - (check_valid_justification): ditto. - (check_valid_border): ditto. - (check_valid_glyph_or_image_list): ditto. - (layout_possible_dest_types): new function for layout glyph type. - (layout_normalize): ditto. - (layout_instantiate): ditto. - (syms_of_glyphs_widget): new keywords for layout. - (image_instantiator_format_create_glyphs_widget): initialise the - layout glyph type. - - * glyphs-msw.h (struct mswindows_image_instance_data): remove mask - argument. - (IMAGE_INSTANCE_MSWINDOWS_MASK): update. - - * glyphs-msw.c: declare layout format. - (image_instantiator_format_create_glyphs_mswindows): initialise it. - - * general.c: new symbols for layouts. - - * console.h (struct console_methods): new console methods for - outputting pixmaps and strings. - -1999-08-23 Didier Verna - - * sound.c: revert the renaming of `bell_volume' to `Vbell_volume' - and `bell_inhibit_time' to `Vbell_inhibit_time'. - -1999-08-18 Andy Piper - - * redisplay-output.c (redisplay_output_subwindow): disable - clipping attempt. - -1999-08-17 Andy Piper - - * gutter.c (redraw_exposed_gutter): handle degenerate case of no - area to expose or no gutter to display. - -1999-08-16 Charles G Waldman - - * sound.c: rename `bell_volume' to `Vbell_volume' and - `bell_inhibit_time' to `Vbell_inhibit_time'. - -1999-08-13 Charles G Waldman - - * sound.c: (bell-inhibit-time): New variable. - (ding): Use it. - (sound-alist): Fix docstring. - -1999-08-17 Andy Piper - - * gui-x.c (button_item_to_widget_value): xstrdup name so that - deleting it is ok. - -1999-08-16 Jeff Miller - - * syntax.c (scan_words): make compile. - -1999-08-16 Andy Piper - - * redisplay-output.c (redisplay_output_subwindow): try and be more - relaxed about clipping possibilities. - - * glyphs-x.c (x_tab_control_set_property): free_widget_value_tree - rather than just the widget_value. - (x_update_subwindow): ditto. - (x_widget_instantiate): ditto. - - * gutter.c (output_gutter): shrink current display lines if - required. - -1999-08-15 Andy Piper - - * redisplay.h: declare free_display_lines. - - * redisplay.c (free_display_lines): make non-static. - - * gutter.c (free_frame_gutters): use free_display_lines instead of - Dynarr_free. - (calculate_gutter_size): ditto. - -1999-08-12 Jan Vroonhof - - * eval.c (run_hook_with_args_in_buffer): GCPRO globals. - -1999-08-14 Andy Piper - - * glyphs.c (update_subwindow_cachel): make it less brittle. - -1999-08-04 Mike Woolley - - * scrollbar-msw.c (mswindows_handle_mousewheel_event): Fixed - problem in wheelmouse code occurring when the horizontal scrollbar - is enabled but not visible. - -1999-08-08 Andy Piper - - * toolbar-msw.c (mswindows_redraw_frame_toolbars): new function. - (console_type_create_toolbar_mswindows): use it. - - * glyphs.c (Fset_image_instance_property): fiddly reorganisation. - - * redisplay-output.c (redisplay_output_display_block): unmap - subwindows in the block area before outputting the block. - - * event-msw.c (mswindows_wnd_proc): check the update rect before - painting and disable expose registration while painting. - - * glyphs.c (register_ignored_expose): check - hold_ignored_expose_registration before registering expose events. - - * redisplay.c (redisplay_frame): reset the subwindow cache before - displaying the gutter. - - * glyphs-msw.c (mswindows_map_subwindow): move the window before - mapping. - - * gutter.c (update_frame_gutters): check for glyphs_changed as if - it is the subwindow cache will have been reset. - -1999-08-06 Andy Piper - - * gui-x.c (button_item_to_widget_value): cope with strings. - - * glyphs.h: declare global widget functions. - (IIFORMAT_HAS_SHARED_DEVMETHOD): new macro. - - * glyphs-x.c (x_combo_box_instantiate): do generic initialization - here. remove dead code. - (image_instantiator_format_create_glyphs_x): enable combo boxes - for Motif 2.0. - - * glyphs-widget.c (widget_instantiate_1): make non-static. - (tree_view_instantiate): renamed from combo_box_instantiate. - (image_instantiator_format_create_glyphs_widget): use new/changed methods. - - * glyphs-msw.c (mswindows_combo_box_instantiate): do generic - initialization here. - - * lwlib-Xm.c (xm_update_combo_box): new function. - (xm_update_one_widget): call it. - (xm_update_one_value): deal with combo boxes as well as lists. - (xm_create_combo_box): create a drop-down combo box. - - * toolbar-msw.c (mswindows_output_toolbar): call - mswindows_move_toolbar. - -1999-08-05 Andy Piper - - * window.c (Fcurrent_pixel_column): new function. use display - lines to calculate pixel position of point. - * window.c (syms_of_window): declare it. - -1999-08-05 Andy Piper - - * glyphs.c (check_for_ignored_expose): ignore exposures wholly - contained in our ignore list. - - * buffer.c (Frecord_buffer): add call to record-buffer-hook. - (syms_of_buffer): declare record-buffer-hook. - - * s/mingw32.h: define mousewheel things. - -1999-08-04 Mike Woolley - - * windowsnt.h (_WIN32_WINNT): enable for win95 - - * s/cygwin32.h: define mousewheel things. - - * scrollbar-msw.h: declare mousewheel handler. - - * scrollbar-msw.c (mswindows_handle_mousewheel_event): new function. - -1999-08-04 Andy Piper - - * gui-x.c (gui_items_to_widget_values): remove unused variable. - (gui_items_to_widget_values_1): ditto. - - * gui-x.h: unconditionally define since it is used everywhere. - -1999-08-04 Andy Piper - - * glyphs-x.c (x_finalize_image_instance): only free pixels if we - have that type of image. - -1999-07-30 Andy Piper - - * redisplay-output.c (redisplay_unmap_subwindows): add comparison - subwindow to not unmap if required. - (redisplay_unmap_subwindows_maybe): comparison is Qnil. - (redisplay_unmap_subwindows_except_us): new function. - (redisplay_output_subwindow): use it to unmap windows in the area - we are displaying into. - - * glyphs.c (update_subwindow_cachel_data): always update as we - only ever get called when an update is required. - (update_subwindow_cachel): new function. sync a subwindow with its - cachel. - (Fresize_subwindow): use it. - (register_ignored_expose): make sure we set the tail correctly. - -1999-07-28 Andy Piper - - * redisplay-output.c (redisplay_clear_bottom_of_window): remove - unneeded device. - - * gutter.c (redraw_exposed_gutter): unmap subwindows from the - whole gutter. - - * gui.h: declare parse_gui_item_tree_list and - parse_gui_item_tree_children. - - * gui.c (parse_gui_item_tree_item): new function for parsing item - lists into gui-item trees. - (parse_gui_item_tree_children): ditto. - (parse_gui_item_tree_list): ditto. - - * gui-x.h: declare gui_items_to_widget_values. - - * gui-x.c (gui_items_to_widget_values_1): new function for - recursively parsing gui-items into widget_values. - (gui_item_children_to_widget_values): ditto. - (gui_items_to_widget_values): ditto. - (sanity_check_lwlib): add widgets macrolets. - - * glyphs.h (IMAGE_INSTANCE_WIDGET_ITEMS): rename from *ITEM. - (XIMAGE_INSTANCE_WIDGET_ITEMS): ditto. - (IMAGE_INSTANCE_WIDGET_ITEM): rename from *SINGLE_ITEM. - (XIMAGE_INSTANCE_WIDGET_ITEM): ditto. - (struct expose_ignore): new structure for storing ignorable expose - events. - - * glyphs.c (valid_image_instantiator_format_p): fix so that using - a console-type as a locale works. - (mark_image_instance): ITEM->ITEMS. - (image_instance_equal): ditto. - (image_instance_hash): ditto. - (struct expose_ignore_blocktype): new blocktype. - (check_for_ignored_expose): new function. checks frame exposure - list for events to ignore. - (register_ignored_expose): new function. registers an expose event - as ignorable. - (unmap_subwindow): register the expose event as ignorable. - (vars_of_glyphs): initialise the exposure blocktype. - - * glyphs-x.c (x_finalize_image_instance): use lw_destroy_widget. - (x_update_subwindow): modify all widgets using widget_value tree - rather than just a single widget value. - (x_widget_instantiate): LWLIB_USES_MOTIF -> LWLIB_WIDGETS_MOTIF. - make sure widgets don't resize themselves. - (x_tab_control_instantiate): new function. use lwlib tab functions. - (x_tab_control_set_property): new function. - (image_instantiator_format_create_glyphs_x): add tab_control. - - * glyphs-widget.c (widget_text_to_pixel_conversion): calculate - slightly more sensibly. - (initialize_widget_image_instance): ITEM->ITEMS. - (widget_instantiate_1): parse gui items generically into the ITEMS - entry. - - * glyphs-msw.c (mswindows_update_subwindow): replace - SINGLE_ITEM->ITEM. - (mswindows_register_widget_instance): ditto. - (add_tree_item): modify to use new pre-initialised gui-item - structure. - (add_tab_item): ditto. - (mswindows_tab_control_instantiate): ditto. - (mswindows_tab_control_set_property): ditto. - (image_instantiator_format_create_glyphs_mswindows): predicate - existance of widgets on HAVE_WIDGETS. - - * frame.h (struct frame): add subwindow_exposures variables. - - * frame.c (allocate_frame_core): reset subwindow_exposures links. - - * event-msw.c (mswindows_wnd_proc): check for ignored - expose events before redrawing. - - * event-Xt.c (emacs_Xt_handle_magic_event): check for ignored - expose events before redrawing. - -1999-07-30 SL Baur - - * scrollbar-x.c: should include EmacsFrame.h. - From Jeff Miller - -1999-07-30 XEmacs Build Bot - - * XEmacs 21.2.19 is released - -1999-07-27 Jeff Miller - - * add a "#ifdef HAVE_MENUBARS" wrapper to gui.c around - menubar_show_keybindings. - -1999-07-23 SL Baur - - * mule-charset.c (syms_of_mule_charset): Delete duplicated - definition of Qccl_program. - - * mule-ccl.h: Make a global declaration of it here. - -1999-07-20 Bob Weiner - - * s/sco7.h: Added from rr@sco.com. - -1999-06-25 MORIOKA Tomohiko - - * mule-ccl.c (ccl_driver): Fix `CCL_WriteMultibyteChar2'. - -1999-06-24 MORIOKA Tomohiko - - * file-coding.c (mule_decode): Setup `str->ccl.last_block'. - (mule_encode): Likewise. - - * mule-ccl.c (Qccl_program): New variable. - (CCL_SUSPEND): New macro. - (CCL_INVALID_CMD): New macro. - (CCL_READ_CHAR): Don't regard as invalid command while processing - the last block even if input is empty; use - `CCL_STAT_SUSPEND_BY_SRC' instead of `CCL_STAT_SUSPEND'. - (vars_of_mule_ccl): Setup `Qccl_program' and `Qccl_program_idx'. - - * mule-ccl.h (CCL_STAT_SUCCESS): Moved from mule-ccl.c. - (CCL_STAT_SUSPEND_BY_SRC): Imported from Emacs 20.3.10. - (CCL_STAT_SUSPEND_BY_DST): Likewise. - (CCL_STAT_INVALID_CMD): Moved from mule-ccl.c; change value from 2. - (CCL_STAT_QUIT): Moved from mule-ccl.c; change value from 3. - -1999-05-04 Ken'ichi Handa - - * mule-ccl.h (struct ccl_program): New member stack_idx. - - * mule-ccl.c (ccl_prog_stack_struct): Declare it as static. - (ccl_driver): Setup stack_idx and ccl_prog correctly. Update them - before returing. - (setup_ccl_program): Initialize ccl->stack_idx to 0. - -1998-10-12 Kenichi Handa - - * mule-ccl.c (CCL_DECODE_SJIS, CCL_ENCODE_SJIS): Swap the - definitions. - -1998-08-18 Kenichi Handa - - * mule-ccl.c (CCL_READ_CHAR): If eof is encounterd while - processing the last block, don't just finish but processes eol - block of the current CCL program. - (ccl_driver): Add a new jump label ccl_repeat for the above - change. - -1998-04-15 Kenichi Handa - - * mule-ccl.c: Typo in comments fixed. - (Qccl_program_idx): New variables. - (CCL_ReadMultibyteChar2): Macro name changed from - CCL_ReadMultibyteCharacter. - (CCL_WriteMultibyteChar2): Macro name changed from - CCL_WriteMultibyteChar2. - (ccl_driver): Adjusted for the above changes. - (resolve_symbol_ccl_program): New function. - (Fccl_execute): The arg CCL-PROGRAM can be a symbol of CCL - program. If CCL-PRGRAM is a vector, convert symbols in it to ID - numbers by resolve_symbol_ccl_program. - (Fccl_execute_on_string): Likewise. - (Fregister_ccl_program): If the arg CCL-PRGRAM is a vector, - convert symbols in it to ID numbers by resolve_symbol_ccl_program. - -1998-01-21 Kenichi Handa - - * mule-ccl.h: (struct ccl_program): New member private_state. - - * mule-ccl.c - (CCL_Call): Fix the comment. - (CCL_ReadMultibyteCharacter, CCL_WriteMultibyteCharacter): New - macros for CCL Commands. - (EXCMD): New macro. - (ccl_driver): New case lable `CCL_Extention'. - (setup_ccl_program): Initialize the member `private_state' of CCL. - -1999-07-08 Katsumi Yamaoka - - * keymap.c (copy_keymap_internal): Inherit the default binding. - -1999-07-14 Kazuyuki IENAGA - - * event-Xt.c (handle_focus_event_1): Re-enable Motif/XIM to get - focus the event (XIM_focus_event). - (emacs_Xt_handle_magic_event): No side effect on Motif/XIM because - XIM_SetGeometry does nothing in input_method_motif.c, but re-unify - the interface for future use (XIM_SetGeometry). - * redisplay-x.c (x_output_string): Re-enable Motif/XIM to set spot - location (XIM_SetSpotLocation). - (x_output_eol_cursor): Ditto. - -1999-07-17 Gunnar Evermann - - * gdbinit (pobj): change lrecord_foo to &lrecord_foo to match - Olivier's change to lrecord.h of 1999-04-22 - -1999-07-20 Robert Pluim - - * gutter.c (redraw_exposed_gutter): Change type of pos from - enum toolbar_pos -> enum gutter_pos, since former is only defined - if toolbar support is. - -1999-07-19 Andy Piper - - * glyphs-x.c (x_resize_subwindow): cope with widgets as well as - subwindows. - - * gutter.c (gutter_validate): new function for the gutter specifier. - (specifier_type_create_gutter): declare specifier validator. - - * buffer.h (INC_CHARBYTIND): add for no error checking version. - -1999-07-18 Andy Piper - - * redisplay.c (add_emchar_rune): use XSTRING_DATA not string_data. - - * glyphs-msw.c (console_type_create_glyphs_mswindows): add - resize_subwindow. - (mswindows_resize_subwindow): new function. - - * gutter.c (redraw_exposed_gutter): only reset the - current_display_lines if non-zero. - (Fgutter_pixel_height): new function. - (Fgutter_pixel_width): new function. - - * event-msw.c (mswindows_wnd_proc): set the mask of the parameter - we want to retrive from the tab control. - -1999-07-17 Andy Piper - - * window.c (change_window_height): mark gutters changed when we're - done. - - * gutter.c (specifier_vars_of_gutter): make defaults more - sensible. - - * gutter.h (WINDOW_REAL_GUTTER_BORDER_WIDTH): adjust to be 0 for 0 - height gutter. - (DEFAULT_GUTTER_WIDTH): change. - (DEFAULT_GUTTER_BORDER_WIDTH): change. - -1999-07-18 Andy Piper - - * redisplay.c (add_emchar_rune): use XSTRING_DATA not string_data. - -1999-07-16 Andy Piper - - * frame.c (Fmake_frame): call init_frame_gutters(). - - * redisplay.c (add_emchar_rune): use string functions if we are - working with a string. - (position_redisplay_data_type): add string element. - -1999-07-15 Andy Piper - - * winslots.h: add real_gutter_size slots to hold the actual gutter - size. This is important for autodetected sizes. - - * gutter.c (calculate_gutter_size): calculate size for gutters - that have 'autodetect size. - - * redisplay-msw.c (mswindows_output_vertical_divider): adjust - extent of divider for gutters. - - * redisplay-x.c (x_output_vertical_divider): adjust extent of - divider for gutters. - - * scrollbar.c (update_scrollbar_instance): adjust scrollbar - position to take into account the gutters. - - * redisplay.c (generate_modeline): adjust modeline position to - take into account the gutters. - -1999-07-14 Andy Piper - - * gutter.c (frame_topmost_window): new function. - (frame_bottommost_window): ditto. - (frame_leftmost_window): ditto. - (frame_rightmost_window): ditto. - -1999-07-13 Andy Piper - - * redisplay.c (calculate_display_line_boundaries): use text - boundaries so that gutters get handled properly. - -1999-07-12 Andy Piper - - * glyphs-x.c (x_widget_instantiate): set the font Motif-style if - we're using Motif. - - * redisplay-output.c (redisplay_clear_to_window_end): generalised - from redisplay-x.c - - * redisplay-x.c (redisplay_clear_to_window_end): moved to - redisplay.c - - * redisplay-msw.c (redisplay_clear_to_window_end): deleted. - - * gutter.c: new file - implements gutters. All new functions are - semantically equivalent to the toolbar functions. - (gutter_was_visible): new function. - (get_gutter_coords): ditto. - (output_gutter): ditto. - (clear_gutter): ditto. - (update_frame_gutters): ditto. - (redraw_exposed_gutter): ditto. - (redraw_exposed_gutters): ditto. - (free_frame_gutters): ditto. - (init_frame_gutters): ditto. - (decode_gutter_position): ditto. - (Fset_default_gutter_position): ditto. - (Fset_default_gutter_position): ditto. - (Fdefault_gutter_position): ditto. - (gutter_after_change): ditto. - (Fgutter_specifier_p): ditto. - (recompute_overlaying_specifier): ditto. - (gutter_specs_changed): ditto. - (default_gutter_specs_changed): ditto. - (gutter_geometry_changed_in_window): ditto. - (default_gutter_size_changed_in_window): ditto. - (default_gutter_border_width_changed_in_window): ditto. - (default_gutter_visible_p_changed_in_window): ditto. - (syms_of_gutter): ditto. - (vars_of_gutter): ditto. - (specifier_type_create_gutter): ditto. - (specifier_vars_of_gutter): ditto. - - * gutter.h: new file. Contains gutter constants and sizing macros - similar to those for the toolbar. - - * winslots.h: add gutter variables. - - * window.h: declare window_is_* functions. - - * window.c (window_is_lowest): make non-static. - (window_is_highest): ditto. - (window_top_toolbar_height): deleted. - (window_bottom_toolbar_height): deleted. - (window_left_toolbar_width): deleted. - (window_right_toolbar_width): deleted. - (window_top_gutter_height): add gutter sizing. - (window_bottom_gutter_height): ditto. - (window_left_gutter_width): ditto. - (window_right_gutter_width): ditto. - - * symsinit.h: declarations for gutters vars etc. - - * search.c (bi_find_next_emchar_in_string): new function. - - * scrollbar.c (update_scrollbar_instance): remove reference to - window_bottom_toolbar_height which did nothing. - - * redisplay.h (struct display_line): add face indices for - overriding defaults in output_display_line. - Add gutter_changed flags and declarations. - - * redisplay.c (create_string_text_block): new function, similar to - create_text_block but for strings. Display tables etc are used - from the currently selected window. - (generate_string_display_line): ditto. Similar to - generate_display_line. - (generate_displayable_area): generate display lines for a given - area on a frame. Input is the string, with associated extents, to - display. - (redisplay_frame): add gutter_changed check. - (redisplay_device): ditto. - (redisplay_without_hooks): ditto. - - * redisplay-x.c (bevel_modeline): moved to redisplay.c. - (x_redraw_exposed_area): redraw exposed gutters. - (x_bevel_area): new redisplay device method. - (x_type_create_redisplay_mswindows): add bevel_area device method. - (x_output_display_block): fiddly Martin-style cleanup. - (x_output_vertical_divider): use bevel_area. - - * redisplay-output.c (output_display_line): check display_lines - for face information before using defaults. - (bevel_modeline): new function, calls bevel_area with appropriate - values. - - * redisplay-msw.c (bevel_modeline): moved to redisplay.c. - (mswindows_redraw_exposed_area): redraw exposed gutters. - (mswindows_bevel_area): new redisplay device method. - (console_type_create_redisplay_mswindows): add bevel_area device - method. - - * indent.c (string_column_at_point): add column_at_point but for - strings. - - * glyphs-x.c (image_instantiator_format_create_glyphs_x): only - instantiate widgets that we have a toolkit for. - - * general.c: add Qgutter. - - * frame.h (struct frame): add display lines for gutters and - visibility flags. - - * frame.c (set_frame_selected_window): mark gutters changed. - - * emacs.c (main_1): add gutter initialisation. - - * device.h (struct device): add gutter_changed flag and macros to - manipulate it. - - * console.h (struct console_methods): new bevel area redisplay - method. - - * buffer.h (REAL_INC_CHARBYTIND): new macro for strings as - REAL_INC_BYTIND is for buffers. - (INC_CHARPTR): ditto. - - * Makefile.in.in (objs): add gutter.o - -1999-07-13 XEmacs Build Bot - - * XEmacs 21.2.18 is released - -1999-07-08 SL Baur - - * event-Xt.c (handle_focus_event_1): Guard FRAME_X_XIC with - XIM_XLIB. - (emacs_Xt_handle_magic_event): Ditto. - * redisplay-x.c (x_output_string): Ditto. - (x_output_eol_cursor): Ditto. - -1999-06-30 Kazuyuki IENAGA - - * event-Xt.c, input-method-xlib.c, redisplay-x.c: Avoid the - problem that when XIM is destroyed or missed with some reason, - xemacs will die. Now xim=xlib waits the XIM will be ready and - endures the case of XIM end up. - -1999-07-03 Gunnar Evermann - - * tooltalk.c (init_tooltalk): save signal actions for SIGQUIT, - SIGINT and SIGCHLD before calling tt_open and restore the - afterwards. This fixes e.g. the zombie subprocesses on Solaris - -1999-07-06 SL Baur - - * s/linux.h: gcc-2.8 changes for powerpc - From Justin Vallon - -1999-07-05 Didier Verna - - * indent.c: new symbol Qcoerce. - (Fmove_to_column): use it + doc string update. - -1999-07-04 Andy Piper - - * console.c: undo earlier Fprovide changes. - * fns.c: ditto. - * console.h: ditto. - - * console-tty.c (image_instantiator_format_create_glyphs_tty): new - function. validate appropriate image formats for tty. - - * glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM): - initialize consoles parameter. - (struct image_instantiator_methods): add consoles parameter. - (IIFORMAT_VALID_CONSOLE): new function. validate the format on the - console. - (INITIALIZE_DEVICE_IIFORMAT): validate the format on the given - console. - - * glyphs-msw.c: declare instantiators for later use. - (image_instantiator_format_create_glyphs_mswindows): validate xpm - and friends on the mswindows console. - * glyphs-x.c: ditto. - - * glyphs.c (valid_image_instantiator_format_p): disallow glyphs - that have not been registered on the supplied device. - (Fvalid_image_instantiator_format_p): add locale argument. - (instantiate_image_instantiator): valid image instantiator on the - device. - - * symsinit.h: add image_instantiator_format_create_glyphs_tty() - declaration. - - * emacs.c (main_1): add call to - image_instantiator_format_create_glyphs_tty(). - -1999-06-29 Olivier Galibert - - * lisp.h: Add #include . - - * sysdep.c: Remove #include . - * symbols.c: Remove #include . - * sheap.c: Remove #include . - * opaque.c: Remove #include . - * nt.c: Remove #include . - * mule-charset.c: Remove #include . - * marker.c: Remove #include . - * file-coding.c: Remove #include . - * extents.c: Remove #include . - * elhash.c: Remove #include . - * data.c: Remove #include . - * chartab.c: Remove #include . - * bytecode.c: Remove #include . - * alloc.c: Remove #include . Fix vector description - -1999-06-30 SL Baur - - * editfns.c: Document "%s" format spec. - Suggested by Bob Weiner - -1999-06-29 Andy Piper - - * event-msw.c: fix definition booboo. - -1999-06-28 Andy Piper - - * glyphs-x.c: change tree -> tree-view, progress -> - progress_gauge, edit -> edit-field, tab -> tab-control, combo -> - combo-box. - (complex_vars_of_glyphs_x): provide-on-console the implemented - widget types. - - * glyphs-msw.c: ditto. - (complex_vars_of_glyphs_mswindows): ditto. - - * lisp.h: add Fprovide_on_console. - - * fns.c (Ffeaturep): add extra optional console argument. - (Fprovide_on_console): like Fprovide but provides only on the - specified console-type. - (Frequire): check console-features as well as global features. - - * console.c (Fconsole_features): new function. return features for - this console. - (syms_of_console): add Fconsole_features. - - * console.h (CONMETH_FEATURES): new function for accessing features. - (CONSOLE_FEATURES): ditto. - (struct console_methods): add features slot. - (INITIALIZE_CONSOLE_TYPE): initialize features slot. - -1999-06-28 Andy Piper - - * event-Xt.c (handle_focus_event_1): conditionally compile for - X11R5. - - * s/cygwin32.h: fix me website address. - - * event-msw.c: add NMHDR for pre b20 cygwin builds. - - * gui-x.c (button_item_to_widget_value): only add callback if it - is non-nil. - - * glyphs-x.c: add progress, edit and combo instantiators. - (x_widget_set_property): new function. uses lwlib to set widget - values. - (x_widget_property): new function. uses lwlib to get widget - values. - (x_button_instantiate): support images in buttons. - (x_button_property): new function. use lwlib to get the selected - state. - (x_progress_instantiate): new function for instantiating progress - gauges. - (x_progress_set_property): new function. sets the progress gauge - position. - (x_edit_instantiate): new function. for instantiating edit fields. - (x_combo_instantiate): new function. for instantiating combo - boxes. - (image_instantiator_format_create_glyphs_x): add new device ii - formats. - - * glyphs-msw.c (mswindows_tab_instantiate): remove redundant var. - - * console.h (CONSOLE_FEATURES): new features accesor. - - * conslots.h (MARKED_SLOT): add features entry. - -1999-06-25 Andy Piper - - * menubar-x.c (menu_item_descriptor_to_widget_value_1): use new - gui functions. - - * menubar-msw.c: move MAX_MENUITEM_LENGTH to gui.h - - * gui.h (struct Lisp_Gui_Item): add accelerator. - - * gui.c (gui_item_add_keyval_pair): deal with accelerators. - (gui_item_init): ditto. - (gui_add_item_keywords_to_plist): ditto. - (mark_gui_item): ditto. - (gui_item_hash): ditto. - (gui_item_accelerator): new function. - (gui_name_accelerator): new function stolen from gui-x.c - - * gui-x.c (popup_selection_callback): always define. mark - subwindows changed after calling a callback. - (menu_name_to_accelerator): deleted. - (button_item_to_widget_value): forward gui_item things to gui_item - functions. - - * glyphs-x.h (struct x_subwindow_data): add data for widgets. add - appropriate accesors. - - * glyphs-x.c: declare new glyph formats. - (x_finalize_image_instance): unmanage and destroy widgets if they - exist. - (x_unmap_subwindow): handle widgets specially. - (x_map_subwindow): ditto. offset display of widgets by offset of - text widget within container. - (x_update_subwindow): new function. call lw_modify_all_widgets - when we are a widget. - (x_widget_instantiate): new function for generically creating - widgets-glyphs. toolkit specifics forwarded to lwlib. - (x_button_instantiate): new function for instantiating - widgets-glyph buttons. - (console_type_create_glyphs_x): register update_subwindow. - (image_instantiator_format_create_glyphs_x): register widget and - button types. - - * event-msw.c (mswindows_wnd_proc): remove redundant variable. - - * event-Xt.c (x_event_to_emacs_event): call handle_focus_event_1 - when we get a button press in case we do not have the focus. - (handle_focus_event_1): set the keyboard focus to the text widget - if we do not have it. - - * dialog-x.c (dbox_descriptor_to_widget_value): use new gui_item - functions. - -1999-06-24 SL Baur - - * syntax.c (scan_words): Restore non-Mule code. - (word_constituent_p): Restore. - -1999-06-23 Olivier Galibert - - * config.h.in: Add missing #undef *_USER_DEFINED. - -1999-06-23 SL Baur - - * lisp.h (set_bit_vector_bit): Force promotion to unsigned long - int (fixes a 64-bit problem). - - * chartab.c (word_boundary_p): Use EQ not == for lisp_object - comparison. - -1999-03-23 Michael Sperber [Mr. Preprocessor] - - * paths.h.in (PATH_DOC): Made doc-directory configurable. - -1999-06-22 Olivier Galibert - - * lrecord.h: Added basic external description system. - - * symbols.c: Added symbol, symbol-value-buffer-local, - symbol-value-lisp-magic and symbol-value-varalias description. - * mule-charset.c: Added charset description. - * marker.c: Added marker description. - * keymap.c: Added keymap description. - * glyphs.c: Added glyph description. - * floatfns.c: Added float description. - * file-coding.c: Added coding-system description. - * extents.c: Added extent description. - * elhash.c: Added hash-table description. - * data.c: Added weak-list desciption. - * chartab.c: Added char-table-entry and char-table description. - * bytecode.c: Added compiled-function description. - * alloc.c: Added cons, vector and string description. - -1999-06-22 Olivier Galibert - - * lrecord.h (struct lrecord_header): Reduced size to 4 bytes. - Updated everything to the removal of the "flags" substructure. - - * lisp.h (subr_lheader_initializer): Updated. - * symeval.h (symbol_value_forward_lheader_initializer): Updated. - -1999-06-20 MORIOKA Tomohiko - - * syntax.c (word_constituent_p): Deleted. - (scan_words): Use `WORD_BOUNDARY_P'. - - * chartab.c (Vword_combining_categories): New variable. - (Vword_separating_categories): Likewise. - (CATEGORYP): New macro. - (CATEGORY_SET): Likewise. - (CATEGORY_MEMBER): Likewise. - (word_boundary_p): New function. - (complex_vars_of_chartab): Set up new variable - `word-combining-categories' and `word-separating-categories'. - -1999-06-18 Olivier Galibert - - * lrecord.h: Added description as a placehold in the lrecord - implementation structures. Added the parameter to all constructor - defines. - - * alloc.c: Added placeholders. - * buffer.c: Ditto. - * bytecode.c: Ditto. - * chartab.c: Ditto. - * console.c: Ditto. - * data.c: Ditto. - * database.c: Ditto. - * device.c: Ditto. - * eldap.c: Ditto. - * elhash.c: Ditto. - * eval.c: Ditto. - * event-stream.c: Ditto. - * events.c: Ditto. - * extents.c: Ditto. - * faces.c: Ditto. - * file-coding.c: Ditto. - * floatfns.c: Ditto. - * fns.c: Ditto. - * frame.c: Ditto. - * glyphs.c: Ditto. - * gui-x.c: Ditto. - * keymap.c: Ditto. - * lstream.c: Ditto. - * marker.c: Ditto. - * mule-charset.c: Ditto. - * objects.c: Ditto. - * opaque.c: Ditto. - * process.c: Ditto. - * rangetab.c: Ditto. - * specifier.c: Ditto. - * symbols.c: Ditto. - * toolbar.c: Ditto. - * tooltalk.c: Ditto. - * window.c: Ditto. - -1999-06-22 XEmacs Build Bot - - * XEmacs 21.2.17 is released - -1999-06-13 Oscar Figueiredo - - * config.h.in (HAVE_LDAP_SET_OPTION): New define - (HAVE_LDAP_GET_LDERRNO): Ditto - (HAVE_LDAP_RESULT2ERROR): Ditto - (HAVE_LDAP_PARSE_RESULT): Ditto - (HAVE_UMICH_LDAP): Removed - (HAVE_NS_LDAP): Removed - - * eldap.h (struct Lisp_LDAP): Removed the `livep' member as - suggested by Olivier Galibert - (CHECK_LIVE_LDAP): Test on `ld' instead of `livep' - - * eldap.c: Take the removal of `livep' into account in all the - necessary functions - (signal_ldap_error): Take two additional parameters - Added new finer compilation conditions in order to use - ldap_parse_result or ldap_result2error if available - (Fldap_open): Conform to this new API - (Fldap_search_internal): Ditto - -1999-06-17 SL Baur - - * data.c (struct int_or_double): Should use EMACS_INT not int. - -1999-06-16 Norbert Koch - - * redisplay-msw.c: Run 'ccl_driver' with 'CCL_MODE_ENCODING' as in - redisplay-x.c - -1999-06-12 MORIOKA Tomohiko - - * redisplay-x.c (separate_textual_runs): Run `ccl_driver' with - `CCL_MODE_ENCODING'. - - * file-coding.c (mule_decode): Run `ccl_driver' with - `CCL_MODE_DECODING'. - (mule_encode): Run `ccl_driver' with `CCL_MODE_ENCODING'. - - * mule-ccl.c (CCL_WRITE_CHAR): Refer `conversion_mode'. - (ccl_driver): Add new argument `conversion_mode'. - (Fccl_execute): Run `ccl_driver' with `CCL_MODE_ENCODING'. - (Fccl_execute_on_string): Likewise [perhaps it is better to add - new optional argument]. - - * mule-ccl.h (CCL_MODE_ENCODING): New macro. - (CCL_MODE_DECODING): New macro. - (ccl_driver): Add new argument `conversion_mode'. - -1999-06-15 SL Baur - - * mule-charset.c (Fsplit_char): New subr. - (Fchar_octet): delete. - (syms_of_mule_charset): DEFSUBR it. - -1999-06-13 Andy Piper - - * menubar.h: update declarations involving gui_items. - - * lisp.h: declare Lisp_Gui_Item. - - * glyphs.h (struct Lisp_Image_Instance): update type of gui_item. - - * glyphs.c (mark_image_instance): modify for new lisp-based gui_items. - (print_image_instance): ditto. - (image_instance_equal): ditto. - (image_instance_hash): ditto. - - * event-msw.c (mswindows_need_event): assert badly_p status. - (mswindows_wnd_proc): modify WM_NOTIFY handling to cope with - callbacks in tree-view and tab-control widgets. - (emacs_mswindows_next_event): modify use of - mswindows_dequeue_dispatch_event. - - * dialog-msw.c (mswindows_popup_dialog_box): modify for new - lisp-based gui_items. - - * glyphs-msw.c (mswindows_update_subwindow): update use of - gui_items. - (mswindows_register_gui_item): new function. - (mswindows_register_gui_item): fix to use lisp gui_items. - (mswindows_widget_instantiate): ditto. - (mswindows_button_instantiate): ditto. - (add_tree_item): new function to recursively add tree view - elements. - (add_tree_item_list): ditto. - (mswindows_tree_instantiate): new function. instantiate tree view - controls. - (add_tab_item): new function to add tabs to a tab control. - (mswindows_tab_instantiate): new function. instantiate tab - controls. - (image_instantiator_format_create_glyphs_mswindows): add tree view - and tab controls. - (vars_of_glyphs_mswindows): ditto. - - * glyphs-widget.c (check_valid_item_list_1): allow nested lists in - item lists. - (check_valid_item_list): ditto. - (initialize_widget_image_instance): fix to use new lisp gui_item. - (widget_instantiate_1): allow the setting of default textwidth in - characters. - (widget_instantiate): change to use new widget_instantiate_1 - signature. - (combo_instantiate): ditto. - (static_instantiate): ditto. - (tab_instantiate): new function for tab widgets. - (image_instantiator_format_create_glyphs_widget): add tab and tree - view widgets. - - * menubar-msw.c (displayable_menu_item): convert to use lisp - gui_items. - (populate_menu_add_item): ditto. - (populate_or_checksum_helper): ditto. - - * menubar.c (menu_parse_submenu_keywords): convert to use lisp - gui_items. - (Fmenu_find_real_submenu): ditto. - - * gui.h (struct Lisp_Gui_Item): make gui_item a lisp oebjct. - - * gui.c (gui_item_add_keyval_pair): gui_items are now lisp - objects, convert functions that use them accordingly. - (gui_item_init): ditto. - (gui_item_active_p): ditto. - (gui_item_selected_p): ditto. - (gui_item_included_p): ditto. - (gui_item_display_flush_left): ditto. - (gui_item_display_flush_right): ditto. - (mark_gui_item): ditto. - (allocate_gui_item): new function to create a gui_item. - (make_gui_item_from_keywords_internal): ditto. create and return a - gui_item as well as setting keywords. - (gui_parse_item_keywords): ditto. - (gui_parse_item_keywords_no_errors): ditto. - (gui_add_item_keywords_to_plist): new function, not yet used. - (gui_item_hash): new function. - (gui_item_id_hash): use gui_item_hash. - (gui_item_equal): new function. - (print_gui_item): new function. - -1999-06-11 XEmacs Build Bot - - * XEmacs 21.2.16 is released - -1999-06-10 Andy Piper - - * select-msw.c (mswindows_own_selection): only set the clipboard - if asked. - (mswindows_get_foreign_selection): only get the clipboard if - asked. - (mswindows_disown_selection): only disown the clipboard if asked. - -1999-06-03 MORIOKA Tomohiko - - * file-coding.c (coding_system_from_mask): Use `raw-text' instead - of `no-conversion'. - (complex_vars_of_mule_coding): Use `raw-text' as the coding-system - of coding-category `no-conversion'. - -1999-06-03 MORIOKA Tomohiko - - * file-coding.c (Qraw_text): New variable. - (syms_of_mule_coding): Add new symbol `raw-text'. - (complex_vars_of_mule_coding): Add new coding-system `raw-text'; - define coding-system `binary' independently; define coding-system - `no-conversion' as an alias for `raw-text'. - - * file-coding.h (Qraw_text): New variable. - -1999-06-08 SL Baur - - * s/decosf4-0.h: Explicitly #undef SYSTEM_MALLOC. - -1999-06-06 Hrvoje Niksic - - * fns.c (MIME_LINE_LENGTH): Default to 72, as in mimencode and - base64.el. - (base64_decode_1): Signal errors instead of returning -1. - -1999-06-07 Hrvoje Niksic - - * mule-charset.c (Fmake_char): Update docstring. - -1999-06-07 Hrvoje Niksic - - * fns.c (Fstring_lessp): Actually increment the Bufbyte pointers. - -1999-06-05 Hrvoje Niksic - - * fns.c (base64_decode_1): Allow and ignore any non-base64 - characters in input. - -1999-05-27 Olivier Galibert - - * emacs.c (Fdump_emacs): Add clear_message() lost with the removal - of report_pure_usage(). - -1999-06-04 Hrvoje Niksic - - * fns.c (Fstring_lessp): Remove O(n^2) under Mule. - -1999-06-04 XEmacs Build Bot - - * XEmacs 21.2.15 is released - -1999-06-01 Hirokazu FUKUI - - * frame.c (Fset_mouse_position): - (Fset_mouse_pixel_position): - * window.c (Fsplit_window): - (Fmove_to_window_line): - Fix crash when invoking functions with an already-deleted window - argument. - - * indent.c (vertical_motion_1): - (vmotion_pixels): - (Fvertical_motion_pixels): - * window.c (Fwindow_displayed_text_pixel_height): - Fix error message when invoking functions with an already-deleted - window argument. - -1999-06-01 Jan Vroonhof - - * sysdep.c (request_sigio_on_device): Guard against glibc - 2.1's stub streams implementation. - -1999-06-03 SL Baur - - * config.h.in: - * emacs.c: Implement x.y.z version numbers - From Jan Vroonhof - -1999-05-20 MORIOKA Tomohiko - - * mule-charset.c (complex_vars_of_mule_charset): Registry of - japanese-jisx0208-1978 should not match with "jisx0208.1983" nor - "jisc6226.1983". - -1999-06-03 SL Baur - - * frame-x.c: - * device-x.c: rename session option to wmcommand. - From Oliver Graf - -1999-05-27 Hrvoje Niksic - - * fns.c (Fsubstring): Don't traverse the same region twice with - charcount_to_bytecount(). - -1999-06-03 SL Baur - - * m/alpha.h (SYSTEM_MALLOC): Fix indented preprocessor directive - garbage. - - * s/decosf4-0.h: Defining ORDINARY_LINK here is redundant (and it - doesn't really work as is implied by the commentary). - Don't define SYSTEM_MALLOC so the old GNU malloc can be used. - -1999-06-02 SL Baur - - * symsinit.h: Declare vars_of_ntproc. - * emacs.c (main_1): Call it. - - * ntproc.c (syms_of_ntproc): Move variable initializations from - here ... - (vars_of_ntproc): ... to here [new function]. - - * file-coding.c (syms_of_file_coding): Rename. - (vars_of_file_coding): Ditto. - (complex_vars_of_file_coding): Ditto. - - * symsinit.h: Rename *_mule_coding to *_file_coding. - - * emacs.c (main_1): Call them by the proper name. - - * device-msw.c (syms_of_device_mswindows): Move variable - initializations from here ... - (vars_of_device_mswindows): ... to here. - - * chartab.c (vars_of_chartab): New function. - - * symsinit.h: New function, vars_of_chartab. - - * emacs.c (main_1): Call it. - - * mule-canna.c (syms_of_mule_canna): Move CANNA initialization ... - (vars_of_mule_canna): ... to here. - - * mule-ccl.c (vars_of_mule_ccl): New function. Move variable - initializations out of syms_of_mule_ccl. - - * symsinit.h: Declare new function vars_of_mule_ccl. - - * emacs.c (main_1): Call it. - -1999-05-27 Hrvoje Niksic - - * fns.c (base64_decode_1): Ignore whitespace. - -1999-05-27 Hrvoje Niksic - - * mule-charset.c (Fmake_char): Strip the eighth bit off ARG1 and - ARG2. - -1999-05-21 Andy Piper - - * xselect.c: deleted. - - * symsinit.h: declare select initialisation. - - * select.h: new file. declare commonly used select functions and - variables. - - * select.c: new file. generalised from xselect.c. - (clean_local_selection_data): moved from xselect.c. - (get_local_selection): ditto. device specific pieces called via a - devmeth. - (handle_selection_clear): ditto. - (Fown_selection_internal): renamed and generalised from - Fx_own_selection_internal. moved from xselect.c. - (Fdisown_selection_internal): ditto. - (Fselection_owner_p): ditto. - (Fselection_exists_p): ditto. - (Fget_selection_internal): ditto. - (syms_of_select): new function. QXXXX values moved from xselect.c - (vars_of_select): new function. selection_converter_alist, - lost_selection_hooks moved and renamed from xselect.c - - * select-x.c: renamed from xselect.c. - (x_own_selection): converted to device specific. non-X-specific - bits moved to select.c. - (x_get_foreign_selection): ditto. - (x_disown_selection): ditto. - (x_selection_exists_p): ditto. - (console_type_create_select_x): new function. - - * select-msw.c (mswindows_own_selection): new device method to set - the clipboard when we 'own' the selection. - (mswindows_get_foreign_selection): new device method to get the - clipboard. - (mswindows_disown_selection): new device method to delete the - selection when we 'disown' it. - (console_type_create_select_mswindows): new function. - - * emacs.c (main_1): add select to things to initialise. - - * console.h (struct console_methods): new console methods for - selection. - - * Makefile.in.in (x_objs): xselect.c renamed to select-x.c - -1999-05-20 Hrvoje Niksic - - * print.c (long_to_string): Install a faster version. - -1999-05-16 Andy Piper - - * ntproc.c (syms_of_ntproc): default - win32-start-process-share-console to t. - -1999-05-14 Hrvoje Niksic - - * config.h.in: Do it here. - - * bytecode.c: Don't define ERROR_CHECK_TYPECHECK here. - -1999-05-14 Andy Piper - - * toolbar-msw.c (mswindows_output_toolbar): hash on something - hashable. - -1999-05-14 XEmacs Build Bot - - * XEmacs 21.2.14 is released - -1999-05-12 Andy Piper - - * ntproc.c (sys_spawnve): kludge argv[0] in a MS compatible way. - -1999-05-11 Gunnar Evermann - - * emacs.c (Frun_emacs_from_temacs): (re)alloc natgs+2 entries for - run_temacs_argv array -- fixes random memory corruption crash - -1999-05-12 Jan Vroonhof - - * window.c (Fcurrent_window_configuration): - Save minibuffer height; - - * window.c (set_window_configuration): use it. - -1999-05-10 Robert Pluim - - * lisp.h (NNUNGCPRO): fix typo in name of DEBUG_GCPRO version - -1999-04-21 Jan Vroonhof - - * redisplay.c (redisplay_window): Do not put data - in the line start cache if it is not guaranteed to be correct - -1999-04-02 Jan Vroonhof - - * window.c (struct window_config): Removed frame - size members. - (window_config_equal): No longer compare frame sizes. - (Fset_window_configuration): Resize old top window to fit in the - current frame directly, no longer use a fake frame resize. - (Fcurrent_window_configuration): No longer save frame size - -1999-05-11 Andy Piper - - * ntproc.c (sys_spawnve): actually assign argv[0] instead of the - first character. - -1999-05-10 Hrvoje Niksic - - * sysdep.c (init_system_name): If gethostname gives a proper - domain name, don't look further for one. - -1999-05-09 Hrvoje Niksic - - * symbols.c (Fintern): Avoid frequent XSYMBOL (foo). - (Fintern_soft): Accept a symbol argument. - -1999-05-06 Hrvoje Niksic - - * symbols.c (Fintern): ...do it here. - - * lread.c (read_atom): Don't handle keywords here. - -1999-05-06 Hrvoje Niksic - - * symbols.c (reject_constant_symbols): Just use SYMBOL_IS_KEYWORD. - -1999-05-03 Olivier Galibert - - * lisp.h (SYMBOL_IS_KEYWORD): A symbol can be a keyword only if it - is interned in the main obarray. - -1999-04-23 Gunnar Evermann - - * menubar-x.c (pre_activate_callback): set accelerator field in - "No menu" entries to nil. Avoid crash in - command_builder_operate_menu_accelerator - -1999-05-03 Olivier Galibert - - * symeval.h (symbol_value_forward_lheader_initializer): Ditto. - - * lisp.h (DEFUN): Fix lrecord header initialisation. - -1999-05-02 Andy Piper - - * objects-msw.c (mswindows_font_instance_truename): add a ';'. - - * ntproc.c (sys_kill): cast using MS mandated defines. - -1999-04-29 Andy Piper - - * m/intel386.h: remove redundant definitions. - - * s/mingw32.h: new header for mingw32. - - * unexnt.c: (open_input_file): function moved to nt.c. - (close_file_data): ditto. - (rva_to_section): function moved to ntproc. - - * symsinit.h: declare syms_of_ntproc(); - - * objects-msw.c (mswindows_font_instance_truename): new function. - - * ntproc.c: remove many warnings. - (_sys_read_ahead): moved from nt.c and made static. - (rva_to_section): moved from unexnt.c but not defined under - mingw32. - (win32_executable_type): implement what we can for mingw32 - headers. - (sys_spawnve): fix bad MULE/GCPRO bug in filename handling. - - * ntheap.h: remove declarations of functions that are now static. - - * ntheap.c: support static heap. - - * nt.h: conditionalise X_OK definition. - - * nt.c: eliminate many warnings and support mingw32. - (open_input_file): function moved from unexnt.c and made static - (close_file_data): ditto. - (_sys_read_ahead): moved to ntproc.c - - * emacs.c: make sure syms_of_ntptroc gets called under windows. - - * console-msw.h: support mingw32. - * getloadavg.c: ditto. - * ntplay.c: ditto. - * sysdep.c: ditto. - * sysdir.h: ditto. - * systime.h: ditto. - * systty.h: ditto. - - * config.h.in: dont turn on DEBUG_ENCAPSULATION by default because - some systems don't have all of the encapsulated system calls. - - * callproc.c: warning elimination. - * dired-msw.c: ditto. - * process-nt.c: ditto. - * realpath.c: ditto. - - * Makefile.in.in: tweak : and ; for building under mswindows. - -1999-04-26 Michael Harnois - - * eldap.c (allocate_ldap): Adapt to the new semantics of - alloc_lcrecord_type(). - -1999-03-16 MORIOKA Tomohiko - - * file-coding.c (DECODE_HANDLE_END_OF_CONVERSION): fixed. - -1998-09-04 MORIOKA Tomohiko - - * Delete mule-coding.c and mule-coding.h because they are not - used. - -1999-04-22 Gunnar Evermann - - * objects.c (print_font_instance): Check for NILP(f->device), - i.e. Vthe_null_font_instance. - (font_instance_truename_internal): ditto. - (Ffont_instance_properties): ditto. - -1999-04-22 Olivier Galibert - - * lrecord.h (DECLARE_LRECORD): lrecord_implementation isn't an - array anymore. - -1999-04-22 Hrvoje Niksic - - * Makefile.in.in (tests): Don't mention tests explicitly -- makes - it easier to add new ones. - -1999-04-22 Hrvoje Niksic - - * symbols.c (reject_constant_symbols): Ditto. - (init_symbols_once_early): Ditto. - - * print.c (print_symbol): Don't use ->obarray. - - * symbols.c (Funintern): Ditto. - - * alloc.c (Fmake_symbol): Don't set ->obarray. - - * lisp.h (struct Lisp_Symbol): Removed .obarray field. - - * symbols.c (init_symbols_once_early): Removed - Vpure_uninterned_symbol_table. - (Fintern): Don't store to ->obarray field. - -1999-04-22 Hrvoje Niksic - - * data.c (vars_of_data): Default debug_issue_ebola_notices to 0. - (eq_with_ebola_notice): Remove abracadabra support. - -1999-04-11 Oscar Figueiredo - - * eldap.c (Fldap_search_internal): Add a new parameter `withdn' to - retrieve the distinguished names of entries - -1999-03-08 Martin Buchholz - - * lread.c (read_escape): Make hex escapes read only two hex digits. - -1999-04-05 Olivier Galibert - - * Makefile.in.in: Remove puresize-adjust.h and recursive makes. - * make-src-depend: Remove puresize-adjust.h. - * src-headers: Remove puresize-adjust.h. - * config.h.in: Kill everything purespace/gung-ho related. - - * dbxrc: Make gung-ho mandatory. - * gdbinit: Ditto. - - * lrecord.h: Make gung-ho mandatory. Remove pure flag and add - c_readonly and lisp_readonly. Remove implementation arrays. - (C_READONLY_RECORD_HEADER_P): Added. - (LISP_READONLY_RECORD_HEADER_P): Added. - (SET_C_READONLY_RECORD_HEADER): Added. - (SET_LISP_READONLY_RECORD_HEADER): Added. - - * lisp.h: Kill everything purespace/non gung-ho related. - (CHECK_C_WRITEABLE): Added. - (CHECK_LISP_WRITEABLE): Added. - (C_READONLY): Added. - (LISP_READONLY): Added. - - * lisp-union.h: Make gung-ho mandatory. - * lisp-disunion.h: Ditto. - - * alloc.c: Kill everything purespace/non gung-ho related. Fix all - set_lheader_implementation calls. - (c_readonly): Added. - (lisp_readonly): Added. - (make_string_nocopy): Added. - (Fpurecopy): Changed to do nothing. Kept the old documentation - for reference purposes for the next patches. - (sweep_lcrecords_1): Don't free C readonly lcrecords. - (sweep_bit_vectors_1): Don't free C readonly bitvectors. - (SWEEP_FIXED_TYPE_BLOCK): Don't free C readonly lrecords. - - * fns.c: Make gung-ho mandatory. - (Fput): CHECK_IMPURE -> CHECK_LISP_WRITEABLE. - (Fremprop): Ditto. - (Ffillarray): Ditto. - - * data.c: Make gung-ho mandatory. - (pure_write_error): Removed. - (c_write_error): Added. - (lisp_write_error): Added. - (Fsetcar): CHECK_IMPURE -> CHECK_LISP_WRITEABLE. - (Fsetcdr): Ditto. - (Faset): Ditto. - - * symbols.c: Make gung-ho mandatory. make_pure_pname -> - make_string or make_string_nocopy. Fix various - alloc_lcrecord_type. - - * lread.c: Remove everything purespace related. - (Flocate_file_clear_hashing): purified -> c_readonly. - (locate_file): Ditto. - (read_atom): make_pure_pname -> make_string. - - * emacs.c (Frun_emacs_from_temacs): Remove purespace stats - reporting. - (Fdump_emacs): Ditto. - - * print.c (print_internal): Make gung-ho mandatory. - * ntheap.c (sbrk): Ditto. - * mem-limits.h (EXCEEDS_LISP_PTR): Ditto - * symeval.h (symbol_value_forward_lheader_initializer): Ditto. - - * sheap.c (more_static_core): Remove puresize-adjust.h from - message. - - * syntax.c (complex_vars_of_syntax): make_pure_string -> - make_string_nocopy. - * keymap.c (make_keymap): Fix alloc_lcrecord_type. - (vars_of_keymap): make_pure_string -> make_string_nocopy. - * events.c (deinitialize_event): Fix set_lheader_implementation. - (zero_event): Ditto. - * specifier.c (make_specifier_internal): Fix alloc_lcrecord. - * menubar-x.c (set_frame_menubar): Fix alloc_lcrecord_type. - * mule-charset.c (make_charset): Ditto. - * console.c (allocate_console): Ditto. - (complex_vars_of_console): Ditto. - * file-coding.c (allocate_coding_system): Ditto. - * device.c (allocate_device): Ditto - * gui-x.c (gcpro_popup_callbacks): Ditto. - * extents.c (allocate_extent_auxiliary): Ditto. - (allocate_extent_info): Ditto. - (copy_extent): Ditto. - * glyphs.c (allocate_image_instance): Ditto. - (allocate_glyph): Ditto. - * frame.c (allocate_frame_core): Ditto. - * database.c (allocate_database): Ditto. - * tooltalk.c (make_tooltalk_message): Ditto. - (make_tooltalk_pattern): Ditto. - * rangetab.c (Fmake_range_table): Ditto. - (Fcopy_range_table): Ditto. - * process.c (make_process_internal): Ditto. - * chartab.c (Fmake_char_table): Ditto. - (make_char_table_entry): Ditto. - (copy_char_table_entry): Ditto. - (Fcopy_char_table): Ditto. - * elhash.c (make_general_lisp_hash_table): Ditto. - (Fcopy_hash_table): Ditto. - * buffer.c (allocate_buffer): Ditto. - (complex_vars_of_buffer): Ditto. - * event-stream.c (allocate_command_builder): Ditto. - * objects.c (Fmake_color_instance): Ditto. - (Fmake_font_instance): Ditto. - (vars_of_objects): Ditto. - * toolbar.c (update_toolbar_button): Ditto. - * window.c (allocate_window): Ditto. - (make_dummy_parent): Ditto. - (Fcurrent_window_configuration): Fix alloc_lcrecord. - (vars_of_window): Fix make_lcrecord_list. - * faces.c (allocate_face): Fix alloc_lcrecord_type. pure_list -> - Flist. - * lstream.c (Lstream_new): Fix make_lcrecord_list. - * opaque.c (make_opaque): Fix alloc_lrecord. - (make_opaque_list): Fix alloc_lrecord_type. - -1999-04-19 Hrvoje Niksic - - * process.c (Fstart_process_internal): Ditto. - - * ntproc.c (sys_spawnve): Use Vlisp_EXEC_SUFFIXES when calling - locate_file(). - - * glyphs-x.c (x_locate_pixmap_file): Ditto. - - * glyphs-msw.c (mswindows_locate_pixmap_file): Fix call to - locate_file(). - - * emodules.c (vars_of_module): New variable Vmodule_extensions. - (emodules_load): Use it when calling locate_file(). - - * emacs.c (main_1): Use Vlisp_EXEC_SUFFIXES when calling - locate_file(). - - * callproc.c: Vlisp_EXEC_SUFFIXES: New variable. - (vars_of_callproc): Initialize it. - (Fcall_process_internal): Use it when calling locate_file(). - - * alloc.c (disksave_object_finalization): Use - Flocate_file_clear_hashing(). - - * lread.c (Flocate_file_clear_hashing): Clear all hasing when - given `t' as argument. - -1999-04-18 Hrvoje Niksic - - * lread.c (locate_file): Expand `pathel' when appropriate. - (Flocate_file_clear_hashing): Expand path elements. - (Flocate_file_clear_hashing): Use Vlocate_file_hash_table. - - * dired.c (make_directory_hash_table): Create the hash-table only - if the directory open is successful. - - * lread.c (decode_mode_1): New function. - (decode_mode): Ditto. - (Flocate_file): Use them. - (Flocate_file): Expand FILENAME. - (locate_file_map_suffixes): New function. - (locate_file_in_directory_mapper): New function. - (locate_file_in_directory): Use locate_file_in_directory_mapper() - and locate_file_map_suffixes(). - (locate_file_construct_suffixed_files): Use - locate_file_map_suffixes(). - (locate_file_without_hash): Don't GCPRO path. - (Flocate_file_clear_hashing): Use EXTERNAL_LIST_LOOP. - (syms_of_lread): Remove Qlocate_file_hash_table. - (locate_file_find_directory_hash_table): Use - Vlocate_file_hash_table. - (locate_file_refresh_hashing): Ditto. - - * lread.c: Renamed read_objects to Vread_objects. - -1999-04-16 Olivier Galibert - - * mule-charset.c: Generally resync with fsf 20.3 charset - interface. - (make_charset): Add long and short name. Use id instead of - leading byte. - (Fmake_charset): Ditto. - (Fmake_reverse_direction_charset): Ditto. - (Fcharset_property): Ditto. - (Fcharset_short_name): Added. - (Fcharset_long_name): Added. - (Fcharset_description): Renamed from charset-doc-string. - (syms_of_mule_charset): Synced symbols. - (complex_vars_of_mule_charset): Synced charsets. - - * mule-charset.h: Removed leading byte (uses id instead), added - short and long name. - -1999-04-15 Hrvoje Niksic - - * file-coding.c (Fdefine_coding_system_alias): New function. - -1999-04-08 Olivier Galibert - - * mule-charset.c (complex_vars_of_mule_charset): Allow all iso8859 - and -ascii fonts for displaying ascii instead of iso8859-1 only. - -1998-12-14 Hrvoje Niksic - - * extents.c (set_extent_glyph_1): Make sure that the glyph we - attach to the extent is valid. - -1998-12-12 Hrvoje Niksic - - * dired.c (user_name_completion): Mule-ize. - (user_name_completion): Use xmalloc/xrealloc/xfree. - (user_name_completion): Use DO_REALLOC. - (user_name_completion): Cut down the number of static variables; - use a structure. - (user_name_completion): Username completion is always - case-sensitive. - -1998-12-06 Hrvoje Niksic - - * fns.c (base64_decode_1): Remove COUNTER. - (base64_decode_1): Accept CRLF in addition to CR. - (base64_decode_1): Disallow a stray character after final EOF; the - check was probably a remnant of buggy recode code. - -1998-12-05 Hrvoje Niksic - - * fns.c (init_provide_once): Provide `base64'. - -1998-12-04 Hrvoje Niksic - - * fns.c (XMALLOC_UNBIND): Include SPECCOUNT argument, for clarity. - (Fbase64_encode_region): If buffer is read-only, bail out early. - (Fbase64_decode_region): Ditto. - (Fbase64_encode_region): Initialize SPECCOUNT to pacify the - compiler. - (Fbase64_encode_string): Ditto. - (Fbase64_decode_region): Ditto. - (Fbase64_decode_string): Ditto. - -1998-11-25 Hrvoje Niksic - - * dired.c (Fdirectory_files): Remove redundant code. - -1999-03-05 Philip Aston - - * frame-msw.c Make raise-frame restore minimised windows. - -1999-03-05 Philip Aston - - * device-msw.c: Fix DEFVAR format - Death to phantom quote, and - add magic newline. - -1999-03-05 Philip Aston - - * toolbar-msw.c Consider captions when deciding whether to rebuild - toolbar. This fixes the initial toolbar display for those of us - who don't like captions. These patches applied by Andy Piper. - -1999-03-12 XEmacs Build Bot - - * XEmacs 21.2.13 is released - -1999-03-12 SL Baur - - * file-coding.c: Guard ucs table initialization with ifdef MULE. - -1999-03-10 Stephen J. Turnbull - - * file-coding.c: docstring and comment improvements. - (decode_ucs4) flag possible data loss with comment. - -1999-03-10 Martin Buchholz - - * file-coding.c (Fset_ucs_char): add CHECK_INT, CHECK_CHAR - (ucs_to_char): - (Fucs_char): - (Fset_char_ucs): - (decode_coding_ucs4): - (encode_coding_ucs4): - (detect_coding_utf8): - (decode_coding_utf8): - (encode_utf8): - (encode_coding_utf8): - Add CHECK_* macros where needed to avoid crashes. - #ifdef out all composite character support using - #ifdef ENABLE_COMPOSITE_CHARS - Use normal XEmacs coding standards. - Fix docstrings. - Remove CODING_STREAM_COMPOSE, CODING_STREAM_DECOMPOSE. - -1998-09-08 MORIOKA Tomohiko - - * file-coding.c (make-coding-system): Add description about - `ucs-4' and `utf-8'. - (detection_state): Modify to implement ucs-4 and utf-8. - (detect_coding_type): Likewise. - (detect_coding_ucs4): New implementation. - (detect_coding_utf8): New implementation. - (encode_utf8): fixed. - (syms_of_mule_coding): Rename `ucs4' and `utf8' to `ucs-4' and - `utf-8'. - -1998-09-08 MORIOKA Tomohiko - - * file-coding.c (mule_char_to_ucs4): Encode 94x94 chars in ISO - 2022 registry to private area. - -1998-09-07 MORIOKA Tomohiko - - * file-coding.c (encode_utf8): New function. - (encode_coding_utf8): New implementation. - -1998-09-07 MORIOKA Tomohiko - - * file-coding.c (ucs_to_mule_table): New variable; abolish - `Vucs_to_mule_table' - (mule_to_ucs_table): renamed from `Vmule_to_ucs_table'. - (set-ucs-char): New function. - (ucs_to_char): New function. - (ucs-char): New function. - (set-char-ucs): New function. - (char-ucs): New function. - (decode_ucs4): Use `ucs_to_char'. - (complex_vars_of_mule_coding): Abolish `ucs-to-mule-table' and - `mule-to-ucs-table'. - -1998-09-06 MORIOKA Tomohiko - - * chartab.h: EXFUN `Fget_char_table'. - - * file-coding.c (encode_ucs4): New function. - (encode_coding_ucs4): Use `encode_ucs4'. - -1998-09-06 MORIOKA Tomohiko - - * file-coding.c (decode_coding_ucs4): New implementation. - -1998-09-06 MORIOKA Tomohiko - - * file-coding.c (decode_coding_ucs4): fixed. - - * file-coding.c (Vmule_to_ucs_table): New variable. - (mule_char_to_ucs4): New function. - (encode_coding_ucs4): New implementation. - (complex_vars_of_mule_coding): Define variable - `mule-to-ucs-table'. - -1998-09-06 MORIOKA Tomohiko - - * file-coding.c (decode_coding_utf8): New implementation. - -1998-09-06 MORIOKA Tomohiko - - * file-coding.c (decode_coding_utf8): fixed. - -1998-09-06 MORIOKA Tomohiko - - * file-coding.c (Vucs_to_mule_table): New variable. - (decode_ucs4): Refer `Vucs_to_mule_table'. - (complex_vars_of_mule_coding): Define variable - `ucs-to-mule-table'. - -1998-09-04 MORIOKA Tomohiko - - * file-coding.c (detect_coding_ucs4): New function (not - implemented yet). - (decode_coding_ucs4): New function. - (encode_coding_ucs4): New function (not implemented yet). - (detect_coding_utf8): New function (not implemented yet). - (decode_coding_utf8): New function. - (encode_coding_utf8): New function (not implemented yet). - (make-coding-system): New type `ucs4' and `utf8'. - (coding-system-type): Likewise. - (detection_state): Add `ucs4' and `utf8'. - (detect_coding_type): Likewise. - (mule_decode): Use `decode_coding_ucs4' and `decode_coding_utf8'. - (mule_encode): Use `encode_coding_ucs4' and `encode_coding_utf8'. - (decode_ucs4): New function (very incomplete). - (syms_of_mule_coding): Add `ucs4' and `utf8'. - - * file-coding.h: Add definitions for UCS-4 and UTF-8. - -1999-03-08 Martin Buchholz - - * mule-charset.c: - (non_ascii_valid_char_p): - (lookup_composite_char): - (composite_char_string): - (make-composite-char): - (composite-char-string): - (syms_of_mule_charset): - (complex_vars_of_mule_charset): - * mule-charset.h (LEADING_BYTE_COMPOSITE): - (CHAR_LEADING_BYTE): - (MAKE_CHAR): - * file-coding.h (CODING_STATE_COMPOSITE): - (CODING_STATE_ISO2022_LOCK): - (iso_esc_flag): - (LEADING_BYTE_COMPOSITE): - * file-coding.c (struct iso2022_decoder): - (decoding_closer): - (reset_iso2022): - (parse_iso2022_esc): - (encode_coding_iso2022): - #ifdef out all composite character support using - #ifdef ENABLE_COMPOSITE_CHARS - - * alloc.c: Define lrecord_coding_system only if ! FILE_CODING - -1999-03-04 Takeshi YAMADA - - * fns.c (Fbase64_encode_string): Calculate `allength' in the same - way of `Fbase64_encode_region'. - -1999-02-18 Katsumi Yamaoka - - * fns.c (base64_encode_1): Don't add a newline at the tail. - -1999-03-08 Andy Piper - - * menubar-msw.c (displayable_menu_item): correct off-by-one & - handling. - -1999-03-07 Martin Buchholz - - * console-stream.h (struct stream_console): - * event-unixoid.c (event_stream_unixoid_select_console): - (event_stream_unixoid_unselect_console): - * print.c (Fexternal_debugging_output): - * sysdep.c (reset_one_device): - * console-stream.c (stream_init_console): - (stream_delete_console): - (allocate_stream_console_struct): move into stream_init_console. - (free_stream_console_struct): move into stream_delete_console. - Use `fd' only for file descriptors. - Therefore, rename members of struct stream_console. - - * systime.h: Unix98 says sys/time.h should define select(), but - some systems define that in unistd.h. So include that file always. - - * glyphs.h (MAYBE_IIFORMAT_METH): Don't use leading `_'. Avoid - multiple evaluation of first arg. Do proper do {} while (0) wrapping. - (HAS_IIFORMAT_METH_P): Prevent macro from being used in - non-boolean context - (MAYBE_IIFORMAT_DEVMETH): Use standard internal macro naming convention. - - * EmacsShell.c: - * balloon_help.c: - Add #include . - Some versions of assert.h use printf() without #include'ing stdio.h - - * free-hook.c (blocktype): Add gcpro5_type to blocktype. - (log_gcpro): Remove unused variable FRAME. - (show_gcprohist): Ansify. - Comment the #endif's - - * frame-x.c (x_delete_frame): Don't use FRAME_X_SHELL_WIDGET(f) - after it's just been XtDestroy'ed! - -1999-02-18 Martin Buchholz - - * opaque.c (print_opaque): - (sizeof_opaque): - (equal_opaque): - (hash_opaque): - Egcs 1.1.1 seems to have a bug where - INTP (p->size_or_chain) - will crash XEmacs. Fix by introducing intermediate variable. - - * sound.c (Fdevice_sound_enabled_p): Fix compiler warning. - - * dired.c (Fdirectory_files): - (Ffile_name_completion): - (Ffile_name_all_completions): - (file_name_completion): - - Use `directory' instead of `dirname' to sync with FSF Emacs and - avoid compiler warnings. - - Fix up docstrings so that C variables match documentation. - -1999-03-05 Martin Buchholz - - * alloc.c: (garbage_collect_1): Reorg code to make scope of local - variables as small as possible to help out the compiler and the maintainer. - - * alloc.c: (disksave_object_finalization): - Set all the *-load-path variables to - nil, not just load-path itself. This gets the locate-file hash - tables garbage collected BEFORE dump, and has the side effect of - preventing crashes on OSF4.0+egcs. - - * alloc.c: - * gdbinit: - * dbxrc: - - Clean up gdb/dbx debugging support. - - Storing an EMACS_INT in an enum is not 64-bit clean! - - So change the enum to a set of separate variables. - - Add test cases to help debug the debugging support! - - Add `lisp-shadows' and `run-temacs' targets for dbx. - - Both dbx and gdb have been tested now. - -1999-03-05 XEmacs Build Bot - - * XEmacs 21.2.12 is released - -1999-02-16 Kazuyuki IENAGA - - * device-x.c: Support to find best visual without flashing. - -1999-03-02 Paul Keusemann - - * database.c (berkdb_map): Add flags argument to cursor call (must - be 0 according to docs) required for Berkeley DB 2.6.4 and later. - -1999-03-03 Martin Buchholz - - * hash.c: - * hash.h: - General cleanup. Get free-hook.c working again. - Remove unused functions: - make_strings_hash_table, copy_hash, expand_hash_table. - - * malloc.c: - * mem-limits.h: - Always use new ANSI-style function prototypes. - - * unexalpha.c (unexec): Never use implicit int. - - * sgiplay.c (close_sound_file): - (play_sound_file): - (restore_audio_port): - (play_sound_data): - (audio_initialize): - (play_internal): - (drain_audio_port): - (write_mulaw_8_chunk): - (write_linear_chunk): - (write_linear_32_chunk): - (initialize_audio_port): - (open_audio_port): - (set_channels): - (set_output_format): - (adjust_audio_volume): - (get_current_volumes): - (parse_snd_header): - Always use new ANSI-style function prototypes. - Use unistd.h for missing prototypes. - - * unexelfsgi.c (round_up): - (find_section): - (unexec): Always use new ANSI-style function prototypes - - * elhash.c (struct Lisp_Hash_Table): rename golden to golden_ratio - - * console.h (struct console_methods): Always use full ANSI prototypes - - * emacs.c (__sti__iflPNGFile_c___): Always use full ANSI prototypes - -1999-03-02 Andy Piper - - * event-stream.c (init_event_stream): make sure native mswindows - gets an appropriate event loop. - -1999-02-22 Andy Piper - - * frame-msw.c (mswindows_make_frame_visible): use SW_SHOW rather - than SW_SHOWNORMAL to prevent resizing of maximised frames. - (mswindows_raise_frame): remove comment. - -1999-03-01 XEmacs Build Bot - - * XEmacs 21.2.11 is released - -1999-02-25 SL Baur - - * mule-charset.c (Qleading_byte): New variable to implement - charset-leading-byte function. - (Fcharset_property): Use it. - (syms_of_mule_charset): Initialize it. - From Kazuyuki IENAGA - -1999-02-17 Kazuo Oishi - - * glyphs-x.c (cononvert_EImage_to_XImage): correct - bytes per pixel counting. - -1999-02-15 Andy Piper - - * s/cygwin32.h (BROKEN_SIGIO): don't define this as it causes - major lockups. - -1999-02-16 MORIOKA Tomohiko - - * fns.c (Fbase64_encode_string): New optional argument - `NO_LINE_BREAK'. - -1999-02-16 Martin Buchholz - - * gdbinit: Fix up commands to run temacs. Add lisp-shadows command. - * alloc.c (xcalloc): undef xcalloc, just like xmalloc - -1999-02-10 Martin Buchholz - - * s/bsdos4.h: New file. Port to BSDI BSD/OS 4.0. - * xintrinsic.h: Redo CONST support for X11 R4 compatibility. - -1999-02-05 XEmacs Build Bot - - * XEmacs 21.2.10 is released - -1999-02-02 Gleb Arshinov - - * process-nt.c (nt_send_process): - Fix for process-send-region/process-send-string breaking when size - of the input > 128 chars: change maximum chunk size for process - stream from 512 to 128, thus guaranteeing that ntpipe_shove_writer - succeeds. - -1999-02-02 XEmacs Build Bot - - * XEmacs 21.2.9 is released - -1999-01-30 Martin Buchholz - - * bytecode.c (funcall_compiled_function): Call - UNBIND_TO_GCPRO instead of UNBIND_TO_GCPRO_VARIABLES_ONLY. - - * backtrace.h (UNBIND_TO_GCPRO_VARIABLES_ONLY): - #ifdef 0 out unused macro. - -1999-01-27 Martin Buchholz - - * gui.c (gui_parse_item_keywords_internal): Make static. - -1999-01-21 Andy Piper - - * glyphs-msw.c: add xface support. - (mswindows_xface_instantiate): new function copied from glyphs-x.c - (image_instantiator_format_create_glyphs_mswindows): do device - specific initialisation for xfaces. - (xbm_create_bitmap_from_data): line data must be padded to a word - boundary. - - * glyphs-x.c (xface_validate): moved to glyphs.c - (xface_normalize): ditto. - (xface_possible_dest_types): ditto. - (image_instantiator_format_create_glyphs_x): do device specific - initialisation for xfaces. - - * glyphs.h: declare xface symbol. - - * glyphs.c: move generic xface support here. - (xface_validate): moved from glyphs-x.c - (xface_normalize): ditto. - (xface_possible_dest_types): ditto. - (image_instantiator_format_create): xface declarations moved from - glyphs-x.c. - -1999-01-14 Adrian Aichner - - * event-stream.c (vars_of_event_stream): Fixing documentation. - -1999-01-17 Gunnar Evermann - - * glyphs-eimage.c (gif_instantiate): Correct handling of - interlaced gifs to avoid writing past the end of the eimage - buffer. - -1999-01-13 Hrvoje Niksic - - * search.c (Freplace_match): Handle single backslash at end of - NEWTEXT correctly. - -1999-01-12 William M. Perry - - * eldap.c (Fldap_open): slow down interrupts around ldap_open to - avoid connection errors. - -1999-01-12 Andy Piper - - * redisplay-output.c (redisplay_update_line): backout change that - shouldn't have gone ine. - -1999-01-09 Oscar Figueiredo - - * eldap.c (vars_of_ldap): Do no provide `ldap' here since it may - collide with ldap.el - -1999-01-11 Andy Piper - - * redisplay.h (DISPLAY_LINE_HEIGHT): new macro. - (DISPLAY_LINE_YPOS): new macro. - - * redisplay-msw.c (mswindows_output_string): use it. - (mswindows_output_pixmap): ditto. - (mswindows_output_display_block): ditto. - - * redisplay-output.c (redisplay_output_display_block): new - function. just call the devmeth, maybe insert some generic code - here later. - (compare_display_blocks): use it. - (output_display_line): ditto. - (redisplay_unmap_subwindows_maybe): new function. potentially - unmap subwindows in the given area. - - * glyphs.c (reset_subwindow_cachels): unmap subwindows that we are - resetting. - -1999-01-10 J. Kean Johnston - - * Makefile.in.in: Set value of moduledir - - Changed DUMPENV to include $(MODULEPATH) - - Added install rule to install header files for use by ellcc. - - * config.h.in: Added INHIBIT_SITE_MODULES - - Added HAVE__DLERROR - - Added HAVE_DLFCN_H - - Added DLSYM_NEEDS_UNDERSCORE - - * dll.c: Removed. - - * emodules.c: New file containing dynamic loading code. - - * emodules.h: New file. - - * emacs.c: Added variables Vmodule_directory, - Vsite_module_directory, Vconfigure_module_directory and - Vconfigure_site_module_directory. - - (main_1): Added new variable inhibit_site_modules and command - line options `-no-site-modules' and `--no-site-modules'. - - (main_1): Call syms_of_module() instead of syms_of_dll(). - - (main_1): Call vars_of_module(). - - (vars_of_emacs): Introduce inhibit-site-modules, - module-directory, configure-module-directory, - site-module-directory, and configure-site-module-directory to the - Lisp reader. - - * lisp.h: Declare load_module and list_modules, as well as - Vmodule_directory, Vsite_module_directory, - Vconfigure_module_directory and Vconfigure_site_module_directory. - - * paths.h.in: Added PATH_MODULESEARCH and PATH_SITE_MODULES. - - Added correct support for site-lisp directory. - - * symbols.c (defsubr): Modified to allow modules to add new subrs - after dump time. - - (defsubr_macro): Same. - - (defvar_magick): Only use purespace when not initialized, so - that loaded modules can still add symbols. - - * symsinit.h: Add definitions for syms_of_module(), - vars_of_module(). Removed syms_of_dll(). - - * sysdll.c: Include dlfcn.h if HAVE_DLFCN_H is defined. - - (dll_variable): Take DLSYM_NEEDS_UNDERSCORE into account. - - (dll_error): use _dlerror() if HAVE__DLERROR is defined. - - * s/sco5-shr.h (C_SWITCH_SYSTEM): Correct for modern gcc and - explicitly pass -belf for native cc. - - * s/sco5.h (LIB_GCC): Use -print-libgcc-file-name instead of - hard-coding the library name. - -1999-01-01 - - * device-x.c (Fx_set_font_path): - Add proper cast to permit compilation under C++. - - * buffer.c (directory_is_current_directory): - Add proper casts to permit compilation under C++. - -1998-12-30 Damon Lipparelli - - * event-msw.c (mswindows_wnd_proc): - Fixed failure when building with MSVC 5. - -1998-12-29 Martin Buchholz - - * file-coding.c (decode_coding_iso2022): - - Prevent crash when decoding ISO7/Lock detected files - - the usual martin fiddling - -1998-12-29 Jonathan Harris - - * event-msw.c: - glyphs-msw.c: - Fixed failures when building with MSVC. - * unexnt.c (dump_bss_and_heap): - Removed compiler warning by removing bss_data variable. - -1998-12-18 Jim Radford - - * device-x.c (Fx_set_font_path, Fx_get_font_path): New functions - so that packages that distribute their own fonts can access them. - -1998-12-28 Andy Piper - - * glyphs-msw.c (mswindows_button_instantiate): cope with buttons - that have an image provided. - - * glyphs.h: add Q_image decl. - - * glyphs-widget.c new functionality allowing images in - widgets. - (check_valid_glyph_or_image): new function to validate - glyphs passed in through :image. - (widget_normalize): new function. convert :image parameters into - real glyphs if not already so. - (widget_instantiate_1): mess with size parameters to be similar to - :image if provided. - (syms_of_glyphs_widget): new keyword :image. - (image_instantiator_format_create_glyphs_widget): normalize - buttons and allow :image. - -1998-12-27 Andy Piper - - * frame-msw.c (mswindows_init_frame_1): warning elimination. - - * glyphs-widget.c (check_valid_anything): no-op function. - (check_valid_callback): check callbacks in gui_items. - (check_valid_symbol): as it sounds. - (check_valid_string_or_vector): ditto. - (widget_validate): modified for descriptors that are vectors or - sequences of keyword/val pairs. - (widget_instantiate_1): ditto. - (image_instantiator_format_create_glyphs_widget): allow gui_item - keywords in the instantiator. - - * gui.c (gui_parse_item_keywords_internal): renamed from - gui_parse_item_keywords but taking error behaviour. - (gui_parse_item_keywords): use it. - (gui_parse_item_keywords_no_errors): ditto. - (gui_item_add_keyval_pair): add Error_behavior flag and only - signal invalid keywords if required. - - * gui.h: new gui signatures. - - * menubar.c (menu_parse_submenu_keywords): use new - gui_item_add_keyval_pair signature. - - * s/cygwin32.h: modify PTY_ITERATION to eliminate warnings. - -1998-12-28 Martin Buchholz - - * XEmacs 21.2.8 is released. - -1998-12-28 Martin Buchholz - - * editfns.c (get_home_directory): - (user-home-directory): Simplify. - - - * callproc.c (child_setup): - - Environment variables were being passed to inferior processes - using internal encoding. - - Convert to external encoding. - - Rename local var `tem' to better name `tail'. - - Use Flength instead of `manual' calculation. - - * buffer.c (kill-buffer): - (record-buffer): - (set-buffer-major-mode): - (current-buffer): - - Fix up parameter names to correspond to docstrings. - - Don't use `bufname' when a buffer will do as well. - - Remove one unneeded GCPRO. - - * buffer.h (initial_directory): - * buffer.c (init_initial_directory): - - use correct conversions between internal and external format. - (directory_is_current_directory): new function - (init_buffer): convert initial_directory to internal format. - - solve crashes when current working directory is non-ASCII. - - * alloc.c (xmalloc): - (xcalloc): - (xrealloc): - - remove stupid casts, since XEmacs requires an ANSI C system. - (lrecord_type_index): replace abort() with more readable assert(). - - (reset_lcrecord_stats): remove. - (sweep_lcrecords_1): - - replace call to reset_lcrecord_stats() with call to xzero(). - -1998-12-27 Martin Buchholz - - * process-unix.c (unix_create_process): - - Fix crash invoking program with non-ASCII name. - Try invoking xemacs with SHELL=/bin/sh, then M-x shell. - - Remove unused variable `env'. - - Rename `temp' to better name `save_errno'. - - Reorganize code for clarity. But still too chicken to nuke the - BSD 4.2 support. - -1998-12-24 Martin Buchholz - - * XEmacs 21.2.7 is released. - -1998-12-23 Martin Buchholz - - * glyphs.c (decode_device_ii_format): - - Fix indentation. - - Use GET_C_STRING_FILENAME_DATA_ALLOCA with char *, not Extbyte *. - - * glyphs-x.c (x_subwindow_instantiate): - - A image instance mask was being assigned to a image instance type! - - X_SUBWINDOW_INSTANCE_DATA (ii) is not an lvalue in C++. - - * glyphs-msw.c (mswindows_initialize_dibitmap_image_instance): - Fix indentation. - * glyphs-x.h: Make indentation consistent. - - * emacs.c (Fdump_emacs): Remove Steve Martin merge artifacts. - - * glyphs-widget.c (check_valid_glyph): Warning suppression. - - Make it static - - #ifdef it out, since it's not actually used yet (FIX THIS!) - - * glyphs-widget.c: - * glyphs.h: - Move declarations of decode_device_ii_format and - decode_image_instantiator_format into glyphs.h where they belong. - -1998-12-22 Martin Buchholz - - * frame-x.c (x_delete_frame): Revert part of my changes at the - suggestion of Gunnar Evermann - unfortunately no one really - understands this code. - - * callproc.c (init_callproc): code cleanup. - - * free-hook.c (malloc): - (check_malloc): - (__free_hook): - (__malloc_hook): - (__realloc_hook): - (block_input_malloc): - (block_input_realloc): - * device-x.c (x_delete_device): - * emacs.c (voodoo_free_hook): - * events.c (print_event): - (CHECK_EVENT_TYPE): - (CHECK_EVENT_TYPE2): - (CHECK_EVENT_TYPE3): - Use proper prototypes. - Make C_E_T macros a little faster. - Pedantic fiddly little changes. You really don't care. - -1998-12-22 Andy Piper - - * redisplay-output.c (redisplay_clear_region): make sure that - fg/bg colors get set even when we are in the border area. - -1998-12-13 Martin Buchholz - - * console-msw.c: Function definitions follow coding standards - - This prevents e.g. find-tag on Lisp_Event finding DEVENT - -1998-12-11 Martin Buchholz - - * events.h (struct timeout_data): - * event-tty.c (tty_timeout_to_emacs_event): - * event-msw.c (mswindows_wm_timer_callback): - * event-Xt.c (Xt_timeout_to_emacs_event): - * event-msw.c (mswindows_cancel_dispatch_event): - Make sure Lisp_Objects inside events are initialized to Qnil, not - Qnull_pointer, which is now illegal. - -1998-12-10 Martin Buchholz - - * lisp.h: Fix up prototypes to match alloc.c - -1998-12-08 Martin Buchholz - - * windowsnt.h: Remove `support' for using index and rindex - - * filelock.c (current_lock_owner): - - Change uses of index -> strchr, rindex -> strrchr - -1998-12-07 Martin Buchholz - - * sysdep.c (set_descriptor_non_blocking): - Since O_NONBLOCK is now always #defined, make use of fcntl - conditional on F_SETFL being defined. - - * console-msw.c (DHEADgER): - (DOPAQUE_DATA): - (DEVENT): - (DCONS): - (DCONSCDR): - (DSTRING): - (DVECTOR): - (DSYMBOL): - (DSYMNAME): - - max_align_t should not be visible to the user of the - XOPAQUE_DATA macro. - - use Bufbyte instead of char - - parens around (FOOP (obj)) are always redundant. - If they were necessary, we should fix the macro instead. - - Always use string_data(foo) instead of foo->data. - - -1998-12-06 Martin Buchholz - - * frame-msw.c (mswindows_init_frame_1): - - use make_lisp_hash_table, not Fmake_hash_table - - include elhash.h - - * lisp.h: - * alloc.c (make_vector): remove travesty - (Fmake_vector): - (make_pure_vector): - (pure_cons): - (make_bit_vector_internal): - (make_bit_vector): - (make_bit_vector_from_byte_vector): - (Fmake_bit_vector): - - make vector_equal a little faster. - - Don't use variable name `new'. - - Use size_t instead of EMACS_INT. - - usual Martin-style pointless bit-twiddling. - - * fns.c (mapcar1): - (Fmapconcat): - (Fmapcar): - (Fmapvector): - Make mapcar faster. In particular, make - (mapc #'identity long-string) - MUCH faster under Mule. - * tests/automated/lisp-tests.el: Test 'em! - - * bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded - bytecode. - -1998-12-01 Martin Buchholz - - * menubar-x.c (menu_item_descriptor_to_widget_value_1): Always use - Qnil, not NULL, to initialize `null' Lisp_Objects. - -1998-11-29 Hrvoje Niksic - - * specifier.c (display_table_validate): Update. - - * redisplay.c (create_text_block): Use them. - - * glyphs.c (display_table_entry): New function. - (get_display_tables): Ditto. - -1998-12-15 Oscar Figueiredo - - * eldap.c (toplevel): Mention that eldap.c compiles with - OpenLDAP libs - (Fldap_open): Use `GET_C_STRING_OS_DATA_ALLOCA' - (Fldap_search_internal): Ditto - -1998-12-11 Martin Buchholz - - * event-msw.c (mswindows_cancel_dispatch_event): - Gratuitous code prettification - - -1998-12-07 Hrvoje Niksic - - * fns.c (Fnconc): Fix use of wrong_type_argument(). - - * floatfns.c (Ffloat): Fix docstring. - (Ffloat): Fix use of wrong_type_argument(). - (Fabs): Ditto. - (extract_float): Ditto. - (Fceiling): Ditto. - (Fround): Ditto. - (Ftruncate): Ditto. - -1998-12-06 Martin Buchholz - - * frame-msw.c (mswindows_init_frame_1): - - use make_lisp_hash_table, not Fmake_hash_table - - include elhash.h - - * lisp.h: - * alloc.c (make_vector): remove travesty - (Fmake_vector): - (make_pure_vector): - (pure_cons): - (make_bit_vector_internal): - (make_bit_vector): - (make_bit_vector_from_byte_vector): - (Fmake_bit_vector): - - make vector_equal a little faster. - - Don't use variable name `new'. - - Use size_t instead of EMACS_INT. - - usual Martin-style pointless bit-twiddling. - - * fns.c (mapcar1): - (Fmapconcat): - (Fmapcar): - (Fmapvector): - Make mapcar faster. In particular, make - (mapc #'identity long-string) - MUCH faster under Mule. - * tests/automated/lisp-tests.el: Test 'em! - - * bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded - bytecode. - -1998-12-02 Didier Verna - - * menubar-x.c (menu_item_descriptor_to_widget_value_1): set the - accelerator field to nil for labels. - -1998-12-16 Jonathan Harris - - * menubar-msw.c (displayable_menu_item): - Escape occurrences of '&' and support occurrences of the - '%_' accelerator indicator in menus. - -1998-11-26 Didier Verna - - * dired.c (Fdirectory_files): use make_string instead of - make_ext_string on the filename. The conversion external->internal - format is already done in sys_readdir. - -1998-12-15 Gunnar Evermann - - * glyphs.c (normalize_image_instantiator): GCPRO instantiator - -1998-12-16 Jonathan Harris - - * event-msw.c - (Belatedly) added Kirill to list of file's authors. - emacs_mswindows_quit_p: Don't process WM_PAINT messages in - quit checking. WM_PAINT messages cause redisplay, but - windows' states are not necessarily stable when this function - gets called. - -1998-12-17 Andy Piper - - * strftime.c (zone_name): CONSTify. - -1998-12-15 Andy Piper - - * glyphs-msw.c (mswindows_combo_instantiate): ditto. - (mswindows_widget_property): return Qunbound when no property available. - (mswindows_button_property): ditto. - (mswindows_combo_property): ditto. - (mswindows_widget_set_property): ditto. - - * glyphs-widget.c (check_valid_item_list): use properties. - - * glyphs.h (struct Lisp_Image_Instance): we have properties now. - - * glyphs.c (Fset_image_instance_property): allow setting of arbitrary properties. - (Fimage_instance_property): ditto. - * glyphs-widget.c (widget_property): ditto. - (widget_set_property): ditto. - - * frame-msw.c (mswindows_set_frame_pointer): SetCursor() as well - as setting the class cursor so that GC actually changes the - cursor. - - * config.h: don't undef MAIL_USE_POP. - -1998-12-13 Andy Piper - - * glyphs-msw.c - (image_instantiator_format_create_glyphs_mswindows): line -> - label. - (mswindows_label_instantiate): ditto. Play with window flags. - (image_instantiator_format_create_glyphs_mswindows): ditto. - (vars_of_glyphs_mswindows): provide Qlabel as we support it now. - - * glyphs-widget.c (widget_instantiate_1): re-jig autosizing to - cope with lines and labels. - (static_instantiate): use widget_instantiate_1. - line -> label. - (image_instantiator_format_create_glyphs_widget): ditto. - -1998-12-10 Andy Piper - - * Makefile.in.in (objs): add gui.o - -1998-12-10 Andy Piper - - * gui.c: adjust defines of HAVE_POPUPS so that we can build with - no window system. - -1998-12-09 Andy Piper - - * glyphs.c (finalize_image_instance): mark glyphs changed when an - image instance is removed so that the subwindow cache gets reset - and thus destroyed images get GC'd. - -1998-12-08 Andy Piper - - * gui-msw.c (mswindows_handle_gui_wm_command): call - MARK_SUBWINDOWS_CHANGED. - - * glyphs-msw.c (mswindows_finalize_image_instance): make sure - subwindows really get deleted. - - * redisplay.c: new variable subwindows_changed[_set]. - (redisplay_window): use it. - (redisplay_frame): ditto. - (redisplay_device): ditto. - (redisplay_without_hooks): ditto. - - * device.h (MARK_DEVICE_SUBWINDOWS_CHANGED): new macro for - subwindows redisplay as per glyphs equivalent. - * redisplay.h: ditto. - (MARK_SUBWINDOWS_CHANGED): ditto. - (RESET_CHANGED_SET_FLAGS): ditto. - * frame.h (MARK_FRAME_SUBWINDOWS_CHANGED): ditto. - -1998-12-07 Andy Piper - - * frame.c (Fmake_frame): reset subwindow cachels on non-stream - frames. - - * redisplay.c (redisplay_frame): invalidate subwindow cachels. - - * event-msw.c (mswindows_wnd_proc): catch the various WM_CTLCOLOR* - messages and paint widget glyphs as appropriate with their face fg - & bg. - -1998-12-06 Andy Piper - - * glyphs-msw.c (vars_of_glyphs_mswindows): provide widget types - here rather than in glyphs-widget - do this because we only want - to provide what is really available. - - * glyphs.c (Fimage_instance_property): new function to get the - properties of image instances. wires through to console specific - methods and then to widget specific methods. - (Fset_image_instance_property): ditto but for setting widget properties. - (check_valid_face): make extern so that it can be used elsewhere. - - * glyphs-widget.c (widget_property): new function. gets the - properties of widgets in general and wires the function through to - widget specific ones. - (widget_set_property): ditto but for setting widget properties. - - * glyphs-msw.c (mswindows_combo_instantiate): Add functionality to - add items to the list. Play with window styles a bit to get the - desired effect. - (mswindows_widget_property): break out specific widget properties. - (mswindows_button_property): new function. gets the checked state - of a button. - (mswindows_combo_property): new function. gets the current - selection in the combo box. - (mswindows_widget_set_property): new function. sets specific - properties of specific widgets. - - * glyphs-widget.c (check_valid_item_list): new function. check - that items for a combo-box are just a list of strings. - (combo_validate): new function. check there is an item list. - (widget_instantiate_1): new function. renamed from - widget_instantiate so that we can do slightly different things for - other widgets. - (widget_instantiate): call widget_instantiate_1. - (combo_instantiate): new function to instantiate combo boxes, - defaults height to the pixel height of the number of items in the - box. - (syms_of_glyphs_widget): move widget keywords here. - (image_instantiator_format_create_glyphs_widget): use new combo - functions. - -1998-12-04 Andy Piper - - * event-msw.c (mswindows_wnd_proc): mule-ize. - - * glyphs.c (pixmap_to_lisp_data): mule-ize. - - * glyphs-msw.c (extract_xpm_color_names): mule-ize. - (resource_name_to_resource): ditto. - (mswindows_resource_instantiate): ditto. - (mswindows_widget_instantiate): ditto. - (mswindows_widget_set_property): ditto. - - * redisplay-output.c (redisplay_output_subwindow): don't show - subwindows if they are obscured at the edge of the frame, emacs - gets into some sort of redisplay loop otherwise. - - * gui.h: prototype gui_item_selected_p. - - * gui.c (gui_item_selected_p): new function to determine the - selected state of a gui_item. - - * frame.h (struct frame): add subwindows_changed flag. - - * redisplay.c (redisplay_frame): call update_frame_subwindows (). - - * glyphs.c (update_subwindow): new function to update a - subwindow's state. - (update_frame_subwindows): new function to update all the - subwindows on a frame. - - * console.h (struct console_methods): add update_subwindow. - - * glyphs-msw.c (mswindows_widget_property): return selected state - for selected property. - (mswindows_update_subwindow): new function. updates widget glyphs - in redisplay as per menubars or toolbars e.g. selected state. - (console_type_create_glyphs_mswindows): add update_subwindow. - -1998-12-03 Andy Piper - - * console-tty.c (syms_of_console_tty): MULE -> FILE_CODING since - tty coding system things are such. - - * glyphs-widget.c (widget_face_font_info): new function for - pulling out height and width metrics for a widget's face. - (widget_text_to_pixel_conversion): calculate pixel sizes of text - for widgets. - - * event-msw.c (mswindows_drain_windows_queue): translate messages - that are destined for subwindows. This makes edit fields interact - with the keyboard correctly. - nuke warnings by #ifndef'ing out stuff not required by msg select(). - - * glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM): new - macro defining the iiforma without the symbol required by widget. - (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT): use it. - - * general.c (syms_of_general): add Qwidget, Qselected. - - * faces.c (complex_vars_of_faces): add widget face inheriting from - gui-element face. - -1998-11-09 Andy Piper - - * window.h (struct window): add a cache of subwindows on a - per-window basis. - - * window.c (mark_window): mark the subwindow_instance_cache. - (allocate_window): initialise the subwindow instance_cache. - - * toolbar-x.c (x_output_toolbar): call redisplay_clear_region - instead of the devmeth. - (x_clear_toolbar): ditto. - - * redisplay-x.c (x_output_display_block): call - redisplay_output_subwindow for subwindows and widgets. - - * redisplay-tty.c (tty_output_display_block): add IMAGE_WIDGET to - types to do nothing for. - - * lisp.h: declare new widget/subwindow symbols. - - * glyphs.c (image_instantiate): cache subwindows on a per-window - basis. - (subwindow_possible_dest_types): new function for subwindow dest - types. - (subwindow_instantiate): generic instantiation of a - subwindow. specialised by device multi-methods. - (Fsubwindowp): moved from glyphs-x.c. adapted for glyph-based - subwindows. - (Fimage_instance_subwindow_id): ditto. - (Fresize_subwindow): ditto. - (Fforce_subwindow_map): ditto. - - * glyphs-x.c (x_print_image_instance): remove subwindow - stuff. Handled genrically in glyphs.c. - (x_image_instance_equal): ditto. - (x_image_instance_hash): ditto. - (x_finalize_image_instance): delete subwindows when required. - (mark_subwindow) (print_subwindow) (finalize_subwindow) - (subwindow_hash) (Fmake_subwindow): deleted because of new, - glyph-based, subwindow implementation. - (Fsubwindow_height) (Fsubwindow_width) (Fsubwindow_xid): aliased - in glyphs.el - (Fsubwindowp) (Fresize_subwindow) (Fforce_subwindow_map): moved to - glyphs.c. - (x_unmap_subwindow): new function to unmap X subwindows. - (x_map_subwindow): new function to map X subwindows. - (x_subwindow_instantiate): new function to instantiate X - subwindows. - (x_resize_subwindow): new function to resize X subwindows. - (console_type_create_glyphs_x): add subwindow functions. - (image_instantiator_format_create_glyphs_x): add device - multi-methods for xpm, xbm and subwindow. - - * glyphs.el (subwindow-xid): old alias for new subwindow functions. - (subwindow-width): ditto. - (subwindow-height): ditto. - - * glyphs-msw.c (mswindows_widget_instantiate): new function for - generally instantiating ms subwindows. Used by - mswindows_*_instantiate. - (mswindows_edit_instantiate): instantiate an edit field on a - mswindows frame. - -1998-11-04 Andy Piper - - * symsinit.h: declare new functions. - - * redisplay.h: declare new functions. - - * redisplay-x.c (x_output_display_block): call - redisplay_clear_region rather than x_clear_region. - (x_output_string): ditto. - (x_output_pixmap): ditto. - (x_clear_to_window_end): ditto. - (x_output_eol_cursor): ditto. - (x_clear_region): only do X specific things. other duties handled - in redisplay_clear_region. - - * redisplay-tty.c (tty_clear_region): do tty specific things - some - duties moved to redisplay_clear_region. - - * redisplay-output.c (clear_left_border): use - redisplay_clear_region instead of device method. - (clear_right_border): ditto. - (output_display_line): ditto. - (redisplay_output_subwindow): ditto. - (redisplay_clear_top_of_window): ditto. - (redisplay_clear_region): perform duties previously handled by - device methods. call the appropriate device method at the - end. unmap subwindows if necessary. - - * redisplay-msw.c (mswindows_output_string): use - redisplay_clear_region instead of mswindows_clear_region. - (mswindows_clear_to_window_end): ditto. - (mswindows_output_display_block): output subwindows when required. - (mswindows_clear_region): only do mswindows specific things, - everything else is now handled in redisplay_clear_region. - - * gui.h: add item id hash defines and declare function prototypes. - - * gui.c (mark_gui_item): new function for marking gui_items. - (gui_item_hash): generic hash function for generating command ids - for gui_items. - - * gui-msw.c: new file. - (mswindows_handle_gui_wm_command): new function to handle widget - callbacks. - - * glyphs.h (MAYBE_IIFORMAT_DEVMETH): new function for device - multi-methods. - (IIFORMAT_HAS_SHARED_METHOD): ditto. - (DEFINE_DEVICE_IIFORMAT): ditto. - (INITIALIZE_DEVICE_IIFORMAT): ditto. - (struct Lisp_Image_Instance): add widget and subwindow data plus - appropriate access functions. - - * glyphs.c (decode_device_ii_format): new function for decoding - image instantiator functions based on a device type as well as an - image format. - (decode_image_instantiator_format): just call - decode_device_ii_format with nil device. - (add_entry_to_device_ii_format_list): new function for per device - method instances. - (add_entry_to_image_instantiator_format_list): just call - add_entry_to_device_ii_format_list with nil device. - (check_valid_vector): new function. - (instantiate_image_instantiator): instantiate using per-format - method and then per-format-per-device method (device - multi-methods). signal an error if neither is possible. - (mark_image_instance): cope with subwindows and widgets. - (print_image_instance): ditto. - (image_instance_equal): ditto. - (image_instance_hash): ditto. - (allocate_glyph): ditto. - (glyph_width): ditto. - (glyph_height_internal): ditto. - (xpm_instantiate): removed because of device multi-methods. - (mark_subwindow_cachels): new cachel functions for caching - instantiated subwindows on a per-frame basis. mostly copied from - glyph cachel functions. - (update_subwindow_cachel_data): ditto. - (add_subwindow_cachel): ditto. - (get_subwindow_cachel_index): ditto. - (reset_subwindow_cachels): ditto. - (mark_subwindow_cachels_as_not_updated): ditto. - (unmap_subwindow): generic unmapping of subwindows based on cachel - data. - (map_subwindow): ditto. - (initialize_subwindow_image_instance): generic initialisation of - subwindow data. - (syms_of_glyphs): add widget keywords. - - * glyphs-x.h (struct x_subwindow_data): convert Lisp_Subwindow to - x_subwindow_data. - -1998-11-04 Andy Piper - - * glyphs-widget.c: new file for instantiating widget type glyphs. - (widget_possible_dest_types): new general dest type function for - widgets. - (widget_validate): ditto. - (initialize_widget_image_instance): ditto - (widget_instantiate): ditto. Sets up fg/bg, gui_item parsing - before handing on control to device multi-methods. - (syms_of_glyphs_widget): new function. - (image_instantiator_format_create_glyphs_widget): new function, - added placeholders for button, edit, combo, scrollbar - (vars_of_glyphs_widget): new function. - - * glyphs-msw.h (WIDGET_INSTANCE_MSWINDOWS_HANDLE): new define for - storing window ids of widgets. - - * glyphs-msw.c (mswindows_finalize_image_instance): cope with - deletion of widget and subwindow glyphs. - (mswindows_unmap_subwindow): new device function for unmapping - subwindows on a msw frame. - (mswindows_map_subwindow): ditto. - (mswindows_register_image_instance): register instantiated widgets - with the widget hastable. - (mswindows_button_instantiate): instantiate a button type widget - on an msw frame. - (mswindows_subwindow_instantiate): instanttiate a subwindow on a - mswindows frame. - (image_instantiator_format_create_glyphs_mswindows): add device - multi-methods for xbm, xpm, subwindow, edit and button. - - * frame.h (struct frame): add subwindow_cachels dynarr for caching - information about subwindows visible on the current frame. used by - redisplay_clear_region to unmap subwindows as required. - - * frame.c (mark_frame): mark subwindow_cachels. - (allocate_frame_core): instantiate subwindow_cachels. - - * frame-msw.c (mswindows_init_frame_1): instntiate and mark the - widget hashtable. - - * event-msw.c (mswindows_wnd_proc): add call to - mswindows_handle_gui_wm_command to handle widget callbacks. - - * emacs.c (main_1): add calls to glyphs-widget initialisation - routines. - - * console.h (struct console_methods): add - unmap/map_subwindow_method for use be redisplay_clear_region to - map and unmap subwindows. Remove xpm and xbm stuff - now dealt - with by image instantiator multi-methods. Add - resize_subwindow_method. - - * console-stream.c (stream_clear_region): change signature to - match new generic clear region function. - - * Makefile.in.in: add glyphs-widget.o to list of objects. - - * console-msw.h (struct mswindows_frame): add widget hashtable for - wiring command ids to callbacks. - -1998-12-16 Andy Piper - - * XEmacs 21.2.6 is released - -1998-12-08 Hrvoje Niksic - - * md5.c (Fmd5): Correctly initiate string input stream. - - * Makefile.in.in (tests): Add md5-tests.el. - -1998-12-06 Martin Buchholz - - * lisp.h: - * alloc.c (make_vector): remove travesty - (Fmake_vector): - (make_pure_vector): - (pure_cons): - (make_bit_vector_internal): - (make_bit_vector): - (make_bit_vector_from_byte_vector): - (Fmake_bit_vector): - - make vector_equal a little faster. - - Don't use variable name `new'. - - Use size_t instead of EMACS_INT. - - usual Martin-style pointless bit-twiddling. - - * fns.c (mapcar1): - (Fmapconcat): - (Fmapcar): - (Fmapvector): - Make mapcar faster. In particular, make - (mapc #'identity long-string) - MUCH faster under Mule. - * tests/automated/lisp-tests.el: Test 'em! - -1998-12-06 Martin Buchholz - - * bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded - bytecode. - -1998-12-13 Martin Buchholz - - * console-msw.c: Function definitions follow coding standards - - This prevents e.g. find-tag on Lisp_Event finding DEVENT - -1998-12-11 Martin Buchholz - - * events.h (struct timeout_data): - * event-tty.c (tty_timeout_to_emacs_event): - * event-msw.c (mswindows_wm_timer_callback): - * event-Xt.c (Xt_timeout_to_emacs_event): - * event-msw.c (mswindows_cancel_dispatch_event): - Make sure Lisp_Objects inside events are initialized to Qnil, not - Qnull_pointer, which is now illegal. - -1998-12-10 Martin Buchholz - - * lisp.h: Fix up prototypes to match alloc.c - -1998-12-09 Andy Piper - - * glyphs-msw.c (init_image_instance_from_xbm_inline): don't use - XSETINT for assigning lisp objects. - -1998-12-07 Martin Buchholz - - * opaque.h: - * console-msw.c (DHEADER): - (DOPAQUE_DATA): - (DEVENT): - (DCONS): - (DCONSCDR): - (DSTRING): - (DVECTOR): - (DSYMBOL): - (DSYMNAME): - - max_align_t should not be visible to the user of the - XOPAQUE_DATA macro. - - use Bufbyte instead of char - - parens around (FOOP (obj)) are always redundant. - If they were necessary, we should fix the macro instead. - - Always use string_data(foo) instead of foo->data. - -1998-12-07 Martin Buchholz - - * sysdep.c (set_descriptor_non_blocking): - Since O_NONBLOCK is now always #defined, make use of fcntl - conditional on F_SETFL being defined. - -1998-12-09 Andy Piper - - * menubar-msw.c (mswindows_handle_wm_command): add back in checks - that got removed in the merge - -1998-11-30 Greg Klanderman - - * dired.c (vars_of_dired): bugfix for previous conditionalization - of user-name-completion on non- Windows NT. - -1998-12-08 Martin Buchholz - - * windowsnt.h: Remove `support' for using index and rindex - - * filelock.c (current_lock_owner): - - Change uses of index -> strchr, rindex -> strrchr - -1998-12-06 Martin Buchholz - - * frame-msw.c (mswindows_init_frame_1): - - use make_lisp_hash_table, not Fmake_hash_table - - include elhash.h - -1998-12-05 XEmacs Build Bot - - * XEmacs 21.2.5 is released - -1998-11-30 Martin Buchholz - - * xselect.c (receive_incremental_selection): - * xselect.c (x_get_window_property): - * xmu.c (XmuReadBitmapDataFromFile): - * xmu.c (XmuCursorNameToIndex): - * xgccache.c (describe_gc_cache): - * xgccache.c (gc_cache_lookup): - * xgccache.c (free_gc_cache): - * xgccache.c (make_gc_cache): - * window.h: - * window.c (map_windows_1): - * window.c (Fother_window_for_scrolling): - * window.c (window_scroll): - * window.c (change_window_height): - * window.c (Fsplit_window): - * window.c (window_left_gutter_width): - * window.c (window_modeline_height): - * window.c (invalidate_vertical_divider_cache_in_window): - * window.c (window_needs_vertical_divider_1): - * window.c (update_mirror_internal): - * window.c (SET_LAST_FACECHANGE): - * widget.c (Fwidget_plist_member): - * unexec.c (copy_text_and_data): - * unexcw.c (copy_executable_and_dump_data_section): - * tooltalk.doc: - * tooltalk.c (struct Lisp_Tooltalk_Pattern): - * tooltalk.c (struct Lisp_Tooltalk_Message): - * toolbar.h (struct toolbar_button): - * toolbar.c (default_toolbar_visible_p_changed_in_window): - * toolbar.c (recompute_overlaying_specifier): - * toolbar.c (toolbar_validate): - * toolbar.c (toolbar_button_at_pixpos): - * toolbar.c (get_toolbar_coords): - * toolbar.c (update_frame_toolbars): - * toolbar-x.c: - * toolbar-msw.c (mswindows_handle_toolbar_wm_command): - * toolbar-msw.c (mswindows_find_toolbar_pos): - * toolbar-msw.c (mswindows_output_toolbar): - * toolbar-msw.c (mswindows_clear_toolbar): - * toolbar-msw.c: - * systty.h: - * syssignal.h: - * sysproc.h: - * sysfile.h: - * sysdll.c: - * sysdep.h: - * sysdep.c (rmdir): - * sysdep.c (sys_fopen): - * sysdep.c (sys_open): - * sysdep.c (tty_init_sys_modes_on_device): - * sysdep.c (get_eof_char): - * sysdep.c (child_setup_tty): - * sysdep.c (set_descriptor_non_blocking): - * syntax.h: - * syntax.c (scan_words): - * syntax.c: - * symsinit.h: - * symeval.h (struct symbol_value_varalias): - * symeval.h (struct symbol_value_forward): - * symbols.c (syms_of_symbols): - * symbols.c (init_symbols_once_early): - * symbols.c (Fbuilt_in_variable_type): - * symbols.c (Fsymbol_value_in_buffer): - * symbols.c (default_value): - * symbols.c (Fset): - * symbols.c (find_symbol_value_quickly): - * symbols.c (store_symval_forwarding): - * symbols.c (set_default_console_slot_variable): - * symbols.c (set_default_buffer_slot_variable): - * symbols.c (verify_ok_for_buffer_local): - * symbols.c (symbol_is_constant): - * symbols.c (oblookup): - * symbols.c (Funintern): - * symbols.c (Fintern): - * symbols.c (check_obarray): - * sunplay.c: - * specifier.h (struct specifier_methods): - * specifier.h: - * specifier.c (specifier_instance): - * specifier.c (specifier_instance_from_inst_list): - * specifier.c (decode_locale_type): - * specifier.c (specifier_equal): - * specifier.c (finalize_specifier): - * specifier.c (prune_specifiers): - * specifier.c (kill_specifier_buffer_locals): - * sound.c (init_native_sound): - * sound.c: - * signal.c (alarm): - * search.c (Fmatch_data): - * search.c (match_limit): - * search.c (Freplace_match): - * search.c (skip_chars): - * search.c (scan_buffer): - * search.c: - * scrollbar.c (specifier_vars_of_scrollbar): - * scrollbar.c (Fscrollbar_set_hscroll): - * scrollbar.c (vertical_scrollbar_changed_in_window): - * scrollbar.c (release_window_mirror_scrollbars): - * scrollbar.c (free_scrollbar_instance): - * scrollbar-x.c: - * scrollbar-msw.c: - * s/msdos.h (O_BINARY): - * s/linux.h: - * s/freebsd.h (LIBS_TERMCAP): - * regex.c (re_match_2_internal): - * regex.c (compile_extended_range): - * regex.c (POP_FAILURE_POINT): - * regex.c (PUSH_FAILURE_POINT): - * redisplay.h (RESET_CHANGED_SET_FLAGS): - * redisplay.h: - * redisplay.h (struct display_line): - * redisplay.h (struct rune): - * redisplay.c (vars_of_redisplay): - * redisplay.c (redisplay_variable_changed): - * redisplay.c (UPDATE_CACHE_RETURN): - * redisplay.c (validate_line_start_cache): - * redisplay.c (mark_redisplay_structs): - * redisplay.c (mark_glyph_block_dynarr): - * redisplay.c (window_line_number): - * redisplay.c (redisplay_frame): - * redisplay.c (redisplay_window): - * redisplay.c (generate_modeline): - * redisplay.c (create_right_glyph_block): - * redisplay.c (create_left_glyph_block): - * redisplay.c (create_text_block): - * redisplay.c: - * redisplay-x.c (x_output_hline): - * redisplay-x.c (x_output_vertical_divider): - * redisplay-tty.c (tty_output_display_block): - * redisplay-output.c (output_display_line): - * redisplay-output.c: - * redisplay-msw.c (mswindows_output_vertical_divider): - * redisplay-msw.c (mswindows_ring_bell): - * redisplay-msw.c (mswindows_output_cursor): - * redisplay-msw.c: - * rangetab.c: - * ralloc.c: - * puresize.h (RAW_PURESIZE): - * profile.c (syms_of_profile): - * profile.c (Fstart_profiling): - * profile.c (sigprof_handler): - * profile.c: - * procimpl.h: - * process.c (vars_of_process): - * process.c (read_process_output): - * process.c (get_process): - * process.c: - * process-unix.c (unix_open_multicast_group): - * process-unix.c (unix_get_tty_name): - * process-unix.c (unix_send_process): - * process-unix.c (unix_reap_exited_processes): - * process-unix.c (unix_create_process): - * process-unix.c (unix_init_process_io_handles): - * process-unix.c (allocate_pty): - * process-unix.c: - * process-nt.c (nt_open_network_stream): - * process-nt.c (nt_update_status_if_terminated): - * process-nt.c (nt_finalize_process_data): - * process-nt.c: - * print.c (debug_short_backtrace): - * print.c (debug_backtrace): - * print.c (print_symbol): - * print.c (print_internal): - * print.c (print_cons): - * print.c (Fwrite_char): - * print.c (print_prepare): - * print.c (canonicalize_printcharfun): - * print.c (output_string): - * print.c: - * opaque.h: - * opaque.c (allocate_managed_opaque): - * opaque.c: - * offix.c (DndSetData): - * objects.c (face_boolean_create): - * objects.c (font_instantiate): - * objects.c (font_create): - * objects.c (color_create): - * objects.c (finalize_font_instance): - * objects.c (finalize_color_instance): - * objects.c: - * objects-x.c (x_font_instance_truename): - * objects-x.c: - * objects-x.c (x_initialize_font_instance): - * objects-x.c (allocate_nearest_color): - * objects-tty.c (tty_initialize_font_instance): - * objects-tty.c (tty_initialize_color_instance): - * objects-msw.c (mswindows_initialize_color_instance): - * ntproc.c (syms_of_ntproc): - * ntproc.c (Fwin32_set_process_priority): - * ntproc.c (sys_spawnve): - * ntproc.c: - * ntheap.c (get_data_end): - * nt.c (period): - * nt.c: - * nt.c (stat): - * nt.c (generate_inode_val): - * nt.c (sys_rename): - * nas.c: - * mule-wnnfns.c (Fwnn_hinsi_number): - * mule-wnnfns.c (Fwnn_yuragi): - * mule-wnnfns.c (Fwnn_common_learn): - * mule-wnnfns.c (Fwnn_suffix_learn): - * mule-wnnfns.c (Fwnn_prefix_learn): - * mule-wnnfns.c (Fwnn_okuri_learn): - * mule-wnnfns.c (Fwnn_complex_conv): - * mule-wnnfns.c (Fwnn_last_is_first): - * mule-wnnfns.c (Fwnn_bmodify_dict_add): - * mule-wnnfns.c (Fwnn_notrans_dict_add): - * mule-wnnfns.c (Fwnn_fiusr_dict_add): - * mule-wnnfns.c (Fwnn_fisys_dict_add): - * mule-wnnfns.c (Fwnn_hinsi_list): - * mule-wnnfns.c (Fwnn_fuzokugo_set): - * mule-wnnfns.c (Fwnn_dict_search): - * mule-wnnfns.c (Fwnn_word_toroku): - * mule-wnnfns.c (Fwnn_hindo_update): - * mule-wnnfns.c (Fwnn_bunsetu_henkou): - * mule-wnnfns.c (Fwnn_kakutei): - * mule-wnnfns.c (Fwnn_begin_henkan): - * mule-wnnfns.c (Fwnn_dict_comment): - * mule-wnnfns.c (Fwnn_dict_add): - * mule-wnnfns.c (Fwnn_open): - * mule-mcpath.c (mc_getcwd): - * mule-coding.c (vars_of_mule_coding): - * mule-coding.c (convert_to_external_format): - * mule-coding.c (encoding_marker): - * mule-coding.c (decoding_marker): - * mule-coding.c (Fcopy_coding_system): - * mule-coding.c (Fmake_coding_system): - * mule-coding.c (Fcoding_system_list): - * mule-coding.c (Ffind_coding_system): - * mule-coding.c (symbol_to_eol_type): - * mule-coding.c: - * mule-charset.c (complex_vars_of_mule_charset): - * mule-charset.c (vars_of_mule_charset): - * mule-charset.c (Fset_charset_ccl_program): - * mule-charset.c (struct charset_list_closure): - * mule-charset.c (Ffind_charset): - * mule-charset.c (make_charset): - * mule-charset.c (non_ascii_valid_char_p): - * mule-charset.c: - * mule-ccl.c (ccl_driver): - * mule-canna.c (c2mu): - * mule-canna.c (Fcanna_henkan_begin): - * mule-canna.c (Fcanna_parse): - * mule-canna.c (Fcanna_store_yomi): - * mule-canna.c (Fcanna_touroku_string): - * mule-canna.c (Fcanna_initialize): - * minibuf.c: - * menubar.c (menu_parse_submenu_keywords): - * menubar-x.c (make_dummy_xbutton_event): - * menubar-x.c (set_frame_menubar): - * menubar-x.c (menu_item_descriptor_to_widget_value_1): - * menubar-x.c: - * menubar-msw.h: - * menubar-msw.c (mswindows_popup_menu): - * menubar-msw.c (mswindows_update_frame_menubars): - * menubar-msw.c (mswindows_handle_wm_command): - * menubar-msw.c (unsafe_handle_wm_initmenu_1): - * menubar-msw.c (unsafe_handle_wm_initmenupopup_1): - * menubar-msw.c (update_frame_menubar_maybe): - * menubar-msw.c (populate_or_checksum_helper): - * menubar-msw.c (empty_menu): - * menubar-msw.c: - * md5.c: - * marker.c (set_marker_internal): - * marker.c (print_marker): - * malloc.c: - * make-src-depend: - * lstream.c (lisp_buffer_rewinder): - * lstream.c (mark_lstream): - * lrecord.h: - * lrecord.h (struct lrecord_header): - * lread.c (readevalloop): - * lread.c (locate_file): - * lread.c (locate_file_in_directory): - * lread.c (Flocate_file): - * lread.c (load_force_doc_string_unwind): - * lread.c (ebolify_bytecode_constants): - * lread.c: - * lisp.h: - * lisp-union.h: - * lisp-disunion.h: - * linuxplay.c (linux_play_data_or_file): - * linuxplay.c (audio_init): - * line-number.c: - * keymap.h: - * keymap.c (describe_map): - * keymap.c (describe_map_mapper): - * keymap.c (Fdescribe_bindings_internal): - * keymap.c (Fsingle_key_description): - * keymap.c (map_keymap_sorted): - * keymap.c (get_relevant_keymaps): - * keymap.c (Flookup_key): - * keymap.c (raw_lookup_key_mapper): - * keymap.c (Fdefine_key): - * keymap.c (Fevent_matches_key_specifier_p): - * keymap.c (key_desc_list_to_event): - * keymap.c (define_key_parser): - * keymap.c (define_key_check_and_coerce_keysym): - * keymap.c (keymap_submaps): - * keymap.c (keymap_store_internal): - * keymap.c (keymap_delete_inverse_internal): - * keymap.c (keymap_store_inverse_internal): - * keymap.c (print_keymap): - * keymap.c (Lisp_Keymap): - * keymap.c: - * intl.c: - * insdel.c (convert_bufbyte_string_into_emchar_dynarr): - * insdel.c (make_gap): - * input-method-xlib.c (get_XIM_input): - * input-method-xlib.c (XIM_init_frame): - * imgproc.c: - * hash.h: - * hash.c: - * gui.c: - * gui-x.c (button_item_to_widget_value): - * gui-x.c (popup_selection_callback): - * glyphs.h (struct image_instantiator_methods): - * glyphs.c (mark_glyph_cachels): - * glyphs.c (Fglyph_type): - * glyphs.c (image_instantiate): - * glyphs.c (image_create): - * glyphs.c (make_image_instance_1): - * glyphs.c (finalize_image_instance): - * glyphs.c: - * glyphs-x.c (finalize_subwindow): - * glyphs-x.c (xface_validate): - * glyphs-x.c (x_locate_pixmap_file): - * glyphs-x.c (convert_EImage_to_XImage): - * glyphs-msw.c: - * glyphs-msw.c (mswindows_resource_instantiate): - * glyphs-msw.c (xpm_to_eimage): - * glyphs-msw.c (convert_EImage_to_DIBitmap): - * glyphs-eimage.c (tiff_instantiate): - * glyphs-eimage.c (png_instantiate): - * glyphs-eimage.c (struct png_error_struct): - * glyphs-eimage.c (gif_memory_storage): - * glyphs-eimage.c: - * gifrlib.h: - * getloadavg.c (getloadavg): - * getloadavg.c: - * gdbinit: - * free-hook.c (log_gcpro): - * free-hook.c (check_malloc): - * free-hook.c (check_free): - * free-hook.c (ROUND_UP_TO_PAGE): - * free-hook.c: - * frame.h (struct frame): - * frame.h: - * frame.c (change_frame_size_1): - * frame.c (allocate_frame_core): - * frame.c: - * frame-x.c (x_focus_on_frame): - * frame-x.c (x_init_frame_2): - * frame-x.c (x_popup_frame): - * frame-x.c (xemacs_XtPopup): - * frame-x.c: - * frame-x.c (Foffix_start_drag_internal): - * frame-x.c (x_cde_destroy_callback): - * frame-x.c (x_wm_hack_wm_protocols): - * frame-tty.c (tty_frame_visible_p): - * frame-msw.c (mswindows_make_frame_invisible): - * frame-msw.c (mswindows_after_init_frame): - * frame-msw.c (mswindows_init_frame_1): - * fns.c (syms_of_fns): - * fns.c (Fbase64_decode_string): - * fns.c (Fnconc): - * fns.c (Ffillarray): - * fns.c (Fobject_plist): - * fns.c (Fget): - * fns.c (Fcanonicalize_lax_plist): - * fns.c (Fcanonicalize_plist): - * fns.c (Fplist_remprop): - * fns.c (Fplist_get): - * fns.c (advance_plist_pointers): - * fns.c (internal_plist_put): - * fns.c (Fnreverse): - * fns.c (Fremassq): - * fns.c (Felt): - * fns.c (Fsubstring): - * fns.c (Fbvconcat): - * fns.c (Flength): - * fns.c (length_with_bytecode_hack): - * fns.c (print_bit_vector): - * fns.c: - * floatfns.c (Ffloor): - * floatfns.c: - * floatfns.c (in_float_error): - * fileio.c (Ffile_modes): - * fileio.c (Fexpand_file_name): - * fileio.c (Fmake_temp_name): - * fileio.c (Ffile_name_nondirectory): - * fileio.c (Ffile_name_directory): - * file-coding.h: - * file-coding.c (vars_of_mule_coding): - * file-coding.c (convert_to_external_format): - * file-coding.c (encoding_marker): - * file-coding.c (decoding_marker): - * file-coding.c (Fcopy_coding_system): - * file-coding.c (Fmake_coding_system): - * file-coding.c (struct coding_system_list_closure): - * file-coding.c (Ffind_coding_system): - * file-coding.c (symbol_to_eol_type): - * file-coding.c: - * faces.h (struct face_cachel): - * faces.c (vars_of_faces): - * faces.c (face_property_was_changed): - * faces.c (mark_face_cachels): - * faces.c (temporary_faces_list): - * faces.c (struct face_list_closure): - * faces.c: - * extents.h (struct extent): - * extents.c (vars_of_extents): - * extents.c (struct copy_string_extents_1_arg): - * extents.c (add_string_extents_mapper): - * extents.c (Fextent_property): - * extents.c (Fset_extent_property): - * extents.c (symbol_to_glyph_layout): - * extents.c (properties_equal): - * extents.c (print_extent): - * extents.c (print_extent_1): - * extents.c (extent_in_region_p): - * extents.c (gap_array_make_gap): - * extents.c: - * events.h (struct Lisp_Event): - * events.h: - * events.c (Fevent_properties): - * events.c (format_event_object): - * events.c (Fmake_event): - * events.c (event_equal): - * events.c (print_event): - * events.c (mark_event): - * event-stream.c ((read-char) - * event-stream.c (vars_of_event_stream): - * event-stream.c (syms_of_event_stream): - * event-stream.c (Fset_recent_keys_ring_size): - * event-stream.c (Fsit_for): - * event-stream.c (Fnext_event): - * event-stream.c (execute_help_form): - * event-stream.c (maybe_kbd_translate): - * event-stream.c: - * event-msw.c (vars_of_event_mswindows): - * event-msw.c (mswindows_wnd_proc): - * event-msw.c (mswindows_need_event): - * event-msw.c (mswindows_drain_windows_queue): - * event-msw.c (mswindows_pump_outstanding_events): - * event-msw.c: - * event-msw.c (slurp_thread): - * event-msw.c (struct ntpipe_slurp_stream): - * event-msw.c (HANDLE_TO_USID): - * event-Xt.c (emacs_Xt_handle_magic_event): - * event-Xt.c (x_event_to_emacs_event): - * event-Xt.c (x_reset_modifier_mapping): - * event-Xt.c (x_reset_key_mapping): - * event-Xt.c: - * eval.c (syms_of_eval): - * eval.c (warn_when_safe): - * eval.c (warn_when_safe_lispobj): - * eval.c (Fbacktrace_frame): - * eval.c (Fbacktrace): - * eval.c (top_level_set): - * eval.c (unbind_to_hairy): - * eval.c (specbind_magic): - * eval.c (specbind_unwind_wasnt_local): - * eval.c (call2_trapping_errors): - * eval.c (call1_trapping_errors): - * eval.c (catch_them_squirmers_call2): - * eval.c (call0_trapping_errors): - * eval.c (run_hook_trapping_errors): - * eval.c (catch_them_squirmers_eval_in_buffer): - * eval.c (call4_in_buffer): - * eval.c (call3_in_buffer): - * eval.c (call2_in_buffer): - * eval.c (call1_in_buffer): - * eval.c (call0_in_buffer): - * eval.c (run_hook): - * eval.c (run_hook_with_args_in_buffer): - * eval.c (Fapply): - * eval.c (Feval): - * eval.c (do_autoload): - * eval.c (un_autoload): - * eval.c (Fautoload): - * eval.c (Finteractive_p): - * eval.c (Fcommand_execute): - * eval.c (signal_quit): - * eval.c (call_with_suspended_errors): - * eval.c (signal_error): - * eval.c (return_from_signal): - * eval.c (Fcall_with_condition_handler): - * eval.c (run_condition_case_handlers): - * eval.c (condition_case_1): - * eval.c (Funwind_protect): - * eval.c (unwind_to_catch): - * eval.c (internal_catch): - * eval.c (Fmacroexpand_internal): - * eval.c (Fuser_variable_p): - * eval.c (Fdefconst): - * eval.c (Fdefvar): - * eval.c (Ffunction): - * eval.c (signal_call_debugger): - * eval.c (call_debugger): - * eval.c: - * emacs.c (main): - * emacs.c (sort_args): - * emacs.c (main_1): - * elhash.h: - * elhash.c: - * editfns.c (Fencode_time): - * editfns.c (Fdecode_time): - * editfns.c (Fuser_full_name): - * editfns.c: - * editfns.c (save_excursion_restore): - * ecrt0.c: - * dynarr.c: - * doprnt.c (emacs_doprnt_1): - * doc.c (verify_doc_mapper): - * doc.c (Fsnarf_documentation): - * doc.c (Fdocumentation): - * dll.c: - * dired.c (user_name_completion): - * dired.c (Fdirectory_files): - * dialog-x.c: - * dialog-msw.c: - * dgif_lib.c (FreeSavedImages): - * dgif_lib.c (DGifGetImageDesc): - * device.h: - * device.h (struct device): - * device.c (Fselect_device): - * device.c (allocate_device): - * device.c: - * device-x.c (Fx_keysym_on_keyboard_p): - * device-x.c (Fx_valid_keysym_name_p): - * device-x.c (x_IO_error_handler): - * device-x.c (x_delete_device): - * device-x.c (x_finish_init_device): - * device-x.c (x_init_device): - * device-x.c: - * device-msw.c (mswindows_init_device): - * dbxrc: - * database.c (vars_of_database): - * database.c (Fput_database): - * database.c (Fopen_database): - * database.c (berkdb_remove): - * database.c (berkdb_put): - * database.c (Fdatabasep): - * database.c (print_database): - * database.c: - * data.c (vars_of_data): - * data.c (syms_of_data): - * data.c (init_errors_once_early): - * data.c (prune_weak_lists): - * data.c (finish_marking_weak_lists): - * data.c (print_weak_list): - * data.c (Fmod): - * data.c (Fstring_to_number): - * data.c (Fnumber_to_string): - * data.c (Findirect_function): - * data.c (Fsetcdr): - * data.c (Ffloatp): - * data.c (Fsubr_interactive): - * data.c (Farrayp): - * data.c (Fkeywordp): - * data.c (Fnull): - * data.c: - * console.h (CONSOLE_NAME): - * console.h: - * console.c (vars_of_console): - * console.c (Fselect_console): - * console.c: - * console-x.h (DEVICE_X_COLORMAP): - * console-x.h (struct x_device): - * console-x.c (x_device_to_console_connection): - * console-tty.h (CONSOLE_TTY_FINAL_CURSOR_Y): - * console-tty.c (tty_init_console): - * console-tty.c: - * console-msw.h (struct mswindows_frame): - * conslots.h: - * config.h.in: - * cmds.c (internal_self_insert): - * cmds.c (Fforward_line): - * cmds.c (Fforward_char): - * cmds.c: - * cmdloop.c: - * chartab.c (mark_char_table_entry): - * chartab.c: - * casefiddle.c (casify_word): - * callproc.c (child_setup): - * callproc.c (Fcall_process_internal): - * callproc.c: - * callint.c (Fcall_interactively): - * bytecode.h: - * bytecode.c (execute_rare_opcode): - * bytecode.c (execute_optimized_program): - * bytecode.c: - * bufslots.h: - * buffer.h (BUFFER_REALLOC): - * buffer.h (GET_CHARPTR_INT_DATA_ALLOCA): - * buffer.h (GET_CHARPTR_EXT_DATA_ALLOCA): - * buffer.h: - * buffer.h (MAP_INDIRECT_BUFFERS): - * buffer.h (CHECK_LIVE_BUFFER): - * buffer.c (init_initial_directory): - * buffer.c (complex_vars_of_buffer): - * buffer.c (vars_of_buffer): - * buffer.c (finish_init_buffer): - * buffer.c (Fget_file_buffer): - * buffer.c (Fbuffer_list): - * buffer.c (mark_buffer): - * balloon_help.c (balloon_help_move_to_pointer): - * balloon_help.c (show_help): - * balloon_help.c: - * backtrace.h: - * alloc.c (garbage_collect_1): - * alloc.c (sweep_strings): - * alloc.c (sweep_compiled_functions): - * alloc.c (sweep_bit_vectors_1): - * alloc.c (sweep_vectors_1): - * alloc.c (sweep_lcrecords_1): - * alloc.c (tick_lcrecord_stats): - * alloc.c (pure_string_sizeof): - * alloc.c (mark_conses_in_list): - * alloc.c (mark_object): - * alloc.c (report_pure_usage): - * alloc.c (make_pure_float): - * alloc.c (make_pure_string): - * alloc.c (free_managed_lcrecord): - * alloc.c (mark_string): - * alloc.c (noseeum_make_marker): - * alloc.c (allocate_event): - * alloc.c (Fbit_vector): - * alloc.c (Fvector): - * alloc.c (make_float): - * alloc.c (Fmake_list): - * alloc.c (Flist): - * alloc.c (FREE_FIXED_TYPE_WHEN_NOT_IN_GC): - * alloc.c (PUT_FIXED_TYPE_ON_FREE_LIST): - * alloc.c (DECLARE_FIXED_TYPE_ALLOC): - * alloc.c (dbg_constants): - * alloc.c (gc_record_type_p): - * alloc.c (free_lcrecord): - * alloc.c (xmalloc): - * alloc.c (NOSEEUM_INCREMENT_CONS_COUNTER): - * abbrev.c: - * Makefile.in.in (mostlyclean): - * Makefile.in.in (external_client_xlib_objs_nonshared): - * Makefile.in.in (temacs_link_args): - * Makefile.in.in (release): - * Makefile.in.in (dnd_objs): - * Makefile.in.in (objs): - * Makefile.in.in (PROGNAME): - * EmacsShell.c: cast strings to (XtPointer) - * EmacsFrame.c: cast strings to (XtPointer) - - mega patch - - rewrite basic lisp functions for speed - - rewrite bytecode interpreter for speed - - rewrite list looping constructs for speed and safety using - tortoise/hare. - - use size_t where appropriate. - - new hashtable implementation - - cleanup implementation of opaques - - opaques can now be purecopy'ed - - move some cl functionality into C for speed. - - remove last remaining VMS support - - spelling fixes - - improve gdb/dbx debugger support - - move pure.c back into alloc.c for performance - - enable report_pure_usage() if --memory-usage-stats - - remove remnants of Energize support (EMACS_BTL, cadillac...) - - don't use symbols with leading `_' or embedded `__' - - globally cleanup duplicated semicolons `;;' - - I give in on %p vs %lx - we use printf("%lx",(long) p) - globally. - - globally replace O_NDELAY with O_NONBLOCK. - - globally replace CDISABLE with _POSIX_VDISABLE. - - use O_RDONLY and O_RDWR instead of magic `0' and `2'. - - define (and maybe use!) STDERR_FILENO and friends. - - add support for macros defined in C - - `when', `unless', `not' and `defalias' now defined in C, - so that they are universally available. - - rename defvar_mumble to defvar_magic - - rename RETURN__ to RETURN_SANS_WARNINGS - - use consistent style of initial caps in error messages - - implement last, butlast, nbutlast, copy-list in C. - - provide typedefs for all struct Lisp_foo types - - Lisp_Objects must be initialized to Qnil rather than 0. - - make sure XEmacs runs (slowly) with always_gc == 1; - - fast and safe LOOP_* macros - - change calls to XSETOBJ to XSETFOO - - replace calls to XSETINT by make_int() - - plug up memory leaks - - use style markobj (foo), not silly ((markobj) (foo)) - - use XFLOAT_DATA (obj) instead of float_data (XFLOAT (obj)) - -1998-12-02 P. E. Jareth Hein - - * unexec.c: Changed a #ifndef statement to fix XEmacs on BSDI 3.0 - -1998-11-28 SL Baur - - * XEmacs 21.2-beta4 is released. - -1998-11-27 SL Baur - - * mule-charset.c (complex_vars_of_mule_charset): Fix graphic - property in control-1 charset. - From Julian Bradfield - -1998-11-26 Jan Vroonhof - - * gui-x.c (button_item_to_widget_value): Ignore :key-sequence - keyword. - Add stub for :label. - - * gui.c (gui_item_add_keyval_pair): ditto. - - * menubar-x.c (menu_item_descriptor_to_widget_value_1): Ignore - :key-sequence keyword. - Add stub for:label. - Support :active for submenus like the Windows code and FSF Emacs. - -1998-11-27 Hrvoje Niksic - - * dired.c (make_directory_hash_table): make_string() is OK because - readdir() Mule-encapsulates. - -1998-11-26 Hrvoje Niksic - - * fns.c (Fbase64_encode_string): Fix docstring. - (Fbase64_decode_string): Ditto. - -1998-11-26 Hrvoje Niksic - - * editfns.c (Ftranslate_region): Use - convert_bufbyte_string_into_emchar_string(). - -1998-11-25 Hrvoje Niksic - - * editfns.c (Ftranslate_region): Accept vectors and char-tables as - well as strings. - (Ftranslate_region): Turn table into an array of Emchars for - larger regions. - -1998-11-25 Hrvoje Niksic - - * chartab.c (Freset_char_table): Fix wrong placement of #endif. - -1998-11-24 Hrvoje Niksic - - * chartab.c (Freset_char_table): Don't blindly fill chartables of - type `char' with nils. - - * chartab.c (canonicalize_char_table_value): Coerce ints to chars - for tables of type `char'. - -1998-11-26 Didier Verna - - * input-method-xlib.c (Initialize_Locale): don't call - XtSetLanguageProc. We've done the whole work here. - * input-method-xfs.c (Initialize_Locale): ditto. - * input-method-motif.c (Initialize_Locale): ditto. - -1998-11-26 Didier Verna - - * process-unix.c (unix_create_process): handle properly - Vfile_name_coding_system for converting the program and directory - names. - -1998-11-27 SL Baur - - * m/arm.h: New file. - From James LewisMoss - -1998-11-27 Takeshi Hagiwara - - * m/mips-nec.h: - Fix the realpath() problem of UnixWare2.1.3. - Patches for NEC's sysv4.2 machine. - -1998-11-25 Hrvoje Niksic - - * dired.c (Fdirectory_files): Remove redundant code. - -1998-11-25 Hrvoje Niksic - - * fns.c (free_malloced_ptr): New function. - (XMALLOC_OR_ALLOCA): New macro. - (XMALLOC_UNBIND): Ditto. - (Fbase64_encode_region): Use malloc() for large blocks; arrange it - to be freed in case of non-local exit. - (Fbase64_encode_string): Ditto. - (Fbase64_decode_region): Ditto. - (Fbase64_decode_string): Ditto. - (STORE_BYTE): New macro. - (base64_decode_1): Use it. - -1998-11-25 Hrvoje Niksic - - * fns.c (base64_value_to_char): Base64 stuff. - -1998-11-24 Hrvoje Niksic - - * editfns.c (Fbuffer_substring): New function. - - * lisp.h: Declare make_string_from_buffer_no_extents(). - - * insdel.c (make_string_from_buffer_1): New function. - (make_string_from_buffer_no_extents): Ditto. - -1998-11-15 Michael Sperber [Mr. Preprocessor] - - * linuxplay.c: Including instead of makes - sound work on AIX with OSS installed. Linux should still work. - -1998-11-03 Andy Piper - - * config.h.in: name change for cygwin/version.h - - * configure.in: check for cygwin/version.h now. - - * cygwin32.h: track CYGWIN_DLL_VERSION_MAJOR -> - CYGWIN_VERSION_DLL_MAJOR name change in cygwin b20. - move cygwin32/version.h to cygwin/version.h - -1998-11-03 Olivier Galibert - - * lisp.h (struct Lisp_Bit_Vector): Fix declaration of bits from - int to long. - -1998-10-22 Andy Piper - - * cygwin32.h: track CYGWIN_DLL_VERSION_MAJOR -> - CYGWIN_VERSION_DLL_MAJOR name change in cygwin b20. - enable BROKEN_SIGIO under b20 to make QUIT work. - -1998-10-22 Andy Piper - - * frame-msw.c (mswindows_size_frame_internal): force frame sizing - to fit within the constraints of the screen size. I.e. make the - frame small enough to fit and move it if some of it will be - off-screen. - -1998-10-19 Greg Klanderman - - * dired.c: conditionalize inclusion of user-name-completion - primitives on non-Windows NT. The needed functions don't exist on NT. - -1998-11-24 SL Baur - - * gifrlib.h: Clean up types for 64 bit compile. - * dgif_lib.c (DGifInitRead): Ditto. - (MakeSavedImage): Ditto. - * emacs.c (decode_path): Ditto. - From Steve Carney - -1998-10-16 William M. Perry - - * glyphs-msw.c (bitmap_table): Fixed typo in builtin bitmaps - (cehckboxes instead of checkboxes). - -1998-10-15 SL Baur - - * XEmacs 21.2-beta3 is released. - -1998-10-13 Raymond Toy - - * runemacs.c (WinMain): If the basename is "rungnuclient.exe", run - gnuclient. Otherwise, we run xemacs as we always did. This gets - rid of the annoying DOS window when running gnuclient. - -1998-10-13 Andy Piper - - * dragdrop.c (vars_of_dragdrop): rename HAVE_MSWINDOWS -> - HAVE_MS_WINDOWS typo. - -1998-10-13 SL Baur - - * process-unix.c (unix_send_process): Set closed flag on writable - pipe after SIGPIPE is received and before we call deactivate_process. - -1998-10-03 Gunnar Evermann - - * window.c (Fset_window_start): respect narrowing when - checking wheter start is at the beginning of a line. - (Fset_window_buffer): Ditto - Fixes repeatable crash in VM. - -1998-10-09 SL Baur - - * window.c (specifier_vars_of_window): Set default vertical - divider width to 1 on ttys. - -1998-10-08 Martin Buchholz - - * alloc.c: - * unexec.c: - * malloc.c: - Add to get ptrdiff_t declaration - -1998-10-07 Jonathan Harris - - * scrollbar-msw.c: Use the same vertical scrollbar drag hack as - is used for Motif or Lucid scrollbars under X. - -1998-10-08 Pierre Wendling - - * m/alpha.h (UNEXEC): quoted to avoid bad expansion when running - `configure' - -1998-10-06 Takeshi Hagiwara - - * frame-x.c (x_delete_frame): Fix an argument of XtDestroyWidget. - -1998-10-05 Andy Piper - - * s/cygwin32.h: more cygwin b20 reorganisation. - -1998-10-01 Raymond Toy - - * nas.c: Added necessary support functions to be able to handle - WAVE files in memory, just like the support for SND files in - memory. - -1998-09-30 SL Baur - - * callproc.c (child_setup): Fix spelling typo. - -1998-09-29 SL Baur - - * XEmacs 21.2-beta2 is released. - -1998-09-27 P. E. Jareth Hein - - * regex.c (re_match_2_internal): Add in code to reset lowest_active_reg - to prevent memory corruption in the case of jumping out of a series of - nested match patterns. This is a rather brute force approach, though. - -1998-09-02 Andy Piper - - * config.h.in: ditto. - - * s/cygwin32.h: rearrange declarations to cope with cygwin - b20. Include cygwin32/version.h if it exists. - -1998-09-20 Jonathan Harris - - * device-msw.c (mswindows_init_device): Call new - mswindows_enumerate_fonts() function in objects-msw.c instead - of font_enum_callback_1() to enumerate fonts. - - font_enum_callback_1() and _2() moved to objects-msw.c. - - * faces.c (complex_vars_of_faces): Make the mswindows default - face font fully specified and provide some fallbacks. - - * objects-msw.c: font_enum_callback_1() and _2() moved here - from objects-msw.c. Obtain the enumerated font's character - sets by table lookup instead of using the locale-specific - string provided by Windows. - - New public non-method mswindows_enumerate_fonts() that fills - in the supplied mswindows device's font list. - - mswindows_initialize_font_instance: Use the supplied name - variable instead of f->name when signalling errors. Match font - weights and character sets using lookup tables which handle - spaces instead of by frobbing. - -1998-09-20 Jonathan Harris - - * process-nt.c: Define an arbitrary limit, FRAGMENT_CODE_SIZE, - on the size of code fragments passed to run_in_other_process. - - run_in_other_process(): Use FRAGMENT_CODE_SIZE to determine - the amount of memory to allocate in the other process. - - Removed sigkill_code_end(), sigint_code_end() and - sig_enable_code_end() since they are now redundant. - - send_signal() and enable_child_signals(): Don't try to work - out the end of the code fragments passed to - run_in_other_process() - -1998-09-10 Kazuyuki IENAGA - - * src/s/freebsd.h: Added __ELF__ and compiler/liker flags for - FreeBSD-current. - - * src/unexelf.c: Partially synched with FSF's 20.3. - -1998-09-10 Hrvoje Niksic - - * insdel.c (signal_after_change): Map across indirect buffers - here, and not in the upper-level functions. - (signal_first_change): Don't check for Armageddon. - (signal_before_change): Map across indirect buffers here. - (prepare_to_modify_buffer): ...and here. - -1998-09-09 Hrvoje Niksic - - * insdel.c (signal_after_change): Add return value. - (buffer_insert_string_1): Use it. - (buffer_delete_range): Ditto. - (buffer_replace_char): Ditto. - (cancel_multiple_change): Map the indirect buffers. - -1998-09-06 Hrvoje Niksic - - * insdel.c (init_buffer_text): Remove INDIRECT_P parameter. - (uninit_buffer_text): Ditto. - - * buffer.c (Fmake_indirect_buffer): Implement stricter - error-checking. - -1998-09-04 Hrvoje Niksic - - * insdel.c (change_function_restore): Reverse order of - function-call and assignment. - (first_change_hook_restore): Ditto. - - * extents.c (mark_extent_auxiliary): Mark them. - (Fset_extent_property): Set them. - (Fextent_property): Get them. - (Fextent_properties): Ditto. - (vars_of_extents): Set their default. - - * extents.h (struct extent_auxiliary): Add before_change_functions - and after_change_functions. - - * insdel.c (signal_before_change): Use it. - (signal_after_change): Ditto. - - * extents.c (report_extent_modification): New function. - - * insdel.c (signal_before_change): Don't check for Armageddon. - (signal_after_change): Ditto. - -1998-09-11 Gunnar Evermann - - * redisplay.c (redisplay_window): make sure a new starting point - is chosen if it somehow got moved from the beginning of the line - -- this can happen because Fwiden was called recently. - - * window.c (Fset_window_start): set start_at_line_beg correctly - (Fset_window_buffer): Ditto - -1998-09-06 Hrvoje Niksic - - * insdel.c (init_buffer_text): Remove INDIRECT_P parameter. - (uninit_buffer_text): Ditto. - - * buffer.c (Fmake_indirect_buffer): Implement stricter - error-checking. - -1998-05-14 Jan Vroonhof - - * emacs.c (main_1): Removed references to *vars_of_filelock. - - * lisp.h: Added Fsystem_name. - - * filelock.c: Replaced by version from FSF 20.2. Now implements - locking by using symlinks which is NFS safe. However keep the - GCPRO's in lock_file and the calls to callx_in_buffer like our old - version (and of course use ansi C, acessor macros, etc). - -1998-09-06 Jan Vroonhof - - * process-unix.c (unix_create_process): Reset SIGHUP handler to - SIG_DFL. We now try to conserve any inherted SIG_IGN settings - in init_signals_very_early. However these should not be passed - on to children attached to the new pty. - -1998-08-28 Andy Piper - - * glyphs-eimage.c (png_instantiate_unwind): clean up eimage after use. - -1998-09-07 Jonathan Harris - - * fileio.c (file-name-directory, file_name_as_directory): - Don't call CORRECT_DIR_SEPS, even when #defined WINDOWSNT. - -1998-09-02 Andy Piper - - * emacs.c (main_1): init_ralloc() if initialised and we have REL_ALLOC - - * ralloc.c: uncomment __morecore. - -1998-09-92 Jonathan Harris - - * event-msw.c(winsock_writer): Supply a dummy 4th argument to - WriteFile() to fix a winsock 1.x bug on Win95. - -1998-08-28 Hrvoje Niksic - - * event-Xt.c (emacs_Xt_mapping_action): Check for device being - deleted. - (x_event_to_emacs_event): Ditto. - (emacs_Xt_handle_focus_event): Ditto. - (emacs_Xt_handle_magic_event): Ditto. - - * console-x.h (struct x_device): New flag being_deleted. - (DEVICE_X_BEING_DELETED): New macro. - - * device-x.c (x_IO_error_handler): Throw to top-level instead of - returning. Before doing that, set the being_deleted flag on the - device. - -1998-08-27 Hrvoje Niksic - - * device-x.c (x-seppuku-on-epipe): Removed. - -1998-08-26 Gunnar Evermann - - * frame-x.c (x_delete_frame): Flush the X output buffer after - calling XtDestroyWidget to ensure that the windows are really - killed right now. - -1998-08-26 Hrvoje Niksic - - * menubar-x.c (my_run_hook): New unused function. - (pre_activate_callback): Use run_hook for Qactivate_menubar_hook, - since we ignore the results of the contained functions anyway. - -1998-08-26 P. E. Jareth Hein - - * glyphs-eimage.c (gif_instantiate): Fix a crash in handling - interlaced GIF files that are smaller than 4 lines high... - -1998-08-31 Hrvoje Niksic - - * buffer.c (map_over_sharing_buffers): Deleted. - - * insdel.c (MAP_INDIRECT_BUFFERS): Move to buffer.h. - - * buffer.c (Fkill_buffer): Keep indirect_children updated while - killing them. - -1998-08-31 Hrvoje Niksic - - * insdel.c (buffer_insert_string_1): Advance the point bytind in - all the buffers. - (buffer_delete_range): Ditto. - - * marker.c (init_buffer_markers): Set point-marker to the value of - point in an indirect buffer. - -1998-08-30 Hrvoje Niksic - - * undo.c (undo_prelude): Test last-undo-buffer against base - buffer. - - * insdel.c (MAP_INDIRECT_BUFFERS): Use it. - - * buffer.h (BUFFER_BASE_BUFFER): New macro. - -1998-08-30 Hrvoje Niksic - - * insdel.c (init_buffer_text): Initialize it here. - - * line-number.c: Address line_number_cache through buffer->text. - - * buffer.c (mark_buffer): Mark line number cache. - - * bufslots.h (line_number_cache): Move to struct buffer_text. - - * insdel.c (buffer_insert_string_1): Propagate signals and changes - across the children buffers. - (buffer_delete_range): Ditto. - (buffer_replace_char): Ditto. - (gap_left): Ditto. - (gap_right): Ditto. - - * insdel.c (MAP_INDIRECT_BUFFERS): New macro. - - * buffer.c (Fmake_indirect_buffer): Uncomment. - -1998-08-31 Hrvoje Niksic - - * macros.c (Fend_kbd_macro): Remove trailing period from error - message. - (Fexecute_kbd_macro): Ditto. - -1998-08-21 Greg Klanderman - - * dired.c (Fuser_name_completion): remove optional 2nd argument. - (Fuser_name_completion_1): new function to return uniqueness - indication in addition to the user name completion. - (user_name_completion): change type of `uniq' argument. - -1998-08-19 Michael Sperber [Mr. Preprocessor] - - * lread.c (vars_of_lread): Removed `source-directory' variable. - -1998-08-22 Hrvoje Niksic - - * fileio.c (Ffile_readable_p): Apply the DOS/Windows logic to - Cygwin. - -1998-08-19 SL Baur - - * dired.c (vars_of_dired): Fix misapplied patch. - -1998-08-16 Martin Buchholz - - * fns.c (Fremrassq, remrassq_no_quit): - A XCAR that should have been an XCDR turned Fremrassq into Fremassq - -1998-07-17 Didier Verna - - * redisplay-x.c (x_get_gc): returns a GC with a FillStipple fill - style as foreground GC for faces that have the `dim' property. - (x_output_string): when the `dim' face property is set, - ensure the gray pixmap has been created, and get a proper - foreground GC to draw the text. - -1998-08-09 Jonathan Harris - - * event-msw.c (mswindows_wnd_proc): Workaround for a Win95 bug: - Manually track the state of the left and right Ctrl and Alt - modifiers. - -1998-08-07 Matt Stupple - - * ntproc.c: don't wait on char_consumed at thread entry. - Additionally, to get the 'process' marked as finished, ensure - that the CHILD_ACTIVE macro returns false, so before exiting - close char_avail and set it to NULL, and close other handles - to reduce handle leak problems. - -1998-08-09 Jonathan Harris - - * menubar-msw.c (displayable_menu_item): take account of menu - depth when deciding whether to try to display accelerators. - -1998-08-04 Andy Piper - - * event-msw.c: use MsgWaitForMultipleObjects if there are no - subprocesses. - - * glyphs-msw.c: fix a couple of potential handle leaks. - -1998-08-04 P. E. Jareth Hein - - * dgif_lib.c gif_io.c gifrlib.h: New files to put GIF - *decoding ONLY* back into the core. - * glyphs-eimage.c: Change referenced header file for GIF - reading to point to the incore version. - -1998-07-20 Martin Buchholz - - * casefiddle.c (casify_object): - Change algorithm from O(N**2) to O(N). - Code cleanup. - Doc string cleanup. - -1998-07-22 Greg Klanderman - - * dired.c (file_name_completion_unwind): don't leak the cons. - -1998-07-20 Greg Klanderman - - * dired.c (Fuser_name_completion): new function. - (Fuser_name_all_completions): new function. - (user_name_completion): new function. - (syms_of_dired): 2 new DEFSUBRs. - (vars_of_dired): initialize user name cache vars. - -1998-07-29 P. E. Jareth Hein - - * glyphs-eimage.c (png_instantiate): Add proper handling for background - colors taken from the default face. Also correct a thinko in - transparency (not alpha) handling. - -1998-07-23 Martin Buchholz - - * s/decosf4-0.h: Use a perfectly ordinary link. Nuke BSD crap. - * unexalpha.c: ANSI C-ize. Clean compiler warnings. - * lread.c (Fload_internal): Be very careful with printfs of - size_t's - * gui-x.c (menu_name_to_accelerator): tolower wants an `int' - argument. - -1998-07-27 Gunnar Evermann - - * callint.c (Fcall_interactively): GCPRO prompt string before - passing it to Fread_key_sequence - -1998-07-27 SL Baur - - * keymap.c (vars_of_keymap): Initialize Vkey_translation_map and - Vvertical_divider_map. - - * mule-canna.c (vars_of_mule_canna): Initialize every symbol to - Qnil or 0, none were initialized prior to this change. - - Rename misnamed `V' prefixed integer variables: - Vcanna_empty_info, Vcanna_through_info, Vcanna_underline, - Vcanna_inhibit_hankakukana, Vcanna_henkan_length, Vcanna_henkan_revPos, - Vcanna_henkan_revLen, Vcanna_ichiran_length, Vcanna_ichiran_revPos, - Vcanna_ichiran_revLen. - - Rename misnamed `V' prefixed integer variables and initialize - properly in the vars_of routine. - Vcanna_mode_AlphaMode, Vcanna_mode_EmptyMode, Vcanna_mode_KigoMode, - Vcanna_mode_YomiMode, Vcanna_mode_JishuMode, Vcanna_mode_TankouhoMode, - Vcanna_mode_IchiranMode, Vcanna_mode_YesNoMode, Vcanna_mode_OnOffMode, - Vcanna_mode_AdjustBunsetsuMode, Vcanna_mode_ChikujiYomiMode, - Vcanna_mode_ChikujiTanMode, Vcanna_mode_HenkanMode, - Vcanna_mode_HenkanNyuryokuMode, Vcanna_mode_ZenHiraHenkanMode, - Vcanna_mode_HanHiraHenkanMode, Vcanna_mode_ZenKataHenkanMode, - Vcanna_mode_HanKataHenkanMode, Vcanna_mode_HanKataHenkanMode, - Vcanna_mode_ZenAlphaHenkanMode, Vcanna_mode_HanAlphaHenkanMode, - Vcanna_mode_ZenHiraKakuteiMode, Vcanna_mode_HanHiraKakuteiMode, - Vcanna_mode_ZenKataKakuteiMode, Vcanna_mode_HanKataKakuteiMode, - Vcanna_mode_ZenAlphaKakuteiMode, Vcanna_mode_HanAlphaKakuteiMode, - Vcanna_mode_HexMode, Vcanna_mode_BushuMode, Vcanna_mode_ExtendMode, - Vcanna_mode_RussianMode, Vcanna_mode_GreekMode, Vcanna_mode_LineMode, - Vcanna_mode_ChangingServerMode, Vcanna_mode_HenkanMethodMode, - Vcanna_mode_DeleteDicMode, Vcanna_mode_TourokuMode, - Vcanna_mode_TourokuEmptyMode, Vcanna_mode_TourokuHinshiMode, - Vcanna_mode_TourokuDicMode, Vcanna_mode_QuotedInsertMode, - Vcanna_mode_BubunMuhenkanMode, Vcanna_mode_MountDicMode, - Vcanna_fn_SelfInsert, Vcanna_fn_FunctionalInsert, - Vcanna_fn_QuotedInsert, Vcanna_fn_JapaneseMode, Vcanna_fn_AlphaMode, - Vcanna_fn_HenkanNyuryokuMode, Vcanna_fn_Forward, Vcanna_fn_Backward, - Vcanna_fn_Next, Vcanna_fn_Prev, Vcanna_fn_BeginningOfLine, - Vcanna_fn_EndOfLine, Vcanna_fn_DeleteNext, Vcanna_fn_DeletePrevious, - Vcanna_fn_KillToEndOfLine, Vcanna_fn_Henkan, Vcanna_fn_Kakutei, - Vcanna_fn_Extend, Vcanna_fn_Shrink, Vcanna_fn_AdjustBunsetsu, - Vcanna_fn_Quit, Vcanna_fn_ConvertAsHex, Vcanna_fn_ConvertAsBushu, - Vcanna_fn_KouhoIchiran, Vcanna_fn_BubunMuhenkan, Vcanna_fn_Zenkaku, - Vcanna_fn_Hankaku, Vcanna_fn_ExtendMode, Vcanna_fn_ToUpper, - Vcanna_fn_Capitalize, Vcanna_fn_ToLower, Vcanna_fn_Hiragana, - Vcanna_fn_Katakana, Vcanna_fn_Romaji, Vcanna_fn_BaseHiragana, - Vcanna_fn_BaseKatakana, Vcanna_fn_BaseEisu, Vcanna_fn_BaseZenkaku, - Vcanna_fn_BaseHankaku, Vcanna_fn_BaseKana, Vcanna_fn_BaseKakutei, - Vcanna_fn_BaseHenkan, Vcanna_fn_BaseHiraKataToggle, - Vcanna_fn_BaseZenHanToggle, Vcanna_fn_BaseKanaEisuToggle, - Vcanna_fn_BaseKakuteiHenkanToggle, Vcanna_fn_BaseRotateForward, - Vcanna_fn_BaseRotateBackward, Vcanna_fn_Touroku, Vcanna_fn_HexMode, - Vcanna_fn_BushuMode, Vcanna_fn_KigouMode, Vcanna_fn_Mark, - Vcanna_fn_TemporalMode, Vcanna_key_Nfer, Vcanna_key_Xfer, - Vcanna_key_Up, Vcanna_key_Left, Vcanna_key_Right, Vcanna_key_Down, - Vcanna_key_Insert, Vcanna_key_Rollup, Vcanna_key_Rolldown, - Vcanna_key_Home, Vcanna_key_Help, Vcanna_key_KP_Key, - Vcanna_key_Shift_Nfer, Vcanna_key_Shift_Xfer, Vcanna_key_Shift_Up, - Vcanna_key_Shift_Left, Vcanna_key_Shift_Right, Vcanna_key_Shift_Down, - Vcanna_key_Cntrl_Nfer, Vcanna_key_Cntrl_Xfer, Vcanna_key_Cntrl_Up, - Vcanna_key_Cntrl_Left, Vcanna_key_Cntrl_Right, Vcanna_key_Cntrl_Down - -1998-07-16 Jan Vroonhof - - * event-Xt.c (x_to_emacs_keysym): Return nil for modifier keysyms. - (x_event_to_emacs_event): Let x_to_emacs_keysym check for modifier - keys thus no longer considering all keysyms on a key. - -1998-07-19 SL Baur - - * XEmacs 21.2-beta1 is released. - -1998-07-12 Oscar Figueiredo - - * eldap.c (Fldap_search_internal): When converting the list of - attributes to search Copy the final 0 from Lisp strings to C - strings. - Check base, not Vldap_default_base as a a string - -1998-07-13 Jonathan Harris - - * nt.c: Remove Vstdio_str; already defined in console-stream.c. - - * unexnt.c: Unconditionally define bss_start and bss_size, and - ensure that they don't go in the .bss section. - -1998-07-17 Olivier Galibert - - * glyphs-x.c (convert_EImage_to_XImage): Fix previous patch (conv - byte order is dependant of the local byte order). - From Takeshi Hagiwara - -1998-07-18 SL Baur - - * glyphs-msw.c (mswindows_resource_normalize): Qresource -> - Qmswindows_resource. - From Jonathan Harris - -1998-07-12 SL Baur - - * general.c (syms_of_general): Add defsymbol for Qresource. - - * glyphs-msw.c (vars_of_glyphs_mswindows): Rename Qresource to - Qmswindows_resource. - (TopLevel): Rename 'resource image format to 'mswindows_resource. - (mswindows_resource_validate): Rename. - (mswindows_resource_normalize): Rename. - (mswindows_resource_possible_dest_types): Rename. - (mswindows_resource_instantiate): Rename. - (image_instantiator_format_create_glyphs_mswindows): Replace - `resource' with `mswindows.resource'. - - * XEmacs 21.0-pre5 is released. - -1998-07-10 SL Baur - - * mule-wnnfns.c (Fwnn_open): Correctly trap on misdefined Wnn - server type in environment. - Use alloca-ed strings instead of tiny fixed size ones. - -1998-07-09 SL Baur - - * XEmacs 21.0-pre4 is released. - -1998-07-01 James N. Potts - - * fileio.c: (expand_file_name): under win32: Don't treat names - as UNC names if a drive letter has been specified. If a drive - has been specified, strip out extra directory-seperators that - reportedly cause problems under Win95. - -1998-07-09 Jonathan Harris - - * windowsnt.h: Define DUMP_SEPARATE_SECTION when building with - MSVC >= 5.0. Put emacs init and zero-init data in a special - section of the executable when this is defined. - - * unexnt.c, ntheap.h: - Removed unused find_section() and get_section_size(). - - * unexnt.c: - Fix up the executable's checksum after dumping otherwise the - profiler complains. - When DUMP_SEPARATE_SECTION is defined, don't need to dump - zero-init data separately from init data. Dump emacs data - into a special section of the executable. - When DUMP_SEPARATE_SECTION not defined, dump .bss up to - my_ebss instead of up to the end of bss. - -1998-07-09 Jonathan Harris - - * filelock.c: Removed Vconfigure_lock_directory - already - defined in emacs.c. - - * frame-msw.c: Removed Qinitially_unmapped and Qpopup - already - defined in frame.c and general.c respectively. - - * glyphs-msw.c: Removed Qresource - already defined in - general.c. - -1998-07-05 Oscar Figueiredo - - * eldap.c (Fldap_search_internal): Docstring fixes - -1998-07-04 Jonathan Harris - - * nt.c (init_environment): Removed unused PRELOAD_WINSOCK, - EMACSDOC and TERM variables. Added EMACSDEBUGPATHS, - EMACSPACKAGEPATH and INFOPATH variables. - Removed unused get_emacs_configuration function. - - * s/windowsnt.h: Don't define EMACS_CONFIGURATION here because - it is now defined at build-time by the makefile. - -1998-07-01 James N. Potts - - * fileio.c: (expand_file_name): under win32: Don't treat names as - UNC names if a drive letter has been specified. If a drive has - been specified, strip out extra directory-seperators that - reportedly cause problems under Win95. - -1998-07-05 Andy Piper - - * faces.c (complex_vars_of_faces): for the gui-element face don't - fallback to the default face, instead provide reasonable default - fallbacks that were previously hardcoded elsewhere. - -1998-07-06 Olivier Galibert - - * glyphs-x.c (convert_EImage_to_XImage): Fix pixel writing problem - when the X server endianness is different than the client's one. - -1998-06-29 Kyle Jones - - * eval.c (run_hook_with_args_in_buffer): Check - default (non-buffer-local) value of hook for - nil before treating it as a function. Don't initialize - the `globals' variable twice. - -1998-06-24 Jonathan Harris - - * fileio.c: Don't do directory seperator canonicalisation in - substitute-in-file-name because we don't know that the - filename refers to a local file. - -1998-06-24 Adrian Aichner - - * process-nt.c (nt_create_process): Try appending the standard - executable file extensions to the filename if none supplied. - -1998-06-29 SL Baur - - * fileio.c (Fsubstitute_in_file_name): Enable double slash notation - for cygwin32. - From Keisuke Mori - -1998-06-24 Andy Piper - - * toolbar-msw.c (mswindows_output_toolbar): only enable masked - images if we have masks. This handles the xbm case (have masks) - and avoids overuse of resources in the xpm case (generally no masks). - Don't output small toolbars. - -1998-06-29 Kyle Jones - - * eval.c (run_hook_with_args_in_buffer): Don't treat - the default value of a buffer local hook as a list of - hooks unless it is both a cons and the car of that cons - is not Qlambda. - -1998-06-29 SL Baur - - * extents.c: Email address for Ben Wing is ben@xemacs.org. - * process-unix.c: Ditto. - * mule-coding.h: Ditto. - * mule-coding.c: Ditto. - * mule-charset.c: Ditto. - * mule-charset.h: Ditto. - * file-coding.c: Ditto. - * file-coding.h: Ditto. - -1998-06-22 Jonathan Harris - - * event-msw.c: Guard against recursion when freeing - FRAME_MSWINDOWS_TARGET_RECT struture in WM_SIZE processing. - - * frame-msw.c: Don't set WS_VISIBLE attribute on first frame. - Call ShowWindow twice in init_frame_3 to get round runemacs - weirdness. - -1998-06-27 Hrvoje Niksic - - * scrollbar.c (vertical_scrollbar_changed_in_window): Ditto. - - * winslots.h: Rename. - - * window.c (specifier_vars_of_window): Renamed - vertical-divider-draggable-p to vertical-divider-always-visible-p, - as suggested by Ben Wing. - (specifier_vars_of_window): Fix docstrings. - -1998-06-22 Michael Sperber [Mr. Preprocessor] - - * unexaix.c: Line number information works correctly again. - -1998-06-22 Olivier Galibert - - * emacs.c (__sti__iflPNGFile_c___): Added. See comment. Cry. - -1998-06-21 Martin Buchholz - - * editfns.c (get_home_directory): ANSIfy. - XEmacs is compilable under C *and* C++. - It's XEmacs, not Xemacs! - -1998-06-19 Jonathan Harris - - * console-msw.h: added a list of fonts to device data. - - * device-msw.c: enumerate list of available fonts in - mswindows_init_device. Free list in mswindows_delete_device. - - * objects-msw.c: Added helper function match_font used by - mswindows_initialize_font_instance and mswindows_list_fonts. - Allow a charset to be specified in a font string, even if - previous fields havn't been specified. - -1998-06-23 Greg Klanderman - - * indent.c (column_at_point): column cache bugfix. - Set last_known_column_point to the buffer position for - which the column was requested, not buffer's point. - - * redisplay.c (decode_mode_spec): for current-column, show - window's point's column, not buffer's point's column. - -1998-06-23 Andy Piper - - * menubar-msw.c (mswindows_handle_wm_command): use - enqueue_misc_user event rather than - mswindows_enqueue_msic_user_event to fix customize problems. Add some - checks that X does. - - * console-msw.h: declare mswindows_enqueue_magic_event. - - * event-msw.c (mswindows_enqueue_magic_event): make global. - -1998-06-24 Hrvoje Niksic - - * line-number.c (LINE_NUMBER_FAR): Reverted to 16384. - (buffer_line_number): Use EMACS_INT_MAX instead of random LOTS. - (add_position_to_cache): Use EMACS_INT instead of int. - -1998-06-21 Olivier Galibert - - * lisp-disunion.h (XMARKBIT): Have XMARKBIT return something - suitable for an int used as a boolean (btw, C sucks.). - -1998-06-18 Andy Piper - - * object-msw.c: remove warnings. - - * device-msw.c: #define wrongly named cygwin structure elements. - - * s/cygwin32.h: define DEMI_BOLD - -1998-06-19 Jonathan Harris - - * redisplay-msw.c: new function mswindows_apply_face_effects. - This is called by output_string and output_cursor to display - underline and strikeout on faces. - -1998-06-19 Jonathan Harris - - * console-msw.h: added a list of fonts to device data. - - * device-msw.c: enumerate list of available fonts in - mswindows_init_device. Free list in mswindows_delete_device. - - * objects-msw.c: Added helper function match_font used by - mswindows_initialize_font_instance and mswindows_list_fonts. - Allow a charset to be specified in a font string, even if - previous fields havn't been specified. - -1998-06-15 Jonathan Harris - - * objects-msw.c: - Removed compilation warnings from mswindows_string_to_color. - mswindows_list_fonts returns a more general bogus font. - New lisp-visible function mswindows-color-list. - -1998-06-19 David Bush - - * editfns.c (Fuser_login_name): Modify to user new function - user_login_name. - (user_login_name): C only function to avoid Lisp object overhead - Returns "unknown" instead of nil in Cygwin environment - - * fileio.c (Fexpand_file_name): Treat "~" and "~user" as - equivalent for current user in Cygwin environment. Use new - function user_login_name to get username. - - * lisp.h: Declare user_login_name - -1998-06-18 Michael Sperber [Mr. Preprocessor] - - * unexaix.c (make_hdr): Fixed bias computations so debugging info - works again. - Some other insignificant nitpicks. - -1998-06-18 Andy Piper - - * toolbar-msw.c (mswindows_output_toolbar): specify ILC_MASK when - creating the image list and make sure he bk color is transparent. - -1998-06-18 Jan Vroonhof - - * event-Xt.c (emacs_Xt_remove_timeout): Also remove timeout from - completed_timeouts. The timer could have expired. - -1998-06-17 Andy Piper - - * console-msw.h: move XEMACS_RECT_WH inside frame - parameters. define macors to access it. - - * frame-msw.c (mswindows_init_frame_1): use new target_rect - parameter to intialise desired sizing. (mswindows_init_frame_2): - enable and size the frame to something sensible when we get - here. (mswindows_set_frame_properites): use new - mswindows_size_frame_internal function and size frame if frame - parameters not just if init is finished - WM_SIZE happens too - early for some specs. (mswindows_size_frame_internal): new - function abstracted from mswindows_set_frame_properties. - (Vmswindows_use_system_frame_size_defaults): - new variable controls whether to allow the system to pick frame - size defaults, defaults to nil. - - * event-msw.c: in WM_SIZE use mswindows_size_frame_internal rather - than duplicated code. - -1998-06-15 Colin Rafferty - - * Makefile.in.in: Made EXTW_LINK expand properly. - -1998-06-12 Martin Buchholz - - * redisplay.c (vars_of_redisplay): default value of - column-number-start-at-one should be NIL! - -1998-06-11 Martin Buchholz - - * casefiddle.c: - (upcase-initials "fooBar") ==> "FooBar" instead of "Foobar" - -1998-06-05 Hrvoje Niksic - - * eldap.c (Fldap_search_internal): Use build_ext_string instead of - build_string to avoid crashes under Mule. - -1998-06-13 Andy Piper - - * ntplay.c (play_sound_data_1): don't delete the sound data until - the next sound is played and the previous one finished. - -1998-06-10 Samuel Mikes - - * fileio.c (directory-sep-char): Escape backslashes. - -1998-06-10 Hrvoje Niksic - - * event-stream.c: Fix docstring reference. - -1998-06-12 Hrvoje Niksic - - * alloc.c (make_float): Remove useless initialization of `next' - field. - (make_pure_float): Ditto. - - * lisp.h (struct Lisp_Float): Rename `next' to `__unused__next'. - -1998-06-08 Kirill M. Katsnelson - - * fileio.c (Fmake_directory_internal): Remove conditionals - on WINDOWSNT when calling mkdir. - - * ntproc.c: Deleted the following unused functions: - register_child, reap_subprocess, sys_wait. - - * nt.c (sys_rename): Ifzeroed this implementation. - Deleted the following unused functions: - sys_access, sys_chdir, sys_chmod, sys_creat, sys_link, sys_mkdir, - sys_mktemp, sys_rmdir, sys_unlink, sys_close, sys_dup, sys_dup2, - sys_read, sys_write. - Merger sys_fopen and sys_open with sysdep.c implementation. - - * sysdep.c: Removed MS-DOS code. - (sys_rename): Deal with Microsoft rename weirdness. - (sys_open): Implemented for Windows. - (sys_fopen): Ditto. - (sys_mkdir): Ditto. - -1998-06-08 Kirill M. Katsnelson - - * buffer.c (complex_vars_of_buffer): Removed %t description from - the docstring. - -1998-06-04 Rick Rankin - - * scrollbar-msw.c: initialize the cbSize element of the - SCROLLINFO struct before calling SetScrollInfo. WinNT seems - to ignore the value of cbSize, but Win95 (and I presume Win98) - appear to want it set to sizeof(SCROLLINFO). - -1998-06-04 Kirill M. Katsnelson - - * event-stream.c: Defined Qcancel_mode_internal. - (syms_of_event_stream): defsymbol'ed it. - - * events.h: Externed it. - - * event-msw.c (mswindows_wnd_proc, WM_CANCELMODE): Added this handler. - -1998-06-04 Oliver Graf - - * frame-x.c (x_cde_destroy_callback): free the data - (cde-start-drag-internal) corrected root position, 21.1 needs this - hardcoded in Button events - (offix-start-drag-internal) corrected root position - -1998-06-03 Kirill M. Katsnelson - - * process-nt.c (signal_cannot_launch): Use signal_simple_error() - instead of error(). - -1998-06-03 Kirill M. Katsnelson - - * dialog-msw.c (button_width): Removed `inline' from the function - declaration. - -1998-06-03 Rick Rankin - - * frame-msw.c: add WS_VISIBLE flag to the first frame created. - Note that adding this flag to subsequent frames causes problems. - -1998-06-03 Gunnar Evermann - - * glyphs-eimage.c (png_instantiate) move 'struct - png_memory_storage tbr' out of nested block to avoid dangling - reference - -1998-06-02 Andy Piper - - * faces.h: - * faces.c: rename 3d-object -> gui-element. add toolbar face which - inherits from gui-element. - - * glyphs-msw.c: use DIBitmaps for xbm bitmaps to be consistent - with existing code, generate masks correctly. - -1998-06-03 P. E. Jareth Hein - - * glyphs-eimage.c: Changed included header for gifs to use - Gifreader instead of giflib. - - * glyphs-x.c: removed the image-related functions that were - moved into glyphs-eimage. - -1998-06-02 David Bush - - * glyphs.c (bitmap_to_lisp_data) Define XFree to be free - if built without X Windows support. - -1998-06-02 Hrvoje Niksic - - * fns.c (Fconcat): Synch docstring with new reality. - -1998-06-03 SL Baur - - * frame.c: Remove reference to msdos.h (which is going away). - Suggested by Hrvoje Niksic and Kirill Katsnelson. - -1998-06-02 P. E. Jareth Hein - - * glyphs-eimage.c (jpeg_instantiate): Fix handling of - grayscale images/ - - -1998-05-30 Kirill M. Katsnelson - - * events.h: Fixed commentary about misc-user scrollbar events. - - * scrollbar-x.c (x_update_vertical_scrollbar_callback): Use frame - object as an event channel, instead of window object. - (x_update_horizontal_scrollbar_callback): Ditto. - -1998-05-29 Andy Piper - - * ntplay.c (play_sound_data_1) new function. convert alloca data - to malloc if necessary. - (play_sound_file): if the file is not in our path then convert to - data and play. - -1998-06-01 SL Baur - - * mule-mcpath.c (mc_chdir): Reverse parameters in call to memcpy. - * msdos.c (Frecent_doskeys): Ditto. - - * unexalpha.c (unexec): Reverse parameters in call to memcpy. - Suggested by Reggie Perry - - * buffer.h: Eliminate size in declaration. - -1998-06-01 Olivier Galibert - - * unexelfsgi.c (unexec): Cleanup n/nn and remove useless kludge. - -1998-06-01 Kirill M. Katsnelson - - * gui.c (gui_item_init): Changed the default value for config member - from Qunbound to Qnil. - -1998-06-01 Greg Klanderman - - * indent.c (vmotion_pixels): Don't #define abs(). - -1998-05-30 Kirill M. Katsnelson - - * s/windowsnt.h: Defined popen and pclose to be _popen and _pclose - respectively. - -1998-05-30 Andy Piper - - * glyphs.h: add xbm declarations. - - * console.h: add xbm_instantiate_method device method. - - * glyphs.c (check_valid_xbm_inline) (xbm_validate) - (bitmap_to_lisp_data) (xbm_mask_file_munging) (xbm_normalize) - (xbm_possible_dest_types): moved here from glyphs-x.c. use - locate_pixmap_file device method and read_bitmap_data_from_file - instead of XmuReadBitmapDataFromFile. - (xbm_instatntiate): make a device method. - - * glyphs-x.c: see glyphs.c changes. (read_bitmap_data_from_file) - new function that just calls XmuReadBitmapDataFromFile. - (x_xbm_instatntiate): device method from xbm_instantiate. - - * glyphs-msw.c (read_bitmap_data) (NextInt) - (read_bitmap_data_from_file): new functions copied from Xmu - sources. - (xbm_create_bitmap_from_data) from Ben convert - inline data to an mswindows bitmap. - (init_image_instance_from_xbm_inline) (xbm_instantiate_1) - (mswindows_xbm_instantiate): mswindows-ized versions of the X - functions. - -1998-05-30 Kirill M. Katsnelson - - * window.c (specifier_vars_of_window): Renamed `has_modeline-p' to - `modeline-visible-p'. - Declared specifier lisp variables at the beginning oh the file - as static. - - * procimpl.h (struct process_methods): Changed semantics of - create_process method so it accepts lisp strings instead of - char pointers. - - * process.c (Fstart_process_internal): Moved building of - unix style argv from here to process-unix.c, ... - - * process-unix.c (unix_create_process): ... right here. - - * process-nt.c (nt_create_process): Changed this function to - support new semantics, so avoided a GC problem. - - * events.c (Fmake_event): Document misc-user events properties. - (Fmake_event): Do not allow arbitrary objects for channel property - of misc-user events. - (Fmake_event): Change misc-user event validation: it is function - which is required, not button. - - * event-msw.c (mswindows_user_event_p): Recognize misc user events as - user events. - (mswindows_enqueue_misc_user_event): Added function. - (mswindows_bump_queue): Removed function. - (mswindows_enqueue_magic_event): Support NULL HWND parameter. - (mswindows_wnd_proc, WM_CLOSE): Use mswindows_enqueue_misc_user_event(). - (mswindows_wnd_proc, WM_EXITSIZEMOVE): Ditto. - (emacs_mswindows_handle_magic_event): Handle XM_BUMPQUEUE, by doing - really nothing, which is my personal favorite thing. - - * console-msw.h: Removed prototype for mswindows_bump_queue(). - Added prototype for mswindows_enqueue_misc_user_event(). - - * menubar-msw.c (mswindows_handle_wm_command): Use - mswindows_enqueue_misc_user_event(). - - * toolbar-msw.c (mswindows_handle_toolbar_wm_command): Ditto. - - * dialog-msw.c (dialog_proc): Ditto. - - * scrollbar-msw.c (mswindows_handle_scrollbar_event): Ditto. - (mswindows_handle_scrollbar_event): Use frame, not window, for misc - user events channel. - -1998-05-29 Greg Klanderman - - * window.c (Fwindow_displayed_text_pixel_height): was relying on - incorrect semantics of vmotion_pixels which has been fixed. don't - use it anymore as it can't easily be used. - - * indent.c (vmotion_pixels): fix off by one bug moving up. also - the motion was reported incorrectly if you tried to go past end of - buffer. - -1998-05-30 Kirill M. Katsnelson - - * toolbar.h: Removed misleading commentary, as Martin suggested. - -1998-05-30 Kirill M. Katsnelson - - * lisp.h: Extern Qactivate_menubar_hook. - - * menubar-msw.c (unsafe_handle_wm_initmenu_1): Pass correct value to - run_hook (). - -1998-05-29 Andy Piper - - * glyphs-msw.c: use BPLINE macro. - - * select-msw.c (mswindows-selection-exists-p) - (mswindows-delete-selection): doc string fixes. - - * toolbar-msw.c (mswindows_output_toolbar): make disabled buttons - unpressable. warning elimination. - -1998-05-28 Martin Buchholz - - * alloc.c (dbg_constants): - * dbxrc: - * gdbinit: - Remove toolbar_data debugging code, since that lrecord has - also been removed. - -Wed May 27, 1998 Darryl Okahata - - * alloc.c: zap cached value of (user-home-directory), so that - it's not undumped. - - * buffer.c: From init_buffer(), separated out code that - determined the initial directory for the *scratch* buffer, and - put them into a function called "init_initial_directory()". - The initial directory is now available as a global "char *" - called initial_directory. - - * buffer.h: Added extern entries for initial_directory[] and - init_initial_directory(). - - * editfns.c: added new elisp function "user-home-directory", - which basically returns getenv("HOME"), but attempts to use - other values if $HOME isn't set.This may have to be tweaked in - the future as, under Unix, "/" is used if $HOME isn't set (this - probably should be set to the current directory). To support - this, a new C function, "get_home_directory()", now exists, - which returns the "home directory", as a "char *" string. - - * emacs.c: Rearrange NT initialization order so that - environment/registry variables will be properly entered into - Vprocess_enviroment. - - * fileio.c: replaced egetenv("HOME") with calls to the new - get_home_directory(). - - * lisp.h: Added function prototypes for uncache_home_directory() - and get_home_directory(), along with lisp prototypes for - Fuser_home_directory() and friends. - - * nt.c: replaced getenv("HOME") with calls to the new - get_home_directory(). - - * sysfile.h: for WINDOWSNT, #include , to suppress - warnings about getcwd(), etc. not having prototypes. - -1998-05-28 Kirill M. Katsnelson - - * process-nt.c (send_signal): Emulate SIGHUP. - (validate_signal_number): Ditto. - - * event-msw.c (mswindows_wnd_proc, WM_KEYDOWN): Unconditionally - remove MOD_SHIFT from ASCII characters. - (mswindows_wnd_proc, WM_KEYDOWN): Do not activate the menubar when - F10 is pressed. - -1998-05-24 Oliver Graf - - * frame-x.c (cde-start-drag-internal): added filename and multi- - data transfers - (x_cde_convert_callback) dito - -1998-05-26 Oliver Graf - - * frame-x.c: include event-mod.h also with CDE - (x_cde_convert_callback) made the thing working - (cde-start-drag-internal) also debugging - -1998-05-25 Hans Guenter Weigand - - * m/sparc.h: - * getloadavg.c: - * malloc.c: - * unexec.c: - * mem-limits.h: - - add __OpenBSD__ where __NetBSD__ was found. - - TODO: replace platform-specific conditional compilation by - feature tests in configure.in. - -1998-05-15 Greg Klanderman - - * window.c (Fwindow_displayed_text_pixel_height): New function. - (syms_of_window): DEFSUBR it. - - * indent.c (Fvertical_motion_pixels): New function - request - movement in pixels. - (vmotion_pixels): helper. - (syms_of_indent): DEFSUBR. - * lisp.h: declaration for vmotion_pixels(). - - * indent.c (Fvertical_motion): Add optional third argument PIXELS, - to request returning motion in pixels. - (Fvertical_motion_pixels): Remove, functionality merged into - Fvertical_motion. - * window.c (window_scroll): call Fvertical_motion with 3 arguments. - (Fmove_to_window_line): ditto. - * lisp.h: Change declaration for Fvertical_motion. - - * window.c: rename window-text-pixel-{height,width,edges} to - window-text-area-pixel-*. - -1998-05-26 Gunnar Evermann - - * tooltalk.c (vars_of_tooltalk) added staticpro for - Tooltalk_Message_plist_str and Tooltalk_Pattern_plist_str - -1998-05-27 Andy Piper - - * faces.c: create a new 3d_object_face, make modeline and - vertical_divider faces fallback to this rather than the default. - -1998-05-21 Andy Piper - - * s/cygwin32.h: define charsets for cygwin. - -1998-05-25 Andy Piper - - * toolbar-msw.c (mswindows_output_toolbar): fix up button sizes - and coordinates. resize bitmaps if we have already settled on a - different size. - - * glyphs-msw.c (xpm_to_eimage): add ';' for mswindows compiler. - -1998-05-25 Hrvoje Niksic - - * toolbar-msw.c (mswindows_handle_toolbar_wm_command): Ditto. - - * menubar-msw.c (mswindows_handle_wm_command): Ditto. - - * gui.h: Ditto. - - * gui-x.c (popup_selection_callback): Ditto. - - * dialog-msw.c (dialog_proc): get_callback -> get_gui_callback. - - * gui.c (get_callback): Renamed to get_gui_callback. - -1998-05-17 Martin Buchholz - - * glyphs.h: order rearrangement. - - * device-tty.c (tty_asynch_device_change): Warning suppression. - * device-x.c (x_device_system_metrics): Warning suppression. - Make Doc strings consistent with coding standards. - -1998-05-24 Martin Buchholz - - * general.c: multiple definition of `Qicon'. general.c seems - like a good home for Qicon. - -1998-05-20 Kirill M. Katsnelson - - * This patch is to fix compilation warnings under Windows. - - * s/windowsnt.h: Encapsulate getpid with sys_getpid. - Added prototypes for FSF inherited functions, with which XEmacs is - sprinkled thoroughly. - Removed some #if 0 code. Bracketed some more definitions, probably - related to Visual C versions prior to 4 (we do not support them). - - * sysfloat.h (logb): Finally, get logb() prototyped. - - * sysfile.h: Added Windows specific includes. - Removed old Windows specific code bracketed with #if 0. - - * sysdep.h: Added prototype for xrealpath(). - - * sysdep.c (sys_getpid): Added function, to support '95 negative pids. - - * symsinit.h: Added prototypes for syms_of_dired_mswindows, - vars_of_dired_mswindows and init_ntproc (Grrr). - - * realpath.c: Added Windows specific include files. - (xrealpath): Conditionalized declaration of some auto variables on - S_IFLNK, to avoid warnings. - - * ntproc.c: Disabled some compiler warnings. This file is going to - die, so I have not cleaned it up much. - (set_process_dir): Const parameter. - (Fwin32_short_file_name): Down CHECK_* macros to one argument. - (Fwin32_long_file_name): Ditto. - (Fwin32_set_process_priority): Ditto. Why didn't I remove these - three functions? - - * nt.h: Added prototypes for set_process_dir and convert_time. - - * nt.c: More include files. - (getpwnam): Consted char* argument. - (get_emacs_configuration): Const return value. - (opendir): Const argument. - (stat): Casted converstion long->short. - (stat): Removed ad hoc and questionable support for non-MSC compile. - (sys_pipe): Removed unused auto variable. - (_sys_read_ahead): Removed calls to DebPrint. - (sys_read): Ditto, in 2 places. - (term_ntproc): Added unused int parameter to signal handler, to - avoid a warning when compiling a call to signal(). - (msw_sigset): Properly return old signandler or NULL instead of void. - - * floatfns.c (Flogb): Casted arguments to unary minus to signed. - - * gmalloc.c (morecore): Ditto. - (_free_internal): Ditto. - - * lread.c (parse_integer): Ditto. - - * dired-msw.c: Added several include files. - - * cmdloop.c (Fcommand_loop_1): Added Microsoft C to the Big List - of Compilers to Shut Up. - - * callproc.c: Added #includes to suppress warnings under Windows. - (init_callproc): Removed #if0'ed code and unused variables. - -1998-05-25 Andy Piper - - * device-msw.c (mswindows_device_system_metrics): do planes in a - way consistent with X. - - * glyphs-msw.c (mswindows_initialize_image_instance_mask): don't - use SetPixel, use DIBits functions. - (xpm_to_eimage): frob colors more closely like xpm deos. - - * toolbar-msw.c: only resize bitmaps when shrinking. Adjust look - to be closer to X version. - - * event-msw.c: use tooltip string directly. - - * redisplay-msw.c: reinstate Kirill's bg pixmap change. - - * objects-msw.c: frob rgb colors that only Kyle uses. - - * dialog-msw.c (button_width): INLINE -> inline. - -1998-05-23 SL Baur - - * getloadavg.c (getloadavg): Fix typo. - -1998-05-23 Kirill M. Katsnelson - - * objects-msw.c (mswindows_initialize_font_instance): Added support - for font character sets. - Replaced 'XXX' with '####' in comments throughout the file. - -1998-05-23 Kirill M. Katsnelson - - * emacs.c (main_1): Added calls to vars_of_dialog_mswindows() and - console_type_create_dialog_mswindows(), to initialize Windows dialog - support. - - * symsinit.h: Prototyped the above functions. - - * dialog-x.c (x_popup_dialog_box): Moved dialog descriptor consistency - checks to dialog.c... - - * dialog.c (Fpopup_dialog_box): ...right here. Added more checks: a - device must support dialog boxes, and the descriptor must supply at - least one button. - - * dialog-msw.c: New file, dialogs for Windows. - -1998-05-21 Oscar Figueiredo - - * eldap.c (ldap_search_unwind): Return Qnil instead of nothing - (Fldap_search_internal): Removed unused variable `err' - - * eldap.h: Moved Lisp_LDAP declaration here instead of using a - forward declaration - -1998-05-17 Martin Buchholz - - * eldap.h: eldap.[ch] should never be used unless HAVE_LDAP is - defined. Therefore there is no need to handle the case when - HAVE_LDAP is undefined. Similarily, there is no reason to have - any code wrapped within `#ifdef emacs', since this code is only - useful within an emacs. This simplifies the code significantly. - - * inline.c: Include eldap.h only if HAVE_LDAP. - * inline.c: Don't bother including TT_C_H_PATH, since tooltalk.h - already does that. - -1998-05-21 Kirill M. Katsnelson - - * unexnt.c (copy_executable_and_dump_data_section): Suppress - printing dump stats when building without DEBUG_XEMACS. - (dump_bss_and_heap): Ditto. - -1998-05-21 Andy Piper - - * gnuclient.c: don't suppress window system if there is no display - and we are running under mswindows. send 'mswindows device type if - we are in this situation. - -1998-05-20 Andy Piper - - * general.c: - * lisp.h: Qbitmap, Qcursor, Qicon moved here from glyphs-msw.c. - - * glyphs-msw.c: change cursor imgae type name to resource. Fix - some nits. - -1998-05-20 Kirill M. Katsnelson - - * EmacsFrame.c (Xt_StringToScrollBarPlacement): Added support for - {top,bottom}-{left,right} values in addition to - {top,bottom}_{left,right}. - -1998-05-18 Hrvoje Niksic - - * fileio.c (Fmake_temp_name): Remove unreached code. - - * process-nt.c (validate_signal_number): Use - signal_simple_error(). - -1998-05-19 Martin Buchholz - - * unexhp9k800.c: - * sound.c (vars_of_sound): - * sysdep.c (reset_sigio_on_device): - * window.c (window_bottom_gutter_height): - unexhp9k800.c:258: warning: implicit declaration of function - `calculate_checksum' - sound.c:604: warning: implicit declaration of function `vars_of_hpplay' - sysdep.c:1012: warning: unused variable `owner' - window.c:993: warning: `window_right_toolbar_width' defined but not used - -1998-05-19 Andy Piper - - * glyphs-msw.c (mswindows_create_resized_mask) - (mswindows_create_resized_bitmap): new funnctions split out from - mswindows_resize_dibitmap_instance. - - * glyphs-msw.h: declare new resize functions. - - * toolbar-msw.c (mswindows_output_toolbar): use new bitmap resize - functions so that the original bitmaps are preserved. - - * sheap.c: fixup static heap exhausted error to avoid FAQs. - - * redisplay-msw.c (mswindows_output_blank): fixup brush from bg - color if we are trying to output 0 depth bg pixmap. - - * scrollbar-msw.c: warning elimination. - -1998-05-18 Martin Buchholz - - * frame-x.c (x_update_frame_external_traits): Start preprocessor - directives in column 1. - - * search.c (skip_chars): Avoid using xzero with arrays, since some - compilers get confused by the construct &array. - -1998-05-18 Kirill M. Katsnelson - - * objects-msw.h: - * objects-msw.c: Changed the charset value for a new font from - "don't care" to "ansi". - - * glyphs-msw.c (convert_EImage_to_DIBitmap): Warnings fix. - -1998-05-18 Kirill M. Katsnelson - - * event-msw.c (mswindows_wnd_proc, WM_KEYDOWN): Do not clear shift - modifier on control chars. - Use IsCharAlpha() instead of isaplha(). - -1998-05-19 Kazuyuki IENAGA - - * s/freebsd.h: FreeBSD 2.2.6 now supports setlocale(LC_ALL, ""). - -1998-05-18 Kirill M. Katsnelson - - * objects-msw.c (mswindows_initialize_font_instance): Use ANSI - charset when creating font. - (mswindows_initialize_color_instance): Do not create brush along - with a color. - (mswindows_finalize_color_instance): Do not delete it then. - - * objects-msw.h (struct mswindows_color_instance_data): Removed - brush slot, and corresponding accessor macro. - -1998-05-18 Kirill M. Katsnelson - - * toolbar.c: Removed toolbar_data lrecord implementation. - (mark_frame_toolbar_buttons_dirty): Replase usage of toolbar_data - with toolbar_buttons (via FRAME_TOOLBAR_BUTTONS). - (compute_frame_toolbar_buttons): Ditto. - (CHECK_TOOLBAR): Ditto. - (set_frame_toolbar): Removed allocation of toolbar_data lrecord. - (update_frame_toolbars): Do not check for changed buffer - here. Toolbar information is provided by cached specs in - windows. The check for buffer is eliminated becuase toolbars are - marked changed in set_frame_selected_window() in frame.c - Added check for changed toolbars geometry. - (compute_frame_toolbars_data): Removed unused second parameter; - Adjusted callers of this static function throughout the file. - (init_frame_toolbars): Initialize current_toolbar_size. - (update_frame_toolbars): Use DEVICE_SUPPORTS_TOOLBARS_P instead of - what is its current expansion, for clarity. - (init_frame_toolbars): Ditto. - (init_device_toolbars): Ditto. - (init_global_toolbars): Ditto. - - * toolbar.h: Removed definition of toolbar_data lrecord. - Added accessor macros FRAME_TOOLBAR_BUTTONS and - FRAME_CURRENT_TOOLBAR_SIZE. - Added macro DEVICE_SUPPORTS_TOOLBARS_P. - - * toolbar-x.c (x_output_toolbar): The same change as in - toolbar-msw.c - (x_output_toolbar): Ditto. - (x_redraw_exposed_toolbar): Ditto. - - * toolbar-msw.c (mswindows_output_toolbar): Retrieve current - buttons from toolbar_buttons using FRAME_TOOLBAR_BUTTONS macro. - (mswindows_output_toolbar): Ditto. - (mswindows_output_toolbar): Ditto. - - * frame.c (mark_frame): Removed marking of arrays, according to - frameslots.h change. - (nuke_all_frame_slots): Ditto. - (set_frame_selected_window): Mark toolbars changed when - last_nonminibuf_window changes. - - * frame.h (struct frame): Moved some slots to frameslots.h. - Added current_toolbar_size array. - Changed references from toolbar_data to toolbar_buttons in macros - FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE, - FRAME_RAW_THEORETICAL_TOOLBAR_SIZE and - FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH. - - * frameslots.h: Added macro MARKED_SLOT_ARRAY a la winslots.h - Moved arrays of lisp objects here from frame.h: toolbar_size, - toolbar_visible_p, toolbar_border_width. - Removed toolbar_data slot and added toolbar_buttons. - -1998-05-17 Kirill M. Katsnelson - - * symsinit.h: Externed syms_of_process_nt() - - * emacs.c (main_1): Call syms_of_process_nt() - - * process-nt.c: Quote process arguments by a call to Lisp function - `nt-quote-process-args'. - (syms_of_process_nt): New function. - (nt_send_process): Flush data stream after each write, to avoid - leaving buffered data. - (nt_send_process): When blocked on process output, wait for - process to slurp more for progressively increasing time intervals. - -1998-05-17 Martin Buchholz - - * window.c (have_undivided_common_edge): Make file-local function - static. - (map_windows): Return 0 if all map functions successful. - Fix typos. - - * winslots.h: Use unlikely names for local variables in macros to - avoid shadowing warnings. - -1998-05-17 Andy Piper - - * toolbar-msw.c (mswindows_output_toolbar): hash on toolbar width - so that we re-output if the toolbar size has changed. - -1998-05-17 Michael Sperber [Mr. Preprocessor] - - * s/aix4-2.h (ALIGN_DATA_RELOC): Undefined to support new unexaix.c. - - * s/aix3-1.h (ALIGN_DATA_RELOC): Defined to support new unexaix.c. - - * unexaix.c: Massive cleanup and support of AIX 4.2 (and hopefully - greater). - -1998-05-16 Kirill M. Katsnelson - - * glyphs-msw.c: Defined OEMRESOURCE before including windows.h to - get bitmap manifest constants defined. - - * console-msw.h: Include system files in angle brackets, not in - quotes. - - * window.c (specifier_vars_of_window): Fixed a typo in - `vertical-divider-line-width' docstirng. - -1998-05-16 Olivier Galibert - - * line-number.c (delete_invalidate_line_number_cache): Use an - EMACS_INT. - (buffer_line_number): Remove dangerous, plain wrong when using - 64bits emacs ints, cast. - - * insdel.c (buffer_delete_range): Use an EMACS_INT. - - * cmds.c (Fforward_line): Use EMACS_INTs. - - * search.c (bi_scan_buffer): Change to use EMACS_INTs. - (scan_buffer): Ditto. - (bi_find_next_newline_no_quit): Remove useless cast. - (find_next_newline_no_quit): Ditto. - (find_next_newline): Ditto. - (find_before_next_newline): Use an EMACS_INT. - - * lisp.h: Change scan_buffer to pass EMACS_INTs. - -1998-05-16 Hrvoje Niksic - - * menubar-msw.c (mswindows_handle_wm_command): Ditto. - - * toolbar-msw.c (mswindows_handle_toolbar_wm_command): Ditto. - - * gui-x.c (popup_selection_callback): Use it. - - * gui.h (get_callback): Declare it. - - * gui.c (get_callback): New function. - -1998-05-15 SL Baur - - * window.c (have_undivided_common_edge): Guard scrollbar specific - stuff. - (window_needs_vertical_divider_1): Ditto. - -1998-05-16 Hrvoje Niksic - - * emacs.c (decode_path): Eliminate compiler warning. - (Fdecode_path): Renamed to Fsplit_path. - (Fsplit_string_by_char): New function. - -1998-05-14 Damon Lipparelli - - * winslots.h: close comment - -1998-05-16 Kirill M. Katsnelson - - * callproc.c: Removed declared and unused variable Qbuffer_file_type. - - * bufslots.h: Removed buffer_file_type slot. - - * buffer.c (complex_vars_of_buffer): Removed buffer_file_type from - buffer local flags. - (complex_vars_of_buffer): Removed buffer-file-type variable and - its default reference. - -1998-05-15 Kirill M. Katsnelson - - * faces.c (complex_vars_of_faces): Defined - Vvertical_divider_face. - (vars_of_faces): Staticpro it. - - * faces.h: Externed Vvertical_divider_face. - - * redisplay-x.c (x_output_vertical_divider): Use - Vvertical_divider_face to draw the divider instead of modeline - face. - - * redisplay-msw.c (mswindows_output_vertical_divider): Draw - divider face using Vvertical_divider_face background. - Fix drawing spacing gaps around the divider. - -1998-05-14 Didier Verna - - * redisplay-x.c (x_output_vertical_divider): removed hard-wired - values for the vertical divider line width and spacing. Use the - cached values from the window structure instead. - (x_divider_width): ditto. - - * window.c (specifier_vars_of_window): new specifiers: - vertical-divier -line-width and -spacing. - (vertical_divider_global_width_changed): formerly known as - vertical_divider_shadow_thickness_changed. - - * winslots.h: new slots: vertical_specifier _line_width and - _spacing. Plus corrected a comment typo. - -1998-05-15 Kirill M. Katsnelson - - * window.h: Declared window_divider_width(). - - * console-stream.c (stream_divider_width): Removed method. - (console_type_create_stream): And declaration for it. - - * redisplay.c (pixel_to_glyph_translation): Use - window_divider_width() instead of divider_width redisplay method. - (pixel_to_glyph_translation): Fix top divider edge calculation - when scrollbar is on top. - - * window.c (window_divider_width): New function, an outphaser for - divider_width redisplay method. - (window_right_gutter_width): Use it. - (specifier_vars_of_window): For vertical-divider-{spacing,line-width} - specifiers, set fallback values differently on TTYs, and document - the behavior of these on TTYs in the docstrings. - - * scrollbar.c (update_scrollbar_instance): Use - window_divider_width() instead of divider_width redisplay method. - - * console.h (struct console_methods): Removed divider_width_method. - - * redisplay-tty.c (tty_divider_width): Removed device method. - (console_type_create_redisplay_tty): Removed definition for it. - (tty_output_vertical_divider): Respect the value returned by - window_divider_width thus divider line width specification. - - * redisplay-msw.c (mswindows_divider_width): Removed device method. - (console_type_create_redisplay_mswindows): Removed definition for it. - (mswinodws_output_vertical_divider): Respect the value returned by - window_divider_width thus divider line width specification. - -1998-05-15 Andy Piper - - * toolbar-msw.c: guess toolbar frame size a bit more accurately. - -1998-05-15 Andy Piper - - * glyphs-msw.c: resource loading implementation. - (cursor_normalize): new function. - (cursor_validate): ditto. - (cursor_instantiate): ditto. - (cursor_name_to_resource): ditto. - (cursor_possible_dest_types): ditto. - (check_valid_symbol): ditto. - (check_valid_string_or_int): ditto. - -1998-05-14 Martin Buchholz - - * sysdep.c (tty_init_sys_modes_on_device): Treat VSUSP just like - VINTR and VQUIT. - - * process-unix.c (process_signal_char): Use VSUSP instead of - non-standard VSWTCH. Always prefer VSUSP to VSWTCH. - -1998-05-14 Kirill M. Katsnelson - - * specifier.c (specifier_instance): Change locale precedence of - instantiation so window locale has higher priority than buffer - locale. - (Fspecifier_instance): Reflect this in docstring. - (Fadd_spec_list_to_specifier): Ditto. - (Fadd_spec_to_specifier): Ditto. - (Fremove_specifier): Ditto. - -1998-05-15 Kirill M. Katsnelson - - ** Dialog separation into a device method from Andy Piper - - * emacs.c (main_1): Call console_type_create_dialog_x(). - - * dialog-x.c (x_popup_dialog_box): Old Fpopup_dialog_box converted - into this device method. - (console_type_create_dialog_x): New function. - - * dialog.c (Fpopup_dialog_box): New function. - (syms_of_dialog): Defsubr it. - - * console.h (struct console_methods): Declared - popup_dialog_box_method(). - - * symsinit.h: Defined console_type_create_dialog_{x,mswindows} - -1998-05-14 Oliver Graf - - * dragdrop.c (vars_of_dragdrop): dragdrop-protocols created - * frame-x.c (x_cde_transfer_callback): checked for merge errors - -1998-05-13 Oliver Graf - - * dragdrop.c (vars_of_dragdrop): provide dragdrop-api - -1998-05-15 Kirill M. Katsnelson - - * console.h (device_metrics): Removed dbcs, input-method-editor - and right-to-left metrics. - - * device.c (Fdevice_system_metric): Ditto. - (Fdevice_system_metrics): Ditto. - (syms_of_device): Ditto. - (Fdevice_system_metric): Swapped DEVICE and METRIC parameters back - again. - -1998-05-14 Hrvoje Niksic - - * line-number.h (mark_line_number_cache): Remove unused - declaration. - - * line-number.c (LINE_NUMBER_FAR): Increase to 32768. - (get_nearest_line_number): Simplify. - (add_position_to_cache): Make the old marker point nowhere. - -1998-05-14 Kirill M. Katsnelson - - ** Renamed window-divider-map => vertical-divider-map - and event-over-divider-p => event-over-vertical-divider-p, - in the following files/functions: - * events.h: - * events.c (Fevent_over_divider_p): - * keymap.c (get_relevant_keymaps): - (vars_of_keymap): - - * redisplay.h (OVER_V_DIVIDER): Renamed so from OVER_DIVIDER. - - * redisplay.c (pixel_to_glyph_translation): Use OVER_V_DIVIDER. - -1998-05-14 Kirill M. Katsnelson - - * window.c (vertical_divider_changed_in_window): Renamed so. - (specifier_vars_of_window): Defined Vvertical_divider_draggable_p. - (window_needs_vertical_divider_1): Decide whether we need it based - on the value of the above specifier. If separators are unwanted, - put them only if there's no scrollbar between this window and its - right neighbor. - (have_undivided_common_edge): New function, helper for the above. - (window_needs_vertical_divider): Return either a cached value, - or clauclate and cache one. - (invalidate_vertical_divider_cache_in_window): Implemented. - (map_windows): Changed return type to int, return the value from - MAPFUN. - - * window.h: Prototype invalidate_vertical_divider_cache_in_window. - (struct window): Added need_vertical_divider_p and - need_vertical_divider_valid_p. - - * winslots.h: Added vertical_divider_draggable_p slot. - - * scrollbar.c (vertical_scrollbar_changed_in_window): Implemented. - (specifier_vars_of_scrollbar): Used it in all vertical specifiers. - - * frame.c (invalidate_vertical_divider_cache_in_frame): New function. - - * frame.h (MARK_FRAME_WINDOWS_STRUCTURE_CHANGED): Call - invalidate_vertical_divider_cache_in_frame(). - Prototype it. - -1998-05-14 Andy Piper - - * toolbar-msw.c: provide correct parameters to TB_SETROWS. - - * glyphs-msw.c (mswindows_initialize_image_instance_mask): size - masks correctly and don't select 0. - -1998-05-14 Kirill M. Katsnelson - - * winslots.h: New file, declaration of some struct window and - struct saved_window members. - - * window.h (struct window): Include it, with required preprocessor - magic. - - * window.c (mark_window): Ditto. - (allocate_window): Ditto. - (struct saved_window): Ditto. - (mark_window_config): Ditto. - (saved_window_equal): Ditto. - (Fset_window_configuration): Ditto. - -1998-05-14 Kirill M. Katsnelson - - * redisplay-msw.c (mswindows_output_vertical_divider): Syntax fix. - -1998-05-12 Didier Verna - - * redisplay-x.c (x_output_vertical_divider): draw shadows around - the divider line. The shadow thickness is currently - hard-wired. This will probably be turned into a specifier soon. - -1998-05-12 Didier Verna - - * console.h (struct console_methods): the divider_width console - method now requires a struct window * argument. - - * redisplay-x.c (x_divider_width): ditto. Plus remove - X_DIVIDER_WIDTH, X_DIVIDER_SHADOW_THICKNESS. - (x_output_vertical_divider): give a depressed look when the shadow - thickness is negative. - - * console-stream.c (stream_divider_width): pass a struct window * - argument. - - * redisplay-tty.c (tty_divider_width): ditto. - - * window.c (window_right_gutter_width): totdi. - - * redisplay.c (generate_modeline): ittod. - - * scrollbar.c (update_scrollbar_instance): ttido. - - * redisplay-msw.c (mswindows_divider_width): ottid. - WARNING: this enables to compile, but the feature is not functional. - - * window.h (struct window): new field - vertical_divider_shadow_thickness. - - * window.c (specifier_vars_of_window): new specifier - vertical-divider-shadow-thickness. - (vertical_divider_shadow_thickness_changed): new function to - inform redisplay that the window has changed. - (mark_window): handle new field vertical_divider_shadow_thickness - from struct window. - (allocate_window): ditto. - (saved_window_equal): toddi. - (Fset_window_configuration): totid. - (save_window_save): ttdio. - (struct saved_window): new field vertical_divider_shadow_thickness. - -1998-05-14 Kirill M. Katsnelson - - * device-msw.c (mswindows_device_system_metrics): Support a deluge - of metrics. - -1998-05-12 Oliver Graf - - * frame-x.c (x_cde_transfer_callback): fixed for the new protocol - * event-Xt.c (x_event_to_emacs_event): C++ compability - -1998-05-14 Hrvoje Niksic - - * emacs.c (Fdecode_path): Default SEPCHAR to value of - path-separator. - -1998-05-14 Hrvoje Niksic - - * emacs.c (vars_of_emacs): Do it here; change the meaning of - Vpath_separator. - - * fileio.c (vars_of_fileio): Don't define Vpath_separator here. - -1998-05-14 Hrvoje Niksic - - * emacs.c (decode_path_1): New function. - (decode_path): Use it. - (Fdecode_path): Renamed from Fdecode_path_internal; use - decode_path_1. - -1998-05-12 Hrvoje Niksic - - * macros.c (Fzap_last_kbd_macro_event): New function. - (Fend_kbd_macro): Remove REMOVE_LAST kludge. - -1998-05-10 Andy Piper - - * redisplay-msw.c (mswindows_output_dibitmap_region): make sure - multiple bitmaps are output vertically as well as horizontally. - * (mswindows_output_dibitmap): don't cope with bitmap boundaries - crossing lines this is handled by - mswindows_output_dibitmap_region. - -1998-05-12 Martin Buchholz - - * inline.c: Include eldap.h - - * menubar-x.c (x_update_frame_menubar_internal): - Remove: unused variable `container' - -1998-05-11 Martin Buchholz - - * s/aix4.h: Allow AIX 4.3 XEmacs to compile cleanly. - Unfortunately, the resulting temacs still cannot dump. - - * symbols.c (symbol_is_constant): - (verify_ok_for_buffer_local): - -Wswitch Warning suppression - add default case to switches. - - * redisplay.c (decode_mode_spec): Remove unused variables, - Replace Fcoding_system_property (codesys, Qmnemonic) with - XCODING_SYSTEM_MNEMONIC (codesys); - Fcoding_system_property is for users. - - * buffer.c: - * fileio.c: - * lread.c: - * xselect.c: - Change empty docstrings into no doc strings at all. - Fix bogus FSF-format docstrings. - - * extents.c: - Standardize docstrings. - - * floatfns.c: - Explain problems with matherr. - - * glyphs.c: make DEFUNs etags-readable, i.e. single-line - - * syssignal.h: - if BROKEN_SIGIO, then SIGIO wants to be undefined. - if SIGIO and not SIGPOLL, SIGPOLL wants to be SIGIO.\ - Fix the weird resultant interaction (causes windows problems) - - * gdbinit: - * dbxrc: - Take new EMACSBOOTSTRAPLOADPATH into account. - Update documentation strings - - * Makefile.in.in: - - Adjust for luser's CDPATH being set to something weird. - - Take into account bash 2.02's tendency to print the cwd when - using CDPATH. Always use `cd ./foo' instead of `cd foo'. - - fix the run-temacs target to use $(DUMPENV) - - fix the run-puremacs target to use $(DUMPENV) - - fix the `depend' target to properly $(RM) the right files - - Generate a better TAGS file for XEmacs' lisp code using - hand-crafted regexps. - - Use standard coding conventions for modules/Makefile.in - -1998-05-12 Didier Verna - - * redisplay.c: removed the scrolling modeline code that didn't - make it for 21.0. To be continued ... - -1998-05-13 Michael Sperber [Mr. Preprocessor] - - * emacs.c (Fdecode_path_internal): Removed bogus handling of nil - and empty string inputs. - -1998-05-12 Hrvoje Niksic - - * redisplay-x.c (x_output_vertical_divider): Fixed typo. - -1998-05-10 Oliver Graf - - * event-stream.c (enqueue_misc_user_event_pos): created - * lisp.h (enqueue_misc_user_event_pos): prototype added - * frame-x.c (x_cde_transfer_callback): debug code plus API changes - * emacs.c: call vars_of_dragdrop - * dragdrop.c (vars_of_dragdrop): provide dragdrop - -1998-05-11 Oliver Graf - - * frame-x.c (x_cde_transfer_callback): return at correct pos - * event-Xt.c (x_event_to_emacs_event): changed format of drop - object for MIME (see comment in dragdrop.c) - * dragdrop.c: API change documented in comment - removed provide of dragdrop [is provided by dragdrop.el] - -1998-05-12 Kirill M. Katsnelson - - * window.c (window_needs_vertical_divider): Enable vertical - dividers for every non-rightmost window. - (window_left_gutter_width): Left gutter consists of mythical - toolbar and a virtual scrollbar. - (window_right_gutter_width): The right one may have a divider - also. - - * scrollbar.c (update_scrollbar_instance): Position vertical - scrollbar left to divider if the latter present. - - * redisplay.h: Declared OVER_DIVIER constant. - - * redisplay.c (pixel_to_glyph_translation): Handle OVER_DIVIDER - case. - - * redisplay-x.c (x_output_vertical_divider): Output divider along - the right side of the window, down to window bottom. Swapped - foreground and background colors so it is visible by default. - - * redisplay-tty.c (tty_output_vertical_divider): Uncondiionally - stick the divider to the right window side. - - * redisplay-msw.c (mswindows_redisplay_deadbox_maybe): Fixed - deadbox painting. - (mswindows_divider_width): Ask system for user preferred value. - (mswindows_output_vertical_divider): Always output the divider on - the right side of a window, down to bottom. - - * keymap.c (get_relevant_keymaps): Route mouse button events which - happened over a window divider through window-divider-map. - (Fkey_binding): Documented that in the docstring. - Defined the variable Vwindow_divider_map. - - * events.c (Fevent_over_divider_p): Added this function. - - * events.h: EXFUNed it. - -1998-05-12 Kirill M. Katsnelson - - * toolbar.c (update_frame_toolbars): Re-layout frame windows if - toolbar geometry is suspected to change. - -1998-05-11 Jonathan Harris - - * src/device-msw.c - * src/event-msw.c - Condition dnd and dde code on HAVE_DRAGNDROP. - -1998-05-11 Hrvoje Niksic - - * events.c (format_event_object): Print space as SPC etc. - -1998-05-11 Hrvoje Niksic - - * print.c (print_internal): In the default case, abort() if - ERROR_CHECK_TYPECHECK. - - * fileio.c (Fmake_temp_name): Doc fix. - -1998-05-10 Hrvoje Niksic - - * xgccache.c (describe_gc_cache): Define only if DEBUG_XEMACS. - - * undo.c (Fprimitive_undo): Fixed typo. - -1998-05-11 Hrvoje Niksic - - * fns.c (concat): Signal error on integer argument. - -1998-05-10 Kirill M. Katsnelson - - * console.h (device_metrics): Prefixed each constatnt with DM_ - - * device.c: (Fdevice_system_metric): Renamed so from plural form - (metrics); Changed parameters order and added DEFAULT parameter; - Unabbreviated some metric constants; Fixed and untabified doc string. - (Fdevice_system_metrics): Added. Returns a plist of all provided - metrics. - - * device-msw.c (mswindows_device_system_metrics): Renamed - device_metrics enum constants. - Return Qunbound instead of Qnil. - - * device-tty.c (tty_device_system_metrics): Ditto. - - * device-x.c (x_device_system_metrics): Ditto. - -1998-05-10 Andy Piper - - * redisplay-msw.c: implement background pixmaps (really!). Make - sure bg color is transparent if we have bg pmaps. - * (mswindows_output_string) (mswindows_clear_region): output bg - pmap if required. - * (mswindows_output_dibitmap_region): new function. - * (mswindows_output_dibitmap): output offset pixmaps, blt masks in - the bg color rather than transparently. - - * toolbar-msw.c: use masks if they exist. - - * glyphs-msw.c: set up masks correctly. - - * event-msw.c: typedef SOCKET if cygwin and not msg select(). + * sysdep.c (_start): + * input-method-motif.c (res): + * event-Xt.c (Xt_process_to_emacs_event): + Simple compiler warning fixes. + + * bytecode.c (funcall_compiled_function): Use the original + function symbol on the backtrace list in preference to the + compiled_function object in error messages. + +2000-01-13 Andy Piper -1998-05-10 Hrvoje Niksic + * glyphs-x.c (update_widget_face): Make sure we update the widget + background as well as foreground. + +2000-01-13 Andy Piper + + * glyphs.h (struct Lisp_Image_Instance): Move justify and orient + fields to subwindow. + (IMAGE_INSTANCE_SUBWINDOW_JUSTIFY): new macro. + (XIMAGE_INSTANCE_SUBWINDOW_JUSTIFY): ditto. + (IMAGE_INSTANCE_SUBWINDOW_ORIENT): ditto. + (XIMAGE_INSTANCE_SUBWINDOW_ORIENT): ditto. + + * glyphs-widget.c (check_valid_tab_orientation): new function. + (initialize_widget_image_instance): zero orientation and + justification. + (widget_instantiate): pick up orientation. + (tab_control_query_geometry): return appropriate values for + vertical tabs. + + * glyphs-msw.c: (mswindows_tab_control_instantiate): assign + appropriate creation flags for left, right and bottom tabs. + + * s/cygwin32.h: add tab definitions. + +2000-01-12 Kirill 'Big K' Katsnelson + + * glyphs-msw.c (mswindows_unmap_subwindow): Set focus back to the + frame upon hiding a subwindow. + (mswindows_button_instantiate): Changed the push button style to + BS_PUSHBUTTON. + (mswindows_button_instantiate): Removed button BS_NOTIFY + style. + (mswindows_button_instantiate): Removed redundant check for + a disabled gui item. + (mswindows_button_instantiate): Made use of WS_TABSTOP + consistent: "operable" controls (edit, button, tree, scroll) have + this style, "display-only" ones (static, progress gauge) do + not. This style is currently ignored by XEmacs though. Also, + removed the WS_EX_CONTROLPARENT style - it is not for children, + it is for their parents! + (mswindows_edit_field_instantiate): Ditto. + (mswindows_progress_gauge_instantiate): Ditto. + (mswindows_tree_view_instantiate): Ditto. + (mswindows_tab_control_instantiate): Ditto. + (mswindows_scrollbar_instantiate): Ditto. + (mswindows_combo_box_instantiate): Ditto. + (mswindows_widget_instantiate): Added the WS_EX_CONTROLPARENT + style to the "clip" window. + (mswindows_button_instantiate): Removed compilation warning by + equally typing terms of the ?: operator. + +2000-01-12 Didier Verna + + * redisplay.c (generate_fstring_runes): new parameter holding the + last modeline-format extent. + (add_glyph_to_fstring_db_runes): new parameter holding the glyph + extent, fill the glyph block with it. + (generate_fstring_runes): handle these parameters. + (generate_formatted_string_db): ditto. + + * keymap.c (get_relevant_keymaps): retreive the keymaps from the + glyphs'extents in the modeline. + +1999-01-11 Mike Woolley + + * ntheap.c: Reduced the reserved heap space from 1Gb down to + 256Mb, as a workaround for the non-starting problem many people + have experienced. + +2000-01-06 Yoshiki Hayashi + + * console-tty.c (Fset_console_tty_output_coding_system): + Force redrawing tty frame. + +2000-01-10 Didier Verna + + * redisplay.c (generate_fstring_runes): fix size computation bug. + +2000-01-09 William M. Perry + + * gpmevent.c: (gpm_next_event_cb): Don't return value from void function. + +2000-01-09 Andy Piper + + * glyphs-msw.c: index -> i to avoid shadows. + (xbm_create_bitmap_from_data): make static. + (check_valid_string_or_int): deleted. + (mswindows_control_wnd_proc): message -> msg to avoid shadows. + + * glyphs-x.c (x_update_subwindow): remove unused args. - * regex.c (re_match_2_internal): Check for quit. + * glyphs.c (glyph_image_instance): return the thing. Don't set the + back pointer - this is done in allocate_image_instance. + (query_string_font): return Qnil to make the compiler happy. + (unmap_subwindow): set to ~0 to make the compiler happy. + (glyph_query_geometry): comment out until used. + (glyph_layout): ditto. -1998-05-10 Hrvoje Niksic +2000-01-09 Hrvoje Niksic - * frame.c (Ffocus_frame): New function. + * insdel.c (signal_after_change): Remove extraneous unbind_to(). diff --git a/src/Makefile.in.in b/src/Makefile.in.in index 36aede3..21d04e1 100644 --- a/src/Makefile.in.in +++ b/src/Makefile.in.in @@ -502,7 +502,7 @@ debug-temacs: temacs ## Purify PURIFY_PROG = purify PURIFY_FLAGS = -chain-length=32 -ignore-signals=SIGPOLL -threads=yes \ - -cache-dir=./purecache -always-use-cache-dir=yes -pointer-mask=0x0fffffff + -cache-dir=./purecache -always-use-cache-dir=yes PURIFY_LIBS = -lpthread puremacs: $(temacs_deps) $(PURIFY_PROG) $(PURIFY_FLAGS) $(LD) $(temacs_link_args) $(PURIFY_LIBS) diff --git a/src/alloc.c b/src/alloc.c index dd9e43b..ca864f2 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -496,8 +496,8 @@ this_one_is_unmarkable (Lisp_Object obj) /************************************************************************/ /* Give gdb/dbx enough information to decode Lisp Objects. We make sure certain symbols are always defined, so gdb doesn't complain - about expressions in src/gdbinit. See src/gdbinit or src/dbxrc to - see how this is used. */ + about expressions in src/.gdbinit. See src/.gdbinit or src/.dbxrc + to see how this is used. */ EMACS_UINT dbg_valmask = ((1UL << VALBITS) - 1) << GCBITS; EMACS_UINT dbg_typemask = (1UL << GCTYPEBITS) - 1; @@ -1720,7 +1720,7 @@ noseeum_make_marker (void) This new method makes things somewhat bigger, but it is MUCH safer. */ -DECLARE_FIXED_TYPE_ALLOC (string, struct Lisp_String); +DECLARE_FIXED_TYPE_ALLOC (string, Lisp_String); /* strings are used and freed quite often */ /* #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_string 10000 */ #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_string 1000 @@ -1728,7 +1728,7 @@ DECLARE_FIXED_TYPE_ALLOC (string, struct Lisp_String); static Lisp_Object mark_string (Lisp_Object obj) { - struct Lisp_String *ptr = XSTRING (obj); + Lisp_String *ptr = XSTRING (obj); if (CONSP (ptr->plist) && EXTENT_INFOP (XCAR (ptr->plist))) flush_cached_extent_info (XCAR (ptr->plist)); @@ -1764,7 +1764,7 @@ DEFINE_BASIC_LRECORD_IMPLEMENTATION ("string", string, */ 0, string_equal, 0, string_description, - struct Lisp_String); + Lisp_String); /* String blocks contain this many useful bytes. */ #define STRING_CHARS_BLOCK_SIZE \ @@ -1789,27 +1789,22 @@ static struct string_chars_block *current_string_chars_block; * the string occupies in string_chars_block->string_chars * (including alignment padding). */ -#define STRING_FULLSIZE(s) \ - ALIGN_SIZE (((s) + 1 + sizeof (struct Lisp_String *)),\ - ALIGNOF (struct Lisp_String *)) +#define STRING_FULLSIZE(size) \ + ALIGN_SIZE (((size) + 1 + sizeof (Lisp_String *)),\ + ALIGNOF (Lisp_String *)) #define BIG_STRING_FULLSIZE_P(fullsize) ((fullsize) >= STRING_CHARS_BLOCK_SIZE) #define BIG_STRING_SIZE_P(size) (BIG_STRING_FULLSIZE_P (STRING_FULLSIZE(size))) -#define CHARS_TO_STRING_CHAR(x) \ - ((struct string_chars *) \ - (((char *) (x)) - (slot_offset (struct string_chars, chars[0])))) - - struct string_chars { - struct Lisp_String *string; + Lisp_String *string; unsigned char chars[1]; }; struct unused_string_chars { - struct Lisp_String *string; + Lisp_String *string; EMACS_INT fullsize; }; @@ -1824,19 +1819,14 @@ init_string_chars_alloc (void) } static struct string_chars * -allocate_string_chars_struct (struct Lisp_String *string_it_goes_with, +allocate_string_chars_struct (Lisp_String *string_it_goes_with, EMACS_INT fullsize) { struct string_chars *s_chars; - /* Allocate the string's actual data */ - if (BIG_STRING_FULLSIZE_P (fullsize)) - { - s_chars = (struct string_chars *) xmalloc (fullsize); - } - else if (fullsize <= - (countof (current_string_chars_block->string_chars) - - current_string_chars_block->pos)) + if (fullsize <= + (countof (current_string_chars_block->string_chars) + - current_string_chars_block->pos)) { /* This string can fit in the current string chars block */ s_chars = (struct string_chars *) @@ -1868,21 +1858,20 @@ allocate_string_chars_struct (struct Lisp_String *string_it_goes_with, Lisp_Object make_uninit_string (Bytecount length) { - struct Lisp_String *s; - struct string_chars *s_chars; + Lisp_String *s; EMACS_INT fullsize = STRING_FULLSIZE (length); Lisp_Object val; - if ((length < 0) || (fullsize <= 0)) - abort (); + assert (length >= 0 && fullsize > 0); /* Allocate the string header */ - ALLOCATE_FIXED_TYPE (string, struct Lisp_String, s); + ALLOCATE_FIXED_TYPE (string, Lisp_String, s); set_lheader_implementation (&(s->lheader), &lrecord_string); - s_chars = allocate_string_chars_struct (s, fullsize); + set_string_data (s, BIG_STRING_FULLSIZE_P (fullsize) + ? xnew_array (Bufbyte, length + 1) + : allocate_string_chars_struct (s, fullsize)->chars); - set_string_data (s, &(s_chars->chars[0])); set_string_length (s, length); s->plist = Qnil; @@ -1903,8 +1892,9 @@ static void verify_string_chars_integrity (void); */ void -resize_string (struct Lisp_String *s, Bytecount pos, Bytecount delta) +resize_string (Lisp_String *s, Bytecount pos, Bytecount delta) { + Bytecount oldfullsize, newfullsize; #ifdef VERIFY_STRING_CHARS_INTEGRITY verify_string_chars_integrity (); #endif @@ -1923,47 +1913,59 @@ resize_string (struct Lisp_String *s, Bytecount pos, Bytecount delta) } #endif /* ERROR_CHECK_BUFPOS */ - if (pos >= 0 && delta < 0) - /* If DELTA < 0, the functions below will delete the characters - before POS. We want to delete characters *after* POS, however, - so convert this to the appropriate form. */ - pos += -delta; - if (delta == 0) /* simplest case: no size change. */ return; - else - { - Bytecount oldfullsize = STRING_FULLSIZE (string_length (s)); - Bytecount newfullsize = STRING_FULLSIZE (string_length (s) + delta); - if (oldfullsize == newfullsize) + if (pos >= 0 && delta < 0) + /* If DELTA < 0, the functions below will delete the characters + before POS. We want to delete characters *after* POS, however, + so convert this to the appropriate form. */ + pos += -delta; + + oldfullsize = STRING_FULLSIZE (string_length (s)); + newfullsize = STRING_FULLSIZE (string_length (s) + delta); + + if (BIG_STRING_FULLSIZE_P (oldfullsize)) + { + if (BIG_STRING_FULLSIZE_P (newfullsize)) { - /* next simplest case; size change but the necessary - allocation size won't change (up or down; code somewhere - depends on there not being any unused allocation space, - modulo any alignment constraints). */ + /* Both strings are big. We can just realloc(). */ + set_string_data (s, (Bufbyte *) xrealloc (string_data (s), + string_length (s) + delta + 1)); if (pos >= 0) { Bufbyte *addroff = pos + string_data (s); memmove (addroff + delta, addroff, - /* +1 due to zero-termination. */ string_length (s) + 1 - pos); } } - else if (BIG_STRING_FULLSIZE_P (oldfullsize) && - BIG_STRING_FULLSIZE_P (newfullsize)) + else /* String has been demoted from BIG_STRING. */ { - /* next simplest case; the string is big enough to be malloc()ed - itself, so we just realloc. + Bufbyte *new_data = + allocate_string_chars_struct (s, newfullsize)->chars; + Bufbyte *old_data = string_data (s); - It's important not to let the string get below the threshold - for making big strings and still remain malloc()ed; if that - were the case, repeated calls to this function on the same - string could result in memory leakage. */ - set_string_data (s, (Bufbyte *) xrealloc (string_data (s), - newfullsize)); + if (pos >= 0) + { + memcpy (new_data, old_data, pos); + memcpy (new_data + pos + delta, old_data + pos, + string_length (s) + 1 - pos); + } + set_string_data (s, new_data); + xfree (old_data); + } + } + else /* old string is small */ + { + if (oldfullsize == newfullsize) + { + /* special case; size change but the necessary + allocation size won't change (up or down; code + somewhere depends on there not being any unused + allocation space, modulo any alignment + constraints). */ if (pos >= 0) { Bufbyte *addroff = pos + string_data (s); @@ -1975,58 +1977,52 @@ resize_string (struct Lisp_String *s, Bytecount pos, Bytecount delta) } else { - /* worst case. We make a new string_chars struct and copy - the string's data into it, inserting/deleting the delta - in the process. The old string data will either get - freed by us (if it was malloc()ed) or will be reclaimed - in the normal course of garbage collection. */ - struct string_chars *s_chars = - allocate_string_chars_struct (s, newfullsize); - Bufbyte *new_addr = &(s_chars->chars[0]); - Bufbyte *old_addr = string_data (s); + Bufbyte *old_data = string_data (s); + Bufbyte *new_data = + BIG_STRING_FULLSIZE_P (newfullsize) + ? xnew_array (Bufbyte, string_length (s) + delta + 1) + : allocate_string_chars_struct (s, newfullsize)->chars; + if (pos >= 0) { - memcpy (new_addr, old_addr, pos); - memcpy (new_addr + pos + delta, old_addr + pos, + memcpy (new_data, old_data, pos); + memcpy (new_data + pos + delta, old_data + pos, string_length (s) + 1 - pos); } - set_string_data (s, new_addr); - if (BIG_STRING_FULLSIZE_P (oldfullsize)) - xfree (old_addr); - else - { - /* We need to mark this chunk of the string_chars_block - as unused so that compact_string_chars() doesn't - freak. */ - struct string_chars *old_s_chars = - (struct string_chars *) ((char *) old_addr - - sizeof (struct Lisp_String *)); - /* Sanity check to make sure we aren't hosed by strange - alignment/padding. */ - assert (old_s_chars->string == s); - MARK_STRUCT_AS_FREE (old_s_chars); - ((struct unused_string_chars *) old_s_chars)->fullsize = - oldfullsize; - } + set_string_data (s, new_data); + + { + /* We need to mark this chunk of the string_chars_block + as unused so that compact_string_chars() doesn't + freak. */ + struct string_chars *old_s_chars = (struct string_chars *) + ((char *) old_data - offsetof (struct string_chars, chars)); + /* Sanity check to make sure we aren't hosed by strange + alignment/padding. */ + assert (old_s_chars->string == s); + MARK_STRUCT_AS_FREE (old_s_chars); + ((struct unused_string_chars *) old_s_chars)->fullsize = + oldfullsize; + } } + } - set_string_length (s, string_length (s) + delta); - /* If pos < 0, the string won't be zero-terminated. - Terminate now just to make sure. */ - string_data (s)[string_length (s)] = '\0'; + set_string_length (s, string_length (s) + delta); + /* If pos < 0, the string won't be zero-terminated. + Terminate now just to make sure. */ + string_data (s)[string_length (s)] = '\0'; - if (pos >= 0) - { - Lisp_Object string; - - XSETSTRING (string, s); - /* We also have to adjust all of the extent indices after the - place we did the change. We say "pos - 1" because - adjust_extents() is exclusive of the starting position - passed to it. */ - adjust_extents (string, pos - 1, string_length (s), - delta); - } + if (pos >= 0) + { + Lisp_Object string; + + XSETSTRING (string, s); + /* We also have to adjust all of the extent indices after the + place we did the change. We say "pos - 1" because + adjust_extents() is exclusive of the starting position + passed to it. */ + adjust_extents (string, pos - 1, string_length (s), + delta); } #ifdef VERIFY_STRING_CHARS_INTEGRITY @@ -2037,7 +2033,7 @@ resize_string (struct Lisp_String *s, Bytecount pos, Bytecount delta) #ifdef MULE void -set_string_char (struct Lisp_String *s, Charcount i, Emchar c) +set_string_char (Lisp_String *s, Charcount i, Emchar c) { Bufbyte newstr[MAX_EMCHAR_LEN]; Bytecount bytoff = charcount_to_bytecount (string_data (s), i); @@ -2160,7 +2156,7 @@ build_translated_string (CONST char *str) Lisp_Object make_string_nocopy (CONST Bufbyte *contents, Bytecount length) { - struct Lisp_String *s; + Lisp_String *s; Lisp_Object val; /* Make sure we find out about bad make_string_nocopy's when they happen */ @@ -2169,7 +2165,7 @@ make_string_nocopy (CONST Bufbyte *contents, Bytecount length) #endif /* Allocate the string header */ - ALLOCATE_FIXED_TYPE (string, struct Lisp_String, s); + ALLOCATE_FIXED_TYPE (string, Lisp_String, s); set_lheader_implementation (&(s->lheader), &lrecord_string); SET_C_READONLY_RECORD_HEADER (&s->lheader); s->plist = Qnil; @@ -2993,7 +2989,7 @@ verify_string_chars_integrity (void) { struct string_chars *s_chars = (struct string_chars *) &(sb->string_chars[pos]); - struct Lisp_String *string; + Lisp_String *string; int size; int fullsize; @@ -3044,7 +3040,7 @@ compact_string_chars (void) struct string_chars *from_s_chars = (struct string_chars *) &(from_sb->string_chars[from_pos]); struct string_chars *to_s_chars; - struct Lisp_String *string; + Lisp_String *string; int size; int fullsize; @@ -3129,7 +3125,7 @@ compact_string_chars (void) static int debug_string_purity; static void -debug_string_purity_print (struct Lisp_String *p) +debug_string_purity_print (Lisp_String *p) { Charcount i; Charcount s = string_char_length (p); @@ -3155,24 +3151,25 @@ sweep_strings (void) int num_small_used = 0, num_small_bytes = 0, num_bytes = 0; int debug = debug_string_purity; -#define UNMARK_string(ptr) \ - do { struct Lisp_String *p = (ptr); \ - int size = string_length (p); \ - UNMARK_RECORD_HEADER (&(p->lheader)); \ - num_bytes += size; \ - if (!BIG_STRING_SIZE_P (size)) \ - { num_small_bytes += size; \ - num_small_used++; \ - } \ - if (debug) debug_string_purity_print (p); \ - } while (0) -#define ADDITIONAL_FREE_string(p) \ - do { int size = string_length (p); \ - if (BIG_STRING_SIZE_P (size)) \ - xfree_1 (CHARS_TO_STRING_CHAR (string_data (p))); \ - } while (0) +#define UNMARK_string(ptr) do { \ + Lisp_String *p = (ptr); \ + size_t size = string_length (p); \ + UNMARK_RECORD_HEADER (&(p->lheader)); \ + num_bytes += size; \ + if (!BIG_STRING_SIZE_P (size)) \ + { num_small_bytes += size; \ + num_small_used++; \ + } \ + if (debug) \ + debug_string_purity_print (p); \ + } while (0) +#define ADDITIONAL_FREE_string(ptr) do { \ + size_t size = string_length (ptr); \ + if (BIG_STRING_SIZE_P (size)) \ + xfree (ptr->data); \ + } while (0) - SWEEP_FIXED_TYPE_BLOCK (string, struct Lisp_String); + SWEEP_FIXED_TYPE_BLOCK (string, Lisp_String); gc_count_num_short_string_in_use = num_small_used; gc_count_string_total_size = num_bytes; @@ -3485,7 +3482,7 @@ garbage_collect_1 (void) for (i = 0; i < staticidx; i++) mark_object (*(staticvec[i])); for (i = 0; i < staticidx_nodump; i++) - mark_object (*(staticvec_nodump[i])); + mark_object (*(staticvec_nodump[i])); } { /* GCPRO() */ @@ -4150,7 +4147,7 @@ complex_vars_of_alloc (void) * - lrecord_implementations_table[] * - relocation table * - wired variable address/value couples with the count preceding the list - */ + */ typedef struct { char signature[8]; @@ -4264,7 +4261,7 @@ pdump_add_entry (pdump_entry_list *list, const void *obj, size_t size, int count { if (e->obj == obj) return; - + pos++; if (pos == PDUMP_HASHSIZE) pos = 0; @@ -4311,7 +4308,7 @@ pdump_get_entry_list(const struct struct_description *sdesc) pdump_struct_table.list[pdump_struct_table.count].list.align = 8; pdump_struct_table.list[pdump_struct_table.count].list.count = 0; pdump_struct_table.list[pdump_struct_table.count].sdesc = sdesc; - + return &pdump_struct_table.list[pdump_struct_table.count++].list; } @@ -4436,11 +4433,11 @@ pdump_register_sub (const void *data, const struct lrecord_description *desc, in int i; if (XD_IS_INDIRECT (count)) count = pdump_get_indirect_count (count, desc, data); - + for(i=0;idescription) { int me = depth++; @@ -4522,7 +4519,7 @@ pdump_register_struct (const void *data, const struct struct_description *sdesc, backtrace[me].obj = 0; backtrace[me].position = 0; backtrace[me].offset = 0; - + pdump_add_entry (pdump_get_entry_list (sdesc), data, sdesc->size, @@ -4548,7 +4545,7 @@ pdump_dump_data (pdump_entry_list_elmt *elmt, const struct lrecord_description * int pos, i; void *rdata; memcpy (pdump_buf, elmt->obj, size*count); - + for (i=0; iobj); - + for(i=0; inext; } } - + for (i=0; inext; } } - + elmt = pdump_opaque_data_list.first; while (elmt) { @@ -4793,7 +4790,7 @@ pdump_dump_structvec (void) static void pdump_dump_itable (void) { - write (pdump_fd, lrecord_implementations_table, sizeof (lrecord_implementations_table)); + write (pdump_fd, lrecord_implementations_table, sizeof (lrecord_implementations_table)); } static void @@ -4858,7 +4855,7 @@ pdump_dump_wired (void) write (pdump_fd, &pdump_wirevec[i], sizeof (pdump_wirevec[i])); write (pdump_fd, &obj, sizeof (obj)); } - + for (i=0; ifunction, 0))) + fun = *backtrace_list->function; return Fsignal (Qwrong_number_of_arguments, list2 (fun, make_int (nargs))); } diff --git a/src/config.h.in b/src/config.h.in index 361563f..2b131ac 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -308,6 +308,11 @@ char *alloca(); #undef HAVE_SOCKADDR_SUN_LEN #undef HAVE_MULTICAST #undef HAVE_SYSVIPC +#undef HAVE_LOCKF +#undef HAVE_FLOCK +#undef HAVE_FSYNC +#undef HAVE_FTRUNCATE +#undef HAVE_UMASK #undef SYSV_SYSTEM_DIR #undef NONSYSTEM_DIR_LIBRARY @@ -797,17 +802,11 @@ on various systems. */ /* Should movemail use hesiod for getting POP server host? */ #undef HESIOD /* Determine type of mail locking. */ -/* Play preprocessor games so that configure options override s&m files */ -#undef REAL_MAIL_USE_LOCKF -#undef REAL_MAIL_USE_FLOCK -#undef MAIL_USE_LOCKF -#undef MAIL_USE_FLOCK -#ifdef REAL_MAIL_USE_FLOCK -#define MAIL_USE_FLOCK -#endif -#ifdef REAL_MAIL_USE_LOCKF -#define MAIL_USE_LOCKF -#endif +#undef MAIL_LOCK_LOCKF +#undef MAIL_LOCK_FLOCK +#undef MAIL_LOCK_DOT +#undef MAIL_LOCK_LOCKING +#undef MAIL_LOCK_MMDF #undef PREFIX_USER_DEFINED #undef EXEC_PREFIX_USER_DEFINED diff --git a/src/console-tty.c b/src/console-tty.c index c836d8c..12fc504 100644 --- a/src/console-tty.c +++ b/src/console-tty.c @@ -278,6 +278,8 @@ CODESYS defaults to the value of `terminal-coding-system'. set_encoding_stream_coding_system (XLSTREAM (CONSOLE_TTY_DATA (decode_tty_console (console))->outstream), Fget_coding_system (NILP (codesys) ? Vterminal_coding_system : codesys)); + /* Redraw tty */ + face_property_was_changed (Vdefault_face, Qfont, Qtty); return Qnil; } diff --git a/src/depend b/src/depend index c62ee1b..3993f28 100644 --- a/src/depend +++ b/src/depend @@ -11,7 +11,7 @@ console-msw.o: $(LISP_H) conslots.h console-msw.h console.h events.h lisp-disuni device-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-stream.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h dialog-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h dired-msw.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h nt.h regex.h symeval.h symsinit.h sysdir.h sysfile.h sysproc.h systime.h -event-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h menubar-msw.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h +event-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h menubar-msw.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h select.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h frame-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h glyphs-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h gui-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h elhash.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h @@ -19,7 +19,7 @@ menubar-msw.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-msw.h objects-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h hash.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-msw.h objects.h specifier.h symeval.h symsinit.h redisplay-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h debug.h device.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-ccl.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h window.h winslots.h scrollbar-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h -select-msw.o: $(LISP_H) conslots.h console-msw.h console.h lisp-disunion.h lisp-union.h lrecord.h select.h symeval.h symsinit.h +select-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h select.h specifier.h symeval.h symsinit.h toolbar.h toolbar-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h #endif #ifdef HAVE_X_WINDOWS @@ -94,7 +94,7 @@ ecrt0.o: config.h editfns.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h eldap.o: $(LISP_H) buffer.h bufslots.h eldap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h symsinit.h sysdep.h elhash.o: $(LISP_H) bytecode.h elhash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h -emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h commands.h conslots.h console.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h paths.h process.h redisplay.h symeval.h symsinit.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h +emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h commands.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h paths.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h toolbar.h emodules.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdll.h toolbar.h window.h winslots.h esd.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h miscplay.h symeval.h symsinit.h eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h commands.h conslots.h console.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h symsinit.h diff --git a/src/elhash.c b/src/elhash.c index 29fe779..397f65d 100644 --- a/src/elhash.c +++ b/src/elhash.c @@ -413,19 +413,11 @@ xhash_table (Lisp_Object hash_table) /************************************************************************/ /* Creation of hash tables, without error-checking. */ -static double -hash_table_rehash_threshold (Lisp_Hash_Table *ht) -{ - return - ht->rehash_threshold > 0.0 ? ht->rehash_threshold : - ht->size > 4096 && !ht->test_function ? 0.7 : 0.6; -} - static void compute_hash_table_derived_values (Lisp_Hash_Table *ht) { ht->rehash_count = (size_t) - ((double) ht->size * hash_table_rehash_threshold (ht)); + ((double) ht->size * ht->rehash_threshold); ht->golden_ratio = (size_t) ((double) ht->size * (.6180339887 / (double) sizeof (Lisp_Object))); } @@ -440,10 +432,6 @@ make_general_lisp_hash_table (enum hash_table_test test, Lisp_Object hash_table; Lisp_Hash_Table *ht = alloc_lcrecord_type (Lisp_Hash_Table, &lrecord_hash_table); - ht->rehash_size = rehash_size; - ht->rehash_threshold = rehash_threshold; - ht->weakness = weakness; - switch (test) { case HASH_TABLE_EQ: @@ -465,15 +453,21 @@ make_general_lisp_hash_table (enum hash_table_test test, abort (); } - if (ht->rehash_size <= 0.0) - ht->rehash_size = HASH_TABLE_DEFAULT_REHASH_SIZE; + ht->weakness = weakness; + + ht->rehash_size = + rehash_size > 1.0 ? rehash_size : HASH_TABLE_DEFAULT_REHASH_SIZE; + + ht->rehash_threshold = + rehash_threshold > 0.0 ? rehash_threshold : + size > 4096 && !ht->test_function ? 0.7 : 0.6; + if (size < HASH_TABLE_MIN_SIZE) size = HASH_TABLE_MIN_SIZE; - if (rehash_threshold < 0.0) - rehash_threshold = 0.75; - ht->size = - hash_table_size ((size_t) ((double) size / hash_table_rehash_threshold (ht)) + 1); + ht->size = hash_table_size ((size_t) (((double) size / ht->rehash_threshold) + + 1.0)); ht->count = 0; + compute_hash_table_derived_values (ht); /* We leave room for one never-occupied sentinel hentry at the end. */ @@ -500,8 +494,7 @@ make_lisp_hash_table (size_t size, enum hash_table_weakness weakness, enum hash_table_test test) { - return make_general_lisp_hash_table - (test, size, HASH_TABLE_DEFAULT_REHASH_SIZE, -1.0, weakness); + return make_general_lisp_hash_table (test, size, -1.0, -1.0, weakness); } /* Pretty reading of hash tables. @@ -1090,7 +1083,7 @@ beyond which the HASH-TABLE is enlarged by rehashing. */ (hash_table)) { - return make_float (hash_table_rehash_threshold (xhash_table (hash_table))); + return make_float (xhash_table (hash_table)->rehash_threshold); } DEFUN ("hash-table-weakness", Fhash_table_weakness, 1, 1, 0, /* diff --git a/src/emacs.c b/src/emacs.c index bf999a0..4312190 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -36,6 +36,7 @@ Boston, MA 02111-1307, USA. */ #include "console.h" #include "process.h" #include "redisplay.h" +#include "frame.h" #include "sysdep.h" #include "syssignal.h" /* Always include before systty.h */ @@ -155,6 +156,7 @@ Lisp_Object Vconfigure_info_directory; Lisp_Object Vsite_directory, Vconfigure_site_directory; Lisp_Object Vconfigure_info_path; Lisp_Object Vinternal_error_checking; +Lisp_Object Vmail_lock_methods, Vconfigure_mail_lock_method; Lisp_Object Vpath_separator; /* The default base directory XEmacs is installed under. */ @@ -1711,7 +1713,9 @@ main_1 (int argc, char **argv, char **envp, int restart) reinit_vars_of_lread (); reinit_vars_of_lstream (); reinit_vars_of_minibuf (); +#ifdef HAVE_SHLIB reinit_vars_of_module (); +#endif reinit_vars_of_objects (); reinit_vars_of_print (); reinit_vars_of_redisplay (); @@ -1726,6 +1730,9 @@ main_1 (int argc, char **argv, char **envp, int restart) #ifdef HAVE_X_WINDOWS reinit_vars_of_device_x (); +#endif +#ifdef HAVE_SCROLLBARS + reinit_vars_of_scrollbar_x (); #ifdef HAVE_MENUBARS reinit_vars_of_menubar_x (); #endif @@ -1800,6 +1807,7 @@ main_1 (int argc, char **argv, char **envp, int restart) init_redisplay (); /* Determine terminal type. init_sys_modes uses results */ + init_frame (); init_event_stream (); /* Set up so we can get user input. */ init_macros (); /* set up so we can run macros. */ init_editfns (); /* Determine the name of the user we're running as */ @@ -3086,6 +3094,46 @@ bufpos - check buffer positions. Vinternal_error_checking); #endif + DEFVAR_CONST_LISP ("mail-lock-methods", &Vmail_lock_methods /* +Mail spool locking methods supported by this instance of XEmacs. +This is a list of symbols. Each of the symbols is one of the +following: dot, lockf, flock, locking, mmdf. +*/ ); + { + Vmail_lock_methods = Qnil; + Vmail_lock_methods = Fcons (intern ("dot"), Vmail_lock_methods); +#ifdef HAVE_LOCKF + Vmail_lock_methods = Fcons (intern ("lockf"), Vmail_lock_methods); +#endif +#ifdef HAVE_FLOCK + Vmail_lock_methods = Fcons (intern ("flock"), Vmail_lock_methods); +#endif +#ifdef HAVE_MMDF + Vmail_lock_methods = Fcons (intern ("mmdf"), Vmail_lock_methods); +#endif +#ifdef HAVE_LOCKING + Vmail_lock_methods = Fcons (intern ("locking"), Vmail_lock_methods); +#endif + } + + DEFVAR_CONST_LISP ("configure-mail-lock-method", &Vconfigure_mail_lock_method /* +Mail spool locking method suggested by configure. This is one +of the symbols in MAIL-LOCK-METHODS. +*/ ); + { +#if defined(MAIL_LOCK_FLOCK) && defined(HAVE_FLOCK) + Vconfigure_mail_lock_method = intern("flock"); +#elif defined(MAIL_LOCK_LOCKF) && defined(HAVE_LOCKF) + Vconfigure_mail_lock_method = intern("lockf"); +#elif defined(MAIL_LOCK_MMDF) && defined(HAVE_MMDF) + Vconfigure_mail_lock_method = intern("mmdf"); +#elif defined(MAIL_LOCK_LOCKING) && defined(HAVE_LOCKING) + Vconfigure_mail_lock_method = intern("locking"); +#else + Vconfigure_mail_lock_method = intern("dot"); +#endif + } + DEFVAR_LISP ("path-separator", &Vpath_separator /* The directory separator in search paths, as a string. */ ); diff --git a/src/eval.c b/src/eval.c index 1992302..e2768e7 100644 --- a/src/eval.c +++ b/src/eval.c @@ -4743,7 +4743,7 @@ backtrace_specials (int speccount, int speclimit, Lisp_Object stream) DEFUN ("backtrace", Fbacktrace, 0, 2, "", /* Print a trace of Lisp function calls currently active. -Option arg STREAM specifies the output stream to send the backtrace to, +Optional arg STREAM specifies the output stream to send the backtrace to, and defaults to the value of `standard-output'. Optional second arg DETAILED means show places where currently active variable bindings, catches, condition-cases, and unwind-protects were made as well as @@ -4786,8 +4786,8 @@ function calls. if (!NILP (detailed) && catches && catches->backlist == backlist) { int catchpdl = catches->pdlcount; - if (specpdl[catchpdl].func == condition_case_unwind - && speccount > catchpdl) + if (speccount > catchpdl + && specpdl[catchpdl].func == condition_case_unwind) /* This is a condition-case catchpoint */ catchpdl = catchpdl + 1; diff --git a/src/event-Xt.c b/src/event-Xt.c index 4bea4e7..46161af 100644 --- a/src/event-Xt.c +++ b/src/event-Xt.c @@ -1339,8 +1339,8 @@ handle_focus_event_1 (struct frame *f, int in_p) is mandatory. Weirdly you get a FocusOut event when you click in a widget-glyph but you don't get a correspondng FocusIn when you click in the frame. Why is this? */ - if (in_p -#if XtSpecificationRelease > 5 + if (in_p +#if XtSpecificationRelease > 5 && FRAME_X_TEXT_WIDGET (f) != focus_widget #endif ) @@ -2011,22 +2011,24 @@ static void Xt_process_to_emacs_event (struct Lisp_Event *emacs_event) { int i; - Lisp_Object process; assert (process_events_occurred > 0); + for (i = 0; i < MAXDESC; i++) { - process = filedesc_with_input[i]; + Lisp_Object process = filedesc_with_input[i]; if (PROCESSP (process)) - break; + { + filedesc_with_input[i] = Qnil; + process_events_occurred--; + /* process events have nil as channel */ + emacs_event->event_type = process_event; + emacs_event->timestamp = 0; /* #### */ + emacs_event->event.process.process = process; + return; + } } - assert (i < MAXDESC); - filedesc_with_input[i] = Qnil; - process_events_occurred--; - /* process events have nil as channel */ - emacs_event->event_type = process_event; - emacs_event->timestamp = 0; /* #### */ - emacs_event->event.process.process = process; + abort (); } static void diff --git a/src/event-msw.c b/src/event-msw.c index 3911ef6..d8c07f1 100644 --- a/src/event-msw.c +++ b/src/event-msw.c @@ -2264,9 +2264,7 @@ mswindows_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) VOID_TO_LISP (image_instance, ii); if (IMAGE_INSTANCEP (image_instance) && - IMAGE_INSTANCE_TYPE_P (image_instance, IMAGE_WIDGET) - && - !NILP (XIMAGE_INSTANCE_WIDGET_FACE (image_instance))) + IMAGE_INSTANCE_TYPE_P (image_instance, IMAGE_WIDGET)) { /* set colors for the buttons */ HDC hdc = (HDC)wParam; @@ -3004,7 +3002,7 @@ vars_of_event_mswindows (void) mswindows_s_dispatch_event_queue = Qnil; staticpro (&mswindows_s_dispatch_event_queue); mswindows_s_dispatch_event_queue_tail = Qnil; - pdump_wire (&mswindows_u_dispatch_event_queue_tail); + pdump_wire (&mswindows_s_dispatch_event_queue_tail); mswindows_error_caught_in_modal_loop = Qnil; staticpro (&mswindows_error_caught_in_modal_loop); diff --git a/src/events.c b/src/events.c index 7bb19c4..e08ded9 100644 --- a/src/events.c +++ b/src/events.c @@ -1059,7 +1059,7 @@ event_to_character (struct Lisp_Event *event, if (event->event_type != key_press_event) { - if (event->event_type == dead_event) abort (); + assert (event->event_type != dead_event); return -1; } if (!allow_extra_modifiers && diff --git a/src/extents.c b/src/extents.c index d0ef995..bb5fa40 100644 --- a/src/extents.c +++ b/src/extents.c @@ -4618,14 +4618,9 @@ struct report_extent_modification_closure { int speccount; }; -/* This juggling with the pointer to another file's global variable is - kind of yucky. Perhaps I should just export the variable. */ -static int *inside_change_hook_pointer; - static Lisp_Object report_extent_modification_restore (Lisp_Object buffer) { - *inside_change_hook_pointer = 0; if (current_buffer != XBUFFER (buffer)) Fset_buffer (buffer); return Qnil; @@ -4650,7 +4645,13 @@ report_extent_modification_mapper (EXTENT extent, void *arg) /* Now that we are sure to call elisp, set up an unwind-protect so inside_change_hook gets restored in case we throw. Also record the current buffer, in case we change it. Do the recording only - once. */ + once. + + One confusing thing here is that our caller never actually calls + unbind_to (closure.speccount, Qnil). This is because + map_extents_bytind() unbinds before, and with a smaller + speccount. The additional unbind_to() in + report_extent_modification() would cause XEmacs to abort. */ if (closure->speccount == -1) { closure->speccount = specpdl_depth (); @@ -4666,7 +4667,10 @@ report_extent_modification_mapper (EXTENT extent, void *arg) /* #### It's a shame that we can't use any of the existing run_hook* functions here. This is so because all of them work with symbols, to be able to retrieve default values of local hooks. - */ + + + #### Idea: we could set up a dummy symbol, and call the hook + functions on *that*. */ if (!CONSP (hook) || EQ (XCAR (hook), Qlambda)) call3 (hook, exobj, startobj, endobj); @@ -4674,6 +4678,8 @@ report_extent_modification_mapper (EXTENT extent, void *arg) { Lisp_Object tail; EXTERNAL_LIST_LOOP (tail, hook) + /* #### Shouldn't this perform the same Fset_buffer() check as + above? */ call3 (XCAR (tail), exobj, startobj, endobj); } return 0; @@ -4681,7 +4687,7 @@ report_extent_modification_mapper (EXTENT extent, void *arg) void report_extent_modification (Lisp_Object buffer, Bufpos start, Bufpos end, - int *inside, int afterp) + int afterp) { struct report_extent_modification_closure closure; @@ -4691,20 +4697,8 @@ report_extent_modification (Lisp_Object buffer, Bufpos start, Bufpos end, closure.afterp = afterp; closure.speccount = -1; - inside_change_hook_pointer = inside; - *inside = 1; - map_extents (start, end, report_extent_modification_mapper, (void *)&closure, buffer, NULL, ME_MIGHT_CALL_ELISP); - - if (closure.speccount == -1) - *inside = 0; - else - { - /* We mustn't unbind when closure.speccount != -1 because - map_extents_bytind has already done that. */ - assert (*inside == 0); - } } diff --git a/src/extents.h b/src/extents.h index 390c3e0..2a2ab9d 100644 --- a/src/extents.h +++ b/src/extents.h @@ -367,7 +367,7 @@ void process_extents_for_insertion (Lisp_Object object, Bytind opoint, Bytecount length); void process_extents_for_deletion (Lisp_Object object, Bytind from, Bytind to, int destroy_them); -void report_extent_modification (Lisp_Object, Bufpos, Bufpos, int *, int); +void report_extent_modification (Lisp_Object, Bufpos, Bufpos, int); void set_extent_glyph (EXTENT extent, Lisp_Object glyph, int endp, glyph_layout layout); diff --git a/src/file-coding.c b/src/file-coding.c index 4ced792..921d48f 100644 --- a/src/file-coding.c +++ b/src/file-coding.c @@ -424,7 +424,7 @@ finalize_coding_system (void *header, int for_disksave) } } -static enum eol_type +static eol_type_t symbol_to_eol_type (Lisp_Object symbol) { CHECK_SYMBOL (symbol); @@ -438,7 +438,7 @@ symbol_to_eol_type (Lisp_Object symbol) } static Lisp_Object -eol_type_to_symbol (enum eol_type type) +eol_type_to_symbol (eol_type_t type) { switch (type) { @@ -1059,7 +1059,7 @@ Define symbol ALIAS as an alias for coding system CODING-SYSTEM. } static Lisp_Object -subsidiary_coding_system (Lisp_Object coding_system, enum eol_type type) +subsidiary_coding_system (Lisp_Object coding_system, eol_type_t type) { Lisp_Coding_System *cs = XCODING_SYSTEM (coding_system); Lisp_Object new_coding_system; @@ -1400,7 +1400,7 @@ Return the coding system associated with a coding category. struct detection_state { - enum eol_type eol_type; + eol_type_t eol_type; int seen_non_ascii; int mask; #ifdef MULE @@ -1481,7 +1481,7 @@ mask_has_at_most_one_bit_p (int mask) return (mask & (mask - 1)) == 0; } -static enum eol_type +static eol_type_t detect_eol_type (struct detection_state *st, CONST unsigned char *src, unsigned int n) { @@ -1643,7 +1643,7 @@ coding_system_from_mask (int mask) void determine_real_coding_system (Lstream *stream, Lisp_Object *codesys_in_out, - enum eol_type *eol_type_in_out) + eol_type_t *eol_type_in_out) { struct detection_state decst; @@ -1946,7 +1946,7 @@ struct decoding_stream EOL type stored in CODESYS because the latter might indicate automatic EOL-type detection while the former will always indicate a particular EOL type. */ - enum eol_type eol_type; + eol_type_t eol_type; #ifdef MULE /* Additional ISO2022 information. We define the structure above because it's also needed by the detection routines. */ diff --git a/src/file-coding.h b/src/file-coding.h index 023bf57..ff70465 100644 --- a/src/file-coding.h +++ b/src/file-coding.h @@ -96,7 +96,7 @@ struct Lisp_Coding_System Lisp_Object post_read_conversion, pre_write_conversion; - enum eol_type eol_type; + eol_type_t eol_type; /* Subsidiary coding systems that specify a particular type of EOL marking, rather than autodetecting it. These will only be non-nil @@ -500,7 +500,7 @@ void set_decoding_stream_coding_system (Lstream *stream, void set_encoding_stream_coding_system (Lstream *stream, Lisp_Object codesys); void determine_real_coding_system (Lstream *stream, Lisp_Object *codesys_in_out, - enum eol_type *eol_type_in_out); + eol_type_t *eol_type_in_out); #ifndef MULE diff --git a/src/fns.c b/src/fns.c index 6cbc1be..403e6ea 100644 --- a/src/fns.c +++ b/src/fns.c @@ -1850,7 +1850,7 @@ int plists_differ (Lisp_Object a, Lisp_Object b, int nil_means_not_present, int laxp, int depth) { - int eqp = (depth == -1); /* -1 as depth means us eq, not equal. */ + int eqp = (depth == -1); /* -1 as depth means use eq, not equal. */ int la, lb, m, i, fill; Lisp_Object *keys, *vals; char *flags; diff --git a/src/frame.c b/src/frame.c index 0264e90..ccdb8ab 100644 --- a/src/frame.c +++ b/src/frame.c @@ -116,6 +116,10 @@ Lisp_Object Vframe_being_created; Lisp_Object Qframe_being_created; static void store_minibuf_frame_prop (struct frame *f, Lisp_Object val); +static struct display_line title_string_display_line; +/* Used by generate_title_string. Global because they get used so much that + the dynamic allocation time adds up. */ +static Emchar_dynarr *title_string_emchar_dynarr; EXFUN (Fset_frame_properties, 2); @@ -2674,8 +2678,8 @@ frame_conversion_internal (struct frame *f, int pixel_to_char, window = FRAME_SELECTED_WINDOW (f); - egw = max (glyph_width (Vcontinuation_glyph, Vdefault_face, 0, window), - glyph_width (Vtruncation_glyph, Vdefault_face, 0, window)); + egw = max (glyph_width (Vcontinuation_glyph, window), + glyph_width (Vtruncation_glyph, window)); egw = max (egw, cpw); bdr = 2 * f->internal_border_width; obw = FRAME_SCROLLBAR_WIDTH (f) + FRAME_THEORETICAL_LEFT_TOOLBAR_WIDTH (f) + @@ -2850,9 +2854,9 @@ change_frame_size_1 (struct frame *f, int newheight, int newwidth) { int adjustment, trunc_width, cont_width; - trunc_width = glyph_width (Vtruncation_glyph, Vdefault_face, 0, + trunc_width = glyph_width (Vtruncation_glyph, FRAME_SELECTED_WINDOW (f)); - cont_width = glyph_width (Vcontinuation_glyph, Vdefault_face, 0, + cont_width = glyph_width (Vcontinuation_glyph, FRAME_SELECTED_WINDOW (f)); adjustment = max (trunc_width, cont_width); adjustment = max (adjustment, font_width); @@ -2967,6 +2971,37 @@ change_frame_size (struct frame *f, int newheight, int newwidth, int delay) } +/* The caller is responsible for freeing the returned string. */ +static Bufbyte * +generate_title_string (struct window *w, Lisp_Object format_str, + face_index findex, int type) +{ + struct display_line *dl; + struct display_block *db; + int elt = 0; + + dl = &title_string_display_line; + db = get_display_block_from_line (dl, TEXT); + Dynarr_reset (db->runes); + + generate_formatted_string_db (format_str, Qnil, w, dl, db, findex, 0, + -1, type); + + Dynarr_reset (title_string_emchar_dynarr); + while (elt < Dynarr_length (db->runes)) + { + if (Dynarr_atp (db->runes, elt)->type == RUNE_CHAR) + Dynarr_add (title_string_emchar_dynarr, + Dynarr_atp (db->runes, elt)->object.chr.ch); + elt++; + } + + return + convert_emchar_string_into_malloced_string + (Dynarr_atp (title_string_emchar_dynarr, 0), + Dynarr_length (title_string_emchar_dynarr), 0); +} + void update_frame_title (struct frame *f) { @@ -2990,8 +3025,8 @@ update_frame_title (struct frame *f) if (HAS_FRAMEMETH_P (f, set_title_from_bufbyte)) { - title = generate_formatted_string (w, title_format, Qnil, - DEFAULT_INDEX, CURRENT_DISP); + title = generate_title_string (w, title_format, + DEFAULT_INDEX, CURRENT_DISP); FRAMEMETH (f, set_title_from_bufbyte, (f, title)); } @@ -3002,8 +3037,8 @@ update_frame_title (struct frame *f) if (title) xfree (title); - title = generate_formatted_string (w, icon_format, Qnil, - DEFAULT_INDEX, CURRENT_DISP); + title = generate_title_string (w, icon_format, + DEFAULT_INDEX, CURRENT_DISP); } FRAMEMETH (f, set_icon_name_from_bufbyte, (f, title)); } @@ -3062,6 +3097,24 @@ icon_glyph_changed (Lisp_Object glyph, Lisp_Object property, } +/***************************************************************************/ +/* */ +/* initialization */ +/* */ +/***************************************************************************/ + +void +init_frame (void) +{ +#ifndef PDUMP + if (!initialized) +#endif + { + title_string_emchar_dynarr = Dynarr_new (Emchar); + xzero (title_string_display_line); + } +} + void syms_of_frame (void) { diff --git a/src/frame.h b/src/frame.h index bba3195..c8ec325 100644 --- a/src/frame.h +++ b/src/frame.h @@ -777,4 +777,6 @@ int is_surrogate_for_selected_frame (struct frame *f); void update_frame_icon (struct frame *f); void invalidate_vertical_divider_cache_in_frame (struct frame *f); +void init_frame (void); + #endif /* _XEMACS_FRAME_H_ */ diff --git a/src/glyphs-eimage.c b/src/glyphs-eimage.c index 4005413..0cb977a 100644 --- a/src/glyphs-eimage.c +++ b/src/glyphs-eimage.c @@ -663,7 +663,7 @@ gif_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, height = unwind.giffile->SHeight; width = unwind.giffile->SWidth; - unwind.eimage = (unsigned char*) + unwind.eimage = (unsigned char*) xmalloc (width * height * 3 * unwind.giffile->ImageCount); if (!unwind.eimage) signal_image_error("Unable to allocate enough memory for image", instantiator); @@ -695,7 +695,7 @@ gif_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, eip = unwind.eimage + (width * height * 3 * slice) + (row * width * 3); for (j = 0; j < width; j++) { - unsigned char pixel = + unsigned char pixel = unwind.giffile->SavedImages[slice].RasterBits[(i * width) + j]; *eip++ = cmo->Colors[pixel].Red; *eip++ = cmo->Colors[pixel].Green; @@ -727,7 +727,7 @@ gif_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, unwind.giffile->SavedImages[0].ExtensionBlockCount) { timeout = (unsigned short) - ((unwind.giffile->SavedImages[0].ExtensionBlocks[0].Bytes[2] << 8) + + ((unwind.giffile->SavedImages[0].ExtensionBlocks[0].Bytes[2] << 8) + unwind.giffile-> SavedImages[0].ExtensionBlocks[0].Bytes[1]) * 10; } @@ -737,7 +737,7 @@ gif_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, if (!NILP (tid)) IMAGE_INSTANCE_PIXMAP_TIMEOUT (ii) = XINT (tid); } - + unbind_to (speccount, Qnil); } @@ -1155,7 +1155,7 @@ tiff_memory_size(thandle_t data) struct tiff_error_struct { -#if HAVE_VSNPRINTF +#ifdef HAVE_VSNPRINTF char err_str[256]; #else char err_str[1024]; /* return the error string */ @@ -1175,7 +1175,7 @@ tiff_error_func(CONST char *module, CONST char *fmt, ...) va_list vargs; va_start (vargs, fmt); -#if HAVE_VSNPRINTF +#ifdef HAVE_VSNPRINTF vsnprintf (tiff_err_data.err_str, 255, fmt, vargs); #else /* pray this doesn't overflow... */ @@ -1190,14 +1190,14 @@ static void tiff_warning_func(CONST char *module, CONST char *fmt, ...) { va_list vargs; -#if HAVE_VSNPRINTF +#ifdef HAVE_VSNPRINTF char warn_str[256]; #else char warn_str[1024]; #endif va_start (vargs, fmt); -#if HAVE_VSNPRINTF +#ifdef HAVE_VSNPRINTF vsnprintf (warn_str, 255, fmt, vargs); #else vsprintf (warn_str, fmt, vargs); diff --git a/src/glyphs-msw.c b/src/glyphs-msw.c index 00506b5..cbe62a1 100644 --- a/src/glyphs-msw.c +++ b/src/glyphs-msw.c @@ -1,5 +1,5 @@ /* mswindows-specific glyph objects. - Copyright (C) 1998, 1999 Andy Piper. + Copyright (C) 1998, 1999, 2000 Andy Piper. This file is part of XEmacs. @@ -439,18 +439,18 @@ static void set_mono_pixel ( unsigned char* bits, int bpline, int height, int x, int y, int white ) { - int index; + int i; unsigned char bitnum; /* Find the byte on which this scanline begins */ - index = (height - y - 1) * bpline; + i = (height - y - 1) * bpline; /* Find the byte containing this pixel */ - index += (x >> 3); + i += (x >> 3); /* Which bit is it? */ bitnum = (unsigned char)( 7 - (x % 8) ); if( white ) /* Turn it on */ - bits[index] |= (1<style; + /* #### consider using the default face for radio and toggle + buttons. */ if (EQ (style, Qradio)) { flags |= BS_RADIOBUTTON; @@ -2447,11 +2439,13 @@ mswindows_button_instantiate (Lisp_Object image_instance, Lisp_Object instantiat flags |= BS_AUTOCHECKBOX; } else - flags |= BS_DEFPUSHBUTTON; + { + flags |= BS_DEFPUSHBUTTON; + } mswindows_widget_instantiate (image_instance, instantiator, pointer_fg, - pointer_bg, dest_mask, domain, "BUTTON", flags, - WS_EX_CONTROLPARENT); + pointer_bg, dest_mask, domain, "BUTTON", + flags, 0); wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii); /* set the checked state */ @@ -2465,9 +2459,9 @@ mswindows_button_instantiate (Lisp_Object image_instance, Lisp_Object instantiat SendMessage (wnd, BM_SETIMAGE, (WPARAM) (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ? IMAGE_BITMAP : IMAGE_ICON), - (LPARAM) (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ? - XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) : - XIMAGE_INSTANCE_MSWINDOWS_ICON (glyph))); + (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ? + (LPARAM) XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) : + (LPARAM) XIMAGE_INSTANCE_MSWINDOWS_ICON (glyph))); } } @@ -2480,8 +2474,7 @@ mswindows_edit_field_instantiate (Lisp_Object image_instance, Lisp_Object instan mswindows_widget_instantiate (image_instance, instantiator, pointer_fg, pointer_bg, dest_mask, domain, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP - | WS_BORDER, - WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT); + | WS_BORDER, WS_EX_CLIENTEDGE); } /* instantiate a progress gauge */ @@ -2494,8 +2487,7 @@ mswindows_progress_gauge_instantiate (Lisp_Object image_instance, Lisp_Object in struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); mswindows_widget_instantiate (image_instance, instantiator, pointer_fg, pointer_bg, dest_mask, domain, PROGRESS_CLASS, - WS_TABSTOP | WS_BORDER | PBS_SMOOTH, - WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT); + WS_BORDER | PBS_SMOOTH, WS_EX_CLIENTEDGE); wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii); /* set the colors */ #ifdef PBS_SETBKCOLOR @@ -2579,7 +2571,7 @@ mswindows_tree_view_instantiate (Lisp_Object image_instance, Lisp_Object instant pointer_bg, dest_mask, domain, WC_TREEVIEW, WS_TABSTOP | WS_BORDER | PBS_SMOOTH | TVS_HASLINES | TVS_HASBUTTONS, - WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT); + WS_EX_CLIENTEDGE); wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii); @@ -2602,7 +2594,7 @@ mswindows_tree_view_instantiate (Lisp_Object image_instance, Lisp_Object instant /* instantiate a tab control */ static TC_ITEM* add_tab_item (Lisp_Object image_instance, HWND wnd, Lisp_Object item, - Lisp_Object domain, int index) + Lisp_Object domain, int i) { TC_ITEM tvitem, *ret; @@ -2624,7 +2616,7 @@ static TC_ITEM* add_tab_item (Lisp_Object image_instance, tvitem.cchTextMax = strlen (tvitem.pszText); if ((ret = (TC_ITEM*)SendMessage (wnd, TCM_INSERTITEM, - index, (LPARAM)&tvitem)) < 0) + i, (LPARAM)&tvitem)) < 0) signal_simple_error ("error adding tab entry", item); return ret; @@ -2637,20 +2629,31 @@ mswindows_tab_control_instantiate (Lisp_Object image_instance, Lisp_Object insta { Lisp_Object rest; HWND wnd; - int index = 0; + int i = 0; struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); + Lisp_Object orient = find_keyword_in_vector (instantiator, Q_orientation); + unsigned int flags = WS_TABSTOP; + + if (EQ (orient, Qleft) || EQ (orient, Qright)) + { + flags |= TCS_VERTICAL | TCS_MULTILINE; + } + if (EQ (orient, Qright) || EQ (orient, Qbottom)) + { + flags |= TCS_BOTTOM; + } + mswindows_widget_instantiate (image_instance, instantiator, pointer_fg, pointer_bg, dest_mask, domain, WC_TABCONTROL, /* borders don't suit tabs so well */ - WS_TABSTOP, - WS_EX_CONTROLPARENT); + flags, 0); wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii); /* add items to the tab */ LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii))) { - add_tab_item (image_instance, wnd, XCAR (rest), domain, index); - index++; + add_tab_item (image_instance, wnd, XCAR (rest), domain, i); + i++; } } @@ -2664,7 +2667,7 @@ mswindows_tab_control_set_property (Lisp_Object image_instance, Lisp_Object prop if (EQ (prop, Q_items)) { HWND wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii); - int index = 0; + int i = 0; Lisp_Object rest; check_valid_item_list_1 (val); @@ -2679,8 +2682,8 @@ mswindows_tab_control_set_property (Lisp_Object image_instance, Lisp_Object prop LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii))) { add_tab_item (image_instance, wnd, XCAR (rest), - IMAGE_INSTANCE_SUBWINDOW_FRAME (ii), index); - index++; + IMAGE_INSTANCE_SUBWINDOW_FRAME (ii), i); + i++; } return Qt; @@ -2707,8 +2710,7 @@ mswindows_scrollbar_instantiate (Lisp_Object image_instance, Lisp_Object instant { mswindows_widget_instantiate (image_instance, instantiator, pointer_fg, pointer_bg, dest_mask, domain, "SCROLLBAR", - 0, - WS_EX_CLIENTEDGE ); + WS_TABSTOP, WS_EX_CLIENTEDGE); } /* instantiate a combo control */ @@ -2722,8 +2724,7 @@ mswindows_combo_box_instantiate (Lisp_Object image_instance, Lisp_Object instant Lisp_Object rest; Lisp_Object data = Fplist_get (find_keyword_in_vector (instantiator, Q_properties), Q_items, Qnil); - int len; - GET_LIST_LENGTH (data, len); + int len, height; /* Maybe ought to generalise this more but it may be very windows specific. In windows the window height of a combo box is the @@ -2731,19 +2732,29 @@ mswindows_combo_box_instantiate (Lisp_Object image_instance, Lisp_Object instant before creating the window and then reset it to a single line after the window is created so that redisplay does the right thing. */ - widget_instantiate_1 (image_instance, instantiator, pointer_fg, - pointer_bg, dest_mask, domain, len + 1, 0, 0); + widget_instantiate (image_instance, instantiator, pointer_fg, + pointer_bg, dest_mask, domain); + + /* We now have everything right apart from the height. */ + default_face_font_info (domain, 0, 0, &height, 0, 0); + GET_LIST_LENGTH (data, len); + height = (height + WIDGET_BORDER_HEIGHT * 2 ) * len; + IMAGE_INSTANCE_HEIGHT (ii) = height; + + /* Now create the widget. */ mswindows_widget_instantiate (image_instance, instantiator, pointer_fg, pointer_bg, dest_mask, domain, "COMBOBOX", WS_BORDER | WS_TABSTOP | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_HASSTRINGS | WS_VSCROLL, - WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT); - /* reset the height */ - widget_text_to_pixel_conversion (domain, - IMAGE_INSTANCE_WIDGET_FACE (ii), 1, 0, - &IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii), 0); + WS_EX_CLIENTEDGE); + /* Reset the height. layout will probably do this safely, but better make sure. */ + image_instance_layout (image_instance, + IMAGE_UNSPECIFIED_GEOMETRY, + IMAGE_UNSPECIFIED_GEOMETRY, + domain); + wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii); /* add items to the combo box */ SendMessage (wnd, CB_RESETCONTENT, 0, 0); @@ -2823,7 +2834,8 @@ mswindows_widget_set_property (Lisp_Object image_instance, Lisp_Object prop, GET_C_STRING_OS_DATA_ALLOCA (val, lparam); SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii), WM_SETTEXT, 0, (LPARAM)lparam); - return Qt; + /* We don't return Qt here so that other widget methods can be + called afterwards. */ } return Qunbound; } @@ -2846,10 +2858,10 @@ mswindows_progress_gauge_set_property (Lisp_Object image_instance, Lisp_Object p } LRESULT WINAPI -mswindows_control_wnd_proc (HWND hwnd, UINT message, +mswindows_control_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - switch (message) + switch (msg) { case WM_NOTIFY: case WM_COMMAND: @@ -2859,9 +2871,9 @@ mswindows_control_wnd_proc (HWND hwnd, UINT message, case WM_CTLCOLORSTATIC: case WM_CTLCOLORSCROLLBAR: - return mswindows_wnd_proc (GetParent (hwnd), message, wParam, lParam); + return mswindows_wnd_proc (GetParent (hwnd), msg, wParam, lParam); default: - return DefWindowProc (hwnd, message, wParam, lParam); + return DefWindowProc (hwnd, msg, wParam, lParam); } } diff --git a/src/glyphs-widget.c b/src/glyphs-widget.c index eb399c1..2d6ed8c 100644 --- a/src/glyphs-widget.c +++ b/src/glyphs-widget.c @@ -1,5 +1,5 @@ /* Widget-specific glyph objects. - Copyright (C) 1998, 1999 Andy Piper. + Copyright (C) 1998, 1999, 2000 Andy Piper. This file is part of XEmacs. @@ -60,50 +60,20 @@ Lisp_Object Q_descriptor, Q_height, Q_width, Q_properties, Q_items; Lisp_Object Q_image, Q_text, Q_percent, Q_orientation, Q_justify, Q_border; Lisp_Object Qetched_in, Qetched_out, Qbevel_in, Qbevel_out; -#define WIDGET_BORDER_HEIGHT 4 -#define WIDGET_BORDER_WIDTH 4 - #ifdef DEBUG_WIDGETS int debug_widget_instances; #endif /* TODO: - more complex controls. - - tooltips for controls. + - tooltips for controls, especially buttons. */ -/* In windows normal windows work in pixels, dialog boxes work in +/* In MS-Windows normal windows work in pixels, dialog boxes work in dialog box units. Why? sigh. We could reuse the metrics for dialogs if this were not the case. As it is we have to position things pixel wise. I'm not even sure that X has this problem at least for buttons in groups. */ -Lisp_Object -widget_face_font_info (Lisp_Object domain, Lisp_Object face, - int *height, int *width) -{ - Lisp_Object font_instance = FACE_FONT (face, domain, Vcharset_ascii); - - if (height) - *height = XFONT_INSTANCE (font_instance)->height; - if (width) - *width = XFONT_INSTANCE (font_instance)->width; - - return font_instance; -} - -void -widget_text_to_pixel_conversion (Lisp_Object domain, Lisp_Object face, - int th, int tw, - int* height, int* width) -{ - int ch=0, cw=0; - widget_face_font_info (domain, face, &ch, &cw); - if (height) - *height = th * ch + 2 * WIDGET_BORDER_HEIGHT; - if (width) - *width = tw * cw + 2 * WIDGET_BORDER_WIDTH; -} - static int widget_possible_dest_types (void) { @@ -133,6 +103,19 @@ check_valid_orientation (Lisp_Object data) } static void +check_valid_tab_orientation (Lisp_Object data) +{ + if (!EQ (data, Qtop) + && + !EQ (data, Qbottom) + && + !EQ (data, Qleft) + && + !EQ (data, Qright)) + signal_simple_error ("unknown orientation for tab control", data); +} + +static void check_valid_justification (Lisp_Object data) { if (!EQ (data, Qleft) && !EQ (data, Qright) && !EQ (data, Qcenter)) @@ -259,17 +242,17 @@ substitute_keyword_value (Lisp_Object inst, Lisp_Object key, Lisp_Object val) } } -/* wire widget property invocations to specific widgets ... The - problem we are solving here is that when instantiators get converted - to instances they lose some type information (they just become - subwindows or widgets for example). For widgets we need to preserve - this type information so that we can do widget specific operations on - the instances. This is encoded in the widget type - field. widget_property gets invoked by decoding the primary type - (Qwidget), widget property then invokes based on the secondary type - (Qedit_field for example). It is debatable that we should wire things in this - generalised way rather than treating widgets specially in - image_instance_property. */ +/* Wire widget property invocations to specific widgets. The problem + we are solving here is that when instantiators get converted to + instances they lose some type information (they just become + subwindows or widgets for example). For widgets we need to preserve + this type information so that we can do widget specific operations + on the instances. This is encoded in the widget type + field. widget_property gets invoked by decoding the primary type + (Qwidget), _property then invokes based on the secondary + type (Qedit_field for example). It is debatable whether we should + wire things in this generalised way rather than treating widgets + specially in image_instance_property. */ static Lisp_Object widget_property (Lisp_Object image_instance, Lisp_Object prop) { @@ -302,7 +285,14 @@ widget_set_property (Lisp_Object image_instance, Lisp_Object prop, Lisp_Object v struct image_instantiator_methods* meths; Lisp_Object ret; - /* try device specific methods first ... */ + /* PIck up any generic properties that we might need to keep hold + of. */ + if (EQ (prop, Q_text)) + { + IMAGE_INSTANCE_WIDGET_TEXT (ii) = val; + } + + /* Now try device specific methods first ... */ meths = decode_device_ii_format (IMAGE_INSTANCE_DEVICE (ii), IMAGE_INSTANCE_WIDGET_TYPE (ii), ERROR_ME_NOT); @@ -329,6 +319,85 @@ widget_set_property (Lisp_Object image_instance, Lisp_Object prop, Lisp_Object v return val; } +/* Query for a widgets desired geometry. If no type specific method is + provided then use the widget text to calculate sizes. */ +static void +widget_query_geometry (Lisp_Object image_instance, + unsigned int* width, unsigned int* height, + enum image_instance_geometry disp, Lisp_Object domain) +{ + struct Lisp_Image_Instance* ii = XIMAGE_INSTANCE (image_instance); + struct image_instantiator_methods* meths; + + /* First just set up what we already have. */ + if (width) *width = IMAGE_INSTANCE_WIDTH (ii); + if (height) *height = IMAGE_INSTANCE_HEIGHT (ii); + + if (IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii) + || + IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii)) + { + /* .. then try device specific methods ... */ + meths = decode_device_ii_format (IMAGE_INSTANCE_DEVICE (ii), + IMAGE_INSTANCE_WIDGET_TYPE (ii), + ERROR_ME_NOT); + if (meths && HAS_IIFORMAT_METH_P (meths, query_geometry)) + IIFORMAT_METH (meths, query_geometry, (image_instance, + width, height, disp, + domain)); + else + { + /* ... then format specific methods ... */ + meths = decode_device_ii_format (Qnil, IMAGE_INSTANCE_WIDGET_TYPE (ii), + ERROR_ME_NOT); + if (meths && HAS_IIFORMAT_METH_P (meths, query_geometry)) + IIFORMAT_METH (meths, query_geometry, (image_instance, + width, height, disp, + domain)); + else + { + unsigned int w, h; + + /* Then if we are allowed to resize the widget, make the + size the same as the text dimensions. */ + query_string_geometry (IMAGE_INSTANCE_WIDGET_TEXT (ii), + IMAGE_INSTANCE_WIDGET_FACE (ii), + &w, &h, 0, domain); + /* Adjust the size for borders. */ + if (IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii)) + *width = w + 2 * WIDGET_BORDER_WIDTH; + if (IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii)) + *height = h + 2 * WIDGET_BORDER_HEIGHT; + } + } + } +} + +static void +widget_layout (Lisp_Object image_instance, + unsigned int width, unsigned int height, Lisp_Object domain) +{ + struct Lisp_Image_Instance* ii = XIMAGE_INSTANCE (image_instance); + struct image_instantiator_methods* meths; + + /* .. then try device specific methods ... */ + meths = decode_device_ii_format (IMAGE_INSTANCE_DEVICE (ii), + IMAGE_INSTANCE_WIDGET_TYPE (ii), + ERROR_ME_NOT); + if (meths && HAS_IIFORMAT_METH_P (meths, layout)) + IIFORMAT_METH (meths, layout, (image_instance, + width, height, domain)); + else + { + /* ... then format specific methods ... */ + meths = decode_device_ii_format (Qnil, IMAGE_INSTANCE_WIDGET_TYPE (ii), + ERROR_ME_NOT); + if (meths && HAS_IIFORMAT_METH_P (meths, layout)) + IIFORMAT_METH (meths, layout, (image_instance, + width, height, domain)); + } +} + static void widget_validate (Lisp_Object instantiator) { @@ -381,8 +450,12 @@ initialize_widget_image_instance (struct Lisp_Image_Instance *ii, Lisp_Object ty /* initialize_subwindow_image_instance (ii);*/ IMAGE_INSTANCE_WIDGET_TYPE (ii) = type; IMAGE_INSTANCE_WIDGET_PROPS (ii) = Qnil; - IMAGE_INSTANCE_WIDGET_FACE (ii) = Vwidget_face; + SET_IMAGE_INSTANCE_WIDGET_FACE (ii, Qnil); IMAGE_INSTANCE_WIDGET_ITEMS (ii) = allocate_gui_item (); + IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii) = 1; + IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii) = 1; + IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) = 0; + IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (ii) = 0; } /* Instantiate a button widget. Unfortunately instantiated widgets are @@ -392,10 +465,9 @@ initialize_widget_image_instance (struct Lisp_Image_Instance *ii, Lisp_Object ty many-to-one relationship with things you see, whereas widgets can only be one-to-one (i.e. per frame) */ void -widget_instantiate_1 (Lisp_Object image_instance, Lisp_Object instantiator, - Lisp_Object pointer_fg, Lisp_Object pointer_bg, - int dest_mask, Lisp_Object domain, int default_textheight, - int default_pixheight, int default_textwidth) +widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, + Lisp_Object pointer_fg, Lisp_Object pointer_bg, + int dest_mask, Lisp_Object domain) { struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); Lisp_Object face = find_keyword_in_vector (instantiator, Q_face); @@ -406,6 +478,7 @@ widget_instantiate_1 (Lisp_Object image_instance, Lisp_Object instantiator, Lisp_Object desc = find_keyword_in_vector (instantiator, Q_descriptor); Lisp_Object glyph = find_keyword_in_vector (instantiator, Q_image); Lisp_Object props = find_keyword_in_vector (instantiator, Q_properties); + Lisp_Object orient = find_keyword_in_vector (instantiator, Q_orientation); int pw=0, ph=0, tw=0, th=0; /* this just does pixel type sizing */ @@ -419,11 +492,15 @@ widget_instantiate_1 (Lisp_Object image_instance, Lisp_Object instantiator, /* retrieve the fg and bg colors */ if (!NILP (face)) - IMAGE_INSTANCE_WIDGET_FACE (ii) = Fget_face (face); + SET_IMAGE_INSTANCE_WIDGET_FACE (ii, Fget_face (face)); /* data items for some widgets */ IMAGE_INSTANCE_WIDGET_PROPS (ii) = props; + /* Pick up the orientation before we do our first layout. */ + if (EQ (orient, Qleft) || EQ (orient, Qright) || EQ (orient, Qvertical)) + IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) = 1; + /* retrieve the gui item information. This is easy if we have been provided with a vector, more difficult if we have just been given keywords */ @@ -448,53 +525,73 @@ widget_instantiate_1 (Lisp_Object image_instance, Lisp_Object instantiator, parse_gui_item_tree_children (items)); } - /* normalize size information */ - if (!NILP (width)) - tw = XINT (width); - if (!NILP (height)) - th = XINT (height); - if (!NILP (pixwidth)) - pw = XINT (pixwidth); - if (!NILP (pixheight)) - ph = XINT (pixheight); + /* Normalize size information. We now only assign sizes if the user + gives us some explicitly, or there are some constraints that we + can't change later on. Otherwise we postpone sizing until query + geometry gets called. */ + if (!NILP (pixwidth)) /* pixwidth takes precendent */ + { + pw = XINT (pixwidth); + IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii) = 0; + } + else if (!NILP (width)) + { + tw = XINT (width); + IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii) = 0; + } - /* for a widget with an image pick up the dimensions from that */ - if (!NILP (glyph)) + if (!NILP (pixheight)) + { + ph = XINT (pixheight); + IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii) = 0; + } + else if (!NILP (height) && XINT (height) > 1) { - if (!pw && !tw) - pw = glyph_width (glyph, Qnil, DEFAULT_INDEX, domain) - + 2 * WIDGET_BORDER_WIDTH; - if (!ph && !th) - ph = glyph_height (glyph, Qnil, DEFAULT_INDEX, domain) - + 2 * WIDGET_BORDER_HEIGHT; + th = XINT (height); + IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii) = 0; } - /* if we still don' t have sizes, guess from text size */ - if (!tw && !pw) + /* Taking the default face information when the user has specified + size in characters is probably as good as any since the widget + face is more likely to be proportional and thus give inadequate + results. Using character sizes can only ever be approximate + anyway. */ + if (tw || th) { - if (default_textwidth) - tw = default_textwidth; - else if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii))) - tw = XSTRING_LENGTH (IMAGE_INSTANCE_WIDGET_TEXT (ii)); + int charwidth, charheight; + default_face_font_info (domain, 0, 0, &charheight, &charwidth, 0); + if (tw) + pw = charwidth * tw; + if (th) + ph = charheight * th; } - if (!th && !ph) + /* for a widget with an image pick up the dimensions from that */ + if (!NILP (glyph)) { - if (default_textheight) - th = default_textheight; - else if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii))) - th = 1; - else - ph = default_pixheight; + if (!pw) + pw = glyph_width (glyph, domain) + 2 * WIDGET_BORDER_WIDTH; + if (!ph) + ph = glyph_height (glyph, domain) + 2 * WIDGET_BORDER_HEIGHT; + IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii) = 0; + IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii) = 0; } - - if (tw !=0 || th !=0) - widget_text_to_pixel_conversion (domain, - IMAGE_INSTANCE_WIDGET_FACE (ii), - th, tw, th ? &ph : 0, tw ? &pw : 0); - IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii) = pw; - IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii) = ph; + /* have to set the type this late in case there is no device + instantiation for a widget */ + IMAGE_INSTANCE_TYPE (ii) = IMAGE_WIDGET; + + /* When we create the widgets the window system expects a valid + size, so If we still don' t have sizes, call layout to pick them + up. If query_geometry or layout relies on the widget being in + existence then we are in catch 22. */ + image_instance_layout (image_instance, + pw ? pw : IMAGE_UNSPECIFIED_GEOMETRY, + ph ? ph : IMAGE_UNSPECIFIED_GEOMETRY, + domain); + /* Layout has already been done so we don't need to re-layout. */ + IMAGE_INSTANCE_DIRTYP (ii) = 0; + #ifdef DEBUG_WIDGETS debug_widget_instances++; stderr_out ("instantiated "); @@ -503,63 +600,67 @@ widget_instantiate_1 (Lisp_Object image_instance, Lisp_Object instantiator, #endif } +/* tree-view geometry - get the height right */ static void -widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, - Lisp_Object pointer_fg, Lisp_Object pointer_bg, - int dest_mask, Lisp_Object domain) +tree_view_query_geometry (Lisp_Object image_instance, + unsigned int* width, unsigned int* height, + enum image_instance_geometry disp, Lisp_Object domain) { - widget_instantiate_1 (image_instance, instantiator, pointer_fg, - pointer_bg, dest_mask, domain, 1, 0, 0); -} + struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); + Lisp_Object items = IMAGE_INSTANCE_WIDGET_ITEMS (ii); -/* tree-view generic instantiation - get the height right */ -static void -tree_view_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, - Lisp_Object pointer_fg, Lisp_Object pointer_bg, - int dest_mask, Lisp_Object domain) -{ - Lisp_Object data = Fplist_get (find_keyword_in_vector (instantiator, Q_properties), - Q_items, Qnil); - int len; - GET_LIST_LENGTH (data, len); - widget_instantiate_1 (image_instance, instantiator, pointer_fg, - pointer_bg, dest_mask, domain, len + 1, 0, 0); + + if (*width) + { + /* #### what should this be. reconsider when X has tree views. */ + query_string_geometry (IMAGE_INSTANCE_WIDGET_TEXT (ii), + IMAGE_INSTANCE_WIDGET_FACE (ii), + width, 0, 0, domain); + } + if (*height) + { + int len, h; + default_face_font_info (domain, 0, 0, &h, 0, 0); + GET_LIST_LENGTH (items, len); + *height = len * h; + } } +/* Get the geometry of a tab control. This is based on the number of + items and text therin in the tab control. */ static void -tab_control_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, - Lisp_Object pointer_fg, Lisp_Object pointer_bg, - int dest_mask, Lisp_Object domain) +tab_control_query_geometry (Lisp_Object image_instance, + unsigned int* width, unsigned int* height, + enum image_instance_geometry disp, Lisp_Object domain) { - Lisp_Object data = Fplist_get (find_keyword_in_vector (instantiator, Q_properties), - Q_items, Qnil); + struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); + Lisp_Object items = IMAGE_INSTANCE_WIDGET_ITEMS (ii); Lisp_Object rest; - int len = 0; + unsigned int tw = 0, th = 0; - LIST_LOOP (rest, data) + LIST_LOOP (rest, items) { - len += 3; /* some bias */ - if (STRINGP (XCAR (rest))) - len += XSTRING_LENGTH (XCAR (rest)); - else if (VECTORP (XCAR (rest))) - { - Lisp_Object gui = gui_parse_item_keywords (XCAR (rest)); - len += XSTRING_LENGTH (XGUI_ITEM (gui)->name); - } + unsigned int h, w; + + query_string_geometry (XGUI_ITEM (XCAR (rest))->name, + IMAGE_INSTANCE_WIDGET_FACE (ii), + &w, &h, 0, domain); + tw += 2 * WIDGET_BORDER_WIDTH; /* some bias */ + tw += w; + th = max (th, h + 2 * WIDGET_BORDER_HEIGHT); } - widget_instantiate_1 (image_instance, instantiator, pointer_fg, - pointer_bg, dest_mask, domain, 0, 0, len); -} - -/* Instantiate a static control */ -static void -static_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, - Lisp_Object pointer_fg, Lisp_Object pointer_bg, - int dest_mask, Lisp_Object domain) -{ - widget_instantiate_1 (image_instance, instantiator, pointer_fg, - pointer_bg, dest_mask, domain, 0, 4, 0); + /* Fixup returned values depending on orientation. */ + if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii)) + { + if (height) *height = tw; + if (width) *width = th; + } + else + { + if (height) *height = th; + if (width) *width = tw; + } } @@ -689,8 +790,8 @@ layout_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, LIST_LOOP (rest, items) { Lisp_Object glyph = XCAR (rest); - int gheight = glyph_height (glyph, Qnil, DEFAULT_INDEX, domain); - int gwidth = glyph_width (glyph, Qnil, DEFAULT_INDEX, domain); + int gheight = glyph_height (glyph, domain); + int gwidth = glyph_width (glyph, domain); nitems ++; if (EQ (orient, Qhorizontal)) { @@ -738,7 +839,7 @@ layout_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, XIMAGE_INSTANCE_XOFFSET (bglyph) = 10; /* Really, what should this be? */ XIMAGE_INSTANCE_YOFFSET (bglyph) = 0; - ph_adjust = (glyph_height (border, Qnil, DEFAULT_INDEX, domain) / 2); + ph_adjust = (glyph_height (border, domain) / 2); IMAGE_INSTANCE_LAYOUT_BORDER (ii) = make_int (ph_adjust); } @@ -768,8 +869,8 @@ layout_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, /* make sure the image is instantiated */ Lisp_Object glyph = XCAR (rest); Lisp_Object gii = glyph_image_instance (glyph, domain, ERROR_ME, 1); - int gwidth = glyph_width (glyph, Qnil, DEFAULT_INDEX, domain); - int gheight = glyph_height (glyph, Qnil, DEFAULT_INDEX, domain); + int gwidth = glyph_width (glyph, domain); + int gheight = glyph_height (glyph, domain); children = Fcons (gii, children); @@ -862,6 +963,8 @@ image_instantiator_format_create_glyphs_widget (void) INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM (widget, "widget"); IIFORMAT_HAS_METHOD (widget, property); IIFORMAT_HAS_METHOD (widget, set_property); + IIFORMAT_HAS_METHOD (widget, query_geometry); + IIFORMAT_HAS_METHOD (widget, layout); /* widget image-instantiator types - buttons */ INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (button, "button"); @@ -917,7 +1020,8 @@ image_instantiator_format_create_glyphs_widget (void) INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (tree_view, "tree-view"); IIFORMAT_HAS_SHARED_METHOD (tree_view, validate, combo_box); IIFORMAT_HAS_SHARED_METHOD (tree_view, possible_dest_types, widget); - IIFORMAT_HAS_METHOD (tree_view, instantiate); + IIFORMAT_HAS_SHARED_METHOD (tree_view, instantiate, widget); + IIFORMAT_HAS_METHOD (tree_view, query_geometry); VALID_WIDGET_KEYWORDS (tree_view); VALID_GUI_KEYWORDS (tree_view); IIFORMAT_VALID_KEYWORD (tree_view, Q_properties, check_valid_item_list); @@ -926,15 +1030,17 @@ image_instantiator_format_create_glyphs_widget (void) INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (tab_control, "tab-control"); IIFORMAT_HAS_SHARED_METHOD (tab_control, validate, combo_box); IIFORMAT_HAS_SHARED_METHOD (tab_control, possible_dest_types, widget); - IIFORMAT_HAS_METHOD (tab_control, instantiate); + IIFORMAT_HAS_SHARED_METHOD (tab_control, instantiate, widget); + IIFORMAT_HAS_METHOD (tab_control, query_geometry); VALID_WIDGET_KEYWORDS (tab_control); VALID_GUI_KEYWORDS (tab_control); + IIFORMAT_VALID_KEYWORD (tab_control, Q_orientation, check_valid_tab_orientation); IIFORMAT_VALID_KEYWORD (tab_control, Q_properties, check_valid_item_list); /* labels */ INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (label, "label"); IIFORMAT_HAS_SHARED_METHOD (label, possible_dest_types, widget); - IIFORMAT_HAS_SHARED_METHOD (label, instantiate, static); + IIFORMAT_HAS_SHARED_METHOD (label, instantiate, widget); VALID_WIDGET_KEYWORDS (label); IIFORMAT_VALID_KEYWORD (label, Q_descriptor, check_valid_string); diff --git a/src/glyphs-x.c b/src/glyphs-x.c index b162822..d2dc9df 100644 --- a/src/glyphs-x.c +++ b/src/glyphs-x.c @@ -4,7 +4,7 @@ Copyright (C) 1995 Tinker Systems Copyright (C) 1995, 1996 Ben Wing Copyright (C) 1995 Sun Microsystems - Copyright (C) 1999 Andy Piper + Copyright (C) 1999, 2000 Andy Piper This file is part of XEmacs. @@ -104,13 +104,13 @@ DECLARE_IMAGE_INSTANTIATOR_FORMAT (jpeg); #endif #ifdef HAVE_TIFF DECLARE_IMAGE_INSTANTIATOR_FORMAT (tiff); -#endif +#endif #ifdef HAVE_PNG DECLARE_IMAGE_INSTANTIATOR_FORMAT (png); -#endif +#endif #ifdef HAVE_GIF DECLARE_IMAGE_INSTANTIATOR_FORMAT (gif); -#endif +#endif #ifdef HAVE_XPM DEFINE_DEVICE_IIFORMAT (x, xpm); #endif @@ -427,7 +427,7 @@ x_finalize_image_instance (struct Lisp_Image_Instance *p) IMAGE_INSTANCE_X_MASK (p) != IMAGE_INSTANCE_X_PIXMAP (p)) XFreePixmap (dpy, IMAGE_INSTANCE_X_MASK (p)); IMAGE_INSTANCE_PIXMAP_MASK (p) = 0; - + if (IMAGE_INSTANCE_X_PIXMAP_SLICES (p)) { for (i = 0; i < IMAGE_INSTANCE_PIXMAP_MAXSLICE (p); i++) @@ -445,7 +445,7 @@ x_finalize_image_instance (struct Lisp_Image_Instance *p) XFreeCursor (dpy, IMAGE_INSTANCE_X_CURSOR (p)); IMAGE_INSTANCE_X_CURSOR (p) = 0; } - + if (IMAGE_INSTANCE_X_NPIXELS (p) != 0) { XFreeColors (dpy, @@ -519,7 +519,7 @@ x_initialize_pixmap_image_instance (struct Lisp_Image_Instance *ii, { ii->data = xnew_and_zero (struct x_image_instance_data); IMAGE_INSTANCE_PIXMAP_MAXSLICE (ii) = slices; - IMAGE_INSTANCE_X_PIXMAP_SLICES (ii) = + IMAGE_INSTANCE_X_PIXMAP_SLICES (ii) = xnew_array_and_zero (Pixmap, slices); IMAGE_INSTANCE_TYPE (ii) = type; IMAGE_INSTANCE_PIXMAP_FILENAME (ii) = Qnil; @@ -945,7 +945,7 @@ x_init_image_instance_from_eimage (struct Lisp_Image_Instance *ii, for (slice = 0; slice < slices; slice++) { - ximage = convert_EImage_to_XImage (device, width, height, + ximage = convert_EImage_to_XImage (device, width, height, eimage + (width * height * 3 * slice), &pixtbl, &npixels); if (!ximage) @@ -1288,8 +1288,8 @@ xpm_free (XpmAttributes *xpmattrs) static void x_xpm_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, - Lisp_Object pointer_fg, Lisp_Object pointer_bg, - int dest_mask, Lisp_Object domain) + Lisp_Object pointer_fg, Lisp_Object pointer_bg, + int dest_mask, Lisp_Object domain) { /* This function can GC */ struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); @@ -1729,7 +1729,7 @@ autodetect_validate (Lisp_Object instantiator) static Lisp_Object autodetect_normalize (Lisp_Object instantiator, - Lisp_Object console_type) + Lisp_Object console_type) { Lisp_Object file = find_keyword_in_vector (instantiator, Q_data); Lisp_Object filename = Qnil; @@ -1820,10 +1820,10 @@ autodetect_possible_dest_types (void) static void autodetect_instantiate (Lisp_Object image_instance, - Lisp_Object instantiator, - Lisp_Object pointer_fg, - Lisp_Object pointer_bg, - int dest_mask, Lisp_Object domain) + Lisp_Object instantiator, + Lisp_Object pointer_fg, + Lisp_Object pointer_bg, + int dest_mask, Lisp_Object domain) { Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); struct gcpro gcpro1, gcpro2, gcpro3; @@ -2113,8 +2113,8 @@ x_unmap_subwindow (struct Lisp_Image_Instance *p) { if (IMAGE_INSTANCE_TYPE (p) == IMAGE_SUBWINDOW) { - XUnmapWindow - (IMAGE_INSTANCE_X_SUBWINDOW_DISPLAY (p), + XUnmapWindow + (IMAGE_INSTANCE_X_SUBWINDOW_DISPLAY (p), IMAGE_INSTANCE_X_CLIPWINDOW (p)); } else /* must be a widget */ @@ -2133,7 +2133,7 @@ x_map_subwindow (struct Lisp_Image_Instance *p, int x, int y, { Window subwindow = IMAGE_INSTANCE_X_SUBWINDOW_ID (p); XMoveResizeWindow (IMAGE_INSTANCE_X_SUBWINDOW_DISPLAY (p), - IMAGE_INSTANCE_X_CLIPWINDOW (p), + IMAGE_INSTANCE_X_CLIPWINDOW (p), x, y, dga->width, dga->height); XMoveWindow (IMAGE_INSTANCE_X_SUBWINDOW_DISPLAY (p), subwindow, -dga->xoffset, -dga->yoffset); @@ -2142,7 +2142,7 @@ x_map_subwindow (struct Lisp_Image_Instance *p, int x, int y, } else /* must be a widget */ { - XtConfigureWidget (IMAGE_INSTANCE_X_CLIPWIDGET (p), + XtConfigureWidget (IMAGE_INSTANCE_X_CLIPWIDGET (p), x + IMAGE_INSTANCE_X_WIDGET_XOFFSET (p), y + IMAGE_INSTANCE_X_WIDGET_YOFFSET (p), dga->width, dga->height, 0); @@ -2160,28 +2160,23 @@ x_update_subwindow (struct Lisp_Image_Instance *p) #ifdef HAVE_WIDGETS if (IMAGE_INSTANCE_TYPE (p) == IMAGE_WIDGET) { - Arg al[5]; - widget_value* wv = gui_items_to_widget_values + widget_value* wv = gui_items_to_widget_values (IMAGE_INSTANCE_WIDGET_ITEMS (p)); /* This seems ugly, but I'm not sure what else to do. */ if (EQ (IMAGE_INSTANCE_WIDGET_TYPE (p), Qtab_control)) { - update_tab_widget_face (wv, p, + update_tab_widget_face (wv, p, IMAGE_INSTANCE_SUBWINDOW_FRAME (p)); } /* update the colors and font */ update_widget_face (wv, p, IMAGE_INSTANCE_SUBWINDOW_FRAME (p)); - + /* now modify the widget */ - lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (p), + lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (p), wv, True); free_widget_value_tree (wv); - /* We have to do this otherwise Motif will unceremoniously - resize us when the label gets set. */ - XtSetArg (al [0], XtNwidth, IMAGE_INSTANCE_WIDGET_WIDTH (p)); - XtSetArg (al [1], XtNheight, IMAGE_INSTANCE_WIDGET_HEIGHT (p)); - XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (p), al, 2); + /* subwindow resizing now gets done by the parent function. */ } #endif } @@ -2202,7 +2197,7 @@ x_subwindow_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, Window pw, win; XSetWindowAttributes xswa; Mask valueMask = 0; - unsigned int w = IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii), + unsigned int w = IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii), h = IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii); if (!DEVICE_X_P (XDEVICE (device))) @@ -2224,9 +2219,9 @@ x_subwindow_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, valueMask |= CWBackingStore; xswa.colormap = DefaultColormapOfScreen (xs); valueMask |= CWColormap; - + /* Create a window for clipping */ - IMAGE_INSTANCE_X_CLIPWINDOW (ii) = + IMAGE_INSTANCE_X_CLIPWINDOW (ii) = XCreateWindow (dpy, pw, 0, 0, w, h, 0, CopyFromParent, InputOutput, CopyFromParent, valueMask, &xswa); @@ -2236,7 +2231,7 @@ x_subwindow_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, 0, 0, w, h, 0, CopyFromParent, InputOutput, CopyFromParent, valueMask, &xswa); - + IMAGE_INSTANCE_SUBWINDOW_ID (ii) = (void*)win; } @@ -2270,7 +2265,7 @@ Subwindows are not currently implemented. } #endif -static void +static void x_resize_subwindow (struct Lisp_Image_Instance* ii, int w, int h) { if (IMAGE_INSTANCE_TYPE (ii) == IMAGE_SUBWINDOW) @@ -2310,28 +2305,34 @@ update_widget_face (widget_value* wv, struct Lisp_Image_Instance *ii, #ifdef LWLIB_WIDGETS_MOTIF XmFontList fontList; #endif - - Lisp_Object pixel = FACE_FOREGROUND + /* Update the foreground. */ + Lisp_Object pixel = FACE_FOREGROUND (IMAGE_INSTANCE_WIDGET_FACE (ii), domain); - XColor fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel)); - + XColor fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel)), bcolor; lw_add_widget_value_arg (wv, XtNforeground, fcolor.pixel); + + /* Update the background. */ + pixel = FACE_BACKGROUND (IMAGE_INSTANCE_WIDGET_FACE (ii), + domain); + bcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel)); + lw_add_widget_value_arg (wv, XtNbackground, bcolor.pixel); + #ifdef LWLIB_WIDGETS_MOTIF fontList = XmFontListCreate - (FONT_INSTANCE_X_FONT - (XFONT_INSTANCE (widget_face_font_info - (domain, + (FONT_INSTANCE_X_FONT + (XFONT_INSTANCE (query_string_font + (IMAGE_INSTANCE_WIDGET_TEXT (ii), IMAGE_INSTANCE_WIDGET_FACE (ii), - 0, 0))), XmSTRING_DEFAULT_CHARSET); + domain))), XmSTRING_DEFAULT_CHARSET); lw_add_widget_value_arg (wv, XmNfontList, (XtArgVal)fontList); #endif - lw_add_widget_value_arg - (wv, XtNfont, (XtArgVal)FONT_INSTANCE_X_FONT - (XFONT_INSTANCE (widget_face_font_info - (domain, + lw_add_widget_value_arg + (wv, XtNfont, (XtArgVal)FONT_INSTANCE_X_FONT + (XFONT_INSTANCE (query_string_font + (IMAGE_INSTANCE_WIDGET_TEXT (ii), IMAGE_INSTANCE_WIDGET_FACE (ii), - 0, 0)))); + domain)))); } static void @@ -2341,9 +2342,9 @@ update_tab_widget_face (widget_value* wv, struct Lisp_Image_Instance *ii, if (wv->contents) { widget_value* val = wv->contents, *cur; - + /* Give each child label the correct foreground color. */ - Lisp_Object pixel = FACE_FOREGROUND + Lisp_Object pixel = FACE_FOREGROUND (IMAGE_INSTANCE_WIDGET_FACE (ii), domain); XColor fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel)); @@ -2398,9 +2399,9 @@ x_widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, clip_wv = xmalloc_widget_value (); lw_add_widget_value_arg (clip_wv, XtNresize, False); - lw_add_widget_value_arg (clip_wv, XtNwidth, + lw_add_widget_value_arg (clip_wv, XtNwidth, (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii)); - lw_add_widget_value_arg (clip_wv, XtNheight, + lw_add_widget_value_arg (clip_wv, XtNheight, (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii)); clip_wv->enabled = True; @@ -2422,7 +2423,7 @@ x_widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, created so that Motif will fix up the shadow colors correctly. Once the widget is created Motif won't do this anymore...*/ - pixel = FACE_FOREGROUND + pixel = FACE_FOREGROUND (IMAGE_INSTANCE_WIDGET_FACE (ii), IMAGE_INSTANCE_SUBWINDOW_FRAME (ii)); fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel)); @@ -2436,9 +2437,9 @@ x_widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, lw_add_widget_value_arg (wv, XtNforeground, fcolor.pixel); /* we cannot allow widgets to resize themselves */ lw_add_widget_value_arg (wv, XtNresize, False); - lw_add_widget_value_arg (wv, XtNwidth, + lw_add_widget_value_arg (wv, XtNwidth, (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii)); - lw_add_widget_value_arg (wv, XtNheight, + lw_add_widget_value_arg (wv, XtNheight, (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii)); /* update the font. */ update_widget_face (wv, ii, domain); @@ -2452,9 +2453,9 @@ x_widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, /* Resize the widget here so that the values do not get copied by lwlib. */ ac = 0; - XtSetArg (al [ac], XtNwidth, + XtSetArg (al [ac], XtNwidth, (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii)); ac++; - XtSetArg (al [ac], XtNheight, + XtSetArg (al [ac], XtNheight, (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii)); ac++; XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (ii), al, ac); /* because the EmacsManager is the widgets parent we have to @@ -2485,7 +2486,6 @@ x_widget_set_property (Lisp_Object image_instance, Lisp_Object prop, GET_C_STRING_OS_DATA_ALLOCA (val, str); wv->value = str; lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (ii), wv, False); - return Qt; } /* Modify the text properties of the widget */ @@ -2494,7 +2494,6 @@ x_widget_set_property (Lisp_Object image_instance, Lisp_Object prop, widget_value* wv = lw_get_all_values (IMAGE_INSTANCE_X_WIDGET_LWID (ii)); update_widget_face (wv, ii, IMAGE_INSTANCE_SUBWINDOW_FRAME (ii)); lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (ii), wv, False); - return Qt; } return Qunbound; } @@ -2616,9 +2615,9 @@ x_edit_field_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii); widget_value* wv = xmalloc_widget_value (); - + button_item_to_widget_value (gui, wv, 1, 1); - + x_widget_instantiate (image_instance, instantiator, pointer_fg, pointer_bg, dest_mask, domain, "text-field", wv); } @@ -2634,11 +2633,11 @@ x_combo_box_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, widget_value * wv = 0; /* This is not done generically because of sizing problems under mswindows. */ - widget_instantiate_1 (image_instance, instantiator, pointer_fg, - pointer_bg, dest_mask, domain, 1, 0, 0); + widget_instantiate (image_instance, instantiator, pointer_fg, + pointer_bg, dest_mask, domain); wv = gui_items_to_widget_values (IMAGE_INSTANCE_WIDGET_ITEMS (ii)); - + x_widget_instantiate (image_instance, instantiator, pointer_fg, pointer_bg, dest_mask, domain, "combo-box", wv); } @@ -2650,10 +2649,10 @@ x_tab_control_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, int dest_mask, Lisp_Object domain) { struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); - widget_value * wv = + widget_value * wv = gui_items_to_widget_values (IMAGE_INSTANCE_WIDGET_ITEMS (ii)); - update_tab_widget_face (wv, ii, + update_tab_widget_face (wv, ii, IMAGE_INSTANCE_SUBWINDOW_FRAME (ii)); x_widget_instantiate (image_instance, instantiator, pointer_fg, @@ -2666,19 +2665,19 @@ x_tab_control_set_property (Lisp_Object image_instance, Lisp_Object prop, Lisp_Object val) { struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); - + if (EQ (prop, Q_items)) { widget_value * wv = 0; check_valid_item_list_1 (val); - IMAGE_INSTANCE_WIDGET_ITEMS (ii) = - Fcons (XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)), + IMAGE_INSTANCE_WIDGET_ITEMS (ii) = + Fcons (XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)), parse_gui_item_tree_children (val)); wv = gui_items_to_widget_values (IMAGE_INSTANCE_WIDGET_ITEMS (ii)); - - update_tab_widget_face (wv, ii, + + update_tab_widget_face (wv, ii, IMAGE_INSTANCE_SUBWINDOW_FRAME (ii)); lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (ii), wv, True); @@ -2699,9 +2698,9 @@ x_label_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii); widget_value* wv = xmalloc_widget_value (); - + button_item_to_widget_value (gui, wv, 1, 1); - + x_widget_instantiate (image_instance, instantiator, pointer_fg, pointer_bg, dest_mask, domain, "button", wv); } @@ -2755,13 +2754,13 @@ image_instantiator_format_create_glyphs_x (void) #endif #ifdef HAVE_TIFF IIFORMAT_VALID_CONSOLE (x, tiff); -#endif +#endif #ifdef HAVE_PNG IIFORMAT_VALID_CONSOLE (x, png); -#endif +#endif #ifdef HAVE_GIF IIFORMAT_VALID_CONSOLE (x, gif); -#endif +#endif INITIALIZE_DEVICE_IIFORMAT (x, xbm); IIFORMAT_HAS_DEVMETHOD (x, xbm, instantiate); diff --git a/src/glyphs.c b/src/glyphs.c index e10c23f..1d71858 100644 --- a/src/glyphs.c +++ b/src/glyphs.c @@ -3,7 +3,7 @@ Copyright (C) 1995 Tinker Systems Copyright (C) 1995, 1996 Ben Wing Copyright (C) 1995 Sun Microsystems - Copyright (C) 1998, 1999 Andy Piper + Copyright (C) 1998, 1999, 2000 Andy Piper This file is part of XEmacs. @@ -24,7 +24,8 @@ Boston, MA 02111-1307, USA. */ /* Synched up with: Not in FSF. */ -/* Written by Ben Wing and Chuck Thompson. */ +/* Written by Ben Wing and Chuck Thompson. Heavily modified / + rewritten by Andy Piper. */ #include #include "lisp.h" @@ -122,7 +123,7 @@ typedef struct image_instantiator_format_entry_dynarr * the_image_instantiator_format_entry_dynarr; -static Lisp_Object allocate_image_instance (Lisp_Object device); +static Lisp_Object allocate_image_instance (Lisp_Object device, Lisp_Object glyph); static void image_validate (Lisp_Object instantiator); static void glyph_property_was_changed (Lisp_Object glyph, Lisp_Object property, @@ -575,9 +576,9 @@ static Lisp_Object instantiate_image_instantiator (Lisp_Object device, Lisp_Object domain, Lisp_Object instantiator, Lisp_Object pointer_fg, Lisp_Object pointer_bg, - int dest_mask) + int dest_mask, Lisp_Object glyph) { - Lisp_Object ii = allocate_image_instance (device); + Lisp_Object ii = allocate_image_instance (device, glyph); struct image_instantiator_methods *meths; struct gcpro gcpro1; int methp = 0; @@ -622,6 +623,8 @@ mark_image_instance (Lisp_Object obj) struct Lisp_Image_Instance *i = XIMAGE_INSTANCE (obj); mark_object (i->name); + /* We don't mark the glyph reference since that would create a + circularity preventing GC. */ switch (IMAGE_INSTANCE_TYPE (i)) { case IMAGE_TEXT: @@ -754,13 +757,6 @@ print_image_instance (Lisp_Object obj, Lisp_Object printcharfun, break; case IMAGE_WIDGET: - /* - if (!NILP (IMAGE_INSTANCE_WIDGET_CALLBACK (ii))) - { - print_internal (IMAGE_INSTANCE_WIDGET_CALLBACK (ii), printcharfun, 0); - write_c_string (", ", printcharfun); - } - */ if (!NILP (IMAGE_INSTANCE_WIDGET_FACE (ii))) { write_c_string (" (", printcharfun); @@ -842,7 +838,11 @@ image_instance_equal (Lisp_Object obj1, Lisp_Object obj2, int depth) if (d1 != d2) return 0; - if (IMAGE_INSTANCE_TYPE (i1) != IMAGE_INSTANCE_TYPE (i2)) + if (IMAGE_INSTANCE_TYPE (i1) != IMAGE_INSTANCE_TYPE (i2) + || IMAGE_INSTANCE_WIDTH (i1) != IMAGE_INSTANCE_WIDTH (i2) + || IMAGE_INSTANCE_HEIGHT (i1) != IMAGE_INSTANCE_HEIGHT (i2) + || IMAGE_INSTANCE_XOFFSET (i1) != IMAGE_INSTANCE_XOFFSET (i2) + || IMAGE_INSTANCE_YOFFSET (i1) != IMAGE_INSTANCE_YOFFSET (i2)) return 0; if (!internal_equal (IMAGE_INSTANCE_NAME (i1), IMAGE_INSTANCE_NAME (i2), depth + 1)) @@ -863,11 +863,7 @@ image_instance_equal (Lisp_Object obj1, Lisp_Object obj2, int depth) case IMAGE_MONO_PIXMAP: case IMAGE_COLOR_PIXMAP: case IMAGE_POINTER: - if (!(IMAGE_INSTANCE_PIXMAP_WIDTH (i1) == - IMAGE_INSTANCE_PIXMAP_WIDTH (i2) && - IMAGE_INSTANCE_PIXMAP_HEIGHT (i1) == - IMAGE_INSTANCE_PIXMAP_HEIGHT (i2) && - IMAGE_INSTANCE_PIXMAP_DEPTH (i1) == + if (!(IMAGE_INSTANCE_PIXMAP_DEPTH (i1) == IMAGE_INSTANCE_PIXMAP_DEPTH (i2) && IMAGE_INSTANCE_PIXMAP_SLICE (i1) == IMAGE_INSTANCE_PIXMAP_SLICE (i2) && @@ -887,6 +883,8 @@ image_instance_equal (Lisp_Object obj1, Lisp_Object obj2, int depth) case IMAGE_WIDGET: if (!(EQ (IMAGE_INSTANCE_WIDGET_TYPE (i1), IMAGE_INSTANCE_WIDGET_TYPE (i2)) + && IMAGE_INSTANCE_SUBWINDOW_ID (i1) == + IMAGE_INSTANCE_SUBWINDOW_ID (i2) && internal_equal (IMAGE_INSTANCE_WIDGET_ITEMS (i1), IMAGE_INSTANCE_WIDGET_ITEMS (i2), depth + 1) @@ -895,6 +893,8 @@ image_instance_equal (Lisp_Object obj1, Lisp_Object obj2, int depth) depth + 1) )) return 0; + break; + case IMAGE_LAYOUT: if (IMAGE_INSTANCE_TYPE (i1) == IMAGE_LAYOUT && @@ -905,12 +905,10 @@ image_instance_equal (Lisp_Object obj1, Lisp_Object obj2, int depth) IMAGE_INSTANCE_LAYOUT_CHILDREN (i2), depth + 1))) return 0; + break; + case IMAGE_SUBWINDOW: - if (!(IMAGE_INSTANCE_SUBWINDOW_WIDTH (i1) == - IMAGE_INSTANCE_SUBWINDOW_WIDTH (i2) && - IMAGE_INSTANCE_SUBWINDOW_HEIGHT (i1) == - IMAGE_INSTANCE_SUBWINDOW_HEIGHT (i2) && - IMAGE_INSTANCE_SUBWINDOW_ID (i1) == + if (!(IMAGE_INSTANCE_SUBWINDOW_ID (i1) == IMAGE_INSTANCE_SUBWINDOW_ID (i2))) return 0; break; @@ -927,7 +925,9 @@ image_instance_hash (Lisp_Object obj, int depth) { struct Lisp_Image_Instance *i = XIMAGE_INSTANCE (obj); struct device *d = XDEVICE (i->device); - unsigned long hash = (unsigned long) d; + unsigned long hash = HASH3 ((unsigned long) d, + IMAGE_INSTANCE_WIDTH (i), + IMAGE_INSTANCE_HEIGHT (i)); switch (IMAGE_INSTANCE_TYPE (i)) { @@ -942,9 +942,7 @@ image_instance_hash (Lisp_Object obj, int depth) case IMAGE_MONO_PIXMAP: case IMAGE_COLOR_PIXMAP: case IMAGE_POINTER: - hash = HASH6 (hash, IMAGE_INSTANCE_PIXMAP_WIDTH (i), - IMAGE_INSTANCE_PIXMAP_HEIGHT (i), - IMAGE_INSTANCE_PIXMAP_DEPTH (i), + hash = HASH4 (hash, IMAGE_INSTANCE_PIXMAP_DEPTH (i), IMAGE_INSTANCE_PIXMAP_SLICE (i), internal_hash (IMAGE_INSTANCE_PIXMAP_FILENAME (i), depth + 1)); @@ -955,16 +953,15 @@ image_instance_hash (Lisp_Object obj, int depth) internal_hash (IMAGE_INSTANCE_WIDGET_TYPE (i), depth + 1), internal_hash (IMAGE_INSTANCE_WIDGET_PROPS (i), depth + 1), internal_hash (IMAGE_INSTANCE_WIDGET_ITEMS (i), depth + 1)); - case IMAGE_LAYOUT: - if (IMAGE_INSTANCE_TYPE (i) == IMAGE_LAYOUT) - hash = HASH3 (hash, - internal_hash (IMAGE_INSTANCE_LAYOUT_BORDER (i), depth + 1), - internal_hash (IMAGE_INSTANCE_LAYOUT_CHILDREN (i), - depth + 1)); case IMAGE_SUBWINDOW: - hash = HASH4 (hash, IMAGE_INSTANCE_SUBWINDOW_WIDTH (i), - IMAGE_INSTANCE_SUBWINDOW_HEIGHT (i), - (int) IMAGE_INSTANCE_SUBWINDOW_ID (i)); + hash = HASH2 (hash, (int) IMAGE_INSTANCE_SUBWINDOW_ID (i)); + break; + + case IMAGE_LAYOUT: + hash = HASH3 (hash, + internal_hash (IMAGE_INSTANCE_LAYOUT_BORDER (i), depth + 1), + internal_hash (IMAGE_INSTANCE_LAYOUT_CHILDREN (i), + depth + 1)); break; default: @@ -982,7 +979,7 @@ DEFINE_LRECORD_IMPLEMENTATION ("image-instance", image_instance, struct Lisp_Image_Instance); static Lisp_Object -allocate_image_instance (Lisp_Object device) +allocate_image_instance (Lisp_Object device, Lisp_Object glyph) { struct Lisp_Image_Instance *lp = alloc_lcrecord_type (struct Lisp_Image_Instance, &lrecord_image_instance); @@ -994,7 +991,12 @@ allocate_image_instance (Lisp_Object device) lp->name = Qnil; lp->x_offset = 0; lp->y_offset = 0; + lp->width = 0; + lp->height = 0; + lp->glyph = glyph; + MARK_IMAGE_INSTANCE_CHANGED (lp); /* So that layouts get done. */ XSETIMAGE_INSTANCE (val, lp); + MARK_GLYPHS_CHANGED; /* So that the dirty flag gets reset. */ return val; } @@ -1176,7 +1178,7 @@ make_image_instance_1 (Lisp_Object data, Lisp_Object device, if (VECTORP (data) && EQ (XVECTOR_DATA (data)[0], Qinherit)) signal_simple_error ("Inheritance not allowed here", data); ii = instantiate_image_instantiator (device, device, data, - Qnil, Qnil, dest_mask); + Qnil, Qnil, dest_mask, Qnil); RETURN_UNGCPRO (ii); } @@ -1450,12 +1452,10 @@ Return the height of the image instance, in pixels. case IMAGE_MONO_PIXMAP: case IMAGE_COLOR_PIXMAP: case IMAGE_POINTER: - return make_int (XIMAGE_INSTANCE_PIXMAP_HEIGHT (image_instance)); - case IMAGE_SUBWINDOW: case IMAGE_WIDGET: case IMAGE_LAYOUT: - return make_int (XIMAGE_INSTANCE_SUBWINDOW_HEIGHT (image_instance)); + return make_int (XIMAGE_INSTANCE_HEIGHT (image_instance)); default: return Qnil; @@ -1474,12 +1474,10 @@ Return the width of the image instance, in pixels. case IMAGE_MONO_PIXMAP: case IMAGE_COLOR_PIXMAP: case IMAGE_POINTER: - return make_int (XIMAGE_INSTANCE_PIXMAP_WIDTH (image_instance)); - case IMAGE_SUBWINDOW: case IMAGE_WIDGET: case IMAGE_LAYOUT: - return make_int (XIMAGE_INSTANCE_SUBWINDOW_WIDTH (image_instance)); + return make_int (XIMAGE_INSTANCE_WIDTH (image_instance)); default: return Qnil; @@ -1611,7 +1609,7 @@ instance is a mono pixmap; otherwise, the same image instance is returned. /* #### There should be a copy_image_instance(), which calls a device-specific method to copy the window-system subobject. */ - new = allocate_image_instance (device); + new = allocate_image_instance (device, Qnil); copy_lcrecord (XIMAGE_INSTANCE (new), XIMAGE_INSTANCE (image_instance)); /* note that if this method returns non-zero, this method MUST copy any window-system resources, so that when one image instance is @@ -1622,6 +1620,98 @@ instance is a mono pixmap; otherwise, the same image instance is returned. return new; } + +/************************************************************************/ +/* Geometry calculations */ +/************************************************************************/ + +/* Find out desired geometry of the image instance. If there is no + special function then just return the width and / or height. */ +void +image_instance_query_geometry (Lisp_Object image_instance, + unsigned int* width, unsigned int* height, + enum image_instance_geometry disp, + Lisp_Object domain) +{ + struct Lisp_Image_Instance* ii = XIMAGE_INSTANCE (image_instance); + Lisp_Object type; + struct image_instantiator_methods* meths; + + type = encode_image_instance_type (IMAGE_INSTANCE_TYPE (ii)); + meths = decode_device_ii_format (Qnil, type, ERROR_ME_NOT); + + if (meths && HAS_IIFORMAT_METH_P (meths, query_geometry)) + { + IIFORMAT_METH (meths, query_geometry, (image_instance, width, height, + disp, domain)); + } + else + { + if (width) + *width = IMAGE_INSTANCE_WIDTH (ii); + if (height) + *height = IMAGE_INSTANCE_HEIGHT (ii); + } +} + +/* Layout the image instance using the provided dimensions. Layout + widgets are going to do different kinds of calculations to + determine what size to give things so we could make the layout + function relatively simple to take account of that. An alternative + approach is to consider separately the two cases, one where you + don't mind what size you have (normal widgets) and one where you + want to specifiy something (layout widgets). */ +void +image_instance_layout (Lisp_Object image_instance, + unsigned int width, unsigned int height, + Lisp_Object domain) +{ + struct Lisp_Image_Instance* ii = XIMAGE_INSTANCE (image_instance); + Lisp_Object type; + struct image_instantiator_methods* meths; + + type = encode_image_instance_type (IMAGE_INSTANCE_TYPE (ii)); + meths = decode_device_ii_format (Qnil, type, ERROR_ME_NOT); + + /* If geometry is unspecified then get some reasonable values for it. */ + if (width == IMAGE_UNSPECIFIED_GEOMETRY + || + height == IMAGE_UNSPECIFIED_GEOMETRY) + { + unsigned int dwidth, dheight; + + /* Get the desired geometry. */ + if (meths && HAS_IIFORMAT_METH_P (meths, query_geometry)) + { + IIFORMAT_METH (meths, query_geometry, (image_instance, &dwidth, &dheight, + IMAGE_DESIRED_GEOMETRY, + domain)); + } + else + { + dwidth = IMAGE_INSTANCE_WIDTH (ii); + dheight = IMAGE_INSTANCE_HEIGHT (ii); + } + + /* Compare with allowed geometry. */ + if (width == IMAGE_UNSPECIFIED_GEOMETRY) + width = dwidth; + if (height == IMAGE_UNSPECIFIED_GEOMETRY) + height = dheight; + } + + /* At this point width and height should contain sane values. Thus + we set the glyph geometry and lay it out. */ + IMAGE_INSTANCE_WIDTH (ii) = width; + IMAGE_INSTANCE_HEIGHT (ii) = height; + + if (meths && HAS_IIFORMAT_METH_P (meths, layout)) + { + IIFORMAT_METH (meths, layout, (image_instance, width, height, domain)); + } + /* else no change to the geometry. */ +} + /************************************************************************/ /* error helpers */ @@ -1718,7 +1808,7 @@ string_possible_dest_types (void) return IMAGE_TEXT_MASK; } -/* called from autodetect_instantiate() */ +/* Called from autodetect_instantiate() */ void string_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, Lisp_Object pointer_fg, Lisp_Object pointer_bg, @@ -1726,8 +1816,9 @@ string_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, { Lisp_Object string = find_keyword_in_vector (instantiator, Q_data); struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); - - assert (!NILP (string)); + + /* Should never get here with a domain other than a window. */ + assert (!NILP (string) && WINDOWP (domain)); if (dest_mask & IMAGE_TEXT_MASK) { IMAGE_INSTANCE_TYPE (ii) = IMAGE_TEXT; @@ -1737,6 +1828,116 @@ string_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, incompatible_image_types (instantiator, dest_mask, IMAGE_TEXT_MASK); } +/* Sort out the size of the text that is being displayed. Calculating + it dynamically allows us to change the text and still see + everything. Note that the following methods are for text not string + since that is what the instantiated type is. The first method is a + helper that is used elsewhere for calculating text geometry. */ +void +query_string_geometry (Lisp_Object string, Lisp_Object face, + unsigned int* width, unsigned int* height, + unsigned int* descent, Lisp_Object domain) +{ + struct font_metric_info fm; + unsigned char charsets[NUM_LEADING_BYTES]; + struct face_cachel frame_cachel; + struct face_cachel *cachel; + Lisp_Object frame = FW_FRAME (domain); + + /* Compute height */ + if (height) + { + /* Compute string metric info */ + find_charsets_in_bufbyte_string (charsets, + XSTRING_DATA (string), + XSTRING_LENGTH (string)); + + /* Fallback to the default face if none was provided. */ + if (!NILP (face)) + { + reset_face_cachel (&frame_cachel); + update_face_cachel_data (&frame_cachel, frame, face); + cachel = &frame_cachel; + } + else + { + cachel = WINDOW_FACE_CACHEL (XWINDOW (domain), DEFAULT_INDEX); + } + + ensure_face_cachel_complete (cachel, domain, charsets); + face_cachel_charset_font_metric_info (cachel, charsets, &fm); + + *height = fm.ascent + fm.descent; + /* #### descent only gets set if we query the height as well. */ + if (descent) + *descent = fm.descent; + } + + /* Compute width */ + if (width) + { + if (!NILP (face)) + *width = redisplay_frame_text_width_string (XFRAME (frame), + face, + 0, string, 0, -1); + else + *width = redisplay_frame_text_width_string (XFRAME (frame), + Vdefault_face, + 0, string, 0, -1); + } +} + +Lisp_Object +query_string_font (Lisp_Object string, Lisp_Object face, Lisp_Object domain) +{ + unsigned char charsets[NUM_LEADING_BYTES]; + struct face_cachel frame_cachel; + struct face_cachel *cachel; + int i; + Lisp_Object frame = FW_FRAME (domain); + + /* Compute string font info */ + find_charsets_in_bufbyte_string (charsets, + XSTRING_DATA (string), + XSTRING_LENGTH (string)); + + reset_face_cachel (&frame_cachel); + update_face_cachel_data (&frame_cachel, frame, face); + cachel = &frame_cachel; + + ensure_face_cachel_complete (cachel, domain, charsets); + + for (i = 0; i < NUM_LEADING_BYTES; i++) + { + if (charsets[i]) + { + return FACE_CACHEL_FONT (cachel, + CHARSET_BY_LEADING_BYTE (i + + MIN_LEADING_BYTE)); + + } + } + + return Qnil; /* NOT REACHED */ +} + +static void +text_query_geometry (Lisp_Object image_instance, + unsigned int* width, unsigned int* height, + enum image_instance_geometry disp, Lisp_Object domain) +{ + struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); + unsigned int descent = 0; + + query_string_geometry (IMAGE_INSTANCE_TEXT_STRING (ii), + IMAGE_INSTANCE_FACE (ii), + width, height, &descent, domain); + + /* The descent gets set as a side effect of querying the + geometry. */ + IMAGE_INSTANCE_TEXT_DESCENT (ii) = descent; +} + /* set the properties of a string */ static Lisp_Object text_set_property (Lisp_Object image_instance, Lisp_Object prop, @@ -1777,20 +1978,12 @@ formatted_string_instantiate (Lisp_Object image_instance, Lisp_Object pointer_fg, Lisp_Object pointer_bg, int dest_mask, Lisp_Object domain) { - Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); - struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); - - assert (!NILP (data)); /* #### implement this */ warn_when_safe (Qunimplemented, Qnotice, "`formatted-string' not yet implemented; assuming `string'"); - if (dest_mask & IMAGE_TEXT_MASK) - { - IMAGE_INSTANCE_TYPE (ii) = IMAGE_TEXT; - IMAGE_INSTANCE_TEXT_STRING (ii) = data; - } - else - incompatible_image_types (instantiator, dest_mask, IMAGE_TEXT_MASK); + + string_instantiate (image_instance, instantiator, + pointer_fg, pointer_bg, dest_mask, domain); } @@ -2447,6 +2640,7 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec, { Lisp_Object device = DFW_DEVICE (domain); struct device *d = XDEVICE (device); + Lisp_Object glyph = IMAGE_SPECIFIER_ATTACHEE (XIMAGE_SPECIFIER (specifier)); int dest_mask = XIMAGE_SPECIFIER_ALLOWED (specifier); int pointerp = dest_mask & image_instance_type_to_mask (IMAGE_POINTER); @@ -2569,7 +2763,8 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec, domain, instantiator, pointer_fg, pointer_bg, - dest_mask); + dest_mask, + glyph); Fsetcar (locative, instance); /* only after the image has been instantiated do we know @@ -3163,7 +3358,8 @@ allocate_glyph (enum glyph_type type, break; case GLYPH_ICON: XIMAGE_SPECIFIER_ALLOWED (g->image) = - IMAGE_NOTHING_MASK | IMAGE_MONO_PIXMAP_MASK | IMAGE_COLOR_PIXMAP_MASK; + IMAGE_NOTHING_MASK | IMAGE_MONO_PIXMAP_MASK + | IMAGE_COLOR_PIXMAP_MASK; break; default: abort (); @@ -3296,70 +3492,52 @@ The return value will be one of 'buffer, 'pointer, or 'icon. } } -/***************************************************************************** - glyph_width +Lisp_Object +glyph_image_instance (Lisp_Object glyph, Lisp_Object domain, + Error_behavior errb, int no_quit) +{ + Lisp_Object specifier = GLYPH_IMAGE (XGLYPH (glyph)); - Return the width of the given GLYPH on the given WINDOW. If the - instance is a string then the width is calculated using the font of - the given FACE, unless a face is defined by the glyph itself. - ****************************************************************************/ -unsigned short -glyph_width (Lisp_Object glyph_or_image, Lisp_Object frame_face, - face_index window_findex, Lisp_Object window) + /* This can never return Qunbound. All glyphs have 'nothing as + a fallback. */ + Lisp_Object image_instance = specifier_instance (specifier, Qunbound, + domain, errb, no_quit, 0, + Qzero); + + return image_instance; +} + +static Lisp_Object +glyph_image_instance_maybe (Lisp_Object glyph_or_image, Lisp_Object window) { Lisp_Object instance = glyph_or_image; - Lisp_Object frame = XWINDOW (window)->frame; - /* #### We somehow need to distinguish between the user causing this - error condition and a bug causing it. */ if (GLYPHP (glyph_or_image)) instance = glyph_image_instance (glyph_or_image, window, ERROR_ME_NOT, 1); - if (!IMAGE_INSTANCEP (instance)) - return 0; - - switch (XIMAGE_INSTANCE_TYPE (instance)) - { - case IMAGE_TEXT: - { - Lisp_Object str = XIMAGE_INSTANCE_TEXT_STRING (instance); - Lisp_Object private_face = Qnil; - - if (GLYPHP (glyph_or_image)) - private_face = XGLYPH_FACE(glyph_or_image); - - if (!NILP (private_face)) - return redisplay_frame_text_width_string (XFRAME (frame), - private_face, - 0, str, 0, -1); - else - if (!NILP (frame_face)) - return redisplay_frame_text_width_string (XFRAME (frame), - frame_face, - 0, str, 0, -1); - else - return redisplay_text_width_string (XWINDOW (window), - window_findex, - 0, str, 0, -1); - } + return instance; +} - case IMAGE_MONO_PIXMAP: - case IMAGE_COLOR_PIXMAP: - case IMAGE_POINTER: - return XIMAGE_INSTANCE_PIXMAP_WIDTH (instance); +/***************************************************************************** + glyph_width - case IMAGE_NOTHING: - return 0; + Return the width of the given GLYPH on the given WINDOW. + Calculations are done based on recursively querying the geometry of + the associated image instances. + ****************************************************************************/ +unsigned short +glyph_width (Lisp_Object glyph_or_image, Lisp_Object domain) +{ + Lisp_Object instance = glyph_image_instance_maybe (glyph_or_image, + domain); + if (!IMAGE_INSTANCEP (instance)) + return 0; - case IMAGE_SUBWINDOW: - case IMAGE_WIDGET: - case IMAGE_LAYOUT: - return XIMAGE_INSTANCE_SUBWINDOW_WIDTH (instance); + if (XIMAGE_INSTANCE_DIRTYP (instance)) + image_instance_layout (instance, IMAGE_UNSPECIFIED_GEOMETRY, + IMAGE_UNSPECIFIED_GEOMETRY, domain); - default: - abort (); - return 0; - } + return XIMAGE_INSTANCE_WIDTH (instance); } DEFUN ("glyph-width", Fglyph_width, 1, 2, 0, /* @@ -3372,126 +3550,60 @@ that redisplay will. XSETWINDOW (window, decode_window (window)); CHECK_GLYPH (glyph); - return make_int (glyph_width (glyph, Qnil, DEFAULT_INDEX, window)); -} - -#define RETURN_ASCENT 0 -#define RETURN_DESCENT 1 -#define RETURN_HEIGHT 2 - -Lisp_Object -glyph_image_instance (Lisp_Object glyph, Lisp_Object domain, - Error_behavior errb, int no_quit) -{ - Lisp_Object specifier = GLYPH_IMAGE (XGLYPH (glyph)); - - /* This can never return Qunbound. All glyphs have 'nothing as - a fallback. */ - return specifier_instance (specifier, Qunbound, domain, errb, no_quit, 0, - Qzero); + return make_int (glyph_width (glyph, window)); } -static unsigned short -glyph_height_internal (Lisp_Object glyph_or_image, Lisp_Object frame_face, - face_index window_findex, Lisp_Object window, - int function) +unsigned short +glyph_ascent (Lisp_Object glyph_or_image, Lisp_Object domain) { - Lisp_Object instance = glyph_or_image; - Lisp_Object frame = XWINDOW (window)->frame; - - if (GLYPHP (glyph_or_image)) - instance = glyph_image_instance (glyph_or_image, window, ERROR_ME_NOT, 1); - + Lisp_Object instance = glyph_image_instance_maybe (glyph_or_image, + domain); if (!IMAGE_INSTANCEP (instance)) return 0; - switch (XIMAGE_INSTANCE_TYPE (instance)) - { - case IMAGE_TEXT: - { - struct font_metric_info fm; - Lisp_Object string = XIMAGE_INSTANCE_TEXT_STRING (instance); - unsigned char charsets[NUM_LEADING_BYTES]; - struct face_cachel frame_cachel; - struct face_cachel *cachel; - - find_charsets_in_bufbyte_string (charsets, - XSTRING_DATA (string), - XSTRING_LENGTH (string)); - - if (!NILP (frame_face)) - { - reset_face_cachel (&frame_cachel); - update_face_cachel_data (&frame_cachel, frame, frame_face); - cachel = &frame_cachel; - } - else - cachel = WINDOW_FACE_CACHEL (XWINDOW (window), window_findex); - ensure_face_cachel_complete (cachel, window, charsets); + if (XIMAGE_INSTANCE_DIRTYP (instance)) + image_instance_layout (instance, IMAGE_UNSPECIFIED_GEOMETRY, + IMAGE_UNSPECIFIED_GEOMETRY, domain); - face_cachel_charset_font_metric_info (cachel, charsets, &fm); - - switch (function) - { - case RETURN_ASCENT: return fm.ascent; - case RETURN_DESCENT: return fm.descent; - case RETURN_HEIGHT: return fm.ascent + fm.descent; - default: - abort (); - return 0; /* not reached */ - } - } - - case IMAGE_MONO_PIXMAP: - case IMAGE_COLOR_PIXMAP: - case IMAGE_POINTER: - /* #### Ugh ugh ugh -- temporary crap */ - if (function == RETURN_ASCENT || function == RETURN_HEIGHT) - return XIMAGE_INSTANCE_PIXMAP_HEIGHT (instance); - else - return 0; - - case IMAGE_NOTHING: - return 0; - - case IMAGE_SUBWINDOW: - case IMAGE_WIDGET: - case IMAGE_LAYOUT: - /* #### Ugh ugh ugh -- temporary crap */ - if (function == RETURN_ASCENT || function == RETURN_HEIGHT) - return XIMAGE_INSTANCE_SUBWINDOW_HEIGHT (instance); - else - return 0; - - default: - abort (); - return 0; - } + if (XIMAGE_INSTANCE_TYPE (instance) == IMAGE_TEXT) + return XIMAGE_INSTANCE_TEXT_ASCENT (instance); + else + return XIMAGE_INSTANCE_HEIGHT (instance); } unsigned short -glyph_ascent (Lisp_Object glyph, Lisp_Object frame_face, - face_index window_findex, Lisp_Object window) +glyph_descent (Lisp_Object glyph_or_image, Lisp_Object domain) { - return glyph_height_internal (glyph, frame_face, window_findex, window, - RETURN_ASCENT); -} + Lisp_Object instance = glyph_image_instance_maybe (glyph_or_image, + domain); + if (!IMAGE_INSTANCEP (instance)) + return 0; -unsigned short -glyph_descent (Lisp_Object glyph, Lisp_Object frame_face, - face_index window_findex, Lisp_Object window) -{ - return glyph_height_internal (glyph, frame_face, window_findex, window, - RETURN_DESCENT); + if (XIMAGE_INSTANCE_DIRTYP (instance)) + image_instance_layout (instance, IMAGE_UNSPECIFIED_GEOMETRY, + IMAGE_UNSPECIFIED_GEOMETRY, domain); + + if (XIMAGE_INSTANCE_TYPE (instance) == IMAGE_TEXT) + return XIMAGE_INSTANCE_TEXT_DESCENT (instance); + else + return 0; } /* strictly a convenience function. */ unsigned short -glyph_height (Lisp_Object glyph, Lisp_Object frame_face, - face_index window_findex, Lisp_Object window) +glyph_height (Lisp_Object glyph_or_image, Lisp_Object domain) { - return glyph_height_internal (glyph, frame_face, window_findex, window, - RETURN_HEIGHT); + Lisp_Object instance = glyph_image_instance_maybe (glyph_or_image, + domain); + + if (!IMAGE_INSTANCEP (instance)) + return 0; + + if (XIMAGE_INSTANCE_DIRTYP (instance)) + image_instance_layout (instance, IMAGE_UNSPECIFIED_GEOMETRY, + IMAGE_UNSPECIFIED_GEOMETRY, domain); + + return XIMAGE_INSTANCE_HEIGHT (instance); } DEFUN ("glyph-ascent", Fglyph_ascent, 1, 2, 0, /* @@ -3504,7 +3616,7 @@ that redisplay will. XSETWINDOW (window, decode_window (window)); CHECK_GLYPH (glyph); - return make_int (glyph_ascent (glyph, Qnil, DEFAULT_INDEX, window)); + return make_int (glyph_ascent (glyph, window)); } DEFUN ("glyph-descent", Fglyph_descent, 1, 2, 0, /* @@ -3517,7 +3629,7 @@ that redisplay will. XSETWINDOW (window, decode_window (window)); CHECK_GLYPH (glyph); - return make_int (glyph_descent (glyph, Qnil, DEFAULT_INDEX, window)); + return make_int (glyph_descent (glyph, window)); } /* This is redundant but I bet a lot of people expect it to exist. */ @@ -3531,22 +3643,14 @@ that redisplay will. XSETWINDOW (window, decode_window (window)); CHECK_GLYPH (glyph); - return make_int (glyph_height (glyph, Qnil, DEFAULT_INDEX, window)); + return make_int (glyph_height (glyph, window)); } -#undef RETURN_ASCENT -#undef RETURN_DESCENT -#undef RETURN_HEIGHT - static unsigned int glyph_dirty_p (Lisp_Object glyph_or_image, Lisp_Object window) { - Lisp_Object instance = glyph_or_image; - - if (GLYPHP (glyph_or_image)) - instance = glyph_image_instance (glyph_or_image, window, ERROR_ME_NOT, 1); - - return XIMAGE_INSTANCE_DIRTYP (instance); + return XIMAGE_INSTANCE_DIRTYP (glyph_image_instance_maybe + (glyph_or_image, window)); } static void @@ -3621,6 +3725,33 @@ glyph_property_was_changed (Lisp_Object glyph, Lisp_Object property, (XGLYPH (glyph)->after_change) (glyph, property, locale); } +#if 0 /* Not used for now */ +static void +glyph_query_geometry (Lisp_Object glyph_or_image, Lisp_Object window, + unsigned int* width, unsigned int* height, + enum image_instance_geometry disp, Lisp_Object domain) +{ + Lisp_Object instance = glyph_or_image; + + if (GLYPHP (glyph_or_image)) + instance = glyph_image_instance (glyph_or_image, window, ERROR_ME_NOT, 1); + + image_instance_query_geometry (instance, width, height, disp, domain); +} + +static void +glyph_layout (Lisp_Object glyph_or_image, Lisp_Object window, + unsigned int width, unsigned int height, Lisp_Object domain) +{ + Lisp_Object instance = glyph_or_image; + + if (GLYPHP (glyph_or_image)) + instance = glyph_image_instance (glyph_or_image, window, ERROR_ME_NOT, 1); + + image_instance_layout (instance, width, height, domain); +} +#endif + /***************************************************************************** * glyph cachel functions * @@ -3662,9 +3793,9 @@ update_glyph_cachel_data (struct window *w, Lisp_Object glyph, and passing it to the size functions. */ instance = glyph_image_instance (glyph, window, ERROR_ME_NOT, 1); cachel->dirty = XGLYPH_DIRTYP (glyph) = glyph_dirty_p (glyph, window); - cachel->width = glyph_width (instance, Qnil, DEFAULT_INDEX, window); - cachel->ascent = glyph_ascent (instance, Qnil, DEFAULT_INDEX, window); - cachel->descent = glyph_descent (instance, Qnil, DEFAULT_INDEX, window); + cachel->width = glyph_width (instance, window); + cachel->ascent = glyph_ascent (instance, window); + cachel->descent = glyph_descent (instance, window); } cachel->updated = 1; @@ -3781,7 +3912,7 @@ compute_glyph_cachel_usage (glyph_cachel_dynarr *glyph_cachels, /***************************************************************************** * subwindow cachel functions * *****************************************************************************/ -/* subwindows are curious in that you have to physically unmap them to +/* Subwindows are curious in that you have to physically unmap them to not display them. It is problematic deciding what to do in redisplay. We have two caches - a per-window instance cache that keeps track of subwindows on a window, these are linked to their @@ -4051,8 +4182,15 @@ update_subwindow (Lisp_Object subwindow) return; MAYBE_DEVMETH (XDEVICE (ii->device), update_subwindow, (ii)); + /* We must update the window's size as it may have been changed by + the the layout routines. We also do this here so that explicit resizing + from lisp does not result in synchronous updates. */ + MAYBE_DEVMETH (XDEVICE (ii->device), resize_subwindow, (ii, + IMAGE_INSTANCE_WIDTH (ii), + IMAGE_INSTANCE_HEIGHT (ii))); } +/* Update all the subwindows on a frame. */ void update_frame_subwindows (struct frame *f) { @@ -4094,8 +4232,8 @@ void unmap_subwindow (Lisp_Object subwindow) /* make sure we don't get expose events */ register_ignored_expose (f, cachel->x, cachel->y, cachel->width, cachel->height); - cachel->x = -1; - cachel->y = -1; + cachel->x = ~0; + cachel->y = ~0; cachel->being_displayed = 0; IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP (ii) = 0; @@ -4133,6 +4271,15 @@ void map_subwindow (Lisp_Object subwindow, int x, int y, cachel->height = dga->height; cachel->being_displayed = 1; + /* This forces any pending display changes to happen to the image + before we show it. I'm not sure whether or not we need mark as + clean here, but for now we will. */ + if (IMAGE_INSTANCE_DIRTYP (ii)) + { + update_subwindow (subwindow); + IMAGE_INSTANCE_DIRTYP (ii) = 0; + } + MAYBE_DEVMETH (XDEVICE (ii->device), map_subwindow, (ii, x, y, dga)); } @@ -4165,7 +4312,10 @@ subwindow_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP (ii) = 0; IMAGE_INSTANCE_SUBWINDOW_FRAME (ii) = frame; - /* this stuff may get overidden by the widget code */ + /* #### This stuff may get overidden by the widget code and is + actually really dumb now that we have dynamic geometry + calculations. What should really happen is that the subwindow + should query its child for and appropriate geometry. */ if (NILP (width)) IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii) = 20; else @@ -4217,21 +4367,19 @@ If a value is nil that parameter is not changed. CHECK_SUBWINDOW_IMAGE_INSTANCE (subwindow); if (NILP (width)) - neww = XIMAGE_INSTANCE_SUBWINDOW_WIDTH (subwindow); + neww = XIMAGE_INSTANCE_WIDTH (subwindow); else neww = XINT (width); if (NILP (height)) - newh = XIMAGE_INSTANCE_SUBWINDOW_HEIGHT (subwindow); + newh = XIMAGE_INSTANCE_HEIGHT (subwindow); else newh = XINT (height); - - MAYBE_DEVMETH (XDEVICE (XIMAGE_INSTANCE_DEVICE (subwindow)), - resize_subwindow, (XIMAGE_INSTANCE (subwindow), neww, newh)); - - XIMAGE_INSTANCE_SUBWINDOW_HEIGHT (subwindow) = newh; - XIMAGE_INSTANCE_SUBWINDOW_WIDTH (subwindow) = neww; + /* The actual resizing gets done asychronously by + update_subwindow. */ + XIMAGE_INSTANCE_HEIGHT (subwindow) = newh; + XIMAGE_INSTANCE_WIDTH (subwindow) = neww; /* need to update the cachels as redisplay will not do this */ update_subwindow_cachel (subwindow); @@ -4370,7 +4518,7 @@ Don't use this. also might not. */ MARK_DEVICE_FRAMES_GLYPHS_CHANGED (XDEVICE (IMAGE_INSTANCE_DEVICE (ii))); - IMAGE_INSTANCE_DIRTYP (ii) = 1; + MARK_IMAGE_INSTANCE_CHANGED (ii); } } } @@ -4645,6 +4793,7 @@ image_instantiator_format_create (void) /* Do this so we can set strings. */ INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (text, "text"); IIFORMAT_HAS_METHOD (text, set_property); + IIFORMAT_HAS_METHOD (text, query_geometry); INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (formatted_string, "formatted-string"); @@ -4814,8 +4963,7 @@ Faces can have their own, overriding display table. set_specifier_fallback (Vcurrent_display_table, list1 (Fcons (Qnil, Qnil))); set_specifier_caching (Vcurrent_display_table, - slot_offset (struct window, - display_table), + offsetof (struct window, display_table), some_window_value_changed, 0, 0); } diff --git a/src/glyphs.h b/src/glyphs.h index c8bb105..decfe0c 100644 --- a/src/glyphs.h +++ b/src/glyphs.h @@ -84,6 +84,18 @@ typedef struct extern const struct struct_description iim_description; +enum image_instance_geometry +{ + IMAGE_GEOMETRY, + IMAGE_DESIRED_GEOMETRY, + IMAGE_MIN_GEOMETRY, + IMAGE_MAX_GEOMETRY, + IMAGE_UNSPECIFIED_GEOMETRY = ~0 +}; + +#define WIDGET_BORDER_HEIGHT 4 +#define WIDGET_BORDER_WIDTH 4 + struct image_instantiator_methods { Lisp_Object symbol; @@ -132,12 +144,19 @@ struct image_instantiator_methods Lisp_Object property, Lisp_Object val); - /* Find out the geometry of this image instance. */ + /* Find out the desired geometry, as given by disp, of this image + instance. Actual geometry is stored in the appropriate slots in the + image instance. */ void (*query_geometry_method) (Lisp_Object image_instance, - int* width, int* height, int disp); - - /* Layout the instances children. */ - void (*layout_children_method) (Lisp_Object image_instance); + unsigned int* width, unsigned int* height, + enum image_instance_geometry disp, + Lisp_Object domain); + + /* Layout the instance and its children bounded by the provided + dimensions. */ + void (*layout_method) (Lisp_Object image_instance, + unsigned int width, unsigned int height, + Lisp_Object domain); }; /***** Calling an image-instantiator method *****/ @@ -306,10 +325,16 @@ void initialize_subwindow_image_instance (struct Lisp_Image_Instance*); void subwindow_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, Lisp_Object pointer_fg, Lisp_Object pointer_bg, int dest_mask, Lisp_Object domain); -void widget_instantiate_1 (Lisp_Object image_instance, Lisp_Object instantiator, - Lisp_Object pointer_fg, Lisp_Object pointer_bg, - int dest_mask, Lisp_Object domain, int default_textheight, - int default_pixheight, int default_textwidth); +void widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, + Lisp_Object pointer_fg, Lisp_Object pointer_bg, + int dest_mask, Lisp_Object domain); +void image_instance_query_geometry (Lisp_Object image_instance, + unsigned int* width, unsigned int* height, + enum image_instance_geometry disp, + Lisp_Object domain); +void image_instance_layout (Lisp_Object image_instance, + unsigned int width, unsigned int height, + Lisp_Object domain); DECLARE_DOESNT_RETURN (incompatible_image_types (Lisp_Object instantiator, int given_dest_mask, @@ -372,14 +397,6 @@ enum image_instance_type IMAGE_LAYOUT }; -enum image_instance_geometry -{ - IMAGE_GEOMETRY, - IMAGE_DESIRED_GEOMETRY, - IMAGE_MIN_GEOMETRY, - IMAGE_MAX_GEOMETRY -}; - #define IMAGE_NOTHING_MASK (1 << 0) #define IMAGE_TEXT_MASK (1 << 1) #define IMAGE_MONO_PIXMAP_MASK (1 << 2) @@ -463,6 +480,9 @@ struct Lisp_Image_Instance struct lcrecord_header header; Lisp_Object device; Lisp_Object name; + /* The glyph from which we were instantiated. This is a weak + reference. */ + Lisp_Object glyph; enum image_instance_type type; unsigned int x_offset, y_offset; /* for layout purposes */ unsigned int width, height; @@ -493,11 +513,19 @@ struct Lisp_Image_Instance Lisp_Object frame; void* subwindow; /* specific devices can use this as necessary */ unsigned int being_displayed : 1; /* used to detect when needs to be unmapped */ + unsigned int v_resize : 1; /* Whether the vsize is allowed to change. */ + unsigned int h_resize : 1; /* Whether the hsize is allowed to change. */ + unsigned int orientation : 1; /* Vertical or horizontal. */ + unsigned int justification : 2; /* Left, right or center. */ union { struct { - Lisp_Object face; /* foreground and background colors */ + /* Face for colors and font. We specify this here becuase we + want people to be able to put :face in the instantiator + spec. Using gyph-face is more inconvenient, although more + general. */ + Lisp_Object face; Lisp_Object type; Lisp_Object props; /* properties */ Lisp_Object gui_item; /* a list of gui_items */ @@ -515,8 +543,18 @@ struct Lisp_Image_Instance void *data; }; +/* Layout bit-fields. */ +#define LAYOUT_HORIZONTAL 0 +#define LAYOUT_VERTICAL 1 + +#define LAYOUT_JUSTIFY_LEFT 0 +#define LAYOUT_JUSTIFY_RIGHT 1 +#define LAYOUT_JUSTIFY_CENTER 2 + +/* Accessor macros. */ #define IMAGE_INSTANCE_DEVICE(i) ((i)->device) #define IMAGE_INSTANCE_NAME(i) ((i)->name) +#define IMAGE_INSTANCE_GLYPH(i) ((i)->glyph) #define IMAGE_INSTANCE_TYPE(i) ((i)->type) #define IMAGE_INSTANCE_XOFFSET(i) ((i)->x_offset) #define IMAGE_INSTANCE_YOFFSET(i) ((i)->y_offset) @@ -526,6 +564,8 @@ struct Lisp_Image_Instance ((IMAGE_INSTANCE_TYPE (i) == IMAGE_MONO_PIXMAP) \ || (IMAGE_INSTANCE_TYPE (i) == IMAGE_COLOR_PIXMAP)) #define IMAGE_INSTANCE_DIRTYP(i) ((i)->dirty) +#define IMAGE_INSTANCE_FACE(i) \ + XGLYPH_FACE (IMAGE_INSTANCE_GLYPH (i)) #define IMAGE_INSTANCE_TEXT_STRING(i) ((i)->u.text.string) #define IMAGE_INSTANCE_TEXT_WIDTH(i) \ @@ -533,6 +573,8 @@ struct Lisp_Image_Instance #define IMAGE_INSTANCE_TEXT_HEIGHT(i) \ IMAGE_INSTANCE_HEIGHT(i) #define IMAGE_INSTANCE_TEXT_DESCENT(i) ((i)->u.text.descent) +#define IMAGE_INSTANCE_TEXT_ASCENT(i) \ + (IMAGE_INSTANCE_TEXT_HEIGHT(i) - IMAGE_INSTANCE_TEXT_DESCENT(i)) #define IMAGE_INSTANCE_PIXMAP_WIDTH(i) \ IMAGE_INSTANCE_WIDTH(i) @@ -559,6 +601,14 @@ struct Lisp_Image_Instance #define IMAGE_INSTANCE_SUBWINDOW_FRAME(i) ((i)->u.subwindow.frame) #define IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP(i) \ ((i)->u.subwindow.being_displayed) +#define IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP(i) \ +((i)->u.subwindow.v_resize) +#define IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP(i) \ +((i)->u.subwindow.h_resize) +#define IMAGE_INSTANCE_SUBWINDOW_ORIENT(i) \ +((i)->u.subwindow.orientation) +#define IMAGE_INSTANCE_SUBWINDOW_JUSTIFY(i) \ +((i)->u.subwindow.justification) #define IMAGE_INSTANCE_WIDGET_WIDTH(i) \ IMAGE_INSTANCE_WIDTH(i) @@ -566,7 +616,12 @@ struct Lisp_Image_Instance IMAGE_INSTANCE_HEIGHT(i) #define IMAGE_INSTANCE_WIDGET_TYPE(i) ((i)->u.subwindow.s.widget.type) #define IMAGE_INSTANCE_WIDGET_PROPS(i) ((i)->u.subwindow.s.widget.props) -#define IMAGE_INSTANCE_WIDGET_FACE(i) ((i)->u.subwindow.s.widget.face) +#define SET_IMAGE_INSTANCE_WIDGET_FACE(i,f) \ + ((i)->u.subwindow.s.widget.face = f) +#define IMAGE_INSTANCE_WIDGET_FACE(i) \ + (!NILP ((i)->u.subwindow.s.widget.face) ? (i)->u.subwindow.s.widget.face : \ + !NILP (IMAGE_INSTANCE_FACE (i)) ? IMAGE_INSTANCE_FACE (i) : \ + Vwidget_face) #define IMAGE_INSTANCE_WIDGET_ITEMS(i) ((i)->u.subwindow.s.widget.gui_item) #define IMAGE_INSTANCE_WIDGET_ITEM(i) \ (CONSP (IMAGE_INSTANCE_WIDGET_ITEMS (i)) ? \ @@ -581,6 +636,8 @@ XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (i)) : \ IMAGE_INSTANCE_DEVICE (XIMAGE_INSTANCE (i)) #define XIMAGE_INSTANCE_NAME(i) \ IMAGE_INSTANCE_NAME (XIMAGE_INSTANCE (i)) +#define XIMAGE_INSTANCE_GLYPH(i) \ + IMAGE_INSTANCE_GLYPH (XIMAGE_INSTANCE (i)) #define XIMAGE_INSTANCE_TYPE(i) \ IMAGE_INSTANCE_TYPE (XIMAGE_INSTANCE (i)) #define XIMAGE_INSTANCE_XOFFSET(i) \ @@ -589,9 +646,23 @@ XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (i)) : \ IMAGE_INSTANCE_YOFFSET (XIMAGE_INSTANCE (i)) #define XIMAGE_INSTANCE_DIRTYP(i) \ IMAGE_INSTANCE_DIRTYP (XIMAGE_INSTANCE (i)) +#define XIMAGE_INSTANCE_WIDTH(i) \ + IMAGE_INSTANCE_WIDTH (XIMAGE_INSTANCE (i)) +#define XIMAGE_INSTANCE_HEIGHT(i) \ + IMAGE_INSTANCE_HEIGHT (XIMAGE_INSTANCE (i)) +#define XIMAGE_INSTANCE_FACE(i) \ + IMAGE_INSTANCE_FACE (XIMAGE_INSTANCE (i)) #define XIMAGE_INSTANCE_TEXT_STRING(i) \ IMAGE_INSTANCE_TEXT_STRING (XIMAGE_INSTANCE (i)) +#define XIMAGE_INSTANCE_TEXT_WIDTH(i) \ + IMAGE_INSTANCE_TEXT_WIDTH (XIMAGE_INSTANCE (i)) +#define XIMAGE_INSTANCE_TEXT_HEIGHT(i) \ + IMAGE_INSTANCE_TEXT_HEIGHT (XIMAGE_INSTANCE (i)) +#define XIMAGE_INSTANCE_TEXT_ASCENT(i) \ + IMAGE_INSTANCE_TEXT_ASCENT (XIMAGE_INSTANCE (i)) +#define XIMAGE_INSTANCE_TEXT_DESCENT(i) \ + IMAGE_INSTANCE_TEXT_DESCENT (XIMAGE_INSTANCE (i)) #define XIMAGE_INSTANCE_PIXMAP_WIDTH(i) \ IMAGE_INSTANCE_PIXMAP_WIDTH (XIMAGE_INSTANCE (i)) @@ -630,6 +701,8 @@ XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (i)) : \ IMAGE_INSTANCE_WIDGET_PROPS (XIMAGE_INSTANCE (i)) #define XIMAGE_INSTANCE_WIDGET_FACE(i) \ IMAGE_INSTANCE_WIDGET_FACE (XIMAGE_INSTANCE (i)) +#define XSET_IMAGE_INSTANCE_WIDGET_FACE(i) \ + SET_IMAGE_INSTANCE_WIDGET_FACE (XIMAGE_INSTANCE (i)) #define XIMAGE_INSTANCE_WIDGET_ITEM(i) \ IMAGE_INSTANCE_WIDGET_ITEM (XIMAGE_INSTANCE (i)) #define XIMAGE_INSTANCE_WIDGET_ITEMS(i) \ @@ -652,6 +725,10 @@ XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (i)) : \ IMAGE_INSTANCE_SUBWINDOW_FRAME (XIMAGE_INSTANCE (i)) #define XIMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP(i) \ IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP (XIMAGE_INSTANCE (i)) +#define XIMAGE_INSTANCE_SUBWINDOW_ORIENT(i) \ + IMAGE_INSTANCE_SUBWINDOW_ORIENT (XIMAGE_INSTANCE (i)) +#define XIMAGE_INSTANCE_SUBWINDOW_JUSTIFY(i) \ + IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (XIMAGE_INSTANCE (i)) #define MARK_IMAGE_INSTANCE_CHANGED(i) \ (IMAGE_INSTANCE_DIRTYP (i) = 1); @@ -758,19 +835,10 @@ extern Lisp_Object Vcontinuation_glyph, Vcontrol_arrow_glyph, Vhscroll_glyph; extern Lisp_Object Vinvisible_text_glyph, Voctal_escape_glyph, Vtruncation_glyph; extern Lisp_Object Vxemacs_logo; -unsigned short glyph_width (Lisp_Object glyph, Lisp_Object frame_face, - face_index window_findex, - Lisp_Object window); -unsigned short glyph_ascent (Lisp_Object glyph, Lisp_Object frame_face, - face_index window_findex, - Lisp_Object window); -unsigned short glyph_descent (Lisp_Object glyph, - Lisp_Object frame_face, - face_index window_findex, - Lisp_Object window); -unsigned short glyph_height (Lisp_Object glyph, Lisp_Object frame_face, - face_index window_findex, - Lisp_Object window); +unsigned short glyph_width (Lisp_Object glyph, Lisp_Object domain); +unsigned short glyph_ascent (Lisp_Object glyph, Lisp_Object domain); +unsigned short glyph_descent (Lisp_Object glyph, Lisp_Object domain); +unsigned short glyph_height (Lisp_Object glyph, Lisp_Object domain); Lisp_Object glyph_baseline (Lisp_Object glyph, Lisp_Object domain); Lisp_Object glyph_face (Lisp_Object glyph, Lisp_Object domain); int glyph_contrib_p (Lisp_Object glyph, Lisp_Object domain); @@ -789,11 +857,11 @@ Lisp_Object allocate_glyph (enum glyph_type type, void (*after_change) (Lisp_Object glyph, Lisp_Object property, Lisp_Object locale)); -Lisp_Object widget_face_font_info (Lisp_Object domain, Lisp_Object face, - int *height, int *width); -void widget_text_to_pixel_conversion (Lisp_Object domain, Lisp_Object face, - int th, int tw, - int* height, int* width); +void query_string_geometry ( Lisp_Object string, Lisp_Object face, + unsigned int* width, unsigned int* height, + unsigned int* descent, Lisp_Object domain); +Lisp_Object query_string_font (Lisp_Object string, + Lisp_Object face, Lisp_Object domain); Lisp_Object add_glyph_animated_timeout (EMACS_INT tickms, Lisp_Object device); void disable_glyph_animated_timeout (int i); @@ -868,8 +936,8 @@ typedef struct subwindow_cachel subwindow_cachel; struct subwindow_cachel { Lisp_Object subwindow; - int x, y; - int width, height; + unsigned int x, y; + unsigned int width, height; unsigned int being_displayed : 1; unsigned int updated : 1; }; @@ -890,10 +958,8 @@ int find_matching_subwindow (struct frame* f, int x, int y, int width, int heigh struct expose_ignore { - int x; - int y; - int width; - int height; + unsigned int x, y; + unsigned int width, height; struct expose_ignore *next; }; diff --git a/src/gpmevent.c b/src/gpmevent.c index 2d37ea1..0a219b9 100644 --- a/src/gpmevent.c +++ b/src/gpmevent.c @@ -452,7 +452,7 @@ static void gpm_next_event_cb (struct Lisp_Event *event) return; } - return (orig_next_event_cb (event)); + orig_next_event_cb (event); } static void hook_event_callbacks_once (void) diff --git a/src/gui.c b/src/gui.c index e43a204..a83688c 100644 --- a/src/gui.c +++ b/src/gui.c @@ -76,7 +76,7 @@ get_gui_callback (Lisp_Object data, Lisp_Object *fn, Lisp_Object *arg) if (SYMBOLP (data) || (COMPILED_FUNCTIONP (data) && XCOMPILED_FUNCTION (data)->flags.interactivep) - || (EQ (XCAR (data), Qlambda) + || (CONSP (data) && (EQ (XCAR (data), Qlambda)) && !NILP (Fassq (Qinteractive, Fcdr (Fcdr (data)))))) { *fn = Qcall_interactively; diff --git a/src/gutter.c b/src/gutter.c index d9534d0..f9d884f 100644 --- a/src/gutter.c +++ b/src/gutter.c @@ -805,8 +805,7 @@ in the gutter area. automatically knew about specifier fallbacks, so we didn't have to do it ourselves. */ set_specifier_caching (Vdefault_gutter, - slot_offset (struct window, - default_gutter), + offsetof (struct window, default_gutter), default_gutter_specs_changed, 0, 0); @@ -818,8 +817,7 @@ See `default-gutter' for a description of a valid gutter instantiator. */ ); Vgutter[TOP_GUTTER] = Fmake_specifier (Qgutter); set_specifier_caching (Vgutter[TOP_GUTTER], - slot_offset (struct window, - gutter[TOP_GUTTER]), + offsetof (struct window, gutter[TOP_GUTTER]), gutter_specs_changed, 0, 0); @@ -836,8 +834,7 @@ displayed even if you provide a value for `bottom-gutter'. */ ); Vgutter[BOTTOM_GUTTER] = Fmake_specifier (Qgutter); set_specifier_caching (Vgutter[BOTTOM_GUTTER], - slot_offset (struct window, - gutter[BOTTOM_GUTTER]), + offsetof (struct window, gutter[BOTTOM_GUTTER]), gutter_specs_changed, 0, 0); @@ -854,8 +851,7 @@ displayed even if you provide a value for `left-gutter'. */ ); Vgutter[LEFT_GUTTER] = Fmake_specifier (Qgutter); set_specifier_caching (Vgutter[LEFT_GUTTER], - slot_offset (struct window, - gutter[LEFT_GUTTER]), + offsetof (struct window, gutter[LEFT_GUTTER]), gutter_specs_changed, 0, 0); @@ -872,8 +868,7 @@ displayed even if you provide a value for `right-gutter'. */ ); Vgutter[RIGHT_GUTTER] = Fmake_specifier (Qgutter); set_specifier_caching (Vgutter[RIGHT_GUTTER], - slot_offset (struct window, - gutter[RIGHT_GUTTER]), + offsetof (struct window, gutter[RIGHT_GUTTER]), gutter_specs_changed, 0, 0); @@ -913,8 +908,7 @@ is the default. */ ); Vdefault_gutter_height = Fmake_specifier (Qgutter_size); set_specifier_caching (Vdefault_gutter_height, - slot_offset (struct window, - default_gutter_height), + offsetof (struct window, default_gutter_height), default_gutter_size_changed_in_window, 0, 0); @@ -926,8 +920,7 @@ See `default-gutter-height' for more information. */ ); Vdefault_gutter_width = Fmake_specifier (Qnatnum); set_specifier_caching (Vdefault_gutter_width, - slot_offset (struct window, - default_gutter_width), + offsetof (struct window, default_gutter_width), default_gutter_size_changed_in_window, 0, 0); @@ -940,8 +933,7 @@ See `default-gutter-height' for more information. */ ); Vgutter_size[TOP_GUTTER] = Fmake_specifier (Qgutter_size); set_specifier_caching (Vgutter_size[TOP_GUTTER], - slot_offset (struct window, - gutter_size[TOP_GUTTER]), + offsetof (struct window, gutter_size[TOP_GUTTER]), gutter_geometry_changed_in_window, 0, 0); @@ -954,8 +946,7 @@ See `default-gutter-height' for more information. */ ); Vgutter_size[BOTTOM_GUTTER] = Fmake_specifier (Qgutter_size); set_specifier_caching (Vgutter_size[BOTTOM_GUTTER], - slot_offset (struct window, - gutter_size[BOTTOM_GUTTER]), + offsetof (struct window, gutter_size[BOTTOM_GUTTER]), gutter_geometry_changed_in_window, 0, 0); @@ -968,8 +959,7 @@ See `default-gutter-height' for more information. */ ); Vgutter_size[LEFT_GUTTER] = Fmake_specifier (Qnatnum); set_specifier_caching (Vgutter_size[LEFT_GUTTER], - slot_offset (struct window, - gutter_size[LEFT_GUTTER]), + offsetof (struct window, gutter_size[LEFT_GUTTER]), gutter_geometry_changed_in_window, 0, 0); @@ -982,8 +972,7 @@ See `default-gutter-height' for more information. */ ); Vgutter_size[RIGHT_GUTTER] = Fmake_specifier (Qnatnum); set_specifier_caching (Vgutter_size[RIGHT_GUTTER], - slot_offset (struct window, - gutter_size[RIGHT_GUTTER]), + offsetof (struct window, gutter_size[RIGHT_GUTTER]), gutter_geometry_changed_in_window, 0, 0); @@ -1036,8 +1025,7 @@ instead. */ ); Vdefault_gutter_border_width = Fmake_specifier (Qnatnum); set_specifier_caching (Vdefault_gutter_border_width, - slot_offset (struct window, - default_gutter_border_width), + offsetof (struct window, default_gutter_border_width), default_gutter_border_width_changed_in_window, 0, 0); @@ -1050,8 +1038,8 @@ See `default-gutter-height' for more information. */ ); Vgutter_border_width[TOP_GUTTER] = Fmake_specifier (Qnatnum); set_specifier_caching (Vgutter_border_width[TOP_GUTTER], - slot_offset (struct window, - gutter_border_width[TOP_GUTTER]), + offsetof (struct window, + gutter_border_width[TOP_GUTTER]), gutter_geometry_changed_in_window, 0, 0); @@ -1064,8 +1052,8 @@ See `default-gutter-height' for more information. */ ); Vgutter_border_width[BOTTOM_GUTTER] = Fmake_specifier (Qnatnum); set_specifier_caching (Vgutter_border_width[BOTTOM_GUTTER], - slot_offset (struct window, - gutter_border_width[BOTTOM_GUTTER]), + offsetof (struct window, + gutter_border_width[BOTTOM_GUTTER]), gutter_geometry_changed_in_window, 0, 0); @@ -1078,8 +1066,8 @@ See `default-gutter-height' for more information. */ ); Vgutter_border_width[LEFT_GUTTER] = Fmake_specifier (Qnatnum); set_specifier_caching (Vgutter_border_width[LEFT_GUTTER], - slot_offset (struct window, - gutter_border_width[LEFT_GUTTER]), + offsetof (struct window, + gutter_border_width[LEFT_GUTTER]), gutter_geometry_changed_in_window, 0, 0); @@ -1092,8 +1080,8 @@ See `default-gutter-height' for more information. */ ); Vgutter_border_width[RIGHT_GUTTER] = Fmake_specifier (Qnatnum); set_specifier_caching (Vgutter_border_width[RIGHT_GUTTER], - slot_offset (struct window, - gutter_border_width[RIGHT_GUTTER]), + offsetof (struct window, + gutter_border_width[RIGHT_GUTTER]), gutter_geometry_changed_in_window, 0, 0); @@ -1133,8 +1121,8 @@ visibility specifiers have a fallback value of true. */ ); Vdefault_gutter_visible_p = Fmake_specifier (Qboolean); set_specifier_caching (Vdefault_gutter_visible_p, - slot_offset (struct window, - default_gutter_visible_p), + offsetof (struct window, + default_gutter_visible_p), default_gutter_visible_p_changed_in_window, 0, 0); @@ -1147,8 +1135,8 @@ See `default-gutter-visible-p' for more information. */ ); Vgutter_visible_p[TOP_GUTTER] = Fmake_specifier (Qboolean); set_specifier_caching (Vgutter_visible_p[TOP_GUTTER], - slot_offset (struct window, - gutter_visible_p[TOP_GUTTER]), + offsetof (struct window, + gutter_visible_p[TOP_GUTTER]), gutter_geometry_changed_in_window, 0, 0); @@ -1161,8 +1149,8 @@ See `default-gutter-visible-p' for more information. */ ); Vgutter_visible_p[BOTTOM_GUTTER] = Fmake_specifier (Qboolean); set_specifier_caching (Vgutter_visible_p[BOTTOM_GUTTER], - slot_offset (struct window, - gutter_visible_p[BOTTOM_GUTTER]), + offsetof (struct window, + gutter_visible_p[BOTTOM_GUTTER]), gutter_geometry_changed_in_window, 0, 0); @@ -1175,8 +1163,8 @@ See `default-gutter-visible-p' for more information. */ ); Vgutter_visible_p[LEFT_GUTTER] = Fmake_specifier (Qboolean); set_specifier_caching (Vgutter_visible_p[LEFT_GUTTER], - slot_offset (struct window, - gutter_visible_p[LEFT_GUTTER]), + offsetof (struct window, + gutter_visible_p[LEFT_GUTTER]), gutter_geometry_changed_in_window, 0, 0); @@ -1189,8 +1177,8 @@ See `default-gutter-visible-p' for more information. */ ); Vgutter_visible_p[RIGHT_GUTTER] = Fmake_specifier (Qboolean); set_specifier_caching (Vgutter_visible_p[RIGHT_GUTTER], - slot_offset (struct window, - gutter_visible_p[RIGHT_GUTTER]), + offsetof (struct window, + gutter_visible_p[RIGHT_GUTTER]), gutter_geometry_changed_in_window, 0, 0); diff --git a/src/input-method-motif.c b/src/input-method-motif.c index a1cb446..d209e88 100644 --- a/src/input-method-motif.c +++ b/src/input-method-motif.c @@ -115,9 +115,10 @@ XIM_init_frame (struct frame *f) default face, rather than foreground and background resources, or that the user can use set-frame-parameters to set xic attributes */ -#define res(name, class, representation, field, default_value) \ - { name, class, representation, sizeof(xim_resources.field), \ - XtOffsetOf(xim_resources_t, field), XtRString, default_value } +#define res(name, class, representation, field, default_value) \ + { name, class, representation, sizeof(xim_resources.field), \ + XtOffsetOf(xim_resources_t, field), \ + XtRString, (XtPointer) (default_value) } static XtResource resources[] = { diff --git a/src/insdel.c b/src/insdel.c index ae3c614..b3e4574 100644 --- a/src/insdel.c +++ b/src/insdel.c @@ -2057,7 +2057,12 @@ multiple_change_finish_up (Lisp_Object buffer) of the specified region, that will also be handled correctly. begin_multiple_change() returns a number (actually a specpdl depth) - that you must pass to end_multiple_change() when you are done. */ + that you must pass to end_multiple_change() when you are done. + + FSF Emacs 20 implements a similar feature, accessible from Lisp + through a `combine-after-change-calls' special form, which is + essentially equivalent to this function. We should consider + whether we want to introduce a similar Lisp form. */ int begin_multiple_change (struct buffer *buf, Bufpos start, Bufpos end) @@ -2105,7 +2110,8 @@ change_function_restore (Lisp_Object buffer) /* We should first reset the variable and then change the buffer, because Fset_buffer() can throw. */ inside_change_hook = 0; - Fset_buffer (buffer); + if (XBUFFER (buffer) != current_buffer) + Fset_buffer (buffer); return Qnil; } @@ -2155,6 +2161,7 @@ signal_before_change (struct buffer *buf, Bufpos start, Bufpos end) if (!inside_change_hook) { Lisp_Object buffer; + int speccount; /* Are we in a multiple-change session? */ if (buf->text->changes->in_multiple_change && @@ -2192,6 +2199,9 @@ signal_before_change (struct buffer *buf, Bufpos start, Bufpos end) } /* Now in any case run the before-change-functions if any. */ + speccount = specpdl_depth (); + record_unwind_protect (change_function_restore, Fcurrent_buffer ()); + inside_change_hook = 1; MAP_INDIRECT_BUFFERS (buf, mbuf, bufcons) { @@ -2200,25 +2210,28 @@ signal_before_change (struct buffer *buf, Bufpos start, Bufpos end) /* Obsolete, for compatibility */ || !NILP (symbol_value_in_buffer (Qbefore_change_function, buffer))) { - int speccount = specpdl_depth (); - record_unwind_protect (change_function_restore, Fcurrent_buffer ()); set_buffer_internal (buf); - inside_change_hook = 1; va_run_hook_with_args (Qbefore_change_functions, 2, make_int (start), make_int (end)); /* Obsolete, for compatibility */ va_run_hook_with_args (Qbefore_change_function, 2, make_int (start), make_int (end)); - unbind_to (speccount, Qnil); } } + /* Make sure endpoints remain valid. before-change-functions + might have modified the buffer. */ + if (start < BUF_BEGV (buf)) start = BUF_BEGV (buf); + if (start > BUF_ZV (buf)) start = BUF_ZV (buf); + if (end < BUF_BEGV (buf)) end = BUF_BEGV (buf); + if (end > BUF_ZV (buf)) end = BUF_ZV (buf); + MAP_INDIRECT_BUFFERS (buf, mbuf, bufcons) { XSETBUFFER (buffer, mbuf); - report_extent_modification (buffer, start, end, - &inside_change_hook, 0); + report_extent_modification (buffer, start, end, 0); } + unbind_to (speccount, Qnil); /* Only now do we indicate that the before-change-functions have been called, in case some function throws out. */ @@ -2255,6 +2268,7 @@ signal_after_change (struct buffer *buf, Bufpos start, Bufpos orig_end, if (!inside_change_hook) { Lisp_Object buffer; + int speccount; if (buf->text->changes->in_multiple_change && buf->text->changes->mc_begin != 0) @@ -2267,6 +2281,9 @@ signal_after_change (struct buffer *buf, Bufpos start, Bufpos orig_end, return; /* after-change-functions signalled when all changes done */ } + speccount = specpdl_depth (); + record_unwind_protect (change_function_restore, Fcurrent_buffer ()); + inside_change_hook = 1; MAP_INDIRECT_BUFFERS (buf, mbuf, bufcons) { XSETBUFFER (buffer, mbuf); @@ -2275,10 +2292,7 @@ signal_after_change (struct buffer *buf, Bufpos start, Bufpos orig_end, /* Obsolete, for compatibility */ || !NILP (symbol_value_in_buffer (Qafter_change_function, buffer))) { - int speccount = specpdl_depth (); - record_unwind_protect (change_function_restore, Fcurrent_buffer ()); set_buffer_internal (buf); - inside_change_hook = 1; /* The actual after-change functions take slightly different arguments than what we were passed. */ va_run_hook_with_args (Qafter_change_functions, 3, @@ -2288,16 +2302,24 @@ signal_after_change (struct buffer *buf, Bufpos start, Bufpos orig_end, va_run_hook_with_args (Qafter_change_function, 3, make_int (start), make_int (new_end), make_int (orig_end - start)); - unbind_to (speccount, Qnil); } } + /* Make sure endpoints remain valid. after-change-functions + might have modified the buffer. */ + if (start < BUF_BEGV (buf)) start = BUF_BEGV (buf); + if (start > BUF_ZV (buf)) start = BUF_ZV (buf); + if (new_end < BUF_BEGV (buf)) new_end = BUF_BEGV (buf); + if (new_end > BUF_ZV (buf)) new_end = BUF_ZV (buf); + if (orig_end < BUF_BEGV (buf)) orig_end = BUF_BEGV (buf); + if (orig_end > BUF_ZV (buf)) orig_end = BUF_ZV (buf); + MAP_INDIRECT_BUFFERS (buf, mbuf, bufcons) { XSETBUFFER (buffer, mbuf); - report_extent_modification (buffer, start, new_end, - &inside_change_hook, 1); + report_extent_modification (buffer, start, new_end, 1); } + unbind_to (speccount, Qnil); /* sets inside_change_hook back to 0 */ } } diff --git a/src/keymap.c b/src/keymap.c index 04b6b46..2fd38ef 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -2116,7 +2116,7 @@ lookup_keys (Lisp_Object keymap, int nkeys, Lisp_Object *keys, if (nkeys == 0) return Qnil; - if (nkeys < (countof (kkk))) + if (nkeys < countof (kkk)) raw_keys = kkk; else raw_keys = alloca_array (struct key_data, nkeys); @@ -2146,7 +2146,7 @@ lookup_events (Lisp_Object event_head, int nmaps, Lisp_Object keymaps[], nkeys = event_chain_count (event_head); - if (nkeys < (countof (kkk))) + if (nkeys < countof (kkk)) raw_keys = kkk; else raw_keys = alloca_array (struct key_data, nkeys); @@ -2372,8 +2372,7 @@ get_relevant_keymaps (Lisp_Object keys, get_relevant_extent_keymaps (Fevent_modeline_position (terminal), XBUFFER (buffer)->generated_modeline_string, - /* #### third arg should maybe be a glyph. */ - Qnil, &closure); + Fevent_glyph_extent (terminal), &closure); if (!UNBOUNDP (map) && !NILP (map)) relevant_map_push (get_keymap (map, 1, 1), &closure); diff --git a/src/libsst.c b/src/libsst.c index 677852d..4180167 100644 --- a/src/libsst.c +++ b/src/libsst.c @@ -20,29 +20,25 @@ #include "lisp.h" #endif -#ifdef STDC_HEADERS #include -#endif +#include +#include #ifdef HAVE_UNISTD_H #include #endif -#include -#include #include "libsst.h" #define AUDBUF 1024 -extern void usleep(); - int sst_open(play_level, record_level) int play_level, record_level; { int fd, i, gr, ger, gx; struct audio_ioctl ai; - char *getenv(), *ep; + char *ep; fd = open( "/dev/audio", O_RDWR ); if ( fd < 0 ) diff --git a/src/lisp.h b/src/lisp.h index 8c05fdd..04dc325 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -116,13 +116,11 @@ void *xmalloc_and_zero (size_t size); void *xrealloc (void *, size_t size); char *xstrdup (CONST char *); /* generally useful */ -#define countof(x) ((int) (sizeof(x)/sizeof(x[0]))) -#define slot_offset(type, slot_name) \ - ((unsigned) (((char *) (&(((type *)0)->slot_name))) - ((char *)0))) +#define countof(x) ((int) (sizeof(x)/sizeof((x)[0]))) #define xnew(type) ((type *) xmalloc (sizeof (type))) #define xnew_array(type, len) ((type *) xmalloc ((len) * sizeof (type))) #define xnew_and_zero(type) ((type *) xmalloc_and_zero (sizeof (type))) -#define xzero(lvalue) ((void) memset (&(lvalue), 0, sizeof (lvalue))) +#define xzero(lvalue) ((void) memset (&(lvalue), '\0', sizeof (lvalue))) #define xnew_array_and_zero(type, len) ((type *) xmalloc_and_zero ((len) * sizeof (type))) #define XREALLOC_ARRAY(ptr, type, len) ((void) (ptr = (type *) xrealloc (ptr, (len) * sizeof (type)))) #define alloca_array(type, len) ((type *) alloca ((len) * sizeof (type))) @@ -156,7 +154,6 @@ void xfree_1 (void *); } while (0) #else void xfree (void *); -#define xfree_1 xfree #endif /* ERROR_CHECK_MALLOC */ #ifndef PRINTF_ARGS @@ -195,7 +192,7 @@ void xfree (void *); #ifndef ALIGNOF # if defined (__GNUC__) && (__GNUC__ >= 2) -# define ALIGNOF(x) __alignof (x) +# define ALIGNOF(x) __alignof__ (x) # else # define ALIGNOF(x) sizeof (x) # endif diff --git a/src/md5.c b/src/md5.c index 775942a..8e524f6 100644 --- a/src/md5.c +++ b/src/md5.c @@ -482,7 +482,7 @@ md5_coding_system (Lisp_Object object, Lisp_Object coding, Lisp_Object istream, { /* Attempt to autodetect the coding of the string. This is VERY hit-and-miss. */ - enum eol_type eol = EOL_AUTODETECT; + eol_type_t eol = EOL_AUTODETECT; coding_system = Fget_coding_system (Qundecided); determine_real_coding_system (XLSTREAM (istream), &coding_system, &eol); diff --git a/src/menubar-x.c b/src/menubar-x.c index c15e271..62f4afc 100644 --- a/src/menubar-x.c +++ b/src/menubar-x.c @@ -94,14 +94,11 @@ menu_item_descriptor_to_widget_value_1 (Lisp_Object desc, prohibits GC. */ /* !!#### This function has not been Mule-ized */ int menubar_root_p = (menu_type == MENUBAR_TYPE && depth == 0); - widget_value *wv; - Lisp_Object wv_closure; int count = specpdl_depth (); int partition_seen = 0; + widget_value *wv = xmalloc_widget_value (); + Lisp_Object wv_closure = make_opaque_ptr (wv); - wv = xmalloc_widget_value (); - - wv_closure = make_opaque_ptr (wv); record_unwind_protect (widget_value_unwind, wv_closure); if (STRINGP (desc)) @@ -363,7 +360,7 @@ int in_menu_callback; static Lisp_Object restore_in_menu_callback (Lisp_Object val) { - in_menu_callback = XINT(val); + in_menu_callback = XINT (val); return Qnil; } #endif /* LWLIB_MENUBARS_LUCID || LWLIB_MENUBARS_MOTIF */ @@ -514,24 +511,21 @@ pre_activate_callback (Widget widget, LWLIB_ID id, XtPointer client_data) static widget_value * compute_menubar_data (struct frame *f, Lisp_Object menubar, int deep_p) { - widget_value *data; - if (NILP (menubar)) - data = 0; + return 0; else { - Lisp_Object old_buffer; + widget_value *data; int count = specpdl_depth (); - old_buffer = Fcurrent_buffer (); - record_unwind_protect (Fset_buffer, old_buffer); - Fset_buffer ( XWINDOW (FRAME_SELECTED_WINDOW (f))->buffer); + record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); + Fset_buffer (XWINDOW (FRAME_SELECTED_WINDOW (f))->buffer); data = menu_item_descriptor_to_widget_value (menubar, MENUBAR_TYPE, deep_p, 0); - Fset_buffer (old_buffer); unbind_to (count, Qnil); + + return data; } - return data; } static int @@ -541,7 +535,7 @@ set_frame_menubar (struct frame *f, int deep_p, int first_time_p) Lisp_Object menubar; int menubar_visible; long id; - /* As for the toolbar, the minibuffer does not have its own menubar. */ + /* As with the toolbar, the minibuffer does not have its own menubar. */ struct window *w = XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f)); if (! FRAME_X_P (f)) @@ -693,7 +687,7 @@ make_dummy_xbutton_event (XEvent *dummy, XtSetArg (al [1], XtNy, &shelly); XtGetValues (shell, al, 2); } -#endif +#endif XtSetArg (al [0], XtNx, &framex); XtSetArg (al [1], XtNy, &framey); XtGetValues (daddy, al, 2); diff --git a/src/menubar.c b/src/menubar.c index 7a6e2dc..c92232f 100644 --- a/src/menubar.c +++ b/src/menubar.c @@ -588,11 +588,9 @@ This is a specifier; use `set-specifier' to change it. set_specifier_fallback (Vmenubar_visible_p, list1 (Fcons (Qnil, Qt))); set_specifier_caching (Vmenubar_visible_p, - slot_offset (struct window, - menubar_visible_p), + offsetof (struct window, menubar_visible_p), menubar_visible_p_changed, - slot_offset (struct frame, - menubar_visible_p), + offsetof (struct frame, menubar_visible_p), menubar_visible_p_changed_in_frame); } diff --git a/src/mule-ccl.c b/src/mule-ccl.c index 7e92134..b09fd3b 100644 --- a/src/mule-ccl.c +++ b/src/mule-ccl.c @@ -645,20 +645,20 @@ static tr_stack *mapping_stack_pointer; /* Suspend CCL program because of reading from empty input buffer or writing to full output buffer. When this program is resumed, the - same I/O command is executed. */ + same I/O command is executed. The `if (1)' is for warning suppression. */ #define CCL_SUSPEND(stat) \ do { \ ic--; \ ccl->status = stat; \ - goto ccl_finish; \ + if (1) goto ccl_finish; \ } while (0) /* Terminate CCL program because of invalid command. Should not occur - in the normal case. */ + in the normal case. The `if (1)' is for warning suppression. */ #define CCL_INVALID_CMD \ do { \ ccl->status = CCL_STAT_INVALID_CMD; \ - goto ccl_error_handler; \ + if (1) goto ccl_error_handler; \ } while (0) /* Encode one character CH to multibyte form and write to the current diff --git a/src/mule-charset.c b/src/mule-charset.c index b0a60fa..069bdd8 100644 --- a/src/mule-charset.c +++ b/src/mule-charset.c @@ -92,9 +92,9 @@ static const struct struct_description charset_lookup_description = { rep_bytes_by_first_byte(c) is more efficient than the equivalent canonical computation: - (BYTE_ASCII_P (c) ? 1 : XCHARSET_REP_BYTES (CHARSET_BY_LEADING_BYTE (c))) */ + XCHARSET_REP_BYTES (CHARSET_BY_LEADING_BYTE (c)) */ -Bytecount rep_bytes_by_first_byte[0xA0] = +const Bytecount rep_bytes_by_first_byte[0xA0] = { /* 0x00 - 0x7f are for straight ASCII */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -506,9 +506,6 @@ make_charset (int id, Lisp_Object name, unsigned char rep_bytes, assert (NILP (chlook->charset_by_leading_byte[id - 128])); chlook->charset_by_leading_byte[id - 128] = obj; - if (id < 0xA0) - /* official leading byte */ - rep_bytes_by_first_byte[id] = rep_bytes; /* Some charsets are "faux" and don't have names or really exist at all except in the leading-byte table. */ @@ -1122,6 +1119,27 @@ Return the character set of char CH. (CHAR_LEADING_BYTE (XCHAR (ch)))); } +DEFUN ("char-octet", Fchar_octet, 1, 2, 0, /* +Return the octet numbered N (should be 0 or 1) of char CH. +N defaults to 0 if omitted. +*/ + (ch, n)) +{ + Lisp_Object charset; + int octet0, octet1; + + CHECK_CHAR_COERCE_INT (ch); + + BREAKUP_CHAR (XCHAR (ch), charset, octet0, octet1); + + if (NILP (n) || EQ (n, Qzero)) + return make_int (octet0); + else if (EQ (n, make_int (1))) + return make_int (octet1); + else + signal_simple_error ("Octet number must be 0 or 1", n); +} + DEFUN ("split-char", Fsplit_char, 1, 1, 0, /* Return list of charset and one or two position-codes of CHAR. */ @@ -1253,6 +1271,7 @@ syms_of_mule_charset (void) DEFSUBR (Fmake_char); DEFSUBR (Fchar_charset); + DEFSUBR (Fchar_octet); DEFSUBR (Fsplit_char); #ifdef ENABLE_COMPOSITE_CHARS diff --git a/src/mule-charset.h b/src/mule-charset.h index 07f72df..5e0caa4 100644 --- a/src/mule-charset.h +++ b/src/mule-charset.h @@ -239,7 +239,7 @@ Boston, MA 02111-1307, USA. */ Character set Encoding (PC == position-code) ------------- -------- (LB == leading-byte) - ASCII PC1 | + ASCII PC1 | Control-1 LB | PC1 + 0xA0 Dimension-1 official LB | PC1 + 0x80 Dimension-1 private 0x9E | LB | PC1 + 0x80 @@ -557,17 +557,6 @@ struct charset_lookup { extern struct charset_lookup *chlook; -/* Table of number of bytes in the string representation of a character - indexed by the first byte of that representation. - - This value can be derived other ways -- e.g. something like - - (BYTE_ASCII_P (first_byte) ? 1 : - XCHARSET_REP_BYTES (CHARSET_BY_LEADING_BYTE (first_byte))) - - but it's faster this way. */ -extern Bytecount rep_bytes_by_first_byte[0xA0]; - #ifdef ERROR_CHECK_TYPECHECK /* int not Bufbyte even though that is the actual type of a leading byte. This way, out-ot-range values will get caught rather than automatically @@ -589,21 +578,26 @@ CHARSET_BY_LEADING_BYTE (int lb) #define CHARSET_BY_ATTRIBUTES(type, final, dir) \ (chlook->charset_by_attributes[type][final][dir]) -#ifdef ERROR_CHECK_TYPECHECK -/* Number of bytes in the string representation of a character */ +/* Table of number of bytes in the string representation of a character + indexed by the first byte of that representation. + + This value can be derived in other ways -- e.g. something like + XCHARSET_REP_BYTES (CHARSET_BY_LEADING_BYTE (first_byte)) + but it's faster this way. */ +extern const Bytecount rep_bytes_by_first_byte[0xA0]; + +/* Number of bytes in the string representation of a character. */ INLINE int REP_BYTES_BY_FIRST_BYTE (int fb); INLINE int REP_BYTES_BY_FIRST_BYTE (int fb) { - assert (fb >= 0 && fb < 0xA0); +#ifdef ERROR_CHECK_TYPECHECK + assert (0 <= fb && fb < 0xA0); +#endif return rep_bytes_by_first_byte[fb]; } -#else -#define REP_BYTES_BY_FIRST_BYTE(fb) (rep_bytes_by_first_byte[fb]) -#endif - /************************************************************************/ /* Dealing with characters */ diff --git a/src/ntheap.c b/src/ntheap.c index ff5ef3a..8f9984e 100644 --- a/src/ntheap.c +++ b/src/ntheap.c @@ -148,7 +148,8 @@ allocate_heap (void) still a pretty decent arena to play in! */ unsigned long base = 0x01B00000; /* 27MB */ - unsigned long end = 1 << VALBITS; /* 256MB */ + /* Temporary hack for the non-starting problem - use 28 (256Mb) rather than VALBITS (1Gb) */ + unsigned long end = 1 << 28; /* 256MB */ void *ptr = NULL; #define NTHEAP_PROBE_BASE 1 diff --git a/src/print.c b/src/print.c index 5b828ca..41591be 100644 --- a/src/print.c +++ b/src/print.c @@ -627,8 +627,13 @@ print_error_message (Lisp_Object error_object, Lisp_Object stream) { int first = 1; int speccount = specpdl_depth (); + Lisp_Object frame = Qnil; + struct gcpro gcpro1; + GCPRO1 (stream); specbind (Qprint_message_label, Qerror); + stream = print_prepare (stream, &frame); + tail = Fcdr (error_object); if (EQ (type, Qerror)) { @@ -650,6 +655,8 @@ print_error_message (Lisp_Object error_object, Lisp_Object stream) tail = Fcdr (tail); first = 0; } + print_finish (stream, frame); + UNGCPRO; unbind_to (speccount, Qnil); return; /* not reached */ diff --git a/src/redisplay-output.c b/src/redisplay-output.c index 16a27f2..8f41eff 100644 --- a/src/redisplay-output.c +++ b/src/redisplay-output.c @@ -1234,8 +1234,8 @@ redisplay_output_layout (struct window *w, XSETWINDOW (window, w); - layout_height = glyph_height (image_instance, Qnil, findex, window); - layout_width = glyph_width (image_instance, Qnil, findex, window); + layout_height = glyph_height (image_instance, window); + layout_width = glyph_width (image_instance, window); dga->height = layout_height; dga->width = layout_width; @@ -1319,8 +1319,8 @@ redisplay_output_layout (struct window *w, struct display_glyph_area cdga; cdga.xoffset = IMAGE_INSTANCE_XOFFSET (childii) - dga->xoffset; cdga.yoffset = IMAGE_INSTANCE_YOFFSET (childii) - dga->yoffset; - cdga.width = glyph_width (child, Qnil, findex, window); - cdga.height = glyph_height (child, Qnil, findex, window); + cdga.width = glyph_width (child, window); + cdga.height = glyph_height (child, window); /* Although normalization is done by the output routines we have to do it here so that they don't try and @@ -1362,9 +1362,9 @@ redisplay_output_layout (struct window *w, xzero (dl); /* Munge boxes into display lines. */ dl.ypos = (cdb.ypos - cdga.yoffset) - + glyph_ascent (child, Qnil, findex, window); - dl.ascent = glyph_ascent (child, Qnil, findex, window); - dl.descent = glyph_descent (child, Qnil, findex, window); + + glyph_ascent (child, window); + dl.ascent = glyph_ascent (child, window); + dl.descent = glyph_descent (child, window); dl.top_clip = cdga.yoffset; dl.clip = (dl.ypos + dl.descent) - (cdb.ypos + cdb.height); /* output_string doesn't understand offsets in diff --git a/src/redisplay.c b/src/redisplay.c index 7e29d59..17de60e 100644 --- a/src/redisplay.c +++ b/src/redisplay.c @@ -246,18 +246,13 @@ typedef struct } prop_block_dynarr; -static void generate_formatted_string_db (Lisp_Object format_str, - Lisp_Object result_str, - struct window *w, - struct display_line *dl, - struct display_block *db, - face_index findex, int min_pixpos, - int max_pixpos, int type); static Charcount generate_fstring_runes (struct window *w, pos_data *data, Charcount pos, Charcount min_pos, Charcount max_pos, Lisp_Object elt, int depth, int max_pixsize, - face_index findex, int type); + face_index findex, int type, + Charcount *offset, + Lisp_Object cur_ext); static prop_block_dynarr *add_glyph_rune (pos_data *data, struct glyph_block *gb, int pos_type, int allow_cursor, @@ -300,10 +295,6 @@ static int max_preempts; isn't any reason we need more than a single set. */ display_line_dynarr *cmotion_display_lines; -/* Used by generate_formatted_string. Global because they get used so - much that the dynamic allocation time adds up. */ -static Emchar_dynarr *formatted_string_emchar_dynarr; -static struct display_line formatted_string_display_line; /* We store the extents that we need to generate in a Dynarr and then frob them all on at the end of generating the string. We do it this way rather than adding them as we generate the string because @@ -428,7 +419,6 @@ int windows_structure_changed; Lisp_Object Vbar_cursor; Lisp_Object Qbar_cursor; - int visible_bell; /* If true and the terminal will support it then the frame will flash instead of beeping when an error occurs */ @@ -1551,7 +1541,7 @@ add_glyph_rune (pos_data *data, struct glyph_block *gb, int pos_type, if (cachel) width = cachel->width; else - width = glyph_width (gb->glyph, Qnil, data->findex, data->window); + width = glyph_width (gb->glyph, data->window); if (!width) return NULL; @@ -1614,9 +1604,8 @@ add_glyph_rune (pos_data *data, struct glyph_block *gb, int pos_type, } else { - ascent = glyph_ascent (gb->glyph, Qnil, data->findex, data->window); - descent = glyph_descent (gb->glyph, Qnil, data->findex, - data->window); + ascent = glyph_ascent (gb->glyph, data->window); + descent = glyph_descent (gb->glyph, data->window); } baseline = glyph_baseline (gb->glyph, data->window); @@ -2777,8 +2766,8 @@ add_margin_runes (struct display_line *dl, struct display_block *db, int start, unsigned short ascent, descent; Lisp_Object baseline = glyph_baseline (gb->glyph, window); - ascent = glyph_ascent (gb->glyph, Qnil, gb->findex, window); - descent = glyph_descent (gb->glyph, Qnil, gb->findex, window); + ascent = glyph_ascent (gb->glyph, window); + descent = glyph_descent (gb->glyph, window); /* A pixmap that has not had a baseline explicitly set. We use the existing ascent / descent ratio of the @@ -2892,7 +2881,7 @@ create_left_glyph_block (struct window *w, struct display_line *dl, { int width; - width = glyph_width (gb->glyph, Qnil, gb->findex, window); + width = glyph_width (gb->glyph, window); if (white_in_start - width >= left_in_end) { @@ -2943,7 +2932,7 @@ create_left_glyph_block (struct window *w, struct display_line *dl, if (extent_begin_glyph_layout (XEXTENT (gb->extent)) == GL_INSIDE_MARGIN) { - gb->width = glyph_width (gb->glyph, Qnil, gb->findex, window); + gb->width = glyph_width (gb->glyph, window); used_in += gb->width; Dynarr_add (ib, *gb); } @@ -3012,7 +3001,7 @@ create_left_glyph_block (struct window *w, struct display_line *dl, if (extent_begin_glyph_layout (XEXTENT (gb->extent)) == GL_INSIDE_MARGIN) { - int width = glyph_width (gb->glyph, Qnil, gb->findex, window); + int width = glyph_width (gb->glyph, window); if (used_out) { @@ -3054,7 +3043,7 @@ create_left_glyph_block (struct window *w, struct display_line *dl, if (extent_begin_glyph_layout (XEXTENT (gb->extent)) == GL_OUTSIDE_MARGIN) { - int width = glyph_width (gb->glyph, Qnil, gb->findex, window); + int width = glyph_width (gb->glyph, window); if (out_end + width <= in_out_start) { @@ -3211,7 +3200,7 @@ create_right_glyph_block (struct window *w, struct display_line *dl) if (extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_WHITESPACE) { - int width = glyph_width (gb->glyph, Qnil, gb->findex, window); + int width = glyph_width (gb->glyph, window); if (white_in_end + width <= dl->bounds.right_in) { @@ -3261,7 +3250,7 @@ create_right_glyph_block (struct window *w, struct display_line *dl) if (extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_INSIDE_MARGIN) { - gb->width = glyph_width (gb->glyph, Qnil, gb->findex, window); + gb->width = glyph_width (gb->glyph, window); used_in += gb->width; Dynarr_add (ib, *gb); } @@ -3325,7 +3314,7 @@ create_right_glyph_block (struct window *w, struct display_line *dl) if (extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_INSIDE_MARGIN) { - int width = glyph_width (gb->glyph, Qnil, gb->findex, window); + int width = glyph_width (gb->glyph, window); if (used_out) { @@ -3366,7 +3355,7 @@ create_right_glyph_block (struct window *w, struct display_line *dl) if (extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_OUTSIDE_MARGIN) { - int width = glyph_width (gb->glyph, Qnil, gb->findex, window); + int width = glyph_width (gb->glyph, window); if (out_start - width >= in_out_end) { @@ -3482,9 +3471,119 @@ create_right_glyph_block (struct window *w, struct display_line *dl) /* */ /***************************************************************************/ +/* This function is also used in frame.c by `generate_title_string' */ +void +generate_formatted_string_db (Lisp_Object format_str, Lisp_Object result_str, + struct window *w, struct display_line *dl, + struct display_block *db, face_index findex, + int min_pixpos, int max_pixpos, int type) +{ + struct frame *f = XFRAME (w->frame); + struct device *d = XDEVICE (f->device); + + pos_data data; + int c_pixpos; + Charcount offset = 0; + + xzero (data); + data.d = d; + data.db = db; + data.dl = dl; + data.findex = findex; + data.pixpos = min_pixpos; + data.max_pixpos = max_pixpos; + data.cursor_type = NO_CURSOR; + data.last_charset = Qunbound; + data.last_findex = DEFAULT_INDEX; + data.result_str = result_str; + data.is_modeline = 1; + data.string = Qnil; + XSETWINDOW (data.window, w); + + Dynarr_reset (formatted_string_extent_dynarr); + Dynarr_reset (formatted_string_extent_start_dynarr); + Dynarr_reset (formatted_string_extent_end_dynarr); + + /* result_str is nil when we're building a frame or icon title. Otherwise, + we're building a modeline, so the offset starts at the modeline + horizontal scrolling ammount */ + if (! NILP (result_str)) + offset = w->modeline_hscroll; + generate_fstring_runes (w, &data, 0, 0, -1, format_str, 0, + max_pixpos - min_pixpos, findex, type, &offset, + Qnil); + + if (Dynarr_length (db->runes)) + { + struct rune *rb = + Dynarr_atp (db->runes, Dynarr_length (db->runes) - 1); + c_pixpos = rb->xpos + rb->width; + } + else + c_pixpos = min_pixpos; + + /* If we don't reach the right side of the window, add a blank rune + to make up the difference. This usually only occurs if the + modeline face is using a proportional width font or a fixed width + font of a different size from the default face font. */ + + if (c_pixpos < max_pixpos) + { + data.pixpos = c_pixpos; + data.blank_width = max_pixpos - data.pixpos; + + add_blank_rune (&data, NULL, 0); + } + + /* Now create the result string and frob the extents into it. */ + if (!NILP (result_str)) + { + int elt; + Bytecount len; + Bufbyte *strdata; + struct buffer *buf = XBUFFER (WINDOW_BUFFER (w)); + + detach_all_extents (result_str); + resize_string (XSTRING (result_str), -1, + data.bytepos - XSTRING_LENGTH (result_str)); + + strdata = XSTRING_DATA (result_str); + + for (elt = 0, len = 0; elt < Dynarr_length (db->runes); elt++) + { + if (Dynarr_atp (db->runes, elt)->type == RUNE_CHAR) + { + len += (set_charptr_emchar + (strdata + len, Dynarr_atp (db->runes, + elt)->object.chr.ch)); + } + } + + for (elt = 0; elt < Dynarr_length (formatted_string_extent_dynarr); + elt++) + { + Lisp_Object extent = Qnil; + Lisp_Object child; + + XSETEXTENT (extent, Dynarr_at (formatted_string_extent_dynarr, elt)); + child = Fgethash (extent, buf->modeline_extent_table, Qnil); + if (NILP (child)) + { + child = Fmake_extent (Qnil, Qnil, result_str); + Fputhash (extent, child, buf->modeline_extent_table); + } + Fset_extent_parent (child, extent); + set_extent_endpoints + (XEXTENT (child), + Dynarr_at (formatted_string_extent_start_dynarr, elt), + Dynarr_at (formatted_string_extent_end_dynarr, elt), + result_str); + } + } +} + /* Ensure that the given display line DL accurately represents the modeline for the given window. */ - static void generate_modeline (struct window *w, struct display_line *dl, int type) { @@ -3585,110 +3684,6 @@ generate_modeline (struct window *w, struct display_line *dl, int type) dl->ypos -= FRAME_BOTTOM_GUTTER_BOUNDS (f); } -static void -generate_formatted_string_db (Lisp_Object format_str, Lisp_Object result_str, - struct window *w, struct display_line *dl, - struct display_block *db, face_index findex, - int min_pixpos, int max_pixpos, int type) -{ - struct frame *f = XFRAME (w->frame); - struct device *d = XDEVICE (f->device); - - pos_data data; - int c_pixpos; - - xzero (data); - data.d = d; - data.db = db; - data.dl = dl; - data.findex = findex; - data.pixpos = min_pixpos; - data.max_pixpos = max_pixpos; - data.cursor_type = NO_CURSOR; - data.last_charset = Qunbound; - data.last_findex = DEFAULT_INDEX; - data.result_str = result_str; - data.is_modeline = 1; - data.string = Qnil; - XSETWINDOW (data.window, w); - - Dynarr_reset (formatted_string_extent_dynarr); - Dynarr_reset (formatted_string_extent_start_dynarr); - Dynarr_reset (formatted_string_extent_end_dynarr); - - /* This recursively builds up the modeline. */ - generate_fstring_runes (w, &data, 0, 0, -1, format_str, 0, - max_pixpos - min_pixpos, findex, type); - - if (Dynarr_length (db->runes)) - { - struct rune *rb = - Dynarr_atp (db->runes, Dynarr_length (db->runes) - 1); - c_pixpos = rb->xpos + rb->width; - } - else - c_pixpos = min_pixpos; - - /* If we don't reach the right side of the window, add a blank rune - to make up the difference. This usually only occurs if the - modeline face is using a proportional width font or a fixed width - font of a different size from the default face font. */ - - if (c_pixpos < max_pixpos) - { - data.pixpos = c_pixpos; - data.blank_width = max_pixpos - data.pixpos; - - add_blank_rune (&data, NULL, 0); - } - - /* Now create the result string and frob the extents into it. */ - if (!NILP (result_str)) - { - int elt; - Bytecount len; - Bufbyte *strdata; - struct buffer *buf = XBUFFER (WINDOW_BUFFER (w)); - - detach_all_extents (result_str); - resize_string (XSTRING (result_str), -1, - data.bytepos - XSTRING_LENGTH (result_str)); - - strdata = XSTRING_DATA (result_str); - - for (elt = 0, len = 0; elt < Dynarr_length (db->runes); elt++) - { - if (Dynarr_atp (db->runes, elt)->type == RUNE_CHAR) - { - len += (set_charptr_emchar - (strdata + len, Dynarr_atp (db->runes, - elt)->object.chr.ch)); - } - } - - for (elt = 0; elt < Dynarr_length (formatted_string_extent_dynarr); - elt++) - { - Lisp_Object extent = Qnil; - Lisp_Object child; - - XSETEXTENT (extent, Dynarr_at (formatted_string_extent_dynarr, elt)); - child = Fgethash (extent, buf->modeline_extent_table, Qnil); - if (NILP (child)) - { - child = Fmake_extent (Qnil, Qnil, result_str); - Fputhash (extent, child, buf->modeline_extent_table); - } - Fset_extent_parent (child, extent); - set_extent_endpoints - (XEXTENT (child), - Dynarr_at (formatted_string_extent_start_dynarr, elt), - Dynarr_at (formatted_string_extent_end_dynarr, elt), - result_str); - } - } -} - static Charcount add_string_to_fstring_db_runes (pos_data *data, CONST Bufbyte *str, Charcount pos, Charcount min_pos, Charcount max_pos) @@ -3734,7 +3729,8 @@ add_string_to_fstring_db_runes (pos_data *data, CONST Bufbyte *str, modeline extents. */ static Charcount add_glyph_to_fstring_db_runes (pos_data *data, Lisp_Object glyph, - Charcount pos, Charcount min_pos, Charcount max_pos) + Charcount pos, Charcount min_pos, + Charcount max_pos, Lisp_Object extent) { /* This function has been Mule-ized. */ Charcount end; @@ -3750,7 +3746,7 @@ add_glyph_to_fstring_db_runes (pos_data *data, Lisp_Object glyph, end = min (max_pos, end); gb.glyph = glyph; - gb.extent = Qnil; + gb.extent = extent; add_glyph_rune (data, &gb, BEGIN_GLYPHS, 0, 0); pos++; @@ -3777,7 +3773,8 @@ static Charcount generate_fstring_runes (struct window *w, pos_data *data, Charcount pos, Charcount min_pos, Charcount max_pos, Lisp_Object elt, int depth, int max_pixsize, - face_index findex, int type) + face_index findex, int type, Charcount *offset, + Lisp_Object cur_ext) { /* This function has been Mule-ized. */ /* #### The other losing things in this function are: @@ -3809,13 +3806,22 @@ tail_recurse: if (this != last) { - /* The string is just a string. */ + /* No %-construct */ Charcount size = - bytecount_to_charcount (last, this - last) + pos; - Charcount tmp_max = (max_pos == -1 ? size : min (size, max_pos)); + bytecount_to_charcount (last, this - last); - pos = add_string_to_fstring_db_runes (data, last, pos, pos, - tmp_max); + if (size <= *offset) + *offset -= size; + else + { + Charcount tmp_max = (max_pos == -1 ? pos + size - *offset : + min (pos + size - *offset, max_pos)); + CONST Bufbyte *tmp_last = charptr_n_addr (last, *offset); + + pos = add_string_to_fstring_db_runes (data, tmp_last, + pos, pos, tmp_max); + *offset = 0; + } } else /* *this == '%' */ { @@ -3840,7 +3846,7 @@ tail_recurse: pos = generate_fstring_runes (w, data, pos, spec_width, max_pos, Vglobal_mode_string, depth, max_pixsize, findex, - type); + type, offset, cur_ext); } else if (*this == '-') { @@ -3871,13 +3877,31 @@ tail_recurse: } else if (*this != 0) { - Bufbyte *str; Emchar ch = charptr_emchar (this); + Bufbyte *str; + Charcount size; + decode_mode_spec (w, ch, type); str = Dynarr_atp (mode_spec_bufbyte_string, 0); - pos = add_string_to_fstring_db_runes (data,str, pos, pos, - max_pos); + size = bytecount_to_charcount + /* Skip the null character added by `decode_mode_spec' */ + (str, Dynarr_length (mode_spec_bufbyte_string)) - 1; + + if (size <= *offset) + *offset -= size; + else + { + CONST Bufbyte *tmp_str = charptr_n_addr (str, *offset); + + /* ### NOTE: I don't understand why a tmp_max is not + computed and used here as in the plain string case + above. -- dv */ + pos = add_string_to_fstring_db_runes (data, tmp_str, + pos, pos, + max_pos); + *offset = 0; + } } /* NOT this++. There could be any sort of character at @@ -3903,13 +3927,26 @@ tail_recurse: if (!UNBOUNDP (tem)) { - /* If value is a string, output that string literally: + /* If value is a string, output that string literally: don't check for % within it. */ if (STRINGP (tem)) { - pos = - add_string_to_fstring_db_runes - (data, XSTRING_DATA (tem), pos, min_pos, max_pos); + Bufbyte *str = XSTRING_DATA (tem); + Charcount size = XSTRING_CHAR_LENGTH (tem); + + if (size <= *offset) + *offset -= size; + else + { + CONST Bufbyte *tmp_str = charptr_n_addr (str, *offset); + + /* ### NOTE: I don't understand why a tmp_max is not + computed and used here as in the plain string case + above. -- dv */ + pos = add_string_to_fstring_db_runes (data, tmp_str, pos, + min_pos, max_pos); + *offset = 0; + } } /* Give up right away for nil or t. */ else if (!EQ (tem, elt)) @@ -3934,50 +3971,53 @@ tail_recurse: else if (CONSP (elt)) { /* A cons cell: four distinct cases. - * If first element is a string or a cons, process all the elements - * and effectively concatenate them. - * If first element is a negative number, truncate displaying cdr to - * at most that many characters. If positive, pad (with spaces) - * to at least that many characters. - * If first element is a symbol, process the cadr or caddr recursively - * according to whether the symbol's value is non-nil or nil. - * If first element is a face, process the cdr recursively - * without altering the depth. + * - If first element is a string or a cons, process all the elements + * and effectively concatenate them. + * - If first element is a negative number, truncate displaying cdr to + * at most that many characters. If positive, pad (with spaces) + * to at least that many characters. + * - If first element is another symbol, process the cadr or caddr + * recursively according to whether the symbol's value is non-nil or + * nil. + * - If first element is a face, process the cdr recursively + * without altering the depth. */ + Lisp_Object car, tem; car = XCAR (elt); if (SYMBOLP (car)) - { - elt = XCDR (elt); - if (!CONSP (elt)) - goto invalid; - tem = symbol_value_in_buffer (car, w->buffer); - /* elt is now the cdr, and we know it is a cons cell. - Use its car if CAR has a non-nil value. */ - if (!UNBOUNDP (tem)) - { - if (!NILP (tem)) - { - elt = XCAR (elt); - goto tail_recurse; - } - } - /* Symbol's value is nil (or symbol is unbound) - * Get the cddr of the original list - * and if possible find the caddr and use that. - */ - elt = XCDR (elt); - if (NILP (elt)) - ; - else if (!CONSP (elt)) - goto invalid; - else - { - elt = XCAR (elt); - goto tail_recurse; - } - } + { + elt = XCDR (elt); + if (!CONSP (elt)) + goto invalid; + + tem = symbol_value_in_buffer (car, w->buffer); + /* elt is now the cdr, and we know it is a cons cell. + Use its car if CAR has a non-nil value. */ + if (!UNBOUNDP (tem)) + { + if (!NILP (tem)) + { + elt = XCAR (elt); + goto tail_recurse; + } + } + /* Symbol's value is nil (or symbol is unbound) + * Get the cddr of the original list + * and if possible find the caddr and use that. + */ + elt = XCDR (elt); + if (NILP (elt)) + ; + else if (!CONSP (elt)) + goto invalid; + else + { + elt = XCAR (elt); + goto tail_recurse; + } + } else if (INTP (car)) { Charcount lim = XINT (car); @@ -4016,13 +4056,14 @@ tail_recurse: else if (STRINGP (car) || CONSP (car)) { int limit = 50; + /* LIMIT is to protect against circular lists. */ while (CONSP (elt) && --limit > 0 && (pos < max_pos || max_pos == -1)) { pos = generate_fstring_runes (w, data, pos, pos, max_pos, - XCAR (elt), depth, - max_pixsize, findex, type); + XCAR (elt), depth, max_pixsize, + findex, type, offset, cur_ext); elt = XCDR (elt); } } @@ -4061,7 +4102,8 @@ tail_recurse: data->findex = new_findex; pos = generate_fstring_runes (w, data, pos, pos, max_pos, XCDR (elt), depth - 1, - max_pixsize, new_findex, type); + max_pixsize, new_findex, type, + offset, car); data->findex = old_findex; Dynarr_add (formatted_string_extent_dynarr, ext); Dynarr_add (formatted_string_extent_start_dynarr, start); @@ -4071,57 +4113,46 @@ tail_recurse: } else if (GLYPHP (elt)) { - pos = add_glyph_to_fstring_db_runes (data, elt, pos, pos, max_pos); + /* Glyphs are considered as one character with respect to the modeline + horizontal scrolling facility. -- dv */ + if (*offset > 0) + *offset -= 1; + else + pos = add_glyph_to_fstring_db_runes (data, elt, pos, pos, max_pos, + cur_ext); } else { invalid: - pos = - add_string_to_fstring_db_runes - (data, (CONST Bufbyte *) GETTEXT ("*invalid*"), pos, min_pos, - max_pos); + { + char *str = GETTEXT ("*invalid*"); + Charcount size = (Charcount) strlen (str); /* is this ok ?? -- dv */ + + if (size <= *offset) + *offset -= size; + else + { + CONST Bufbyte *tmp_str = + charptr_n_addr ((CONST Bufbyte *) str, *offset); + + /* ### NOTE: I don't understand why a tmp_max is not computed and + used here as in the plain string case above. -- dv */ + pos = add_string_to_fstring_db_runes (data, tmp_str, pos, + min_pos, max_pos); + *offset = 0; + } + } } if (min_pos > pos) { - add_string_to_fstring_db_runes (data, (CONST Bufbyte *) "", pos, min_pos, - -1); + add_string_to_fstring_db_runes (data, (CONST Bufbyte *) "", pos, + min_pos, -1); } return pos; } -/* The caller is responsible for freeing the returned string. */ -Bufbyte * -generate_formatted_string (struct window *w, Lisp_Object format_str, - Lisp_Object result_str, face_index findex, int type) -{ - struct display_line *dl; - struct display_block *db; - int elt = 0; - - dl = &formatted_string_display_line; - db = get_display_block_from_line (dl, TEXT); - Dynarr_reset (db->runes); - - generate_formatted_string_db (format_str, result_str, w, dl, db, findex, 0, - -1, type); - - Dynarr_reset (formatted_string_emchar_dynarr); - while (elt < Dynarr_length (db->runes)) - { - if (Dynarr_atp (db->runes, elt)->type == RUNE_CHAR) - Dynarr_add (formatted_string_emchar_dynarr, - Dynarr_atp (db->runes, elt)->object.chr.ch); - elt++; - } - - return - convert_emchar_string_into_malloced_string - ( Dynarr_atp (formatted_string_emchar_dynarr, 0), - Dynarr_length (formatted_string_emchar_dynarr), 0); -} - /* Update just the modeline. Assumes the desired display structs. If they do not have a modeline block, it does nothing. */ static void @@ -6164,7 +6195,9 @@ regeneration_done: somewhere else once tty updates occur on a per-frame basis. */ mark_face_cachels_as_clean (w); - /* The glyph cachels only get dirty if someone changed something. */ + /* The glyph cachels only get dirty if someone changed something. + Since redisplay has now effectively ended we can reset the dirty + flag since everything must be up-to-date. */ if (glyphs_changed) mark_glyph_cachels_as_clean (w); @@ -9094,12 +9127,10 @@ init_redisplay (void) { cmotion_display_lines = Dynarr_new (display_line); mode_spec_bufbyte_string = Dynarr_new (Bufbyte); - formatted_string_emchar_dynarr = Dynarr_new (Emchar); formatted_string_extent_dynarr = Dynarr_new (EXTENT); formatted_string_extent_start_dynarr = Dynarr_new (Bytecount); formatted_string_extent_end_dynarr = Dynarr_new (Bytecount); internal_cache = Dynarr_new (line_start_cache); - xzero (formatted_string_display_line); } /* window system is nil when in -batch mode */ @@ -9383,9 +9414,9 @@ This is a specifier; use `set-specifier' to change it. Vleft_margin_width = Fmake_specifier (Qnatnum); set_specifier_fallback (Vleft_margin_width, list1 (Fcons (Qnil, Qzero))); set_specifier_caching (Vleft_margin_width, - slot_offset (struct window, left_margin_width), + offsetof (struct window, left_margin_width), some_window_value_changed, - slot_offset (struct frame, left_margin_width), + offsetof (struct frame, left_margin_width), margin_width_changed_in_frame); DEFVAR_SPECIFIER ("right-margin-width", &Vright_margin_width /* @@ -9395,9 +9426,9 @@ This is a specifier; use `set-specifier' to change it. Vright_margin_width = Fmake_specifier (Qnatnum); set_specifier_fallback (Vright_margin_width, list1 (Fcons (Qnil, Qzero))); set_specifier_caching (Vright_margin_width, - slot_offset (struct window, right_margin_width), + offsetof (struct window, right_margin_width), some_window_value_changed, - slot_offset (struct frame, right_margin_width), + offsetof (struct frame, right_margin_width), margin_width_changed_in_frame); DEFVAR_SPECIFIER ("minimum-line-ascent", &Vminimum_line_ascent /* @@ -9407,7 +9438,7 @@ This is a specifier; use `set-specifier' to change it. Vminimum_line_ascent = Fmake_specifier (Qnatnum); set_specifier_fallback (Vminimum_line_ascent, list1 (Fcons (Qnil, Qzero))); set_specifier_caching (Vminimum_line_ascent, - slot_offset (struct window, minimum_line_ascent), + offsetof (struct window, minimum_line_ascent), some_window_value_changed, 0, 0); @@ -9418,7 +9449,7 @@ This is a specifier; use `set-specifier' to change it. Vminimum_line_descent = Fmake_specifier (Qnatnum); set_specifier_fallback (Vminimum_line_descent, list1 (Fcons (Qnil, Qzero))); set_specifier_caching (Vminimum_line_descent, - slot_offset (struct window, minimum_line_descent), + offsetof (struct window, minimum_line_descent), some_window_value_changed, 0, 0); @@ -9430,7 +9461,7 @@ This is a specifier; use `set-specifier' to change it. Vuse_left_overflow = Fmake_specifier (Qboolean); set_specifier_fallback (Vuse_left_overflow, list1 (Fcons (Qnil, Qnil))); set_specifier_caching (Vuse_left_overflow, - slot_offset (struct window, use_left_overflow), + offsetof (struct window, use_left_overflow), some_window_value_changed, 0, 0); @@ -9442,7 +9473,7 @@ This is a specifier; use `set-specifier' to change it. Vuse_right_overflow = Fmake_specifier (Qboolean); set_specifier_fallback (Vuse_right_overflow, list1 (Fcons (Qnil, Qnil))); set_specifier_caching (Vuse_right_overflow, - slot_offset (struct window, use_right_overflow), + offsetof (struct window, use_right_overflow), some_window_value_changed, 0, 0); @@ -9453,7 +9484,7 @@ This is a specifier; use `set-specifier' to change it. Vtext_cursor_visible_p = Fmake_specifier (Qboolean); set_specifier_fallback (Vtext_cursor_visible_p, list1 (Fcons (Qnil, Qt))); set_specifier_caching (Vtext_cursor_visible_p, - slot_offset (struct window, text_cursor_visible_p), + offsetof (struct window, text_cursor_visible_p), text_cursor_visible_p_changed, 0, 0); diff --git a/src/redisplay.h b/src/redisplay.h index 04f2538..b9772bf 100644 --- a/src/redisplay.h +++ b/src/redisplay.h @@ -696,13 +696,18 @@ int window_half_pixpos (struct window *w); void redisplay_echo_area (void); void free_display_structs (struct window_mirror *mir); void free_display_lines (display_line_dynarr *dla); -Bufbyte *generate_formatted_string (struct window *w, Lisp_Object format_str, - Lisp_Object result_str, face_index findex, - int type); void generate_displayable_area (struct window *w, Lisp_Object disp_string, int xpos, int ypos, int width, int height, display_line_dynarr* dl, Bufpos start_pos, face_index default_face); +/* `generate_title_string' in frame.c needs this */ +void generate_formatted_string_db (Lisp_Object format_str, + Lisp_Object result_str, + struct window *w, + struct display_line *dl, + struct display_block *db, + face_index findex, + int min_pixpos, int max_pixpos, int type); int real_current_modeline_height (struct window *w); int pixel_to_glyph_translation (struct frame *f, int x_coord, int y_coord, int *col, int *row, diff --git a/src/s/aix3-2.h b/src/s/aix3-2.h index a006cef..70330be 100644 --- a/src/s/aix3-2.h +++ b/src/s/aix3-2.h @@ -32,8 +32,6 @@ #endif #endif -#define HAVE_FSYNC - /* With this defined, a gcc-compiled Emacs crashed in realloc under AIX 3.2, and a cc-compiled Emacs works with this undefined. --karl@cs.umb.edu. */ diff --git a/src/s/cygwin32.h b/src/s/cygwin32.h index def1faa..1eaa8b5 100644 --- a/src/s/cygwin32.h +++ b/src/s/cygwin32.h @@ -121,6 +121,12 @@ extern long random(); #ifndef WM_MOUSEWHEEL #define WM_MOUSEWHEEL 0x20A #endif +#ifndef TCS_BOTTOM +#define TCS_BOTTOM 0x0002 +#endif +#ifndef TCS_VERTICAL +#define TCS_VERTICAL 0x0080 +#endif #define PBS_SMOOTH 0x01 diff --git a/src/s/windowsnt.h b/src/s/windowsnt.h index ebbcf69..6dee7ee 100644 --- a/src/s/windowsnt.h +++ b/src/s/windowsnt.h @@ -105,9 +105,9 @@ typedef int pid_t; The alternative is that a lock file named /usr/spool/mail/$USER.lock. */ -/* #define MAIL_USE_FLOCK */ #define MAIL_USE_POP -#define MAIL_USE_SYSTEM_LOCK +#define HAVE_LOCKING +#define MAIL_USE_LOCKING /* If the character used to separate elements of the executable path is not ':', #define this to be the appropriate character constant. */ diff --git a/src/scrollbar.c b/src/scrollbar.c index 39855c8..6f2f0e9 100644 --- a/src/scrollbar.c +++ b/src/scrollbar.c @@ -956,11 +956,9 @@ This is a specifier; use `set-specifier' to change it. (Vscrollbar_width, list1 (Fcons (Qnil, make_int (DEFAULT_SCROLLBAR_WIDTH)))); set_specifier_caching (Vscrollbar_width, - slot_offset (struct window, - scrollbar_width), + offsetof (struct window, scrollbar_width), vertical_scrollbar_changed_in_window, - slot_offset (struct frame, - scrollbar_width), + offsetof (struct frame, scrollbar_width), frame_size_slipped); DEFVAR_SPECIFIER ("scrollbar-height", &Vscrollbar_height /* @@ -972,11 +970,9 @@ This is a specifier; use `set-specifier' to change it. (Vscrollbar_height, list1 (Fcons (Qnil, make_int (DEFAULT_SCROLLBAR_HEIGHT)))); set_specifier_caching (Vscrollbar_height, - slot_offset (struct window, - scrollbar_height), + offsetof (struct window, scrollbar_height), some_window_value_changed, - slot_offset (struct frame, - scrollbar_height), + offsetof (struct frame, scrollbar_height), frame_size_slipped); DEFVAR_SPECIFIER ("horizontal-scrollbar-visible-p", &Vhorizontal_scrollbar_visible_p /* @@ -987,11 +983,11 @@ This is a specifier; use `set-specifier' to change it. set_specifier_fallback (Vhorizontal_scrollbar_visible_p, list1 (Fcons (Qnil, Qt))); set_specifier_caching (Vhorizontal_scrollbar_visible_p, - slot_offset (struct window, - horizontal_scrollbar_visible_p), + offsetof (struct window, + horizontal_scrollbar_visible_p), some_window_value_changed, - slot_offset (struct frame, - horizontal_scrollbar_visible_p), + offsetof (struct frame, + horizontal_scrollbar_visible_p), frame_size_slipped); DEFVAR_SPECIFIER ("vertical-scrollbar-visible-p", &Vvertical_scrollbar_visible_p /* @@ -1002,11 +998,11 @@ This is a specifier; use `set-specifier' to change it. set_specifier_fallback (Vvertical_scrollbar_visible_p, list1 (Fcons (Qnil, Qt))); set_specifier_caching (Vvertical_scrollbar_visible_p, - slot_offset (struct window, - vertical_scrollbar_visible_p), + offsetof (struct window, + vertical_scrollbar_visible_p), vertical_scrollbar_changed_in_window, - slot_offset (struct frame, - vertical_scrollbar_visible_p), + offsetof (struct frame, + vertical_scrollbar_visible_p), frame_size_slipped); DEFVAR_SPECIFIER ("scrollbar-on-left-p", &Vscrollbar_on_left_p /* @@ -1030,11 +1026,9 @@ This is a specifier; use `set-specifier' to change it. } set_specifier_caching (Vscrollbar_on_left_p, - slot_offset (struct window, - scrollbar_on_left_p), + offsetof (struct window, scrollbar_on_left_p), vertical_scrollbar_changed_in_window, - slot_offset (struct frame, - scrollbar_on_left_p), + offsetof (struct frame, scrollbar_on_left_p), frame_size_slipped); DEFVAR_SPECIFIER ("scrollbar-on-top-p", &Vscrollbar_on_top_p /* @@ -1045,11 +1039,9 @@ This is a specifier; use `set-specifier' to change it. set_specifier_fallback (Vscrollbar_on_top_p, list1 (Fcons (Qnil, Qnil))); set_specifier_caching (Vscrollbar_on_top_p, - slot_offset (struct window, - scrollbar_on_top_p), + offsetof (struct window, scrollbar_on_top_p), some_window_value_changed, - slot_offset (struct frame, - scrollbar_on_top_p), + offsetof (struct frame, scrollbar_on_top_p), frame_size_slipped); } @@ -1059,8 +1051,7 @@ complex_vars_of_scrollbar (void) Vscrollbar_pointer_glyph = Fmake_glyph_internal (Qpointer); set_specifier_caching (XGLYPH (Vscrollbar_pointer_glyph)->image, - slot_offset (struct window, - scrollbar_pointer), + offsetof (struct window, scrollbar_pointer), scrollbar_pointer_changed_in_window, 0, 0); } diff --git a/src/specifier.h b/src/specifier.h index e447d5c..e8c51f8 100644 --- a/src/specifier.h +++ b/src/specifier.h @@ -281,6 +281,15 @@ error_check_##type##_specifier_data (struct Lisp_Specifier *sp) \ assert (SPECIFIER_TYPE_P (sp, type)); \ return (struct type##_specifier *) sp->data; \ } \ +INLINE struct Lisp_Specifier * \ +error_check_##type##_specifier_type (Lisp_Object obj); \ +INLINE struct Lisp_Specifier * \ +error_check_##type##_specifier_type (Lisp_Object obj) \ +{ \ + struct Lisp_Specifier *sp = XSPECIFIER (obj); \ + assert (SPECIFIER_TYPE_P (sp, type)); \ + return sp; \ +} \ DECLARE_NOTHING #else #define DECLARE_SPECIFIER_TYPE(type) \ @@ -343,10 +352,19 @@ do { \ : (sp)->data)) #endif -/* #### Need to create ERROR_CHECKING versions of these. */ +#ifdef ERROR_CHECK_TYPECHECK +# define XSPECIFIER_TYPE(x, type) \ + error_check_##type##_specifier_type (x) +# define XSETSPECIFIER_TYPE(x, p, type) do \ +{ \ + XSETSPECIFIER (x, p); \ + assert (SPECIFIER_TYPEP (XSPECIFIER(x), type)); \ +} while (0) +#else +# define XSPECIFIER_TYPE(x, type) XSPECIFIER (x) +# define XSETSPECIFIER_TYPE(x, p, type) XSETSPECIFIER (x, p) +#endif /* ERROR_CHECK_TYPE_CHECK */ -#define XSPECIFIER_TYPE(x, type) XSPECIFIER (x) -#define XSETSPECIFIER_TYPE(x, p, type) XSETSPECIFIER (x, p) #define SPECIFIER_TYPEP(x, type) \ (SPECIFIERP (x) && SPECIFIER_TYPE_P (XSPECIFIER (x), type)) #define CHECK_SPECIFIER_TYPE(x, type) do { \ diff --git a/src/symsinit.h b/src/symsinit.h index 7ae439d..2e6a4e3 100644 --- a/src/symsinit.h +++ b/src/symsinit.h @@ -293,6 +293,7 @@ void vars_of_font_lock (void); void reinit_vars_of_font_lock (void); void vars_of_frame_tty (void); void vars_of_frame_mswindows (void); +void reinit_vars_of_frame_mswindows (void); void vars_of_frame_x (void); void vars_of_frame (void); void vars_of_glyphs_x (void); diff --git a/src/sysdep.c b/src/sysdep.c index 7f5486b..99b4313 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -2145,9 +2145,9 @@ hft_reset (struct console *con) */ #ifdef __cplusplus - extern "C" int _start (); + extern "C" int _start (void); #else - extern int _start (); + extern int _start (void); #endif #ifndef HAVE_TEXT_START diff --git a/src/sysfile.h b/src/sysfile.h index cc8f2de..c7e29cb 100644 --- a/src/sysfile.h +++ b/src/sysfile.h @@ -203,10 +203,6 @@ Boston, MA 02111-1307, USA. */ #define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) #endif -#if !defined (USG) && !defined (WINDOWSNT) -# define HAVE_FSYNC -#endif - #ifndef MAXPATHLEN /* in 4.1, param.h fails to define this. */ #define MAXPATHLEN 1024 diff --git a/src/termcap.c b/src/termcap.c index 6beecc5..1c5529e 100644 --- a/src/termcap.c +++ b/src/termcap.c @@ -26,18 +26,9 @@ Boston, MA 02111-1307, USA. */ #include "lisp.h" /* For encapsulated open, close, read */ #include "device.h" /* For DEVICE_BAUD_RATE */ #else /* not emacs */ -#if defined(USG) || defined(STDC_HEADERS) -#define memcpy(d, s, n) memcpy ((d), (s), (n)) -#endif -#ifdef STDC_HEADERS #include #include -#else -char *getenv (); -char *malloc (); -char *realloc (); -#endif #ifdef HAVE_UNISTD_H #include @@ -337,8 +328,6 @@ static int name_match (); If BP is zero, space is dynamically allocated. */ -extern char *getenv (); - int tgetent (bp, name) char *bp; @@ -365,7 +354,7 @@ tgetent (bp, name) it is the entry itself, but only if the name the caller requested matches the TERM variable. */ - if (tem && !IS_DIRECTORY_SEP (*tem) && !strcmp (name, (char *) getenv ("TERM"))) + if (tem && !IS_DIRECTORY_SEP (*tem) && !strcmp (name, getenv ("TERM"))) { indirect = tgetst1 (find_capability (tem, "tc"), 0); if (!indirect) diff --git a/src/toolbar-x.c b/src/toolbar-x.c index 5b0fb72..edfd7dd 100644 --- a/src/toolbar-x.c +++ b/src/toolbar-x.c @@ -296,9 +296,9 @@ x_get_button_size (struct frame *f, Lisp_Object window, return XINT (f->toolbar_size[pos]); if (vert) - size = glyph_height (glyph, Vdefault_face, 0, window); + size = glyph_height (glyph, window); else - size = glyph_width (glyph, Vdefault_face, 0, window); + size = glyph_width (glyph, window); } if (!size) diff --git a/src/toolbar.c b/src/toolbar.c index 31732af..cff25ac 100644 --- a/src/toolbar.c +++ b/src/toolbar.c @@ -1434,8 +1434,7 @@ For the other vector formats (specifying blank areas of the toolbar): automatically knew about specifier fallbacks, so we didn't have to do it ourselves. */ set_specifier_caching (Vdefault_toolbar, - slot_offset (struct window, - default_toolbar), + offsetof (struct window, default_toolbar), default_toolbar_specs_changed, 0, 0); @@ -1447,8 +1446,7 @@ See `default-toolbar' for a description of a valid toolbar instantiator. */ ); Vtoolbar[TOP_TOOLBAR] = Fmake_specifier (Qtoolbar); set_specifier_caching (Vtoolbar[TOP_TOOLBAR], - slot_offset (struct window, - toolbar[TOP_TOOLBAR]), + offsetof (struct window, toolbar[TOP_TOOLBAR]), toolbar_specs_changed, 0, 0); @@ -1465,8 +1463,7 @@ displayed even if you provide a value for `bottom-toolbar'. */ ); Vtoolbar[BOTTOM_TOOLBAR] = Fmake_specifier (Qtoolbar); set_specifier_caching (Vtoolbar[BOTTOM_TOOLBAR], - slot_offset (struct window, - toolbar[BOTTOM_TOOLBAR]), + offsetof (struct window, toolbar[BOTTOM_TOOLBAR]), toolbar_specs_changed, 0, 0); @@ -1483,8 +1480,7 @@ displayed even if you provide a value for `left-toolbar'. */ ); Vtoolbar[LEFT_TOOLBAR] = Fmake_specifier (Qtoolbar); set_specifier_caching (Vtoolbar[LEFT_TOOLBAR], - slot_offset (struct window, - toolbar[LEFT_TOOLBAR]), + offsetof (struct window, toolbar[LEFT_TOOLBAR]), toolbar_specs_changed, 0, 0); @@ -1501,8 +1497,7 @@ displayed even if you provide a value for `right-toolbar'. */ ); Vtoolbar[RIGHT_TOOLBAR] = Fmake_specifier (Qtoolbar); set_specifier_caching (Vtoolbar[RIGHT_TOOLBAR], - slot_offset (struct window, - toolbar[RIGHT_TOOLBAR]), + offsetof (struct window, toolbar[RIGHT_TOOLBAR]), toolbar_specs_changed, 0, 0); @@ -1556,11 +1551,9 @@ is not visible, so it is expanded to take up the slack. */ ); Vdefault_toolbar_height = Fmake_specifier (Qnatnum); set_specifier_caching (Vdefault_toolbar_height, - slot_offset (struct window, - default_toolbar_height), + offsetof (struct window, default_toolbar_height), default_toolbar_size_changed_in_window, - slot_offset (struct frame, - default_toolbar_height), + offsetof (struct frame, default_toolbar_height), default_toolbar_size_changed_in_frame); DEFVAR_SPECIFIER ("default-toolbar-width", &Vdefault_toolbar_width /* @@ -1571,11 +1564,9 @@ See `default-toolbar-height' for more information. */ ); Vdefault_toolbar_width = Fmake_specifier (Qnatnum); set_specifier_caching (Vdefault_toolbar_width, - slot_offset (struct window, - default_toolbar_width), + offsetof (struct window, default_toolbar_width), default_toolbar_size_changed_in_window, - slot_offset (struct frame, - default_toolbar_width), + offsetof (struct frame, default_toolbar_width), default_toolbar_size_changed_in_frame); DEFVAR_SPECIFIER ("top-toolbar-height", @@ -1587,11 +1578,9 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_size[TOP_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_size[TOP_TOOLBAR], - slot_offset (struct window, - toolbar_size[TOP_TOOLBAR]), + offsetof (struct window, toolbar_size[TOP_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_size[TOP_TOOLBAR]), + offsetof (struct frame, toolbar_size[TOP_TOOLBAR]), frame_size_slipped); DEFVAR_SPECIFIER ("bottom-toolbar-height", @@ -1603,11 +1592,9 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_size[BOTTOM_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_size[BOTTOM_TOOLBAR], - slot_offset (struct window, - toolbar_size[BOTTOM_TOOLBAR]), + offsetof (struct window, toolbar_size[BOTTOM_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_size[BOTTOM_TOOLBAR]), + offsetof (struct frame, toolbar_size[BOTTOM_TOOLBAR]), frame_size_slipped); DEFVAR_SPECIFIER ("left-toolbar-width", @@ -1619,11 +1606,9 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_size[LEFT_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_size[LEFT_TOOLBAR], - slot_offset (struct window, - toolbar_size[LEFT_TOOLBAR]), + offsetof (struct window, toolbar_size[LEFT_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_size[LEFT_TOOLBAR]), + offsetof (struct frame, toolbar_size[LEFT_TOOLBAR]), frame_size_slipped); DEFVAR_SPECIFIER ("right-toolbar-width", @@ -1635,11 +1620,9 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_size[RIGHT_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_size[RIGHT_TOOLBAR], - slot_offset (struct window, - toolbar_size[RIGHT_TOOLBAR]), + offsetof (struct window, toolbar_size[RIGHT_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_size[RIGHT_TOOLBAR]), + offsetof (struct frame, toolbar_size[RIGHT_TOOLBAR]), frame_size_slipped); fb = Qnil; @@ -1700,11 +1683,9 @@ the value in a window domain will not. */ ); Vdefault_toolbar_border_width = Fmake_specifier (Qnatnum); set_specifier_caching (Vdefault_toolbar_border_width, - slot_offset (struct window, - default_toolbar_border_width), + offsetof (struct window, default_toolbar_border_width), default_toolbar_border_width_changed_in_window, - slot_offset (struct frame, - default_toolbar_border_width), + offsetof (struct frame, default_toolbar_border_width), default_toolbar_border_width_changed_in_frame); DEFVAR_SPECIFIER ("top-toolbar-border-width", @@ -1716,11 +1697,11 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_border_width[TOP_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_border_width[TOP_TOOLBAR], - slot_offset (struct window, - toolbar_border_width[TOP_TOOLBAR]), + offsetof (struct window, + toolbar_border_width[TOP_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_border_width[TOP_TOOLBAR]), + offsetof (struct frame, + toolbar_border_width[TOP_TOOLBAR]), frame_size_slipped); DEFVAR_SPECIFIER ("bottom-toolbar-border-width", @@ -1732,11 +1713,11 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_border_width[BOTTOM_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_border_width[BOTTOM_TOOLBAR], - slot_offset (struct window, - toolbar_border_width[BOTTOM_TOOLBAR]), + offsetof (struct window, + toolbar_border_width[BOTTOM_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_border_width[BOTTOM_TOOLBAR]), + offsetof (struct frame, + toolbar_border_width[BOTTOM_TOOLBAR]), frame_size_slipped); DEFVAR_SPECIFIER ("left-toolbar-border-width", @@ -1748,11 +1729,11 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_border_width[LEFT_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_border_width[LEFT_TOOLBAR], - slot_offset (struct window, - toolbar_border_width[LEFT_TOOLBAR]), + offsetof (struct window, + toolbar_border_width[LEFT_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_border_width[LEFT_TOOLBAR]), + offsetof (struct frame, + toolbar_border_width[LEFT_TOOLBAR]), frame_size_slipped); DEFVAR_SPECIFIER ("right-toolbar-border-width", @@ -1764,11 +1745,11 @@ See `default-toolbar-height' for more information. */ ); Vtoolbar_border_width[RIGHT_TOOLBAR] = Fmake_specifier (Qnatnum); set_specifier_caching (Vtoolbar_border_width[RIGHT_TOOLBAR], - slot_offset (struct window, - toolbar_border_width[RIGHT_TOOLBAR]), + offsetof (struct window, + toolbar_border_width[RIGHT_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_border_width[RIGHT_TOOLBAR]), + offsetof (struct frame, + toolbar_border_width[RIGHT_TOOLBAR]), frame_size_slipped); fb = Qnil; @@ -1812,11 +1793,9 @@ visibility specifiers have a fallback value of true. */ ); Vdefault_toolbar_visible_p = Fmake_specifier (Qboolean); set_specifier_caching (Vdefault_toolbar_visible_p, - slot_offset (struct window, - default_toolbar_visible_p), + offsetof (struct window, default_toolbar_visible_p), default_toolbar_visible_p_changed_in_window, - slot_offset (struct frame, - default_toolbar_visible_p), + offsetof (struct frame, default_toolbar_visible_p), default_toolbar_visible_p_changed_in_frame); DEFVAR_SPECIFIER ("top-toolbar-visible-p", @@ -1828,11 +1807,11 @@ See `default-toolbar-visible-p' for more information. */ ); Vtoolbar_visible_p[TOP_TOOLBAR] = Fmake_specifier (Qboolean); set_specifier_caching (Vtoolbar_visible_p[TOP_TOOLBAR], - slot_offset (struct window, - toolbar_visible_p[TOP_TOOLBAR]), + offsetof (struct window, + toolbar_visible_p[TOP_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_visible_p[TOP_TOOLBAR]), + offsetof (struct frame, + toolbar_visible_p[TOP_TOOLBAR]), frame_size_slipped); DEFVAR_SPECIFIER ("bottom-toolbar-visible-p", @@ -1844,11 +1823,11 @@ See `default-toolbar-visible-p' for more information. */ ); Vtoolbar_visible_p[BOTTOM_TOOLBAR] = Fmake_specifier (Qboolean); set_specifier_caching (Vtoolbar_visible_p[BOTTOM_TOOLBAR], - slot_offset (struct window, - toolbar_visible_p[BOTTOM_TOOLBAR]), + offsetof (struct window, + toolbar_visible_p[BOTTOM_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_visible_p[BOTTOM_TOOLBAR]), + offsetof (struct frame, + toolbar_visible_p[BOTTOM_TOOLBAR]), frame_size_slipped); DEFVAR_SPECIFIER ("left-toolbar-visible-p", @@ -1860,11 +1839,11 @@ See `default-toolbar-visible-p' for more information. */ ); Vtoolbar_visible_p[LEFT_TOOLBAR] = Fmake_specifier (Qboolean); set_specifier_caching (Vtoolbar_visible_p[LEFT_TOOLBAR], - slot_offset (struct window, - toolbar_visible_p[LEFT_TOOLBAR]), + offsetof (struct window, + toolbar_visible_p[LEFT_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_visible_p[LEFT_TOOLBAR]), + offsetof (struct frame, + toolbar_visible_p[LEFT_TOOLBAR]), frame_size_slipped); DEFVAR_SPECIFIER ("right-toolbar-visible-p", @@ -1876,11 +1855,11 @@ See `default-toolbar-visible-p' for more information. */ ); Vtoolbar_visible_p[RIGHT_TOOLBAR] = Fmake_specifier (Qboolean); set_specifier_caching (Vtoolbar_visible_p[RIGHT_TOOLBAR], - slot_offset (struct window, - toolbar_visible_p[RIGHT_TOOLBAR]), + offsetof (struct window, + toolbar_visible_p[RIGHT_TOOLBAR]), toolbar_geometry_changed_in_window, - slot_offset (struct frame, - toolbar_visible_p[RIGHT_TOOLBAR]), + offsetof (struct frame, + toolbar_visible_p[RIGHT_TOOLBAR]), frame_size_slipped); /* initially, top inherits from default; this can be @@ -1902,8 +1881,7 @@ This is a specifier; use `set-specifier' to change it. */ ); Vtoolbar_buttons_captioned_p = Fmake_specifier (Qboolean); set_specifier_caching (Vtoolbar_buttons_captioned_p, - slot_offset (struct window, - toolbar_buttons_captioned_p), + offsetof (struct window, toolbar_buttons_captioned_p), toolbar_buttons_captioned_p_changed, 0, 0); set_specifier_fallback (Vtoolbar_buttons_captioned_p, diff --git a/src/unexaix.c b/src/unexaix.c index 50f5b21..933097e 100644 --- a/src/unexaix.c +++ b/src/unexaix.c @@ -439,7 +439,6 @@ write_segment (int new, char *ptr, char *end) { int i, nwrite, ret; char buf[80]; - extern int errno; char zeros[UnexBlockSz]; for (i = 0; ptr < end;) diff --git a/src/unexalpha.c b/src/unexalpha.c index a8045f0..9602c10 100644 --- a/src/unexalpha.c +++ b/src/unexalpha.c @@ -31,6 +31,7 @@ Boston, MA 02111-1307, USA. */ #include #include #include +#include #include #include #include @@ -54,9 +55,6 @@ static void mark_x (char *); if (lseek (_fd, _position, L_SET) != _position) \ fatal_unexec (_error_message, _error_arg); -extern int errno; -extern char *strerror (); - void *sbrk(); #define EEOF -1 diff --git a/src/unexec.c b/src/unexec.c index 06bb930..7c885d5 100644 --- a/src/unexec.c +++ b/src/unexec.c @@ -136,7 +136,7 @@ before writing it (above and beyond the number of bytes of actual program text). HDR's standard fields are already correct, except that this adjustment to the `a_text' field has not yet been made; thus, the amount of offset can depend on the data in the file. - + * A_TEXT_SEEK(HDR) If defined, this macro specifies the number of bytes to seek into the @@ -186,19 +186,12 @@ pointer looks like an int) but not on all machines. # undef _POSIX_SOURCE # endif -# if defined(__lucid) && !defined(__STDC_EXTENDED__) -# define __STDC_EXTENDED__ 1 -# endif - # include # include # include # include # include - -# ifdef __lucid -# include -# endif +# include #endif @@ -443,7 +436,7 @@ unexec (new_name, a_name, data_start, bss_start, entry_address) { close (new); /* unlink (new_name); / * Failed, unlink new a.out */ - return -1; + return -1; } close (new); @@ -998,7 +991,7 @@ copy_text_and_data (int new, int a_out) char c; int mcount_address, mcount_offset, count; extern char *_execname; - + /* The use of _execname is incompatible with RISCiX 1.1 */ sprintf (command, "nm %s | fgrep mcount", _execname); @@ -1018,7 +1011,7 @@ copy_text_and_data (int new, int a_out) { sprintf (errbuf, "Failed to execute the command '%s'\n", command); PERROR (errbuf); - } + } sscanf(address_text, "%x", &mcount_address); ptr = (char *) unexec_text_start; @@ -1076,7 +1069,6 @@ write_segment (new, ptr, end) #if 0 char buf[80]; #endif - extern int errno; /* This is the normal amount to write at once. It is the size of block that NFS uses. */ int writesize = 1 << 13; diff --git a/src/unexfreebsd.c b/src/unexfreebsd.c index 5cb73b3..0a97488 100644 --- a/src/unexfreebsd.c +++ b/src/unexfreebsd.c @@ -40,6 +40,7 @@ Tweaked 26-Feb-94 by Shawn Carey for use with FreeBSD-1.1 shared libraries. #include #include #include +#include #include #include #include @@ -95,7 +96,6 @@ int run_time_remap (char *dummy); /********************** Variables **********************************/ /* for reporting error messages from system calls */ -extern int errno; extern int _DYNAMIC; extern char **environ; diff --git a/src/unexhp9k3.c b/src/unexhp9k3.c index 607cd73..9bca2a9 100644 --- a/src/unexhp9k3.c +++ b/src/unexhp9k3.c @@ -40,6 +40,7 @@ Modified Jan 93 by Hamish Macdonald for HPUX #include #include #include +#include #include #ifdef __hp9000s300 # include @@ -87,7 +88,6 @@ int run_time_remap (char *dummy); /* for reporting error messages from system calls */ extern int sys_nerr; -extern int errno; extern int _DYNAMIC; extern char **environ; diff --git a/src/unexmips.c b/src/unexmips.c index 486646b..ca497ae 100644 --- a/src/unexmips.c +++ b/src/unexmips.c @@ -26,6 +26,7 @@ Boston, MA 02111-1307, USA. */ #include #include #include +#include #include #ifdef MACH @@ -95,7 +96,6 @@ static void mark_x (); if (lseek (_fd, _position, L_SET) != _position) \ fatal_unexec (_error_message, _error_arg); -extern int errno; extern char *strerror (); #define EEOF -1 diff --git a/src/window.c b/src/window.c index 80934b9..9281bd8 100644 --- a/src/window.c +++ b/src/window.c @@ -1148,7 +1148,7 @@ be used. Otherwise, the selected frame is used. return FRAME_MINIBUF_WINDOW (decode_frame_or_selected (con_dev_or_frame)); } -DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p, 1, 1, 0, /* +DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p, 0, 1, 0, /* Return non-nil if WINDOW is a minibuffer window. */ (window)) @@ -1437,22 +1437,23 @@ Return the number of columns by which WINDOW is scrolled from left margin. return make_int (decode_window (window)->hscroll); } -#ifdef MODELINE_IS_SCROLLABLE DEFUN ("modeline-hscroll", Fmodeline_hscroll, 0, 1, 0, /* -Return the number of columns by which WINDOW's modeline is scrolled from -left margin. If the window has no modeline, return nil. +Return the horizontal scrolling ammount of WINDOW's modeline. +If the window has no modeline, return nil. */ (window)) { struct window *w = decode_window (window); - return (WINDOW_HAS_MODELINE_P (w)) ? make_int (w->modeline_hscroll) : Qnil; + return (WINDOW_HAS_MODELINE_P (w)) ? make_int ((int) w->modeline_hscroll) : + Qnil; } DEFUN ("set-modeline-hscroll", Fset_modeline_hscroll, 2, 2, 0, /* -Set number of columns WINDOW's modeline is scrolled from left margin to NCOL. -NCOL should be zero or positive. If NCOL is negative, it will be forced to 0. -If the window has no modeline, do nothing and return nil. +Set the horizontal scrolling ammount of WINDOW's modeline to NCOL. +If NCOL is negative, it will silently be forced to 0. +If the window has no modeline, return nil. Otherwise, return the actual +value that was set. */ (window, ncol)) { @@ -1460,18 +1461,20 @@ If the window has no modeline, do nothing and return nil. if (WINDOW_HAS_MODELINE_P (w)) { - int ncols; + Charcount ncols; + CHECK_INT (ncol); - ncols = XINT (ncol); - if (ncols < 0) ncols = 0; - if (w->modeline_hscroll != ncols) - MARK_MODELINE_CHANGED; - w->modeline_hscroll = ncols; - return ncol; + ncols = (XINT (ncol) <= 0) ? 0 : (Charcount) XINT (ncol); + if (ncols != w->modeline_hscroll) + { + MARK_MODELINE_CHANGED; + w->modeline_hscroll = ncols; + } + return make_int ((int) ncols); } + return Qnil; } -#endif /* MODELINE_IS_SCROLLABLE */ DEFUN ("set-window-hscroll", Fset_window_hscroll, 2, 2, 0, /* Set number of columns WINDOW is scrolled from left margin to NCOL. @@ -4050,12 +4053,12 @@ window_scroll (Lisp_Object window, Lisp_Object n, int direction, fheight = XINT (Vwindow_pixel_scroll_increment); else if (!NILP (Vwindow_pixel_scroll_increment)); default_face_height_and_width (window, &fheight, &fwidth); - + if (Dynarr_length (dla) >= 1) modeline = Dynarr_atp (dla, 0)->modeline; dl = Dynarr_atp (dla, modeline); - + if (value > 0) { /* Go for partial display line scrolling. This just means bumping @@ -4074,7 +4077,7 @@ window_scroll (Lisp_Object window, Lisp_Object n, int direction, { int vtarget; Bufpos startp, old_start; - + if (WINDOW_TEXT_TOP_CLIP (w)) { WINDOW_TEXT_TOP_CLIP (w) = 0; @@ -4083,7 +4086,7 @@ window_scroll (Lisp_Object window, Lisp_Object n, int direction, old_start = marker_position (w->start[CURRENT_DISP]); startp = vmotion (w, old_start, value, &vtarget); - + if (vtarget < value && (w->window_end_pos[CURRENT_DISP] == -1 || (BUF_Z (b) - w->window_end_pos[CURRENT_DISP] > BUF_ZV (b)))) @@ -4098,7 +4101,7 @@ window_scroll (Lisp_Object window, Lisp_Object n, int direction, w->force_start = 1; w->start_at_line_beg = beginning_of_line_p (b, startp); MARK_WINDOWS_CHANGED (w); - + if (!point_would_be_visible (w, startp, XINT (point))) { if (selected) @@ -4132,16 +4135,16 @@ window_scroll (Lisp_Object window, Lisp_Object n, int direction, { int vtarget; Bufpos startp, old_start; - + if (WINDOW_TEXT_TOP_CLIP (w)) { WINDOW_TEXT_TOP_CLIP (w) = 0; MARK_WINDOWS_CHANGED (w); } - + old_start = marker_position (w->start[CURRENT_DISP]); startp = vmotion (w, old_start, value, &vtarget); - + if (vtarget > value && marker_position (w->start[CURRENT_DISP]) == BUF_BEGV (b)) { @@ -4155,16 +4158,16 @@ window_scroll (Lisp_Object window, Lisp_Object n, int direction, w->force_start = 1; w->start_at_line_beg = beginning_of_line_p (b, startp); MARK_WINDOWS_CHANGED (w); - + if (!point_would_be_visible (w, startp, XINT (point))) { Bufpos new_point; - + if (MINI_WINDOW_P (w)) new_point = startp; else new_point = start_of_last_line (w, startp); - + if (selected) BUF_SET_PT (b, new_point); else @@ -4694,7 +4697,7 @@ struct saved_window int pixel_width; int pixel_height; int hscroll; - int modeline_hscroll; + Charcount modeline_hscroll; int parent_index; /* index into saved_windows */ int prev_index; /* index into saved_windows */ char start_at_line_beg; /* boolean */ @@ -4956,7 +4959,7 @@ by `current-window-configuration' (which see). int previous_pixel_width; int previous_minibuf_height, previous_minibuf_top,previous_minibuf_width; int real_font_height; - int converted_minibuf_height,target_minibuf_height; + int converted_minibuf_height,target_minibuf_height; int specpdl_count = specpdl_depth (); GCPRO1 (configuration); @@ -5024,7 +5027,7 @@ by `current-window-configuration' (which see). #if 0 /* JV: This is bogus, First of all, the units are inconsistent. The frame sizes are measured - in characters but the window sizes are stored in pixels. So if a + in characters but the window sizes are stored in pixels. So if a font size change happened between saving and restoring, the frame "sizes" maybe equal but the windows still should be resized. This is tickled alot by the new "character size @@ -5045,7 +5048,7 @@ by `current-window-configuration' (which see). || config->frame_width != FRAME_WIDTH (f)) change_frame_size (f, config->frame_height, config->frame_width, 0); #endif - + previous_pixel_top = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_top; previous_pixel_height = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_height; previous_pixel_left = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_left; @@ -5055,7 +5058,7 @@ by `current-window-configuration' (which see). default_face_height_and_width (frame, &real_font_height, 0); assert(real_font_height > 0); - + if (FRAME_HAS_MINIBUF_P (f) && ! FRAME_MINIBUF_ONLY_P (f)) { previous_minibuf_height @@ -5068,13 +5071,14 @@ by `current-window-configuration' (which see). else { previous_minibuf_height = 0; + previous_minibuf_top = 0; previous_minibuf_width = 0; } converted_minibuf_height = (previous_minibuf_height % real_font_height) == 0 ? - (previous_minibuf_height / real_font_height ) : /* lines */ previous_minibuf_height; /* pixels */ - + /* Temporarily avoid any problems with windows that are smaller than they are supposed to be. */ window_min_height = 1; @@ -5256,7 +5260,7 @@ by `current-window-configuration' (which see). #### Now we get more cases correct then ever before, but are we treating all? For instance what if the frames minibuf window - is no longer the same one? + is no longer the same one? */ target_minibuf_height = previous_minibuf_height; if (converted_minibuf_height && @@ -5279,7 +5283,7 @@ by `current-window-configuration' (which see). set_window_pixwidth (FRAME_MINIBUF_WINDOW (f), previous_minibuf_width, 0); } - + /* This is a better way to deal with frame resizing, etc. What we _actually_ want is for the old (just restored) root window to fit @@ -5294,7 +5298,7 @@ by `current-window-configuration' (which see). /* Note that this function also updates the subwindow "pixel_left"s */ set_window_pixwidth (FRAME_ROOT_WINDOW (f), previous_pixel_width, 0); - + /* If restoring in the current frame make the window current, otherwise just update the frame selected_window slot to be the restored current_window. */ @@ -5536,11 +5540,11 @@ its value is -not- saved. /* save the minibuffer height using the heuristics from change_frame_size_1 */ - + XSETFRAME (frame, f); /* frame could have been nil ! */ default_face_height_and_width (frame, &real_font_height, 0); assert(real_font_height > 0); - + if (FRAME_HAS_MINIBUF_P (f) && ! FRAME_MINIBUF_ONLY_P (f)) minibuf_height = XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_height; else @@ -5606,7 +5610,7 @@ a non-nil result to be returned. if (NILP (pos)) pos = Fwindow_point (window); - + CHECK_INT (pos); point = XINT (pos); @@ -5744,15 +5748,13 @@ syms_of_window (void) DEFSUBR (Fwindow_displayed_text_pixel_height); DEFSUBR (Fwindow_text_area_pixel_width); DEFSUBR (Fwindow_hscroll); -#ifdef MODELINE_IS_SCROLLABLE + DEFSUBR (Fset_window_hscroll); DEFSUBR (Fmodeline_hscroll); DEFSUBR (Fset_modeline_hscroll); -#endif /* MODELINE_IS_SCROLLABLE */ #if 0 /* bogus FSF crock */ DEFSUBR (Fwindow_redisplay_end_trigger); DEFSUBR (Fset_window_redisplay_end_trigger); #endif - DEFSUBR (Fset_window_hscroll); DEFSUBR (Fwindow_pixel_edges); DEFSUBR (Fwindow_text_area_pixel_edges); DEFSUBR (Fwindow_point); @@ -5892,8 +5894,7 @@ This is a specifier; use `set-specifier' to change it. Fadd_spec_to_specifier (Vmodeline_shadow_thickness, make_int (2), Qnil, Qnil, Qnil); set_specifier_caching (Vmodeline_shadow_thickness, - slot_offset (struct window, - modeline_shadow_thickness), + offsetof (struct window, modeline_shadow_thickness), modeline_shadow_thickness_changed, 0, 0); @@ -5905,8 +5906,7 @@ This is a specifier; use `set-specifier' to change it. set_specifier_fallback (Vhas_modeline_p, list1 (Fcons (Qnil, Qt))); set_specifier_caching (Vhas_modeline_p, - slot_offset (struct window, - has_modeline_p), + offsetof (struct window, has_modeline_p), /* #### It's strange that we need a special flag to indicate that the shadow-thickness has changed, but not one to indicate that @@ -5928,8 +5928,8 @@ This is a specifier; use `set-specifier' to change it. set_specifier_fallback (Vvertical_divider_always_visible_p, list1 (Fcons (Qnil, Qt))); set_specifier_caching (Vvertical_divider_always_visible_p, - slot_offset (struct window, - vertical_divider_always_visible_p), + offsetof (struct window, + vertical_divider_always_visible_p), vertical_divider_changed_in_window, 0, 0); @@ -5943,8 +5943,8 @@ This is a specifier; use `set-specifier' to change it. Fadd_spec_to_specifier (Vvertical_divider_shadow_thickness, make_int (2), Qnil, Qnil, Qnil); set_specifier_caching (Vvertical_divider_shadow_thickness, - slot_offset (struct window, - vertical_divider_shadow_thickness), + offsetof (struct window, + vertical_divider_shadow_thickness), vertical_divider_changed_in_window, 0, 0); DEFVAR_SPECIFIER ("vertical-divider-line-width", &Vvertical_divider_line_width /* @@ -5974,8 +5974,8 @@ This is a specifier; use `set-specifier' to change it. set_specifier_fallback (Vvertical_divider_line_width, fb); } set_specifier_caching (Vvertical_divider_line_width, - slot_offset (struct window, - vertical_divider_line_width), + offsetof (struct window, + vertical_divider_line_width), vertical_divider_changed_in_window, 0, 0); @@ -6004,8 +6004,7 @@ This is a specifier; use `set-specifier' to change it. set_specifier_fallback (Vvertical_divider_spacing, fb); } set_specifier_caching (Vvertical_divider_spacing, - slot_offset (struct window, - vertical_divider_spacing), + offsetof (struct window, vertical_divider_spacing), vertical_divider_changed_in_window, 0, 0); } diff --git a/src/window.h b/src/window.h index 043a9fc..588187a 100644 --- a/src/window.h +++ b/src/window.h @@ -129,7 +129,7 @@ struct window /* Number of columns display within the window is scrolled to the left. */ int hscroll; /* Idem for the window's modeline */ - int modeline_hscroll; + Charcount modeline_hscroll; /* Amount to clip off the top line for pixel-based scrolling. Point will remain constant but this will be incremented to incrementally shift lines up. */ diff --git a/tests/ChangeLog b/tests/ChangeLog index b4234ab..d1b19a2 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,17 @@ +2000-01-18 Martin Buchholz + + * XEmacs 21.2.27 is released. + +1999-12-24 Yoshiki Hayashi + + * automated/syntax-tests.el: New file. + Add test for scan_words using forward-word and backword-word. + +2000-01-08 Martin Buchholz + + * automated/mule-tests.el: + Test resizing of small and big (> 8k bytes) strings. + 1999-12-31 Martin Buchholz * XEmacs 21.2.26 is released. diff --git a/tests/automated/mule-tests.el b/tests/automated/mule-tests.el index dea33ef..86c402d 100644 --- a/tests/automated/mule-tests.el +++ b/tests/automated/mule-tests.el @@ -103,4 +103,61 @@ the Assert macro checks for correctness." (aset string 0 (make-char 'latin-iso8859-2 42)) (Assert (eq (aref string 1) (make-char 'latin-iso8859-2 69)))) + ;; Test strings waxing and waning across the 8k BIG_STRING limit (see alloc.c) + (defun charset-char-string (charset) + (let (lo hi string n) + (if (= (charset-chars charset) 94) + (setq lo 33 hi 126) + (setq lo 32 hi 127)) + (if (= (charset-dimension charset) 1) + (progn + (setq string (make-string (1+ (- hi lo)) ??)) + (setq n 0) + (loop for j from lo to hi do + (progn + (aset string n (make-char charset j)) + (incf n))) + string) + (progn + (setq string (make-string (* (1+ (- hi lo)) (1+ (- hi lo))) ??)) + (setq n 0) + (loop for j from lo to hi do + (loop for k from lo to hi do + (progn + (aset string n (make-char charset j k)) + (incf n)))) + string)))) + + ;; The following two used to crash xemacs! + (Assert (charset-char-string 'japanese-jisx0208)) + (aset (make-string 9003 ??) 1 (make-char 'latin-iso8859-1 77)) + + (let ((greek-string (charset-char-string 'greek-iso8859-7)) + (string (make-string (* 96 60) ??))) + (loop for j from 0 below (length string) do + (aset string j (aref greek-string (mod j 96)))) + (loop for k in '(0 1 58 59) do + (Assert (equal (substring string (* 96 k) (* 96 (1+ k))) greek-string)))) + + (let ((greek-string (charset-char-string 'greek-iso8859-7)) + (string (make-string (* 96 60) ??))) + (loop for j from (1- (length string)) downto 0 do + (aset string j (aref greek-string (mod j 96)))) + (loop for k in '(0 1 58 59) do + (Assert (equal (substring string (* 96 k) (* 96 (1+ k))) greek-string)))) + + (let ((ascii-string (charset-char-string 'ascii)) + (string (make-string (* 94 60) (make-char 'greek-iso8859-7 57)))) + (loop for j from 0 below (length string) do + (aset string j (aref ascii-string (mod j 94)))) + (loop for k in '(0 1 58 59) do + (Assert (equal (substring string (* 94 k) (+ 94 (* 94 k))) ascii-string)))) + + (let ((ascii-string (charset-char-string 'ascii)) + (string (make-string (* 94 60) (make-char 'greek-iso8859-7 57)))) + (loop for j from (1- (length string)) downto 0 do + (aset string j (aref ascii-string (mod j 94)))) + (loop for k in '(0 1 58 59) do + (Assert (equal (substring string (* 94 k) (* 94 (1+ k))) ascii-string)))) + ) diff --git a/tests/glyph-test.el b/tests/glyph-test.el index 67533cc..b9c04a1 100644 --- a/tests/glyph-test.el +++ b/tests/glyph-test.el @@ -2,6 +2,10 @@ (make-extent (point) (point)) (setq im (make-glyph [xpm :file "xemacs-icon.xpm"]))) +(set-extent-begin-glyph + (make-extent (point) (point)) + (make-glyph [string :data "xemacs"])) + (defun foo () (interactive) (setq ok-select (not ok-select))) @@ -64,6 +68,7 @@ (setq tab (make-glyph [tab-control :descriptor "My Tab" :face highlight + :orientation right :properties (:items (["One" foo] ["Two" fee] ["Three" foo]))]))) @@ -104,7 +109,8 @@ ;; normal pushbutton (set-extent-begin-glyph (make-extent (point) (point)) - (make-glyph [button :descriptor ["A Big Button" foo ]])) + (setq pbutton + (make-glyph [button :descriptor ["A Big Button" foo ]]))) ;; edit box (set-extent-begin-glyph diff --git a/version.sh b/version.sh index 97bafe3..40561bc 100644 --- a/version.sh +++ b/version.sh @@ -2,8 +2,8 @@ emacs_is_beta=t emacs_major_version=21 emacs_minor_version=2 -emacs_beta_version=26 -xemacs_codename="Millenium" +emacs_beta_version=27 +xemacs_codename="Hera" infodock_major_version=4 infodock_minor_version=0 infodock_build_version=8