Mercurial > hg > xemacs-beta
changeset 175:2d532a89d707 r20-3b14
Import from CVS: tag r20-3b14
line wrap: on
line diff
--- a/CHANGES-beta Mon Aug 13 09:49:11 2007 +0200 +++ b/CHANGES-beta Mon Aug 13 09:50:14 2007 +0200 @@ -1,4 +1,14 @@ -*- indented-text -*- +to 20.3 beta14 "Vienna" +-- VM-6.33 +-- Miscellaneous Martin Buchholz patches to configure +-- viper-2.95 +-- ediff-2.66 +-- cc-mode-5.13 +-- Texinfo files updated from Texinfo-3.9e. +-- Menubar accelerators courtesy of Joel Peterson +-- Miscellaneous bug fixes + to 20.3 beta13 "Brussels" -- W3-3.0.94 -- ph.el-2.6 courtesy of Oscar Figueiredo
--- a/ChangeLog Mon Aug 13 09:49:11 2007 +0200 +++ b/ChangeLog Mon Aug 13 09:50:14 2007 +0200 @@ -1,3 +1,35 @@ +1997-07-19 Stephanie L Baur <steve@altair.xemacs.org> + + * XEmacs 20.3-beta14 is released. + +1997-07-19 Martin Buchholz <mrb@eng.sun.com> + + * src/fns.c (requrire): Print messages when loading a file as a + result of require. + + * configure.in: + * lisp/utils/config.el: + * lib-src/config.values: + - new file created and installed by building. + - Allow configuration time values to be queried by the lisp code. + + * configure.in: + - check for alloca in libPW on hpux. + - Redo --with-clash-detection + - need to check for termios and friends even if with-tty=no. + - Always define SIGNALS_VIA_CHARACTERS if HAVE_TERMIOS + - better quoting for AIX_SMT_EXP (untested) + - gcc flags now default to "-g -O2 -Wall -Wno-switch" + + * *.[ch]: more warning elimination + + * src/input-method*.c: + * src/s/freebsd.h: + - remove freebsd ifdefs from C code. + + * src/specifier.c: + - fix Fdisplay-table-specifier-p + 1997-07-13 Steven L Baur <steve@altair.xemacs.org> * XEmacs 20.3-beta13 is released.
--- a/Makefile.in Mon Aug 13 09:49:11 2007 +0200 +++ b/Makefile.in Mon Aug 13 09:50:14 2007 +0200 @@ -368,7 +368,9 @@ exec_prefix=${exec_prefix} bindir=${bindir} libdir=${libdir} \ archlibdir=${archlibdir} ) ; done if test `(cd ${archlibdir} && $(pwd))` != `(cd lib-src && $(pwd))`; then \ - ${INSTALL_DATA} lib-src/DOC ${archlibdir}/DOC ; \ + for f in DOC config.values; do \ + ${INSTALL_DATA} lib-src/$${f} ${archlibdir}/$${f}; \ + done ; \ for subdir in `find ${archlibdir} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; \ do (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; done ; \ else true; fi
--- a/configure Mon Aug 13 09:49:11 2007 +0200 +++ b/configure Mon Aug 13 09:50:14 2007 +0200 @@ -1431,6 +1431,20 @@ with_tooltalk=yes fi +if test "$with_clash_detection" = "yes"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining CLASH_DETECTION +EOF +cat >> confdefs.h <<\EOF +#define CLASH_DETECTION 1 +EOF +} + + extra_objs="$extra_objs filelock.o" && if test "$extra_verbose" = "yes"; then + echo " xemacs will be linked with \"filelock.o\"" + fi +fi + test -n "$compiler" && CC="$compiler" if test "$with_gcc" = "no"; then case "$CC" in "" | *gcc* ) CC="${NON_GNU_CC-cc}" ;; esac fi @@ -1441,7 +1455,7 @@ # 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:1445: checking for $ac_word" >&5 +echo "configure:1459: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1467,7 +1481,7 @@ # 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:1471: checking for $ac_word" >&5 +echo "configure:1485: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1512,7 +1526,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1516: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1530: 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' @@ -1524,11 +1538,11 @@ cross_compiling=no cat > conftest.$ac_ext <<EOF -#line 1528 "configure" +#line 1542 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; 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 @@ -1548,19 +1562,19 @@ { 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:1552: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1566: 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:1557: checking whether we are using GNU C" >&5 +echo "configure:1571: checking whether we are using GNU C" >&5 cat > conftest.c <<EOF #ifdef __GNUC__ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1564: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1578: \"$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 @@ -1574,7 +1588,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1578: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1592: checking whether ${CC-cc} accepts -g" >&5 echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then @@ -1603,7 +1617,7 @@ # 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:1607: checking for $ac_word" >&5 +echo "configure:1621: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1629,7 +1643,7 @@ # 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:1633: checking for $ac_word" >&5 +echo "configure:1647: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1674,7 +1688,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1678: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1692: 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,11 +1700,11 @@ cross_compiling=no cat > conftest.$ac_ext <<EOF -#line 1690 "configure" +#line 1704 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; 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 @@ -1710,19 +1724,19 @@ { 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:1714: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1728: 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:1719: checking whether we are using GNU C" >&5 +echo "configure:1733: checking whether we are using GNU C" >&5 cat > conftest.c <<EOF #ifdef __GNUC__ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1726: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1740: \"$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 @@ -1736,7 +1750,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1740: 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 @@ -1765,7 +1779,7 @@ # 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:1769: checking for $ac_word" >&5 +echo "configure:1783: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1791,7 +1805,7 @@ # 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:1795: checking for $ac_word" >&5 +echo "configure:1809: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1836,7 +1850,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1840: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1854: 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' @@ -1848,11 +1862,11 @@ cross_compiling=no cat > conftest.$ac_ext <<EOF -#line 1852 "configure" +#line 1866 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; 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 @@ -1872,19 +1886,19 @@ { 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:1876: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1890: 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:1881: checking whether we are using GNU C" >&5 +echo "configure:1895: checking whether we are using GNU C" >&5 cat > conftest.c <<EOF #ifdef __GNUC__ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1888: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1902: \"$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 @@ -1898,7 +1912,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1902: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1916: checking whether ${CC-cc} accepts -g" >&5 echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then @@ -1931,7 +1945,7 @@ 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:1935: checking how to run the C preprocessor" >&5 +echo "configure:1949: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1944,13 +1958,13 @@ # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext <<EOF -#line 1948 "configure" +#line 1962 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1968: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1961,13 +1975,13 @@ rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext <<EOF -#line 1965 "configure" +#line 1979 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1971: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1990,9 +2004,9 @@ echo $ac_n "checking for AIX""... $ac_c" 1>&6 -echo "configure:1994: checking for AIX" >&5 -cat > conftest.$ac_ext <<EOF -#line 1996 "configure" +echo "configure:2008: checking for AIX" >&5 +cat > conftest.$ac_ext <<EOF +#line 2010 "configure" #include "confdefs.h" #ifdef _AIX yes @@ -2019,9 +2033,9 @@ echo $ac_n "checking whether we are using SunPro C""... $ac_c" 1>&6 -echo "configure:2023: checking whether we are using SunPro C" >&5 -cat > conftest.$ac_ext <<EOF -#line 2025 "configure" +echo "configure:2037: checking whether we are using SunPro C" >&5 +cat > conftest.$ac_ext <<EOF +#line 2039 "configure" #include "confdefs.h" int main() { @@ -2032,7 +2046,7 @@ ; return 0; } EOF -if { (eval echo configure:2036: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2050: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* __sunpro_c=yes else @@ -2260,7 +2274,7 @@ if test -z "$CFLAGS"; then if test "$GCC" = "yes"; then - CFLAGS="-g -O2 -Wall" + CFLAGS="-g -O2 -Wall -Wno-switch" test "$opsys" = "linux" -a "$machine" = "intel386" && \ CFLAGS="$CFLAGS -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2" elif test "$__sunpro_c" = "yes"; then @@ -2319,7 +2333,7 @@ fi echo $ac_n "checking for dynodump""... $ac_c" 1>&6 -echo "configure:2323: checking for dynodump" >&5 +echo "configure:2337: checking for dynodump" >&5 if test "$unexec" != "unexsol2.o"; then echo "$ac_t""no" 1>&6 else @@ -2333,6 +2347,7 @@ } MAKE_SUBDIR="$MAKE_SUBDIR dynodump" && if test "$extra_verbose" = "yes"; then echo " Appending \"dynodump\" to \$MAKE_SUBDIR"; fi + SRC_SUBDIR_DEPS="$SRC_SUBDIR_DEPS dynodump" && if test "$extra_verbose" = "yes"; then echo " Appending \"dynodump\" to \$SRC_SUBDIR_DEPS"; fi case "$machine" in sparc ) dynodump_arch=sparc ;; *86* ) dynodump_arch=i386 ;; @@ -2347,7 +2362,7 @@ if test "$ordinary_link" = "no" -a "$GCC" = "yes"; then test -z "$linker" && linker='$(CC) -nostdlib' - test -z "$lib_gcc" && lib_gcc='`$(CC) -print-lib-gccfile-name`' + test -z "$lib_gcc" && lib_gcc='`$(CC) -print-libgcc-file-name`' fi test "$GCC" != "yes" && lib_gcc= @@ -2389,19 +2404,19 @@ if test "$add_runtime_path" = "yes"; then echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6 -echo "configure:2393: checking "for runtime libraries flag"" >&5 +echo "configure:2408: checking "for runtime libraries flag"" >&5 dash_r="" for try_dash_r in "-R" "-R " "-rpath "; do xe_check_libs="${try_dash_r}/no/such/file-or-directory" cat > conftest.$ac_ext <<EOF -#line 2398 "configure" +#line 2413 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* dash_r="$try_dash_r" else @@ -2495,7 +2510,7 @@ # 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:2499: checking for $ac_word" >&5 +echo "configure:2514: checking for $ac_word" >&5 if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -2548,7 +2563,7 @@ # 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:2552: checking for a BSD compatible install" >&5 +echo "configure:2567: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" @@ -2599,7 +2614,7 @@ # 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:2603: checking for $ac_word" >&5 +echo "configure:2618: checking for $ac_word" >&5 if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. @@ -2630,15 +2645,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2634: checking for $ac_hdr" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2637 "configure" +echo "configure:2649: checking for $ac_hdr" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2652 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2642: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2657: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2671,15 +2686,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2675: checking for $ac_hdr" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2678 "configure" +echo "configure:2690: checking for $ac_hdr" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2693 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2683: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2698: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2712,15 +2727,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2716: checking for $ac_hdr" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2719 "configure" +echo "configure:2731: checking for $ac_hdr" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2734 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2724: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2739: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2750,10 +2765,10 @@ done echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:2754: checking for sys/wait.h that is POSIX.1 compatible" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2757 "configure" +echo "configure:2769: checking for sys/wait.h that is POSIX.1 compatible" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2772 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/wait.h> @@ -2769,7 +2784,7 @@ s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:2773: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2788: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -2793,10 +2808,10 @@ fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2797: checking for ANSI C header files" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2800 "configure" +echo "configure:2812: checking for ANSI C header files" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2815 "configure" #include "confdefs.h" #include <stdlib.h> #include <stdarg.h> @@ -2804,7 +2819,7 @@ #include <float.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2821,7 +2836,7 @@ 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 -#line 2825 "configure" +#line 2840 "configure" #include "confdefs.h" #include <string.h> EOF @@ -2839,7 +2854,7 @@ 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 -#line 2843 "configure" +#line 2858 "configure" #include "confdefs.h" #include <stdlib.h> EOF @@ -2857,7 +2872,7 @@ 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 <<EOF -#line 2861 "configure" +#line 2876 "configure" #include "confdefs.h" #include <ctype.h> #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2868,7 +2883,7 @@ exit (0); } EOF -if { (eval echo configure:2872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:2887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then : else @@ -2893,10 +2908,10 @@ fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:2897: checking whether time.h and sys/time.h may both be included" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2900 "configure" +echo "configure:2912: checking whether time.h and sys/time.h may both be included" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2915 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/time.h> @@ -2905,7 +2920,7 @@ struct tm *tp; ; return 0; } EOF -if { (eval echo configure:2909: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2924: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -2929,10 +2944,10 @@ fi echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 -echo "configure:2933: checking for sys_siglist declaration in signal.h or unistd.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2936 "configure" +echo "configure:2948: checking for sys_siglist declaration in signal.h or unistd.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2951 "configure" #include "confdefs.h" #include <sys/types.h> #include <signal.h> @@ -2944,7 +2959,7 @@ char *msg = *(sys_siglist + 1); ; return 0; } EOF -if { (eval echo configure:2948: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else @@ -2969,9 +2984,9 @@ echo $ac_n "checking for struct utimbuf""... $ac_c" 1>&6 -echo "configure:2973: checking for struct utimbuf" >&5 -cat > conftest.$ac_ext <<EOF -#line 2975 "configure" +echo "configure:2988: checking for struct utimbuf" >&5 +cat > conftest.$ac_ext <<EOF +#line 2990 "configure" #include "confdefs.h" #ifdef TIME_WITH_SYS_TIME #include <sys/time.h> @@ -2990,7 +3005,7 @@ static struct utimbuf x; x.actime = x.modtime; ; return 0; } EOF -if { (eval echo configure:2994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3009: \"$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 @@ -3010,10 +3025,10 @@ rm -f conftest* echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:3014: checking return type of signal handlers" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3017 "configure" +echo "configure:3029: checking return type of signal handlers" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3032 "configure" #include "confdefs.h" #include <sys/types.h> #include <signal.h> @@ -3030,7 +3045,7 @@ int i; ; return 0; } EOF -if { (eval echo configure:3034: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3049: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -3052,10 +3067,10 @@ echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3056: checking for size_t" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3059 "configure" +echo "configure:3071: checking for size_t" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3074 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -3086,10 +3101,10 @@ fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:3090: checking for pid_t" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3093 "configure" +echo "configure:3105: checking for pid_t" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3108 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -3120,10 +3135,10 @@ fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:3124: checking for uid_t in sys/types.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3127 "configure" +echo "configure:3139: checking for uid_t in sys/types.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3142 "configure" #include "confdefs.h" #include <sys/types.h> EOF @@ -3159,10 +3174,10 @@ fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:3163: checking for mode_t" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3166 "configure" +echo "configure:3178: checking for mode_t" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3181 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -3193,10 +3208,10 @@ fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3197: checking for off_t" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3200 "configure" +echo "configure:3212: checking for off_t" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3215 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -3228,9 +3243,9 @@ echo $ac_n "checking for struct timeval""... $ac_c" 1>&6 -echo "configure:3232: checking for struct timeval" >&5 -cat > conftest.$ac_ext <<EOF -#line 3234 "configure" +echo "configure:3247: checking for struct timeval" >&5 +cat > conftest.$ac_ext <<EOF +#line 3249 "configure" #include "confdefs.h" #ifdef TIME_WITH_SYS_TIME #include <sys/time.h> @@ -3246,7 +3261,7 @@ static struct timeval x; x.tv_sec = x.tv_usec; ; return 0; } EOF -if { (eval echo configure:3250: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3265: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 HAVE_TIMEVAL=yes @@ -3268,10 +3283,10 @@ rm -f conftest* echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:3272: checking whether struct tm is in sys/time.h or time.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3275 "configure" +echo "configure:3287: checking whether struct tm is in sys/time.h or time.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3290 "configure" #include "confdefs.h" #include <sys/types.h> #include <time.h> @@ -3279,7 +3294,7 @@ struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:3283: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3298: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -3303,10 +3318,10 @@ fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:3307: checking for tm_zone in struct tm" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3310 "configure" +echo "configure:3322: checking for tm_zone in struct tm" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3325 "configure" #include "confdefs.h" #include <sys/types.h> #include <$ac_cv_struct_tm> @@ -3314,7 +3329,7 @@ struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:3318: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3333: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -3337,10 +3352,10 @@ else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:3341: checking for tzname" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3344 "configure" +echo "configure:3356: checking for tzname" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3359 "configure" #include "confdefs.h" #include <time.h> #ifndef tzname /* For SGI. */ @@ -3350,7 +3365,7 @@ atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:3354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -3376,10 +3391,10 @@ echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:3380: checking for working const" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3383 "configure" +echo "configure:3395: checking for working const" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3398 "configure" #include "confdefs.h" int main() { @@ -3428,7 +3443,7 @@ ; return 0; } EOF -if { (eval echo configure:3432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3447: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -3453,7 +3468,7 @@ echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:3457: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:3472: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` cat > conftestmake <<\EOF @@ -3478,12 +3493,12 @@ echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:3482: checking whether byte ordering is bigendian" >&5 +echo "configure:3497: 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 <<EOF -#line 3487 "configure" +#line 3502 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/param.h> @@ -3494,11 +3509,11 @@ #endif ; return 0; } EOF -if { (eval echo configure:3498: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3513: \"$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 <<EOF -#line 3502 "configure" +#line 3517 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/param.h> @@ -3509,7 +3524,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:3513: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3528: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -3526,7 +3541,7 @@ rm -f conftest* if test $ac_cv_c_bigendian = unknown; then cat > conftest.$ac_ext <<EOF -#line 3530 "configure" +#line 3545 "configure" #include "confdefs.h" main () { /* Are we little or big endian? From Harbison&Steele. */ @@ -3539,7 +3554,7 @@ exit (u.c[sizeof (long) - 1] == 1); } EOF -if { (eval echo configure:3543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_c_bigendian=no else @@ -3565,10 +3580,10 @@ echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:3569: checking size of short" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3572 "configure" +echo "configure:3584: checking size of short" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3587 "configure" #include "confdefs.h" #include <stdio.h> main() @@ -3579,7 +3594,7 @@ exit(0); } EOF -if { (eval echo configure:3583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_sizeof_short=`cat conftestval` else @@ -3606,10 +3621,10 @@ exit 1 fi echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:3610: checking size of int" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3613 "configure" +echo "configure:3625: checking size of int" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3628 "configure" #include "confdefs.h" #include <stdio.h> main() @@ -3620,7 +3635,7 @@ exit(0); } EOF -if { (eval echo configure:3624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_sizeof_int=`cat conftestval` else @@ -3641,10 +3656,10 @@ echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:3645: checking size of long" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3648 "configure" +echo "configure:3660: checking size of long" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3663 "configure" #include "confdefs.h" #include <stdio.h> main() @@ -3655,7 +3670,7 @@ exit(0); } EOF -if { (eval echo configure:3659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_sizeof_long=`cat conftestval` else @@ -3676,10 +3691,10 @@ echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:3680: checking size of long long" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3683 "configure" +echo "configure:3695: checking size of long long" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3698 "configure" #include "confdefs.h" #include <stdio.h> main() @@ -3690,7 +3705,7 @@ exit(0); } EOF -if { (eval echo configure:3694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3709: \"$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 @@ -3711,10 +3726,10 @@ echo $ac_n "checking size of void *""... $ac_c" 1>&6 -echo "configure:3715: checking size of void *" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3718 "configure" +echo "configure:3730: checking size of void *" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3733 "configure" #include "confdefs.h" #include <stdio.h> main() @@ -3725,7 +3740,7 @@ exit(0); } EOF -if { (eval echo configure:3729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3744: \"$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 @@ -3747,7 +3762,7 @@ echo $ac_n "checking for long file names""... $ac_c" 1>&6 -echo "configure:3751: checking for long file names" >&5 +echo "configure:3766: 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: @@ -3794,12 +3809,12 @@ echo $ac_n "checking for sqrt in -lm""... $ac_c" 1>&6 -echo "configure:3798: checking for sqrt in -lm" >&5 +echo "configure:3813: checking for sqrt in -lm" >&5 ac_lib_var=`echo m'_'sqrt | sed 'y%./+-%__p_%'` xe_check_libs=" -lm " cat > conftest.$ac_ext <<EOF -#line 3803 "configure" +#line 3818 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3810,7 +3825,7 @@ sqrt() ; return 0; } EOF -if { (eval echo configure:3814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3853,7 +3868,7 @@ echo "checking type of mail spool file locking" 1>&6 -echo "configure:3857: checking type of mail spool file locking" >&5 +echo "configure:3872: checking type of mail spool file locking" >&5 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 { test "$extra_verbose" = "yes" && cat << \EOF @@ -3877,12 +3892,12 @@ echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6 -echo "configure:3881: checking for kstat_open in -lkstat" >&5 +echo "configure:3896: 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 <<EOF -#line 3886 "configure" +#line 3901 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3893,7 +3908,7 @@ kstat_open() ; return 0; } EOF -if { (eval echo configure:3897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3927,12 +3942,12 @@ echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6 -echo "configure:3931: checking for kvm_read in -lkvm" >&5 +echo "configure:3946: 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 <<EOF -#line 3936 "configure" +#line 3951 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3943,7 +3958,7 @@ kvm_read() ; return 0; } EOF -if { (eval echo configure:3947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3977,12 +3992,12 @@ echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6 -echo "configure:3981: checking for cma_open in -lpthreads" >&5 +echo "configure:3996: 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 <<EOF -#line 3986 "configure" +#line 4001 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3993,7 +4008,7 @@ cma_open() ; return 0; } EOF -if { (eval echo configure:3997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4029,7 +4044,7 @@ fi echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6 -echo "configure:4033: checking whether the -xildoff compiler flag is required" >&5 +echo "configure:4048: 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; @@ -4040,7 +4055,7 @@ 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:4044: checking for \"-z ignore\" linker flag" >&5 +echo "configure:4059: 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 ;; @@ -4050,7 +4065,7 @@ echo "checking "for specified window system"" 1>&6 -echo "configure:4054: checking "for specified window system"" >&5 +echo "configure:4069: checking "for specified window system"" >&5 if test "$x_includes $x_libraries" = "NONE NONE"; then if test -n "$OPENWINHOME" \ @@ -4071,7 +4086,7 @@ # 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:4075: checking for X" >&5 +echo "configure:4090: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -4131,12 +4146,12 @@ # First, try using that file with no special directory specified. cat > conftest.$ac_ext <<EOF -#line 4135 "configure" +#line 4150 "configure" #include "confdefs.h" #include <$x_direct_test_include> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4140: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4155: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -4205,14 +4220,14 @@ ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <<EOF -#line 4209 "configure" +#line 4224 "configure" #include "confdefs.h" int main() { ${x_direct_test_function}() ; return 0; } EOF -if { (eval echo configure:4216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -4321,17 +4336,17 @@ 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:4325: checking whether -R must be followed by a space" >&5 +echo "configure:4340: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <<EOF -#line 4328 "configure" +#line 4343 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:4335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_R_nospace=yes else @@ -4347,14 +4362,14 @@ else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <<EOF -#line 4351 "configure" +#line 4366 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:4358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_R_space=yes else @@ -4390,12 +4405,12 @@ else echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:4394: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:4409: 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 <<EOF -#line 4399 "configure" +#line 4414 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4406,7 +4421,7 @@ dnet_ntoa() ; return 0; } EOF -if { (eval echo configure:4410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4430,12 +4445,12 @@ 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:4434: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:4449: 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 <<EOF -#line 4439 "configure" +#line 4454 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4446,7 +4461,7 @@ dnet_ntoa() ; return 0; } EOF -if { (eval echo configure:4450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4465: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4475,10 +4490,10 @@ # 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:4479: checking for gethostbyname" >&5 - -cat > conftest.$ac_ext <<EOF -#line 4482 "configure" +echo "configure:4494: checking for gethostbyname" >&5 + +cat > conftest.$ac_ext <<EOF +#line 4497 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname(); below. */ @@ -4501,7 +4516,7 @@ ; return 0; } EOF -if { (eval echo configure:4505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -4522,12 +4537,12 @@ if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:4526: checking for gethostbyname in -lnsl" >&5 +echo "configure:4541: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` xe_check_libs=" -lnsl " cat > conftest.$ac_ext <<EOF -#line 4531 "configure" +#line 4546 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4538,7 +4553,7 @@ gethostbyname() ; return 0; } EOF -if { (eval echo configure:4542: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4568,10 +4583,10 @@ # -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:4572: checking for connect" >&5 - -cat > conftest.$ac_ext <<EOF -#line 4575 "configure" +echo "configure:4587: checking for connect" >&5 + +cat > conftest.$ac_ext <<EOF +#line 4590 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect(); below. */ @@ -4594,7 +4609,7 @@ ; return 0; } EOF -if { (eval echo configure:4598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -4617,12 +4632,12 @@ 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:4621: checking "$xe_msg_checking"" >&5 +echo "configure:4636: 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 <<EOF -#line 4626 "configure" +#line 4641 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4633,7 +4648,7 @@ connect() ; return 0; } EOF -if { (eval echo configure:4637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4657,10 +4672,10 @@ # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:4661: checking for remove" >&5 - -cat > conftest.$ac_ext <<EOF -#line 4664 "configure" +echo "configure:4676: checking for remove" >&5 + +cat > conftest.$ac_ext <<EOF +#line 4679 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove(); below. */ @@ -4683,7 +4698,7 @@ ; return 0; } EOF -if { (eval echo configure:4687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -4704,12 +4719,12 @@ if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:4708: checking for remove in -lposix" >&5 +echo "configure:4723: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` xe_check_libs=" -lposix " cat > conftest.$ac_ext <<EOF -#line 4713 "configure" +#line 4728 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4720,7 +4735,7 @@ remove() ; return 0; } EOF -if { (eval echo configure:4724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4744,10 +4759,10 @@ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:4748: checking for shmat" >&5 - -cat > conftest.$ac_ext <<EOF -#line 4751 "configure" +echo "configure:4763: checking for shmat" >&5 + +cat > conftest.$ac_ext <<EOF +#line 4766 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat(); below. */ @@ -4770,7 +4785,7 @@ ; return 0; } EOF -if { (eval echo configure:4774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -4791,12 +4806,12 @@ if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:4795: checking for shmat in -lipc" >&5 +echo "configure:4810: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` xe_check_libs=" -lipc " cat > conftest.$ac_ext <<EOF -#line 4800 "configure" +#line 4815 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4807,7 +4822,7 @@ shmat() ; return 0; } EOF -if { (eval echo configure:4811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4841,12 +4856,12 @@ # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:4845: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:4860: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` xe_check_libs=" -lICE " cat > conftest.$ac_ext <<EOF -#line 4850 "configure" +#line 4865 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4857,7 +4872,7 @@ IceConnectionNumber() ; return 0; } EOF -if { (eval echo configure:4861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4902,6 +4917,7 @@ } MAKE_SUBDIR="$MAKE_SUBDIR lwlib" && if test "$extra_verbose" = "yes"; then echo " Appending \"lwlib\" to \$MAKE_SUBDIR"; fi + SRC_SUBDIR_DEPS="$SRC_SUBDIR_DEPS lwlib" && if test "$extra_verbose" = "yes"; then echo " Appending \"lwlib\" to \$SRC_SUBDIR_DEPS"; fi for lib_dir in "/usr/dt/lib" "/usr/lib/Motif1.2" "/usr/lib/Motif1.1"; do inc_dir=`echo $lib_dir | sed -e 's/lib/include/'` @@ -4989,7 +5005,7 @@ fi echo "checking for X defines extracted by xmkmf" 1>&6 -echo "configure:4993: checking for X defines extracted by xmkmf" >&5 +echo "configure:5009: checking for X defines extracted by xmkmf" >&5 rm -fr conftestdir if mkdir conftestdir; then cd conftestdir @@ -5021,15 +5037,15 @@ ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6 -echo "configure:5025: checking for X11/Intrinsic.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5028 "configure" +echo "configure:5041: checking for X11/Intrinsic.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5044 "configure" #include "confdefs.h" #include <X11/Intrinsic.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5033: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5049: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5053,12 +5069,12 @@ echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:5057: checking for XOpenDisplay in -lX11" >&5 +echo "configure:5073: checking for XOpenDisplay in -lX11" >&5 ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 " cat > conftest.$ac_ext <<EOF -#line 5062 "configure" +#line 5078 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5069,7 +5085,7 @@ XOpenDisplay() ; return 0; } EOF -if { (eval echo configure:5073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5094,12 +5110,12 @@ 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:5098: checking "$xe_msg_checking"" >&5 +echo "configure:5114: 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 <<EOF -#line 5103 "configure" +#line 5119 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5110,7 +5126,7 @@ XGetFontProperty() ; return 0; } EOF -if { (eval echo configure:5114: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5137,12 +5153,12 @@ echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6 -echo "configure:5141: checking for XShapeSelectInput in -lXext" >&5 +echo "configure:5157: checking for XShapeSelectInput in -lXext" >&5 ac_lib_var=`echo Xext'_'XShapeSelectInput | sed 'y%./+-%__p_%'` xe_check_libs=" -lXext " cat > conftest.$ac_ext <<EOF -#line 5146 "configure" +#line 5162 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5153,7 +5169,7 @@ XShapeSelectInput() ; return 0; } EOF -if { (eval echo configure:5157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5176,12 +5192,12 @@ echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6 -echo "configure:5180: checking for XtOpenDisplay in -lXt" >&5 +echo "configure:5196: checking for XtOpenDisplay in -lXt" >&5 ac_lib_var=`echo Xt'_'XtOpenDisplay | sed 'y%./+-%__p_%'` xe_check_libs=" -lXt " cat > conftest.$ac_ext <<EOF -#line 5185 "configure" +#line 5201 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5192,7 +5208,7 @@ XtOpenDisplay() ; return 0; } EOF -if { (eval echo configure:5196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5215,14 +5231,14 @@ echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6 -echo "configure:5219: checking the version of X11 being used" >&5 +echo "configure:5235: checking the version of X11 being used" >&5 cat > conftest.$ac_ext <<EOF -#line 5221 "configure" +#line 5237 "configure" #include "confdefs.h" #include <X11/Intrinsic.h> main(int c, char* v[]) { return c>1 ? XlibSpecificationRelease : 0; } EOF -if { (eval echo configure:5226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:5242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ./conftest foobar; x11_release=$? else @@ -5246,15 +5262,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5250: checking for $ac_hdr" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5253 "configure" +echo "configure:5266: checking for $ac_hdr" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5269 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5258: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5274: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5285,7 +5301,7 @@ echo $ac_n "checking for XFree86""... $ac_c" 1>&6 -echo "configure:5289: checking for XFree86" >&5 +echo "configure:5305: checking for XFree86" >&5 if test -d "/usr/X386/include" -o \ -f "/etc/XF86Config" -o \ -f "/etc/X11/XF86Config" -o \ @@ -5305,12 +5321,12 @@ test -z "$with_xmu" && { echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6 -echo "configure:5309: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 +echo "configure:5325: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 ac_lib_var=`echo Xmu'_'XmuReadBitmapDataFromFile | sed 'y%./+-%__p_%'` xe_check_libs=" -lXmu " cat > conftest.$ac_ext <<EOF -#line 5314 "configure" +#line 5330 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5321,7 +5337,7 @@ XmuReadBitmapDataFromFile() ; return 0; } EOF -if { (eval echo configure:5325: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5351,19 +5367,19 @@ echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6 -echo "configure:5355: checking for main in -lXbsd" >&5 +echo "configure:5371: checking for main in -lXbsd" >&5 ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lXbsd " cat > conftest.$ac_ext <<EOF -#line 5360 "configure" +#line 5376 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:5367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5386,12 +5402,12 @@ echo $ac_n "checking for XawScrollbarSetThumb in -lXaw""... $ac_c" 1>&6 -echo "configure:5390: checking for XawScrollbarSetThumb in -lXaw" >&5 +echo "configure:5406: checking for XawScrollbarSetThumb in -lXaw" >&5 ac_lib_var=`echo Xaw'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'` xe_check_libs=" -lXaw " cat > conftest.$ac_ext <<EOF -#line 5395 "configure" +#line 5411 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5402,7 +5418,7 @@ XawScrollbarSetThumb() ; return 0; } EOF -if { (eval echo configure:5406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5426,15 +5442,15 @@ if test "$have_xaw" = "yes"; then ac_safe=`echo "X11/Xaw/Reports.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xaw/Reports.h""... $ac_c" 1>&6 -echo "configure:5430: checking for X11/Xaw/Reports.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5433 "configure" +echo "configure:5446: checking for X11/Xaw/Reports.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5449 "configure" #include "confdefs.h" #include <X11/Xaw/Reports.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5454: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5493,15 +5509,15 @@ 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:5497: checking for X11/Xauth.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5500 "configure" +echo "configure:5513: checking for X11/Xauth.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5516 "configure" #include "confdefs.h" #include <X11/Xauth.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5505: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5524,12 +5540,12 @@ } test -z "$with_xauth" && { echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6 -echo "configure:5528: checking for XauGetAuthByAddr in -lXau" >&5 +echo "configure:5544: checking for XauGetAuthByAddr in -lXau" >&5 ac_lib_var=`echo Xau'_'XauGetAuthByAddr | sed 'y%./+-%__p_%'` xe_check_libs=" -lXau " cat > conftest.$ac_ext <<EOF -#line 5533 "configure" +#line 5549 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5540,7 +5556,7 @@ XauGetAuthByAddr() ; return 0; } EOF -if { (eval echo configure:5544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5581,15 +5597,15 @@ test -z "$with_offix" && { ac_safe=`echo "OffiX/DragAndDrop.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for OffiX/DragAndDrop.h""... $ac_c" 1>&6 -echo "configure:5585: checking for OffiX/DragAndDrop.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5588 "configure" +echo "configure:5601: checking for OffiX/DragAndDrop.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5604 "configure" #include "confdefs.h" #include <OffiX/DragAndDrop.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5593: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5609: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5612,12 +5628,12 @@ } test -z "$with_offix" && { echo $ac_n "checking for DndInitialize in -lDnd""... $ac_c" 1>&6 -echo "configure:5616: checking for DndInitialize in -lDnd" >&5 +echo "configure:5632: checking for DndInitialize in -lDnd" >&5 ac_lib_var=`echo Dnd'_'DndInitialize | sed 'y%./+-%__p_%'` xe_check_libs=" -lDnd " cat > conftest.$ac_ext <<EOF -#line 5621 "configure" +#line 5637 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5628,7 +5644,7 @@ DndInitialize() ; return 0; } EOF -if { (eval echo configure:5632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5667,15 +5683,15 @@ 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:5671: checking for ${dir}tt_c.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5674 "configure" +echo "configure:5687: checking for ${dir}tt_c.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5690 "configure" #include "confdefs.h" #include <${dir}tt_c.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5695: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5704,12 +5720,12 @@ 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:5708: checking "$xe_msg_checking"" >&5 +echo "configure:5724: 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 <<EOF -#line 5713 "configure" +#line 5729 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5720,7 +5736,7 @@ tt_message_create() ; return 0; } EOF -if { (eval echo configure:5724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5769,15 +5785,15 @@ 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:5773: checking for Dt/Dt.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5776 "configure" +echo "configure:5789: checking for Dt/Dt.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5792 "configure" #include "confdefs.h" #include <Dt/Dt.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5781: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5797: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5800,12 +5816,12 @@ } test -z "$with_cde" && { echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6 -echo "configure:5804: checking for DtDndDragStart in -lDtSvc" >&5 +echo "configure:5820: checking for DtDndDragStart in -lDtSvc" >&5 ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'` xe_check_libs=" -lDtSvc " cat > conftest.$ac_ext <<EOF -#line 5809 "configure" +#line 5825 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5816,7 +5832,7 @@ DtDndDragStart() ; return 0; } EOF -if { (eval echo configure:5820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5863,19 +5879,19 @@ echo $ac_n "checking for main in -lenergize""... $ac_c" 1>&6 -echo "configure:5867: checking for main in -lenergize" >&5 +echo "configure:5883: checking for main in -lenergize" >&5 ac_lib_var=`echo energize'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lenergize " cat > conftest.$ac_ext <<EOF -#line 5872 "configure" +#line 5888 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:5879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5907,19 +5923,19 @@ if test -z "$energize_version"; then echo $ac_n "checking for main in -lconn""... $ac_c" 1>&6 -echo "configure:5911: checking for main in -lconn" >&5 +echo "configure:5927: checking for main in -lconn" >&5 ac_lib_var=`echo conn'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lconn " cat > conftest.$ac_ext <<EOF -#line 5916 "configure" +#line 5932 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:5923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5939: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5952,15 +5968,15 @@ fi ac_safe=`echo "editorconn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for editorconn.h""... $ac_c" 1>&6 -echo "configure:5956: checking for editorconn.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5959 "configure" +echo "configure:5972: checking for editorconn.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5975 "configure" #include "confdefs.h" #include <editorconn.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5964: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5980: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6002,7 +6018,7 @@ echo "checking for graphics libraries" 1>&6 -echo "configure:6006: checking for graphics libraries" >&5 +echo "configure:6022: checking for graphics libraries" >&5 test -z "$with_gif" && with_gif=yes; if test "$with_gif" = "yes"; then { test "$extra_verbose" = "yes" && cat << \EOF @@ -6019,10 +6035,10 @@ fi echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6 -echo "configure:6023: checking for Xpm - no older than 3.4f" >&5 +echo "configure:6039: checking for Xpm - no older than 3.4f" >&5 xe_check_libs=-lXpm test -z "$with_xpm" && { cat > conftest.$ac_ext <<EOF -#line 6026 "configure" +#line 6042 "configure" #include "confdefs.h" #include <X11/xpm.h> int main(int c, char **v) { @@ -6032,7 +6048,7 @@ 0 ; } EOF -if { (eval echo configure:6036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:6052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ./conftest foobar; xpm_status=$?; if test "$xpm_status" = "0"; then with_xpm=yes; else with_xpm=no; fi; @@ -6070,15 +6086,15 @@ 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:6074: checking for compface.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6077 "configure" +echo "configure:6090: checking for compface.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6093 "configure" #include "confdefs.h" #include <compface.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6098: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6101,12 +6117,12 @@ } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:6105: checking for UnGenFace in -lcompface" >&5 +echo "configure:6121: checking for UnGenFace in -lcompface" >&5 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'` xe_check_libs=" -lcompface " cat > conftest.$ac_ext <<EOF -#line 6110 "configure" +#line 6126 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -6117,7 +6133,7 @@ UnGenFace() ; return 0; } EOF -if { (eval echo configure:6121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6153,15 +6169,15 @@ 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:6157: checking for jpeglib.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6160 "configure" +echo "configure:6173: checking for jpeglib.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6176 "configure" #include "confdefs.h" #include <jpeglib.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6165: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6181: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6184,12 +6200,12 @@ } test -z "$with_jpeg" && { echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6 -echo "configure:6188: checking for jpeg_destroy_decompress in -ljpeg" >&5 +echo "configure:6204: 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 <<EOF -#line 6193 "configure" +#line 6209 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -6200,7 +6216,7 @@ jpeg_destroy_decompress() ; return 0; } EOF -if { (eval echo configure:6204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6236,15 +6252,15 @@ 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:6240: checking for png.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6243 "configure" +echo "configure:6256: checking for png.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6259 "configure" #include "confdefs.h" #include <png.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6248: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6264: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6266,10 +6282,10 @@ fi } test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6 -echo "configure:6270: checking for pow" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6273 "configure" +echo "configure:6286: checking for pow" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6289 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char pow(); below. */ @@ -6292,7 +6308,7 @@ ; return 0; } EOF -if { (eval echo configure:6296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_pow=yes" else @@ -6317,12 +6333,12 @@ xe_msg_checking="for png_read_image in -lpng" 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:6321: checking "$xe_msg_checking"" >&5 +echo "configure:6337: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo png'_'png_read_image | sed 'y%./+-%__p_%'` xe_check_libs=" -lpng $extra_libs" cat > conftest.$ac_ext <<EOF -#line 6326 "configure" +#line 6342 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -6333,7 +6349,7 @@ png_read_image() ; return 0; } EOF -if { (eval echo configure:6337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6383,15 +6399,15 @@ ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:6387: checking for Xm/Xm.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6390 "configure" +echo "configure:6403: checking for Xm/Xm.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6406 "configure" #include "confdefs.h" #include <Xm/Xm.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6395: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6408,12 +6424,12 @@ echo "$ac_t""yes" 1>&6 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6 -echo "configure:6412: checking for XmStringFree in -lXm" >&5 +echo "configure:6428: checking for XmStringFree in -lXm" >&5 ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'` xe_check_libs=" -lXm " cat > conftest.$ac_ext <<EOF -#line 6417 "configure" +#line 6433 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -6424,7 +6440,7 @@ XmStringFree() ; return 0; } EOF -if { (eval echo configure:6428: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6672,7 +6688,7 @@ if test "$with_mule" = "yes" ; then echo "checking for Mule-related features" 1>&6 -echo "configure:6676: checking for Mule-related features" >&5 +echo "configure:6692: checking for Mule-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining MULE EOF @@ -6689,15 +6705,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6693: checking for $ac_hdr" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6696 "configure" +echo "configure:6709: checking for $ac_hdr" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6712 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6728,12 +6744,12 @@ echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6 -echo "configure:6732: checking for strerror in -lintl" >&5 +echo "configure:6748: checking for strerror in -lintl" >&5 ac_lib_var=`echo intl'_'strerror | sed 'y%./+-%__p_%'` xe_check_libs=" -lintl " cat > conftest.$ac_ext <<EOF -#line 6737 "configure" +#line 6753 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -6744,7 +6760,7 @@ strerror() ; return 0; } EOF -if { (eval echo configure:6748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6764: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6777,19 +6793,19 @@ echo "checking for Mule input methods" 1>&6 -echo "configure:6781: checking for Mule input methods" >&5 +echo "configure:6797: checking for Mule input methods" >&5 test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no case "$with_xim" in "" | "yes" ) echo "checking for XIM" 1>&6 -echo "configure:6785: checking for XIM" >&5 +echo "configure:6801: checking for XIM" >&5 echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6 -echo "configure:6788: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:6804: checking for XmImMbLookupString in -lXm" >&5 ac_lib_var=`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'` xe_check_libs=" -lXm " cat > conftest.$ac_ext <<EOF -#line 6793 "configure" +#line 6809 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -6800,7 +6816,7 @@ XmImMbLookupString() ; return 0; } EOF -if { (eval echo configure:6804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6862,15 +6878,15 @@ 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:6866: checking for wnn/jllib.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6869 "configure" +echo "configure:6882: checking for wnn/jllib.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6885 "configure" #include "confdefs.h" #include <wnn/jllib.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6874: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6890: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6895,10 +6911,10 @@ for ac_func in crypt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6899: checking for $ac_func" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6902 "configure" +echo "configure:6915: checking for $ac_func" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6918 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -6921,7 +6937,7 @@ ; return 0; } EOF -if { (eval echo configure:6925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6950,12 +6966,12 @@ test "$ac_cv_func_crypt" != "yes" && { echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:6954: checking for crypt in -lcrypt" >&5 +echo "configure:6970: checking for crypt in -lcrypt" >&5 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'` xe_check_libs=" -lcrypt " cat > conftest.$ac_ext <<EOF -#line 6959 "configure" +#line 6975 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -6966,7 +6982,7 @@ crypt() ; return 0; } EOF -if { (eval echo configure:6970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7000,12 +7016,12 @@ fi test -z "$with_wnn" && { echo $ac_n "checking for jl_dic_list_e in -lwnn""... $ac_c" 1>&6 -echo "configure:7004: checking for jl_dic_list_e in -lwnn" >&5 +echo "configure:7020: 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 <<EOF -#line 7009 "configure" +#line 7025 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -7016,7 +7032,7 @@ jl_dic_list_e() ; return 0; } EOF -if { (eval echo configure:7020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7053,12 +7069,12 @@ fi echo $ac_n "checking for jl_fi_dic_list in -lwnn""... $ac_c" 1>&6 -echo "configure:7057: checking for jl_fi_dic_list in -lwnn" >&5 +echo "configure:7073: checking for jl_fi_dic_list in -lwnn" >&5 ac_lib_var=`echo wnn'_'jl_fi_dic_list | sed 'y%./+-%__p_%'` xe_check_libs=" -lwnn " cat > conftest.$ac_ext <<EOF -#line 7062 "configure" +#line 7078 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -7069,7 +7085,7 @@ jl_fi_dic_list() ; return 0; } EOF -if { (eval echo configure:7073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7101,15 +7117,15 @@ 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:7105: checking for canna/RK.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7108 "configure" +echo "configure:7121: checking for canna/RK.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7124 "configure" #include "confdefs.h" #include <canna/RK.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7113: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7132,12 +7148,12 @@ } test -z "$with_canna" && { echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6 -echo "configure:7136: checking for RkBgnBun in -lRKC" >&5 +echo "configure:7152: checking for RkBgnBun in -lRKC" >&5 ac_lib_var=`echo RKC'_'RkBgnBun | sed 'y%./+-%__p_%'` xe_check_libs=" -lRKC " cat > conftest.$ac_ext <<EOF -#line 7141 "configure" +#line 7157 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -7148,7 +7164,7 @@ RkBgnBun() ; return 0; } EOF -if { (eval echo configure:7152: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7171,12 +7187,12 @@ } test -z "$with_canna" && { echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6 -echo "configure:7175: checking for jrKanjiControl in -lcanna" >&5 +echo "configure:7191: checking for jrKanjiControl in -lcanna" >&5 ac_lib_var=`echo canna'_'jrKanjiControl | sed 'y%./+-%__p_%'` xe_check_libs=" -lcanna " cat > conftest.$ac_ext <<EOF -#line 7180 "configure" +#line 7196 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -7187,7 +7203,7 @@ jrKanjiControl() ; return 0; } EOF -if { (eval echo configure:7191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7287,10 +7303,10 @@ for ac_func in acosh asinh atanh cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask strcasecmp strerror tzset ulimit usleep utimes waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7291: checking for $ac_func" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7294 "configure" +echo "configure:7307: checking for $ac_func" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7310 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -7313,7 +7329,7 @@ ; return 0; } EOF -if { (eval echo configure:7317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7350,10 +7366,10 @@ for ac_func in realpath do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7354: checking for $ac_func" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7357 "configure" +echo "configure:7370: checking for $ac_func" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7373 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -7376,7 +7392,7 @@ ; return 0; } EOF -if { (eval echo configure:7380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7409,16 +7425,16 @@ esac echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6 -echo "configure:7413: checking whether netdb declares h_errno" >&5 -cat > conftest.$ac_ext <<EOF -#line 7415 "configure" +echo "configure:7429: checking whether netdb declares h_errno" >&5 +cat > conftest.$ac_ext <<EOF +#line 7431 "configure" #include "confdefs.h" #include <netdb.h> int main() { return h_errno; ; return 0; } EOF -if { (eval echo configure:7422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""yes" 1>&6 { test "$extra_verbose" = "yes" && cat << \EOF @@ -7438,16 +7454,16 @@ rm -f conftest* echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6 -echo "configure:7442: checking for sigsetjmp" >&5 -cat > conftest.$ac_ext <<EOF -#line 7444 "configure" +echo "configure:7458: checking for sigsetjmp" >&5 +cat > conftest.$ac_ext <<EOF +#line 7460 "configure" #include "confdefs.h" #include <setjmp.h> int main() { sigjmp_buf bar; sigsetjmp (bar, 0); ; return 0; } EOF -if { (eval echo configure:7451: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7467: \"$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 @@ -7467,11 +7483,11 @@ rm -f conftest* echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6 -echo "configure:7471: checking whether localtime caches TZ" >&5 +echo "configure:7487: checking whether localtime caches TZ" >&5 if test "$ac_cv_func_tzset" = "yes"; then cat > conftest.$ac_ext <<EOF -#line 7475 "configure" +#line 7491 "configure" #include "confdefs.h" #include <time.h> #if STDC_HEADERS @@ -7506,7 +7522,7 @@ exit (0); } EOF -if { (eval echo configure:7510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:7526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then emacs_cv_localtime_cache=no else @@ -7535,9 +7551,9 @@ if test "$HAVE_TIMEVAL" = "yes"; then echo $ac_n "checking whether gettimeofday cannot accept two arguments""... $ac_c" 1>&6 -echo "configure:7539: checking whether gettimeofday cannot accept two arguments" >&5 -cat > conftest.$ac_ext <<EOF -#line 7541 "configure" +echo "configure:7555: checking whether gettimeofday cannot accept two arguments" >&5 +cat > conftest.$ac_ext <<EOF +#line 7557 "configure" #include "confdefs.h" #ifdef TIME_WITH_SYS_TIME @@ -7559,7 +7575,7 @@ ; return 0; } EOF -if { (eval echo configure:7563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7579: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""no" 1>&6 else @@ -7581,19 +7597,19 @@ echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:7585: checking for inline" >&5 +echo "configure:7601: checking for inline" >&5 ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <<EOF -#line 7590 "configure" +#line 7606 "configure" #include "confdefs.h" int main() { } $ac_kw foo() { ; return 0; } EOF -if { (eval echo configure:7597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7613: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -7639,21 +7655,117 @@ fi fi +case "$opsys" in hpux* ) + echo $ac_n "checking for alloca""... $ac_c" 1>&6 +echo "configure:7661: checking for alloca" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7664 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char alloca(); below. */ +#include <assert.h> +/* 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 alloca(); + +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_alloca) || defined (__stub___alloca) +choke me +#else +alloca(); +#endif + +; return 0; } +EOF +if { (eval echo configure:7687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_alloca=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_alloca=no" +fi +rm -f conftest* + +if eval "test \"`echo '$ac_cv_func_'alloca`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 + +echo $ac_n "checking for alloca in -lPW""... $ac_c" 1>&6 +echo "configure:7705: checking for alloca in -lPW" >&5 +ac_lib_var=`echo PW'_'alloca | sed 'y%./+-%__p_%'` + +xe_check_libs=" -lPW " +cat > conftest.$ac_ext <<EOF +#line 7710 "configure" +#include "confdefs.h" +/* 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 alloca(); + +int main() { +alloca() +; return 0; } +EOF +if { (eval echo configure:7721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +xe_check_libs="" + +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo PW | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + { test "$extra_verbose" = "yes" && cat << EOF + Defining $ac_tr_lib +EOF +cat >> confdefs.h <<EOF +#define $ac_tr_lib 1 +EOF +} + + LIBS="-lPW $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lPW\" to \$LIBS"; fi + +else + echo "$ac_t""no" 1>&6 +fi + + +fi + +esac # 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:7647: checking for working alloca.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7650 "configure" +echo "configure:7759: checking for working alloca.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7762 "configure" #include "confdefs.h" #include <alloca.h> int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:7657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -7677,10 +7789,10 @@ fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:7681: checking for alloca" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7684 "configure" +echo "configure:7793: checking for alloca" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7796 "configure" #include "confdefs.h" #ifdef __GNUC__ @@ -7703,7 +7815,7 @@ char *p = (char *) alloca(1); ; return 0; } EOF -if { (eval echo configure:7707: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -7742,10 +7854,10 @@ echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:7746: checking whether alloca needs Cray hooks" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7749 "configure" +echo "configure:7858: checking whether alloca needs Cray hooks" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7861 "configure" #include "confdefs.h" #if defined(CRAY) && ! defined(CRAY2) webecray @@ -7769,10 +7881,10 @@ 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:7773: checking for $ac_func" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7776 "configure" +echo "configure:7885: checking for $ac_func" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7888 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -7795,7 +7907,7 @@ ; return 0; } EOF -if { (eval echo configure:7799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7825,10 +7937,10 @@ fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:7829: checking stack direction for C alloca" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7832 "configure" +echo "configure:7941: checking stack direction for C alloca" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7944 "configure" #include "confdefs.h" find_stack_direction () { @@ -7847,7 +7959,7 @@ exit (find_stack_direction() < 0); } EOF -if { (eval echo configure:7851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:7963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_c_stack_direction=1 else @@ -7875,15 +7987,15 @@ ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 -echo "configure:7879: checking for vfork.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7882 "configure" +echo "configure:7991: checking for vfork.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7994 "configure" #include "confdefs.h" #include <vfork.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7887: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7999: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7911,10 +8023,10 @@ fi echo $ac_n "checking for working vfork""... $ac_c" 1>&6 -echo "configure:7915: checking for working vfork" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7918 "configure" +echo "configure:8027: checking for working vfork" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8030 "configure" #include "confdefs.h" /* Thanks to Paul Eggert for this test. */ #include <stdio.h> @@ -8009,7 +8121,7 @@ } } EOF -if { (eval echo configure:8013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:8125: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_func_vfork_works=yes else @@ -8034,10 +8146,10 @@ echo $ac_n "checking for working strcoll""... $ac_c" 1>&6 -echo "configure:8038: checking for working strcoll" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8041 "configure" +echo "configure:8150: checking for working strcoll" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8153 "configure" #include "confdefs.h" #include <string.h> main () @@ -8047,7 +8159,7 @@ strcoll ("123", "456") >= 0); } EOF -if { (eval echo configure:8051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:8163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_func_strcoll_works=yes else @@ -8074,10 +8186,10 @@ for ac_func in getpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8078: checking for $ac_func" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8081 "configure" +echo "configure:8190: checking for $ac_func" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8193 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -8100,7 +8212,7 @@ ; return 0; } EOF -if { (eval echo configure:8104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8128,10 +8240,10 @@ done echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:8132: checking whether getpgrp takes no argument" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8135 "configure" +echo "configure:8244: checking whether getpgrp takes no argument" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8247 "configure" #include "confdefs.h" /* @@ -8186,7 +8298,7 @@ } EOF -if { (eval echo configure:8190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:8302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_func_getpgrp_void=yes else @@ -8212,10 +8324,10 @@ echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:8216: checking for working mmap" >&5 +echo "configure:8328: checking for working mmap" >&5 case "$opsys" in ultrix* ) have_mmap=no ;; *) cat > conftest.$ac_ext <<EOF -#line 8219 "configure" +#line 8331 "configure" #include "confdefs.h" #include <stdio.h> #include <unistd.h> @@ -8248,7 +8360,7 @@ return 1; } EOF -if { (eval echo configure:8252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:8364: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then have_mmap=yes else @@ -8280,11 +8392,103 @@ } +ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for termios.h""... $ac_c" 1>&6 +echo "configure:8398: checking for termios.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8401 "configure" +#include "confdefs.h" +#include <termios.h> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:8406: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_TERMIOS +EOF +cat >> confdefs.h <<\EOF +#define HAVE_TERMIOS 1 +EOF +} + + { test "$extra_verbose" = "yes" && cat << \EOF + Defining SIGNALS_VIA_CHARACTERS +EOF +cat >> confdefs.h <<\EOF +#define SIGNALS_VIA_CHARACTERS 1 +EOF +} + + { test "$extra_verbose" = "yes" && cat << \EOF + Defining NO_TERMIO +EOF +cat >> confdefs.h <<\EOF +#define NO_TERMIO 1 +EOF +} + +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:8449: checking for termio.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8452 "configure" +#include "confdefs.h" +#include <termio.h> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:8457: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_TERMIO +EOF +cat >> confdefs.h <<\EOF +#define HAVE_TERMIO 1 +EOF +} + +else + echo "$ac_t""no" 1>&6 +fi + +fi + + + echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:8285: checking for socket" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8288 "configure" +echo "configure:8489: checking for socket" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8492 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char socket(); below. */ @@ -8307,7 +8511,7 @@ ; return 0; } EOF -if { (eval echo configure:8311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_socket=yes" else @@ -8322,15 +8526,15 @@ 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:8326: checking for netinet/in.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8329 "configure" +echo "configure:8530: checking for netinet/in.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8533 "configure" #include "confdefs.h" #include <netinet/in.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8538: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8347,15 +8551,15 @@ 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:8351: checking for arpa/inet.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8354 "configure" +echo "configure:8555: checking for arpa/inet.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8558 "configure" #include "confdefs.h" #include <arpa/inet.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8563: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8380,9 +8584,9 @@ } echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6 -echo "configure:8384: checking "for sun_len member in struct sockaddr_un"" >&5 +echo "configure:8588: checking "for sun_len member in struct sockaddr_un"" >&5 cat > conftest.$ac_ext <<EOF -#line 8386 "configure" +#line 8590 "configure" #include "confdefs.h" #include <sys/types.h> @@ -8393,7 +8597,7 @@ static struct sockaddr_un x; x.sun_len = 1; ; return 0; } EOF -if { (eval echo configure:8397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_SOCKADDR_SUN_LEN @@ -8424,10 +8628,10 @@ echo $ac_n "checking for msgget""... $ac_c" 1>&6 -echo "configure:8428: checking for msgget" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8431 "configure" +echo "configure:8632: checking for msgget" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8635 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char msgget(); below. */ @@ -8450,7 +8654,7 @@ ; return 0; } EOF -if { (eval echo configure:8454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_msgget=yes" else @@ -8465,15 +8669,15 @@ 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:8469: checking for sys/ipc.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8472 "configure" +echo "configure:8673: checking for sys/ipc.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8676 "configure" #include "confdefs.h" #include <sys/ipc.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8477: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8681: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8490,15 +8694,15 @@ 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:8494: checking for sys/msg.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8497 "configure" +echo "configure:8698: checking for sys/msg.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8701 "configure" #include "confdefs.h" #include <sys/msg.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8502: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8536,15 +8740,15 @@ ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dirent.h""... $ac_c" 1>&6 -echo "configure:8540: checking for dirent.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8543 "configure" +echo "configure:8744: checking for dirent.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8747 "configure" #include "confdefs.h" #include <dirent.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8548: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8752: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8571,15 +8775,15 @@ 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:8575: checking for sys/dir.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8578 "configure" +echo "configure:8779: checking for sys/dir.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8782 "configure" #include "confdefs.h" #include <sys/dir.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8583: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8787: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8612,15 +8816,15 @@ ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for nlist.h""... $ac_c" 1>&6 -echo "configure:8616: checking for nlist.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8619 "configure" +echo "configure:8820: checking for nlist.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8823 "configure" #include "confdefs.h" #include <nlist.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8624: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8828: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8650,10 +8854,10 @@ for f in "/usr/lpp/X11/bin/smt.exp" "/usr/bin/X11/smt.exp" ; do if test -r $f; then { test "$extra_verbose" = "yes" && cat << EOF - Defining AIX_SMT_EXP = -bI:$f + Defining AIX_SMT_EXP = "-bI:$f" EOF cat >> confdefs.h <<EOF -#define AIX_SMT_EXP -bI:$f +#define AIX_SMT_EXP "-bI:$f" EOF } break; fi @@ -8661,7 +8865,7 @@ echo "checking "for sound support"" 1>&6 -echo "configure:8665: checking "for sound support"" >&5 +echo "configure:8869: checking "for sound support"" >&5 case "$with_sound" in native | both ) with_native_sound=yes;; nas | no ) with_native_sound=no;; @@ -8672,15 +8876,15 @@ 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:8676: checking for multimedia/audio_device.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8679 "configure" +echo "configure:8880: checking for multimedia/audio_device.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8883 "configure" #include "confdefs.h" #include <multimedia/audio_device.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8684: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8888: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8728,12 +8932,12 @@ if test -z "$native_sound_lib"; then echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6 -echo "configure:8732: checking for ALopenport in -laudio" >&5 +echo "configure:8936: checking for ALopenport in -laudio" >&5 ac_lib_var=`echo audio'_'ALopenport | sed 'y%./+-%__p_%'` xe_check_libs=" -laudio " cat > conftest.$ac_ext <<EOF -#line 8737 "configure" +#line 8941 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -8744,7 +8948,7 @@ ALopenport() ; return 0; } EOF -if { (eval echo configure:8748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8775,12 +8979,12 @@ if test -z "$native_sound_lib"; then echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6 -echo "configure:8779: checking for AOpenAudio in -lAlib" >&5 +echo "configure:8983: checking for AOpenAudio in -lAlib" >&5 ac_lib_var=`echo Alib'_'AOpenAudio | sed 'y%./+-%__p_%'` xe_check_libs=" -lAlib " cat > conftest.$ac_ext <<EOF -#line 8784 "configure" +#line 8988 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -8791,7 +8995,7 @@ AOpenAudio() ; return 0; } EOF -if { (eval echo configure:8795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8829,15 +9033,15 @@ 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:8833: checking for ${dir}/soundcard.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8836 "configure" +echo "configure:9037: checking for ${dir}/soundcard.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 9040 "configure" #include "confdefs.h" #include <${dir}/soundcard.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8841: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9045: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8907,7 +9111,7 @@ fi LIBS="-laudio $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-laudio\" to \$LIBS"; fi cat > conftest.$ac_ext <<EOF -#line 8911 "configure" +#line 9115 "configure" #include "confdefs.h" #include <audio/Xtutil.h> EOF @@ -8934,7 +9138,7 @@ if test "$with_tty" = "yes" ; then echo "checking for TTY-related features" 1>&6 -echo "configure:8938: checking for TTY-related features" >&5 +echo "configure:9142: checking for TTY-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_TTY EOF @@ -8947,90 +9151,15 @@ echo " xemacs will be linked with \"console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o\"" fi - ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for termios.h""... $ac_c" 1>&6 -echo "configure:8953: checking for termios.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8956 "configure" -#include "confdefs.h" -#include <termios.h> -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8961: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_TERMIOS -EOF -cat >> confdefs.h <<\EOF -#define HAVE_TERMIOS 1 -EOF -} - -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:8988: checking for termio.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8991 "configure" -#include "confdefs.h" -#include <termio.h> -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8996: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_TERMIO -EOF -cat >> confdefs.h <<\EOF -#define HAVE_TERMIO 1 -EOF -} - -else - echo "$ac_t""no" 1>&6 -fi - -fi - - if test -z "$with_ncurses"; then echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6 -echo "configure:9029: checking for tgetent in -lncurses" >&5 +echo "configure:9158: checking for tgetent in -lncurses" >&5 ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -lncurses " cat > conftest.$ac_ext <<EOF -#line 9034 "configure" +#line 9163 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -9041,7 +9170,7 @@ tgetent() ; return 0; } EOF -if { (eval echo configure:9045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9074,15 +9203,15 @@ ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6 -echo "configure:9078: checking for ncurses/curses.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 9081 "configure" +echo "configure:9207: checking for ncurses/curses.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 9210 "configure" #include "confdefs.h" #include <ncurses/curses.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9086: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9215: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9104,15 +9233,15 @@ ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6 -echo "configure:9108: checking for ncurses/term.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 9111 "configure" +echo "configure:9237: checking for ncurses/term.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 9240 "configure" #include "confdefs.h" #include <ncurses/term.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9116: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9245: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9142,15 +9271,15 @@ 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:9146: checking for ncurses/curses.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 9149 "configure" +echo "configure:9275: checking for ncurses/curses.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 9278 "configure" #include "confdefs.h" #include <ncurses/curses.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9185,12 +9314,12 @@ for lib in curses termlib termcap; do echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6 -echo "configure:9189: checking for tgetent in -l$lib" >&5 +echo "configure:9318: 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 <<EOF -#line 9194 "configure" +#line 9323 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -9201,7 +9330,7 @@ tgetent() ; return 0; } EOF -if { (eval echo configure:9205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9232,12 +9361,12 @@ else echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6 -echo "configure:9236: checking for tgetent in -lcurses" >&5 +echo "configure:9365: checking for tgetent in -lcurses" >&5 ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -lcurses " cat > conftest.$ac_ext <<EOF -#line 9241 "configure" +#line 9370 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -9248,7 +9377,7 @@ tgetent() ; return 0; } EOF -if { (eval echo configure:9252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9266,12 +9395,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6 -echo "configure:9270: checking for tgetent in -ltermcap" >&5 +echo "configure:9399: checking for tgetent in -ltermcap" >&5 ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -ltermcap " cat > conftest.$ac_ext <<EOF -#line 9275 "configure" +#line 9404 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -9282,7 +9411,7 @@ tgetent() ; return 0; } EOF -if { (eval echo configure:9286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9330,15 +9459,15 @@ 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:9334: checking for gpm.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 9337 "configure" +echo "configure:9463: checking for gpm.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 9466 "configure" #include "confdefs.h" #include <gpm.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9342: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9471: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9361,12 +9490,12 @@ } test -z "$with_gpm" && { echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6 -echo "configure:9365: checking for Gpm_Open in -lgpm" >&5 +echo "configure:9494: 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 <<EOF -#line 9370 "configure" +#line 9499 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -9377,7 +9506,7 @@ Gpm_Open() ; return 0; } EOF -if { (eval echo configure:9381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9426,17 +9555,17 @@ echo "checking for database support" 1>&6 -echo "configure:9430: checking for database support" >&5 +echo "configure:9559: checking for database support" >&5 if test "$with_database_gnudbm" != "no"; then echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6 -echo "configure:9435: checking for dbm_open in -lgdbm" >&5 +echo "configure:9564: 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 <<EOF -#line 9440 "configure" +#line 9569 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -9447,7 +9576,7 @@ dbm_open() ; return 0; } EOF -if { (eval echo configure:9451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9469,10 +9598,10 @@ if test "$with_database_gnudbm" != "yes"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:9473: checking for dbm_open" >&5 - -cat > conftest.$ac_ext <<EOF -#line 9476 "configure" +echo "configure:9602: checking for dbm_open" >&5 + +cat > conftest.$ac_ext <<EOF +#line 9605 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dbm_open(); below. */ @@ -9495,7 +9624,7 @@ ; return 0; } EOF -if { (eval echo configure:9499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_dbm_open=yes" else @@ -9531,10 +9660,10 @@ if test "$with_database_dbm" != "no"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:9535: checking for dbm_open" >&5 - -cat > conftest.$ac_ext <<EOF -#line 9538 "configure" +echo "configure:9664: checking for dbm_open" >&5 + +cat > conftest.$ac_ext <<EOF +#line 9667 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dbm_open(); below. */ @@ -9557,7 +9686,7 @@ ; return 0; } EOF -if { (eval echo configure:9561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_dbm_open=yes" else @@ -9578,12 +9707,12 @@ if test "$need_libdbm" != "no"; then echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6 -echo "configure:9582: checking for dbm_open in -ldbm" >&5 +echo "configure:9711: 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 <<EOF -#line 9587 "configure" +#line 9716 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -9594,7 +9723,7 @@ dbm_open() ; return 0; } EOF -if { (eval echo configure:9598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9631,10 +9760,10 @@ if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for dbopen""... $ac_c" 1>&6 -echo "configure:9635: checking for dbopen" >&5 - -cat > conftest.$ac_ext <<EOF -#line 9638 "configure" +echo "configure:9764: checking for dbopen" >&5 + +cat > conftest.$ac_ext <<EOF +#line 9767 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dbopen(); below. */ @@ -9657,7 +9786,7 @@ ; return 0; } EOF -if { (eval echo configure:9661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_dbopen=yes" else @@ -9678,12 +9807,12 @@ if test "$need_libdb" != "no"; then echo $ac_n "checking for dbopen in -ldb""... $ac_c" 1>&6 -echo "configure:9682: checking for dbopen in -ldb" >&5 +echo "configure:9811: checking for dbopen in -ldb" >&5 ac_lib_var=`echo db'_'dbopen | sed 'y%./+-%__p_%'` xe_check_libs=" -ldb " cat > conftest.$ac_ext <<EOF -#line 9687 "configure" +#line 9816 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -9694,7 +9823,7 @@ dbopen() ; return 0; } EOF -if { (eval echo configure:9698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9718,7 +9847,7 @@ if test "$with_database_berkdb" = "yes"; then for path in "db/db.h" "db.h"; do cat > conftest.$ac_ext <<EOF -#line 9722 "configure" +#line 9851 "configure" #include "confdefs.h" #ifdef HAVE_INTTYPES_H #define __BIT_TYPES_DEFINED__ @@ -9736,7 +9865,7 @@ ; return 0; } EOF -if { (eval echo configure:9740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9869: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_path="$path"; break else @@ -9788,12 +9917,12 @@ if test "$with_socks" = "yes"; then echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:9792: checking for SOCKSinit in -lsocks" >&5 +echo "configure:9921: checking for SOCKSinit in -lsocks" >&5 ac_lib_var=`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'` xe_check_libs=" -lsocks " cat > conftest.$ac_ext <<EOF -#line 9797 "configure" +#line 9926 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -9804,7 +9933,7 @@ SOCKSinit() ; return 0; } EOF -if { (eval echo configure:9808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9860,6 +9989,11 @@ T="" +for W in $CFLAGS; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done +CFLAGS="$T" + + +T="" for W in $extra_objs; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done extra_objs="$T" @@ -9909,7 +10043,6 @@ ld_libs_all="$T" -SRC_SUBDIR_DEPS="$MAKE_SUBDIR" MAKE_SUBDIR="$MAKE_SUBDIR src" && if test "$extra_verbose" = "yes"; then echo " Appending \"src\" to \$MAKE_SUBDIR"; fi internal_makefile_list="Makefile" @@ -10007,7 +10140,6 @@ - RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'" @@ -10220,14 +10352,6 @@ EOF } -test "$with_clash_detection" = "yes" && { test "$extra_verbose" = "yes" && cat << \EOF - Defining CLASH_DETECTION -EOF -cat >> confdefs.h <<\EOF -#define CLASH_DETECTION 1 -EOF -} - test "$use_union_type" != yes && { test "$extra_verbose" = "yes" && cat << \EOF Defining NO_UNION_TYPE EOF @@ -10284,7 +10408,7 @@ test "$with_gif" = yes && echo " Compiling in support for GIF image conversion." if test "$with_xpm" = yes; then echo " Compiling in support for XPM images." -else +elif test "$with_x11" = yes; then echo " --------------------------------------------------------------------" echo " WARNING: Compiling without XPM support." echo " WARNING: You should strongly considering installing XPM." @@ -10514,7 +10638,6 @@ s%@ld_libs_general@%$ld_libs_general%g s%@ld_libs_window_system@%$ld_libs_window_system%g s%@ld_libs_all@%$ld_libs_all%g -s%@libsrc_libs@%$libsrc_libs%g s%@RECURSIVE_MAKE@%$RECURSIVE_MAKE%g s%@native_sound_lib@%$native_sound_lib%g s%@sound_cflags@%$sound_cflags%g @@ -10772,6 +10895,14 @@ ) done +sed < config.status > lib-src/config.values \ +-e 's/^s%@\(.*\)@%\(.*\)%g$/\1 "\2"/p' \ +-e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \ +-e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \ +-e 's/^\([^ ]*\) $/\1 ""/' \ +-e 's/ 1$/ t/' + + exit 0 EOF chmod +x $CONFIG_STATUS
--- a/configure.in Mon Aug 13 09:49:11 2007 +0200 +++ b/configure.in Mon Aug 13 09:50:14 2007 +0200 @@ -1614,6 +1614,11 @@ with_tooltalk=yes fi +if test "$with_clash_detection" = "yes"; then + AC_DEFINE(CLASH_DETECTION) + XE_ADD_OBJS(filelock.o) +fi + dnl Choose a compiler from (in order) dnl --compiler, env var CC, with_gcc=no && ${NON_GNU_CC:-cc}, AC_PROG_CC test -n "$compiler" && CC="$compiler" @@ -1823,7 +1828,7 @@ dnl Following values of CFLAGS are known to work well. dnl Should we take debugging options into consideration? if test "$GCC" = "yes"; then - CFLAGS="-g -O2 -Wall" + CFLAGS="-g -O2 -Wall -Wno-switch" test "$opsys" = "linux" -a "$machine" = "intel386" && \ CFLAGS="$CFLAGS -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2" elif test "$__sunpro_c" = "yes"; then @@ -1866,6 +1871,7 @@ AC_MSG_RESULT(yes) AC_DEFINE(DYNODUMP) XE_APPEND(dynodump, MAKE_SUBDIR) + XE_APPEND(dynodump, SRC_SUBDIR_DEPS) case "$machine" in sparc ) dynodump_arch=sparc ;; *86* ) dynodump_arch=i386 ;; @@ -1882,7 +1888,7 @@ AC_SUBST(start_flags) if test "$ordinary_link" = "no" -a "$GCC" = "yes"; then test -z "$linker" && linker='$(CC) -nostdlib' - test -z "$lib_gcc" && lib_gcc='`$(CC) -print-lib-gccfile-name`' + test -z "$lib_gcc" && lib_gcc='`$(CC) -print-libgcc-file-name`' fi test "$GCC" != "yes" && lib_gcc= AC_SUBST(ld) @@ -2218,6 +2224,7 @@ if test "$with_x11" = "yes"; then AC_DEFINE(HAVE_X_WINDOWS) XE_APPEND(lwlib, MAKE_SUBDIR) + XE_APPEND(lwlib, SRC_SUBDIR_DEPS) dnl Try to find Motif/CDE/Tooltalk dirs dnl These take precedence over other X libs/includes, so PRE-pend @@ -2809,6 +2816,10 @@ test "$GCC" = "yes" && XE_ADD_OBJS(inline.o) fi +dnl HP-UX has a working alloca in libPW. +case "$opsys" in hpux* ) + AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)]) +esac AC_FUNC_ALLOCA test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA) @@ -2872,6 +2883,15 @@ test "$rel_alloc" = "default" -a "$have_mmap" = "yes" && rel_alloc=yes test "$rel_alloc" = "yes" && AC_DEFINE(REL_ALLOC) +dnl Check for terminal I/O variants +dnl TERMIOS systems may have termio.h, but not vice-versa, I think. +AC_CHECK_HEADER(termios.h, + AC_DEFINE(HAVE_TERMIOS) + AC_DEFINE(SIGNALS_VIA_CHARACTERS) + AC_DEFINE(NO_TERMIO), + [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])]) + + dnl Check for Internet sockets. AC_CHECK_FUNC(socket, [AC_CHECK_HEADER(netinet/in.h, @@ -2902,7 +2922,7 @@ dnl AIX export list for f in "/usr/lpp/X11/bin/smt.exp" "/usr/bin/X11/smt.exp" ; do - if test -r $f; then AC_DEFINE_UNQUOTED(AIX_SMT_EXP, -bI:$f) break; fi + if test -r $f; then AC_DEFINE_UNQUOTED(AIX_SMT_EXP, "-bI:$f") break; fi done dnl Check for sound of various sorts. @@ -3010,11 +3030,6 @@ AC_DEFINE(HAVE_TTY) XE_ADD_OBJS(console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o) - dnl Check for terminal I/O variants - dnl TERMIOS systems may have termio.h, but not vice-versa, I think. - AC_CHECK_HEADER(termios.h, [AC_DEFINE(HAVE_TERMIOS)], - [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])]) - dnl Autodetect ncurses. if test -z "$with_ncurses"; then AC_CHECK_LIB(ncurses, tgetent, with_ncurses=yes, with_ncurses=no) @@ -3180,6 +3195,7 @@ dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM) dnl Use XE_SPACE instead of plain assignment statements to remove extraneous blanks +XE_SPACE(CFLAGS, $CFLAGS) XE_SPACE(extra_objs, $extra_objs) XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system) XE_SPACE(c_switch_window_system, $c_switch_x_site $X_CFLAGS) @@ -3192,7 +3208,6 @@ XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general) dnl Compute lists of Makefiles and subdirs -SRC_SUBDIR_DEPS="$MAKE_SUBDIR" AC_SUBST(SRC_SUBDIR_DEPS) XE_APPEND(src, MAKE_SUBDIR) internal_makefile_list="Makefile" @@ -3297,7 +3312,6 @@ AC_SUBST(ld_libs_general) AC_SUBST(ld_libs_window_system) AC_SUBST(ld_libs_all) -AC_SUBST(libsrc_libs) AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LDFLAGS) @@ -3352,7 +3366,6 @@ test "$with_pop" = "yes" && AC_DEFINE(MAIL_USE_POP) test "$with_kerberos" = "yes" && AC_DEFINE(KERBEROS) test "$with_hesiod" = "yes" && AC_DEFINE(HESIOD) -test "$with_clash_detection" = "yes" && AC_DEFINE(CLASH_DETECTION) test "$use_union_type" != yes && AC_DEFINE(NO_UNION_TYPE) dnl ------------------------------- @@ -3408,7 +3421,7 @@ test "$with_gif" = yes && echo " Compiling in support for GIF image conversion." if test "$with_xpm" = yes; then echo " Compiling in support for XPM images." -else +elif test "$with_x11" = yes; then echo " --------------------------------------------------------------------" echo " WARNING: Compiling without XPM support." echo " WARNING: You should strongly considering installing XPM." @@ -3542,6 +3555,15 @@ changequote([, ])dnl ) done + +dnl Create a file of config variables for use by the lisp code +sed < config.status > lib-src/config.values \ +-e 's/^s%@\(.*\)@%\(.*\)%g$/\1 "\2"/p' \ +-e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \ +-e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \ +-e 's/^\([[^ ]]*\) $/\1 ""/' \ +-e 's/ 1$/ t/' + ], [CPP="$CPP" CPPFLAGS="$CPPFLAGS"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/e/README Mon Aug 13 09:50:14 2007 +0200 @@ -0,0 +1,2 @@ +Rebuild terminfo files with +TERMINFO=<Full-Path-To-XEmacs-tree>/etc tic *.ti
--- a/etc/e/eterm.ti Mon Aug 13 09:49:11 2007 +0200 +++ b/etc/e/eterm.ti Mon Aug 13 09:50:14 2007 +0200 @@ -6,7 +6,7 @@ cup=\E[%i%p1%d;%p2%dH, ind=\n,csr=\E[%i%p1%d;%p2%dr, il1=\E[L,il=\E[%p1%dL, - clear=\E[H\E[J,ed=\\E[J,el=\E[K,el1=\E[1K, + clear=\E[H\E[J,ed=\\E[J,el=\E[K, dl1=\E[M,dl=\E[%p1%dM,dch1=\E[P,dch=\E[%p1%dP, kcub1=\E[D,kcuf1=\E[C,kcuu1=\E[A,kcud1=\E[B, smir=\E[4h,rmir=\E[4l,ich=\E[%p1%d@,mir,
--- a/etc/smilies/Face_ase.xbm Mon Aug 13 09:49:11 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -#define Face_ase_width 24 -#define Face_ase_height 16 -static char Face_ase_bits[] = { - 0x00,0x00,0x00, - 0xf8,0xc1,0x0f, - 0x04,0x22,0x10, - 0x00,0x00,0x00, - 0xf0,0xc0,0x03, - 0x68,0xa1,0x05, - 0x68,0xa1,0x05, - 0x68,0xa1,0x05, - 0xf0,0xc0,0x23, - 0x00,0x00,0x20, - 0x00,0x00,0x50, - 0x50,0x40,0x52, - 0x00,0x00,0x50, - 0x20,0x91,0x20, - 0x00,0x0e,0x00, - 0x00,0x00,0x00};
--- a/etc/smilies/Face_ase2.xbm Mon Aug 13 09:49:11 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -#define Face_ase2_width 32 -#define Face_ase2_height 16 -static char Face_ase2_bits[] = { - 0x00,0x00,0x00,0x00, - 0xf0,0x83,0x1f,0x00, - 0x08,0x44,0x20,0x00, - 0x00,0x00,0x00,0x00, - 0xe0,0x81,0x07,0x00, - 0xd0,0x42,0x0b,0x00, - 0xd0,0x42,0x0b,0x00, - 0xd0,0x42,0x0b,0x00, - 0xe0,0x81,0x87,0x10, - 0x00,0x00,0x80,0x10, - 0x00,0x00,0x40,0x29, - 0xa0,0x80,0x44,0x29, - 0x00,0x00,0x40,0x29, - 0x40,0x22,0x81,0x10, - 0x00,0x1c,0x00,0x00, - 0x00,0x00,0x00,0x00};
--- a/etc/smilies/Face_ase3.xbm Mon Aug 13 09:49:11 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -#define Face_ase3_width 24 -#define Face_ase3_height 16 -static char Face_ase3_bits[] = { - 0x00,0x00,0x00, - 0xf8,0xc1,0x0f, - 0x04,0x22,0x10, - 0x00,0x00,0x00, - 0x18,0x00,0x07, - 0xe0,0xe0,0x00, - 0xfc,0xf3,0x0f, - 0xc0,0xe1,0x00, - 0x38,0x00,0x27, - 0x00,0x00,0x20, - 0x00,0x00,0x50, - 0x50,0x40,0x52, - 0x00,0x00,0x50, - 0x20,0x91,0x20, - 0x00,0x0e,0x00, - 0x00,0x00,0x00 -};
--- a/etc/smilies/Face_smile.xbm Mon Aug 13 09:49:11 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -#define Face_smile_width 24 -#define Face_smile_height 16 -static char Face_smile_bits[] = { - 0x00,0x00,0x00, - 0xf8,0xc1,0x0f, - 0x04,0x22,0x10, - 0x00,0x00,0x00, - 0xf0,0xc0,0x07, - 0x68,0xa1,0x09, - 0x68,0xa1,0x09, - 0x68,0xa1,0x09, - 0xf0,0xc0,0x07, - 0x00,0x00,0x00, - 0x00,0x00,0x00, - 0x50,0x80,0x04, - 0x00,0x00,0x00, - 0x20,0x22,0x01, - 0x00,0x1c,0x00, - 0x00,0x00,0x00};
--- a/etc/smilies/Face_weep.xbm Mon Aug 13 09:49:11 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -#define Face_weep_width 24 -#define Face_weep_height 16 -static char Face_weep_bits[] = { - 0x1c,0x00,0x3c, - 0xe2,0x80,0x43, - 0x00,0x63,0x00, - 0x18,0x00,0x18, - 0x60,0x00,0x07, - 0x80,0xe3,0x00, - 0xfc,0xf7,0x3f, - 0x80,0xe3,0x00, - 0x60,0x00,0x07, - 0x58,0x00,0x1a, - 0x40,0x00,0x02, - 0xa0,0x00,0x05, - 0xa0,0x00,0x05, - 0xa0,0x1c,0x05, - 0x40,0x22,0x02, - 0x00,0x00,0x00 -};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/smilies/WideFaceAse1.xbm Mon Aug 13 09:50:14 2007 +0200 @@ -0,0 +1,19 @@ +#define Face_ase_width 24 +#define Face_ase_height 16 +static char Face_ase_bits[] = { + 0x00,0x00,0x00, + 0xf8,0xc1,0x0f, + 0x04,0x22,0x10, + 0x00,0x00,0x00, + 0xf0,0xc0,0x03, + 0x68,0xa1,0x05, + 0x68,0xa1,0x05, + 0x68,0xa1,0x05, + 0xf0,0xc0,0x23, + 0x00,0x00,0x20, + 0x00,0x00,0x50, + 0x50,0x40,0x52, + 0x00,0x00,0x50, + 0x20,0x91,0x20, + 0x00,0x0e,0x00, + 0x00,0x00,0x00};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/smilies/WideFaceAse2.xbm Mon Aug 13 09:50:14 2007 +0200 @@ -0,0 +1,19 @@ +#define Face_ase2_width 32 +#define Face_ase2_height 16 +static char Face_ase2_bits[] = { + 0x00,0x00,0x00,0x00, + 0xf0,0x83,0x1f,0x00, + 0x08,0x44,0x20,0x00, + 0x00,0x00,0x00,0x00, + 0xe0,0x81,0x07,0x00, + 0xd0,0x42,0x0b,0x00, + 0xd0,0x42,0x0b,0x00, + 0xd0,0x42,0x0b,0x00, + 0xe0,0x81,0x87,0x10, + 0x00,0x00,0x80,0x10, + 0x00,0x00,0x40,0x29, + 0xa0,0x80,0x44,0x29, + 0x00,0x00,0x40,0x29, + 0x40,0x22,0x81,0x10, + 0x00,0x1c,0x00,0x00, + 0x00,0x00,0x00,0x00};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/smilies/WideFaceAse3.xbm Mon Aug 13 09:50:14 2007 +0200 @@ -0,0 +1,20 @@ +#define Face_ase3_width 24 +#define Face_ase3_height 16 +static char Face_ase3_bits[] = { + 0x00,0x00,0x00, + 0xf8,0xc1,0x0f, + 0x04,0x22,0x10, + 0x00,0x00,0x00, + 0x18,0x00,0x07, + 0xe0,0xe0,0x00, + 0xfc,0xf3,0x0f, + 0xc0,0xe1,0x00, + 0x38,0x00,0x27, + 0x00,0x00,0x20, + 0x00,0x00,0x50, + 0x50,0x40,0x52, + 0x00,0x00,0x50, + 0x20,0x91,0x20, + 0x00,0x0e,0x00, + 0x00,0x00,0x00 +};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/smilies/WideFaceSmile.xbm Mon Aug 13 09:50:14 2007 +0200 @@ -0,0 +1,19 @@ +#define Face_smile_width 24 +#define Face_smile_height 16 +static char Face_smile_bits[] = { + 0x00,0x00,0x00, + 0xf8,0xc1,0x0f, + 0x04,0x22,0x10, + 0x00,0x00,0x00, + 0xf0,0xc0,0x07, + 0x68,0xa1,0x09, + 0x68,0xa1,0x09, + 0x68,0xa1,0x09, + 0xf0,0xc0,0x07, + 0x00,0x00,0x00, + 0x00,0x00,0x00, + 0x50,0x80,0x04, + 0x00,0x00,0x00, + 0x20,0x22,0x01, + 0x00,0x1c,0x00, + 0x00,0x00,0x00};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/smilies/WideFaceWeep.xbm Mon Aug 13 09:50:14 2007 +0200 @@ -0,0 +1,20 @@ +#define Face_weep_width 24 +#define Face_weep_height 16 +static char Face_weep_bits[] = { + 0x1c,0x00,0x3c, + 0xe2,0x80,0x43, + 0x00,0x63,0x00, + 0x18,0x00,0x18, + 0x60,0x00,0x07, + 0x80,0xe3,0x00, + 0xfc,0xf7,0x3f, + 0x80,0xe3,0x00, + 0x60,0x00,0x07, + 0x58,0x00,0x1a, + 0x40,0x00,0x02, + 0xa0,0x00,0x05, + 0xa0,0x00,0x05, + 0xa0,0x1c,0x05, + 0x40,0x22,0x02, + 0x00,0x00,0x00 +};
--- a/lib-src/Makefile.in.in Mon Aug 13 09:49:11 2007 +0200 +++ b/lib-src/Makefile.in.in Mon Aug 13 09:50:14 2007 +0200 @@ -262,7 +262,7 @@ getopt1.o: ${srcdir}/getopt1.c ${srcdir}/getopt.h ${CC} -c $(cflags) ${srcdir}/getopt1.c alloca.o: ${srcdir}/../src/alloca.c - ${CC} -c ${ALLOCA_CFLAGS} ${srcdir}/../src/alloca.c + ${CC} -c $(cflags) ${srcdir}/../src/alloca.c #ifdef REGEXP_IN_LIBC REGEXOBJ = @@ -300,8 +300,8 @@ digest-doc: ${srcdir}/digest-doc.c $(CC) ${cflags} ${srcdir}/digest-doc.c $(ldflags) -o $@ -sorted-doc: ${srcdir}/sorted-doc.c ${ALLOCA} - $(CC) ${cflags} ${srcdir}/sorted-doc.c ${ALLOCA} $(ldflags) -o $@ +sorted-doc: ${srcdir}/sorted-doc.c + $(CC) ${cflags} ${srcdir}/sorted-doc.c $(ldflags) -o $@ b2m: ${srcdir}/b2m.c ../src/config.h $(CC) ${cflags} ${srcdir}/b2m.c $(ldflags) -o $@
--- a/lib-src/b2m.c Mon Aug 13 09:49:11 2007 +0200 +++ b/lib-src/b2m.c Mon Aug 13 09:50:14 2007 +0200 @@ -19,7 +19,7 @@ by Francesco Potorti` <pot@cnuce.cnr.it>. */ #ifdef HAVE_CONFIG_H -#include <config.h> +#include <../src/config.h> /* 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 @@ -34,12 +34,6 @@ #include <fcntl.h> #endif -#ifdef HAVE_CONFIG_H -#include <config.h> -/* 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 -#endif #undef TRUE #define TRUE 1 #undef FALSE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib-src/config.values Mon Aug 13 09:50:14 2007 +0200 @@ -0,0 +1,232 @@ +CFLAGS "-m486 -O4 -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2 -fomit-frame-pointer -Wall" +CPPFLAGS "" +CXXFLAGS "" +DEFS "-DHAVE_CONFIG_H" +LDFLAGS "" +LIBS "-ldb -lgdbm -lgpm -lncurses -lintl -lm " +exec_prefix "${prefix}" +prefix "/usr/local" +program_transform_name "s,x,x," +bindir "${exec_prefix}/bin" +sbindir "${exec_prefix}/sbin" +libexecdir "${exec_prefix}/libexec" +datadir "${prefix}/lib" +sysconfdir "${prefix}/etc" +sharedstatedir "${prefix}/com" +localstatedir "${prefix}/var" +libdir "${exec_prefix}/lib" +includedir "${prefix}/include" +oldincludedir "/usr/include" +infodir "${prefix}/lib/xemacs-${version}/info" +mandir "${prefix}/man/man1" +LN_S "ln -s" +CC "gcc" +CPP "gcc -E" +ld_switch_shared "-c" +start_files "" +start_flags "" +ld "$(CC) $(CFLAGS)" +lib_gcc "" +RANLIB "ranlib" +INSTALL_PROGRAM "${INSTALL}" +INSTALL_DATA "${INSTALL} -m 644" +YACC "bison -y" +SET_MAKE "" +X_CFLAGS " -I/usr/X11R6/include" +X_PRE_LIBS " -lSM -lICE" +X_LIBS " -L/usr/X11R6/lib" +X_EXTRA_LIBS "" +libs_xauth "-lXau -lXmu -lXt -lXext -lX11 -lSM -lICE" +lwlib_objs " lwlib-Xaw.o xlwmenu.o lwlib-Xlw.o" +ALLOCA "" +SRC_SUBDIR_DEPS " lwlib" +INSTALL_ARCH_DEP_SUBDIR " lib-src pkg-src/tree-x" +MAKE_SUBDIR " lib-src lwlib pkg-src/tree-x src" +SUBDIR_MAKEFILES "lib-src/Makefile lwlib/Makefile pkg-src/tree-x/Makefile src/Makefile" +version "20.3-b14" +configuration "i586-pc-linux" +canonical "i586-pc-linux" +srcdir "/b/XEmacs/xemacs-20.0" +pkgdir "" +statedir "${prefix}/lib" +infodir_user_defined "no" +lispdir "${datadir}/xemacs-${version}/lisp" +lispdir_user_defined "no" +sitelispdir "${datadir}/xemacs/site-lisp" +etcdir "${datadir}/xemacs-${version}/etc" +etcdir_user_defined "no" +lockdir "${statedir}/xemacs/lock" +lockdir_user_defined "no" +archlibdir "${libdir}/xemacs-${version}/${configuration}" +archlibdir_user_defined "no" +docdir "" +bitmapdir "" +extra_objs "debug.o unexelf.o dgif_lib.o gif_err.o gifalloc.o menubar.o scrollbar.o dialog.o toolbar.o gui.o menubar-x.o scrollbar-x.o dialog-x.o toolbar-x.o gui-x.o mule.o mule-ccl.o mule-charset.o mule-coding.o mule-wnnfns.o mule-canna.o realpath.o inline.o console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o terminfo.o gpmevent.o event-unixoid.o database.o" +machfile "m/intel386.h" +opsysfile "s/linux.h" +c_switch_general "-DHAVE_CONFIG_H" +c_switch_window_system "-I/usr/X11R6/include" +c_switch_all "-DHAVE_CONFIG_H -I/usr/X11R6/include" +ld_switch_general "" +ld_switch_window_system "-L/usr/X11R6/lib" +ld_switch_all "-L/usr/X11R6/lib" +ld_libs_general "-ldb -lgdbm -lgpm -lncurses -lintl -lm" +ld_libs_window_system "-lcanna -lRKC -lwnn -lXaw -lpng -lz -ljpeg -lcompface -lXpm -lDnd -lXmu -lXt -lXext -lX11 -lSM -lICE" +ld_libs_all "-lcanna -lRKC -lwnn -lXaw -lpng -lz -ljpeg -lcompface -lXpm -lDnd -lXmu -lXt -lXext -lX11 -lSM -lICE -ldb -lgdbm -lgpm -lncurses -lintl -lm" +RECURSIVE_MAKE "$(MAKE) $(MFLAGS) CC='$(CC)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' CPPFLAGS='$(CPPFLAGS)'" +native_sound_lib "" +sound_cflags "" +dynodump_arch "" +internal_makefile_list "Makefile lib-src/Makefile.in lwlib/Makefile.in pkg-src/tree-x/Makefile.in src/Makefile.in" +configure_input "$configure_input" +srcdir "$srcdir" +top_srcdir "$top_srcdir" +INSTALL "$INSTALL" +EMACS_MAJOR_VERSION 20 +EMACS_MINOR_VERSION 3 +EMACS_BETA_VERSION 14 +XEMACS_CODENAME "Vienna" +EMACS_VERSION "20.3-b14" +DEBUG_XEMACS t +USE_ASSERTIONS t +MEMORY_USAGE_STATS t +CANONICAL_VERSION 20_3_b14_i586_pc_linux +HAVE_SYS_TIMEB_H t +HAVE_SYS_TIME_H t +HAVE_UNISTD_H t +HAVE_UTIME_H t +HAVE_LOCALE_H t +HAVE_FCNTL_H t +HAVE_ULIMIT_H t +HAVE_LINUX_VERSION_H t +HAVE_LIMITS_H t +HAVE_SYS_WAIT_H t +STDC_HEADERS t +TIME_WITH_SYS_TIME t +SYS_SIGLIST_DECLARED t +HAVE_STRUCT_UTIMBUF t +RETSIGTYPE void +HAVE_TIMEVAL t +HAVE_TZNAME t +SIZEOF_SHORT 2 +SIZEOF_INT 4 +SIZEOF_LONG 4 +SIZEOF_LONG_LONG 8 +SIZEOF_VOID_P 4 +HAVE_LONG_FILE_NAMES t +HAVE_LIBM t +LISP_FLOAT_TYPE t +HAVE_X_WINDOWS t +NARROWPROTO t +_POSIX_SOURCE t +_BSD_SOURCE t +_SVID_SOURCE t +linux t +__i386__ t +X_LOCALE t +THIS_IS_X11R6 t +HAVE_X11_XLOCALE_H t +HAVE_XFREE386 t +HAVE_XAUTH t +HAVE_OFFIX_DND t +HAVE_GIF t +HAVE_XPM t +HAVE_XFACE t +HAVE_JPEG t +HAVE_PNG t +LWLIB_USES_ATHENA t +NEED_ATHENA t +NEED_LUCID t +LWLIB_SCROLLBARS_ATHENA t +LWLIB_DIALOGS_ATHENA t +LWLIB_SCROLLBARS_ATHENA3D t +LWLIB_DIALOGS_ATHENA3D t +HAVE_MENUBARS t +HAVE_SCROLLBARS t +HAVE_DIALOGS t +HAVE_TOOLBARS t +LWLIB_MENUBARS_LUCID t +MULE t +HAVE_LIBINTL_H t +HAVE_LIBINTL t +HAVE_CRYPT t +HAVE_WNN t +HAVE_CANNA t +HAVE_ACOSH t +HAVE_ASINH t +HAVE_ATANH t +HAVE_CBRT t +HAVE_CLOSEDIR t +HAVE_DUP2 t +HAVE_FMOD t +HAVE_FPATHCONF t +HAVE_FREXP t +HAVE_FTIME t +HAVE_GETHOSTNAME t +HAVE_GETPAGESIZE t +HAVE_GETTIMEOFDAY t +HAVE_GETCWD t +HAVE_GETWD t +HAVE_LRAND48 t +HAVE_MKDIR t +HAVE_MKTIME t +HAVE_PERROR t +HAVE_POLL t +HAVE_RANDOM t +HAVE_RENAME t +HAVE_RES_INIT t +HAVE_RINT t +HAVE_RMDIR t +HAVE_SELECT t +HAVE_SETITIMER t +HAVE_SETPGID t +HAVE_SETLOCALE t +HAVE_SETSID t +HAVE_SIGBLOCK t +HAVE_SIGPROCMASK t +HAVE_STRCASECMP t +HAVE_STRERROR t +HAVE_TZSET t +HAVE_ULIMIT t +HAVE_USLEEP t +HAVE_UTIMES t +HAVE_WAITPID t +HAVE_H_ERRNO t +HAVE_SIGSETJMP t +LOCALTIME_CACHE t +HAVE_INLINE t +HAVE_ALLOCA_H t +HAVE_ALLOCA t +HAVE_STRCOLL t +HAVE_GETPGRP t +GETPGRP_VOID t +HAVE_MMAP t +REL_ALLOC t +HAVE_TERMIOS t +SIGNALS_VIA_CHARACTERS t +NO_TERMIO t +HAVE_SOCKETS t +HAVE_SYSVIPC t +SYSV_SYSTEM_DIR t +NLIST_STRUCT t +HAVE_TTY t +HAVE_NCURSES t +CURSES_H_PATH "ncurses/curses.h" +TERM_H_PATH "ncurses/term.h" +HAVE_GPM t +HAVE_DBM t +DB_H_PATH "db.h" +HAVE_BERKELEY_DB t +HAVE_DATABASE t +EMACS_CONFIGURATION "i586-pc-linux" +EMACS_CONFIG_OPTIONS " '--cflags=-m486 -O4 -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2 -fomit-frame-pointer -Wall' --with-sound=no --error-checking=none --debug=yes --with-mule=yes --with-dialogs=athena3d --with-scrollbars=athena3d --use-union-type=yes --with-xim=no --mail-locking=file" +config_machfile "m/intel386.h" +config_opsysfile "s/linux.h" +LD_SWITCH_X_SITE "" +LD_SWITCH_X_SITE_AUX "" +C_SWITCH_X_SITE "" +LD_SWITCH_SITE "" +C_SWITCH_SITE "" +GNU_MALLOC t +USE_GCC t +CONST_IS_LOSING t
--- a/lib-src/etags.c Mon Aug 13 09:49:11 2007 +0200 +++ b/lib-src/etags.c Mon Aug 13 09:50:14 2007 +0200 @@ -1217,11 +1217,11 @@ for (i = 0; i < CHARS; i++) _wht[i] = _nin[i] = _etk[i] = _itk[i] = _btk[i] = FALSE; - for (sp = white; *sp; sp++) _wht[*sp] = TRUE; _wht[0] = _wht['\n']; - for (sp = nonam; *sp; sp++) _nin[*sp] = TRUE; _nin[0] = _nin['\n']; - for (sp = endtk; *sp; sp++) _etk[*sp] = TRUE; _etk[0] = _etk['\n']; - for (sp = midtk; *sp; sp++) _itk[*sp] = TRUE; _btk[0] = _btk['\n']; - for (sp = begtk; *sp; sp++) _btk[*sp] = TRUE; _itk[0] = _itk['\n']; + for (sp = white; *sp; sp++) _wht[(int)*sp] = TRUE; _wht[0] = _wht['\n']; + for (sp = nonam; *sp; sp++) _nin[(int)*sp] = TRUE; _nin[0] = _nin['\n']; + for (sp = endtk; *sp; sp++) _etk[(int)*sp] = TRUE; _etk[0] = _etk['\n']; + for (sp = midtk; *sp; sp++) _itk[(int)*sp] = TRUE; _btk[0] = _btk['\n']; + for (sp = begtk; *sp; sp++) _btk[(int)*sp] = TRUE; _itk[0] = _itk['\n']; } /* @@ -1721,7 +1721,7 @@ 35, 9, 61, 117, 40, 52, 10, 57, 3, 117, 117, 117, 117, 117, 117, 117, 117, 117, }; - return len + hash_table[str[2]] + hash_table[str[0]]; + return len + hash_table[(int)(str[2])] + hash_table[(int)(str[0])]; } struct C_stab_entry *
--- a/lib-src/getopt.c Mon Aug 13 09:49:11 2007 +0200 +++ b/lib-src/getopt.c Mon Aug 13 09:50:14 2007 +0200 @@ -31,14 +31,12 @@ #endif #ifdef HAVE_CONFIG_H -#include <config.h> +#include <../src/config.h> #endif #include <stdio.h> -#ifdef STDC_HEADERS #include <string.h> #include <stdlib.h> -#endif /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C
--- a/lib-src/getopt1.c Mon Aug 13 09:49:11 2007 +0200 +++ b/lib-src/getopt1.c Mon Aug 13 09:50:14 2007 +0200 @@ -20,7 +20,7 @@ USA. */ #ifdef HAVE_CONFIG_H -#include <config.h> +#include <../src/config.h> #endif #include "getopt.h"
--- a/lib-src/gnuserv.h Mon Aug 13 09:49:11 2007 +0200 +++ b/lib-src/gnuserv.h Mon Aug 13 09:50:14 2007 +0200 @@ -106,10 +106,8 @@ #include <sys/param.h> #include <sys/stat.h> #include <stdio.h> -#ifdef STDC_HEADERS #include <stdlib.h> #include <string.h> -#endif /* STDC_HEADERS */ #include <signal.h> #include <errno.h>
--- a/lib-src/gnuslib.c Mon Aug 13 09:49:11 2007 +0200 +++ b/lib-src/gnuslib.c Mon Aug 13 09:50:14 2007 +0200 @@ -80,7 +80,6 @@ int *s; { #ifdef INTERNET_DOMAIN_SOCKETS - char localhost[HOSTNAMSZ]; char *ptr; if (hostarg == NULL) hostarg = getenv("GNU_HOST"); @@ -114,9 +113,12 @@ *s = connect_to_ipc_server(); return (int) CONN_IPC; #elif defined(INTERNET_DOMAIN_SOCKETS) - gethostname(localhost,HOSTNAMSZ); /* use this host by default */ - *s = connect_to_internet_server(localhost, portarg); - return (int) CONN_INTERNET; + { + char localhost[HOSTNAMSZ]; + gethostname(localhost,HOSTNAMSZ); /* use this host by default */ + *s = connect_to_internet_server(localhost, portarg); + return (int) CONN_INTERNET; + } #endif /* IPC type */ } } @@ -225,7 +227,6 @@ */ int read_line(int s, char *dest) { - char *index = NULL; int length; int offset=0; char buffer[GSERV_BUFSZ+1];
--- a/lib-src/make-path.c Mon Aug 13 09:49:11 2007 +0200 +++ b/lib-src/make-path.c Mon Aug 13 09:50:14 2007 +0200 @@ -32,7 +32,7 @@ #include <errno.h> #ifdef emacs -#include <config.h> +#include <../src/config.h> #endif extern int errno;
--- a/lib-src/movemail.c Mon Aug 13 09:49:11 2007 +0200 +++ b/lib-src/movemail.c Mon Aug 13 09:50:14 2007 +0200 @@ -69,6 +69,10 @@ #include "pop.h" #endif +#ifndef HAVE_STRERROR +static char * strerror (int errnum); +#endif /* HAVE_STRERROR */ + #ifdef MSDOS #undef access #endif /* MSDOS */ @@ -604,7 +608,6 @@ static int pop_retr (popserver server, int msgno, int (*action)(), int arg) { - extern char *strerror (); char *line; int ret;
--- a/lib-src/profile.c Mon Aug 13 09:49:11 2007 +0200 +++ b/lib-src/profile.c Mon Aug 13 09:50:14 2007 +0200 @@ -32,7 +32,7 @@ ** abstraction : a stopwatch ** operations: reset_watch, get_time */ -#include <config.h> +#include <../src/config.h> #include <stdio.h> #if __STDC__ || defined(STDC_HEADERS) #include <stdlib.h>
--- a/lib-src/yow.c Mon Aug 13 09:49:11 2007 +0200 +++ b/lib-src/yow.c Mon Aug 13 09:50:14 2007 +0200 @@ -9,7 +9,7 @@ /* Synched up with: FSF 19.28. */ -#include <config.h> +#include <../src/config.h> #include <stdio.h> #include <ctype.h>
--- a/lisp/ChangeLog Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/ChangeLog Mon Aug 13 09:50:14 2007 +0200 @@ -1,3 +1,100 @@ +1997-07-19 Steven L Baur <steve@altair.xemacs.org> + + * prim/about.el: Sundry changes. + +1997-07-18 Steven L Baur <steve@altair.xemacs.org> + + * packages/crypt.el (crypt-inhibit-formats): New variable. + (crypt-encoded-p): Use it. + Based on a patch by Tkil <tkil@scrye.com> + + * utils/ring.el (ring-p): Make compatible, not obsolete. + +1997-07-16 Steven L Baur <steve@altair.xemacs.org> + + * utils/crontab.el (crontab-get): Check for `no crontab for' as an + error return. + Suggested by Jeff Miller <jmiller@smart.net> + + * modes/arc-mode.el: Clean up comment. + + * packages/tar-mode.el: Clean up comments. + +Wed Jul 16 23:56:58 1997 Barry A. Warsaw <cc-mode-help@python.org> + + * cc-mode/: Release 5.13. + +Thu Jul 17 03:36:22 1997 Barry A. Warsaw <cc-mode-help@python.org> + + * cc-mode/cc-langs.el (c-symbol-key): + first character must be a letter or underscore + +Mon Jul 14 23:43:33 1997 Barry A. Warsaw <cc-mode-help@python.org> + + * cc-mode/cc-langs.el (c-make-inherited-keymap): Change to a defun + + * cc-mode/cc-langs.el: + Added (require 'cc-defs) to pick up the definition of c-emacs-features. + + * cc-mode/README: Simplified instructions + + * cc-mode/cc-make.el: New file to aid in byte-compiling in older + Emacsen. + +Sun Jul 13 21:24:37 1997 Barry A. Warsaw <cc-mode-help@python.org> + + * cc-mode/cc-cmds.el: cc-defs is required to pick up the + c-add-syntax macro + + * cc-mode/cc-langs.el (c-mode-menu): + Added uncomment region and slight rearrangement of + items + + * cc-mode/cc-cmds.el (c-electric-backspace): + Must get 'supercede property values to work + with delsel and pending-del. + +Thu Jul 10 20:46:09 1997 Barry A. Warsaw <cc-mode-help@python.org> + + * cc-mode/cc-engine.el (c-maybe-labelp): + defvar this to shut up the byte compiler + +Wed Jul 9 22:08:58 1997 Barry A. Warsaw <cc-mode-help@python.org> + + * cc-mode/cc-styles.el (c-initialize-builtin-style): + use copy-sequence instead of copy-tree + so the cl module isn't necessary. + + * cc-mode/cc-cmds.el (c-electric-brace): + fix ebola eradication consequence in the + preserve-p test. + +1997-07-15 Steven L Baur <steve@altair.xemacs.org> + + * prim/about.el (xemacs-hackers): Add info about IENAGA Kazuyuki. + (about-url-alist): Ditto. + (about-maintainer-info): Ditto. + + * prim/modeline.el (add-minor-mode): Update docstring. + +1997-07-15 Hrvoje Niksic <hniksic@srce.hr> + + * packages/pending-del.el (pending-delete-mode): Use the option + symbol as argument to add-minor-mode, not its value. + +1997-07-14 Hrvoje Niksic <hniksic@srce.hr> + + * packages/pending-del.el (pending-delete-modeline-string): New + option. + +1997-07-14 Steven L Baur <steve@altair.xemacs.org> + + * prim/files.el (auto-mode-alist): Readd objective c mode. + From Barry A. Warsaw <bwarsaw@CNRI.Reston.Va.US> + + * prim/make-docfile.el: Print more informative message when + attempting to create docfile and all dumped .elcs do not exist. + 1997-07-13 Steven L Baur <steve@altair.xemacs.org> * prim/files.el (save-some-buffers): Guard call to
--- a/lisp/cc-mode/cc-align.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/cc-mode/cc-align.el Mon Aug 13 09:50:14 2007 +0200 @@ -7,7 +7,7 @@ ;; 1985 Richard M. Stallman ;; Maintainer: cc-mode-help@python.org ;; Created: 22-Apr-1997 (split from cc-mode.el) -;; Version: 5.12 +;; Version: 5.13 ;; Keywords: c languages oop ;; This file is part of GNU Emacs.
--- a/lisp/cc-mode/cc-cmds.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/cc-mode/cc-cmds.el Mon Aug 13 09:50:14 2007 +0200 @@ -7,7 +7,7 @@ ;; 1985 Richard M. Stallman ;; Maintainer: cc-mode-help@python.org ;; Created: 22-Apr-1997 (split from cc-mode.el) -;; Version: 5.12 +;; Version: 5.13 ;; Keywords: c languages oop ;; This file is part of GNU Emacs. @@ -27,6 +27,9 @@ ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. +(eval-when-compile + (require 'cc-defs)) + (defun c-calculate-state (arg prevstate) ;; Calculate the new state of PREVSTATE, t or nil, based on arg. If
--- a/lisp/cc-mode/cc-compat.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/cc-mode/cc-compat.el Mon Aug 13 09:50:14 2007 +0200 @@ -5,7 +5,7 @@ ;; Author: 1994-1997 Barry A. Warsaw ;; Maintainer: cc-mode-help@python.org ;; Created: August 1994, split from cc-mode.el -;; Version: 5.12 +;; Version: 5.13 ;; Keywords: c languages oop ;; This file is part of GNU Emacs.
--- a/lisp/cc-mode/cc-defs.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/cc-mode/cc-defs.el Mon Aug 13 09:50:14 2007 +0200 @@ -7,7 +7,7 @@ ;; 1985 Richard M. Stallman ;; Maintainer: cc-mode-help@python.org ;; Created: 22-Apr-1997 (split from cc-mode.el) -;; Version: 5.12 +;; Version: 5.13 ;; Keywords: c languages oop ;; This file is part of GNU Emacs. @@ -170,16 +170,6 @@ (and (boundp 'zmacs-region-stays) (setq zmacs-region-stays t))) -(defsubst c-load-all () - ;; make sure all necessary components of CC Mode are loaded in. - (require 'cc-vars) - (require 'cc-engine) - (require 'cc-langs) - (require 'cc-menus) - (require 'cc-align) - (require 'cc-styles) - (require 'cc-cmds)) - (provide 'cc-defs) ;;; cc-defs.el ends here
--- a/lisp/cc-mode/cc-engine.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/cc-mode/cc-engine.el Mon Aug 13 09:50:14 2007 +0200 @@ -7,7 +7,7 @@ ;; 1985 Richard M. Stallman ;; Maintainer: cc-mode-help@python.org ;; Created: 22-Apr-1997 (split from cc-mode.el) -;; Version: 5.12 +;; Version: 5.13 ;; Keywords: c languages oop ;; This file is part of GNU Emacs. @@ -28,21 +28,27 @@ ;; Boston, MA 02111-1307, USA. -;; WARNING: Be *exceptionally* careful about modifications to this -;; function! Much of CC Mode depends on this Doing The Right Thing. -;; If you break it you will be sorry. +;; KLUDGE ALERT: c-maybe-labelp is used to pass information between +;; c-crosses-statement-barrier-p and c-beginning-of-statement-1. A +;; better way should be implemented, but this will at least shut up +;; the byte compiler. +(defvar c-maybe-labelp nil) + +;; WARNING WARNING WARNING +;; +;; Be *exceptionally* careful about modifications to this function! +;; Much of CC Mode depends on this Doing The Right Thing. If you +;; break it you will be sorry. If you think you know how this works, +;; you probably don't. No human on Earth does! :-) +;; +;; WARNING WARNING WARNING (defun c-beginning-of-statement-1 (&optional lim) ;; move to the start of the current statement, or the previous ;; statement if already at the beginning of one. (let ((firstp t) (substmt-p t) - donep c-in-literal-cache - ;; KLUDGE ALERT: maybe-labelp is used to pass information - ;; between c-crosses-statement-barrier-p and - ;; c-beginning-of-statement-1. A better way should be - ;; implemented. - maybe-labelp saved + donep c-in-literal-cache saved (last-begin (point))) ;; first check for bare semicolon (if (and (progn (c-backward-syntactic-ws lim) @@ -76,7 +82,7 @@ (setq last-begin (point) donep t))) - (setq maybe-labelp nil) + (setq c-maybe-labelp nil) ;; see if we're in a literal. if not, then this bufpos may be ;; a candidate for stopping (cond @@ -138,7 +144,7 @@ ((c-crosses-statement-barrier-p (point) last-begin) (setq donep t)) ;; CASE 7: ignore labels - ((and maybe-labelp + ((and c-maybe-labelp (or (and c-access-key (looking-at c-access-key)) ;; with switch labels, we have to go back further ;; to try to pick up the case or default @@ -201,7 +207,7 @@ (if (memq (char-after) '(?\; ?{ ?})) (setq crossedp t) (if (eq (char-after) ?:) - (setq maybe-labelp t)) + (setq c-maybe-labelp t)) (forward-char 1)) (setq lim (point))) (forward-char 1))))
--- a/lisp/cc-mode/cc-langs.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/cc-mode/cc-langs.el Mon Aug 13 09:50:14 2007 +0200 @@ -7,7 +7,7 @@ ;; 1985 Richard M. Stallman ;; Maintainer: cc-mode-help@python.org ;; Created: 22-Apr-1997 (split from cc-mode.el) -;; Version: 5.12 +;; Version: 5.13 ;; Keywords: c languages oop ;; This file is part of GNU Emacs. @@ -27,6 +27,8 @@ ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. +(require 'cc-defs) + ;; Regular expressions and other values which must be parameterized on ;; a per-language basis. @@ -34,11 +36,18 @@ ;; Keywords defining protection levels (defconst c-protection-key "\\<\\(public\\|protected\\|private\\)\\>") -;; Regex describing a `symbol' in all languages We cannot use just +;; Regex describing a `symbol' in all languages. We cannot use just ;; `word' syntax class since `_' cannot be in word class. Putting ;; underscore in word class breaks forward word movement behavior that -;; users are familiar with. -(defconst c-symbol-key "\\(\\w\\|\\s_\\)+") +;; users are familiar with. Besides, this runs counter to Emacs +;; convention. +;; +;; I suspect this definition isn't correct in light of Java's +;; definition of a symbol as being Unicode. I know so little about +;; I18N (except how to sound cool and say I18N :-) that I'm willing to +;; punt on this for now. + +(defconst c-symbol-key "[_a-zA-Z]\\(\\w\\|\\s_\\)*") ;; keywords introducing class definitions. language specific @@ -271,7 +280,7 @@ ;; Common routines -(defsubst c-make-inherited-keymap () +(defun c-make-inherited-keymap () (let ((map (make-sparse-keymap))) (cond ;; XEmacs 19 & 20 @@ -395,17 +404,22 @@ (defun c-mode-menu (modestr) (let ((m '(["Comment Out Region" comment-region (mark)] - ["Macro Expand Region" c-macro-expand (mark)] - ["Backslashify" c-backslash-region (mark)] + ["Uncomment Region" + (comment-region (region-beginning) (region-end) '(4)) + (mark)] + ["Fill Comment Paragraph" c-fill-paragraph t] + "---" ["Indent Expression" c-indent-exp (memq (char-after) '(?\( ?\[ ?\{))] ["Indent Line" c-indent-command t] - ["Fill Comment Paragraph" c-fill-paragraph t] ["Up Conditional" c-up-conditional t] ["Backward Conditional" c-backward-conditional t] ["Forward Conditional" c-forward-conditional t] ["Backward Statement" c-beginning-of-statement t] ["Forward Statement" c-end-of-statement t] + "---" + ["Macro Expand Region" c-macro-expand (mark)] + ["Backslashify" c-backslash-region (mark)] ))) (cons modestr m)))
--- a/lisp/cc-mode/cc-menus.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/cc-mode/cc-menus.el Mon Aug 13 09:50:14 2007 +0200 @@ -7,7 +7,7 @@ ;; 1985 Richard M. Stallman ;; Maintainer: cc-mode-help@python.org ;; Created: 22-Apr-1997 (split from cc-mode.el) -;; Version: 5.12 +;; Version: 5.13 ;; Keywords: c languages oop ;; This file is part of GNU Emacs.
--- a/lisp/cc-mode/cc-mode.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/cc-mode/cc-mode.el Mon Aug 13 09:50:14 2007 +0200 @@ -7,7 +7,7 @@ ;; 1985 Richard M. Stallman ;; Maintainer: cc-mode-help@python.org ;; Created: a long, long, time ago. adapted from the original c-mode.el -;; Version: 5.12 +;; Version: 5.13 ;; Keywords: c languages oop ;; NOTE: Read the commentary below for the right way to submit bug reports! @@ -90,6 +90,25 @@ (require 'cc-defs) +;; Other modes and packages which depend on CC Mode should do the +;; following to make sure everything is loaded and available for their +;; use: +;; +;; (require 'cc-mode) +;; (c-initialize-cc-mode) + +(defun c-initialize-cc-mode () + ;; make sure all necessary components of CC Mode are loaded in. + (require 'cc-vars) + (require 'cc-engine) + (require 'cc-langs) + (require 'cc-menus) + (require 'cc-align) + (require 'cc-styles) + (require 'cc-cmds)) + + + ;;;###autoload (defun c-mode () "Major mode for editing K&R and ANSI C code. @@ -107,7 +126,7 @@ Key bindings: \\{c-mode-map}" (interactive) - (c-load-all) + (c-initialize-cc-mode) (kill-all-local-variables) (set-syntax-table c-mode-syntax-table) (setq major-mode 'c-mode @@ -146,7 +165,7 @@ Key bindings: \\{c++-mode-map}" (interactive) - (c-load-all) + (c-initialize-cc-mode) (kill-all-local-variables) (set-syntax-table c++-mode-syntax-table) (setq major-mode 'c++-mode @@ -187,7 +206,7 @@ Key bindings: \\{objc-mode-map}" (interactive) - (c-load-all) + (c-initialize-cc-mode) (kill-all-local-variables) (set-syntax-table objc-mode-syntax-table) (setq major-mode 'objc-mode @@ -230,7 +249,7 @@ Key bindings: \\{java-mode-map}" (interactive) - (c-load-all) + (c-initialize-cc-mode) (kill-all-local-variables) (set-syntax-table java-mode-syntax-table) (setq major-mode 'java-mode @@ -259,7 +278,7 @@ ;; defuns for submitting bug reports -(defconst c-version "5.12" +(defconst c-version "5.13" "CC Mode version number.") (defconst c-mode-help-address
--- a/lisp/cc-mode/cc-styles.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/cc-mode/cc-styles.el Mon Aug 13 09:50:14 2007 +0200 @@ -7,7 +7,7 @@ ;; 1985 Richard M. Stallman ;; Maintainer: cc-mode-help@python.org ;; Created: 22-Apr-1997 (split from cc-mode.el) -;; Version: 5.12 +;; Version: 5.13 ;; Keywords: c languages oop ;; This file is part of GNU Emacs. @@ -553,7 +553,6 @@ ;; crucial because future c-set-style calls will always reset the ;; variables first to the `cc-mode' style before instituting the new ;; style. Only do this once! - (require 'cl) (or (assoc "cc-mode" c-style-alist) (progn (c-add-style "cc-mode" @@ -562,7 +561,7 @@ (lambda (var) (let ((val (symbol-value var))) (cons var (if (atom val) val - (copy-tree val) + (copy-sequence val) )) ))) '(c-backslash-column
--- a/lisp/cc-mode/cc-vars.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/cc-mode/cc-vars.el Mon Aug 13 09:50:14 2007 +0200 @@ -7,7 +7,7 @@ ;; 1985 Richard M. Stallman ;; Maintainer: cc-mode-help@python.org ;; Created: 22-Apr-1997 (split from cc-mode.el) -;; Version: 5.12 +;; Version: 5.13 ;; Keywords: c languages oop ;; This file is part of GNU Emacs.
--- a/lisp/comint/custom-load.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/comint/custom-load.el Mon Aug 13 09:50:14 2007 +0200 @@ -1,10 +1,10 @@ -(custom-put 'background 'custom-loads '("background")) -(custom-put 'comint 'custom-loads '("comint-xemacs" "comint" "telnet")) -(custom-put 'comint-completion 'custom-loads '("comint")) -(custom-put 'comint-source 'custom-loads '("comint")) +(custom-put 'telnet 'custom-loads '("telnet")) +(custom-put 'ssh 'custom-loads '("ssh")) +(custom-put 'shell-faces 'custom-loads '("shell")) +(custom-put 'shell-directories 'custom-loads '("shell")) +(custom-put 'shell 'custom-loads '("shell")) (custom-put 'rlogin 'custom-loads '("rlogin")) -(custom-put 'shell 'custom-loads '("shell")) -(custom-put 'shell-directories 'custom-loads '("shell")) -(custom-put 'shell-faces 'custom-loads '("shell")) -(custom-put 'ssh 'custom-loads '("ssh")) -(custom-put 'telnet 'custom-loads '("telnet")) +(custom-put 'comint-source 'custom-loads '("comint")) +(custom-put 'comint-completion 'custom-loads '("comint")) +(custom-put 'comint 'custom-loads '("comint-xemacs" "comint" "telnet")) +(custom-put 'background 'custom-loads '("background"))
--- a/lisp/custom/custom-load.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/custom/custom-load.el Mon Aug 13 09:50:14 2007 +0200 @@ -1,53 +1,53 @@ -(custom-put 'emacs 'custom-loads '("cus-edit")) -(custom-put 'editing 'custom-loads '("cus-edit")) -(custom-put 'abbrev 'custom-loads '("cus-edit")) -(custom-put 'matching 'custom-loads '()) -(custom-put 'mouse 'custom-loads '()) -(custom-put 'external 'custom-loads '("cus-edit")) -(custom-put 'processes 'custom-loads '("cus-edit")) -(custom-put 'programming 'custom-loads '("cus-edit")) -(custom-put 'languages 'custom-loads '("cus-edit")) -(custom-put 'lisp 'custom-loads '()) -(custom-put 'applications 'custom-loads '("cus-edit")) -(custom-put 'calendar 'custom-loads '()) -(custom-put 'development 'custom-loads '("cus-edit")) -(custom-put 'extensions 'custom-loads '("wid-edit")) -(custom-put 'internal 'custom-loads '("cus-edit")) -(custom-put 'maint 'custom-loads '()) -(custom-put 'environment 'custom-loads '("cus-edit")) -(custom-put 'i18n 'custom-loads '("cus-edit")) -(custom-put 'x 'custom-loads '()) -(custom-put 'frames 'custom-loads '()) -(custom-put 'data 'custom-loads '()) -(custom-put 'files 'custom-loads '("cus-edit")) -(custom-put 'wp 'custom-loads '("cus-edit")) -(custom-put 'faces 'custom-loads '("cus-edit" "wid-edit")) -(custom-put 'hypermedia 'custom-loads '("wid-edit")) -(custom-put 'help 'custom-loads '("cus-edit")) +(custom-put 'widget-button 'custom-loads '("wid-edit")) +(custom-put 'widget-faces 'custom-loads '("wid-edit")) +(custom-put 'widget-documentation 'custom-loads '("wid-edit")) +(custom-put 'widgets 'custom-loads '("wid-browse" "wid-edit")) +(custom-put 'widget-browse 'custom-loads '("wid-browse")) +(custom-put 'custom-magic-faces 'custom-loads '("cus-edit")) +(custom-put 'windows 'custom-loads '()) +(custom-put 'processes-basics 'custom-loads '()) +(custom-put 'auto-save 'custom-loads '()) +(custom-put 'keyboard 'custom-loads '()) +(custom-put 'minibuffer 'custom-loads '()) +(custom-put 'debug 'custom-loads '()) +(custom-put 'limits 'custom-loads '()) +(custom-put 'dired 'custom-loads '()) +(custom-put 'execute 'custom-loads '()) +(custom-put 'display 'custom-loads '()) +(custom-put 'editing-basics 'custom-loads '()) +(custom-put 'fill 'custom-loads '()) +(custom-put 'modeline 'custom-loads '()) +(custom-put 'undo 'custom-loads '()) +(custom-put 'alloc 'custom-loads '()) +(custom-put 'custom-menu 'custom-loads '("cus-edit")) +(custom-put 'custom-buffer 'custom-loads '("cus-edit")) +(custom-put 'custom-browse 'custom-loads '("cus-edit")) +(custom-put 'custom-faces 'custom-loads '("cus-edit")) +(custom-put 'customize 'custom-loads '("cus-edit" "wid-edit" "cus-face")) (custom-put 'local 'custom-loads '()) -(custom-put 'customize 'custom-loads '("cus-edit" "wid-edit" "cus-face")) -(custom-put 'custom-faces 'custom-loads '("cus-edit")) -(custom-put 'custom-browse 'custom-loads '("cus-edit")) -(custom-put 'custom-buffer 'custom-loads '("cus-edit")) -(custom-put 'custom-menu 'custom-loads '("cus-edit")) -(custom-put 'alloc 'custom-loads '()) -(custom-put 'undo 'custom-loads '()) -(custom-put 'modeline 'custom-loads '()) -(custom-put 'fill 'custom-loads '()) -(custom-put 'editing-basics 'custom-loads '()) -(custom-put 'display 'custom-loads '()) -(custom-put 'execute 'custom-loads '()) -(custom-put 'dired 'custom-loads '()) -(custom-put 'limits 'custom-loads '()) -(custom-put 'debug 'custom-loads '()) -(custom-put 'minibuffer 'custom-loads '()) -(custom-put 'keyboard 'custom-loads '()) -(custom-put 'auto-save 'custom-loads '()) -(custom-put 'processes-basics 'custom-loads '()) -(custom-put 'windows 'custom-loads '()) -(custom-put 'custom-magic-faces 'custom-loads '("cus-edit")) -(custom-put 'widget-browse 'custom-loads '("wid-browse")) -(custom-put 'widgets 'custom-loads '("wid-browse" "wid-edit")) -(custom-put 'widget-documentation 'custom-loads '("wid-edit")) -(custom-put 'widget-faces 'custom-loads '("wid-edit")) -(custom-put 'widget-button 'custom-loads '("wid-edit")) +(custom-put 'help 'custom-loads '("cus-edit")) +(custom-put 'hypermedia 'custom-loads '("wid-edit")) +(custom-put 'faces 'custom-loads '("cus-edit" "wid-edit")) +(custom-put 'wp 'custom-loads '("cus-edit")) +(custom-put 'files 'custom-loads '("cus-edit")) +(custom-put 'data 'custom-loads '()) +(custom-put 'frames 'custom-loads '()) +(custom-put 'x 'custom-loads '()) +(custom-put 'i18n 'custom-loads '("cus-edit")) +(custom-put 'environment 'custom-loads '("cus-edit")) +(custom-put 'maint 'custom-loads '()) +(custom-put 'internal 'custom-loads '("cus-edit")) +(custom-put 'extensions 'custom-loads '("wid-edit")) +(custom-put 'development 'custom-loads '("cus-edit")) +(custom-put 'calendar 'custom-loads '()) +(custom-put 'applications 'custom-loads '("cus-edit")) +(custom-put 'lisp 'custom-loads '()) +(custom-put 'languages 'custom-loads '("cus-edit")) +(custom-put 'programming 'custom-loads '("cus-edit")) +(custom-put 'processes 'custom-loads '("cus-edit")) +(custom-put 'external 'custom-loads '("cus-edit")) +(custom-put 'mouse 'custom-loads '()) +(custom-put 'matching 'custom-loads '()) +(custom-put 'abbrev 'custom-loads '("cus-edit")) +(custom-put 'editing 'custom-loads '("cus-edit")) +(custom-put 'emacs 'custom-loads '("cus-edit"))
--- a/lisp/ediff/auto-autoloads.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/ediff/auto-autoloads.el Mon Aug 13 09:50:14 2007 +0200 @@ -171,6 +171,8 @@ The file is an optional FILE argument or the file visited by the current buffer. Use `vc.el' or `rcs.el' depending on `ediff-version-control-package'." t nil) +(defalias 'erevision 'ediff-revision) + (autoload 'ediff-version "ediff" "\ Return string describing the version of Ediff. When called interactively, displays the version." t nil)
--- a/lisp/ediff/custom-load.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/ediff/custom-load.el Mon Aug 13 09:50:14 2007 +0200 @@ -1,6 +1,6 @@ -(custom-put 'ediff 'custom-loads '("ediff-diff" "ediff-merg" "ediff-mult" "ediff-ptch" "ediff-wind" "ediff")) +(custom-put 'ediff-diff 'custom-loads '("ediff-diff")) +(custom-put 'ediff-merge 'custom-loads '("ediff-merg")) +(custom-put 'ediff-mult 'custom-loads '("ediff-mult")) +(custom-put 'ediff-ptch 'custom-loads '("ediff-ptch")) (custom-put 'ediff-window 'custom-loads '()) -(custom-put 'ediff-ptch 'custom-loads '()) -(custom-put 'ediff-mult 'custom-loads '("ediff-mult")) -(custom-put 'ediff-merge 'custom-loads '("ediff-merg")) -(custom-put 'ediff-diff 'custom-loads '("ediff-diff")) +(custom-put 'ediff 'custom-loads '("ediff-diff" "ediff-merg" "ediff-mult" "ediff-ptch" "ediff-wind" "ediff" "ediff-init"))
--- a/lisp/ediff/ediff-hook.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/ediff/ediff-hook.el Mon Aug 13 09:50:14 2007 +0200 @@ -243,6 +243,7 @@ (autoload 'ediff-buffers3 "ediff" "Compare three bufers" t) (autoload 'ebuffers3 "ediff" "Compare three bufers" t) + (autoload 'erevision "ediff" "Compare versions of a file" t) (autoload 'ediff-revision "ediff" "Compare versions of a file" t) ;; compare regions and windows @@ -317,6 +318,10 @@ "ediff-mult" "Display the registry of active Ediff sessions." t) + (autoload 'eregistry + "ediff-mult" + "Display the registry of active Ediff sessions." + t) (autoload 'ediff-documentation "ediff" "Display Ediff's manual."
--- a/lisp/ediff/ediff-init.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/ediff/ediff-init.el Mon Aug 13 09:50:14 2007 +0200 @@ -328,53 +328,79 @@ ;; Hook variables -(defvar ediff-before-setup-windows-hook nil +(defcustom ediff-before-setup-windows-hook nil "*Hooks to run before Ediff sets its window configuration. This can be used to save the previous window config, which can be restored -on ediff-quit or ediff-suspend.") -(defvar ediff-after-setup-windows-hook nil +on ediff-quit or ediff-suspend." + :type 'hook + :group 'ediff) +(defcustom ediff-after-setup-windows-hook nil "*Hooks to run after Ediff sets its window configuration. -This can be used to set up control window or icon in a desired place.") -(defvar ediff-before-setup-control-frame-hook nil +This can be used to set up control window or icon in a desired place." + :type 'hook + :group 'ediff) +(defcustom ediff-before-setup-control-frame-hook nil "*Hooks run before setting up the frame to display Ediff Control Panel. Can be used to change control frame parameters to position it where it -is desirable.") -(defvar ediff-after-setup-control-frame-hook nil +is desirable." + :type 'hook + :group 'ediff) +(defcustom ediff-after-setup-control-frame-hook nil "*Hooks run after setting up the frame to display Ediff Control Panel. -Can be used to move the frame where it is desired.") -(defvar ediff-startup-hook nil - "*Hooks to run in the control buffer after Ediff has been set up.") -(defvar ediff-select-hook nil - "*Hooks to run after a difference has been selected.") -(defvar ediff-unselect-hook nil - "*Hooks to run after a difference has been unselected.") -(defvar ediff-prepare-buffer-hook nil - "*Hooks called after buffers A, B, and C are set up.") -(defvar ediff-load-hook nil - "*Hook run after Ediff is loaded. Can be used to change defaults.") +Can be used to move the frame where it is desired." + :type 'hook + :group 'ediff) +(defcustom ediff-startup-hook nil + "*Hooks to run in the control buffer after Ediff has been set up." + :type 'hook + :group 'ediff) +(defcustom ediff-select-hook nil + "*Hooks to run after a difference has been selected." + :type 'hook + :group 'ediff) +(defcustom ediff-unselect-hook nil + "*Hooks to run after a difference has been unselected." + :type 'hook + :group 'ediff) +(defcustom ediff-prepare-buffer-hook nil + "*Hooks called after buffers A, B, and C are set up." + :type 'hook + :group 'ediff) +(defcustom ediff-load-hook nil + "*Hook run after Ediff is loaded. Can be used to change defaults." + :type 'hook + :group 'ediff) -(defvar ediff-mode-hook nil +(defcustom ediff-mode-hook nil "*Hook run just after ediff-mode is set up in the control buffer. This is done before any windows or frames are created. One can use it to -set local variables that determine how the display looks like.") -(defvar ediff-keymap-setup-hook nil - "*Hook run just after the default bindings in Ediff keymap are set up.") +set local variables that determine how the display looks like." + :type 'hook + :group 'ediff) +(defcustom ediff-keymap-setup-hook nil + "*Hook run just after the default bindings in Ediff keymap are set up." + :type 'hook + :group 'ediff) -(defvar ediff-display-help-hook nil - "*Hooks run after preparing the help message.") +(defcustom ediff-display-help-hook nil + "*Hooks run after preparing the help message." + :type 'hook + :group 'ediff) -(defvar ediff-suspend-hook (list 'ediff-default-suspend-function) - "*Hooks to run in the Ediff control buffer when Ediff is suspended.") -(defvar ediff-quit-hook (list 'ediff-cleanup-mess) - "*Hooks to run in the Ediff control buffer after finishing Ediff.") -(defvar ediff-cleanup-hook nil +(defcustom ediff-suspend-hook (list 'ediff-default-suspend-function) + "*Hooks to run in the Ediff control buffer when Ediff is suspended." + :type 'hook + :group 'ediff) +(defcustom ediff-quit-hook (list 'ediff-cleanup-mess) + "*Hooks to run in the Ediff control buffer after finishing Ediff." + :type 'hook + :group 'ediff) +(defcustom ediff-cleanup-hook nil "*Hooks to run on exiting Ediff but before killing the control buffer. This is a place to do various cleanups, such as deleting the variant buffers. -Ediff provides a function, `ediff-janitor', as one such possible hook.") -(defvar ediff-quit-merge-hook 'ediff-maybe-save-and-delete-merge - "*Hooks to run before quitting a merge job. -The most common use is to save and delete the merge buffer.") - +Ediff provides a function, `ediff-janitor', as one such possible hook." + :type 'hook + :group 'ediff) ;; Error messages (defconst ediff-KILLED-VITAL-BUFFER @@ -430,29 +456,39 @@ (ediff-defvar-local ediff-hide-regexp-connective 'and "") -;; Copying difference regions between buffers. -(ediff-defvar-local ediff-killed-diffs-alist nil - "A list of killed diffs. -A diff is saved here if it is replaced by a diff -from another buffer. This alist has the form: -\((num (buff-object . diff) (buff-object . diff) (buff-object . diff)) ...), -where some buffer-objects may be missing.") +;;; Copying difference regions between buffers. + +;; A list of killed diffs. +;; A diff is saved here if it is replaced by a diff +;; from another buffer. This alist has the form: +;; \((num (buff-object . diff) (buff-object . diff) (buff-object . diff)) ...), +;; where some buffer-objects may be missing. +(ediff-defvar-local ediff-killed-diffs-alist nil "") ;; Highlighting -;;(defvar ediff-before-flag-bol (if ediff-emacs-p "->>\n" (make-glyph "->>\n")) -(defvar ediff-before-flag-bol (if ediff-xemacs-p (make-glyph "->>") "->>") - "*Flag placed above the highlighted block of differences. -Must end with newline.") -;;(defvar ediff-after-flag-eol (if ediff-emacs-p "<<-\n" (make-glyph "<<-")) -(defvar ediff-after-flag-eol (if ediff-xemacs-p (make-glyph "<<-") "<<-") - "*Flag placed below the highlighted block of differences. -Must end with newline.") +(defcustom ediff-before-flag-bol (if ediff-xemacs-p (make-glyph "->>") "->>") + "*Flag placed before a highlighted block of differences, if block starts at beginning of a line." + :type 'string + :tag "Region before-flag at beginning of line" + :group 'ediff) -(defvar ediff-before-flag-mol (if ediff-xemacs-p (make-glyph "->>") "->>") - "*Like ediff-before-flag, used when a difference starts in mid-line.") -(defvar ediff-after-flag-mol (if ediff-xemacs-p (make-glyph "<<-") "<<-") - "*Like ediff-after-flag, used when a difference starts in mid-line.") +(defcustom ediff-after-flag-eol (if ediff-xemacs-p (make-glyph "<<-") "<<-") + "*Flag placed after a highlighted block of differences, if block ends at end of a line." + :type 'string + :tag "Region after-flag at end of line" + :group 'ediff) + +(defcustom ediff-before-flag-mol (if ediff-xemacs-p (make-glyph "->>") "->>") + "*Flag placed before a highlighted block of differences, if block starts in mid-line." + :type 'string + :tag "Region before-flag in the middle of line" + :group 'ediff) +(defcustom ediff-after-flag-mol (if ediff-xemacs-p (make-glyph "<<-") "<<-") + "*Flag placed after a highlighted block of differences, if block ends in mid-line." + :type 'string + :tag "Region after-flag in the middle of line" + :group 'ediff) (ediff-defvar-local ediff-use-faces t @@ -490,11 +526,13 @@ (ediff-defvar-local ediff-quit-widened t "*Non-nil means: when finished, Ediff widens buffers A/B. Actually, Ediff restores the scope of visibility that existed at startup.") -(defvar ediff-keep-variants t - "*Nil means that non-modified variant buffers should be removed after some -interrogation. + +(defcustom ediff-keep-variants t + "*Nil means that non-modified variant buffers should be removed at the end of the session after some interrogation. Supplying a prefix argument to the quit command `q' temporarily reverses the -meaning of this variable.") +meaning of this variable." + :type 'boolean + :group 'ediff) (ediff-defvar-local ediff-highlight-all-diffs t "If nil, only the selected differences are highlighted. @@ -522,7 +560,7 @@ (ediff-defvar-local ediff-buffer-values-orig-C nil "") ;; The original values of ediff-protected-variables for buffer Ancestor (ediff-defvar-local ediff-buffer-values-orig-Ancestor nil "") -;; Buffer-local variables to be saved then restored during Ediff sessions + ;; Buffer-local variables to be saved then restored during Ediff sessions (defconst ediff-protected-variables '( ;;buffer-read-only @@ -589,12 +627,14 @@ ;; Priority of non-selected overlays. (defvar ediff-shadow-overlay-priority 100 "") -(defvar ediff-version-control-package 'vc +(defcustom ediff-version-control-package 'vc "Version control package used. Currently, Ediff supports vc.el, rcs.el, pcl-cvs.el, and generic-sc.el. The standard Emacs interface to RCS, CVS, SCCS, etc., is vc.el. However, some people find the other two packages more convenient. Set this variable to the -appropriate symbol: `rcs', `pcl-cvs', or `generic-sc' if you so desire.") +appropriate symbol: `rcs', `pcl-cvs', or `generic-sc' if you so desire." + :type 'symbol + :group 'ediff) (if ediff-xemacs-p @@ -1106,6 +1146,12 @@ Normally, this is the `toggle-read-only' function, but, if version control is used, it could be `vc-toggle-read-only' or `rcs-toggle-read-only'.") +(defcustom ediff-make-buffers-readonly-at-startup nil + "*Make all variant buffers read-only when Ediff starts up. +This property can be toggled interactively." + :type 'boolean + :group 'ediff) + ;;; Misc @@ -1121,9 +1167,11 @@ ;; file where the result of the merge is to be saved. used internally (ediff-defvar-local ediff-merge-store-file nil "") -(defvar ediff-no-emacs-help-in-control-buffer nil +(defcustom ediff-no-emacs-help-in-control-buffer nil "*Non-nil means C-h should not invoke Emacs help in control buffer. -Instead, C-h jumps to previous difference.") +Instead, C-h would jump to previous difference." + :type 'boolean + :group 'ediff) (defvar ediff-temp-file-prefix (let ((env (or (getenv "TMPDIR") @@ -1155,12 +1203,13 @@ (defvar ediff-H-glyph (if ediff-xemacs-p (make-glyph "H"))) -(ediff-defvar-local ediff-temp-file-A nil - "Temporary file used for refining difference regions in buffer A.") -(ediff-defvar-local ediff-temp-file-B nil - "Temporary file used for refining difference regions in buffer B.") -(ediff-defvar-local ediff-temp-file-C nil - "Temporary file used for refining difference regions in buffer C.") +;; Temporary file used for refining difference regions in buffer A. +(ediff-defvar-local ediff-temp-file-A nil "") +;; Temporary file used for refining difference regions in buffer B. +(ediff-defvar-local ediff-temp-file-B nil "") +;; Temporary file used for refining difference regions in buffer C. +(ediff-defvar-local ediff-temp-file-C nil "") + ;;; In-line functions
--- a/lisp/ediff/ediff-merg.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/ediff/ediff-merg.el Mon Aug 13 09:50:14 2007 +0200 @@ -49,6 +49,12 @@ (require 'ediff-init) +(defcustom ediff-quit-merge-hook 'ediff-maybe-save-and-delete-merge + "*Hooks to run before quitting a merge job. +The most common use is to save and delete the merge buffer." + :type 'hook + :group 'ediff-merge) + (defcustom ediff-default-variant 'combined "*The variant to be used as a default for buffer C in merging.
--- a/lisp/ediff/ediff-ptch.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/ediff/ediff-ptch.el Mon Aug 13 09:50:14 2007 +0200 @@ -50,28 +50,62 @@ (require 'ediff-init) +(defcustom ediff-patch-program "patch" + "*Name of the program that applies patches. +It is recommended to use GNU-compatible versions." + :type 'string + :group 'ediff-ptch) +(defcustom ediff-patch-options "-f" + "*Options to pass to ediff-patch-program. + +Note: the `-b' option should be specified in `ediff-backup-specs'. + +It is recommended to pass the `-f' option to the patch program, so it won't ask +questions. However, some implementations don't accept this option, in which +case the default value for this variable should be changed." + :type 'string + :group 'ediff-ptch) + (defvar ediff-last-dir-patch nil "Last directory used by an Ediff command for file to patch.") -(defvar ediff-backup-extension - (if (memq system-type '(vax-vms axp-vms emx ms-dos windows-nt windows-95)) - "_orig" ".orig") +;; the default backup extension +(defconst ediff-default-backup-extension + (if (memq system-type '(vax-vms axp-vms emx ms-dos)) + "_orig" ".orig")) + + +(defcustom ediff-backup-extension ediff-default-backup-extension "Backup extension used by the patch program. -See also `ediff-backup-specs'.") +See also `ediff-backup-specs'." + :type 'string + :group 'ediff-ptch) -(defcustom ediff-backup-specs (format "-b %s" ediff-backup-extension) +(defcustom ediff-backup-specs + (cond + ((zerop (call-process ediff-patch-program nil nil nil "-z." "-b")) + ;; GNU `patch' v. >= 2.2 + (format "-z%s -b" ediff-backup-extension)) + ((zerop (call-process ediff-patch-program nil nil nil "-b")) + ;; POSIX `patch' -- ediff-backup-extension must be ".orig" + (setq ediff-backup-extension ediff-default-backup-extension) + "-b") + (t + ;; traditional `patch' + (format "-b %s" ediff-backup-extension))) "*Backup directives to pass to the patch program. Ediff requires that the old version of the file \(before applying the patch\) -is saved in a file named `the-patch-file.extension'. Usually `extension' is +be saved in a file named `the-patch-file.extension'. Usually `extension' is `.orig', but this can be changed by the user and may depend on the system. Therefore, Ediff needs to know the backup extension used by the patch program. Some versions of the patch program let you specify `-b backup-extension'. -Other versions only permit `-b', which assumes some canned extension - \(usually `.orig'\). +Other versions only permit `-b', which assumes the extension `.orig' +\(in which case ediff-backup-extension MUST be also `.orig'\). The latest +versions of GNU patch require `-b -z backup-extension'. Note that both `ediff-backup-extension' and `ediff-backup-specs' -must be properly set. If your patch program takes the option `-b', +must be set properly. If your patch program takes the option `-b', but not `-b extension', the variable `ediff-backup-extension' must still be set so Ediff will know which extension to use." :type 'string @@ -89,26 +123,12 @@ "\\|" ; GNU unified format diff 2-liner "^--- \\([^ \t]+\\)[\t ]+.*\n\\+\\+\\+ \\([^ \t]+\\)" "\\)") - "*Regexp matching filename 2-liners at the start of each context diff." + "*Regexp matching filename 2-liners at the start of each context diff. +You probably don't want to change that, unless you are using an obscure patch +program." :type 'regexp :group 'ediff-ptch) -(defcustom ediff-patch-program "patch" - "*Name of the program that applies patches. -It is recommended to use GNU-compatible versions." - :type 'string - :group 'ediff-ptch) -(defcustom ediff-patch-options "-f" - "*Options to pass to ediff-patch-program. - -Note: the `-b' option should be specified in `ediff-backup-specs'. - -It is recommended to pass the `-f' option to the patch program, so it won't ask -questions. However, some implementations don't accept this option, in which -case the default value for this variable should be changed." - :type 'string - :group 'ediff-ptch) - ;; The buffer of the patch file. Local to control buffer. (ediff-defvar-local ediff-patchbufer nil "") @@ -476,7 +496,7 @@ (true-source-filename source-filename) (target-filename source-filename) target-buf buf-to-patch file-name-magic-p - patch-return-code ctl-buf backup-style aux-wind) + patch-return-code ctl-buf backup-style) (if (string-match "-V" ediff-patch-options) (error @@ -535,44 +555,33 @@ (concat true-source-filename ediff-backup-extension))) (progn (with-output-to-temp-buffer ediff-msg-buffer - (princ (format " -Patch has failed OR the backup version of the patched file was not created by -the patch program. + (princ (format + "Patch program has failed due to a bad patch file OR +because it couldn't create the backup for the file to be patched. -One reason may be that the values of the variables +The former could be caused by a corrupt patch file or because the %S +program doesn't understand the format of the patch file in use. +The second problem might be due to an incompatibility among these settings: + ediff-patch-program = %S ediff-patch-options = %S ediff-backup-extension = %S ediff-backup-specs = %S -are not appropriate for the program specified in the variable - - ediff-patch-program = %S - -Another reason could be that the %S program doesn't understand -the format of the patch file you used. - See Ediff on-line manual for more details on these variables. -\(Or use a GNU-compatible patch program and stay out of trouble.\) - -Type any key to continue... -" +In particular, check the documentation for `ediff-backup-specs'. " + ediff-patch-program + ediff-patch-program ediff-patch-options ediff-backup-extension ediff-backup-specs - ediff-patch-program - ediff-patch-program))) + ))) (beep 1) (if (setq aux-wind (get-buffer-window ediff-msg-buffer)) (progn (select-window aux-wind) (goto-char (point-max)))) - (read-char-exclusive) - (if aux-wind (bury-buffer)) ; ediff-msg-buffer - (if (setq aux-wind (get-buffer-window patch-diagnostics)) - (progn - (select-window aux-wind) - (bury-buffer))) + (switch-to-buffer-other-window patch-diagnostics) (error "Patch appears to have failed"))) ;; If black magic is involved, apply patch to a temp copy of the
--- a/lisp/ediff/ediff-util.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/ediff/ediff-util.el Mon Aug 13 09:50:14 2007 +0200 @@ -101,6 +101,7 @@ `ediff-patch-file' `ediff-patch-buffer' `epatch-buffer' + `erevision' `ediff-revision' Commands: @@ -404,7 +405,10 @@ (or (memq control-buffer ediff-this-buffer-ediff-sessions) (setq ediff-this-buffer-ediff-sessions (cons control-buffer ediff-this-buffer-ediff-sessions))) + (if ediff-make-buffers-readonly-at-startup + (setq buffer-read-only t)) ) + (ediff-eval-in-buffer ediff-buffer-B (ediff-nuke-selective-display) (run-hooks 'ediff-prepare-buffer-hook) @@ -414,7 +418,10 @@ (or (memq control-buffer ediff-this-buffer-ediff-sessions) (setq ediff-this-buffer-ediff-sessions (cons control-buffer ediff-this-buffer-ediff-sessions))) + (if ediff-make-buffers-readonly-at-startup + (setq buffer-read-only t)) ) + (if ediff-3way-job (ediff-eval-in-buffer ediff-buffer-C (ediff-nuke-selective-display) @@ -424,6 +431,8 @@ (setq ediff-this-buffer-ediff-sessions (cons control-buffer ediff-this-buffer-ediff-sessions))) + (if ediff-make-buffers-readonly-at-startup + (setq buffer-read-only t)) )) (if (ediff-buffer-live-p ediff-ancestor-buffer)
--- a/lisp/ediff/ediff-wind.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/ediff/ediff-wind.el Mon Aug 13 09:50:14 2007 +0200 @@ -177,7 +177,7 @@ Expects three parameters: the control buffer, the desired width and height of the control frame. It returns an association list of the form \(\(top . <position>\) \(left . <position>\)\)" - :type 'boolean + :type 'function :group 'ediff-window) (defcustom ediff-control-frame-upward-shift (if ediff-xemacs-p 42 14)
--- a/lisp/ediff/ediff.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/ediff/ediff.el Mon Aug 13 09:50:14 2007 +0200 @@ -6,8 +6,8 @@ ;; Created: February 2, 1994 ;; Keywords: comparing, merging, patching, version control. -(defconst ediff-version "2.65" "The current version of Ediff") -(defconst ediff-date "May 1, 1997" "Date of last update") +(defconst ediff-version "2.66" "The current version of Ediff") +(defconst ediff-date "July 9, 1997" "Date of last update") ;; This file is part of GNU Emacs. @@ -109,6 +109,10 @@ (provide 'ediff) ;; Compiler pacifier +(defvar cvs-cookie-handle) +(defvar ediff-last-dir-patch) +(defvar ediff-patch-default-directory) + (and noninteractive (eval-when-compile (load-library "dired") @@ -136,26 +140,20 @@ (defcustom ediff-use-last-dir nil - "*If t, Ediff uses previous directory as default when reading file name." + "*If t, Ediff will use previous directory as default when reading file name." :type 'boolean :group 'ediff) -(defvar ediff-last-dir-A nil - "Last directory used by an Ediff command for file-A.") -(defvar ediff-last-dir-B nil - "Last directory used by an Ediff command for file-B.") -(defvar ediff-last-dir-C nil - "Last directory used by an Ediff command for file-C.") -(defvar ediff-last-dir-ancestor nil - "Last directory used by an Ediff command for the ancestor file.") -(defvar ediff-last-merge-autostore-dir - "Last directory used by an Ediff command as the output directory for merge.") - -;; Some defvars to reduce the number of compiler warnings -(defvar cvs-cookie-handle) -(defvar ediff-last-dir-patch) -(defvar ediff-patch-default-directory) -;; end of compiler pacifier +;; Last directory used by an Ediff command for file-A. +(defvar ediff-last-dir-A nil) +;; Last directory used by an Ediff command for file-B. +(defvar ediff-last-dir-B nil) +;; Last directory used by an Ediff command for file-C. +(defvar ediff-last-dir-C nil) +;; Last directory used by an Ediff command for the ancestor file. +(defvar ediff-last-dir-ancestor nil) +;; Last directory used by an Ediff command as the output directory for merge. +(defvar ediff-last-merge-autostore-dir) ;; Used as a startup hook to set `_orig' patch file read-only. @@ -878,7 +876,7 @@ (ediff-regions-internal (get-buffer buffer-A) reg-A-beg reg-A-end (get-buffer buffer-B) reg-B-beg reg-B-end - startup-hooks 'ediff-regions-linewise nil))) ; no word mode + startup-hooks 'ediff-regions-linewise nil nil))) ; no word mode ;; compare region beg-A to end-A of buffer-A ;; to regions beg-B -- end-B in buffer-B. @@ -1235,6 +1233,10 @@ (intern (format "ediff-%S-internal" ediff-version-control-package)) rev1 rev2 startup-hooks) )) + + +;;;###autoload +(defalias 'erevision 'ediff-revision) ;; Test if version control package is loaded and load if not
--- a/lisp/eterm/term.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/eterm/term.el Mon Aug 13 09:50:14 2007 +0200 @@ -2260,7 +2260,7 @@ (term-move-columns -1)) ((eq char ?\033) ; Escape (setq term-terminal-state 2)) - ((eq char 0)) ; NUL: Do nothing + ((eq char ?\0)) ; NUL: Do nothing ((eq char ?\016)) ; Shift Out - ignored ((eq char ?\017)) ; Shift In - ignored ((eq char ?\^G)
--- a/lisp/gnus/ChangeLog Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/gnus/ChangeLog Mon Aug 13 09:50:14 2007 +0200 @@ -1,3 +1,12 @@ +1997-07-17 Steven L Baur <steve@altair.xemacs.org> + + * gnus.el (gnus-simplify-mode-line): Use gnus-mode-line-modified + for the modified string. + * gnus-salt.el (gnus-carpal-mode): Ditto. + + * gnus-ems.el (gnus-mode-line-modified): Refine detection on + whether narrow indicators should be used. + Sat Jul 12 19:46:22 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no> * gnus.el: Gnus v5.4.63 is released.
--- a/lisp/gnus/custom-load.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/gnus/custom-load.el Mon Aug 13 09:50:14 2007 +0200 @@ -1,80 +1,79 @@ -(custom-put 'gnus-cache 'custom-loads '()) -(custom-put 'smiley 'custom-loads '()) -(custom-put 'nnmail-various 'custom-loads '("nnmail")) -(custom-put 'nnmail-procmail 'custom-loads '("nnmail")) -(custom-put 'nnmail-expire 'custom-loads '("nnmail")) -(custom-put 'nnmail-files 'custom-loads '("nnmail")) -(custom-put 'nnmail-split 'custom-loads '("nnmail")) -(custom-put 'nnmail-duplicate 'custom-loads '("nnmail")) -(custom-put 'nnmail-prepare 'custom-loads '("nnmail")) -(custom-put 'nnmail-retrieve 'custom-loads '("nnmail")) -(custom-put 'nnmail 'custom-loads '("nnmail")) -(custom-put 'message-faces 'custom-loads '("message")) -(custom-put 'message-mail 'custom-loads '("message")) -(custom-put 'message-news 'custom-loads '("message")) -(custom-put 'message-headers 'custom-loads '("message")) -(custom-put 'message-insertion 'custom-loads '("message")) -(custom-put 'message-forwarding 'custom-loads '("message")) -(custom-put 'message-interface 'custom-loads '("message")) -(custom-put 'message-sending 'custom-loads '("message")) -(custom-put 'message-buffers 'custom-loads '("message")) -(custom-put 'message-various 'custom-loads '("message")) -(custom-put 'message 'custom-loads '("message")) -(custom-put 'gnus-various 'custom-loads '("gnus-sum")) -(custom-put 'gnus-message 'custom-loads '("message")) -(custom-put 'gnus-files 'custom-loads '("gnus" "nnmail")) -(custom-put 'gnus-visual 'custom-loads '("earcon" "gnus-art" "gnus-picon" "gnus" "smiley")) -(custom-put 'gnus-score-files 'custom-loads '("gnus-score")) -(custom-put 'gnus-score-decay 'custom-loads '("gnus-score")) -(custom-put 'gnus-score-expire 'custom-loads '("gnus-kill" "gnus-score")) -(custom-put 'gnus-score-default 'custom-loads '("gnus-score" "gnus-sum")) -(custom-put 'gnus-score-adapt 'custom-loads '("gnus-score")) -(custom-put 'gnus-score-kill 'custom-loads '("gnus-kill")) -(custom-put 'gnus-score 'custom-loads '("gnus-nocem" "gnus")) -(custom-put 'gnus-summary-tree 'custom-loads '("gnus-salt")) -(custom-put 'gnus-summary-pick 'custom-loads '("gnus-salt")) -(custom-put 'gnus-summary-various 'custom-loads '("gnus-sum")) -(custom-put 'gnus-summary-visual 'custom-loads '("gnus-sum" "gnus")) -(custom-put 'gnus-summary-sort 'custom-loads '("gnus-sum")) -(custom-put 'gnus-summary-mail 'custom-loads '("gnus-sum")) +(custom-put 'earcon 'custom-loads '("earcon")) +(custom-put 'gnus-article 'custom-loads '("gnus-art" "gnus-cite")) +(custom-put 'gnus-article-hiding 'custom-loads '("gnus-art" "gnus-sum")) +(custom-put 'gnus-article-highlight 'custom-loads '("gnus-art")) +(custom-put 'gnus-article-signature 'custom-loads '("gnus-art")) +(custom-put 'gnus-article-headers 'custom-loads '("gnus-art" "gnus-sum")) +(custom-put 'gnus-article-washing 'custom-loads '("gnus-xmas" "gnus-art")) +(custom-put 'gnus-article-emphasis 'custom-loads '("gnus-art")) +(custom-put 'gnus-article-saving 'custom-loads '("gnus-art")) +(custom-put 'gnus-article-mime 'custom-loads '("gnus-art" "gnus-sum")) +(custom-put 'gnus-article-buttons 'custom-loads '("gnus-art")) +(custom-put 'gnus-article-various 'custom-loads '("gnus-art" "gnus-sum")) +(custom-put 'gnus-asynchronous 'custom-loads '("gnus-async")) +(custom-put 'gnus-cite 'custom-loads '("gnus-cite")) +(custom-put 'gnus-demon 'custom-loads '("gnus-demon")) +(custom-put 'gnus-duplicate 'custom-loads '("gnus-dup")) +(custom-put 'gnus-edit-form 'custom-loads '("gnus-eform")) +(custom-put 'gnus-nocem 'custom-loads '("gnus-nocem")) +(custom-put 'picons 'custom-loads '("gnus-picon")) +(custom-put 'gnus-topic 'custom-loads '("gnus-topic")) +(custom-put 'gnus-extract 'custom-loads '("gnus" "gnus-uu")) +(custom-put 'gnus-extract-view 'custom-loads '("gnus-sum" "gnus-uu")) +(custom-put 'gnus-extract-archive 'custom-loads '("gnus-uu")) +(custom-put 'gnus-extract-post 'custom-loads '("gnus-uu")) +(custom-put 'gnus-windows 'custom-loads '("gnus-win")) +(custom-put 'gnus-xmas 'custom-loads '("gnus-xmas")) +(custom-put 'gnus 'custom-loads '("gnus-art" "gnus-async" "gnus-cache" "gnus-demon" "gnus-dup" "gnus-eform" "gnus-uu" "gnus-win" "gnus-xmas" "gnus" "nnmail")) +(custom-put 'gnus-start 'custom-loads '("gnus-group" "gnus-int" "gnus-start" "gnus-util" "gnus")) +(custom-put 'gnus-group 'custom-loads '("gnus-topic" "gnus")) +(custom-put 'gnus-group-foreign 'custom-loads '("gnus-group")) +(custom-put 'gnus-group-levels 'custom-loads '("gnus-group")) +(custom-put 'gnus-group-select 'custom-loads '("gnus-sum")) +(custom-put 'gnus-group-listing 'custom-loads '("gnus-group")) +(custom-put 'gnus-group-various 'custom-loads '("gnus-group")) +(custom-put 'gnus-summary 'custom-loads '("gnus-sum" "gnus")) +(custom-put 'gnus-summary-exit 'custom-loads '("gnus-sum")) +(custom-put 'gnus-summary-marks 'custom-loads '("gnus-sum")) +(custom-put 'gnus-thread 'custom-loads '("gnus-sum")) +(custom-put 'gnus-summary-format 'custom-loads '("gnus-sum")) +(custom-put 'gnus-summary-choose 'custom-loads '("gnus-sum")) (custom-put 'gnus-summary-maneuvering 'custom-loads '("gnus-sum")) -(custom-put 'gnus-summary-choose 'custom-loads '("gnus-sum")) -(custom-put 'gnus-summary-format 'custom-loads '("gnus-sum")) -(custom-put 'gnus-thread 'custom-loads '("gnus-sum")) -(custom-put 'gnus-summary-marks 'custom-loads '("gnus-sum")) -(custom-put 'gnus-summary-exit 'custom-loads '("gnus-sum")) -(custom-put 'gnus-summary 'custom-loads '("gnus-sum" "gnus")) -(custom-put 'gnus-group-various 'custom-loads '("gnus-group")) -(custom-put 'gnus-group-listing 'custom-loads '("gnus-group")) -(custom-put 'gnus-group-select 'custom-loads '("gnus-sum")) -(custom-put 'gnus-group-levels 'custom-loads '("gnus-group")) -(custom-put 'gnus-group-foreign 'custom-loads '("gnus-group")) -(custom-put 'gnus-group 'custom-loads '("gnus-topic" "gnus")) -(custom-put 'gnus-start 'custom-loads '("gnus-group" "gnus-int" "gnus-start" "gnus-util" "gnus")) -(custom-put 'gnus 'custom-loads '("gnus-art" "gnus-async" "gnus-cache" "gnus-demon" "gnus-dup" "gnus-eform" "gnus-uu" "gnus-win" "gnus-xmas" "gnus" "nnmail")) -(custom-put 'gnus-xmas 'custom-loads '("gnus-xmas")) -(custom-put 'gnus-windows 'custom-loads '("gnus-win")) -(custom-put 'gnus-extract-post 'custom-loads '("gnus-uu")) -(custom-put 'gnus-extract-archive 'custom-loads '("gnus-uu")) -(custom-put 'gnus-extract-view 'custom-loads '("gnus-sum" "gnus-uu")) -(custom-put 'gnus-extract 'custom-loads '("gnus" "gnus-uu")) -(custom-put 'gnus-topic 'custom-loads '("gnus-topic")) -(custom-put 'picons 'custom-loads '("gnus-picon")) -(custom-put 'gnus-nocem 'custom-loads '("gnus-nocem")) -(custom-put 'gnus-edit-form 'custom-loads '("gnus-eform")) -(custom-put 'gnus-duplicate 'custom-loads '("gnus-dup")) -(custom-put 'gnus-demon 'custom-loads '("gnus-demon")) -(custom-put 'gnus-cite 'custom-loads '("gnus-cite")) -(custom-put 'gnus-asynchronous 'custom-loads '("gnus-async")) -(custom-put 'gnus-article-various 'custom-loads '("gnus-art" "gnus-sum")) -(custom-put 'gnus-article-buttons 'custom-loads '("gnus-art")) -(custom-put 'gnus-article-mime 'custom-loads '("gnus-art" "gnus-sum")) -(custom-put 'gnus-article-saving 'custom-loads '("gnus-art")) -(custom-put 'gnus-article-emphasis 'custom-loads '("gnus-art")) -(custom-put 'gnus-article-washing 'custom-loads '("gnus-xmas" "gnus-art")) -(custom-put 'gnus-article-headers 'custom-loads '("gnus-art" "gnus-sum")) -(custom-put 'gnus-article-signature 'custom-loads '("gnus-art")) -(custom-put 'gnus-article-highlight 'custom-loads '("gnus-art")) -(custom-put 'gnus-article-hiding 'custom-loads '("gnus-art" "gnus-sum")) -(custom-put 'gnus-article 'custom-loads '("gnus-art" "gnus-cite")) -(custom-put 'earcon 'custom-loads '("earcon")) +(custom-put 'gnus-summary-mail 'custom-loads '("gnus-sum")) +(custom-put 'gnus-summary-sort 'custom-loads '("gnus-sum")) +(custom-put 'gnus-summary-visual 'custom-loads '("gnus-sum" "gnus")) +(custom-put 'gnus-summary-various 'custom-loads '("gnus-sum")) +(custom-put 'gnus-summary-pick 'custom-loads '("gnus-salt")) +(custom-put 'gnus-summary-tree 'custom-loads '("gnus-salt")) +(custom-put 'gnus-score 'custom-loads '("gnus-nocem" "gnus")) +(custom-put 'gnus-score-kill 'custom-loads '("gnus-kill")) +(custom-put 'gnus-score-adapt 'custom-loads '("gnus-score")) +(custom-put 'gnus-score-default 'custom-loads '("gnus-score" "gnus-sum")) +(custom-put 'gnus-score-expire 'custom-loads '("gnus-kill" "gnus-score")) +(custom-put 'gnus-score-decay 'custom-loads '("gnus-score")) +(custom-put 'gnus-score-files 'custom-loads '("gnus-score")) +(custom-put 'gnus-visual 'custom-loads '("earcon" "gnus-art" "gnus-picon" "gnus" "smiley")) +(custom-put 'gnus-files 'custom-loads '("gnus" "nnmail")) +(custom-put 'gnus-message 'custom-loads '("message")) +(custom-put 'gnus-various 'custom-loads '("gnus-sum")) +(custom-put 'message 'custom-loads '("message")) +(custom-put 'message-various 'custom-loads '("message")) +(custom-put 'message-buffers 'custom-loads '("message")) +(custom-put 'message-sending 'custom-loads '("message")) +(custom-put 'message-interface 'custom-loads '("message")) +(custom-put 'message-forwarding 'custom-loads '("message")) +(custom-put 'message-insertion 'custom-loads '("message")) +(custom-put 'message-headers 'custom-loads '("message")) +(custom-put 'message-news 'custom-loads '("message")) +(custom-put 'message-mail 'custom-loads '("message")) +(custom-put 'message-faces 'custom-loads '("message")) +(custom-put 'nnmail 'custom-loads '("nnmail")) +(custom-put 'nnmail-retrieve 'custom-loads '("nnmail")) +(custom-put 'nnmail-prepare 'custom-loads '("nnmail")) +(custom-put 'nnmail-duplicate 'custom-loads '("nnmail")) +(custom-put 'nnmail-split 'custom-loads '("nnmail")) +(custom-put 'nnmail-files 'custom-loads '("nnmail")) +(custom-put 'nnmail-expire 'custom-loads '("nnmail")) +(custom-put 'nnmail-procmail 'custom-loads '("nnmail")) +(custom-put 'nnmail-various 'custom-loads '("nnmail")) +(custom-put 'smiley 'custom-loads '())
--- a/lisp/gnus/gnus-ems.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/gnus/gnus-ems.el Mon Aug 13 09:50:14 2007 +0200 @@ -35,8 +35,8 @@ (defvar gnus-mouse-2 [mouse-2]) (defvar gnus-down-mouse-2 [down-mouse-2]) (defvar gnus-mode-line-modified - (if (and (not gnus-xemacs) - (< emacs-major-version 20)) + (if (or gnus-xemacs + (< emacs-major-version 20)) '("--**-" . "-----") '("**" "--")))
--- a/lisp/gnus/gnus-salt.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/gnus/gnus-salt.el Mon Aug 13 09:50:14 2007 +0200 @@ -950,7 +950,7 @@ \\{gnus-carpal-mode-map}" (interactive) (kill-all-local-variables) - (setq mode-line-modified "-- ") + (setq mode-line-modified (cdr gnus-mode-line-modified)) (setq major-mode 'gnus-carpal-mode) (setq mode-name "Gnus Carpal") (setq mode-line-process nil)
--- a/lisp/gnus/gnus.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/gnus/gnus.el Mon Aug 13 09:50:14 2007 +0200 @@ -2077,7 +2077,7 @@ (defun gnus-simplify-mode-line () "Make mode lines a bit simpler." - (setq mode-line-modified "-- ") + (setq mode-line-modified (cdr gnus-mode-line-modified)) (when (listp mode-line-format) (make-local-variable 'mode-line-format) (setq mode-line-format (copy-sequence mode-line-format))
--- a/lisp/mh-e/custom-load.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/mh-e/custom-load.el Mon Aug 13 09:50:14 2007 +0200 @@ -1,4 +1,4 @@ -(custom-put 'mh-buffer 'custom-loads '("mh-utils")) +(custom-put 'mh-compose 'custom-loads '("mh-comp")) +(custom-put 'mh 'custom-loads '("mh-comp" "mh-e" "mh-utils")) (custom-put 'mh-hook 'custom-loads '("mh-e")) -(custom-put 'mh 'custom-loads '("mh-comp" "mh-e" "mh-utils")) -(custom-put 'mh-compose 'custom-loads '("mh-comp")) +(custom-put 'mh-buffer 'custom-loads '("mh-utils"))
--- a/lisp/modes/arc-mode.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/modes/arc-mode.el Mon Aug 13 09:50:14 2007 +0200 @@ -1493,4 +1493,4 @@ ;; ------------------------------------------------------------------------- (provide 'archive-mode) -;; arc-mode.el ends here. +;;; arc-mode.el ends here.
--- a/lisp/modes/custom-load.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/modes/custom-load.el Mon Aug 13 09:50:14 2007 +0200 @@ -1,31 +1,31 @@ -(custom-put 'xrdb 'custom-loads '("xrdb-mode")) -(custom-put 'winmgr 'custom-loads '("winmgr-mode")) -(custom-put 'whitespace 'custom-loads '("whitespace-mode")) -(custom-put 'vrml 'custom-loads '("vrml-mode")) -(custom-put 'verilog 'custom-loads '("verilog-mode")) -(custom-put 'texinfo 'custom-loads '("texinfo")) -(custom-put 'tcl 'custom-loads '("tcl")) -(custom-put 'strokes 'custom-loads '("strokes")) -(custom-put 'sh-script 'custom-loads '("sh-script")) -(custom-put 'sh 'custom-loads '("sh-script")) -(custom-put 'resize-minibuffer 'custom-loads '("rsz-minibuf")) -(custom-put 'rexx 'custom-loads '("rexx-mode")) -(custom-put 'reftex-label-support 'custom-loads '("reftex")) -(custom-put 'reftex 'custom-loads '("reftex")) -(custom-put 'prolog 'custom-loads '("prolog")) +(custom-put 'asm 'custom-loads '("asm-mode")) +(custom-put 'auto-show 'custom-loads '("auto-show")) +(custom-put 'lisp-indent 'custom-loads '("cl-indent")) +(custom-put 'c-macro 'custom-loads '("cmacexp")) +(custom-put 'enriched 'custom-loads '("enriched")) +(custom-put 'executable 'custom-loads '("executable")) +(custom-put 'f90 'custom-loads '("f90")) +(custom-put 'f90-indent 'custom-loads '("f90")) +(custom-put 'fortran 'custom-loads '("f90" "fortran")) +(custom-put 'fortran-indent 'custom-loads '("fortran")) +(custom-put 'fortran-comment 'custom-loads '("fortran")) +(custom-put 'icon 'custom-loads '("icon")) +(custom-put 'mail-abbrevs 'custom-loads '("mail-abbrevs")) +(custom-put 'makefile-mode 'custom-loads '("make-mode")) +(custom-put 'outl-mouse 'custom-loads '("outl-mouse")) (custom-put 'pascal 'custom-loads '("pascal")) -(custom-put 'outl-mouse 'custom-loads '("outl-mouse")) -(custom-put 'makefile-mode 'custom-loads '("make-mode")) -(custom-put 'mail-abbrevs 'custom-loads '("mail-abbrevs")) -(custom-put 'icon 'custom-loads '("icon")) -(custom-put 'fortran-comment 'custom-loads '("fortran")) -(custom-put 'fortran-indent 'custom-loads '("fortran")) -(custom-put 'fortran 'custom-loads '("f90" "fortran")) -(custom-put 'f90-indent 'custom-loads '("f90")) -(custom-put 'f90 'custom-loads '("f90")) -(custom-put 'executable 'custom-loads '("executable")) -(custom-put 'enriched 'custom-loads '("enriched")) -(custom-put 'c-macro 'custom-loads '("cmacexp")) -(custom-put 'lisp-indent 'custom-loads '("cl-indent")) -(custom-put 'auto-show 'custom-loads '("auto-show")) -(custom-put 'asm 'custom-loads '("asm-mode")) +(custom-put 'prolog 'custom-loads '("prolog")) +(custom-put 'reftex 'custom-loads '("reftex")) +(custom-put 'reftex-label-support 'custom-loads '("reftex")) +(custom-put 'rexx 'custom-loads '("rexx-mode")) +(custom-put 'resize-minibuffer 'custom-loads '("rsz-minibuf")) +(custom-put 'sh 'custom-loads '("sh-script")) +(custom-put 'sh-script 'custom-loads '("sh-script")) +(custom-put 'strokes 'custom-loads '("strokes")) +(custom-put 'tcl 'custom-loads '("tcl")) +(custom-put 'texinfo 'custom-loads '("texinfo")) +(custom-put 'verilog 'custom-loads '("verilog-mode")) +(custom-put 'vrml 'custom-loads '("vrml-mode")) +(custom-put 'whitespace 'custom-loads '("whitespace-mode")) +(custom-put 'winmgr 'custom-loads '("winmgr-mode")) +(custom-put 'xrdb 'custom-loads '("xrdb-mode"))
--- a/lisp/packages/crypt.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/packages/crypt.el Mon Aug 13 09:50:14 2007 +0200 @@ -1116,6 +1116,10 @@ FILE-EXTENSION; typically t. ") +(defvar crypt-inhibit-formats (when (featurep 'mule) '(dos)) + "*A list of crypt abilities to turn off. In particular, setting this +variable to be '(dos) will stop the dos-mode CRLF <-> LF damage.") + ;;; This allows the user to alter contents of the encoding and encryption ;;; table variables without having to reload all of crypt++. @@ -1401,7 +1405,8 @@ (goto-char (point-min)) (let ((alist crypt-encoding-alist) elt found) (while (and alist (setq elt (car alist)) (not found)) - (if (looking-at (nth 1 elt)) + (if (and (looking-at (nth 1 elt)) + (not (memq (nth 0 elt) crypt-inhibit-formats))) (setq crypt-buffer-encoding-type (nth 0 elt) found t) ;; Decrement
--- a/lisp/packages/custom-load.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/packages/custom-load.el Mon Aug 13 09:50:14 2007 +0200 @@ -1,46 +1,46 @@ -(custom-put 'igrep 'custom-loads '("igrep")) -(custom-put 'change-log 'custom-loads '("add-log")) -(custom-put 'auto-save 'custom-loads '("auto-save")) -(custom-put 'avoid 'custom-loads '("avoid")) -(custom-put 'balloon-help 'custom-loads '("balloon-help")) -(custom-put 'compilation 'custom-loads '("compile")) -(custom-put 'completion 'custom-loads '("completion")) -(custom-put 'dabbrev 'custom-loads '("dabbrev")) -(custom-put 'desktop 'custom-loads '("desktop")) -(custom-put 'diff 'custom-loads '("diff")) -(custom-put 'etags 'custom-loads '("etags")) -(custom-put 'fast-lock 'custom-loads '("fast-lock")) -(custom-put 'feedmail 'custom-loads '("feedmail")) -(custom-put 'filladapt 'custom-loads '("filladapt")) -(custom-put 'fume 'custom-loads '("func-menu")) -(custom-put 'generic-sc 'custom-loads '("generic-sc")) -(custom-put 'gnuserv 'custom-loads '("gnuserv")) -(custom-put 'gopher 'custom-loads '("gopher")) -(custom-put 'hyper-apropos 'custom-loads '("hyper-apropos")) -(custom-put 'hyper-apropos-faces 'custom-loads '("hyper-apropos")) -(custom-put 'info 'custom-loads '("info")) -(custom-put 'ispell 'custom-loads '("ispell")) +(custom-put 'copyright 'custom-loads '("upd-copyr")) +(custom-put 'time-stamp 'custom-loads '("time-stamp")) +(custom-put 'texinfo-tex 'custom-loads '("texnfo-tex")) +(custom-put 'supercite-hooks 'custom-loads '("supercite")) +(custom-put 'supercite-cite 'custom-loads '("supercite")) +(custom-put 'supercite-attr 'custom-loads '("supercite")) +(custom-put 'supercite-frames 'custom-loads '("supercite")) +(custom-put 'supercite 'custom-loads '("supercite")) +(custom-put 'save-place 'custom-loads '("saveplace")) +(custom-put 'recent-files-menu 'custom-loads '("recent-files")) +(custom-put 'recent-files 'custom-loads '("recent-files")) +(custom-put 'remote-compile 'custom-loads '("rcompile")) +(custom-put 'ps-print-face 'custom-loads '("ps-print")) +(custom-put 'ps-print-color 'custom-loads '("ps-print")) +(custom-put 'ps-print-font 'custom-loads '("ps-print")) +(custom-put 'ps-print-header 'custom-loads '("ps-print")) +(custom-put 'ps-print-vertical 'custom-loads '("ps-print")) +(custom-put 'ps-print-horizontal 'custom-loads '("ps-print")) +(custom-put 'ps-print 'custom-loads '("ps-print")) +(custom-put 'pages 'custom-loads '("page-ext")) +(custom-put 'metamail 'custom-loads '("metamail")) +(custom-put 'man 'custom-loads '("man")) +(custom-put 'makeinfo 'custom-loads '("makeinfo")) (custom-put 'lpr 'custom-loads '("lpr")) -(custom-put 'makeinfo 'custom-loads '("makeinfo")) -(custom-put 'man 'custom-loads '("man")) -(custom-put 'metamail 'custom-loads '("metamail")) -(custom-put 'pages 'custom-loads '("page-ext")) -(custom-put 'ps-print 'custom-loads '("ps-print")) -(custom-put 'ps-print-horizontal 'custom-loads '("ps-print")) -(custom-put 'ps-print-vertical 'custom-loads '("ps-print")) -(custom-put 'ps-print-header 'custom-loads '("ps-print")) -(custom-put 'ps-print-font 'custom-loads '("ps-print")) -(custom-put 'ps-print-color 'custom-loads '("ps-print")) -(custom-put 'ps-print-face 'custom-loads '("ps-print")) -(custom-put 'remote-compile 'custom-loads '("rcompile")) -(custom-put 'recent-files 'custom-loads '("recent-files")) -(custom-put 'recent-files-menu 'custom-loads '("recent-files")) -(custom-put 'save-place 'custom-loads '("saveplace")) -(custom-put 'supercite 'custom-loads '("supercite")) -(custom-put 'supercite-frames 'custom-loads '("supercite")) -(custom-put 'supercite-attr 'custom-loads '("supercite")) -(custom-put 'supercite-cite 'custom-loads '("supercite")) -(custom-put 'supercite-hooks 'custom-loads '("supercite")) -(custom-put 'texinfo-tex 'custom-loads '("texnfo-tex")) -(custom-put 'time-stamp 'custom-loads '("time-stamp")) -(custom-put 'copyright 'custom-loads '("upd-copyr")) +(custom-put 'ispell 'custom-loads '("ispell")) +(custom-put 'info 'custom-loads '("info")) +(custom-put 'hyper-apropos-faces 'custom-loads '("hyper-apropos")) +(custom-put 'hyper-apropos 'custom-loads '("hyper-apropos")) +(custom-put 'gopher 'custom-loads '("gopher")) +(custom-put 'gnuserv 'custom-loads '("gnuserv")) +(custom-put 'generic-sc 'custom-loads '("generic-sc")) +(custom-put 'fume 'custom-loads '("func-menu")) +(custom-put 'filladapt 'custom-loads '("filladapt")) +(custom-put 'feedmail 'custom-loads '("feedmail")) +(custom-put 'fast-lock 'custom-loads '("fast-lock")) +(custom-put 'etags 'custom-loads '("etags")) +(custom-put 'diff 'custom-loads '("diff")) +(custom-put 'desktop 'custom-loads '("desktop")) +(custom-put 'dabbrev 'custom-loads '("dabbrev")) +(custom-put 'completion 'custom-loads '("completion")) +(custom-put 'compilation 'custom-loads '("compile")) +(custom-put 'balloon-help 'custom-loads '("balloon-help")) +(custom-put 'avoid 'custom-loads '("avoid")) +(custom-put 'auto-save 'custom-loads '("auto-save")) +(custom-put 'change-log 'custom-loads '("add-log")) +(custom-put 'igrep 'custom-loads '("igrep"))
--- a/lisp/packages/pending-del.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/packages/pending-del.el Mon Aug 13 09:50:14 2007 +0200 @@ -4,7 +4,7 @@ ;; Author: Matthieu Devin <devin@lucid.com>, 14 Jul 92. ;; Maintainer: Hrvoje Niksic <hniksic@srce.hr> -;; Version 2.1 +;; Version 2.2 ;; This file is part of XEmacs. @@ -40,7 +40,11 @@ "Non-nil when Pending Delete mode is enabled. In Pending Delete mode, typed text replaces the selected region.") -(add-minor-mode 'pending-delete-mode " PenDel") +(defcustom pending-delete-modeline-string " PenDel" + "*String to display in the modeline when Pending Delete mode is active." + :type 'string) + +(add-minor-mode 'pending-delete-mode 'pending-delete-modeline-string) (defun pending-delete-active-region (&optional killp)
--- a/lisp/packages/tar-mode.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/packages/tar-mode.el Mon Aug 13 09:50:14 2007 +0200 @@ -1,14 +1,12 @@ ;;; tar-mode.el --- simple editing of tar files from GNU emacs -;; Keywords: unix + +;; Copyright (C) 1990-1993 Free Software Foundation, Inc. -;;; File: tar-mode.el -;;; Description: simple editing of tar files from GNU emacs -;;; Author: Jamie Zawinski <jwz@netscape.com> -;;; Created: 4 Apr 1990 -;;; Version: 1.31, 15 Dec 93 +;; Author: Jamie Zawinski <jwz@netscape.com> +;; Keywords: unix +;; Created: 4 Apr 1990 +;; Version: 1.31, 15 Dec 93 -;;; Copyright (C) 1990-1993 Free Software Foundation, Inc. -;;; ;; This file is part of XEmacs. ;; XEmacs is free software; you can redistribute it and/or modify it @@ -28,65 +26,69 @@ ;;; Synched up with: Not synched with FSF. -;;; This package attempts to make dealing with Unix 'tar' archives easier. -;;; When this code is loaded, visiting a file whose name ends in '.tar' will -;;; cause the contents of that archive file to be displayed in a Dired-like -;;; listing. It is then possible to use the customary Dired keybindings to -;;; extract sub-files from that archive, either by reading them into their own -;;; editor buffers, or by copying them directly to arbitrary files on disk. -;;; It is also possible to delete sub-files from within the tar file and write -;;; the modified archive back to disk, or to edit sub-files within the archive -;;; and re-insert the modified files into the archive. See the documentation -;;; string of tar-mode for more info. +;;; Commentary: + +;; This package attempts to make dealing with Unix 'tar' archives easier. +;; When this code is loaded, visiting a file whose name ends in '.tar' will +;; cause the contents of that archive file to be displayed in a Dired-like +;; listing. It is then possible to use the customary Dired keybindings to +;; extract sub-files from that archive, either by reading them into their own +;; editor buffers, or by copying them directly to arbitrary files on disk. +;; It is also possible to delete sub-files from within the tar file and write +;; the modified archive back to disk, or to edit sub-files within the archive +;; and re-insert the modified files into the archive. See the documentation +;; string of tar-mode for more info. -;;; To autoload, add this to your .emacs file: -;;; -;;; (setq auto-mode-alist (cons '("\\.tar$" . tar-mode) auto-mode-alist)) -;;; (autoload 'tar-mode "tar-mode") -;;; -;;; But beware: for certain tar files - those whose very first file has -;;; a -*- property line - autoloading won't work. See the function -;;; "tar-normal-mode" to understand why. +;; To autoload, add this to your .emacs file: +;; +;; (setq auto-mode-alist (cons '("\\.tar$" . tar-mode) auto-mode-alist)) +;; (autoload 'tar-mode "tar-mode") +;; +;; But beware: for certain tar files - those whose very first file has +;; a -*- property line - autoloading won't work. See the function +;; "tar-normal-mode" to understand why. -;;; This code now understands the extra fields that GNU tar adds to tar files. +;; This code now understands the extra fields that GNU tar adds to tar files. -;;; This interacts correctly with "uncompress.el" in the Emacs library, -;;; and with sufficiently recent versions of "crypt.el" by Kyle Jones. +;; This interacts correctly with "uncompress.el" in the Emacs library, +;; and with sufficiently recent versions of "crypt.el" by Kyle Jones. -;;; *************** TO DO *************** -;;; -;;; o There should be a command to extract the whole current buffer into files -;;; on disk (right now you have to do the subfiles one at a time.) -;;; -;;; o chmod should understand "a+x,og-w". -;;; -;;; o It's not possible to add a NEW file to a tar archive; not that -;;; important, but still... -;;; -;;; o The code is less efficient that it could be - in a lot of places, I -;;; pull a 512-character string out of the buffer and parse it, when I could -;;; be parsing it in place, not garbaging a string. Should redo that. -;;; -;;; o I'd like a command that searches for a string/regexp in every subfile -;;; of an archive, where <esc> would leave you in a subfile-edit buffer. -;;; (Like M-s in VM and M-r in the Zmacs mail reader.) -;;; -;;; o Sometimes (but not always) reverting the tar-file buffer does not -;;; re-grind the listing, and you are staring at the binary tar data. -;;; Typing 'g' again immediately after that will always revert and re-grind -;;; it, though. I have no idea why this happens. -;;; -;;; o If you edit a subfile, and selective-display gets set to t, then when -;;; we save the subfile, we should map ^M -> ^J. -;;; -;;; o Block files, sparse files, continuation files, and the various header -;;; types aren't editable. Actually I don't know that they work at all. -;;; If you know that they work, or know that they don't, please let me know. -;;; -;;; o Tar files inside of tar files don't work. -;;; -;;; o When using crypt-mode, you can't save a compressed or encrypted subfile -;;; of a tar file back into the tar file: it is saved uncompressed. +;; *************** TO DO *************** +;; +;; o There should be a command to extract the whole current buffer into files +;; on disk (right now you have to do the subfiles one at a time.) +;; +;; o chmod should understand "a+x,og-w". +;; +;; o It's not possible to add a NEW file to a tar archive; not that +;; important, but still... +;; +;; o The code is less efficient that it could be - in a lot of places, I +;; pull a 512-character string out of the buffer and parse it, when I could +;; be parsing it in place, not garbaging a string. Should redo that. +;; +;; o I'd like a command that searches for a string/regexp in every subfile +;; of an archive, where <esc> would leave you in a subfile-edit buffer. +;; (Like M-s in VM and M-r in the Zmacs mail reader.) +;; +;; o Sometimes (but not always) reverting the tar-file buffer does not +;; re-grind the listing, and you are staring at the binary tar data. +;; Typing 'g' again immediately after that will always revert and re-grind +;; it, though. I have no idea why this happens. +;; +;; o If you edit a subfile, and selective-display gets set to t, then when +;; we save the subfile, we should map ^M -> ^J. +;; +;; o Block files, sparse files, continuation files, and the various header +;; types aren't editable. Actually I don't know that they work at all. +;; If you know that they work, or know that they don't, please let me know. +;; +;; o Tar files inside of tar files don't work. +;; +;; o When using crypt-mode, you can't save a compressed or encrypted subfile +;; of a tar file back into the tar file: it is saved uncompressed. + +;;; Code: (defvar tar-anal-blocksize 20 "*The blocksize of tar files written by Emacs, or nil, meaning don't care. @@ -1404,3 +1406,5 @@ (fset 'set-auto-mode 'tar-set-auto-mode) (provide 'tar-mode) + +;;; tar-mode.el ends here
--- a/lisp/prim/about.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/prim/about.el Mon Aug 13 09:50:14 2007 +0200 @@ -64,6 +64,7 @@ (jareth "Jareth Hein" "jhod@po.iijnet.or.jp") (jens "Jens Lautenbacher" "jens@lemcbed.lem.uni-karlsruhe.de") (jwz "Jamie Zawinski" "jwz@netscape.com") + (kazz "IENAGA Kazuyuki" "ienaga@jsys.co.jp") (kyle "Kyle Jones" "kyle_jones@wonderworks.com") (larsi "Lars Magne Ingebrigtsen" "larsi@gnus.org") (mly "Richard Mlynarik" "mly@adoc.xerox.com") @@ -72,7 +73,7 @@ (piper "Andy Piper" "andy@parallax.co.uk") (shelton "Vin Shelton" "acs@acm.org") (sperber "Michael Sperber" "sperber@informatik.uni-tuebingen.de") - (steve "Steve Baur" "steve@xemacs.org") + (slb "SL Baur" "steve@xemacs.org") (stig "Jonathan Stigelman" "stig@hackvan.com") (thiessel "Marcus Thiessel" "thiessel@rhrk.uni-kl.de") (vladimir "Vladimir Ivanovic" "vladimir@mri.com") @@ -90,10 +91,10 @@ (cc-mode . "http://www.python.org/ftp/emacs/") (dmoore . "http://oj.egbt.org/dmoore/") (jwz . "http://www.netscape.com/people/jwz/") + (kazz . "http://www.imasy.or.jp/~kazz/") (kyle . "http://www.wonderworks.com/kyle/") (larsi . "http://www.ifi.uio.no/~larsi/") (shelton . "http://www.upa.org/") - (steve . "http://www.miranova.com/~steve/") (wget . "ftp://gnjilux.cc.fer.hr/pub/unix/util/wget/") (xemacs . "http://www.xemacs.org/")) "Some of the more important URLs.") @@ -247,7 +248,7 @@ :value who) (widget-insert (format " <%s>\n" address))))) ;; Setup persons responsible for this release. - (mapc 'setup-person '(steve mrb hniksic)) + (mapc 'setup-person '(slb mrb hniksic)) (widget-insert "\n\t* ") (let ((widget-link-prefix "") (widget-link-suffix "")) (widget-create 'link :help-echo "A legion of XEmacs hackers" @@ -542,19 +543,19 @@ ;; here. (defun about-maintainer-info (entry) (ecase (car entry) - (steve + (slb (widget-insert "\ -Steve took over the maintenance of XEmacs in November of 1996 (it -seemed like a good idea at the time ...). In real life he is a -network administrator and Unix systems programmer for Miranova -Systems, Inc. +I took over the maintenance of XEmacs in November of 1996 (it +seemed like a good idea at the time ...). In real life I am a +network administrator and Unix systems programmer for Calag.com, +Inc. a small, but growing ISP in California. -Steve's main contributions to XEmacs have been reviving the FAQ, +My main contributions to XEmacs have been reviving the FAQ, testing and integrating patches, tracking down and fixing bugs, and answering hundreds of questions on Usenet. -Steve has a home page at ") - (about-url-link 'steve "Visit Steve's home page") +Is that my picture? I believe I already answered that in +xemacs-beta-discuss ...") (widget-insert ".\n")) (mrb (widget-insert "\ @@ -727,7 +728,7 @@ (widget-insert ".\n")) (jens (widget-insert "\ -Jens did the artwork for graphics added to XEmacs 20.1 and 19.15. +Jens did the artwork for graphics added to XEmacs 20.2 and 19.15. I'm currently working at the University of Karlsruhe, Germany on getting my diploma thesis on Supersymmetry (uuh, that's physics) done. @@ -813,7 +814,22 @@ restaurants with friends, and has, in the past, involved dyeing his hair various colours (see ") (about-url-link 'ajc "Visit Andrew's home page") - (widget-insert ".\n")))) + (widget-insert ".\n")) + (kazz + (widget-insert "\ +Kazz is the XEmacs lead on BSD (especially FreeBSD). +His main workspace is, probably, the latest stable version of +FreeBSD and it makes him comfortable and not. +His *mission* is to make XEmacs runs on FreeBSD without +any problem. + +In real life, he is working on a PDM product based on CORBA, +and doing consultation, design and implemention. +He loves to play soccer, yes football! +See also:") + (about-url-link 'kazz "Visit Kazz's home page") + (widget-insert ".\n")) +)) ;; Setup the buffer for a maintainer. (defun about-maintainer (widget &optional event) @@ -961,6 +977,9 @@ Some of this currently involves doing an A-Z (by country) of restaurants with friends, and has, in the past, involved dyeing his hair various colours.\n") + (about-show-linked-info 'kazz "\ +IENAGA Kazuyuki is the XEmacs technical lead on BSD, particularly +FreeBSD.\n") (flet ((print-short (name addr &optional shortinfo) (concat (about-with-face name 'italic) (about-tabs name) @@ -1095,9 +1114,8 @@ (print-short "Shane Holder" "holder@rsn.hp.com") (print-short "David Hughes" "djh@harston.cv.com") (print-short "Tatsuya Ichikawa" "ichikawa@hv.epson.co.jp") - (print-short "Kazuyuki IENAGA" "ienaga@jsys.co.jp") (print-short "Andrew Innes" "andrewi@harlequin.co.uk") - (print-short "Andreas Jaeger" "aj@arthur.pfalz.de") + (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")
--- a/lisp/prim/files.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/prim/files.el Mon Aug 13 09:50:14 2007 +0200 @@ -1203,6 +1203,7 @@ ("^/tmp/fol/" . text-mode) ("\\.y\\'" . c-mode) ("\\.lex\\'" . c-mode) + ("\\.m\\'" . objc-mode) ("\\.oak\\'" . scheme-mode) ("\\.s?html?\\'" . html-mode) ("\\.htm?l?3\\'" . html3-mode)
--- a/lisp/prim/make-docfile.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/prim/make-docfile.el Mon Aug 13 09:50:14 2007 +0200 @@ -103,14 +103,17 @@ (setq dumped-lisp-packages (append dumped-lisp-packages packages-hardcoded-lisp)) (while dumped-lisp-packages - (let ((arg (packages-add-suffix (car dumped-lisp-packages)))) - (setq arg (locate-library arg)) - (if (null (member arg processed)) - (progn - (if (and (null docfile-out-of-date) - (file-newer-than-file-p arg docfile)) - (setq docfile-out-of-date t)) - (setq processed (cons arg processed)))) + (let ((arg0 (packages-add-suffix (car dumped-lisp-packages))) + arg) + (setq arg (locate-library arg0)) + (if (null arg) + (princ (format "Error: dumped file %s does not exist\n" arg)) + (if (null (member arg processed)) + (progn + (if (and (null docfile-out-of-date) + (file-newer-than-file-p arg docfile)) + (setq docfile-out-of-date t)) + (setq processed (cons arg processed))))) (setq dumped-lisp-packages (cdr dumped-lisp-packages))))) ;; Finally process the list of site-loaded files.
--- a/lisp/prim/menubar.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/prim/menubar.el Mon Aug 13 09:50:14 2007 +0200 @@ -66,9 +66,9 @@ (setq menu (cdr menu))) (let (menuitem item) (while (keywordp (setq item (car menu))) - (or (memq item '(:config :included :filter)) + (or (memq item '(:config :included :filter :accelerator)) (signal 'error - (list "menu keyword must be :config, :included, or :filter" + (list "menu keyword must be :config, :included, :accelerator or :filter" item))) (if (or (not (cdr menu)) (vectorp (nth 1 menu)) @@ -133,7 +133,8 @@ (while (< i L) (setq item (aref menuitem i)) (cond ((not (memq item '(:active :suffix :keys :style - :full :included :selected))) + :full :included :selected + :accelerator))) (signal 'error (list (if (keywordp item) "unknown menu item keyword" @@ -491,5 +492,22 @@ (funcall (event-function response) (event-object response)))))) +;; provide default bindings for menu accelerator map +(and (boundp 'menu-accelerator-map) + (keymapp menu-accelerator-map) + (progn + (define-key menu-accelerator-map "\e" 'menu-escape) + (define-key menu-accelerator-map [left] 'menu-left) + (define-key menu-accelerator-map [right] 'menu-right) + (define-key menu-accelerator-map [up] 'menu-up) + (define-key menu-accelerator-map [down] 'menu-down) + (define-key menu-accelerator-map [return] 'menu-select) + (define-key menu-accelerator-map [kp_down] 'menu-down) + (define-key menu-accelerator-map [kp_up] 'menu-down) + (define-key menu-accelerator-map [kp_left] 'menu-left) + (define-key menu-accelerator-map [kp_right] 'menu-right) + (define-key menu-accelerator-map [kp_enter] 'menu-select) + (define-key menu-accelerator-map "\C-g" 'menu-quit))) + (provide 'menubar)
--- a/lisp/prim/modeline.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/prim/modeline.el Mon Aug 13 09:50:14 2007 +0200 @@ -265,15 +265,15 @@ "Add a minor mode to `minor-mode-alist' and `minor-mode-map-alist'. TOGGLE is a symbol whose value as a variable specifies whether the minor mode is active. NAME is the name that should appear in the -modeline (it should be a string beginning with a space). KEYMAP is a -keymap to make active when the minor mode is active. AFTER is the -toggling symbol used for another minor mode. If AFTER is non-nil, -then it is used to position the new mode in the minor-mode alists. -TOGGLE-FUN specifies an interactive function that is called to toggle -the mode on and off; this affects what happens when button2 is pressed -on the mode, and when button3 is pressed somewhere in the list of -modes. If TOGGLE-FUN is nil and TOGGLE names an interactive function, -TOGGLE is used as the toggle function. +modeline (it should either be a string beginning with a space or a +symbol). KEYMAP is a keymap to make active when the minor mode is +active. AFTER is the toggling symbol used for another minor mode. If +AFTER is non-nil, then it is used to position the new mode in the +minor-mode alists. TOGGLE-FUN specifies an interactive function that +is called to toggle the mode on and off; this affects what happens +when button2 is pressed on the mode, and when button3 is pressed +somewhere in the list of modes. If TOGGLE-FUN is nil and TOGGLE names +an interactive function, TOGGLE is used as the toggle function. Example: (add-minor-mode 'view-minor-mode \" View\" view-mode-map)" (let (el place
--- a/lisp/tm/tm-mh-e.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/tm/tm-mh-e.el Mon Aug 13 09:50:14 2007 +0200 @@ -6,7 +6,7 @@ ;; OKABE Yasuo <okabe@kudpc.kyoto-u.ac.jp> ;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp> ;; Created: 1993/11/21 (obsolete mh-e-mime.el) -;; Version: $Revision: 1.1.1.2 $ +;; Version: $Revision: 1.2 $ ;; Keywords: mail, MH, MIME, multimedia, encoded-word, multilingual ;; This file is part of tm (Tools for MIME). @@ -48,7 +48,7 @@ ;;; (defconst tm-mh-e/RCS-ID - "$Id: tm-mh-e.el,v 1.1.1.2 1996/12/21 20:50:46 steve Exp $") + "$Id: tm-mh-e.el,v 1.2 1997/07/19 22:11:28 steve Exp $") (defconst tm-mh-e/version (get-version-string tm-mh-e/RCS-ID)) @@ -73,20 +73,26 @@ ;; Display message NUMBER of FOLDER. ;; Sets the current buffer to the show buffer. (set-buffer folder) - (or show-buffer - (setq show-buffer mh-show-buffer)) ;; Bind variables in folder buffer in case they are local - (let ((msg-filename (mh-msg-filename msg-num))) + (let ((formfile mhl-formfile) + (clean-message-header mh-clean-message-header) + (invisible-headers mh-invisible-headers) + (visible-headers mh-visible-headers) + (msg-filename (mh-msg-filename msg-num)) + (show-buffer mh-show-buffer) + ) (if (not (file-exists-p msg-filename)) (error "Message %d does not exist" msg-num)) (set-buffer show-buffer) (cond ((not (equal msg-filename buffer-file-name)) ;; Buffer does not yet contain message. - (clear-visited-file-modtime) - (unlock-buffer) - (setq buffer-file-name nil) ; no locking during setup + (mh-unvisit-file) (setq buffer-read-only nil) (erase-buffer) + ;; Changing contents, so this hook needs to be reinitialized. + ;; pgp.el uses this. + (if (boundp 'write-contents-hooks) ;Emacs 19 + (setq write-contents-hooks nil)) (if mode (let* ((aname (concat "article-" folder)) (abuf (get-buffer aname)) @@ -114,18 +120,21 @@ (mime/viewer-mode nil nil nil aname (concat "show-" folder)) (goto-char (point-min)) + (let ( (buffer-read-only nil) ) + (cond (clean-message-header + (mh-clean-msg-header (point-min) + invisible-headers + visible-headers) + (goto-char (point-min))) + (t + (mh-start-of-uncleaned-message)))) + (goto-char (point-min)) ) - (let ((clean-message-header mh-clean-message-header) - (invisible-headers mh-invisible-headers) - (visible-headers mh-visible-headers) - ) - ;; 1995/9/21 - ;; modified by ARIURA <ariura@cc.tuat.ac.jp> - ;; to support mhl. - (if mhl-formfile + (progn + (if formfile (mh-exec-lib-cmd-output "mhl" "-nobell" "-noclear" - (if (stringp mhl-formfile) - (list "-form" mhl-formfile)) + (if (stringp formfile) + (list "-form" formfile)) msg-filename) (insert-file-contents msg-filename)) ;; end @@ -145,11 +154,14 @@ (setq buffer-file-name msg-filename) (mh-show-mode) )) + (set-buffer-modified-p nil) (or (eq buffer-undo-list t) ;don't save undo info for prev msgs (setq buffer-undo-list nil)) -;;; Added by itokon (02/19/96) + (set-buffer-auto-saved) + ;; the parts of set-visited-file-name we want to do (no locking) (setq buffer-file-name msg-filename) -;;; + (setq buffer-backed-up nil) + (auto-save-mode 1) (set-mark nil) (setq mode-line-buffer-identification (list (format mh-show-buffer-mode-line-buffer-id
--- a/lisp/utils/auto-autoloads.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/utils/auto-autoloads.el Mon Aug 13 09:50:14 2007 +0200 @@ -224,6 +224,16 @@ ;;;*** +;;;### (autoloads (config-value config-value-hash-table) "config" "utils/config.el") + +(autoload 'config-value-hash-table "config" "\ +Returns hashtable of configuration parameters and their values." nil nil) + +(autoload 'config-value "config" "\ +Return the value of the configuration parameter CONFIG_SYMBOL." nil nil) + +;;;*** + ;;;### (autoloads (docref-setup) "docref" "utils/docref.el") (autoload 'docref-setup "docref" "\ @@ -803,7 +813,7 @@ (autoload 'ringp "ring" "\ Returns t if X is a ring; nil otherwise." nil nil) -(define-obsolete-function-alias 'ring-p 'ringp) +(define-compatible-function-alias 'ring-p 'ringp) (autoload 'make-ring "ring" "\ Make a ring that can contain SIZE elements." nil nil)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/utils/config.el Mon Aug 13 09:50:14 2007 +0200 @@ -0,0 +1,62 @@ +;;; config.el --- access configuration parameters + +;; Copyright (C) 1997 Sun Microsystems, Inc. + +;; Author: Martin Buchholz +;; Keywords: configure + +;; This file is part of XEmacs. + +;; 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. + +;; 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 XEmacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Synched up with: not in FSF. + +;;; Commentary: + +;;; Code: + + +(defvar config-value-file (expand-file-name "config.values" exec-directory) + "File containing configuration parameters and their values.") + +(defvar config-value-hash-table nil + "Hashtable to store configuration parameters and their values.") + +;;;###autoload +(defun config-value-hash-table () + "Returns hashtable of configuration parameters and their values." + (when (null config-value-hash-table) + (setq config-value-hash-table (make-hashtable 300)) + (save-excursion + (let ((buf (get-buffer-create " *Config*"))) + (set-buffer buf) + (erase-buffer) + (insert-file-contents config-value-file) + (goto-char (point-min)) + (condition-case nil + (while t + (puthash (read buf) (read buf) config-value-hash-table)) + (end-of-file nil))) + (kill-buffer " *Config*"))) + config-value-hash-table) + +;;;###autoload +(defun config-value (config-symbol) + "Return the value of the configuration parameter CONFIG_SYMBOL." + (gethash config-symbol (config-value-hash-table))) + +(provide 'config) +;;; config.el ends here
--- a/lisp/utils/crontab.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/utils/crontab.el Mon Aug 13 09:50:14 2007 +0200 @@ -97,7 +97,7 @@ ;; What if crontab returns a fatal ?????? Can't we check the errorlevel ???? (goto-char (point-min)) - (if (search-forward "crontab:" nil t nil) + (if (search-forward-regexp "crontab:\\|no crontab for" nil t nil) (erase-buffer)) (if (eobp) (crontab-initialize))
--- a/lisp/utils/ring.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/utils/ring.el Mon Aug 13 09:50:14 2007 +0200 @@ -52,7 +52,7 @@ ;; XEmacs change ;;;###autoload -(define-obsolete-function-alias 'ring-p 'ringp) +(define-compatible-function-alias 'ring-p 'ringp) ;;;###autoload (defun make-ring (size)
--- a/lisp/viper/auto-autoloads.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/viper/auto-autoloads.el Mon Aug 13 09:50:14 2007 +0200 @@ -1,6 +1,9 @@ ;;; DO NOT MODIFY THIS FILE (if (not (featurep 'viper-autoloads)) (progn + +(provide 'viper-autoloads) +)) ;;;### (autoloads (viper-mode) "viper" "viper/viper.el") @@ -10,6 +13,3 @@ Turn on Viper emulation of Vi." t nil) ;;;*** - -(provide 'viper-autoloads) -))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/viper/custom-load.el Mon Aug 13 09:50:14 2007 +0200 @@ -0,0 +1,3 @@ +(custom-put 'viper 'custom-loads '("viper-cmd" "viper-ex" "viper-init" "viper-keym" "viper-macs" "viper-mous" "viper-util")) +(custom-put 'viper-mouse 'custom-loads '("viper-mous")) +(custom-put 'viper-ex 'custom-loads '("viper-ex"))
--- a/lisp/viper/viper-cmd.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/viper/viper-cmd.el Mon Aug 13 09:50:14 2007 +0200 @@ -13,7 +13,8 @@ (defvar vip-minibuffer-vi-face) (defvar vip-minibuffer-emacs-face) (defvar viper-always) -(defvar vip-mode-string ) +(defvar vip-mode-string) +(defvar vip-custom-file-name) (defvar iso-accents-mode) (defvar zmacs-region-stays) (defvar mark-even-if-inactive) @@ -77,14 +78,15 @@ (defconst vip-movement-commands '(?b ?B ?e ?E ?f ?F ?G ?h ?H ?j ?k ?l ?H ?M ?L ?n ?t ?T ?w ?W ?$ ?% ?^ ?( ?) ?- ?+ ?| ?{ ?} ?[ ?] ?' ?` - ?; ?, ?0 ?? ?/ + ?; ?, ?0 ?? ?/ ?\C-m ?\ ) "Movement commands") ;; define vip-movement-command-p (vip-test-com-defun vip-movement-command) -(defconst vip-digit-commands '(?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9) - "Digit commands") +;; Vi digit commands +(defconst vip-digit-commands '(?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9)) + ;; define vip-digit-command-p (vip-test-com-defun vip-digit-command) @@ -765,7 +767,7 @@ (defun vip-toggle-key-action () "Action bound to `vip-toggle-key'." (interactive) - (if (and (< vip-expert-level 2) (equal vip-toggle-key "\C-z")) + (if (and (< viper-expert-level 2) (equal vip-toggle-key "\C-z")) (if (vip-window-display-p) (vip-iconify) (suspend-emacs)) @@ -1358,8 +1360,10 @@ (setq vip-last-insertion (nth 4 vip-d-com) vip-d-char (nth 4 vip-d-com))) (funcall m-com (cons val com)) - (if (and vip-keep-point-on-repeat (< save-point (point))) - (goto-char save-point)) ; go back to before repeat. + (cond ((and (< save-point (point)) vip-keep-point-on-repeat) + (goto-char save-point)) ; go back to before repeat. + ((and (< save-point (point)) vip-ex-style-editing-in-insert) + (or (bolp) (backward-char 1)))) (if (and (eolp) (not (bolp))) (backward-char 1)) )) @@ -2983,9 +2987,9 @@ (defun vip-toggle-parse-sexp-ignore-comments () (interactive) (setq vip-parse-sexp-ignore-comments (not vip-parse-sexp-ignore-comments)) - (prin1 (format "`%%' will %signore parentheses inside the comments" - (if vip-parse-sexp-ignore-comments "" "NOT "))) - ) + (princ (format + "From now on, `%%' will %signore parentheses inside comment fields" + (if vip-parse-sexp-ignore-comments "" "NOT ")))) ;; sentence ,paragraph and heading @@ -3180,9 +3184,9 @@ (setq msg "Search becomes vanilla-style"))) (t (setq msg "Search style remains unchanged"))) - (prin1 msg t))) - -(defun vip-set-vi-search-style-macros (unset) + (princ msg t))) + +(defun vip-set-searchstyle-toggling-macros (unset) "Set the macros for toggling the search style in Viper's vi-state. The macro that toggles case sensitivity is bound to `//', and the one that toggles regexp search is bound to `///'. @@ -3203,12 +3207,33 @@ 't) (if (interactive-p) (message - "// and /// now toggle case-sensitivity and regexp search."))) + "// and /// now toggle case-sensitivity and regexp search"))) (vip-unrecord-kbd-macro "//" 'vi-state) (sit-for 2) (vip-unrecord-kbd-macro "///" 'vi-state)))) -(defun vip-set-emacs-search-style-macros (unset &optional arg-majormode) + +(defun vip-set-parsing-style-toggling-macro (unset) + "Set `%%%' to be a macro that toggles whether comment fields should be parsed for matching parentheses. +This is used in conjunction with the `%' command. + +With a prefix argument, unsets the macro." + (interactive "P") + (or noninteractive + (if (not unset) + (progn + ;; Make %%% toggle parsing comments for matching parentheses + (vip-record-kbd-macro + "%%%" 'vi-state + [(meta x) v i p - t o g g l e - p a r s e - s e x p - i g n o r e - c o m m e n t s return] + 't) + (if (interactive-p) + (message + "%%%%%% now toggles whether comments should be parsed for matching parentheses"))) + (vip-unrecord-kbd-macro "%%%" 'vi-state)))) + + +(defun vip-set-emacs-state-searchstyle-macros (unset &optional arg-majormode) "Set the macros for toggling the search style in Viper's emacs-state. The macro that toggles case sensitivity is bound to `//', and the one that toggles regexp search is bound to `///'. @@ -3456,7 +3481,7 @@ (error "Buffer not killed")))) -(defvar vip-smart-suffix-list +(defcustom vip-smart-suffix-list '("" "tex" "c" "cc" "C" "el" "java" "html" "htm" "pl" "P" "p") "*List of suffixes that Viper automatically tries to append to filenames ending with a `.'. This is useful when you the current directory contains files with the same @@ -3469,7 +3494,9 @@ corresponding file exists is selected. If no file exists for any of the suffixes, the user is asked to confirm. -To turn this feature off, set this variable to nil.") +To turn this feature off, set this variable to nil." + :type '(set string) + :group 'viper) ;; Try to add suffix to files ending with a `.' ;; Useful when the user hits RET on a non-completed file name. @@ -3702,7 +3729,13 @@ (progn (forward-line 1) (delete-region (point) (1- (point))) - (fixup-whitespace))))))) + (fixup-whitespace) + ;; fixup-whitespace sometimes does not leave space + ;; between objects, so we insert it as in Vi + (or (looking-at " ") + (insert " ") + (backward-char 1)) + )))))) ;; Replace state @@ -4131,7 +4164,7 @@ (pop-mark))) -(defun vip-set-expert-level (&optional dont-change-unless) +(defun viper-set-expert-level (&optional dont-change-unless) "Sets the expert level for a Viper user. Can be called interactively to change (temporarily or permanently) the current expert level. @@ -4145,11 +4178,11 @@ (interactive) - (if (not (natnump vip-expert-level)) (setq vip-expert-level 0)) + (if (not (natnump viper-expert-level)) (setq viper-expert-level 0)) (save-window-excursion (delete-other-windows) - ;; if 0 < vip-expert-level < vip-max-expert-level + ;; if 0 < viper-expert-level < viper-max-expert-level ;; & dont-change-unless = t -- use it; else ask (vip-ask-level dont-change-unless)) @@ -4158,7 +4191,7 @@ vip-ex-style-editing-in-insert t vip-want-ctl-h-help nil) - (cond ((eq vip-expert-level 1) ; novice or beginner + (cond ((eq viper-expert-level 1) ; novice or beginner (global-set-key ; in emacs-state vip-toggle-key (if (vip-window-display-p) 'vip-iconify 'suspend-emacs)) @@ -4170,68 +4203,60 @@ vip-want-emacs-keys-in-vi nil vip-want-emacs-keys-in-insert nil)) - ((and (> vip-expert-level 1) (< vip-expert-level 5)) + ((and (> viper-expert-level 1) (< viper-expert-level 5)) ;; intermediate to guru (setq vip-no-multiple-ESC (if (vip-window-display-p) t 'twice) vip-electric-mode t vip-want-emacs-keys-in-vi t - vip-want-emacs-keys-in-insert (> vip-expert-level 2)) - - (if (eq vip-expert-level 4) ; respect user's ex-style motion + vip-want-emacs-keys-in-insert (> viper-expert-level 2)) + + (if (eq viper-expert-level 4) ; respect user's ex-style motion ; and vip-no-multiple-ESC (progn - (setq-default vip-ex-style-editing-in-insert - (cdr (assoc 'vip-ex-style-editing-in-insert - vip-saved-user-settings)) - vip-ex-style-motion - (cdr (assoc 'vip-ex-style-motion - vip-saved-user-settings))) + (setq-default + vip-ex-style-editing-in-insert + (viper-standard-value 'vip-ex-style-editing-in-insert) + vip-ex-style-motion + (viper-standard-value 'vip-ex-style-motion)) (setq vip-ex-style-motion - (cdr (assoc 'vip-ex-style-motion vip-saved-user-settings)) + (viper-standard-value 'vip-ex-style-motion) vip-ex-style-editing-in-insert - (cdr (assoc 'vip-ex-style-editing-in-insert - vip-saved-user-settings)) + (viper-standard-value 'vip-ex-style-editing-in-insert) vip-re-search - (cdr (assoc 'vip-re-search vip-saved-user-settings)) + (viper-standard-value 'vip-re-search) vip-no-multiple-ESC - (cdr (assoc 'vip-no-multiple-ESC - vip-saved-user-settings)))))) - + (viper-standard-value 'vip-no-multiple-ESC))))) + ;; A wizard!! ;; Ideally, if 5 is selected, a buffer should pop up to let the ;; user toggle the values of variables. (t (setq-default vip-ex-style-editing-in-insert - (cdr (assoc 'vip-ex-style-editing-in-insert - vip-saved-user-settings)) + (viper-standard-value 'vip-ex-style-editing-in-insert) vip-ex-style-motion - (cdr (assoc 'vip-ex-style-motion - vip-saved-user-settings))) + (viper-standard-value 'vip-ex-style-motion)) (setq vip-want-ctl-h-help - (cdr (assoc 'vip-want-ctl-h-help vip-saved-user-settings)) + (viper-standard-value 'vip-want-ctl-h-help) viper-always - (cdr (assoc 'viper-always vip-saved-user-settings)) + (viper-standard-value 'viper-always) vip-no-multiple-ESC - (cdr (assoc 'vip-no-multiple-ESC vip-saved-user-settings)) + (viper-standard-value 'vip-no-multiple-ESC) vip-ex-style-motion - (cdr (assoc 'vip-ex-style-motion vip-saved-user-settings)) + (viper-standard-value 'vip-ex-style-motion) vip-ex-style-editing-in-insert - (cdr (assoc 'vip-ex-style-editing-in-insert - vip-saved-user-settings)) + (viper-standard-value 'vip-ex-style-editing-in-insert) vip-re-search - (cdr (assoc 'vip-re-search vip-saved-user-settings)) + (viper-standard-value 'vip-re-search) vip-electric-mode - (cdr (assoc 'vip-electric-mode - vip-saved-user-settings)) + (viper-standard-value 'vip-electric-mode) vip-want-emacs-keys-in-vi - (cdr (assoc 'vip-want-emacs-keys-in-vi - vip-saved-user-settings)) + (viper-standard-value 'vip-want-emacs-keys-in-vi) vip-want-emacs-keys-in-insert - (cdr (assoc 'vip-want-emacs-keys-in-insert - vip-saved-user-settings))))) + (viper-standard-value 'vip-want-emacs-keys-in-insert)))) + (vip-set-mode-vars-for vip-current-state) (if (or viper-always - (and (> vip-expert-level 0) (> 5 vip-expert-level))) + (and (> viper-expert-level 0) (> 5 viper-expert-level))) (vip-set-hooks))) ;; Ask user expert level. @@ -4241,48 +4266,8 @@ (save-window-excursion (switch-to-buffer ask-buffer) - (or (eq this-command 'vip-set-expert-level) - (and - (<= vip-expert-level vip-max-expert-level) - (>= vip-expert-level 1)) - (progn - (insert " - - *** Important Notice for VIP users*** - - This is VIPER - -@joke -Viper Is a Package for Emacs Rebels, -a VI Plan for Emacs Rescue, -and a venomous VI PERil. -@end joke - -Technically speaking, Viper is a new Vi emulator that replaces -the old VIP package. - -Viper emulates Vi much better than VIP. It also significantly -extends and improves upon Vi in many useful ways. - -Although many VIP settings in your ~/.vip are compatible with Viper, -you may have to change some of them. Please refer to the documentation, -which can be obtained by executing - -:help - -when Viper is in Vi state. - -If you will be so lucky as to find a bug, report it via the command - -:submitReport - -Type any key to continue... ") - - (read-char) - (erase-buffer))) - - (while (or (> vip-expert-level vip-max-expert-level) - (< vip-expert-level 1) + (while (or (> viper-expert-level viper-max-expert-level) + (< viper-expert-level 1) (null dont-change-unless)) (erase-buffer) (if repeated @@ -4295,7 +4280,7 @@ (insert " Please specify your level of familiarity with the venomous VI PERil (and the VI Plan for Emacs Rescue). -You can change it at any time by typing `M-x vip-set-expert-level RET' +You can change it at any time by typing `M-x viper-set-expert-level RET' 1 -- BEGINNER: Almost all Emacs features are suppressed. Feels almost like straight Vi. File name completion and @@ -4315,7 +4300,7 @@ Please, specify your level now: ") - (setq vip-expert-level (- (vip-read-char-exclusive) ?0)) + (setq viper-expert-level (- (vip-read-char-exclusive) ?0)) ) ; end while ;; tell the user if level was changed @@ -4323,12 +4308,12 @@ (progn (insert (format "\n\n\n\n\n\t\tYou have selected user level %d" - vip-expert-level)) + viper-expert-level)) (if (y-or-n-p "Do you wish to make this change permanent? ") - ;; save the setting for vip-expert-level + ;; save the setting for viper-expert-level (vip-save-setting - 'vip-expert-level - (format "Saving user level %d ..." vip-expert-level) + 'viper-expert-level + (format "Saving user level %d ..." viper-expert-level) vip-custom-file-name)) )) (bury-buffer) ; remove ask-buffer from screen @@ -4368,7 +4353,7 @@ (defun vip-save-kill-buffer () "Save then kill current buffer. " (interactive) - (if (< vip-expert-level 2) + (if (< viper-expert-level 2) (save-buffers-kill-emacs) (save-buffer) (kill-buffer (current-buffer)))) @@ -4442,7 +4427,7 @@ 'vip-emacs-state-hook 'ex-cycle-other-window 'ex-cycle-through-non-files - 'vip-expert-level + 'viper-expert-level 'major-mode 'vip-device-type 'color-display-p
--- a/lisp/viper/viper-ex.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/viper/viper-ex.el Mon Aug 13 09:50:14 2007 +0200 @@ -31,7 +31,7 @@ (defvar vip-ex-history) (defvar vip-related-files-and-buffers-ring) (defvar vip-local-search-start-marker) -(defvar vip-expert-level) +(defvar viper-expert-level) (defvar vip-custom-file-name) (defvar vip-case-fold-search) (defvar explicit-shell-file-name) @@ -52,6 +52,12 @@ (require 'viper-util) +(defgroup viper-ex nil + "Viper support for Ex commands" + :prefix "ex-" + :group 'viper) + + ;;; Variables @@ -112,10 +118,9 @@ ;; Value of ex count. (defvar ex-count nil) -;; Flag for global command. +;; Flag indicating that :global Ex command is being executed. (defvar ex-g-flag nil) - -;; If t, global command is executed on lines not matching ex-g-pat. +;; Flag indicating that :vglobal Ex command is being executed. (defvar ex-g-variant nil) ;; Save reg-exp used in substitute. @@ -128,8 +133,7 @@ ;; Pattern for global command. (defvar ex-g-pat nil) - -(defvar ex-unix-type-shell +(defcustom ex-unix-type-shell (let ((case-fold-search t)) (and (stringp shell-file-name) (string-match @@ -146,9 +150,11 @@ "bash$\\|bash.exe$" "\\)") shell-file-name))) - "Is the user using a unix-type shell?") + "Is the user using a unix-type shell under a non-OS?" + :type 'string + :group 'viper-ex) -(defvar ex-unix-type-shell-options +(defcustom ex-unix-type-shell-options (let ((case-fold-search t)) (if ex-unix-type-shell (cond ((string-match "\\(csh$\\|csh.exe$\\)" shell-file-name) @@ -157,7 +163,9 @@ "-noprofile") ; bash: ignore .profile ))) "Options to pass to the Unix-style shell. -Don't put `-c' here, as it is added automatically.") +Don't put `-c' here, as it is added automatically." + :type 'string + :group 'viper-ex) (defvar ex-nontrivial-find-file-function (cond (ex-unix-type-shell 'vip-ex-nontrivial-find-file-unix) @@ -190,13 +198,17 @@ ;; multiple file names. Used for :edit and :next (defvar vip-keep-reading-filename nil) -(defconst ex-cycle-other-window t +(defcustom ex-cycle-other-window t "*If t, :n and :b cycles through files and buffers in other window. Then :N and :B cycles in the current window. If nil, this behavior is -reversed.") +reversed." + :type 'boolean + :group 'viper-ex) -(defconst ex-cycle-through-non-files nil - "*Cycle through *scratch* and other buffers that don't visit any file.") +(defcustom ex-cycle-through-non-files nil + "*Cycle through *scratch* and other buffers that don't visit any file." + :type 'boolean + :group 'viper-ex) ;; Last shell command executed with :! command. (defvar vip-ex-last-shell-com nil) @@ -427,7 +439,7 @@ "*[ \t]*$")) (stay-regex (concat "\\(" "^[ \t]*$" - "\\|" "[?/].*[?/].*" + "\\|" "[?/].*" "\\|" "[ktgjmsz][ \t]*$" "\\|" "^[ \t]*ab.*" "\\|" "tr[ansfer \t]*" @@ -503,7 +515,6 @@ ;; Read Ex commands -;; Ex commands themselves are implemented in viper-ex.el (defun vip-ex (&optional string) (interactive) (or string @@ -613,7 +624,15 @@ (setq ex-token (if (= (mark t) (point)) "" (buffer-substring (1- (point)) (mark t)))) - (backward-char 1)) + (backward-char 1) + ;; if the user doesn't specify the final pattern delimiter, we're + ;; at newline now. In this case, insert the initial delimiter + ;; specified in variable c + (if (looking-at "\n") + (progn + (insert c) + (backward-char 1))) + ) (setq ex-token nil)) c))) @@ -1233,6 +1252,14 @@ ;; Ex global command +;; This is executed in response to: +;; :global "pattern" ex-command +;; :vglobal "pattern" ex-command +;; :global executes ex-command on all lines matching <pattern> +;; :vglobal executes ex-command on all lines that don't match <pattern> +;; +;; With VARIANT nil, this functions executes :global +;; With VARIANT t, executes :vglobal (defun ex-global (variant) (let ((gcommand ex-token)) (if (or ex-g-flag ex-g-variant) @@ -1255,8 +1282,11 @@ (if (null ex-addresses) (setq ex-addresses (list (point-max) (point-min))) (vip-default-ex-addresses)) - (let ((marks nil) (mark-count 0) - com-str (end (car ex-addresses)) (beg (car (cdr ex-addresses)))) + (let ((marks nil) + (mark-count 0) + (end (car ex-addresses)) + (beg (car (cdr ex-addresses))) + com-str) (if (> beg end) (error vip-FirstAddrExceedsSecond)) (save-excursion (vip-enlarge-region beg end) @@ -1492,7 +1522,7 @@ (setq vip-ex-work-buf (get-buffer-create vip-ex-work-buf-name)) (set-buffer vip-ex-work-buf) (if (looking-at "!") (forward-char 1))) - (if (< vip-expert-level 3) + (if (< viper-expert-level 3) (save-buffers-kill-emacs) (kill-buffer (current-buffer)))) @@ -1984,7 +2014,7 @@ (not writing-same-file) (set-buffer-modified-p t)) (if q-flag - (if (< vip-expert-level 2) + (if (< viper-expert-level 2) (save-buffers-kill-emacs) (kill-buffer (current-buffer)))) )))
--- a/lisp/viper/viper-init.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/viper/viper-init.el Mon Aug 13 09:50:14 2007 +0200 @@ -26,6 +26,8 @@ ;; compiler pacifier (defvar mark-even-if-inactive) (defvar viper-version) +(defvar viper-expert-level) +(defvar vip-expert-level) ;; end pacifier @@ -48,15 +50,24 @@ (defun vip-window-display-p () (and (vip-device-type) (not (memq (vip-device-type) '(tty stream pc))))) -(defvar vip-ms-style-os-p (memq system-type '(ms-dos windows-nt windows-95)) - "Tells if Emacs is running under an MS-style OS: ms-dos, windows-nt, W95.") -(defvar vip-vms-os-p (memq system-type '(vax-vms axp-vms)) - "Tells if Emacs is running under VMS.") +(defcustom vip-ms-style-os-p (memq system-type '(ms-dos windows-nt windows-95)) + "Tells if Emacs is running under an MS-style OS: ms-dos, windows-nt, W95." + :type 'boolean + :tag "Is it Microsoft-made OS?" + :group 'viper) +(defcustom vip-vms-os-p (memq system-type '(vax-vms axp-vms)) + "Tells if Emacs is running under VMS." + :type 'boolean + :tag "Is it VMS?" + :group 'viper) -(defvar vip-force-faces nil +(defcustom vip-force-faces nil "If t, Viper will think that it is running on a display that supports faces. -This is provided as a temporary relief for users of face-capable displays -that Viper doesn't know about.") +This is provided as a temporary relief for users of graphics-capable terminals +that Viper doesn't know about. +In all likelihood, you don't need to bother with this setting." + :type 'boolean + :group 'viper) (defun vip-has-face-support-p () (cond ((vip-window-display-p)) @@ -235,29 +246,28 @@ ;; Prevents recursive descend into startup messages. (defvar vip-first-time t) -(defvar vip-expert-level 0 +(defvar viper-expert-level (if (boundp 'vip-expert-level) vip-expert-level 0) "User's expert level. The minor mode vip-vi-diehard-minor-mode is in effect when -vip-expert-level is 1 or 2 or when vip-want-emacs-keys-in-vi is t. +viper-expert-level is 1 or 2 or when vip-want-emacs-keys-in-vi is t. The minor mode vip-insert-diehard-minor-mode is in effect when -vip-expert-level is 1 or 2 or if vip-want-emacs-keys-in-insert is t. -Use `M-x vip-set-expert-level' to change this.") +viper-expert-level is 1 or 2 or if vip-want-emacs-keys-in-insert is t. +Use `M-x viper-set-expert-level' to change this.") ;; Max expert level supported by Viper. This is NOT a user option. ;; It is here to make it hard for the user from resetting it. -(defconst vip-max-expert-level 5) +(defconst viper-max-expert-level 5) -;; Contains user settings for vars affected by vip-set-expert-level function. -;; Not a user option. -(defvar vip-saved-user-settings nil) - ;;; ISO characters -(vip-deflocalvar vip-automatic-iso-accents nil +(vip-deflocalvar vip-automatic-iso-accents nil "") +(defcustom vip-automatic-iso-accents nil "*If non-nil, ISO accents will be turned on in insert/replace emacs states and turned off in vi-state. For some users, this behavior may be too primitive. In this case, use -insert/emacs/vi state hooks.") +insert/emacs/vi state hooks." + :type 'boolean + :group 'viper) ;; VI-style Undo @@ -271,10 +281,13 @@ ;; erased by vip-change-state-to-vi and vip-repeat. (defconst vip-buffer-undo-list-mark 'viper) -(defvar vip-keep-point-on-undo nil +(defcustom vip-keep-point-on-undo nil "*Non-nil means not to move point while undoing commands. This style is different from Emacs and Vi. Try it to see if -it better fits your working style.") +it better fits your working style." + :type 'boolean + :tag "Preserve Position of Point After Undo" + :group 'viper) ;; Replace mode and changing text @@ -291,41 +304,57 @@ ;; Indicates that the current destructive command has started in replace mode. (vip-deflocalvar vip-began-as-replace nil "") -(defvar vip-allow-multiline-replace-regions t +(defcustom vip-allow-multiline-replace-regions t "If non-nil, Viper will allow multi-line replace regions. This is an extension to standard Vi. If nil, commands that attempt to replace text spanning multiple lines first -delete the text being replaced, as in standard Vi.") +delete the text being replaced, as in standard Vi." + :type 'boolean + :group 'viper) -(defvar vip-replace-overlay-cursor-color "Red" - "*Cursor color to use in Replace state") -(defvar vip-insert-state-cursor-color nil - "Cursor color for Viper insert state.") -(put 'vip-insert-state-cursor-color 'permanent-local t) +(defcustom vip-replace-overlay-cursor-color "Red" + "*Cursor color when Viper is in Replace state." + :type 'string + :group 'viper) +(defcustom vip-insert-state-cursor-color "Green" + "Cursor color when Viper is in insert state." + :type 'string + :group 'viper) + ;; place to save cursor colow when switching to insert mode (vip-deflocalvar vip-saved-cursor-color nil "") (vip-deflocalvar vip-replace-overlay nil "") (put 'vip-replace-overlay 'permanent-local t) -(defvar vip-replace-overlay-pixmap "gray3" - "Pixmap to use for search face on non-color displays.") -(defvar vip-search-face-pixmap "gray3" - "Pixmap to use for search face on non-color displays.") +(defcustom vip-replace-overlay-pixmap "gray3" + "Pixmap to use for search face on non-color displays." + :type 'string + :group 'viper) +(defcustom vip-search-face-pixmap "gray3" + "Pixmap to use for search face on non-color displays." + :type 'string + :group 'viper) -(defvar vip-replace-region-end-delimiter "$" +(defcustom vip-replace-region-end-delimiter "$" "A string marking the end of replacement regions. It is used only with TTYs or if `vip-use-replace-region-delimiters' -is non-nil.") -(defvar vip-replace-region-start-delimiter "" +is non-nil." + :type 'string + :group 'viper) +(defcustom vip-replace-region-start-delimiter "" "A string marking the beginning of replacement regions. It is used only with TTYs or if `vip-use-replace-region-delimiters' -is non-nil.") -(defvar vip-use-replace-region-delimiters (not (vip-has-face-support-p)) +is non-nil." + :type 'string + :group 'viper) +(defcustom vip-use-replace-region-delimiters (not (vip-has-face-support-p)) "*If non-nil, Viper will always use `vip-replace-region-end-delimiter' and `vip-replace-region-start-delimiter' to delimit replacement regions, even on -color displays. By default, the delimiters are used only on TTYs.") +color displays. By default, the delimiters are used only on TTYs." + :type 'boolean + :group 'viper) ;; XEmacs requires glyphs (if vip-xemacs-p @@ -358,8 +387,12 @@ (vip-deflocalvar vip-replace-chars-deleted 0 "") ;; Insertion ring and command ring -(defvar vip-insertion-ring-size 14 - "The size of the insertion ring.") +(defcustom vip-insertion-ring-size 14 + "The size of history of inserted text. +This is a list where Viper keeps the history of previously inserted pieces of +text." + :type 'integer + :group 'viper) ;; The insertion ring. (defvar vip-insertion-ring nil) ;; This is temp insertion ring. Used to do rotation for display purposes. @@ -367,14 +400,33 @@ (defvar vip-temp-insertion-ring nil) (defvar vip-last-inserted-string-from-insertion-ring "") -(defvar vip-command-ring-size 14 - "The size of the command ring.") +(defcustom vip-command-ring-size 14 + "The size of history of Vi commands repeatable with dot." + :type 'integer + :group 'viper) ;; The command ring. (defvar vip-command-ring nil) ;; This is temp command ring. Used to do rotation for display purposes. ;; When rotation just started, it is initialized to vip-command-ring. (defvar vip-temp-command-ring nil) +;; Fast keyseq and ESC keyseq timeouts +(defcustom vip-fast-keyseq-timeout 200 + "*Key sequence separated by no more than this many milliseconds is viewed as a Vi-style macro, if such a macro is defined. +Setting this too high may slow down your typing. Setting this value too low +will make it hard to use Vi-stile timeout macros." + :type 'integer + :group 'viper) + +(defcustom vip-ESC-keyseq-timeout (if (vip-window-display-p) + 0 vip-fast-keyseq-timeout) + "*Key sequence beginning with ESC and separated by no more than this many milliseconds is considered to be generated by a keyboard function key. +Setting this too high may slow down switching from insert to vi state. Setting +this value too low will make it impossible to use function keys in insert mode +on a dumb terminal." + :type 'integer + :group 'viper) + ;; Modes and related variables ;; Current mode. One of: `emacs-state', `vi-state', `insert-state' @@ -392,22 +444,38 @@ ;; Whether to preserve the indent, used by C-d in insert mode. (vip-deflocalvar vip-preserve-indent nil) -(vip-deflocalvar vip-auto-indent nil - "*Autoindent if t.") -(vip-deflocalvar vip-electric-mode t - "*If t, enable electric behavior. -Currently only enables auto-indentation `according to mode'.") +(vip-deflocalvar vip-auto-indent nil "") +(defcustom vip-auto-indent nil + "*Enable autoindent, if t. +This is a buffer-local variable." + :type 'boolean + :group 'viper) -(defconst vip-shift-width 8 - "*The shiftwidth variable.") +(vip-deflocalvar vip-electric-mode t "") +(defcustom vip-electric-mode t + "*If t, electrify Viper. +Currently, this only electrifies auto-indentation, making it appropriate to the +mode of the buffer. +This means that auto-indentation will depart from standard Vi and will indent +appropriate to the mode of the buffer. This is especially useful for editing +programs and LaTeX documents." + :type 'boolean + :group 'viper) + +(defcustom vip-shift-width 8 + "*The shiftwidth variable." + :type 'integer + :group 'viper) ;; Variables for repeating destructive commands -(defconst vip-keep-point-on-repeat t +(defcustom vip-keep-point-on-repeat t "*If t, don't move point when repeating previous command. This is useful for doing repeated changes with the '.' key. The user can change this to nil, if she likes when the cursor moves -to a new place after repeating previous Vi command.") +to a new place after repeating previous Vi command." + :type 'boolean + :group 'viper) ;; Remember insert point as a marker. This is a local marker that must be ;; initialized to nil and moved with `vip-move-marker-locally'. @@ -482,55 +550,96 @@ ;; Last search string (defvar vip-s-string "") -(defvar vip-quote-string "> " - "String inserted at the beginning of quoted region.") +(defcustom vip-quote-string "> " + "String inserted at the beginning of quoted region." + :type 'string + :group 'viper) ;; If t, search is forward. (defvar vip-s-forward nil) -(defconst vip-case-fold-search nil - "*If not nil, search ignores cases.") +(defcustom vip-case-fold-search nil + "*If not nil, search ignores cases." + :type 'boolean + :group 'viper) -(defconst vip-re-search t - "*If not nil, search is reg-exp search, otherwise vanilla search.") +(defcustom vip-re-search t + "*If not nil, search is regexp search, otherwise vanilla search." + :type 'boolean + :tag "Regexp Search" + :group 'viper) -(defvar vip-search-scroll-threshold 2 +(defcustom vip-search-scroll-threshold 2 "*If search lands within this threshnold from the window top/bottom, the window will be scrolled up or down appropriately, to reveal context. If you want Viper search to behave as usual in Vi, set this variable to a -negative number.") +negative number." + :type 'boolean + :group 'viper) -(defconst vip-re-query-replace t - "*If t then do regexp replace, if nil then do string replace.") +(defcustom vip-re-query-replace t + "*If t then do regexp replace, if nil then do string replace." + :type 'boolean + :tag "Regexp Query Replace" + :group 'viper) -(defconst vip-re-replace t - "*If t, do regexp replace. nil means do string replace.") +(defcustom vip-re-replace t + "*If t, do regexp replace. nil means do string replace." + :type 'boolean + :tag "Regexp Replace" + :group 'viper) -(defvar vip-parse-sexp-ignore-comments t - "*If t, `%' ignores the parentheses that occur inside comments.") +(defcustom vip-parse-sexp-ignore-comments t + "*If t, `%' ignores the parentheses that occur inside comments." + :type 'boolean + :group 'viper) -(vip-deflocalvar vip-ex-style-motion t - "*Ex-style: the commands l,h do not cross lines, etc.") +(vip-deflocalvar vip-ex-style-motion t "") +(defcustom vip-ex-style-motion t + "*If t, the commands l,h do not cross lines, etc (Ex-style). +If nil, these commands cross line boundaries." + :type 'boolean + :group 'viper) -(vip-deflocalvar vip-ex-style-editing-in-insert t - "*The keys ^H, ^? don't jump lines in insert, ESC moves cursor back, etc. -Note: this doesn't preclude ^H and ^? from deleting characters by moving -past the insertion point. This is a feature, not a bug. ") +(vip-deflocalvar vip-ex-style-editing-in-insert t "") +(defcustom vip-ex-style-editing-in-insert t + "*If t, `Backspace' and `Delete' don't cross line boundaries in insert, etc. +Note: this doesn't preclude `Backspace' and `Delete' from deleting characters +by moving past the insertion point. This is a feature, not a bug." + :type 'boolean + :group 'viper) -(vip-deflocalvar vip-delete-backwards-in-replace nil - "*If t, DEL key will delete characters while moving the cursor backwards. -If nil, the cursor will move backwards without deleting anything.") +(vip-deflocalvar vip-ESC-moves-cursor-back vip-ex-style-editing-in-insert "") +(defcustom vip-ESC-moves-cursor-back nil + "*If t, ESC moves cursor back when changing from insert to vi state. +If nil, the cursor stays where it was." + :type 'boolean + :group 'viper) -(defconst vip-buffer-search-char nil - "*Key bound for buffer-searching.") +(vip-deflocalvar vip-delete-backwards-in-replace nil "") +(defcustom vip-delete-backwards-in-replace nil + "*If t, DEL key will delete characters while moving the cursor backwards. +If nil, the cursor will move backwards without deleting anything." + :type 'boolean + :group 'viper) + +(defcustom vip-buffer-search-char nil + "*Key used for buffer-searching. Must be a character type, e.g., ?g." + :type '(choice (const nil) character) + :group 'viper) -(defconst vip-search-wrap-around-t t - "*If t, search wraps around.") +(defcustom vip-search-wrap-around-t t + "*If t, search wraps around." + :type 'boolean + :tag "Search Wraps Around" + :group 'viper) -(vip-deflocalvar vip-related-files-and-buffers-ring nil - "*Ring of file and buffer names that are considered to be related to the -current buffer. -These buffers can be cycled through via :R and :P commands.") +(vip-deflocalvar vip-related-files-and-buffers-ring nil "") +(defcustom vip-related-files-and-buffers-ring nil + "*List of file and buffer names that are considered to be related to the current buffer. +Related buffers can be cycled through via :R and :P commands." + :type 'boolean + :group 'viper) (put 'vip-related-files-and-buffers-ring 'permanent-local t) ;; Used to find out if we are done with searching the current buffer. @@ -599,16 +708,15 @@ (defvar vip-inhibit-startup-message nil "Whether Viper startup message should be inhibited.") -(defvar vip-custom-file-name (vip-convert-standard-file-name "~/.viper") - "Viper customisation file. -This variable must be set _before_ loading Viper.") - +(defcustom vip-spell-function 'ispell-region + "Spell function used by #s<move> command to spell." + :type 'function + :group 'viper) -(defvar vip-spell-function 'ispell-region - "Spell function used by #s<move> command to spell.") - -(defvar vip-tags-file-name "TAGS" - "The tags file used by Viper.") +(defcustom vip-tags-file-name "TAGS" + "The tags file used by Viper." + :type 'string + :group 'viper) ;; Indicates if we are in the middle of executing a command that takes another ;; command as an argument, e.g., cw, dw, etc. @@ -616,9 +724,11 @@ ;; Minibuffer -(defvar vip-vi-style-in-minibuffer t +(defcustom vip-vi-style-in-minibuffer t "If t, use vi-style editing in minibuffer. -Should be set in `~/.vip' file.") +Should be set in `~/.vip' file." + :type 'boolean + :group 'viper) ;; overlay used in the minibuffer to indicate which state it is in (vip-deflocalvar vip-minibuffer-overlay nil) @@ -640,16 +750,31 @@ "Mode line tag identifying the Replace mode of Viper.") -(defvar vip-vi-state-hook nil - "*Hooks run just before the switch to Vi mode is completed.") -(defvar vip-insert-state-hook nil - "*Hooks run just before the switch to Insert mode is completed.") -(defvar vip-replace-state-hook nil - "*Hooks run just before the switch to Replace mode is completed.") -(defvar vip-emacs-state-hook nil - "*Hooks run just before the switch to Emacs mode is completed.") +(defcustom vip-vi-state-hook nil + "*Hooks run just before the switch to Vi mode is completed." + :type 'hook + :group 'viper) +(defcustom vip-insert-state-hook nil + "*Hooks run just before the switch to Insert mode is completed." + :type 'hook + :group 'viper) +(defcustom vip-replace-state-hook nil + "*Hooks run just before the switch to Replace mode is completed." + :type 'hook + :group 'viper) +(defcustom vip-emacs-state-hook nil + "*Hooks run just before the switch to Emacs mode is completed." + :type 'hook + :group 'viper) -(defvar vip-load-hook nil - "Hooks run just after loading Viper.") +(defcustom vip-load-hook nil + "Hooks run just after loading Viper." + :type 'hook + :group 'viper) + +;;; Local Variables: +;;; eval: (put 'vip-deflocalvar 'lisp-indent-hook 'defun) +;;; End: + ;;; viper-ex.el ends here
--- a/lisp/viper/viper-keym.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/viper/viper-keym.el Mon Aug 13 09:50:14 2007 +0200 @@ -27,7 +27,7 @@ (defvar viper-always) (defvar vip-current-state) (defvar vip-mode-string) -(defvar vip-expert-level) +(defvar viper-expert-level) (defvar vip-ex-style-editing-in-insert) (defvar vip-ex-style-motion) @@ -59,26 +59,34 @@ ;;; Emacs keys in other states. -(defvar vip-want-emacs-keys-in-insert t +(defcustom vip-want-emacs-keys-in-insert t "*Set to nil if you want complete Vi compatibility in insert mode. -Complete compatibility with Vi is not recommended for power use of Viper.") +Complete compatibility with Vi is not recommended for power use of Viper." + :type 'boolean + :group 'viper) -(defvar vip-want-emacs-keys-in-vi t +(defcustom vip-want-emacs-keys-in-vi t "*Set to nil if you want complete Vi compatibility in Vi mode. -Full Vi compatibility is not recommended for power use of Viper.") +Full Vi compatibility is not recommended for power use of Viper." + :type 'boolean + :group 'viper) -(defvar vip-no-multiple-ESC t +(defcustom vip-no-multiple-ESC t "*If true, multiple ESC in Vi mode will cause bell to ring. This is set to t on a windowing terminal and to 'twice on a dumb terminal (unless the user level is 1, 2, or 5). On a dumb terminal, this enables cursor keys and is generally more convenient, as terminals usually don't have a convenient Meta key. Setting vip-no-multiple-ESC to nil will allow as many multiple ESC, -as is allowed by the major mode in effect.") +as is allowed by the major mode in effect." + :type 'boolean + :group 'viper) -(defvar vip-want-ctl-h-help nil +(defcustom vip-want-ctl-h-help nil "*If t then C-h is bound to help-command in insert mode, if nil then it is -bound to delete-backward-char.") +bound to delete-backward-char." + :type 'boolean + :group 'viper) ;;; Keymaps @@ -114,7 +122,7 @@ (defvar vip-vi-diehard-map (make-sparse-keymap) "This keymap is in use when the user asks Viper to simulate Vi very closely. -This happens when vip-expert-level is 1 or 2. See vip-set-expert-level.") +This happens when viper-expert-level is 1 or 2. See viper-set-expert-level.") (vip-deflocalvar vip-insert-local-user-map (make-sparse-keymap) @@ -584,7 +592,7 @@ (princ (format "vip-emacs-state-modifier-minor-mode: %S\n" vip-emacs-state-modifier-minor-mode)) - (princ (format "\nvip-expert-level %S\n" vip-expert-level)) + (princ (format "\nviper-expert-level %S\n" viper-expert-level)) (princ (format "vip-no-multiple-ESC %S\n" vip-no-multiple-ESC)) (princ (format "viper-always %S\n" viper-always)) (princ (format "vip-ex-style-motion %S\n" @@ -627,4 +635,9 @@ alist)) +;;; Local Variables: +;;; eval: (put 'vip-deflocalvar 'lisp-indent-hook 'defun) +;;; End: + + ;;; viper-keym.el ends here
--- a/lisp/viper/viper-macs.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/viper/viper-macs.el Mon Aug 13 09:50:14 2007 +0200 @@ -27,6 +27,7 @@ (defvar vip-ex-work-buf) (defvar vip-custom-file-name) (defvar vip-current-state) +(defvar vip-fast-keyseq-timeout) ;; loading happens only in non-interactive compilation ;; in order to spare non-viperized emacs from being viperized @@ -71,19 +72,17 @@ (defvar vip-last-kbd-macro nil "Vector of keys representing the name of last Viper keyboard macro.") -(defconst vip-fast-keyseq-timeout 200 - "*Key sequence separated by no more than this many milliseconds is viewed as a macro, if such a macro is defined. -This also controls ESC-keysequences generated by keyboard function keys.") - +(defcustom vip-repeat-from-history-key 'f12 + "Prefix key for accessing previously typed Vi commands. -(defvar vip-repeat-from-history-key 'f12 - "Prefix key for invocation of vip-repeat-from-history function, -which repeats previous destructive commands from the history of such -commands. -This function can then be invoked as <this-key> 1 or <this-key> 2. +The previous command is accessible, as usual, via `.'. The command before this +can be invoked as `<this key> 1', and the command before that, and the command +before that one is accessible as `<this key> 2'. The notation for these keys is borrowed from XEmacs. Basically, a key is a symbol, e.g., `a', `\\1', `f2', etc., or a list, e.g., -`(meta control f1)'.") +`(meta control f1)'." + :type 'key + :group 'viper) @@ -544,7 +543,7 @@ (vip-display-macro macro-name) state-name major-mode)) ((cdr (setq macro-pair (vip-kbd-global-pair macro-entry))) (message - "Global mapping of %S for %s is removed" + "Global mapping for %S in %s is removed" (vip-display-macro macro-name) state-name)) (t (error "%S is not mapped to a macro for %s in `%s'" (vip-display-macro macro-name)
--- a/lisp/viper/viper-mous.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/viper/viper-mous.el Mon Aug 13 09:50:14 2007 +0200 @@ -47,6 +47,11 @@ (require 'viper-util) +(defgroup viper-mouse nil + "Support for Viper special mouse-bound commands" + :prefix "vip-" + :group 'viper) + ;;; Variables @@ -58,21 +63,25 @@ ;; Frame that was selected before the switch-frame event. (defconst vip-current-frame-saved (selected-frame)) -(defvar vip-surrounding-word-function 'vip-surrounding-word +(defcustom vip-surrounding-word-function 'vip-surrounding-word "*Function that determines what constitutes a word for clicking events. Takes two parameters: a COUNT, indicating how many words to return, and CLICK-COUNT, telling whether this is the first click, a double-click, -or a tripple-click.") +or a tripple-click." + :type 'boolean + :group 'viper-mouse) ;; time interval in millisecond within which successive clicks are ;; considered related -(defconst vip-multiclick-timeout (if (vip-window-display-p) - (if vip-xemacs-p - mouse-track-multi-click-time - double-click-time) - 500) - "*Time interval in millisecond within which successive clicks are -considered related.") +(defcustom vip-multiclick-timeout (if (vip-window-display-p) + (if vip-xemacs-p + mouse-track-multi-click-time + double-click-time) + 500) + "*Time interval in millisecond within which successive mouse clicks are +considered related." + :type 'integer + :group 'viper-mouse) ;; current event click count; XEmacs only (defvar vip-current-click-count 0) @@ -432,5 +441,9 @@ vip-current-frame-saved (selected-frame))) +;;; Local Variables: +;;; eval: (put 'vip-deflocalvar 'lisp-indent-hook 'defun) +;;; End: + ;;; viper-mous.el ends here
--- a/lisp/viper/viper-util.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/viper/viper-util.el Mon Aug 13 09:50:14 2007 +0200 @@ -1065,11 +1065,22 @@ (defun vip-key-to-emacs-key (key) (let (key-name char-p modifiers mod-char-list base-key base-key-name) (cond (vip-xemacs-p key) + ((symbolp key) (setq key-name (symbol-name key)) - (if (= (length key-name) 1) ; character event - (string-to-char key-name) - key)) + (cond ((= (length key-name) 1) ; character event + (string-to-char key-name)) + ;; Emacs doesn't recognize `return' and `escape' as events on + ;; dumb terminals, so we translate them into characters + ((and vip-emacs-p (not (vip-window-display-p)) + (string= key-name "return")) + ?\C-m) + ((and vip-emacs-p (not (vip-window-display-p)) + (string= key-name "escape")) + ?\e) + ;; pass symbol-event as is + (t key))) + ((listp key) (setq modifiers (subseq key 0 (1- (length key))) base-key (vip-seq-last-elt key) @@ -1129,8 +1140,13 @@ "")) +;; Uses different timeouts for ESC-sequences and others (defsubst vip-fast-keysequence-p () - (not (vip-sit-for-short vip-fast-keyseq-timeout t))) + (not (vip-sit-for-short + (if (vip-ESC-event-p last-input-event) + vip-ESC-keyseq-timeout + vip-fast-keyseq-timeout) + t))) (defun vip-read-char-exclusive () (let (char @@ -1174,7 +1190,7 @@ ;;; Movement utilities -(defvar vip-syntax-preference 'strict-vi +(defcustom vip-syntax-preference 'strict-vi "*Syntax type characterizing Viper's alphanumeric symbols. `emacs' means only word constituents are considered to be alphanumeric. Word constituents are symbols specified as word constituents by the current @@ -1183,7 +1199,10 @@ `reformed-vi' means Vi-ish behavior: word constituents and the symbol `_'. However, word constituents are determined according to Emacs syntax tables, which may be different from Vi in some major modes. -`strict-vi' means Viper words are exactly as in Vi.") +`strict-vi' means Viper words are exactly as in Vi." + :type '(radio (const strict-vi) (const reformed-vi) + (const extended) (const emacs)) + :group 'viper) (vip-deflocalvar vip-ALPHA-char-class "w" "String of syntax classes characterizing Viper's alphanumeric symbols. @@ -1311,7 +1330,11 @@ +(provide 'viper-util) -(provide 'viper-util) + +;;; Local Variables: +;;; eval: (put 'vip-deflocalvar 'lisp-indent-hook 'defun) +;;; End: ;;; viper-util.el ends here
--- a/lisp/viper/viper.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/viper/viper.el Mon Aug 13 09:50:14 2007 +0200 @@ -8,7 +8,7 @@ ;; Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. -(defconst viper-version "2.94 of June 12, 1997" +(defconst viper-version "2.95 of July 9, 1997" "The current version of Viper") ;; This file is part of GNU Emacs. @@ -150,24 +150,24 @@ ;; ;; The last vip-vi-basic-minor-mode contains most of the usual Vi bindings ;; in its edit mode. This mode provides access to all Emacs facilities. -;; Novice users, however, may want to set their vip-expert-level to 1 +;; Novice users, however, may want to set their viper-expert-level to 1 ;; in their .vip file. This will enable vip-vi-diehard-minor-mode. This ;; minor mode's bindings make Viper simulate the usual Vi very closely. ;; For instance, C-c will not have its standard Emacs binding ;; and so many of the goodies of Emacs are not available. ;; -;; A skilled user should set vip-expert-level to at least 3. This will +;; A skilled user should set viper-expert-level to at least 3. This will ;; enable `C-c' and many Emacs facilities will become available. ;; In this case, vip-vi-diehard-minor-mode is inactive. ;; ;; Viper gurus should have at least -;; (setq vip-expert-level 4) -;; in their ~/.vip files. This will unsuppress all Emacs keys that are not +;; (setq viper-expert-level 4) +;; in their ~/.viper files. This will unsuppress all Emacs keys that are not ;; essential for VI-style editing. ;; Pick-and-choose users may want to put -;; (setq vip-expert-level 5) -;; in ~/.vip. Viper will then leave it up to the user to set the variables -;; vip-want-* See vip-set-expert-level for details. +;; (setq viper-expert-level 5) +;; in ~/.viper. Viper will then leave it up to the user to set the variables +;; vip-want-* See viper-set-expert-level for details. ;; ;; The very first minor mode, vip-vi-intercept-minor-mode, is of no ;; concern for the user. It is needed to bind Viper's vital keys, such as @@ -302,6 +302,8 @@ ;; compiler pacifier (defvar mark-even-if-inactive) +(defvar viper-expert-level) +(defvar vip-expert-level) ;; loading happens only in non-interactive compilation ;; in order to spare non-viperized emacs from being viperized @@ -313,24 +315,49 @@ ))) ;; end pacifier +;; better be defined before Viper custom group. +(defvar vip-custom-file-name (vip-convert-standard-file-name "~/.viper") + "Viper customisation file. +If set by the user, this must be done _before_ Viper is loaded in `~/.emacs'.") + +(defgroup viper nil + "Vi emulation within Emacs. +NOTE: Viper customization should be saved in `vip-custom-file-name', which +defaults to `~/.viper'." + :prefix "vip-" + :group 'emulations) + (require 'viper-cmd) (defvar vip-always t "See `viper-always'. This variable is for compatibility with older Vipers.") -(defvar viper-always vip-always +(defcustom viper-always vip-always "Non-nil means, arrange for vi-state to be a default when appropriate. This is different from `viper-mode' variable in that `viper-mode' determines whether to use Viper in the first place, while `viper-always', if nil, lets -user decide when to invoke Viper in a major mode.") +user decide when to invoke Viper in a major mode." + :type 'boolean + :tag "Always Invoke Viper" + :group 'viper) -(defvar viper-mode (cond (noninteractive nil) - (t 'ask)) - "Viperize or not Viperize. +;; Non-viper variables that need to be saved in case the user decides to +;; de-viperize emacs. +(defvar viper-saved-non-viper-variables nil) +;; Contains user settings for vars affected by viper-set-expert-level function. +;; Not a user option. +(defvar viper-saved-user-settings nil) + +(defcustom viper-mode (cond (noninteractive nil) + (t 'ask)) + "To Viperize or not to Viperize. If t, viperize emacs. If nil -- don't. If `ask', ask the user. This variable is used primatily when Viper is being loaded. Must be set in `~/.emacs' before Viper is loaded. -DO NOT set this variable interactively.") +DO NOT set this variable interactively." + :type '(choice (const nil) (const t) (const ask)) + :tag "Set Viper Mode on Loading" + :group 'viper) ;; The following are provided for compatibility with older VIP's @@ -342,6 +369,7 @@ (defalias 'vip-change-mode-to-insert 'vip-change-state-to-insert) (defalias 'vip-change-mode-to-emacs 'vip-change-state-to-emacs) + ;;;###autoload @@ -367,11 +395,11 @@ (erase-buffer) (insert (substitute-command-keys - "Viper Is a Package for Emacs Rebels. -It is also a VI Plan for Emacs Rescue and a venomous VI PERil. + "Viper Is a Package for Emacs Rebels, +a VI Plan for Emacs Rescue, and a venomous VI PERil. -Technically speaking, Viper is a Vi emulation package for GNU Emacs 19 and -XEmacs 19. It supports virtually all of Vi and Ex functionality, extending +Incidentally, Viper emulates Vi under GNU Emacs 20 and XEmacs 20. +It supports all of what is good in Vi and Ex, while extending and improving upon much of it. 1. Viper supports Vi at several levels. Level 1 is the closest to Vi, @@ -383,26 +411,30 @@ as in VI, to smooth transition to Viper for the beginners. However, to use Emacs productively, you are advised to reach user level 3 or higher. - If your user level is 2 or higher, ^X and ^C will invoke Emacs - functions,as usual in Emacs; ^Z will toggle vi/emacs modes, and - ^G will be the usual Emacs's keyboard-quit (something like ^C in VI). + At user level 2 or higher, ^X and ^C have Emacs, not Vi, bindings; + ^Z toggles Vi/Emacs states; ^G is Emacs' keyboard-quit (like ^C in Vi). 2. Vi exit functions (e.g., :wq, ZZ) work on INDIVIDUAL files -- they - do not cause Emacs to quit, except at user level 1 (a novice). + do not cause Emacs to quit, except at user level 1 (for a novice). 3. ^X^C EXITS EMACS. 4. Viper supports multiple undo: `u' will undo. Typing `.' will repeat undo. Another `u' changes direction. - 6. Emacs Meta functions are invoked by typing `C-\\' or `\\ ESC'. - On a window system, the best way is to use the Meta-key. + 6. Emacs Meta key is `C-\\' (in all modes) or `\\ ESC' (in Vi command mode). + On a window system, the best way is to use the Meta-key on your keyboard. 7. Try \\[keyboard-quit] and \\[abort-recursive-edit] repeatedly,if something funny happens. This would abort the current editing command. -You can get more information on Viper by: +For more information on Viper: - a. Typing `:help' in Vi state - b. Printing Viper manual, found in ./etc/viper.dvi - c. Printing ViperCard, the Quick Reference, found in ./etc/viperCard.dvi + a. Type `:help' in Vi command mode + b. Print Viper manual, found in ./etc/viper.dvi + c. Print the Quick Reference, found in ./etc/viperCard.dvi + +To submit a bug report or to contact the author, type :submitReport in Vi +command mode. To shoo Viper away and return to pure Emacs (horror!), type: + + M-x viper-go-away This startup message appears whenever you load Viper, unless you type `y' now." )) @@ -417,7 +449,7 @@ "The last message is in buffer `Viper Startup Message'") (sit-for 4) )) - (vip-set-expert-level 'dont-change-unless))) + (viper-set-expert-level 'dont-change-unless))) (vip-change-state-to-vi)))) @@ -429,6 +461,135 @@ (vip-change-state-to-insert)) +;; remove viper hooks from SYMBOL +(defun viper-remove-hooks (symbol) + (cond ((not (boundp symbol)) nil) + ((not (listp (eval symbol))) nil) + ((string-match "-hook" (symbol-name symbol)) + (remove-hook symbol 'viper-mode) + (remove-hook symbol 'vip-change-state-to-emacs) + (remove-hook symbol 'vip-change-state-to-insert) + (remove-hook symbol 'vip-change-state-to-vi) + ))) + +;; Remove local value in all existing buffers +;; This doesn't delocalize vars (which would have been desirable) +(defun viper-delocalize-var (symbol) + (mapcar (function (lambda (buf) + (save-excursion + (set-buffer buf) + (kill-local-variable symbol)))) + (buffer-list))) + + +(defun viper-go-away () + "De-Viperize Emacs. +This function tries to do as good a job as possible. However, it may undo some +user customization, unrelated to Viper. For instance, if the user advised +`read-file-name', `describe-key', and some others, then this advice will be +undone. +It also doesn't undo some Viper settings. For instance, `minor-mode-map-alist' +remains buffer-local." + (interactive) + + ;; restore non-viper vars + (setq-default + default-major-mode + (viper-standard-value 'default-major-mode viper-saved-non-viper-variables) + next-line-add-newlines + (viper-standard-value + 'next-line-add-newlines viper-saved-non-viper-variables) + require-final-newline + (viper-standard-value + 'require-final-newline viper-saved-non-viper-variables) + scroll-step + (viper-standard-value 'scroll-step viper-saved-non-viper-variables) + mode-line-buffer-identification + (viper-standard-value + 'mode-line-buffer-identification viper-saved-non-viper-variables) + global-mode-string + (viper-standard-value 'global-mode-string viper-saved-non-viper-variables)) + + (if vip-emacs-p + (setq-default + mark-even-if-inactive + (viper-standard-value + 'mark-even-if-inactive viper-saved-non-viper-variables))) + + ;; Ideally, we would like to be able to de-localize local variables + (viper-delocalize-var 'minor-mode-map-alist) + (viper-delocalize-var 'require-final-newline) + + + ;; deactivate all advices done by Viper. + (ad-deactivate-regexp "vip-") + + (setq viper-mode nil) + + (viper-delocalize-var 'vip-vi-minibuffer-minor-mode) + (viper-delocalize-var 'vip-insert-minibuffer-minor-mode) + (viper-delocalize-var 'vip-vi-intercept-minor-mode) + (viper-delocalize-var 'vip-insert-intercept-minor-mode) + + (viper-delocalize-var 'vip-vi-local-user-minor-mode) + (viper-delocalize-var 'vip-vi-kbd-minor-mode) + (viper-delocalize-var 'vip-vi-global-user-minor-mode) + (viper-delocalize-var 'vip-vi-state-modifier-minor-mode) + (viper-delocalize-var 'vip-vi-diehard-minor-mode) + (viper-delocalize-var 'vip-vi-basic-minor-mode) + + (viper-delocalize-var 'vip-replace-minor-mode) + + (viper-delocalize-var 'vip-insert-local-user-minor-mode) + (viper-delocalize-var 'vip-insert-kbd-minor-mode) + (viper-delocalize-var 'vip-insert-global-user-minor-mode) + (viper-delocalize-var 'vip-insert-state-modifier-minor-mode) + (viper-delocalize-var 'vip-insert-diehard-minor-mode) + (viper-delocalize-var 'vip-insert-basic-minor-mode) + + (viper-delocalize-var 'vip-emacs-intercept-minor-mode) + (viper-delocalize-var 'vip-emacs-local-user-minor-mode) + (viper-delocalize-var 'vip-emacs-kbd-minor-mode) + (viper-delocalize-var 'vip-emacs-global-user-minor-mode) + (viper-delocalize-var 'vip-emacs-state-modifier-minor-mode) + + (setq-default vip-vi-minibuffer-minor-mode nil + vip-insert-minibuffer-minor-mode nil + vip-vi-intercept-minor-mode nil + vip-insert-intercept-minor-mode nil + + vip-vi-local-user-minor-mode nil + vip-vi-kbd-minor-mode nil + vip-vi-global-user-minor-mode nil + vip-vi-state-modifier-minor-mode nil + vip-vi-diehard-minor-mode nil + vip-vi-basic-minor-mode nil + + vip-replace-minor-mode nil + + vip-insert-local-user-minor-mode nil + vip-insert-kbd-minor-mode nil + vip-insert-global-user-minor-mode nil + vip-insert-state-modifier-minor-mode nil + vip-insert-diehard-minor-mode nil + vip-insert-basic-minor-mode nil + + vip-emacs-intercept-minor-mode nil + vip-emacs-local-user-minor-mode nil + vip-emacs-kbd-minor-mode nil + vip-emacs-global-user-minor-mode nil + vip-emacs-state-modifier-minor-mode nil + ) + + ;; remove all hooks set by viper + (mapatoms 'viper-remove-hooks) + (remove-hook 'comint-mode-hook 'vip-comint-mode-hook) + (remove-hook 'minibuffer-setup-hook 'vip-minibuffer-setup-sentinel) + ) + + + + ;; This sets major mode hooks to make them come up in vi-state. (defun vip-set-hooks () @@ -461,6 +622,9 @@ (defvar java-mode-hook) (add-hook 'java-mode-hook 'viper-mode) + (defvar javascript-mode-hook) + (add-hook 'javascript-mode-hook 'viper-mode) + (defvar emacs-lisp-mode-hook) (add-hook 'emacs-lisp-mode-hook 'viper-mode) (defvar lisp-mode-hook) @@ -502,8 +666,14 @@ (add-hook 'completion-list-mode-hook 'viper-mode) (add-hook 'compilation-mode-hook 'viper-mode) - (add-hook 'perl-mode-hook 'viper-mode) - (add-hook 'tcl-mode-hook 'viper-mode) + (defvar perl-mode-hook) + (add-hook 'perl-mode-hook 'viper-mode) + + (defvar tcl-mode-hook) + (add-hook 'tcl-mode-hook 'viper-mode) + + (defvar python-mode-hook) + (add-hook 'python-mode-hook 'viper-mode) (defvar emerge-startup-hook) (add-hook 'emerge-startup-hook 'vip-change-state-to-emacs) @@ -568,26 +738,26 @@ ;; Dired (vip-modify-major-mode 'dired-mode 'emacs-state vip-dired-modifier-map) - (vip-set-emacs-search-style-macros nil 'dired-mode) + (vip-set-emacs-state-searchstyle-macros nil 'dired-mode) (add-hook 'dired-mode-hook 'vip-change-state-to-emacs) ;; Tar (vip-modify-major-mode 'tar-mode 'emacs-state vip-slash-and-colon-map) - (vip-set-emacs-search-style-macros nil 'tar-mode) + (vip-set-emacs-state-searchstyle-macros nil 'tar-mode) ;; MH-E (vip-modify-major-mode 'mh-folder-mode 'emacs-state vip-slash-and-colon-map) - (vip-set-emacs-search-style-macros nil 'mh-folder-mode) + (vip-set-emacs-state-searchstyle-macros nil 'mh-folder-mode) ;; changing state to emacs is needed so the preceding will take hold (add-hook 'mh-folder-mode-hook 'vip-change-state-to-emacs) (add-hook 'mh-show-mode-hook 'viper-mode) ;; Gnus (vip-modify-major-mode 'gnus-group-mode 'emacs-state vip-slash-and-colon-map) - (vip-set-emacs-search-style-macros nil 'gnus-group-mode) + (vip-set-emacs-state-searchstyle-macros nil 'gnus-group-mode) (vip-modify-major-mode 'gnus-summary-mode 'emacs-state vip-slash-and-colon-map) - (vip-set-emacs-search-style-macros nil 'gnus-summary-mode) + (vip-set-emacs-state-searchstyle-macros nil 'gnus-summary-mode) ;; changing state to emacs is needed so the preceding will take hold (add-hook 'gnus-group-mode-hook 'vip-change-state-to-emacs) (add-hook 'gnus-summary-mode-hook 'vip-change-state-to-emacs) @@ -595,7 +765,7 @@ ;; Info (vip-modify-major-mode 'Info-mode 'emacs-state vip-slash-and-colon-map) - (vip-set-emacs-search-style-macros nil 'Info-mode) + (vip-set-emacs-state-searchstyle-macros nil 'Info-mode) ;; Switching to emacs is needed so the above will take hold (defadvice Info-mode (after vip-Info-ad activate) "Switch to emacs mode." @@ -604,7 +774,7 @@ ;; Buffer menu (vip-modify-major-mode 'Buffer-menu-mode 'emacs-state vip-slash-and-colon-map) - (vip-set-emacs-search-style-macros nil 'Buffer-menu-mode) + (vip-set-emacs-state-searchstyle-macros nil 'Buffer-menu-mode) ;; Switching to emacs is needed so the above will take hold (defadvice Buffer-menu-mode (after vip-Buffer-menu-ad activate) "Switch to emacs mode." @@ -659,7 +829,8 @@ (make-variable-buffer-local 'require-final-newline) ;; don't bark when mark is inactive - (setq mark-even-if-inactive t) + (if vip-emacs-p + (setq mark-even-if-inactive t)) (setq scroll-step 1) @@ -709,11 +880,16 @@ "Use `read-file-name' for reading arguments." (interactive (cons (read-file-name "Find file: " nil default-directory) ;; if Mule and prefix argument, ask for coding system - (if (or (boundp 'MULE) ; mule integrated Emacs 19 - (featurep 'mule)) ; mule integrated XEmacs 20 - (list - (and current-prefix-arg - (read-coding-system "Coding-system: ")))) + (cond ((and vip-emacs-p + (boundp 'MULE)) ; Emacs 20 with MULE + nil) + ((and vip-xemacs-p + (featurep 'mule)) ; XEmacs 20 with MULE + (list + (and current-prefix-arg + (read-coding-system + "Coding-system: ")))) + ) ))) (defadvice find-file-other-window (before vip-add-suffix-advice activate) @@ -721,24 +897,36 @@ (interactive (cons (read-file-name "Find file in other window: " nil default-directory) ;; if Mule and prefix argument, ask for coding system - (if (or (boundp 'MULE) ; mule integrated Emacs 19 - (featurep 'mule)) ; mule integrated XEmacs 20 - (list - (and current-prefix-arg - (read-coding-system "Coding-system: ")))) + (cond ((and vip-emacs-p + (boundp 'MULE)) ; Emacs 20 with MULE + nil) + ((and vip-xemacs-p + (featurep 'mule)) ; XEmacs 20 with MULE + (list + (and current-prefix-arg + (read-coding-system + "Coding-system: ")))) + ) ))) + (defadvice find-file-other-frame (before vip-add-suffix-advice activate) "Use `read-file-name' for reading arguments." (interactive (cons (read-file-name "Find file in other frame: " nil default-directory) ;; if Mule and prefix argument, ask for coding system - (if (or (boundp 'MULE) ; mule integrated Emacs 19 - (featurep 'mule)) ; mule integrated XEmacs 20 - (list - (and current-prefix-arg - (read-coding-system "Coding-system: ")))) + (cond ((and vip-emacs-p + (boundp 'MULE)) ; Emacs 20 with MULE + nil) + ((and vip-xemacs-p + (featurep 'mule)) ; XEmacs 20 with MULE + (list + (and current-prefix-arg + (read-coding-system + "Coding-system: ")))) + ) ))) + (defadvice read-file-name (around vip-suffix-advice activate) "Tell `exit-minibuffer' to run `vip-file-add-suffix' as a hook." @@ -815,7 +1003,7 @@ in your .emacs file (preferably, close to the top). These two lines must come in the order given. -Also, the startup file name has changed from .vip to .viper")) +Also, the startup file name has been changed from .vip to .viper")) (if (y-or-n-p "Viperize? ") (setq viper-mode t) (setq viper-mode nil)) @@ -825,10 +1013,35 @@ +;; Get viper standard value of SYMBOL. If symbol is customized, get its +;; standard value. Otherwise, get the value saved in the alist STORAGE. If +;; STORAGE is nil, use viper-saved-user-settings. +(defun viper-standard-value (symbol &optional storage) + (or (eval (car (get symbol 'customized-value))) + (eval (car (get symbol 'saved-value))) + (nth 1 (assoc symbol (or storage viper-saved-user-settings))))) + + + +;; save non-viper vars that Viper might change +(if (null viper-saved-non-viper-variables) + (setq viper-saved-non-viper-variables + (list + (cons 'default-major-mode (list default-major-mode)) + (cons 'next-line-add-newlines (list next-line-add-newlines)) + (cons 'require-final-newline (list require-final-newline)) + (cons 'scroll-step (list scroll-step)) + (cons 'mode-line-buffer-identification + (list (default-value 'mode-line-buffer-identification))) + (cons 'global-mode-string (list global-mode-string)) + (if vip-emacs-p + (cons 'mark-even-if-inactive (list mark-even-if-inactive))) + ))) + ;; Set some useful macros, advices -;; These must be BEFORE we ~/.vip is loaded, -;; so the user can unrecord them in ~/.vip. +;; These must be BEFORE ~/.viper is loaded, +;; so the user can unrecord them in ~/.viper. (if viper-mode (progn ;; set advices and some variables that give emacs Vi look. @@ -843,18 +1056,14 @@ (vector vip-repeat-from-history-key '\2) 'vi-state [(meta x) v i p - r e p e a t - f r o m - h i s t o r y return] 't) - ;; set the toggle case sensitivity and regexp search macros - (vip-set-vi-search-style-macros nil) - + ;; set macros for toggling case sensitivity and regexp search + (vip-set-searchstyle-toggling-macros nil) ;; Make %%% toggle parsing comments for matching parentheses - (vip-record-kbd-macro - "%%%" 'vi-state - [(meta x) v i p - t o g g l e - p a r s e - s e x p - i g n o r e - c o m m e n t s return] - 't) + (vip-set-parsing-style-toggling-macro nil) )) -;; ~/.vip is loaded if it exists +;; ~/.viper is loaded if it exists (if (and (file-exists-p vip-custom-file-name) viper-mode (not noninteractive)) @@ -864,21 +1073,29 @@ ;; Viper's basic map. (vip-add-keymap vip-mode-map vip-vi-global-user-map) +(if (boundp 'vip-expert-level) + (setq viper-expert-level vip-expert-level)) + + ;; Applying Viper customization -- runs after (load .vip) -;; Save user settings or Viper defaults for vars controled by vip-expert-level -(setq vip-saved-user-settings - (list (cons 'vip-want-ctl-h-help vip-want-ctl-h-help) - (cons 'viper-always viper-always) - (cons 'vip-no-multiple-ESC vip-no-multiple-ESC) - (cons 'vip-ex-style-motion vip-ex-style-motion) - (cons 'vip-ex-style-editing-in-insert - vip-ex-style-editing-in-insert) - (cons 'vip-want-emacs-keys-in-vi vip-want-emacs-keys-in-vi) - (cons 'vip-electric-mode vip-electric-mode) - (cons 'vip-want-emacs-keys-in-insert vip-want-emacs-keys-in-insert) - (cons 'vip-re-search vip-re-search))) +;; Save user settings or Viper defaults for vars controled by +;; viper-expert-level +(if (null viper-saved-user-settings) + (setq viper-saved-user-settings + (list (cons 'vip-want-ctl-h-help (list vip-want-ctl-h-help)) + (cons 'viper-always (list viper-always)) + (cons 'vip-no-multiple-ESC (list vip-no-multiple-ESC)) + (cons 'vip-ex-style-motion (list vip-ex-style-motion)) + (cons 'vip-ex-style-editing-in-insert + (list vip-ex-style-editing-in-insert)) + (cons 'vip-want-emacs-keys-in-vi + (list vip-want-emacs-keys-in-vi)) + (cons 'vip-electric-mode (list vip-electric-mode)) + (cons 'vip-want-emacs-keys-in-insert + (list vip-want-emacs-keys-in-insert)) + (cons 'vip-re-search (list vip-re-search))))) (if viper-mode @@ -909,7 +1126,7 @@ ;; Intercept maps could go in viper-keym.el -;; We keep them here in case someone redefines them in ~/.vip +;; We keep them here in case someone redefines them in ~/.viper (define-key vip-vi-intercept-map vip-ESC-key 'vip-intercept-ESC-key) (define-key vip-insert-intercept-map vip-ESC-key 'vip-intercept-ESC-key) @@ -926,7 +1143,7 @@ (if (and viper-mode (or viper-always - (and (< vip-expert-level 5) (> vip-expert-level 0)))) + (and (< viper-expert-level 5) (> viper-expert-level 0)))) (vip-set-hooks)) ;; Let all minor modes take effect after loading @@ -946,4 +1163,9 @@ (provide 'vip) (provide 'viper) + +;;; Local Variables: +;;; eval: (put 'vip-deflocalvar 'lisp-indent-hook 'defun) +;;; End: + ;;; viper.el ends here
--- a/lisp/vm/vm-autoload.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/vm/vm-autoload.el Mon Aug 13 09:50:14 2007 +0200 @@ -2219,7 +2219,7 @@ (autoload (quote vm-mode) "vm-startup" "Major mode for reading mail. -This is VM 6.32. +This is VM 6.33. Commands: h - summarize folder contents
--- a/lisp/vm/vm-mime.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/vm/vm-mime.el Mon Aug 13 09:50:14 2007 +0200 @@ -568,7 +568,9 @@ encoding (or (vm-get-header-contents m "Content-Transfer-Encoding:") "7bit") - encoding (car (vm-mime-parse-content-header encoding)) + encoding (or (car + (vm-mime-parse-content-header encoding)) + "7bit") id (vm-get-header-contents m "Content-ID:") id (car (vm-mime-parse-content-header id)) description (vm-get-header-contents @@ -597,7 +599,8 @@ encoding (or (vm-mime-get-header-contents "Content-Transfer-Encoding:") default-encoding) - encoding (car (vm-mime-parse-content-header encoding)) + encoding (or (car (vm-mime-parse-content-header encoding)) + default-encoding) id (vm-mime-get-header-contents "Content-ID:") id (car (vm-mime-parse-content-header id)) description (vm-mime-get-header-contents @@ -1741,7 +1744,6 @@ ;; we don't need to set it here. (write-region start end tempfile nil 0) (message "Creating %s glyph..." name) -;; `((LOCALE (TAG-SET . INSTANTIATOR) ...) ...)'. This function accepts (setq g (make-glyph (list (cons (list 'win) @@ -1749,7 +1751,7 @@ (cons (list 'win) (vector 'string ':data - (format "[Unknown/Bsd %s image encoding]\n" + (format "[Unknown/Bad %s image encoding]\n" name))) (cons nil (vector 'string @@ -1896,8 +1898,10 @@ glyph (or glyph (and file (make-glyph - (vector 'autodetect - ':data (expand-file-name file dir)))))) + (list + (vector 'xpm ':file + (expand-file-name file dir)) + [nothing]))))) (and sym (not (boundp sym)) (set sym glyph)) (and glyph (set-extent-begin-glyph e glyph)))))
--- a/lisp/vm/vm-page.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/vm/vm-page.el Mon Aug 13 09:50:14 2007 +0200 @@ -200,7 +200,7 @@ (message "End of message %s" (vm-number-of (car vm-message-pointer))))) -(defun vm-scroll-backward (arg) +(defun vm-scroll-backward (&optional arg) "Scroll backward a screenful of text. Prefix N scrolls backward N lines." (interactive "P") @@ -437,7 +437,10 @@ (setq g (intern h vm-xface-cache)) (if (boundp g) (setq g (symbol-value g)) - (set g (make-glyph h)) + (set g (make-glyph + (list + (list 'global (cons '(tty) [nothing])) + (list 'global (cons '(win) (vector 'xface ':data h)))))) (setq g (symbol-value g)) ;; XXX broken. Gives extra pixel lines at the ;; bottom of the glyph in 19.12
--- a/lisp/vm/vm-search19.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/vm/vm-search19.el Mon Aug 13 09:50:14 2007 +0200 @@ -79,6 +79,7 @@ (vm-start-of (car vm-message-pointer)) (vm-vheaders-of (car vm-message-pointer))) (vm-text-end-of (car vm-message-pointer))) + (save-excursion (vm-energize-urls)) (vm-display nil nil '(vm-isearch-forward vm-isearch-backward) '(reading-message))
--- a/lisp/vm/vm-startup.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/vm/vm-startup.el Mon Aug 13 09:50:14 2007 +0200 @@ -277,7 +277,7 @@ (defun vm-mode (&optional read-only) "Major mode for reading mail. -This is VM 6.32. +This is VM 6.33. Commands: h - summarize folder contents
--- a/lisp/vm/vm-toolbar.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/vm/vm-toolbar.el Mon Aug 13 09:50:14 2007 +0200 @@ -341,29 +341,25 @@ (if myframe (set-specifier right-toolbar toolbar frame tag-set)) (set-specifier right-toolbar toolbar buffer) - (if myframe - (set-specifier right-toolbar-width width frame tag-set))) + (set-specifier right-toolbar-width width frame tag-set)) ((eq vm-toolbar-orientation 'left) (setq vm-toolbar-specifier left-toolbar) (if myframe (set-specifier left-toolbar toolbar frame tag-set)) (set-specifier left-toolbar toolbar buffer) - (if myframe - (set-specifier left-toolbar-width width frame tag-set))) + (set-specifier left-toolbar-width width frame tag-set)) ((eq vm-toolbar-orientation 'bottom) (setq vm-toolbar-specifier bottom-toolbar) (if myframe (set-specifier bottom-toolbar toolbar frame tag-set)) (set-specifier bottom-toolbar toolbar buffer) - (if myframe - (set-specifier bottom-toolbar-height height frame tag-set))) + (set-specifier bottom-toolbar-height height frame tag-set)) (t (setq vm-toolbar-specifier top-toolbar) (if myframe (set-specifier top-toolbar toolbar frame tag-set)) (set-specifier top-toolbar toolbar buffer) - (if myframe - (set-specifier top-toolbar-height height frame tag-set)))))) + (set-specifier top-toolbar-height height frame tag-set))))) (defun vm-toolbar-make-toolbar-spec () (let ((button-alist '(
--- a/lisp/vm/vm-vars.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/vm/vm-vars.el Mon Aug 13 09:50:14 2007 +0200 @@ -221,8 +221,14 @@ (defvar vm-mail-check-interval 300 "*Numeric value specifies the number of seconds between checks for new mail. The maildrops for all visited folders are checked. -The buffer local variable vm-spooled-mail-waiting is set non-nil -in the buffers of those folders that have mail waiting.") + +A nil value means don't check for new mail. + +Note that mail if new mail is found, it is not retrieved. The +buffer local variable vm-spooled-mail-waiting is set non-nil in +the buffers of those folders that have mail waiting. VM uses +the displays \"Mail\" in the mode line of folders that have mail +waiting.") (defvar vm-spooled-mail-waiting nil "Value is non-nil if there is mail waiting for the current folder. @@ -2907,7 +2913,7 @@ ;; is loaded before highlight-headers.el (defvar highlight-headers-regexp "Subject[ \t]*:") (defvar vm-url-regexp - "<URL:\\([^>]+\\)>\\|\\(\\(file\\|ftp\\|gopher\\|http\\|https\\|news\\|wais\\|www\\)://[^ \t\n\f\r\"<>|()]*[^ \t\n\f\r\"<>|.!?(){}]\\)\\|\\(mailto:[^ \t\n\f\r\"<>|()]*[^ \t\n\f\r\"<>|.!?(){}]\\)" + "<URL:\\([^>\n]+\\)>\\|\\(\\(file\\|ftp\\|gopher\\|http\\|https\\|news\\|wais\\|www\\)://[^ \t\n\f\r\"<>|()]*[^ \t\n\f\r\"<>|.!?(){}]\\)\\|\\(mailto:[^ \t\n\f\r\"<>|()]*[^ \t\n\f\r\"<>|.!?(){}]\\)" "Regular expression that matches an absolute URL. The URL itself must be matched by a \\(..\\) grouping. VM will extract the URL by copying the lowest number grouping
--- a/lisp/vm/vm-version.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/vm/vm-version.el Mon Aug 13 09:50:14 2007 +0200 @@ -2,7 +2,7 @@ (provide 'vm-version) -(defconst vm-version "6.32" +(defconst vm-version "6.33" "Version number of VM.") (defun vm-version ()
--- a/lisp/vm/vm-window.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/vm/vm-window.el Mon Aug 13 09:50:14 2007 +0200 @@ -104,9 +104,11 @@ (defun vm-undisplay-buffer (buffer) (vm-save-buffer-excursion - (vm-maybe-delete-windows-or-frames-on buffer) - (let ((w (vm-get-buffer-window buffer))) - (and w (set-window-buffer w (other-buffer)))))) + (let ((vm-mutable-frames (and vm-mutable-frames pop-up-frames))) + (vm-maybe-delete-windows-or-frames-on buffer)) + (let (w) + (while (setq w (vm-get-buffer-window buffer)) + (set-window-buffer w (other-buffer buffer)))))) (defun vm-load-window-configurations (file) (save-excursion @@ -200,7 +202,8 @@ ;; the user not to lose here. (vm-replace-buffer-in-windows nonexistent-summary message) (and (get-buffer nonexistent-summary) - (vm-maybe-delete-windows-or-frames-on nonexistent-summary))) ))) + (vm-maybe-delete-windows-or-frames-on nonexistent-summary))) + config ))) (defun vm-save-window-configuration (tag) "Name and save the current window configuration.
--- a/lisp/w3/custom-load.el Mon Aug 13 09:49:11 2007 +0200 +++ b/lisp/w3/custom-load.el Mon Aug 13 09:50:14 2007 +0200 @@ -1,19 +1,19 @@ -(custom-put 'url-news 'custom-loads '("url-news")) -(custom-put 'w3-scripting 'custom-loads '("w3-script")) -(custom-put 'w3-hooks 'custom-loads '("w3-cus")) -(custom-put 'w3-display 'custom-loads '("w3-cus")) -(custom-put 'w3-parsing 'custom-loads '("w3-cus")) -(custom-put 'w3-menus 'custom-loads '("w3-cus" "w3-menu")) -(custom-put 'w3-printing 'custom-loads '("w3-cus")) -(custom-put 'w3-images 'custom-loads '("w3-cus")) -(custom-put 'w3-files 'custom-loads '("w3-cus")) +(custom-put 'ssl 'custom-loads '("ssl")) +(custom-put 'url-gateway 'custom-loads '("url-gw")) +(custom-put 'url 'custom-loads '("url-gw" "url-irc" "url-vars" "url" "url-news")) +(custom-put 'url-file 'custom-loads '("url-cache" "url-vars")) +(custom-put 'url-cache 'custom-loads '("url-cache" "url-vars")) +(custom-put 'url-history 'custom-loads '("url-vars")) +(custom-put 'url-cookie 'custom-loads '("url-cookie" "url-vars")) +(custom-put 'url-mime 'custom-loads '("url-vars")) +(custom-put 'url-hairy 'custom-loads '("url-vars")) (custom-put 'w3 'custom-loads '("w3-cus" "w3-script")) -(custom-put 'url-hairy 'custom-loads '("url-vars")) -(custom-put 'url-mime 'custom-loads '("url-vars")) -(custom-put 'url-cookie 'custom-loads '("url-cookie" "url-vars")) -(custom-put 'url-history 'custom-loads '("url-vars")) -(custom-put 'url-cache 'custom-loads '("url-cache" "url-vars")) -(custom-put 'url-file 'custom-loads '("url-cache" "url-vars")) -(custom-put 'url 'custom-loads '("url-gw" "url-irc" "url-vars" "url" "url-news")) -(custom-put 'url-gateway 'custom-loads '("url-gw")) -(custom-put 'ssl 'custom-loads '("ssl")) +(custom-put 'w3-files 'custom-loads '("w3-cus")) +(custom-put 'w3-images 'custom-loads '("w3-cus")) +(custom-put 'w3-printing 'custom-loads '("w3-cus")) +(custom-put 'w3-menus 'custom-loads '("w3-cus" "w3-menu")) +(custom-put 'w3-parsing 'custom-loads '("w3-cus")) +(custom-put 'w3-display 'custom-loads '("w3-cus")) +(custom-put 'w3-hooks 'custom-loads '("w3-cus")) +(custom-put 'w3-scripting 'custom-loads '("w3-script")) +(custom-put 'url-news 'custom-loads '("url-news"))
--- a/lwlib/lwlib.c Mon Aug 13 09:49:11 2007 +0200 +++ b/lwlib/lwlib.c Mon Aug 13 09:50:14 2007 +0200 @@ -56,6 +56,15 @@ */ static widget_info *all_widget_info = NULL; +/* boolean flag indicating that the menubar is active */ +int lw_menu_active = 0; + +/* X11 menubar widget */ +Widget lw_menubar_widget = NULL; + +/* whether the last menu operation was a keyboard accelerator */ +int lw_menu_accelerate = False; + /* Forward declarations */ static void @@ -243,6 +252,7 @@ copy->name = safe_strdup (val->name); copy->value = safe_strdup (val->value); copy->key = safe_strdup (val->key); + copy->accel = val->accel; copy->enabled = val->enabled; copy->selected = val->selected; copy->edited = False; @@ -538,6 +548,13 @@ safe_free_str (val1->key); val1->key = safe_strdup (val2->key); } + if (val1->accel != val2->accel) + { + EXPLAIN (val1->name, change, VISIBLE_CHANGE, "accelerator change", + val1->accel, val2->accel); + change = max (change, VISIBLE_CHANGE); + val1->accel = val2->accel; + } if (val1->enabled != val2->enabled) { EXPLAIN (val1->name, change, VISIBLE_CHANGE, "enablement change",
--- a/lwlib/lwlib.h Mon Aug 13 09:49:11 2007 +0200 +++ b/lwlib/lwlib.h Mon Aug 13 09:50:14 2007 +0200 @@ -116,6 +116,13 @@ char* value; /* keyboard equivalent. no implications for XtTranslations */ char* key; + /* accelerator key. For XEmacs, this should be a Lisp_Object holding a + char or symbol suitable for passing to event_matches_key_specifier_p. + Outside of emacs, this can be anything: an X KeySym is a good idea. + lwlib provides support functions for keyboard traversal of menus. Actual + implementation of those accelerators is up to the application. + */ + XtPointer accel; /* true if enabled */ Boolean enabled; /* true if selected */ @@ -148,6 +155,26 @@ typedef void (*lw_callback) (Widget w, LWLIB_ID id, XtPointer data); +/* menu stuff */ +/* maybe this should go into a generic lwmenu.h */ + +extern int lw_menu_active; + +#if defined (LWLIB_MENUBARS_LUCID) +#include "xlwmenu.h" +#define lw_set_menu xlw_set_menu +#define lw_push_menu xlw_push_menu +#define lw_pop_menu xlw_pop_menu +#define lw_set_item xlw_set_item +#define lw_map_menu xlw_map_menu +#define lw_display_menu xlw_display_menu +#define lw_kill_menus xlw_kill_menus +#define lw_get_entries xlw_get_entries +#define lw_menu_level xlw_menu_level +#else /* MENUBARS_LUCID */ +/* do this for the other toolkits too */ +#endif /* MENUBARS_LUCID */ + void lw_register_widget (CONST char* type, CONST char* name, LWLIB_ID id, widget_value* val, lw_callback pre_activate_cb, lw_callback selection_cb,
--- a/lwlib/xlwmenu.c Mon Aug 13 09:49:11 2007 +0200 +++ b/lwlib/xlwmenu.c Mon Aug 13 09:50:14 2007 +0200 @@ -47,6 +47,11 @@ #endif #include "xlwmenuP.h" +/* simple, naieve integer maximum */ +#ifndef max +#define max(a,b) ((a)>(b)?(a):(b)) +#endif + static char xlwMenuTranslations [] = "<BtnDown>: start()\n\ @@ -54,6 +59,8 @@ <BtnUp>: select()\n\ "; +extern Widget lw_menubar_widget; + #define offset(field) XtOffset(XlwMenuWidget, field) static XtResource xlwMenuResources[] = @@ -199,6 +206,8 @@ WidgetClass xlwMenuWidgetClass = (WidgetClass) &xlwMenuClassRec; +extern int lw_menu_accelerate; + /* Utilities */ #if 0 /* Apparently not used anywhere */ @@ -301,14 +310,16 @@ { if (!mw->menu.old_stack) { - mw->menu.old_stack_length = 10; + mw->menu.old_stack_length = max (10, n); mw->menu.old_stack = (widget_value**)XtCalloc (mw->menu.old_stack_length, sizeof (widget_value*)); } else if (mw->menu.old_stack_length < n) { + while (mw->menu.old_stack_length < n) mw->menu.old_stack_length *= 2; + mw->menu.old_stack = (widget_value**)XtRealloc ((char *)mw->menu.old_stack, mw->menu.old_stack_length * @@ -372,6 +383,39 @@ massaged_resource_char ['.'] = '_'; /* Convert Buffers... to buffers___ */ } +static int +string_width_u (XlwMenuWidget mw, +#ifdef NEED_MOTIF + XmString s +#else + char *string +#endif + ) +{ +#ifdef NEED_MOTIF + Dimension width, height; + XmStringExtent (mw->menu.font_list, s, &width, &height); + return width; +#else + XCharStruct xcs; + int i,s=0,w=0; + int drop; + for (i=0;string[i];++i) { + if (string[i]=='%'&&string[i+1]=='_') { + XTextExtents (mw->menu.font, &string[s], i-s, &drop, &drop, &drop, &xcs); + w += xcs.width; + s = i + 2; + ++i; + } + } + if (string[s]) { + XTextExtents (mw->menu.font, &string[s], i-s, &drop, &drop, &drop, &xcs); + w += xcs.width; + } + return w; +#endif +} + static void massage_resource_name (CONST char *in, char *out) { @@ -714,6 +758,81 @@ #endif } +static void +string_draw_u (XlwMenuWidget mw, + Window window, + int x, int y, + GC gc, +#ifdef NEED_MOTIF + XmString string +#else + char *string +#endif +) +{ +#ifdef NEED_MOTIF + XmStringDraw (XtDisplay (mw), window, + mw->menu.font_list, + string, gc, + x, y, + 1000, /* ???? width */ + XmALIGNMENT_BEGINNING, + 0, /* ???? layout_direction */ + 0); +#else + int i,s=0; + for (i=0;string[i];++i) { + if (string[i]=='%'&&string[i+1]=='_') { + XCharStruct xcs; + int drop; + /* underline next character */ + if (i>s) +# ifdef USE_XFONTSET + XmbDrawString (XtDisplay (mw), window, mw->menu.font_set, gc, + x, y + mw->menu.font_ascent, &string[s], i-s); +# else + XDrawString (XtDisplay (mw), window, gc, + x, y + mw->menu.font_ascent, &string[s], i-s); +# endif /* USE_XFONTSET */ + + XTextExtents (mw->menu.font, &string[s], i-s, &drop, &drop, &drop, + &xcs); + x += xcs.width; + + s=i+3; + i+=2; + +# ifdef USE_XFONTSET + XmbDrawString (XtDisplay (mw), window, mw->menu.font_set, gc, + x, y + mw->menu.font_ascent, &string[i], 1); +# else + XDrawString (XtDisplay (mw), window, gc, + x, y + mw->menu.font_ascent, &string[i], 1); +# endif /* USE_XFONTSET */ + + XTextExtents (mw->menu.font, &string[i], 1, &drop, &drop, &drop, + &xcs); + + XDrawLine (XtDisplay (mw), window, gc, x - 1, + y + mw->menu.font_ascent + 1, + x + xcs.width - 1, y + mw->menu.font_ascent + 1 ); + + x += xcs.width; + } + } + if (string[s]) +# ifdef USE_XFONTSET + XmbDrawString (XtDisplay (mw), window, mw->menu.font_set, gc, + x, y + mw->menu.font_ascent, &string[s], + strlen (&string[s])); +# else + XDrawString (XtDisplay (mw), window, gc, + x, y + mw->menu.font_ascent, &string[s], + strlen (&string[s])); +# endif /* USE_XFONTSET */ +#endif /* NEED_MOTIF */ +} + static void binding_draw (XlwMenuWidget mw, Window w, int x, int y, GC gc, char *value) { @@ -1354,7 +1473,7 @@ /* no left column decoration */ *toggle_width = mw->menu.horizontal_margin + mw->menu.shadow_thickness;; - *label_width = string_width (mw, resource_widget_value (mw, val)); + *label_width = string_width_u (mw, resource_widget_value (mw, val)); *bindings_width = mw->menu.horizontal_margin + mw->menu.shadow_thickness; } @@ -1378,7 +1497,7 @@ /* * Draw the label string. */ - string_draw (mw, + string_draw_u (mw, window, x + label_offset, y + y_offset, mw->menu.foreground_gc, @@ -1452,7 +1571,7 @@ gc = mw->menu.inactive_gc; } - string_draw (mw, + string_draw_u (mw, window, x + label_offset, y + y_offset, gc, @@ -2025,7 +2144,13 @@ if (level < mw->menu.old_depth - 1) following_item = mw->menu.old_stack [level + 1]; else - following_item = NULL; + { + if (lw_menu_accelerate + && level == mw->menu.old_depth - 1 + && mw->menu.old_stack [level]->type == CASCADE_TYPE) + just_compute_p = True; + following_item = NULL; + } #if SLOPPY_TYPES == 1 puts("==================================================================="); @@ -2285,6 +2410,12 @@ break; last_same = i - 1; + if (lw_menu_accelerate + && last_same + && last_same == old_depth - 1 + && old_stack [last_same]->contents) + last_same--; + /* Memorize the previously selected item to be able to refresh it */ old_selection = last_same + 1 < old_depth ? old_stack [last_same + 1] : NULL; if (old_selection && !old_selection->enabled) @@ -2297,6 +2428,7 @@ display_menu (called below) uses the old_stack to know what to display. */ for (i = last_same + 1; i < new_depth; i++) old_stack [i] = new_stack [i]; + mw->menu.old_depth = new_depth; /* refresh the last seletion */ @@ -2311,6 +2443,9 @@ window_state *previous_ws = &windows [i - 1]; window_state *ws = &windows [i]; + if (lw_menu_accelerate && i == new_depth - 1) + break; + ws->x = previous_ws->x + selection_position.x; ws->y = previous_ws->y + selection_position.y; @@ -2329,8 +2464,15 @@ } /* unmap the menus that popped down */ - for (i = new_depth - 1; i < old_depth; i++) - if (i >= new_depth || !new_stack [i]->contents) + + last_same = new_depth; + if (lw_menu_accelerate + && last_same > 1 + && new_stack [last_same - 1]->contents) + last_same--; + + for (i = last_same - 1; i < old_depth; i++) + if (i >= last_same || !new_stack [i]->contents) XUnmapWindow (XtDisplay (mw), windows [i].window); } @@ -3065,21 +3207,29 @@ event = &dummy; } + lw_menu_accelerate = False; handle_single_motion_event (mw, event, select_p); } +Time x_focus_timestamp_really_sucks_fix_me_better; + static void Start (Widget w, XEvent *ev, String *params, Cardinal *num_params) { XlwMenuWidget mw = (XlwMenuWidget)w; + lw_menubar_widget = w; + + lw_menu_active = True; + if (!mw->menu.pointer_grabbed) { mw->menu.menu_post_time = ev->xbutton.time; mw->menu.menu_bounce_time = 0; mw->menu.next_release_must_exit = True; mw->menu.last_selected_val = NULL; - + x_focus_timestamp_really_sucks_fix_me_better = + ((XButtonPressedEvent*)ev)->time; XtCallCallbackList ((Widget)mw, mw->menu.open, NULL); /* notes the absolute position of the menubar window */ @@ -3111,6 +3261,8 @@ XlwMenuWidget mw = (XlwMenuWidget)w; widget_value *selected_item = mw->menu.old_stack [mw->menu.old_depth - 1]; + lw_menu_accelerate = False; + /* If user releases the button quickly, without selecting anything, after the initial down-click that brought the menu up, do nothing. */ @@ -3140,10 +3292,175 @@ XtPopdown (XtParent (mw)); } + lw_menu_active = False; + + x_focus_timestamp_really_sucks_fix_me_better = + ((XButtonPressedEvent*)ev)->time; + /* callback */ XtCallCallbackList ((Widget) mw, mw->menu.select, (XtPointer) selected_item); } +/* Action procedures for keyboard accelerators */ + +/* set the menu */ +void +xlw_set_menu (Widget w, widget_value *val) +{ + lw_menubar_widget = w; + set_new_state ((XlwMenuWidget)w, val, 1); +} + +/* prepare the menu structure via the call-backs */ +void +xlw_map_menu (Time t) +{ + XlwMenuWidget mw = (XlwMenuWidget)lw_menubar_widget; + + lw_menu_accelerate = True; + + if (!mw->menu.pointer_grabbed) + { + XWindowAttributes ret; + Window parent,root; + Window *waste; + unsigned int num_waste; + + lw_menu_active = True; + + mw->menu.menu_post_time = t; + mw->menu.menu_bounce_time = 0; + + mw->menu.next_release_must_exit = True; + mw->menu.last_selected_val = NULL; + + XtCallCallbackList ((Widget)mw, mw->menu.open, NULL); + + /* do this for keyboards too! */ + /* notes the absolute position of the menubar window */ + /* + mw->menu.windows [0].x = ev->xmotion.x_root - ev->xmotion.x; + mw->menu.windows [0].y = ev->xmotion.y_root - ev->xmotion.y; + */ + + /* get the geometry of the menubar */ + + /* there has to be a better way than this. */ + + mw->menu.windows [0].x = 0; + mw->menu.windows [0].y = 0; + + parent = XtWindow (lw_menubar_widget); + do + { + XGetWindowAttributes (XtDisplay (lw_menubar_widget), parent, &ret); + mw->menu.windows [0].x += ret.x; + mw->menu.windows [0].y += ret.y; + + if (parent) + XQueryTree (XtDisplay (lw_menubar_widget), parent, &root, &parent, &waste, + &num_waste); + if (waste) + { + XFree (waste); + } + } + while (parent != root); + + XtGrabPointer ((Widget)mw, False, + (ButtonMotionMask | ButtonReleaseMask | ButtonPressMask), + GrabModeAsync, GrabModeAsync, + None, mw->menu.cursor_shape, t); + mw->menu.pointer_grabbed = True; + } +} + +/* display the stupid menu already */ +void +xlw_display_menu (Time t) +{ + XlwMenuWidget mw = (XlwMenuWidget)lw_menubar_widget; + + lw_menu_accelerate = True; + + remap_menubar (mw); + + /* Sync with the display. Makes it feel better on X terms. */ + XFlush (XtDisplay (mw)); +} + +/* push a sub menu */ +void +xlw_push_menu (widget_value *val) +{ + push_new_stack ((XlwMenuWidget)lw_menubar_widget, val); +} + +/* pop a sub menu */ +int +xlw_pop_menu (void) +{ + if (((XlwMenuWidget)lw_menubar_widget)->menu.new_depth > 0) + ((XlwMenuWidget)lw_menubar_widget)->menu.new_depth --; + else + return 0; + return 1; +} + +void +xlw_kill_menus (widget_value *val) +{ + XlwMenuWidget mw = (XlwMenuWidget)lw_menubar_widget; + + lw_menu_accelerate = False; + + mw->menu.new_depth = 1; + remap_menubar (mw); + + if (mw->menu.pointer_grabbed) + { + XtUngrabPointer (lw_menubar_widget, CurrentTime); + mw->menu.pointer_grabbed = False; + } + + lw_menu_active = False; + XtCallCallbackList (lw_menubar_widget, mw->menu.select, (XtPointer)val); +} + +/* set the menu item */ +void +xlw_set_item (widget_value *val) +{ + if (((XlwMenuWidget)lw_menubar_widget)->menu.new_depth > 0) + ((XlwMenuWidget) lw_menubar_widget)->menu.new_depth --; + push_new_stack ((XlwMenuWidget) lw_menubar_widget, val); +} + +/* get either the current entry or a list of all entries in the current submenu */ +widget_value * +xlw_get_entries (int allp) +{ + XlwMenuWidget mw = (XlwMenuWidget)lw_menubar_widget; + if (allp) + { + if (mw->menu.new_depth >= 2) + return mw->menu.new_stack [mw->menu.new_depth - 2]->contents; + else + return mw->menu.new_stack[0]; + } + else + if (mw->menu.new_depth >= 1) + return mw->menu.new_stack [mw->menu.new_depth - 1]; + + return NULL; +} + +int +xlw_menu_level (void) +{ + return ((XlwMenuWidget)lw_menubar_widget)->menu.new_depth; +} + /* Special code to pop-up a menu */ void
--- a/lwlib/xlwmenu.h Mon Aug 13 09:49:11 2007 +0200 +++ b/lwlib/xlwmenu.h Mon Aug 13 09:50:14 2007 +0200 @@ -74,4 +74,16 @@ void xlw_pop_up_menu (XlwMenuWidget mw, XButtonPressedEvent* event); +/* menu accelerator */ + +void xlw_set_menu (Widget w, widget_value *val); +void xlw_push_menu (widget_value *val); +int xlw_pop_menu (void); +void xlw_set_item (widget_value *val); +void xlw_map_menu (Time t); +void xlw_display_menu (Time t); +void xlw_kill_menus (widget_value *val); +widget_value *xlw_get_entries (int allp); +int xlw_menu_level (void); + #endif /* _XlwMenu_h */
--- a/man/ChangeLog Mon Aug 13 09:49:11 2007 +0200 +++ b/man/ChangeLog Mon Aug 13 09:50:14 2007 +0200 @@ -1,3 +1,21 @@ +1997-07-17 Steven L Baur <steve@altair.xemacs.org> + + * Makefile: makeinfo-1.68 is verified to work. + + * tm/Makefile (../../info/%-ja.info): Die if not running + XEmacs/Mule. + (../../info/%-en.info): Inherit setting of MAKEINFO. + +Tue Jul 15 04:18:38 1997 Barry A. Warsaw <cc-mode-help@python.org> + + * cc-mode.texi: + Describe the variable c-indent-comments-syntactically-p. + +1997-07-15 Steven L Baur <steve@altair.xemacs.org> + + * internals/internals.texi (Top): Convert Buffer@'s node name to + `Buffer's' because the former confuses makeinfo. + Thu Jul 3 22:54:03 1997 Barry A. Warsaw <cc-mode-help@python.org> * cc-mode.texi: Fixed spelling of Texinfo
--- a/man/Makefile Mon Aug 13 09:49:11 2007 +0200 +++ b/man/Makefile Mon Aug 13 09:50:14 2007 +0200 @@ -26,7 +26,7 @@ EMACS = xemacs EMACSFLAGS = -batch -q -no-site-file -# NOTE: You *must* have a patched makeinfo-1.67 or later to rebuild the +# NOTE: You *must* have makeinfo-1.68 or later to rebuild the # info tree. MAKEINFO = makeinfo
--- a/man/cc-mode.texi Mon Aug 13 09:49:11 2007 +0200 +++ b/man/cc-mode.texi Mon Aug 13 09:50:14 2007 +0200 @@ -46,7 +46,7 @@ @comment The title is printed in a large font. @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -@center @titlefont{CC Mode 5.12} +@center @titlefont{CC Mode 5.13} @sp 2 @center @subtitlefont{A GNU Emacs mode for editing C, C++, Objective-C, and Java code} @sp 2 @@ -2300,6 +2300,23 @@ That way, the current setting for the buffer local value of @code{c-special-indent-hook} won't be overridden. +@kindex M-; +@findex indent-for-comment +@vindex c-indent-comments-syntactically-p +@vindex indent-comments-syntactically-p (c-) +@vindex comment-column + +Normally, the standard Emacs command @kbd{M-;} +(@code{indent-for-comment}) will indent comment-only lines to +@code{comment-column}. Some users however, prefer that @kbd{M-;} act +just like @kbd{TAB} for purposes of indenting comment-only lines; +i.e. they want the comments to always indent as they would for normal +code, regardless of whether @kbd{TAB} or @kbd{M-;} were used. This +behavior is controlled by the variable +@code{c-indent-comments-syntactically-p}. When @code{nil} (the +default), @kbd{M-;} indents comment-only lines to @code{comment-column}, +otherwise, they are indented just as they would be if @kbd{TAB} were +typed. @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @node Syntactic Symbols, Performance Issues, Customizing Indentation, Top
--- a/man/ediff.texi Mon Aug 13 09:49:11 2007 +0200 +++ b/man/ediff.texi Mon Aug 13 09:50:14 2007 +0200 @@ -5,8 +5,9 @@ @comment %**start of header (This is for running Texinfo on a region.) @comment Using ediff.info instead of ediff in setfilename breaks DOS. +@comment @setfilename ediff +@comment @setfilename ediff.info @setfilename ediff -@comment @setfilename ediff.info @settitle Ediff User's Manual @synindex vr cp @@ -39,16 +40,16 @@ @titlepage @title Ediff User's Manual @sp 4 -@subtitle Ediff version 2.62 +@subtitle Ediff version 2.66 @sp 1 -@subtitle July 1996 +@subtitle July 1997 @sp 5 @author Michael Kifer @page @vskip 0pt plus 1filll @noindent -Copyright @copyright{} 1995, 1996 Free Software Foundation, Inc. +Copyright @copyright{} 1995, 1996, 1997 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -59,8 +60,9 @@ @node Top, Introduction, (dir), (dir) + @menu -* Introduction:: About Ediff. +* Introduction:: About Ediff 2.66. * Major Entry Points:: How to use Ediff. * Session Commands:: Ediff commands used within a session. * Registry of Ediff Sessions:: Keeping track of multiple Ediff sessions. @@ -114,7 +116,7 @@ compressed files, automatically ftp'ing them over and uncompressing them. @xref{Remote and Compressed Files}, for details. -This package builds upon ideas borrowed from Emerge and several Ediff's +This package builds upon ideas borrowed from Emerge, and several of Ediff's functions are adaptations from Emerge. Although Ediff subsumes and greatly extends Emerge, much of the functionality in Ediff is influenced by Emerge. The architecture and the interface are, of course, drastically different. @@ -1683,7 +1685,8 @@ @item ediff-patch-options Options to pass to @code{ediff-patch-program}. -Note: the `-b' option should be specified in `ediff-backup-specs'. +Note: the `-b' and `-z' options should be specified in +`ediff-backup-specs', not in @code{ediff-patch-options}. It is recommended to pass the `-f' option to the patch program, so it won't ask questions. However, some implementations don't accept this option, in @@ -1702,6 +1705,7 @@ Some versions of the patch program let the user specify `-b backup-extension'. Other versions only permit `-b', which (usually) assumes the extension `.orig'. +Yet others force you to use `-z<backup-extension>'. Note that both `ediff-backup-extension' and `ediff-backup-specs' must be properly set. If your patch program takes the option `-b', but not @@ -2053,6 +2057,10 @@ unless the file is under version control. For a checked-in file under version control, Ediff first tries to check the file out. +@item ediff-make-buffers-readonly-at-startup nil +@vindex ediff-make-buffers-readonly-at-startup +If t, all variant buffers are made read-only at Ediff startup. + @item ediff-keep-variants @vindex @code{ediff-keep-variants} The default is @code{t}, meaning that the buffers being compared or merged will @@ -2163,8 +2171,9 @@ Boris Goldowsky <boris@@cs.rochester.edu> made it possible to highlight fine differences in Ediff buffers. Alastair Burt <burt@@dfki.uni-kl.de> ported Ediff to XEmacs, Eric Freudenthal <freudent@@jan.ultra.nyu.edu> -made it work with VC, and Marc Paquette <marcpa@@cam.org> wrote the -toolbar support package for Ediff. +made it work with VC, Marc Paquette <marcpa@@cam.org> wrote the +toolbar support package for Ediff, and Hrvoje Niksic <hniksic@@srce.hr> +adapted it to the Emacs customization package. Many people provided help with bug reports, patches, and advice. Without them, Ediff would not be nearly as useful as it is today. @@ -2172,15 +2181,19 @@ @example Neal Becker (neal@@ctd.comsat.com), -Alastair Burt (burt@@dfki.uni-kl.de), Paul Bibilo (peb@@delcam.co.uk), +Alastair Burt (burt@@dfki.uni-kl.de), +Paul Bibilo (peb@@delcam.co.uk), Kevin Broadey (KevinB@@bartley.demon.co.uk), Harald Boegeholz (hwb@@machnix.mathematik.uni-stuttgart.de), Bradley A. Bosch (brad@@lachman.com), Michael D. Carney (carney@@ltx-tr.com), Jin S. Choi (jin@@atype.com), +Scott Cummings (cummings@@adc.com), Albert Dvornik (bert@@mit.edu), Eric Eide (eeide@@asylum.cs.utah.edu), -Kevin Esler (esler@@ch.hp.com), Robert Estes (estes@@ece.ucdavis.edu), +Paul Eggert (eggert@@twinsun.com), +Kevin Esler (esler@@ch.hp.com), +Robert Estes (estes@@ece.ucdavis.edu), Xavier Fornari (xavier@@europe.cma.fr), Eric Freudenthal (freudent@@jan.ultra.nyu.edu), Job Ganzevoort (Job.Ganzevoort@@cwi.nl), @@ -2188,21 +2201,27 @@ Allan Gottlieb (gottlieb@@allan.ultra.nyu.edu), Xiaoli Huang (hxl@@epic.com), Lars Magne Ingebrigtsen (larsi@@ifi.uio.no), -Larry Gouge (larry@@itginc.com), Karl Heuer (kwzh@@gnu.ai.mit.edu), -(irvine@@lks.csi.com), (jaffe@@chipmunk.cita.utoronto.ca), +Larry Gouge (larry@@itginc.com), +Karl Heuer (kwzh@@gnu.ai.mit.edu), +(irvine@@lks.csi.com), +(jaffe@@chipmunk.cita.utoronto.ca), David Karr (dkarr@@nmo.gtegsc.com), Norbert Kiesel (norbert@@i3.informatik.rwth-aachen.de), -Leigh L Klotz (klotz@@adoc.xerox.com), Fritz Knabe (Fritz.Knabe@@ecrc.de), +Leigh L Klotz (klotz@@adoc.xerox.com), +Fritz Knabe (Fritz.Knabe@@ecrc.de), Heinz Knutzen (hk@@informatik.uni-kiel.d400.de), Andrew Koenig (ark@@research.att.com), -Ken Laprade (laprade@@dw3f.ess.harris.com), Will C Lauer (wcl@@cadre.com), -Richard Levitte (levitte@@e.kth.se), Mike Long (mike.long@@analog.com), +Ken Laprade (laprade@@dw3f.ess.harris.com), +Will C Lauer (wcl@@cadre.com), +Richard Levitte (levitte@@e.kth.se), +Mike Long (mike.long@@analog.com), Martin Maechler (maechler@@stat.math.ethz.ch), -Simon Marshall (Simon.Marshall@@gnu.ai.mit.edu), +Simon Marshall (simon@@gnu.ai.mit.edu), Richard Mlynarik (mly@@adoc.xerox.com), Chris Murphy (murphycm@@sun.aston.ac.uk), Erik Naggum (erik@@naggum.no), -Eyvind Ness (Eyvind.Ness@@hrp.no), Ray Nickson (nickson@@cs.uq.oz.au), +Eyvind Ness (Eyvind.Ness@@hrp.no), +Ray Nickson (nickson@@cs.uq.oz.au), David Petchey (petchey_david@@jpmorgan.com), Benjamin Pierce (benjamin.pierce@@cl.cam.ac.uk), Tibor Polgar (tlp00@@spg.amdahl.com), @@ -2211,16 +2230,20 @@ C.S. Roberson (roberson@@aur.alcatel.com), Kevin Rodgers (kevin.rodgers@@ihs.com), Sandy Rutherford (sandy@@ibm550.sissa.it), -Heribert Schuetz (schuetz@@ecrc.de), Andy Scott (ascott@@pcocd2.intel.com), +Heribert Schuetz (schuetz@@ecrc.de), +Andy Scott (ascott@@pcocd2.intel.com), Axel Seibert (axel@@tumbolia.ppp.informatik.uni-muenchen.de), Scott O. Sherman (Scott.Sherman@@mci.com), Richard Stallman (rms@@gnu.ai.mit.edu), Richard Stanton (stanton@@haas.berkeley.edu), -Ake Stenhoff (etxaksf@@aom.ericsson.se), Stig (stig@@hackvan.com), -Peter Stout (Peter_Stout@@cs.cmu.edu), Chuck Thompson (cthomp@@cs.uiuc.edu), +Ake Stenhoff (etxaksf@@aom.ericsson.se), +Stig (stig@@hackvan.com), +Peter Stout (Peter_Stout@@cs.cmu.edu), +Chuck Thompson (cthomp@@cs.uiuc.edu), Ray Tomlinson (tomlinso@@bbn.com), Raymond Toy (toy@@rtp.ericsson.se), Philippe Waroquiers (philippe.waroquiers@@eurocontrol.be), +Klaus Weber (gizmo@@zork.north.de), Ben Wing (wing@@666.com), Ilya Zakharevich (ilya@@math.ohio-state.edu), Eli Zaretskii (eliz@@is.elta.co.il)
--- a/man/info-stnd.texi Mon Aug 13 09:49:11 2007 +0200 +++ b/man/info-stnd.texi Mon Aug 13 09:50:14 2007 +0200 @@ -1,55 +1,130 @@ -@c This file is meant to be included in any arbitrary piece of -@c documentation that wishes to describe the info program. -@c -@c This file documents the use of the standalone GNU Info program, -@c versions 2.7 and later. It was authored by Brian Fox (bfox@ai.mit.edu). - -@ifclear InfoProgVer -@set InfoProgVer 2.10 -@end ifclear +\input texinfo @c -*-texinfo-*- +@comment %**start of header +@setfilename info-stnd.info +@settitle GNU Info +@set InfoProgVer 2.11 +@paragraphindent none +@footnotestyle end @synindex vr cp @synindex fn cp @synindex ky cp +@comment %**end of header +@comment $Id: info-stnd.texi,v 1.2 1997/07/19 22:11:47 steve Exp $ -@heading What is Info? +@dircategory Texinfo documentation system +@direntry +* info program: (info-stnd). Standalone Info-reading program. +@end direntry + +@ifinfo +This file documents GNU Info, a program for viewing the on-line formatted +versions of Texinfo files. This documentation is different from the +documentation for the Info reader that is part of GNU Emacs. If you do +not know how to use Info, but have a working Info reader, you should +read that documentation first. + +Copyright @copyright{} 1992, 93, 96, 97 Free Software Foundation, Inc. -This text documents the use of the GNU Info program, version -@value{InfoProgVer}. +Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + +@ignore +Permission is granted to process this file through TeX and print the +results, provided the printed document carries a copying permission +notice identical to this one except for the removal of this paragraph +(this paragraph not being relevant to the printed manual). +@end ignore + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided also that the +sections entitled ``Copying'' and ``GNU General Public License'' are +included exactly as in the original, and provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. -@dfn{Info} is a program which is used to view info files on an ASCII -terminal. @dfn{info files} are the result of processing texinfo files -with the program @code{makeinfo} or with the Emacs command @code{M-x -texinfo-format-buffer}. Finally, @dfn{texinfo} is a documentation -language which allows a printed manual and online documentation (an info -file) to be produced from a single source file. +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation +approved by the Free Software Foundation. +@end ifinfo + +@titlepage +@title GNU Info User's Guide +@subtitle For GNU Info version @value{InfoProgVer} +@author Brian J. Fox (bfox@@ai.mit.edu) +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 1992, 1993, 1997 Free Software Foundation + +Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided also that the +sections entitled ``Copying'' and ``GNU General Public License'' are +included exactly as in the original, and provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation +approved by the Free Software Foundation. +@end titlepage + +@ifinfo +@node Top, What is Info, , (dir) +@top The GNU Info Program + +This file documents GNU Info, a program for viewing the on-line +formatted versions of Texinfo files, version @value{InfoProgVer}. This +documentation is different from the documentation for the Info reader +that is part of GNU Emacs. +@end ifinfo @menu -* Options:: Options you can pass on the command line. -* Cursor Commands:: Commands which move the cursor within a node. -* Scrolling Commands:: Commands for moving the node around in a window. -* Node Commands:: Commands for selecting a new node. -* Searching Commands:: Commands for searching an info file. -* Xref Commands:: Commands for selecting cross references. -* Window Commands:: Commands which manipulate multiple windows. -* Printing Nodes:: How to print out the contents of a node. -* Miscellaneous Commands:: A few commands that defy categories. -* Variables:: How to change the default behaviour of Info. -@ifset NOTSET -* Info for Sys Admins:: How to setup Info. Using special options. -@end ifset -@ifset STANDALONE -* GNU Info Global Index:: Global index containing keystrokes, command names, - variable names, and general concepts. -@end ifset +* What is Info:: +* Options:: Options you can pass on the command line. +* Cursor Commands:: Commands which move the cursor within a node. +* Scrolling Commands:: Commands for moving the node around + in a window. +* Node Commands:: Commands for selecting a new node. +* Searching Commands:: Commands for searching an Info file. +* Xref Commands:: Commands for selecting cross references. +* Window Commands:: Commands which manipulate multiple windows. +* Printing Nodes:: How to print out the contents of a node. +* Miscellaneous Commands:: A few commands that defy categories. +* Variables:: How to change the default behavior of Info. +* GNU Info Global Index:: Global index containing keystrokes, + command names, variable names, + and general concepts. @end menu -@node Options +@node What is Info, Options, Top, Top +@chapter What is Info? + +@iftex +This file documents GNU Info, a program for viewing the on-line formatted +versions of Texinfo files, version @value{InfoProgVer}. +@end iftex + +@dfn{Info} is a program which is used to view Info files on an ASCII +terminal. @dfn{Info files} are the result of processing Texinfo files +with the program @code{makeinfo} or with one of the Emacs commands, such +as @code{M-x texinfo-format-buffer}. Texinfo itself is a documentation +system that uses a single source file to produce both on-line +information and printed output. You can typeset and print the +files that you read in Info.@refill + +@node Options, Cursor Commands, What is Info, Top @chapter Command Line Options @cindex command line options @cindex arguments, command line GNU Info accepts several options to control the initial node being -viewed, and to specify which directories to search for info files. Here +viewed, and to specify which directories to search for Info files. Here is a template showing an invocation of GNU Info from the shell: @example @@ -63,41 +138,49 @@ @cindex directory path @item --directory @var{directory-path} @itemx -d @var{directory-path} -Adds @var{directory-path} to the list of directory paths searched when +Add @var{directory-path} to the list of directory paths searched when Info needs to find a file. You may issue @code{--directory} multiple -times; once for each directory which contains info files. +times; once for each directory which contains Info files. Alternatively, you may specify a value for the environment variable @code{INFOPATH}; if @code{--directory} is not given, the value of @code{INFOPATH} is used. The value of @code{INFOPATH} is a colon -separated list of directory names. If you do not supply -@code{INFOPATH} or @code{--directory-path} a default path is used. +separated list of directory names. If you do not supply @code{INFOPATH} +or @code{--directory-path}, Info uses a default path. @item --file @var{filename} @itemx -f @var{filename} -@cindex info file, selecting -Specifies a particular info file to visit. Instead of visiting the file -@code{dir}, Info will start with @code{(@var{filename})Top} as the first -file and node. +@cindex Info file, selecting +Specify a particular Info file to visit. By default, Info visits +the file @code{dir}; if you use this option, Info will start with +@code{(@var{filename})Top} as the first file and node. + +@item --index-search @var{string} +@cindex index search, selecting +@cindex online help, using Info as +Go to the index entry @var{string} in the Info file specified with +@samp{--file}. If no such entry, print @samp{no entries found} and exit +with nonzero status. This can used from another program as a way to +provide online help. @item --node @var{nodename} @itemx -n @var{nodename} @cindex node, selecting -Specifies a particular node to visit in the initial file loaded. This -is especially useful in conjunction with @code{--file}@footnote{Of -course, you can specify both the file and node in a @code{--node} -command; but don't forget to escape the open and close parentheses from -the shell as in: @code{info --node '(emacs)Buffers'}}. You may specify -@code{--node} multiple times; for an interactive Info, each -@var{nodename} is visited in its own window, for a non-interactive Info -(such as when @code{--output} is given) each @var{nodename} is processed -sequentially. +Specify a particular node to visit in the initial file that Info +loads. This is especially useful in conjunction with +@code{--file}@footnote{Of course, you can specify both the file and node +in a @code{--node} command; but don't forget to escape the open and +close parentheses from the shell as in: @code{info --node +"(emacs)Buffers"}}. You may specify @code{--node} multiple times; for +an interactive Info, each @var{nodename} is visited in its own window, +for a non-interactive Info (such as when @code{--output} is given) each +@var{nodename} is processed sequentially. @item --output @var{filename} @itemx -o @var{filename} @cindex file, outputting to @cindex outputting to a file -Specify @var{filename} as the name of a file to output to. Each node -that Info visits will be output to @var{filename} instead of +Specify @var{filename} as the name of a file to which to direct output. +Each node that Info visits will be output to @var{filename} instead of interactively viewed. A value of @code{-} for @var{filename} specifies the standard output. @@ -106,7 +189,7 @@ This option only has meaning when given in conjunction with @code{--output}. It means to recursively output the nodes appearing in the menus of each node being output. Menu items which resolve to -external info files are not output, and neither are menu items which are +external Info files are not output, and neither are menu items which are members of an index. Each node is only output once. @item --help @@ -119,9 +202,9 @@ @item @var{menu-item} @cindex menu, following -Remaining arguments to Info are treated as the names of menu items. The -first argument would be a menu item in the initial node visited, while -the second argument would be a menu item in the first argument's node. +Info treats its remaining arguments as the names of menu items. The +first argument is a menu item in the initial node visited, while +the second argument is a menu item in the first argument's node. You can easily move to the node of your choice by specifying the menu names which describe the path to that node. For example, @@ -129,15 +212,16 @@ info emacs buffers @end example +@noindent first selects the menu item @samp{Emacs} in the node @samp{(dir)Top}, and then selects the menu item @samp{Buffers} in the node @samp{(emacs)Top}. - @end table -@node Cursor Commands +@node Cursor Commands, Scrolling Commands, Options, Top @chapter Moving the Cursor @cindex cursor, moving + Many people find that reading screens of text page by page is made easier when one is able to indicate particular pieces of text with some kind of pointing device. Since this is the case, GNU Info (both the @@ -145,7 +229,7 @@ move the cursor about the screen. The notation used in this manual to describe keystrokes is identical to the notation used within the Emacs manual, and the GNU Readline manual. @xref{Characters, , Character -Conventions, emacs, the GNU Emacs Manual}, if you are unfamilar with the +Conventions, emacs, the GNU Emacs Manual}, if you are unfamiliar with the notation. The following table lists the basic cursor movement commands in Info. @@ -168,7 +252,7 @@ @item @code{C-n} (@code{next-line}) @kindex C-n @findex next-line -Moves the cursor down to the next line. +Move the cursor down to the next line. @item @code{C-p} (@code{prev-line}) @kindex C-p @@ -183,7 +267,7 @@ @item @code{C-e} (@code{end-of-line}) @kindex C-e, in Info windows @findex end-of-line -Moves the cursor to the end of the current line. +Move the cursor to the end of the current line. @item @code{C-f} (@code{forward-char}) @kindex C-f, in Info windows @@ -198,35 +282,35 @@ @item @code{M-f} (@code{forward-word}) @kindex M-f, in Info windows @findex forward-word -Moves the cursor forward a word. +Move the cursor forward a word. @item @code{M-b} (@code{backward-word}) -@kindex M-b, in Info winows +@kindex M-b, in Info windows @findex backward-word -Moves the cursor backward a word. +Move the cursor backward a word. @item @code{M-<} (@code{beginning-of-node}) @itemx @code{b} -@kindex b, in Info winows +@kindex b, in Info windows @kindex M-< @findex beginning-of-node -Moves the cursor to the start of the current node. +Move the cursor to the start of the current node. @item @code{M->} (@code{end-of-node}) @kindex M-> @findex end-of-node -Moves the cursor to the end of the current node. +Move the cursor to the end of the current node. @item @code{M-r} (@code{move-to-window-line}) @kindex M-r @findex move-to-window-line -Moves the cursor to a specific line of the window. Without a numeric +Move the cursor to a specific line of the window. Without a numeric argument, @code{M-r} moves the cursor to the start of the line in the center of the window. With a numeric argument of @var{n}, @code{M-r} moves the cursor to the start of the @var{n}th line in the window. @end table -@node Scrolling Commands +@node Scrolling Commands, Node Commands, Cursor Commands, Top @chapter Moving Text Within a Window @cindex scrolling @@ -257,7 +341,6 @@ @findex scroll-backward Shift the text in this window down. The inverse of @code{scroll-forward}. - @end table @cindex scrolling through node structure @@ -265,8 +348,8 @@ move forward and backward through the node structure of the file. If you press @key{SPC} while viewing the end of a node, or @key{DEL} while viewing the beginning of a node, what happens is controlled by the -variable @code{scroll-behaviour}. @xref{Variables, -@code{scroll-behaviour}}, for more information. +variable @code{scroll-behavior}. @xref{Variables, +@code{scroll-behavior}}, for more information. @table @asis @item @code{C-l} (@code{redraw-display}) @@ -292,7 +375,7 @@ invisible. @end table -@node Node Commands +@node Node Commands, Searching Commands, Scrolling Commands, Top @chapter Selecting a New Node @cindex nodes, selection of @@ -311,17 +394,17 @@ @item @code{n} (@code{next-node}) @kindex n @findex next-node -Selects the `Next' node. +Select the `Next' node. @item @code{p} (@code{prev-node}) @kindex p @findex prev-node -Selects the `Prev' node. +Select the `Prev' node. @item @code{u} (@code{up-node}) @kindex u @findex up-node -Selects the `Up' node. +Select the `Up' node. @end table You can easily select a node that you have already viewed in this window @@ -335,7 +418,7 @@ @item @code{l} (@code{history-node}) @kindex l @findex history-node -Selects the most recently selected node in this window. +Select the most recently selected node in this window. @end table Two additional commands make it easy to select the most commonly @@ -345,12 +428,12 @@ @item @code{t} (@code{top-node}) @kindex t @findex top-node -Selects the node @samp{Top} in the current info file. +Select the node @samp{Top} in the current Info file. @item @code{d} (@code{dir-node}) @kindex d @findex dir-node -Selects the directory node (i.e., the node @samp{(dir)}). +Select the directory node (i.e., the node @samp{(dir)}). @end table Here are some other commands which immediately result in the selection @@ -361,17 +444,17 @@ @kindex < @findex first-node Selects the first node which appears in this file. This node is most -often @samp{Top}, but it doesn't have to be. +often @samp{Top}, but it does not have to be. @item @code{>} (@code{last-node}) @kindex > @findex last-node -Selects the last node which appears in this file. +Select the last node which appears in this file. @item @code{]} (@code{global-next-node}) @kindex ] @findex global-next-node -Moves forward or down through node structure. If the node that you are +Move forward or down through node structure. If the node that you are currently viewing has a @samp{Next} pointer, that node is selected. Otherwise, if this node has a menu, the first menu item is selected. If there is no @samp{Next} and no menu, the same process is tried with the @@ -380,36 +463,36 @@ @item @code{[} (@code{global-prev-node}) @kindex [ @findex global-prev-node -Moves backward or up through node structure. If the node that you are +Move backward or up through node structure. If the node that you are currently viewing has a @samp{Prev} pointer, that node is selected. Otherwise, if the node has an @samp{Up} pointer, that node is selected, and if it has a menu, the last item in the menu is selected. @end table -You can get the same behaviour as @code{global-next-node} and +You can get the same behavior as @code{global-next-node} and @code{global-prev-node} while simply scrolling through the file with -@key{SPC} and @key{DEL}; @xref{Variables, @code{scroll-behaviour}}, for +@key{SPC} and @key{DEL}; @xref{Variables, @code{scroll-behavior}}, for more information. @table @asis @item @code{g} (@code{goto-node}) @kindex g @findex goto-node -Reads the name of a node and selects it. No completion is done while +Read the name of a node and select it. No completion is done while reading the node name, since the desired node may reside in a separate -file. The node must be typed exactly as it appears in the info file. A +file. The node must be typed exactly as it appears in the Info file. A file name may be included as with any node specification, for example @example @code{g(emacs)Buffers} @end example -finds the node @samp{Buffers} in the info file @file{emacs}. +finds the node @samp{Buffers} in the Info file @file{emacs}. @item @code{C-x k} (@code{kill-node}) @kindex C-x k @findex kill-node -Kills a node. The node name is prompted for in the echo area, with a +Kill a node. The node name is prompted for in the echo area, with a default of the current node. @dfn{Killing} a node means that Info tries hard to forget about it, removing it from the list of history nodes kept for the window where that node is found. Another node is selected in @@ -418,7 +501,7 @@ @item @code{C-x C-f} (@code{view-file}) @kindex C-x C-f @findex view-file -Reads the name of a file and selects the entire file. The command +Read the name of a file and selects the entire file. The command @example @code{C-x C-f @var{filename}} @end example @@ -430,60 +513,60 @@ @item @code{C-x C-b} (@code{list-visited-nodes}) @kindex C-x C-b @findex list-visited-nodes -Makes a window containing a menu of all of the currently visited nodes. +Make a window containing a menu of all of the currently visited nodes. This window becomes the selected window, and you may use the standard Info commands within it. @item @code{C-x b} (@code{select-visited-node}) @kindex C-x b @findex select-visited-node -Selects a node which has been previously visited in a visible window. +Select a node which has been previously visited in a visible window. This is similar to @samp{C-x C-b} followed by @samp{m}, but no window is created. @end table -@node Searching Commands +@node Searching Commands, Xref Commands, Node Commands, Top @chapter Searching an Info File @cindex searching GNU Info allows you to search for a sequence of characters throughout an -entire info file, search through the indices of an info file, or find -areas within an info file which discuss a particular topic. +entire Info file, search through the indices of an Info file, or find +areas within an Info file which discuss a particular topic. @table @asis @item @code{s} (@code{search}) @kindex s @findex search -Reads a string in the echo area and searches for it. +Read a string in the echo area and search for it. @item @code{C-s} (@code{isearch-forward}) @kindex C-s @findex isearch-forward -Interactively searches forward through the info file for a string as you +Interactively search forward through the Info file for a string as you type it. @item @code{C-r} (@code{isearch-backward}) @kindex C-r @findex isearch-backward -Interactively searches backward through the info file for a string as +Interactively search backward through the Info file for a string as you type it. @item @code{i} (@code{index-search}) @kindex i @findex index-search -Looks up a string in the indices for this info file, and selects a node +Look up a string in the indices for this Info file, and select a node where the found index entry points to. @item @code{,} (@code{next-index-match}) @kindex , @findex next-index-match -Moves to the node containing the next matching index item from the last +Move to the node containing the next matching index item from the last @samp{i} command. @end table The most basic searching command is @samp{s} (@code{search}). The @samp{s} command prompts you for a string in the echo area, and then -searches the remainder of the info file for an ocurrence of that string. +searches the remainder of the Info file for an occurrence of that string. If the string is found, the node containing it is selected, and the cursor is left positioned at the start of the found string. Subsequent @samp{s} commands show you the default search string within @samp{[} and @@ -494,21 +577,21 @@ string is looked up while you are typing it, instead of waiting until the entire search string has been specified. -@node Xref Commands +@node Xref Commands, Window Commands, Searching Commands, Top @chapter Selecting Cross References We have already discussed the @samp{Next}, @samp{Prev}, and @samp{Up} pointers which appear at the top of a node. In addition to these pointers, a node may contain other pointers which refer you to a -different node, perhaps in another info file. Such pointers are called +different node, perhaps in another Info file. Such pointers are called @dfn{cross references}, or @dfn{xrefs} for short. @menu -* Parts of an Xref:: What a cross reference is made of. -* Selecting Xrefs:: Commands for selecting menu or note items. +* Parts of an Xref:: What a cross reference is made of. +* Selecting Xrefs:: Commands for selecting menu or note items. @end menu -@node Parts of an Xref +@node Parts of an Xref, Selecting Xrefs, , Xref Commands @section Parts of an Xref Cross references have two major parts: the first part is called the @@ -522,7 +605,7 @@ target. @example -* Foo Label: Foo Target. More information about Foo. +* Foo Label: Foo Target. More information about Foo. @end example Note the @samp{.} which ends the name of the target. The @samp{.} is @@ -533,13 +616,13 @@ stand for a target name which is the same as the label name: @example -* Foo Commands:: Commands pertaining to Foo. +* Foo Commands:: Commands pertaining to Foo. @end example In the above example, the name of the target is the same as the name of the label, in this case @code{Foo Commands}. -You will normally see two types of cross references while viewing nodes: +You will normally see two types of cross reference while viewing nodes: @dfn{menu} references, and @dfn{note} references. Menu references appear within a node's menu; they begin with a @samp{*} at the beginning of a line, and continue with a label, a target, and a comment which @@ -548,7 +631,7 @@ Note references appear within the body of the node text; they begin with @code{*Note}, and continue with a label and a target. -Like @samp{Next}, @samp{Prev} and @samp{Up} pointers, cross references +Like @samp{Next}, @samp{Prev}, and @samp{Up} pointers, cross references can point to any valid node. They are used to refer you to a place where more detailed information can be found on a particular subject. Here is a cross reference which points to a node within the Texinfo @@ -556,7 +639,7 @@ Manual}, for more information on creating your own texinfo cross references. -@node Selecting Xrefs +@node Selecting Xrefs, , Parts of an Xref, Xref Commands @section Selecting Xrefs The following table lists the Info commands which operate on menu items. @@ -585,7 +668,7 @@ @item @code{M-x find-menu} @findex find-menu -Moves the cursor to the start of this node's menu. +Move the cursor to the start of this node's menu. @end table This table lists the Info commands which operate on note cross references. @@ -607,23 +690,23 @@ @item @code{TAB} (@code{move-to-next-xref}) @kindex TAB, in Info windows @findex move-to-next-xref -Moves the cursor to the start of the next nearest menu item or note +Move the cursor to the start of the next nearest menu item or note reference in this node. You can then use @key{RET} -(@code{select-reference-this-line} to select the menu or note reference. +(@code{select-reference-this-line}) to select the menu or note reference. @item @code{M-TAB} (@code{move-to-prev-xref}) @kindex M-TAB, in Info windows @findex move-to-prev-xref -Moves the cursor the start of the nearest previous menu item or note +Move the cursor the start of the nearest previous menu item or note reference in this node. @item @code{RET} (@code{select-reference-this-line}) @kindex RET, in Info windows @findex select-reference-this-line -Selects the menu item or note reference appearing on this line. +Select the menu item or note reference appearing on this line. @end table -@node Window Commands +@node Window Commands, Printing Nodes, Xref Commands, Top @chapter Manipulating Multiple Windows @cindex windows, manipulating @@ -639,35 +722,37 @@ windows. @menu -* The Mode Line:: What appears in the mode line? -* Basic Windows:: Manipulating windows in Info. -* The Echo Area:: Used for displaying errors and reading input. +* The Mode Line:: What appears in the mode line? +* Basic Windows:: Manipulating windows in Info. +* The Echo Area:: Used for displaying errors and reading input. @end menu -@node The Mode Line +@node The Mode Line, Basic Windows, , Window Commands @section The Mode Line A @dfn{mode line} is a line of inverse video which appears at the bottom -of an info window. It describes the contents of the window just above +of an Info window. It describes the contents of the window just above it; this information includes the name of the file and node appearing in that window, the number of screen lines it takes to display the node, and the percentage of text that is above the top of the window. It can -also tell you if the indirect tags table for this info file needs to be -updated, and whether or not the info file was compressed when stored on +also tell you if the indirect tags table for this Info file needs to be +updated, and whether or not the Info file was compressed when stored on disk. Here is a sample mode line for a window containing an uncompressed file named @file{dir}, showing the node @samp{Top}. @example +@group -----Info: (dir)Top, 40 lines --Top--------------------------------------- ^^ ^ ^^^ ^^ (file)Node #lines where +@end group @end example When a node comes from a file which is compressed on disk, this is indicated in the mode line with two small @samp{z}'s. In addition, if -the info file containing the node has been split into subfiles, the name +the Info file containing the node has been split into subfiles, the name of the subfile containing the node appears in the modeline as well: @example @@ -684,7 +769,7 @@ -----Info: *Completions*, 7 lines --All----------------------------------- @end example -@node Basic Windows +@node Basic Windows, The Echo Area, The Mode Line, Window Commands @section Window Commands It can be convenient to view more than one node at a time. To allow @@ -697,7 +782,7 @@ @cindex windows, selecting @kindex C-x o @findex next-window -Selects the next window on the screen. Note that the echo area can only be +Select the next window on the screen. Note that the echo area can only be selected if it is already in use, and you have left it temporarily. Normally, @samp{C-x o} simply moves the cursor into the next window on the screen, or if you are already within the last window, into the first @@ -707,14 +792,14 @@ @item @code{M-x prev-window} @findex prev-window -Selects the previous window on the screen. This is identical to +Select the previous window on the screen. This is identical to @samp{C-x o} with a negative argument. @item @code{C-x 2} (@code{split-window}) @cindex windows, creating @kindex C-x 2 @findex split-window -Splits the current window into two windows, both showing the same node. +Split the current window into two windows, both showing the same node. Each window is one half the size of the original window, and the cursor remains in the original window. The variable @code{automatic-tiling} can cause all of the windows on the screen to be resized for you @@ -725,41 +810,41 @@ @cindex windows, deleting @kindex C-x 0 @findex delete-window -Deletes the current window from the screen. If you have made too many +Delete the current window from the screen. If you have made too many windows and your screen appears cluttered, this is the way to get rid of some of them. @item @code{C-x 1} (@code{keep-one-window}) @kindex C-x 1 @findex keep-one-window -Deletes all of the windows excepting the current one. +Delete all of the windows excepting the current one. @item @code{ESC C-v} (@code{scroll-other-window}) @kindex ESC C-v, in Info windows @findex scroll-other-window -Scrolls the other window, in the same fashion that @samp{C-v} might -scroll the current window. Given a negative argument, the "other" -window is scrolled backward. +Scroll the other window, in the same fashion that @samp{C-v} might +scroll the current window. Given a negative argument, scroll the +"other" window backward. @item @code{C-x ^} (@code{grow-window}) @kindex C-x ^ @findex grow-window -Grows (or shrinks) the current window. Given a numeric argument, grows +Grow (or shrink) the current window. Given a numeric argument, grow the current window that many lines; with a negative numeric argument, -the window is shrunk instead. +shrink the window instead. @item @code{C-x t} (@code{tile-windows}) @cindex tiling @kindex C-x t @findex tile-windows -Divides the available screen space among all of the visible windows. +Divide the available screen space among all of the visible windows. Each window is given an equal portion of the screen in which to display its contents. The variable @code{automatic-tiling} can cause @code{tile-windows} to be called when a window is created or deleted. @xref{Variables, , @code{automatic-tiling}}. @end table -@node The Echo Area +@node The Echo Area, , Basic Windows, Window Commands @section The Echo Area @cindex echo area @@ -776,47 +861,47 @@ @item @code{C-f} (@code{echo-area-forward}) @kindex C-f, in the echo area @findex echo-area-forward -Moves forward a character. +Move forward a character. @item @code{C-b} (@code{echo-area-backward}) @kindex C-b, in the echo area @findex echo-area-backward -Moves backward a character. +Move backward a character. @item @code{C-a} (@code{echo-area-beg-of-line}) @kindex C-a, in the echo area @findex echo-area-beg-of-line -Moves to the start of the input line. +Move to the start of the input line. @item @code{C-e} (@code{echo-area-end-of-line}) @kindex C-e, in the echo area @findex echo-area-end-of-line -Moves to the end of the input line. +Move to the end of the input line. @item @code{M-f} (@code{echo-area-forward-word}) @kindex M-f, in the echo area @findex echo-area-forward-word -Moves forward a word. +Move forward a word. @item @code{M-b} (@code{echo-area-backward-word}) @kindex M-b, in the echo area @findex echo-area-backward-word -Moves backward a word. +Move backward a word. @item @code{C-d} (@code{echo-area-delete}) @kindex C-d, in the echo area @findex echo-area-delete -Deletes the character under the cursor. +Delete the character under the cursor. @item @code{DEL} (@code{echo-area-rubout}) @kindex DEL, in the echo area @findex echo-area-rubout -Deletes the character behind the cursor. +Delete the character behind the cursor. @item @code{C-g} (@code{echo-area-abort}) @kindex C-g, in the echo area @findex echo-area-abort -Cancels or quits the current operation. If completion is being read, +Cancel or quit the current operation. If completion is being read, @samp{C-g} discards the text of the input line which does not match any completion. If the input line is empty, @samp{C-g} aborts the calling function. @@ -824,28 +909,28 @@ @item @code{RET} (@code{echo-area-newline}) @kindex RET, in the echo area @findex echo-area-newline -Accepts (or forces completion of) the current input line. +Accept (or forces completion of) the current input line. @item @code{C-q} (@code{echo-area-quoted-insert}) @kindex C-q, in the echo area @findex echo-area-quoted-insert -Inserts the next character verbatim. This is how you can insert control +Insert the next character verbatim. This is how you can insert control characters into a search string, for example. @item @var{printing character} (@code{echo-area-insert}) @kindex printing characters, in the echo area @findex echo-area-insert -Inserts the character. +Insert the character. @item @code{M-TAB} (@code{echo-area-tab-insert}) @kindex M-TAB, in the echo area @findex echo-area-tab-insert -Inserts a TAB character. +Insert a TAB character. @item @code{C-t} (@code{echo-area-transpose-chars}) @kindex C-t, in the echo area @findex echo-area-transpose-chars -Transposes the characters at the cursor. +Transpose the characters at the cursor. @end table The next group of commands deal with @dfn{killing}, and @dfn{yanking} @@ -856,32 +941,32 @@ @item @code{M-d} (@code{echo-area-kill-word}) @kindex M-d, in the echo area @findex echo-area-kill-word -Kills the word following the cursor. +Kill the word following the cursor. @item @code{M-DEL} (@code{echo-area-backward-kill-word}) @kindex M-DEL, in the echo area @findex echo-area-backward-kill-word -Kills the word preceding the cursor. +Kill the word preceding the cursor. @item @code{C-k} (@code{echo-area-kill-line}) @kindex C-k, in the echo area @findex echo-area-kill-line -Kills the text from the cursor to the end of the line. +Kill the text from the cursor to the end of the line. @item @code{C-x DEL} (@code{echo-area-backward-kill-line}) @kindex C-x DEL, in the echo area @findex echo-area-backward-kill-line -Kills the text from the cursor to the beginning of the line. +Kill the text from the cursor to the beginning of the line. @item @code{C-y} (@code{echo-area-yank}) @kindex C-y, in the echo area @findex echo-area-yank -Yanks back the contents of the last kill. +Yank back the contents of the last kill. @item @code{M-y} (@code{echo-area-yank-pop}) @kindex M-y, in the echo area @findex echo-area-yank-pop -Yanks back a previous kill, removing the last yanked text first. +Yank back a previous kill, removing the last yanked text first. @end table Sometimes when reading input in the echo area, the command that needed @@ -901,26 +986,36 @@ @kindex TAB, in the echo area @kindex SPC, in the echo area @findex echo-area-complete -Inserts as much of a completion as is possible. +Insert as much of a completion as is possible. @item @code{?} (@code{echo-area-possible-completions}) @kindex ?, in the echo area @findex echo-area-possible-completions -Displays a window containing a list of the possible completions of what +Display a window containing a list of the possible completions of what you have typed so far. For example, if the available choices are: + @example +@group bar foliate food forget +@end group @end example + +@noindent and you have typed an @samp{f}, followed by @samp{?}, the possible completions would contain: + @example +@group foliate food forget +@end group @end example + +@noindent i.e., all of the choices which begin with @samp{f}. Pressing @key{SPC} or @key{TAB} would result in @samp{fo} appearing in the echo area, since all of the choices which begin with @samp{f} continue with @samp{o}. @@ -931,30 +1026,30 @@ @item @code{ESC C-v} (@code{echo-area-scroll-completions-window}) @kindex ESC C-v, in the echo area @findex echo-area-scroll-completions-window -Scrolls the completions window, if that is visible, or the "other" +Scroll the completions window, if that is visible, or the "other" window if not. @end table -@node Printing Nodes +@node Printing Nodes, Miscellaneous Commands, Window Commands, Top @chapter Printing Out Nodes @cindex printing You may wish to print out the contents of a node as a quick reference document for later use. Info provides you with a command for doing this. In general, we recommend that you use @TeX{} to format the -document and print sections of it, by running @code{tex} on the texinfo +document and print sections of it, by running @code{tex} on the Texinfo source file. @table @asis @item @code{M-x print-node} @findex print-node @cindex INFO_PRINT_COMMAND, environment variable -Pipes the contents of the current node through the command in the -environment variable @code{INFO_PRINT_COMMAND}. If the variable doesn't +Pipe the contents of the current node through the command in the +environment variable @code{INFO_PRINT_COMMAND}. If the variable does not exist, the node is simply piped to @code{lpr}. @end table -@node Miscellaneous Commands +@node Miscellaneous Commands, Variables, Printing Nodes, Top @chapter Miscellaneous Commands GNU Info contains several commands which self-document GNU Info: @@ -964,22 +1059,22 @@ @cindex functions, describing @cindex commands, describing @findex describe-command -Reads the name of an Info command in the echo area and then displays a +Read the name of an Info command in the echo area and then display a brief description of what that command does. @item @code{M-x describe-key} @cindex keys, describing @findex describe-key -Reads a key sequence in the echo area, and then displays the name and +Read a key sequence in the echo area, and then display the name and documentation of the Info command that the key sequence invokes. @item @code{M-x describe-variable} -Reads the name of a variable in the echo area and then displays a brief +Read the name of a variable in the echo area and then display a brief description of what the variable affects. @item @code{M-x where-is} @findex where-is -Reads the name of an Info command in the echo area, and then displays +Read the name of an Info command in the echo area, and then display a key sequence which can be typed in order to invoke that command. @item @code{C-h} (@code{get-help-window}) @@ -987,17 +1082,17 @@ @kindex C-h @kindex ?, in Info windows @findex get-help-window -Creates (or moves into) the window displaying @code{*Help*}, and places +Create (or Move into) the window displaying @code{*Help*}, and place a node containing a quick reference card into it. This window displays the most concise information about GNU Info available. @item @code{h} (@code{get-info-help-node}) @kindex h @findex get-info-help-node -Tries hard to visit the node @code{(info)Help}. The info file +Try hard to visit the node @code{(info)Help}. The Info file @file{info.texi} distributed with GNU Info contains this node. Of course, the file must first be processed with @code{makeinfo}, and then -placed into the location of your info directory. +placed into the location of your Info directory. @end table Here are the commands for creating a numeric argument: @@ -1007,7 +1102,7 @@ @cindex numeric arguments @kindex C-u @findex universal-argument -Starts (or multiplies by 4) the current numeric argument. @samp{C-u} is +Start (or multiply by 4) the current numeric argument. @samp{C-u} is a good way to give a small numeric argument to cursor movement or scrolling commands; @samp{C-u C-v} scrolls the screen 4 lines, while @samp{C-u C-u C-n} moves the cursor down 16 lines. @@ -1016,7 +1111,7 @@ @itemx @code{M-2} @dots{} @code{M-9} @kindex M-1 @dots{} M-9 @findex add-digit-to-numeric-arg -Adds the digit value of the invoking key to the current numeric +Add the digit value of the invoking key to the current numeric argument. Once Info is reading a numeric argument, you may just type the digits of the argument, without the Meta prefix. For example, you might give @samp{C-l} a numeric argument of 32 by typing: @@ -1024,7 +1119,10 @@ @example @kbd{C-u 3 2 C-l} @end example + +@noindent or + @example @kbd{M-3 2 C-l} @end example @@ -1040,7 +1138,7 @@ @cindex cancelling the current operation @kindex C-g, in Info windows @findex abort-key -Cancels current operation. +Cancel current operation. @end table The @samp{q} command of Info simply quits running Info. @@ -1050,7 +1148,7 @@ @cindex quitting @kindex q @findex quit -Exits GNU Info. +Exit GNU Info. @end table If the operating system tells GNU Info that the screen is 60 lines tall, @@ -1061,7 +1159,7 @@ @item @code{M-x set-screen-height} @findex set-screen-height @cindex screen, changing the height of -Reads a height value in the echo area and sets the height of the +Read a height value in the echo area and set the height of the displayed screen to that value. @end table @@ -1073,26 +1171,26 @@ @kindex ESC C-f @findex show-footnotes @cindex footnotes, displaying -Shows the footnotes (if any) associated with the current node in another +Show the footnotes (if any) associated with the current node in another window. You can have Info automatically display the footnotes associated with a node when the node is selected by setting the variable @code{automatic-footnotes}. @xref{Variables, , @code{automatic-footnotes}}. @end table -@node Variables +@node Variables, GNU Info Global Index, Miscellaneous Commands, Top @chapter Manipulating Variables -GNU Info contains several @dfn{variables} whose values are looked at by various -Info commands. You can change the values of these variables, and thus -change the behaviour of Info to more closely match your environment and -info file reading manner. +GNU Info contains several @dfn{variables} whose values are looked at by +various Info commands. You can change the values of these variables, +and thus change the behavior of Info to more closely match your +environment and Info file reading manner. @table @asis @item @code{M-x set-variable} @cindex variables, setting @findex set-variable -Reads the name of a variable, and the value for it, in the echo area and -then sets the variable to that value. Completion is available when +Read the name of a variable, and the value for it, in the echo area and +then set the variable to that value. Completion is available when reading the variable name; often, completion is available when reading the value to give to the variable, but that depends on the variable itself. If a variable does @emph{not} supply multiple choices to @@ -1101,7 +1199,7 @@ @item @code{M-x describe-variable} @cindex variables, describing @findex describe-variable -Reads the name of a variable in the echo area and then displays a brief +Read the name of a variable in the echo area and then display a brief description of what the variable affects. @end table @@ -1149,11 +1247,11 @@ @vindex gc-compressed-files When set to @code{On}, Info garbage collects files which had to be uncompressed. The default value of this variable is @code{Off}. -Whenever a node is visited in Info, the info file containing that node +Whenever a node is visited in Info, the Info file containing that node is read into core, and Info reads information about the tags and nodes contained in that file. Once the tags information is read by Info, it is never forgotten. However, the actual text of the nodes does not need -to remain in core unless a particular info window needs it. For +to remain in core unless a particular Info window needs it. For non-compressed files, the text of the nodes does not remain in core when it is no longer in use. But de-compressing a file can be a time consuming operation, and so Info tries hard not to do it twice. @@ -1170,26 +1268,26 @@ string that you had typed is highlighted by displaying it in the inverse case from its surrounding characters. -@item scroll-behaviour -@vindex scroll-behaviour -Controls what happens when forward scrolling is requested at the end of +@item scroll-behavior +@vindex scroll-behavior +Control what happens when forward scrolling is requested at the end of a node, or when backward scrolling is requested at the beginning of a node. The default value for this variable is @code{Continuous}. There are three possible values for this variable: @table @code @item Continuous -Tries to get the first item in this node's menu, or failing that, the +Try to get the first item in this node's menu, or failing that, the @samp{Next} node, or failing that, the @samp{Next} of the @samp{Up}. -This behaviour is identical to using the @samp{]} +This behavior is identical to using the @samp{]} (@code{global-next-node}) and @samp{[} (@code{global-prev-node}) commands. @item Next Only -Only tries to get the @samp{Next} node. +Only try to get the @samp{Next} node. @item Page Only -Simply gives up, changing nothing. If @code{scroll-behaviour} is +Simply give up, changing nothing. If @code{scroll-behavior} is @code{Page Only}, no scrolling command can change the node that is being viewed. @end table @@ -1209,23 +1307,23 @@ some people prefer. @item ISO-Latin -@cindex ISO Latin-1 characters +@cindex ISO Latin characters @vindex ISO-Latin -When set to @code{On}, Info accepts and displays ISO Latin-1 characters. +When set to @code{On}, Info accepts and displays ISO Latin characters. By default, Info assumes an ASCII character set. @code{ISO-Latin} tells Info that it is running in an environment where the European standard character set is in use, and allows you to input such characters to Info, as well as display them. @end table -@c The following node and its children are currently unfinished. Please feel -@c free to finish it! + -@ifset NOTSET -@node Info for Sys Admins -@chapter Info for System Administrators +@c the following is incomplete +@ignore +@c node Info for Sys Admins +@c chapter Info for System Administrators -This text describes some common ways of setting up an Info heierarchy +This text describes some common ways of setting up an Info hierarchy from scratch, and details the various options that are available when installing Info. This text is designed for the person who is installing GNU Info on the system; although users may find the information present @@ -1233,36 +1331,43 @@ use GNU Info. @menu -* Setting the INFOPATH:: Where are my Info files kept? -* Editing the DIR node:: What goes in `DIR', and why? -* Storing Info files:: Alternate formats allow flexibilty in setups. -* Using `localdir':: Building DIR on the fly. -* Example setups:: Some common ways to origanize Info files. +* Setting the INFOPATH:: Where are my Info files kept? +* Editing the DIR node:: What goes in `DIR', and why? +* Storing Info files:: Alternate formats allow flexibility in setups. +* Using `localdir':: Building DIR on the fly. +* Example setups:: Some common ways to organize Info files. @end menu -@node Setting the INFOPATH -@section Setting the INFOPATH +@c node Setting the INFOPATH +@c section Setting the INFOPATH + Where are my Info files kept? -@node Editing the DIR node -@section Editing the DIR node +@c node Editing the DIR node +@c section Editing the DIR node + What goes in `DIR', and why? -@node Storing Info files -@section Storing Info files -Alternate formats allow flexibilty in setups. +@c node Storing Info files +@c section Storing Info files -@node Using `localdir' -@section Using `localdir' +Alternate formats allow flexibility in setups. + +@c node Using `localdir' +@c section Using `localdir' + Building DIR on the fly. -@node Example setups -@section Example setups -Some common ways to origanize Info files. -@end ifset +@c node Example setups +@c section Example setups + +Some common ways to organize Info files. +@end ignore -@ifset STANDALONE -@node GNU Info Global Index +@node GNU Info Global Index, , Variables, Top @appendix Global Index + @printindex cp -@end ifset + +@contents +@bye
--- a/man/info.texi Mon Aug 13 09:49:11 2007 +0200 +++ b/man/info.texi Mon Aug 13 09:50:14 2007 +0200 @@ -1,18 +1,20 @@ \input texinfo @c -*-texinfo-*- @comment %**start of header -@setfilename ../info/info.info +@setfilename info.info @settitle Info 1.0 @comment %**end of header +@comment $Id: info.texi,v 1.3 1997/07/19 22:11:48 steve Exp $ -@iftex -@finalout -@end iftex +@dircategory Texinfo documentation system +@direntry +* Info: (info). Documentation browsing system. +@end direntry @ifinfo This file describes how to use Info, the on-line, menu-driven GNU documentation system. -Copyright (C) 1989, 1992 Free Software Foundation, Inc. +Copyright (C) 1989, 92, 96, 97 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -36,25 +38,19 @@ by the Free Software Foundation. @end ifinfo -@setchapternewpage odd @titlepage -@sp 11 -@center @titlefont{Info} -@sp 2 -@center The -@sp 2 -@center On-line, Menu-driven -@sp 2 -@center GNU Documentation System - +@title Info +@subtitle The online, menu-driven GNU documentation system +@author Brian Fox @page @vskip 0pt plus 1filll -Copyright @copyright{} 1989, 1992, 1993 Free Software Foundation, Inc. +Copyright @copyright{} 1989, 1992, 1993, 1996, 1997 Free Software +Foundation, Inc. @sp 2 Published by the Free Software Foundation @* -675 Massachusetts Avenue, @* -Cambridge, MA 02139 USA @* +59 Temple Place - Suite 330 @* +Boston, MA 02111-1307, USA. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -71,23 +67,21 @@ by the Free Software Foundation. @end titlepage -@paragraphindent 3 @ifinfo -@node Top, Getting Started, (dir), (dir) +@node Top, Getting Started, , (dir) @top Info: An Introduction Info is a program for reading documentation, which you are using now. To learn how to use Info, type the command @kbd{h}. It brings you -to a programmed instruction sequence. If at any time you are ready to -stop using Info, type @samp{q}. +to a programmed instruction sequence. @c Need to make sure that `Info-help' goes to the right node, @c which is the first node of the first chapter. (It should.) @c (Info-find-node "info" -@c (if (< (window-height) 23) -@c "Help-Small-Screen" -@c "Help"))) +@c (if (< (window-height) 23) +@c "Help-Small-Screen" +@c "Help"))) To learn advanced Info commands, type @kbd{n} twice. This brings you to @cite{Info for Experts}, skipping over the `Getting Started' chapter. @@ -97,6 +91,7 @@ * Getting Started:: Getting started using an Info reader. * Advanced Info:: Advanced commands within Info. * Create an Info File:: How to make your own Info file. +* The Standalone Info Program: (info-stnd.info). @end menu @node Getting Started, Advanced Info, Top, Top @@ -122,7 +117,7 @@ @enumerate @item Type @code{info} at your shell's command line. This approach uses a -stand-alone program designed just to read Info files. +small stand-alone program designed just to read Info files. @item Type @code{emacs} at the command line; then type @kbd{C-h i} (Control @@ -144,11 +139,10 @@ * Help-Small-Screen:: Starting Info on a Small Screen * Help:: How to use Info * Help-P:: Returning to the Previous node -* Help-C-l:: The Space, Rubout, B and C-l commands. +* Help-^L:: The Space, Rubout, B and ^L commands. * Help-M:: Menus * Help-Adv:: Some advanced Info commands * Help-Q:: Quitting Info -* Using Stand-alone Info:: How to use the stand-alone Info reader. @end menu @node Help-Small-Screen, Help, , Getting Started @@ -168,54 +162,54 @@ screen. If you see @samp{--Top----} instead, it means that there is more text below that does not fit. To move forward through the text and see another screen full, press the Space bar, @key{SPC}. To move -back up, press the key labeled @samp{Delete} or @key{DEL}. +back up, press the key labeled @samp{Backspace} or @key{Delete}. @ifinfo Here are 40 lines of junk, so you can try Spaces and Deletes and see what they do. At the end are instructions of what you should do next. -@format -This is line 17 -This is line 18 -This is line 19 -This is line 20 -This is line 21 -This is line 22 -This is line 23 -This is line 24 -This is line 25 -This is line 26 -This is line 27 -This is line 28 -This is line 29 -This is line 30 -This is line 31 -This is line 32 -This is line 33 -This is line 34 -This is line 35 -This is line 36 -This is line 37 -This is line 38 -This is line 39 -This is line 40 -This is line 41 -This is line 42 -This is line 43 -This is line 44 -This is line 45 -This is line 46 -This is line 47 -This is line 48 -This is line 49 -This is line 50 -This is line 51 -This is line 52 -This is line 53 -This is line 54 -This is line 55 -This is line 56 -@end format + +This is line 17 @* +This is line 18 @* +This is line 19 @* +This is line 20 @* +This is line 21 @* +This is line 22 @* +This is line 23 @* +This is line 24 @* +This is line 25 @* +This is line 26 @* +This is line 27 @* +This is line 28 @* +This is line 29 @* +This is line 30 @* +This is line 31 @* +This is line 32 @* +This is line 33 @* +This is line 34 @* +This is line 35 @* +This is line 36 @* +This is line 37 @* +This is line 38 @* +This is line 39 @* +This is line 40 @* +This is line 41 @* +This is line 42 @* +This is line 43 @* +This is line 44 @* +This is line 45 @* +This is line 46 @* +This is line 47 @* +This is line 48 @* +This is line 49 @* +This is line 50 @* +This is line 51 @* +This is line 52 @* +This is line 53 @* +This is line 54 @* +This is line 55 @* +This is line 56 @* + If you have managed to get here, go back to the beginning with Delete, and come back here again, then you understand Space and Delete. So now type an @kbd{n} ---just one character; don't type @@ -244,42 +238,36 @@ Now it is time to move on to the @samp{Next} node, named @samp{Help-P}. -@format >> Type @samp{n} to move there. Type just one character; do not type the quotes and do not type a @key{RET} afterward. -@end format @samp{>>} in the margin means it is really time to try a command. -@node Help-P, Help-C-l, Help, Getting Started +@node Help-P, Help-^L, Help, Getting Started @comment node-name, next, previous, up @section Returning to the Previous node This node is called @samp{Help-P}. The @samp{Previous} node, as you see, is @samp{Help}, which is the one you just came from using the @kbd{n} command. Another @kbd{n} command now would take you to the next -node, @samp{Help-C-l}. +node, @samp{Help-^L}. -@format >> But do not do that yet. First, try the @kbd{p} command, which takes you to the @samp{Previous} node. When you get there, you can do an @kbd{n} again to return here. -@end format This all probably seems insultingly simple so far, but @emph{do not} be led into skimming. Things will get more complicated soon. Also, do not try a new command until you are told it is time to. Otherwise, you may make Info skip past an important warning that was coming up. -@format ->> Now do an @kbd{n} to get to the node @samp{Help-C-l} and learn more. -@end format +>> Now do an @kbd{n} to get to the node @samp{Help-^L} and learn more. -@node Help-C-l, Help-M, Help-P, Getting Started +@node Help-^L, Help-M, Help-P, Getting Started @comment node-name, next, previous, up -@section The Space, Delete, B and C-l commands. +@section The Space, Delete, B and ^L commands. - This node's header tells you that you are now at node @samp{Help-C-l}, and + This node's header tells you that you are now at node @samp{Help-^L}, and that @kbd{p} would get you back to @samp{Help-P}. The node's title is underlined; it says what the node is about (most nodes have titles). @@ -294,9 +282,7 @@ Delete moves backward, to show what was above the top of the screen (there is not anything above the top until you have typed some spaces). -@format >> Now try typing a Space (afterward, type a Delete to return here). -@end format When you type the space, the two lines that were at the bottom of the screen appear at the top, followed by more lines. Delete takes @@ -312,43 +298,35 @@ again by typing @kbd{C-l} (@kbd{Control-L}, that is---hold down ``Control'' and type an @key{L} or @kbd{l}). -@format >> Type @kbd{C-l} now. -@end format To move back to the beginning of the node you are on, you can type a lot of Deletes. You can also type simply @kbd{b} for beginning. -@format >> Try that now. (We have put in enough verbiage to push this past the first screenful, but screens are so big nowadays that perhaps it isn't enough. You may need to shrink your Emacs or Info window.) Then come back, with Spaces. -@end format -If your screen is very tall, all of this node might fit at once. + If your screen is very tall, all of this node might fit at once. In that case, "b" won't do anything. Sorry; what can we do? You have just learned a considerable number of commands. If you want to use one but have trouble remembering which, you should type a @key{?} which prints out a brief list of commands. When you are -finished looking at the list, make it go away by typing a @key{SPC}. +finished looking at the list, make it go away by pressing @key{SPC} +repeatedly. -@format ->> Type a @key{?} now. After it finishes, type a @key{SPC}. -@end format - - (If you are using the standalone Info reader, type `l' to return here.) +>> Type a @key{?} now. Press @key{SPC} to see consecutive screenfuls of +>> the list until finished. From now on, you will encounter large nodes without warning, and will be expected to know how to use Space and Delete to move around in them without being told. Since not all terminals have the same size screen, it would be impossible to warn you anyway. -@format >> Now type @kbd{n} to see the description of the @kbd{m} command. -@end format -@node Help-M, Help-Adv, Help-C-l, Getting Started +@node Help-M, Help-Adv, Help-^L, Getting Started @comment node-name, next, previous, up @section Menus @@ -400,13 +378,11 @@ This means that the subtopic name and node name are the same; they are both @samp{Foo}. -@format >> Now use Spaces to find the menu in this node, then come back to the front with a @kbd{b} and some Spaces. As you see, a menu is actually visible in its node. If you cannot find a menu in a node by looking at it, then the node does not have a menu and the @kbd{m} command is not available. -@end format The command to go to one of the subnodes is @kbd{m}---but @emph{do not do it yet!} Before you use @kbd{m}, you must understand the @@ -453,7 +429,7 @@ Here is a menu to give you a chance to practice. -* Menu: The menu starts here. +* Menu: The menu starts here. This menu gives you three ways of going to one place, Help-FOO. @@ -462,38 +438,30 @@ * Help-FOO:: And yet another!@* -@format >> Now type just an @kbd{m} and see what happens: -@end format Now you are ``inside'' an @kbd{m} command. Commands cannot be used now; the next thing you will type must be the name of a subtopic. You can change your mind about doing the @kbd{m} by typing Control-g. -@format >> Try that now; notice the bottom line clear. >> Then type another @kbd{m}. >> Now type @samp{BAR} item name. Do not type Return yet. -@end format While you are typing the item name, you can use the Delete key to cancel one character at a time if you make a mistake. -@format >> Type one to cancel the @samp{R}. You could type another @samp{R} to replace it. You do not have to, since @samp{BA} is a valid abbreviation. >> Now you are ready to go. Type a @key{RET}. -@end format After visiting Help-FOO, you should return here. -@format >> Type @kbd{n} to see more commands. -@end format @c If a menu appears at the end of this node, remove it. @c It is an accident of the menu updating command. @@ -522,9 +490,7 @@ node---to get back to where you were reading you have to type some @key{SPC}s. -@format >> Now type @kbd{u} to move back up to @samp{Help-M}. -@end format @node Help-Adv, Help-Q, Help-M, Getting Started @comment node-name, next, previous, up @@ -544,10 +510,8 @@ @kbd{u} and get you back to @samp{Help-FOO}. Another @kbd{l} would undo the @kbd{m} and get you back to @samp{Help-M}. -@format >> Try typing three @kbd{l}'s, pausing in between to see what each @kbd{l} does. -@end format Then follow directions again and you will end up back here. @@ -561,10 +525,8 @@ has a menu which leads (directly, or indirectly through other menus), to all the nodes that exist. -@format >> Try doing a @samp{d}, then do an @kbd{l} to return here (yes, @emph{do} return). -@end format Sometimes, in Info documentation, you will see a cross reference. Cross references look like this: @xref{Help-Cross, Cross}. That is a @@ -580,9 +542,7 @@ Completion is available in the @samp{f} command; you can complete among all the cross reference names in the current node by typing a Tab. -@format >> Type @samp{f}, followed by @samp{Cross}, and a @key{RET}. -@end format To get a list of all the cross references in the current node, you can type @kbd{?} after an @samp{f}. The @samp{f} continues to await a @@ -590,12 +550,10 @@ actually want to follow a reference, you should type a @kbd{Control-g} to cancel the @samp{f}. -@format >> Type "f?" to get a list of the cross references in this node. Then type a @kbd{Control-g} and see how the @samp{f} gives up. >> Now type @kbd{n} to see the last node of the course. -@end format @c If a menu appears at the end of this node, remove it. @c It is an accident of the menu updating command. @@ -613,9 +571,7 @@ where you came from. In general, the @kbd{l} (el) command is the only way to get back there. -@format >> Type @kbd{l} to return to the node where the cross reference was. -@end format @node Help-Q, , Help-Adv, Getting Started @comment node-name, next, previous, up @@ -630,11 +586,9 @@ Info. Finding them will be a good exercise in using Info in the usual manner. -@format >> Type @samp{d} to go to the Info directory node; then type @samp{mInfo} and Return, to get to the node about Info and see what other help is available. -@end format @node Advanced Info, Create an Info File, Getting Started, Top @comment node-name, next, previous, up @@ -732,14 +686,14 @@ The new node can live in an existing documentation file, or in a new one. It must have a @key{^_} character before it (invisible to the user; this node has one but you cannot see it), and it ends with either -a @key{^_}, a @key{C-l}, or the end of file. Note: If you put in a -@key{C-l} to end a new node, be sure that there is a @key{^_} after it -to start the next one, since @key{C-l} cannot @emph{start} a node. +a @key{^_}, a @key{^L}, or the end of file. Note: If you put in a +@key{^L} to end a new node, be sure that there is a @key{^_} after it +to start the next one, since @key{^L} cannot @emph{start} a node. Also, a nicer way to make a node boundary be a page boundary as well -is to put a @key{C-l} @emph{right after} the @key{^_}. +is to put a @key{^L} @emph{right after} the @key{^_}. The @key{^_} starting a node must be followed by a newline or a -@key{C-l} newline, after which comes the node's header line. The +@key{^L} newline, after which comes the node's header line. The header line must give the node's name (by which Info finds it), and state the names of the @samp{Next}, @samp{Previous}, and @samp{Up} nodes (if there are any). As you can see, this node's @samp{Up} node is the node @@ -921,7 +875,7 @@ Variables, Examining and Setting Variables, emacs, The GNU Emacs Manual}. -@table @code +@vtable @code @item Info-enable-edit Set to @code{nil}, disables the @samp{e} (@code{Info-edit}) command. A non-@code{nil} value enables it. @xref{Add, Edit}. @@ -932,16 +886,13 @@ selected. @item Info-directory-list -The list of directories to search for Info files. This variable is set -on startup automatically either from the @code{INFOPATH} environment -variable (if it exists) or, else, @code{Info-default-directory-list}. -Any user settings of this variable will be ignored. +The list of directories to search for Info files. Each element is a +string (directory name) or @code{nil} (try default directory). -@item Info-default-directory-list -List of default directories to search for Info documentation files. -This value is used as the default for @code{Info-directory-list} in the -absence of a setting for the @code{INFOPATH} environment variable. -@end table +@item Info-directory +The standard directory for Info documentation files. Only used when the +function @code{Info-directory} is called. +@end vtable @node Create an Info File, , Advanced Info, Top @comment node-name, next, previous, up @@ -957,11 +908,4 @@ @xref{Top,, Overview of Texinfo, texinfo, Texinfo: The GNU Documentation Format}, to learn how to write a Texinfo file. -@nwnode Using Stand-alone Info, Options, , Top -@chapter Using the Stand-alone Info Reader -@lowersections -@c Make the paragraph indentation match the rest of this file. -@paragraphindent 2 -@include info-stnd.texi -@raisesections @bye
--- a/man/internals/internals.texi Mon Aug 13 09:49:11 2007 +0200 +++ b/man/internals/internals.texi Mon Aug 13 09:50:14 2007 +0200 @@ -209,7 +209,7 @@ Buffers and Textual Representation * Introduction to Buffers:: A buffer holds a block of text such as a file. -* A Buffer@'s Text:: Representation of the text in a buffer. +* A Buffer's Text:: Representation of the text in a buffer. * Buffer Lists:: Keeping track of all buffers. * Markers and Extents:: Tagging locations within a buffer. * Bufbytes and Emchars:: Representation of individual characters. @@ -5345,7 +5345,7 @@ @menu * Introduction to Buffers:: A buffer holds a block of text such as a file. -* A Buffer@'s Text:: Representation of the text in a buffer. +* A Buffer's Text:: Representation of the text in a buffer. * Buffer Lists:: Keeping track of all buffers. * Markers and Extents:: Tagging locations within a buffer. * Bufbytes and Emchars:: Representation of individual characters. @@ -5405,7 +5405,7 @@ window. (This latter distinction is explained in detail in the section on windows.) -@node A Buffer@'s Text +@node A Buffer's Text @section A Buffer's Text The text in a buffer consists of a sequence of zero or more
--- a/man/lispref/menus.texi Mon Aug 13 09:49:11 2007 +0200 +++ b/man/lispref/menus.texi Mon Aug 13 09:50:14 2007 +0200 @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the XEmacs Lisp Reference Manual. -@c Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc. +@c Copyright (C) 1990, 1991, 1992, 1993, 1997 Free Software Foundation, Inc. @c Copyright (C) 1995 Sun Microsystems. @c See the file lispref.texi for copying conditions. @setfilename ../../info/menu.info @@ -15,6 +15,7 @@ * Modifying Menus:: Modifying a menu description. * Pop-Up Menus:: Functions for specifying pop-up menus. * Menu Filters:: Filter functions for the default menubar. +* Menu Accelerators:: Using and controlling menu accelerator keys * Buffers Menu:: The menu that displays the list of buffers. @end menu @@ -38,7 +39,7 @@ menu if @code{popup-menu-titles} is non-@code{nil}. Immediately following the first element there may optionally be up -to three keyword-value pairs, as follows: +to four keyword-value pairs, as follows: @table @code @item :included @var{form} @@ -59,6 +60,11 @@ menu filter function changes the current buffer, window, or frame. It also should not raise, lower, or iconify any frames. Basically, the filter function should have no side-effects. + +@item :accelerator @var{key} +A menu accelerator is a keystroke which can be pressed while the menu is +visible which will immediately activate the item. @var{key} must be a char +or the symbol name of a key. @xref{Menu Accelerators}. @end table The rest of the menu consists of elements as follows: @@ -216,6 +222,11 @@ @item :config @var{symbol} This is an efficient shorthand for @code{:included (memq @var{symbol} menubar-configuration)}. See the variable @code{menubar-configuration}. + +@item :accelerator @var{key} +A menu accelerator is a keystroke which can be pressed while the menu is +visible which will immediately activate the item. @var{key} must be a char +or the symbol name of a key. @xref{Menu Accelerators}. @end table @defvar menubar-configuration @@ -576,6 +587,136 @@ This function pops up a copy of menu that also appears in the menubar. @end defun +@node Menu Accelerators +@section Menu Accelerators +@cindex menu accelerators +@cindex keyboard menu accelerators + +Menu accelerators are keyboard shortcuts for accessing the menubar. +Accelerator keys can be specified for menus as well as for menu items. An +accelerator key for a menu is used to activate that menu when it appears as a +submenu of another menu. An accelerator key for a menu item is used to +activate that item. + +@menu +* Creating Menu Accelerators:: How to add accelerator keys to a menu. +* Keyboard Menu Traversal:: How to use and modify the keys which are used + to traverse the menu structure. +* Menu Accelerator Functions:: Functions for working with menu accelerators. +@end menu + +@node Creating Menu Accelerators +@subsection Creating Menu Accelerators + +Menu accelerators are specified as part of the menubar format using the +:accelerator tag to specify a key or by placing "%_" in the menu or menu item +name prior to the letter which is to be used as the accelerator key. The +advantage of the second method is that the menu rendering code then knows to +draw an underline under that character, which is the canonical way of +indicating an accelerator key to a user. + +For example, the command + +@example +(add-submenu nil '("%_Test" + ["One" (insert "1") :accelerator ?1 :active t] + ["%_Two" (insert "2") t] + ["%_3" (insert "3") t])) +@end example + +will add a new menu to the top level menubar. The new menu can be reached +by pressing "t" while the top level menubar is active. When the menu is +active, pressing "1" will activate the first item and insert the character +"1" into the buffer. Pressing "2" will activate the second item and insert +the character "2" into the buffer. Pressing "3" will activate the third item +and insert the character "3" into the buffer. + +It is possible to activate the top level menubar itself using accelerator keys. +@xref{Menu Accelerator Functions}. + +@node Keyboard Menu Traversal +@subsection Keyboard Menu Traversal + +In addition to immediately activating a menu or menu item, the keyboard can +be used to traverse the menus without activating items. The keyboard arrow +keys, the return key and the escape key are defined to traverse the menus in a +way that should be familiar to users of any of a certain family of popular PC +operating systems. + +This behaviour can be changed by modifying the bindings in +menu-accelerator-map. At this point, the online help is your best bet +for more information about how to modify the menu traversal keys. + +@node Menu Accelerator Functions +@subsection Menu Accelerator Functions + +@defun accelerate-menu +Make the menubar immediately active and place the cursor on the left most entry +in the top level menu. Menu items can be selected as usual. +@end defun + +@defvar menu-accelerator-enabled +Whether menu accelerator keys can cause the menubar to become active. + +If @code{menu-force} or @code{menu-fallback}, then menu accelerator keys can +be used to activate the top level menu. Once the menubar becomes active, the +accelerator keys can be used regardless of the value of this variable. + +@code{menu-force} is used to indicate that the menu accelerator key takes +precedence over bindings in the current keymap(s). @code{menu-fallback} means +that bindings in the current keymap take precedence over menu accelerator keys. +Thus a top level menu with an accelerator of "T" would be activated on a +keypress of Meta-t if @var{menu-accelerator-enabled} is @code{menu-force}. +However, if @var{menu-accelerator-enabled} is @code{menu-fallback}, then +Meta-t will not activate the menubar and will instead run the function +transpose-words, to which it is normally bound. + +The default value is @code{nil}. + +See also @var{menu-accelerator-modifiers} and @var{menu-accelerator-prefix}. +@end defvar + +@defvar menu-accelerator-map +Keymap consulted to determine the commands to run in response to keypresses +occurring while the menubar is active. @xref{Keyboard Menu Traversal}. +@end defvar + +@defvar menu-accelerator-modifiers +A list of modifier keys which must be pressed in addition to a valid menu +accelerator in order for the top level menu to be activated in response to +a keystroke. The default value of @code{(meta)} mirrors the useage of the alt key +as a menu accelerator in popular PC operating systems. + +The modifier keys in @var{menu-accelerator-modifiers} must match exactly the +modifiers present in the keypress. The only exception is that the shift +modifier is accepted in conjunction with alphabetic keys even if it is not +a menu accelerator modifier. + +See also @var{menu-accelerator-enabled} and @var{menu-accelerator-prefix}. +@end defvar + +@defvar menu-accelerator-prefix +Prefix key(s) that must be typed before menu accelerators will be activated. +Must be a valid key descriptor. + +The default value is @code{nil}. +@end defvar + +@example +(setq menu-accelerator-prefix ?\C-x) +(setq menu-accelerator-modifiers '(meta control)) +(setq menu-accelerator-enabled 'menu-force) +(add-submenu nil '("%_Test" + ["One" (insert "1") :accelerator ?1 :active t] + ["%_Two" (insert "2") t] + ["%_3" (insert "3") t])) +@end example + +will add the menu "Test" to the top level menubar. Pressing C-x followed by +C-M-T will activate the menubar and display the "Test" menu. Pressing +C-M-T by itself will not activate the menubar. Neither will pressing C-x +followed by anything else. + @node Buffers Menu @section Buffers Menu @cindex buffers menu
--- a/man/texinfo.tex Mon Aug 13 09:49:11 2007 +0200 +++ b/man/texinfo.tex Mon Aug 13 09:50:14 2007 +0200 @@ -1,7 +1,8 @@ -%% TeX macros to handle texinfo files +%% TeX macros to handle Texinfo files. +%% $Id: texinfo.tex,v 1.3 1997/07/19 22:11:48 steve Exp $ % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, -% 94, 95, 1996 Free Software Foundation, Inc. +% 94, 95, 96, 97 Free Software Foundation, Inc. %This texinfo.tex file is free software; you can redistribute it and/or %modify it under the terms of the GNU General Public License as @@ -35,7 +36,7 @@ % This automatically updates the version number based on RCS. \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}} -\deftexinfoversion$Revision: 1.2 $ +\deftexinfoversion$Revision: 1.3 $ \message{Loading texinfo package [Version \texinfoversion]:} % If in a .fmt file, print the version number @@ -59,7 +60,6 @@ \let\ptexrbrace=\} \let\ptexstar=\* \let\ptext=\t -\let\ptextilde=\~ % Be sure we're in horizontal mode when doing a tie, since we make space % equivalent to this in @example-like environments. Otherwise, a space @@ -72,7 +72,6 @@ \global\let\tiepenalty = \@M \gdef\tie{\leavevmode\penalty\tiepenalty\ } } -\let\~ = \tie % And make it available as @~. \message{Basics,} @@ -102,10 +101,11 @@ \hyphenation{ap-pen-dix} \hyphenation{mini-buf-fer mini-buf-fers} \hyphenation{eshell} +\hyphenation{white-space} % Margin to add to right of even pages, to left of odd pages. -\newdimen \bindingoffset -\newdimen \normaloffset +\newdimen \bindingoffset +\newdimen \normaloffset \newdimen\pagewidth \newdimen\pageheight % Sometimes it is convenient to have everything in the transcript file @@ -119,81 +119,101 @@ \showboxbreadth\maxdimen\showboxdepth\maxdimen }% -%---------------------Begin change----------------------- +% For @cropmarks command. +% Do @cropmarks to get crop marks. +% +\newif\ifcropmarks +\let\cropmarks = \cropmarkstrue % -%%%% For @cropmarks command. -% Dimensions to add cropmarks at corners Added by P. A. MacKay, 12 Nov. 1986 +% Dimensions to add cropmarks at corners. +% Added by P. A. MacKay, 12 Nov. 1986 % \newdimen\cornerlong \newdimen\cornerthick -\newdimen \topandbottommargin -\newdimen \outerhsize \newdimen \outervsize +\newdimen\topandbottommargin +\newdimen\outerhsize \newdimen\outervsize \cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks \outerhsize=7in %\outervsize=9.5in % Alternative @smallbook page size is 9.25in \outervsize=9.25in \topandbottommargin=.75in -% -%---------------------End change----------------------- + +% Main output routine. +\chardef\PAGE = 255 +\output = {\onepageout{\pagecontents\PAGE}} + +\newbox\headlinebox +\newbox\footlinebox % \onepageout takes a vbox as an argument. Note that \pagecontents % does insertions, but you have to call it yourself. -\chardef\PAGE=255 \output={\onepageout{\pagecontents\PAGE}} \def\onepageout#1{% - \hoffset=\normaloffset + \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi + % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi + % + % Do this outside of the \shipout so @code etc. will be expanded in + % the headline as they should be, not taken literally (outputting ''code). + \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% + \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% + % {% - \escapechar = `\\ % use backslash in output files. - \indexdummies + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \escapechar = `\\ % use backslash in output files. + \indexdummies % don't expand commands in the output. + \normalturnoffactive % \ in index entries must not stay \, e.g., if + % the page break happens to be in the middle of an example. \shipout\vbox{% - {\let\hsize=\pagewidth \makeheadline}% + \ifcropmarks \vbox to \outervsize\bgroup + \hsize = \outerhsize + \line{\ewtop\hfil\ewtop}% + \nointerlineskip + \line{% + \vbox{\moveleft\cornerthick\nstop}% + \hfill + \vbox{\moveright\cornerthick\nstop}% + }% + \vskip\topandbottommargin + \line\bgroup + \hfil % center the page within the outer (page) hsize. + \ifodd\pageno\hskip\bindingoffset\fi + \vbox\bgroup + \fi + % + \unvbox\headlinebox \pagebody{#1}% - {\let\hsize=\pagewidth \makefootline}% - }% - }% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingxxx.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 2\baselineskip + \unvbox\footlinebox + \fi + % + \ifcropmarks + \egroup % end of \vbox\bgroup + \hfil\egroup % end of (centering) \line\bgroup + \vskip\topandbottommargin plus1fill minus1fill + \boxmaxdepth = \cornerthick + \line{% + \vbox{\moveleft\cornerthick\nsbot}% + \hfill + \vbox{\moveright\cornerthick\nsbot}% + }% + \nointerlineskip + \line{\ewbot\hfil\ewbot}% + \egroup % \vbox from first cropmarks clause + \fi + }% end of \shipout\vbox + }% end of group with \turnoffactive \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi } -%%%% For @cropmarks command %%%% - -% Here is a modification of the main output routine for Near East Publications -% This provides right-angle cropmarks at all four corners. -% The contents of the page are centerlined into the cropmarks, -% and any desired binding offset is added as an \hskip on either -% site of the centerlined box. (P. A. MacKay, 12 November, 1986) -% -\def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up -{\escapechar=`\\\relax % makes sure backslash is used in output files. - \shipout - \vbox to \outervsize{\hsize=\outerhsize - \vbox{\line{\ewtop\hfill\ewtop}} - \nointerlineskip - \line{\vbox{\moveleft\cornerthick\nstop} - \hfill - \vbox{\moveright\cornerthick\nstop}} - \vskip \topandbottommargin - \centerline{\ifodd\pageno\hskip\bindingoffset\fi - \vbox{ - {\let\hsize=\pagewidth \makeheadline} - \pagebody{#1} - {\let\hsize=\pagewidth \makefootline}} - \ifodd\pageno\else\hskip\bindingoffset\fi} - \vskip \topandbottommargin plus1fill minus1fill - \boxmaxdepth\cornerthick - \line{\vbox{\moveleft\cornerthick\nsbot} - \hfill - \vbox{\moveright\cornerthick\nsbot}} - \nointerlineskip - \vbox{\line{\ewbot\hfill\ewbot}} - }} - \advancepageno - \ifnum\outputpenalty>-20000 \else\dosupereject\fi} -% -% Do @cropmarks to get crop marks -\def\cropmarks{\let\onepageout=\croppageout } - \newinsert\margin \dimen\margin=\maxdimen \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} @@ -207,7 +227,6 @@ \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } -% % Here are the rules for the cropmarks. Note that they are % offset so that the space between them is truly \outerhsize or \outervsize % (P. A. MacKay, 12 November, 1986) @@ -717,10 +736,11 @@ % \def\ignore{\doignore{ignore}} -% Also ignore @ifinfo, @ifhtml, @html, @menu, and @direntry text. +% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text. % \def\ifinfo{\doignore{ifinfo}} \def\ifhtml{\doignore{ifhtml}} +\def\ifnottex{\doignore{ifnottex}} \def\html{\doignore{html}} \def\menu{\doignore{menu}} \def\direntry{\doignore{direntry}} @@ -747,6 +767,10 @@ % Make sure that spaces turn into tokens that match what \doignoretext wants. \catcode32 = 10 % + % Ignore braces, too, so mismatched braces don't cause trouble. + \catcode`\{ = 9 + \catcode`\} = 9 + % % And now expand that command. \doignoretext } @@ -838,7 +862,7 @@ \pretolerance = 10000 % % Do not execute instructions in @tex - \def\tex{\doignore{tex}} + \def\tex{\doignore{tex}}% } % @set VAR sets the variable VAR to an empty value. @@ -850,7 +874,9 @@ % didn't need it. Make sure the catcode of space is correct to avoid % losing inside @example, for instance. % -\def\set{\begingroup\catcode` =10 \parsearg\setxxx} +\def\set{\begingroup\catcode` =10 + \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. + \parsearg\setxxx} \def\setxxx#1{\setyyy#1 \endsetyyy} \def\setyyy#1 #2\endsetyyy{% \def\temp{#2}% @@ -871,10 +897,16 @@ % @value{foo} gets the text saved in variable foo. % -\def\value#1{\expandafter - \ifx\csname SET#1\endcsname\relax - {\{No value for ``#1''\}} - \else \csname SET#1\endcsname \fi} +\def\value{\begingroup + \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. + \valuexxx} +\def\valuexxx#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {\{No value for ``#1''\}}% + \else + \csname SET#1\endcsname + \fi +\endgroup} % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined % with @set. @@ -906,11 +938,16 @@ \def\ifclearfail{\nestedignore{ifclear}} \defineunmatchedend{ifclear} -% @iftex always succeeds; we read the text following, through @end -% iftex). But `@end iftex' should be valid only after an @iftex. +% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text +% following, through the first @end iftex (etc.). Make `@end iftex' +% (etc.) valid only after an @iftex. % \def\iftex{\conditionalsucceed{iftex}} +\def\ifnothtml{\conditionalsucceed{ifnothtml}} +\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} \defineunmatchedend{iftex} +\defineunmatchedend{ifnothtml} +\defineunmatchedend{ifnotinfo} % We can't just want to start a group at @iftex (for example) and end it % at @end iftex, since then @set commands inside the conditional have no @@ -986,6 +1023,15 @@ \openindices \fixbackslash % Turn off hack to swallow `\input texinfo'. \global\let\setfilename=\comment % Ignore extra @setfilename cmds. + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. + % Just to be on the safe side, close the input stream before the \input. + \openin 1 texinfo.cnf + \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi + \closein1 + \temp + % \comment % Ignore the actual filename. } @@ -1021,8 +1067,9 @@ % We don't need math for this one. \def\ttsl{\tenttsl} -%% Try out Computer Modern fonts at \magstephalf -\let\mainmagstep=\magstephalf +% Use Computer Modern fonts at \magstephalf (11pt). +\newcount\mainmagstep +\mainmagstep=\magstephalf % Set the font macro #1 to the font named #2, adding on the % specified font prefix (normally `cm'). @@ -1094,13 +1141,26 @@ \font\indi=cmmi9 \font\indsy=cmsy9 +% Fonts for title page: +\setfont\titlerm\rmbshape{12}{\magstep3} +\setfont\titleit\itbshape{10}{\magstep4} +\setfont\titlesl\slbshape{10}{\magstep4} +\setfont\titlett\ttbshape{12}{\magstep3} +\setfont\titlettsl\ttslshape{10}{\magstep4} +\setfont\titlesf\sfbshape{17}{\magstep1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\authorrm{\secrm} + % Chapter (and unnumbered) fonts (17.28pt). \setfont\chaprm\rmbshape{12}{\magstep2} \setfont\chapit\itbshape{10}{\magstep3} \setfont\chapsl\slbshape{10}{\magstep3} \setfont\chaptt\ttbshape{12}{\magstep2} \setfont\chapttsl\ttslshape{10}{\magstep3} -\setfont\chapsf\sfbshape{12}{\magstep2} +\setfont\chapsf\sfbshape{17}{1000} \let\chapbf=\chaprm \setfont\chapsc\scbshape{10}{\magstep3} \font\chapi=cmmi12 scaled \magstep2 @@ -1137,19 +1197,15 @@ \setfont\ssecit\itbshape{10}{1315} \setfont\ssecsl\slbshape{10}{1315} \setfont\ssectt\ttbshape{12}{\magstephalf} -\setfont\ssecttsl\ttslshape{10}{\magstep1} +\setfont\ssecttsl\ttslshape{10}{1315} \setfont\ssecsf\sfbshape{12}{\magstephalf} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{\magstep1} \font\sseci=cmmi12 scaled \magstephalf -\font\ssecsy=cmsy10 scaled \magstep1 +\font\ssecsy=cmsy10 scaled 1315 % The smallcaps and symbol fonts should actually be scaled \magstep1.5, % but that is not a standard magnification. -% Fonts for title page: -\setfont\titlerm\rmbshape{12}{\magstep3} -\let\authorrm = \secrm - % In order for the font changes to affect most math symbols and letters, % we have to define the \textfont of the standard families. Since % texinfo doesn't allow for producing subscripts and superscripts, we @@ -1174,6 +1230,13 @@ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl \resetmathfonts} +\def\titlefonts{% + \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl + \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc + \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy + \let\tenttsl=\titlettsl + \resetmathfonts \setleading{25pt}} +\def\titlefont#1{{\titlefonts #1}} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc @@ -1251,8 +1314,6 @@ \def\ctrl #1{{\tt \rawbackslash \hat}#1} \let\file=\samp -\let\url=\samp % perhaps include a hypertex \special eventually -\def\email#1{$\langle${\tt #1}$\rangle$} % @code is a modification of @t, % which makes spaces the same size as normal in the surrounding text. @@ -1289,36 +1350,82 @@ { \catcode`\-=\active \catcode`\_=\active +\catcode`\|=\active \global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex} % The following is used by \doprintindex to insure that long function names % wrap around. It is necessary for - and _ to be active before the index is % read from the file, as \entry parses the arguments long before \code is % ever called. -- mycroft -\global\def\indexbreaks{\catcode`\-=\active \let-\realdash \catcode`\_=\active \let_\realunder} +% _ is always active; and it shouldn't be \let = to an _ that is a +% subscript character anyway. Then, @cindex @samp{_} (for example) +% fails. --karl +\global\def\indexbreaks{% + \catcode`\-=\active \let-\realdash +} } \def\realdash{-} -\def\realunder{_} \def\codedash{-\discretionary{}{}{}} -\def\codeunder{\normalunderscore\discretionary{}{}{}} +\def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}} \def\codex #1{\tclose{#1}\endgroup} %\let\exp=\tclose %Was temporary % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. -% + +% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), +% `example' (@kbd uses ttsl only inside of @example and friends), +% or `code' (@kbd uses normal tty font always). +\def\kbdinputstyle{\parsearg\kbdinputstylexxx} +\def\kbdinputstylexxx#1{% + \def\arg{#1}% + \ifx\arg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\arg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\arg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is kbdinputdistinct. (Too much of a hassle to call the macro, +% the catcodes are wrong for parsearg to work.) +\gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl} + \def\xkey{\key} \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% -\else{\tclose{\ttsl\look}}\fi -\else{\tclose{\ttsl\look}}\fi} +\else{\tclose{\kbdfont\look}}\fi +\else{\tclose{\kbdfont\look}}\fi} + +% @url, @email. Quotes do not seem necessary. +\let\url=\code % perhaps include a hypertex \special eventually +% rms does not like the angle brackets --karl, 17may97. +%\def\email#1{$\langle${\tt #1}$\rangle$} +\let\email=\code + +% @uref (abbreviation for `urlref') takes an optional second argument +% specifying the text to display. First (mandatory) arg is the url. +% +\def\uref#1{\urefxxx #1,,\finish} +\def\urefxxx#1,#2,#3\finish{% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \unhbox0\ (\code{#1})% + \else + \code{#1}% + \fi +} % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have % this property, we can check that font parameter. -% +% \def\ifmonospace{\ifdim\fontdimen3\font=0pt } % Typeset a dimension, e.g., `in' or `pt'. The only reason for the @@ -1349,8 +1456,6 @@ \newskip\titlepagebottomglue \titlepagebottomglue = 2pc % First the title page. Must do @settitle before @titlepage. -\def\titlefont#1{{\titlerm #1}} - \newif\ifseenauthor \newif\iffinishedtitlepage @@ -1372,7 +1477,7 @@ % % Now you can print the title using @title. \def\title{\parsearg\titlezzz}% - \def\titlezzz##1{\leftline{\titlefont{##1}} + \def\titlezzz##1{\leftline{\titlefonts\rm ##1} % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% @@ -1461,10 +1566,7 @@ \gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{% \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} -\gdef\everyheadingxxx #1{\everyheadingyyy #1@|@|@|@|\finish} -\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{% -\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}} -\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} +\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}% \gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish} \gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{% @@ -1472,12 +1574,15 @@ \gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish} \gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{% -\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\everyfootingxxx #1{\everyfootingyyy #1@|@|@|@|\finish} -\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{% -\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}} -\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\pageheight by -\baselineskip + \global\advance\vsize by -\baselineskip +} + +\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}} % }% unbind the catcode of @. @@ -1861,7 +1966,7 @@ \def\itemizeitem{% \advance\itemno by 1 {\let\par=\endgraf \smallbreak}% -\ifhmode \errmessage{\in hmode at itemizeitem}\fi +\ifhmode \errmessage{In hmode at itemizeitem}\fi {\parskip=0in \hskip 0pt \hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% \vadjust{\penalty 1200}}% @@ -1879,7 +1984,7 @@ % To make preamble: % -% Either define widths of columns in terms of percent of \hsize: +% Either define widths of columns in terms of percent of \hsize: % @multitable @columnfractions .25 .3 .45 % @item ... % @@ -1897,13 +2002,13 @@ % the preamble, break the line within one argument and it % will parse correctly, i.e., % -% @multitable {Column 1 template} {Column 2 template} {Column 3 +% @multitable {Column 1 template} {Column 2 template} {Column 3 % template} % Not: -% @multitable {Column 1 template} {Column 2 template} +% @multitable {Column 1 template} {Column 2 template} % {Column 3 template} -% Each new table line starts with @item, each subsequent new column +% Each new table line starts with @item, each subsequent new column % starts with @tab. Empty columns may be produced by supplying @tab's % with nothing between them for as many times as empty columns are needed, % ie, @tab@tab@tab will produce two empty columns. @@ -1915,15 +2020,15 @@ % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item first col stuff @tab second col stuff @tab third col -% @item -% first col stuff -% @tab -% second col stuff -% @tab -% third col -% @item first col stuff @tab second col stuff +% @item +% first col stuff +% @tab +% second col stuff +% @tab +% third col +% @item first col stuff @tab second col stuff % @tab Many paragraphs of text may be used in any column. -% +% % They will wrap at the width determined by the template. % @item@tab@tab This will be in third column. % @end multitable @@ -1937,7 +2042,7 @@ % 0pt means it depends on current normal line spacing. %%%% -% Dimensions +% Dimensions \newskip\multitableparskip \newskip\multitableparindent @@ -2007,18 +2112,18 @@ % To parse everything between @multitable and @item : \setuptable#1 \endsetuptable % Need to reset this to 0 after \setuptable. -\global\colcount=0\relax% +\global\colcount=0\relax% % % This preamble sets up a generic column definition, which will % be used as many times as user calls for columns. - % \vtop will set a single line and will also let text wrap and + % \vtop will set a single line and will also let text wrap and % continue for many paragraphs if desired. \halign\bgroup&\global\advance\colcount by 1\relax% \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname % In order to keep entries from bumping into each other % we will add a \leftskip of \multitablecolspace to all columns after % the first one. - % If a template has been used, we will add \multitablecolspace + % If a template has been used, we will add \multitablecolspace % to the width of each template entry. % If user has set preamble in terms of percent of \hsize % we will use that dimension as the width of the column, and @@ -2030,19 +2135,31 @@ \ifsetpercent \else % If user has <not> set preamble in terms of percent of \hsize - % we will advance \hsize by \multitablecolspace + % we will advance \hsize by \multitablecolspace \advance\hsize by \multitablecolspace \fi % In either case we will make \leftskip=\multitablecolspace: \leftskip=\multitablecolspace \fi -\noindent##\multistrut}\cr% + % Ignoring space at the beginning and end avoids an occasional spurious + % blank line, when TeX decides to break the line at the space before the + % box from the multistrut, so the strut ends up on a line by itself. + % For example: + % @multitable @columnfractions .11 .89 + % @item @code{#} + % @tab Legal holiday which is valid in major parts of the whole country. + % Is automatically provided with highlighting sequences respectively marking + % characters. + \noindent\ignorespaces##\unskip\multistrut}\cr % \everycr will reset column counter, \colcount, at the end of - % each line. Every column entry will cause \colcount to advance by one. + % each line. Every column entry will cause \colcount to advance by one. % The table preamble % looks at the current \colcount to find the correct column width. \global\everycr{\noalign{% -\filbreak%% keeps underfull box messages off when table breaks over pages. +% \filbreak%% keeps underfull box messages off when table breaks over pages. +% Maybe so, but it also creates really weird page breaks when the table +% breaks over pages Wouldn't \vfil be better? Wait until the problem +% manifests itself, so it can be fixed for real --karl. \global\colcount=0\relax}} } @@ -2054,7 +2171,7 @@ %% to keep lines equally spaced \let\multistrut = \strut %% Test to see if parskip is larger than space between lines of -%% table. If not, do nothing. +%% table. If not, do nothing. %% If so, set to same dimension as multitablelinespace. \else \gdef\multistrut{\vrule height\multitablelinespace depth\dp0 @@ -2189,7 +2306,13 @@ %\def\char{\realbackslash char}% \def\TeX{\realbackslash TeX}% \def\dots{\realbackslash dots }% -\def\copyright{\realbackslash copyright }% +\def\result{\realbackslash result}% +\def\equiv{\realbackslash equiv}% +\def\expansion{\realbackslash expansion}% +\def\print{\realbackslash print}% +\def\error{\realbackslash error}% +\def\point{\realbackslash point}% +\def\copyright{\realbackslash copyright}% \def\tclose##1{\realbackslash tclose {##1}}% \def\code##1{\realbackslash code {##1}}% \def\dotless##1{\realbackslash dotless {##1}}% @@ -2199,6 +2322,7 @@ \def\r##1{\realbackslash r {##1}}% \def\i##1{\realbackslash i {##1}}% \def\b##1{\realbackslash b {##1}}% +\def\sc##1{\realbackslash sc {##1}}% \def\cite##1{\realbackslash cite {##1}}% \def\key##1{\realbackslash key {##1}}% \def\file##1{\realbackslash file {##1}}% @@ -2206,6 +2330,7 @@ \def\kbd##1{\realbackslash kbd {##1}}% \def\dfn##1{\realbackslash dfn {##1}}% \def\emph##1{\realbackslash emph {##1}}% +\def\value##1{\realbackslash value {##1}}% \unsepspaces } @@ -2296,7 +2421,7 @@ \indexdummies % Must do this here, since \bf, etc expand at this stage \escapechar=`\\ {% - \let\folio=0 % We will expand all macros now EXCEPT \folio. + \let\folio=0% We will expand all macros now EXCEPT \folio. \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now % so it will be output as is; and it will print as backslash. % @@ -2370,27 +2495,16 @@ % Define the macros used in formatting output of the sorted index material. -% This is what you call to cause a particular index to get printed. -% Write -% @unnumbered Function Index -% @printindex fn - +% @printindex causes a particular index (the ??s file) to get printed. +% It does not print any chapter heading (usually an @unnumbered). +% \def\printindex{\parsearg\doprintindex} - \def\doprintindex#1{\begingroup \dobreak \chapheadingskip{10000}% % \indexfonts \rm \tolerance = 9500 \indexbreaks - \def\indexbackslash{\rawbackslashxx}% - % Index files are almost Texinfo source, but we use \ as the escape - % character. It would be better to use @, but that's too big a change - % to make right now. - \catcode`\\ = 0 - \catcode`\@ = 11 - \escapechar = `\\ - \begindoublecolumns % % See if the index file exists and is nonempty. \openin 1 \jobname.#1s @@ -2409,11 +2523,19 @@ \ifeof 1 (Index is empty) \else + % Index files are almost Texinfo source, but we use \ as the escape + % character. It would be better to use @, but that's too big a change + % to make right now. + \def\indexbackslash{\rawbackslashxx}% + \catcode`\\ = 0 + \catcode`\@ = 11 + \escapechar = `\\ + \begindoublecolumns \input \jobname.#1s + \enddoublecolumns \fi \fi \closein 1 - \enddoublecolumns \endgroup} % These macros are used by the sorted index file itself. @@ -2515,24 +2637,39 @@ \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. - \output = {\global\setbox\partialpage - =\vbox{\unvbox255\kern -\topskip \kern \baselineskip}}% + \output = {\global\setbox\partialpage = \vbox{% + % + % Here is a possibility not foreseen in manmac: if we accumulate a + % whole lot of material, we might end up calling this \output + % routine twice in a row (see the doublecol-lose test, which is + % essentially a couple of indexes with @setchapternewpage off). In + % that case, we must prevent the second \partialpage from + % simply overwriting the first, causing us to lose the page. + % This will preserve it until a real output routine can ship it + % out. Generally, \partialpage will be empty when this runs and + % this will be a no-op. + \unvbox\partialpage + % + % Unvbox the main output page. + \unvbox255 + \kern-\topskip \kern\baselineskip + }}% \eject % - % Now switch to the double-column output routine. - \output={\doublecolumnout}% + % Use the double-column output routine for subsequent pages. + \output = {\doublecolumnout}% % % Change the page size parameters. We could do this once outside this % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 % format, but then we repeat the same computation. Repeating a couple % of assignments once per index is clearly meaningless for the - % execution time, so we may as well do it once. + % execution time, so we may as well do it in one place. % % First we halve the line length, less a little for the gutter between % the columns. We compute the gutter based on the line length, so it % changes automatically with the paper format. The magic constant - % below is chosen so that the gutter has the same value (well, +- < - % 1pt) as it did when we hard-coded it. + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. % % We put the result in a separate register, \doublecolumhsize, so we % can restore it in \pagesofar, after \hsize itself has (potentially) @@ -2553,100 +2690,109 @@ % (undoubled) page height minus any material left over from the % previous page. \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage - % box0 will be the left-hand column, box1 the right. + % box0 will be the left-hand column, box2 the right. \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ \onepageout\pagesofar - \unvbox255 \penalty\outputpenalty + \unvbox255 + \penalty\outputpenalty } \def\pagesofar{% - % The contents of the output page -- any previous material, + % Re-output the contents of the output page -- any previous material, % followed by the two boxes we just split. \unvbox\partialpage \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% } \def\enddoublecolumns{% - \output={\balancecolumns}\eject % split what we have - \endgroup + \output = {\balancecolumns}\eject % split what we have + \endgroup % started in \begindoublecolumns + % % Back to normal single-column typesetting, but take account of the % fact that we just accumulated some stuff on the output page. - \pagegoal=\vsize + \pagegoal = \vsize } \def\balancecolumns{% - % Called on the last page of the double column material. - \setbox0=\vbox{\unvbox255}% + % Called at the end of the double column material. + \setbox0 = \vbox{\unvbox255}% \dimen@ = \ht0 \advance\dimen@ by \topskip \advance\dimen@ by-\baselineskip \divide\dimen@ by 2 \splittopskip = \topskip % Loop until we get a decent breakpoint. - {\vbadness=10000 \loop \global\setbox3=\copy0 + {\vbadness=10000 \loop + \global\setbox3=\copy0 \global\setbox1=\vsplit3 to\dimen@ - \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat}% + \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt + \repeat}% \setbox0=\vbox to\dimen@{\unvbox1}% \setbox2=\vbox to\dimen@{\unvbox3}% \pagesofar } -\catcode `\@=\other +\catcode`\@ = \other \message{sectioning,} % Define chapters, sections, etc. -\newcount \chapno -\newcount \secno \secno=0 -\newcount \subsecno \subsecno=0 -\newcount \subsubsecno \subsubsecno=0 +\newcount\chapno +\newcount\secno \secno=0 +\newcount\subsecno \subsecno=0 +\newcount\subsubsecno \subsubsecno=0 % This counter is funny since it counts through charcodes of letters A, B, ... -\newcount \appendixno \appendixno = `\@ +\newcount\appendixno \appendixno = `\@ \def\appendixletter{\char\the\appendixno} -\newwrite \contentsfile +\newwrite\contentsfile % This is called from \setfilename. -\def\opencontents{\openout \contentsfile = \jobname.toc} +\def\opencontents{\openout\contentsfile = \jobname.toc } % Each @chapter defines this as the name of the chapter. % page headings and footings can use it. @section does likewise \def\thischapter{} \def\thissection{} -\def\seccheck#1{\if \pageno<0 % -\errmessage{@#1 not allowed after generating table of contents}\fi -% -} +\def\seccheck#1{\ifnum \pageno<0 + \errmessage{@#1 not allowed after generating table of contents}% +\fi} \def\chapternofonts{% -\let\rawbackslash=\relax% -\let\frenchspacing=\relax% -\def\result{\realbackslash result} -\def\equiv{\realbackslash equiv} -\def\expansion{\realbackslash expansion} -\def\print{\realbackslash print} -\def\TeX{\realbackslash TeX} -\def\dots{\realbackslash dots} -\def\copyright{\realbackslash copyright} -\def\tt{\realbackslash tt} -\def\bf{\realbackslash bf } -\def\w{\realbackslash w} -\def\less{\realbackslash less} -\def\gtr{\realbackslash gtr} -\def\hat{\realbackslash hat} -\def\char{\realbackslash char} -\def\tclose##1{\realbackslash tclose {##1}} -\def\code##1{\realbackslash code {##1}} -\def\samp##1{\realbackslash samp {##1}} -\def\r##1{\realbackslash r {##1}} -\def\b##1{\realbackslash b {##1}} -\def\key##1{\realbackslash key {##1}} -\def\file##1{\realbackslash file {##1}} -\def\kbd##1{\realbackslash kbd {##1}} -% These are redefined because @smartitalic wouldn't work inside xdef. -\def\i##1{\realbackslash i {##1}} -\def\cite##1{\realbackslash cite {##1}} -\def\var##1{\realbackslash var {##1}} -\def\emph##1{\realbackslash emph {##1}} -\def\dfn##1{\realbackslash dfn {##1}} + \let\rawbackslash=\relax + \let\frenchspacing=\relax + \def\result{\realbackslash result}% + \def\equiv{\realbackslash equiv}% + \def\expansion{\realbackslash expansion}% + \def\print{\realbackslash print}% + \def\TeX{\realbackslash TeX}% + \def\dots{\realbackslash dots}% + \def\result{\realbackslash result}% + \def\equiv{\realbackslash equiv}% + \def\expansion{\realbackslash expansion}% + \def\print{\realbackslash print}% + \def\error{\realbackslash error}% + \def\point{\realbackslash point}% + \def\copyright{\realbackslash copyright}% + \def\tt{\realbackslash tt}% + \def\bf{\realbackslash bf}% + \def\w{\realbackslash w}% + \def\less{\realbackslash less}% + \def\gtr{\realbackslash gtr}% + \def\hat{\realbackslash hat}% + \def\char{\realbackslash char}% + \def\tclose##1{\realbackslash tclose{##1}}% + \def\code##1{\realbackslash code{##1}}% + \def\samp##1{\realbackslash samp{##1}}% + \def\r##1{\realbackslash r{##1}}% + \def\b##1{\realbackslash b{##1}}% + \def\key##1{\realbackslash key{##1}}% + \def\file##1{\realbackslash file{##1}}% + \def\kbd##1{\realbackslash kbd{##1}}% + % These are redefined because @smartitalic wouldn't work inside xdef. + \def\i##1{\realbackslash i{##1}}% + \def\cite##1{\realbackslash cite{##1}}% + \def\var##1{\realbackslash var{##1}}% + \def\emph##1{\realbackslash emph{##1}}% + \def\dfn##1{\realbackslash dfn{##1}}% } \newcount\absseclevel % used to calculate proper heading level @@ -2733,7 +2879,8 @@ % because we don't want its macros evaluated now. \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% {\chapternofonts% -\edef\temp{{\realbackslash chapentry {#1}{\the\chapno}{\noexpand\folio}}}% +\toks0 = {#1}% +\edef\temp{{\realbackslash chapentry{\the\toks0}{\the\chapno}{\noexpand\folio}}}% \escapechar=`\\% \write \contentsfile \temp % \donoderef % @@ -2752,8 +2899,9 @@ \gdef\thischaptername{#1}% \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% {\chapternofonts% -\edef\temp{{\realbackslash chapentry - {#1}{\putwordAppendix{} \appendixletter}{\noexpand\folio}}}% +\toks0 = {#1}% +\edef\temp{{\realbackslash chapentry{\the\toks0}% + {\putwordAppendix{} \appendixletter}{\noexpand\folio}}}% \escapechar=`\\% \write \contentsfile \temp % \appendixnoderef % @@ -2787,7 +2935,8 @@ \unnumbchapmacro {#1}% \gdef\thischapter{#1}\gdef\thissection{#1}% {\chapternofonts% -\edef\temp{{\realbackslash unnumbchapentry {#1}{\noexpand\folio}}}% +\toks0 = {#1}% +\edef\temp{{\realbackslash unnumbchapentry{\the\toks0}{\noexpand\folio}}}% \escapechar=`\\% \write \contentsfile \temp % \unnumbnoderef % @@ -2802,8 +2951,9 @@ \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% {\chapternofonts% +\toks0 = {#1}% \edef\temp{{\realbackslash secentry % -{#1}{\the\chapno}{\the\secno}{\noexpand\folio}}}% +{\the\toks0}{\the\chapno}{\the\secno}{\noexpand\folio}}}% \escapechar=`\\% \write \contentsfile \temp % \donoderef % @@ -2817,8 +2967,9 @@ \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% {\chapternofonts% +\toks0 = {#1}% \edef\temp{{\realbackslash secentry % -{#1}{\appendixletter}{\the\secno}{\noexpand\folio}}}% +{\the\toks0}{\appendixletter}{\the\secno}{\noexpand\folio}}}% \escapechar=`\\% \write \contentsfile \temp % \appendixnoderef % @@ -2830,7 +2981,8 @@ \def\unnumberedseczzz #1{\seccheck{unnumberedsec}% \plainsecheading {#1}\gdef\thissection{#1}% {\chapternofonts% -\edef\temp{{\realbackslash unnumbsecentry{#1}{\noexpand\folio}}}% +\toks0 = {#1}% +\edef\temp{{\realbackslash unnumbsecentry{\the\toks0}{\noexpand\folio}}}% \escapechar=`\\% \write \contentsfile \temp % \unnumbnoderef % @@ -2843,8 +2995,9 @@ \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% {\chapternofonts% +\toks0 = {#1}% \edef\temp{{\realbackslash subsecentry % -{#1}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% +{\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% \escapechar=`\\% \write \contentsfile \temp % \donoderef % @@ -2857,8 +3010,9 @@ \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% {\chapternofonts% +\toks0 = {#1}% \edef\temp{{\realbackslash subsecentry % -{#1}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% +{\the\toks0}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% \escapechar=`\\% \write \contentsfile \temp % \appendixnoderef % @@ -2870,7 +3024,8 @@ \def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}% \plainsubsecheading {#1}\gdef\thissection{#1}% {\chapternofonts% -\edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}% +\toks0 = {#1}% +\edef\temp{{\realbackslash unnumbsubsecentry{\the\toks0}{\noexpand\folio}}}% \escapechar=`\\% \write \contentsfile \temp % \unnumbnoderef % @@ -2884,8 +3039,8 @@ \subsubsecheading {#1} {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% {\chapternofonts% -\edef\temp{{\realbackslash subsubsecentry % - {#1} +\toks0 = {#1}% +\edef\temp{{\realbackslash subsubsecentry{\the\toks0} {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno} {\noexpand\folio}}}% \escapechar=`\\% @@ -2901,7 +3056,8 @@ \subsubsecheading {#1} {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% {\chapternofonts% -\edef\temp{{\realbackslash subsubsecentry{#1}% +\toks0 = {#1}% +\edef\temp{{\realbackslash subsubsecentry{\the\toks0}% {\appendixletter} {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}% \escapechar=`\\% @@ -2915,7 +3071,8 @@ \def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}% \plainsubsubsecheading {#1}\gdef\thissection{#1}% {\chapternofonts% -\edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}% +\toks0 = {#1}% +\edef\temp{{\realbackslash unnumbsubsubsecentry{\the\toks0}{\noexpand\folio}}}% \escapechar=`\\% \write \contentsfile \temp % \unnumbnoderef % @@ -3096,7 +3253,7 @@ % Print any size section title. -% +% % #1 is the section type (sec/subsec/subsubsec), #2 is the section % number (maybe empty), #3 the text. \def\sectionheading#1#2#3{% @@ -3140,7 +3297,9 @@ \unnumbchapmacro{#1}\def\thischapter{}% \begingroup % Set up to handle contents files properly. \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 - \catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi + % We can't do this, because then an actual ^ in a section + % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97. + %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi \raggedbottom % Worry more about breakpoints than the bottom. \advance\hsize by -\contentsrightmargin % Don't use the full line length. } @@ -3348,14 +3507,13 @@ \escapechar=`\\ % \let\,=\ptexcomma -\let\~=\ptextilde \let\{=\ptexlbrace \let\}=\ptexrbrace \let\.=\ptexdot \let\*=\ptexstar \let\dots=\ptexdots -\def\endldots{\mathinner{\ldots\ldots\ldots\ldots}} -\def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi} +\def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% +\def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% \def\@{@}% \let\bullet=\ptexbullet \let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext @@ -3496,11 +3654,12 @@ % \def\nonfillfinish{\afterenvbreak\endgroup}% -% This macro is \def\lisp{\begingroup \nonfillstart \let\Elisp = \nonfillfinish \tt + % Make @kbd do something special, if requested. + \let\kbdfont\kbdexamplefont \rawbackslash % have \ input char produce \ char from current font \gobble } @@ -3618,16 +3777,17 @@ % Definitions of (, ) and & used in args for functions. % This is the definition of ( outside of all parentheses. -\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested % -\global\advance\parencount by 1 } +\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested + \global\advance\parencount by 1 +} % % This is the definition of ( when already inside a level of parens. \gdef\opnested{\char`\(\global\advance\parencount by 1 } % \gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. -% also in that case restore the outer-level definition of (. -\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi -\global\advance \parencount by -1 } + % also in that case restore the outer-level definition of (. + \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi + \global\advance \parencount by -1 } % If we encounter &foo, then turn on ()-hacking afterwards \gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } % @@ -3635,8 +3795,11 @@ } % End of definition inside \activeparens %% These parens (in \boldbrax) actually are a little bolder than the %% contained text. This is especially needed for [ and ] -\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\&} -\def\lbrb{{\bf\char`\[}} \def\rbrb{{\bf\char`\]}} +\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } +\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } +\def\ampnr{\&} +\def\lbrb{{\bf\char`\[}} +\def\rbrb{{\bf\char`\]}} % First, defname, which formats the header line itself. % #1 should be the function name. @@ -3729,7 +3892,7 @@ % This is used for \def{tp,vr}parsebody. It could probably be used for % some of the others, too, with some judicious conditionals. -% +% \def\parsebodycommon#1#2#3{% \begingroup\inENV % \medbreak % @@ -3763,17 +3926,16 @@ } % Fine, but then we have to eventually remove the \empty *and* the -% braces (if any). That's what this does, putting the result in \tptemp. -% -\def\removeemptybraces\empty#1\relax{\def\tptemp{#1}}% +% braces (if any). That's what this does. +% +\def\removeemptybraces\empty#1\relax{#1} % After \spacesplit has done its work, this is called -- #1 is the final % thing to call, #2 the type name (which starts with \empty), and #3 % (which might be empty) the arguments. -% +% \def\parsetpheaderline#1#2#3{% - \removeemptybraces#2\relax - #1{\tptemp}{#3}% + #1{\removeemptybraces#2\relax}{#3}% }% \def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV % @@ -3814,7 +3976,7 @@ \hyphenchar\tensl=0 #1% \hyphenchar\tensl=45 -\ifnum\parencount=0 \else \errmessage{unbalanced parens in @def arguments}\fi% +\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% \interlinepenalty=10000 \advance\rightskip by 0pt plus 1fil \endgraf\penalty 10000\vskip -\parskip\penalty 10000% @@ -3915,6 +4077,7 @@ \def\defmacx #1 {\errmessage{@defmacx in invalid context}} \def\defspecx #1 {\errmessage{@defspecx in invalid context}} \def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}} +\def\deftypemethodx #1 {\errmessage{@deftypemethodx in invalid context}} \def\deftypeunx #1 {\errmessage{@deftypeunx in invalid context}} % @defmethod, and so on @@ -3930,6 +4093,16 @@ \defunargs {#3}\endgroup % } +% @deftypemethod foo-class return-type foo-method args +% +\def\deftypemethod{% + \defmethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} +% +% #1 is the class name, #2 the data type, #3 the method name, #4 the args. +\def\deftypemethodheader#1#2#3#4{% + \deftypefnheaderx{Method on #1}{#2}#3 #4\relax +} + % @defmethod == @defop Method \def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} @@ -4007,19 +4180,21 @@ \def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} -% #1 is the data type. #2 is the name. +% #1 is the data type. #2 is the name, perhaps followed by text that +% is actually part of the data type, which should not be put into the index. \def\deftypevarheader #1#2{% -\doind {vr}{\code{#2}}% Make entry in variables index +\dovarind#2 \relax% Make entry in variables index \begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}% \interlinepenalty=10000 \endgraf\penalty 10000\vskip -\parskip\penalty 10000 \endgroup} +\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} % @deftypevr {Global Flag} int enable \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} -\def\deftypevrheader #1#2#3{\doind {vr}{\code{#3}}% +\def\deftypevrheader #1#2#3{\dovarind#3 \relax% \begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} \interlinepenalty=10000 \endgraf\penalty 10000\vskip -\parskip\penalty 10000 @@ -4142,7 +4317,7 @@ % Use \turnoffactive so that punctuation chars such as underscore % work in node names. -\def\dosetq #1#2{{\let\folio=0 \turnoffactive \auxhat% +\def\dosetq #1#2{{\let\folio=0 \turnoffactive \edef\next{\write\auxfile{\internalsetq {#1}{#2}}}% \next}} @@ -4211,84 +4386,99 @@ #2% Output the suffix in any case. } +% This is the macro invoked by entries in the aux file. +\def\xrdef #1#2{{% + \catcode`\'=\other + \expandafter\gdef\csname X#1\endcsname{#2}% +}} + % Read the last existing aux file, if any. No error if none exists. - -% This is the macro invoked by entries in the aux file. -\def\xrdef #1#2{ -{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {#2}}} - -\def\readauxfile{% -\begingroup -\catcode `\^^@=\other -\catcode `\=\other -\catcode `\=\other -\catcode `\^^C=\other -\catcode `\^^D=\other -\catcode `\^^E=\other -\catcode `\^^F=\other -\catcode `\^^G=\other -\catcode `\^^H=\other -\catcode `\=\other -\catcode `\^^L=\other -\catcode `\=\other -\catcode `\=\other -\catcode `\=\other -\catcode `\=\other -\catcode `\=\other -\catcode `\=\other -\catcode `\=\other -\catcode `\=\other -\catcode `\=\other -\catcode `\=\other -\catcode `\=\other -\catcode `\=\other -\catcode 26=\other -\catcode `\^^[=\other -\catcode `\^^\=\other -\catcode `\^^]=\other -\catcode `\^^^=\other -\catcode `\^^_=\other -\catcode `\@=\other -\catcode `\^=\other -\catcode `\~=\other -\catcode `\[=\other -\catcode `\]=\other -\catcode`\"=\other -\catcode`\_=\other -\catcode`\|=\other -\catcode`\<=\other -\catcode`\>=\other -\catcode `\$=\other -\catcode `\#=\other -\catcode `\&=\other -% `\+ does not work, so use 43. -\catcode 43=\other -% Make the characters 128-255 be printing characters -{% - \count 1=128 - \def\loop{% - \catcode\count 1=\other - \advance\count 1 by 1 - \ifnum \count 1<256 \loop \fi +\def\readauxfile{\begingroup + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + \catcode`\@=\other + \catcode`\^=\other + % It was suggested to define this as 7, which would allow ^^e4 etc. + % in xref tags, i.e., node names. But since ^^e4 notation isn't + % supported in the main text, it doesn't seem desirable. Furthermore, + % that is not enough: for node names that actually contain a ^ + % character, we would end up writing a line like this: 'xrdef {'hat + % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first + % argument, and \hat is not an expandable control sequence. It could + % all be worked out, but why? Either we support ^^ or we don't. + % + % The other change necessary for this was to define \auxhat: + % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter + % and then to call \auxhat in \setq. + % + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + % `\+ does not work, so use 43. + \catcode43=\other + % Make the characters 128-255 be printing characters + {% + \count 1=128 + \def\loop{% + \catcode\count 1=\other + \advance\count 1 by 1 + \ifnum \count 1<256 \loop \fi + }% }% -}% -% the aux file uses ' as the escape. -% Turn off \ as an escape so we do not lose on -% entries which were dumped with control sequences in their names. -% For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ -% Reference to such entries still does not work the way one would wish, -% but at least they do not bomb out when the aux file is read in. -\catcode `\{=1 \catcode `\}=2 -\catcode `\%=\other -\catcode `\'=0 -\catcode`\^=7 % to make ^^e4 etc usable in xref tags -\catcode `\\=\other -\openin 1 \jobname.aux -\ifeof 1 \else \closein 1 \input \jobname.aux \global\havexrefstrue -\global\warnedobstrue -\fi -% Open the new aux file. Tex will close it automatically at exit. -\openout \auxfile=\jobname.aux + % The aux file uses ' as the escape (for now). + % Turn off \ as an escape so we do not lose on + % entries which were dumped with control sequences in their names. + % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ + % Reference to such entries still does not work the way one would wish, + % but at least they do not bomb out when the aux file is read in. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\%=\other + \catcode`\'=0 + \catcode`\\=\other + % + \openin 1 \jobname.aux + \ifeof 1 \else + \closein 1 + \input \jobname.aux + \global\havexrefstrue + \global\warnedobstrue + \fi + % Open the new aux file. TeX will close it automatically at exit. + \openout\auxfile=\jobname.aux \endgroup} @@ -4303,7 +4493,7 @@ % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } -% @footnotestyle is meaningful for info output only.. +% @footnotestyle is meaningful for info output only. \let\footnotestyle=\comment \let\ptexfootnote=\footnote @@ -4329,7 +4519,11 @@ % Don't bother with the trickery in plain.tex to not require the % footnote text as a parameter. Our footnotes don't need to be so general. % -\long\gdef\footnotezzz#1{\insert\footins{% +% Oh yes, they do; otherwise, @ifset and anything else that uses +% \parseargline fail inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\long\gdef\footnotezzz{\insert\footins\bgroup % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. @@ -4351,8 +4545,13 @@ % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut - #1\strut}% + \futurelet\next\fo@t } +\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t + \else\let\next\f@t\fi \next} +\def\f@@t{\bgroup\aftergroup\@foot\let\next} +\def\f@t#1{#1\@foot} +\def\@foot{\strut\egroup} }%end \catcode `\@=11 @@ -4409,9 +4608,51 @@ % \def\finalout{\overfullrule=0pt} +% @image. We use the macros from epsf.tex to support this. +% If epsf.tex is not installed and @image is used, we complain. +% +% Check for and read epsf.tex up front. If we read it only at @image +% time, we might be inside a group, and then its definitions would get +% undone and the next image would fail. +\openin 1 = xepsf.tex +\ifeof 1 \else + \closein 1 + \def\epsfannounce{\toks0 = }% do not bother showing banner + \input epsf.tex +\fi +% +\newif\ifwarnednoepsf +\newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from ftp://ftp.tug.org/tex/epsf.tex.} +% +% Only complain once about lack of epsf.tex. +\def\image#1{% + \ifx\epsfbox\undefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,\finish + \fi +} +% +% Arguments to @image: +% #1 is (mandatory) image filename; we tack on .eps extension. +% #2 is (optional) width, #3 is (optional) height. +% #4 is just the usual extra ignored arg for parsing this stuff. +\def\imagexxx#1,#2,#3,#4\finish{% + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% +} % End of control word definitions. + \message{and turning on texinfo input format.} \def\openindices{% @@ -4584,7 +4825,6 @@ \def~{{\tt \char '176}} \chardef\hat=`\^ \catcode`\^=\active -\def\auxhat{\def^{'hat}} \def^{{\tt \hat}} \catcode`\_=\active
--- a/man/texinfo.texi Mon Aug 13 09:49:11 2007 +0200 +++ b/man/texinfo.texi Mon Aug 13 09:50:14 2007 +0200 @@ -1,19 +1,25 @@ \input texinfo.tex @c -*-texinfo-*- +@comment $Id: texinfo.texi,v 1.4 1997/07/19 22:11:50 steve Exp $ @comment %**start of header +@set edition 2.24 +@set update-month July 1997 +@set update-date 15 @value{update-month} + @setfilename texinfo @settitle Texinfo @value{edition} + @c Define a new index for options. @defcodeindex op @c Put everything except function (command, in this case) names in one -index (arbitrarily chosen to be the concept index). +@c index (arbitrarily chosen to be the concept index). @syncodeindex op cp @syncodeindex vr cp @syncodeindex pg cp + @footnotestyle separate @paragraphindent 2 @finalout @comment %**end of header -@comment $Id: texinfo.texi,v 1.3 1997/04/10 05:56:19 steve Exp $ @c Before release, run C-u C-c C-u C-a (texinfo-all-menus-update with a @c prefix arg). This updates the node pointers, which texinfmt.el needs. @@ -24,6 +30,7 @@ * install-info: (texinfo)Invoking install-info. Updating info/dir entries. * texi2dvi: (texinfo)Format with texi2dvi. Printing Texinfo documentation. * texindex: (texinfo)Format with tex/texindex. Sorting Texinfo index files. +* makeinfo: (texinfo)makeinfo preferred. Translate Texinfo source. @end direntry @c Set smallbook if printing in smallbook format so the example of the @@ -33,10 +40,6 @@ @set smallbook @c @@clear smallbook -@set edition 2.23 -@set update-month October 1996 -@set update-date 1 @value{update-month} - @c Currently undocumented command, 5 December 1993: @c @c nwnode (Same as node, but no warnings; for `makeinfo'.) @@ -45,7 +48,7 @@ This file documents Texinfo, a documentation system that can produce both on-line information and a printed manual from a single source file. -Copyright (C) 1988, 90, 91, 92, 93, 95, 1996 Free Software Foundation, Inc. +Copyright (C) 1988, 90, 91, 92, 93, 95, 96, 97 Free Software Foundation, Inc. This is the second edition of the Texinfo documentation,@* and is consistent with version 2 of @file{texinfo.tex}. @@ -91,7 +94,8 @@ @page @vskip 0pt plus 1filll -Copyright @copyright{} 1988, 1990, 1991, 1992, 1993, 1995, 1996 Free Software Foundation, Inc. +Copyright @copyright{} 1988, 90, 91, 92, 93, 95, 96, 97 +Free Software Foundation, Inc. @sp 2 This is the second edition of the Texinfo documentation,@* @@ -99,8 +103,9 @@ @sp 2 Published by the Free Software Foundation @* -59 Temple Place Suite 330, @* -Boston, MA 02111-1307 USA @* +59 Temple Place Suite 330 @* +Boston, MA 02111-1307 @* +USA @* Printed copies are available for $15 each.@* ISBN 1-882114-64-7 @c ISBN 1-882114-63-9 is for edition 2.20 of 28 February 1995 @@ -201,8 +206,6 @@ * Lists and Tables:: How to write lists and tables. * Indices:: How to create indices. * Insertions:: How to insert @@-signs, braces, etc. -* Glyphs:: How to indicate results of evaluation, - expansion of macros, errors, etc. * Breaks:: How to force and prevent line and page breaks. * Definition Commands:: How to describe functions and the like in a uniform manner. @@ -224,7 +227,6 @@ * Refilling Paragraphs:: All about paragraph refilling. * Command Syntax:: A description of @@-Command syntax. * Obtaining TeX:: How to Obtain @TeX{}. -* New Features:: Texinfo second edition features. * Command and Variable Index:: A menu containing commands and variables. * Concept Index:: A menu covering many topics. @@ -367,6 +369,7 @@ * ref:: A reference for the last part of a sentence. * pxref:: How to write a parenthetical cross reference. * inforef:: How to refer to an Info-only file. +* uref:: How to refer to a uniform resource locator. @code{@@xref} @@ -418,7 +421,7 @@ * flushleft & flushright:: How to push text flushleft or flushright. * cartouche:: How to draw cartouches around examples. -Making Lists and Tables +Lists and Tables * Introducing Lists:: Texinfo formats lists for you. * itemize:: How to construct a simple list. @@ -429,8 +432,7 @@ Making a Two-column Table * table:: How to construct a two-column table. -* ftable vtable:: How to construct a two-column table - with automatic indexing. +* ftable vtable:: Automatic indexing for two-column tables. * itemx:: How to put more entries in the first column. Multi-column Tables @@ -466,6 +468,9 @@ * pounds:: How to insert the pounds currency symbol. * minus:: How to insert a minus sign. * math:: How to format a mathematical expression. +* Glyphs:: How to indicate results of evaluation, + expansion of macros, errors, etc. +* Images:: How to include graphics. Inserting @@ and Braces @@ -499,6 +504,15 @@ * Equivalence:: How to indicate equivalence. * Point Glyph:: How to indicate the location of point. +Glyphs Summary + +* result:: +* expansion:: +* Print Glyph:: +* Error Glyph:: +* Equivalence:: +* Point Glyph:: + Making and Preventing Breaks * Break Commands:: Cause and prevent splits. @@ -536,10 +550,11 @@ Conditionally Visible Text -* Conditional Commands:: How to specify text for HTML, Info, or @TeX{}. -* Using Ordinary TeX Commands:: You can use any and all @TeX{} commands. -* set clear value:: How to designate which text to format (for - both Info and @TeX{}); and how to set a +* Conditional Commands:: Specifying text for HTML, Info, or @TeX{}. +* Conditional Not Commands:: Specifying text for not HTML, Info, or @TeX{}. +* Raw Formatter Commands:: Using raw @TeX{} or HTML commands. +* set clear value:: Designating which text to format (for + all output formats); and how to set a flag to a string that you can insert. @code{@@set}, @code{@@clear}, and @code{@@value} @@ -634,7 +649,7 @@ * Tagifying:: How to tagify a file. * Splitting:: How to split a file manually. -Second Edition Features +How to Obtain @TeX{} * New Texinfo Mode Commands:: The updating commands are especially useful. * New Commands:: Many newly described @@-commands. @@ -735,7 +750,7 @@ Emacs Manual} is a good example of a Texinfo file, as is this manual.@refill To make a printed document, you process a Texinfo source file with the -@TeX{} typesetting program. This creates a @sc{dvi} file that you can +@TeX{} typesetting program. This creates a DVI file that you can typeset and print as a book or report. (Note that the Texinfo language is completely different from @TeX{}'s usual language, plain @TeX{}.) If you do not have @TeX{}, but do have @code{troff} or @code{nroff}, you @@ -745,7 +760,7 @@ @code{makeinfo} utility or Emacs's @code{texinfo-format-buffer} command; this creates an Info file that you can install on-line.@refill -@TeX{} and @code{texi2roff} work with many types of printer; similarly, +@TeX{} and @code{texi2roff} work with many types of printers; similarly, Info works with almost every type of computer terminal. This power makes Texinfo a general purpose system, but brings with it a constraint, which is that a Texinfo file may contain only the customary @@ -827,26 +842,26 @@ represent links that do not fit a hierarchical structure.@refill Usually, you will design a document so that its nodes match the -structure of chapters and sections in the printed output. But there -are times when this is not right for the material being discussed. -Therefore, Texinfo uses separate commands to specify the node -structure for the Info file and the section structure for the printed -output.@refill +structure of chapters and sections in the printed output. But +occasionally there are times when this is not right for the material +being discussed. Therefore, Texinfo uses separate commands to specify +the node structure for the Info file and the section structure for the +printed output.@refill Generally, you enter an Info file through a node that by convention is -called @samp{Top}. This node normally contains just a brief summary -of the file's purpose, and a large menu through which the rest of the -file is reached. From this node, you can either traverse the file +named `Top'. This node normally contains just a brief summary of the +file's purpose, and a large menu through which the rest of the file is +reached. From this node, you can either traverse the file systematically by going from node to node, or you can go to a specific -node listed in the main menu, or you can search the index menus and -then go directly to the node that has the information you want.@refill -@c !!! With the standalone Info system you may go to specific nodes -@c directly.. +node listed in the main menu, or you can search the index menus and then +go directly to the node that has the information you want. Alternatively, +with the standalone Info program, you can specify specific menu items on +the command line (@pxref{Top,,, info, Info}). If you want to read through an Info file in sequence, as if it were a -printed manual, you can get the whole file with the advanced Info -command @kbd{g* @key{RET}}. (@inforef{Expert, Advanced Info commands, -info}.)@refill +printed manual, you can hit @key{SPC} repeatedly, or you get the whole +file with the advanced Info command @kbd{g *}. (@inforef{Expert, +Advanced Info commands, info}.)@refill @c !!! dir file may be located in one of many places: @c /usr/local/emacs/info mentioned in info.c DEFAULT_INFOPATH @@ -873,7 +888,7 @@ program written by Donald Knuth.@footnote{You can also use the @code{texi2roff} program if you do not have @TeX{}; since Texinfo is designed for use with @TeX{}, @code{texi2roff} is not described here. -@code{texi2roff} is part of the standard GNU distribution.}@refill +@code{texi2roff} is not part of the standard GNU distribution.} A Texinfo-based book is similar to any other typeset, printed work: it can have a title page, copyright page, table of contents, and preface, @@ -909,7 +924,7 @@ specifications, you can make a book look dignified, old and serious, or light-hearted, young and cheery.@refill -@TeX{} is freely distributable. It is written in a dialect of Pascal +@TeX{} is freely distributable. It is written in a superset of Pascal called WEB and can be compiled either in Pascal or (by using a conversion program that comes with the @TeX{} distribution) in C. (@xref{TeX Mode, ,@TeX{} Mode, emacs, The GNU Emacs Manual}, for information @@ -1041,9 +1056,9 @@ @end iftex Use three hyphens in a row, @samp{---}, for a dash---like this. In -@TeX{}, a single or even a double hyphen produces a printed dash that -is shorter than the usual typeset dash. Info reduces three hyphens to two for -display on the screen.@refill +@TeX{}, a single or double hyphen produces a printed dash that is +shorter than the usual typeset dash. Info reduces three hyphens to two +for display on the screen. To prevent a paragraph from being indented in the printed manual, put the command @code{@@noindent} on a line by itself before the @@ -1056,7 +1071,10 @@ you mark off a region with the @code{@@ifinfo} and @code{@@end ifinfo} commands, that region will appear only in the Info file; in that region, you can use Info commands that you cannot use in @TeX{}. -Similarly for @code{@@ifhtml} and @code{@@end ifhtml}. +Similarly for @code{@@ifhtml @dots{} @@end ifhtml}, +@code{@@ifnothtml @dots{} @@end ifnothtml}, +@code{@@ifnotinfo @dots{} @@end ifnotinfo}, +@code{@@ifnottex @dots{} @@end ifnottex}, @xref{Conditionals}. @cindex Tabs; don't use! @@ -1064,7 +1082,9 @@ @strong{Caution:} Do not use tabs in a Texinfo file! @TeX{} uses variable-width fonts, which means that it cannot predefine a tab to work in all circumstances. Consequently, @TeX{} treats tabs like single -spaces, and that is not what they look like.@refill +spaces, and that is not what they look like. Furthermore, +@code{makeinfo} does nothing special with tabs, and thus a tab character +in your input file may appear differently in the output. @noindent To avoid this problem, Texinfo mode causes GNU Emacs to insert multiple @@ -1073,6 +1093,9 @@ @noindent Also, you can run @code{untabify} in Emacs to convert tabs in a region to multiple spaces.@refill + +@noindent +Don't use tabs. @end quotation @node Comments, Minimum, Conventions, Overview @@ -1237,7 +1260,7 @@ @section A Short Sample Texinfo File @cindex Sample Texinfo file -Here is a complete but very short Texinfo file, in 6 parts. The first +Here is a complete but very short Texinfo file, in six parts. The first three parts of the file, from @samp{\input texinfo} through to @samp{@@end titlepage}, look more intimidating than they are. Most of the material is standard boilerplate; when you write a manual, simply @@ -1252,8 +1275,8 @@ @subheading Part 1: Header @noindent -The header does not appear in either the Info file or the@* -printed output. It sets various parameters, including the@* +The header does not appear in either the Info file or the +printed output. It sets various parameters, including the name of the Info file and the title used in the header. @example @@ -1271,7 +1294,7 @@ @subheading Part 2: Summary Description and Copyright @noindent -The summary description and copyright segment does not@* +The summary description and copyright segment does not appear in the printed document. @example @@ -1309,13 +1332,13 @@ @subheading Part 4: `Top' Node and Master Menu @noindent -The `Top' node contains the master menu for the Info file.@* -Since a printed manual uses a table of contents rather than@* +The `Top' node contains the master menu for the Info file. +Since a printed manual uses a table of contents rather than a menu, the master menu appears only in the Info file. @example @group -@@node Top, First Chapter, (dir), (dir) +@@node Top, First Chapter, , (dir) @@comment node-name, next, previous, up @end group @end example @@ -1418,7 +1441,7 @@ manual. @end quotation -@node Acknowledgements, , Short Sample, Overview +@node Acknowledgements, , Short Sample, Overview @comment node-name, next, previous, up @section Acknowledgements @@ -1502,7 +1525,7 @@ Show the structure of a Texinfo source file.@refill @item -Automatically create or update the `Next',@* +Automatically create or update the `Next', `Previous', and `Up' pointers of a node. @item @@ -1668,12 +1691,12 @@ @emph{existing} word, position the cursor in front of the word and type @kbd{C-u 1 C-c C-c c}. This makes it easy to edit existing plain text. The value of the prefix argument tells Emacs how many words following -point to include between braces---1 for one word, 2 for two words, and -so on. Use a negative argument to enclose the previous word or words. -If you do not specify a prefix argument, Emacs inserts the @@-command -string and positions the cursor between the braces. This feature works -only for those @@-commands that operate on a word or words within one -line, such as @code{@@kbd} and @code{@@var}.@refill +point to include between braces---@samp{1} for one word, @samp{2} for +two words, and so on. Use a negative argument to enclose the previous +word or words. If you do not specify a prefix argument, Emacs inserts +the @@-command string and positions the cursor between the braces. This +feature works only for those @@-commands that operate on a word or words +within one line, such as @code{@@kbd} and @code{@@var}.@refill This set of insert commands was created after analyzing the frequency with which different @@-commands are used in the @cite{GNU Emacs @@ -2029,7 +2052,7 @@ both @code{makeinfo} and the @code{texinfo-format-@dots{}} commands require that you insert menus in the file.@refill -@node Other Updating Commands, , Updating Requirements, Updating Nodes and Menus +@node Other Updating Commands, , Updating Requirements, Updating Nodes and Menus @comment node-name, next, previous, up @subsection Other Updating Commands @@ -2098,7 +2121,7 @@ nodes' hierarchical level. This means that the `Next' node of a subsection may well be the next chapter. Sequentially ordered nodes are useful for novels and other documents that you read through -sequentially. (However, in Info, the @code{g* @key{RET}} command lets +sequentially. (However, in Info, the @kbd{g *} command lets you look through the file sequentially, so sequentially ordered nodes are not strictly necessary.) With an argument (prefix argument, if interactive), the @code{texinfo-sequential-node-update} command @@ -2174,7 +2197,7 @@ @cindex Part of file formatting and printing Typesetting and printing a Texinfo file is a multi-step process in which -you first create a file for printing (called a @sc{dvi} file), and then +you first create a file for printing (called a DVI file), and then print the file. Optionally, you may also create indices. To do this, you must run the @code{texindex} command after first running the @code{tex} typesetting command; and then you must run the @code{tex} @@ -2209,7 +2232,7 @@ a second time after sorting the raw index files with the @code{texindex} command. (Usually, you do not format an index when you format a region, only when you format a buffer. Now that the @code{texi2dvi} command -exists, there is no little need for this command.)@refill +exists, there is little or no need for this command.)@refill @item C-c C-t C-p @itemx M-x texinfo-tex-print @@ -2228,7 +2251,7 @@ @xref{Format/Print Hardcopy}, for a description of the other @TeX{} related commands, such as @code{tex-show-print-queue}.@refill -@node Texinfo Mode Summary, , Printing, Texinfo Mode +@node Texinfo Mode Summary, , Printing, Texinfo Mode @comment node-name, next, previous, up @section Texinfo Mode Summary @@ -2368,7 +2391,7 @@ C-c C-t C-r @r{Run @TeX{} on the region.} C-c C-t C-b @r{Run} @code{texi2dvi} @r{on the buffer.} C-c C-t C-i @r{Run} @code{texindex}. -C-c C-t C-p @r{Print the @sc{dvi} file.} +C-c C-t C-p @r{Print the DVI file.} C-c C-t C-q @r{Show the print queue.} C-c C-t C-d @r{Delete a job from the print queue.} C-c C-t C-k @r{Kill the current @TeX{} formatting job.} @@ -2441,7 +2464,7 @@ @item The header, delimited by special comment lines, that includes the commands for naming the Texinfo file and telling @TeX{} what -definitions' file to use when processing the Texinfo file.@refill +definitions file to use when processing the Texinfo file.@refill @item A short statement of what the file is about, with a copyright notice @@ -2519,7 +2542,7 @@ Permission is granted to @dots{} @@end titlepage -@@node Top, Overview, (dir), (dir) +@@node Top, Overview, , (dir) @@ifinfo This document describes @dots{} @@ -2612,12 +2635,12 @@ @enumerate @item -When the file is processed by @TeX{}, the @code{\input texinfo} command +When the file is processed by @TeX{}, the @samp{\input texinfo} command tells @TeX{} to load the macros needed for processing a Texinfo file. These are in a file called @file{texinfo.tex}, which is usually located in the @file{/usr/lib/tex/macros} directory. @TeX{} uses the backslash, @samp{\}, to mark the beginning of a command, just as Texinfo uses -@code{@@}. The @file{texinfo.tex} file causes the switch from @samp{\} +@samp{@@}. The @file{texinfo.tex} file causes the switch from @samp{\} to @samp{@@}; before the switch occurs, @TeX{} requires @samp{\}, which is why it appears at the beginning of the file.@refill @@ -2663,33 +2686,38 @@ @end example Write the @code{@@setfilename} command at the beginning of a line and -follow it on the same line by the Info file name. Do not write -anything else on the line; anything on the line after the command is -considered part of the file name, including a comment.@refill +follow it on the same line by the Info file name. Do not write anything +else on the line; anything on the line after the command is considered +part of the file name, including what would otherwise be a +comment. The @code{@@setfilename} line specifies the name of the Info file to be generated. This name should be different from the name of the Texinfo file. There are two conventions for choosing the name: you can either -remove the @samp{.tex} extension from the input file name, or replace it -with the @samp{.info} extension. +remove the @samp{.texi} extension from the input file name, or replace +it with the @samp{.info} extension. Some operating systems cannot handle long file names. You can run into a problem even when the file name you specify is itself short enough. This occurs because the Info formatters split a long Info file into -short indirect subfiles, and name them by appending `-1', `-2', @dots{}, -`-10', `-11', and so on, to the original file name. (@xref{Tag and -Split Files, , Tag Files and Split Files}.) The subfile name -@file{texinfo.info-10}, for example, is too long for some systems; so -the Info file name for this document is @file{texinfo} rather than -@file{texinfo.info}.@refill +short indirect subfiles, and name them by appending @samp{-1}, +@samp{-2}, @dots{}, @samp{-10}, @samp{-11}, and so on, to the original +file name. (@xref{Tag and Split Files, , Tag Files and Split Files}.) +The subfile name @file{texinfo.info-10}, for example, is too long for +some systems; so the Info file name for this document is @file{texinfo} +rather than @file{texinfo.info}. The Info formatting commands ignore everything written before the @code{@@setfilename} line, which is why the very first line of the file (the @code{\input} line) does not need to be commented out. +@pindex texinfo.cnf The @code{@@setfilename} line produces no output when you typeset a -printed manual, but is does an essential job: it opens the index, -cross-reference, and other auxiliary files used by Texinfo. +manual with @TeX{}, but it nevertheless is essential: it opens the +index, cross-reference, and other auxiliary files used by Texinfo, and +also reads @file{texinfo.cnf} if that file is present on your system +(@pxref{Preparing for TeX,, Preparing to Use @TeX{}}). + @node settitle, setchapternewpage, setfilename, Header @comment node-name, next, previous, up @@ -2853,11 +2881,11 @@ commands do not change the existing indentation.@refill @item -If the value of @var{indent} is 0, the Info formatting commands delete +If the value of @var{indent} is zero, the Info formatting commands delete existing indentation.@refill @item -If the value of @var{indent} is greater than 0, the Info formatting +If the value of @var{indent} is greater than zero, the Info formatting commands indent the paragraph by that number of spaces.@refill @end itemize @@ -2874,7 +2902,7 @@ @xref{Refilling Paragraphs}, for a detailed description of what goes on.@refill -@node End of Header, , paragraphindent, Header +@node End of Header, , paragraphindent, Header @comment node-name, next, previous, up @subsection End of Header @cindex End of header line @@ -3277,7 +3305,7 @@ double-sided printing and no @code{@@setchapternewpage} command for single-sided printing.@refill -@node headings on off, , end titlepage, Titlepage & Copyright Page +@node headings on off, , end titlepage, Titlepage & Copyright Page @comment node-name, next, previous, up @subsection The @code{@@headings} Command @findex headings @@ -3387,7 +3415,7 @@ @@end titlepage @@ifinfo -@@node Top, Copying, (dir), (dir) +@@node Top, Copying, , (dir) @@top Texinfo Texinfo is a documentation system@dots{} @@ -3415,7 +3443,7 @@ menu, which is usually the copying permissions, introduction, or first chapter.@refill -@node Master Menu Parts, , Title of Top Node, The Top Node +@node Master Menu Parts, , Title of Top Node, The Top Node @subsection Parts of a Master Menu @cindex Master menu parts @cindex Parts of a master menu @@ -3496,7 +3524,7 @@ @end group @end example -@node Software Copying Permissions, , The Top Node, Beginning a File +@node Software Copying Permissions, , The Top Node, Beginning a File @comment node-name, next, previous, up @section Software Copying Permissions @cindex Software copying permissions @@ -3649,12 +3677,16 @@ since that makes it easiest to find.)@refill @ignore +@c TeX can do sorting, just not conveniently enough to handle sorting +@c Texinfo indexes. --karl, 5may97. In @TeX{}, the @code{@@printindex} command needs a sorted index file to work from. @TeX{} does not know how to do sorting; this is a deficiency. @TeX{} writes output files of raw index data; use the @code{texindex} program to convert these files to sorted index files. (@xref{Format/Print Hardcopy}, for more information.)@refill @end ignore + + @node Contents, File End, Printing Indices & Menus, Ending a File @comment node-name, next, previous, up @section Generating a Table of Contents @@ -3723,7 +3755,7 @@ formatting commands ignore the @code{@@contents} and @code{@@shortcontents} commands.@refill -@node File End, , Contents, Ending a File +@node File End, , Contents, Ending a File @comment node-name, next, previous, up @section @code{@@bye} File Ending @findex bye @@ -3825,7 +3857,7 @@ @node Structuring Command Types, makeinfo top, Tree Structuring, Structuring @comment node-name, next, previous, up -@section Types of Structuring Command +@section Types of Structuring Commands The chapter structuring commands fall into four groups or series, each of which contains structuring commands corresponding to the @@ -3976,7 +4008,7 @@ @section @code{@@top} The @code{@@top} command is a special sectioning command that you use -only after an @code{@@node Top} line at the beginning of a Texinfo file. +only after an @samp{@@node Top} line at the beginning of a Texinfo file. The @code{@@top} command tells the @code{makeinfo} formatter which node is the `Top' node. It has the same typesetting effect as @code{@@unnumbered} @@ -4240,7 +4272,7 @@ @end group @end example -@node Raise/lower sections, , subsubsection, Structuring +@node Raise/lower sections, , subsubsection, Structuring @comment node-name, next, previous, up @section @code{@@raisesections} and @code{@@lowersections} @findex raisesections @@ -4254,6 +4286,7 @@ subsections to sections, and so on. The @code{@@lowersections} command changes chapters to sections, sections to subsections, and so on. +@cindex Include files, and section levels An @code{@@lowersections} command is useful if you wish to include text that is written as an outer or standalone Texinfo file in another Texinfo file as an inner, included file. If you write the command at @@ -4298,7 +4331,16 @@ line of its own. An @code{@@lowersections} command cancels an @code{@@raisesections} -command, and vice versa. +command, and vice versa. Typically, the commands are used like this: + +@example +@@lowersections +@@include somefile.texi +@@raisesections +@end example + +Without the @code{@@raisesections}, all the subsequent sections in your +document will be lowered. Repeated use of the commands continue to raise or lower the hierarchical level a step at a time. @@ -4498,7 +4540,7 @@ Usually, you write one of the chapter-structuring command lines immediately after an @code{@@node} line---for example, an @code{@@section} or @code{@@subsection} line. (@xref{Structuring -Command Types, , Types of Structuring Command}.)@refill +Command Types, , Types of Structuring Commands}.)@refill @quotation @strong{Please note:} The GNU Emacs Texinfo mode updating commands work @@ -4671,10 +4713,9 @@ @end smallexample @cindex Comma in nodename -@cindex Colon in nodename @cindex Apostrophe in nodename @item -You cannot use commas, colons, or apostrophes within a node name; these +You cannot use commas or apostrophes within a node name; these confuse @TeX{} or the Info formatters.@refill @need 700 @@ -4696,37 +4737,47 @@ Case is significant. @end itemize + @node First Node, makeinfo top command, Node Line Requirements, node @comment node-name, next, previous, up @subsection The First Node -@cindex @samp{@r{Top}} node is first +@cindex Top node is first @cindex First node -The first node of a Texinfo file is the `Top' node, except in an -included file (@pxref{Include Files}). - -The `Top' node (which must be named @samp{top} or @samp{Top}) should -have as its `Up' and `Previous' nodes the name of a node in another -file, where there is a menu that leads to this file. Specify the file -name in parentheses. If the file is to be installed directly in the -Info directory file, use @samp{(dir)} as the parent of the `Top' node; -this is short for @samp{(dir)top}, and specifies the `Top' node in the -@file{dir} file, which contains the main menu for Info. For example, -the @code{@@node Top} line of this manual looks like this:@refill - -@example -@@node Top, Overview, (dir), (dir) -@end example - -@noindent -(You may use the Texinfo updating commands or the @code{makeinfo} -utility to insert these `Next' and @samp{(dir)} pointers -automatically.)@refill +The first node of a Texinfo file is the @dfn{Top} node, except in an +included file (@pxref{Include Files}). The Top node contains the main +or master menu for the document, and a short summary of the document +(@pxref{Top Node Summary}). + +@cindex Up node of Top node +@cindex (dir) as Up node of Top node +The Top node (which must be named @samp{top} or @samp{Top}) should have +as its `Up' node the name of a node in another file, where there is a +menu that leads to this file. Specify the file name in parentheses. If +the file is to be installed directly in the Info directory file, use +@samp{(dir)} as the parent of the Top node; this is short for +@samp{(dir)top}, and specifies the Top node in the @file{dir} file, +which contains the main menu for the Info system as a whole. For +example, the @code{@@node Top} line of this manual looks like this: + +@example +@@node Top, Copying, , (dir) +@end example + +@noindent +(You can use the Texinfo updating commands or the @code{makeinfo} +utility to insert these pointers automatically.) + +@cindex Previous node of Top node +Do not define the `Previous' node of the Top node to be @samp{(dir)}, as +it causes confusing behavior for users: if you are in the Top node and +hits @key{DEL} to go backwards, you wind up in the middle of the +some other entry in the @file{dir} file, which has nothing to do with +what you were reading. @xref{Install an Info File}, for more information about installing -an Info file in the @file{info} directory.@refill - -The `Top' node contains the main or master menu for the document. +an Info file in the @file{info} directory. + @node makeinfo top command, Top Node Summary, First Node, node @comment node-name, next, previous, up @@ -4754,7 +4805,8 @@ @code{@@unnumbered} when you use the Texinfo updating commands to create or update pointers and menus.@refill -@node Top Node Summary, , makeinfo top command, node + +@node Top Node Summary, , makeinfo top command, node @subsection The `Top' Node Summary @cindex @samp{@r{Top}} node summary @@ -4783,7 +4835,7 @@ contain this information: see @ref{titlepage, , @code{@@titlepage}}.)@refill -@node makeinfo Pointer Creation, , node, Nodes +@node makeinfo Pointer Creation, , node, Nodes @section Creating Pointers with @code{makeinfo} @cindex Creating pointers with @code{makeinfo} @cindex Pointer creation with @code{makeinfo} @@ -4945,18 +4997,17 @@ @cindex Menu parts @cindex @code{@@menu} parts -A menu entry has three parts, only the second of which is -required:@refill +A menu entry has three parts, only the second of which is required: @enumerate @item -The menu entry name. +The menu entry name (optional). @item The name of the node (required). @item -A description of the item. +A description of the item (optional). @end enumerate The template for a menu entry looks like this:@refill @@ -4972,12 +5023,14 @@ command. The menu entry name is what the user types after the @kbd{m} command.@refill -The third part of a menu entry is a descriptive phrase or -sentence. Menu entry names and node names are often short; the -description explains to the reader what the node is about. The -description, which is optional, can spread over two or more lines. A -useful description complements the node name rather than repeats -it.@refill +The third part of a menu entry is a descriptive phrase or sentence. +Menu entry names and node names are often short; the description +explains to the reader what the node is about. A useful description +complements the node name rather than repeats it. The description, +which is optional, can spread over two or more lines; if it does, some +authors prefer to indent the second line while others prefer to align it +with the first (and all others). It's up to you. + @node Less Cluttered Menu Entry, Menu Example, Menu Parts, Menus @comment node-name, next, previous, up @@ -5080,7 +5133,7 @@ @samp{Buffers}, they must be the names of nodes in the same Info file (@pxref{Other Info Files, , Referring to Other Info Files}).@refill -@node Other Info Files, , Menu Example, Menus +@node Other Info Files, , Menu Example, Menus @comment node-name, next, previous, up @section Referring to Other Info Files @cindex Referring to other Info files @@ -5169,6 +5222,7 @@ * ref:: A reference for the last part of a sentence. * pxref:: How to write a parenthetical cross reference. * inforef:: How to refer to an Info-only file. +* uref:: How to refer to a uniform resource locator. @end menu @node References, Cross Reference Commands, Cross References, Cross References @@ -5202,7 +5256,7 @@ reference locations. This is evident in Info, in which a cross reference takes you to the specified node. @TeX{} also uses nodes to define cross reference locations, but the action is less obvious. When -@TeX{} generates a @sc{dvi} file, it records nodes' page numbers and +@TeX{} generates a DVI file, it records nodes' page numbers and uses the page numbers in making references. Thus, if you are writing a manual that will only be printed, and will not be used on-line, you must nonetheless write @code{@@node} lines to name the places to which @@ -5314,8 +5368,8 @@ @item The cross reference name for the Info reference, if it is to be different -from the node name. If you include this argument, it argument becomes -the first part of the cross reference. It is usually omitted.@refill +from the node name. If you include this argument, it becomes +the first part of the cross reference. It is usually omitted.@refill @item A topic description or section name. Often, this is the title of the @@ -5324,7 +5378,9 @@ @item The name of the Info file in which the reference is located, if it is -different from the current file.@refill +different from the current file. You need not include any @samp{.info} +suffix on the file name, since Info readers try appending it +automatically. @item The name of a printed manual from a different Texinfo file.@refill @@ -5641,7 +5697,7 @@ same, and with the first and third arguments if the node name and title are different.@refill -Here are several examples from @cite{The GAWK Manual}:@refill +Here are several examples from @cite{The GNU Awk User's Guide}:@refill @smallexample @@xref@{Sample Program@}. @@ -5652,7 +5708,7 @@ @@xref@{Regexp, , Regular Expressions as Patterns@}. @end smallexample -@node Four and Five Arguments, , Three Arguments, xref +@node Four and Five Arguments, , Three Arguments, xref @subsection @code{@@xref} with Four and Five Arguments In a cross reference, a fourth argument specifies the name of another @@ -5978,8 +6034,7 @@ breaks up the flow of text.@refill @end quotation -@node inforef, , pxref, Cross References -@comment node-name, next, previous, up +@node inforef, uref, pxref, Cross References @section @code{@@inforef} @cindex Cross references using @code{@@inforef} @cindex References using @code{@@inforef} @@ -6076,6 +6131,50 @@ refer to printed works for which no Info form exists. @xref{cite, , @code{@@cite}}.@refill +@node uref, , inforef, Cross References +@section @code{@@uref@{@var{url}[, @var{displayed-text}]@}} +@findex uref +@cindex Uniform resource locator, referring to +@cindex URL, referring to + +@code{@@uref} produces a reference to a uniform resource locator (URL). +It takes one mandatory argument, the URL, and one optional argument, the +text to display (the default is the URL itself). In HTML output, +@code{@@uref} produces a link you can follow. For example: + +@example +The official GNU ftp site is +@@uref@{ftp://ftp.gnu.ai.mit.edu/pub/gnu@} +@end example + +@noindent produces (in text): +@display +The official GNU ftp site is +@uref{ftp://ftp.gnu.ai.mit.edu/pub/gnu} +@end display + +@noindent whereas +@example +The official +@@uref@{ftp://ftp.gnu.ai.mit.edu/pub/gnu, + GNU ftp site@} holds programs and texts. +@end example + +@noindent produces (in text): +@display +The official @uref{ftp://ftp.gnu.ai.mit.edu/pub/gnu, GNU ftp site} holds +programs and texts. +@end display + +@noindent and (in HTML): +@example +The official <A HREF="ftp://ftp.gnu.ai.mit.edu/pub/gnu">GNU ftp +site</A> holds programs and texts. +@end example + +To merely indicate a URL, use @code{@@url} (@pxref{url, @code{@@url}}). + + @node Marking Text, Quotations and Examples, Cross References, Top @comment node-name, next, previous, up @chapter Marking Words and Phrases @@ -6270,10 +6369,11 @@ @end example @end iftex + @node kbd, key, code, Indicating -@comment node-name, next, previous, up @subsection @code{@@kbd}@{@var{keyboard-characters}@} @findex kbd +@cindex keyboard input Use the @code{@@kbd} command for characters of input to be typed by users. For example, to refer to the characters @kbd{M-a}, @@ -6290,8 +6390,31 @@ @@kbd@{M-x shell@} @end example +@cindex user input +@cindex slanted typewriter font, for @code{@@kbd} The @code{@@kbd} command has the same effect as @code{@@code} in Info, -but may produce a different font in a printed manual.@refill +but by default produces a different font (slanted typewriter instead of +normal typewriter) in the printed manual, so users can distinguish the +characters they are supposed to type from those the computer outputs. + +@findex kbdinputstyle +Since the usage of @code{@@kbd} varies from manual to manual, you can +control the font switching with the @code{@@kbdinputstyle} command. +This command has no effect on Info output. Write this command at the +beginning of a line with a single word as an argument, one of the +following: +@vindex distinct@r{, arg to @@kbdinputstyle} +@vindex example@r{, arg to @@kbdinputstyle} +@vindex code@r{, arg to @@kbdinputstyle} +@table @samp +@item code +Always use the same font for @code{@@kbd} as @code{@@code}. +@item example +Use the distinguishing font for @code{@@kbd} only in @code{@@example} +and similar environments. +@item example +(the default) Always use the distinguishing font for @code{@@kbd}. +@end table You can embed another @@-command inside the braces of an @code{@@kbd} command. Here, for example, is the way to describe a command that @@ -6325,6 +6448,7 @@ really want to mention a space character as one of the characters of input, write @kbd{@@key@{SPC@}} for it.)@refill + @node key, samp, kbd, Indicating @comment node-name, next, previous, up @subsection @code{@@key}@{@var{key-name}@} @@ -6382,11 +6506,11 @@ @cindex META key There are subtleties to handling words like `meta' or `ctrl' that are -names of shift keys. When mentioning a character in which the shift key -is used, such as @kbd{Meta-a}, use the @code{@@kbd} command alone; do -not use the @code{@@key} command; but when you are referring to the -shift key in isolation, use the @code{@@key} command. For example, -write @samp{@@kbd@{Meta-a@}} to produce @kbd{Meta-a} and +names of modifier keys. When mentioning a character in which the +modifier key is used, such as @kbd{Meta-a}, use the @code{@@kbd} command +alone; do not use the @code{@@key} command; but when you are referring +to the modifier key in isolation, use the @code{@@key} command. For +example, write @samp{@@kbd@{Meta-a@}} to produce @kbd{Meta-a} and @samp{@@key@{META@}} to produce @key{META}. @c I don't think this is a good explanation. @@ -6421,10 +6545,11 @@ @end quotation Any time you are referring to single characters, you should use -@code{@@samp} unless @code{@@kbd} is more appropriate. Use -@code{@@samp} for the names of command-line options. Also, you may use -@code{@@samp} for entire statements in C and for entire shell -commands---in this case, @code{@@samp} often looks better than +@code{@@samp} unless @code{@@kbd} or @code{@@key} is more appropriate. +Use @code{@@samp} for the names of command-line options (except in an +@code{@@table}, where @code{@@code} seems to read more easily). Also, +you may use @code{@@samp} for entire statements in C and for entire +shell commands---in this case, @code{@@samp} often looks better than @code{@@code}. Basically, @code{@@samp} is a catchall for whatever is not covered by @code{@@code}, @code{@@kbd}, or @code{@@key}.@refill @@ -6464,7 +6589,7 @@ Do not use @code{@@var} for the names of particular variables in programming languages. These are specific names from a program, so -@code{@@code} is correct for them. For example, the Lisp variable +@code{@@code} is correct for them. For example, the Emacs Lisp variable @code{texinfo-tex-command} is not a metasyntactic variable; it is properly formatted using @code{@@code}.@refill @@ -6646,20 +6771,24 @@ @node url, email, cite, Indicating @subsection @code{@@url}@{@var{uniform-resource-locator}@} @findex url - -Use the @code{@@url} command to indicate a uniform resource locator on -the World Wide Web. For example: +@cindex Uniform resource locator, indicating +@cindex URL, indicating + +Use the @code{@@url} to indicate a uniform resource locator on the World +Wide Web. This is analogous to @code{@@file}, @code{@@var}, etc., and +is purely for markup purposes. It does not produce a link you can +follow in HTML output (the @code{@@uref} command does, @pxref{uref,, +@code{@@uref}}). It is useful for example URL's which do not actually +exist. For example: @c Two lines because one is too long for smallbook format. @example -The official GNU ftp site is -@@url@{ftp://ftp.gnu.ai.mit.edu/pub/gnu@}. -@end example - -In Info and @TeX{}, this acts like @code{@@samp}. When -Texinfo is converted to HTML, this produces a link you can follow. - -@node email, , url, Indicating +For example, the url might be +@@url@{http://host.domain.org/path@}. +@end example + + +@node email, , url, Indicating @subsection @code{@@email}@{@var{email-address}@} @findex email @@ -6667,15 +6796,15 @@ For example: @example -Send bug reports to @email{bug-texinfo@@prep.ai.mit.edu}. -@end example - -In Info and @TeX{}, this acts like @code{@@samp}. When we have support -for conversion of Texinfo to HTML, this will produce a link you can -follow to bring up a mail composition window initialized with -@var{email-address}. - -@node Emphasis, , Indicating, Marking Text +Send bug reports to @@email@{bug-texinfo@@prep.ai.mit.edu@}. +@end example + +In Info and @TeX{}, this acts like @code{@@key} (it puts the argument in +angle brackets). When we have support for converting Texinfo to HTML, +this will produce a link you can follow to bring up a mail composition +window initialized with @var{email-address}. + +@node Emphasis, , Indicating, Marking Text @comment node-name, next, previous, up @section Emphasizing Text @cindex Emphasizing text @@ -6714,7 +6843,7 @@ @example @group @@quotation -@@strong@{Caution:@} @@code@{rm * .[^.]*@} removes @@emph@{all@} +@@strong@{Caution:@} @@samp@{rm * .[^.]*@} removes @@emph@{all@} files in the directory. @@end quotation @end group @@ -6854,7 +6983,7 @@ you need to use one, it probably indicates a gap in the Texinfo language.@refill -@node Customized Highlighting, , Fonts, Emphasis +@node Customized Highlighting, , Fonts, Emphasis @comment node-name, next, previous, up @subsection Customized Highlighting @cindex Highlighting, customized @@ -7253,12 +7382,12 @@ @code{@@lisp} command and an @code{@@end lisp} command. @end lisp -Use @code{@@lisp} instead of @code{@@example} so as to preserve -information regarding the nature of the example. This is useful, for -example, if you write a function that evaluates only and all the Lisp -code in a Texinfo file. Then you can use the Texinfo file as a Lisp -library.@footnote{It would be straightforward to extend Texinfo to -work in a similar fashion for C, @sc{fortran}, or other languages.}@refill +Use @code{@@lisp} instead of @code{@@example} to preserve information +regarding the nature of the example. This is useful, for example, if +you write a function that evaluates only and all the Lisp code in a +Texinfo file. Then you can use the Texinfo file as a Lisp +library.@footnote{It would be straightforward to extend Texinfo to work +in a similar fashion for C, Fortran, or other languages.}@refill Mark the end of @code{@@lisp} with @code{@@end lisp} on a line by itself.@refill @@ -7459,12 +7588,8 @@ @end quotation -Flushright produces the type of indentation often used in the return -address of letters.@refill - -@need 1500 -@noindent -For example, +@code{@@flushright} produces the type of indentation often used in the +return address of letters. For example, @example @group @@ -7487,7 +7612,7 @@ left end ragged. @end flushright -@node cartouche, , flushleft & flushright, Quotations and Examples +@node cartouche, , flushleft & flushright, Quotations and Examples @section Drawing Cartouches Around Examples @findex cartouche @cindex Box with rounded corners @@ -7509,7 +7634,7 @@ @@example @@cartouche % pwd -/usr/local/lib/emacs/info +/usr/local/share/emacs @@end cartouche @@end example @end group @@ -7532,16 +7657,16 @@ @end example @end iftex + @node Lists and Tables, Indices, Quotations and Examples, Top -@comment node-name, next, previous, up -@chapter Making Lists and Tables +@chapter Lists and Tables @cindex Making lists and tables -@cindex Lists and tables, making them -@cindex Tables and lists, making them - -Texinfo has several ways of making lists and two-column tables. Lists can -be bulleted or numbered, while two-column tables can highlight the items in -the first column.@refill +@cindex Lists and tables, making +@cindex Tables and lists, making + +Texinfo has several ways of making lists and tables. Lists can be +bulleted or numbered; two-column tables can highlight the items in +the first column; multi-column tables are also supported. @menu * Introducing Lists:: Texinfo formats lists for you. @@ -7738,23 +7863,22 @@ @cindex Enumeration @findex enumerate -@code{@@enumerate} is like @code{@@itemize} except that the marks in -the left margin contain successive integers or letters. -(@xref{itemize, , @code{@@itemize}}.)@refill - -Write the @code{@@enumerate} command at the beginning of a line. -The command does not require an argument, but accepts either a number or -a letter as an option. -Without an argument, @code{@@enumerate} starts the list -with the number 1. With a numeric argument, such as 3, -the command starts the list with that number. -With an upper or lower case letter, such as @kbd{a} or @kbd{A}, -the command starts the list with that letter.@refill +@code{@@enumerate} is like @code{@@itemize} (@pxref{itemize,, +@code{@@itemize}}), except that the labels on the items are +successive integers or letters instead of bullets. + +Write the @code{@@enumerate} command at the beginning of a line. The +command does not require an argument, but accepts either a number or a +letter as an option. Without an argument, @code{@@enumerate} starts the +list with the number @samp{1}. With a numeric argument, such as +@samp{3}, the command starts the list with that number. With an upper +or lower case letter, such as @samp{a} or @samp{A}, the command starts +the list with that letter.@refill Write the text of the enumerated list in the same way you write an -itemized list: put @code{@@item} on a line of its own before the start of -each paragraph that you want enumerated. Do not write any other text on -the line beginning with @code{@@item}.@refill +itemized list: put @code{@@item} on a line of its own before the start +of each paragraph that you want enumerated. Do not write any other text +on the line beginning with @code{@@item}.@refill You should put a blank line between entries in the list. This generally makes it easier to read the Info file.@refill @@ -7855,16 +7979,15 @@ @cindex Tables, making two-column @findex table -@code{@@table} is similar to @code{@@itemize}, but the command allows -you to specify a name or heading line for each item. (@xref{itemize, -, @code{@@itemize}}.) The @code{@@table} command is used to produce -two-column tables, and is especially useful for glossaries and -explanatory exhibits.@refill +@code{@@table} is similar to @code{@@itemize} (@pxref{itemize,, +@code{@@itemize}}), but allows you to specify a name or heading line for +each item. The @code{@@table} command is used to produce two-column +tables, and is especially useful for glossaries, explanatory +exhibits, and command-line option summaries. @menu * table:: How to construct a two-column table. -* ftable vtable:: How to construct a two-column table - with automatic indexing. +* ftable vtable:: Automatic indexing for two-column tables. * itemx:: How to put more entries in the first column. @end menu @@ -7876,25 +7999,27 @@ @end ifinfo Write the @code{@@table} command at the beginning of a line and follow -it on the same line with an argument that is a Texinfo command such as -@code{@@code}, @code{@@samp}, @code{@@var}, or @code{@@kbd}. -Although these commands are usually followed by arguments in braces, -in this case you use the command name without an argument because -@code{@@item} will supply the argument. This command will be applied -to the text that goes into the first column of each item and -determines how it will be highlighted. For example, @code{@@samp} -will cause the text in the first column to be highlighted with an -@code{@@samp} command.@refill - +it on the same line with an argument that is a Texinfo ``indicating'' +command such as @code{@@code}, @code{@@samp}, @code{@@var}, or +@code{@@kbd} (@pxref{Indicating}). Although these commands are usually +followed by arguments in braces, in this case you use the command name +without an argument because @code{@@item} will supply the argument. +This command will be applied to the text that goes into the first column +of each item and determines how it will be highlighted. For example, +@code{@@code} will cause the text in the first column to be highlighted +with an @code{@@code} command. (We recommend @code{@@code} for +@code{@@table}'s of command-line options.) + +@findex asis You may also choose to use the @code{@@asis} command as an argument to -@code{@@table}. @code{@@asis} is a command that does nothing; if you use this -command after @code{@@table}, @TeX{} and the Info formatting commands -output the first column entries without added highlighting (`as -is').@refill +@code{@@table}. @code{@@asis} is a command that does nothing; if you +use this command after @code{@@table}, @TeX{} and the Info formatting +commands output the first column entries without added highlighting +(``as is'').@refill (The @code{@@table} command may work with other commands besides those -listed here. However, you can only use commands -that normally take arguments in braces.)@refill +listed here. However, you can only use commands that normally take +arguments in braces.)@refill Begin each table entry with an @code{@@item} command at the beginning of a line. Write the first column text on the same line as the @@ -7969,18 +8094,18 @@ See the example for @code{@@table} in the previous section. -@node itemx, , ftable vtable, Two-column Tables +@node itemx, , ftable vtable, Two-column Tables @comment node-name, next, previous, up @subsection @code{@@itemx} @cindex Two named items for @code{@@table} @findex itemx -Use the @code{@@itemx} command inside a table when you have two or -more first column entries for the same item, each of which should -appear on a line of its own. Use @code{@@itemx} for all but the first -entry. The @code{@@itemx} command works exactly like @code{@@item} -except that it does not generate extra vertical space above the first -column text.@refill +Use the @code{@@itemx} command inside a table when you have two or more +first column entries for the same item, each of which should appear on a +line of its own. Use @code{@@itemx} for all but the first entry; +@code{@@itemx} should always follow an @code{@@item} command. The +@code{@@itemx} command works exactly like @code{@@item} except that it +does not generate extra vertical space above the first column text. @need 1000 For example, @@ -8013,7 +8138,7 @@ a two-column table.)@refill -@node Multi-column Tables, , Two-column Tables, Lists and Tables +@node Multi-column Tables, , Two-column Tables, Lists and Tables @section Multi-column Tables @cindex Tables, making multi-column @findex multitable @@ -8080,7 +8205,7 @@ @end enumerate -@node Multitable Rows, , Multitable Column Widths, Multi-column Tables +@node Multitable Rows, , Multitable Column Widths, Multi-column Tables @subsection Multitable Rows @cindex Multitable rows @cindex Rows, of a multitable @@ -8094,7 +8219,8 @@ input lines in your source file as necessary. Here is a complete example of a multi-column table (the text is from -the GNU Emacs manual): +@cite{The GNU Emacs Manual}, @pxref{Split Window,, Splitting Windows, +emacs, The GNU Emacs Manual}): @example @@multitable @@columnfractions .15 .45 .4 @@ -8457,7 +8583,7 @@ index into a concept index, all the function names are printed in the @code{@@code} font as you would expect.@refill -@node synindex, , syncodeindex, Combining Indices +@node synindex, , syncodeindex, Combining Indices @subsection @code{@@synindex} @findex synindex @@ -8470,7 +8596,7 @@ @xref{Printing Indices & Menus}, for information about printing an index at the end of a book or creating an index menu in an Info file.@refill -@node New Indices, , Combining Indices, Indices +@node New Indices, , Combining Indices, Indices @section Defining New Indices @cindex Defining new indices @cindex Indices, defining new @@ -8537,35 +8663,26 @@ line of a Texinfo file, before any @code{@@synindex} or @code{@@syncodeindex} commands (@pxref{Header}).@refill -@node Insertions, Glyphs, Indices, Top +@node Insertions, Breaks, Indices, Top @comment node-name, next, previous, up @chapter Special Insertions @cindex Inserting special characters and symbols @cindex Special insertions -Texinfo provides several commands for formatting dimensions, for -inserting single characters that have special meaning in Texinfo, such -as braces, and for inserting special graphic symbols that do not -correspond to characters, such as dots and bullets.@refill +Texinfo provides several commands for inserting characters that have +special meaning in Texinfo, such as braces, and for other graphic +elements that do not correspond to simple characters you can type. @iftex These are: @itemize @bullet -@item -Braces, @samp{@@} and periods. - -@item -Format a dimension, such as @samp{12@dmn{pt}}. - -@item -Dots and bullets. - -@item -The @TeX{} logo and the copyright symbol. - -@item -A minus sign. +@item Braces, @samp{@@} and periods. +@item Whitespace within and around a sentence. +@item Accents. +@item Dots and bullets. +@item The @TeX{} logo and the copyright symbol. +@item Mathematical expressions. @end itemize @end iftex @@ -8580,6 +8697,9 @@ * pounds:: How to insert the pounds currency symbol. * minus:: How to insert a minus sign. * math:: How to format a mathematical expression. +* Glyphs:: How to indicate results of evaluation, + expansion of macros, errors, etc. +* Images:: How to include graphics. @end menu @@ -8612,7 +8732,7 @@ Do not put braces after an @code{@@@@} command. -@node Inserting Braces, , Inserting An Atsign, Braces Atsigns +@node Inserting Braces, , Inserting An Atsign, Braces Atsigns @subsection Inserting @samp{@{} and @samp{@}}with @@@{ and @@@} @findex @{ @r{(single @samp{@{})} @findex @} @r{(single @samp{@}})} @@ -8663,8 +8783,7 @@ Use the @code{@@:}@: command after a period, question mark, exclamation mark, or colon that should not be followed by extra space. For example, use @code{@@:}@: after periods that end abbreviations -which are not at the ends of sentences. @code{@@:}@: has no effect on -the Info file output. +which are not at the ends of sentences. @need 700 For example, @@ -8690,10 +8809,11 @@ @end quotation @noindent -@kbd{@@:} has no effect on the Info output. (@samp{s.o.p.} is an -abbreviation for ``Standard Operating Procedure''.) - -Do not put braces after @code{@@:}. +(Incidentally, @samp{s.o.p.} is an abbreviation for ``Standard Operating +Procedure''.) + +@code{@@:} has no effect on the Info output. Do not put braces after +@code{@@:}. @node Ending a Sentence, Multiple Spaces, Not Ending a Sentence, Inserting Space @@ -8736,8 +8856,8 @@ The meanings of @code{@@:} and @code{@@.}@: in Texinfo are designed to work well with the Emacs sentence motion commands (@pxref{Sentences,,, -emacs, GNU Emacs}). This made it necessary for them to be incompatible -with some other formatting systems that use @@-commands. +emacs, The GNU Emacs Manual}). This made it necessary for them to be +incompatible with some other formatting systems that use @@-commands. Do not put braces after any of these commands. @@ -8752,17 +8872,19 @@ @findex (newline) Ordinarily, @TeX{} collapses multiple whitespace characters (space, tab, -and newline) into a single space. (Info output, on the other hand, +and newline) into a single space. Info output, on the other hand, preserves whitespace as you type it, except for changing a newline into a space; this is why it is important to put two spaces at the end of -sentences in Texinfo documents.) +sentences in Texinfo documents. Occasionally, you may want to actually insert several consecutive spaces, either for purposes of example (what your program does with multiple spaces as input), or merely for purposes of appearance in -headings or lists. Texinfo supports three commands: @code{@@ }, -@code{@@@kbd{TAB}}, and @code{@@@kbd{NL}}, all of which insert a single -space into the output. (Here, @kbd{TAB} and @kbd{NL} represent the tab +headings or lists. Texinfo supports three commands: +@code{@@@kbd{SPACE}}, @code{@@@kbd{TAB}}, and @code{@@@kbd{NL}}, all of +which insert a single space into the output. (Here, +@code{@@@kbd{SPACE}} represents an @samp{@@} character followed by a +space, i.e., @samp{@@ }, and @kbd{TAB} and @kbd{NL} represent the tab character and end-of-line, i.e., when @samp{@@} is the last character on a line.) @@ -8779,13 +8901,13 @@ example. @end example -Other possible uses of @code{@@ } have been subsumed by @code{@@multitable} -(@pxref{Multi-column Tables}). +Other possible uses of @code{@@@kbd{SPACE}} have been subsumed by +@code{@@multitable} (@pxref{Multi-column Tables}). Do not follow any of these commands with braces. -@node dmn, , Multiple Spaces, Inserting Space +@node dmn, , Multiple Spaces, Inserting Space @subsection @code{@@dmn}@{@var{dimension}@}: Format a Dimension @cindex Thin space between number, dimension @cindex Dimension formatting @@ -8801,11 +8923,7 @@ To use the @code{@@dmn} command, write the number and then follow it immediately, with no intervening space, by @code{@@dmn}, and then by -the dimension within braces.@refill - -@need 700 -@noindent -For example, +the dimension within braces. For example, @example A4 paper is 8.27@@dmn@{in@} wide. @@ -8818,13 +8936,13 @@ A4 paper is 8.27@dmn{in} wide. @end quotation -Not everyone uses this style. Instead of writing -@w{@samp{8.27@@dmn@{in@}}} in the Texinfo file, you may write -@w{@samp{8.27 in.}} or @w{@samp{8.27 inches}}. (In these cases, the -formatters may insert a line break between the number and the -dimension. Also, if you write a period after an abbreviation within a -sentence, you should write @samp{@@:} after the period to prevent -@TeX{} from inserting extra whitespace. @xref{Inserting Space}. +Not everyone uses this style. Some people prefer @w{@samp{8.27 in.@@:}} +or @w{@samp{8.27 inches}} to @samp{8.27@@dmn@{in@}} in the Texinfo file. +In these cases, however, the formatters may insert a line break between +the number and the dimension, so use @code{@@w} (@pxref{w}). Also, if +you write a period after an abbreviation within a sentence, you should +write @samp{@@:} after the period to prevent @TeX{} from inserting extra +whitespace, as shown here. @xref{Inserting Space}. @node Inserting Accents, Dots Bullets, Inserting Space, Insertions @@ -8964,9 +9082,9 @@ * bullet:: How to insert a bullet. @end menu + @node dots, bullet, Dots Bullets, Dots Bullets -@comment node-name, next, previous, up -@subsection @code{@@dots}@{@} +@subsection @code{@@dots}@{@} (@dots{}) @findex dots @cindex Inserting dots @cindex Dots, inserting @@ -8988,9 +9106,9 @@ the dots in the ellipsis. @end iftex -@node bullet, , dots, Dots Bullets -@comment node-name, next, previous, up -@subsection @code{@@bullet}@{@} + +@node bullet, , dots, Dots Bullets +@subsection @code{@@bullet}@{@} (@bullet{}) @findex bullet Use the @code{@@bullet@{@}} command to generate a large round dot, or @@ -9002,8 +9120,8 @@ type the braces, because @code{@@itemize} supplies them. (@xref{itemize, , @code{@@itemize}}.)@refill + @node TeX and copyright, pounds, Dots Bullets, Insertions -@comment node-name, next, previous, up @section Inserting @TeX{} and the Copyright Symbol The logo `@TeX{}' is typeset in a special fashion and it needs an @@ -9017,9 +9135,9 @@ * copyright symbol:: How to use @code{@@copyright}@{@}. @end menu + @node tex, copyright symbol, TeX and copyright, TeX and copyright -@comment node-name, next, previous, up -@subsection @code{@@TeX}@{@} +@subsection @code{@@TeX}@{@} (@TeX{}) @findex tex (command) Use the @code{@@TeX@{@}} command to generate `@TeX{}'. In a printed @@ -9028,17 +9146,18 @@ @code{@@TeX@{@}} command is unique among Texinfo commands in that the @kbd{T} and the @kbd{X} are in upper case.@refill -@node copyright symbol, , tex, TeX and copyright -@comment node-name, next, previous, up -@subsection @code{@@copyright}@{@} + +@node copyright symbol, , tex, TeX and copyright +@subsection @code{@@copyright}@{@} (@copyright{}) @findex copyright Use the @code{@@copyright@{@}} command to generate `@copyright{}'. In a printed manual, this is a @samp{c} inside a circle, and in Info, this is @samp{(C)}.@refill + @node pounds, minus, TeX and copyright, Insertions -@section @code{@@pounds}@{@} +@section @code{@@pounds}@{@} (@pounds{}): Pounds Sterling @findex pounds Use the @code{@@pounds@{@}} command to generate `@pounds{}'. In a @@ -9046,37 +9165,38 @@ In Info, it is a @samp{#}. Other currency symbols are unfortunately not available. + @node minus, math, pounds, Insertions -@section @code{@@minus}@{@}: Inserting a Minus Sign +@section @code{@@minus}@{@} (@minus{}): Inserting a Minus Sign @findex minus Use the @code{@@minus@{@}} command to generate a minus sign. In a fixed-width font, this is a single hyphen, but in a proportional font, the symbol is the customary length for a minus sign---a little longer -than a hyphen.@refill - -You can compare the two forms: +than a hyphen, shorter than an em-dash: @display @samp{@minus{}} is a minus sign generated with @samp{@@minus@{@}}, -`-' is a hyphen generated with the character @samp{-}. +`-' is a hyphen generated with the character @samp{-}, + +`---' is an em-dash for text. @end display @noindent In the fixed-width font used by Info, @code{@@minus@{@}} is the same -as a hyphen.@refill +as a hyphen. You should not use @code{@@minus@{@}} inside @code{@@code} or @code{@@example} because the width distinction is not made in the -fixed-width font they use.@refill +fixed-width font they use. When you use @code{@@minus} to specify the mark beginning each entry in an itemized list, you do not need to type the braces -(@pxref{itemize, , @code{@@itemize}}.)@refill - -@node math, , minus, Insertions -@comment node-name, next, previous, up +(@pxref{itemize, , @code{@@itemize}}.) + + +@node math, Glyphs, minus, Insertions @section @code{@@math}: Inserting Mathematical Expressions @findex math @cindex Mathematical expressions @@ -9109,20 +9229,16 @@ (a + b)(a + b) = a^2 + 2ab + b^2 @end example -The @code{@@math} command has no effect on the Info output. Currently, -it has limited effect on typeset output. However, this may change since -@TeX{} itself is designed for mathematical typesetting and does a -splendid job. - -Certainly, for complex mathematical expressions, you could use @TeX{} -directly. @xref{Using Ordinary TeX Commands, , Using Ordinary @TeX{} -Commands}. When you use @TeX{} directly, remember to write the -mathematical expression between one or two @samp{$} (dollar-signs) as -appropriate. - -@node Glyphs, Breaks, Insertions, Top -@comment node-name, next, previous, up -@chapter Glyphs for Examples +Thus, the @code{@@math} command has no effect on the Info output. + +For complex mathematical expressions, you can also use @TeX{} directly +(@pxref{Raw Formatter Commands}). When you use @TeX{} directly, +remember to write the mathematical expression between one or two +@samp{$} (dollar-signs) as appropriate. + + +@node Glyphs, Images, math, Insertions +@section Glyphs for Examples @cindex Glyphs In Texinfo, code is often illustrated in examples that are delimited @@ -9150,7 +9266,7 @@ @node Glyphs Summary, result, Glyphs, Glyphs @ifinfo -@heading Glyphs Summary +@subheading Glyphs Summary Here are the different glyph commands:@refill @end ifinfo @@ -9176,8 +9292,18 @@ @code{@@point@{@}} shows the location of point.@refill @end table + +@menu +* result:: +* expansion:: +* Print Glyph:: +* Error Glyph:: +* Equivalence:: +* Point Glyph:: +@end menu + @node result, expansion, Glyphs Summary, Glyphs -@section @result{}: Indicating Evaluation +@subsection @code{@@result@{@}} (@result{}): Indicating Evaluation @cindex Result of an expression @cindex Indicating evaluation @cindex Evaluation glyph @@ -9205,8 +9331,9 @@ @noindent may be read as ``@code{(cdr '(1 2 3))} evaluates to @code{(2 3)}''. + @node expansion, Print Glyph, result, Glyphs -@section @expansion{}: Indicating an Expansion +@subsection @code{@@expansion@{@}} (@expansion{}): Indicating an Expansion @cindex Expansion, indicating it When an expression is a macro call, it expands into a new expression. @@ -9259,8 +9386,9 @@ @code{@@expansion@{@}} and @code{@@result@{@}} commands are indented five spaces.@refill + @node Print Glyph, Error Glyph, expansion, Glyphs -@section @print{}: Indicating Printed Output +@subsection @code{@@print@{@}} (@print{}): Indicating Printed Output @cindex Printed output, indicating it Sometimes an expression will print output during its execution. You @@ -9303,8 +9431,9 @@ @end group @end lisp + @node Error Glyph, Equivalence, Print Glyph, Glyphs -@section @error{}: Indicating an Error Message +@subsection @code{@@error@{@}} (@error{}): Indicating an Error Message @cindex Error message, indicating it A piece of code may cause an error when you evaluate it. You can @@ -9345,11 +9474,11 @@ Wrong type argument: integer-or-marker-p, x @end lisp -Note that @samp{@error{}} itself is not part of the error -message. +@samp{@error{}} itself is not part of the error message. + @node Equivalence, Point Glyph, Error Glyph, Glyphs -@section @equiv{}: Indicating Equivalence +@subsection @code{@@equiv@{@}} (@equiv{}): Indicating Equivalence @cindex Equivalence, indicating it Sometimes two expressions produce identical results. You can indicate the @@ -9383,9 +9512,9 @@ This indicates that evaluating @code{(make-sparse-keymap)} produces identical results to evaluating @code{(list 'keymap)}. -@c Cannot write point command here because it causes trouble with TOC. -@node Point Glyph, , Equivalence, Glyphs -@section Indicating Point in a Buffer + +@node Point Glyph, , Equivalence, Glyphs +@subsection @code{@@point@{@}} (@point{}): Indicating Point in a Buffer @cindex Point, indicating it in a buffer Sometimes you need to show an example of text in an Emacs buffer. In @@ -9446,8 +9575,93 @@ @@end example @end example -@node Breaks, Definition Commands, Glyphs, Top -@comment node-name, next, previous, up + +@c this should be described with figures when we have them +@c perhaps in the quotation/example chapter. +@node Images, , Glyphs, Insertions +@section Inserting Images + +@cindex Images, inserting +@cindex Pictures, inserting +@findex image + +You can insert an image in an external file with the @code{@@image} +command: + +@example +@@image@{@var{filename}, @r{[}@var{width}@r{]}, @r{[}@var{height}@r{]}@} +@end example + +@cindex Formats for images +@cindex Image formats +The @var{filename} argument is mandatory, and must not have an +extension, because the different processors support different formats: +@TeX{} reads the file @file{@var{filename}.eps} (Encapsulated PostScript +format); @code{makeinfo} uses @file{@var{filename}.txt} verbatim for +Info output (more or less as if it was an @code{@@example}). HTML +output requires @file{@var{filename}.jpg}. + +@cindex Width of images +@cindex Height of images +@cindex Aspect ratio of images +@cindex Distorting images +The optional @var{width} and @var{height} arguments specify the size to +scale the image to (they are ignored for Info output). If they are both +specified, the image is presented in its natural size (given in the +file); if only one is specified, the other is scaled proportionately; +and if both are specified, both are respected, thus possibly distorting +the original image by changing its aspect ratio. + +@cindex Dimensions and image sizes +The @var{width} and @var{height} may be specified using any valid @TeX{} +dimension, namely: + +@table @asis +@item pt +@cindex Points (dimension) +point (72.27pt = 1in) +@item pc +@cindex Picas +pica (1pc = 12pt) +@item bp +@cindex Big points +big point (72bp = 1in) +@item in +@cindex Inches +inch +@item cm +@cindex Centimeters +centimeter (2.54cm = 1in) +@item mm +@cindex Millimeters +millimeter (10mm = 1cm) +@item dd +@cindex Did\^ot points +did\^ot point (1157dd = 1238pt) +@item cc +@cindex Ciceros +cicero (1cc = 12dd) +@item sp +@cindex Scaled points +scaled point (65536sp = 1pt) +@end table + +@pindex ridt.eps +For example, the following will scale a file @file{ridt.eps} to one +inch vertically, with the width scaled proportionately: + +@example +@@image@{ridt,,1in@} +@end example + +@pindex epsf.tex +For @code{@@image} to work with @TeX{}, the file @file{epsf.tex} must be +installed somewhere that @TeX{} can find it. This file is included in +the Texinfo distribution and is available from +@uref{ftp://ftp.tug.org/tex/epsf.tex}. + + +@node Breaks, Definition Commands, Insertions, Top @chapter Making and Preventing Breaks @cindex Making line and page breaks @cindex Preventing line and page breaks @@ -9627,18 +9841,18 @@ within @var{text}.@refill You can use the @code{@@w} command to prevent @TeX{} from automatically -hyphenating a long name or phrase that accidentally falls near the end -of a line.@refill - -@example -You can copy GNU software from @@w@{@@file@{prep.ai.mit.edu@}@}. +hyphenating a long name or phrase that happens to fall near the end of a +line.@refill + +@example +You can copy GNU software from @@w@{@@samp@{ftp.gnu.ai.mit.edu@}@}. @end example @noindent produces @quotation -You can copy GNU software from @w{@file{prep.ai.mit.edu}}. +You can copy GNU software from @w{@samp{ftp.gnu.ai.mit.edu}}. @end quotation @quotation @@ -9778,7 +9992,7 @@ @code{@@end group} if you get incomprehensible error messages in @TeX{}.@refill -@node need, , group, Breaks +@node need, , group, Breaks @comment node-name, next, previous, up @section @code{@@need @var{mils}}: Prevent Page Breaks @cindex Need space at page bottom @@ -9911,9 +10125,10 @@ belongs. The @code{@@deffn} command possesses three predefined, specialized variations, @code{@@defun}, @code{@@defmac}, and @code{@@defspec}, that specify the category for you: ``Function'', -``Macro'', and ``Special Form'' respectively. The @code{@@defvr} -command also is accompanied by several predefined, specialized -variations for describing particular kinds of variables.@refill +``Macro'', and ``Special Form'' respectively. (In Lisp, a special form +is an entity much like a function.) The @code{@@defvr} command also is +accompanied by several predefined, specialized variations for describing +particular kinds of variables.@refill The template for a specialized definition, such as @code{@@defun}, is similar to the template for a generalized definition, except that you @@ -10190,7 +10405,8 @@ @findex defspec @item @@defspec @var{name} @var{arguments}@dots{} The @code{@@defspec} command is the definition command for special -forms. (In Lisp, a special form is an entity much like a function.) +forms. (In Lisp, a special form is an entity much like a function, +@pxref{Special Forms,,, elisp, GNU Emacs Lisp Reference Manual}.) @code{@@defspec} is equivalent to @samp{@@deffn @{Special Form@} @dots{}} and works like @code{@@defun}.@refill @end table @@ -10212,10 +10428,10 @@ followed it on the same line by the category of the entity and the name of the entity.@refill -Capitalize the category name like a title. If the name of the -category contains spaces, as in the name `User Option', write braces -around it. Otherwise, the second word will be mistaken for the name -of the entity, for example: +Capitalize the category name like a title. If the name of the category +contains spaces, as in the name ``User Option'', enclose it in braces. +Otherwise, the second word will be mistaken for the name of the entity. +For example, @example @group @@ -10274,17 +10490,21 @@ @findex defopt @item @@defopt @var{name} -The @code{@@defopt} command is the definition command for user -options. @code{@@defopt} is equivalent to @samp{@@defvr @{User +@cindex User options, marking +The @code{@@defopt} command is the definition command for @dfn{user +options}, i.e., variables intended for users to change according to +taste; Emacs has many such (@pxref{Variables,,, emacs, The GNU Emacs +Manual}). @code{@@defopt} is equivalent to @samp{@@defvr @{User Option@} @dots{}} and works like @code{@@defvar}.@refill @end table + @node Typed Functions, Typed Variables, Variables Commands, Def Cmds in Detail @subsection Functions in Typed Languages The @code{@@deftypefn} command and its variations are for describing -functions in C or any other language in which you must declare types -of variables and functions.@refill +functions in languages in which you must declare types of variables and +functions, such as C and C++. @table @code @findex deftypefn @@ -10388,8 +10608,8 @@ @code{@@deftypefn} creates an entry in the index of functions for @var{name}.@refill +@item @@deftypefun @var{data-type} @var{name} @var{arguments}@dots{} @findex deftypefun -@item @@deftypefun @var{data-type} @var{name} @var{arguments}@dots{} The @code{@@deftypefun} command is the specialized definition command for functions in typed languages. The command is equivalent to @samp{@@deftypefn Function @dots{}}.@refill @@ -10441,7 +10661,16 @@ @code{@@deftypefun} creates an entry in the index of functions for @var{name}.@refill -@end table + +@item @@deftypemethod @var{class} @var{data-type} @var{method-name} @var{arguments}@dots{} +@findex deftypefun +The @code{@@deftypemethod} command is the definition command for methods +in object-oriented typed languages, such as C++ and Java. It is similar +to the @code{@@deftypefn} with the addition of the @var{class} parameter +to specify the class containing the method. + +@end table + @node Typed Variables, Abstract Objects, Typed Functions, Def Cmds in Detail @subsection Variables in Typed Languages @@ -10684,8 +10913,8 @@ @code{@@defop} creates an entry, such as `@code{expose} on @code{windows}', in the index of functions.@refill +@item @@defmethod @var{class} @var{name} @var{arguments}@dots{} @findex defmethod -@item @@defmethod @var{class} @var{name} @var{arguments}@dots{} The @code{@@defmethod} command is the definition command for methods in object-oriented programming. A method is a kind of function that implements an operation for a particular class of objects and its @@ -10725,9 +10954,18 @@ @code{@@defmethod} creates an entry, such as `@code{bar-method} on @code{bar-class}', in the index of functions.@refill -@end table - -@node Data Types, , Abstract Objects, Def Cmds in Detail + +@item @@deftypemethod @var{class} @var{data-type} @var{name} @var{arguments}@dots{} +@findex defmethod +The @code{@@deftypemethod} command is the definition command for methods +in object-oriented typed languages, such as C++ and Java. It is similar +to the @code{@@defmethod} command with the addition of the +@var{data-type} parameter to specify the return type of the method. + +@end table + + +@node Data Types, , Abstract Objects, Def Cmds in Detail @subsection Data Types Here is the command for data types:@refill @@ -10784,7 +11022,7 @@ contains the name of a type, such as @var{integer}, take care that the argument actually is of that type.@refill -@node Sample Function Definition, , Def Cmd Conventions, Definition Commands +@node Sample Function Definition, , Def Cmd Conventions, Definition Commands @section A Sample Function Definition @cindex Function definitions @cindex Command definitions @@ -10796,9 +11034,8 @@ @code{@@defun} command and it is followed, on the same line, by the parameter list.@refill -Here is a definition from @cite{The GNU Emacs Lisp Reference Manual}. -(@xref{Calling Functions, , Calling Functions, elisp, The GNU Emacs -Lisp Reference Manual}.) +Here is a definition from @ref{Calling Functions,,, elisp, The GNU Emacs +Lisp Reference Manual}. @quotation @defun apply function &rest arguments @@ -10885,8 +11122,8 @@ Ordinary variables and user options are described using a format like that for functions except that variables do not take arguments. + @node Footnotes, Conditionals, Definition Commands, Top -@comment node-name, next, previous, up @chapter Footnotes @cindex Footnotes @findex footnote @@ -10908,28 +11145,31 @@ In Texinfo, footnotes are created with the @code{@@footnote} command. This command is followed immediately by a left brace, then by the text -of the footnote, and then by a terminating right brace. The template -is: - -@example -@@footnote@{@var{text}@} -@end example - -Footnotes may be of any length, but are usually short.@refill +of the footnote, and then by a terminating right brace. Footnotes may +be of any length (they will be broken across pages if necessary), but +are usually short. The template is: + +@example +ordinary text@@footnote@{@var{text of footnote}@} +@end example + +As shown here, the @code{@@footnote} command should come right after the +text being footnoted, with no intervening space; otherwise, the +formatters the footnote mark might end up starting up a line. For example, this clause is followed by a sample footnote@footnote{Here is the sample footnote.}; in the Texinfo source, it looks like this:@refill @example -@dots{}a sample footnote @@footnote@{Here is the sample +@dots{}a sample footnote@@footnote@{Here is the sample footnote.@}; in the Texinfo source@dots{} @end example @strong{Warning:} Don't use footnotes in the argument of the -@code{@@item} command for a @code{@@table} table. This doesn't work; -because of limitations of @TeX{}, there is no way to fix it. To avoid -the problem, move the footnote into the body text of the table. +@code{@@item} command for a @code{@@table} table. This doesn't work, and +because of limitations of @TeX{}, there is no way to fix it. You must +put the footnote into the body text of the table. In a printed manual or book, the reference mark for a footnote is a small, superscripted number; the text of the footnote appears at the @@ -10938,7 +11178,8 @@ In Info, the reference mark for a footnote is a pair of parentheses with the footnote number between them, like this: @samp{(1)}.@refill -@node Footnote Styles, , Footnote Commands, Footnotes + +@node Footnote Styles, , Footnote Commands, Footnotes @section Footnote Styles Info has two footnote styles, which determine where the text of the @@ -11064,6 +11305,7 @@ @end ignore This chapter contains two footnotes.@refill + @node Conditionals, Macros, Footnotes, Top @comment node-name, next, previous, up @chapter Conditionally Visible Text @@ -11071,9 +11313,6 @@ @cindex Text, conditionally visible @cindex Visibility of conditional text @cindex If text conditionally visible -@findex ifhtml -@findex ifinfo -@findex iftex Sometimes it is good to use different text for a printed manual and its corresponding Info file. In this case, you can use the @@ -11081,18 +11320,20 @@ and which is for the Info file.@refill @menu -* Conditional Commands:: How to specify text for HTML, Info, or @TeX{}. -* Using Ordinary TeX Commands:: You can use any and all @TeX{} commands. -* set clear value:: How to designate which text to format (for - both Info and @TeX{}); and how to set a +* Conditional Commands:: Specifying text for HTML, Info, or @TeX{}. +* Conditional Not Commands:: Specifying text for not HTML, Info, or @TeX{}. +* Raw Formatter Commands:: Using raw @TeX{} or HTML commands. +* set clear value:: Designating which text to format (for + all output formats); and how to set a flag to a string that you can insert. @end menu -@node Conditional Commands, Using Ordinary TeX Commands, Conditionals, Conditionals +@node Conditional Commands, Conditional Not Commands, Conditionals, Conditionals @ifinfo -@heading Using @code{@@ifinfo} and @code{@@iftex} +@heading Conditional Commands @end ifinfo +@findex ifinfo @code{@@ifinfo} begins segments of text that should be ignored by @TeX{} when it typesets the printed manual. The segment of text appears only @@ -11103,20 +11344,20 @@ contained within a region marked by @code{@@ifinfo} and @code{@@end ifinfo}. (@xref{Info Summary and Permissions}.)@refill +@findex iftex +@findex ifhtml The @code{@@iftex} and @code{@@end iftex} commands are similar to the @code{@@ifinfo} and @code{@@end ifinfo} commands, except that they specify text that will appear in the printed manual but not in the Info file. Likewise for @code{@@ifhtml} and @code{@@end ifhtml}, which specify text to appear only in HTML output.@refill -@need 700 For example, @example @@iftex This text will appear only in the printed manual. @@end iftex - @@ifinfo However, this text will appear only in Info. @@end ifinfo @@ -11124,11 +11365,9 @@ @noindent The preceding example produces the following line: - @iftex This text will appear only in the printed manual. @end iftex - @ifinfo However, this text will appear only in Info. @end ifinfo @@ -11140,40 +11379,69 @@ The @code{@@titlepage} command is a special variant of @code{@@iftex} that is used for making the title and copyright pages of the printed -manual. (@xref{titlepage, , @code{@@titlepage}}.) @refill - -@node Using Ordinary TeX Commands, set clear value, Conditional Commands, Conditionals -@comment node-name, next, previous, up -@section Using Ordinary @TeX{} Commands +manual. (@xref{titlepage, , @code{@@titlepage}}.) @refill + + +@node Conditional Not Commands, Raw Formatter Commands, Conditional Commands, Conditionals +@section Conditional Not Commands +@findex ifnothtml +@findex ifnotinfo +@findex ifnottex + +You can specify text to be included in any output format @emph{other} +than some given one with the @code{@@ifnot@dots{}} commands: +@example +@@ifnothtml @dots{} @@end ifnothtml +@@ifnotinfo @dots{} @@end ifnotinfo +@@ifnottex @dots{} @@end ifnottex +@end example +@noindent +(The @code{@@ifnot@dots{}} command and the @code{@@end} command must +actually appear on lines by themselves.) + +If the output file is not being made for the given format, the region is +included. Otherwise, it is ignored. + +The regions delimited by these commands are ordinary Texinfo source as +with @code{@@iftex}, not raw formatter source as with @code{@@tex}. + + +@node Raw Formatter Commands, set clear value, Conditional Not Commands, Conditionals +@section Raw Formatter Commands @cindex @TeX{} commands, using ordinary +@cindex HTML commands, using ordinary +@cindex Raw formatter commands @cindex Ordinary @TeX{} commands, using -@cindex Commands using ordinary @TeX{} +@cindex Ordinary HTML commands, using +@cindex Commands using raw @TeX{} +@cindex Commands using raw HTML @cindex plain @TeX{} -Inside a region delineated by @code{@@iftex} and @code{@@end iftex}, -you can embed some plain @TeX{} commands. Info will ignore these -commands since they are only in that part of the file which is seen by -@TeX{}. You can write the @TeX{} commands as you would write them in -a normal @TeX{} file, except that you must replace the @samp{\} used -by @TeX{} with an @samp{@@}. For example, in the @code{@@titlepage} -section of a Texinfo file, you can use the @TeX{} command -@code{@@vskip} to format the copyright page. (The @code{@@titlepage} -command causes Info to ignore the region automatically, as it does -with the @code{@@iftex} command.)@refill +Inside a region delineated by @code{@@iftex} and @code{@@end iftex}, you +can embed some raw @TeX{} commands. Info will ignore these commands +since they are only in that part of the file which is seen by @TeX{}. +You can write the @TeX{} commands as you would write them in a normal +@TeX{} file, except that you must replace the @samp{\} used by @TeX{} +with an @samp{@@}. For example, in the @code{@@titlepage} section of a +Texinfo file, you can use the @TeX{} command @code{@@vskip} to format +the copyright page. (The @code{@@titlepage} command causes Info to +ignore the region automatically, as it does with the @code{@@iftex} +command.) However, many features of plain @TeX{} will not work, as they are -overridden by features of Texinfo. +overridden by Texinfo features. @findex tex You can enter plain @TeX{} completely, and use @samp{\} in the @TeX{} commands, by delineating a region with the @code{@@tex} and @code{@@end tex} commands. (The @code{@@tex} command also causes Info to ignore the -region, like the @code{@@iftex} -command.)@refill +region, like the @code{@@iftex} command.) The sole exception is that +@code{@@} chracter still introduces a command, so that @code{@@end tex} +can be recognized properly. @cindex Mathematical expressions For example, here is a mathematical expression written in -plain @TeX{}:@refill +plain @TeX{}: @example @@tex @@ -11185,8 +11453,8 @@ @noindent The output of this example will appear only in a printed manual. If -you are reading this in Info, you will not see anything after this -paragraph. +you are reading this in Info, you will not see the equation that appears +in the printed manual. @iftex In a printed manual, the above expression looks like this: @@ -11198,7 +11466,16 @@ \over \sigma_i\right)^2 $$ @end tex -@node set clear value, , Using Ordinary TeX Commands, Conditionals +@findex ifhtml +@findex html +Analogously, you can use @code{@@ifhtml @dots{} @@end ifhtml} to delimit +a region to be included in HTML output only, and @code{@@html @dots{} +@@end ifhtml} for a region of raw HTML (again, except that @code{@@} is +still the escape character, so the @code{@@end} command can be +recognized.) + + +@node set clear value, , Raw Formatter Commands, Conditionals @comment node-name, next, previous, up @section @code{@@set}, @code{@@clear}, and @code{@@value} @@ -11218,6 +11495,7 @@ * value Example:: An easy way to update edition information. @end menu + @node ifset ifclear, value, set clear value, set clear value @subsection @code{@@ifset} and @code{@@ifclear} @@ -11414,7 +11692,7 @@ @end group @end example -@node value Example, , value, set clear value +@node value Example, , value, set clear value @subsection @code{@@value} Example You can use the @code{@@value} command to limit the number of places you @@ -11560,7 +11838,7 @@ @end example -@node Invoking Macros, , Defining Macros, Macros +@node Invoking Macros, , Defining Macros, Macros @section Invoking Macros @cindex Invoking macros @cindex Macro invocation @@ -11668,8 +11946,8 @@ The typesetting program called @TeX{} is used for formatting a Texinfo file. @TeX{} is a very powerful typesetting program and, if used right, -does an exceptionally good job. @xref{Obtaining TeX, , How to Obtain -@TeX{}}, for information on how to obtain @TeX{}.@refill +does an exceptionally good job. (@xref{Obtaining TeX, , How to Obtain +@TeX{}}, for information on how to obtain @TeX{}.) The @code{makeinfo}, @code{texinfo-format-region}, and @code{texinfo-format-buffer} commands read the very same @@-commands @@ -11684,45 +11962,43 @@ @cindex DVI file Format the Texinfo file with the shell command @code{tex} followed by -the name of the Texinfo file. This command produces a formatted -@sc{dvi} file as well as several auxiliary files containing indices, -cross references, etc. The @sc{dvi} file (for @dfn{DeVice Independent} -file) can be printed on a wide variety of printers.@refill - -The @code{tex} formatting command itself does not sort the indices; it -writes an output file of unsorted index data. This is a misfeature of -@TeX{}. (The @code{texi2dvi} command automatically generates indices; -see @ref{Format with texi2dvi, , Format using @code{texi2dvi}}.) To -generate a printed index after running the @code{tex} command, you first -need a sorted index to work from. The @code{texindex} command sorts -indices. (The source file @file{texindex.c} comes as part of the -standard GNU distribution and is usually installed when Emacs is -installed.)@refill +the name of the Texinfo file. For example: + +@example +tex foo.texi +@end example + +@noindent @TeX{} will produce a @dfn{DVI file} as well as several auxiliary +files containing information for indices, cross references, etc. The +DVI file (for @dfn{DeVice Independent} file) can be printed on virtually +any printe (see the following sections). + @pindex texindex -@ignore -Usage: texindex [-k] [-T tempdir] infile [-o outfile] ... - -Each infile arg can optionally be followed by a `-o outfile' arg; -for each infile that is not followed by a -o arg, the infile name with -`s' (for `sorted') appended is used for the outfile. - --T dir is the directory to put temp files in, instead of /tmp. --k means `keep tempfiles', for debugging. -@end ignore - +The @code{tex} formatting command itself does not sort the indices; it +writes an output file of unsorted index data. (The @code{texi2dvi} +command automatically generates indices; see @ref{Format with texi2dvi,, +Format using @code{texi2dvi}}.) To generate a printed index after +running the @code{tex} command, you first need a sorted index to work +from. The @code{texindex} command sorts indices. (The source file +@file{texindex.c} comes as part of the standard Texinfo distribution, +among other places.)@refill + +@cindex Names of index files The @code{tex} formatting command outputs unsorted index files under -names that obey a standard convention. These names are the name of -your main input file to the @code{tex} formatting command, with -everything after the first period thrown away, and the two letter -names of indices added at the end. For example, the raw index output -files for the input file @file{foo.texinfo} would be @file{foo.cp}, -@file{foo.vr}, @file{foo.fn}, @file{foo.tp}, @file{foo.pg} and -@file{foo.ky}. Those are exactly the arguments to give to -@code{texindex}.@refill +names that obey a standard convention: the name of your main input file +with any @samp{.tex} (or similar, @pxref{tex invocation,,, web2c, +Web2c}) extension removed, followed by the two letter names of indices. +For example, the raw index output files for the input file +@file{foo.texinfo} would be @file{foo.cp}, @file{foo.vr}, @file{foo.fn}, +@file{foo.tp}, @file{foo.pg} and @file{foo.ky}. Those are exactly the +arguments to give to @code{texindex}.@refill @need 1000 -Or else, you can use @samp{??} as ``wild-cards'' and give the command in -this form:@refill +@cindex Wildcards +@cindex Globbing +Instead of specifying all the unsorted index file names explicitly, you +can use @samp{??} as shell wildcards and give the command in this +form:@refill @example texindex foo.?? @@ -11738,43 +12014,47 @@ For each file specified, @code{texindex} generates a sorted index file whose name is made by appending @samp{s} to the input file name. The -@code{@@printindex} command knows to look for a file of that name. -@code{texindex} does not alter the raw index output file.@refill +@code{@@printindex} command knows to look for a file of that name +(@pxref{Printing Indices & Menus}). @code{texindex} does not alter the +raw index output file.@refill After you have sorted the indices, you need to rerun the @code{tex} -formatting command on the Texinfo file. This regenerates a formatted -@sc{dvi} file with up-to-date index entries.@footnote{If you use more -than one index and have cross references to an index other than the -first, you must run @code{tex} @emph{three times} to get correct output: -once to generate raw index data; again (after @code{texindex}) to output -the text of the indices and determine their true page numbers; and a -third time to output correct page numbers in cross references to them. -However, cross references to indices are rare.}@refill - -To summarize, this is a three step process: +formatting command on the Texinfo file. This regenerates the DVI file, +this time with up-to-date index entries. + +Finally, you may need to run @code{tex} one more time, to get the page +numbers in the cross-references correct. + +To summarize, this is a four step process: @enumerate @item -Run the @code{tex} formatting command on the Texinfo file. This -generates the formatted @sc{dvi} file as well as the raw index files -with two letter extensions.@refill - -@item -Run the shell command @code{texindex} on the raw index files to sort -them. This creates the corresponding sorted index files.@refill - -@item -Rerun the @code{tex} formatting command on the Texinfo file. This -regenerates a formatted @sc{dvi} file with the index entries in the -correct order. This second run also corrects the page numbers for -the cross references. (The tables of contents are always correct.)@refill +Run @code{tex} on your Texinfo file. This generates a DVI file (with +undefined cross-references and no indices), and the raw index files +(with two letter extensions). + +@item +Run @code{texindex} on the raw index files. This creates the +corresponding sorted index files (with three letter extensions). + +@item +Run @code{tex} again on your Texinfo file. This regenerates the DVI +file, this time with indices and defined cross-references, but with page +numbers for the cross-references from last time, generally incorrect. + +@item +Run @code{tex} one last time. This time the correct page numbers are +written for the cross-references. @end enumerate -You need not run @code{texindex} each time after you run the -@code{tex} formatting. If you do not, on the next run, the @code{tex} -formatting command will use whatever sorted index files happen to -exist from the previous use of @code{texindex}. This is usually -@sc{ok} while you are debugging.@refill +@pindex texi2dvi +Alternatively, it's a one-step process: run @code{texi2dvi}. + +You need not run @code{texindex} each time after you run @code{tex}. If +you do not, on the next run, the @code{tex} formatting command will use +whatever sorted index files happen to exist from the previous use of +@code{texindex}. This is usually ok while you are +debugging.@refill @node Format with texi2dvi, Print with lpr, Format with tex/texindex, Format/Print Hardcopy @comment node-name, next, previous, up @@ -11783,8 +12063,8 @@ The @code{texi2dvi} command is a shell script that automatically runs both @code{tex} and @code{texindex} as many times as necessary to -produce a @sc{dvi} file with up-to-date, sorted indices. It simplifies -the @code{tex}---@code{texindex}---@code{tex} sequence described in the +produce a DVI file with up-to-date, sorted indices. It simplifies the +@code{tex}---@code{texindex}---@code{tex} sequence described in the previous section. @need 1000 @@ -11798,24 +12078,22 @@ @node Print with lpr, Within Emacs, Format with texi2dvi, Format/Print Hardcopy @comment node-name, next, previous, up @section Shell Print Using @code{lpr -d} -@pindex lpr @r{(@sc{dvi} print command)} - -You can print a @sc{dvi} file with the @sc{dvi} print command. The -precise printing command to use depends on your system; @samp{lpr -d} is -common. The @sc{dvi} print command may require a file name without any -extension or with a @samp{.dvi} extension.@refill - -@need 1200 -The following commands, for example, sort the indices, format, and -print the @cite{Bison Manual} (where @samp{%} is the shell -prompt):@refill - -@example -@group -% tex bison.texinfo -% texindex bison.?? -% tex bison.texinfo -% lpr -d bison.dvi +@pindex lpr @r{(DVI print command)} + +The precise command to print a DVI file depends on your system +installation, but @samp{lpr -d} is common. The command may require the +DVI file name without any extension or with a @samp{.dvi} +extension. (If it is @samp{lpr}, you must include the @samp{.dvi}.) + +The following commands, for example, will (probably) suffice to sort the +indices, format, and print the @cite{Bison Manual}: + +@example +@group +tex bison.texinfo +texindex bison.?? +tex bison.texinfo +lpr -d bison.dvi @end group @end example @@ -11828,14 +12106,14 @@ @example @group -% texi2dvi bison.texinfo -% lpr -d bison.dvi +texi2dvi bison.texinfo +lpr -d bison.dvi @end group @end example @node Within Emacs, Texinfo Mode Printing, Print with lpr, Format/Print Hardcopy @comment node-name, next, previous, up -@section From an Emacs Shell @dots{} +@section From an Emacs Shell @cindex Print, format from Emacs shell @cindex Format, print from Emacs shell @cindex Shell, format, print from @@ -11853,13 +12131,12 @@ You can also use @code{texi2dvi} from an Emacs shell. For example, here is how to use @code{texi2dvi} to format and print @cite{Using and -Porting GNU CC} from a shell within Emacs (where @samp{%} is the shell -prompt):@refill - -@example -@group -% texi2dvi gcc.texinfo -% lpr -d gcc.dvi +Porting GNU CC} from a shell within Emacs: + +@example +@group +texi2dvi gcc.texinfo +lpr -d gcc.dvi @end group @end example @ifinfo @@ -11896,7 +12173,7 @@ @item C-c C-t C-p @itemx M-x texinfo-tex-print -Print a @sc{dvi} file that was made with @code{texinfo-tex-region} or +Print a DVI file that was made with @code{texinfo-tex-region} or @code{texinfo-tex-buffer}.@refill @item C-c C-t C-q @@ -11934,7 +12211,7 @@ @example @group C-c C-t C-b @r{Run @code{texi2dvi} on the buffer.} -C-c C-t C-p @r{Print the @sc{dvi} file.} +C-c C-t C-p @r{Print the DVI file.} C-c C-t C-q @r{Display the printer queue.} @end group @end example @@ -11993,9 +12270,9 @@ @example @group -@@c Local Variables: -@@c compile-command: "texi2dvi gdb.texinfo" -@@c End: +Local Variables: +compile-command: "texi2dvi gdb.texinfo" +End: @end group @end example @@ -12003,48 +12280,45 @@ This technique is most often used by programmers who also compile programs this way; see @ref{Compilation, , , emacs, The GNU Emacs Manual}.@refill + @node Requirements Summary, Preparing for TeX, Compile-Command, Format/Print Hardcopy @comment node-name, next, previous, up @section @TeX{} Formatting Requirements Summary @cindex Requirements for formatting +@cindex Minimal requirements for formatting @cindex Formatting requirements Every Texinfo file that is to be input to @TeX{} must begin with a -@code{\input} command and must contain an @code{@@setfilename} command and -an @code{@@settitle} command:@refill +@code{\input} command and must contain an @code{@@setfilename} command: @example \input texinfo @@setfilename @var{arg-not-used-by-@TeX{}} -@@settitle @var{name-of-manual} @end example @noindent The first command instructs @TeX{} to load the macros it needs to -process a Texinfo file, the second command opens auxiliary files, and -the third specifies the title of printed manual. - -@need 1000 -Every Texinfo file must end with a line that terminates @TeX{} -processing and forces out unfinished pages:@refill +process a Texinfo file and the second command opens auxiliary files. + +Every Texinfo file must end with a line that terminates @TeX{}'s +processing and forces out unfinished pages: @example @@bye @end example -Strictly speaking, these four lines are all a Texinfo file needs for -@TeX{}, besides the body. (The @code{@@setfilename} line is the only -line that a Texinfo file needs for Info formatting.)@refill - -Usually, the file's first line contains an @samp{@@c -*-texinfo-*-} -comment that causes Emacs to switch to Texinfo mode when you edit the -file. In addition, the beginning usually includes an -@code{@@setchapternewpage} command, a title page, a copyright page, and -permissions. Besides an @code{@@bye}, the end of a file usually -includes indices and a table of contents.@refill +Strictly speaking, these lines are all a Texinfo file needs to be +processed successfully by @TeX{}. + +Usually, however, the beginning includes an @code{@@settitle} command to +define the title of the printed manual, an @code{@@setchapternewpage} +command, a title page, a copyright page, and permissions. Besides an +@code{@@bye}, the end of a file usually includes indices and a table of +contents. (And of course most manuals contain a body of text as well.) @iftex For more information, see +@ref{settitle, , @code{@@settitle}}, @ref{setchapternewpage, , @code{@@setchapternewpage}}, @ref{Headings, ,Page Headings}, @ref{Titlepage & Copyright Page}, @@ -12054,6 +12328,7 @@ @noindent @ifinfo For more information, see@* +@ref{settitle, , @code{@@settitle}},@* @ref{setchapternewpage, , @code{@@setchapternewpage}},@* @ref{Headings, ,Page Headings},@* @ref{Titlepage & Copyright Page},@* @@ -12061,6 +12336,7 @@ @ref{Contents}. @end ifinfo + @node Preparing for TeX, Overfull hboxes, Requirements Summary, Format/Print Hardcopy @comment node-name, next, previous, up @section Preparing to Use @TeX{} @@ -12072,41 +12348,60 @@ @cindex @b{.cshrc} initialization file @cindex Initialization file for @TeX{} input -@TeX{} needs to know where to find the @file{texinfo.tex} file -that you have told it to input with the @samp{\input texinfo} command -at the beginning of the first line. The @file{texinfo.tex} file tells -@TeX{} how to handle @@-commands. (@file{texinfo.tex} is -included in the standard GNU distributions.)@refill - -Usually, the @file{texinfo.tex} file is put in the default directory -that contains @TeX{} macros (the @file{/usr/lib/tex/macros} -directory) when GNU Emacs or other GNU software is installed. -In this case, @TeX{} will +@TeX{} needs to know where to find the @file{texinfo.tex} file that you +have told it to input with the @samp{\input texinfo} command at the +beginning of the first line. The @file{texinfo.tex} file tells @TeX{} +how to handle @@-commands; it is included in all standard GNU +distributions. + +@pindex texinfo.tex@r{, installing} +Usually, the @file{texinfo.tex} file is put under the default directory +that contains @TeX{} macros +(@file{/usr/local/share/texmf/tex/texinfo/texinfo.tex} by default) when +GNU Emacs or other GNU software is installed. In this case, @TeX{} will find the file and you do not need to do anything special. -Alternatively, you can put @file{texinfo.tex} in the directory in -which the Texinfo source file is located, and @TeX{} will find it -there.@refill - -However, you may want to specify the location of the @code{\input} file -yourself. One way to do this is to write the complete path for the file -after the @code{\input} command. Another way is to set the -@code{TEXINPUTS} environment variable in your @file{.cshrc} or -@file{.profile} file. The @code{TEXINPUTS} environment variable will tell -@TeX{} where to find the @file{texinfo.tex} file and any other file that -you might want @TeX{} to use.@refill - -Whether you use a @file{.cshrc} or @file{.profile} file depends on -whether you use @code{csh}, @code{sh}, or @code{bash} for your shell -command interpreter. When you use @code{csh}, it looks to the -@file{.cshrc} file for initialization information, and when you use -@code{sh} or @code{bash}, it looks to the @file{.profile} file.@refill - -@need 1000 +Alternatively, you can put @file{texinfo.tex} in the current directory +when you run @TeX{}, and @TeX{} will find it there. + +@pindex epsf.tex@r{, installing} +Also, you should install @file{epsf.tex} in the same place as +@file{texinfo.tex}, if it is not already installed from another +distribution. This file is needed to support the @code{@@image} command +(@pxref{Images}). + +@pindex texinfo.cnf @r{installation} +@cindex Customizing of @TeX{} for Texinfo +@cindex Site-wide Texinfo configuration file +Optionally, you may create an additional @file{texinfo.cnf}, and install +it as well. This file is read by @TeX{} at the @code{@@setfilename} +command (@pxref{setfilename,, @code{@@setfilename}}). You can put any +commands you like there according to local site-wide conventions, and +they will be read by @TeX{} when processing any Texinfo document. For +example, if @file{texinfo.cnf} contains the a single line +@samp{@@afourpaper} (@pxref{A4 Paper}), then all Texinfo documents will +be processed with that page size in effect. If you have nothing to put +in @file{texinfo.cnf}, you do not need to create it. + +@vindex TEXINPUTS +If neither of the above locations for these system files suffice for +you, you can specify the directories explicitly. For +@file{texinfo.tex}, you can do this by writing the complete path for the +file after the @code{\input} command. Another way, that works for both +@file{texinfo.tex} and @file{texinfo.cnf} (and any other file @TeX{} +might read), is to set the @code{TEXINPUTS} environment variable in your +@file{.cshrc} or @file{.profile} file. + +Which you use of @file{.cshrc} or @file{.profile} depends on +whether you use a Bourne shell-compatible (@code{sh}, @code{bash}, +@code{ksh}, @dots{}) or C shell-compatible (@code{csh}, @code{tcsh}) +command interpreter. The latter read the @file{.cshrc} file for +initialization information, and the former read @file{.profile}. + In a @file{.cshrc} file, you could use the following @code{csh} command -sequence:@refill - -@example -setenv TEXINPUTS .:/usr/me/mylib:/usr/lib/tex/macros +sequence: + +@example +setenv TEXINPUTS .:/home/me/mylib:/usr/lib/tex/macros @end example @need 1000 @@ -12115,7 +12410,7 @@ @example @group -TEXINPUTS=.:/usr/me/mylib:/usr/lib/tex/macros +TEXINPUTS=.:/home/me/mylib:/usr/lib/tex/macros export TEXINPUTS @end group @end example @@ -12123,7 +12418,8 @@ @noindent This would cause @TeX{} to look for @file{\input} file first in the current directory, indicated by the @samp{.}, then in a hypothetical user's -@file{me/mylib} directory, and finally in the system library.@refill +@file{me/mylib} directory, and finally in a system directory. + @node Overfull hboxes, smallbook, Preparing for TeX, Format/Print Hardcopy @comment node-name, next, previous, up @@ -12210,6 +12506,13 @@ @code{@@smalllisp}}, for information about commands that make it easier to produce examples for a smaller manual.@refill +Alternatively, to avoid embedding this physical paper size in your +document, use @code{texi2dvi} to format your document (@pxref{Format +with texi2dvi}), and supply @samp{-t @@smallbook} as an argument. Then +other people do not have to change the document source file to format it +differently. + + @node A4 Paper, Cropmarks and Magnification, smallbook, Format/Print Hardcopy @comment node-name, next, previous, up @section Printing on A4 Paper @@ -12239,7 +12542,20 @@ @end group @end example -@node Cropmarks and Magnification, , A4 Paper, Format/Print Hardcopy +Alternatively, to avoid embedding this physical paper size in your +document, use @code{texi2dvi} to format your document (@pxref{Format +with texi2dvi}), and supply @samp{-t @@afourpaper} as an argument. Then +other people do not have to change the document source file to format it +differently. + +@pindex texinfo.cnf +Another alternative: put the @code{@@afourpaper} command in the file +@file{texinfo.cnf} that @TeX{} will read. (No need for @code{@@iftex} +there.) This will automatically typeset all the Texinfo documents at +your site with that paper size in effect. + + +@node Cropmarks and Magnification, , A4 Paper, Format/Print Hardcopy @comment node-name, next, previous, up @section Cropmarks and Magnification @@ -12278,8 +12594,7 @@ ``magnification''.) This is @emph{not} a Texinfo @@-command, but is a plain @TeX{} command that is prefixed with a backslash. You have to write this command between @code{@@tex} and @code{@@end tex} -(@pxref{Using Ordinary TeX Commands, , Using Ordinary @TeX{} -Commands}).@refill +(@pxref{Raw Formatter Commands}). Follow the @code{\mag} command with an @samp{=} and then a number that is 1000 times the magnification you desire. For example, to print pages @@ -12311,8 +12626,8 @@ file; @code{texinfo-format-region} and @code{texinfo-format-buffer} are GNU Emacs functions that do the same.@refill -A Texinfo file must possess an @code{@@setfilename} line near its -beginning, otherwise the Info formatting commands will fail.@refill +A Texinfo file must contain an @code{@@setfilename} line near its +beginning, otherwise the Info formatting commands will fail. For information on installing the Info file in the Info system, see @ref{Install an Info File}.@refill @@ -12356,15 +12671,14 @@ To create an Info file from a Texinfo file, type @code{makeinfo} followed by the name of the Texinfo file. Thus, to create the Info -file for Bison, type the following at the shell prompt (where @samp{%} +file for Bison, type the following to the shell: is the prompt):@refill @example -% makeinfo bison.texinfo -@end example - -(You can run a shell inside Emacs by typing @kbd{M-x -shell}.)@refill +makeinfo bison.texinfo +@end example + +(You can run a shell inside Emacs by typing @kbd{M-x shell}.)@refill @ifinfo Sometimes you will want to specify options. For example, if you wish @@ -12372,12 +12686,13 @@ type:@refill @example -% makeinfo --version +makeinfo --version @end example @xref{makeinfo options}, for more information. @end ifinfo + @node makeinfo options, Pointer Validation, Invoking makeinfo, Create an Info File @comment node-name, next, previous, up @section Options for @code{makeinfo} @@ -12387,166 +12702,169 @@ The @code{makeinfo} command takes a number of options. Most often, options are used to set the value of the fill column and specify the footnote style. Each command line option is a word preceded by -@samp{--}@footnote{@samp{--} has replaced @samp{+}, the old introductory -character, to maintain POSIX.2 compatibility without losing long-named -options.} or a letter preceded by @samp{-}. You can use abbreviations -for the option names as long as they are unique.@refill - -For example, you could use the following command to create an Info +@samp{--} or a letter preceded by @samp{-}. You can use abbreviations +for the long option names as long as they are unique.@refill + +For example, you could use the following shell command to create an Info file for @file{bison.texinfo} in which each line is filled to only 68 -columns (where @samp{%} is the prompt):@refill - -@example -% makeinfo --fill-column=68 bison.texinfo +columns:@refill + +@example +makeinfo --fill-column=68 bison.texinfo @end example You can write two or more options in sequence, like this:@refill @example -% makeinfo --no-split --fill-column=70 @dots{} +makeinfo --no-split --fill-column=70 @dots{} @end example @noindent This would keep the Info file together as one possibly very long file and would also set the fill column to 70.@refill -@iftex -If you wish to discover which version of @code{makeinfo} -you are using, type:@refill - -@example -% makeinfo --version -@end example -@end iftex - -The options are:@refill - -@need 100 +The options are: + @table @code + @item -D @var{var} -Cause @var{var} to be defined. This is equivalent to -@code{@@set @var{var}} in the Texinfo file. +@opindex -D @var{var} +Cause the variable @var{var} to be defined. This is equivalent to +@code{@@set @var{var}} in the Texinfo file (@pxref{set clear value}). + +@item --error-limit=@var{limit} +@opindex --error-limit=@var{limit} +Set the maximum number of errors that @code{makeinfo} will report +before exiting (on the assumption that continuing would be useless); +default 100. @need 150 -@item --error-limit @var{limit} -Set the maximum number of errors that @code{makeinfo} will report -before exiting (on the assumption that continuing would be useless). -The default number of errors that can be reported before -@code{makeinfo} gives up is 100.@refill - -@need 150 -@item --fill-column @var{width} +@item --fill-column=@var{width} +@opindex --fill-column=@var{width} Specify the maximum number of columns in a line; this is the right-hand edge of a line. Paragraphs that are filled will be filled to this width. (Filling is the process of breaking up and connecting lines so that lines are the same length as or shorter than the number specified as the fill column. Lines are broken between words.) The default value -for @code{fill-column} is 72. -@refill - -@item --footnote-style @var{style} +is 72. + +@item --footnote-style=@var{style} +@opindex --footnote-style=@var{style} Set the footnote style to @var{style}, either @samp{end} for the end -node style or @samp{separate} for the separate node style. The value -set by this option overrides the value set in a Texinfo file by an -@code{@@footnotestyle} command. When the footnote style is -@samp{separate}, @code{makeinfo} makes a new node containing the -footnotes found in the current node. When the footnote style is -@samp{end}, @code{makeinfo} places the footnote references at the end -of the current node.@refill - -@need 150 +node style (the default) or @samp{separate} for the separate node style. +The value set by this option overrides the value set in a Texinfo file +by an @code{@@footnotestyle} command (@pxref{Footnotes}). When the +footnote style is @samp{separate}, @code{makeinfo} makes a new node +containing the footnotes found in the current node. When the footnote +style is @samp{end}, @code{makeinfo} places the footnote references at +the end of the current node. + +@item --force +@opindex --force +Ordinarily, if the input file has errors, the output files are not +created. With this option, they are preserved. + +@item --help +@opindex --help +Print a usage message listing all available options, then exit successfully. + @item -I @var{dir} +@opindex -I @var{dir} Add @code{dir} to the directory search list for finding files that are included using the @code{@@include} command. By default, @code{makeinfo} searches only the current directory. -@need 150 @item --no-headers +@opindex --no-headers Do not include menus or node lines in the output. This results in an @sc{ascii} file that you cannot read in Info since it does not contain -the requisite nodes or menus; but you can print such a file in a -single, typewriter-like font and produce acceptable output. - -@need 150 +the requisite nodes or menus. It is primarily useful to extract certain +pieces of a manual into separate files to be included in a distribution, +such as @file{INSTALL} files. + @item --no-split -Suppress the splitting stage of @code{makeinfo}. Normally, large +@opindex --no-split +Suppress the splitting stage of @code{makeinfo}. By default, large output files (where the size is greater than 70k bytes) are split into -smaller subfiles, each one approximately 50k bytes. If you specify -@samp{--no-split}, @code{makeinfo} will not split up the output -file.@refill - -@need 100 +smaller subfiles, each one approximately 50k bytes. + @item --no-pointer-validate -@item --no-validate +@itemx --no-validate +@opindex --no-pointer-validate +@opindex --no-validate Suppress the pointer-validation phase of @code{makeinfo}. Normally, after a Texinfo file is processed, some consistency checks are made to ensure that cross references can be resolved, etc. @xref{Pointer Validation}.@refill -@need 150 @item --no-warn -Suppress the output of warning messages. This does @emph{not} -suppress the output of error messages, only warnings. You might +@opindex --no-warn +Suppress warning messages (but @emph{not} error messages). You might want this if the file you are creating has examples of Texinfo cross references within it, and the nodes that are referenced do not actually -exist.@refill +exist. @item --no-number-footnotes +@opindex --no-number-footnotes Suppress automatic footnote numbering. By default, @code{makeinfo} numbers each footnote sequentially in a single node, resetting the current footnote number to 1 at the start of each node. -@need 150 -@item --output @var{file} +@item --output=@var{file} @itemx -o @var{file} +@opindex --output=@var{file} +@opindex -o @var{file} Specify that the output should be directed to @var{file} and not to the -file name specified in the @code{@@setfilename} command found in the Texinfo -source. @var{file} can be the special token @samp{-}, which specifies -standard output. - -@need 150 -@item --paragraph-indent @var{indent} +file name specified in the @code{@@setfilename} command found in the +Texinfo source (@pxref{setfilename}). If @var{file} is @samp{-}, output +goes to standard output and @samp{--no-split} is implied. + +@item -P @var{dir} +@opindex -P @var{dir} +Prepend @code{dir} to the directory search list for @code{@@include}. +See @samp{-I} for more details. + +@item --paragraph-indent=@var{indent} +@opindex --paragraph-indent=@var{indent} Set the paragraph indentation style to @var{indent}. The value set by this option overrides the value set in a Texinfo file by an -@code{@@paragraphindent} command. The value of @var{indent} is -interpreted as follows:@refill - -@itemize @bullet -@item -If the value of @var{indent} is @samp{asis}, do not change the -existing indentation at the starts of paragraphs.@refill - -@item -If the value of @var{indent} is zero, delete any existing -indentation.@refill - -@item -If the value of @var{indent} is greater than zero, indent each -paragraph by that number of spaces.@refill -@end itemize - -@need 100 -@item --reference-limit @var{limit} +@code{@@paragraphindent} command (@pxref{paragraphindent}). The value +of @var{indent} is interpreted as follows: + +@table @asis +@item @samp{asis} +Preserve any existing indentation at the starts of paragraphs. + +@item @samp{0} or @samp{none} +Delete any existing indentation. + +@item @var{num} +Indent each paragraph by that number of spaces. +@end table + +@item --reference-limit=@var{limit} +@opindex --reference-limit=@var{limit} Set the value of the number of references to a node that @code{makeinfo} will make without reporting a warning. If a node has more than this number of references in it, @code{makeinfo} will make the -references but also report a warning.@refill - -@need 150 +references but also report a warning. The default is 1000. + @item -U @var{var} Cause @var{var} to be undefined. This is equivalent to -@code{@@clear @var{var}} in the Texinfo file. - -@need 100 +@code{@@clear @var{var}} in the Texinfo file (@pxref{set clear value}). + @item --verbose +@opindex --verbose Cause @code{makeinfo} to display messages saying what it is doing. Normally, @code{makeinfo} only outputs messages if there are errors or -warnings.@refill - -@need 100 +warnings. + @item --version -Report the version number of this copy of @code{makeinfo}.@refill -@end table +@opindex --version +Print the version number, then exit successfully. + +@end table + @node Pointer Validation, makeinfo in Emacs, makeinfo options, Create an Info File @section Pointer Validation @@ -12610,7 +12928,7 @@ When you invoke either @code{makeinfo-region} or @code{makeinfo-buffer}, Emacs prompts for a file name, offering the name of the visited file as the default. You can edit the default -file name in the minibuffer if you wish, before typing @key{RET} to +file name in the minibuffer if you wish, before pressing @key{RET} to start the @code{makeinfo} process.@refill The Emacs @code{makeinfo-region} and @code{makeinfo-buffer} commands @@ -12731,11 +13049,11 @@ including a shell inside of Emacs. (@xref{Command Switches, , Command Line Switches and Arguments, emacs, The GNU Emacs Manual}.)@refill -Here is the command to format all the files that end in @file{.texinfo} -in the current directory (where @samp{%} is the shell prompt):@refill - -@example -% emacs -batch -funcall batch-texinfo-format *.texinfo +Here is a shell command to format all the files that end in +@file{.texinfo} in the current directory: + +@example +emacs -batch -funcall batch-texinfo-format *.texinfo @end example @noindent @@ -12752,7 +13070,7 @@ @code{texinfo-format-region} or @code{texinfo-format-buffer}, you cannot use that Emacs for anything else until the command finishes.)@refill -@node Tag and Split Files, , Batch Formatting, Create an Info File +@node Tag and Split Files, , Batch Formatting, Create an Info File @comment node-name, next, previous, up @section Tag Files and Split Files @cindex Making a tag table automatically @@ -12968,24 +13286,22 @@ @item If you are using Emacs, list the name of the file in a second @file{dir} file, in its directory; and then add the name of that directory to the -@code{Info-default-directory-list} variable in your personal or site +@code{Info-directory-list} variable in your personal or site initialization file. -This tells Emacs's Info reader where to look for @file{dir} -files. Emacs merges the files named @file{dir} from each of the listed -directories. (In Emacs Version 18, you can set the -@code{Info-directory} variable to the name of only one -directory.)@refill - -@item -Specify the @file{info} directory name in the @code{INFOPATH} -environment variable in your @file{.profile} or @file{.cshrc} -initialization file. (Only you and others who set this environment -variable will be able to find Info files whose location is specified -this way.)@refill +This tells Emacs where to look for @file{dir} files. Emacs merges the +files named @file{dir} from each of the listed directories. (In Emacs +version 18, you can set the @code{Info-directory} variable to the name +of only one directory.)@refill + +@item +Specify the Info directory name in the @code{INFOPATH} environment +variable in your @file{.profile} or @file{.cshrc} initialization file. +(Only you and others who set this environment variable will be able to +find Info files whose location is specified this way.)@refill @end itemize -For example, to reach a test file in the @file{~bob/manuals} +For example, to reach a test file in the @file{/home/bob/manuals} directory, you could add an entry like this to the menu in the @file{dir} file:@refill @@ -12997,35 +13313,34 @@ In this case, the absolute file name of the @file{info-test} file is written as the second part of the menu entry.@refill -@vindex Info-default-directory-list +@vindex Info-directory-list Alternatively, you could write the following in your @file{.emacs} file:@refill @example @group -(setq Info-default-directory-list +(setq Info-directory-list '("/home/bob/manuals" - "/usr/local/emacs/info")) + "/usr/local/info")) @end group @end example @c reworded to avoid overfill hbox This tells Emacs to merge the @file{dir} file from the @file{/home/bob/manuals} directory with the @file{dir} file from the -@file{"/usr/local/emacs/info}" directory. Info will list the +@file{/usr/local/info} directory. Info will list the @file{/home/bob/manuals/info-test} file as a menu entry in the @file{/home/bob/manuals/dir} file.@refill @vindex INFOPATH -Finally, you can tell Info where to look by setting the -@code{INFOPATH} environment variable in your @file{.cshrc} or -@file{.profile} file.@refill - -If you use @code{sh} or @code{bash} for your shell command interpreter, -you must set the @code{INFOPATH} environment variable in the -@file{.profile} initialization file; but if you use @code{csh}, you must -set the variable in the @file{.cshrc} initialization file. The two -files use slightly different command formats.@refill +Finally, you can tell Info where to look by setting the @code{INFOPATH} +environment variable in your @file{.cshrc} or @file{.profile} file. If +you use a Bourne-compatible shell such as @code{sh} or @code{bash} for +your shell command interpreter, you set the @code{INFOPATH} environment +variable in the @file{.profile} initialization file; but if you use +@code{csh} or @code{tcsh}, you must set the variable in the +@file{.cshrc} initialization file. The two types of shells use +different syntax. @itemize @bullet @item @@ -13033,7 +13348,7 @@ variable as follows:@refill @smallexample -setenv INFOPATH .:~bob/manuals:/usr/local/emacs/info +setenv INFOPATH .:~/manuals:/usr/local/emacs/info @end smallexample @item @@ -13041,16 +13356,31 @@ writing:@refill @smallexample -INFOPATH=.:~bob/manuals:/usr/local/emacs/info +INFOPATH=.:$HOME/manuals:/usr/local/emacs/info export INFOPATH @end smallexample @end itemize @noindent -The @samp{.} indicates the current directory. Emacs uses the +The @samp{.} indicates the current directory as usual. Emacs uses the @code{INFOPATH} environment variable to initialize the value of Emacs's own @code{Info-directory-list} variable. +@cindex @samp{:} @r{last in @code{INFOPATH}} +However you set @code{INFOPATH}, if its last character is a colon, this +is replaced by the default (compiled-in) path. This gives you a way to +augment the default path with new directories without having to list all +the standard places. For example (using @code{sh} syntax: + +@example +INFOPATH=/local/info: +export INFOPATH +@end example + +@noindent +will search @file{/local/info} first, then the standard directories. +Leading or doubled colons are not treated specially. + @node Installing Dir Entries, Invoking install-info, Other Info Directories, Install an Info File @section Installing Info Directory Files @@ -13106,7 +13436,7 @@ specified categories. -@node Invoking install-info, , Installing Dir Entries, Install an Info File +@node Invoking install-info, , Installing Dir Entries, Install an Info File @section Invoking install-info @pindex install-info @@ -13127,13 +13457,18 @@ @code{install-info} can read only one info file and write only one dir file per invocation. +@cindex @file{dir}, created by @code{install-info} +If @var{dir-file} (however specified) does not exist, +@code{install-info} creates it if possible (with no entries). + Options: -@table @samp +@table @code @item --delete @opindex --delete -Only delete existing entries in @var{info-file}; don't insert any new -entries. +Delete the entries in @var{info-file} from @var{dir-file}. The file +name in the entry in @var{dir-file} must be @var{info-file} (except for +an optional @samp{.info} in either one). Don't insert any new entries. @item --dir-file=@var{name} @opindex --dir-file=@var{name} @@ -13164,8 +13499,8 @@ @item --item=@var{text} @opindex --item=@var{text} -Same as --entry=@var{text}. An Info directory entry is actually a menu -item. +Same as @samp{--entry=@var{text}}. An Info directory entry is actually +a menu item. @item --quiet @opindex --quiet @@ -13173,7 +13508,7 @@ @item --remove @opindex --remove -Same as --delete. +Same as @samp{--delete}. @item --section=@var{sec} @opindex --section=@var{sec} @@ -13190,8 +13525,6 @@ @end table -@c ================ Appendix starts here ================ - @node Command List, Tips, Install an Info File, Top @appendix @@-Command List @cindex Alphabetical @@-command list @@ -13248,7 +13581,7 @@ an end-of-sentence capital letter). @xref{Ending a Sentence}. @item @@@@ -Stands for an at sign, @samp{@@}.@* +Stands for an at sign, @samp{@@}. @xref{Braces Atsigns, , Inserting @@ and braces}. @item @@^ @@ -13258,7 +13591,7 @@ @xref{Inserting Accents}. @item @@@{ -Stands for a left brace, @samp{@{}.@* +Stands for a left brace, @samp{@{}. @xref{Braces Atsigns, , Inserting @@ and braces}. @item @@@} @@ -13279,6 +13612,11 @@ Generate the uppercase and lowercase AE ligatures, respectively: @AE{}, @ae{}. @xref{Inserting Accents}. +@item @@afourpaper +Change page dimensions for the A4 paper size. +Only allowed inside @code{@@iftex} @dots{} @code{@@end iftex}. +@xref{A4 Paper}. + @item @@appendix @var{title} Begin an appendix. The title appears in the table of contents of a printed manual. In Info, the title is @@ -13300,10 +13638,10 @@ subheading, , Subsection Commands}.@refill @item @@appendixsubsubsec @var{title} -Begin an appendix subsubsection within a subappendix. The title -appears in the table of contents of a printed manual. In Info, the -title is underlined with periods. @xref{subsubsection,, The `subsub' -Commands}.@refill +Begin an appendix subsubsection within an appendix subsection. The +title appears in the table of contents of a printed manual. In Info, +the title is underlined with periods. @xref{subsubsection,, The +`subsub' Commands}.@refill @item @@asis Used following @code{@@table}, @code{@@ftable}, and @code{@@vtable} to @@ -13494,6 +13832,13 @@ @xref{Definition Commands}, and @ref{deffnx,, Def Cmds in Detail}. +@item @@deftypemethod @var{class} @var{data-type} @var{method-name} @var{arguments}@dots{} +@itemx @@deftypemethodx @var{class} @var{data-type} @var{method-name} @var{arguments}@dots{} +Format a description for a typed method in object-oriented programming. +Takes as arguments the name of the class of the method, the return type +of the method, the name of the method, and its arguments, if any. +@xref{Definition Commands}, and @ref{deffnx,, Def Cmds in Detail}. + @item @@deftypevr @var{classification} @var{data-type} @var{name} @itemx @@deftypevrx @var{classification} @var{data-type} @var{name} Format a description for something like a variable in a typed @@ -13528,7 +13873,7 @@ and @ref{deffnx,, Def Cmds in Detail}. @item @@detailmenu@{@} -Use to avoid Makeinfo confusion stemming from the detailed node listing +Avoid @code{makeinfo} confusion stemming from the detailed node listing in a master menu. @xref{Master Menu Parts}. @item @@dfn@{@var{term}@} @@ -13554,7 +13899,10 @@ thin space before @var{dimension}. No effect in Info. @xref{dmn, , @code{@@dmn}}.@refill -@need 100 +@item @@dotaccent@{@var{c}@} +Generate a dot accent over the character @var{c}, as in @dotaccent{oo}. +@xref{Inserting Accents}. + @item @@dots@{@} Insert an ellipsis: @samp{@dots{}}. @xref{dots, , @code{@@dots}}.@refill @@ -13592,14 +13940,11 @@ Indicate to the reader with a glyph that the following text is an error message: @samp{@error{}}. @xref{Error Glyph}.@refill -@item @@evenfooting [@var{left}] @@| [@var{center}] @@| [@var{right}] -Specify page footings for even-numbered (left-hand) pages. Not relevant to -Info. @xref{Custom Headings, , How to Make Your Own Headings}.@refill - -@item @@evenheading [@var{left}] @@| [@var{center}] @@| [@var{right}] -Specify page headings for even-numbered (left-hand) pages. Only -supported within @code{@@iftex}. @xref{Custom Headings, , How to Make -Your Own Headings}.@refill +@item @@evenfooting [@var{left}] @@| [@var{center}] @@| [@var{right}] +@itemx @@evenheading [@var{left}] @@| [@var{center}] @@| [@var{right}] +Specify page footings resp.@: headings for even-numbered (left-hand) +pages. Only allowed inside @code{@@iftex}. @xref{Custom Headings, , +How to Make Your Own Headings}.@refill @item @@everyfooting [@var{left}] @@| [@var{center}] @@| [@var{right}] @itemx @@everyheading [@var{left}] @@| [@var{center}] @@| [@var{right}] @@ -13612,7 +13957,7 @@ @code{@@example}}.@refill @item @@exclamdown@{@} -Generate an upside-down exclamation point. @xref{Inserting Accents}. +Produce an upside-down exclamation point. @xref{Inserting Accents}. @item @@exdent @var{line-of-text} Remove any indentation a line might have. @xref{exdent, , @@ -13688,6 +14033,14 @@ page headings for printing. @xref{headings on off, , The @code{@@headings} Command}. +@item @@html +Enter HTML completely. Pair with @code{@@end html}. @xref{Raw +Formatter Commands}. + +@item @@hyphenation@{@var{hy-phen-a-ted words}@} +Explicitly define hyphenation points. @xref{- and hyphenation,, +@code{@@-} and @code{@@hyphenation}}. + @item @@i@{@var{text}@} Print @var{text} in @i{italic} font. No effect in Info. @xref{Fonts}.@refill @@ -13703,7 +14056,15 @@ Begin a stretch of text that will be ignored by @TeX{} when it typesets the printed manual. The text appears only in the HTML resp.@: Info file. Pair with @code{@@end ifhtml} resp.@: @code{@@end ifinfo}. -@xref{Conditionals, , Conditionally Visible Text}.@refill +@xref{Conditionals}. + +@item @@ifnothtml +@itemx @@ifnotinfo +@itemx @@ifnottex +Begin a stretch of text that will be ignored in one output format but +not the others. The text appears only in the format not specified. +Pair with @code{@@end ifnothtml} resp.@: @code{@@end ifnotinfo} resp.@: +@code{@@end ifnotinfo}. @xref{Conditionals}. @item @@ifset @var{flag} If @var{flag} is set, the Texinfo formatting commands format text @@ -13721,6 +14082,10 @@ or the printed output. Pair with @code{@@end ignore}. @xref{Comments, , Comments and Ignored Text}.@refill +@item @@image@{@var{filename}, [@var{width}], [@var{height}]@} +Include graphics image in external @var{filename} scaled to the given +@var{width} and/or @var{height}. @xref{Images}. + @item @@include @var{filename} Incorporate the contents of the file @var{filename} into the Info file or printed document. @xref{Include Files}.@refill @@ -13757,13 +14122,17 @@ Indicate text that is characters of input to be typed by users. @xref{kbd, , @code{@@kbd}}.@refill +@item @@kbdinputstyle @var{style} +Specify when @code{@@kbd} should use a font distinct from @code{@@code}. +@xref{kbd, , @code{@@kbd}}.@refill + @item @@key@{@var{key-name}@} -Highlight @var{key-name}, a name for a key on a keyboard. +Indicate a name for a key on a keyboard. @xref{key, , @code{@@key}}.@refill @item @@kindex @var{entry} -Add @var{entry} to the index of keys. @xref{Index Entries, , Defining the -Entries of an Index}.@refill +Add @var{entry} to the index of keys. +@xref{Index Entries, , Defining the Entries of an Index}.@refill @item @@L@{@} @itemx @@l@{@} @@ -13771,10 +14140,11 @@ respectively: @L{}, @l{}. @c Possibly this can be tossed now that we have macros. --karl, 16sep96. -@item @@global@@let@var{new-command}=@var{existing-command} -Equate a new highlighting command with an existing one. Only for -@TeX{}. Write definition inside of @code{@@iftex} @dots{} @code{@@end -iftex}. @xref{Customized Highlighting}.@refill +@c Yes, let's toss it, it's pretty weird. --karl, 15jun97. +@c @item @@global@@let@var{new-command}=@var{existing-command} +@c Equate a new highlighting command with an existing one. Only for +@c @TeX{}. Write definition inside of @code{@@iftex} @dots{} @code{@@end +@c iftex}. @xref{Customized Highlighting}.@refill @item @@lisp Begin an example of Lisp code. Indent text, do not fill, and select @@ -13788,7 +14158,8 @@ @item @@macro @var{macro-name} @{@var{params}@} Define a new Texinfo command @code{@@@var{macro-name}@{@var{params}@}}. -Only supported by Makeinfo and Texi2dvi. @xref{Defining Macros}. +Only supported by @code{makeinfo} and @code{texi2dvi}. @xref{Defining +Macros}. @item @@majorheading @var{title} Print a chapter-like heading in the text, but not in the table of @@ -13827,10 +14198,10 @@ @item @@O@{@} @itemx @@o@{@} -Generate the uppercase and lowercase Owith-slash letters, respectively: +Generate the uppercase and lowercase O-with-slash letters, respectively: @O{}, @o{}. -@item @@oddfooting [@var{left}] @@| [@var{center}] @@| [@var{right}] +@item @@oddfooting [@var{left}] @@| [@var{center}] @@| [@var{right}] @itemx @@oddheading [@var{left}] @@| [@var{center}] @@| [@var{right}] Specify page footings resp.@: headings for odd-numbered (right-hand) pages. Only allowed inside @code{@@iftex}. @xref{Custom Headings, , @@ -14074,8 +14445,8 @@ and @copyright{}}.@refill @item @@tex -Enter @TeX{} completely. Pair with @code{@@end tex}. @xref{Using -Ordinary TeX Commands, , Using Ordinary @TeX{} Commands}.@refill +Enter @TeX{} completely. Pair with @code{@@end tex}. @xref{Raw +Formatter Commands}. @item @@thischapter @itemx @@thischaptername @@ -14088,6 +14459,10 @@ document, respectively. @xref{Custom Headings, , How to Make Your Own Headings}.@refill +@item @@tieaccent@{@var{cc}@} +Generate a tie-after accent over the next two characters @var{cc}, as in +`@tieaccent{oo}'. @xref{Inserting Accents}. + @item @@tindex @var{entry} Add @var{entry} to the index of data types. @xref{Index Entries, , Defining the Entries of an Index}.@refill @@ -14129,9 +14504,9 @@ command is merely a synonym for @code{@@unnumbered}. @xref{makeinfo Pointer Creation, , Creating Pointers with @code{makeinfo}}. -@item @@u@var{c} -@itemx @@ubaraccent@var{c} -@itemx @@udotaccent@var{c} +@item @@u@{@var{c}@} +@itemx @@ubaraccent@{@var{c}@} +@itemx @@udotaccent@{@var{c}@} Generate a breve, underbar, or underdot accent, respectively, over or under the character @var{c}, as in @u{o}, @ubaraccent{o}, @udotaccent{o}. @xref{Inserting Accents}. @@ -14163,11 +14538,15 @@ manual. In Info, the title is underlined with periods. @xref{subsubsection, , The `subsub' Commands}.@refill +@item @@uref@{@var{url}[, @var{displayed-text}@} +Define a cross reference to an external uniform resource locator for the +World Wide Web. @xref{url, , @code{@@url}}.@refill + @item @@url@{@var{url}@} -Highlight text that is a uniform resource locator for the World Wide +Indicate text that is a uniform resource locator for the World Wide Web. @xref{url, , @code{@@url}}.@refill -@item @@v@var{c} +@item @@v@{@var{c}@} Generate check accent over the character @var{c}, as in @v{o}. @xref{Inserting Accents}. @@ -14216,8 +14595,8 @@ mandatory. @xref{xref, , @code{@@xref}}.@refill @end table + @node Tips, Sample Texinfo File, Command List, Top -@comment node-name, next, previous, up @appendix Tips and Hints Here are some tips for writing Texinfo documentation:@refill @@ -14240,7 +14619,7 @@ Include a copyright notice and copying permissions. @end itemize -@subsubheading Index, index, index! +@subsubheading Index, Index, Index! Write many index entries, in different ways. Readers like indices; they are helpful and convenient. @@ -14306,7 +14685,7 @@ readers can look up the concept in different ways.) @end itemize -@subsubheading Blank lines +@subsubheading Blank Lines @itemize @bullet @item @@ -14350,7 +14729,7 @@ same way. @end itemize -@subsubheading Complete phrases +@subsubheading Complete Phrases Complete phrases are easier to read than @dots{} @@ -14366,7 +14745,7 @@ ``You can set these variables:''. The former expression sounds cut off. @end itemize -@subsubheading Editions, dates and versions +@subsubheading Editions, Dates and Versions Write the edition and version numbers and date in three places in every manual: @@ -14434,11 +14813,11 @@ @itemize @bullet @item -Capitalize @samp{Texinfo}; it is a name. Do not write the @samp{x} or +Capitalize ``Texinfo''; it is a name. Do not write the @samp{x} or @samp{i} in upper case. @item -Capitalize @samp{Info}; it is a name. +Capitalize ``Info''; it is a name. @item Write @TeX{} using the @code{@@TeX@{@}} command. Note the uppercase @@ -14574,8 +14953,8 @@ @subsubheading Invoking from a Shell -You can invoke programs such as Emacs, GCC, and GAWK from a shell. -The documentation for each program should contain a section that +You can invoke programs such as Emacs, GCC, and @code{gawk} from a +shell. The documentation for each program should contain a section that describes this. Unfortunately, if the node names and titles for these sections are all different, readers find it hard to search for the section.@refill @@ -14584,10 +14963,10 @@ @w{`Invoking @dots{}'}, as in `Invoking Emacs'; this way users can find the section easily. -@subsubheading @sc{ansi c} Syntax +@subsubheading ANSI C Syntax When you use @code{@@example} to describe a C function's calling -conventions, use the @sc{ansi c} syntax, like this:@refill +conventions, use the ANSI C syntax, like this:@refill @example void dld_init (char *@@var@{path@}); @@ -14650,7 +15029,7 @@ @item Pronounce @TeX{} as if the @samp{X} were a Greek `chi', as the last sound in the name `Bach'. But pronounce Texinfo as in `speck': -@samp{teckinfo}. +``teckinfo''. @item Write notes for yourself at the very end of a Texinfo file after the @@ -14659,8 +15038,8 @@ @code{@@end ignore}. @end itemize + @node Sample Texinfo File, Sample Permissions, Tips, Top -@comment node-name, next, previous, up @appendix A Sample Texinfo File @cindex Sample Texinfo file, no comments @@ -14695,7 +15074,7 @@ Copyright @@copyright@{@} 1990 Free Software Foundation, Inc. @@end titlepage -@@node Top, First Chapter, (dir), (dir) +@@node Top, First Chapter, , (dir) @@comment node-name, next, previous, up @@menu @@ -14737,6 +15116,7 @@ @@bye @end example + @node Sample Permissions, Include Files, Sample Texinfo File, Top @appendix Sample Permissions @cindex Permissions @@ -14817,7 +15197,7 @@ @example This file documents @dots{} -Copyright 1992 Free Software Foundation, Inc. +Copyright 1997 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and @@ -14847,7 +15227,7 @@ translation approved by the Free Software Foundation. @end example -@node Titlepage Permissions, , ifinfo Permissions, Sample Permissions +@node Titlepage Permissions, , ifinfo Permissions, Sample Permissions @comment node-name, next, previous, up @appendixsec Titlepage Copying Permissions @cindex Titlepage permissions @@ -14878,14 +15258,14 @@ translation approved by the Free Software Foundation. @end example + @node Include Files, Headings, Sample Permissions, Top -@comment node-name, next, previous, up @appendix Include Files @cindex Include files When @TeX{} or an Info formatting command sees an @code{@@include} command in a Texinfo file, it processes the contents of the file named -by the command and incorporates them into the @sc{dvi} or Info file being +by the command and incorporates them into the DVI or Info file being created. Index entries from the included file are incorporated into the indices of the output file.@refill @@ -15077,13 +15457,13 @@ @group @@page @@vskip 0pt plus 1filll -Copyright @@copyright@{@} 1990 Free Software Foundation, Inc. +Copyright @@copyright@{@} 1997 Free Software Foundation, Inc. @@end titlepage @end group @group @@ifinfo -@@node Top, First, (dir), (dir) +@@node Top, First, , (dir) @@top Master Menu @@end ifinfo @end group @@ -15130,7 +15510,7 @@ menu with 417 entries and a list of 41 @code{@@include} files.@refill -@node Include Files Evolution, , Sample Include File, Include Files +@node Include Files Evolution, , Sample Include File, Include Files @comment node-name, next, previous, up @appendixsec Evolution of Include Files @@ -15170,8 +15550,8 @@ you can write menus and cross references without naming the different Texinfo files.@refill + @node Headings, Catching Mistakes, Include Files, Top -@comment node-name, next, previous, up @appendix Page Headings @cindex Headings @cindex Footings @@ -15196,10 +15576,10 @@ @heading Headings Introduced @end ifinfo -Texinfo provides standard page heading formats for manuals that are printed -on one side of each sheet of paper and for manuals that are printed on -both sides of the paper. Usually, you will use one or other of these -formats, but you can specify your own format, if you wish.@refill +Texinfo provides standard page heading formats for manuals that are +printed on one side of each sheet of paper and for manuals that are +printed on both sides of the paper. Typically, you will use these +formats, but you can specify your own format if you wish.@refill In addition, you can specify whether chapters should begin on a new page, or merely continue the same page as the previous chapter; and if @@ -15293,9 +15673,9 @@ @end example @noindent -The chapter name is preceded by the word @samp{Chapter}, the chapter -number and a colon. This makes it easier to keep track of where you -are in the manual.@refill +The chapter name is preceded by the word ``Chapter'', the chapter number +and a colon. This makes it easier to keep track of where you are in the +manual.@refill @node Heading Choice, Custom Headings, Heading Format, Headings @comment node-name, next, previous, up @@ -15334,12 +15714,13 @@ @noindent Texinfo lacks an @code{@@setchapternewpage even} command.@refill -@node Custom Headings, , Heading Choice, Headings +@node Custom Headings, , Heading Choice, Headings @comment node-name, next, previous, up @appendixsec How to Make Your Own Headings You can use the standard headings provided with Texinfo or specify -your own.@refill +your own. By default, Texinfo has no footers, so if you specify them, +the available page size for the main text will be slightly reduced. @c Following paragraph is verbose to prevent overfull hboxes. Texinfo provides six commands for specifying headings and @@ -15376,7 +15757,7 @@ @noindent You need to divide the left part from the central part and the central -part from the right had part by inserting @samp{@@|} between parts. +part from the right part by inserting @samp{@@|} between parts. Otherwise, the specification command will not be able to tell where the text for one part ends and the next part begins.@refill @@ -15412,7 +15793,7 @@ The `even' and `odd' commands specify the format for even-numbered pages and odd-numbered pages. These commands are for books and -manuals that are printed on both sides of each sheet of paper.@refill +manuals that are printed on both sides of each sheet of paper. @end table Use the @samp{@@this@dots{}} series of @@-commands to @@ -15429,7 +15810,7 @@ @findex thispage @item @@thispage Expands to the current page number.@refill -@c !!! Karl Berry says that `thissection' fails on page breaks. +@c !!! Karl Berry says that `thissection' can fail on page breaks. @ignore @item @@thissection Expands to the name of the current section.@refill @@ -15481,8 +15862,8 @@ Beware of overlong titles: they may overlap another part of the header or footer and blot it out.@refill + @node Catching Mistakes, Refilling Paragraphs, Headings, Top -@comment node-name, next, previous, up @appendix Formatting Mistakes @cindex Structure, catching mistakes in @cindex Nodes, catching mistakes @@ -15798,9 +16179,9 @@ This is often the best thing to do. However, beware: the one error may produce a cascade of additional error messages as its consequences -are felt through the rest of the file. (To stop @TeX{} when it is -producing such an avalanche of error messages, type @kbd{C-d} (or -@kbd{C-c C-d}, if you are running a shell inside Emacs.))@refill +are felt through the rest of the file. To stop @TeX{} when it is +producing such an avalanche of error messages, type @kbd{C-c} (or +@kbd{C-c C-c}, if you are running a shell inside Emacs). @item You can tell @TeX{} to stop this run by typing @kbd{x @key{RET}} @@ -15815,7 +16196,7 @@ though there is a problem. This usually occurs if a command is not ended but @TeX{} is able to continue processing anyhow. For example, if you fail to end an itemized list with the @code{@@end itemize} command, @TeX{} will -write a @sc{dvi} file that you can print out. The only error message that +write a DVI file that you can print out. The only error message that @TeX{} will give you is the somewhat mysterious comment that@refill @example @@ -15823,7 +16204,7 @@ @end example @noindent -However, if you print the @sc{dvi} file, you will find that the text +However, if you print the DVI file, you will find that the text of the file that follows the itemized list is entirely indented as if it were part of the last item in the itemized list. The error message is the way @TeX{} says that it expected to find an @code{@@end} @@ -15965,7 +16346,7 @@ @xref{Other Repeating Search, , Using Occur, emacs , The GNU Emacs Manual}, for more information.@refill -@node Running Info-Validate, , Using occur, Catching Mistakes +@node Running Info-Validate, , Using occur, Catching Mistakes @comment node-name, next, previous, up @appendixsec Finding Badly Referenced Nodes @findex Info-validate @@ -16128,7 +16509,7 @@ tag table and split the file automatically, or you can make the tag table and split the file manually.@refill -@node Splitting, , Tagifying, Running Info-Validate +@node Splitting, , Tagifying, Running Info-Validate @comment node-name, next, previous, up @appendixsubsec Splitting a File Manually @cindex Splitting an Info file manually @@ -16179,8 +16560,8 @@ The primary file still functions as an Info file, but it contains just the tag table and a directory of subfiles.@refill + @node Refilling Paragraphs, Command Syntax, Catching Mistakes, Top -@comment node-name, next, previous, up @appendix Refilling Paragraphs @cindex Refilling paragraphs @cindex Filling paragraphs @@ -16218,6 +16599,7 @@ the ends of paragraphs that contain @code{@@*} or @w{@code{@@w@{ @dots{}@}}} and therefore do not refill or indent them.@refill + @node Command Syntax, Obtaining TeX, Refilling Paragraphs, Top @comment node-name, next, previous, up @appendix @@-Command Syntax @@ -16230,12 +16612,13 @@ @table @asis @item 1. Non-alphabetic commands. These commands consist of an @@ followed by a punctuation mark or other -character that is not part of the alphabet. Non-alphabetic commands -are almost always part of the text within a paragraph, and never take -any argument. The two characters (@@ and the other one) are complete -in themselves; none is followed by braces. The non-alphabetic -commands are: @code{@@.}, @code{@@:}, @code{@@*}, @code{@@@@}, -@code{@@@{}, and @code{@@@}}.@refill +character that is not part of the alphabet. Non-alphabetic commands are +almost always part of the text within a paragraph, and never take any +argument. The two characters (@@ and the other one) are complete in +themselves; none is followed by braces. The non-alphabetic commands +are: @code{@@.}, @code{@@:}, @code{@@*}, @code{@@@kbd{SPACE}}, +@code{@@@kbd{TAB}}, @code{@@@kbd{NL}}, @code{@@@@}, @code{@@@{}, and +@code{@@@}}.@refill @item 2. Alphabetic commands that do not require arguments. These commands start with @@ followed by a word followed by left- and @@ -16280,7 +16663,8 @@ Emacs paragraph commands because it cannot appear at the beginning of a line.@refill -@node Obtaining TeX, New Features, Command Syntax, Top + +@node Obtaining TeX, Command and Variable Index, Command Syntax, Top @appendix How to Obtain @TeX{} @cindex Obtaining @TeX{} @cindex @TeX{}, how to obtain @@ -16289,14 +16673,16 @@ @c !!! Also consider updating TeX.README on prep. @c Updated by RJC on 1 March 1995, conversation with MacKay. @c Updated by kb@cs.umb.edu on 29 July 1996. +@c Updated by kb@cs.umb.edu on 25 April 1997. @TeX{} is freely redistributable. You can obtain @TeX{} for Unix -systems via anonymous ftp or on tape or CD-ROM. The core material -consists of Karl Berry's Web2c @TeX{} distribution. - -On-line retrieval instructions are available from either: -@example -@url{ftp://ftp.tug.org/tex/unixtex.ftp} -@url{http://www.tug.org/unixtex.ftp} +systems via anonymous ftp or on physical media. The core material +consists of the Web2c @TeX{} distribution (@uref{http://www.tug.org/web2c}). + +Instructions for retrieval by anonymous ftp and information on other +available distributions: +@example +@uref{ftp://ftp.tug.org/tex/unixtex.ftp} +@uref{http://www.tug.org/unixtex.ftp} @end example The Free Software Foundation provides a core distribution on its Source @@ -16304,6 +16690,9 @@ Washington maintains and supports a tape distribution; the @TeX{} Users Group co-sponsors a complete CD-ROM @TeX{} distribution. +@itemize @bullet + +@item For the FSF Source Code CD-ROM, please contact: @iftex @@ -16311,9 +16700,8 @@ @group Free Software Foundation, Inc. 59 Temple Place Suite 330 -Boston, MA w{ } 02111-1307 +Boston, MA @ @ 02111-1307 USA - Telephone: @w{@t{+}1--617--542--5942} Fax: (including Japan) @w{@t{+}1--617--542--2652} Free Dial Fax (in Japan): @@ -16341,17 +16729,15 @@ @end display @end ifinfo -To order a full distribution on CD-ROM, please see: -@display -@url{http://www.tug.org/tex-live.html} -@end display - -@noindent -(The distribution is also available by FTP; see the URL's above.) - -To order a full distribution from the University of Washington on either a -1/4@dmn{in} 4-track QIC-24 cartridge or a 4@dmn{mm} DAT cartridge, send -$210 to: +@item +To order a complete distribution on CD-ROM, please see +@uref{http://www.tug.org/tex-live.html}. (This distribution is also +available by FTP; see the URL's above.) + +@item +To order a full distribution from the University of Washington on either +a 1/4@dmn{in} 4-track QIC-24 cartridge or a 4@dmn{mm} DAT cartridge, +send $210 to: @display @group @@ -16360,24 +16746,27 @@ University of Washington Seattle, WA @w{ } 98195 USA - Telephone: @t{+}1--206--543--2268 Electronic mail: @code{mackay@@cs.washington.edu} @end group @end display -Please make checks payable to the University of Washington. -Checks must be in U.S.@: dollars, drawn on a U.S.@: bank. - -Prepaid orders are the only orders that can now be handled. Overseas -sites: please add to the base cost, if desired, $20.00 for shipment -via air parcel post, or $30.00 for shipment via courier. - -Please check with the above for current prices and formats. - - -@node New Features, Command and Variable Index, Obtaining TeX, Top -@appendix Second Edition Features +@noindent Please make checks payable to the University of Washington. +Checks must be in U.S.@: dollars, drawn on a U.S.@: bank. Overseas +sites: please add to the base cost, if desired, $20.00 for shipment via +air parcel post, or $30.00 for shipment via courier. + +@end itemize + +Many other @TeX{} distributions are available; see +@uref{http://www.tug.org/}. + + +@c These are no longer ``new'', and the explanations +@c are all given elsewhere anyway, I think. --karl, 25apr97. +@ignore (the entire appendix) +@c node New Features, Command and Variable Index, Obtaining TeX, Top +@c appendix Second Edition Features @tex % Widen the space for the first column so three control-character @@ -16398,8 +16787,8 @@ * New Commands:: Many newly described @@-commands. @end menu -@node New Texinfo Mode Commands, New Commands, New Features, New Features -@appendixsec New Texinfo Mode Commands +@c node New Texinfo Mode Commands, New Commands, Obtaining TeX, Obtaining TeX +@c appendixsec New Texinfo Mode Commands Texinfo mode provides commands and features especially designed for working with Texinfo files. More than 20 new commands have been @@ -16408,7 +16797,7 @@ The keybindings are intended to be somewhat mnemonic.@refill -@subheading Update all nodes and menus +@c subheading Update all nodes and menus The @code{texinfo-master-menu} command is the primary command: @@ -16421,7 +16810,7 @@ and regular menus. @end table -@subheading Update Pointers +@c subheading Update Pointers @noindent Create or update `Next', `Previous', and `Up' node pointers.@refill @@ -16439,7 +16828,7 @@ Update every node in the buffer. @end table -@subheading Update Menus +@c subheading Update Menus @noindent Create or update menus.@refill @@ -16459,7 +16848,7 @@ first update all the nodes. @end table -@subheading Insert Title as Description +@c subheading Insert Title as Description @noindent Insert a node's chapter or section title in the space for the @@ -16475,7 +16864,7 @@ Insert title. @end table -@subheading Format for Info +@c subheading Format for Info @noindent Provide keybindings both for the Info formatting commands that are @@ -16513,7 +16902,7 @@ Kill the @code{makeinfo} formatting job. @end table -@subheading Typeset and Print +@c subheading Typeset and Print @noindent Typeset and print Texinfo documents from within Emacs.@refill @@ -16538,7 +16927,7 @@ Run @code{texindex}. @item C-c C-t C-p -Print the @sc{dvi} file. +Print the DVI file. @item C-c C-t C-q Show the print queue. @@ -16556,7 +16945,7 @@ Recenter the output buffer. @end table -@subheading Other Updating Commands +@c subheading Other Updating Commands @noindent The ``other updating commands'' do not have standard keybindings because @@ -16584,8 +16973,8 @@ Insert node pointers in strict sequence. @end table -@node New Commands, , New Texinfo Mode Commands, New Features -@appendixsec New Texinfo @@-Commands +@c node New Commands, , New Texinfo Mode Commands, Obtaining TeX +@c appendixsec New Texinfo @@-Commands The second edition of the Texinfo manual describes more than 50 commands that were not described in the first edition. A third or so @@ -16593,7 +16982,7 @@ manual; the others are new. Here is a listing, with brief descriptions of them:@refill -@subheading Indexing +@c subheading Indexing @noindent Create your own index, and merge indices.@refill @@ -16612,7 +17001,7 @@ See also the @code{@@syncodeindex} command. @end table -@subheading Definitions +@c subheading Definitions @noindent Describe functions, variables, macros, @@ -16631,7 +17020,7 @@ 15 other related commands. @end table -@subheading Glyphs +@c subheading Glyphs @noindent Indicate the results of evaluation, expansion, @@ -16667,7 +17056,7 @@ Result of an expression @end table -@subheading Page Headings +@c subheading Page Headings @noindent Customize page headings. @@ -16692,7 +17081,7 @@ Related commands. @end table -@subheading Formatting +@c subheading Formatting @noindent Format blocks of text. @@ -16732,7 +17121,7 @@ Like @@table and @@lisp @r{but for} @@smallbook. @end table -@subheading Conditionals +@c subheading Conditionals @noindent Conditionally format text. @@ -16758,7 +17147,7 @@ Ignore, if @var{flag} is set. @end table -@subheading @@heading series for Titles +@c subheading @@heading series for Titles @noindent Produce unnumbered headings that do not appear in a table of contents. @@ -16771,12 +17160,12 @@ Unnumbered section-like heading not listed in the table of contents of a printed manual. -@item @@chapheading, @@majorheading, @@subheading, @@subsubheading +@item @@chapheading, @@majorheading, @@c subheading, @@subsubheading Related commands. @end table @need 1000 -@subheading Font commands +@c subheading Font commands @need 1000 @noindent @@ -16791,7 +17180,7 @@ Print in @sc{small caps} font. @end table -@subheading Miscellaneous +@c subheading Miscellaneous @noindent See @ref{title subtitle author, , @code{@@title} @code{@@subtitle} and @code{@@author} Commands},@* @@ -16811,10 +17200,8 @@ @item @@author @var{author} Typeset author's name. -@ignore -@item @@definfoenclose @var{new-command}, @var{before}, @var{after}, -Define a highlighting command for Info. (Info only.) -@end ignore +@c @item @@definfoenclose @var{new-command}, @var{before}, @var{after}, +@c Define a highlighting command for Info. (Info only.) @item @@finalout Produce cleaner printed output. @@ -16862,9 +17249,9 @@ % Switch width of first column of tables back to default value \global\tableindent=.8in @end tex - - -@node Command and Variable Index, Concept Index, New Features, Top +@end ignore + +@node Command and Variable Index, Concept Index, Obtaining TeX, Top @comment node-name, next, previous, up @unnumbered Command and Variable Index @@ -16875,7 +17262,7 @@ @printindex fn -@node Concept Index, , Command and Variable Index, Top +@node Concept Index, , Command and Variable Index, Top @unnumbered Concept Index @printindex cp
--- a/man/tm/Makefile Mon Aug 13 09:49:11 2007 +0200 +++ b/man/tm/Makefile Mon Aug 13 09:50:14 2007 +0200 @@ -35,13 +35,15 @@ info : $(INFOS) ../../info/%-en.info : %-en.texi - makeinfo -o $@ $< + $(MAKEINFO) -o $@ $< ../../info/%-ja.info : %-ja.texi - $(EMACS) -batch -q -no-site-file $< -eval '(cd "../../info")' \ - -l texinfmt -f texinfo-format-buffer \ - -eval '(setq file-coding-system (quote iso-2022-7))' \ - -eval '(save-buffer 0)' + $(EMACS) -batch -q -no-site-file $< \ + -eval '(unless (featurep (quote mule)) (kill-emacs 0))' \ + -eval '(cd "../../info")' \ + -l texinfmt -f texinfo-format-buffer \ + -eval '(setq file-coding-system (quote iso-2022-7))' \ + -eval '(save-buffer 0)' dvi: $(DVIS) .texi.dvi :
--- a/man/viper.texi Mon Aug 13 09:49:11 2007 +0200 +++ b/man/viper.texi Mon Aug 13 09:50:14 2007 +0200 @@ -15,7 +15,7 @@ @titlepage @title Viper Is a Package for Emacs Rebels @subtitle a Vi emulator for GNU Emacs 19 and XEmacs 19 -@subtitle June 1997, Viper Version 2.94 +@subtitle July 1997, Viper Version 2.95 @author Masahiko Sato (VIP 3.5) @author Aamod Sane (VIP 4.4) @@ -28,7 +28,7 @@ @unnumbered Distribution @noindent -Copyright @copyright{} 1995, 1996 Free Software Foundation, Inc. +Copyright @copyright{} 1995, 1996, 1997 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -119,24 +119,23 @@ and/or a venomous VI PERil. @end example -Technically speaking, Viper is a Vi emulation package for GNU Emacs 19 and -XEmacs 19. Because of its reliance on minor mode keymaps, -it will not work under Emacs 18. Viper contains virtually all of -Vi and Ex functionality and much more. It gives you the best of both -worlds: Vi keystrokes for editing combined with the GNU Emacs -environment. Viper also fixes some common complaints with Vi commands. -This manual describes Viper, concentrating on the differences from Vi and -on the new features of Viper. - -Viper, formerly known as VIP-19, was written by Michael Kifer. It is based -on VIP version 3.5 by Masahiko Sato and VIP version 4.4 by Aamod Sane. -Viper tries to be compatible with these packages. - -Viper is intended to be usable without reading this manual --- the defaults -are set to make Viper as close to Vi as possible. At startup, Viper will -attempt to set the most appropriate default environment for you, based on -your familiarity with Emacs. It will also tell you the basic GNU Emacs window -management commands to help you start immediately. +Viper is a Vi emulation package for GNU Emacs 19 and XEmacs 19. Because of +its reliance on minor mode keymaps, it will not work under Emacs 18. Viper +contains virtually all of Vi and Ex functionality and much more. It gives +you the best of both worlds: Vi keystrokes for editing combined with the +GNU Emacs environment. Viper also fixes some common complaints with Vi +commands. This manual describes Viper, concentrating on the differences +from Vi and on the new features of Viper. + +Viper was written by Michael Kifer. It is based on VIP version 3.5 by +Masahiko Sato and VIP version 4.4 by Aamod Sane. Viper tries to be +compatible with these packages. + +Viper is intended to be usable out of the box, without reading this manual +--- the defaults are set to make Viper as close to Vi as possible. At +startup, Viper will attempt to set the most appropriate default environment +for you, based on your familiarity with Emacs. It will also tell you the +basic GNU Emacs window management commands to help you start immediately. Although this manual explains how to customize Viper, some basic familiarity with Emacs Lisp would be a plus. @@ -282,15 +281,15 @@ @xref{States in Viper}, for more information.@refill -Emacs uses Control and Meta modifiers. These are denoted as C -and M, e.g. @kbd{^Z} as @kbd{C-z} and @kbd{Meta-x} as @kbd{M-x}. -The Meta key is usually located on each side of the Space bar; it is used -in a manner similar to the Control key, e.g., @kbd{M-x} means typing -@kbd{x} while holding the Meta key down. -For keyboards that do not have a Meta key, @key{ESC} is used as Meta. -Thus @kbd{M-x} is typed as @kbd{@key{ESC} x}. Viper uses @key{ESC} to switch -from Insert state to Vi state. Therefore Viper defines @kbd{C-\} as its Meta -key in Vi state. @xref{Vi State}, for more info.@refill +Emacs uses Control and Meta modifiers. These are denoted as C and M, +e.g. @kbd{^Z} as @kbd{C-z} and @kbd{Meta-x} as @kbd{M-x}. The Meta key is +usually located on each side of the Space bar; it is used in a manner +similar to the Control key, e.g., @kbd{M-x} means typing @kbd{x} while +holding the Meta key down. For keyboards that do not have a Meta key, +@key{ESC} is used as Meta. Thus @kbd{M-x} is typed as @kbd{@key{ESC} +x}. Viper uses @key{ESC} to switch from Insert state to Vi state. Therefore +Viper defines @kbd{C-\} as its Meta key in Vi state. @xref{Vi State}, for +more info.@refill Emacs is structured as a lisp interpreter around a C core. Emacs keys cause lisp functions to be called. It is possible to call these @@ -299,8 +298,8 @@ @node Loading Viper, States in Viper, Emacs Preliminaries, Overview @section Loading Viper -The most common way to load it automatically is to include the lines (in -the given order!): +The most common way to load it automatically is to include the following +lines (in the given order!): @lisp (setq viper-mode t) @@ -309,16 +308,24 @@ @noindent in your @file{~/.emacs} file. The @file{.emacs} file is placed in your -home directory and it is be executed every time you invoke Emacs. Viper -also uses the file @file{~/.viper} for Viper-specific customization. If you -wish to be in Vi command state whenever this is deemed appropriate by the -author, you can include the following line in your @file{.viper}: +home directory and it is be executed every time you invoke Emacs. This is +the place where all general Emacs customization takes place. Beginning with +version 20.0, Emacsen have an interactive interface, which simplifies the +job of customization significantly. + +Viper also uses the file @file{~/.viper} for Viper-specific customization. +If you wish to be in Vi command state whenever this is deemed appropriate +by the author, you can include the following line in your @file{.viper}: @lisp (setq viper-always t) @end lisp @noindent (@xref{Vi State}, for the explanation of Vi command state.) +The location of Viper customization file can be changed by setting the +variable @code{vip-custom-file-name} in @file{.emacs} @emph{prior} to loading +Viper. + Once invoked, Viper will arrange to bring up Emacs buffers in Vi state whenever this makes sense. @xref{Packages that Change Keymaps}, to find out when forcing Vi command state @@ -340,6 +347,10 @@ new commands that, in many cases, are more convenient than @kbd{:e}, @kbd{:vi}, and similar old-style Vi commands.)@refill +Finally, if at some point you would want to get de-Viperize your running +copy of Emacs after Viper has been loaded, the command @kbd{M-x +viper-go-away} will do it for you. + @node States in Viper, The Minibuffer, Loading Viper,Overview @section States in Viper @@ -351,6 +362,7 @@ @cindex Insert state @cindex Replace state @cindex Ex commands +@findex @code{viper-go-away} Viper has four states, Emacs, Vi, Insert, and Replace. @@ -362,6 +374,7 @@ changed, @pxref{Customization} You can also type @kbd{M-x viper-mode} to change to Vi state.@refill + For users who chose to set their user level to 1 at Viper setup time, switching to Emacs state is deliberately made harder in order to not confuse the novice user. In this case, @kbd{C-z} will either iconify Emacs @@ -514,14 +527,12 @@ @cindex Meta key Viper uses @key{ESC} as a switch between Insert and Vi states. Emacs uses -@key{ESC} for Meta. We need a Meta key to call the Meta key functions -such as @kbd{M-x function name}. This role is played by the key @kbd{C-\}. -Thus, to -get @kbd{M-x}, you should type @kbd{C-\ x} (if the keyboard has no Meta key). -This works both in the Vi state and the Insert state. -Alternatively, you can use @kbd{\ @key{ESC}} in Vi state to simulate the meta -key. -It is possible to use @key{ESC} as Meta, but then you cannot +@key{ESC} for Meta. We need a Meta key to call the Meta key functions such +as @kbd{M-x function name}. This role is played by the key @kbd{C-\}. +Thus, to get @kbd{M-x}, you should type @kbd{C-\ x} (if the keyboard has no +Meta key). This works both in the Vi state and the Insert state. +Alternatively, you can use @kbd{\ @key{ESC}} in Vi state to simulate the +meta key. It is possible to use @key{ESC} as Meta, but then you cannot press @key{ESC} multiple times in Vi state. @xref{Customization}, to find out how to rebind @key{ESC} to be Meta.@refill @end table @@ -687,15 +698,14 @@ @cindex Replace state This state is entered through Vi replacement commands, such as @kbd{C}, -@kbd{cw}, etc., or by typing @kbd{R}. In Replace state, Viper puts <R> in the -mode line to let you know which state is in effect. If Replace state is +@kbd{cw}, etc., or by typing @kbd{R}. In Replace state, Viper puts <R> in +the mode line to let you know which state is in effect. If Replace state is entered through @kbd{R}, Viper stays in that state until the user hits -@key{ESC}. -If this state is entered via the other replacement commands, then Replace -state is in effect until you hit @key{ESC} or until you cross the rightmost -boundary of the replacement region. In the latter case, Viper changes its -state from Replace to Insert (which you will notice by the change in the -mode line). +@key{ESC}. If this state is entered via the other replacement commands, +then Replace state is in effect until you hit @key{ESC} or until you cross +the rightmost boundary of the replacement region. In the latter case, Viper +changes its state from Replace to Insert (which you will notice by the +change in the mode line). Since Viper runs under Emacs, it is possible to switch between buffers while in Replace state. You can also move the cursor using the arrow keys @@ -1201,7 +1211,7 @@ Vi. However, if the value is @code{reformed-vi} then the alphanumeric symbols will be those specified by the current Emacs syntax table (which may be different for different major modes) plus the underscore symbol -@code{_}. The user can also specify the value @code{emacs}, which would +@kbd{_}. The user can also specify the value @code{emacs}, which would make Viper use exactly the Emacs notion of word. In particular, the underscore may not be part of a word. Finally, if @code{vip-syntax-preference} is set to @code{extended}, Viper words would @@ -1519,14 +1529,25 @@ hooks. This is the recommended method. @item @cindex .emacs -Elisp code in your @file{.emacs} file before and after the -@code{(require 'viper)} line. This method is not recommended, unless you -are know what you are doing.@refill +Elisp code in your @file{.emacs} file before and after the @code{(require +'viper)} line. This method is not recommended, unless you know what you are +doing. Only two variables, @code{viper-mode} and +@code{vip-custom-file-name} are supposed to be customized in @file{.emacs}, +prior to loading Viper.@refill @end itemize @noindent -Emacs customization is done in Emacs Lisp. For the common cases, -examples are provided that you can use directly. +Most of Viper's behavior can be customized via the interactive Emacs user +interface. Choose "Customize" from the menubar, click on "Editing", then on +"Emulations". The customization widget is self-explanatory. Once you are +satisfied with your changes, save them into a file and then include the +contents of that file in the Viper customization repository, @file{.viper} +(except for @code{viper-mode} and @code{vip-custom-file-name}, which are +supposed to go into @code{.emacs}). + +Some advanced customization cannot be accomplished this way, however, and +has to be done in Emacs Lisp. For the common cases, examples are provided +that you can use directly. @menu * Rudimentary Changes:: Simple constant definitions. @@ -1576,7 +1597,7 @@ appropriate major modes. @kbd{:se ai} changes the value of @code{vip-auto-indent} in the current -buffer only; @kbd{:se gai} does the same globally. +buffer only; @kbd{:se ai-g} does the same globally. @item vip-electric-mode t If not @code{nil}, auto-indentation becomes electric, which means that @key{RET}, @kbd{O}, and @kbd{o} indent cursor according to the current @@ -1613,7 +1634,7 @@ sets the tab width in the current buffer only; it has no effect on other buffers. -The command @kbd{:se gts} sets tab width globally, +The command @kbd{:se ts-g} sets tab width globally, for all buffers where the tab is not yet set locally, including the new buffers. @@ -1634,7 +1655,7 @@ @itemx :se ws (:se wrapscan) If not @code{nil}, search wraps around the end/beginning of buffer. @item vip-search-scroll-threshold 2 -In search lands within this many lines of the window top or bottom, the +If search lands within this many lines of the window top or bottom, the window will be scrolled up or down by about 1/7-th of its size, to reveal the context. If the value is negative---don't scroll. @item vip-tags-file-name "TAGS" @@ -1654,21 +1675,32 @@ Meta keys (usually on each side of the space bar). On a dumb terminal, Viper sets this variable to @code{twice}, which is almost like @code{nil}, except that double @key{ESC} beeps. This, too, lets @key{ESC} to be used as a Meta. -@item vip-keysequence-delay 140 -Escape sequences separated by this much delay are interpreted as command, -ignoring the special meaning of @key{ESC} in VI. The default is suitable -for most terminals. However, if your terminal is extremely slow, you might -want to increase this slightly. You will know if your terminal is slow if -the @key{ESC} key sequences emitted by the arrow keys are interpreted as -separately typed characters (and thus the arrow keys won't work). Making -this value too large will slow you down, so exercise restraint. +@item vip-ESC-keyseq-timeout 200 on tty, 0 on windowing display +Escape key sequences separated by this much delay (in miliseconds) are +interpreted as command, ignoring the special meaning of @key{ESC} in +VI. The default is suitable for most terminals. However, if your terminal +is extremely slow, you might want to increase this slightly. You will know +if your terminal is slow if the @key{ESC} key sequences emitted by the +arrow keys are interpreted as separately typed characters (and thus the +arrow keys won't work). Making this value too large will slow you down, so +exercise restraint. +@item vip-fast-keyseq-timeout 200 +Key sequences separated by this many miliseconds are treated as Vi-style +keyboard macros. If the key sequence is defined as such a macro, it will be +executed. Otherwise, it is processed as an ordinary sequence of typed keys. + +Setting this variable too high may slow down your typing. Setting it too +low may make it hard to type macros quickly enough. @item vip-ex-style-motion t Set this to @code{nil}, if you want @kbd{l,h} to cross lines, etc. @xref{Movement and Markers}, for more info. @item vip-ex-style-editing-in-insert t -Set this to to @code{nil}, if you want @key{ESC} to not move back and -@kbd{C-h} to not stop +Set this to to @code{nil}, if you want +@kbd{C-h} and @key{DEL} to not stop at the beginning of a line in Insert state. +@item vip-ESC-moves-cursor-back t +It t, cursor moves back 1 character when switching from insert state to vi +state. If nil, the cursor stays where it was before the switch. @item viper-always t @code{t} means: leave it to Viper to decide when a buffer must be brought up in Vi state, @@ -1808,7 +1840,7 @@ replacement regions (and multi-line replacement regions are deleted). @item vip-toggle-key "\C-z" Specifies the key used to switch from Emacs to Vi and back. -Must be set in @file{.viper} or prior to loading Viper. This variable can't be +Must be set in @file{.viper}. This variable can't be changed interactively after Viper is loaded. In Insert state, this key acts as a temporary escape to Vi state, i.e., it @@ -1816,7 +1848,7 @@ were typed in Vi state. @item vip-ESC-key "\e" Specifies the key used to escape from Insert/Replace states to Vi. -Must be set in @file{.viper} or prior to loading Viper. This variable cannot be +Must be set in @file{.viper}. This variable cannot be changed interactively after Viper is loaded. @item vip-buffer-search-char nil Key used for buffer search. @xref{Viper Specials}, for details. @@ -1864,9 +1896,11 @@ @vindex @code{vip-vi-style-in-minibuffer} @vindex @code{vip-no-multiple-ESC} @vindex @code{viper-always} -@vindex @code{vip-keysequence-delay} +@vindex @code{vip-ESC-keyseq-timeout} +@vindex @code{vip-fast-keyseq-timeout} @vindex @code{vip-ex-style-motion} @vindex @code{vip-ex-style-editing-in-insert} +@vindex @code{vip-ESC-moves-cursor-back} @vindex @code{vip-custom-file-name} @vindex @code{vip-spell-function} @vindex @code{ex-cycle-other-window} @@ -2194,11 +2228,12 @@ by @code{vip-set-hooks} function fit your working style, except one or two cases. In this case, you may still be able to set @code{viper-always} to @code{t} and then remove a hook that forces Vi command state. For instance, -to unharness @code{lisp-interaction-mode}, you can put the following line -in your @file{.emacs} (not @code{.viper}!) file after @code{(require 'viper)}: +to unharness @code{lisp-interaction-mode}, you can execute the following line +in @code{vip-load-hook}: @lisp (remove-hook 'lisp-interaction-mode-hook 'viper-mode) @end lisp +Note: this type of customization cannot be done in @code{.viper}! In some rare cases, some minor modes may override certain essential bindings in Vi command state. This is not really catastrophic because this @@ -2279,9 +2314,9 @@ @file{~/.viper} file. For instance, if you don't like the above feature, put this in @file{~/.viper}: @example -(vip-set-vi-search-style-macros 'undefine) +(vip-set-searchstyle-toggling-macros 'undefine) @end example -@findex @code{vip-set-vi-search-style-macros} +@findex @code{vip-set-searchstyle-toggling-macros} @item Vi-isms in Emacs state Some people find it useful to use the Vi-style search key, `/', to invoke @@ -2301,13 +2336,13 @@ @vindex @code{vip-dired-modifier-map} To unbind the macros `//' and `///' for a major mode where you feel they -are undesirable, execute @code{vip-set-emacs-search-style-macros} with a +are undesirable, execute @code{vip-set-emacs-state-searchstyle-macros} with a non-nil argument. This can be done either interactively, by supplying a prefix argument, or by placing @example -(vip-set-emacs-search-style-macros 'undefine) +(vip-set-emacs-state-searchstyle-macros 'undefine) @end example -@findex @code{vip-set-emacs-search-style-macros} +@findex @code{vip-set-emacs-state-searchstyle-macros} in the hook to the major mode (e.g., @code{dired-mode-hook}). @xref{Vi Macros}, for more information on Vi macros. @@ -2320,8 +2355,8 @@ Regular Expressions for @kbd{[[} and @kbd{]]}. Note that Emacs defines Regexps for paragraphs and sentences. @xref{Paragraphs,,Paragraphs and Sentences,emacs,The GNU Emacs Manual}, for details. -@item M-x vip-set-expert-level -@findex @code{vip-set-expert-level} +@item M-x viper-set-expert-level +@findex @code{viper-set-expert-level} Change your user level interactively. @item vip-smart-suffix-list '("" "tex" "c" "cc" "el" "p") @vindex @code{vip-smart-suffix-list} @@ -2435,6 +2470,10 @@ indication of the current Viper state in the minibuffer. (This is important if the user accidentally switches to another Viper state by typing @key{ESC} or @kbd{C-z}). +@item M-x viper-go-away +@findex @code{viper-go-away} +Make Viper disappear from the face of your running Emacs instance. If your +fingers start aching again, @kbd{M-x viper-mode} might save your day. @end table @cindex Multifile documents and programs @@ -2875,7 +2914,6 @@ The rate at which the user must type keys in order for them to be recognized as a timeout macro is controlled by the variable @code{vip-fast-keyseq-timeout}, which defaults to 200 milliseconds. -@vindex @code{vip-fast-keyseq-timeout} For the most part, Viper macros defined in @file{~/.viper} can be shared between Emacs, XEmacs, and X and TTY modes. However, macros defined via @@ -3059,7 +3097,7 @@ However, if the value is @code{reformed-vi} then alphanumeric symbols will be those specified by the current Emacs syntax table (which may be different for different major modes) plus the underscore symbol -@code{_}. The user can also specify the value @code{emacs}, which would +@kbd{_}. The user can also specify the value @code{emacs}, which would make Viper use exactly the Emacs notion of word. In particular, the underscore may not be part of a word. Finally, if @code{vip-syntax-preference} is set to @code{extended}, Viper words would @@ -3236,8 +3274,18 @@ By default, Viper ignores brackets/parentheses/braces that occur inside parentheses. You can change this by setting @code{vip-parse-sexp-ignore-comments} to nil in your @file{.viper} fipe. -This option can also be toggled interactively if you quickly hit @kbd{%} -three times. +This option can also be toggled interactively if you quickly hit @kbd{%%%}. + +This latter feature is implemented as a vi-style keyboard macro. If you +don't want this macro, put + +@example +(vip-set-parsing-style-toggling-macro 'undefine) +@end example +@findex @code{vip-set-parsing-style-toggling-macro} + +in your @file{~/.viper} file. + @end table @kindex @kbd{%} @kindex @kbd{C-c /} @@ -3623,17 +3671,25 @@ non-overlapping occurrence of <p>) and @samp{c} for @samp{confirm} (type @samp{y} to confirm a particular substitution, else @samp{n}). Instead of @kbd{/} any -punctuation CHAR unequal to <space> <tab> and <lf> can be used as delimiter. +punctuation character other than <space> <tab> and <lf> can be used as +delimiter. @item & Repeat latest Ex substitute command, e.g. @kbd{:s/wrong/good}. +@item :global /<pattern>/<ex-command> +@itemx :g /<pattern>/<ex-command> +Execute <ex-command> on all lines that match <pattern>. +@item :vglobal /<pattern>/<ex-command> +@itemx :v /<pattern>/<ex-command> +Execute <ex-command> on all lines that do not match <pattern>. @end table @kindex @kbd{&} @findex @kbd{:substitute/<p>/<r>/<f>} @kindex @kbd{Q} @kindex @kbd{#g<move>} -@findex @kbd{:v/<string>/<cmd>} -@findex @kbd{:g/<string>/<cmd>} -@findex @kbd{:global/<string>/<cmd>} +@findex @kbd{:v} +@findex @kbd{:g} +@findex @kbd{:global} +@findex @kbd{:vglobal} @findex @kbd{:tag <name>} @kindex @kbd{%} @kindex @kbd{N} @@ -3790,7 +3846,7 @@ Quit buffer without checking. In Viper, these two commands are identical. Confirmation is required if exiting modified buffers that visit files. -@item :susp +@item :suspend @item :stop Suspend Viper @item :[x,y] w @@ -3798,8 +3854,7 @@ any file where this newline is missing. This is done by setting Emacs variable @code{require-final-newline} to @code{t}. If you don't like this feature, use @code{setq-default} to set @code{require-final-newline} to -@code{nil}. This must be done either in @file{.viper} file or in -@code{.emacs} after Viper is loaded. +@code{nil}. This must be done in @file{.viper} file. @item :[x,y] w <name> Write to the file <name>. @item :[x,y] w>> <name> @@ -3817,9 +3872,11 @@ Read file into a buffer, inserting its contents after the current line. @item :xit Same as @kbd{:wq}. -@item :W -Save unsaved buffers, asking for confirmation. -@item :WW +@item :Write +@itemx :W +Save all unsaved buffers, asking for confirmation. +@item :WWrite +@itemx :WW Like @kbd{W}, but without asking for confirmation. @item ZZ Save current buffer and kill it. If user level is 1, then save all files @@ -3907,7 +3964,7 @@ @findex @kbd{:WWrite} @findex @kbd{:x} @findex @kbd{:x!} -@findex @kbd{:susp} +@findex @kbd{:suspend} @findex @kbd{:stop} @findex @kbd{:n [<count> | <file>]} @findex @kbd{:cd [<dir>]} @@ -4044,51 +4101,90 @@ @cindex Vi options @table @kbd -@item ai +@item autoindent +@itemx ai @cindex autoindent autoindent -- In append mode after a <cr> the cursor will move directly below the first -CHAR on the previous line. -@item ic +character on the previous line. +This setting affects the current buffer only. +@item autoindent-global +@itemx ai-global +Same as `autoindent', but affects all buffers. +@item noautoindent +@itemx noai +Cancel autoindent. +@item noautoindent-global +@itemx noai-g +Cancel autoindent-global. +@item ignorecase +@itemx ic @cindex case and searching ignorecase -- No distinction between upper and lower cases when searching. +@item noignorecase +@itemx noic +Cancel ignorecase. @item magic +@itemx ma @cindex literal searching Regular expressions used in searches; nomagic means no regexps. -@item ro +@item nomagic +@item noma +Cancel magic. +@item readonly +@itemx ro @cindex readonly files readonly -- The file is not to be changed. If the user attempts to write to this file, confirmation will be requested. -@item sh=<string> +@item noreadonly +@itemx noro +Cancel readonly. +@item shell=<string> +@itemx sh=<string> @cindex shell shell -- The program to be used for shell escapes (default @samp{$SHELL} (default @file{/bin/sh})). -@item sw=<count> +@item shiftwidth=<count> +@itemx sw=<count> @cindex layout @cindex shifting text shiftwidth -- Gives the shiftwidth (default 8 positions). -@item sm +@item showmatch +@itemx sm @cindex paren matching @cindex matching parens showmatch -- Whenever you append a @kbd{)}, Vi shows its match if it's on the same page; also with @kbd{@{} and @kbd{@}}. If there's no match, Vi will beep. -@item ts=<count> +@item noshowmatch +@itemx nosm +Cancel showmatch. +@item tabstop=<count> +@itemx ts=<count> @cindex changing tab width @cindex tabbing tabstop -- The length of a <ht>; warning: this is only IN the editor, outside of it <ht>s have their normal length (default 8 positions). -@item wm=<count> +This setting affects the current buffer only. +@item tabstop-global +@itemx ts-g +Same as `tabstop', but affects all buffers. +@item wrapmargin=<count> +@itemx wm=<count> @cindex auto fill @cindex word wrap wrapmargin -- In append mode Vi automatically puts a <lf> whenever there is a <sp> or <ht> within <wm> columns from the right margin. -@item ws +@item wrapscan +@itemx ws @cindex searching wrapscan -- When searching, the end is considered @samp{stuck} to the begin of the file. +@item nowrapscan +@itemx nows +Cancel wrapscan. @item :set <option> Turn <option> on. @item :set no<option> @@ -4124,12 +4220,16 @@ @section Emacs Related Commands @table @kbd -@item _ -Begin Meta command in Vi state. Most often used as _x (M-x). +@item C-\ +Begin Meta command in Vi or Insert states. Most often used as C-\ x (M-x). @item C-z -Begin Meta command in Insert state. -@item C-z -Switch between Emacs and Vi states. +In Insert and Replace states, prepare Viper to accept the next command and +execute it as if Viper was in Vi state. Then return to Insert state. + +In Vi state, switch to Emacs state; in Emacs state, switch to Vi state. +@item C-c \ +Switches to Vi state for the duration of a single command. Then goes back +to the original Viper state. Works from Vi, Insert, Replace, and Emacs states. @item C-x0 Close Window @item C-x1 @@ -4157,8 +4257,8 @@ @kindex @kbd{C-x1} @kindex @kbd{C-x0} @kindex @kbd{C-z} -@kindex @kbd{C-z} -@kindex @kbd{_} +@kindex @kbd{C-\} +@kindex @kbd{C-c\} @node Mouse-bound Commands,,,Commands @section Mouse-bound Commands @@ -4234,7 +4334,8 @@ kwzh@@gnu.ai.mit.edu (Karl Heuer), sudish@@MindSpring.COM (Sudish Joseph), paulk@@summit.esg.apertus.com (Paul Keusemann), -roderick@@argon.org (Roderick Schertler) +roderick@@argon.org (Roderick Schertler), +johnw@@borland.com (John Wiegley) @end example
--- a/man/xemacs-faq.texi Mon Aug 13 09:49:11 2007 +0200 +++ b/man/xemacs-faq.texi Mon Aug 13 09:50:14 2007 +0200 @@ -8,7 +8,7 @@ @titlepage @title XEmacs FAQ @subtitle Frequently asked questions about XEmacs -@subtitle Last Modified: 1997-07-02 +@subtitle Last Modified: 1997-07-17 @sp 1 @author Tony Rossini <arossini@@stat.sc.edu> @author Ben Wing <wing@@666.com> @@ -249,25 +249,17 @@ Try reading this FAQ, examining the regular GNU Emacs FAQ (which can be found with the Emacs 19 distribution) as well as at -@example -<URL:http://www.eecs.nwu.edu/emacs/faq/> -@end example -and reading the Usenet group comp.emacs.xemacs. +<URL:http://www.eecs.nwu.edu/emacs/faq/> and reading the Usenet group +comp.emacs.xemacs. If that does not help, try posting your question to comp.emacs.xemacs. Please @strong{do not} post XEmacs related questions to gnu.emacs.help. If you cannot post or read Usenet news, there is a corresponding mailing list which is available. It can be subscribed to by sending a message -with a subject of @samp{subscribe} to -@example -<xemacs-request@@xemacs.org> -@end example -for subscription information and -@example -<xemacs@@xemacs.org> -@end example -to send messages to the list. +with a subject of @samp{subscribe} to <xemacs-request@@xemacs.org> +for subscription information and <xemacs@@xemacs.org> to send messages +to the list. To cancel a subscription, you @strong{must} use the xemacs-request address. Send a message with a subject of @samp{unsubscribe} to be @@ -303,6 +295,18 @@ structure. See <URL:http://www.altrasoft.com/> for more details or contact Altrasoft directly at 1-888-ALTSOFT. +A private effort is being put forth by David Hobley +<URL:http://www.angelfire.com/wa/hobley>. + +He can be reached at the following email addresses: +@example +<davidh@@wr.com.au> (home) +@end example + +@example +<david_hobley@@optusvision.com.au> (work) +@end example + The closest is @dfn{Win-Emacs}, which is based on Lucid Emacs 19.6. Available from <URL:http://www.pearlsoft.com/>. @@ -876,6 +880,171 @@ Steve Baur <steve@@altair.xemacs.org> writes: @quotation +The 45MB of space required by the installation directories can be +reduced dramatically if desired. Gzip all the .el files. Remove all +the packages you'll never want to use (or even ones you do like the two +obsolete mailcrypts and Gnus 4 in 19.13). Remove the TexInfo manuals. +Remove the Info (and use just hardcopy versions of the manual). Remove +most of the stuff in etc. Remove or gzip all the source code. Gzip or +remove the C source code. Configure it so that copies are not made of +the support lisp. I'm not advocating any of these things, just pointing +out ways to reduce the disk requirements if desired. + +Now examine the space used by directory: + +@example +0 /usr/local/bin/xemacs +2048 /usr/local/bin/xemacs-19.13 + +1546 /usr/local/lib/xemacs-19.13/i486-miranova-sco3.2v4.2 +1158 /usr/local/lib/xemacs-19.13/i486-unknown-linux1.2.13 +@end example + +You need to keep these. XEmacs isn't stripped by default in +installation, you should consider stripping. That will save you about +5MB right there. + +@example +207 /usr/local/lib/xemacs-19.13/etc/w3 +122 /usr/local/lib/xemacs-19.13/etc/sounds +18 /usr/local/lib/xemacs-19.13/etc/sparcworks +159 /usr/local/lib/xemacs-19.13/etc/vm +6 /usr/local/lib/xemacs-19.13/etc/e +21 /usr/local/lib/xemacs-19.13/etc/eos +172 /usr/local/lib/xemacs-19.13/etc/toolbar +61 /usr/local/lib/xemacs-19.13/etc/ns +43 /usr/local/lib/xemacs-19.13/etc/gnus +@end example + +These are support directories for various packages. In general they +match a directory under ./xemacs-19.13/lib/xemacs-19.13/lisp/. If you +do not require the package, you may delete or gzip the support too. + +@example +1959 /usr/local/lib/xemacs-19.13/etc +175 /usr/local/lib/xemacs-19.13/lisp/bytecomp +340 /usr/local/lib/xemacs-19.13/lisp/calendar +342 /usr/local/lib/xemacs-19.13/lisp/comint +517 /usr/local/lib/xemacs-19.13/lisp/dired +42 /usr/local/lib/xemacs-19.13/lisp/electric +212 /usr/local/lib/xemacs-19.13/lisp/emulators +238 /usr/local/lib/xemacs-19.13/lisp/energize +289 /usr/local/lib/xemacs-19.13/lisp/gnus +457 /usr/local/lib/xemacs-19.13/lisp/ilisp +1439 /usr/local/lib/xemacs-19.13/lisp/modes +2276 /usr/local/lib/xemacs-19.13/lisp/packages +1040 /usr/local/lib/xemacs-19.13/lisp/prim +176 /usr/local/lib/xemacs-19.13/lisp/pcl-cvs +154 /usr/local/lib/xemacs-19.13/lisp/rmail +3 /usr/local/lib/xemacs-19.13/lisp/epoch +45 /usr/local/lib/xemacs-19.13/lisp/term +860 /usr/local/lib/xemacs-19.13/lisp/utils +851 /usr/local/lib/xemacs-19.13/lisp/vm +13 /usr/local/lib/xemacs-19.13/lisp/vms +157 /usr/local/lib/xemacs-19.13/lisp/x11 +19 /usr/local/lib/xemacs-19.13/lisp/tooltalk +14 /usr/local/lib/xemacs-19.13/lisp/sunpro +291 /usr/local/lib/xemacs-19.13/lisp/games +198 /usr/local/lib/xemacs-19.13/lisp/edebug +619 /usr/local/lib/xemacs-19.13/lisp/w3 +229 /usr/local/lib/xemacs-19.13/lisp/eos +55 /usr/local/lib/xemacs-19.13/lisp/iso +59 /usr/local/lib/xemacs-19.13/lisp/mailcrypt +187 /usr/local/lib/xemacs-19.13/lisp/eterm +356 /usr/local/lib/xemacs-19.13/lisp/ediff +408 /usr/local/lib/xemacs-19.13/lisp/hyperbole/kotl +1262 /usr/local/lib/xemacs-19.13/lisp/hyperbole +247 /usr/local/lib/xemacs-19.13/lisp/hm--html-menus +161 /usr/local/lib/xemacs-19.13/lisp/mh-e +299 /usr/local/lib/xemacs-19.13/lisp/viper +53 /usr/local/lib/xemacs-19.13/lisp/oobr/tree-x +4 /usr/local/lib/xemacs-19.13/lisp/oobr/tree-nx/English.lproj/DocWindow.nib +3 /usr/local/lib/xemacs-19.13/lisp/oobr/tree-nx/English.lproj/InfoPanel.nib +3 /usr/local/lib/xemacs-19.13/lisp/oobr/tree-nx/English.lproj/TreeView.nib +11 /usr/local/lib/xemacs-19.13/lisp/oobr/tree-nx/English.lproj +53 /usr/local/lib/xemacs-19.13/lisp/oobr/tree-nx +466 /usr/local/lib/xemacs-19.13/lisp/oobr +14142 /usr/local/lib/xemacs-19.13/lisp +@end example + +These are all Emacs Lisp source code and bytecompiled object code. You +may safely gzip everything named *.el here. You may remove any package +you don't use. @emph{Nothing bad will happen if you delete a package +that you do not use}. You must be sure you do not use it though, so be +conservative at first. + +Possible candidates for deletion include w3 (newer versions exist, or +you may just use Lynx or Netscape for web browsing), games, hyperbole, +mh-e, hm--html-menus (better packages exist), vm, viper, oobr, gnus (new +versions exist), etc. Ask yourself, @emph{Do I ever want to use this +package?} If the answer is no, then it is a candidate for removal. + +First, gzip all the .el files. Then go about package by package and +start gzipping the .elc files. Then run XEmacs and do whatever it is +you normally do. If nothing bad happens, then delete the directory. Be +conservative about deleting directories, and it would be handy to have a +backup tape around in case you get too zealous. + +@file{prim}, @file{modes}, @file{packages}, and @file{utils} are four +directories you definitely do @strong{not} want to delete, although +certain packages can be removed from them if you do not use them. + +@example +1972 /usr/local/lib/xemacs-19.13/info +@end example + +These are online texinfo sources. You may either gzip them or remove +them. In either case, @kbd{C-h i} (info mode) will no longer work. + +@example +20778 /usr/local/lib/xemacs-19.13 +@end example + +The 20MB achieved is less than half of what the full distribution takes up, +@strong{and} can be achieved without deleting a single file. +@end quotation + +giacomo boffi <boffi@@hp735.stru.polimi.it> provides this procedure: + +@quotation +Substitute @file{/usr/local/lib/} with the path where the xemacs tree is +rooted, then use this script: + +@example +#!/bin/sh + +r=/usr/local/lib/xemacs-19.13/lisp + +cd $r ; rm -f cmpr ; touch cmpr + +du -s . + +for d in * ; do + if test -d $d ; then + cd $d + for f in *.el ; do +# compress (remove) only (ONLY) the sources that have a +# corresponding compiled file --- do not (DO NOT) touch other +# sources + if test -f $@{f@}c ; then gzip -v9 $f >> $r/cmpr ; fi + done + cd .. + fi +done + +du -s . +@end example + +A step beyond would be substituting @samp{rm -f} for @samp{gzip -v9}, +but you have to be desperate for removing the sources (remember that +emacs can access compressed files transparently). + +Also, a good megabyte could easily be trimmed from the $r/../etc +directory, e.g., the termcap files, some O+NEWS, others that I don't +remember as well. +@end quotation + +@quotation XEmacs 20.3 will unbundle the lisp hierarchy and allow the installer to choose exactly how much support code gets installed. @end quotation @@ -920,7 +1089,7 @@ Initialization error: Terminal type `xterm' undefined (or can't access database?) @end example -Ben Wing <ben@@666.com> writes: +Ben Wing <ben@@666.com> writes: @quotation Your ncurses configuration is messed up. Your /usr/lib/terminfo is a @@ -3287,16 +3456,7 @@ @node Q4.0.7, Q4.0.8, Q4.0.6, Subsystems @section Is there a mailing list or FAQ for VM? -There is no archived FAQ for VM. - -Kyle Jones <kyle_jones@@wonderworks.com> writes: - -@quotation -No, I'm too atavistic to write one. For some reason I'd rather just -answer the questions myself. I guess it serves a purpose in that the VM -user community knows that I'm still alive, despite the 9 months since -the last release. -@end quotation +A FAQ for VM exists at <URL:http://www.cyberpass.net/~gorkab/vmfaq.htm>. VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug.
--- a/src/Makefile.in.in Mon Aug 13 09:49:11 2007 +0200 +++ b/src/Makefile.in.in Mon Aug 13 09:50:14 2007 +0200 @@ -154,12 +154,6 @@ energize_objs = energize.o $(freecheck_objs) #endif /* ENERGIZE */ -#ifdef CLASH_DETECTION -LOCK_OBJ = filelock.o -#else -LOCK_OBJ = -#endif /* CLASH_DETECTION */ - ## lastfile must follow all files whose initialized data areas should ## be dumped as pure by dump-emacs.
--- a/src/abbrev.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/abbrev.c Mon Aug 13 09:50:14 2007 +0200 @@ -273,7 +273,7 @@ struct Lisp_Symbol *abbrev_symbol; struct Lisp_String *abbrev_string; Lisp_Object expansion, count, hook; - Charcount abbrev_length, idx; + Charcount abbrev_length; int lccount, uccount; run_hook (Qpre_abbrev_expand_hook);
--- a/src/alloc.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/alloc.c Mon Aug 13 09:50:14 2007 +0200 @@ -2622,8 +2622,6 @@ if (pure_lossage) { - CONST long report_round = 5000; - message ("\n****\tPure Lisp storage exhausted!\n" "\tPurespace usage: %ld of %ld\n" "****",
--- a/src/buffer.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/buffer.c Mon Aug 13 09:50:14 2007 +0200 @@ -962,7 +962,6 @@ (flag, buffer)) { /* This function can GC */ - Lisp_Object fn; struct buffer *buf = decode_buffer (buffer, 0); #ifdef ENERGIZE @@ -975,7 +974,7 @@ /* If buffer becoming modified, lock the file. If buffer becoming unmodified, unlock the file. */ - fn = buf->file_truename; + Lisp_Object fn = buf->file_truename; if (!NILP (fn)) { int already = BUF_SAVE_MODIFF (buf) < BUF_MODIFF (buf);
--- a/src/config.h.in Mon Aug 13 09:49:11 2007 +0200 +++ b/src/config.h.in Mon Aug 13 09:50:14 2007 +0200 @@ -271,6 +271,8 @@ #undef HAVE_TERMIOS #undef HAVE_TERMIO +#undef NO_TERMIO +#undef SIGNALS_VIA_CHARACTERS #undef NLIST_STRUCT
--- a/src/data.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/data.c Mon Aug 13 09:50:14 2007 +0200 @@ -89,26 +89,6 @@ && (debug_issue_ebola_notices >= 2 || XREALINT (obj1) == XREALINT (obj2))) { -#if 0 -/*#ifndef LRECORD_SYMBOL*/ - struct backtrace *bt = backtrace_list; - char *p; - /* Continuing the joke by printing `Ebola warning!!!' confuses */ - /* too many people. The message must be printed because Emacs used */ - /* to work differently for two decades. */ - /* temporary hack that will probably be around too long -slb */ - if (XTYPE(*bt->function) == Lisp_Symbol) - { - p = (XSYMBOL(*bt->function)->name)->_data; - if (!strcmp(p, "byte-compile-constant") || - !strcmp(p, "byte-compile-constants-vector") || - !strcmp(p, "byte-optimize-minus") || - !strcmp(p, "byte-optimize-plus") || - !strcmp(p, "byte-decompile-bytecode-1") || - !strcmp(p, "byte-optimize-logmumble") || - !strcmp(p, "byte-compile-push-constant")) goto sc; - } -#endif stderr_out("Comparison between integer and character is constant nil ("); Fprinc (obj1, Qexternal_debugging_output); stderr_out (" and "); @@ -116,7 +96,6 @@ stderr_out (")\n"); debug_short_backtrace (debug_ebola_backtrace_length); } -sc: return EQ (obj1, obj2); }
--- a/src/dgif_lib.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/dgif_lib.c Mon Aug 13 09:50:14 2007 +0200 @@ -922,7 +922,6 @@ int ImageSize; GifRecordType RecordType; SavedImage *sp; - ExtensionBlock *ep; GifByteType *ExtData; int ExtCode; @@ -961,7 +960,8 @@ return(GIF_ERROR); else { - ep = &sp->ExtensionBlocks[sp->ExtensionBlockCount++]; + ExtensionBlock *ep = + &sp->ExtensionBlocks[sp->ExtensionBlockCount++]; ep->ByteCount = ExtData[0]; ep->Bytes = (GifByteType *)xmalloc(ep->ByteCount * sizeof(GifByteType)); @@ -973,7 +973,8 @@ return(GIF_ERROR); else { - ep = &sp->ExtensionBlocks[sp->ExtensionBlockCount++]; + ExtensionBlock *ep = + &sp->ExtensionBlocks[sp->ExtensionBlockCount++]; ep->ByteCount = ExtData[0]; ep->Bytes = (GifByteType *)xmalloc(ep->ByteCount * sizeof(GifByteType));
--- a/src/emacs.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/emacs.c Mon Aug 13 09:50:14 2007 +0200 @@ -84,6 +84,10 @@ /* Variable whose value is string giving configuration built for. */ Lisp_Object Vsystem_configuration; +/* Variable whose value is string containing the configuration options + XEmacs was built with. */ +Lisp_Object Vsystem_configuration_options; + /* Version numbers and strings */ Lisp_Object Vemacs_major_version; Lisp_Object Vemacs_minor_version; @@ -1254,8 +1258,6 @@ /* Calls Fmake_range_table(). */ complex_vars_of_search (); - /* Calls Fmake_hashtable(). */ - complex_vars_of_event_stream (); /* Calls make_lisp_hashtable(). */ complex_vars_of_extents (); @@ -1275,8 +1277,8 @@ could require that the charsets be initialized. */ complex_vars_of_glyphs (); - /* This relies on the glyphs just created in the previous function, - and calls Fadd_spec_to_specifier(), which relies on various + /* These rely on the glyphs just created in the previous function, + and call Fadd_spec_to_specifier(), which relies on various variables initialized above. */ #ifdef HAVE_X_WINDOWS complex_vars_of_glyphs_x (); @@ -1341,6 +1343,8 @@ initialized in the vars_of_*() section) and possibly other stuff. */ complex_vars_of_keymap (); + /* Calls Fmake_hashtable() and creates a keymap */ + complex_vars_of_event_stream (); if (always_gc) /* purification debugging hack */ garbage_collect_1 (); @@ -2299,6 +2303,15 @@ */ ); Vsystem_configuration = Fpurecopy (build_string (EMACS_CONFIGURATION)); +#ifndef EMACS_CONFIG_OPTIONS +# define EMACS_CONFIG_OPTIONS "UNKNOWN" +#endif + DEFVAR_LISP ("system-configuration-options", &Vsystem_configuration_options /* +String containing the configuration options XEmacs was built with. +*/ ); + Vsystem_configuration_options = Fpurecopy (build_string + (EMACS_CONFIG_OPTIONS)); + DEFVAR_LISP ("emacs-major-version", &Vemacs_major_version /* Major version number of this version of Emacs, as an integer. Warning: this variable did not exist in Emacs versions earlier than:
--- a/src/emacsfns.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/emacsfns.h Mon Aug 13 09:50:14 2007 +0200 @@ -1445,6 +1445,7 @@ extern Lisp_Object Qmouse_event_p; /* events.c */ extern Lisp_Object Q_active, Q_suffix, Q_keys, Q_style, Q_selected; extern Lisp_Object Q_filter, Q_config, Q_included; +extern Lisp_Object Q_accelerator; extern Lisp_Object Qtoggle, Qradio; extern Lisp_Object Vmenubar_configuration; extern int menubar_show_keybindings;
--- a/src/event-Xt.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/event-Xt.c Mon Aug 13 09:50:14 2007 +0200 @@ -1821,7 +1821,7 @@ { struct frame *f; Widget w; - stderr_out (" window: 0x%x", window); + stderr_out (" window: 0x%lx", (unsigned long) window); w = XtWindowToWidget (display, window); if (w) stderr_out (" %s", w->core.widget_class->core_class.class_name); @@ -1899,7 +1899,6 @@ case KeyPress: { - Lisp_Object keysym; XKeyEvent *ev = &event->xkey; unsigned int state = ev->state;
--- a/src/event-stream.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/event-stream.c Mon Aug 13 09:50:14 2007 +0200 @@ -38,6 +38,14 @@ #include <config.h> #include "lisp.h" +#ifdef HAVE_X_WINDOWS +#include "console-x.h" /* for menu accelerators ... */ +#include "gui-x.h" +#include "../lwlib/lwlib.h" +#else +#define lw_menu_active 0 +#endif + #include "buffer.h" #include "commands.h" #include "device.h" @@ -193,6 +201,33 @@ int recent_keys_ring_size; int recent_keys_ring_index; +/* prefix key(s) that must match in order to activate menu. + This is ugly. fix me. + */ +Lisp_Object Vmenu_accelerator_prefix; + +/* list of modifier keys to match accelerator for top level menus */ +Lisp_Object Vmenu_accelerator_modifiers; + +/* whether menu accelerators are enabled */ +Lisp_Object Vmenu_accelerator_enabled; + +/* keymap for auxillary menu accelerator functions */ +Lisp_Object Vmenu_accelerator_map; + +Lisp_Object Qmenu_force; +Lisp_Object Qmenu_fallback; +Lisp_Object Qmenu_quit; +Lisp_Object Qmenu_up; +Lisp_Object Qmenu_down; +Lisp_Object Qmenu_left; +Lisp_Object Qmenu_right; +Lisp_Object Qmenu_select; +Lisp_Object Qmenu_escape; + +/* this is in keymap.c */ +extern Lisp_Object Fmake_keymap (Lisp_Object name); + #ifdef DEBUG_XEMACS int debug_emacs_events; #endif @@ -652,7 +687,8 @@ return; if (minibuf_level == 0 - && echo_keystrokes > 0) + && echo_keystrokes > 0 + && !lw_menu_active) { if (!no_snooze) { @@ -2163,6 +2199,8 @@ goto RETURN; case button_release_event: case misc_user_event: + /* don't echo menu accelerator keys */ + reset_key_echo (command_builder, 1); goto EXECUTE_KEY; case button_press_event: /* key or mouse input can trigger prompting */ goto STORE_AND_EXECUTE_KEY; @@ -2533,7 +2571,6 @@ case pointer_motion_event: case magic_event: { - EXECUTE_INTERNAL: execute_internal_event (event); break; } @@ -2603,7 +2640,6 @@ case pointer_motion_event: case magic_event: { - EXECUTE_INTERNAL: execute_internal_event (event); break; } @@ -2745,7 +2781,6 @@ happened above. */ default: { - EXECUTE_INTERNAL: execute_internal_event (event); break; } @@ -2986,6 +3021,503 @@ return event_binding (event0, 1); } +#ifdef HAVE_X_WINDOWS +static void +menu_move_up (void) +{ + widget_value *current, *prev; + widget_value *entries; + + current = lw_get_entries (False); + entries = lw_get_entries (True); + prev = NULL; + if (current != entries) + { + while (entries != current) + { + if (entries->name /*&& entries->enabled*/) prev = entries; + entries = entries->next; + assert (entries); + } + } + + if (!prev) + /* move to last item */ + { + while (entries->next) + { + if (entries->name /*&& entries->enabled*/) prev = entries; + entries = entries->next; + } + if (prev) + { + if (entries->name /*&& entries->enabled*/) + prev = entries; + } + else + { + /* no selectable items in this menu, pop up to previous level */ + lw_pop_menu (); + return; + } + } + lw_set_item (prev); +} + +static void +menu_move_down (void) +{ + widget_value *current; + widget_value *new; + + current = lw_get_entries (False); + new = current; + + while (new->next) + { + new = new->next; + if (new->name /*&& new->enabled*/) break; + } + + if (new==current||!(new->name/*||new->enabled*/)) + { + new = lw_get_entries (True); + while (new!=current) + { + if (new->name /*&& new->enabled*/) break; + new = new->next; + } + if (new==current&&!(new->name /*|| new->enabled*/)) + { + lw_pop_menu (); + return; + } + } + + lw_set_item (new); +} + +static void +menu_move_left (void) +{ + int level = lw_menu_level (); + int l = level; + widget_value *current; + + while (level >= 3) + { + --level; + lw_pop_menu (); + } + menu_move_up (); + current = lw_get_entries (False); + if (l > 2 && current->contents) + lw_push_menu (current->contents); +} + +static void +menu_move_right (void) +{ + int level = lw_menu_level (); + int l = level; + widget_value *current; + + while (level >= 3) + { + --level; + lw_pop_menu (); + } + menu_move_down (); + current = lw_get_entries (False); + if (l > 2 && current->contents) + lw_push_menu (current->contents); +} + +static void +menu_select_item (widget_value *val) +{ + if (val == NULL) + val = lw_get_entries (False); + + /* is match a submenu? */ + + if (val->contents) + { + /* enter the submenu */ + + lw_set_item (val); + lw_push_menu (val->contents); + } + else + { + /* Execute the menu entry by calling the menu's `select' + callback function + */ + lw_kill_menus (val); + } +} + +static Lisp_Object +command_builder_operate_menu_accelerator (struct command_builder *builder) +{ + /* this function can GC */ + + struct console *con = XCONSOLE (Vselected_console); + Lisp_Object evee = builder->most_current_event; + Lisp_Object binding; + widget_value *entries; + + extern int lw_menu_accelerate; /* lwlib.c */ + +#if 0 + { + int i; + Lisp_Object t; + char buf[50]; + + t = builder->current_events; + i = 0; + while (!NILP (t)) + { + i++; + sprintf(buf,"OPERATE (%d): ",i); + write_c_string (buf,Qexternal_debugging_output); + print_internal (t, Qexternal_debugging_output, 1); + write_c_string ("\n", Qexternal_debugging_output); + t = XEVENT_NEXT (t); + } + } +#endif + + /* menu accelerator keys don't go into keyboard macros */ + if (!NILP (con->defining_kbd_macro) && NILP (Vexecuting_macro)) + con->kbd_macro_ptr = con->kbd_macro_end; + + /* don't echo menu accelerator keys */ + /*reset_key_echo (builder, 1);*/ + + if (!lw_menu_accelerate) + { + /* `convert' mouse display to keyboard display + by entering the open submenu + */ + entries = lw_get_entries (False); + if (entries->contents) + { + lw_push_menu (entries->contents); + lw_display_menu (CurrentTime); + } + } + + /* compare event to the current menu accelerators */ + + entries=lw_get_entries (True); + + while (entries) + { + Lisp_Object accel; + VOID_TO_LISP (accel, entries->accel); + if (entries->name && !NILP (accel)) + { + if (event_matches_key_specifier_p (XEVENT (evee), accel)) + { + /* a match! */ + + menu_select_item (entries); + + if (lw_menu_active) lw_display_menu (CurrentTime); + + reset_this_command_keys (Vselected_console, 1); + /*reset_command_builder_event_chain (builder);*/ + return Vmenu_accelerator_map; + } + } + entries = entries->next; + } + + /* try to look up event in menu-accelerator-map */ + + binding = event_binding_in (evee, Vmenu_accelerator_map, 1); + + if (NILP (binding)) + { + /* beep at user for undefined key */ + return Qnil; + } + else + { + if (EQ (binding, Qmenu_quit)) + { + /* turn off menus and set quit flag */ + lw_kill_menus (NULL); + Vquit_flag = Qt; + } + else if (EQ (binding, Qmenu_up)) + { + int level = lw_menu_level (); + if (level > 2) + menu_move_up (); + } + else if (EQ (binding, Qmenu_down)) + { + int level = lw_menu_level (); + if (level > 2) + menu_move_down (); + else + menu_select_item (NULL); + } + else if (EQ (binding, Qmenu_left)) + { + int level = lw_menu_level (); + if (level > 3) + { + lw_pop_menu (); + lw_display_menu (CurrentTime); + } + else + menu_move_left (); + } + else if (EQ (binding, Qmenu_right)) + { + int level = lw_menu_level (); + if (level > 2 && + lw_get_entries (False)->contents) + { + widget_value *current = lw_get_entries (False); + if (current->contents) + menu_select_item (NULL); + } + else + menu_move_right (); + } + else if (EQ (binding, Qmenu_select)) + menu_select_item (NULL); + else if (EQ (binding, Qmenu_escape)) + { + int level = lw_menu_level (); + + if (level > 2) + { + lw_pop_menu (); + lw_display_menu (CurrentTime); + } + else + { + /* turn off menus quietly */ + lw_kill_menus (NULL); + } + } + else if (KEYMAPP (binding)) + { + /* prefix key */ + reset_this_command_keys (Vselected_console, 1); + /*reset_command_builder_event_chain (builder);*/ + return binding; + } + else + { + /* turn off menus and execute binding */ + lw_kill_menus (NULL); + reset_this_command_keys (Vselected_console, 1); + /*reset_command_builder_event_chain (builder);*/ + return binding; + } + } + + if (lw_menu_active) lw_display_menu (CurrentTime); + + reset_this_command_keys (Vselected_console, 1); + /*reset_command_builder_event_chain (builder);*/ + + return Vmenu_accelerator_map; +} + +static Lisp_Object +menu_accelerator_junk_on_error (Lisp_Object errordata, Lisp_Object ignored) +{ + Vmenu_accelerator_prefix = Qnil; + Vmenu_accelerator_modifiers = Qnil; + Vmenu_accelerator_enabled = Qnil; + if (!NILP (errordata)) + { + Lisp_Object args[2]; + + args[0] = build_string ("Error in menu accelerators (setting to nil)"); + /* #### This should call + (with-output-to-string (display-error errordata)) + but that stuff is all in Lisp currently. */ + args[1] = errordata; + warn_when_safe_lispobj + (Qerror, Qwarning, + emacs_doprnt_string_lisp ((CONST Bufbyte *) "%s: %s", + Qnil, -1, 2, args)); + } + + return Qnil; +} + +static Lisp_Object +menu_accelerator_safe_compare (Lisp_Object event0) +{ + if (CONSP (Vmenu_accelerator_prefix)) + { + Lisp_Object t; + t=Vmenu_accelerator_prefix; + while (!NILP (t) + && !NILP (event0) + && event_matches_key_specifier_p (XEVENT (event0), Fcar (t))) + { + t = Fcdr (t); + event0 = XEVENT_NEXT (event0); + } + if (!NILP (t)) + return Qnil; + } + else if (NILP (event0)) + return Qnil; + else if (event_matches_key_specifier_p (XEVENT (event0), Vmenu_accelerator_prefix)) + event0 = XEVENT_NEXT (event0); + else + return Qnil; + return event0; +} + +static Lisp_Object +menu_accelerator_safe_mod_compare (Lisp_Object cons) +{ + return (event_matches_key_specifier_p (XEVENT (XCAR (cons)), XCDR (cons)) + ? Qt + : Qnil); +} + +static Lisp_Object +command_builder_find_menu_accelerator (struct command_builder *builder) +{ + /* this function can GC */ + Lisp_Object event0 = builder->current_events; + struct console *con = XCONSOLE (Vselected_console); + struct frame *f = XFRAME (CONSOLE_SELECTED_FRAME (con)); + Widget menubar_widget; + + /* compare entries in event0 against the menu prefix */ + + if ((!CONSOLE_X_P (XCONSOLE (builder->console))) || NILP (event0) || + XEVENT (event0)->event_type != key_press_event) + return Qnil; + + if (!NILP (Vmenu_accelerator_prefix)) + { + event0 = condition_case_1 (Qerror, + menu_accelerator_safe_compare, + event0, + menu_accelerator_junk_on_error, + Qnil); + } + + if (NILP (event0)) + return Qnil; + + menubar_widget = FRAME_X_MENUBAR_WIDGET (f); + if (menubar_widget + && CONSP (Vmenu_accelerator_modifiers)) + { + Lisp_Object fake; + Lisp_Object last; + struct gcpro gcpro1; + Lisp_Object matchp; + + widget_value *val; + LWLIB_ID id = XPOPUP_DATA (f->menubar_data)->id; + + val = lw_get_all_values (id); + if (val) + { + val = val->contents; + + fake = Fcopy_sequence (Vmenu_accelerator_modifiers); + last = fake; + + while (!NILP (Fcdr (last))) + last = Fcdr (last); + + Fsetcdr (last, Fcons (Qnil, Qnil)); + last = Fcdr (last); + } + + fake = Fcons (Qnil, fake); + + GCPRO1 (fake); + + while (val) + { + Lisp_Object accel; + VOID_TO_LISP (accel, val->accel); + if (val->name && !NILP (accel)) + { + Fsetcar (last, accel); + Fsetcar (fake, event0); + matchp = condition_case_1 (Qerror, + menu_accelerator_safe_mod_compare, + fake, + menu_accelerator_junk_on_error, + Qnil); + if (!NILP (matchp)) + { + /* we found one! */ + + lw_set_menu (menubar_widget, val); + /* yah - yet another hack. + pretend emacs timestamp is the same as an X timestamp, + which for the moment it is. (read events.h) + */ + lw_map_menu (XEVENT (event0)->timestamp); + + if (val->contents) + lw_push_menu (val->contents); + + lw_display_menu (CurrentTime); + + /* menu accelerator keys don't go into keyboard macros */ + if (!NILP (con->defining_kbd_macro) && NILP (Vexecuting_macro)) + con->kbd_macro_ptr = con->kbd_macro_end; + + /* don't echo menu accelerator keys */ + /*reset_key_echo (builder, 1);*/ + reset_this_command_keys (Vselected_console, 1); + UNGCPRO; + + return Vmenu_accelerator_map; + } + } + + val = val->next; + } + + UNGCPRO; + } + return Qnil; +} + +void +event_menu_accelerate () +{ + struct console *con = XCONSOLE (Vselected_console); + struct frame *f = XFRAME (CONSOLE_SELECTED_FRAME (con)); + LWLIB_ID id = XPOPUP_DATA (f->menubar_data)->id; + widget_value *val = lw_get_all_values (id); + + val = val->contents; + lw_set_menu (FRAME_X_MENUBAR_WIDGET (f), val); + lw_map_menu (CurrentTime); + + lw_display_menu (CurrentTime); + + /* menu accelerator keys don't go into keyboard macros */ + if (!NILP (con->defining_kbd_macro) && NILP (Vexecuting_macro)) + con->kbd_macro_ptr = con->kbd_macro_end; +} +#endif /* HAVE_X_WINDOWS */ + /* See if we can do function-key-map or key-translation-map translation on the current events in the command builder. If so, do this, and return the resulting binding, if any. */ @@ -3109,10 +3641,31 @@ return list2 (fn, arg); } - else if (XEVENT_TYPE (evee) == misc_user_event) + + if (XEVENT_TYPE (evee) == misc_user_event) return Qnil; - result = command_builder_find_leaf_1 (builder); + /* if we're currently in a menu accelerator, check there for further events */ +#ifdef HAVE_X_WINDOWS + if (lw_menu_active) + { + result = command_builder_operate_menu_accelerator (builder); + return result; + } + else + { + result=Qnil; + if (EQ (Vmenu_accelerator_enabled, Qmenu_force)) + result = command_builder_find_menu_accelerator (builder); + if (NILP (result)) +#endif + result = command_builder_find_leaf_1 (builder); +#ifdef HAVE_X_WINDOWS + if (NILP (result) + && EQ (Vmenu_accelerator_enabled, Qmenu_fallback)) + result = command_builder_find_menu_accelerator (builder); + } +#endif /* Check to see if we have a potential function-key-map match. */ if (NILP (result)) @@ -3588,23 +4141,43 @@ if (KEYMAPP (leaf)) { - Lisp_Object prompt = Fkeymap_prompt (leaf, Qt); - if (STRINGP (prompt)) + if (!lw_menu_active) { - /* Append keymap prompt to key echo buffer */ - int buf_index = command_builder->echo_buf_index; - Bytecount len = XSTRING_LENGTH (prompt); - - if (len + buf_index + 1 <= command_builder->echo_buf_length) + Lisp_Object prompt = Fkeymap_prompt (leaf, Qt); + if (STRINGP (prompt)) { - Bufbyte *echo = command_builder->echo_buf + buf_index; - memcpy (echo, XSTRING_DATA (prompt), len); - echo[len] = 0; + /* Append keymap prompt to key echo buffer */ + int buf_index = command_builder->echo_buf_index; + Bytecount len = XSTRING_LENGTH (prompt); + + if (len + buf_index + 1 <= command_builder->echo_buf_length) + { + Bufbyte *echo = command_builder->echo_buf + buf_index; + memcpy (echo, XSTRING_DATA (prompt), len); + echo[len] = 0; + } + maybe_echo_keys (command_builder, 1); } - maybe_echo_keys (command_builder, 1); + else + maybe_echo_keys (command_builder, 0); } - else - maybe_echo_keys (command_builder, 0); + else if (!NILP (Vquit_flag)) { + Lisp_Object event = Fmake_event(); + struct Lisp_Event *e = XEVENT (event); + struct console *con; + int ch; + + /* if quit happened during menu acceleration, pretend we read it */ + con = XCONSOLE (Fselected_console ()); + + ch = CONSOLE_QUIT_CHAR (con); + + character_to_event (ch, e, con, 1); + e->channel = make_console (con); + + enqueue_command_event (event); + Vquit_flag = Qnil; + } } else if (!NILP (leaf)) { @@ -4029,6 +4602,9 @@ /* Huh? */ Vthis_command = Qnil; + /* clear the echo area */ + reset_key_echo (command_builder, 1); + command_builder->self_insert_countdown = 0; if (NILP (XCONSOLE (console)->prefix_arg) && NILP (Vexecuting_macro) @@ -4298,6 +4874,17 @@ "retry-undefined-key-binding-unshifted"); defsymbol (&Qauto_show_make_point_visible, "auto-show-make-point-visible"); + + defsymbol (&Qmenu_force, "menu-force"); + defsymbol (&Qmenu_fallback, "menu-fallback"); + + defsymbol (&Qmenu_quit, "menu-quit"); + defsymbol (&Qmenu_up, "menu-up"); + defsymbol (&Qmenu_down, "menu-down"); + defsymbol (&Qmenu_left, "menu-left"); + defsymbol (&Qmenu_right, "menu-right"); + defsymbol (&Qmenu_select, "menu-select"); + defsymbol (&Qmenu_escape, "menu-escape"); } void @@ -4616,12 +5203,82 @@ */ ); debug_emacs_events = 0; #endif + + DEFVAR_LISP("menu-accelerator-prefix", &Vmenu_accelerator_prefix /* +Prefix key(s) that must be typed before menu accelerators will be activated. +Set this to a value acceptable by define-key. +*/ ); + Vmenu_accelerator_prefix = Qnil; + + DEFVAR_LISP ("menu-accelerator-modifiers", &Vmenu_accelerator_modifiers /* +Modifier keys which must be pressed to get to the top level menu accelerators. +This is a list of modifier key symbols. All modifier keys must be held down +while a valid menu accelerator key is pressed in order for the top level +menu to become active. + +See also menu-accelerator-enabled and menu-accelerator-prefix. +*/ ); + Vmenu_accelerator_modifiers = list1 (Qmeta); + + DEFVAR_LISP ("menu-accelerator-enabled", &Vmenu_accelerator_enabled /* +Whether menu accelerator keys can cause the menubar to become active. +If 'menu-force or 'menu-fallback, then menu accelerator keys can +be used to activate the top level menu. Once the menubar becomes active, the +accelerator keys can be used regardless of the value of this variable. + +menu-force is used to indicate that the menu accelerator key takes +precedence over bindings in the current keymap(s). menu-fallback means +that bindings in the current keymap take precedence over menu accelerator keys. +Thus a top level menu with an accelerator of \"T\" would be activated on a +keypress of Meta-t if menu-accelerator-enabled is menu-force. +However, if menu-accelerator-enabled is menu-fallback, then +Meta-t will not activate the menubar and will instead run the function +transpose-words, to which it is normally bound. + +See also menu-accelerator-modifiers and menu-accelerator-prefix. +*/ ); + Vmenu_accelerator_enabled = Qnil; } void complex_vars_of_event_stream (void) { Vkeyboard_translate_table = Fmake_hashtable (make_int (100), Qnil); + + DEFVAR_LISP ("menu-accelerator-map", &Vmenu_accelerator_map /* +Keymap for use when the menubar is active. +The actions menu-quit, menu-up, menu-down, menu-left, menu-right, +menu-select and menu-escape can be mapped to keys in this map. + +menu-quit Immediately deactivate the menubar and any open submenus without + selecting an item. +menu-up Move the menu cursor up one row in the current menu. If the + move extends past the top of the menu, wrap around to the bottom. +menu-down Move the menu cursor down one row in the current menu. If the + move extends past the bottom of the menu, wrap around to the top. + If executed while the cursor is in the top level menu, move down + into the selected menu. +menu-left Move the cursor from a submenu into the parent menu. If executed + while the cursor is in the top level menu, move the cursor to the + left. If the move extends past the left edge of the menu, wrap + around to the right edge. +menu-right Move the cursor into a submenu. If the cursor is located in the + top level menu or is not currently on a submenu heading, then move + the cursor to the next top level menu entry. If the move extends + past the right edge of the menu, wrap around to the left edge. +menu-select Activate the item under the cursor. If the cursor is located on + a submenu heading, then move the cursor into the submenu. +menu-escape Pop up to the next level of menus. Moves from a submenu into its + parent menu. From the top level menu, this deactivates the + menubar. + +This keymap can also contain normal key-command bindings, in which case the +menubar is deactivated and the corresponding command is executed. + +The action bindings used by the menu accelerator code are designed to mimic +the actions of menu traversal keys in a commonly used PC operating system. +*/ ); + Vmenu_accelerator_map = Fmake_keymap(Qnil); } void
--- a/src/events.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/events.h Mon Aug 13 09:50:14 2007 +0200 @@ -515,6 +515,8 @@ struct console *c, int fd); #endif /* HAVE_UNIXOID_EVENT_LOOP */ +void event_menu_accelerate (void); + extern int emacs_is_blocking; extern Lisp_Object Vcontrolling_terminal;
--- a/src/extents.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/extents.c Mon Aug 13 09:50:14 2007 +0200 @@ -2987,7 +2987,7 @@ write_c_string (" ", printcharfun); } - sprintf (buf, "0x%lx", (long) ext); + sprintf (bp, "0x%p", ext); write_c_string (buf, printcharfun); } @@ -5723,15 +5723,6 @@ }; static int -copy_string_extents_1_mapper (EXTENT extent, void *arg) -{ - struct copy_string_extents_1_arg *closure = - (struct copy_string_extents_1_arg *) arg; - - return 0; -} - -static int copy_string_extents_mapper (EXTENT extent, void *arg) { struct copy_string_extents_arg *closure =
--- a/src/filelock.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/filelock.c Mon Aug 13 09:50:14 2007 +0200 @@ -31,8 +31,9 @@ #include "syspwd.h" #include "syssignal.h" /* for kill */ - -#ifdef CLASH_DETECTION +#ifndef CLASH_DETECTION +#error CLASH_DETECTION is not defined?? +#endif /* FSFmacs uses char *lock_dir and char *superlock_file instead of the Lisp variables we use. */ @@ -544,5 +545,3 @@ #endif /* All the rest done dynamically by startup.el */ } - -#endif /* CLASH_DETECTION */
--- a/src/fns.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/fns.c Mon Aug 13 09:50:14 2007 +0200 @@ -3452,7 +3452,7 @@ Vautoload_queue = Qt; call4 (Qload, NILP (file_name) ? Fsymbol_name (feature) : file_name, - Qnil, Qt, Qnil); + Qt, Qt, Qnil); tem = Fmemq (feature, Vfeatures); if (NILP (tem))
--- a/src/frame-tty.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/frame-tty.c Mon Aug 13 09:50:14 2007 +0200 @@ -41,9 +41,6 @@ /* Default properties to use when creating frames. */ Lisp_Object Vdefault_tty_frame_plist; -/* The count of frame number. */ -static int tty_frame_count; - static void tty_raise_frame (struct frame *); @@ -183,8 +180,6 @@ static void tty_raise_frame (struct frame *f) { - struct device *d = XDEVICE (FRAME_DEVICE (f)); - tty_raise_frame_no_select (f); tty_schedule_frame_select (f); }
--- a/src/frame-x.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/frame-x.c Mon Aug 13 09:50:14 2007 +0200 @@ -2306,6 +2306,7 @@ static int x_frame_visible_p (struct frame *f) { +#if 0 Display *display = DEVICE_X_DISPLAY (XDEVICE (f->device)); XWindowAttributes xwa; int result; @@ -2329,7 +2330,6 @@ use async visibility like in standard Emacs. */ -#if 0 if (!XGetWindowAttributes (display, XtWindow (FRAME_X_SHELL_WIDGET (f)), &xwa)) @@ -2341,7 +2341,7 @@ f->visible = result; return result; -#endif +#endif /* 0 */ return f->visible; }
--- a/src/gui-x.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/gui-x.c Mon Aug 13 09:50:14 2007 +0200 @@ -86,6 +86,11 @@ (cl->markobj) (markee); } + if (val->accel) + { + VOID_TO_LISP (markee, val->accel); + (cl->markobj) (markee); + } return 0; } @@ -238,6 +243,10 @@ struct device *d = get_device_from_display (XtDisplay (widget)); struct frame *f = x_any_widget_or_parent_to_frame (d, widget); + /* set in lwlib to the time stamp associated with the most recent menu + operation */ + extern Time x_focus_timestamp_really_sucks_fix_me_better; + if (!f) return; if (((EMACS_INT) client_data) == 0) @@ -284,7 +293,7 @@ /* This is the timestamp used for asserting focus so we need to get an up-to-date value event if no events has been dispatched to emacs */ - DEVICE_X_MOUSE_TIMESTAMP (d) = DEVICE_X_GLOBAL_MOUSE_TIMESTAMP (d); + DEVICE_X_MOUSE_TIMESTAMP (d) = x_focus_timestamp_really_sucks_fix_me_better; signal_special_Xt_user_event (frame, fn, arg); } @@ -348,6 +357,24 @@ return NULL; } +/* set menu accelerator key to first underlined character in menu name */ + +Lisp_Object +menu_name_to_accelerator (char *name) +{ + while (*name) { + if (*name=='%') { + ++name; + if (!(*name)) + return Qnil; + if (*name=='_'&&*(name+1)) + return make_char (tolower(*(name+1))); + } + ++name; + } + return Qnil; +} + /* This does the dirty work. gc_currently_forbidden is 1 when this is called. */ @@ -367,6 +394,7 @@ Lisp_Object keys = Qnil; Lisp_Object style = Qnil; Lisp_Object config_tag = Qnil; + Lisp_Object accel = Qnil; int length = XVECTOR_LENGTH (desc); Lisp_Object *contents = XVECTOR_DATA (desc); int plist_p; @@ -416,6 +444,14 @@ else if (EQ (key, Q_selected)) selected_p = val, selected_spec = 1; else if (EQ (key, Q_included)) include_p = val, included_spec = 1; else if (EQ (key, Q_config)) config_tag = val; + else if (EQ (key, Q_accelerator)) + { + if ( SYMBOLP (val) + || CHARP (val)) + accel = val; + else + signal_simple_error ("bad keyboard accelerator", val); + } else if (EQ (key, Q_filter)) signal_simple_error(":filter keyword not permitted on leaf nodes", desc); else @@ -435,6 +471,10 @@ CHECK_STRING (name); wv->name = (char *) XSTRING_DATA (name); + if (NILP (accel)) + accel = menu_name_to_accelerator (wv->name); + wv->accel = LISP_TO_VOID (accel); + if (!NILP (suffix)) { CONST char *const_bogosity;
--- a/src/gui-x.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/gui-x.h Mon Aug 13 09:50:14 2007 +0200 @@ -75,6 +75,7 @@ XtPointer client_data); int button_item_to_widget_value (Lisp_Object desc, widget_value *wv, int allow_text_field_p, int no_keys_p); +Lisp_Object menu_name_to_accelerator (char *name); Boolean separator_string_p (CONST char *s); char *menu_separator_style (CONST char *s); Lisp_Object widget_value_unwind (Lisp_Object closure);
--- a/src/gui.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/gui.c Mon Aug 13 09:50:14 2007 +0200 @@ -27,6 +27,7 @@ Lisp_Object Q_active, Q_suffix, Q_keys, Q_style, Q_selected; Lisp_Object Q_filter, Q_config, Q_included; +Lisp_Object Q_accelerator; Lisp_Object Qtoggle, Qradio; void @@ -40,6 +41,7 @@ defkeyword (&Q_filter, ":filter"); defkeyword (&Q_config, ":config"); defkeyword (&Q_included, ":included"); + defkeyword (&Q_accelerator, ":accelerator"); defsymbol (&Qtoggle, "toggle"); defsymbol (&Qradio, "radio");
--- a/src/input-method-motif.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/input-method-motif.c Mon Aug 13 09:50:14 2007 +0200 @@ -32,10 +32,6 @@ #include "EmacsFrame.h" #include <Xm/Xm.h> -#ifdef __FreeBSD__ -#include <osreldate.h> -#endif - #ifndef XIM_MOTIF #error XIM_MOTIF is not defined?? #endif @@ -46,15 +42,7 @@ char *locale; XtSetLanguageProc (NULL, (XtLanguageProc) NULL, NULL); -#ifdef __FreeBSD_version -# if __FreeBSD_version >= 199701 - if ((locale = setlocale (LC_CTYPE, "")) == NULL) -# else if ((locale = setlocale (LC_ALL, "")) == NULL) -# endif -#else - if ((locale = setlocale (LC_ALL, "")) == NULL) -#endif { stderr_out ("Can't set locale.\n"); stderr_out ("Using C locale instead.\n");
--- a/src/input-method-xfs.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/input-method-xfs.c Mon Aug 13 09:50:14 2007 +0200 @@ -36,10 +36,6 @@ #include "EmacsFrame.h" #include "events.h" -#ifdef __FreeBSD__ -#include <osreldate.h> -#endif - #ifdef USE_XFONTSET void Initialize_Locale (void) @@ -47,15 +43,7 @@ char *locale; XtSetLanguageProc (NULL, (XtLanguageProc) NULL, NULL); -#ifdef __FreeBSD_version -# if __FreeBSD_version >= 199701 /* waiting FreeBSD supports all locale */ - if ((locale = setlocale(LC_CTYPE, "")) == NULL) -# else if ((locale = setlocale (LC_ALL, "")) == NULL) -# endif -#else - if ((locale = setlocale (LC_ALL, "")) == NULL) -#endif { stderr_out ("Can't set locale.\n"); stderr_out ("Using C locale instead.\n");
--- a/src/keymap.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/keymap.c Mon Aug 13 09:50:14 2007 +0200 @@ -2618,6 +2618,22 @@ accept_default)); } +/* like event_binding, but specify a keymap to search */ + +Lisp_Object +event_binding_in (Lisp_Object event0, Lisp_Object keymap, int accept_default) +{ + /* This function can GC */ + Lisp_Object maps[1]; + + if (!KEYMAPP (keymap)) + return Qnil; + + maps[0] = keymap; + return process_event_binding_result (lookup_events (event0, 1, maps, + accept_default)); +} + /* Attempts to find a function key mapping corresponding to the event-sequence whose head is event0 (sequence is threaded through event_next). The return value will be the same as for event_binding(). */
--- a/src/keymap.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/keymap.h Mon Aug 13 09:50:14 2007 +0200 @@ -34,6 +34,8 @@ extern Lisp_Object get_keymap (Lisp_Object object, int errorp, int autoload); extern Lisp_Object event_binding (Lisp_Object event0, int accept_default); +extern Lisp_Object event_binding_in (Lisp_Object event0, Lisp_Object keymap, + int accept_default); extern Lisp_Object munging_key_map_event_binding (Lisp_Object event0, enum munge_me_out_the_door munge);
--- a/src/m/alpha.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/m/alpha.h Mon Aug 13 09:50:14 2007 +0200 @@ -236,4 +236,4 @@ redefines the V___ values for termio. This means you cannot do ioctls using termios and termio in the same source file. */ -#define NO_TERMIO 1 +/* #define NO_TERMIO */ /* mrb */
--- a/src/m/delta.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/m/delta.h Mon Aug 13 09:50:14 2007 +0200 @@ -105,7 +105,7 @@ /* Machine specific stuff */ #define HAVE_PTYS #define SYSV_PTYS -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ #define BROKEN_CLOSEDIR /* builtin closedir is interruptible */ #define memmove(t,f,s) safe_bcopy(f,t,s) /* for overlapping copies */ #undef KERNEL_FILE
--- a/src/m/delta88k.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/m/delta88k.h Mon Aug 13 09:50:14 2007 +0200 @@ -127,7 +127,7 @@ #define LIBS_SYSTEM "-lbsd -lg" #endif /* USG5_4 */ -#define NO_TERMIO +/* #define NO_TERMIO */ /* mrb */ #define NO_SIOCTL_H
--- a/src/m/dpx2.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/m/dpx2.h Mon Aug 13 09:50:14 2007 +0200 @@ -182,7 +182,7 @@ #endif /* Send signals to subprocesses by "typing" signal chars at them. */ -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ /* This is to prevent memory clobbering on the DPX/2 200. */ #define LD_SWITCH_MACHINE "-N -T32"
--- a/src/m/ibmps2-aix.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/m/ibmps2-aix.h Mon Aug 13 09:50:14 2007 +0200 @@ -100,7 +100,7 @@ /* Send signals to subprocesses by "typing" special chars at them. */ -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ /* AIX utimes allegedly causes SIGSEGV. */ #undef HAVE_UTIMES /* override configuration decision */
--- a/src/m/tekxd88.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/m/tekxd88.h Mon Aug 13 09:50:14 2007 +0200 @@ -90,7 +90,7 @@ #undef LIB_X11_LIB /* Don't use shared libraries defined in usg5-3.h */ #undef LIBX11_SYSTEM -#define NO_TERMIO /* Don't include both termios.h and termio.h */ +/* #define NO_TERMIO */ /* mrb */ #define HAVE_PTYS /* XD88 SysV has PTYs. */ #define SYSV_PTYS /* Requires <termios.h> */
--- a/src/menubar-x.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/menubar-x.c Mon Aug 13 09:50:14 2007 +0200 @@ -145,10 +145,15 @@ { Lisp_Object key, val; Lisp_Object include_p = Qnil, hook_fn = Qnil, config_tag = Qnil; + Lisp_Object accel; int included_spec = 0; wv->type = CASCADE_TYPE; wv->enabled = 1; wv->name = (char *) XSTRING_DATA (LISP_GETTEXT (XCAR (desc))); + + accel = menu_name_to_accelerator (wv->name); + wv->accel = LISP_TO_VOID (accel); + desc = Fcdr (desc); while (key = Fcar (desc), KEYWORDP (key)) @@ -166,6 +171,14 @@ config_tag = val; else if (EQ (key, Q_filter)) hook_fn = val; + else if (EQ (key, Q_accelerator)) + { + if ( SYMBOLP (val) + || CHARP (val)) + wv->accel = LISP_TO_VOID (val); + else + signal_simple_error ("bad keyboard accelerator", val); + } else signal_simple_error ("unknown menu cascade keyword", cascade); } @@ -352,6 +365,10 @@ int any_changes = 0; int count; + /* set in lwlib to the time stamp associated with the most recent menu + operation */ + extern Time x_focus_timestamp_really_sucks_fix_me_better; + if (!f) f = x_any_window_to_frame (d, XtWindow (XtParent (widget))); if (!f) @@ -430,6 +447,9 @@ !XFRAME_MENUBAR_DATA (f)->menubar_contents_up_to_date) #endif set_frame_menubar (f, 1, 0); + DEVICE_X_MOUSE_TIMESTAMP (XDEVICE (FRAME_DEVICE (f))) = + DEVICE_X_GLOBAL_MOUSE_TIMESTAMP (XDEVICE (FRAME_DEVICE (f))) = + x_focus_timestamp_really_sucks_fix_me_better; UNGCPRO; } }
--- a/src/menubar.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/menubar.c Mon Aug 13 09:50:14 2007 +0200 @@ -45,6 +45,7 @@ static Lisp_Object Vcurrent_menubar; /* DO NOT ever reference this. Always go through Qcurrent_menubar. See below. */ + Lisp_Object Vblank_menubar; int popup_menu_titles; @@ -177,11 +178,22 @@ return Qnil; } +DEFUN ("accelerate-menu", Faccelerate_menu, 0, 0, "_", /* +Make the menubar active. Menu items can be selected using menu accelerators +or by actions defined in menu-accelerator-map. +*/ + ()) +{ + event_menu_accelerate (); + return Qnil; +} + void syms_of_menubar (void) { defsymbol (&Qcurrent_menubar, "current-menubar"); DEFSUBR (Fpopup_menu); + DEFSUBR (Faccelerate_menu); } void
--- a/src/process.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/process.c Mon Aug 13 09:50:14 2007 +0200 @@ -1509,7 +1509,6 @@ for (tail = network_stream_blocking_port_list; CONSP (tail); tail = XCDR (tail)) { Lisp_Object tail_port = XCAR (tail); - int block_port; if (STRINGP (tail_port)) { @@ -2085,10 +2084,10 @@ (process)) { process = get_process (process); - return Fcons(decoding_stream_coding_system - (XLSTREAM (XPROCESS (process)->instream)), - encoding_stream_coding_system - (XLSTREAM (XPROCESS (process)->outstream)) ); + return Fcons (decoding_stream_coding_system + (XLSTREAM (XPROCESS (process)->instream)), + encoding_stream_coding_system + (XLSTREAM (XPROCESS (process)->outstream))); } DEFUN ("set-process-input-coding-system", @@ -2154,11 +2153,10 @@ exec_sentinel (Lisp_Object proc, Lisp_Object reason) { /* This function can GC */ - Lisp_Object sentinel; + int speccount = specpdl_depth (); struct Lisp_Process *p = XPROCESS (proc); - int speccount = specpdl_depth (); - - sentinel = p->sentinel; + Lisp_Object sentinel = p->sentinel; + if (NILP (sentinel)) return; @@ -2172,8 +2170,7 @@ /* We used to bind inhibit-quit to t here, but call2_trapping_errors() does that for us. */ running_asynch_code = 1; - call2_trapping_errors ("Error in process sentinel", - sentinel, proc, reason); + call2_trapping_errors ("Error in process sentinel", sentinel, proc, reason); running_asynch_code = 0; restore_match_data (); unbind_to (speccount, Qnil); @@ -2670,19 +2667,20 @@ Return the status of PROCESS. This is a symbol, one of these: -run -- for a process that is running. -stop -- for a process stopped but continuable. -exit -- for a process that has exited. +run -- for a process that is running. +stop -- for a process stopped but continuable. +exit -- for a process that has exited. signal -- for a process that has got a fatal signal. -open -- for a network stream connection that is open. +open -- for a network stream connection that is open. closed -- for a network stream connection that is closed. -nil -- if arg is a process name and no such process exists. +nil -- if arg is a process name and no such process exists. + PROCESS may be a process, a buffer, the name of a process or buffer, or nil, indicating the current buffer's process. */ (proc)) { - Lisp_Object status; + Lisp_Object status_symbol; if (STRINGP (proc)) proc = Fget_process (proc); @@ -2690,17 +2688,17 @@ proc = get_process (proc); if (NILP (proc)) - return proc; - - status = XPROCESS (proc)->status_symbol; + return Qnil; + + status_symbol = XPROCESS (proc)->status_symbol; if (network_connection_p (proc)) { - if (EQ (status, Qrun)) - status = Qopen; - else if (EQ (status, Qexit)) - status = Qclosed; + if (EQ (status_symbol, Qrun)) + status_symbol = Qopen; + else if (EQ (status_symbol, Qexit)) + status_symbol = Qclosed; } - return status; + return status_symbol; } DEFUN ("process-exit-status", Fprocess_exit_status, 1, 1, 0, /* @@ -2782,7 +2780,7 @@ } } # else /* ! defined (TCGETA) */ -#error ERROR! Using SIGNALS_VIA_CHARACTERS, but not (TIOCGLTC && TIOCGETC) || TCGETA +#error ERROR! Using SIGNALS_VIA_CHARACTERS, but not HAVE_TERMIOS || (TIOCGLTC && TIOCGETC) || TCGETA /* If your system configuration files define SIGNALS_VIA_CHARACTERS, you'd better be using one of the alternatives above! */ # endif /* ! defined (TCGETA) */
--- a/src/regex.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/regex.c Mon Aug 13 09:50:14 2007 +0200 @@ -1314,12 +1314,10 @@ DEBUG_PRINT2 (" Pushing reg: %d\n", this_reg); \ DEBUG_STATEMENT (num_regs_pushed++); \ \ - DEBUG_PRINT2 (" start: 0x%lx\n", \ - (unsigned long) regstart[this_reg]); \ + DEBUG_PRINT2 (" start: 0x%p\n", regstart[this_reg]); \ PUSH_FAILURE_POINTER (regstart[this_reg]); \ \ - DEBUG_PRINT2 (" end: 0x%lx\n", \ - (unsigned long) regend[this_reg]); \ + DEBUG_PRINT2 (" end: 0x%p\n", regend[this_reg]); \ PUSH_FAILURE_POINTER (regend[this_reg]); \ \ DEBUG_PRINT2 (" info: 0x%lx\n ", \ @@ -1341,13 +1339,11 @@ DEBUG_PRINT2 (" Pushing high active reg: %d\n", highest_active_reg);\ PUSH_FAILURE_INT (highest_active_reg); \ \ - DEBUG_PRINT2 (" Pushing pattern 0x%lx: ", \ - (unsigned long) pattern_place); \ + DEBUG_PRINT2 (" Pushing pattern 0x%p: ", pattern_place); \ DEBUG_PRINT_COMPILED_PATTERN (bufp, pattern_place, pend); \ PUSH_FAILURE_POINTER (pattern_place); \ \ - DEBUG_PRINT2 (" Pushing string 0x%lx: `", \ - (unsigned long) string_place); \ + DEBUG_PRINT2 (" Pushing string 0x%p: `", string_place); \ DEBUG_PRINT_DOUBLE_STRING (string_place, string1, size1, string2, \ size2); \ DEBUG_PRINT1 ("'\n"); \ @@ -1421,12 +1417,12 @@ if (string_temp != NULL) \ str = (CONST char *) string_temp; \ \ - DEBUG_PRINT2 (" Popping string 0x%lx: `", (unsigned long) str); \ + DEBUG_PRINT2 (" Popping string 0x%p: `", str); \ DEBUG_PRINT_DOUBLE_STRING (str, string1, size1, string2, size2); \ DEBUG_PRINT1 ("'\n"); \ \ pat = (unsigned char *) POP_FAILURE_POINTER (); \ - DEBUG_PRINT2 (" Popping pattern 0x%lx: ", (unsigned long) pat); \ + DEBUG_PRINT2 (" Popping pattern 0x%p: ", pat); \ DEBUG_PRINT_COMPILED_PATTERN (bufp, pat, pend); \ \ /* Restore register info. */ \ @@ -1445,12 +1441,10 @@ * (unsigned long *) ®_info[this_reg]); \ \ regend[this_reg] = (CONST char *) POP_FAILURE_POINTER (); \ - DEBUG_PRINT2 (" end: 0x%lx\n", \ - (unsigned long) regend[this_reg]); \ + DEBUG_PRINT2 (" end: 0x%p\n", regend[this_reg]); \ \ regstart[this_reg] = (CONST char *) POP_FAILURE_POINTER (); \ - DEBUG_PRINT2 (" start: 0x%lx\n", \ - (unsigned long) regstart[this_reg]); \ + DEBUG_PRINT2 (" start: 0x%p\n", regstart[this_reg]); \ } \ \ set_regs_matched_done = 0; \ @@ -3324,7 +3318,6 @@ #endif DECLARE_DESTINATION /* We don't push any register information onto the failure stack. */ - unsigned num_regs = 0; register char *fastmap = bufp->fastmap; unsigned char *pattern = bufp->buffer; @@ -4420,7 +4413,7 @@ fails at this starting point in the input data. */ for (;;) { - DEBUG_PRINT2 ("\n0x%lx: ", (unsigned long) p); + DEBUG_PRINT2 ("\n0x%p: ", p); if (p == pend) { /* End of pattern means we might have succeeded. */ @@ -5023,7 +5016,7 @@ DEBUG_PRINT1 ("EXECUTING on_failure_keep_string_jump"); EXTRACT_NUMBER_AND_INCR (mcnt, p); - DEBUG_PRINT3 (" %d (to 0x%lx):\n", mcnt, (unsigned long) (p + mcnt)); + DEBUG_PRINT3 (" %d (to 0x%p):\n", mcnt, p + mcnt); PUSH_FAILURE_POINT (p + mcnt, NULL, -2); break; @@ -5046,7 +5039,7 @@ DEBUG_PRINT1 ("EXECUTING on_failure_jump"); EXTRACT_NUMBER_AND_INCR (mcnt, p); - DEBUG_PRINT3 (" %d (to 0x%lx)", mcnt, (unsigned long) (p + mcnt)); + DEBUG_PRINT3 (" %d (to 0x%p)", mcnt, p + mcnt); /* If this on_failure_jump comes right before a group (i.e., the original * applied to a group), save the information @@ -5261,7 +5254,7 @@ EXTRACT_NUMBER_AND_INCR (mcnt, p); /* Get the amount to jump. */ DEBUG_PRINT2 ("EXECUTING jump %d ", mcnt); p += mcnt; /* Do the jump. */ - DEBUG_PRINT2 ("(to 0x%lx).\n", (unsigned long) p); + DEBUG_PRINT2 ("(to 0x%p).\n", p); break; @@ -5281,7 +5274,7 @@ DEBUG_PRINT1 ("EXECUTING dummy_failure_jump.\n"); /* It doesn't matter what we push for the string here. What the code at `fail' tests is the value for the pattern. */ - PUSH_FAILURE_POINT (0, 0, -2); + PUSH_FAILURE_POINT (NULL, NULL, -2); goto unconditional_jump; @@ -5294,7 +5287,7 @@ DEBUG_PRINT1 ("EXECUTING push_dummy_failure.\n"); /* See comments just above at `dummy_failure_jump' about the two zeroes. */ - PUSH_FAILURE_POINT (0, 0, -2); + PUSH_FAILURE_POINT (NULL, NULL, -2); break; /* Have to succeed matching what follows at least n times. @@ -5310,13 +5303,11 @@ mcnt--; p += 2; STORE_NUMBER_AND_INCR (p, mcnt); - DEBUG_PRINT3 (" Setting 0x%lx to %d.\n", (unsigned long) p, - mcnt); + DEBUG_PRINT3 (" Setting 0x%p to %d.\n", p, mcnt); } else if (mcnt == 0) { - DEBUG_PRINT2 (" Setting two bytes from 0x%lx to no_op.\n", - (unsigned long) p+2); + DEBUG_PRINT2 (" Setting two bytes from 0x%p to no_op.\n", p+2); p[2] = (unsigned char) no_op; p[3] = (unsigned char) no_op; goto on_failure; @@ -5346,8 +5337,7 @@ EXTRACT_NUMBER_AND_INCR (mcnt, p); p1 = p + mcnt; EXTRACT_NUMBER_AND_INCR (mcnt, p); - DEBUG_PRINT3 (" Setting 0x%lx to %d.\n", (unsigned long) p1, - mcnt); + DEBUG_PRINT3 (" Setting 0x%p to %d.\n", p1, mcnt); STORE_NUMBER (p1, mcnt); break; }
--- a/src/s/aix3-2-5.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/aix3-2-5.h Mon Aug 13 09:50:14 2007 +0200 @@ -15,7 +15,7 @@ #endif /* Perry Smith <pedz@ddivt1.austin.ibm.com> says these are correct. */ -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ #define MAIL_USE_LOCKF /* XEmacs: from dkeller@VNET.IBM.COM */
--- a/src/s/bsd386.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/bsd386.h Mon Aug 13 09:50:14 2007 +0200 @@ -10,7 +10,7 @@ #define DECLARE_GETPWUID_WITH_UID_T -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base) #define A_TEXT_OFFSET(x) (sizeof (struct exec)) @@ -27,7 +27,7 @@ #define TABDLY OXTABS #define TAB3 OXTABS -#define NO_TERMIO +/* #define NO_TERMIO */ /* mrb */ /* This silences a few compilation warnings. */ #ifdef emacs
--- a/src/s/bsd4-2.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/bsd4-2.h Mon Aug 13 09:50:14 2007 +0200 @@ -72,7 +72,7 @@ /* Send signals to subprocesses by "typing" special chars at them. */ -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ /* Formerly "BSD_PGRPS" */
--- a/src/s/cxux.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/cxux.h Mon Aug 13 09:50:14 2007 +0200 @@ -71,7 +71,7 @@ #define FIRST_PTY_LETTER 'A' #define PTY_ITERATION for (c = 'A'; c <= 'P'; c++) for (i = 0; i < 16; i++) -#define NO_TERMIO +/* #define NO_TERMIO */ /* mrb */ /* * Define HAVE_PTYS if the system supports pty devices.
--- a/src/s/dgux.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/dgux.h Mon Aug 13 09:50:14 2007 +0200 @@ -142,13 +142,13 @@ * */ -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ /* * Prevent redundant inclusion of termio.h. */ -#define NO_TERMIO +/* #define NO_TERMIO */ /* mrb */ /* * Use a Berkeley style sys/wait.h.
--- a/src/s/freebsd.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/freebsd.h Mon Aug 13 09:50:14 2007 +0200 @@ -33,15 +33,22 @@ #define LIBS_SYSTEM "-lutil" #endif +/* Kludge to work around setlocale(LC_ALL,...) not working before 01/1997 */ +#if __FreeBSD_version < 199701 +#include <X11/Xlocale.h> +#define setlocale(locale_category, locale_spec) setlocale(LC_CTYPE, locale_spec) +#endif + #define LIBS_TERMCAP "-ltermcap" -#define LIB_GCC "-lgcc" #ifndef NO_SHARED_LIBS #if 0 /* mrb */ +#define LIB_GCC "-lgcc" #define LD_SWITCH_SYSTEM "-dc -dp -e start" #define START_FILES "pre-crt0.o /usr/lib/crt0.o" #else /* mrb */ #define ORDINARY_LINK +#undef LIB_GCC #undef LD_SWITCH_SYSTEM #undef START_FILES #endif /* mrb */ @@ -65,7 +72,7 @@ #endif /* NO_SHARED_LIBS */ #define HAVE_GETLOADAVG -#define NO_TERMIO +/* #define NO_TERMIO */ /* mrb */ #define DECLARE_GETPWUID_WITH_UID_T /* freebsd uses OXTABS instead of the expected TAB3. */
--- a/src/s/gnu.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/gnu.h Mon Aug 13 09:50:14 2007 +0200 @@ -32,9 +32,9 @@ /* XXX should getloadavg be in libc? Should we have a libutil? #define HAVE_GETLOADAVG */ -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ -#define NO_TERMIO +/* #define NO_TERMIO */ /* mrb */ #define LIBS_DEBUG
--- a/src/s/hpux9.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/hpux9.h Mon Aug 13 09:50:14 2007 +0200 @@ -43,7 +43,7 @@ #endif /* neal@ctd.comsat.com */ -#define NO_TERMIO +/* #define NO_TERMIO */ /* mrb */ /* According to ngorelic@speclab.cr.usgs.gov, references to the X11R4 directories in these variables
--- a/src/s/irix4-0.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/irix4-0.h Mon Aug 13 09:50:14 2007 +0200 @@ -8,7 +8,7 @@ #undef NEED_SIOCTL /* Make process_send_signal work by "typing" a signal character on the pty. */ -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ /* use K&R C */ /* XEmacs change -- use ANSI, not K&R */
--- a/src/s/irix5-0.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/irix5-0.h Mon Aug 13 09:50:14 2007 +0200 @@ -23,7 +23,7 @@ /* thomas@mathematik.uni-bremen.de says this is needed. */ /* Make process_send_signal work by "typing" a signal character on the pty. */ -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ /* SGI has all the fancy wait stuff, but we can't include sys/wait.h because it defines BIG_ENDIAN and LITTLE_ENDIAN (ugh!.) Instead
--- a/src/s/isc2-2.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/isc2-2.h Mon Aug 13 09:50:14 2007 +0200 @@ -36,7 +36,7 @@ #define MEMMOVE_MISSING /* Send a signal to a subprocess by "typing" a signal character. */ -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ /* -lPW is only needed if not using Gcc. We used to include -lcposix here for the rename function, but some people say ISC's rename doesn't
--- a/src/s/netbsd.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/netbsd.h Mon Aug 13 09:50:14 2007 +0200 @@ -19,7 +19,7 @@ #undef LDAV_SYMBOL #define HAVE_GETLOADAVG -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base) @@ -30,7 +30,7 @@ #define A_TEXT_OFFSET(x) (sizeof (struct exec)) #define A_TEXT_SEEK(hdr) (N_TXTOFF(hdr) + A_TEXT_OFFSET(hdr)) -#define NO_TERMIO +/* #define NO_TERMIO */ /* mrb */ #define LIBS_DEBUG /* -lutil is not needed for NetBSD >0.9. */
--- a/src/s/nextstep.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/nextstep.h Mon Aug 13 09:50:14 2007 +0200 @@ -76,7 +76,6 @@ /* Don't use -lc on the NeXT. */ #define LIB_STANDARD "-lsys_s" -#define LIB_MATH "-lm" #define START_FILES "pre-crt0.o" @@ -121,7 +120,7 @@ #undef BSD_TERMIOS #undef HAVE_TERMIOS #undef HAVE_TERMIO -#define NO_TERMIO +/* #define NO_TERMIO */ /* mrb */ #define TAB3 XTABS #define C_OPTIMIZE_SWITCH "-pipe" #undef HAVE_SETITIMER
--- a/src/s/sco4.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/sco4.h Mon Aug 13 09:50:14 2007 +0200 @@ -97,7 +97,7 @@ #define LIB_STANDARD "-lc /lib/crtn.o" /* Send signals to subprocesses by "typing" signal chars at them. */ -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ /* Specify program for etc/fakemail to run. Define SMAIL if you are using smail, don't for MMDF. */
--- a/src/s/sco5.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/sco5.h Mon Aug 13 09:50:14 2007 +0200 @@ -108,7 +108,7 @@ #define LIB_STANDARD "-lc" /* Send signals to subprocesses by "typing" signal chars at them. */ -#define SIGNALS_VIA_CHARACTERS +/* #define SIGNALS_VIA_CHARACTERS */ /* mrb */ /* Specify program for etc/fakemail to run. Define SMAIL if you are using smail, don't for MMDF. */
--- a/src/s/sunos4-0.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/s/sunos4-0.h Mon Aug 13 09:50:14 2007 +0200 @@ -60,10 +60,10 @@ extern void tzsetwall (void); extern int getpagesize (void); +#include <memory.h> #ifdef __SUNPRO_C /* Suppress zillions of warnings from outdated SunOS4 prototypes */ /* Bother! Sun can't even get the arg types right. */ -#include <memory.h> #include <string.h> #define memset(a,b,c) memset((char*) (a), b, c) #define memcpy(a,b,c) memcpy((char*) (a), (char*) (b), c)
--- a/src/specifier.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/specifier.c Mon Aug 13 09:50:14 2007 +0200 @@ -2889,7 +2889,7 @@ } DEFUN ("display-table-specifier-p", Fdisplay_table_specifier_p, 1, 1, 0, /* -Return non-nil if OBJECT is an display-table specifier. +Return non-nil if OBJECT is a display-table specifier. */ (object)) { @@ -2958,6 +2958,7 @@ DEFSUBR (Finteger_specifier_p); DEFSUBR (Fnatnum_specifier_p); DEFSUBR (Fboolean_specifier_p); + DEFSUBR (Fdisplay_table_specifier_p); /* Symbols pertaining to specifier creation. Specifiers are created in the syms_of() functions. */ @@ -2997,8 +2998,7 @@ SPECIFIER_HAS_METHOD (boolean, validate); - INITIALIZE_SPECIFIER_TYPE (display_table, "display-table", - "display-table-p"); + INITIALIZE_SPECIFIER_TYPE (display_table, "display-table", "display-table-p"); SPECIFIER_HAS_METHOD (display_table, validate); }
--- a/src/sysdep.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/sysdep.c Mon Aug 13 09:50:14 2007 +0200 @@ -455,7 +455,7 @@ #endif /* 0 */ s.main.c_lflag |= ICANON; /* Enable erase/kill and eof processing */ - s.main.c_cc[VEOF] = 04; /* insure that EOF is Control-D */ + s.main.c_cc[VEOF] = 04; /* ensure that EOF is Control-D */ s.main.c_cc[VERASE] = CDISABLE; /* disable erase processing */ s.main.c_cc[VKILL] = CDISABLE; /* disable kill processing */
--- a/src/systty.h Mon Aug 13 09:49:11 2007 +0200 +++ b/src/systty.h Mon Aug 13 09:50:14 2007 +0200 @@ -425,34 +425,34 @@ for dummy get and set definitions. */ #ifdef HAVE_TCATTR struct termios main; -#else +#else /* !HAVE_TCATTR */ #ifdef HAVE_TERMIO struct termio main; -#else +#else /* !HAVE_TERMIO */ #ifdef VMS struct sensemode main; -#else +#else /* !VMS */ #ifdef DOS_NT int main; #else /* not DOS_NT */ struct sgttyb main; #endif /* not DOS_NT */ #endif /* !VMS */ -#endif -#endif +#endif /* !HAVE_TERMIO */ +#endif /* !HAVE_TCATTR */ /* If we have TERMIOS, we don't need to do this - they're taken care of by the tc*attr calls. */ #ifndef HAVE_TERMIOS #ifdef HAVE_LTCHARS struct ltchars ltchars; -#endif +#endif /* HAVE_LTCHARS */ #ifdef HAVE_TCHARS struct tchars tchars; int lmode; -#endif -#endif +#endif /* HAVE_TCHARS */ +#endif /* HAVE_TERMIOS */ }; /* Define EMACS_GET_TTY and EMACS_SET_TTY, @@ -475,7 +475,7 @@ #define EMACS_TTY_TABS_OK(p) (((p)->main.c_oflag & TABDLY) != TAB3) #else #define EMACS_TTY_TABS_OK(p) 1 -#endif +#endif /* TABDLY */ #else /* not def HAVE_TERMIOS */ #ifdef HAVE_TERMIO
--- a/src/xselect.c Mon Aug 13 09:49:11 2007 +0200 +++ b/src/xselect.c Mon Aug 13 09:50:14 2007 +0200 @@ -1836,7 +1836,7 @@ CHECK_SYMBOL (selection); if (!NILP (Fx_selection_owner_p (selection))) return Qt; - return XGetSelectionOwner (dpy, symbol_to_x_atom (d, selection, 0)) != NULL ? + return XGetSelectionOwner (dpy, symbol_to_x_atom (d, selection, 0)) != None ? Qt : Qnil; }