Mercurial > hg > xemacs-beta
changeset 153:25f70ba0133c r20-3b3
Import from CVS: tag r20-3b3
line wrap: on
line diff
--- a/CHANGES-beta Mon Aug 13 09:37:21 2007 +0200 +++ b/CHANGES-beta Mon Aug 13 09:38:25 2007 +0200 @@ -1,4 +1,27 @@ -*- indented-text -*- +to 20.3 beta3. +-- miscellaneous bug fixes +-- iso-acc.el-1.14 courtesy of Alexandre Oliva +-- custom-load.el renamed to cus-load.el and is no longer dumped +-- Configure patches courtesy of Martin Buchholz +-- etags.c-12.7 +-- Old packages removed: modes/old-c-mode.el, modes/old-c++-mode.el, + modes/two-column.el. + emulators/mlconvert.el, emulators/mlsupport.el. + energize/*.el. + eos/loaddefs-eos.el. + packages/generic-sc.el, packages/mime-compose.el, packages/netunam.el, + packages/sccs.el, packages/server.el. + utils/mailpost.el, utils/meese.el. +-- dynodump hierarchy restored to distribution +-- ssh.el-1.3 courtesy of Noah Friedman +-- AUC TeX-9.7p courtesy of Per Abrahamsen +-- savehist.el-0.2 courtesy of Hrvoje Niksic +-- GPM support courtesy of William Perry +-- Custom-1.98 +-- hm--html-menus-5.7 courtesy of Heiko Muenkel +-- Gnus-5.4.55 + to 20.3 beta2. -- mega configure patches courtesy of Martin Buchholz -- edmacro.el-3.14
--- a/ChangeLog Mon Aug 13 09:37:21 2007 +0200 +++ b/ChangeLog Mon Aug 13 09:38:25 2007 +0200 @@ -1,3 +1,43 @@ +1997-05-29 Steven L Baur <steve@altair.xemacs.org> + + * XEmacs 20.3-beta3 is released. + + * INSTALL: Delete documentation of mocklisp support. + + * configure.in: Delete mocklisp support. + + * etc/FTP: Update mirror info. + + * etc/DISTRIB: Update mirror info. + +1997-05-29 Martin Buchholz <mrb@eng.sun.com> + + * configure.in: Replace standard Autoconf MMAP test with Neal + Becker's replacement, hacked somewhat. + +1997-05-28 Martin Buchholz <mrb@eng.sun.com> + + * lisp/prim/files.el (auto-mode-alist): Reorg auto-mode-alist again. + + * lib-src/etags.c: Version 12.7 from Francesco. + + * configure.in: Juggle link order of X libraries. + Add support for using zsh to run configure. + Document --with-tty=no. + Fix -no-recursion option. + Recognize and ignore --cache-file option. + Recognize null values for preprocessor symbols converted to shell + variables. This maybe fixes the "-ltermcap" problem. + Remove spurious blanks from various SUBST-ituted variables. + Fix conditional creation of gdbinit. + Conditionally create .sbinit for Sunpro C. + +1997-05-26 Steven L Baur <steve@altair.xemacs.org> + + * etc/FTP: Correct typo in ftp.cenatls.cena.dgac.fr. + + * etc/DISTRIB: Ditto. + 1997-05-22 Steven L Baur <steve@altair.xemacs.org> * XEmacs 20.3-beta2 is released.
--- a/INSTALL Mon Aug 13 09:37:21 2007 +0200 +++ b/INSTALL Mon Aug 13 09:38:25 2007 +0200 @@ -248,10 +248,6 @@ with support for being used as a widget by other X11 applications. This functionality should be considered beta. -The `--with-mocklisp' option specifies that XEmacs should be built -with support for Mocklisp. Do not use this option unless you have a -Mocklisp program that you need to run. - The `--with-xmu=no' option can be used if your vendor doesn't ship the Xmu library.
--- a/configure Mon Aug 13 09:37:21 2007 +0200 +++ b/configure Mon Aug 13 09:38:25 2007 +0200 @@ -45,7 +45,6 @@ --with-x use the X Window System" build=NONE -cache_file=/dev/null exec_prefix=NONE host=NONE no_create= @@ -62,6 +61,14 @@ verbose= x_includes=NONE x_libraries=NONE + +if test -n "$ZSH_VERSION"; then + setopt NO_BAD_PATTERN NO_BANG_HIST NO_BG_NICE NO_EQUALS NO_FUNCTION_ARGZERO + setopt GLOB_SUBST NO_HUP INTERACTIVE_COMMENTS KSH_ARRAYS NO_MULTIOS NO_NOMATCH + setopt RM_STAR_SILENT POSIX_BUILTINS SH_FILE_EXPANSION SH_GLOB SH_OPTION_LETTERS + setopt SH_WORD_SPLIT BSD_ECHO IGNORE_BRACES +fi + bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' @@ -178,7 +185,7 @@ ac_ext=c xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS' xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' -xe_libs='$xe_check_libs $X_PRE_LIBS $libs_x $X_EXTRA_LIBS $LIBS $libs_machine $libs_system $libs_standard' +xe_libs='$xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5' @@ -200,8 +207,6 @@ progname="`echo $0 | sed 's:^\./\./:\./:'`" -cache_file=/dev/null - MAKE_SUBDIR="$MAKE_SUBDIR lib-src" && if test "$extra_verbose" = "yes"; then echo " Appending \"lib-src\" to \$MAKE_SUBDIR"; fi prefix='/usr/local' @@ -234,7 +239,7 @@ use_system_malloc='default' energize_version='' native_sound_lib='' -error_check_default='yes' +error_check_default="yes" error_check_extents=$error_check_default error_check_typecheck=$error_check_default error_check_bufpos=$error_check_default @@ -242,11 +247,11 @@ error_check_malloc=$error_check_default debug=$error_check_default extra_verbose=$error_check_default -use_assertions='yes' -with_gif='' -with_toolbars='' -use_union_type='no' -with_dnet='' +use_assertions="yes" +with_gif="" +with_toolbars="" +use_union_type="no" +with_dnet="" test -n "$CPP" -a -d "$CPP" && CPP= @@ -338,8 +343,9 @@ TTY options: +--with-tty=no Don't support TTY-s. --with-ncurses (*) Use the ncurses library for tty support. ---with-gpm (*) Compile in support for General Purpose Mouse. +--with-gpm (*) Compile in support for General Purpose Mouse. Additional features: @@ -365,9 +371,6 @@ --native-sound-lib=LIB Native sound support library. Needed on Suns with --with-sound=both because both sound libraries are called libaudio. ---with-mocklisp Compile with Mocklisp support. Don't do this - unless you have a Mocklisp program that you need - to run. --with-pop support POP for mail retrieval --with-kerberos support Kerberos-authenticated POP --with-hesiod support Hesiod to get the POP server host @@ -459,8 +462,8 @@ case "$i" in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) ;; - -norecursion | --norecursion | --norecursio | --norecursi \ - | --norecurs | --norecur | --norecu | --norec | --nore | --nor) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; *) quoted_i="`echo $i | sed $quoted_sed_magic`" quoted_arguments="$quoted_arguments '$quoted_i'" ;; @@ -518,7 +521,6 @@ with_canna | \ with_wnn | \ with_wnn6 | \ - with_mocklisp | \ with_energize | \ with_workshop | \ with_sparcworks | \ @@ -547,9 +549,10 @@ eval "$opt=\"$val\"" ;; - srcdir | \ + srcdir | \ compiler | \ puresize | \ + cache_file | \ native_sound_lib | \ x_includes | \ x_libraries | \ @@ -835,7 +838,7 @@ esac echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:839: checking whether ln -s works" >&5 +echo "configure:842: checking whether ln -s works" >&5 rm -f conftestdata if ln -s X conftestdata 2>/dev/null @@ -892,7 +895,7 @@ echo "checking "the configuration name"" 1>&6 -echo "configure:896: checking "the configuration name"" >&5 +echo "configure:899: checking "the configuration name"" >&5 internal_configuration=`echo $configuration | sed 's/-\(energize\|workshop\)//'` if canonical=`$srcdir/config.sub "$internal_configuration"` ; then : ; else exit $? @@ -1318,7 +1321,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:1322: checking for $ac_word" >&5 +echo "configure:1325: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1344,7 +1347,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:1348: checking for $ac_word" >&5 +echo "configure:1351: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1389,23 +1392,23 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1393: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1396: 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' xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' -xe_libs='$xe_check_libs $X_PRE_LIBS $libs_x $X_EXTRA_LIBS $LIBS $libs_machine $libs_system $libs_standard' +xe_libs='$xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5' cross_compiling=no cat > conftest.$ac_ext <<EOF -#line 1405 "configure" +#line 1408 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1412: \"$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 @@ -1425,19 +1428,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:1429: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1432: 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:1434: checking whether we are using GNU C" >&5 +echo "configure:1437: 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:1441: \"$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:1444: \"$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 @@ -1451,7 +1454,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1455: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1458: checking whether ${CC-cc} accepts -g" >&5 echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then @@ -1481,7 +1484,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:1485: checking for $ac_word" >&5 +echo "configure:1488: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1507,7 +1510,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:1511: checking for $ac_word" >&5 +echo "configure:1514: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1552,23 +1555,23 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1556: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1559: 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' xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' -xe_libs='$xe_check_libs $X_PRE_LIBS $libs_x $X_EXTRA_LIBS $LIBS $libs_machine $libs_system $libs_standard' +xe_libs='$xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5' cross_compiling=no cat > conftest.$ac_ext <<EOF -#line 1568 "configure" +#line 1571 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1575: \"$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 @@ -1588,19 +1591,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:1592: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1595: 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:1597: checking whether we are using GNU C" >&5 +echo "configure:1600: 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:1604: \"$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:1607: \"$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 @@ -1614,7 +1617,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1618: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1621: checking whether ${CC-cc} accepts -g" >&5 echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then @@ -1643,7 +1646,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:1647: checking for $ac_word" >&5 +echo "configure:1650: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1669,7 +1672,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:1673: checking for $ac_word" >&5 +echo "configure:1676: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1714,23 +1717,23 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1718: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1721: 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' xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' -xe_libs='$xe_check_libs $X_PRE_LIBS $libs_x $X_EXTRA_LIBS $LIBS $libs_machine $libs_system $libs_standard' +xe_libs='$xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5' cross_compiling=no cat > conftest.$ac_ext <<EOF -#line 1730 "configure" +#line 1733 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1737: \"$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 @@ -1750,19 +1753,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:1754: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1757: 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:1759: checking whether we are using GNU C" >&5 +echo "configure:1762: 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:1766: \"$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:1769: \"$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 @@ -1776,7 +1779,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1780: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1783: checking whether ${CC-cc} accepts -g" >&5 echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then @@ -1806,7 +1809,7 @@ test -n "$NON_GNU_CPP" -a "$with_gcc" = "no" -a -z "$CPP" && CPP="$NON_GNU_CPP" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1810: checking how to run the C preprocessor" >&5 +echo "configure:1813: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1819,13 +1822,13 @@ # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext <<EOF -#line 1823 "configure" +#line 1826 "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:1829: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1832: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1836,13 +1839,13 @@ rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext <<EOF -#line 1840 "configure" +#line 1843 "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:1846: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1951,6 +1954,12 @@ configure___ c_optimize_switch=C_OPTIMIZE_SWITCH +#ifdef ORDINARY_LINK +configure___ ordinary_link=yes +#else +configure___ ordinary_link=no +#endif + #ifdef SYSTEM_MALLOC configure___ system_malloc=yes #else @@ -1999,16 +2008,19 @@ CPP=`eval "echo $CPP"` eval `$CPP -Isrc $tempcname \ | grep 'configure___' \ - | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'` + | sed -n -e 's/^configure___ \([^= ]* *=\)\(.*\)$/\1\`echo \2\`/p'` if test -z "$SPECIFIED_CFLAGS"; then eval `$CPP -Isrc -DTHIS_IS_CONFIGURE $tempcname \ | grep 'configure___' \ - | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'` + | sed -n -e 's/^configure___ \([^= ]* *=\)\(.*\)$/\1\`echo \2\`/p'` else REAL_CFLAGS="$CFLAGS" fi + rm $tempcname +test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc" + test "$cflags" != "NO_CFLAGS_DEFINED" && REAL_CFLAGS="$cflags" extra_objs="$extra_objs $unexec" && if test "$extra_verbose" = "yes"; then @@ -2050,19 +2062,19 @@ if test "$add_runtime_path" = "yes"; then echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6 -echo "configure:2054: checking "for runtime libraries flag"" >&5 +echo "configure:2066: 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 2059 "configure" +#line 2071 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:2066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* dash_r="$try_dash_r" else @@ -2126,7 +2138,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:2130: checking for $ac_word" >&5 +echo "configure:2142: checking for $ac_word" >&5 if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -2179,7 +2191,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:2183: checking for a BSD compatible install" >&5 +echo "configure:2195: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" @@ -2230,7 +2242,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:2234: checking for $ac_word" >&5 +echo "configure:2246: checking for $ac_word" >&5 if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. @@ -2258,9 +2270,9 @@ echo $ac_n "checking for AIX""... $ac_c" 1>&6 -echo "configure:2262: checking for AIX" >&5 -cat > conftest.$ac_ext <<EOF -#line 2264 "configure" +echo "configure:2274: checking for AIX" >&5 +cat > conftest.$ac_ext <<EOF +#line 2276 "configure" #include "confdefs.h" #ifdef _AIX yes @@ -2290,15 +2302,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2294: checking for $ac_hdr" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2297 "configure" +echo "configure:2306: checking for $ac_hdr" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2309 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2302: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2314: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2331,15 +2343,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2335: checking for $ac_hdr" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2338 "configure" +echo "configure:2347: checking for $ac_hdr" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2350 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2343: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2372,15 +2384,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2376: checking for $ac_hdr" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2379 "configure" +echo "configure:2388: checking for $ac_hdr" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2391 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2384: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2396: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2410,10 +2422,10 @@ done echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2414: checking for ANSI C header files" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2417 "configure" +echo "configure:2426: checking for ANSI C header files" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2429 "configure" #include "confdefs.h" #include <stdlib.h> #include <stdarg.h> @@ -2421,7 +2433,7 @@ #include <float.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2425: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2437: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2438,7 +2450,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 2442 "configure" +#line 2454 "configure" #include "confdefs.h" #include <string.h> EOF @@ -2456,7 +2468,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 2460 "configure" +#line 2472 "configure" #include "confdefs.h" #include <stdlib.h> EOF @@ -2474,7 +2486,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 2478 "configure" +#line 2490 "configure" #include "confdefs.h" #include <ctype.h> #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2485,7 +2497,7 @@ exit (0); } EOF -if { (eval echo configure:2489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:2501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then : else @@ -2510,10 +2522,10 @@ fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:2514: checking whether time.h and sys/time.h may both be included" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2517 "configure" +echo "configure:2526: checking whether time.h and sys/time.h may both be included" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2529 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/time.h> @@ -2522,7 +2534,7 @@ struct tm *tp; ; return 0; } EOF -if { (eval echo configure:2526: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2538: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -2546,10 +2558,10 @@ fi echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 -echo "configure:2550: checking for sys_siglist declaration in signal.h or unistd.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2553 "configure" +echo "configure:2562: checking for sys_siglist declaration in signal.h or unistd.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2565 "configure" #include "confdefs.h" #include <sys/types.h> #include <signal.h> @@ -2561,7 +2573,7 @@ char *msg = *(sys_siglist + 1); ; return 0; } EOF -if { (eval echo configure:2565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2577: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else @@ -2586,9 +2598,9 @@ echo $ac_n "checking for struct utimbuf""... $ac_c" 1>&6 -echo "configure:2590: checking for struct utimbuf" >&5 -cat > conftest.$ac_ext <<EOF -#line 2592 "configure" +echo "configure:2602: checking for struct utimbuf" >&5 +cat > conftest.$ac_ext <<EOF +#line 2604 "configure" #include "confdefs.h" #ifdef TIME_WITH_SYS_TIME #include <sys/time.h> @@ -2607,7 +2619,7 @@ static struct utimbuf x; x.actime = x.modtime; ; return 0; } EOF -if { (eval echo configure:2611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2623: \"$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 @@ -2627,10 +2639,10 @@ rm -f conftest* echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:2631: checking return type of signal handlers" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2634 "configure" +echo "configure:2643: checking return type of signal handlers" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2646 "configure" #include "confdefs.h" #include <sys/types.h> #include <signal.h> @@ -2647,7 +2659,7 @@ int i; ; return 0; } EOF -if { (eval echo configure:2651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2663: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -2670,9 +2682,9 @@ echo $ac_n "checking for struct timeval""... $ac_c" 1>&6 -echo "configure:2674: checking for struct timeval" >&5 -cat > conftest.$ac_ext <<EOF -#line 2676 "configure" +echo "configure:2686: checking for struct timeval" >&5 +cat > conftest.$ac_ext <<EOF +#line 2688 "configure" #include "confdefs.h" #ifdef TIME_WITH_SYS_TIME #include <sys/time.h> @@ -2688,7 +2700,7 @@ static struct timeval x; x.tv_sec = x.tv_usec; ; return 0; } EOF -if { (eval echo configure:2692: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2704: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 HAVE_TIMEVAL=yes @@ -2710,10 +2722,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:2714: checking whether struct tm is in sys/time.h or time.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2717 "configure" +echo "configure:2726: checking whether struct tm is in sys/time.h or time.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2729 "configure" #include "confdefs.h" #include <sys/types.h> #include <time.h> @@ -2721,7 +2733,7 @@ struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:2725: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2737: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -2745,10 +2757,10 @@ fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:2749: checking for tm_zone in struct tm" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2752 "configure" +echo "configure:2761: checking for tm_zone in struct tm" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2764 "configure" #include "confdefs.h" #include <sys/types.h> #include <$ac_cv_struct_tm> @@ -2756,7 +2768,7 @@ struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:2760: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2772: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -2779,10 +2791,10 @@ else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:2783: checking for tzname" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2786 "configure" +echo "configure:2795: checking for tzname" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2798 "configure" #include "confdefs.h" #include <time.h> #ifndef tzname /* For SGI. */ @@ -2792,7 +2804,7 @@ atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:2796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -2818,10 +2830,10 @@ echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2822: checking for working const" >&5 - -cat > conftest.$ac_ext <<EOF -#line 2825 "configure" +echo "configure:2834: checking for working const" >&5 + +cat > conftest.$ac_ext <<EOF +#line 2837 "configure" #include "confdefs.h" int main() { @@ -2870,7 +2882,7 @@ ; return 0; } EOF -if { (eval echo configure:2874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2886: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2895,7 +2907,7 @@ echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:2899: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:2911: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` cat > conftestmake <<\EOF @@ -2920,12 +2932,12 @@ echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:2924: checking whether byte ordering is bigendian" >&5 +echo "configure:2936: 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 2929 "configure" +#line 2941 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/param.h> @@ -2936,11 +2948,11 @@ #endif ; return 0; } EOF -if { (eval echo configure:2940: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2952: \"$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 2944 "configure" +#line 2956 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/param.h> @@ -2951,7 +2963,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:2955: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -2968,7 +2980,7 @@ rm -f conftest* if test $ac_cv_c_bigendian = unknown; then cat > conftest.$ac_ext <<EOF -#line 2972 "configure" +#line 2984 "configure" #include "confdefs.h" main () { /* Are we little or big endian? From Harbison&Steele. */ @@ -2981,7 +2993,7 @@ exit (u.c[sizeof (long) - 1] == 1); } EOF -if { (eval echo configure:2985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:2997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_c_bigendian=no else @@ -3007,10 +3019,10 @@ echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:3011: checking size of short" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3014 "configure" +echo "configure:3023: checking size of short" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3026 "configure" #include "confdefs.h" #include <stdio.h> main() @@ -3021,7 +3033,7 @@ exit(0); } EOF -if { (eval echo configure:3025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_sizeof_short=`cat conftestval` else @@ -3042,10 +3054,10 @@ echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:3046: checking size of int" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3049 "configure" +echo "configure:3058: checking size of int" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3061 "configure" #include "confdefs.h" #include <stdio.h> main() @@ -3056,7 +3068,7 @@ exit(0); } EOF -if { (eval echo configure:3060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_sizeof_int=`cat conftestval` else @@ -3077,10 +3089,10 @@ echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:3081: checking size of long" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3084 "configure" +echo "configure:3093: checking size of long" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3096 "configure" #include "confdefs.h" #include <stdio.h> main() @@ -3091,7 +3103,7 @@ exit(0); } EOF -if { (eval echo configure:3095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_sizeof_long=`cat conftestval` else @@ -3113,7 +3125,7 @@ echo $ac_n "checking for long file names""... $ac_c" 1>&6 -echo "configure:3117: checking for long file names" >&5 +echo "configure:3129: 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: @@ -3161,12 +3173,12 @@ echo $ac_n "checking for sqrt in -lm""... $ac_c" 1>&6 -echo "configure:3165: checking for sqrt in -lm" >&5 +echo "configure:3177: 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 3170 "configure" +#line 3182 "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 @@ -3177,7 +3189,7 @@ sqrt() ; return 0; } EOF -if { (eval echo configure:3181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3193: \"$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 @@ -3219,7 +3231,7 @@ echo "checking type of mail spool file locking" 1>&6 -echo "configure:3223: checking type of mail spool file locking" >&5 +echo "configure:3235: 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 @@ -3242,12 +3254,12 @@ echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6 -echo "configure:3246: checking for kstat_open in -lkstat" >&5 +echo "configure:3258: 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 3251 "configure" +#line 3263 "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 @@ -3258,7 +3270,7 @@ kstat_open() ; return 0; } EOF -if { (eval echo configure:3262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3274: \"$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 @@ -3292,12 +3304,12 @@ echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6 -echo "configure:3296: checking for kvm_read in -lkvm" >&5 +echo "configure:3308: 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 3301 "configure" +#line 3313 "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 @@ -3308,7 +3320,7 @@ kvm_read() ; return 0; } EOF -if { (eval echo configure:3312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3324: \"$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 @@ -3342,12 +3354,12 @@ echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6 -echo "configure:3346: checking for cma_open in -lpthreads" >&5 +echo "configure:3358: 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 3351 "configure" +#line 3363 "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 @@ -3358,7 +3370,7 @@ cma_open() ; return 0; } EOF -if { (eval echo configure:3362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3374: \"$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 @@ -3394,7 +3406,7 @@ fi echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6 -echo "configure:3398: checking whether the -xildoff compiler flag is required" >&5 +echo "configure:3410: 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; @@ -3404,7 +3416,7 @@ fi echo $ac_n "checking for dynodump""... $ac_c" 1>&6 -echo "configure:3408: checking for dynodump" >&5 +echo "configure:3420: checking for dynodump" >&5 case "$canonical" in *-solaris2.[0-5]* ) echo "$ac_t""yes" 1>&6 { test "$extra_verbose" = "yes" && cat << \EOF @@ -3427,7 +3439,7 @@ echo "checking "for specified window system"" 1>&6 -echo "configure:3431: checking "for specified window system"" >&5 +echo "configure:3443: checking "for specified window system"" >&5 if test "$x_includes $x_libraries" = "NONE NONE"; then if test -n "$OPENWINHOME" \ @@ -3448,7 +3460,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:3452: checking for X" >&5 +echo "configure:3464: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -3508,12 +3520,12 @@ # First, try using that file with no special directory specified. cat > conftest.$ac_ext <<EOF -#line 3512 "configure" +#line 3524 "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:3517: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -3582,14 +3594,14 @@ ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <<EOF -#line 3586 "configure" +#line 3598 "configure" #include "confdefs.h" int main() { ${x_direct_test_function}() ; return 0; } EOF -if { (eval echo configure:3593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3605: \"$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. @@ -3698,17 +3710,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:3702: checking whether -R must be followed by a space" >&5 +echo "configure:3714: 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 3705 "configure" +#line 3717 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:3712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_R_nospace=yes else @@ -3724,14 +3736,14 @@ else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <<EOF -#line 3728 "configure" +#line 3740 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:3735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_R_space=yes else @@ -3767,12 +3779,12 @@ else echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:3771: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:3783: 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 3776 "configure" +#line 3788 "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 @@ -3783,7 +3795,7 @@ dnet_ntoa() ; return 0; } EOF -if { (eval echo configure:3787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3799: \"$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 @@ -3807,12 +3819,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:3811: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:3823: 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 3816 "configure" +#line 3828 "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 @@ -3823,7 +3835,7 @@ dnet_ntoa() ; return 0; } EOF -if { (eval echo configure:3827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3839: \"$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 @@ -3852,10 +3864,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:3856: checking for gethostbyname" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3859 "configure" +echo "configure:3868: checking for gethostbyname" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3871 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname(); below. */ @@ -3878,7 +3890,7 @@ ; return 0; } EOF -if { (eval echo configure:3882: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -3899,12 +3911,12 @@ if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:3903: checking for gethostbyname in -lnsl" >&5 +echo "configure:3915: 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 3908 "configure" +#line 3920 "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 @@ -3915,7 +3927,7 @@ gethostbyname() ; return 0; } EOF -if { (eval echo configure:3919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3931: \"$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 @@ -3945,10 +3957,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:3949: checking for connect" >&5 - -cat > conftest.$ac_ext <<EOF -#line 3952 "configure" +echo "configure:3961: checking for connect" >&5 + +cat > conftest.$ac_ext <<EOF +#line 3964 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect(); below. */ @@ -3971,7 +3983,7 @@ ; return 0; } EOF -if { (eval echo configure:3975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -3994,12 +4006,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:3998: checking "$xe_msg_checking"" >&5 +echo "configure:4010: 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 4003 "configure" +#line 4015 "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 @@ -4010,7 +4022,7 @@ connect() ; return 0; } EOF -if { (eval echo configure:4014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4026: \"$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 @@ -4034,10 +4046,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:4038: checking for remove" >&5 - -cat > conftest.$ac_ext <<EOF -#line 4041 "configure" +echo "configure:4050: checking for remove" >&5 + +cat > conftest.$ac_ext <<EOF +#line 4053 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove(); below. */ @@ -4060,7 +4072,7 @@ ; return 0; } EOF -if { (eval echo configure:4064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -4081,12 +4093,12 @@ if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:4085: checking for remove in -lposix" >&5 +echo "configure:4097: 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 4090 "configure" +#line 4102 "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 @@ -4097,7 +4109,7 @@ remove() ; return 0; } EOF -if { (eval echo configure:4101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4113: \"$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 @@ -4121,10 +4133,10 @@ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:4125: checking for shmat" >&5 - -cat > conftest.$ac_ext <<EOF -#line 4128 "configure" +echo "configure:4137: checking for shmat" >&5 + +cat > conftest.$ac_ext <<EOF +#line 4140 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat(); below. */ @@ -4147,7 +4159,7 @@ ; return 0; } EOF -if { (eval echo configure:4151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -4168,12 +4180,12 @@ if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:4172: checking for shmat in -lipc" >&5 +echo "configure:4184: 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 4177 "configure" +#line 4189 "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 @@ -4184,7 +4196,7 @@ shmat() ; return 0; } EOF -if { (eval echo configure:4188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4200: \"$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 @@ -4218,12 +4230,12 @@ # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:4222: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:4234: 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 4227 "configure" +#line 4239 "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 @@ -4234,7 +4246,7 @@ IceConnectionNumber() ; return 0; } EOF -if { (eval echo configure:4238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4250: \"$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 @@ -4348,21 +4360,21 @@ echo "X_CFLAGS = $X_CFLAGS" echo "X_LIBS = $X_LIBS" echo "X_PRE_LIBS = $X_PRE_LIBS" -echo "X_EXTRA_LIBS = $X_EXTRA_LIBS" +echo "X_EXTRA_LIBS=\"$X_EXTRA_LIBS\"" echo fi ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6 -echo "configure:4358: checking for X11/Intrinsic.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 4361 "configure" +echo "configure:4370: checking for X11/Intrinsic.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 4373 "configure" #include "confdefs.h" #include <X11/Intrinsic.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4366: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4378: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -4386,12 +4398,12 @@ echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:4390: checking for XOpenDisplay in -lX11" >&5 +echo "configure:4402: 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 4395 "configure" +#line 4407 "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 @@ -4402,7 +4414,7 @@ XOpenDisplay() ; return 0; } EOF -if { (eval echo configure:4406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4418: \"$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 @@ -4427,12 +4439,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:4431: checking "$xe_msg_checking"" >&5 +echo "configure:4443: 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 4436 "configure" +#line 4448 "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 @@ -4443,7 +4455,7 @@ XGetFontProperty() ; return 0; } EOF -if { (eval echo configure:4447: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4459: \"$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 @@ -4468,17 +4480,56 @@ libs_x="-lX11" test "$extra_verbose" = "yes" && echo " Setting libs_x to \"-lX11\"" - case "$canonical" in *-sunos4.* ) # Bug workaround + +echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6 +echo "configure:4486: 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 4491 "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 XShapeSelectInput(); + +int main() { +XShapeSelectInput() +; return 0; } +EOF +if { (eval echo configure:4502: \"$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 + libs_x="-lXext $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXext\" to \$libs_x"; fi +else + echo "$ac_t""no" 1>&6 +fi + + + + case "$canonical" in *-sunos4.* ) # Bug workaround ld_switch_x_site="$ld_switch_x_site -u _XtToolkitInitialize" ;; esac echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6 -echo "configure:4477: checking for XtOpenDisplay in -lXt" >&5 +echo "configure:4528: 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 4482 "configure" +#line 4533 "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 @@ -4489,7 +4540,7 @@ XtOpenDisplay() ; return 0; } EOF -if { (eval echo configure:4493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4544: \"$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 @@ -4512,14 +4563,14 @@ echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6 -echo "configure:4516: checking the version of X11 being used" >&5 +echo "configure:4567: checking the version of X11 being used" >&5 cat > conftest.$ac_ext <<EOF -#line 4518 "configure" +#line 4569 "configure" #include "confdefs.h" #include <X11/Intrinsic.h> main(int c, char* v[]) { return c>1 ? XlibSpecificationRelease : 0; } EOF -if { (eval echo configure:4523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:4574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ./conftest foobar; x11_release=$? else @@ -4543,15 +4594,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4547: checking for $ac_hdr" >&5 - -cat > conftest.$ac_ext <<EOF -#line 4550 "configure" +echo "configure:4598: checking for $ac_hdr" >&5 + +cat > conftest.$ac_ext <<EOF +#line 4601 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4606: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -4582,7 +4633,7 @@ echo $ac_n "checking for XFree86""... $ac_c" 1>&6 -echo "configure:4586: checking for XFree86" >&5 +echo "configure:4637: checking for XFree86" >&5 if test -d "/usr/X386/include" -o \ -f "/etc/XF86Config" -o \ -f "/etc/X11/XF86Config" -o \ @@ -4600,57 +4651,18 @@ echo "$ac_t""no" 1>&6 fi - -echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6 -echo "configure:4606: 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 4611 "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 XShapeSelectInput(); - -int main() { -XShapeSelectInput() -; return 0; } -EOF -if { (eval echo configure:4622: \"$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 - libs_x="-lXext $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXext\" to \$libs_x"; fi -else - echo "$ac_t""no" 1>&6 -fi - - - case "$canonical" in *-sunos4.* ) # Bug workaround ld_switch_x_site="$ld_switch_x_site -u _get_applicationShellWidgetClass" ;; esac if test -z "$with_xmu"; then echo $ac_n "checking for XmuConvertStandardSelection in -lXmu""... $ac_c" 1>&6 -echo "configure:4649: checking for XmuConvertStandardSelection in -lXmu" >&5 +echo "configure:4661: checking for XmuConvertStandardSelection in -lXmu" >&5 ac_lib_var=`echo Xmu'_'XmuConvertStandardSelection | sed 'y%./+-%__p_%'` xe_check_libs=" -lXmu " cat > conftest.$ac_ext <<EOF -#line 4654 "configure" +#line 4666 "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 @@ -4661,7 +4673,7 @@ XmuConvertStandardSelection() ; return 0; } EOF -if { (eval echo configure:4665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4677: \"$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 @@ -4693,19 +4705,19 @@ echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6 -echo "configure:4697: checking for main in -lXbsd" >&5 +echo "configure:4709: 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 4702 "configure" +#line 4714 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:4709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4721: \"$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 @@ -4728,12 +4740,12 @@ echo $ac_n "checking for XawScrollbarSetThumb in -lXaw""... $ac_c" 1>&6 -echo "configure:4732: checking for XawScrollbarSetThumb in -lXaw" >&5 +echo "configure:4744: 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 4737 "configure" +#line 4749 "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 @@ -4744,7 +4756,7 @@ XawScrollbarSetThumb() ; return 0; } EOF -if { (eval echo configure:4748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4760: \"$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 @@ -4825,15 +4837,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:4829: checking for X11/Xauth.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 4832 "configure" +echo "configure:4841: checking for X11/Xauth.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 4844 "configure" #include "confdefs.h" #include <X11/Xauth.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4837: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -4856,12 +4868,12 @@ } test -z "$with_xauth" && { echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6 -echo "configure:4860: checking for XauGetAuthByAddr in -lXau" >&5 +echo "configure:4872: 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 4865 "configure" +#line 4877 "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 @@ -4872,7 +4884,7 @@ XauGetAuthByAddr() ; return 0; } EOF -if { (eval echo configure:4876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4888: \"$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 @@ -4908,15 +4920,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:4912: checking for OffiX/DragAndDrop.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 4915 "configure" +echo "configure:4924: checking for OffiX/DragAndDrop.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 4927 "configure" #include "confdefs.h" #include <OffiX/DragAndDrop.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4932: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -4939,12 +4951,12 @@ } test -z "$with_offix" && { echo $ac_n "checking for DndInitialize in -lDnd""... $ac_c" 1>&6 -echo "configure:4943: checking for DndInitialize in -lDnd" >&5 +echo "configure:4955: 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 4948 "configure" +#line 4960 "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 @@ -4955,7 +4967,7 @@ DndInitialize() ; return 0; } EOF -if { (eval echo configure:4959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4971: \"$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 @@ -4994,15 +5006,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:4998: checking for ${dir}tt_c.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5001 "configure" +echo "configure:5010: checking for ${dir}tt_c.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5013 "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:5006: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5018: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5031,12 +5043,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:5035: checking "$xe_msg_checking"" >&5 +echo "configure:5047: 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 5040 "configure" +#line 5052 "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 @@ -5047,7 +5059,7 @@ tt_message_create() ; return 0; } EOF -if { (eval echo configure:5051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5063: \"$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 @@ -5096,15 +5108,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:5100: checking for Dt/Dt.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5103 "configure" +echo "configure:5112: checking for Dt/Dt.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5115 "configure" #include "confdefs.h" #include <Dt/Dt.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5108: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5127,12 +5139,12 @@ } test -z "$with_cde" && { echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6 -echo "configure:5131: checking for DtDndDragStart in -lDtSvc" >&5 +echo "configure:5143: 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 5136 "configure" +#line 5148 "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 @@ -5143,7 +5155,7 @@ DtDndDragStart() ; return 0; } EOF -if { (eval echo configure:5147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5159: \"$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 @@ -5190,19 +5202,19 @@ echo $ac_n "checking for main in -lenergize""... $ac_c" 1>&6 -echo "configure:5194: checking for main in -lenergize" >&5 +echo "configure:5206: 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 5199 "configure" +#line 5211 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:5206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5218: \"$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 @@ -5234,19 +5246,19 @@ if test -z "$energize_version"; then echo $ac_n "checking for main in -lconn""... $ac_c" 1>&6 -echo "configure:5238: checking for main in -lconn" >&5 +echo "configure:5250: 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 5243 "configure" +#line 5255 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:5250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5262: \"$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 @@ -5279,15 +5291,15 @@ fi ac_safe=`echo "editorconn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for editorconn.h""... $ac_c" 1>&6 -echo "configure:5283: checking for editorconn.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5286 "configure" +echo "configure:5295: checking for editorconn.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5298 "configure" #include "confdefs.h" #include <editorconn.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5291: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5303: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5329,7 +5341,7 @@ echo "checking for graphics libraries" 1>&6 -echo "configure:5333: checking for graphics libraries" >&5 +echo "configure:5345: checking for graphics libraries" >&5 test -z "$with_gif" && with_gif=yes; if test "$with_gif" = "yes"; then { test "$extra_verbose" = "yes" && cat << \EOF @@ -5347,15 +5359,15 @@ test -z "$with_xpm" && { ac_safe=`echo "X11/xpm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/xpm.h""... $ac_c" 1>&6 -echo "configure:5351: checking for X11/xpm.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5354 "configure" +echo "configure:5363: checking for X11/xpm.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5366 "configure" #include "confdefs.h" #include <X11/xpm.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5371: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5378,12 +5390,12 @@ } test -z "$with_xpm" && { echo $ac_n "checking for XpmReadFileToData in -lXpm""... $ac_c" 1>&6 -echo "configure:5382: checking for XpmReadFileToData in -lXpm" >&5 +echo "configure:5394: checking for XpmReadFileToData in -lXpm" >&5 ac_lib_var=`echo Xpm'_'XpmReadFileToData | sed 'y%./+-%__p_%'` xe_check_libs=" -lXpm " cat > conftest.$ac_ext <<EOF -#line 5387 "configure" +#line 5399 "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 @@ -5394,7 +5406,7 @@ XpmReadFileToData() ; return 0; } EOF -if { (eval echo configure:5398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5410: \"$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 @@ -5430,15 +5442,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:5434: checking for compface.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5437 "configure" +echo "configure:5446: checking for compface.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5449 "configure" #include "confdefs.h" #include <compface.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5442: \"$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* @@ -5461,12 +5473,12 @@ } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:5465: checking for UnGenFace in -lcompface" >&5 +echo "configure:5477: 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 5470 "configure" +#line 5482 "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 @@ -5477,7 +5489,7 @@ UnGenFace() ; return 0; } EOF -if { (eval echo configure:5481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5493: \"$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 @@ -5513,15 +5525,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:5517: checking for jpeglib.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5520 "configure" +echo "configure:5529: checking for jpeglib.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5532 "configure" #include "confdefs.h" #include <jpeglib.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5525: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5537: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5544,12 +5556,12 @@ } test -z "$with_jpeg" && { echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6 -echo "configure:5548: checking for jpeg_destroy_decompress in -ljpeg" >&5 +echo "configure:5560: 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 5553 "configure" +#line 5565 "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 @@ -5560,7 +5572,7 @@ jpeg_destroy_decompress() ; return 0; } EOF -if { (eval echo configure:5564: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5576: \"$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 @@ -5596,15 +5608,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:5600: checking for png.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5603 "configure" +echo "configure:5612: checking for png.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5615 "configure" #include "confdefs.h" #include <png.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5608: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5620: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5626,10 +5638,10 @@ fi } test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6 -echo "configure:5630: checking for pow" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5633 "configure" +echo "configure:5642: checking for pow" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5645 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char pow(); below. */ @@ -5652,7 +5664,7 @@ ; return 0; } EOF -if { (eval echo configure:5656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_pow=yes" else @@ -5677,12 +5689,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:5681: checking "$xe_msg_checking"" >&5 +echo "configure:5693: 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 5686 "configure" +#line 5698 "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 @@ -5693,7 +5705,7 @@ png_read_image() ; return 0; } EOF -if { (eval echo configure:5697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5709: \"$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 @@ -5743,15 +5755,15 @@ ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:5747: checking for Xm/Xm.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 5750 "configure" +echo "configure:5759: checking for Xm/Xm.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 5762 "configure" #include "confdefs.h" #include <Xm/Xm.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5755: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5767: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5768,12 +5780,12 @@ echo "$ac_t""yes" 1>&6 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6 -echo "configure:5772: checking for XmStringFree in -lXm" >&5 +echo "configure:5784: 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 5777 "configure" +#line 5789 "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 @@ -5784,7 +5796,7 @@ XmStringFree() ; return 0; } EOF -if { (eval echo configure:5788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5800: \"$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 @@ -5998,7 +6010,7 @@ if test "$with_mule" = "yes" ; then echo "checking for Mule-related features" 1>&6 -echo "configure:6002: checking for Mule-related features" >&5 +echo "configure:6014: checking for Mule-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining MULE EOF @@ -6013,12 +6025,12 @@ echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6 -echo "configure:6017: checking for strerror in -lintl" >&5 +echo "configure:6029: 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 6022 "configure" +#line 6034 "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 @@ -6029,7 +6041,7 @@ strerror() ; return 0; } EOF -if { (eval echo configure:6033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6045: \"$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 @@ -6062,19 +6074,19 @@ echo "checking for Mule input methods" 1>&6 -echo "configure:6066: checking for Mule input methods" >&5 +echo "configure:6078: checking for Mule input methods" >&5 test -z "$with_xim" && case "$opsys" in sol2* ) ;; *) with_xim=no ;; esac case "$with_xim" in "" | "yes" ) echo "checking for XIM" 1>&6 -echo "configure:6070: checking for XIM" >&5 +echo "configure:6082: checking for XIM" >&5 echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6 -echo "configure:6073: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:6085: 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 6078 "configure" +#line 6090 "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 @@ -6085,7 +6097,7 @@ XmImMbLookupString() ; return 0; } EOF -if { (eval echo configure:6089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6101: \"$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 @@ -6147,15 +6159,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:6151: checking for wnn/jllib.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6154 "configure" +echo "configure:6163: checking for wnn/jllib.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6166 "configure" #include "confdefs.h" #include <wnn/jllib.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6159: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6171: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6178,12 +6190,12 @@ } test -z "$with_wnn" && { echo $ac_n "checking for jl_dic_list in -lwnn""... $ac_c" 1>&6 -echo "configure:6182: checking for jl_dic_list in -lwnn" >&5 +echo "configure:6194: checking for jl_dic_list in -lwnn" >&5 ac_lib_var=`echo wnn'_'jl_dic_list | sed 'y%./+-%__p_%'` xe_check_libs=" -lwnn " cat > conftest.$ac_ext <<EOF -#line 6187 "configure" +#line 6199 "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 @@ -6194,7 +6206,7 @@ jl_dic_list() ; return 0; } EOF -if { (eval echo configure:6198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6210: \"$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 @@ -6231,12 +6243,12 @@ fi echo $ac_n "checking for jl_fi_dic_list in -lwnn""... $ac_c" 1>&6 -echo "configure:6235: checking for jl_fi_dic_list in -lwnn" >&5 +echo "configure:6247: 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 6240 "configure" +#line 6252 "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 @@ -6247,7 +6259,7 @@ jl_fi_dic_list() ; return 0; } EOF -if { (eval echo configure:6251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6263: \"$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 @@ -6279,15 +6291,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:6283: checking for canna/RK.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6286 "configure" +echo "configure:6295: checking for canna/RK.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6298 "configure" #include "confdefs.h" #include <canna/RK.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6291: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6303: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6310,12 +6322,12 @@ } test -z "$with_canna" && { echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6 -echo "configure:6314: checking for RkBgnBun in -lRKC" >&5 +echo "configure:6326: 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 6319 "configure" +#line 6331 "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 @@ -6326,7 +6338,7 @@ RkBgnBun() ; return 0; } EOF -if { (eval echo configure:6330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6342: \"$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 @@ -6349,12 +6361,12 @@ } test -z "$with_canna" && { echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6 -echo "configure:6353: checking for jrKanjiControl in -lcanna" >&5 +echo "configure:6365: 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 6358 "configure" +#line 6370 "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 @@ -6365,7 +6377,7 @@ jrKanjiControl() ; return 0; } EOF -if { (eval echo configure:6369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6381: \"$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 @@ -6446,10 +6458,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 utimes waitpid do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6450: checking for $ac_func" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6453 "configure" +echo "configure:6462: checking for $ac_func" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6465 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -6472,7 +6484,7 @@ ; return 0; } EOF -if { (eval echo configure:6476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6509,10 +6521,10 @@ for ac_func in realpath do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6513: checking for $ac_func" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6516 "configure" +echo "configure:6525: checking for $ac_func" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6528 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -6535,7 +6547,7 @@ ; return 0; } EOF -if { (eval echo configure:6539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6567,21 +6579,17 @@ fi ;; esac -test "$with_mocklisp" = "yes" && extra_objs="$extra_objs mocklisp.o" && if test "$extra_verbose" = "yes"; then - echo " xemacs will be linked with \"mocklisp.o\"" - fi - echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6 -echo "configure:6576: checking whether netdb declares h_errno" >&5 -cat > conftest.$ac_ext <<EOF -#line 6578 "configure" +echo "configure:6584: checking whether netdb declares h_errno" >&5 +cat > conftest.$ac_ext <<EOF +#line 6586 "configure" #include "confdefs.h" #include <netdb.h> int main() { return h_errno; ; return 0; } EOF -if { (eval echo configure:6585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6593: \"$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 @@ -6601,16 +6609,16 @@ rm -f conftest* echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6 -echo "configure:6605: checking for sigsetjmp" >&5 -cat > conftest.$ac_ext <<EOF -#line 6607 "configure" +echo "configure:6613: checking for sigsetjmp" >&5 +cat > conftest.$ac_ext <<EOF +#line 6615 "configure" #include "confdefs.h" #include <setjmp.h> int main() { sigjmp_buf bar; sigsetjmp (bar, 0); ; return 0; } EOF -if { (eval echo configure:6614: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6622: \"$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 @@ -6630,11 +6638,11 @@ rm -f conftest* echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6 -echo "configure:6634: checking whether localtime caches TZ" >&5 +echo "configure:6642: checking whether localtime caches TZ" >&5 if test "$ac_cv_func_tzset" = "yes"; then cat > conftest.$ac_ext <<EOF -#line 6638 "configure" +#line 6646 "configure" #include "confdefs.h" #include <time.h> #if STDC_HEADERS @@ -6669,7 +6677,7 @@ exit (0); } EOF -if { (eval echo configure:6673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:6681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then emacs_cv_localtime_cache=no else @@ -6698,9 +6706,9 @@ if test "$HAVE_TIMEVAL" = "yes"; then echo $ac_n "checking whether gettimeofday cannot accept two arguments""... $ac_c" 1>&6 -echo "configure:6702: checking whether gettimeofday cannot accept two arguments" >&5 -cat > conftest.$ac_ext <<EOF -#line 6704 "configure" +echo "configure:6710: checking whether gettimeofday cannot accept two arguments" >&5 +cat > conftest.$ac_ext <<EOF +#line 6712 "configure" #include "confdefs.h" #ifdef TIME_WITH_SYS_TIME @@ -6722,7 +6730,7 @@ ; return 0; } EOF -if { (eval echo configure:6726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""no" 1>&6 else @@ -6744,19 +6752,19 @@ echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:6748: checking for inline" >&5 +echo "configure:6756: checking for inline" >&5 ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <<EOF -#line 6753 "configure" +#line 6761 "configure" #include "confdefs.h" int main() { } $ac_kw foo() { ; return 0; } EOF -if { (eval echo configure:6760: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6768: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -6801,17 +6809,17 @@ # 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:6805: checking for working alloca.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6808 "configure" +echo "configure:6813: checking for working alloca.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6816 "configure" #include "confdefs.h" #include <alloca.h> int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:6815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -6835,10 +6843,10 @@ fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:6839: checking for alloca" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6842 "configure" +echo "configure:6847: checking for alloca" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6850 "configure" #include "confdefs.h" #ifdef __GNUC__ @@ -6861,7 +6869,7 @@ char *p = (char *) alloca(1); ; return 0; } EOF -if { (eval echo configure:6865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -6900,10 +6908,10 @@ echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:6904: checking whether alloca needs Cray hooks" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6907 "configure" +echo "configure:6912: checking whether alloca needs Cray hooks" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6915 "configure" #include "confdefs.h" #if defined(CRAY) && ! defined(CRAY2) webecray @@ -6927,10 +6935,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:6931: checking for $ac_func" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6934 "configure" +echo "configure:6939: checking for $ac_func" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6942 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -6953,7 +6961,7 @@ ; return 0; } EOF -if { (eval echo configure:6957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6983,10 +6991,10 @@ fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:6987: checking stack direction for C alloca" >&5 - -cat > conftest.$ac_ext <<EOF -#line 6990 "configure" +echo "configure:6995: checking stack direction for C alloca" >&5 + +cat > conftest.$ac_ext <<EOF +#line 6998 "configure" #include "confdefs.h" find_stack_direction () { @@ -7005,7 +7013,7 @@ exit (find_stack_direction() < 0); } EOF -if { (eval echo configure:7009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:7017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_c_stack_direction=1 else @@ -7032,10 +7040,10 @@ fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:7036: checking for pid_t" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7039 "configure" +echo "configure:7044: checking for pid_t" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7047 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -7067,15 +7075,15 @@ ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 -echo "configure:7071: checking for vfork.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7074 "configure" +echo "configure:7079: checking for vfork.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7082 "configure" #include "confdefs.h" #include <vfork.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7087: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7103,10 +7111,10 @@ fi echo $ac_n "checking for working vfork""... $ac_c" 1>&6 -echo "configure:7107: checking for working vfork" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7110 "configure" +echo "configure:7115: checking for working vfork" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7118 "configure" #include "confdefs.h" /* Thanks to Paul Eggert for this test. */ #include <stdio.h> @@ -7201,7 +7209,7 @@ } } EOF -if { (eval echo configure:7205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:7213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_func_vfork_works=yes else @@ -7226,10 +7234,10 @@ echo $ac_n "checking for working strcoll""... $ac_c" 1>&6 -echo "configure:7230: checking for working strcoll" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7233 "configure" +echo "configure:7238: checking for working strcoll" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7241 "configure" #include "confdefs.h" #include <string.h> main () @@ -7239,7 +7247,7 @@ strcoll ("123", "456") >= 0); } EOF -if { (eval echo configure:7243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:7251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then ac_cv_func_strcoll_works=yes else @@ -7263,261 +7271,54 @@ fi -for ac_hdr in unistd.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7271: checking for $ac_hdr" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7274 "configure" -#include "confdefs.h" -#include <$ac_hdr> -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7279: \"$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 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - { test "$extra_verbose" = "yes" && cat << EOF - Defining $ac_tr_hdr -EOF -cat >> confdefs.h <<EOF -#define $ac_tr_hdr 1 -EOF -} - -else - echo "$ac_t""no" 1>&6 -fi -done - -for ac_func in getpagesize -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7311: checking for $ac_func" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7314 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); 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 $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:7337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - { test "$extra_verbose" = "yes" && cat << EOF - Defining $ac_tr_func -EOF -cat >> confdefs.h <<EOF -#define $ac_tr_func 1 -EOF -} - -else - echo "$ac_t""no" 1>&6 -fi -done - echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:7365: checking for working mmap" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7368 "configure" -#include "confdefs.h" - -/* Thanks to Mike Haertel and Jim Avera for this test. - Here is a matrix of mmap possibilities: - mmap private not fixed - mmap private fixed at somewhere currently unmapped - mmap private fixed at somewhere already mapped - mmap shared not fixed - mmap shared fixed at somewhere currently unmapped - mmap shared fixed at somewhere already mapped - For private mappings, we should verify that changes cannot be read() - back from the file, nor mmap's back from the file at a different - address. (There have been systems where private was not correctly - implemented like the infamous i386 svr4.0, and systems where the - VM page cache was not coherent with the filesystem buffer cache - like early versions of FreeBSD and possibly contemporary NetBSD.) - For shared mappings, we should conversely verify that changes get - propogated back to all the places they're supposed to be. - - Grep wants private fixed already mapped. - The main things grep needs to know about mmap are: - * does it exist and is it safe to write into the mmap'd area - * how to use it (BSD variants) */ -#include <sys/types.h> +echo "configure:7276: checking for working mmap" >&5 +cat > conftest.$ac_ext <<EOF +#line 7278 "configure" +#include "confdefs.h" +#include <stdio.h> +#include <unistd.h> #include <fcntl.h> #include <sys/mman.h> -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -# ifdef HAVE_UNISTD_H -# include <unistd.h> -# endif - -/* Assume that all systems that can run configure have sys/param.h. */ -# ifndef HAVE_SYS_PARAM_H -# define HAVE_SYS_PARAM_H 1 -# endif - -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef HAVE_SYS_PARAM_H -# include <sys/param.h> -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -#ifdef __cplusplus -extern "C" { void *malloc(unsigned); } -#else -char *malloc(); +#ifndef MAP_VARIABLE +#define MAP_VARIABLE 0 #endif -int -main() +#ifndef MAP_FAILED +#define MAP_FAILED -1 +#endif + +int main (int argc, char *argv[]) { - char *data, *data2, *data3; - int i, pagesize; - int fd; - - pagesize = getpagesize(); - - /* - * First, make a file with some known garbage in it. - */ - data = malloc(pagesize); - if (!data) - exit(1); - for (i = 0; i < pagesize; ++i) - *(data + i) = rand(); - umask(0); - fd = creat("conftestmmap", 0600); - if (fd < 0) - exit(1); - if (write(fd, data, pagesize) != pagesize) - exit(1); - close(fd); - - /* - * Next, try to mmap the file at a fixed address which - * already has something else allocated at it. If we can, - * also make sure that we see the same garbage. - */ - fd = open("conftestmmap", O_RDWR); - if (fd < 0) - exit(1); - data2 = malloc(2 * pagesize); - if (!data2) - exit(1); - data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); - if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - exit(1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - exit(1); - - /* - * Finally, make sure that changes to the mapped area - * do not percolate back to the file as seen by read(). - * (This is a bug on some variants of i386 svr4.0.) - */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = malloc(pagesize); - if (!data3) - exit(1); - if (read(fd, data3, pagesize) != pagesize) - exit(1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - exit(1); - close(fd); - unlink("conftestmmap"); - exit(0); -} - -EOF -if { (eval echo configure:7508: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 + int fd = -1; + caddr_t p; +#ifndef MAP_ANONYMOUS + fd = open ("/dev/zero", O_RDWR); + if (fd < 0) + return 1; +#define MAP_ANONYMOUS 0 +#endif + if (mmap(0, 1024, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS, + fd, 0) != (void *) MAP_FAILED) + return 0; + perror ("conftest: mmap failed"); + return 1; +} +EOF +if { (eval echo configure:7311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then - ac_cv_func_mmap_fixed_mapped=yes + have_mmap=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* - ac_cv_func_mmap_fixed_mapped=no + have_mmap=no fi rm -fr conftest* - -echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6 -if test $ac_cv_func_mmap_fixed_mapped = yes; then - { test "$extra_verbose" = "yes" && cat << \EOF +echo "$ac_t""$have_mmap" 1>&6 +test "$have_mmap" = "yes" && { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_MMAP EOF cat >> confdefs.h <<\EOF @@ -7525,11 +7326,9 @@ EOF } -fi - - -test "$GNU_MALLOC" != "yes" -a "$ac_cv_func_mmap_fixed_mapped" != "yes" && rel_alloc=no -test "$rel_alloc" = "default" -a "$ac_cv_func_mmap_fixed_mapped" = "yes" && rel_alloc=yes + +test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no +test "$rel_alloc" = "default" -a "$have_mmap" = "yes" && rel_alloc=yes test "$rel_alloc" = "yes" && { test "$extra_verbose" = "yes" && cat << \EOF Defining REL_ALLOC EOF @@ -7540,10 +7339,10 @@ echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:7544: checking for socket" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7547 "configure" +echo "configure:7343: checking for socket" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7346 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char socket(); below. */ @@ -7566,7 +7365,7 @@ ; return 0; } EOF -if { (eval echo configure:7570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_socket=yes" else @@ -7581,15 +7380,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:7585: checking for netinet/in.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7588 "configure" +echo "configure:7384: checking for netinet/in.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7387 "configure" #include "confdefs.h" #include <netinet/in.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7593: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7392: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7606,15 +7405,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:7610: checking for arpa/inet.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7613 "configure" +echo "configure:7409: checking for arpa/inet.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7412 "configure" #include "confdefs.h" #include <arpa/inet.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7618: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7417: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7639,9 +7438,9 @@ } echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6 -echo "configure:7643: checking "for sun_len member in struct sockaddr_un"" >&5 +echo "configure:7442: checking "for sun_len member in struct sockaddr_un"" >&5 cat > conftest.$ac_ext <<EOF -#line 7645 "configure" +#line 7444 "configure" #include "confdefs.h" #include <sys/types.h> @@ -7652,7 +7451,7 @@ static struct sockaddr_un x; x.sun_len = 1; ; return 0; } EOF -if { (eval echo configure:7656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7455: \"$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 @@ -7683,10 +7482,10 @@ echo $ac_n "checking for msgget""... $ac_c" 1>&6 -echo "configure:7687: checking for msgget" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7690 "configure" +echo "configure:7486: checking for msgget" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7489 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char msgget(); below. */ @@ -7709,7 +7508,7 @@ ; return 0; } EOF -if { (eval echo configure:7713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_msgget=yes" else @@ -7724,15 +7523,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:7728: checking for sys/ipc.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7731 "configure" +echo "configure:7527: checking for sys/ipc.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7530 "configure" #include "confdefs.h" #include <sys/ipc.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7535: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7749,15 +7548,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:7753: checking for sys/msg.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7756 "configure" +echo "configure:7552: checking for sys/msg.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7555 "configure" #include "confdefs.h" #include <sys/msg.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7761: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7560: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7795,15 +7594,15 @@ ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dirent.h""... $ac_c" 1>&6 -echo "configure:7799: checking for dirent.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7802 "configure" +echo "configure:7598: checking for dirent.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7601 "configure" #include "confdefs.h" #include <dirent.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7807: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7606: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7830,15 +7629,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:7834: checking for sys/dir.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7837 "configure" +echo "configure:7633: checking for sys/dir.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7636 "configure" #include "confdefs.h" #include <sys/dir.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7842: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7641: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7871,15 +7670,15 @@ ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for nlist.h""... $ac_c" 1>&6 -echo "configure:7875: checking for nlist.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 7878 "configure" +echo "configure:7674: checking for nlist.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7677 "configure" #include "confdefs.h" #include <nlist.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7883: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7682: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7949,7 +7748,7 @@ echo "checking "for sound support"" 1>&6 -echo "configure:7953: checking "for sound support"" >&5 +echo "configure:7752: checking "for sound support"" >&5 case "$with_sound" in native | both ) with_native_sound=yes;; nas | no ) with_native_sound=no;; @@ -7975,12 +7774,12 @@ *-sgi-* ) echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6 -echo "configure:7979: checking for ALopenport in -laudio" >&5 +echo "configure:7778: 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 7984 "configure" +#line 7783 "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 @@ -7991,7 +7790,7 @@ ALopenport() ; return 0; } EOF -if { (eval echo configure:7995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7794: \"$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 @@ -8020,12 +7819,12 @@ hppa*-hp-hpux* ) echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6 -echo "configure:8024: checking for AOpenAudio in -lAlib" >&5 +echo "configure:7823: 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 8029 "configure" +#line 7828 "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 @@ -8036,7 +7835,7 @@ AOpenAudio() ; return 0; } EOF -if { (eval echo configure:8040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7839: \"$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 @@ -8073,15 +7872,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:8077: checking for ${dir}/soundcard.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8080 "configure" +echo "configure:7876: checking for ${dir}/soundcard.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7879 "configure" #include "confdefs.h" #include <${dir}/soundcard.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8085: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7884: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8151,7 +7950,7 @@ fi LIBS="-laudio $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-laudio\" to \$LIBS"; fi cat > conftest.$ac_ext <<EOF -#line 8155 "configure" +#line 7954 "configure" #include "confdefs.h" #include <audio/Xtutil.h> EOF @@ -8178,7 +7977,7 @@ if test "$with_tty" = "yes" ; then echo "checking for TTY-related features" 1>&6 -echo "configure:8182: checking for TTY-related features" >&5 +echo "configure:7981: checking for TTY-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_TTY EOF @@ -8193,15 +7992,15 @@ ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termios.h""... $ac_c" 1>&6 -echo "configure:8197: checking for termios.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8200 "configure" +echo "configure:7996: checking for termios.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 7999 "configure" #include "confdefs.h" #include <termios.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8205: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8004: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8228,15 +8027,15 @@ 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:8232: checking for termio.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8235 "configure" +echo "configure:8031: checking for termio.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8034 "configure" #include "confdefs.h" #include <termio.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8240: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8039: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8266,20 +8065,17 @@ fi - #### Attn: Bill Perry: Remove next line when GPM support is added - test -z "$with_gpm" && with_gpm=no - - test -z "$with_gpm" && { ac_safe=`echo "gpm.h" | sed 'y%./+-%__p_%'` + 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:8275: checking for gpm.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8278 "configure" +echo "configure:8071: checking for gpm.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8074 "configure" #include "confdefs.h" #include <gpm.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8301,24 +8097,24 @@ fi } test -z "$with_gpm" && { -echo $ac_n "checking for connect_to_gpm in -lgpm""... $ac_c" 1>&6 -echo "configure:8306: checking for connect_to_gpm in -lgpm" >&5 -ac_lib_var=`echo gpm'_'connect_to_gpm | sed 'y%./+-%__p_%'` +echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6 +echo "configure:8102: 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 8311 "configure" +#line 8107 "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 connect_to_gpm(); +char Gpm_Open(); int main() { -connect_to_gpm() +Gpm_Open() ; return 0; } EOF -if { (eval echo configure:8322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8118: \"$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 @@ -8357,12 +8153,12 @@ if test -z "$with_ncurses"; then echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6 -echo "configure:8361: checking for tgetent in -lncurses" >&5 +echo "configure:8157: 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 8366 "configure" +#line 8162 "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 @@ -8373,7 +8169,7 @@ tgetent() ; return 0; } EOF -if { (eval echo configure:8377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8173: \"$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 @@ -8406,15 +8202,15 @@ ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6 -echo "configure:8410: checking for ncurses/curses.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8413 "configure" +echo "configure:8206: checking for ncurses/curses.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8209 "configure" #include "confdefs.h" #include <ncurses/curses.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8418: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8214: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8436,15 +8232,15 @@ ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6 -echo "configure:8440: checking for ncurses/term.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8443 "configure" +echo "configure:8236: checking for ncurses/term.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8239 "configure" #include "confdefs.h" #include <ncurses/term.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8448: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8469,20 +8265,20 @@ fi LIBS="-lncurses $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lncurses\" to \$LIBS"; fi - if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then + if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then save_c_switch_site="$c_switch_site" 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:8478: checking for ncurses/curses.h" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8481 "configure" +echo "configure:8274: checking for ncurses/curses.h" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8277 "configure" #include "confdefs.h" #include <ncurses/curses.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8486: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8282: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8502,7 +8298,7 @@ echo "$ac_t""no" 1>&6 fi - if test "$ac_cv_header_ncurses_curses_h" = "yes"; + if test "$ac_cv_header_ncurses_curses_h" = "yes" then echo "configure: warning: "Your system has the bogus ncurses include bug."" 1>&2 else c_switch_site="$save_c_switch_site" fi @@ -8517,12 +8313,12 @@ for lib in curses termlib termcap; do echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6 -echo "configure:8521: checking for tgetent in -l$lib" >&5 +echo "configure:8317: 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 8526 "configure" +#line 8322 "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 @@ -8533,7 +8329,7 @@ tgetent() ; return 0; } EOF -if { (eval echo configure:8537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8333: \"$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 @@ -8564,12 +8360,12 @@ else echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6 -echo "configure:8568: checking for tgetent in -lcurses" >&5 +echo "configure:8364: 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 8573 "configure" +#line 8369 "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 @@ -8580,7 +8376,7 @@ tgetent() ; return 0; } EOF -if { (eval echo configure:8584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8380: \"$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 @@ -8597,14 +8393,13 @@ LIBS="-lcurses $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lcurses\" to \$LIBS"; fi else echo "$ac_t""no" 1>&6 - echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6 -echo "configure:8603: checking for tgetent in -ltermcap" >&5 +echo "configure:8398: 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 8608 "configure" +#line 8403 "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 @@ -8615,7 +8410,7 @@ tgetent() ; return 0; } EOF -if { (eval echo configure:8619: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8414: \"$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 @@ -8669,17 +8464,17 @@ fi echo "checking for database support" 1>&6 -echo "configure:8673: checking for database support" >&5 +echo "configure:8468: 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:8678: checking for dbm_open in -lgdbm" >&5 +echo "configure:8473: 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 8683 "configure" +#line 8478 "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 @@ -8690,7 +8485,7 @@ dbm_open() ; return 0; } EOF -if { (eval echo configure:8694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8489: \"$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 @@ -8712,10 +8507,10 @@ if test "$with_database_gnudbm" != "yes"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:8716: checking for dbm_open" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8719 "configure" +echo "configure:8511: checking for dbm_open" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8514 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dbm_open(); below. */ @@ -8738,7 +8533,7 @@ ; return 0; } EOF -if { (eval echo configure:8742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_dbm_open=yes" else @@ -8774,10 +8569,10 @@ if test "$with_database_dbm" != "no"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:8778: checking for dbm_open" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8781 "configure" +echo "configure:8573: checking for dbm_open" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8576 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dbm_open(); below. */ @@ -8800,7 +8595,7 @@ ; return 0; } EOF -if { (eval echo configure:8804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_dbm_open=yes" else @@ -8821,12 +8616,12 @@ if test "$need_libdbm" != "no"; then echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6 -echo "configure:8825: checking for dbm_open in -ldbm" >&5 +echo "configure:8620: 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 8830 "configure" +#line 8625 "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 @@ -8837,7 +8632,7 @@ dbm_open() ; return 0; } EOF -if { (eval echo configure:8841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8636: \"$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 @@ -8874,10 +8669,10 @@ if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for dbopen""... $ac_c" 1>&6 -echo "configure:8878: checking for dbopen" >&5 - -cat > conftest.$ac_ext <<EOF -#line 8881 "configure" +echo "configure:8673: checking for dbopen" >&5 + +cat > conftest.$ac_ext <<EOF +#line 8676 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dbopen(); below. */ @@ -8900,7 +8695,7 @@ ; return 0; } EOF -if { (eval echo configure:8904: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_dbopen=yes" else @@ -8921,12 +8716,12 @@ if test "$need_libdb" != "no"; then echo $ac_n "checking for dbopen in -ldb""... $ac_c" 1>&6 -echo "configure:8925: checking for dbopen in -ldb" >&5 +echo "configure:8720: 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 8930 "configure" +#line 8725 "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 @@ -8937,7 +8732,7 @@ dbopen() ; return 0; } EOF -if { (eval echo configure:8941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8736: \"$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 @@ -8961,7 +8756,7 @@ if test "$with_database_berkdb" = "yes"; then for path in "db/db.h" "db.h"; do cat > conftest.$ac_ext <<EOF -#line 8965 "configure" +#line 8760 "configure" #include "confdefs.h" #ifdef HAVE_INTTYPES_H #define __BIT_TYPES_DEFINED__ @@ -8979,7 +8774,7 @@ ; return 0; } EOF -if { (eval echo configure:8983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8778: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_path="$path"; break else @@ -9031,12 +8826,12 @@ if test "$with_socks" = "yes"; then echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:9035: checking for SOCKSinit in -lsocks" >&5 +echo "configure:8830: 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 9040 "configure" +#line 8835 "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 @@ -9047,7 +8842,7 @@ SOCKSinit() ; return 0; } EOF -if { (eval echo configure:9051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8846: \"$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 @@ -9100,15 +8895,15 @@ LIBS="-Bstatic -lut -Bdynamic $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-Bstatic -lut -Bdynamic\" to \$LIBS"; fi fi -c_switch_general="-DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system" -c_switch_window_system="$c_switch_x_site $X_CFLAGS" -c_switch_all="$c_switch_general $c_switch_window_system" -ld_switch_general="$ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run" -ld_switch_window_system="$ld_switch_x_site" -ld_switch_all="$ld_switch_general $ld_switch_window_system" -ld_libs_general="$LIBS $libs_machine $libs_system $libs_standard" -ld_libs_window_system="$X_PRE_LIBS $libs_x $X_EXTRA_LIBS" -ld_libs_all="$ld_libs_window_system $ld_libs_general" +c_switch_general=`echo -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system` +c_switch_window_system=`echo $c_switch_x_site $X_CFLAGS` +c_switch_all=`echo $c_switch_general $c_switch_window_system` +ld_switch_general=`echo $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run` +ld_switch_window_system=`echo $ld_switch_x_site` +ld_switch_all=`echo $ld_switch_general $ld_switch_window_system` +ld_libs_general=`echo $LIBS $libs_machine $libs_system $libs_standard` +ld_libs_window_system=`echo $X_EXTRA_LIBS $libs_x $X_PRE_LIBS` +ld_libs_all=`echo $ld_libs_window_system $ld_libs_general` SRC_SUBDIR_DEPS="$MAKE_SUBDIR" @@ -9118,8 +8913,8 @@ test -d lock || mkdir lock for dir in $MAKE_SUBDIR; do test -d "$dir" || mkdir "$dir" - SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $dir/Makefile" - internal_makefile_list="$internal_makefile_list $dir/Makefile.in" + SUBDIR_MAKEFILES=`echo $SUBDIR_MAKEFILES $dir/Makefile` + internal_makefile_list=`echo $internal_makefile_list $dir/Makefile.in` done @@ -9135,17 +8930,17 @@ echo "ld_switch_all = $ld_switch_all" echo "ld_libs_general = $ld_libs_general" echo "ld_libs_window_system = $ld_libs_window_system" -echo "ld_libs_all = $ld_libs_all" +echo "ld_libs_all=\"$ld_libs_all\"" echo "" fi if test -f $srcdir/src/gdbinit -a ! -f src/gdbinit ; then - echo "creating src/gdbinit" + echo "creating src/gdbinit"; echo "" echo "source $srcdir/src/gdbinit" > src/gdbinit fi cat > conftest.$ac_ext <<EOF -#line 9149 "configure" +#line 8944 "configure" #include "confdefs.h" int main() { @@ -9155,9 +8950,9 @@ ; return 0; } EOF -if { (eval echo configure:9159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - echo "creating .sbinit" +if { (eval echo configure:8954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "creating .sbinit"; echo "" ( echo "# For use with Sun WorkShop's Source browser." echo "# See sbquery(1) and sbinit(4) for more information" for dir in $MAKE_SUBDIR; do echo "import $dir"; done @@ -9331,14 +9126,6 @@ EOF } -test "$with_mocklisp" = "yes" && { test "$extra_verbose" = "yes" && cat << \EOF - Defining MOCKLISP_SUPPORT -EOF -cat >> confdefs.h <<\EOF -#define MOCKLISP_SUPPORT 1 -EOF -} - test "$with_gcc" = "yes" && { test "$extra_verbose" = "yes" && cat << \EOF Defining USE_GCC EOF @@ -9539,7 +9326,7 @@ fi test "$with_gif" = yes && echo " Compiling in support for GIF image conversion." -if test "$with_xpm" = yes; then +if test "$with_xpm" = yes; then echo " Compiling in support for XPM images." else echo " --------------------------------------------------------------------" @@ -9581,7 +9368,6 @@ test "$with_cde" = yes && echo " Compiling in support for CDE." test "$with_tooltalk" = yes && echo " Compiling in support for ToolTalk." test "$with_offix" = yes && echo " Compiling in support for OffiX." -test "$with_mocklisp" = yes && echo " Compiling in support for Mocklisp." test "$with_workshop" = yes && echo " Compiling in support for Sun WorkShop." test "$with_energize" = yes && echo " Compiling in support for Lucid Energize (doesn't currently work)." case "$with_menubars" in
--- a/configure.in Mon Aug 13 09:37:21 2007 +0200 +++ b/configure.in Mon Aug 13 09:38:25 2007 +0200 @@ -1,6 +1,4 @@ dnl Define our own header notice with own copyrights -define([PRINT_VAR],[ifelse([$#] ,0, , [$#], 1, echo "[$1] = $[$1]", echo "[$1] = $[$1]" -[PRINT_VAR(builtin([shift],$@))])]) define([AC_INIT_NOTICE], [#### Configuration script for XEmacs. Largely divergent from FSF. #### Guess values for system-dependent variables and create Makefiles. @@ -60,6 +58,10 @@ dnl - ordinary libs are handled separately from X libs (might be a mistake) dnl - various random kludges (e.g. -with-dnet=no +dnl PRINT_VAR(var, var, ...) prints values of shell variables +define([PRINT_VAR],[ifelse([$#] ,0, , [$#], 1, echo "[$1]=\"$[$1]\"", echo "[$1] = $[$1]" +[PRINT_VAR(builtin([shift],$@))])]) + dnl Disable cache files: dnl This is controversial, but I am convinced this is the right way to go, dnl at least by default. Otherwise there are too many surprises. @@ -197,7 +199,7 @@ dnl # $ld_switch_x_machine $ld_switch_x_system xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS' xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' -xe_libs='$xe_check_libs $X_PRE_LIBS $libs_x $X_EXTRA_LIBS $LIBS $libs_machine $libs_system $libs_standard' +xe_libs='$xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&AC_FD_CC' ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&AC_FD_CC' @@ -232,7 +234,6 @@ dnl The variables have the same names as the options, with dnl dashes changed to underlines. build=NONE -cache_file=/dev/null exec_prefix=NONE host=NONE no_create= @@ -249,6 +250,15 @@ verbose= x_includes=NONE x_libraries=NONE + +dnl Allow this script to work with zsh, by setting sh emulation options +if test -n "$ZSH_VERSION"; then + setopt NO_BAD_PATTERN NO_BANG_HIST NO_BG_NICE NO_EQUALS NO_FUNCTION_ARGZERO + setopt GLOB_SUBST NO_HUP INTERACTIVE_COMMENTS KSH_ARRAYS NO_MULTIOS NO_NOMATCH + setopt RM_STAR_SILENT POSIX_BUILTINS SH_FILE_EXPANSION SH_GLOB SH_OPTION_LETTERS + setopt SH_WORD_SPLIT BSD_ECHO IGNORE_BRACES +fi + dnl Installation directory options. dnl These are left unexpanded so users can "make install exec_prefix=/foo" dnl and all the variables that are supposed to be based on exec_prefix @@ -293,9 +303,6 @@ dnl Establish some default values dnl ----------------------------- -dnl Prevent autoconf2 caching -cache_file=/dev/null - XE_APPEND(lib-src, MAKE_SUBDIR) dnl run_in_place='no' @@ -335,7 +342,7 @@ native_sound_lib='' dnl make normal error-checking be the default in alpha and beta versions, so dnl that bugs get noticed. Change this for released versions. -error_check_default='yes' +error_check_default="yes" error_check_extents=$error_check_default error_check_typecheck=$error_check_default error_check_bufpos=$error_check_default @@ -349,13 +356,13 @@ dnl use-assertions should be 'yes' by default. Too many people in this dnl world have core dumps turned off by default or \"cannot find where the dnl core file went\". At least we should get some useful output ... -use_assertions='yes' +use_assertions="yes" dnl the following is set to yes or no later. -with_gif='' +with_gif="" dnl the following is set to yes or no later. -with_toolbars='' -use_union_type='no' -with_dnet='' +with_toolbars="" +use_union_type="no" +with_dnet="" dnl On Sun systems, people sometimes set up the variable CPP dnl with a value that is a directory, not an executable at all. @@ -451,8 +458,9 @@ TTY options: +--with-tty=no Don't support TTY-s. --with-ncurses (*) Use the ncurses library for tty support. ---with-gpm (*) Compile in support for General Purpose Mouse. +--with-gpm (*) Compile in support for General Purpose Mouse. Additional features: @@ -478,9 +486,6 @@ --native-sound-lib=LIB Native sound support library. Needed on Suns with --with-sound=both because both sound libraries are called libaudio. ---with-mocklisp Compile with Mocklisp support. Don't do this - unless you have a Mocklisp program that you need - to run. --with-pop support POP for mail retrieval --with-kerberos support Kerberos-authenticated POP --with-hesiod support Hesiod to get the POP server host @@ -583,8 +588,8 @@ case "$i" in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) ;; - -norecursion | --norecursion | --norecursio | --norecursi \ - | --norecurs | --norecur | --norecu | --norec | --nore | --nor) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; *) quoted_i="`echo $i | sed $quoted_sed_magic`" quoted_arguments="$quoted_arguments '$quoted_i'" ;; @@ -662,7 +667,6 @@ with_canna | \ with_wnn | \ with_wnn6 | \ - with_mocklisp | \ with_energize | \ with_workshop | \ with_sparcworks | \ @@ -691,9 +695,11 @@ dnl Options that take a user-supplied value, as in --puresize=8000000 + dnl The cache-file option is ignored (for compatibility with other configures) srcdir | \ compiler | \ puresize | \ + cache_file | \ native_sound_lib | \ x_includes | \ x_libraries | \ @@ -1674,6 +1680,7 @@ CPP_to_sh(C_DEBUG_SWITCH, c_debug_switch, -g) CPP_to_sh(C_OPTIMIZE_SWITCH, c_optimize_switch, -O) +CPP_boolean_to_sh(ORDINARY_LINK, ordinary_link) CPP_boolean_to_sh(SYSTEM_MALLOC, system_malloc) CPP_boolean_to_sh(TERMINFO, have_terminfo) CPP_boolean_to_sh(MAIL_USE_FLOCK, mail_use_flock) @@ -1704,16 +1711,20 @@ CPP=`eval "echo $CPP"` eval `$CPP -Isrc $tempcname \ | grep 'configure___' \ - | sed -n -e 's/^configure___ \([[^=]]*=\)\(.*\)$/\1"\2"/p'` + | sed -n -e 's/^configure___ \([[^= ]]* *=\)\(.*\)$/\1\`echo \2\`/p'` if test -z "$SPECIFIED_CFLAGS"; then eval `$CPP -Isrc -DTHIS_IS_CONFIGURE $tempcname \ | grep 'configure___' \ - | sed -n -e 's/^configure___ \([[^=]]*=\)\(.*\)$/\1"\2"/p'` + | sed -n -e 's/^configure___ \([[^= ]]* *=\)\(.*\)$/\1\`echo \2\`/p'` else REAL_CFLAGS="$CFLAGS" fi + rm $tempcname +dnl Non-ordinary link usually requires -lc +test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc" + dnl override CFLAGS if user wishes test "$cflags" != "NO_CFLAGS_DEFINED" && REAL_CFLAGS="$cflags" @@ -2053,7 +2064,7 @@ AC_CHECK_HEADER(X11/Intrinsic.h, , [AC_MSG_ERROR("Unable to find X11 header files.")]) - dnl -lXt -lX11 are required + dnl -lXt and -lX11 are required dnl Some broken systems require the magic "-b i486-linuxaout" flag AC_CHECK_LIB(X11, XOpenDisplay, have_lib_x11=yes) if test "$have_lib_x11" != "yes"; then @@ -2065,6 +2076,10 @@ libs_x="-lX11" test "$extra_verbose" = "yes" && echo " Setting libs_x to \"-lX11\"" + dnl Autodetect -lXext + AC_CHECK_LIB(Xext, XShapeSelectInput, XE_PREPEND(-lXext, libs_x)) + + dnl Require -lXt case "$canonical" in *-sunos4.* ) # Bug workaround ld_switch_x_site="$ld_switch_x_site -u _XtToolkitInitialize" ;; esac @@ -2092,9 +2107,6 @@ AC_MSG_RESULT(no) fi - dnl Autodetect -lXext - AC_CHECK_LIB(Xext, XShapeSelectInput, XE_PREPEND(-lXext, libs_x)) - dnl autodetect -lXmu case "$canonical" in *-sunos4.* ) # Bug workaround ld_switch_x_site="$ld_switch_x_site -u _get_applicationShellWidgetClass" ;; @@ -2469,9 +2481,6 @@ test "$ac_cv_func_realpath" != "yes" && XE_ADD_OBJS(realpath.o) ;; esac -dnl mocklisp support - probably should excise it... -test "$with_mocklisp" = "yes" && XE_ADD_OBJS(mocklisp.o) - dnl If netdb.h does not declare h_errno, we must declare it by hand. AC_MSG_CHECKING(whether netdb declares h_errno) AC_TRY_LINK([#include <netdb.h>], @@ -2575,12 +2584,46 @@ dnl than just check for its existence.) If so, it defines HAVE_STRCOLL. AC_FUNC_STRCOLL -AC_FUNC_MMAP +dnl We used to call AC_FUNC_MMAP here +dnl Instead we now use following, suggested by Neal Becker +AC_MSG_CHECKING(for working mmap) +AC_TRY_RUN([#include <stdio.h> +#include <unistd.h> +#include <fcntl.h> +#include <sys/mman.h> + +#ifndef MAP_VARIABLE +#define MAP_VARIABLE 0 +#endif + +#ifndef MAP_FAILED +#define MAP_FAILED -1 +#endif + +int main (int argc, char *argv[]) +{ + int fd = -1; + caddr_t p; +#ifndef MAP_ANONYMOUS + fd = open ("/dev/zero", O_RDWR); + if (fd < 0) + return 1; +#define MAP_ANONYMOUS 0 +#endif + if (mmap(0, 1024, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS, + fd, 0) != (void *) MAP_FAILED) + return 0; + perror ("conftest: mmap failed"); + return 1; +}], have_mmap=yes, have_mmap=no) +AC_MSG_RESULT($have_mmap) +test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP) dnl rel_alloc requires either GNU malloc or system malloc with mmap dnl We only turn rel_alloc on by default if mmap is available. -test "$GNU_MALLOC" != "yes" -a "$ac_cv_func_mmap_fixed_mapped" != "yes" && rel_alloc=no -test "$rel_alloc" = "default" -a "$ac_cv_func_mmap_fixed_mapped" = "yes" && rel_alloc=yes +test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no +test "$rel_alloc" = "default" -a "$have_mmap" = "yes" && rel_alloc=yes test "$rel_alloc" = "yes" && AC_DEFINE(REL_ALLOC) dnl Check for Internet sockets. @@ -2727,11 +2770,8 @@ [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])]) dnl Autodetect gpm - #### Attn: Bill Perry: Remove next line when GPM support is added - test -z "$with_gpm" && with_gpm=no - test -z "$with_gpm" && { AC_CHECK_HEADER(gpm.h, , with_gpm=no) } - test -z "$with_gpm" && { AC_CHECK_LIB(gpm, connect_to_gpm, with_gpm=yes, with_gpm=no) } + test -z "$with_gpm" && { AC_CHECK_LIB(gpm, Gpm_Open, with_gpm=yes, with_gpm=no) } if test "$with_gpm" = "yes"; then AC_DEFINE(HAVE_GPM) XE_ADD_OBJS(gpmevent.o) @@ -2749,14 +2789,14 @@ XE_ADD_OBJS(terminfo.o) XE_PREPEND(-lncurses, LIBS) - if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then + if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then dnl Try again, and check for the bogus ncurses/ include bug. dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of dnl <ncurses/unctrl.h>) save_c_switch_site="$c_switch_site" c_switch_site="$c_switch_site -I/usr/include/ncurses" AC_CHECK_HEADER(ncurses/curses.h, curses_h_path=ncurses/curses.h) - if test "$ac_cv_header_ncurses_curses_h" = "yes"; + if test "$ac_cv_header_ncurses_curses_h" = "yes" then AC_MSG_WARN("Your system has the bogus ncurses include bug.") else c_switch_site="$save_c_switch_site" fi @@ -2769,7 +2809,7 @@ XE_PREPEND($libs_termcap, LIBS) else for lib in curses termlib termcap; do - AC_CHECK_LIB($lib, tgetent, [XE_PREPEND(-l${lib}, LIBS)]; break) + AC_CHECK_LIB($lib, tgetent, XE_PREPEND(-l${lib}, LIBS); break) done fi else dnl "$have_terminfo" = "no" && "with_ncurses" = "no" @@ -2781,9 +2821,9 @@ if test -n "$libs_termcap"; then XE_PREPEND($libs_termcap, LIBS) else - AC_CHECK_LIB(curses, tgetent, [XE_PREPEND(-lcurses, LIBS)],[ - AC_CHECK_LIB(termcap, tgetent, [XE_PREPEND(-ltermcap, LIBS)], [ - XE_ADD_OBJS(termcap.o)])]) + AC_CHECK_LIB(curses, tgetent, XE_PREPEND(-lcurses, LIBS), + AC_CHECK_LIB(termcap, tgetent, XE_PREPEND(-ltermcap, LIBS), + XE_ADD_OBJS(termcap.o))) fi fi fi @@ -2888,15 +2928,16 @@ dnl Compute SUBST-itutable variables dnl -------------------------------- dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM) -c_switch_general="-DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system" -c_switch_window_system="$c_switch_x_site $X_CFLAGS" -c_switch_all="$c_switch_general $c_switch_window_system" -ld_switch_general="$ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run" -ld_switch_window_system="$ld_switch_x_site" -ld_switch_all="$ld_switch_general $ld_switch_window_system" -ld_libs_general="$LIBS $libs_machine $libs_system $libs_standard" -ld_libs_window_system="$X_PRE_LIBS $libs_x $X_EXTRA_LIBS" -ld_libs_all="$ld_libs_window_system $ld_libs_general" +dnl Use `echo ...` to remove extraneous blanks +c_switch_general=`echo -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system` +c_switch_window_system=`echo $c_switch_x_site $X_CFLAGS` +c_switch_all=`echo $c_switch_general $c_switch_window_system` +ld_switch_general=`echo $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run` +ld_switch_window_system=`echo $ld_switch_x_site` +ld_switch_all=`echo $ld_switch_general $ld_switch_window_system` +ld_libs_general=`echo $LIBS $libs_machine $libs_system $libs_standard` +ld_libs_window_system=`echo $X_EXTRA_LIBS $libs_x $X_PRE_LIBS` +ld_libs_all=`echo $ld_libs_window_system $ld_libs_general` dnl Compute lists of Makefiles and subdirs SRC_SUBDIR_DEPS="$MAKE_SUBDIR" @@ -2907,8 +2948,8 @@ test -d lock || mkdir lock for dir in $MAKE_SUBDIR; do test -d "$dir" || mkdir "$dir" - SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $dir/Makefile" - internal_makefile_list="$internal_makefile_list $dir/Makefile.in" + SUBDIR_MAKEFILES=`echo $SUBDIR_MAKEFILES $dir/Makefile` + internal_makefile_list=`echo $internal_makefile_list $dir/Makefile.in` done AC_SUBST(MAKE_SUBDIR) AC_SUBST(SUBDIR_MAKEFILES) @@ -2924,7 +2965,7 @@ dnl Create some auxiliary files if test -f $srcdir/src/gdbinit -a ! -f src/gdbinit ; then - echo "creating src/gdbinit" + echo "creating src/gdbinit"; echo "" echo "source $srcdir/src/gdbinit" > src/gdbinit fi @@ -2932,7 +2973,7 @@ AC_TRY_COMPILE([],[#ifndef __SUNPRO_C #error No Sun source browser capability #endif -],[echo "creating .sbinit" +],[echo "creating .sbinit"; echo "" ( echo "# For use with Sun WorkShop's Source browser." echo "# See sbquery(1) and sbinit(4) for more information" for dir in $MAKE_SUBDIR; do echo "import $dir"; done @@ -3027,7 +3068,6 @@ fi test "$with_motif" = "yes" && AC_DEFINE(LWLIB_USES_MOTIF) test "$with_i18n3" = "yes" && AC_DEFINE(I18N3) -test "$with_mocklisp" = "yes" && AC_DEFINE(MOCKLISP_SUPPORT) test "$with_gcc" = "yes" && AC_DEFINE(USE_GCC) test "$with_term" = "yes" && AC_DEFINE(HAVE_TERM) test "$external_widget" = "yes" && AC_DEFINE(EXTERNAL_WIDGET) @@ -3101,7 +3141,7 @@ fi test "$with_gif" = yes && echo " Compiling in support for GIF image conversion." -if test "$with_xpm" = yes; then +if test "$with_xpm" = yes; then echo " Compiling in support for XPM images." else echo " --------------------------------------------------------------------" @@ -3143,7 +3183,6 @@ test "$with_cde" = yes && echo " Compiling in support for CDE." test "$with_tooltalk" = yes && echo " Compiling in support for ToolTalk." test "$with_offix" = yes && echo " Compiling in support for OffiX." -test "$with_mocklisp" = yes && echo " Compiling in support for Mocklisp." test "$with_workshop" = yes && echo " Compiling in support for Sun WorkShop." test "$with_energize" = yes && echo " Compiling in support for Lucid Energize (doesn't currently work)." case "$with_menubars" in
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/Makefile.in.in Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,122 @@ +/* Hey Emacs, this is a -*- Makefile -*- */ + +/* Makefile for dynodump subdirectory in XEmacs + Copyright (C) 1995 Board of Trustees, University of Illinois + +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. */ + +/* Avoid trouble on systems where the "SHELL" variable might be + inherited from the environment. */ +SHELL = /bin/sh + +/* Some people use these in paths they define. We do not want their paths + getting changed on them. */ +#undef sparc +#undef sun +#undef unix +#undef i386 +#undef ppc +#undef sgi + +/* ==================== Things "configure" will edit ==================== */ + +CC=@CC@ +CFLAGS=@CFLAGS@ +ARCH=@dynodump_arch@ + +/* Where to find the source code. This is set by the configure + "--srcdir" option. However, the value of ${srcdir} in + this makefile is not identical to what was specified with --srcdir, + since the variable here has "/dynodump" added at the end. */ +srcdir=@srcdir@ + +/* ========================= start of cpp stuff ========================= */ + +#define NO_SHORTNAMES +#define THIS_IS_YMAKEFILE +#define NOT_C_CODE +#include "../src/config.h" + +/* With the traditional VPATH setting, it is not possible to + simultaneously compile in-place and in another directory. The + mistaken definition is that *all* dependencies are searched for in + the VPATH directory, rather than just the dependencies that are not + themselves targets. Thus, if there is an up-to-date .o file in the + in-place location, it will not get recompiled in the not-in-place + location. + + The GNU Make "vpath" directive continues this tradition, but at + least lets you to restrict the classes of files that it applies to. + This allows us to kludge around the problem. */ +#ifdef USE_GNU_MAKE +vpath %.c @srcdir@ +vpath %.h @srcdir@ +/* now list files that should NOT be searched in the srcdir. + This includes any .c or .h that is built from something else + (e.g. a .in file). */ +/* none here */ +#else +VPATH=@srcdir@ +#endif + +#ifdef USE_GCC +# define PIC_ARG -fpic +#else +# define PIC_ARG -K pic +#endif + +INCLUDES = -I${srcdir} -I${srcdir}/$(ARCH) +ALL_CFLAGS = ${CFLAGS} PIC_ARG ${INCLUDES} +OBJS = _relocate.o dynodump.o syms.o uninit.o + +.c.o: + $(CC) -c $(ALL_CFLAGS) $< + +/* If we do not need dynodump, then do nothing. */ +#ifdef DYNODUMP +all:: dynodump.so +#else +all:: +#endif + +dynodump.so: ${srcdir}/_dynodump.h $(OBJS) + PATH=/usr/ccs/bin:/bin:$$PATH ld -o dynodump.so -G $(OBJS) -lelf -lmapmalloc + +_relocate.o: ${srcdir}/$(ARCH)/_relocate.c + $(CC) -c $(ALL_CFLAGS) ${srcdir}/$(ARCH)/_relocate.c + +uninit.o: ${srcdir}/$(ARCH)/uninit.c + $(CC) -c $(ALL_CFLAGS) ${srcdir}/$(ARCH)/uninit.c + +mostlyclean: + -rm -f *.o \#* + +clean: mostlyclean + -rm -f *.so *.so.1 + +distclean: clean + -rm -f Makefile Makefile.in + +realclean: distclean + rm -f TAGS + +versionclean: + true + +extraclean: realclean + -rm -f *~ \#*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/README Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,101 @@ + DYNODUMP + -------- + +Dynodump, not to be confused with DinoTurd (as seen in Jurassic Park), +is a shared object that provides one function: + + int dynodump(char *new_file); + +dynodump(), called from a running program will write a new executable +in new_file a la unexec() in GNU Emacs. The difference lies in the +relocations. + +dynodump() will create an image with any relocations (which were +performed by the run-time dynamic linker) undone. This allows the new +image to be run in a different environment. There is, however, one +potentially major caveat. If a symbol reference gets updated during +the running of the calling program, its updated value will be lost. +An example (with additional blank lines for legibility): + + $ cat lib.c + char _foo[] = "hello"; + char _bar[] = "world"; + + $ cc -G -o lib.so lib.c + + $ cat prog.c + extern char _foo, _bar; + + int beenhere = 0; + char * foo = &_foo; + char * bar = &_bar; + + int + main(void) + { + (void) printf("%d: foo = %x\n", beenhere, foo); + (void) printf("%d: bar = %x, ", beenhere, bar); + + if (!beenhere) { + beenhere = 1; + bar++; + dynodump("newfile"); + } + (void) printf("%x\n", bar); + } + + $ cc -o prog prog.c -R. lib.so dynodump.so + + $ ./prog + 0: foo = ef7503cc + 0: bar = ef7503d2, ef7503d3 + + $ ./newfile + 1: foo = ef7503cc + 1: bar = ef7503d2, ef7503d2 + +Notice that in the run of newfile, bar points at "world" instead of +the perhaps expected "orld". + +Dynodump supports sparc, intel, and power pc architectures. + +Dynodump is buildable with GNU make and gcc. If it works for you +with these tools, let me know. + +unexec() +-------- + +Also supplied is an unexsol2.c which belongs in the XEmacs src +directory with the other unex*.c files. The src/s/sol2.h should be +have the following added to it: + + #ifdef UNEXEC + #undef UNEXEC + #endif + #define UNEXEC unexsol2.o + +This unexec() will attempt to dlopen() the dynodump.so to find the +dynodump function. The default is "../dynodump/dynodump.so" which +should be appropriate for the typical XEmacs build (unless you used +configure to set up separate build and source trees). You may change +it by setting the DYNODUMP environment variable to the full path of +the dynodump shared object. + +Other notes: + +If you're using the 4.0 C compiler from Sun, you should arrange to +shut off the incremental linker. This is done with the -xildoff +option to the compiler. The common.mk and testsuite/Makefile files +have commentary and ready made lines for uncommenting for this +purpose. + +If you're interested in playing with the UltraSPARC specific options +to the aforementioned compiler, then the same makefiles have some +commentary and flags settings to point you in that direction. + +Questions: + +dynodump() was developed by Rod.Evans@Eng.Sun.COM and +Georg.Nikodym@Canada.Sun.COM. If you have questions, feel free to ask +them but be aware that Rod, "don't know jack about emacs." +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/_dynodump.h Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,65 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#pragma ident "@(#) $Id: _dynodump.h,v 1.3 1997/05/29 04:22:29 steve Exp $ - SMI" + +#ifndef _DYNODUMP_DOT_H +#define _DYNODUMP_DOT_H + +#include <libelf.h> +#include "machdep.h" + +/* General rounding macro */ +#define S_ROUND(x, a) (((int)(x) + (((int)(a) ? (int)(a) : 1) - 1)) & \ + ~(((int)(a) ? (int)(a) : 1) - 1)) + +/* + * Define a cache structure that is used to retain all elf section information. + */ +typedef struct cache { + Elf_Scn *c_scn; + Shdr *c_shdr; + Elf_Data *c_data; + char *c_name; +} Cache; + +/* + * Define any local prototypes. + */ +extern void update_dynamic(Cache *); +extern void update_reloc(Cache *, Cache *, Cache *, Cache *, Half shnum); +extern void update_sym(Cache *, Cache *, Addr); +extern void dynodump_uninit(void); + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/dynodump.c Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,558 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * dynodump(3x) dumps a running executable into a specified ELF file. The new + * file consists of the memory contents of the original file together with any + * heap. This heap is assigned to a new `.heap' section within the new file. + * + * The new file may be re-executed, and will contain any data modifications + * made to the original image up until the time dynodump(3x) was called. + * + * The original image may have undergone relocations (performed by ld.so.1) + * prior to control being transferred to the image. These relocations will + * reside as the data copied from the image. To prevent subsequent executions + * of the new image from undergoing the same relocations, any relocation entries + * (besides copy or jump slot relocations) are nulled out. Note that copy + * relocations such as required for __iob must be reinitialized each time the + * process starts, so it is not sufficient to simply null out the .dynamic + * sections relocation information. The effect of this is that if the new + * image was bound to definitions in any shared object dependencies, then these + * dependencies *must* reside in the same location as when dynodump(3x) was + * called. Any changes to the shared object dependencies of the new image, or + * uses of such things as LD_PRELOAD, may result in the bindings encoded in the + * image becoming invalid. + * + * The following flags modify the data of the image created: + * + * RTLD_SAVREL save the original relocation data. Under this option any + * relocation offset is reset to contain the same data as was + * found in the images original file. + * + * This option allows relocation information to be retained in the + * new image so that it may be re-executed when the new image is + * run. This allows far greater flexibility as the new image can + * now take advantage of new shared objects. + * + * Note. under this mechanism, any data item that undergoes + * relocation and is then further modified during the execution of + * the image before dynodump(3x) is called will lose the + * modification that occured during the applications execution. + * + * N.B. The above commentary is not quite correct in the flags have been hardwired + * to RTLD_SAVREL. + */ +#pragma ident "@(#) $Id: dynodump.c,v 1.3 1997/05/29 04:22:30 steve Exp $ - SMI" + +#include <sys/param.h> +#include <sys/procfs.h> +#include <fcntl.h> +#include <stdio.h> +#include <libelf.h> +#include <link.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <errno.h> +#include <malloc.h> +#include "machdep.h" +#include "_dynodump.h" + +/* + * Generic elf error message generator + */ +static int +elferr(const char * str) +{ + fprintf(stderr, "%s: %s\n", str, elf_errmsg(elf_errno())); + return (1); +} + +int dynodump (const char * file); +int +dynodump(const char * file) +{ + Elf *ielf, *oelf; + Ehdr *iehdr, *oehdr; + Phdr *iphdr, *ophdr, *data_phdr = 0; + Cache *icache, *ocache, *_icache, *_ocache; + Cache *data_cache = 0, *shstr_cache = 0; + Cache *heap_cache = 0; + Word heap_sz = 0; + Elf_Scn *scn; + Shdr *shdr; + Elf_Data *data, rundata; + Half ndx, _ndx; + int fd, _fd; + Addr edata, _addr; + char *istrs, *ostrs, *_ostrs, proc[16]; + const char heap[] = ".heap"; + prstatus_t pstat; + + /* make a call to the processor specific un-init stuff */ + dynodump_uninit(); + + /* + * Obtain a file descriptor for this process, + * for the executable and get a prstatus_t + * structure. + */ + sprintf(proc, "/proc/%ld", getpid()); + if (((_fd = open(proc, O_RDONLY, 0)) == -1) || + ((fd = ioctl(_fd, PIOCOPENM, (void *)0)) == -1) || + (ioctl(_fd, PIOCSTATUS, &pstat) == -1)) { + fprintf(stderr, "/proc: initialization error: %s\n", + strerror(errno)); + close(_fd); + return (1); + } + close(_fd); + + /* + * Initialize with the ELF library and make sure this is an executable + * ELF file we're dealing with. + */ + elf_version(EV_CURRENT); + if ((ielf = elf_begin(fd, ELF_C_READ, NULL)) == NULL) { + close(fd); + return (elferr("elf_begin")); + } + close(fd); + + if ((elf_kind(ielf) != ELF_K_ELF) || + ((iehdr = elf_getehdr(ielf)) == NULL) || + (iehdr->e_type != ET_EXEC)) { + fprintf(stderr, "image is not an ELF executable\n"); + elf_end(ielf); + return (1); + } + /* + * Elf_elf_header(iehdr); + */ + + /* + * Create the new output file. + */ + if ((fd = open(file, O_RDWR | O_CREAT | O_TRUNC, 0777)) == -1) { + fprintf(stderr, "%s: open failed: %s\n", file, + strerror(errno)); + elf_end(ielf); + return (1); + } + if ((oelf = elf_begin(fd, ELF_C_WRITE, NULL)) == NULL) { + elf_end(ielf); + close(fd); + return (elferr("elf_begin")); + } + + /* + * Obtain the input program headers. Remember the data segments + * program header entry as this will be updated later to reflect the + * new .heap sections size. + */ + if ((iphdr = elf_getphdr(ielf)) == NULL) + return (elferr("elf_getphdr")); + + for (ndx = 0, ophdr = iphdr; ndx != iehdr->e_phnum; ndx++, ophdr++) { + /* + * Save the program header that contains the NOBITS section, or + * the last loadable program header if no NOBITS exists. + * A NOBITS section translates to a memory size requirement that + * is greater than the file data it is mapped from. + */ + if (ophdr->p_type == PT_LOAD) { + if (ophdr->p_filesz != ophdr->p_memsz) + data_phdr = ophdr; + else if (data_phdr) { + if (data_phdr->p_vaddr < ophdr->p_vaddr) + data_phdr = ophdr; + } else + data_phdr = ophdr; + } + } + if (data_phdr == 0) { + fprintf(stderr, "no data segment found!\n"); + return (0); + } + + /* + * Obtain the input files section header string table. + */ + if ((scn = elf_getscn(ielf, iehdr->e_shstrndx)) == NULL) + return (elferr("elf_getscn")); + if ((data = elf_getdata(scn, NULL)) == NULL) + return (elferr("elf_getdata")); + istrs = data->d_buf; + + /* + * Construct a cache to maintain the input files section information. + */ + if ((icache = (Cache *) malloc(iehdr->e_shnum * sizeof (Cache))) == 0) { + fprintf(stderr, "malloc failed: %s\n", strerror(errno)); + return (1); + } + _icache = icache; + _icache++; + + /* + * Traverse each section from the input file. + */ + for (ndx = 1, scn = 0; + (_icache->c_scn = elf_nextscn(ielf, scn)); + ndx++, scn = _icache->c_scn, _icache++) { + + if ((_icache->c_shdr = shdr = elf_getshdr(_icache->c_scn)) == NULL) + return (elferr("elf_getshdr")); + + if ((_icache->c_data = elf_getdata(_icache->c_scn, NULL)) == NULL) + return (elferr("elf_getdata")); + + _icache->c_name = istrs + (size_t)(shdr->sh_name); + + /* + * For each section that has a virtual address reestablish the + * data buffer to point to the memory image. + * + * if (shdr->sh_addr) + * _icache->c_data->d_buf = (void *)shdr->sh_addr; + */ + + /* + * Remember the last section of the data segment, the new .heap + * section will be added after this section. + * If we already have one, then set data_cache to the previous + * section and set heap_cache to this one. + */ + if ((shdr->sh_addr + shdr->sh_size) + == (data_phdr->p_vaddr + data_phdr->p_memsz)) { + if (strcmp(_icache->c_name, heap) == 0) { +#ifdef DEBUG + printf("Found a previous .heap section\n"); +#endif + data_cache = _icache - 1; + heap_cache = _icache; + heap_sz = shdr->sh_size; + } else { + data_cache = _icache; + } + } + + /* + * Remember the section header string table as this will be + * rewritten with the new .heap name. + */ + if ((shdr->sh_type == SHT_STRTAB) && + ((strcmp(_icache->c_name, ".shstrtab")) == 0)) + shstr_cache = _icache; + } + if (data_cache == 0) { + fprintf(stderr, "final data section not found!\n"); + return (0); + } + + /* + * Determine the new .heap section to create. + */ + rundata.d_buf = (void *)(data_cache->c_shdr->sh_addr + + data_cache->c_shdr->sh_size); + rundata.d_size = (int)sbrk(0) - (int)rundata.d_buf; + rundata.d_type = ELF_T_BYTE; + rundata.d_off = 0; + rundata.d_align = 1; + rundata.d_version = EV_CURRENT; + + /* + * From the new data buffer determine the new value for _end and _edata. + * This will also be used to update the data segment program header. + * + * If we had a .heap section, then its size is part of the program + * headers notion of data size. Because we're only going to output one + * heap section (ignoring the one in the running binary) we need to + * subract the size of that which we're ignoring. + */ + if (heap_cache) { + edata = S_ROUND((data_phdr->p_vaddr + + data_phdr->p_memsz + - heap_sz), rundata.d_align) + rundata.d_size; + } else { + edata = S_ROUND((data_phdr->p_vaddr + data_phdr->p_memsz), + rundata.d_align) + rundata.d_size; + } + + /* + * We're now ready to construct the new elf image. + * + * Obtain a new elf header and initialize it with any basic information + * that isn't calculated as part of elf_update(). Bump the section + * header string table index to account for the .heap section we'll be + * adding. + */ + if ((oehdr = elf_newehdr(oelf)) == NULL) + return (elferr("elf_newehdr")); + + oehdr->e_entry = iehdr->e_entry; + oehdr->e_machine = iehdr->e_machine; + oehdr->e_type = iehdr->e_type; + oehdr->e_flags = iehdr->e_flags; + /* + * If we already have a heap section, we don't need any adjustment + */ + if (heap_cache) + oehdr->e_shstrndx = iehdr->e_shstrndx; + else + oehdr->e_shstrndx = iehdr->e_shstrndx + 1; + +#ifdef DEBUG + printf("iehdr->e_flags = %x\n", iehdr->e_flags); + printf("iehdr->e_entry = %x\n", iehdr->e_entry); + printf("iehdr->e_shstrndx= %d\n", iehdr->e_shstrndx); + printf("iehdr->e_machine = %d\n", iehdr->e_machine); + printf("iehdr->e_type = 0x%x\n", iehdr->e_type); + printf("oehdr->e_machine = %d\n", oehdr->e_machine); + printf("oehdr->e_type = 0x%x\n", oehdr->e_type); +#endif + + /* + * Obtain a new set of program headers. Initialize these with the same + * information as the input program headers and update the data segment + * to reflect the new .heap section. + */ + if ((ophdr = elf_newphdr(oelf, iehdr->e_phnum)) == NULL) + return (elferr("elf_newphdr")); + + for (ndx = 0; ndx != iehdr->e_phnum; ndx++, iphdr++, ophdr++) { + *ophdr = *iphdr; + if (data_phdr == iphdr) + ophdr->p_filesz = ophdr->p_memsz = edata - ophdr->p_vaddr; + } + + /* + * Obtain a new set of sections. + */ + _icache = icache; + _icache++; + for (ndx = 1; ndx != iehdr->e_shnum; ndx++, _icache++) { + /* + * Skip the heap section of the running executable + */ + if (_icache == heap_cache) + continue; + /* + * Create a matching section header in the output file. + */ + if ((scn = elf_newscn(oelf)) == NULL) + return (elferr("elf_newscn")); + if ((shdr = elf_getshdr(scn)) == NULL) + return (elferr("elf_getshdr")); + *shdr = *_icache->c_shdr; + + /* + * Create a matching data buffer for this section. + */ + if ((data = elf_newdata(scn)) == NULL) + return (elferr("elf_newdata")); + *data = *_icache->c_data; + + /* + * For each section that has a virtual address reestablish the + * data buffer to point to the memory image. Note, we skip + * the plt section. + */ + if ((shdr->sh_addr) && (!((shdr->sh_type == SHT_PROGBITS) + && (strcmp(_icache->c_name, ".plt") == 0)))) + data->d_buf = (void *)shdr->sh_addr; + + /* + * Update any NOBITS section to indicate that it now contains + * data. + */ + if (shdr->sh_type == SHT_NOBITS) + shdr->sh_type = SHT_PROGBITS; + + /* + * Add the new .heap section after the last section of the + * present data segment. If we had a heap section, then + * this is the section preceding it. + */ + if (data_cache == _icache) { + if ((scn = elf_newscn(oelf)) == NULL) + return (elferr("elf_newscn")); + if ((shdr = elf_getshdr(scn)) == NULL) + return (elferr("elf_getshdr")); + shdr->sh_type = SHT_PROGBITS; + shdr->sh_flags = SHF_ALLOC | SHF_WRITE; + + if ((data = elf_newdata(scn)) == NULL) + return (elferr("elf_newdata")); + *data = rundata; + } + + /* + * Update the section header string table size to reflect the + * new section name (only if we didn't already have a heap). + */ + if (!heap_cache) { + if (shstr_cache && (shstr_cache == _icache)) { + data->d_size += sizeof (heap); + } + } + } + + /* + * Write out the new image, and obtain a new elf descriptor that will + * allow us to write to the new image. + */ + if (elf_update(oelf, ELF_C_WRITE) == -1) + return (elferr("elf_update")); + elf_end(oelf); + if ((oelf = elf_begin(fd, ELF_C_RDWR, NULL)) == NULL) + return (elferr("elf_begin")); + if ((oehdr = elf_getehdr(oelf)) == NULL) + return (elferr("elf_getehdr")); + + /* + * Obtain the output files section header string table. + */ + if ((scn = elf_getscn(oelf, oehdr->e_shstrndx)) == NULL) + return (elferr("elf_getscn")); + if ((data = elf_getdata(scn, NULL)) == NULL) + return (elferr("elf_getdata")); + ostrs = _ostrs = data->d_buf; + *_ostrs++ = '\0'; + + /* + * Construct a cache to maintain the output files section information. + */ + if ((ocache = (Cache *)malloc(oehdr->e_shnum * sizeof (Cache))) == 0) { + fprintf(stderr, "malloc failed: %s\n", strerror(errno)); + return (1); + } + _ocache = ocache; + _ocache++; + _icache = icache; + _icache++; + + /* + * Traverse each section from the input file rebuilding the section + * header string table as we go. + */ + _ndx = _addr = 0; + for (ndx = 1, scn = 0; + (_ocache->c_scn = elf_nextscn(oelf, scn)); + ndx++, scn = _ocache->c_scn, _ocache++, _icache++) { + + const char *strs; + + if (_icache == heap_cache) { +#ifdef DEBUG + printf("ignoring .heap section in input\n"); +#endif + _icache++; + } + + if ((_ocache->c_shdr = shdr = + elf_getshdr(_ocache->c_scn)) == NULL) + return (elferr("elf_getshdr")); + if ((_ocache->c_data = + elf_getdata(_ocache->c_scn, NULL)) == NULL) + return (elferr("elf_getdata")); + + /* + * If were inserting the new .heap section, insert the new + * section name and initialize it's virtual address. + */ + if (_addr) { + strs = heap; + shdr->sh_addr = S_ROUND(_addr, shdr->sh_addralign); + _addr = 0; + } else { + strs = istrs + (size_t)(_icache->c_shdr->sh_name); + } + + strcpy(_ostrs, strs); + shdr->sh_name = _ostrs - ostrs; + _ocache->c_name = _ostrs; + _ostrs += strlen(strs) + 1; + + /* + * If we've inserted a new section any later section may need + * their sh_link fields updated. + * If we already had a heap section, then this is not required. + */ + if (!heap_cache) { + if (_ndx) { + if (_ocache->c_shdr->sh_link >= _ndx) + _ocache->c_shdr->sh_link++; + } + } + + /* + * If this is the last section of the original data segment + * determine sufficient information to initialize the new .heap + * section which will be obtained next. + */ + if (data_cache == _icache) { + _ndx = ndx + 1; + _addr = shdr->sh_addr + shdr->sh_size; + _icache--; + data_cache = 0; + } + } + + /* + * Now that we have a complete description of the new image update any + * sections that are required. + * + * o update the value of _edata and _end. + * + * o reset any relocation entries if necessary. + */ + _ocache = &ocache[1]; + _icache = &icache[1]; + for (ndx = 1; ndx < oehdr->e_shnum; ndx++, _ocache++, _icache++) { + if ((_ocache->c_shdr->sh_type == SHT_SYMTAB) || + (_ocache->c_shdr->sh_type == SHT_DYNSYM)) + update_sym(ocache, _ocache, edata); + + if (_ocache->c_shdr->sh_type == M_REL_SHT_TYPE) + update_reloc(ocache, _ocache, icache, _icache, oehdr->e_shnum); + } + + if (elf_update(oelf, ELF_C_WRITE) == -1) + return (elferr("elf_update")); + + elf_end(oelf); + elf_end(ielf); + return (0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/i386/_relocate.c Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,118 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#pragma ident "@(#) $Id: _relocate.c,v 1.3 1997/05/29 04:23:02 steve Exp $ - SMI" + +/* LINTLIBRARY */ + +#include <libelf.h> +#include <string.h> +#include <machdep.h> +#include "_dynodump.h" + +void +update_reloc(Cache *ocache, Cache *_ocache, + Cache *icache, Cache *_icache, + Half shnum) +{ + Shdr *shdr; + Rel *rels; + int reln, cnt; + Cache *orcache, *ircache; + + /* + * Set up to readh the output relocation table. + */ + shdr = _ocache->c_shdr; + rels = (Rel *) _ocache->c_data->d_buf; + reln = shdr->sh_size / shdr->sh_entsize; + + /* + * Determine the section that is being relocated. + */ + orcache = &ocache[shdr->sh_info]; + shdr = _icache->c_shdr; + ircache = &icache[shdr->sh_info]; + + /* + * Determine the section that is being relocated. Note that for this + * stupid architecture the .rel.plt actually contains offsets into the + * .got. + */ + if (strcmp(_ocache->c_name, ".rel.plt")) { + orcache = &ocache[shdr->sh_info]; + shdr = _icache->c_shdr; + ircache = &icache[shdr->sh_info]; + } else { + Half ndx; + Cache * __ocache = ocache; + + for (__ocache++, ndx = 1; ndx != shnum; ndx++, __ocache++) { + if (strcmp(__ocache->c_name, ".got") == 0) { + orcache = __ocache; + ircache = &icache[ndx]; + break; + } + } + } + + /* + * Loop through the relocation table. + */ + for (cnt = 0; cnt < reln; cnt++, rels++) { + unsigned char *iaddr, *oaddr; + Addr off; + unsigned char type = ELF_R_TYPE(rels->r_info); + + /* + * Ignore some relocations as these can be safely carried out + * twice (they simply override any existing data). In fact, + * some relocations like __iob's copy relocation must be carried + * out each time the process restarts, otherwise stdio blows up. + */ + if ((type == R_386_COPY) || (type == R_386_NONE)) + continue; + + /* + * If we are required to restore the relocation location + * to its value prior to relocation, then read the + * location's original contents from the input image and + * copy it to the output image. + */ + off = rels->r_offset - ircache->c_shdr->sh_addr; + iaddr = (unsigned char *) ircache->c_data->d_buf + off; + oaddr = (unsigned char *) orcache->c_data->d_buf + off; + *(unsigned long *) oaddr = *(unsigned long *) iaddr; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/i386/machdep.h Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,93 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#pragma ident "@(#) $Id: machdep.h,v 1.3 1997/05/29 04:23:02 steve Exp $ - SMI" + +/* + * Global include file for all sgs Intel machine dependent macros, constants + * and declarations. + */ +#ifndef MACHDEP_DOT_H +#define MACHDEP_DOT_H + +#include <link.h> +#include <sys/elf_386.h> + +/* + * Make machine class dependent data types transparent to the common code + */ +#define Word Elf32_Word +#define Sword Elf32_Sword +#define Half Elf32_Half +#define Addr Elf32_Addr +#define Off Elf32_Off +#define Byte unsigned char + +#define Ehdr Elf32_Ehdr +#define Shdr Elf32_Shdr +#define Sym Elf32_Sym +#define Rel Elf32_Rel +#define Phdr Elf32_Phdr +#define Dyn Elf32_Dyn +#define Boot Elf32_Boot +#define Verdef Elf32_Verdef +#define Verdaux Elf32_Verdaux +#define Verneed Elf32_Verneed +#define Vernaux Elf32_Vernaux +#define Versym Elf32_Versym + +/* + * Make machine class dependent functions transparent to the common code + */ +#define ELF_R_TYPE ELF32_R_TYPE +#define ELF_R_INFO ELF32_R_INFO +#define ELF_R_SYM ELF32_R_SYM +#define ELF_ST_BIND ELF32_ST_BIND +#define ELF_ST_TYPE ELF32_ST_TYPE +#define ELF_ST_INFO ELF32_ST_INFO +#define elf_fsize elf32_fsize +#define elf_getehdr elf32_getehdr +#define elf_getphdr elf32_getphdr +#define elf_newehdr elf32_newehdr +#define elf_newphdr elf32_newphdr +#define elf_getshdr elf32_getshdr +#define elf_xlatetof elf32_xlatetof +#define elf_xlatetom elf32_xlatetom + +/* + * Make relocation types transparent to the common code + */ +#define M_REL_SHT_TYPE SHT_REL /* section header type */ + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/i386/uninit.c Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * This is where you put processor specific un-initialization things + * to deal with "initialization idempotency issues". + */ + +void +dynodump_uninit(void) +{ + return; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/ppc/_relocate.c Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,269 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#pragma ident "@(#) $Id: _relocate.c,v 1.3 1997/05/29 04:23:20 steve Exp $ - SMI" + +/* LINTLIBRARY */ + +#include <string.h> +#include <sys/elf_ppc.h> +#include "_dynodump.h" + + +/* + * NOTE: These macros will work reliably only on 32-bit 2's + * complement machines. The type of P in all cases should + * by unsigned char * + */ +#if defined(_BIG_ENDIAN) + +#define GET4(P) ((long)(((unsigned long)(P)[0] << 24) | \ + ((unsigned long)(P)[1] << 16) | \ + ((unsigned long)(P)[2] << 8) | \ + (unsigned long)(P)[3])) +#define PUT4(V, P) { \ + (P)[0] = (unsigned char)((V) >> 24); \ + (P)[1] = (unsigned char)((V) >> 16); \ + (P)[2] = (unsigned char)((V) >> 8); \ + (P)[3] = (unsigned char)(V); \ + } +#define GEThalf(P) ((long) (((unsigned long) (P)[0] << 8) | \ + ((unsigned long) (P)[1]))) +#define GETword(P) GET4(P) +#define PUThalf(V, P) { \ + (P)[0] = ((V) >> 8); \ + (P)[1] = ((V)); \ + } +#define PUTword(V, P) PUT4(V, P) + +#elif defined(_LITTLE_ENDIAN) + +#define GET4(P) ((long)(((unsigned long)(P)[0]) | \ + ((unsigned long)(P)[1] << 8) | \ + ((unsigned long)(P)[2] << 16) | \ + ((unsigned long)(P)[3]) << 24)) +#define PUT4(V, P) { \ + (P)[0] = (unsigned char)(V); \ + (P)[1] = (unsigned char)((V) >> 8); \ + (P)[2] = (unsigned char)((V) >> 16); \ + (P)[3] = (unsigned char)((V) >> 24); \ + } +#define GEThalf(P) ((long) (((unsigned long) (P)[0]) | \ + ((unsigned long) (P)[1] << 8))) +#define GETword(P) GET4(P) +#define PUThalf(V, P) { \ + (P)[0] = (V); \ + (P)[1] = ((V) >> 8); \ + } +#define PUTword(V, P) PUT4(V, P) + +#endif /* defined(_LITTLE_ENDIAN) */ + +/* + * NAME VALUE FIELD CALCULATION + * + * R_PPC_NONE 0 none none + * R_PPC_ADDR32 1 word32 S + A + * R_PPC_ADDR24 2 low24 (S + A) >> 2 + * R_PPC_ADDR16 3 half16 S + A + * R_PPC_ADDR16_LO 4 half16 #lo(S + A) + * R_PPC_ADDR16_HI 5 half16 #hi(S + A) + * R_PPC_ADDR16_HA 6 half16 #ha(S + A) + * R_PPC_ADDR14 7 low14 (S + A) >> 2 + * R_PPC_ADDR14_BRTAKEN 8 low14 (S + A) >> 2 + * R_PPC_ADDR14_BRNTAKEN 9 low14 (S + A) >> 2 + * R_PPC_REL24 10 low24 (S + A - P) >> 2 + * R_PPC_REL14 11 low14 (S + A - P) >> 2 + * R_PPC_REL14_BRTAKEN 12 low14 (S + A - P) >> 2 + * R_PPC_REL14_BRNTAKEN 13 low14 (S + A - P) >> 2 + * R_PPC_GOT16 14 half16 G + A + * R_PPC_GOT16_LO 15 half16 #lo(G + A) + * R_PPC_GOT16_HI 16 half16 #hi(G + A) + * R_PPC_GOT16_HA 17 half16 #ha(G + A) + * R_PPC_PLT24 18 low24 (L + A - P) >> 2 + * R_PPC_COPY 19 none none + * R_PPC_GLOB_DAT 20 word32 S + A + * R_PPC_JMP_SLOT 21 none see below + * R_PPC_RELATIVE 22 word32 B + A + * R_PPC_LOCAL24PC 23 low24 see below + * R_PPC_UADDR32 24 word32 S + A + * R_PPC_UADDR16 25 half16 S + A + * + * This is Figure 4-3: Relocation Types from the Draft Copy of + * the ABI, Printed on 7/25/94. + * + * The field column specifies how much of the data + * at the reference address is to be used. The data are assumed to be + * right-justified with the least significant bit at the right. + * In the case of plt24 addresses, the reference address is + * assumed to be that of a 6-word PLT entry. The address is the right- + * most 24 bits of the third word. + */ +static void +move_reloc(unsigned char *iaddr, unsigned char *oaddr, unsigned char type) +{ + switch(type) { + case R_PPC_NONE: + break; + + case R_PPC_ADDR32: + case R_PPC_UADDR32: + PUTword(GETword(iaddr), oaddr); + break; + + case R_PPC_ADDR24: + case R_PPC_REL24: + case R_PPC_PLT24: + case R_PPC_LOCAL24PC: + /* XXX - big assumption here that the original contents were masked + * properly. If this assumption proves correct, then these 24bit + * cases can be folded into the above 32bit cases. + */ + PUTword(GETword(iaddr), oaddr); + break; + + case R_PPC_ADDR16: + case R_PPC_UADDR16: + case R_PPC_GOT16: + PUThalf(GEThalf(iaddr), oaddr); + break; + + case R_PPC_ADDR16_LO: + case R_PPC_GOT16_LO: + /* XXX - more assumptions which if proved correct, we can + * do some folding with above cases + */ + PUThalf(GEThalf(iaddr), oaddr); + break; + + case R_PPC_ADDR16_HI: + case R_PPC_GOT16_HI: + /* XXX - more assumptions which if proved correct, we can + * do some folding with above cases + */ + PUThalf(GEThalf(iaddr), oaddr); + break; + + case R_PPC_ADDR16_HA: + case R_PPC_GOT16_HA: + /* XXX - more assumptions which if proved correct, we can + * do some folding with above cases + */ + PUThalf(GEThalf(iaddr), oaddr); + break; + + case R_PPC_ADDR14: + case R_PPC_ADDR14_BRTAKEN: + case R_PPC_ADDR14_BRNTAKEN: + case R_PPC_REL14: + case R_PPC_REL14_BRTAKEN: + case R_PPC_REL14_BRNTAKEN: + /* XXX - big assumption here that the original contents were masked + * properly. If this assumption proves correct, then these 14bit + * cases can be folded into the above 32bit cases. + */ + PUTword(GETword(iaddr), oaddr); + break; + + case R_PPC_COPY: + break; + + case R_PPC_GLOB_DAT: + case R_PPC_RELATIVE: + PUTword(GETword(iaddr), oaddr); + break; + + case R_PPC_JMP_SLOT: + break; + + default: + break; + } +} + +void +update_reloc(Cache *ocache, Cache *_ocache, Cache *icache, Cache *_icache, Half shnum) +{ + Shdr *shdr; + Rel *rels; + int reln, cnt; + Cache *orcache, * ircache; + + /* + * Set up to read the output relocation table. + */ + shdr = _ocache->c_shdr; + rels = (Rel *)_ocache->c_data->d_buf; + reln = shdr->sh_size / shdr->sh_entsize; + + /* + * Determine the section that is being relocated. + */ + orcache = &ocache[shdr->sh_info]; + shdr = _icache->c_shdr; + ircache = &icache[shdr->sh_info]; + + /* + * Loop through the relocation table. + */ + for (cnt = 0; cnt < reln; cnt++, rels++) { + unsigned char type = ELF_R_TYPE(rels->r_info); + + /* + * Ignore some relocations as these can safely be carried out + * twice (they simply override any existing data). In fact, + * some relocations like __iob's copy relocation must be carried + * out each time the process restarts otherwise stdio blows up. + */ + if ((type == R_PPC_COPY) || (type == R_PPC_JMP_SLOT) || + (type == R_PPC_NONE)) + continue; + + { + unsigned char *iaddr, *oaddr; + Addr off; + + /* + * If we are required to restore the relocation location + * to it's value prior to relocation, then read the + * locations original contents from the input image and + * copy it to the output image. + */ + off = rels->r_offset - ircache->c_shdr->sh_addr; + iaddr = (unsigned char *)ircache->c_data->d_buf + off; + oaddr = (unsigned char *)orcache->c_data->d_buf + off; + move_reloc(iaddr, oaddr, type); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/ppc/machdep.h Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,88 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#pragma ident "@(#) $Id: machdep.h,v 1.3 1997/05/29 04:23:20 steve Exp $ - SMI" + +/* + * Global include file for all sgs PowerPC machine dependent macros, constants + * and declarations. + */ +#ifndef MACHDEP_DOT_H +#define MACHDEP_DOT_H + +#include <link.h> +#include <sys/elf_ppc.h> + +/* + * Make machine class dependent data types transparent to the common code + */ +#define Word Elf32_Word +#define Sword Elf32_Sword +#define Half Elf32_Half +#define Addr Elf32_Addr +#define Off Elf32_Off +#define Byte unsigned char + +#define Ehdr Elf32_Ehdr +#define Shdr Elf32_Shdr +#define Sym Elf32_Sym +#define Rel Elf32_Rela +#define Phdr Elf32_Phdr +#define Dyn Elf32_Dyn +#define Boot Elf32_Boot +#define Verdef Elf32_Verdef +#define Verdaux Elf32_Verdaux +#define Verneed Elf32_Verneed +#define Vernaux Elf32_Vernaux +#define Versym Elf32_Versym + +/* + * Make machine class dependent functions transparent to the common code + */ +#define ELF_R_TYPE ELF32_R_TYPE +#define ELF_R_INFO ELF32_R_INFO +#define ELF_R_SYM ELF32_R_SYM +#define ELF_ST_BIND ELF32_ST_BIND +#define ELF_ST_TYPE ELF32_ST_TYPE +#define ELF_ST_INFO ELF32_ST_INFO +#define elf_fsize elf32_fsize +#define elf_getehdr elf32_getehdr +#define elf_getphdr elf32_getphdr +#define elf_newehdr elf32_newehdr +#define elf_newphdr elf32_newphdr +#define elf_getshdr elf32_getshdr + +#define M_REL_SHT_TYPE SHT_RELA /* section header type */ + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/ppc/uninit.c Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,55 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * This is where you put processor specific un-initialization things + * to deal with "initialization idempotency issues". + */ + +extern void __delete_all_module_tags(void); +extern void __exithandle(void); + +void +dynodump_uninit(void) +{ + /* There are 2 possible ways to do this. It is not clear which way + will be blessed by the Sun Gods. Both appear to work. */ + + /* _exithandle has recently been blessed. */ + + /* __delete_all_module_tags(); */ + _exithandle(); + + return; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/sparc/_relocate.c Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,294 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * Update the value of the `_edata' and `_end' symbols. + */ +#pragma ident "@(#) $Id: _relocate.c,v 1.3 1997/05/29 04:23:26 steve Exp $ - SMI" + +#include <libelf.h> +#include <string.h> +#include "machdep.h" +#include "_dynodump.h" + + +#define GETbyte(P) ((long)((unsigned long)(P)[0])) +#define GEThalf(P) ((long)(((unsigned long)(P)[0] << 8) | \ + ((unsigned long)(P)[1]))) +#define GETword(P) ((long)(((unsigned long)(P)[0] << 24) | \ + ((unsigned long)(P)[1] << 16) | \ + ((unsigned long)(P)[2] << 8) | \ + (unsigned long)(P)[3])) +#define GETdisp30(P) (GETword(P) & 0x3fffffff) +#define GETdisp22(P) (GETword(P) & 0x3fffff) +#define GETdisp16(P) (((GETword(P) & 0x300000) >> 6) | \ + (GETword(P) & 0x3fff)) +#define GETdisp19(P) (GETword(P) & 0x7ffff) +#define GETimm22(P) (GETword(P) & 0x3fffff) +#define GETimm5(P) (GEThalf((P)+2) & 0x1f) +#define GETimm6(P) (GEThalf((P)+2) & 0x2f) +#define GETimm7(P) (GEThalf((P)+2) & 0x3f) +#define GETsimm13(P) (GEThalf((P)+2) & 0x1fff) +#define GETsimm10(P) (GEThalf((P)+2) & 0x3ff) +#define GETsimm11(P) (GEThalf((P)+2) & 0x7ff) +#define GETplt22(P) (GETword((P)+8) & 0x3fffff) + +#define PUTbyte(V, P) (P)[0] = (V) +#define PUThalf(V, P) (P)[0] = ((V) >> 8); \ + (P)[1] = ((V)) +#define PUTword(V, P) (P)[0] = (unsigned char)((V) >> 24); \ + (P)[1] = (unsigned char)((V) >> 16); \ + (P)[2] = (unsigned char)((V) >> 8); \ + (P)[3] = (unsigned char)(V) +#define PUTdisp30(V, P) { \ + unsigned long int temp; \ + temp = GETword(P) & ~0x3fffffff; \ + temp |= ((V) & 0x3fffffff); \ + PUTword(temp, P); \ + } +#define PUTdisp22(V, P) { \ + unsigned long int temp; \ + temp = GETword(P) & ~0x3fffff; \ + temp |= ((V) & 0x3fffff); \ + PUTword(temp, P); \ + } +#define PUTimm22(V, P) { \ + unsigned long int temp; \ + temp = GETword(P) & ~0x3fffff; \ + temp |= ((V) & 0x3fffff); \ + PUTword(temp, P); \ + } +#define PUTimm5(V, P) { \ + unsigned long int temp; \ + temp = GEThalf(P+2) & ~0x1f; \ + temp |= ((V) & 0x1f); \ + PUThalf(temp, (P+2)); \ + } +#define PUTimm6(V, P) { \ + unsigned long int temp; \ + temp = GEThalf(P+2) & ~0x2f; \ + temp |= ((V) & 0x2f); \ + PUThalf(temp, (P+2)); \ + } +#define PUTimm7(V, P) { \ + unsigned long int temp; \ + temp = GEThalf(P+2) & ~0x3f; \ + temp |= ((V) & 0x3f); \ + PUThalf(temp, (P+2)); \ + } +#define PUTsimm13(V, P) { \ + unsigned long int temp; \ + temp = GEThalf(P+2) & ~0x1fff; \ + temp |= ((V) & 0x1fff); \ + PUThalf(temp, (P+2)); \ + } +#define PUTplt22(V, P) { \ + unsigned long int temp; \ + temp = GETword((P)+8) & ~0x3fffff; \ + temp |= ((V) & 0x3fffff); \ + PUTword(temp, ((P)+8)); \ + } +#define PUTsimm10(V, P) { \ + unsigned long int temp; \ + temp = GEThalf(P+2) & ~0x3ff; \ + temp |= ((V) & 0x3ff); \ + PUThalf(temp, (P+2)); \ + } +#define PUTsimm11(V, P) { \ + unsigned long int temp; \ + temp = GEThalf(P+2) & ~0x7ff; \ + temp |= ((V) & 0x7ff); \ + PUThalf(temp, (P+2)); \ + } +#define PUTdisp16(V, P) { \ + unsigned long int temp; \ + temp = GETword(P) & ~0x303fff; \ + temp |= ((V) & 0xc000) << 6; \ + temp |= ((V) & 0x3fff); \ + PUTword(temp, P); \ + } +#define PUTdisp19(V, P) { \ + unsigned long int temp; \ + temp = GETword(P) & ~0x7ffff; \ + temp |= ((V) & 0x7ffff); \ + PUTword(temp, P); \ + } + +static void +move_reloc(unsigned char * iaddr, unsigned char * oaddr, unsigned char type) +{ + switch (type) { + case R_SPARC_8: + case R_SPARC_DISP8: + PUTbyte(GETbyte(iaddr), oaddr); + break; + + case R_SPARC_16: + case R_SPARC_DISP16: + PUThalf(GEThalf(iaddr), oaddr); + break; + + case R_SPARC_32: + case R_SPARC_DISP32: + case R_SPARC_GLOB_DAT: + case R_SPARC_RELATIVE: + case R_SPARC_UA32: + PUTword(GETword(iaddr), oaddr); + break; + + case R_SPARC_WDISP30: + case R_SPARC_WPLT30: + PUTdisp30(GETdisp30(iaddr), oaddr); + break; + + case R_SPARC_WDISP22: + case R_SPARC_PC22: + PUTdisp22(GETdisp22(iaddr), oaddr); + break; + + case R_SPARC_HI22: + case R_SPARC_GOT22: + case R_SPARC_22: + PUTimm22(GETimm22(iaddr), oaddr); + break; + + case R_SPARC_13: + case R_SPARC_GOT13: + PUTsimm13(GETsimm13(iaddr), oaddr); + break; + + case R_SPARC_LO10: + case R_SPARC_GOT10: + case R_SPARC_PC10: +#ifdef R_SPARC_10 + case R_SPARC_10: +#endif + PUTsimm10(GETsimm10(iaddr), oaddr); + break; + +#ifdef R_SPARC_11 + case R_SPARC_11: + PUTsimm11(GETsimm11(iaddr), oaddr); + break; +#endif + +#ifdef R_SPARC_WDISP16 + case R_SPARC_WDISP16: + PUTdisp16(GETdisp16(iaddr), oaddr); + break; +#endif + +#ifdef R_SPARC_WDISP19 + case R_SPARC_WDISP19: + PUTdisp19(GETdisp19(iaddr), oaddr); + break; +#endif + +#ifdef R_SPARC_5 + case R_SPARC_5: + PUTimm5(GETimm5(iaddr), oaddr); + break; +#endif + +#ifdef R_SPARC_6 + case R_SPARC_6: + PUTimm6(GETimm6(iaddr), oaddr); + break; +#endif + +#ifdef R_SPARC_7 + case R_SPARC_7: + PUTimm7(GETimm7(iaddr), oaddr); + break; +#endif + + default: + break; + } +} + +void +update_reloc(Cache *ocache, Cache *_ocache, + Cache *icache, Cache *_icache, + Half shnum) +{ + Shdr *shdr; + Rel *rels; + int reln, cnt; + Cache *orcache, *ircache; + + /* + * Set up to read the output relocation table. + */ + shdr = _ocache->c_shdr; + rels = (Rel *)_ocache->c_data->d_buf; + reln = shdr->sh_size / shdr->sh_entsize; + + /* + * Determine the section that is being relocated. + */ + orcache = &ocache[shdr->sh_info]; + shdr = _icache->c_shdr; + ircache = &icache[shdr->sh_info]; + + /* + * Loop through the relocation table. + */ + for (cnt = 0; cnt < reln; cnt++, rels++) { + unsigned char *iaddr, *oaddr; + Addr off; + unsigned char type = ELF_R_TYPE(rels->r_info); + + /* + * Ignore some relocations as these can safely be carried out + * twice (they simply override any existing data). In fact, + * some relocations like __iob's copy relocation must be carried + * out each time the process restarts otherwise stdio blows up. + */ + if ((type == R_SPARC_COPY) || (type == R_SPARC_JMP_SLOT) || + (type == R_SPARC_NONE)) + continue; + + /* + * If we are required to restore the relocation location + * to it's value prior to relocation, then read the + * locations original contents from the input image and + * copy it to the output image. + */ + off = rels->r_offset - ircache->c_shdr->sh_addr; + iaddr = (unsigned char *)ircache->c_data->d_buf + off; + oaddr = (unsigned char *)orcache->c_data->d_buf + off; + move_reloc(iaddr, oaddr, type); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/sparc/machdep.h Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#pragma ident "@(#) $Id: machdep.h,v 1.3 1997/05/29 04:23:26 steve Exp $ - SMI" + +/* + * Global include file for all sgs SPARC machine dependent macros, constants + * and declarations. + */ +#ifndef MACHDEP_DOT_H +#define MACHDEP_DOT_H + +#include <link.h> +#include <sys/elf_SPARC.h> + +/* + * Make machine class dependent data types transparent to the common code + */ +#define Word Elf32_Word +#define Sword Elf32_Sword +#define Half Elf32_Half +#define Addr Elf32_Addr +#define Off Elf32_Off +#define Byte unsigned char + +#define Ehdr Elf32_Ehdr +#define Shdr Elf32_Shdr +#define Sym Elf32_Sym +#define Rel Elf32_Rela +#define Phdr Elf32_Phdr +#define Dyn Elf32_Dyn +#define Boot Elf32_Boot +#define Verdef Elf32_Verdef +#define Verdaux Elf32_Verdaux +#define Verneed Elf32_Verneed +#define Vernaux Elf32_Vernaux +#define Versym Elf32_Versym + +/* + * Make machine class dependent functions transparent to the common code + */ +#define ELF_R_TYPE ELF32_R_TYPE +#define ELF_R_INFO ELF32_R_INFO +#define ELF_R_SYM ELF32_R_SYM +#define ELF_ST_BIND ELF32_ST_BIND +#define ELF_ST_TYPE ELF32_ST_TYPE +#define ELF_ST_INFO ELF32_ST_INFO +#define elf_fsize elf32_fsize +#define elf_getehdr elf32_getehdr +#define elf_getphdr elf32_getphdr +#define elf_newehdr elf32_newehdr +#define elf_newphdr elf32_newphdr +#define elf_getshdr elf32_getshdr + +/* + * Make relocation types transparent to the common code + */ +#define M_REL_SHT_TYPE SHT_RELA /* section header type */ + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/sparc/uninit.c Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,45 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * This is where you put processor specific un-initialization things + * to deal with "initialization idempotency issues". + */ + +void dynodump_uninit(void); +void +dynodump_uninit(void) +{ + return; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dynodump/syms.c Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,73 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * Update the value of the `_edata' and `_end' symbols. + */ +#pragma ident "@(#) $Id: syms.c,v 1.3 1997/05/29 04:22:30 steve Exp $ - SMI" + +#include <libelf.h> +#include <string.h> +#include "machdep.h" +#include "_dynodump.h" + +void +update_sym(Cache * cache, Cache * _cache, Addr edata) +{ + char *strs; + Sym *syms; + Shdr *shdr; + int symn, cnt; + + /* + * Set up to read the symbol table and its associated string table. + */ + shdr = _cache->c_shdr; + syms = (Sym *) _cache->c_data->d_buf; + symn = shdr->sh_size / shdr->sh_entsize; + + strs = (char *) cache[shdr->sh_link].c_data->d_buf; + + /* + * Loop through the symbol table looking for `_end' and `_edata'. + */ + for (cnt = 0; cnt < symn; cnt++, syms++) { + char *name = strs + syms->st_name; + + if (strcmp(name, "_end") && strcmp(name, "_edata")) + continue; + + syms->st_value = edata; + } +}
--- a/etc/DISTRIB Mon Aug 13 09:37:21 2007 +0200 +++ b/etc/DISTRIB Mon Aug 13 09:38:25 2007 +0200 @@ -12,7 +12,7 @@ ftp://ftp-digital.cern.ch:/pub/beta/xemacs-20.0/ ftp://ftp.uu.net:/systems/gnu/xemacs/ ftp://ftp.sunet.se:/pub/gnu/xemacs/ - ftp://tp.cenatls.cena.dgac.fr:/pub/Emacs/xemacs/ + ftp://ftp.cenatls.cena.dgac.fr:/pub/Emacs/xemacs/ ftp://ftp.th-darmstadt.de:/pub/editors/xemacs/ ftp://sunsite.doc.ic.ac.uk:/gnu/xemacs/ ftp://ftp.ibp.fr:/pub/emacs/xemacs/ @@ -20,7 +20,7 @@ ftp://ftp.technion.ac.il:/pub/unsupported/gnu/xemacs/ ftp://thphys.irb.hr:/pub/xemacs/ ftp://sunsite.cnlab-switch.ch/mirror/xemacs/ - ftp://ftp.unicamp.br:/pub/xemacs/r20.0/ + ftp://ftp.unicamp.br:/pub/xemacs/ ftp://ftp.usyd.edu.au:/pub/Xemacs/ ftp://ftp.lab.kdd.co.jp/xemacs/ ftp://SunSITE.sut.ac.jp/pub/archives/xemacs/
--- a/etc/FTP Mon Aug 13 09:37:21 2007 +0200 +++ b/etc/FTP Mon Aug 13 09:38:25 2007 +0200 @@ -12,7 +12,7 @@ ftp://ftp-digital.cern.ch:/pub/beta/xemacs-20.0/ ftp://ftp.uu.net:/systems/gnu/xemacs/ ftp://ftp.sunet.se:/pub/gnu/xemacs/ - ftp://tp.cenatls.cena.dgac.fr:/pub/Emacs/xemacs/ + ftp://ftp.cenatls.cena.dgac.fr:/pub/Emacs/xemacs/ ftp://ftp.th-darmstadt.de:/pub/editors/xemacs/ ftp://sunsite.doc.ic.ac.uk:/gnu/xemacs/ ftp://ftp.ibp.fr:/pub/emacs/xemacs/ @@ -20,7 +20,7 @@ ftp://ftp.technion.ac.il:/pub/unsupported/gnu/xemacs/ ftp://thphys.irb.hr:/pub/xemacs/ ftp://sunsite.cnlab-switch.ch/mirror/xemacs/ - ftp://ftp.unicamp.br:/pub/xemacs/r20.0/ + ftp://ftp.unicamp.br:/pub/xemacs/ ftp://ftp.usyd.edu.au:/pub/Xemacs/ ftp://ftp.lab.kdd.co.jp/xemacs/ ftp://SunSITE.sut.ac.jp/pub/archives/xemacs/
--- a/etc/NEWS Mon Aug 13 09:37:21 2007 +0200 +++ b/etc/NEWS Mon Aug 13 09:38:25 2007 +0200 @@ -97,9 +97,6 @@ functionality, with all the popular Lisp packages being available in the form of easy-to-install add-ons. -** Autoconf 2 will be supported, to make XEmacs a more behaved -denizen of the free software community. - ** We are working on improving the Mule support in future releases: *** Other input methods, such as skk, will be supported. @@ -109,6 +106,22 @@ *** More user-level documentation on using Mule. +* Changes in XEmacs 20.3 +======================== + +** Autoconf 2 is supported. + +** Multiple TTY frames are now available. + +On consoles that display only one frame at a time (e.g. TTY consoles), +creating a new frame with `C-x 5 2' also raises and selects that +frame. The behavior of window system frames is unchanged. + + +* Lisp and internal changes in XEmacs 20.3 +========================================== + + * Changes in XEmacs 20.2 ======================== @@ -124,7 +137,7 @@ The Delete and Backspace keysyms are now no longer identical. A better version of delbackspace.el has been added called delbs.el. -** XEmacs 20.0 MULE API supported for backwards compatibilty +** XEmacs 20.0 MULE API supported for backwards compatibility XEmacs 20.2 primarily supports the MULE 3 API. It now also supports the XEmacs 20.0 MULE API. @@ -421,7 +434,6 @@ ** tpu-edt.el, fixes courtesy of R. Kevin Oberman ** etags.c-11.86 Courtesy of F. Potortì - * Lisp and internal changes in XEmacs 20.2 ========================================== @@ -582,7 +594,7 @@ been invested in Japanese, with particular focus on Japanese users of Sun WorkShop. Many menubar labels have been translated into Japanese. Martin Buchholz, the maintainer of MULE features within - XEmacs normaly runs XEmacs in a Japanese language environment. + XEmacs normally runs XEmacs in a Japanese language environment. Some of the other contributors are Japanese, most importantly Morioka Tomohiko, author of the TM package, providing MIME support for Mail and News. @@ -1635,7 +1647,7 @@ The functions `face-font', `face-foreground', `face-background', `set-face-font', `set-face-foreground', `set-face-background', etc. are now convenience functions, trivially implemented using -`face-property' and `set-face-property' and take new optioanl +`face-property' and `set-face-property' and take new optional arguments in accordance with those functions. New convenience functions `face-font-instance', `face-foreground-instance', `face-background-instance', etc. are provided and are trivially @@ -1823,7 +1835,7 @@ New function `mouse-position' that obsoletes and is more powerful than `read-mouse-position'. -New functions `mouse-pixel-positon' and `set-mouse-pixel-position' for +New functions `mouse-pixel-position' and `set-mouse-pixel-position' for working with pixels instead of characters. The active (Zmacs) region is now highlighted using the `zmacs-region-face'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/danish.el Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,11 @@ +;;; danish.el - Setup AUC TeX for editing Danish text. + +;; $Id: danish.el,v 1.1 1997/05/27 22:13:46 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "danish" + (function (lambda () + (run-hooks 'TeX-language-dk-hook)))) + +;;; danish.el ends here
--- a/etc/etags.1 Mon Aug 13 09:37:21 2007 +0200 +++ b/etc/etags.1 Mon Aug 13 09:38:25 2007 +0200 @@ -40,8 +40,9 @@ format understood by .BR vi ( 1 )\c \&. Both forms of the program understand -the syntax of C, C++, Fortran, Pascal, LaTeX, Scheme, -Emacs Lisp/Common Lisp, Erlang, Prolog and most assembler\-like syntaxes. +the syntax of C, Objective C, C++, Fortran, Pascal, LaTeX, Scheme, +Emacs Lisp/Common Lisp, Erlang, Postscript, Prolog and +most assembler\-like syntaxes. Both forms read the files specified on the command line, and write a tag table (defaults: `\|TAGS\|' for \fBetags\fP, `\|tags\|' for \fBctags\fP) in the current working directory. @@ -118,7 +119,8 @@ such that more characters than needed are unavoidably matched by \fItagregexp\fP, it may be useful to add a \fInameregexp\fP, to narrow down the tag scope. \fBctags\fP ignores regexps without a -\fInameregexp\fP. +\fInameregexp\fP. The syntax of regexps is the same as in emacs, +augmented with intervals of the form \\{m,n\\}, as id ed or grep. .br Here are some examples. All the regexps are quoted to protect them from shell interpretation.
--- a/lib-src/Makefile.in.in Mon Aug 13 09:37:21 2007 +0200 +++ b/lib-src/Makefile.in.in Mon Aug 13 09:38:25 2007 +0200 @@ -106,7 +106,7 @@ /* Things that a user might actually run, which should be installed in bindir. */ INSTALLABLES = etags ctags b2m gnuclient -INSTALLABLE_SCRIPTS = rcs-checkin pstogif install-sid send-pr +INSTALLABLE_SCRIPTS = rcs-checkin pstogif install-sid send-pr gnudoit /* Things that Emacs runs internally, or during the build process, which should not be installed in bindir. */
--- a/lib-src/etags.c Mon Aug 13 09:37:21 2007 +0200 +++ b/lib-src/etags.c Mon Aug 13 09:38:25 2007 +0200 @@ -31,7 +31,7 @@ * Francesco Potorti` (F.Potorti@cnuce.cnr.it) is the current maintainer. */ -char pot_etags_version[] = "@(#) pot revision number is 11.90"; +char pot_etags_version[] = "@(#) pot revision number is 12.7"; #define TRUE 1 #define FALSE 0 @@ -40,10 +40,6 @@ # define DEBUG FALSE #endif -#ifndef TeX_named_tokens -# define TeX_named_tokens FALSE -#endif - #ifdef MSDOS # include <string.h> # include <fcntl.h> @@ -121,10 +117,13 @@ #define lowcase(c) tolower ((char)c) -#define iswhite(arg) (_wht[arg]) /* T if char is white */ -#define begtoken(arg) (_btk[arg]) /* T if char can start token */ -#define intoken(arg) (_itk[arg]) /* T if char can be in token */ -#define endtoken(arg) (_etk[arg]) /* T if char ends tokens */ +#define CHARS 256 /* 2^sizeof(char) */ +#define CHAR(x) ((int)x & (CHARS - 1)) +#define iswhite(c) (_wht[CHAR(c)]) /* c is white */ +#define notinname(c) (_nin[CHAR(c)]) /* c is not in a name */ +#define begtoken(c) (_btk[CHAR(c)]) /* c can start token */ +#define intoken(c) (_itk[CHAR(c)]) /* c can be in token */ +#define endtoken(c) (_etk[CHAR(c)]) /* c ends tokens */ #ifdef DOS_NT # define absolutefn(fn) (fn[0] == '/' \ @@ -172,30 +171,15 @@ long *xmalloc (), *xrealloc (); typedef void Lang_function (); -#if FALSE /* many compilers barf on this */ -Lang_function Asm_labels; -Lang_function default_C_entries; -Lang_function C_entries; -Lang_function Cplusplus_entries; -Lang_function Cjava_entries; -Lang_function Cstar_entries; -Lang_function Erlang_functions; -Lang_function Fortran_functions; -Lang_function Yacc_entries; -Lang_function Lisp_functions; -Lang_function Pascal_functions; -Lang_function Perl_functions; -Lang_function Postscript_functions; -Lang_function Prolog_functions; -Lang_function Scheme_functions; -Lang_function TeX_functions; -Lang_function just_read_file; -#else /* so let's write it this way */ +/* Many compilers barf on this: + Lang_function Asm_labels; + so let's write it this way */ void Asm_labels (); void C_entries (); void default_C_entries (); void plain_C_entries (); void Cjava_entries (); +void Cobol_paragraphs (); void Cplusplus_entries (); void Cstar_entries (); void Erlang_functions (); @@ -209,7 +193,6 @@ void Scheme_functions (); void TeX_functions (); void just_read_file (); -#endif Lang_function *get_language_from_name (); Lang_function *get_language_from_interpreter (); @@ -230,7 +213,7 @@ void getit (); void init (); void initbuffer (); -void pfnote (); +void pfnote (), new_pfnote (); void process_file (); void put_entries (); void takeprec (); @@ -274,26 +257,30 @@ } lbs[2]; /* boolean "functions" (see init) */ -logical _wht[0177], _etk[0177], _itk[0177], _btk[0177]; +logical _wht[CHARS], _nin[CHARS], _itk[CHARS], _btk[CHARS], _etk[CHARS]; char /* white chars */ *white = " \f\t\n\013", + /* not in a name */ + *nonam =" \f\t\n\013(=,[;", /* token ending chars */ *endtk = " \t\n\013\"'#()[]{}=-+%*/&|^~!<>;,.:?", /* token starting chars */ *begtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$~@", /* valid in-token chars */ - *intk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$0123456789"; + *midtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$0123456789"; logical append_to_tagfile; /* -a: append to tags */ /* The following three default to TRUE for etags, but to FALSE for ctags. */ -logical typedefs; /* -t: create tags for typedefs */ -logical typedefs_and_cplusplus; /* -T: create tags for typedefs, level */ +logical typedefs; /* -t: create tags for C typedefs */ +logical typedefs_and_cplusplus; /* -T: create tags for C typedefs, level */ /* 0 struct/enum/union decls, and C++ */ /* member functions. */ -logical constantypedefs; /* -d: create tags for C #define and enum */ - /* constants. */ +logical constantypedefs; /* -d: create tags for C #define, enum */ + /* constants and variables. */ /* -D: opposite of -d. Default under ctags. */ +logical variables; /* create tags for C global variables */ +logical variables_and_cplusplus; /* tags for C++ variables inside classes */ logical update; /* -u: update tags */ logical vgrind_style; /* -v: create vgrind style index output */ logical no_warnings; /* -w: suppress warnings */ @@ -301,6 +288,8 @@ logical cplusplus; /* .[hc] means C++, not C */ logical noindentypedefs; /* -I: ignore indentation in C */ +enum { tagsopt = 1000 }; + struct option longopts[] = { { "append", no_argument, NULL, 'a' }, @@ -318,6 +307,7 @@ { "no-warn", no_argument, NULL, 'w' }, { "output", required_argument, NULL, 'o' }, { "regex", required_argument, NULL, 'r' }, + { "tags", required_argument, NULL, tagsopt }, { "typedefs", no_argument, NULL, 't' }, { "typedefs-and-c++", no_argument, NULL, 'T' }, { "update", no_argument, NULL, 'u' }, @@ -376,6 +366,9 @@ char *Cjava_suffixes [] = { "java", NULL }; +char *Cobol_suffixes [] = + { "COB", "cob", NULL }; + char *Cstar_suffixes [] = { "cs", "hs", NULL }; @@ -436,9 +429,10 @@ { "c", default_C_entries, default_C_suffixes, NULL }, { "c++", Cplusplus_entries, Cplusplus_suffixes, NULL }, { "c*", Cstar_entries, Cstar_suffixes, NULL }, + { "cobol", Cobol_paragraphs, Cobol_suffixes, NULL }, { "erlang", Erlang_functions, Erlang_suffixes, NULL }, { "fortran", Fortran_functions, Fortran_suffixes, NULL }, -/*{ "java", Cjava_entries, Cjava_suffixes, NULL },*/ + { "java", Cjava_entries, Cjava_suffixes, NULL }, { "lisp", Lisp_functions, Lisp_suffixes, NULL }, { "pascal", Pascal_functions, Pascal_suffixes, NULL }, { "perl", Perl_functions, Perl_suffixes, Perl_interpreters }, @@ -515,11 +509,12 @@ if (CTAGS) puts ("-d, --defines\n\ - Create tag entries for C #define constants and enum constants, too."); + Create tag entries for C #define constants, enum constants,\n\ + and variables, too."); else puts ("-D, --no-defines\n\ - Don't create tag entries for C #define constants and enum constants.\n\ - This makes the tags file smaller."); + Don't create tag entries for C #define constants, enum constants,\n\ + and variables. This makes the tags file smaller."); if (!CTAGS) { @@ -770,10 +765,14 @@ /* * If etags, always find typedefs and structure tags. Why not? - * Also default is to find macro constants and enum constants. + * Also default is to find macro constants, enum constants and + * variables. */ if (!CTAGS) - typedefs = typedefs_and_cplusplus = constantypedefs = TRUE; + { + typedefs = typedefs_and_cplusplus = constantypedefs = TRUE; + variables = variables_and_cplusplus = TRUE; + } while (1) { @@ -799,18 +798,10 @@ break; /* Common options. */ - case 'a': - append_to_tagfile = TRUE; - break; - case 'C': - cplusplus = TRUE; - break; - case 'd': - constantypedefs = TRUE; - break; - case 'D': - constantypedefs = FALSE; - break; + case 'a': append_to_tagfile = TRUE; break; + case 'C': cplusplus = TRUE; break; + case 'd': constantypedefs = TRUE; break; + case 'D': constantypedefs = FALSE; break; case 'f': /* for compatibility with old makefiles */ case 'o': if (tagfile) @@ -861,22 +852,32 @@ break; #else /* CTAGS */ /* Ctags options. */ - case 'B': - searchar = '?'; - break; - case 'u': - update = TRUE; - break; - case 'v': - vgrind_style = TRUE; - /*FALLTHRU*/ - case 'x': - cxref_style = TRUE; - break; - case 'w': - no_warnings = TRUE; - break; + case 'B': searchar = '?'; break; + case 'u': update = TRUE; break; + case 'v': vgrind_style = TRUE; /*FALLTHRU*/ + case 'x': cxref_style = TRUE; break; + case 'w': no_warnings = TRUE; break; #endif /* CTAGS */ + case tagsopt: + { + char *t; + logical value = TRUE; + + for (t = optarg; *t != '\0'; t++) + switch (*t) + { + case '-': value = FALSE; break; + case '+': value = TRUE; break; + case 'd': constantypedefs = value; break; + case 't': typedefs = value; break; + case 'T': typedefs_and_cplusplus = value; break; + case 'v': variables = value; break; + case 'V': variables_and_cplusplus = value; break; + default: + suggest_asking_for_help (); + } + break; + } default: suggest_asking_for_help (); } @@ -1175,20 +1176,13 @@ register char *sp; register int i; - for (i = 0; i < 0177; i++) - _wht[i] = _etk[i] = _itk[i] = _btk[i] = FALSE; - for (sp = white; *sp; sp++) - _wht[*sp] = TRUE; - for (sp = endtk; *sp; sp++) - _etk[*sp] = TRUE; - for (sp = intk; *sp; sp++) - _itk[*sp] = TRUE; - for (sp = begtk; *sp; sp++) - _btk[*sp] = TRUE; - _wht[0] = _wht['\n']; - _etk[0] = _etk['\n']; - _btk[0] = _btk['\n']; - _itk[0] = _itk['\n']; + 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']; } /* @@ -1333,6 +1327,59 @@ add_node (np, &head); } +/* Date: Wed, 22 Jan 1997 02:56:31 -0500 + * From: Sam Kendall <kendall@cybercom.net> + * Subject: Proposal for firming up the TAGS format specification + * To: F.Potorti@cnuce.cnr.it + * + * pfnote should emit the optimized form [unnamed tag] only if: + * 1. name does not contain any of the characters " \t\r\n()"; + * 2. linestart contains name as either a rightmost, or rightmost but + * one character, substring; + * 3. the character, if any, immediately before name in linestart must + * be one of the characters " \t()"; + * 4. the character, if any, immediately after name in linestart must + * also be one of the characters " \t()". + */ +#define traditional_tag_style TRUE +void +new_pfnote (name, namelen, is_func, linestart, linelen, lno, cno) + char *name; /* tag name, or NULL if unnamed */ + int namelen; /* tag length */ + logical is_func; /* tag is a function */ + char *linestart; /* start of the line where tag is */ + int linelen; /* length of the line where tag is */ + int lno; /* line number */ + long cno; /* character number */ +{ + register char *cp; + logical named; + + named = TRUE; + if (!CTAGS) + { + for (cp = name; !notinname (*cp); cp++) + continue; + if (*cp == '\0') /* rule #1 */ + { + cp = linestart + linelen - namelen; + if (notinname (linestart[linelen-1])) + cp -= 1; /* rule #4 */ + if (cp >= linestart /* rule #2 */ + && (cp == linestart + || notinname (cp[-1])) /* rule #3 */ + && strneq (name, cp, namelen)) /* rule #2 */ + named = FALSE; /* use unnamed tag */ + } + } + + if (named) + name = savenstr (name, namelen); + else + name = NULL; + pfnote (name, is_func, linestart, linelen, lno, cno); +} + /* * free_tree () * recurse on left children, iterate on right children. @@ -1539,7 +1586,7 @@ { st_none, st_C_objprot, st_C_objimpl, st_C_objend, st_C_gnumacro, st_C_struct, st_C_enum, st_C_define, st_C_typedef, st_C_typespec, - st_C_jstruct + st_C_javastruct, st_C_javapack }; /* Feed stuff between (but not including) %[ and %] lines to: @@ -1551,8 +1598,10 @@ @protocol, 0, st_C_objprot @implementation,0, st_C_objimpl @end, 0, st_C_objend -extends, C_JAVA, st_C_jstruct -implements, C_JAVA, st_C_jstruct +import, C_JAVA, st_C_javapack +package, C_JAVA, st_C_javapack +extends, C_JAVA, st_C_javastruct +implements, C_JAVA, st_C_javastruct class, C_PLPL, st_C_struct namespace, C_PLPL, st_C_struct domain, C_STAR, st_C_struct @@ -1591,6 +1640,7 @@ %] and replace lines between %< and %> with its output. */ /*%<*/ +/* starting time is 18:48:7 */ /* C code produced by gperf version 2.1 (K&R C version) */ /* Command-line: gperf -c -k 1,3 -o -p -r -t */ @@ -1599,33 +1649,33 @@ #define MIN_WORD_LENGTH 3 #define MAX_WORD_LENGTH 15 -#define MIN_HASH_VALUE 33 -#define MAX_HASH_VALUE 126 +#define MIN_HASH_VALUE 8 +#define MAX_HASH_VALUE 103 /* - 36 keywords - 94 is the maximum key range + 38 keywords + 96 is the maximum key range */ -int +static int hash (str, len) register char *str; register unsigned int len; { static unsigned char hash_table[] = { - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 15, 126, 126, 126, 53, 24, - 41, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 51, 126, 126, 26, 47, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 11, 36, 26, - 35, 13, 22, 39, 126, 34, 126, 126, 43, 21, - 36, 6, 49, 126, 47, 61, 28, 57, 35, 126, - 126, 126, 126, 126, 126, 126, 126, 126, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 50, 103, 103, 103, 44, 15, + 28, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 41, 103, 103, 27, 45, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 26, 10, 52, + 41, 38, 8, 21, 103, 47, 103, 103, 0, 27, + 42, 17, 41, 103, 44, 22, 8, 33, 0, 103, + 103, 103, 103, 103, 103, 103, 103, 103, }; return len + hash_table[str[2]] + hash_table[str[0]]; } @@ -1638,65 +1688,68 @@ static struct C_stab_entry wordlist[] = { - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, + {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, + {"volatile", 0, st_C_typespec}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, + {"",}, {"",}, {"",}, {"float", 0, st_C_typespec}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, + {"bool", C_PLPL, st_C_typespec}, + {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, + {"auto", 0, st_C_typespec}, + {"",}, {"",}, {"",}, + {"mutable", C_PLPL, st_C_typespec}, + {"",}, + {"short", 0, st_C_typespec}, + {"",}, + {"long", 0, st_C_typespec}, + {"",}, {"",}, + {"signed", 0, st_C_typespec}, + {"",}, + {"void", 0, st_C_typespec}, + {"extern", 0, st_C_typespec}, + {"extends", C_JAVA, st_C_javastruct}, + {"static", 0, st_C_typespec}, + {"define", 0, st_C_define}, + {"typedef", 0, st_C_typedef}, + {"typename", C_PLPL, st_C_typespec}, + {"int", 0, st_C_typespec}, + {"",}, {"",}, + {"SYSCALL", 0, st_C_gnumacro}, + {"PSEUDO", 0, st_C_gnumacro}, + {"unsigned", 0, st_C_typespec}, + {"",}, + {"ENTRY", 0, st_C_gnumacro}, + {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, + {"struct", 0, st_C_struct}, + {"",}, + {"domain", C_STAR, st_C_struct}, + {"enum", 0, st_C_enum}, + {"",}, + {"DEFUN", 0, st_C_gnumacro}, + {"namespace", C_PLPL, st_C_struct}, + {"",}, + {"double", 0, st_C_typespec}, + {"",}, {"char", 0, st_C_typespec}, {"class", C_PLPL, st_C_struct}, - {"auto", 0, st_C_typespec}, - {"",}, {"",}, - {"bool", C_PLPL, st_C_typespec}, - {"extern", 0, st_C_typespec}, - {"extends", C_JAVA, st_C_jstruct}, - {"",}, {"",}, + {"",}, + {"union", 0, st_C_struct}, + {"",}, + {"explicit", C_PLPL, st_C_typespec}, + {"",}, {"",}, {"",}, {"",}, {"@implementation", 0, st_C_objimpl}, - {"",}, {"",}, {"",}, + {"",}, + {"import", C_JAVA, st_C_javapack}, + {"",}, {"@end", 0, st_C_objend}, - {"mutable", C_PLPL, st_C_typespec}, - {"",}, {"",}, - {"SYSCALL", 0, st_C_gnumacro}, + {"",}, + {"implements", C_JAVA, st_C_javastruct}, + {"const", 0, st_C_typespec}, + {"package", C_JAVA, st_C_javapack}, {"",}, {"@interface", 0, st_C_objprot}, - {"domain", C_STAR, st_C_struct}, - {"define", 0, st_C_define}, - {"",}, - {"int", 0, st_C_typespec}, - {"namespace", C_PLPL, st_C_struct}, - {"const", 0, st_C_typespec}, - {"",}, {"",}, - {"explicit", C_PLPL, st_C_typespec}, {"@protocol", 0, st_C_objprot}, - {"short", 0, st_C_typespec}, - {"void", 0, st_C_typespec}, - {"enum", 0, st_C_enum}, - {"",}, - {"ENTRY", 0, st_C_gnumacro}, - {"",}, - {"static", 0, st_C_typespec}, - {"",}, {"",}, - {"PSEUDO", 0, st_C_gnumacro}, - {"",}, - {"long", 0, st_C_typespec}, - {"typedef", 0, st_C_typedef}, - {"typename", C_PLPL, st_C_typespec}, - {"volatile", 0, st_C_typespec}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"implements", C_JAVA, st_C_jstruct}, - {"",}, {"",}, - {"union", 0, st_C_struct}, - {"",}, - {"double", 0, st_C_typespec}, - {"DEFUN", 0, st_C_gnumacro}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"signed", 0, st_C_typespec}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"struct", 0, st_C_struct}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, {"",}, - {"unsigned", 0, st_C_typespec}, }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -1713,6 +1766,7 @@ } return 0; } +/* ending time is 18:48:7 */ /*%>*/ enum sym_type @@ -1729,18 +1783,19 @@ } /* - * C functions are recognized using a simple finite automaton. - * funcdef is its state variable. + * C functions and variables are recognized using a simple + * finite automaton. fvdev is its state variable. */ enum { - fnone, /* nothing seen */ - ftagseen, /* function-like tag seen */ - fstartlist, /* just after open parenthesis */ - finlist, /* in parameter list */ - flistseen, /* after parameter list */ - fignore /* before open brace */ -} funcdef; + fvnone, /* nothing seen */ + fvnameseen, /* function or variable name seen */ + fstartlist, /* func: just after open parenthesis */ + finlist, /* func: in parameter list */ + flistseen, /* func: after parameter list */ + fignore, /* func: before open brace */ + vignore /* var: ignore until ';' */ +} fvdev; /* @@ -1797,6 +1852,7 @@ /* * State machine for Objective C protocols and implementations. + * Tom R.Hageman <tom@basil.icce.rug.nl> */ enum { @@ -1833,8 +1889,8 @@ /* * consider_token () * checks to see if the current token is at the start of a - * function, or corresponds to a typedef, or is a struct/union/enum - * tag, or #define, or an enum constant. + * function or variable, or corresponds to a typedef, or + * is a struct/union/enum tag, or #define, or an enum constant. * * *IS_FUNC gets TRUE iff the token is a function or #define macro * with args. C_EXT is which language we are looking at. @@ -1845,7 +1901,7 @@ * whatever follows `operator'. * * Globals - * funcdef IN OUT + * fvdev IN OUT * structdef IN OUT * definedef IN OUT * typdef IN OUT @@ -1854,14 +1910,14 @@ */ logical -consider_token (str, len, c, c_ext, cblev, parlev, is_func) +consider_token (str, len, c, c_ext, cblev, parlev, is_func_or_var) register char *str; /* IN: token pointer */ register int len; /* IN: token length */ register char c; /* IN: first char after the token */ int c_ext; /* IN: C extensions mask */ int cblev; /* IN: curly brace level */ int parlev; /* IN: parenthesis level */ - logical *is_func; /* OUT: function found */ + logical *is_func_or_var; /* OUT: function or variable found */ { enum sym_type toktype = C_symtype (str, len, c_ext); @@ -1889,8 +1945,8 @@ * and constantypedefs is FALSE. */ definedef = dignorerest; - *is_func = (c == '('); - if (!*is_func && !constantypedefs) + *is_func_or_var = (c == '('); + if (!*is_func_or_var && !constantypedefs) return FALSE; else return TRUE; @@ -1910,7 +1966,7 @@ { if (typedefs) typdef = ttypedseen; - funcdef = fnone; + fvdev = fvnone; return FALSE; } break; @@ -1950,7 +2006,7 @@ */ switch (toktype) { - case st_C_jstruct: + case st_C_javastruct: if (structdef == stagseen) structdef = scolonseen; return FALSE; @@ -1968,8 +2024,8 @@ if (structdef == skeyseen) { - /* Save the tag for struct/union/class, for functions that may be - defined inside. */ + /* Save the tag for struct/union/class, for functions and variables + that may be defined inside. */ if (structtype == st_C_struct) structtag = savenstr (str, len); else @@ -1978,7 +2034,7 @@ return TRUE; } - /* Avoid entering funcdef stuff if typdef is going on. */ + /* Avoid entering fvdev stuff if typdef is going on. */ if (typdef != tnone) { definedef = dnone; @@ -2007,8 +2063,8 @@ if (next_token_is_func) { next_token_is_func = FALSE; - funcdef = fignore; - *is_func = TRUE; + fvdev = fignore; + *is_func_or_var = TRUE; return TRUE; } @@ -2027,7 +2083,7 @@ } break; case oimplementation: - /* Save the class tag for functions that may be defined inside. */ + /* Save the class tag for functions or variables defined inside. */ objtag = savenstr (str, len); objdef = oinbody; return FALSE; @@ -2035,11 +2091,11 @@ /* Save the class tag for categories. */ objtag = savenstr (str, len); objdef = otagseen; - *is_func = TRUE; + *is_func_or_var = TRUE; return TRUE; case oparenseen: objdef = ocatseen; - *is_func = TRUE; + *is_func_or_var = TRUE; return TRUE; case oinbody: break; @@ -2048,9 +2104,10 @@ { objdef = omethodtag; methodlen = len; - grow_linebuffer (&token_name, methodlen+1); + grow_linebuffer (&token_name, methodlen + 1); strncpy (token_name.buffer, str, len); token_name.buffer[methodlen] = '\0'; + token_name.len = methodlen; return TRUE; } return FALSE; @@ -2063,8 +2120,9 @@ { objdef = omethodtag; methodlen += len; - grow_linebuffer (&token_name, methodlen+1); + grow_linebuffer (&token_name, methodlen + 1); strncat (token_name.buffer, str, len); + token_name.len = methodlen; return TRUE; } return FALSE; @@ -2082,20 +2140,23 @@ return FALSE; } - /* A function or enum constant? */ + /* A function, variable or enum constant? */ switch (toktype) { case st_C_typespec: - if (funcdef != finlist && funcdef != fignore) - funcdef = fnone; /* should be useless */ + if (fvdev != finlist && fvdev != fignore && fvdev != vignore) + fvdev = fvnone; /* should be useless */ + return FALSE; + case st_C_javapack: + fvdev = vignore; return FALSE; case st_none: if (constantypedefs && structdef == sinbody && structtype == st_C_enum) return TRUE; - if (funcdef == fnone) + if (fvdev == fvnone) { - funcdef = ftagseen; - *is_func = TRUE; + fvdev = fvnameseen; /* function or variable */ + *is_func_or_var = TRUE; return TRUE; } } @@ -2105,9 +2166,9 @@ /* * C_entries () - * This routine finds functions, typedefs, #define's, enum - * constants and struct/union/enum definitions in C syntax - * and adds them to the list. + * This routine finds functions, variables, typedefs, + * #define's, enum constants and struct/union/enum definitions in + * #C syntax and adds them to the list. */ typedef struct { @@ -2158,16 +2219,24 @@ logical isfun; TOKEN *tokp; { - char *name = NULL; - /* This function should never be called when tok.valid is FALSE, but we must protect against invalid input or internal errors. */ if (tokp->valid) { - if (CTAGS || tokp->named) - name = savestr (token_name.buffer); - pfnote (name, isfun, - tokp->buffer, tokp->linelen, tokp->lineno, tokp->linepos); + if (traditional_tag_style) + { + /* This was the original code. Now we call new_pfnote instead, + which uses the new method for naming tags (see new_pfnote). */ + char *name = NULL; + + if (CTAGS || tokp->named) + name = savestr (token_name.buffer); + pfnote (name, isfun, + tokp->buffer, tokp->linelen, tokp->lineno, tokp->linepos); + } + else + new_pfnote (token_name.buffer, token_name.len, isfun, + tokp->buffer, tokp->linelen, tokp->lineno, tokp->linepos); tokp->valid = FALSE; } else if (DEBUG) @@ -2186,6 +2255,8 @@ TOKEN tok; /* latest token read */ register int tokoff; /* offset in line of start of current token */ register int toklen; /* length of current token */ + char *qualifier; /* string used to qualify names */ + int qlen; /* length of qualifier */ int cblev; /* current curly brace level */ int parlev; /* current parenthesis level */ logical incomm, inquote, inchar, quotednl, midtoken; @@ -2199,15 +2270,19 @@ lp = curlb.buffer; *lp = 0; - funcdef = fnone; typdef = tnone; structdef = snone; + fvdev = fvnone; typdef = tnone; structdef = snone; definedef = dnone; objdef = onone; next_token_is_func = yacc_rules = FALSE; midtoken = inquote = inchar = incomm = quotednl = FALSE; tok.valid = savetok.valid = FALSE; cblev = 0; parlev = 0; - cplpl = c_ext & C_PLPL; - cjava = c_ext & C_JAVA; + cplpl = (c_ext & C_PLPL) == C_PLPL; + cjava = (c_ext & C_JAVA) == C_JAVA; + if (cjava) + { qualifier = "."; qlen = 1; } + else + { qualifier = "::"; qlen = 2; } while (!feof (inf)) { @@ -2279,13 +2354,13 @@ { case '"': inquote = TRUE; - if (funcdef != finlist && funcdef != fignore) - funcdef = fnone; + if (fvdev != finlist && fvdev != fignore && fvdev !=vignore) + fvdev = fvnone; continue; case '\'': inchar = TRUE; - if (funcdef != finlist && funcdef != fignore) - funcdef = fnone; + if (fvdev != finlist && fvdev != fignore && fvdev !=vignore) + fvdev = fvnone; continue; case '/': if (*lp == '*') @@ -2306,7 +2381,7 @@ { /* entering or exiting rules section in yacc file */ lp++; - definedef = dnone; funcdef = fnone; + definedef = dnone; fvdev = fvnone; typdef = tnone; structdef = snone; next_token_is_func = FALSE; midtoken = inquote = inchar = incomm = quotednl = FALSE; @@ -2351,7 +2426,7 @@ || (structdef == sinbody && structtype == st_C_enum)) && typdef != tignore && definedef != dignorerest - && funcdef != finlist) + && fvdev != finlist) { if (midtoken) { @@ -2368,35 +2443,38 @@ } else { - logical is_func = FALSE; + logical funorvar = FALSE; if (yacc_rules || consider_token (newlb.buffer + tokoff, toklen, c, - c_ext, cblev, parlev, &is_func)) + c_ext, cblev, parlev, &funorvar)) { + tok.named = FALSE; if (structdef == sinbody && definedef == dnone - && is_func) - /* function defined in C++ class body */ + && funorvar) + /* function or var defined in C++ class body */ { - grow_linebuffer (&token_name, - strlen(structtag)+2+toklen+1); + int len = strlen (structtag) + qlen + toklen; + grow_linebuffer (&token_name, len + 1); strcpy (token_name.buffer, structtag); - strcat (token_name.buffer, "::"); + strcat (token_name.buffer, qualifier); strncat (token_name.buffer, - newlb.buffer+tokoff, toklen); + newlb.buffer + tokoff, toklen); + token_name.len = len; tok.named = TRUE; } else if (objdef == ocatseen) /* Objective C category */ { - grow_linebuffer (&token_name, - strlen(objtag)+2+toklen+1); + int len = strlen (objtag) + 2 + toklen; + grow_linebuffer (&token_name, len + 1); strcpy (token_name.buffer, objtag); strcat (token_name.buffer, "("); strncat (token_name.buffer, - newlb.buffer+tokoff, toklen); + newlb.buffer + tokoff, toklen); strcat (token_name.buffer, ")"); + token_name.len = len; tok.named = TRUE; } else if (objdef == omethodtag @@ -2407,17 +2485,16 @@ } else { - grow_linebuffer (&token_name, toklen+1); + grow_linebuffer (&token_name, toklen + 1); strncpy (token_name.buffer, - newlb.buffer+tokoff, toklen); + newlb.buffer + tokoff, toklen); token_name.buffer[toklen] = '\0'; - if (structdef == stagseen - || typdef == tend - || (is_func - && definedef == dignorerest)) /* macro */ - tok.named = TRUE; - else - tok.named = FALSE; + token_name.len = toklen; + /* Name macros. */ + tok.named = (structdef == stagseen + || typdef == tend + || (funorvar + && definedef == dignorerest)); } tok.lineno = lineno; tok.linelen = tokoff + toklen + 1; @@ -2426,7 +2503,7 @@ tok.valid = TRUE; if (definedef == dnone - && (funcdef == ftagseen + && (fvdev == fvnameseen || structdef == stagseen || typdef == tend || objdef != onone)) @@ -2435,7 +2512,7 @@ switch_line_buffers (); } else - make_C_tag (is_func, &tok); + make_C_tag (funorvar, &tok); } midtoken = FALSE; } @@ -2451,17 +2528,17 @@ switch (definedef) { case dnone: - switch (funcdef) + switch (fvdev) { case fstartlist: - funcdef = finlist; + fvdev = finlist; continue; case flistseen: - make_C_tag (TRUE, &tok); - funcdef = fignore; + make_C_tag (TRUE, &tok); /* a function */ + fvdev = fignore; break; - case ftagseen: - funcdef = fnone; + case fvnameseen: + fvdev = fvnone; break; } if (structdef == stagseen && !cjava) @@ -2492,30 +2569,31 @@ { case otagseen: objdef = oignore; - make_C_tag (TRUE, &tok); + make_C_tag (TRUE, &tok); /* an Objective C class */ break; case omethodtag: case omethodparm: objdef = omethodcolon; methodlen += 1; - grow_linebuffer (&token_name, methodlen+1); + grow_linebuffer (&token_name, methodlen + 1); strcat (token_name.buffer, ":"); + token_name.len = methodlen; break; } if (structdef == stagseen) structdef = scolonseen; else - switch (funcdef) + switch (fvdev) { - case ftagseen: + case fvnameseen: if (yacc_rules) { - make_C_tag (FALSE, &tok); - funcdef = fignore; + make_C_tag (FALSE, &tok); /* a yacc function */ + fvdev = fignore; } break; case fstartlist: - funcdef = fnone; + fvdev = fvnone; break; } break; @@ -2526,14 +2604,22 @@ switch (typdef) { case tend: - make_C_tag (FALSE, &tok); + make_C_tag (FALSE, &tok); /* a typedef */ /* FALLTHRU */ default: typdef = tnone; } - if (funcdef != fignore) + switch (fvdev) { - funcdef = fnone; + case fignore: + break; + case fvnameseen: + if ((variables && cblev == 0) + || (cplpl && variables_and_cplusplus && cblev == 1)) + make_C_tag (FALSE, &tok); /* a variable */ + /* FALLTHRU */ + default: + fvdev = fvnone; /* The following instruction invalidates the token. Probably the token should be invalidated in all other cases where some state machine is reset. */ @@ -2549,12 +2635,25 @@ { case omethodtag: case omethodparm: - make_C_tag (TRUE, &tok); + make_C_tag (TRUE, &tok); /* an Objective C method */ objdef = oinbody; break; } - if (funcdef != finlist && funcdef != fignore) - funcdef = fnone; + switch (fvdev) + { + case finlist: + case fignore: + case vignore: + break; + case fvnameseen: + if ((variables && cblev == 0) + || (cplpl && variables_and_cplusplus && cblev == 1)) + make_C_tag (FALSE, &tok); /* a variable */ + break; + default: + fvdev = fvnone; + } + break; if (structdef == stagseen) structdef = snone; break; @@ -2564,11 +2663,23 @@ if (cblev == 0 && typdef == tend) { typdef = tignore; - make_C_tag (FALSE, &tok); + make_C_tag (FALSE, &tok); /* a typedef */ break; } - if (funcdef != finlist && funcdef != fignore) - funcdef = fnone; + switch (fvdev) + { + case finlist: + case fignore: + case vignore: + break; + case fvnameseen: + if ((variables && cblev == 0) + || (cplpl && variables_and_cplusplus && cblev == 1)) + make_C_tag (FALSE, &tok); /* a variable */ + /* FALLTHRU */ + default: + fvdev = fvnone; + } if (structdef == stagseen) structdef = snone; break; @@ -2577,29 +2688,28 @@ break; if (objdef == otagseen && parlev == 0) objdef = oparenseen; - switch (funcdef) + switch (fvdev) { - case fnone: + case fvnone: switch (typdef) { case ttypedseen: case tend: - /* Make sure that the next char is not a '*'. - This handles constructs like: - typedef void OperatorFun (int fun); */ if (tok.valid && *lp != '*') { + /* This handles constructs like: + typedef void OperatorFun (int fun); */ + make_C_tag (FALSE, &tok); typdef = tignore; - make_C_tag (FALSE, &tok); } break; } /* switch (typdef) */ break; - case ftagseen: - funcdef = fstartlist; + case fvnameseen: + fvdev = fstartlist; break; case flistseen: - funcdef = finlist; + fvdev = finlist; break; } parlev++; @@ -2609,22 +2719,22 @@ break; if (objdef == ocatseen && parlev == 1) { - make_C_tag (TRUE, &tok); + make_C_tag (TRUE, &tok); /* an Objective C category */ objdef = oignore; } if (--parlev == 0) { - switch (funcdef) + switch (fvdev) { case fstartlist: case finlist: - funcdef = flistseen; + fvdev = flistseen; break; } if (cblev == 0 && typdef == tend) { typdef = tignore; - make_C_tag (FALSE, &tok); + make_C_tag (FALSE, &tok); /* a typedef */ } } else if (parlev < 0) /* can happen due to ill-conceived #if's. */ @@ -2644,27 +2754,27 @@ case stagseen: case scolonseen: /* named struct */ structdef = sinbody; - make_C_tag (FALSE, &tok); + make_C_tag (FALSE, &tok); /* a struct */ break; } - switch (funcdef) + switch (fvdev) { case flistseen: - make_C_tag (TRUE, &tok); + make_C_tag (TRUE, &tok); /* a function */ /* FALLTHRU */ case fignore: - funcdef = fnone; + fvdev = fvnone; break; - case fnone: + case fvnone: switch (objdef) { case otagseen: - make_C_tag (TRUE, &tok); + make_C_tag (TRUE, &tok); /* an Objective C class */ objdef = oignore; break; case omethodtag: case omethodparm: - make_C_tag (TRUE, &tok); + make_C_tag (TRUE, &tok); /* an Objective C method */ objdef = oinbody; break; default: @@ -2678,8 +2788,8 @@ case '*': if (definedef != dnone) break; - if (funcdef == fstartlist) - funcdef = fnone; /* avoid tagging `foo' in `foo (*bar()) ()' */ + if (fvdev == fstartlist) + fvdev = fvnone; /* avoid tagging `foo' in `foo (*bar()) ()' */ break; case '}': if (definedef != dnone) @@ -2707,6 +2817,24 @@ structtag = "<error>"; } break; + case '=': + if (definedef != dnone) + break; + switch (fvdev) + { + case finlist: + case fignore: + case vignore: + break; + case fvnameseen: + if ((variables && cblev == 0) + || (cplpl && variables_and_cplusplus && cblev == 1)) + make_C_tag (FALSE, &tok); /* a variable */ + /* FALLTHRU */ + default: + fvdev = vignore; + } + break; case '+': case '-': if (objdef == oinbody && cblev == 0) @@ -2715,18 +2843,18 @@ break; } /* FALLTHRU */ - case '=': case '#': case '~': case '&': case '%': case '/': - case '|': case '^': case '!': case '<': case '>': case '.': case '?': + case '#': case '~': case '&': case '%': case '/': case '|': + case '^': case '!': case '<': case '>': case '.': case '?': case ']': if (definedef != dnone) break; /* These surely cannot follow a function tag. */ - if (funcdef != finlist && funcdef != fignore) - funcdef = fnone; + if (fvdev != finlist && fvdev != fignore && fvdev != vignore) + fvdev = fvnone; break; case '\0': if (objdef == otagseen) { - make_C_tag (TRUE, &tok); + make_C_tag (TRUE, &tok); /* an Objective C class */ objdef = oignore; } /* If a macro spans multiple lines don't reset its state. */ @@ -3008,11 +3136,11 @@ charno += readline (&lb, inf); cp = lb.buffer; - if (*cp++ == 's' && *cp++ == 'u' && *cp++ == 'b' && isspace(*cp++)) + if (*cp++ == 's' && *cp++ == 'u' && *cp++ == 'b' && isspace (*cp++)) { - while (*cp && isspace(*cp)) + while (*cp && isspace (*cp)) cp++; - while (*cp && ! isspace(*cp) && *cp != '{') + while (*cp && ! isspace (*cp) && *cp != '{') cp++; pfnote ((CTAGS) ? savenstr (lb.buffer, cp-lb.buffer) : NULL, TRUE, lb.buffer, cp - lb.buffer + 1, lineno, linecharno); @@ -3020,6 +3148,42 @@ } } +/* Idea by Corny de Souza + * Cobol tag functions + * We could look for anything that could be a paragraph name. + * i.e. anything that starts in column 8 is one word and ends in a full stop. + */ +void +Cobol_paragraphs (inf) + FILE *inf; +{ + register char *cp; + + lineno = 0; + charno = 0; + + while (!feof (inf)) + { + lineno++; + linecharno = charno; + charno += readline (&lb, inf); + + if (lb.len < 9) + continue; + dbp = lb.buffer + 8; + + /* If eoln, compiler option or comment ignore whole line. */ + if (dbp[-1] != ' ' || !isalnum (dbp[0])) + continue; + + for (cp = dbp; isalnum (*cp) || *cp == '-'; cp++) + continue; + if (*cp++ == '.') + pfnote ((CTAGS) ? savenstr (dbp, cp-dbp) : NULL, TRUE, + lb.buffer, cp - lb.buffer + 1, lineno, linecharno); + } +} + /* Added by Mosur Mohan, 4/22/88 */ /* Pascal parsing */ @@ -3170,7 +3334,7 @@ save_lcno = linecharno; /* grab block name */ - for (cp = dbp + 1; *cp && (!endtoken (*cp)); cp++) + for (cp = dbp + 1; *cp != '\0' && !endtoken (*cp); cp++) continue; namebuf = (CTAGS) ? savenstr (dbp, cp-dbp) : NULL; dbp = cp; /* set dbp to e-o-token */ @@ -3223,7 +3387,7 @@ && (*(++strp) == 'o' || *strp == 'O') && (*(++strp) == 't' || *strp == 'T') && (*(++strp) == 'e' || *strp == 'E') - && isspace(*(++strp))); + && isspace (*(++strp))); } void @@ -3236,11 +3400,11 @@ else if (*dbp == '(' && L_isquote (dbp)) /* Skip "(quote " */ { dbp += 7; - while (isspace(*dbp)) + while (isspace (*dbp)) dbp++; } for (cp = dbp /*+1*/; - *cp && *cp != '(' && *cp != ' ' && *cp != ')'; + *cp != '\0' && *cp != '(' && *cp != ' ' && *cp != ')'; cp++) continue; if (cp == dbp) @@ -3303,6 +3467,7 @@ /* * Postscript tag functions * Just look for lines where the first character is '/' + * Richard Mlynarik <mly@adoc.xerox.com> */ void Postscript_functions (inf) @@ -3310,6 +3475,7 @@ { lineno = 0; charno = 0; + while (!feof (inf)) { lineno++; @@ -3421,7 +3587,6 @@ void TEX_mode (); struct TEX_tabent *TEX_decode_env (); int TEX_Token (); -static void TEX_getit (); char TEX_esc = '\\'; char TEX_opgrp = '{'; @@ -3435,6 +3600,7 @@ FILE *inf; { char *lasthit; + register int i; lineno = 0; charno = 0; @@ -3455,20 +3621,22 @@ lasthit = dbp; while (dbp = etags_strchr (dbp, TEX_esc)) /* Look at each esc in line */ { - register int i; - if (!*(++dbp)) break; linecharno += dbp - lasthit; lasthit = dbp; i = TEX_Token (lasthit); - if (0 <= i) + if (i >= 0) { - pfnote ((char *)NULL, TRUE, + /* We seem to include the TeX command in the tag name. + register char *p; + for (p = lasthit + TEX_toktab[i].len; + *p != '\0' && *p != TEX_clgrp; + p++) + continue; */ + pfnote (/*savenstr (lasthit, p-lasthit)*/ (char *)NULL, TRUE, lb.buffer, lb.len, lineno, linecharno); - if (TeX_named_tokens) - TEX_getit (lasthit, TEX_toktab[i].len); - break; /* We only save a line once */ + break; /* We only tag a line once */ } } } @@ -3566,26 +3734,6 @@ return tab; } -/* Record a tag defined by a TeX command of length LEN and starting at NAME. - The name being defined actually starts at (NAME + LEN + 1). - But we seem to include the TeX command in the tag name. */ -static void -TEX_getit (name, len) - char *name; - int len; -{ - char *p = name + len; - - if (*name == '\0') - return; - - /* Let tag name extend to next group close (or end of line) */ - while (*p && *p != TEX_clgrp) - p++; - pfnote (savenstr (name, p-name), TRUE, - lb.buffer, lb.len, lineno, linecharno); -} - /* If the text at CP matches one of the tag-defining TeX command names, return the pointer to the first occurrence of that command in TEX_toktab. Otherwise return -1. @@ -3609,13 +3757,15 @@ * Assumes that the predicate starts at column 0. * Only the first clause of a predicate is added. */ +int prolog_pred (); +void prolog_skip_comment (); +int prolog_atom (); +int eat_white (); + void Prolog_functions (inf) FILE *inf; { - int prolog_pred (); - void prolog_skip_comment (); - char * last; int len; int allocated; @@ -3689,18 +3839,15 @@ char *s; char *last; /* Name of last clause. */ { - int prolog_atom(); - int prolog_white(); - int pos; int len; - pos = prolog_atom(s, 0); + pos = prolog_atom (s, 0); if (pos < 1) return 0; len = pos; - pos += prolog_white(s, pos); + pos += eat_white (s, pos); if ((s[pos] == '(') || (s[pos] == '.')) { @@ -3708,9 +3855,9 @@ pos++; /* Save only the first clause. */ - if ((last == NULL) || - (len != strlen(last)) || - (strncmp(s, last, len) != 0)) + if (last == NULL + || len != strlen (last) + || !strneq (s, last, len)) { pfnote ((CTAGS) ? savenstr (s, len) : NULL, TRUE, s, pos, lineno, linecharno); @@ -3781,15 +3928,15 @@ /* Consume whitespace. Return the number of bytes eaten. */ int -prolog_white (s, pos) +eat_white (s, pos) char *s; int pos; { - int origpos; + int origpos = pos; origpos = pos; - while (isspace(s[pos])) + while (isspace (s[pos])) pos++; return pos - origpos; @@ -3802,13 +3949,14 @@ * * Assumes that Erlang functions start at column 0. */ +int erlang_func (); +void erlang_attribute (); +int erlang_atom (); + void Erlang_functions (inf) FILE *inf; { - int erlang_func (); - void erlang_attribute (); - char * last; int len; int allocated; @@ -3837,7 +3985,7 @@ continue; else if (dbp[0] == '-') /* attribute, e.g. "-define" */ { - erlang_attribute(dbp); + erlang_attribute (dbp); last = NULL; } else if (len = erlang_func (dbp, last)) @@ -3847,9 +3995,9 @@ * generates a tag for the first clause. */ if (last == NULL) - last = xnew(len + 1, char); + last = xnew (len + 1, char); else if (len + 1 > allocated) - last = (char *) xrealloc(last, len + 1); + last = (char *) xrealloc (last, len + 1); allocated = len + 1; strncpy (last, dbp, len); last[len] = '\0'; @@ -3873,31 +4021,27 @@ char *s; char *last; /* Name of last clause. */ { - int erlang_atom (); - int erlang_white (); - int pos; int len; - pos = erlang_atom(s, 0); + pos = erlang_atom (s, 0); if (pos < 1) return 0; len = pos; - pos += erlang_white(s, pos); - - if (s[pos++] == '(') - { - /* Save only the first clause. */ - if ((last == NULL) || - (len != strlen(last)) || - (strncmp(s, last, len) != 0)) + pos += eat_white (s, pos); + + /* Save only the first clause. */ + if (s[pos++] == '(' + && (last == NULL + || len != strlen (last) + || !strneq (s, last, len))) { pfnote ((CTAGS) ? savenstr (s, len) : NULL, TRUE, s, pos, lineno, linecharno); return len; } - } + return 0; } @@ -3915,27 +4059,18 @@ erlang_attribute (s) char *s; { - int erlang_atom (); - int erlang_white (); - int pos; int len; - if ((strncmp(s, "-define", 7) == 0) || - (strncmp(s, "-record", 7) == 0)) + if (strneq (s, "-define", 7) || strneq (s, "-record", 7)) { - pos = 7; - pos += erlang_white(s, pos); - + pos = 7 + eat_white (s, pos); if (s[pos++] == '(') { - pos += erlang_white(s, pos); - - if (len = erlang_atom(s, pos)) - { + pos += eat_white (s, pos); + if (len = erlang_atom (s, pos)) pfnote ((CTAGS) ? savenstr (& s[pos], len) : NULL, TRUE, s, pos + len, lineno, linecharno); - } } } return; @@ -3991,22 +4126,6 @@ else return -1; } - -/* Consume whitespace. Return the number of bytes eaten */ -int -erlang_white (s, pos) - char *s; - int pos; -{ - int origpos; - - origpos = pos; - - while (isspace (s[pos])) - pos++; - - return pos - origpos; -} #ifdef ETAGS_REGEXPS /* Take a string like "/blah/" and turn it into "blah", making sure @@ -4073,8 +4192,7 @@ return; } if (regex_arg[0] == '@' - && stat (regex_arg + 1, &stat_buf) == 0 - && S_ISREG (stat_buf.st_mode)) + && stat (regex_arg + 1, &stat_buf) == 0) { FILE *regexfp; struct linebuffer regexbuf;
--- a/lib-src/gnuclient.c Mon Aug 13 09:37:21 2007 +0200 +++ b/lib-src/gnuclient.c Mon Aug 13 09:38:25 2007 +0200 @@ -56,6 +56,7 @@ #endif /* HAVE_UNISTD_H */ #include <signal.h> +int read_line(int, char *); #if !defined(SYSV_IPC) && !defined(UNIX_DOMAIN_SOCKETS) && \ !defined(INTERNET_DOMAIN_SOCKETS) @@ -91,7 +92,7 @@ connect_type = make_connection (NULL, (u_short) 0, &s); - sprintf(buffer,"(gnuserv-eval '(resume-pid-console %d))", getpid()); + sprintf(buffer,"(gnuserv-eval '(resume-pid-console %d))", (int)getpid()); send_string(s, buffer); #ifdef SYSV_IPC @@ -252,6 +253,15 @@ over = 1; \ } while (0) +/* A strdup immitation. */ +static char * +my_strdup (CONST char *s) +{ + char *new = malloc (strlen (s) + 1); + if (new) + strcpy (new, s); + return new; +} int main (int argc, char *argv[]) @@ -268,12 +278,11 @@ int view = 0; /* view only. */ int nofiles = 0; int errflg = 0; /* option error */ - int c; /* char from getopt */ int s; /* socket / msqid to server */ int connect_type; /* CONN_UNIX, CONN_INTERNET, or * CONN_IPC */ int suppress_windows_system = 0; - char *display; + char *display = NULL; #ifdef INTERNET_DOMAIN_SOCKETS char *hostarg = NULL; /* remote hostname */ char *remotearg; @@ -305,14 +314,25 @@ display = getenv ("DISPLAY"); if (!display) suppress_windows_system = 1; + else + display = my_strdup (display); for (i = 1; argv[i] && !errflg; i++) { if (*argv[i] != '-') break; - if (!strcmp (argv[i], "-batch")) + else if (*argv[i] == '-' + && (*(argv[i] + 1) == '\0' + || (*(argv[i] + 1) == '-' && *(argv[i] + 2) == '\0'))) + { + /* `-' or `--' */ + ++i; + break; + } + + if (!strcmp (argv[i], "-batch") || !strcmp (argv[i], "--batch")) batch = 1; - else if (!strcmp (argv[i], "-eval")) + else if (!strcmp (argv[i], "-eval") || !strcmp (argv[i], "--eval")) { if (!argv[++i]) { @@ -322,15 +342,19 @@ } eval_form = argv[i]; } - else if (!strcmp (argv[i], "-display")) + else if (!strcmp (argv[i], "-display") || !strcmp (argv[i], "--display")) { suppress_windows_system = 0; if (!argv[++i]) { - fprintf (stderr, "%s: `-display' must be followed by an argument\n", + fprintf (stderr, + "%s: `-display' must be followed by an argument\n", progname); exit (1); } + if (display) + free (display); + /* no need to strdup. */ display = argv[i]; } else if (!strcmp (argv[i], "-nw")) @@ -396,6 +420,13 @@ progname); exit (1); } + if (suppress_windows_system && hostarg) + { + fprintf (stderr, "%s: Remote editing is available only on X\n", + progname); + exit (1); + } + *result = '\0'; if (eval_function || eval_form || load_library) { @@ -446,32 +477,30 @@ fprintf (stderr, "%s: Not connected to a tty", progname); exit (1); } - } - #if defined(INTERNET_DOMAIN_SOCKETS) - connect_type = make_connection (hostarg, port, &s); + connect_type = make_connection (hostarg, port, &s); #else - connect_type = make_connection (NULL, (u_short) 0, &s); + connect_type = make_connection (NULL, (u_short) 0, &s); #endif + send_string (s, "(gnuserv-eval '(emacs-pid))"); + send_string (s, EOT_STR); - send_string (s, "(gnuserv-eval '(emacs-pid))"); - send_string (s, EOT_STR); - - if (read_line (s, buffer) == 0) - { - fprintf (stderr, "%s: Could not establish emacs procces id\n", - progname); - exit (1); - } + if (read_line (s, buffer) == 0) + { + fprintf (stderr, "%s: Could not establish Emacs procces id\n", + progname); + exit (1); + } /* Don't do disconnect_from_server becasue we have already read data, and disconnect doesn't do anything else. */ #ifndef INTERNET_DOMAIN_SOCKETS - if (connect_type == (int) CONN_IPC) - disconnect_from_ipc_server (s, msgp, FALSE); + if (connect_type == (int) CONN_IPC) + disconnect_from_ipc_server (s, msgp, FALSE); #endif /* !SYSV_IPC */ - emacs_pid = (pid_t)atol(buffer); - initialize_signals(); + emacs_pid = (pid_t)atol(buffer); + initialize_signals(); + } /* suppress_windows_system */ #if defined(INTERNET_DOMAIN_SOCKETS) connect_type = make_connection (hostarg, port, &s); @@ -528,7 +557,7 @@ exit (1); } sprintf (command, "(gnuserv-edit-files '(tty %s %s %d) '(", - clean_string (tty), clean_string (term), getpid ()); + clean_string (tty), clean_string (term), (int)getpid ()); } else /* !suppress_windows_system */ { @@ -557,8 +586,7 @@ path = malloc (strlen (remotepath) + strlen (fullpath) + 1); sprintf (path, "%s%s", remotepath, fullpath); #else - path = malloc (strlen (fullpath)); - strcpy (path, fullpath); + path = my_strdup (fullpath); #endif sprintf (command, "(%d . %s)", starting_line, clean_string (path)); send_string (s, command);
--- a/lib-src/update-elc.sh Mon Aug 13 09:37:21 2007 +0200 +++ b/lib-src/update-elc.sh Mon Aug 13 09:38:25 2007 +0200 @@ -128,8 +128,6 @@ ignore_pattern="$ignore_pattern"' \!/,!d \!/edebug/edebug-test.el$!d -\!/energize/energize-load.el$!d -\!/energize/write-file.el$!d \!/paths.el$!d \!/prim/loadup.el$!d \!/prim/loadup-el.el$!d
--- a/lisp/ChangeLog Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/ChangeLog Mon Aug 13 09:38:25 2007 +0200 @@ -1,3 +1,69 @@ +1997-05-29 Steven L Baur <steve@altair.xemacs.org> + + * packages/bookmark.el (bookmark-menu-popup-paned-menu): Naive + port to XEmacs. + (bookmark-bmenu-other-window-with-mouse): Naive port to XEmacs. + + * utils/autoload.el (generated-custom-file): custom-load.el + renamed to cus-load.el. + + * prim/loadup.el: Don't preload custom-load.elc. + +Thu May 29 19:03:52 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * x11/x-menubar.el (default-menubar): Updated customize entries. + +1997-05-29 Steven L Baur <steve@altair.xemacs.org> + + * prim/about.el (about-xemacs-xref): Update contributors list. + +1997-05-28 Steven L Baur <steve@altair.xemacs.org> + + * prim/minibuf.el (mouse-file-display-completion-list): Protect + against bogus directory becoming default. + (mouse-directory-display-completion-list): Ditto. + + From Per Abrahamsen <abraham@dina.kvl.dk> + * bytecomp/bytecomp.el + (byte-compile-file-form-custom-declare-variable): New function. + (custom-declare-variable): Use it. + + * packages/vc.el (vc-directory): dirname typo'ed as dir. + + * packages/vc-hooks.el (vc-menu): Remove vc-file-status. + (Toplevel): Remove key definition for vc-file-status. + +1997-05-27 Steven L Baur <steve@altair.xemacs.org> + + * prim/cus-start.el (Toplevel): Rename factory-value to + standard-value for Custom-1.98. + +1997-05-26 Steven L Baur <steve@altair.xemacs.org> + + * prim/help.el (view-lossage-key-count): New variable. + (view-lossage-message-count): New variable. + (view-lossage): Use them. + + From Hrvoje Niksic + * prim/help.el (view-lossage): Use new argument to `recent-keys'. + + * cl/cl-macs.el (recent-keys-ring-size): New setf method. + +1997-05-26 Steven L Baur <steve@altair.xemacs.org> + + * prim/process.el (shell-command-to-string): Alias exec-to-string + to more logical name. + +1997-05-23 Steven L Baur <steve@altair.xemacs.org> + + * tm/tm-view.el (mime/content-decoding-condition): Add image/png + mime type. + + * tm/tm-image.el (toplevel): Add image/png mime type. + + * tm/tm-edit.el (mime-file-types): Add png handling. + (mime-content-types): Ditto. + Thu May 22 04:19:09 1997 Martin Buchholz <mrb@eng.sun.com> * prim/files.el (auto-mode-alist): Reorg. Support
--- a/lisp/auctex/ChangeLog Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/auctex/ChangeLog Mon Aug 13 09:38:25 2007 +0200 @@ -4,6 +4,74 @@ * tex.el (TeX-lisp-directory): Restore previous setting. +Thu Apr 17 14:25:44 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * Version 9.7p released. + +Sat Apr 12 22:38:15 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * tex.el: Added customize information. + * tex-buf.el: Ditto. + +Sun Apr 06 19:28:11 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * Version 9.7o released. + +Sun Apr 6 19:23:37 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * latex.el (LaTeX-equation-label): New variable. + (LaTeX-eqnarray-label): New variable. + (LaTeX-label): Support `figure*', `label*', `equation', and + `eqnarray'. + (LaTeX-env-figure): Support `table*'. + Patch by Joes Staal <staal@geo.tudelft.nl>. + +Fri Mar 28 12:23:15 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * latex.el (LaTeX-down-section): Doc fix. + (LaTeX-section-heading): Ditto. + (LaTeX-section-title): Ditto. + (LaTeX-env-array): Ditto. + (TeX-braces-user-association): Ditto. + (LaTeX-fill-region-as-paragraph): Ditto. + (LaTeX-math-abbrev-prefix): Ditto. + (LaTeX-math-mode): Ditto. + (TeX-arg-right-insert-p): Ditto. + (latex-mode): Ditto. + +Wed Mar 26 21:14:44 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * Version 9.7n released. + +Wed Mar 26 21:12:53 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * latex.el (LaTeX-math-default): Fixed hebrew delimiters. + Patch by John Griffith <griffith@sfs.nphil.uni-tuebingen.de>. + +Wed Mar 26 21:09:50 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * latex.el (LaTeX-209-to-2e): Use `buffer-substring-no-properties'. + Reported by Graham Gough <graham@cs.man.ac.uk>. + +Mon Mar 17 13:35:46 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * Version 9.7m released. + +Mon Mar 17 13:25:45 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * tex.el (TeX-auto-generate): Only generate when needed. + (TeX-auto-generate-global): Ditto. + Patch by Helmut Geyer <Helmut.Geyer@IWR.Uni-Heidelberg.De>. + + * Makefile (install-contrib): Don't move elc files twice. Patch + by Helmut Geyer <Helmut.Geyer@IWR.Uni-Heidelberg.De>. + +Thu Mar 13 12:10:03 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * style/danish.el: Copied from `style/dk.el'. + * Makefile (STYLESRC): Added `style/danish.el'. + Suggested by Lars Frellesen <frelle@math-tech.dk>. + Tue Mar 04 11:29:23 1997 Per Abrahamsen <abraham@dina.kvl.dk> * Version 9.7l released.
--- a/lisp/auctex/Makefile Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/auctex/Makefile Mon Aug 13 09:38:25 2007 +0200 @@ -1,7 +1,7 @@ # Makefile - for the AUC TeX distribution. # # Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -# Version: 9.7l +# Version: 9.7p # # Edit the makefile, type `make', and follow the instructions. @@ -87,7 +87,8 @@ ../../etc/auctex/style/j-article.el ../../etc/auctex/style/j-book.el ../../etc/auctex/style/j-report.el \ ../../etc/auctex/style/jarticle.el ../../etc/auctex/style/jbook.el ../../etc/auctex/style/jreport.el \ ../../etc/auctex/style/dinbrief.el ../../etc/auctex/style/virtex.el ../../etc/auctex/style/plfonts.el \ - ../../etc/auctex/style/plhb.el ../../etc/auctex/style/harvard.el ../../etc/auctex/style/swedish.el + ../../etc/auctex/style/plhb.el ../../etc/auctex/style/harvard.el ../../etc/auctex/style/swedish.el \ + ../../etc/auctex/style/danish.el DOCFILES = doc/Makefile doc/auc-tex.texi doc/intro.texi doc/install.texi \ doc/changes.texi doc/tex-ref.tex doc/math-ref.tex doc/history.texi @@ -136,8 +137,6 @@ install-contrib: $(MV) $(CONTRIBELC) $(aucdir) - $(MV) bib-cite.elc $(aucdir) - $(MV) font-latex.elc $(aucdir) $(CP) $(CONTRIB) $(aucdir) install-info:
--- a/lisp/auctex/auc-old.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/auctex/auc-old.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,7 +1,7 @@ ;;; auc-old.el - Compatibility with AUC TeX 6.* ;; ;; Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -;; Version: 9.7l +;; Version: 9.7p ;; ;; Copyright (C) 1991 Kresten Krab Thorup ;; Copyright (C) 1993 Per Abrahamsen
--- a/lisp/auctex/latex.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/auctex/latex.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,7 +1,7 @@ ;;; latex.el --- Support for LaTeX documents. ;; ;; Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -;; Version: 9.7l +;; Version: 9.7p ;; Keywords: wp ;; X-URL: http://sunsite.auc.dk/auctex @@ -38,14 +38,18 @@ ;;; Style -(defvar LaTeX-default-style "article" - "*Default when creating new documents.") +(defcustom LaTeX-default-style "article" + "*Default when creating new documents." + :group 'LaTeX-environment + :type 'string) (make-variable-buffer-local 'LaTeX-default-style) -(defvar LaTeX-default-options nil - "*Default options to documentstyle. -A list of strings.") +(defcustom LaTeX-default-options nil + "Default options to documentstyle. +A list of strings." + :group 'LaTeX-environment + :type '(repeat (string :format "%v"))) (make-variable-buffer-local 'LaTeX-default-options) @@ -116,9 +120,10 @@ (LaTeX-largest-level))))) (defun LaTeX-down-section () - "Return the value of a section one level under the current. Tries to -find what kind of section that have been used earlier in the text, If -this fail, it will just return one less than the current section." + "Return the value of a section one level under the current. +Tries to find what kind of section that have been used earlier in the +text, if this fail, it will just return one less than the current +section." (save-excursion (let ((current (LaTeX-current-section)) (next nil) @@ -173,12 +178,15 @@ (nth 1 entry) nil))) -(defvar TeX-outline-extra nil - "*List of extra TeX outline levels. +(defcustom TeX-outline-extra nil + "List of extra TeX outline levels. Each element is a list with two entries. The first entry is the regular expression matching a header, and the second is the level of -the header. See LaTeX-section-list for existing header levels.") +the header. See LaTeX-section-list for existing header levels." + :group 'LaTeX + :type '(repeat (group (regexp :tag "Match") + (integer :tag "Level")))) (defun LaTeX-outline-regexp (&optional anywhere) "Return regexp for LaTeX sections. @@ -244,13 +252,13 @@ (add-hook 'TeX-remove-style-hook (function (lambda () (setq LaTeX-largest-level nil)))) -(defvar LaTeX-section-hook +(defcustom LaTeX-section-hook '(LaTeX-section-heading LaTeX-section-title ;; LaTeX-section-toc ; Most people won't want this LaTeX-section-section LaTeX-section-label) - "*List of hooks to run when a new section is inserted. + "List of hooks to run when a new section is inserted. The following variables are set before the hooks are run @@ -288,27 +296,44 @@ LaTeX-section-section LaTeX-section-label)) -in your .emacs file.") +in your .emacs file." + :type 'hook + :options '(LaTeX-section-heading + LaTeX-section-title + LaTeX-section-toc + LaTeX-section-section + LaTeX-section-label)) -(defvar LaTeX-section-label + +(defcustom LaTeX-section-label '(("chapter" . "cha:") ("section" . "sec:") ("subsection" . "sec:")) - "*Default prefix when asking for a label. + "Default prefix when asking for a label. If it is a string, it it used unchanged for all kinds of sections. If it is nil, no label is inserted. If it is a list, the list is searched for a member whose car is equal to the name of the sectioning command being inserted. The cdr is then used as the prefix. If the name is not found, or if the cdr is nil, -no label is inserted.") +no label is inserted." + :group 'LaTeX-label + :type '(choice (const :tag "none" nil) + (string :format "%v" :tag "Common") + (repeat :menu-tag "Level specific" + :format "\n%v%i" + (cons :format "%v" + (string :tag "Type") + (choice :tag "Prefix" + (const :tag "none" nil) + (string :format "%v")))))) ;;; Section Hooks. (defun LaTeX-section-heading () "Hook to prompt for LaTeX section name. Insert this hook into LaTeX-section-hook to allow the user to change -the name of the sectioning command inserted with M-x LaTeX-section." +the name of the sectioning command inserted with `\\[LaTeX-section]'." (let ((string (completing-read (concat "Select level: (default " name ") ") LaTeX-section-list @@ -322,7 +347,7 @@ (defun LaTeX-section-title () "Hook to prompt for LaTeX section title. Insert this hook into LaTeX-section-hook to allow the user to change -the title of the section inserted with M-x LaTeX-section." +the title of the section inserted with `\\[LaTeX-section]." (setq title (read-string "What title: "))) (defun LaTeX-section-toc () @@ -363,8 +388,14 @@ ;;; Environments -(defvar LaTeX-default-environment "itemize" - "*The default environment when creating new ones with LaTeX-environment.") +(defgroup LaTeX-environment nil + "Environments in AUC TeX." + :group 'LaTeX-macro) + +(defcustom LaTeX-default-environment "itemize" + "*The default environment when creating new ones with LaTeX-environment." + :group 'LaTeX-environment + :type 'string) (make-variable-buffer-local 'LaTeX-default-environment) (defun LaTeX-environment (arg) @@ -576,32 +607,63 @@ (run-hooks 'LaTeX-document-style-hook) (setq LaTeX-document-style-hook nil)) -(defvar LaTeX-float "htbp" +(defcustom LaTeX-float "htbp" "*Default float when creating figure and table environments. -Set to nil if you don't want any float.") +Set to nil if you don't want any float." + :group 'LaTeX-environment + :type '(choice (const :tag "none" nil) + (string :format "%v"))) (make-variable-buffer-local 'LaTeX-float) -(defvar LaTeX-label-function nil +(defgroup LaTeX-label nil + "Adding labels for LaTeX commands in AUC TeX." + :group 'LaTeX) + +(defcustom LaTeX-label-function nil "*A function inserting a label at point. Sole argument of the function is the environment. The function has to return -the label inserted, or nil if no label was inserted.") +the label inserted, or nil if no label was inserted." + :group 'LaTeX-label + :type 'function) -(defvar LaTeX-figure-label "fig:" - "*Default prefix to figure labels.") +(defcustom LaTeX-figure-label "fig:" + "*Default prefix to figure labels." + :group 'LaTeX-label + :group 'LaTeX-environment + :type 'string) (make-variable-buffer-local 'LaTeX-figure-label) -(defvar LaTeX-table-label "tab:" - "*Default prefix to table labels.") +(defcustom LaTeX-table-label "tab:" + "*Default prefix to table labels." + :group 'LaTeX-label + :group 'LaTeX-environment + :type 'string) (make-variable-buffer-local 'LaTeX-table-label) -(defvar LaTeX-default-format "" - "Specifies the default format string for array and tabular environments.") +(defcustom LaTeX-default-format "" + "Specifies the default format string for array and tabular environments." + :group 'LaTeX-environment + :type 'string) (make-variable-buffer-local 'LaTeX-default-format) -(defvar LaTeX-default-position "" - "Specifies the default position string for array and tabular environments.") +(defcustom LaTeX-default-position "" + "Specifies the default position string for array and tabular environments." + :group 'LaTeX-environment + :type 'string) (make-variable-buffer-local 'LaTeX-default-position) +(defcustom LaTeX-equation-label "eq:" + "*Default prefix to equation labels." + :group 'LaTeX-label + :type 'string) + (make-variable-buffer-local 'LaTeX-equation-label) + +(defcustom LaTeX-eqnarray-label LaTeX-equation-label + "*Default prefix to eqnarray labels." + :group 'LaTeX-label + :type 'string) + (make-variable-buffer-local 'LaTeX-eqnarray-label) + (defun LaTeX-env-item (environment) "Insert ENVIRONMENT and the first item." (LaTeX-insert-environment environment) @@ -628,6 +690,10 @@ (cond ((string= "figure" environment) LaTeX-figure-label) ((string= "table" environment) LaTeX-table-label) + ((string= "figure*" environment) LaTeX-figure-label) + ((string= "table*" environment) LaTeX-table-label) + ((string= "equation" environment) LaTeX-equation-label) + ((string= "eqnarray" environment) LaTeX-eqnarray-label) ((assoc environment LaTeX-section-list) (cond ((stringp LaTeX-section-label) LaTeX-section-label) @@ -681,12 +747,13 @@ (insert TeX-esc "caption" TeX-grop caption TeX-grcl) (end-of-line 0) (LaTeX-indent-line)) - - (if (string= environment "table") (LaTeX-env-array "tabular")))) + + (if (member environment '("table" "table*")) + (LaTeX-env-array "tabular")))) (defun LaTeX-env-array (environment) - "Insert ENVIRONMENT with position and column specifications -like array and tabular." + "Insert ENVIRONMENT with position and column specifications. +Just like array and tabular." (let ((pos (read-string "Position: ")) (fmt (read-string "Format: " LaTeX-default-format))) (setq LaTeX-default-position pos) @@ -1145,12 +1212,14 @@ "Prompt for a LaTeX savebox." (TeX-arg-savebox optional prompt t)) -(defvar LaTeX-style-list '(("book") - ("article") - ("letter") - ("slides") - ("report")) - "*List of document styles.") +(defcustom LaTeX-style-list '(("book") + ("article") + ("letter") + ("slides") + ("report")) + "List of document styles." + :group 'LaTeX-environment + :type '(repeat (group (string :format "%v")))) (make-variable-buffer-local 'LaTeX-style-list) @@ -1178,7 +1247,7 @@ (TeX-update-style)) (defvar TeX-global-input-files nil - "*List of the non-local TeX input files. + "List of the non-local TeX input files. Initialized once at the first time you prompt for an input file. May be reset with `C-u \\[TeX-normal-mode]'.") @@ -1214,7 +1283,7 @@ (TeX-argument-insert file optionel))) (defvar BibTeX-global-style-files nil - "*Association list of BibTeX style files. + "Association list of BibTeX style files. Initialized once at the first time you prompt for an input file. May be reset with `C-u \\[TeX-normal-mode]'.") @@ -1239,7 +1308,7 @@ optional)) (defvar BibTeX-global-files nil - "*Association list of BibTeX files. + "Association list of BibTeX files. Initialized once at the first time you prompt for an BibTeX file. May be reset with `C-u \\[TeX-normal-mode]'.") @@ -1327,11 +1396,17 @@ ("\\lceil" . "\\rceil") ("\\langle" . "\\rangle"))) -(defvar TeX-braces-user-association nil - "A list of your personal association of brace symbols for \\left and \\right +(defcustom TeX-braces-user-association nil + "A list of your personal association of brace symbols. +These are used for \\left and \\right. The car of each entry is the brace used with \\left, -the cdr is the brace used with \\right.") +the cdr is the brace used with \\right." + :group 'LaTeX-macro + :group 'LaTeX-math + :type '(repeat (cons :format "%v" + (string :tag "Left") + (string :tag "Right")))) (defvar TeX-braces-association (append TeX-braces-user-association @@ -1377,14 +1452,25 @@ ;;; Indentation -(defvar LaTeX-indent-level 2 - "*Indentation of begin-end blocks in LaTeX.") +(defgroup LaTeX-indentation nil + "Indentation of LaTeX code in AUC TeX" + :group 'LaTeX + :group 'TeX-indentation) + +(defcustom LaTeX-indent-level 2 + "*Indentation of begin-end blocks in LaTeX." + :group 'LaTeX-indentation + :type 'integer) -(defvar LaTeX-item-indent (- LaTeX-indent-level) - "*Extra indentation for lines beginning with an item.") +(defcustom LaTeX-item-indent (- LaTeX-indent-level) + "*Extra indentation for lines beginning with an item." + :group 'LaTeX-indentation + :type 'integer) -(defvar LaTeX-item-regexp "\\(bib\\)?item\\b" - "*Regular expression matching macros considered items.") +(defcustom LaTeX-item-regexp "\\(bib\\)?item\\b" + "*Regular expression matching macros considered items." + :group 'LaTeX-indentation + :type 'regexp) (defun LaTeX-indent-line () "Indent the line containing point, as LaTeX source. @@ -1405,9 +1491,9 @@ (back-to-indentation)))) (defun LaTeX-fill-region-as-paragraph (from to &optional justify-flag) - "Fill region as one paragraph: break lines to fit fill-column, -but leave all lines ending with \\\\ (plus its optional argument) alone. -Prefix arg means justify too. + "Fill region as one paragraph. +Break lines to fit fill-column, but leave all lines ending with \\\\ +\(plus its optional argument) alone. Prefix arg means justify too. From program, pass args FROM, TO and JUSTIFY-FLAG." (interactive "*r\nP") (or (assoc (LaTeX-current-environment) LaTeX-indent-environment-list) @@ -1670,17 +1756,26 @@ The second element in each entry is the function to calculate the indentation level in columns.") -(defvar LaTeX-indent-environment-check t - "*If non-nil, check for any special environments.") +(defcustom LaTeX-indent-environment-check t + "*If non-nil, check for any special environments." + :group 'LaTeX-indentation + :type 'boolean) -(defvar LaTeX-left-comment-regexp "%%%" - "*Regexp matching comments that should be placed on the left margin.") +(defcustom LaTeX-left-comment-regexp "%%%" + "*Regexp matching comments that should be placed on the left margin." + :group 'LaTeX-indentation + :type 'regexp) -(defvar LaTeX-right-comment-regexp "%[^%]" - "*Regexp matching comments that should be placed to the right margin.") +(defcustom LaTeX-right-comment-regexp "%[^%]" + "*Regexp matching comments that should be placed to the right margin." + :group 'LaTeX-indentation + :type 'regexp) -(defvar LaTeX-ignore-comment-regexp nil - "*Regexp matching comments that whose indentation should not be touched.") +(defcustom LaTeX-ignore-comment-regexp nil + "*Regexp matching comments that whose indentation should not be touched." + :group 'LaTeX-indentation + :type '(choice (const :tag "none" nil) + (regexp :format "%v"))) (defun LaTeX-indent-calculate () ;; Return the correct indentation of line of LaTeX source. (I hope...) @@ -1721,8 +1816,10 @@ (+ (LaTeX-indent-calculate-last) LaTeX-item-indent)) (t (LaTeX-indent-calculate-last))))) -(defvar LaTeX-left-right-indent-level LaTeX-indent-level - "*The level of indentation produced by a \\left macro.") +(defcustom LaTeX-left-right-indent-level LaTeX-indent-level + "*The level of indentation produced by a \\left macro." + :group 'LaTeX-indentation + :type 'integer) (defun LaTeX-indent-level-count () ;; Count indentation change caused by all \left, \right, \begin, and @@ -1802,7 +1899,11 @@ ;;; Math Minor Mode -(defvar LaTeX-math-list nil +(defgroup LaTeX-math nil + "Mathematics in AUC TeX." + :group 'LaTeX-macro) + +(defcustom LaTeX-math-list nil "AList of your personal LaTeX math symbols. Each entry should be a list with three elements, KEY, VALUE, and MENU. @@ -1811,7 +1912,15 @@ be inserted, or a function to be called. The optional third element is the name of the submenu where the command should be added. -See also `LaTeX-math-menu'.") +See also `LaTeX-math-menu'." + :group 'LaTeX-math + :type '(repeat (group (choice (const :tag "none") + (character :format "%v\n")) + (string :tag "Symbol") + (choice :tag "Menu" + (string :tag "Name" :format "%v") + (repeat :tag "Path" + (string :format "%v")))))) (defconst LaTeX-math-default '((?a "alpha" "greek") @@ -2075,10 +2184,11 @@ (nil "vec" "Accents") (nil "ddot" "Accents") (?~ "tilde" "Accents") - (nil "ulcorner" ("AMS" "Hebrew")) - (nil "urcorner" ("AMS" "Hebrew")) - (nil "llcorner" ("AMS" "Hebrew")) - (nil "lrcorner" ("AMS" "Hebrew")) + (nil "digamma" ("AMS" "Hebrew")) + (nil "varkappa" ("AMS" "Hebrew")) + (nil "beth" ("AMS" "Hebrew")) + (nil "daleth" ("AMS" "Hebrew")) + (nil "gimel" ("AMS" "Hebrew")) (nil "dashrightarrow" ("AMS" "Arrows")) (nil "dashleftarrow" ("AMS" "Arrows")) (nil "leftleftarrows" ("AMS" "Arrows")) @@ -2301,6 +2411,10 @@ (nil "rvert" ("AMS" "Delimiters")) (nil "lVert" ("AMS" "Delimiters")) (nil "rVert" ("AMS" "Delimiters")) + (nil "ulcorner" ("AMS" "Delimiters")) + (nil "urcorner" ("AMS" "Delimiters")) + (nil "llcorner" ("AMS" "Delimiters")) + (nil "lrcorner" ("AMS" "Delimiters")) (nil "nobreakdash" ("AMS" "Special")) (nil "leftroot" ("AMS" "Special")) (nil "uproot" ("AMS" "Special")) @@ -2324,8 +2438,10 @@ (nil "subarray" ("AMS" "Special")) (nil "sideset" ("AMS" "Special")))) -(defvar LaTeX-math-abbrev-prefix "`" - "Prefix key for use in LaTeX-math-mode.") +(defcustom LaTeX-math-abbrev-prefix "`" + "Prefix key for use in `LaTeX-math-mode'." + :group 'LaTeX-math + :type 'string) (defvar LaTeX-math-keymap (make-sparse-keymap) "Keymap used for LaTeX-math-mode commands.") @@ -2393,7 +2509,7 @@ LaTeX-math-menu) (defvar LaTeX-math-mode nil - "Is LaTeX-math-mode on or off? non nil means on.") + "Is `LaTeX-math-mode' on or off? Non nil means on.") (make-variable-buffer-local 'LaTeX-math-mode) @@ -2623,7 +2739,7 @@ ["Reset Buffer" TeX-normal-mode t] ["Reset AUC TeX" (TeX-normal-mode t) :keys "C-u C-c C-n"]))) -(defvar LaTeX-font-list +(defcustom LaTeX-font-list '((?\C-b "\\textbf{" "}") (?\C-c "\\textsc{" "}") (?\C-e "\\emph{" "}") @@ -2636,23 +2752,43 @@ (?\C-t "\\texttt{" "}") (?\C-u "\\textup{" "}") (?\C-d "" "" t)) - "Font commands used with LaTeX2e. See `TeX-font-list'.") + "Font commands used with LaTeX2e. See `TeX-font-list'." + :group 'LaTeX-macro + :type '(repeat (group (character :tag "Key") + (string :tag "Prefix") + (string :tag "Suffix") + (option (sexp :format "Replace\n" + :value t))))) ;;; Mode -(defvar TeX-arg-cite-note-p nil - "*If non-nil, ask for optional note in citations.") +(defgroup LaTeX-macro nil + "Special support for LaTeX macros in AUC TeX." + :prefix "TeX-" + :group 'LaTeX + :group 'TeX-macro) -(defvar TeX-arg-footnote-number-p nil - "*If non-nil, ask for optional number in footnotes.") +(defcustom TeX-arg-cite-note-p nil + "*If non-nil, ask for optional note in citations." + :type 'boolean + :group 'LaTeX-macro) -(defvar TeX-arg-item-label-p nil - "*If non-nil, always ask for optional label in items. -Otherwise, only ask in description environments.") +(defcustom TeX-arg-footnote-number-p nil + "*If non-nil, ask for optional number in footnotes." + :type 'boolean + :group 'LaTeX-macro) -(defvar TeX-arg-right-insert-p t - "*If non-nil, always insert automatically the corresponding -\\right if \\left is inserted.") +(defcustom TeX-arg-item-label-p nil + "*If non-nil, always ask for optional label in items. +Otherwise, only ask in description environments." + :type 'boolean + :group 'LaTeX-macro) + +(defcustom TeX-arg-right-insert-p t + "*If non-nil, always insert automatically the corresponding \\right. +This happens when \\left is inserted." + :type 'boolean + :group 'LaTeX-macro) (defvar LaTeX-paragraph-commands (concat "\\[\\|\\]\\|" ; display math delimitors @@ -2670,9 +2806,9 @@ Special commands: \\{LaTeX-mode-map} -Entering LaTeX mode calls the value of text-mode-hook, -then the value of TeX-mode-hook, and then the value -of LaTeX-mode-hook." +Entering LaTeX mode calls the value of `text-mode-hook', +then the value of `TeX-mode-hook', and then the value +of `LaTeX-mode-hook'." (interactive) (LaTeX-common-initialization) (setq mode-name "LaTeX") @@ -3034,14 +3170,14 @@ (search-forward-regexp "\\documentstyle\\[\\([^]]*\\)\\]{\\([^}]*\\)}" (point-max) t) - (setq optstr (buffer-substring (match-beginning 1) (match-end 1)) - docstyle (buffer-substring (match-beginning 2) + (setq optstr (buffer-substring-no-properties (match-beginning 1) (match-end 1)) + docstyle (buffer-substring-no-properties (match-beginning 2) (match-end 2)) optlist (TeX-split-string "," optstr)) (if (search-forward-regexp "\\documentstyle{\\([^}]*\\)}" (point-max) t) - (setq docstyle (buffer-substring (match-beginning 1) + (setq docstyle (buffer-substring-no-properties (match-beginning 1) (match-end 1))) (error "No documentstyle defined"))) (beginning-of-line 1)
--- a/lisp/auctex/tex-buf.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/auctex/tex-buf.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,7 +1,7 @@ ;;; tex-buf.el - External commands for AUC TeX. ;; ;; Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -;; Version: 9.7l +;; Version: 9.7p ;; Copyright (C) 1991 Kresten Krab Thorup ;; Copyright (C) 1993, 1996 Per Abrahamsen @@ -22,23 +22,24 @@ ;;; Code: -(defvar no-doc - "This function is part of AUC TeX, but has not yet been loaded. -Full documentation will be available after autoloading the function." - "Documentation for autoload functions.") +(require 'tex) ;;; Customization: -(defvar TeX-process-asynchronous (not (eq system-type 'ms-dos)) - "*Use asynchronous processes.") +(defcustom TeX-process-asynchronous (not (eq system-type 'ms-dos)) + "*Use asynchronous processes." + :group 'TeX-commands + :type 'boolean) -(defvar TeX-shell +(defcustom TeX-shell (if (memq system-type '(ms-dos emx windows-nt)) shell-file-name "/bin/sh") - "Name of shell used to parse TeX commands.") + "Name of shell used to parse TeX commands." + :group 'TeX-commands + :type 'file) -(defvar TeX-shell-command-option +(defcustom TeX-shell-command-option (cond ((memq system-type '(ms-dos emx windows-nt) ) (cond ((boundp 'shell-command-option) shell-command-option) @@ -48,7 +49,9 @@ "/c"))) (t ;Unix & EMX (Emacs 19 port to OS/2) "-c")) - "Shell argument indicating that next argument is the command.") + "Shell argument indicating that next argument is the command." + :group 'TeX-commands + :type 'string) ;;; Interactive Commands ;; @@ -270,8 +273,10 @@ (setq found t)))))) found)) -(defvar TeX-save-query t - "*If non-nil, ask user for permission to save files before starting TeX.") +(defcustom TeX-save-query t + "*If non-nil, ask user for permission to save files before starting TeX." + :group 'TeX-commands + :type 'boolean) (defun TeX-command-query (name) "Query the user for a what TeX command to use." @@ -358,8 +363,10 @@ "Hooks to run after starting an asynchronous process. Used by Japanese TeX to set the coding system.") -(defvar TeX-show-compilation nil - "*If non-nil, show output of TeX compilation in other window.") +(defcustom TeX-show-compilation nil + "*If non-nil, show output of TeX compilation in other window." + :group 'TeX-commands + :type 'boolean) (defun TeX-run-command (name command file) "Create a process for NAME using COMMAND to process FILE. @@ -906,8 +913,10 @@ (t TeX-region)))) -(defvar TeX-region "_region_" - "*Base name for temporary file for use with TeX-region.") +(defcustom TeX-region "_region_" + "*Base name for temporary file for use with TeX-region." + :group 'TeX-commands + :type 'string) ;;; Parsing @@ -1196,7 +1205,7 @@ ;;; Error Messages -(defvar TeX-error-description-list +(defcustom TeX-error-description-list '(("Bad \\\\line or \\\\vector argument.*" . "The first argument of a \\line or \\vector command, which specifies the slope, is illegal\.") @@ -1603,7 +1612,11 @@ \\{TeX-help-error} to display help-text on an error message or warning. err-regexp should be a regular expression matching the error message given from TeX/LaTeX, and context should be some lines describing that -error") +error" + :group 'TeX-output + :type '(repeat (cons :tag "Entry" + (regexp :tag "Match") + (string :format "Description:\n%v")))) (provide 'tex-buf)
--- a/lisp/auctex/tex-info.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/auctex/tex-info.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,7 +1,7 @@ ;;; tex-info.el - Support for editing TeXinfo source. ;; ;; Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -;; Version: 9.7l +;; Version: 9.7p ;; Copyright (C) 1993, 1994, 1997 Per Abrahamsen ;;
--- a/lisp/auctex/tex-site.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/auctex/tex-site.el Mon Aug 13 09:38:25 2007 +0200 @@ -5,7 +5,7 @@ ;; Author: Per Abrahamsen <abraham@iesd.auc.dk> ;; Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -;; Version: XEmacs +;; Version: 9.7p (XEmacs) ;; Keywords: wp ;; This program is free software; you can redistribute it and/or modify
--- a/lisp/auctex/tex.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/auctex/tex.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,7 +1,7 @@ ;;; tex.el --- Support for TeX documents. ;; Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -;; Version: 9.7l +;; Version: 9.7p ;; Keywords: wp ;; X-URL: http://sunsite.auc.dk/auctex @@ -26,6 +26,39 @@ ;;; Code: +(eval-and-compile + (condition-case () + (require 'custom) + (error nil)) + (if (and (featurep 'custom) (fboundp 'custom-declare-variable)) + nil ;; We've got what we needed + ;; We have the old custom-library, hack around it! + (defmacro defgroup (&rest args) + nil) + (defmacro defcustom (var value doc &rest args) + (` (defvar (, var) (, value) (, doc)))))) + +(defgroup AUC-TeX nil + "A (La)TeX environment." + :tag "AUC TeX" + :link '(custom-manual "(auctex)Top") + :link '(url-link :tag "Home Page" "http://sunsite.auc.dk/auctex/") + :prefix "TeX-" + :group 'tex) + +(defgroup TeX-file nil + "Files used by AUC TeX." + :group 'AUC-TeX) + +(defgroup TeX-command nil + "Calling external commands from AUC TeX." + :group 'AUC-TeX) + +(defgroup LaTeX nil + "LaTeX support in AUC TeX." + :tag "LaTeX" + :group 'AUC-TeX) + ;;; Site Customization ;; ;; The following variables are likely to need to be changed for your @@ -33,29 +66,36 @@ ;; file, but instead copy those definitions you need to change to ;; `tex-site.el'. -(defvar TeX-lisp-directory (concat data-directory "auctex/") - "*The directory where the AUC TeX lisp files are located.") +(defcustom TeX-lisp-directory (concat data-directory "auctex/") + "*The directory where the AUC TeX lisp files are located." + :group 'TeX-file + :type 'directory) ;; Change this to point to the place where the TeX macros are stored ;; at yourt site. [Ignore when bundled with XEmacs] -(defvar TeX-macro-global '("/usr/lib/texmf/tex/") +(defcustom TeX-macro-global '("/usr/lib/texmf/tex/") "*Directories containing the sites TeX macro files and style files. - -The directory names *must* end with a slash.") +The directory names *must* end with a slash." + :group 'TeX-file + :type '(repeat (directory :format "%v"))) ;; How to print. -(defvar TeX-print-command "dvips %s -P%p" +(defcustom TeX-print-command "dvips %s -P%p" "*Command used to print a file. First %p is expanded to the printer name, then ordinary expansion is -performed as specified in TeX-expand-list.") - -(defvar TeX-queue-command "lpq -P%p" +performed as specified in TeX-expand-list." + :group 'TeX-command + :type 'string) + +(defcustom TeX-queue-command "lpq -P%p" "*Command used to show the status of a printer queue. First %p is expanded to the printer name, then ordinary expansion is -performed as specified in TeX-expand-list.") +performed as specified in TeX-expand-list." + :group 'TeX-command + :type 'string) ;; This is the major configuration variable. Most sites will only ;; need to change the second string in each entry, which is the name @@ -63,7 +103,7 @@ ;; like AMSLaTeX or AMSTeX, you can add those to the list. See ;; TeX-expand-list for a description of the % escapes -(defvar TeX-command-list +(defcustom TeX-command-list ;; You may have to remove the single quotes around the command ;; arguments if you use DOS. (list (list "TeX" "tex '\\nonstopmode\\input %t'" 'TeX-run-TeX nil t) @@ -91,7 +131,7 @@ (list "Makeinfo" "makeinfo %t" 'TeX-run-compile nil t) (list "AmSTeX" "amstex '\\nonstopmode\\input %t'" 'TeX-run-TeX nil t)) - "*List of commands to execute on the current document. + "List of commands to execute on the current document. Each element is a list, whose first element is the name of the command as it will be presented to the user. @@ -139,16 +179,49 @@ If the fourth element is non-nil, the user will get a chance to modify the expanded string. -The fifth element is obsolete and ignored.") +The fifth element is obsolete and ignored." + :group 'TeX-command + :type '(repeat (group (string :tag "Name") + (string :tag "Command") + (choice :tag "How" + :value TeX-run-command + (function-item TeX-run-command) + (function-item TeX-run-format) + (function-item TeX-run-TeX) + (function-item TeX-run-LaTeX) + (function-item TeX-run-interactive) + (function-item TeX-run-BibTeX) + (function-item TeX-run-compile) + (function-item TeX-run-shell) + (function-item TeX-run-discard) + (function-item TeX-run-background) + (function-item TeX-run-dviout) + (function :tag "Other")) + (boolean :tag "Prompt") + (sexp :format "End\n")))) + ;; You may want to change the default LaTeX version for your site. -(defvar LaTeX-version "2e" - "Default LaTeX version. Currently recognized is \"2\" and \"2e\".") +(defcustom LaTeX-version "2e" + "Default LaTeX version. Currently recognized is \"2\" and \"2e\"." + :group 'LaTeX + :type '(radio (const :format "%v\n%h" + :doc "\ +The executable `latex' is LaTeX version 2." + "2") + (const :format "%v\n%h" + :doc "\ +The executable `latex' is LaTeX version 2e. +Do *not* select this if you need to run `latex2e' in order to get +LaTeX version 2e." + "2e") + (string :tag "Other"))) + ;; You may want special options to the view command depending on the ;; style options. Only works if parsing is enabled. -(defvar LaTeX-command-style +(defcustom LaTeX-command-style (if (string-equal LaTeX-version "2") ;; There is a lot of different LaTeX 2 based formats. '(("^latex2e$" "latex2e") @@ -159,21 +232,24 @@ ("." "latex")) ;; They have all been combined in LaTeX 2e. '(("." "latex"))) - "*List of style options and LaTeX commands. + "List of style options and LaTeX commands. If the first element (a regular expresion) matches the name of one of the style files, any occurrence of the string %l in a command in TeX-command-list will be replaced with the second element. The first match is used, if no match is found the %l is replaced with the empty -string.") +string." + :group 'TeX-command + :type '(repeat (group :value ("" "") + regexp (string :tag "Style")))) ;; Enter the names of the printers available at your site, or nil if ;; you only have one printer. -(defvar TeX-printer-list +(defcustom TeX-printer-list '(("Local" "dvips -f %s | lpr" "lpq") ("lw") ("ps")) - "*List of available printers. + "List of available printers. The first element of each entry is the printer name. @@ -185,38 +261,53 @@ Any occurence of `%p' in the second or third element is expanded to the printer name given in the first element, then ordinary expansion -is performed as specified in TeX-expand-list.") +is performed as specified in TeX-expand-list." + :group 'TeX-command + :type '(repeat (group (string :tag "Name") + (option (group :inline t + :extra-offset -4 + (choice :tag "Print" + (const :tag "default") + (string :format "%v")) + (option (choice :tag "Queue" + (const :tag "default") + (string + :format "%v")))))))) ;; The name of the most used printer. -(defvar TeX-printer-default (or (getenv "PRINTER") - (and TeX-printer-list - (car (car TeX-printer-list))) - "lw") - "*Default printer to use with TeX-command.") +(defcustom TeX-printer-default (or (getenv "PRINTER") + (and TeX-printer-list + (car (car TeX-printer-list))) + "lw") + "*Default printer to use with TeX-command." + :group 'TeX-command + :type 'string) ;; You may want special options to the view command depending on the ;; style options. Only works if parsing is enabled. -(defvar TeX-view-style '(("^a5$" "xdvi %d -paper a5") - ("^landscape$" "xdvi %d -paper a4r -s 4") - ;; The latest xdvi can show embedded postscript. - ;; If you don't have that, uncomment next line. - ;; ("^epsf$" "ghostview %f") - ("." "xdvi %d")) - "*List of style options and view options. +(defcustom TeX-view-style '(("^a5$" "xdvi %d -paper a5") + ("^landscape$" "xdvi %d -paper a4r -s 4") + ;; The latest xdvi can show embedded postscript. + ;; If you don't have that, uncomment next line. + ;; ("^epsf$" "ghostview %f") + ("." "xdvi %d")) + "List of style options and view options. If the first element (a regular expresion) matches the name of one of the style files, any occurrence of the string %v in a command in TeX-command-list will be replaced with the second element. The first match is used, if no match is found the %v is replaced with the empty -string.") +string." + :group 'TeX-command + :type '(repeat (group regexp (string :tag "Command")))) ;; This is the list of expansion for the commands in ;; TeX-command-list. Not likely to be changed, but you may e.g. want ;; to handle .ps files. -(defvar TeX-expand-list +(defcustom TeX-expand-list (list (list "%p" 'TeX-printer-query) ;%p must be the first entry (list "%q" (function (lambda () (TeX-printer-query TeX-queue-command 2)))) @@ -226,13 +317,19 @@ (list "%t" 'file 't t) (list "%d" 'file "dvi" t) (list "%f" 'file "ps" t)) - "*List of expansion strings for TeX command names. + "List of expansion strings for TeX command names. Each entry is a list with two or more elements. The first element is the string to be expanded. The second element is the name of a function returning the expanded string when called with the remaining elements as arguments. The special value `file' will be expanded to -the name of the file being processed, with an optional extension.") +the name of the file being processed, with an optional extension." + :group 'TeX-command + :type '(repeat (group (string :tag "Key") + (sexp :tag "Expander") + (repeat :inline t + :tag "Arguments" + (sexp :format "%v"))))) ;; End of Site Customization. @@ -486,34 +583,57 @@ ;; These two variables are automatically updated with "make dist", so ;; be careful before changing anything. -(defconst AUC-TeX-version "9.7l" +(defconst AUC-TeX-version "9.7p" "AUC TeX version number") -(defconst AUC-TeX-date "Tue Mar 4 11:29:28 MET 1997" +(defconst AUC-TeX-date "Thu Apr 17 14:25:49 MET DST 1997" "AUC TeX release date") ;;; Buffer -(defvar TeX-display-help t - "*Non-nil means popup help when stepping thrugh errors with \\[TeX-next-error]") - -(defvar TeX-debug-bad-boxes nil - "*Non-nil means also find overfull/underfull boxes warnings with TeX-next-error") - -(defvar TeX-command-BibTeX "BibTeX" - "*The name of the BibTeX entry in TeX-command-list.") +(defgroup TeX-output nil + "Parsing TeX output." + :prefix "TeX-" + :group 'AUC-TeX) + +(defcustom TeX-display-help t + "*Non-nil means popup help when stepping thrugh errors with +\\[TeX-next-error]" + :group 'TeX-output + :type 'boolean) + +(defcustom TeX-debug-bad-boxes nil + "*Non-nil means also find overfull/underfull boxes warnings with +TeX-next-error" + :group 'TeX-output + :type 'boolean) + +(defgroup TeX-command-name nil + "Names for external commands in AUC TeX." + :group 'TeX-command) + +(defcustom TeX-command-BibTeX "BibTeX" + "*The name of the BibTeX entry in TeX-command-list." + :group 'TeX-command-name + :type 'string) (make-variable-buffer-local 'TeX-command-BibTeX) -(defvar TeX-command-Show "View" +(defcustom TeX-command-Show "View" "*The default command to show (view or print) a TeX file. -Must be the car of an entry in TeX-command-list.") +Must be the car of an entry in TeX-command-list." + :group 'TeX-command-name + :type 'string) (make-variable-buffer-local 'TeX-command-Show) -(defvar TeX-command-Print "Print" - "The name of the Print entry in TeX-command-Print.") - -(defvar TeX-command-Queue "Queue" - "The name of the Queue entry in TeX-command-Queue.") +(defcustom TeX-command-Print "Print" + "The name of the Print entry in TeX-command-Print." + :group 'TeX-command-name + :type 'string) + +(defcustom TeX-command-Queue "Queue" + "The name of the Queue entry in TeX-command-Queue." + :group 'TeX-command-name + :type 'string) (autoload 'TeX-region-create "tex-buf" no-doc nil) (autoload 'TeX-save-document "tex-buf" no-doc t) @@ -546,7 +666,7 @@ ;;; Master File -(defvar TeX-one-master "\\.tex$" +(defcustom TeX-one-master "\\.tex$" "*Regular expression matching ordinary TeX files. You should set this variable to match the name of all files, where @@ -555,7 +675,9 @@ file variable, it does not need to ask next time you edit the file. If you dislike AUC TeX automatically modifying your files, you can set -this variable to \"<none>\".") +this variable to \"<none>\"." + :group 'TeX-command + :type 'regexp) (defun TeX-master-file (&optional extension nondirectory) "Return the name of the master file for the current document. @@ -659,7 +781,7 @@ (concat (file-name-directory buffer-file-name) (file-name-directory (TeX-master-file)))))) -(defvar TeX-master t +(defcustom TeX-master t "*The master file associated with the current buffer. If the file being edited is actually included from another file, you can tell AUC TeX the name of the master file by setting this variable. @@ -674,7 +796,13 @@ change the file. It is suggested that you use the File Variables (see the info node in -the Emacs manual) to set this variable permanently for each file.") +the Emacs manual) to set this variable permanently for each file." + :group 'TeX-command + :group 'TeX-parse + :type '(choice (const :tag "Query" nil) + (const :tag "This file" t) + (const :tag "Shared" shared) + (string :format "%v"))) (make-variable-buffer-local 'TeX-master) @@ -709,30 +837,38 @@ (or (string-match "/\\'" TeX-lisp-directory) (setq TeX-lisp-directory (concat TeX-lisp-directory "/"))) -(defvar TeX-auto-global (concat TeX-lisp-directory "auto/") +(defcustom TeX-auto-global (concat TeX-lisp-directory "auto/") "*Directory containing automatically generated information. Must end with a slash. For storing automatic extracted information about the TeX macros -shared by all users of a site.") - -(defvar TeX-style-global (concat TeX-lisp-directory "style/") +shared by all users of a site." + :group 'TeX-file + :type 'directory) + +(defcustom TeX-style-global (concat TeX-lisp-directory "style/") "*Directory containing hand generated TeX information. Must end with a slash. -These correspond to TeX macros shared by all users of a site.") - -(defvar TeX-auto-local "auto/" +These correspond to TeX macros shared by all users of a site." + :group 'TeX-file + :type 'directory) + +(defcustom TeX-auto-local "auto/" "*Directory containing automatically generated TeX information. Must end with a slash. -This correspond to TeX macros found in the current directory.") - -(defvar TeX-style-local "style/" +This correspond to TeX macros found in the current directory." + :group 'TeX-file + :type 'string) + +(defcustom TeX-style-local "style/" "*Directory containing hand generated TeX information. Must end with a slash. -These correspond to TeX macros found in the current directory.") +These correspond to TeX macros found in the current directory." + :group 'TeX-file + :type 'string) (defun TeX-split-string (regexp string) "Returns a list of strings. given REGEXP the STRING is split into @@ -784,48 +920,59 @@ (setq answers (cons entry answers)))) answers)) -(defvar TeX-macro-private (append (TeX-parse-path "TEXINPUTS") - (TeX-parse-path "BIBINPUTS")) - "*Directories where you store your personal TeX macros. -Each must end with a slash.") - -(defvar TeX-auto-private (mapcar (function (lambda (entry) - (concat entry TeX-auto-local))) - TeX-macro-private) - "*List of directories containing automatically generated information. +(defcustom TeX-macro-private (append (TeX-parse-path "TEXINPUTS") + (TeX-parse-path "BIBINPUTS")) + "Directories where you store your personal TeX macros. +Each must end with a slash." + :group 'TeX-file + :type '(repeat (file :format "%v"))) + +(defcustom TeX-auto-private (mapcar (function (lambda (entry) + (concat entry TeX-auto-local))) + TeX-macro-private) + "List of directories containing automatically generated information. Must end with a slash. -These correspond to the personal TeX macros.") +These correspond to the personal TeX macros." + :group 'TeX-file + :type '(repeat (file :format "%v"))) (if (stringp TeX-auto-private) ;Backward compatibility (setq TeX-auto-private (list TeX-auto-private))) -(defvar TeX-style-private (mapcar (function (lambda (entry) - (concat entry - TeX-style-local))) - TeX-macro-private) - "*List of directories containing hand generated information. +(defcustom TeX-style-private (mapcar (function (lambda (entry) + (concat entry + TeX-style-local))) + TeX-macro-private) + "List of directories containing hand generated information. Must end with a slash. -These correspond to the personal TeX macros.") +These correspond to the personal TeX macros." + :group 'TeX-file + :type '(repeat (file :format "%v"))) (if (stringp TeX-style-private) ;Backward compatibility (setq TeX-style-private (list TeX-style-private))) -(defvar TeX-style-path +(defcustom TeX-style-path (let ((path)) (mapcar (function (lambda (file) (if file (setq path (cons file path))))) (append (list TeX-auto-global TeX-style-global) TeX-auto-private TeX-style-private (list TeX-auto-local TeX-style-local))) path) - "*List of directories to search for AUC TeX style files.") - -(defvar TeX-check-path (append (list "./") TeX-macro-private TeX-macro-global) - "*Directory path to search for dependencies. + "List of directories to search for AUC TeX style files." + :group 'TeX-file + :type '(repeat (file :format "%v"))) + +(defcustom TeX-check-path + (append (list "./") TeX-macro-private TeX-macro-global) + "Directory path to search for dependencies. If nil, just check the current file. -Used when checking if any files have changed.") +Used when checking if any files have changed." + :group 'TeX-file + :type '(repeat (file :format "%v"))) ;;; Style Files @@ -836,8 +983,10 @@ and the remaining elements are hooks to be run when that style is active.") -(defvar TeX-byte-compile nil - "*Not nil means try to byte compile auto files before loading.") +(defcustom TeX-byte-compile nil + "*Not nil means try to byte compile auto files before loading." + :group 'TeX-parse + :type 'boolean) (defun TeX-load-style (style) "Search for and load each definition for style in TeX-style-path." @@ -894,11 +1043,13 @@ (setq entry (cdr entry))) (setcdr entry (cdr (cdr entry))))))) -(defvar TeX-virgin-style (if (and TeX-auto-global - (file-directory-p TeX-auto-global)) - "virtex" - "NoVirtexSymbols") - "Style all documents use.") +(defcustom TeX-virgin-style (if (and TeX-auto-global + (file-directory-p TeX-auto-global)) + "virtex" + "NoVirtexSymbols") + "Style all documents use." + :group 'TeX-parse + :type 'string) (defvar TeX-active-styles nil "List of styles currently active in the document.") @@ -921,8 +1072,10 @@ (cdr-safe (assoc style TeX-style-hook-list)))))) styles)) -(defvar TeX-parse-self nil - "*Parse file after loading it if no style hook is found for it.") +(defcustom TeX-parse-self nil + "Parse file after loading it if no style hook is found for it." + :group 'TeX-parse + :type 'boolean) (defvar TeX-style-hook-applied-p nil "Nil, unless the style specific hooks have been applied.") @@ -984,8 +1137,14 @@ ;; Must be before keymaps. -(defvar TeX-complete-word 'ispell-complete-word - "*Function to call for completing non-macros in tex-mode.") +(defgroup TeX-macro nil + "Support for TeX macros in AUC TeX." + :prefix "TeX-" + :group 'TeX) + +(defcustom TeX-complete-word 'ispell-complete-word + "*Function to call for completing non-macros in tex-mode." + :group 'TeX-macro) (defvar TeX-complete-list nil "List of ways to complete the preceding text. @@ -1042,13 +1201,17 @@ (message "Making completion list...done")))) (funcall (nth 1 entry))))) -(defvar TeX-default-macro "ref" - "*The default macro when creating new ones with TeX-insert-macro.") +(defcustom TeX-default-macro "ref" + "*The default macro when creating new ones with TeX-insert-macro." + :group 'TeX-macro + :type 'string) (make-variable-buffer-local 'TeX-default-macro) -(defvar TeX-insert-braces t - "*If non-nil, append a empty pair of braces after inserting a macro.") +(defcustom TeX-insert-braces t + "*If non-nil, append a empty pair of braces after inserting a macro." + :group 'TeX-macro + :type 'string) (defun TeX-math-mode-p () "Are we in TeX math mode?" @@ -1252,12 +1415,19 @@ When entering tex-mode, each regexp is tried in turn in order to find when major mode to enter.") -(defvar TeX-default-mode 'latex-mode +(defcustom TeX-default-mode 'latex-mode "*Mode to enter for a new file when it can't be determined whether -the file is plain TeX or LaTeX or what.") - -(defvar TeX-force-default-mode nil - "*If set to nil, try to infer the mode of the file from its content.") +the file is plain TeX or LaTeX or what." + :group 'AUC-TeX + :type '(radio (function-item latex-mode) + (function-item plain-tex-mode) + (function :tag "Other"))) + +(defcustom TeX-force-default-mode nil + "*If set to nil, try to infer the mode of the file from its +content." + :group 'AUC-TeX + :type 'boolean) ;;; Do not ;;;###autoload because of conflict with standard tex-mode.el. (defun tex-mode () @@ -1444,6 +1614,10 @@ ;;; Parsing +(defgroup TeX-parse nil + "Parsing TeX files from AUC TeX." + :group 'AUC-TeX) + (defvar TeX-auto-parser '((styles TeX-auto-file TeX-run-style-hooks))) ;; Alist of parsed information. ;; Each entry is a list with the following elements: @@ -1560,11 +1734,15 @@ ;; Continue with the other write file hooks. nil) -(defvar TeX-auto-save nil - "*Automatically save style information when saving the buffer.") - -(defvar TeX-auto-untabify t - "*Automatically untabify when saving the buffer.") +(defcustom TeX-auto-save nil + "*Automatically save style information when saving the buffer." + :group 'TeX-parse + :type 'boolean) + +(defcustom TeX-auto-untabify t + "*Automatically untabify when saving the buffer." + :group 'TeX-parse + :type 'boolean) (defun TeX-auto-write () ;; Save all relevant TeX information from the current buffer. @@ -1588,11 +1766,15 @@ (TeX-auto-store file)) (message "Can't write style information."))))) -(defvar TeX-macro-default (car-safe TeX-macro-private) - "*Default directory to search for TeX macros.") - -(defvar TeX-auto-default (car-safe TeX-auto-private) - "*Default directory to place automatically generated TeX information.") +(defcustom TeX-macro-default (car-safe TeX-macro-private) + "*Default directory to search for TeX macros." + :group 'TeX-file + :type 'directory) + +(defcustom TeX-auto-default (car-safe TeX-auto-private) + "*Default directory to place automatically generated TeX information." + :group 'TeX-file + :type 'directory) ;;;###autoload (defun TeX-auto-generate (tex auto) @@ -1623,6 +1805,9 @@ (not (file-directory-p file))) (TeX-auto-generate file auto)))) files))) + ((not (file-newer-than-file-p tex + (concat auto (if (string-match "/$" auto) "" "/") + (TeX-strip-extension tex TeX-all-extensions t) ".el")))) ((TeX-match-extension tex (append TeX-file-extensions BibTeX-file-extensions)) (save-excursion @@ -1641,9 +1826,14 @@ (defun TeX-auto-generate-global () "Create global auto directory for global TeX macro definitions." (interactive) - (make-directory (if (string-match "/$" TeX-auto-global) + (if (file-directory-p + (if (string-match "/$" TeX-auto-global) + (substring TeX-auto-global 0 -1) + TeX-auto-global)) + nil + (make-directory (if (string-match "/$" TeX-auto-global) (substring TeX-auto-global 0 -1) - TeX-auto-global)) + TeX-auto-global))) (mapcar (function (lambda (macro) (TeX-auto-generate macro TeX-auto-global))) TeX-macro-global) (byte-recompile-directory TeX-auto-global 0)) @@ -1731,8 +1921,10 @@ (defvar TeX-auto-cleanup-hook nil "List of hooks to be called after parsing a TeX file.") -(defvar TeX-auto-parse-length 999999 - "*Maximal length of TeX file that will be parsed.") +(defcustom TeX-auto-parse-length 999999 + "*Maximal length of TeX file that will be parsed." + :group 'TeX-parse + :type 'integer) (make-variable-buffer-local 'TeX-auto-parse-length) (defun TeX-auto-parse () @@ -1809,35 +2001,65 @@ ;; Some of these functions has little to do with TeX, but nonetheless we ;; should use the "TeX-" prefix to avoid name clashes. -(defvar TeX-auto-regexp-list 'TeX-auto-full-regexp-list - "*List of regular expresions used for parsing the current file.") +(defcustom TeX-auto-regexp-list 'TeX-auto-full-regexp-list + "*List of regular expresions used for parsing the current file." + :type '(radio (variable-item TeX-auto-empty-regexp-list) + (variable-item TeX-auto-full-regexp-list) + (variable-item plain-TeX-auto-regexp-list) + (variable-item LaTeX-auto-minimal-regexp-list) + (variable-item LaTeX-auto-label-regexp-list) + (variable-item LaTeX-auto-regexp-list) + (symbol :tag "Other") + (repeat :tag "Specify" + (group (regexp :tag "Match") + (sexp :tag "Groups") + symbol))) + :group 'TeX-parse) (make-variable-buffer-local 'TeX-auto-regexp-list) -(defvar TeX-file-extensions '("tex" "sty" "cls" "ltx" "texi" "texinfo") - "*File extensions used by manually generated TeX files.") - -(defvar TeX-all-extensions '("[^.\n]+") - "All possible file extensions.") - -(defvar TeX-default-extension "tex" - "*Default extension for TeX files.") +(defgroup TeX-file-extension nil + "File extensions recognized by AUC TeX." + :group 'TeX-file) + +(defcustom TeX-file-extensions '("tex" "sty" "cls" "ltx" "texi" "texinfo") + "*File extensions used by manually generated TeX files." + :group 'TeX-file-extension + :type '(repeat (string :format "%v"))) + +(defcustom TeX-all-extensions '("[^.\n]+") + "All possible file extensions." + :group 'TeX-file-extension + :type '(repeat (regexp :format "%v"))) + +(defcustom TeX-default-extension "tex" + "*Default extension for TeX files." + :group 'TeX-file-extension + :type 'string) (make-variable-buffer-local 'TeX-default-extension) -(defvar BibTeX-file-extensions '("bib") - "Valid file extensions for BibTeX files.") - -(defvar BibTeX-style-extensions '("bst") - "Valid file extensions for BibTeX styles.") - -(defvar TeX-ignore-file "\\(^\\|/\\)\\(\\.\\|\\.\\.\\|RCS\\|SCCS\\|CVS\\)$" +(defcustom BibTeX-file-extensions '("bib") + "Valid file extensions for BibTeX files." + :group 'TeX-file-extension + :type '(repeat (string :format "%v"))) + +(defcustom BibTeX-style-extensions '("bst") + "Valid file extensions for BibTeX styles." + :group 'TeX-file-extension + :type '(repeat (string :format "%v"))) + +(defcustom TeX-ignore-file "\\(^\\|/\\)\\(\\.\\|\\.\\.\\|RCS\\|SCCS\\|CVS\\)$" "*Regular expression matching file names to ignore. These files or directories will not be considered when searching for -TeX files in a directory.") - -(defvar TeX-file-recurse t - "*If not nil, search TeX directories recursivly.") +TeX files in a directory." + :group 'TeX-parse + :type 'regexp) + +(defcustom TeX-file-recurse t + "*If not nil, search TeX directories recursivly." + :group 'TeX-parse + :type 'boolean) (defun TeX-match-extension (file &optional extensions) "Return non-nil if FILE has an one of EXTENSIONS. @@ -2091,9 +2313,11 @@ ;;; Keymap -(defvar TeX-electric-escape nil +(defcustom TeX-electric-escape nil "If this is non-nil when AUC TeX is loaded, the TeX escape -character ``\\'' will be bound to `TeX-electric-macro'.") +character ``\\'' will be bound to `TeX-electric-macro'." + :group 'TeX-macro + :type 'boolean) (defvar TeX-mode-map nil "Keymap for common TeX and LaTeX commands.") @@ -2228,6 +2452,10 @@ ;;; Indentation +(defgroup TeX-indentation nil + "Indentation of TeX buffers in AUC TeX." + :group 'AUC-TeX) + (defun TeX-brace-count-line () "Count number of open/closed braces." (save-excursion @@ -2247,8 +2475,10 @@ (setq count (- count TeX-brace-indent-level))))) count)))) -(defvar TeX-brace-indent-level 2 - "*The level of indentation produced by a open brace.") +(defcustom TeX-brace-indent-level 2 + "*The level of indentation produced by a open brace." + :group 'TeX-indentation + :type 'integer) (defun TeX-comment-indent () (if (looking-at "%%%") @@ -2259,20 +2489,26 @@ ;;; Fonts -(defvar TeX-font-list '((?\C-b "{\\bf " "}") - (?\C-c "{\\sc " "}") - (?\C-e "{\\em " "\\/}") - (?\C-i "{\\it " "\\/}") - (?\C-r "{\\rm " "}") - (?\C-s "{\\sl " "\\/}") - (?\C-t "{\\tt " "}") - (?\C-d "" "" t)) - "*List of fonts used by TeX-font. +(defcustom TeX-font-list '((?\C-b "{\\bf " "}") + (?\C-c "{\\sc " "}") + (?\C-e "{\\em " "\\/}") + (?\C-i "{\\it " "\\/}") + (?\C-r "{\\rm " "}") + (?\C-s "{\\sl " "\\/}") + (?\C-t "{\\tt " "}") + (?\C-d "" "" t)) + "List of fonts used by TeX-font. Each entry is a list with three elements. The first element is the key to active the font. The second element is the string to insert before point, and the third element is the string to insert after -point. An optional fourth element means always replace if not nil.") +point. An optional fourth element means always replace if not nil." + :group 'TeX-macro + :type '(repeat (group (character :tag "Key") + (string :tag "Prefix") + (string :tag "Suffix") + (option (sexp :format "Replace\n" + :value t))))) (defvar TeX-font-replace-function 'TeX-font-replace "Determines the function which is called when a font should be replaced.") @@ -2504,15 +2740,25 @@ (normal-mode) (TeX-update-style)) -(defvar TeX-open-quote "``" - "*String inserted by typing \\[TeX-insert-quote] to open a quotation.") - -(defvar TeX-close-quote "''" - "*String inserted by typing \\[TeX-insert-quote] to close a quotation.") - -(defvar TeX-quote-after-quote nil +(defgroup TeX-quote nil + "Quoting in AUC TeX." + :group 'AUC-TeX) + +(defcustom TeX-open-quote "``" + "*String inserted by typing \\[TeX-insert-quote] to open a quotation." + :group 'TeX-quote + :type 'string) + +(defcustom TeX-close-quote "''" + "*String inserted by typing \\[TeX-insert-quote] to close a quotation." + :group 'TeX-quote + :type 'string) + +(defcustom TeX-quote-after-quote nil "*Behaviour of \\[TeX-insert-quote]. Nil means standard behaviour; -when non-nil, opening and closing quotes are inserted only after \".") +when non-nil, opening and closing quotes are inserted only after \"." + :group 'TeX-quote + :type 'boolean) ;;;###autoload (defun TeX-insert-quote (arg)
--- a/lisp/bytecomp/bytecomp.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/bytecomp/bytecomp.el Mon Aug 13 09:38:25 2007 +0200 @@ -2246,6 +2246,17 @@ (list 'signal ''error (list 'quote (list "`domain' used inside a function" form))))) +;; This is part of bytecomp.el in 19.35: +(put 'custom-declare-variable 'byte-hunk-handler + 'byte-compile-file-form-custom-declare-variable) +(defun byte-compile-file-form-custom-declare-variable (form) + (if (memq 'free-vars byte-compile-warnings) + (setq byte-compile-bound-variables + (cons (cons (nth 1 (nth 1 form)) + byte-compile-global-bit) + byte-compile-bound-variables))) + form) + ;;;###autoload (defun byte-compile (form)
--- a/lisp/cl/cl-macs.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/cl/cl-macs.el Mon Aug 13 09:38:25 2007 +0200 @@ -1643,6 +1643,7 @@ (defsetf annotation-data set-annotation-data) (defsetf annotation-action set-annotation-action) (defsetf annotation-menu set-annotation-menu) +(defsetf recent-keys-ring-size set-recent-keys-ring-size) (defsetf getenv setenv t) (defsetf get-register set-register)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/comint/ssh.el Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,358 @@ +;;; ssh.el --- remote login interface + +;; Copyright (C) 1996, 1997 Noah S. Friedman + +;; Author: Noah Friedman <friedman@prep.ai.mit.edu> +;; Maintainer: friedman@prep.ai.mit.edu +;; Keywords: unix, comm +;; Created: 1996-07-03 + +;; $Id: ssh.el,v 1.1 1997/05/28 16:30:50 steve Exp $ + +;; This program 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. +;; +;; This program 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 this program; if not, you can either send email to this +;; program's maintainer or write to: The Free Software Foundation, +;; Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; Support for remote logins using `ssh'. +;; This program is layered on top of shell.el; the code here only accounts +;; for the variations needed to handle a remote process, e.g. directory +;; tracking and the sending of some special characters. + +;; If you wish for ssh mode to prompt you in the minibuffer for +;; passwords when a password prompt appears, just enter m-x send-invisible +;; and type in your line, or add `comint-watch-for-password-prompt' to +;; `comint-output-filter-functions'. + +;;; Code: + +(require 'comint) +(require 'shell) + +(defgroup ssh nil + "Secure remote login interface" + :group 'processes + :group 'unix) + +(defcustom ssh-program "ssh" + "*Name of program to invoke ssh" + :type 'string + :group 'ssh) + +(defcustom ssh-explicit-args '() + "*List of arguments to pass to ssh on the command line." + :type '(repeat (string :tag "Argument")) + :group 'ssh) + +(defcustom ssh-mode-hook nil + "*Hooks to run after setting current buffer to ssh-mode." + :type 'hook + :group 'ssh) + +(defcustom ssh-process-connection-type t + "*If non-`nil', use a pty for the local ssh process. +If `nil', use a pipe (if pipes are supported on the local system). + +Generally it is better not to waste ptys on systems which have a static +number of them. However, ssh won't allocate a pty on the remote host +unless one is used locally as well." + :type '(choice (const :tag "ptys" t) + (const :tag "pipes" nil)) + :group 'ssh) + +(defcustom ssh-directory-tracking-mode 'local + "*Control whether and how to do directory tracking in an ssh buffer. + +nil means don't do directory tracking. + +t means do so using an ftp remote file name. + +Any other value means do directory tracking using local file names. +This works only if the remote machine and the local one +share the same directories (through NFS). This is the default. + +This variable becomes local to a buffer when set in any fashion for it. + +It is better to use the function of the same name to change the behavior of +directory tracking in an ssh session once it has begun, rather than +simply setting this variable, since the function does the necessary +re-synching of directories." + :type '(choice (const :tag "off" nil) + (const :tag "ftp" t) + (const :tag "local" local)) + :group 'ssh) + +(make-variable-buffer-local 'ssh-directory-tracking-mode) + +(defcustom ssh-host nil + "*The name of the remote host. This variable is buffer-local." + :type '(choice (const nil) string) + :group 'ssh) + +(defcustom ssh-remote-user nil + "*The username used on the remote host. +This variable is buffer-local and defaults to your local user name. +If ssh is invoked with the `-l' option to specify the remote username, +this variable is set from that." + :type '(choice (const nil) string) + :group 'ssh) + +;; Initialize ssh mode map. +(defvar ssh-mode-map '()) +(cond + ((null ssh-mode-map) + (setq ssh-mode-map (if (consp shell-mode-map) + (cons 'keymap shell-mode-map) + (copy-keymap shell-mode-map))) + (define-key ssh-mode-map "\C-c\C-c" 'ssh-send-Ctrl-C) + (define-key ssh-mode-map "\C-c\C-d" 'ssh-send-Ctrl-D) + (define-key ssh-mode-map "\C-c\C-z" 'ssh-send-Ctrl-Z) + (define-key ssh-mode-map "\C-c\C-\\" 'ssh-send-Ctrl-backslash) + (define-key ssh-mode-map "\C-d" 'ssh-delchar-or-send-Ctrl-D) + (define-key ssh-mode-map "\C-i" 'ssh-tab-or-complete))) + + +;;;###autoload (add-hook 'same-window-regexps "^\\*ssh-.*\\*\\(\\|<[0-9]+>\\)") + +(defvar ssh-history nil) + +;;;###autoload +(defun ssh (input-args &optional buffer) + "Open a network login connection via `ssh' with args INPUT-ARGS. +INPUT-ARGS should start with a host name; it may also contain +other arguments for `ssh'. + +Input is sent line-at-a-time to the remote connection. + +Communication with the remote host is recorded in a buffer `*ssh-HOST*' +\(or `*ssh-USER@HOST*' if the remote username differs\). +If a prefix argument is given and the buffer `*ssh-HOST*' already exists, +a new buffer with a different connection will be made. + +When called from a program, if the optional second argument BUFFER is +a string or buffer, it specifies the buffer to use. + +The variable `ssh-program' contains the name of the actual program to +run. It can be a relative or absolute path. + +The variable `ssh-explicit-args' is a list of arguments to give to +the ssh when starting. They are prepended to any arguments given in +INPUT-ARGS. + +If the default value of `ssh-directory-tracking-mode' is t, then the +default directory in that buffer is set to a remote (FTP) file name to +access your home directory on the remote machine. Occasionally this causes +an error, if you cannot access the home directory on that machine. This +error is harmless as long as you don't try to use that default directory. + +If `ssh-directory-tracking-mode' is neither t nor nil, then the default +directory is initially set up to your (local) home directory. +This is useful if the remote machine and your local machine +share the same files via NFS. This is the default. + +If you wish to change directory tracking styles during a session, use the +function `ssh-directory-tracking-mode' rather than simply setting the +variable." + (interactive (list + (read-from-minibuffer "ssh arguments (hostname first): " + nil nil nil 'ssh-history) + current-prefix-arg)) + + (let* ((process-connection-type ssh-process-connection-type) + (args (ssh-parse-words input-args)) + (host (car args)) + (user (or (car (cdr (member "-l" args))) + (user-login-name))) + (buffer-name (if (string= user (user-login-name)) + (format "*ssh-%s*" host) + (format "*ssh-%s@%s*" user host))) + proc) + + (and ssh-explicit-args + (setq args (append ssh-explicit-args args))) + + (cond ((null buffer)) + ((stringp buffer) + (setq buffer-name buffer)) + ((bufferp buffer) + (setq buffer-name (buffer-name buffer))) + ((numberp buffer) + (setq buffer-name (format "%s<%d>" buffer-name buffer))) + (t + (setq buffer-name (generate-new-buffer-name buffer-name)))) + + (setq buffer (get-buffer-create buffer-name)) + (pop-to-buffer buffer-name) + + (cond + ((comint-check-proc buffer-name)) + (t + (comint-exec buffer buffer-name ssh-program nil args) + (setq proc (get-buffer-process buffer)) + ;; Set process-mark to point-max in case there is text in the + ;; buffer from a previous exited process. + (set-marker (process-mark proc) (point-max)) + + ;; comint-output-filter-functions is just like a hook, except that the + ;; functions in that list are passed arguments. add-hook serves well + ;; enough for modifying it. + ;; comint-output-filter-functions should already have a + ;; permanent-local property, at least in emacs 19.27 or later. + (if (fboundp 'make-local-hook) + (make-local-hook 'comint-output-filter-functions) + (make-local-variable 'comint-output-filter-functions)) + (add-hook 'comint-output-filter-functions 'ssh-carriage-filter) + + (ssh-mode) + + (make-local-variable 'ssh-host) + (setq ssh-host host) + (make-local-variable 'ssh-remote-user) + (setq ssh-remote-user user) + + (condition-case () + (cond ((eq ssh-directory-tracking-mode t) + ;; Do this here, rather than calling the tracking mode + ;; function, to avoid a gratuitous resync check; the default + ;; should be the user's home directory, be it local or remote. + (setq comint-file-name-prefix + (concat "/" ssh-remote-user "@" ssh-host ":")) + (cd-absolute comint-file-name-prefix)) + ((null ssh-directory-tracking-mode)) + (t + (cd-absolute (concat comint-file-name-prefix "~/")))) + (error nil)))))) + +(put 'ssh-mode 'mode-class 'special) + +(defun ssh-mode () + "Set major-mode for ssh sessions. +If `ssh-mode-hook' is set, run it." + (interactive) + (kill-all-local-variables) + (shell-mode) + (setq major-mode 'ssh-mode) + (setq mode-name "ssh") + (use-local-map ssh-mode-map) + (setq shell-dirtrackp ssh-directory-tracking-mode) + (make-local-variable 'comint-file-name-prefix) + (run-hooks 'ssh-mode-hook)) + +(defun ssh-directory-tracking-mode (&optional prefix) + "Do remote or local directory tracking, or disable entirely. + +If called with no prefix argument or a unspecified prefix argument (just +``\\[universal-argument]'' with no number) do remote directory tracking via +ange-ftp. If called as a function, give it no argument. + +If called with a negative prefix argument, disable directory tracking +entirely. + +If called with a positive, numeric prefix argument, e.g. +``\\[universal-argument] 1 M-x ssh-directory-tracking-mode\'', +then do directory tracking but assume the remote filesystem is the same as +the local system. This only works in general if the remote machine and the +local one share the same directories (through NFS)." + (interactive "P") + (cond + ((or (null prefix) + (consp prefix)) + (setq ssh-directory-tracking-mode t) + (setq shell-dirtrackp t) + (setq comint-file-name-prefix + (concat "/" ssh-remote-user "@" ssh-host ":"))) + ((< prefix 0) + (setq ssh-directory-tracking-mode nil) + (setq shell-dirtrackp nil)) + (t + (setq ssh-directory-tracking-mode 'local) + (setq comint-file-name-prefix "") + (setq shell-dirtrackp t))) + (cond + (shell-dirtrackp + (let* ((proc (get-buffer-process (current-buffer))) + (proc-mark (process-mark proc)) + (current-input (buffer-substring proc-mark (point-max))) + (orig-point (point)) + (offset (and (>= orig-point proc-mark) + (- (point-max) orig-point)))) + (unwind-protect + (progn + (delete-region proc-mark (point-max)) + (goto-char (point-max)) + (shell-resync-dirs)) + (goto-char proc-mark) + (insert current-input) + (if offset + (goto-char (- (point-max) offset)) + (goto-char orig-point))))))) + + +;; Parse a line into its constituent parts (words separated by +;; whitespace). Return a list of the words. +(defun ssh-parse-words (line) + (let ((list nil) + (posn 0) + (match-data (match-data))) + (while (string-match "[^ \t\n]+" line posn) + (setq list (cons (substring line (match-beginning 0) (match-end 0)) + list)) + (setq posn (match-end 0))) + (store-match-data (match-data)) + (nreverse list))) + +(defun ssh-carriage-filter (string) + (let* ((point-marker (point-marker)) + (end (process-mark (get-buffer-process (current-buffer)))) + (beg (or (and (boundp 'comint-last-output-start) + comint-last-output-start) + (- end (length string))))) + (goto-char beg) + (while (search-forward "\C-m" end t) + (delete-char -1)) + (goto-char point-marker))) + +(defun ssh-send-Ctrl-C () + (interactive) + (send-string nil "\C-c")) + +(defun ssh-send-Ctrl-D () + (interactive) + (send-string nil "\C-d")) + +(defun ssh-send-Ctrl-Z () + (interactive) + (send-string nil "\C-z")) + +(defun ssh-send-Ctrl-backslash () + (interactive) + (send-string nil "\C-\\")) + +(defun ssh-delchar-or-send-Ctrl-D (arg) + "\ +Delete ARG characters forward, or send a C-d to process if at end of buffer." + (interactive "p") + (if (eobp) + (ssh-send-Ctrl-D) + (delete-char arg))) + +(defun ssh-tab-or-complete () + "Complete file name if doing directory tracking, or just insert TAB." + (interactive) + (if ssh-directory-tracking-mode + (comint-dynamic-complete) + (insert "\C-i"))) + +;;; ssh.el ends here
--- a/lisp/custom/ChangeLog Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/custom/ChangeLog Mon Aug 13 09:38:25 2007 +0200 @@ -1,10 +1,93 @@ +Tue May 27 16:19:16 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * Version 1.98 released. + +Mon May 26 22:29:22 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * wid-edit.el (widget-glyph-directory): Fix doc. string. + (widget-image-conversion): New option. + (widget-glyph-insert): Use it. + (widget-glyph-insert-glyph): No tag here. + (widget-push-button-value-create): But here. + Patch by Hrvoje Niksic <hniksic@srce.hr>. + + * wid-edit.el (widget-field-face): Changed to dim gray. + Suggested by Simon Marshall <Simon.Marshall@esrin.esa.it>. + +Sat May 24 00:07:50 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * widget.texi (push-button): Documented new options. + (link): Ditto. + (Basic Types): Documented new keywords. + + * wid-edit.el (widget-push-button-prefix): New option. + (widget-push-button-suffix): New option. + (widget-button): New group. + + * widget.el (:text-format): Removed. + (:button-suffix): New keyword. + (:button-prefix): New keyword. + + * wid-edit.el (widget-button-prefix): New variable. + (widget-button-suffix): New variable. + (widget-insert-indirect): New function. + (widget-default-create): Use it. + (default): Bind them. + (widget-link-prefix): New option. + (widget-link-suffix): New option. + (link): Use them. + (push-button): Don't use `:text-format'. + (widget-push-button-value-create): Ditto. + (widget-help): Update format. + (checkbox): Ditto. + (radio-button): Ditto. + +Fri May 23 23:54:11 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * cus-edit.el (custom-magic-alist): Use `activate' instead of + `push'. + * custom.texi (The Face Options): Ditto. + * widget.texi (Introduction): Ditto. + +Thu May 22 12:49:36 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * cus-edit.el (custom-magic-alist): Changed rogue state message. + + * custom.el (defface): Doc fix. + Tue May 20 19:17:01 1997 Steven L Baur <steve@altair.xemacs.org> * cus-edit.el (mule): New group for MULE merged emacsen. (auto-save): Spelling fix. +Thu May 15 10:47:20 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * custom.texi (User Commands): Updated documentation. + + * cus-edit.el, custom.el: Renamed `factory' to `standard' + everywhere. + + * cus-edit.el (custom-magic-show-button): Changed default to + `nil'. + (custom): Removed `:format'. + (custom-variable): Removed level button. + (custom-face): Ditto. + (custom-level): Deteted. + (custom-level-action): Deleted. + (custom-format-handler): Update caller. + (custom-group-magic-alist): Merged into `custom-magic-alist'. + (custom-magic-value-create): Use merged `custom-magic-alist'. + (custom-group-state-update): Ditto. + + +Wed May 14 19:47:35 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * all: Synched with FSF. + Tue May 13 16:05:34 1997 Per Abrahamsen <abraham@dina.kvl.dk> + * cus-edit.el (windows): Move to environment. + * Version 1.97 released. Fri May 9 12:33:34 1997 Per Abrahamsen <abraham@dina.kvl.dk>
--- a/lisp/custom/cus-edit.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/custom/cus-edit.el Mon Aug 13 09:38:25 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: help, faces -;; Version: 1.97 +;; Version: 1.98 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;; This file is part of GNU Emacs. @@ -44,10 +44,10 @@ (define-widget-keywords :custom-prefixes :custom-menu :custom-show :custom-magic :custom-state :custom-level :custom-form :custom-set :custom-save :custom-reset-current :custom-reset-saved - :custom-reset-factory) + :custom-reset-standard) (put 'custom-define-hook 'custom-type 'hook) -(put 'custom-define-hook 'factory-value '(nil)) +(put 'custom-define-hook 'standard-value '(nil)) (custom-add-to-group 'customize 'custom-define-hook 'custom-variable) ;;; Customization Groups. @@ -314,14 +314,14 @@ "Basic stuff dealing with processes." :group 'processes) -(defgroup windows nil - "Windows within a frame." - :group 'processes) - (defgroup mule nil "MULE Emacs internationalization." :group 'emacs) +(defgroup windows nil + "Windows within a frame." + :group 'environment) + ;;; Utilities. (defun custom-quote (sexp) @@ -537,7 +537,7 @@ (defvar custom-reset-menu '(("Current" . custom-reset-current) ("Saved" . custom-reset-saved) - ("Factory Settings" . custom-reset-factory)) + ("Standard Settings" . custom-reset-standard)) "Alist of actions for the `Reset' button. The key is a string containing the name of the action, the value is a lisp function taking the widget as an element which will be called @@ -570,8 +570,8 @@ (widget-apply child :custom-reset-current))) children))) -(defun custom-reset-factory () - "Reset all modified, set, or saved group members to their factory settings." +(defun custom-reset-standard () + "Reset all modified, set, or saved group members to their standard settings." (interactive) (let ((children custom-options)) (mapcar (lambda (child) @@ -650,24 +650,33 @@ (put var 'customized-value (list (custom-quote val)))) ;;;###autoload -(defun customize (symbol) - "Customize SYMBOL, which must be a customization group." +(defun customize () + "Select a customization buffer which you can use to set user options. +User options are structured into \"groups\". +Initially the top-level group `Emacs' and its immediate subgroups +are shown; the contents of those subgroups are initially hidden." + (interactive) + (customize-group 'emacs)) + +;;;###autoload +(defun customize-group (group) + "Customize GROUP, which must be a customization group." (interactive (list (completing-read "Customize group: (default emacs) " obarray (lambda (symbol) (get symbol 'custom-group)) t))) - (when (stringp symbol) - (if (string-equal "" symbol) - (setq symbol 'emacs) - (setq symbol (intern symbol)))) - (custom-buffer-create (list (list symbol 'custom-group)) + (when (stringp group) + (if (string-equal "" group) + (setq group 'emacs) + (setq group (intern group)))) + (custom-buffer-create (list (list group 'custom-group)) (format "*Customize Group: %s*" - (custom-unlispify-tag-name symbol)))) + (custom-unlispify-tag-name group)))) ;;;###autoload -(defun customize-other-window (symbol) +(defun customize-group-other-window (symbol) "Customize SYMBOL, which must be a customization group." (interactive (list (completing-read "Customize group: (default emacs) " obarray @@ -788,7 +797,7 @@ (setq found (cons (list symbol 'custom-face) found))) (when (and (boundp symbol) (or (get symbol 'saved-value) - (get symbol 'factory-value) + (get symbol 'standard-value) (if all (get symbol 'variable-documentation) (user-variable-p symbol)))) @@ -838,6 +847,33 @@ :help-echo "Read the online help." "(custom)The Customization Buffer") (widget-insert " for more information.\n\n") + (message "Creating customization buttons...") + (widget-create 'push-button + :tag "Set" + :help-echo "Set all modifications for this session." + :action (lambda (widget &optional event) + (custom-set))) + (widget-insert " ") + (widget-create 'push-button + :tag "Save" + :help-echo "\ +Make the modifications default for future sessions." + :action (lambda (widget &optional event) + (custom-save))) + (widget-insert " ") + (widget-create 'push-button + :tag "Reset" + :help-echo "Undo all modifications." + :action (lambda (widget &optional event) + (custom-reset event))) + (widget-insert " ") + (widget-create 'push-button + :tag "Done" + :help-echo "Bury the buffer." + :action (lambda (widget &optional event) + (bury-buffer))) + (widget-insert "\n\n") + (message "Creating customization items...") (setq custom-options (if (= (length options) 1) (mapcar (lambda (entry) @@ -864,35 +900,8 @@ options)))) (unless (eq (preceding-char) ?\n) (widget-insert "\n")) - (widget-insert "\n") (message "Creating customization magic...") (mapcar 'custom-magic-reset custom-options) - (message "Creating customization buttons...") - (widget-create 'push-button - :tag "Set" - :help-echo "Set all modifications for this session." - :action (lambda (widget &optional event) - (custom-set))) - (widget-insert " ") - (widget-create 'push-button - :tag "Save" - :help-echo "\ -Make the modifications default for future sessions." - :action (lambda (widget &optional event) - (custom-save))) - (widget-insert " ") - (widget-create 'push-button - :tag "Reset" - :help-echo "Undo all modifications." - :action (lambda (widget &optional event) - (custom-reset event))) - (widget-insert " ") - (widget-create 'push-button - :tag "Done" - :help-echo "Bury the buffer." - :action (lambda (widget &optional event) - (bury-buffer))) - (widget-insert "\n") (message "Creating customization setup...") (widget-setup) (goto-char (point-min)) @@ -967,28 +976,35 @@ (defface custom-saved-face '((t (:underline t))) "Face used when the customize item has been saved.") -(defcustom custom-magic-alist '((nil "#" underline "\ +(defconst custom-magic-alist '((nil "#" underline "\ uninitialized, you should not see this.") - (unknown "?" italic "\ + (unknown "?" italic "\ unknown, you should not see this.") - (hidden "-" default "\ -hidden, press the state button to show.") - (invalid "x" custom-invalid-face "\ + (hidden "-" default "\ +hidden, activate the state button to show." "\ +the group members are hidden, activate the state button to show them.") + (invalid "x" custom-invalid-face "\ the value displayed for this item is invalid and cannot be set.") - (modified "*" custom-modified-face "\ -you have edited the item, and can now set it.") - (set "+" custom-set-face "\ -you have set this item, but not saved it.") - (changed ":" custom-changed-face "\ -this item has been changed outside customize.") - (saved "!" custom-saved-face "\ -this item has been saved.") - (rogue "@" custom-rogue-face "\ -this item is not prepared for customization.") - (factory " " nil "\ -this item is unchanged from its factory setting.")) + (modified "*" custom-modified-face "\ +you have edited the item, and can now set it." "\ +you have edited something in this group, and can now set it.") + (set "+" custom-set-face "\ +you have set this item, but not saved it." "\ +something in this group has been set, but not yet saved.") + (changed ":" custom-changed-face "\ +this item has been changed outside customize." "\ +something in this group has been changed outside customize.") + (saved "!" custom-saved-face "\ +this item has been set and saved." "\ +something in this group has been set and saved.") + (rogue "@" custom-rogue-face "\ +this item has not been changed with customize." "\ +something in this group is not prepared for customization.") + (standard " " nil "\ +this item is unchanged from its standard setting." "\ +the visible members of this group are all at their standard settings.")) "Alist of customize option states. -Each entry is of the form (STATE MAGIC FACE DESCRIPTION), where +Each entry is of the form (STATE MAGIC FACE ITEM-DESC [ GROUP-DESC ]), where STATE is one of the following symbols: @@ -1010,64 +1026,19 @@ This item is marked for saving. `rogue' This item has no customization information. -`factory' - This item is unchanged from the factory default. +`standard' + This item is unchanged from the standard setting. MAGIC is a string used to present that state. FACE is a face used to present the state. -DESCRIPTION is a string describing the state. +ITEM-DESC is a string describing the state for options. -The list should be sorted most significant first." - :type '(list (checklist :inline t - (group (const nil) - (string :tag "Magic") - face - (string :tag "Description")) - (group (const unknown) - (string :tag "Magic") - face - (string :tag "Description")) - (group (const hidden) - (string :tag "Magic") - face - (string :tag "Description")) - (group (const invalid) - (string :tag "Magic") - face - (string :tag "Description")) - (group (const modified) - (string :tag "Magic") - face - (string :tag "Description")) - (group (const set) - (string :tag "Magic") - face - (string :tag "Description")) - (group (const changed) - (string :tag "Magic") - face - (string :tag "Description")) - (group (const saved) - (string :tag "Magic") - face - (string :tag "Description")) - (group (const rogue) - (string :tag "Magic") - face - (string :tag "Description")) - (group (const factory) - (string :tag "Magic") - face - (string :tag "Description"))) - (editable-list :inline t - (group symbol - (string :tag "Magic") - face - (string :tag "Description")))) - :group 'customize - :group 'custom-faces) +GROUP-DESC is a string describing the state for groups. If this is +left out, ITEM-DESC will be used. + +The list should be sorted most significant first.") (defcustom custom-magic-show 'long "Show long description of the state of each customization option." @@ -1076,7 +1047,7 @@ (const long)) :group 'customize) -(defcustom custom-magic-show-button t +(defcustom custom-magic-show-button nil "Show a magic button indicating the state of each customization option." :type 'boolean :group 'customize) @@ -1103,7 +1074,9 @@ (entry (assq state custom-magic-alist)) (magic (nth 1 entry)) (face (nth 2 entry)) - (text (nth 3 entry)) + (text (or (and (eq (widget-type parent) 'custom-group) + (nth 4 entry)) + (nth 3 entry))) (lisp (eq (widget-get parent :custom-form) 'lisp)) children) (when custom-magic-show @@ -1145,24 +1118,11 @@ (let ((magic (widget-get widget :custom-magic))) (widget-value-set magic (widget-value magic)))) -;;; The `custom-level' Widget. - -(define-widget 'custom-level 'item - "The custom level buttons." - :format "%[%t%]" - :help-echo "Expand or collapse this item." - :action 'custom-level-action) - -(defun custom-level-action (widget &optional event) - "Toggle visibility for parent to WIDGET." - (custom-toggle-hide (widget-get widget :parent))) - ;;; The `custom' Widget. (define-widget 'custom 'default "Customize a user option." :convert-widget 'custom-convert-widget - :format "%l%[%t%]: %v%m%h%a" :format-handler 'custom-format-handler :notify 'custom-notify :custom-level 1 @@ -1192,9 +1152,8 @@ (cond ((eq escape ?l) (when level (push (widget-create-child-and-convert - widget 'custom-level (make-string level ?*)) + widget 'item :format "%v " (make-string level ?*)) buttons) - (widget-insert " ") (widget-put widget :buttons buttons))) ((eq escape ?L) (when (eq state 'hidden) @@ -1330,7 +1289,7 @@ (define-widget 'custom-variable 'custom "Customize variable." - :format "%l%v%m%h%a" + :format "%v%m%h%a" :help-echo "Set or reset this variable." :documentation-property 'variable-documentation :custom-state nil @@ -1342,14 +1301,14 @@ :custom-save 'custom-variable-save :custom-reset-current 'custom-redraw :custom-reset-saved 'custom-variable-reset-saved - :custom-reset-factory 'custom-variable-reset-factory) + :custom-reset-standard 'custom-variable-reset-standard) (defun custom-variable-type (symbol) "Return a widget suitable for editing the value of SYMBOL. If SYMBOL has a `custom-type' property, use that. Otherwise, look up symbol in `custom-guess-type-alist'." (let* ((type (or (get symbol 'custom-type) - (and (not (get symbol 'factory-value)) + (and (not (get symbol 'standard-value)) (custom-guess-type symbol)) 'sexp)) (options (get symbol 'custom-options)) @@ -1400,8 +1359,8 @@ ;; In lisp mode edit the saved value when possible. (let* ((value (cond ((get symbol 'saved-value) (car (get symbol 'saved-value))) - ((get symbol 'factory-value) - (car (get symbol 'factory-value))) + ((get symbol 'standard-value) + (car (get symbol 'standard-value))) ((default-boundp symbol) (custom-quote (funcall get symbol))) (t @@ -1452,11 +1411,11 @@ (error nil)) 'saved 'changed)) - ((setq tmp (get symbol 'factory-value)) + ((setq tmp (get symbol 'standard-value)) (if (condition-case nil (equal value (eval (car tmp))) (error nil)) - 'factory + 'standard 'changed)) (t 'rogue)))) (widget-put widget :custom-state state))) @@ -1486,9 +1445,9 @@ (and (get (widget-value widget) 'saved-value) (memq (widget-get widget :custom-state) '(modified set changed rogue))))) - ("Reset to Factory Settings" custom-variable-reset-factory + ("Reset to Standard Settings" custom-variable-reset-standard (lambda (widget) - (and (get (widget-value widget) 'factory-value) + (and (get (widget-value widget) 'standard-value) (memq (widget-get widget :custom-state) '(modified set changed saved rogue)))))) "Alist of actions for the `custom-variable' widget. @@ -1588,13 +1547,13 @@ (widget-put widget :custom-state 'unknown) (custom-redraw widget))) -(defun custom-variable-reset-factory (widget) - "Restore the factory setting for the variable being edited by WIDGET." +(defun custom-variable-reset-standard (widget) + "Restore the standard setting for the variable being edited by WIDGET." (let* ((symbol (widget-value widget)) (set (or (get symbol 'custom-set) 'set-default))) - (if (get symbol 'factory-value) - (funcall set symbol (eval (car (get symbol 'factory-value)))) - (error "No factory default for %S" symbol)) + (if (get symbol 'standard-value) + (funcall set symbol (eval (car (get symbol 'standard-value)))) + (error "No standard setting known for %S" symbol)) (put symbol 'customized-value nil) (when (get symbol 'saved-value) (put symbol 'saved-value nil) @@ -1697,7 +1656,7 @@ (define-widget 'custom-face 'custom "Customize face." - :format "%l%{%t%}: %s%m%h%a%v" + :format "%{%t%}: %s%m%h%a%v" :format-handler 'custom-face-format-handler :sample-face 'custom-face-tag-face :help-echo "Set or reset this face." @@ -1710,7 +1669,7 @@ :custom-save 'custom-face-save :custom-reset-current 'custom-redraw :custom-reset-saved 'custom-face-reset-saved - :custom-reset-factory 'custom-face-reset-factory + :custom-reset-standard 'custom-face-reset-standard :custom-menu 'custom-face-menu-create) (defun custom-face-format-handler (widget escape) @@ -1815,7 +1774,7 @@ ("Reset to Saved" custom-face-reset-saved (lambda (widget) (get (widget-value widget) 'saved-face))) - ("Reset to Factory Setting" custom-face-reset-factory + ("Reset to Standard Setting" custom-face-reset-standard (lambda (widget) (get (widget-value widget) 'face-defface-spec)))) "Alist of actions for the `custom-face' widget. @@ -1851,7 +1810,7 @@ ((get symbol 'saved-face) 'saved) ((get symbol 'face-defface-spec) - 'factory) + 'standard) (t 'rogue))))) @@ -1903,13 +1862,13 @@ (custom-face-state-set widget) (custom-redraw-magic widget))) -(defun custom-face-reset-factory (widget) - "Restore WIDGET to the face's factory settings." +(defun custom-face-reset-standard (widget) + "Restore WIDGET to the face's standard settings." (let* ((symbol (widget-value widget)) (child (car (widget-get widget :children))) (value (get symbol 'face-defface-spec))) (unless value - (error "No factory default for this face")) + (error "No standard setting for this face")) (put symbol 'customized-face nil) (when (get symbol 'saved-face) (put symbol 'saved-face nil) @@ -2033,7 +1992,7 @@ :custom-save 'custom-group-save :custom-reset-current 'custom-group-reset-current :custom-reset-saved 'custom-group-reset-saved - :custom-reset-factory 'custom-group-reset-factory + :custom-reset-standard 'custom-group-reset-standard :custom-menu 'custom-group-menu-create) (defun custom-group-sample-face-get (widget) @@ -2093,7 +2052,7 @@ ("Reset to Saved" custom-group-reset-saved (lambda (widget) (memq (widget-get widget :custom-state) '(modified set)))) - ("Reset to Factory" custom-group-reset-factory + ("Reset to standard setting" custom-group-reset-standard (lambda (widget) (memq (widget-get widget :custom-state) '(modified set saved))))) "Alist of actions for the `custom-group' widget. @@ -2149,13 +2108,13 @@ (widget-apply child :custom-reset-saved))) children ))) -(defun custom-group-reset-factory (widget) +(defun custom-group-reset-standard (widget) "Reset all modified, set, or saved group members." (let ((children (widget-get widget :children))) (mapcar (lambda (child) (when (memq (widget-get child :custom-state) '(modified set saved)) - (widget-apply child :custom-reset-factory))) + (widget-apply child :custom-reset-standard))) children ))) (defun custom-group-state-update (widget) @@ -2166,7 +2125,7 @@ (widget-get child :custom-state)) children)) (magics custom-magic-alist) - (found 'factory)) + (found 'standard)) (while magics (let ((magic (car (car magics)))) (if (and (not (eq magic 'hidden)) @@ -2215,7 +2174,7 @@ (mapatoms (lambda (symbol) (let ((value (get symbol 'saved-value)) (requests (get symbol 'custom-requests)) - (now (not (or (get symbol 'factory-value) + (now (not (or (get symbol 'standard-value) (and (not (boundp symbol)) (not (get symbol 'force-value))))))) (when value @@ -2331,12 +2290,12 @@ ,@(cdr (cdr custom-help-menu))))) (let ((map (easy-menu-create-keymaps (car menu) (cdr menu)))) (define-key global-map [menu-bar help-menu customize-menu] - (cons (car menu) map))))) + (cons (car menu) map)))))) - (defcustom custom-menu-nesting 2 - "Maximum nesting in custom menus." - :type 'integer - :group 'customize)) +(defcustom custom-menu-nesting 2 + "Maximum nesting in custom menus." + :type 'integer + :group 'customize) (defun custom-face-menu-create (widget symbol) "Ignoring WIDGET, create a menu entry for customization face SYMBOL." @@ -2382,7 +2341,7 @@ "Create menu for customization group SYMBOL. The menu is in a format applicable to `easy-menu-define'." (let* ((item (vector (custom-unlispify-menu-entry symbol) - `(customize ',symbol) + `(customize-group ',symbol) t))) (if (and (or (not (boundp 'custom-menu-nesting)) (>= custom-menu-nesting 0)) @@ -2440,7 +2399,7 @@ ["Save" custom-save t] ["Reset to Current" custom-reset-current t] ["Reset to Saved" custom-reset-saved t] - ["Reset to Factory Settings" custom-reset-factory t] + ["Reset to Standard Settings" custom-reset-standard t] ["Info" (Info-goto-node "(custom)The Customization Buffer") t])) (defcustom custom-mode-hook nil @@ -2461,7 +2420,7 @@ Make all modifications default. \\[custom-save] Reset all modified options. \\[custom-reset-current] Reset all modified or set options. \\[custom-reset-saved] -Reset all options. \\[custom-reset-factory] +Reset all options. \\[custom-reset-standard] Entry to this mode calls the value of `custom-mode-hook' if that value is non-nil."
--- a/lisp/custom/cus-face.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/custom/cus-face.el Mon Aug 13 09:38:25 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: help, faces -;; Version: 1.97 +;; Version: 1.98 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary:
--- a/lisp/custom/custom.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/custom/custom.el Mon Aug 13 09:38:25 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: help, faces -;; Version: 1.97 +;; Version: 1.98 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;; This file is part of GNU Emacs. @@ -37,6 +37,7 @@ ;;; Code: (require 'widget) +(eval-when-compile (require 'cl)) (define-widget-keywords :initialize :set :get :require :prefix :tag :load :link :options :type :group) @@ -47,7 +48,8 @@ (autoload 'custom-set-value "cus-edit" nil t) (autoload 'custom-set-variable "cus-edit" nil t) (autoload 'customize "cus-edit" nil t) - (autoload 'customize-other-window "cus-edit" nil t) + (autoload 'customize-group "cus-edit" nil t) + (autoload 'customize-group-other-window "cus-edit" nil t) (autoload 'customize-variable "cus-edit" nil t) (autoload 'customize-variable-other-window "cus-edit" nil t) (autoload 'customize-face "cus-edit" nil t) @@ -78,7 +80,7 @@ Otherwise, VALUE will be evaluated and used as the default binding for symbol." (unless (default-boundp symbol) - ;; Use the saved value if it exists, otherwise the factory setting. + ;; Use the saved value if it exists, otherwise the standard setting. (set-default symbol (if (get symbol 'saved-value) (eval (car (get symbol 'saved-value))) (eval value))))) @@ -111,7 +113,7 @@ (defun custom-initialize-changed (symbol value) "Initialize SYMBOL with VALUE. Like `custom-initialize-reset', but only use the `:set' function if the -not using the factory setting. Otherwise, use the `set-default'." +not using the standard setting. Otherwise, use the `set-default'." (cond ((default-boundp symbol) (funcall (or (get symbol 'custom-set) 'set-default) symbol @@ -126,8 +128,8 @@ (defun custom-declare-variable (symbol value doc &rest args) "Like `defcustom', but SYMBOL and VALUE are evaluated as normal arguments." - ;; Remember the factory setting. - (put symbol 'factory-value (list value)) + ;; Remember the standard setting. + (put symbol 'standard-value (list value)) ;; Maybe this option was rogue in an earlier version. It no longer is. (when (get symbol 'force-value) ;; It no longer is. @@ -153,7 +155,7 @@ ((eq keyword :get) (put symbol 'custom-get value)) ((eq keyword :require) - (push value requests)) + (setq requests (cons value requests))) ((eq keyword :type) (put symbol 'custom-type value)) ((eq keyword :options) @@ -234,8 +236,6 @@ ATTS is a list of face attributes and their values. The possible attributes are defined in the variable `custom-face-attributes'. -Alternatively, ATTS can be a face in which case the attributes of that -face is used. The ATTS of the first entry in SPEC where the DISPLAY matches the frame should take effect in that frame. DISPLAY can either be the
--- a/lisp/custom/wid-browse.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/custom/wid-browse.el Mon Aug 13 09:38:25 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: extensions -;; Version: 1.97 +;; Version: 1.98 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;; This file is part of GNU Emacs.
--- a/lisp/custom/wid-edit.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/custom/wid-edit.el Mon Aug 13 09:38:25 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: extensions -;; Version: 1.97 +;; Version: 1.98 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;; This file is part of GNU Emacs. @@ -31,8 +31,7 @@ ;;; Code: (require 'widget) - -(eval-when-compile (require 'cl)) +(require 'cl) ;;; Compatibility. @@ -146,7 +145,7 @@ (:background "gray85")) (((class grayscale color) (background dark)) - (:background "dark gray")) + (:background "dim gray")) (t (:italic t))) "Face used for editable fields." @@ -542,7 +541,7 @@ (defcustom widget-glyph-directory (concat data-directory "custom/") "Where widget glyphs are located. If this variable is nil, widget will try to locate the directory -automatically. This does not work yet." +automatically." :group 'widgets :type 'directory) @@ -551,10 +550,21 @@ :group 'widgets :type 'boolean) +(defcustom widget-image-conversion + '((xpm ".xpm") (gif ".gif") (png ".png") (jpeg ".jpg" ".jpeg") + (xbm ".xbm")) + "Conversion alist from image formats to file name suffixes." + :group 'widgets + :type '(repeat (cons :format "%v" + (symbol :tag "Image Format" unknown) + (repeat :tag "Suffixes" + (string :format "%v"))))) + (defun widget-glyph-insert (widget tag image) "In WIDGET, insert the text TAG or, if supported, IMAGE. -IMAGE should either be a glyph, or a name sans extension of an xpm or -xbm file located in `widget-glyph-directory'. +IMAGE should either be a glyph, an image instantiator, or an image file +name sans extension (xpm, xbm, gif, jpg, or png) located in +`widget-glyph-directory'. WARNING: If you call this with a glyph, and you want the user to be able to activate the glyph, make sure it is unique. If you use the @@ -563,35 +573,51 @@ (cond ((not (and (string-match "XEmacs" emacs-version) widget-glyph-enable (fboundp 'make-glyph) + (fboundp 'locate-file) image)) ;; We don't want or can't use glyphs. (insert tag)) ((and (fboundp 'glyphp) (glyphp image)) ;; Already a glyph. Insert it. - (widget-glyph-insert-glyph widget tag image)) + (widget-glyph-insert-glyph widget image)) + ((stringp image) + ;; A string. Look it up in relevant directories. + (let* ((dirlist (list (or widget-glyph-directory + (concat data-directory + "custom/")) + data-directory)) + (formats widget-image-conversion) + file) + (while (and formats (not file)) + (when (valid-image-instantiator-format-p (car (car formats))) + (setq file (locate-file image dirlist + (mapconcat 'identity (cdr (car formats)) + ":")))) + (setq formats (cdr formats))) + ;; We create a glyph with the file as the default image + ;; instantiator, and the TAG fallback + (widget-glyph-insert-glyph + widget + (make-glyph (if file + (list (vector (car (car formats)) ':file file) + (vector 'string ':data tag)) + (vector 'string ':data tag)))))) + ((valid-instantiator-p image 'image) + ;; A valid image instantiator (e.g. [gif ':file "somefile"] etc.) + (widget-glyph-insert-glyph widget + (list image + (vector 'string ':data tag)))) (t - ;; A string. Look it up in. - (let ((file (concat widget-glyph-directory - (if (string-match "/\\'" widget-glyph-directory) - "" - "/") - image - (if (featurep 'xpm) ".xpm" ".xbm")))) - (if (file-readable-p file) - (widget-glyph-insert-glyph widget tag (make-glyph file)) - ;; File not readable, give up. - (insert tag)))))) + ;; Oh well. + (insert tag)))) -(defun widget-glyph-insert-glyph (widget tag glyph &optional down inactive) +(defun widget-glyph-insert-glyph (widget glyph &optional down inactive) "In WIDGET, with alternative text TAG, insert GLYPH." - (set-glyph-image glyph (cons 'tty tag)) (set-glyph-property glyph 'widget widget) (when down - (set-glyph-image down (cons 'tty tag)) (set-glyph-property down 'widget widget)) (when inactive - (set-glyph-image inactive (cons 'tty tag)) (set-glyph-property inactive 'widget widget)) (insert "*") (add-text-properties (1- (point)) (point) @@ -610,6 +636,30 @@ help-echo 'widget-mouse-help)))))) +;;; Buttons. + +(defgroup widget-button nil + "The look of various kinds of buttons." + :group 'widgets) + +(defcustom widget-button-prefix "" + "String used as prefix for buttons." + :type 'string + :group 'widgets) + +(defcustom widget-button-suffix "" + "String used as suffix for buttons." + :type 'string + :group 'widgets) + +(defun widget-button-insert-indirect (widget key) + "Insert value of WIDGET's KEY property." + (let ((val (widget-get widget key))) + (while (and val (symbolp val)) + (setq val (symbol-value val))) + (when val + (insert val)))) + ;;; Creating Widgets. ;;;###autoload @@ -1136,6 +1186,8 @@ "Basic widget other widgets are derived from." :value-to-internal (lambda (widget value) value) :value-to-external (lambda (widget value) value) + :button-prefix 'widget-button-prefix + :button-suffix 'widget-button-suffix :create 'widget-default-create :indent nil :offset 0 @@ -1159,9 +1211,6 @@ "Create WIDGET at point in the current buffer." (widget-specify-insert (let ((from (point)) - (tag (widget-get widget :tag)) - (glyph (widget-get widget :tag-glyph)) - (doc (widget-get widget :doc)) button-begin button-end sample-begin sample-end doc-begin doc-end @@ -1175,8 +1224,10 @@ (cond ((eq escape ?%) (insert "%")) ((eq escape ?\[) - (setq button-begin (point))) + (setq button-begin (point)) + (widget-button-insert-indirect widget :button-prefix)) ((eq escape ?\]) + (widget-button-insert-indirect widget :button-suffix) (setq button-end (point))) ((eq escape ?\{) (setq sample-begin (point))) @@ -1187,21 +1238,24 @@ (insert "\n") (insert-char ? (widget-get widget :indent)))) ((eq escape ?t) - (cond (glyph - (widget-glyph-insert widget (or tag "image") glyph)) - (tag - (insert tag)) - (t - (let ((standard-output (current-buffer))) - (princ (widget-get widget :value)))))) + (let ((glyph (widget-get widget :tag-glyph)) + (tag (widget-get widget :tag))) + (cond (glyph + (widget-glyph-insert widget (or tag "image") glyph)) + (tag + (insert tag)) + (t + (let ((standard-output (current-buffer))) + (princ (widget-get widget :value))))))) ((eq escape ?d) - (when doc - (setq doc-begin (point)) - (insert doc) - (while (eq (preceding-char) ?\n) - (delete-backward-char 1)) - (insert "\n") - (setq doc-end (point)))) + (let ((doc (widget-get widget :doc))) + (when doc + (setq doc-begin (point)) + (insert doc) + (while (eq (preceding-char) ?\n) + (delete-backward-char 1)) + (insert "\n") + (setq doc-end (point))))) ((eq escape ?v) (if (and button-begin (not button-end)) (widget-apply widget :value-create) @@ -1386,17 +1440,29 @@ ;; Cache already created GUI objects. (defvar widget-push-button-cache nil) +(defcustom widget-push-button-prefix "[" + "String used as prefix for buttons." + :type 'string + :group 'widget-button) + +(defcustom widget-push-button-suffix "]" + "String used as suffix for buttons." + :type 'string + :group 'widget-button) + (define-widget 'push-button 'item "A pushable button." + :button-prefix "" + :button-suffix "" :value-create 'widget-push-button-value-create - :text-format "[%s]" :format "%[%v%]") (defun widget-push-button-value-create (widget) ;; Insert text representing the `on' and `off' states. (let* ((tag (or (widget-get widget :tag) (widget-get widget :value))) - (text (format (widget-get widget :text-format) tag)) + (text (concat widget-push-button-prefix + tag widget-push-button-suffix)) (gui (cdr (assoc tag widget-push-button-cache)))) (if (and (fboundp 'make-gui-button) (fboundp 'make-glyph) @@ -1408,10 +1474,16 @@ (unless gui (setq gui (make-gui-button tag 'widget-gui-action widget)) (push (cons tag gui) widget-push-button-cache)) - (widget-glyph-insert-glyph widget text - (make-glyph (nth 0 (aref gui 1))) - (make-glyph (nth 1 (aref gui 1))) - (make-glyph (nth 2 (aref gui 1))))) + (widget-glyph-insert-glyph widget + (make-glyph + (list (nth 0 (aref gui 1)) + (vector 'string ':data text))) + (make-glyph + (list (nth 1 (aref gui 1)) + (vector 'string ':data text))) + (make-glyph + (list (nth 2 (aref gui 1)) + (vector 'string ':data text))))) (insert text)))) (defun widget-gui-action (widget) @@ -1420,10 +1492,22 @@ ;;; The `link' Widget. +(defcustom widget-link-prefix "_" + "String used as prefix for links." + :type 'string + :group 'widget-button) + +(defcustom widget-link-suffix "_" + "String used as suffix for links." + :type 'string + :group 'widget-button) + (define-widget 'link 'item "An embedded link." + :button-prefix 'widget-link-prefix + :button-suffix 'widget-link-suffix :help-echo "Follow the link." - :format "%[_%t_%]") + :format "%[%t%]") ;;; The `info-link' Widget. @@ -1756,6 +1840,8 @@ (define-widget 'checkbox 'toggle "A checkbox toggle." + :button-suffix "" + :button-prefix "" :format "%[%v%]" :on "[X]" :on-glyph "check1" @@ -1940,6 +2026,8 @@ "A radio button for use in the `radio' widget." :notify 'widget-radio-button-notify :format "%[%v%]" + :button-suffix "" + :button-prefix "" :on "(*)" :on-glyph "radio1" :off "( )" @@ -2376,7 +2464,7 @@ (define-widget 'widget-help 'push-button "The widget documentation button." - :format "%[[%t]%] %d" + :format "%[%t%] %d" :help-echo "Toggle display of documentation." :action 'widget-help-action)
--- a/lisp/custom/widget-example.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/custom/widget-example.el Mon Aug 13 09:38:25 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: help, extensions, faces, hypermedia -;; Version: 1.97 +;; Version: 1.98 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ (require 'widget)
--- a/lisp/custom/widget.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/custom/widget.el Mon Aug 13 09:38:25 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: help, extensions, faces, hypermedia -;; Version: 1.97 +;; Version: 1.98 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;; This file is part of GNU Emacs. @@ -44,10 +44,10 @@ (set (car keywords) (car keywords))) (setq keywords (cdr keywords))))))) -(define-widget-keywords :mouse-down-action :glyph-up :glyph-down - :glyph-inactive +(define-widget-keywords :button-prefix :button-suffix + :mouse-down-action :glyph-up :glyph-down :glyph-inactive :prompt-internal :prompt-history :prompt-match - :prompt-value :text-format :deactivate :active + :prompt-value :deactivate :active :inactive :activate :sibling-args :delete-button-args :insert-button-args :append-button-args :button-args :tag-glyph :off-glyph :on-glyph :valid-regexp
--- a/lisp/egg/egg-wnn.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/egg/egg-wnn.el Mon Aug 13 09:38:25 2007 +0200 @@ -876,17 +876,18 @@ (if egg:*henkan-face* (progn (if (extentp egg:*henkan-extent*) - nil - ;; ###jhod this was a 'point-type' overlay - (setq egg:*henkan-extent* (make-extent 1 1)) - (set-extent-property egg:*henkan-extent* 'face egg:*henkan-face*)) - (set-extent-endpoints egg:*henkan-extent* egg:*region-start* egg:*region-end*)))) + (set-extent-endpoints egg:*henkan-extent* egg:*region-start* egg:*region-end*) + (setq egg:*henkan-extent* (make-extent egg:*region-start* egg:*region-end*)) + (set-extent-property egg:*henkan-extent* 'start-open nil) + (set-extent-property egg:*henkan-extent* 'end-open nil) + (set-extent-property egg:*henkan-extent* 'detachable nil)) + (set-extent-face egg:*henkan-extent* egg:*henkan-face*)))) (defun egg:henkan-face-off () ;; detach henkan extent from the current buffer. (and egg:*henkan-face* (extentp egg:*henkan-extent*) - (delete-extent egg:*henkan-extent*) )) + (detach-extent egg:*henkan-extent*) )) (defun henkan-region (start end)
--- a/lisp/egg/egg.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/egg/egg.el Mon Aug 13 09:38:25 2007 +0200 @@ -2552,10 +2552,12 @@ (if egg:*fence-face* (progn (if (extentp egg:*fence-extent*) - nil - (setq egg:*fence-extent* (make-extent 1 1 nil t)) - (if egg:*fence-face* (set-extent-property egg:*fence-extent* 'face egg:*fence-face*))) - (set-extent-endpoints egg:*fence-extent* egg:*region-start* egg:*region-end* ) ))) + (set-extent-endpoints egg:*fence-extent* egg:*region-start* egg:*region-end*) + (setq egg:*fence-extent* (make-extent egg:*region-start* egg:*region-end*)) + (set-extent-property egg:*fence-extent* 'start-open nil) + (set-extent-property egg:*fence-extent* 'end-open nil) + (set-extent-property egg:*fence-extent* 'detachable nil)) + (set-extent-face egg:*fence-extent* egg:*fence-face*)))) (defun egg:fence-face-off () (and egg:*fence-face*
--- a/lisp/emulators/mlconvert.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,290 +0,0 @@ -;;; mlconvert.el --- convert buffer of Mocklisp code to real lisp. - -;; Copyright (C) 1985 Free Software Foundation, Inc. - -;; Maintainer: FSF -;; Keywords: emulations - -;; 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: FSF 19.34 - -;;; Commentary: - -;; This package converts Mocklisp code written under a Gosling or UniPress -;; Emacs for use with GNU Emacs. The translated code will require runtime -;; support from the mlsupport.el equivalent. - -;;; Code: - -;;;###autoload -(defun convert-mocklisp-buffer () - "Convert buffer of Mocklisp code to real Lisp that GNU Emacs can run." - (interactive) - (emacs-lisp-mode) - (set-syntax-table (copy-sequence (syntax-table))) - (modify-syntax-entry ?\| "w") - (message "Converting mocklisp (ugh!)...") - (goto-char (point-min)) - (fix-mlisp-syntax) - - ;; Emulation of mocklisp is accurate only within a mocklisp-function - ;; so turn any non-function into a defun and then call it. - (goto-char (point-min)) - (condition-case ignore - (while t - (let ((opt (point)) - (form (read (current-buffer)))) - (and (listp form) - (not (eq (car form) 'defun)) - (progn (insert "))\n\n(ml-foo)\n\n") - (save-excursion - (goto-char opt) - (skip-chars-forward "\n") - (insert "(defun (ml-foo \n ")))))) - (end-of-file nil)) - - (goto-char (point-min)) - (insert ";;; GNU Emacs code converted from Mocklisp\n") - (insert "(require 'mlsupport)\n\n") - (fix-mlisp-symbols) - - (goto-char (point-min)) - (message "Converting mocklisp...done")) - -(defun fix-mlisp-syntax () - (while (re-search-forward "['\"]" nil t) - (if (= (preceding-char) ?\") - (progn (forward-char -1) - (forward-sexp 1)) - (delete-char -1) - (insert "?") - (if (or (= (following-char) ?\\) (= (following-char) ?^)) - (forward-char 1) - (if (looking-at "[^a-zA-Z]") - (insert ?\\))) - (forward-char 1) - (delete-char 1)))) - -(defun fix-mlisp-symbols () - (while (progn - (skip-chars-forward " \t\n()") - (not (eobp))) - (cond ((or (= (following-char) ?\?) - (= (following-char) ?\")) - (forward-sexp 1)) - ((= (following-char) ?\;) - (forward-line 1)) - (t - (let ((start (point)) prop) - (forward-sexp 1) - (setq prop (get (intern-soft (buffer-substring start (point))) - 'mocklisp)) - (cond ((null prop)) - ((stringp prop) - (delete-region start (point)) - (insert prop)) - (t - (save-excursion - (goto-char start) - (funcall prop))))))))) - -(defun ml-expansion (ml-name lisp-string) - (put ml-name 'mocklisp lisp-string)) - -(ml-expansion 'defun "ml-defun") -(ml-expansion 'if "ml-if") -(ml-expansion 'setq '(lambda () - (if (looking-at "setq[ \t\n]+buffer-modified-p") - (replace-match "set-buffer-modified-p")))) - -;;(ml-expansion 'while '(lambda () -;; (let ((end (progn (forward-sexp 2) (point-marker))) -;; (start (progn (forward-sexp -1) (point)))) -;; (let ((cond (buffer-substring start end))) -;; (cond ((equal cond "1") -;; (delete-region (point) end) -;; (insert "t")) -;; (t -;; (insert "(not (zerop ") -;; (goto-char end) -;; (insert "))"))) -;; (set-marker end nil) -;; (goto-char start))))) - -(ml-expansion 'arg "ml-arg") -(ml-expansion 'nargs "ml-nargs") -(ml-expansion 'interactive "ml-interactive") -(ml-expansion 'message "ml-message") -(ml-expansion 'print "ml-print") -(ml-expansion 'set "ml-set") -(ml-expansion 'set-default "ml-set-default") -(ml-expansion 'provide-prefix-argument "ml-provide-prefix-argument") -(ml-expansion 'prefix-argument-loop "ml-prefix-argument-loop") -(ml-expansion 'prefix-argument "ml-prefix-arg") -(ml-expansion 'use-local-map "ml-use-local-map") -(ml-expansion 'use-global-map "ml-use-global-map") -(ml-expansion 'modify-syntax-entry "ml-modify-syntax-entry") -(ml-expansion 'error-message "error") - -(ml-expansion 'dot "point-marker") -(ml-expansion 'mark "mark-marker") -(ml-expansion 'beginning-of-file "beginning-of-buffer") -(ml-expansion 'end-of-file "end-of-buffer") -(ml-expansion 'exchange-dot-and-mark "exchange-point-and-mark") -(ml-expansion 'set-mark "set-mark-command") -(ml-expansion 'argument-prefix "universal-arg") - -(ml-expansion 'previous-page "ml-previous-page") -(ml-expansion 'next-page "ml-next-page") -(ml-expansion 'next-window "ml-next-window") -(ml-expansion 'previous-window "ml-previous-window") - -(ml-expansion 'newline "ml-newline") -(ml-expansion 'next-line "ml-next-line") -(ml-expansion 'previous-line "ml-previous-line") -(ml-expansion 'self-insert "self-insert-command") -(ml-expansion 'meta-digit "digit-argument") -(ml-expansion 'meta-minus "negative-argument") - -(ml-expansion 'newline-and-indent "ml-newline-and-indent") -(ml-expansion 'yank-from-killbuffer "yank") -(ml-expansion 'yank-buffer "insert-buffer") -(ml-expansion 'copy-region "copy-region-as-kill") -(ml-expansion 'delete-white-space "delete-horizontal-space") -(ml-expansion 'widen-region "widen") - -(ml-expansion 'forward-word '(lambda () - (if (looking-at "forward-word[ \t\n]*)") - (replace-match "forward-word 1)")))) -(ml-expansion 'backward-word '(lambda () - (if (looking-at "backward-word[ \t\n]*)") - (replace-match "backward-word 1)")))) - -(ml-expansion 'forward-paren "forward-list") -(ml-expansion 'backward-paren "backward-list") -(ml-expansion 'search-reverse "ml-search-backward") -(ml-expansion 're-search-reverse "ml-re-search-backward") -(ml-expansion 'search-forward "ml-search-forward") -(ml-expansion 're-search-forward "ml-re-search-forward") -(ml-expansion 'quote "regexp-quote") -(ml-expansion 're-query-replace "query-replace-regexp") -(ml-expansion 're-replace-string "replace-regexp") - -; forward-paren-bl, backward-paren-bl - -(ml-expansion 'get-tty-character "read-char") -(ml-expansion 'get-tty-input "read-input") -(ml-expansion 'get-tty-string "read-string") -(ml-expansion 'get-tty-buffer "read-buffer") -(ml-expansion 'get-tty-command "read-command") -(ml-expansion 'get-tty-variable "read-variable") -(ml-expansion 'get-tty-no-blanks-input "read-no-blanks-input") -(ml-expansion 'get-tty-key "read-key") - -(ml-expansion 'concat "ml-concat") -(ml-expansion 'c= "char-equal") -(ml-expansion 'goto-character "goto-char") -(ml-expansion 'substr "ml-substr") -(ml-expansion 'variable-apropos "apropos") -(ml-expansion 'execute-mlisp-buffer "eval-current-buffer") -(ml-expansion 'execute-mlisp-file "load") -(ml-expansion 'visit-file "find-file") -(ml-expansion 'read-file "find-file") -(ml-expansion 'write-modified-files "save-some-buffers") -(ml-expansion 'backup-before-writing "make-backup-files") -(ml-expansion 'write-file-exit "save-buffers-kill-emacs") -(ml-expansion 'write-named-file "write-file") -(ml-expansion 'change-file-name "set-visited-file-name") -(ml-expansion 'change-buffer-name "rename-buffer") -(ml-expansion 'buffer-exists "get-buffer") -(ml-expansion 'delete-buffer "kill-buffer") -(ml-expansion 'unlink-file "delete-file") -(ml-expansion 'unlink-checkpoint-files "delete-auto-save-files") -(ml-expansion 'file-exists "file-exists-p") -(ml-expansion 'write-current-file "save-buffer") -(ml-expansion 'change-directory "cd") -(ml-expansion 'temp-use-buffer "set-buffer") -(ml-expansion 'fast-filter-region "filter-region") - -(ml-expansion 'pending-input "input-pending-p") -(ml-expansion 'execute-keyboard-macro "call-last-kbd-macro") -(ml-expansion 'start-remembering "start-kbd-macro") -(ml-expansion 'end-remembering "end-kbd-macro") -(ml-expansion 'define-keyboard-macro "name-last-kbd-macro") -(ml-expansion 'define-string-macro "ml-define-string-macro") - -(ml-expansion 'current-column "ml-current-column") -(ml-expansion 'current-indent "ml-current-indent") -(ml-expansion 'insert-character "insert") - -(ml-expansion 'users-login-name "user-login-name") -(ml-expansion 'users-full-name "user-full-name") -(ml-expansion 'current-time "current-time-string") -(ml-expansion 'current-numeric-time "current-numeric-time-you-lose") -(ml-expansion 'current-buffer-name "buffer-name") -(ml-expansion 'current-file-name "buffer-file-name") - -(ml-expansion 'local-binding-of "local-key-binding") -(ml-expansion 'global-binding-of "global-key-binding") - -;defproc (ProcedureType, "procedure-type"); - -(ml-expansion 'remove-key-binding "global-unset-key") -(ml-expansion 'remove-binding "global-unset-key") -(ml-expansion 'remove-local-binding "local-unset-key") -(ml-expansion 'remove-all-local-bindings "use-local-map nil") -(ml-expansion 'autoload "ml-autoload") - -(ml-expansion 'checkpoint-frequency "auto-save-interval") - -(ml-expansion 'mode-string "mode-name") -(ml-expansion 'right-margin "fill-column") -(ml-expansion 'tab-size "tab-width") -(ml-expansion 'default-right-margin "default-fill-column") -(ml-expansion 'default-tab-size "default-tab-width") -(ml-expansion 'buffer-is-modified "(buffer-modified-p)") - -(ml-expansion 'file-modified-time "you-lose-on-file-modified-time") -(ml-expansion 'needs-checkpointing "you-lose-on-needs-checkpointing") - -(ml-expansion 'lines-on-screen "set-screen-height") -(ml-expansion 'columns-on-screen "set-screen-width") - -(ml-expansion 'dumped-emacs "t") - -(ml-expansion 'buffer-size "ml-buffer-size") -(ml-expansion 'dot-is-visible "pos-visible-in-window-p") - -(ml-expansion 'track-eol-on-^N-^P "track-eol") -(ml-expansion 'ctlchar-with-^ "ctl-arrow") -(ml-expansion 'help-on-command-completion-error "completion-auto-help") -(ml-expansion 'dump-stack-trace "backtrace") -(ml-expansion 'pause-emacs "suspend-emacs") -(ml-expansion 'compile-it "compile") - -(ml-expansion '!= "/=") -(ml-expansion '& "logand") -(ml-expansion '| "logior") -(ml-expansion '^ "logxor") -(ml-expansion '! "ml-not") -(ml-expansion '<< "lsh") - -;Variable pause-writes-files - -;;; mlconvert.el ends here
--- a/lisp/emulators/mlsupport.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,530 +0,0 @@ -;;; mlsupport.el --- run-time support for mocklisp code. - -;; Copyright (C) 1985 Free Software Foundation, Inc. - -;; Maintainer: FSF -;; Keywords: extensions - -;; 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: FSF 19.34. - -;;; Commentary: - -;; This package provides equivalents of certain primitives from Gosling -;; Emacs (including the commercial UniPress versions). These have an -;; ml- prefix to distinguish them from native GNU Emacs functions with -;; similar names. The package mlconvert.el translates Mocklisp code -;; to use these names. - -;;; Code: - -(or (fboundp 'ml-prefix-argument-loop) - (error "emacs was not compiled with #define MOCKLISP_SUPPORT in config.h")) - -(defmacro ml-defun (&rest defs) - (list 'ml-defun-1 (list 'quote defs))) - -(defun ml-defun-1 (args) - (while args - (fset (car (car args)) (cons 'mocklisp (cdr (car args)))) - (setq args (cdr args)))) - -(defmacro declare-buffer-specific (&rest vars) - (cons 'progn - (mapcar (function (lambda (var) - (list 'make-variable-buffer-local (list 'quote var)))) - vars))) - -(defun ml-set-default (varname value) - (set-default (intern varname) value)) - -; Lossage: must make various things default missing args to the prefix arg -; Alternatively, must make provide-prefix-argument do something hairy. - -(defun >> (val count) - (lsh val (- count))) -(defun novalue () - nil) - -(defun ml-not (arg) - (if (zerop arg) 1 0)) - -(defun provide-prefix-arg (arg form) - (funcall (car form) arg)) - -(defun define-keymap (name) - (fset (intern name) (make-keymap))) - -;; Make it work to use ml-use-...-map on "esc" and such. -(fset 'esc-map esc-map) -(fset 'ctl-x-map ctl-x-map) - -(defun ml-use-local-map (name) - (use-local-map (intern (concat name "-map")))) - -(defun ml-use-global-map (name) - (use-global-map (intern (concat name "-map")))) - -(defun local-bind-to-key (name key) - (or (current-local-map) - (use-local-map (make-keymap))) - (define-key (current-local-map) - (if (integerp key) - (if (>= key 128) - (concat (char-to-string meta-prefix-char) - (char-to-string (- key 128))) - (char-to-string key)) - key) - (intern name))) - -(defun bind-to-key (name key) - (define-key global-map (if (integerp key) (char-to-string key) key) - (intern name))) - -(defun ml-autoload (name file) - (autoload (intern name) file)) - -(defun ml-define-string-macro (name defn) - (fset (intern name) defn)) - -(defun push-back-character (char) - (setq unread-command-event (character-to-event char))) - -(defun to-col (column) - (indent-to column 0)) - -(defmacro is-bound (&rest syms) - (cons 'and (mapcar (function (lambda (sym) (list 'boundp (list 'quote sym)))) syms))) - -(defmacro declare-global (&rest syms) - (cons 'progn (mapcar (function (lambda (sym) (list 'defvar sym nil))) syms))) - -(defmacro error-occurred (&rest body) - (list 'condition-case nil (cons 'progn (append body '(nil))) '(error t))) - -(defun return-prefix-argument (value) - (setq prefix-arg value)) - -(defun ml-prefix-argument () - (cond ((null current-prefix-arg) - 1) - ((listp current-prefix-arg) - (car current-prefix-arg)) - ((eq current-prefix-arg '-) - -1) - (t - current-prefix-arg))) - -(defun ml-print (varname) - (interactive "vPrint variable: ") - (if (boundp varname) - (message "%s => %s" (symbol-name varname) (symbol-value varname)) - (message "%s has no value" (symbol-name varname)))) - -(defun ml-set (str val) (set (intern str) val)) - -(defun ml-message (&rest args) (message "%s" (apply 'concat args))) - -(defun kill-to-end-of-line () - (ml-prefix-argument-loop - (if (eolp) - (kill-region (point) (1+ (point))) - (kill-region (point) (if (search-forward ?\n nil t) - (1- (point)) (point-max)))))) - -(defun set-auto-fill-hook (arg) - (setq auto-fill-function (intern arg))) - -(defun auto-execute (function pattern) - (if (/= (aref pattern 0) ?*) - (error "Only patterns starting with * supported in auto-execute")) - (setq auto-mode-alist (cons (cons (concat "\\." (substring pattern 1) - "\\'") - function) - auto-mode-alist))) - -(defun move-to-comment-column () - (indent-to comment-column)) - -(defun erase-region () - (delete-region (point) (mark))) - -(defun delete-region-to-buffer (bufname) - (copy-to-buffer bufname (point) (mark)) - (delete-region (point) (mark))) - -(defun copy-region-to-buffer (bufname) - (copy-to-buffer bufname (point) (mark))) - -(defun append-region-to-buffer (bufname) - (append-to-buffer bufname (point) (mark))) - -(defun prepend-region-to-buffer (bufname) - (prepend-to-buffer bufname (point) (mark))) - -(defun delete-next-character () - (delete-char (ml-prefix-argument))) - -(defun delete-next-word () - (delete-region (point) - (progn (forward-word (ml-prefix-argument)) (point)))) - -(defun delete-previous-word () - (delete-region (point) - (progn (backward-word (ml-prefix-argument)) (point)))) - -(defun delete-previous-character () - (delete-backward-char (ml-prefix-argument))) - -(defun forward-character () - (forward-char (ml-prefix-argument))) - -(defun backward-character () - (backward-char (ml-prefix-argument))) - -(defun ml-newline () - (newline (ml-prefix-argument))) - -(defun ml-next-line () - (next-line (ml-prefix-argument))) - -(defun ml-previous-line () - (previous-line (ml-prefix-argument))) - -(defun delete-to-kill-buffer () - (kill-region (point) (mark))) - -(defun narrow-region () - (narrow-to-region (point) (mark))) - -(defun ml-newline-and-indent () - (let ((column (current-indentation))) - (newline (ml-prefix-argument)) - (indent-to column))) - -(defun newline-and-backup () - (open-line (ml-prefix-argument))) - -(defun quote-char () - (quoted-insert (ml-prefix-argument))) - -(defun ml-current-column () - (1+ (current-column))) - -(defun ml-current-indent () - (1+ (current-indentation))) - -(defun region-around-match (&optional n) - (set-mark (match-beginning n)) - (goto-char (match-end n))) - -(defun region-to-string () - (buffer-substring (min (point) (mark)) (max (point) (mark)))) - -(defun use-abbrev-table (name) - (let ((symbol (intern (concat name "-abbrev-table")))) - (or (boundp symbol) - (define-abbrev-table symbol nil)) - (symbol-value symbol))) - -;; XEmacs -(defun define-hooked-local-abbrev (name exp hook) - (define-abbrev (or local-abbrev-table - (error "Major mode has no abbrev table")) - (downcase name) - exp (intern hook))) - -;; XEmacs -(defun define-hooked-global-abbrev (name exp hook) - (define-abbrev global-abbrev-table (downcase name) - exp (intern hook))) - -(defun case-word-lower () - (ml-casify-word 'downcase-region)) - -(defun case-word-upper () - (ml-casify-word 'upcase-region)) - -(defun case-word-capitalize () - (ml-casify-word 'capitalize-region)) - -(defun ml-casify-word (fun) - (save-excursion - (forward-char 1) - (forward-word -1) - (funcall fun (point) - (progn (forward-word (ml-prefix-argument)) - (point))))) - -(defun case-region-lower () - (downcase-region (point) (mark))) - -(defun case-region-upper () - (upcase-region (point) (mark))) - -(defun case-region-capitalize () - (capitalize-region (point) (mark))) - -(defvar saved-command-line-args nil) - -(defun argc () - (or saved-command-line-args - (setq saved-command-line-args command-line-args - command-line-args ())) - (length command-line-args)) - -(defun argv (i) - (or saved-command-line-args - (setq saved-command-line-args command-line-args - command-line-args ())) - (nth i saved-command-line-args)) - -(defun invisible-argc () - (length (or saved-command-line-args - command-line-args))) - -(defun invisible-argv (i) - (nth i (or saved-command-line-args - command-line-args))) - -(defun exit-emacs () - (interactive) - (condition-case () - (exit-recursive-edit) - (error (kill-emacs)))) - -;; Lisp function buffer-size returns total including invisible; -;; mocklisp wants just visible. -(defun ml-buffer-size () - (- (point-max) (point-min))) - -(defun previous-command () - last-command) - -(defun beginning-of-window () - (goto-char (window-start))) - -(defun end-of-window () - (goto-char (window-start)) - (vertical-motion (- (window-height) 2))) - -(defun ml-search-forward (string) - (search-forward string nil nil (ml-prefix-argument))) - -(defun ml-re-search-forward (string) - (re-search-forward string nil nil (ml-prefix-argument))) - -(defun ml-search-backward (string) - (search-backward string nil nil (ml-prefix-argument))) - -(defun ml-re-search-backward (string) - (re-search-backward string nil nil (ml-prefix-argument))) - -(defvar use-users-shell 1 - "Mocklisp compatibility variable; 1 means use shell from SHELL env var. -0 means use /bin/sh.") - -(defvar use-csh-option-f 1 - "Mocklisp compatibility variable; 1 means pass -f when calling csh.") - -;; XEmacs (FSF bugfix? -sb) -(defun filter-region (command) - (let* ((shell (if (/= use-users-shell 0) shell-file-name "/bin/sh")) - (csh (equal (file-name-nondirectory shell) "csh"))) - (call-process-region (point) (mark) shell t t nil - (if (and csh use-csh-option-f) "-cf" "-c") - (concat "exec " command)))) - -;; XEmacs (FSF bugfix? -sb) -(defun execute-monitor-command (command) - (let* ((shell (if (/= use-users-shell 0) shell-file-name "/bin/sh")) - (csh (equal (file-name-nondirectory shell) "csh"))) - (call-process shell nil t t - (if (and csh use-csh-option-f) "-cf" "-c") - (concat "exec " command)))) - -(defun use-syntax-table (name) - (set-syntax-table (symbol-value (intern (concat name "-syntax-table"))))) - -(defun line-to-top-of-window () - (recenter (1- (ml-prefix-argument)))) - -(defun ml-previous-page (&optional arg) - (let ((count (or arg (ml-prefix-argument)))) - (while (> count 0) - (scroll-down nil) - (setq count (1- count))) - (while (< count 0) - (scroll-up nil) - (setq count (1+ count))))) - -(defun ml-next-page () - (ml-previous-page (- (ml-prefix-argument)))) - -(defun page-next-window (&optional arg) - (let ((count (or arg (ml-prefix-argument)))) - (while (> count 0) - (scroll-other-window nil) - (setq count (1- count))) - (while (< count 0) - (scroll-other-window '-) - (setq count (1+ count))))) - -(defun ml-next-window () - (select-window (next-window))) - -(defun ml-previous-window () - (select-window (previous-window))) - -(defun scroll-one-line-up () - (scroll-up (ml-prefix-argument))) - -(defun scroll-one-line-down () - (scroll-down (ml-prefix-argument))) - -(defun split-current-window () - (split-window (selected-window))) - -(defun last-key-struck () last-command-char) - -(defun execute-mlisp-line (string) - (eval (read string))) - -(defun move-dot-to-x-y (x y) - (goto-char (window-start (selected-window))) - (vertical-motion (1- y)) - (move-to-column (1- x))) - -(defun ml-modify-syntax-entry (string) - (let ((i 5) - (len (length string)) - (datastring (substring string 0 2))) - (if (= (aref string 0) ?\-) - (aset datastring 0 ?\ )) - (if (= (aref string 2) ?\{) - (if (= (aref string 4) ?\ ) - (aset datastring 0 ?\<) - (error "Two-char comment delimiter: use modify-syntax-entry directly"))) - (if (= (aref string 3) ?\}) - (if (= (aref string 4) ?\ ) - (aset datastring 0 ?\>) - (error "Two-char comment delimiter: use modify-syntax-entry directly"))) - (while (< i len) - (modify-syntax-entry (aref string i) datastring) - (setq i (1+ i)) - (if (and (< i len) - (= (aref string i) ?\-)) - (let ((c (aref string (1- i))) - (lim (aref string (1+ i)))) - (while (<= c lim) - (modify-syntax-entry c datastring) - (setq c (1+ c))) - (setq i (+ 2 i))))))) - - - -(defun ml-substr (string from to) - (let ((length (length string))) - (if (< from 0) (setq from (+ from length))) - (if (< to 0) (setq to (+ to length))) - (substring string from (+ from to)))) - -;; XEmacs -(defun ml-nargs () - "Number of arguments to currently executing mocklisp function." - (if (eq mocklisp-arguments 'interactive) - 0 - (length mocklisp-arguments))) - -(defun ml-arg (n prompt) - "Argument number N to currently executing mocklisp function." - (if (eq mocklisp-arguments 'interactive) - (read-from-minibuffer prompt) - ;; Mocklisp likes to be origin 1 - (elt mocklisp-arguments (1- n)))) - -(defun ml-interactive () - "True if currently executing mocklisp function was called interactively." - (eq mocklisp-arguments 'interactive)) - -;; Now in subr.el, because too many loser call it. -;(defun insert-string (&rest args) -; "Mocklisp-compatibility insert function. -;Like the function `insert' except that any argument that is a number -;is converted into a string by expressing it in decimal. (Yuck!!)" -; (while args -; (let ((arg (car args))) -; (if (integerp arg) -; (insert (number-to-string arg)) -; (insert arg)) -; (setq args (cdr args))))) - -(defun ml-concat (&rest args) - (let ((newargs nil) this) - (while args - (setq this (car args)) - (if (numberp this) - (setq this (number-to-string this))) - (setq newargs (cons this newargs) - args (cdr args))) - (apply 'concat (nreverse newargs)))) - - -;;; Lose, please. None of these should be used in non-automatically-converted -;;; code, so issue compilation warnings in case someone is using them because -;;; they don't know any better. - -(make-obsolete 'read-no-blanks-input 'read-string) -(make-obsolete 'declare-buffer-specific 'make-variable-buffer-local) -(make-obsolete '>> 'lsh) -(make-obsolete 'novalue 'ignore) -(make-obsolete 'define-keymap "use (fset 'symbol (make-keymap))") -(make-obsolete 'local-bind-to-key 'local-set-key) -(make-obsolete 'bind-to-key 'global-set-key) -(make-obsolete 'to-col 'indent-to) -(make-obsolete 'is-bound 'boundp) -(make-obsolete 'declare-global 'defvar) -(make-obsolete 'error-occurred 'condition-case) -(make-obsolete 'set-auto-fill-hook "set variable auto-fill-function instead") -(make-obsolete 'auto-execute "set variable auto-mode-alist instead") -(make-obsolete 'move-to-comment-column "use (indent-to comment-column)") -(make-obsolete 'erase-region 'delete-region) -(make-obsolete 'delete-region-to-buffer "use copy-to-buffer and delete-region") -(make-obsolete 'copy-region-to-buffer 'copy-to-buffer) -(make-obsolete 'append-region-to-buffer 'append-to-buffer) -(make-obsolete 'prepend-region-to-buffer 'prepend-to-buffer) -(make-obsolete 'delete-next-character 'delete-char) -(make-obsolete 'forward-character 'forward-char) -(make-obsolete 'backward-character 'backward-char) -(make-obsolete 'delete-to-kill-buffer 'kill-region) -(make-obsolete 'narrow-region 'narrow-to-region) -(make-obsolete 'newline-and-backup 'open-line) -(make-obsolete 'quote-char 'quoted-insert) -(make-obsolete 'region-to-string 'buffer-substring) -(make-obsolete 'define-hooked-local-abbrev 'define-abbrev) -(make-obsolete 'define-hooked-global-abbrev 'define-abbrev) -(make-obsolete 'filter-region 'call-process-region) -(make-obsolete 'execute-monitor-command 'call-process) -(make-obsolete 'use-syntax-table 'set-syntax-table) -(make-obsolete 'line-to-top-of-window 'recenter) -(make-obsolete 'insert-string 'insert) - -(provide 'mlsupport) - -;;; mlsupport.el ends here
--- a/lisp/energize/backtrace-logging.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,178 +0,0 @@ -;;; -*- Mode: EMACS-LISP; Syntax: E-Lisp; Base: 10 -*- -;;; -;;;; backtrace-logging.el -;;; -;;; User code for interacting with backtrace logging. -;;; -;;; *************************************************************************** -;;; -;;; Revision: 29-Jan-92 12:14:49 -;;; -;;; Programmer: Harlan Sexton -;;; -;;; Edit-History: -;;; -;;; Created: 30-Aug-91 by hbs -;;; -;;; End-of-Edit-History - -(defvar *btl-index-counter* 1) -(defvar *btl-data-file* nil) -(defvar *btl-indices-assigned* nil) -(defvar elisp-only-btl nil) -(defvar cadillac-id-tag-save 'cadillac-id-tag-save) - -(defun assign-btl-indices (&optional force) - (if (or force - (not *btl-indices-assigned*)) - (progn - (mapatoms 'assign-btl-index) - (setq *btl-indices-assigned* t)))) - -(defun btl-compiled-p (function) - (or (subrp function) - (compiled-function-p function) - (and (consp function) - (eq (car function) 'lambda) - (let ((rest (cdr (cdr function))) - (quit nil)) - (while (and rest (not quit)) - (let ((trial (car rest))) - (if (consp trial) - (setq quit (eq (car trial) 'byte-code))) - (setq rest (cdr rest)))) - quit)))) - -(defun get-btl-index (symbol) - (if (symbolp symbol) - (let ((val (or (get symbol cadillac-id-tag) - (get symbol 'cadillac-id-tag-save)))) - (if (and val (integerp val) (> val 0)) - val - (progn - (setq val *btl-index-counter*) - (setq *btl-index-counter* (1+ *btl-index-counter*)) - val))))) - -(defun disable-btl-index (symbol) - (if (symbolp symbol) - (let ((val (or (get symbol cadillac-id-tag) - (get symbol 'cadillac-id-tag-save)))) - (if (and val (integerp val) (> val 0)) - (put symbol 'cadillac-id-tag-save val)) - (remprop symbol cadillac-id-tag)))) - -(defun assign-btl-index (symbol) - (if (and (symbolp symbol) - (fboundp symbol)) - (let* ((function (symbol-function symbol)) - (subr-function (subrp function)) - (compiled-function (btl-compiled-p function)) - (tagged-function (get symbol cadillac-id-tag))) - (cond ((and elisp-only-btl compiled-function (not tagged-function)) - (put symbol cadillac-id-tag (get-btl-index symbol))) - ((and (not elisp-only-btl) subr-function tagged-function) - (disable-btl-index symbol)))))) - -(defun file-to-btl-data-file (file) - (let ((base-dir (expand-file-name ""))) - (if (string-equal base-dir file) - (setq file nil))) - (setq file (or file *btl-data-file*)) - (let ((go-ahead nil)) - (if (or (not (stringp file)) - (file-directory-p file)) - (setq go-ahead nil) - (if (file-exists-p file) - (setq go-ahead - (y-or-n-p (message "File exists -- overwrite %s? " - file))) - (setq go-ahead t))) - (if (not go-ahead) - (error "Bad data file."))) - file) - -(defun btl-init (file &optional pc-logging) - (setq file (file-to-btl-data-file file)) - (let ((log-type (if pc-logging "PC logging" "btl"))) - (message "Initializing %s..." log-type) - (sit-for 0) - (assign-btl-indices t) - (setq *btl-data-file* file) - (if pc-logging - (initialize-pc-logging-internal file) - (initialize-backtrace-logging-internal file)) - (message "Initializing %s...done." log-type) - (sit-for 1) - (message "") - (sit-for 0))) - -(defun start-btl (file &optional elisp-flag-val) - (interactive "FFile in which to write data: ") - (terminate-logging) - (setq elisp-only-btl elisp-flag-val) - (btl-init file) - (start-logging)) - -(defun start-btl-elisp (file) - (interactive "FFile in which to write data: ") - (start-btl file t)) - -(defun consing-btl (file &optional elisp-flag-val) - (interactive "FFile in which to write data: ") - (terminate-logging) - (setq elisp-only-btl elisp-flag-val) - (set-log-signal 0) - (btl-init file) - (start-logging)) - -(defun consing-btl-elisp (file) - (interactive "FFile in which to write data: ") - (consing-btl file t)) - -(defun set-elisp-btl (arg) - (interactive "p") - (setq elisp-only-btl (eql arg 1))) - -(defun start-pcl (file &optional elisp-flag-val) - (interactive "FFile in which to write data: ") - (setq elisp-only-btl elisp-flag-val) - (btl-init file t) - (start-logging)) - -(defun start-pcl-elisp (file) - (interactive "FFile in which to write data: ") - (start-pcl file t)) - -(defun suspend-btl () - (interactive) - (stop-logging)) - -(defun suspend-pcl () - (interactive) - (stop-logging)) - -(defun resume-btl () - (interactive) - (start-logging)) - -(defun resume-pcl () - (interactive) - (start-logging)) - -(defun stop-btl () - (interactive) - (terminate-logging)) - -(defun stop-pcl () - (interactive) - (terminate-logging)) - -(defun show-btl () - (interactive) - (terminate-logging) - (switch-to-buffer (get-buffer-create "*BTL Log Info*")) - (goto-char (point-max)) - (buffer-disable-undo (current-buffer)) - (if *btl-data-file* - (summarize-logging *btl-data-file*)))
--- a/lisp/energize/energize-advice.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,126 +0,0 @@ -;;; -*- Mode:Emacs-Lisp -*- -;;; Copyright (c) 1991, 1992, 1993, 1994 by Lucid, Inc. All Rights Reserved. - -;;; This file contains the definitions of existing functions which Energize -;;; must encapsulate. (The number of such functions should be minimized.) - - -;;; This is greatly complicated by the fact that both the old functions -;;; and the new functions are dumped. The only method I've found that -;;; works and doesn't have obscure bootstrapping/feedback problems is -;;; to RELOAD the original definition of the function we are advising -;;; at compile time so that we can extract its original docstring, and -;;; emit a modified version of that to the .elc version of this file. - - -(eval-when-compile ; this only works at compile-time anyway... - - (or noninteractive - (error "bad idea to compile this file in a non-batch-mode emacs!")) - - (load-library "advice") - (fset 'ad-make-freeze-docstring 'ad-make-plain-docstring) - - (load-library "files.el") - (load-library "userlock.el") - (load-library "compile.el") - (load-library "gdb.el") - -) ;closes eval-when-compile - - -;;; The actual definitions - -(defadvice ask-user-about-lock (around energize freeze) - "Energize buffers do this by asking the server." - (if (energize-buffer-p (current-buffer)) - (setq ad-return-value t) ; note: return value matters - ad-do-it)) - -(defadvice normal-mode (after energize freeze) - "If this is an Energize buffer, the Energize modes are turned on as well." - (if (and (energize-buffer-p (current-buffer)) - (not inside-energize-buffer-creation-hook-function)) - (funcall energize-create-buffer-hook (current-buffer)))) - -(defadvice find-file-noselect (around energize freeze) - "This function has been encapsulated to work with Energize." - (if (and (connected-to-energize-p) - (not (file-directory-p (ad-get-arg 0))) - (energize-query-buffer (ad-get-arg 0) t)) - ;; after-find-file and abbreviate-file-name are called from - ;; energize-buffer-creation-hook-function, which is run from - ;; editorside.c (way down under energize-query-buffer). - ;; This is a mess... - (setq ad-return-value ; note: return value matters - (energize-query-buffer (ad-get-arg 0))) - ;; else - ad-do-it)) - -(defadvice write-file (around energize freeze) - "When executed on an Energize buffer, this will cause all -annotations to be lost (that is, the buffer will become a -normal buffer, not one that the Energize server knows about.)" - (if (not (energize-write-file-buffer-p)) - ad-do-it - ;; else... - (let ((filename (ad-get-arg 0))) - (if (and (file-exists-p filename) - (not - (yes-or-no-p (format "File %s already exists. Overwrite it? " - filename)))) - (error "Aborted")) - (write-region (point-min) (point-max) filename nil nil) - (if buffer-file-name - (revert-buffer t t)) ; revert this buffer from the Energize server - (kill-buffer nil) ; kill the current buffer, to lose Energize properties - (set-window-buffer ; and now visit the "new" file, and all that entails - (selected-window) - (find-file-noselect filename))))) - -(defadvice set-visited-file-name (around energize freeze) - "The file name associated with an Energize buffer cannot be changed in this\ -way.\nUse the `write-file' command instead." - (if (and (energize-write-file-buffer-p) - (not (equal (ad-get-arg 0) buffer-file-name))) - (error "Can't change the name associated with an Energize buffer.") - (prog1 - ad-do-it - (if (energize-buffer-p (current-buffer)) - (energize-mode-internal))))) - -(defadvice next-error (around energize freeze) - "This function has been encapsulated to work with the Energize Error Log." - (if (or (not (connected-to-energize-p)) - (non-energize-errors-exist-p)) - ad-do-it - (energize-execute-command (if (ad-get-arg 0) - "previouserror" - "nexterror")))) - -(defadvice gdb-break (around energize freeze) - "This function has been encapsulated to work with the Energize debugger." - (if (not (energize-buffer-p (current-buffer))) - ad-do-it - (energize-execute-command "setbreakpoint"))) - -(defadvice gdb-step (around energize freeze) - "This function has been encapsulated to work with the Energize debugger." - (if (not (energize-buffer-p (current-buffer))) - ad-do-it - (let ((arg (ad-get-arg 0))) - (while (> arg 0) - (energize-execute-command "steponce") - (setq arg (1- arg)))))) - -(defadvice gdb-stepi (around energize freeze) - "This function has been encapsulated to work with the Energize debugger." - (if (not (energize-buffer-p (current-buffer))) - ad-do-it - (let ((arg (ad-get-arg 0))) - ;; there's no energize command for this, so do it this way... - (save-excursion - (set-buffer "*Debugger*") - (goto-char (point-max)) - (insert (format "stepi %d" arg)) - (comint-send-input)))))
--- a/lisp/energize/energize-annoprint.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,757 +0,0 @@ -;; INTERMEDIATE FORM: -;; (position font/nil glyph/nil newline/nil text) -;; font==nil - same font, otherwise select named font -;; glyph==nil - no glyph, otherwise display named glyph -;; newline==nil - no newline, otherwise generate a new line -;; text is a lump of text to be displayed in the new font, -;; ** after ** any glyph or newline. - -(defvar energize-annotate-print-ps-defns nil - "*File in which to find PS headers for annotated print. -If nil, use the hardcoded default.") - -(defvar energize-annotate-print-ps-whence 'energize-al-print-lpr-buffer - "*Function to process the buffer once generated. -Returns boolean whether buffer should be deleted") - -(defun energize-annotate-print-elisp () - "Generate an ELISP data structure which corresponds to the -text & extents from a buffer." - (interactive) - (save-excursion - (let* ((buf (current-buffer)) - (ex buf) - (ex-list (list (list 'default (point-min) (point-max) nil))) - (ex-ends (list (point-max))) - evs) - (while (setq ex (next-extent ex)) - (let ((s (prin1-to-string ex)) q) - (setq q - (let* ((bg (extent-property ex 'begin-glyph)) - (eg (extent-property ex 'end-glyph)) - (tg (or bg eg)) - (g (if tg (file-name-nondirectory (pixmap-file-name tg))))) - (if bg (list 'begin-glyph g) - (if eg (list 'end-glyph g) - nil))) - ) - (let ((sp (extent-start-position ex)) - (ep (extent-end-position ex))) - (setq q (list (extent-face ex) sp ep q)) - (if (> ep sp) - (progn - (setq ex-list (cons q ex-list)) - (setq ex-ends (cons (extent-end-position ex) ex-ends))))))) - ;; Make sure these are sorted. - (let ((exlt '(lambda (x y) - (let ((sx (nth 1 x)) - (sy (nth 1 y))) - (if (eq sx sy) - (> (nth 2 x) (nth 2 y)) - (< (nth 1 x) (nth 1 y))))))) - (setq ex-list (sort ex-list exlt))) - (setq ex-ends (sort ex-ends '<)) - - (let ((exs ex-list) - (exe ex-ends) - ev stk) - (while (or exs exe) - (let ((es (car exs)) - (ee (car exe)) - gf) - (if (or (null ee) (and es (< (nth 1 es) ee))) - (progn ;; process a new starting - (let* ((gf (nth 3 es)) - (g (if (eq (car gf) 'begin-glyph) (nth 1 gf) nil))) - (setq ev (list (nth 1 es) (car es) g nil nil))) - ;; test that es is worthwhile before stacking it - (if (null (car es)) - (if (null (nth 3 es)) - (setq es nil) - (if stk ;; if it has a glyph, copy lower stack entry - (setcar es (car (car stk)))))) - (if es - (setq stk (cons es stk))) - (setq exs (cdr exs))) - ;; ending - (let ((stf t) - (done nil) - (p stk) - (q stk)) - (while (and p (not done)) - (if (eq (nth 2 (car p)) ee) - (progn - (setq done t) - (setq gf (nth 3 (car p))) - (if stf - (setq stk (cdr p)) - (setcdr q (cdr p)))) - (setq stf nil)) - (setq q p) - (setq p (cdr p)))) - (let ((g (if (eq (car gf) 'end-glyph) (nth 1 gf) nil))) - (setq ev (list ee (car (car stk)) g nil nil))) - (setq exe (cdr exe)))) - (setq evs (cons ev evs))) - (setq evs (nreverse evs))) -;; now process EOLs - (goto-char (point-min)) - (let (eols) - (while (search-forward "\n" nil 't) - (setq eols (cons (list (1- (point)) nil nil t nil) eols))) - (setq eols (nreverse eols)) - (let (ev1) - (while (or evs eols) - (if (or (null evs) (and eols (< (car (car eols)) (car (car evs))))) - (progn - (setq ev1 (cons (car eols) ev1)) - (setq eols (cdr eols))) - (setq ev1 (cons (car evs) ev1)) - (setq evs (cdr evs)))) - (setq evs (nreverse ev1)))) -;; finally collect up text segments - (let ((es evs)) - (while es - (let ((e (car es)) - (f 0) - s ss p (r 0) q fr to) - (if (nth 3 e) - (setq f 1)) - (setq s (buffer-substring (+ (car e) f) (car (car (cdr es))))) - (while (setq p (string-match "\t" s r)) - (goto-char (+ (car e) f p)) - (setq fr (current-column)) - (forward-char 1) - (setq to (current-column)) - (setq ss (make-list (- to fr) " ")) - (setq q (concat q (substring s r p) (mapconcat 'identity ss ""))) - (setq r (1+ p))) - (if (not (eq r 0)) - (setq s (concat q (substring s r)))) - (let ((te e) (ti 4)) - (while (> ti 0) - (setq te (cdr te)) - (setq ti (1- ti))) - (setcar te s))) - (if (null (cdr (cdr es))) (setcdr es nil)) - (setq es (cdr es)))) - evs -))) - -(defun energize-annotate-print-ps () - "Print buffer taking full note of extents, pixmaps etc." - (interactive) - (let ((evs (energize-annotate-print-elisp)) - s tx - (buf (get-buffer-create "*anno-ps-print*")) - (def-ps-defns -"%!PS-Adobe-1.0 -%%BoundingBox: 0 0 792 612 -%%Pages: 1 -%%DocumentFonts: Courier -%%+ Times-Bold -%%+ Helvetica-Oblique -%%+ Courier-BoldOblique -%%+ Helvetica -%%+ Courier-Bold -%%+ Courier-Oblique -%%EndComments -100 dict begin -/Dsize 170 def -/colors Dsize dict def -/facecat Dsize dict def -/pixcat Dsize dict def -/newpageflag false def - -colors begin - /aquamarine4 [ 69 139 116 ] def - /black [ 0 0 0 ] def - /blue3 [ 0 0 205 ] def - /cadetblue4 [ 83 134 139 ] def - /darkseagreen2 [ 180 238 180 ] def - /gray [ 190 190 190 ] def - /gray90 [ 229 229 229 ] def - /green4 [ 0 139 0 ] def - /lightyellow4 [ 139 139 122 ] def - /hotpink1 [ 255 110 180 ] def - /maroon3 [ 205 41 144 ] def - /paleturquoise [ 175 238 238 ] def - /plum3 [ 205 150 205 ] def - /red3 [ 205 0 0 ] def - /c6920ac [ 102 32 172 ] def -end - -facecat begin % /name font size /textcol /backcol uline - /default [ - /Courier findfont 10 scalefont - 12 - /black - /none - false - ] def - /modeline [ - /Courier findfont 10 scalefont - 12 - /none - /black - false - ] def - /highlight [ - /Courier findfont 10 scalefont - 12 - /black - /darkseagreen2 - false - ] def - /left-margin [ - /Courier findfont 10 scalefont - 12 - /black - /none - false - ] def - /right-margin [ - /Courier findfont 10 scalefont - 12 - /black - /none - false - ] def - /bold [ - /Courier-Bold findfont 10 scalefont - 12 - /black - /none - false - ] def - /italic [ - /Courier-Oblique findfont 10 scalefont - 12 - /black - /none - false - ] def - /bold-italic [ - /Courier-BoldOblique findfont 10 scalefont - 12 - /black - /none - false - ] def - /isearch [ - /Courier findfont 10 scalefont - 12 - /black - /paleturquoise - false - ] def - /primary-selection [ - /Courier findfont 10 scalefont - 12 - /black - /gray - false - ] def - /secondary-selection [ - /Courier findfont 10 scalefont - 12 - /black - /paleturquoise - false - ] def - /attributeSmall [ - /Courier findfont 8 scalefont - 10 - /black - /none - false - ] def - /attributeGlyph [ - /Courier findfont 10 scalefont - 12 - /black - /none - false - ] def - /attributeSectionHeader [ - /Courier findfont 10 scalefont - 12 - /cadetblue4 - /none - false - ] def - /attributeToplevelFormGlyph [ - /Courier findfont 10 scalefont - 12 - /black - /none - false - ] def - /attributeModifiedToplevelFormGlyph [ - /Courier findfont 10 scalefont - 12 - /black - /none - false - ] def - /attributeBrowserHeader [ - /Courier findfont 10 scalefont - 12 - /red3 - /none - false - ] def - /attributeWriteProtected [ - /Courier findfont 10 scalefont - 12 - /lightyellow4 - /none - false - ] def - /attributeModifiedText [ - /Courier findfont 10 scalefont - 12 - /black - /gray90 - false - ] def - /attribute50 [ - /Courier findfont 10 scalefont - 12 - /plum3 - /none - false - ] def - /attribute52 [ - /Courier findfont 10 scalefont - 12 - /aquamarine4 - /none - false - ] def - /font-lock-comment-face [ - /Courier findfont 10 scalefont - 12 - /#6920ac - /none - false - ] def - /font-lock-doc-string-face [ - /Courier findfont 10 scalefont - 12 - /green4 - /none - false - ] def - /font-lock-string-face [ - /Courier findfont 10 scalefont - 12 - /green4 - /none - false - ] def - /font-lock-function-name-face [ - /Courier findfont 10 scalefont - 12 - /red3 - /none - false - ] def - /font-lock-keyword-face [ - /Courier findfont 10 scalefont - 12 - /blue3 - /none - false - ] def - /font-lock-type-face [ - /Courier findfont 10 scalefont - 12 - /blue3 - /none - false - ] def -end - -pixcat begin - /archive_tool [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\300\\000\\000\\377\\300\\174\\000\\377\\300\\122\\000\\377\\300\\111\\000\\377\\300\\145\\000\\377\\300\\123\\000\\377\\300\\111\\000\\377\\300\\105\\000\\377\\300\\177\\000\\377\\300\\000\\000\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /arrow [14 14 (\\000\\034\\000\\034\\000\\014\\000\\014\\000\\004\\000\\004\\000\\000\\000\\000\\000\\004\\000\\004\\000\\014\\000\\014\\000\\034\\000\\034)] def - /arrow-hollow [14 14 (\\000\\034\\000\\034\\077\\214\\077\\214\\077\\304\\077\\304\\077\\340\\077\\340\\077\\304\\077\\304\\077\\214\\077\\214\\000\\034\\000\\034)] def - /blip [3 3 (\\377\\377\\377)] def - /btool [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\300\\000\\000\\377\\300\\034\\140\\377\\300\\077\\340\\377\\301\\377\\340\\377\\301\\377\\340\\377\\303\\077\\340\\377\\302\\034\\140\\377\\302\\034\\000\\377\\300\\034\\000\\377\\300\\034\\000\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /build [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\300\\040\\000\\377\\300\\370\\000\\377\\300\\330\\000\\377\\301\\274\\200\\377\\300\\333\\340\\377\\300\\373\\140\\377\\300\\046\\360\\377\\300\\003\\140\\377\\300\\003\\340\\377\\300\\000\\200\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /collect_tool [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\300\\000\\000\\377\\300\\174\\000\\377\\300\\102\\000\\377\\300\\101\\000\\377\\300\\177\\000\\377\\300\\101\\000\\377\\300\\177\\000\\377\\300\\101\\000\\377\\300\\177\\000\\377\\300\\000\\000\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /collection [19 14 (\\377\\377\\377\\374\\017\\377\\374\\007\\377\\374\\003\\377\\374\\001\\377\\375\\376\\377\\375\\376\\377\\374\\000\\377\\374\\000\\377\\375\\376\\377\\375\\376\\377\\374\\000\\377\\374\\000\\377\\377\\377\\377)] def - /command_tool [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\300\\000\\000\\377\\301\\302\\000\\377\\303\\146\\000\\377\\302\\044\\000\\377\\303\\154\\340\\377\\301\\311\\260\\377\\300\\031\\020\\377\\300\\021\\260\\377\\300\\060\\340\\377\\300\\000\\000\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /compile1 [26 14 (\\377\\377\\377\\377\\300\\000\\000\\377\\337\\377\\376\\377\\337\\377\\376\\377\\334\\341\\306\\377\\334\\344\\222\\377\\330\\141\\236\\377\\330\\144\\236\\377\\323\\044\\222\\377\\323\\041\\306\\377\\337\\377\\376\\377\\337\\377\\376\\377\\300\\000\\000\\377\\377\\377\\377\\377)] def - /compile2 [26 14 (\\377\\377\\377\\377\\200\\000\\000\\177\\201\\377\\377\\177\\201\\377\\377\\177\\230\\341\\307\\177\\232\\344\\223\\177\\232\\141\\237\\177\\232\\144\\237\\177\\233\\044\\223\\177\\231\\041\\307\\177\\201\\377\\377\\177\\201\\377\\377\\177\\200\\000\\000\\177\\377\\377\\377\\377)] def - /compile3 [26 14 (\\377\\377\\377\\377\\200\\000\\000\\177\\200\\007\\377\\177\\200\\007\\377\\177\\231\\311\\307\\177\\233\\154\\223\\177\\233\\151\\237\\177\\233\\154\\237\\177\\233\\154\\223\\177\\231\\311\\307\\177\\200\\007\\377\\177\\200\\007\\377\\177\\200\\000\\000\\177\\377\\377\\377\\377)] def - /compile4 [26 14 (\\377\\377\\377\\377\\200\\000\\000\\177\\200\\000\\037\\177\\200\\000\\037\\177\\231\\314\\347\\177\\233\\155\\263\\177\\233\\155\\277\\177\\233\\155\\277\\177\\233\\155\\263\\177\\231\\314\\347\\177\\200\\000\\037\\177\\200\\000\\037\\177\\200\\000\\000\\177\\377\\377\\377\\377)] def - /compile5 [26 14 (\\377\\377\\377\\377\\200\\000\\000\\177\\200\\000\\000\\177\\200\\000\\000\\177\\231\\314\\346\\177\\233\\155\\266\\177\\233\\155\\266\\177\\233\\155\\266\\177\\233\\155\\266\\177\\231\\314\\346\\177\\200\\000\\000\\177\\200\\000\\000\\177\\200\\000\\000\\177\\377\\377\\377\\377)] def - /currenterror [19 14 (\\300\\001\\377\\302\\021\\377\\301\\040\\377\\300\\300\\377\\301\\340\\177\\315\\354\\177\\327\\372\\077\\303\\360\\077\\317\\374\\177\\323\\362\\177\\307\\370\\377\\311\\344\\377\\310\\305\\377\\300\\001\\377)] def - /currentnote [19 14 (\\377\\377\\377\\360\\003\\377\\360\\001\\377\\363\\201\\377\\363\\340\\377\\363\\370\\377\\363\\376\\177\\363\\376\\177\\363\\370\\377\\363\\340\\377\\363\\201\\377\\360\\001\\377\\360\\003\\377\\377\\377\\377)] def - /currentwarning [19 14 (\\377\\377\\377\\340\\003\\377\\340\\301\\377\\340\\301\\377\\341\\340\\377\\341\\340\\377\\343\\360\\177\\343\\360\\177\\347\\370\\377\\347\\370\\377\\357\\375\\377\\340\\001\\377\\340\\003\\377\\377\\377\\377)] def - /dbox-error [30 30 (\\377\\377\\377\\377\\377\\340\\077\\377\\377\\000\\007\\377\\376\\037\\303\\377\\370\\177\\360\\377\\361\\377\\374\\177\\360\\377\\376\\177\\344\\177\\377\\077\\306\\077\\377\\037\\317\\037\\377\\237\\317\\217\\377\\237\\237\\307\\377\\317\\237\\343\\377\\317\\237\\361\\377\\317\\237\\370\\377\\317\\237\\374\\177\\317\\237\\376\\077\\317\\237\\377\\037\\317\\317\\377\\217\\237\\317\\377\\307\\237\\307\\377\\343\\037\\347\\377\\361\\077\\363\\377\\370\\177\\361\\377\\370\\177\\370\\177\\360\\377\\376\\037\\303\\377\\377\\000\\007\\377\\377\\340\\077\\377\\377\\377\\377\\377\\377\\377\\377\\377)] def - /dbox-info [30 30 (\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\374\\177\\377\\377\\370\\077\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\370\\077\\377\\377\\374\\177\\377\\377\\377\\377\\377\\377\\200\\037\\377\\377\\200\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\200\\003\\377\\377\\200\\003\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377)] def - /dbox-question [30 30 (\\377\\340\\077\\377\\377\\000\\007\\377\\376\\000\\003\\377\\370\\017\\200\\377\\360\\037\\300\\177\\360\\077\\340\\177\\340\\070\\340\\077\\300\\070\\340\\037\\300\\070\\340\\037\\300\\070\\340\\037\\200\\070\\340\\017\\200\\001\\340\\017\\200\\003\\300\\017\\200\\007\\200\\017\\200\\007\\000\\017\\200\\007\\000\\017\\200\\007\\000\\017\\300\\007\\000\\037\\300\\007\\000\\037\\300\\000\\000\\037\\340\\007\\000\\077\\360\\007\\000\\177\\360\\007\\000\\177\\370\\000\\000\\377\\376\\000\\003\\377\\377\\000\\007\\377\\377\\340\\077\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377)] def - /debugger [26 14 (\\377\\377\\377\\377\\340\\000\\003\\377\\300\\022\\017\\377\\300\\014\\074\\377\\300\\036\\360\\377\\300\\333\\300\\377\\301\\157\\040\\377\\300\\075\\000\\377\\300\\367\\300\\377\\303\\337\\040\\377\\317\\177\\200\\377\\374\\236\\100\\377\\360\\000\\001\\377\\377\\377\\377\\377)] def - /directories [24 14 (\\377\\377\\377\\377\\377\\377\\376\\037\\377\\374\\000\\077\\374\\000\\037\\377\\377\\037\\360\\000\\237\\360\\000\\237\\370\\000\\137\\370\\000\\137\\374\\000\\037\\374\\000\\037\\377\\377\\377\\377\\377\\377)] def - /directory [19 14 (\\377\\377\\377\\377\\377\\377\\370\\177\\377\\360\\001\\377\\360\\000\\377\\377\\370\\377\\300\\004\\377\\300\\004\\377\\340\\002\\377\\340\\002\\377\\360\\000\\377\\360\\000\\377\\377\\377\\377\\377\\377\\377)] def - /dirtycollection [19 14 (\\377\\377\\377\\374\\117\\377\\374\\227\\377\\374\\043\\377\\375\\001\\377\\375\\156\\377\\375\\272\\377\\374\\000\\377\\374\\204\\377\\375\\366\\377\\375\\336\\377\\374\\000\\377\\374\\000\\377\\377\\377\\377)] def - /dirtyfile [19 14 (\\377\\377\\377\\374\\037\\377\\374\\227\\377\\374\\023\\377\\375\\121\\377\\374\\037\\377\\374\\200\\377\\374\\022\\377\\374\\200\\377\\374\\104\\377\\375\\020\\377\\374\\104\\377\\374\\000\\377\\377\\377\\377)] def - /dirtylibrary [19 14 (\\377\\377\\377\\374\\017\\377\\375\\227\\377\\374\\303\\377\\375\\151\\377\\374\\262\\377\\375\\030\\377\\375\\214\\377\\374\\326\\377\\374\\142\\377\\375\\060\\377\\374\\132\\377\\375\\000\\377\\377\\377\\377)] def - /dirtyobjectfile [19 14 (\\377\\377\\377\\374\\017\\377\\375\\127\\377\\375\\203\\377\\375\\321\\377\\374\\344\\377\\374\\160\\377\\375\\072\\377\\374\\034\\377\\375\\116\\377\\374\\046\\377\\374\\212\\377\\374\\000\\377\\377\\377\\377)] def - /dirtyprogram [19 14 (\\377\\377\\377\\342\\017\\377\\376\\113\\377\\362\\011\\377\\376\\120\\377\\344\\037\\377\\374\\200\\377\\344\\022\\377\\375\\000\\377\\370\\211\\377\\372\\041\\377\\370\\211\\377\\370\\001\\377\\377\\377\\377)] def - /dirtyproject [19 14 (\\377\\377\\377\\377\\037\\377\\376\\357\\377\\300\\000\\177\\342\\102\\177\\310\\010\\177\\301\\041\\177\\310\\010\\177\\304\\104\\177\\321\\021\\177\\304\\104\\177\\302\\000\\177\\320\\042\\177\\377\\377\\377)] def - /disablebreakpoint [18 16 (\\377\\377\\377\\374\\017\\377\\370\\007\\377\\360\\303\\377\\340\\301\\377\\300\\300\\377\\300\\300\\377\\300\\300\\377\\300\\300\\377\\300\\300\\377\\300\\300\\377\\340\\301\\377\\360\\303\\377\\370\\007\\377\\374\\017\\377\\377\\377\\377)] def - /dot [16 16 (\\377\\377\\377\\377\\377\\377\\374\\077\\360\\017\\360\\017\\340\\007\\340\\007\\340\\007\\340\\007\\360\\017\\360\\017\\374\\077\\377\\377\\377\\377\\377\\377)] def - /dotsx4 [4 4 (\\177\\377\\377\\377)] def - /dotsx8 [8 8 (\\177\\377\\377\\377\\377\\377\\377\\377)] def - /editor [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\300\\000\\000\\377\\300\\000\\000\\377\\317\\374\\000\\377\\300\\000\\000\\377\\317\\000\\000\\377\\300\\000\\000\\377\\317\\340\\000\\377\\300\\000\\000\\377\\317\\377\\374\\377\\300\\000\\000\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /enablebreakpoint [18 16 (\\377\\377\\377\\374\\017\\377\\370\\007\\377\\360\\003\\377\\340\\001\\377\\300\\000\\377\\300\\000\\377\\317\\374\\377\\317\\374\\377\\300\\000\\377\\300\\000\\377\\340\\001\\377\\360\\003\\377\\370\\007\\377\\374\\017\\377\\377\\377\\377)] def - /error [19 14 (\\377\\377\\377\\376\\367\\377\\377\\157\\377\\377\\237\\377\\377\\017\\377\\371\\011\\377\\364\\002\\377\\376\\007\\377\\370\\001\\377\\366\\006\\377\\374\\003\\377\\373\\015\\377\\373\\235\\377\\377\\377\\377)] def - /fat_lines [8 8 (\\125\\335\\335\\335\\125\\335\\335\\335)] def - /file [19 14 (\\377\\377\\377\\374\\037\\377\\374\\027\\377\\374\\023\\377\\374\\021\\377\\374\\037\\377\\374\\000\\377\\374\\000\\377\\374\\000\\377\\374\\000\\377\\374\\000\\377\\374\\000\\377\\374\\000\\377\\377\\377\\377)] def - /frame [16 14 (\\377\\377\\307\\343\\300\\003\\310\\023\\347\\347\\344\\047\\344\\047\\344\\047\\344\\047\\347\\347\\310\\023\\300\\003\\307\\343\\377\\377)] def - /grapher [26 13 (\\377\\377\\377\\377\\340\\000\\001\\377\\300\\000\\000\\377\\301\\200\\060\\377\\300\\300\\140\\377\\300\\140\\300\\377\\301\\377\\360\\377\\300\\140\\300\\377\\300\\300\\140\\377\\301\\200\\060\\377\\300\\000\\000\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /gray [2 2 (\\177\\277)] def - /gray3 [16 16 (\\167\\167\\377\\377\\335\\335\\377\\377\\167\\167\\377\\377\\335\\335\\377\\377\\167\\167\\377\\377\\335\\335\\377\\377\\167\\167\\377\\377\\335\\335\\377\\377)] def - /infolinkfrom [22 14 (\\377\\377\\377\\300\\000\\017\\300\\000\\017\\303\\361\\217\\301\\361\\217\\300\\360\\017\\301\\363\\217\\303\\261\\217\\307\\021\\217\\316\\001\\217\\304\\003\\317\\300\\000\\017\\300\\000\\017\\377\\377\\377)] def - /infolinkto [22 14 (\\377\\377\\377\\300\\000\\017\\300\\000\\017\\304\\001\\217\\316\\001\\217\\307\\020\\017\\303\\263\\217\\301\\361\\217\\300\\361\\217\\301\\361\\217\\303\\363\\317\\300\\000\\017\\300\\000\\017\\377\\377\\377)] def - /infonote [16 14 (\\377\\377\\300\\003\\300\\003\\301\\203\\301\\203\\300\\003\\303\\203\\301\\203\\301\\203\\301\\203\\303\\303\\300\\003\\300\\003\\377\\377)] def - /languageelement [19 14 (\\377\\377\\377\\377\\217\\377\\376\\003\\377\\376\\003\\377\\374\\001\\377\\374\\001\\377\\374\\001\\377\\374\\001\\377\\374\\001\\377\\374\\001\\377\\376\\003\\377\\376\\003\\377\\377\\217\\377\\377\\377\\377)] def - /library [19 14 (\\377\\377\\377\\374\\017\\377\\375\\207\\377\\374\\303\\377\\374\\141\\377\\374\\060\\377\\375\\030\\377\\375\\214\\377\\374\\306\\377\\374\\142\\377\\374\\060\\377\\374\\030\\377\\374\\000\\377\\377\\377\\377)] def - /library2 [15 15 (\\377\\377\\300\\177\\300\\077\\300\\037\\300\\017\\300\\007\\337\\367\\300\\007\\300\\007\\300\\007\\337\\367\\300\\007\\300\\007\\300\\007\\377\\377)] def - /light_gray [10 12 (\\125\\177\\377\\377\\125\\177\\377\\377\\125\\177\\377\\377\\125\\177\\377\\377\\125\\177\\377\\377\\125\\177\\377\\377)] def - /link1 [26 14 (\\377\\377\\377\\377\\300\\000\\000\\377\\337\\377\\376\\377\\320\\036\\002\\377\\300\\014\\000\\377\\307\\314\\370\\377\\307\\314\\370\\377\\307\\314\\370\\377\\307\\314\\370\\377\\300\\014\\000\\377\\320\\036\\002\\377\\337\\377\\376\\377\\300\\000\\000\\377\\377\\377\\377\\377)] def - /link2 [26 14 (\\377\\377\\377\\377\\300\\000\\000\\377\\300\\377\\376\\377\\317\\036\\002\\377\\337\\014\\000\\377\\330\\314\\370\\377\\376\\314\\370\\377\\376\\314\\370\\377\\330\\314\\370\\377\\337\\014\\000\\377\\317\\036\\002\\377\\300\\377\\376\\377\\300\\000\\000\\377\\377\\377\\377\\377)] def - /link3 [26 14 (\\377\\377\\377\\377\\300\\000\\000\\377\\300\\007\\376\\377\\317\\346\\002\\377\\337\\364\\000\\377\\330\\064\\370\\377\\376\\174\\370\\377\\376\\174\\370\\377\\330\\064\\370\\377\\337\\364\\000\\377\\317\\346\\002\\377\\300\\007\\376\\377\\300\\000\\000\\377\\377\\377\\377\\377)] def - /link4 [26 14 (\\377\\377\\377\\377\\300\\000\\000\\377\\300\\000\\076\\377\\317\\341\\302\\377\\337\\363\\300\\377\\330\\063\\070\\377\\376\\177\\270\\377\\376\\177\\270\\377\\330\\063\\070\\377\\337\\363\\300\\377\\317\\341\\302\\377\\300\\000\\076\\377\\300\\000\\000\\377\\377\\377\\377\\377)] def - /link5 [26 14 (\\377\\377\\377\\377\\300\\000\\000\\377\\300\\000\\000\\377\\317\\341\\374\\377\\337\\363\\376\\377\\330\\063\\006\\377\\376\\377\\337\\377\\376\\377\\337\\377\\330\\063\\006\\377\\337\\363\\376\\377\\317\\341\\374\\377\\300\\000\\000\\377\\300\\000\\000\\377\\377\\377\\377\\377)] def - /linkfrom [16 14 (\\377\\377\\300\\003\\300\\003\\303\\363\\301\\363\\300\\363\\301\\363\\303\\263\\307\\023\\316\\003\\304\\003\\300\\003\\300\\003\\377\\377)] def - /linkto [16 14 (\\377\\377\\300\\003\\300\\003\\304\\003\\316\\003\\307\\023\\303\\263\\301\\363\\300\\363\\301\\363\\303\\363\\300\\003\\300\\003\\377\\377)] def - /makefile [19 14 (\\377\\377\\377\\370\\007\\377\\370\\003\\377\\370\\001\\377\\370\\040\\377\\370\\370\\377\\370\\370\\377\\371\\374\\377\\370\\370\\377\\370\\370\\377\\370\\040\\377\\370\\000\\377\\370\\000\\377\\377\\377\\377)] def - /memory [13 14 (\\377\\377\\370\\377\\340\\077\\340\\077\\300\\037\\337\\337\\300\\037\\300\\037\\337\\337\\300\\037\\340\\077\\340\\077\\370\\377\\377\\377)] def - /modifiedtoplevelform [16 14 (\\377\\377\\300\\007\\337\\367\\345\\017\\303\\247\\327\\307\\317\\357\\301\\007\\345\\127\\311\\007\\305\\117\\320\\227\\377\\377\\377\\377)] def - /monoarchive_tool [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\337\\377\\376\\377\\337\\301\\376\\377\\337\\326\\376\\377\\337\\333\\176\\377\\337\\315\\176\\377\\337\\326\\176\\377\\337\\333\\176\\377\\337\\335\\176\\377\\337\\300\\176\\377\\337\\377\\376\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /monoarrow [14 14 (\\000\\034\\125\\134\\052\\214\\125\\114\\052\\244\\125\\124\\052\\240\\125\\120\\052\\244\\125\\104\\052\\214\\125\\114\\052\\234\\000\\034)] def - /monoarrow-hollow [14 14 (\\000\\034\\177\\234\\177\\314\\177\\314\\177\\344\\177\\344\\177\\360\\177\\360\\177\\344\\177\\344\\177\\314\\177\\314\\177\\234\\000\\034)] def - /monoblip [3 3 (\\377\\377\\377)] def - /monobtool [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\337\\377\\376\\377\\337\\303\\376\\377\\337\\273\\036\\377\\336\\174\\336\\377\\334\\377\\336\\377\\334\\034\\336\\377\\335\\333\\036\\377\\337\\333\\376\\377\\337\\303\\376\\377\\337\\377\\376\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /monobuild [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\337\\377\\376\\377\\337\\277\\376\\377\\336\\117\\176\\377\\336\\354\\236\\377\\335\\365\\336\\377\\336\\353\\356\\377\\336\\115\\336\\377\\337\\274\\236\\377\\337\\377\\176\\377\\337\\377\\376\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /monocollect_tool [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\337\\377\\376\\377\\337\\301\\376\\377\\337\\336\\376\\377\\337\\337\\176\\377\\337\\300\\176\\377\\337\\337\\176\\377\\337\\300\\176\\377\\337\\337\\176\\377\\337\\300\\176\\377\\337\\377\\376\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /monocollection [19 14 (\\377\\377\\377\\374\\007\\377\\375\\373\\377\\375\\375\\377\\374\\000\\377\\374\\000\\377\\375\\376\\377\\375\\376\\377\\374\\000\\377\\374\\000\\377\\375\\376\\377\\375\\376\\377\\374\\000\\377\\377\\377\\377)] def - /monocommand_tool [26 14 (\\377\\377\\377\\300\\340\\000\\001\\300\\337\\377\\376\\300\\336\\075\\376\\300\\334\\231\\376\\300\\335\\333\\376\\300\\334\\223\\036\\300\\336\\066\\116\\300\\337\\346\\356\\300\\337\\356\\116\\300\\337\\317\\036\\300\\337\\377\\376\\300\\340\\000\\001\\300\\377\\377\\377\\300)] def - /monocompile1 [26 14 (\\377\\377\\377\\377\\300\\000\\000\\377\\337\\377\\376\\377\\337\\377\\376\\377\\334\\341\\306\\377\\334\\344\\222\\377\\330\\141\\236\\377\\330\\144\\236\\377\\323\\044\\222\\377\\323\\041\\306\\377\\337\\377\\376\\377\\337\\377\\376\\377\\300\\000\\000\\377\\377\\377\\377\\377)] def - /monocompile2 [26 14 (\\377\\377\\377\\377\\200\\000\\000\\177\\201\\377\\377\\177\\201\\377\\377\\177\\230\\341\\307\\177\\232\\344\\223\\177\\232\\141\\237\\177\\232\\144\\237\\177\\233\\044\\223\\177\\231\\041\\307\\177\\201\\377\\377\\177\\201\\377\\377\\177\\200\\000\\000\\177\\377\\377\\377\\377)] def - /monocompile3 [26 14 (\\377\\377\\377\\377\\200\\000\\000\\177\\200\\007\\377\\177\\200\\007\\377\\177\\231\\311\\307\\177\\233\\154\\223\\177\\233\\151\\237\\177\\233\\154\\237\\177\\233\\154\\223\\177\\231\\311\\307\\177\\200\\007\\377\\177\\200\\007\\377\\177\\200\\000\\000\\177\\377\\377\\377\\377)] def - /monocompile4 [26 14 (\\377\\377\\377\\377\\200\\000\\000\\177\\200\\000\\037\\177\\200\\000\\037\\177\\231\\314\\347\\177\\233\\155\\263\\177\\233\\155\\277\\177\\233\\155\\277\\177\\233\\155\\263\\177\\231\\314\\347\\177\\200\\000\\037\\177\\200\\000\\037\\177\\200\\000\\000\\177\\377\\377\\377\\377)] def - /monocompile5 [26 14 (\\377\\377\\377\\377\\200\\000\\000\\177\\200\\000\\000\\177\\200\\000\\000\\177\\231\\314\\346\\177\\233\\155\\266\\177\\233\\155\\266\\177\\233\\155\\266\\177\\233\\155\\266\\177\\231\\314\\346\\177\\200\\000\\000\\177\\200\\000\\000\\177\\200\\000\\000\\177\\377\\377\\377\\377)] def - /monocurrenterror [19 14 (\\300\\001\\377\\335\\355\\377\\336\\336\\377\\337\\076\\377\\336\\337\\177\\322\\323\\177\\311\\345\\277\\335\\357\\277\\323\\363\\177\\315\\355\\177\\331\\346\\377\\326\\332\\377\\327\\075\\377\\300\\001\\377)] def - /monocurrentnote [19 14 (\\377\\377\\377\\360\\003\\377\\367\\375\\377\\364\\175\\377\\365\\236\\377\\365\\346\\377\\365\\373\\177\\365\\373\\177\\365\\346\\377\\365\\236\\377\\364\\175\\377\\367\\375\\377\\360\\003\\377\\377\\377\\377)] def - /monocurrentwarning [19 14 (\\377\\377\\377\\340\\003\\377\\357\\375\\377\\357\\075\\377\\357\\076\\377\\356\\336\\377\\356\\337\\177\\355\\357\\177\\355\\356\\377\\353\\366\\377\\350\\005\\377\\357\\375\\377\\340\\003\\377\\377\\377\\377)] def - /monodbox-error [30 30 (\\377\\377\\377\\377\\377\\340\\077\\377\\377\\000\\007\\377\\376\\037\\303\\377\\370\\177\\360\\377\\361\\377\\374\\177\\360\\377\\376\\177\\344\\177\\377\\077\\306\\077\\377\\037\\317\\037\\377\\237\\317\\217\\377\\237\\237\\307\\377\\317\\237\\343\\377\\317\\237\\361\\377\\317\\237\\370\\377\\317\\237\\374\\177\\317\\237\\376\\077\\317\\237\\377\\037\\317\\317\\377\\217\\237\\317\\377\\307\\237\\307\\377\\343\\037\\347\\377\\361\\077\\363\\377\\370\\177\\361\\377\\370\\177\\370\\177\\360\\377\\376\\037\\303\\377\\377\\000\\007\\377\\377\\340\\077\\377\\377\\377\\377\\377\\377\\377\\377\\377)] def - /monodbox-info [30 30 (\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\374\\177\\377\\377\\370\\077\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\370\\077\\377\\377\\374\\177\\377\\377\\377\\377\\377\\377\\200\\037\\377\\377\\200\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\360\\037\\377\\377\\200\\003\\377\\377\\200\\003\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377)] def - /monodbox-question [30 30 (\\377\\340\\077\\377\\377\\000\\007\\377\\376\\000\\003\\377\\370\\017\\200\\377\\360\\037\\300\\177\\360\\077\\340\\177\\340\\070\\340\\077\\300\\070\\340\\037\\300\\070\\340\\037\\300\\070\\340\\037\\200\\070\\340\\017\\200\\001\\340\\017\\200\\003\\300\\017\\200\\007\\200\\017\\200\\007\\000\\017\\200\\007\\000\\017\\200\\007\\000\\017\\300\\007\\000\\037\\300\\007\\000\\037\\300\\000\\000\\037\\340\\007\\000\\077\\360\\007\\000\\177\\360\\007\\000\\177\\370\\000\\000\\377\\376\\000\\003\\377\\377\\000\\007\\377\\377\\340\\077\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377\\377)] def - /monodebugger [26 14 (\\377\\377\\377\\377\\340\\000\\003\\377\\337\\355\\361\\377\\337\\363\\302\\377\\337\\355\\016\\377\\337\\050\\076\\377\\336\\200\\336\\377\\337\\300\\376\\377\\337\\006\\076\\377\\334\\076\\336\\377\\320\\236\\176\\377\\343\\155\\276\\377\\360\\000\\001\\377\\377\\377\\377\\377)] def - /monodirectories [24 14 (\\377\\377\\377\\377\\377\\377\\376\\037\\377\\375\\340\\077\\375\\377\\337\\340\\000\\337\\357\\377\\137\\357\\377\\137\\367\\377\\237\\367\\377\\237\\373\\377\\337\\374\\000\\037\\377\\377\\377\\377\\377\\377)] def - /monodirectory [19 14 (\\377\\377\\377\\377\\377\\377\\374\\077\\377\\373\\300\\377\\373\\377\\177\\300\\003\\177\\337\\375\\177\\337\\375\\177\\357\\376\\177\\357\\376\\177\\367\\377\\177\\370\\000\\177\\377\\377\\377\\377\\377\\377)] def - /monodirtycollection [19 14 (\\377\\377\\377\\374\\007\\377\\375\\173\\377\\376\\355\\377\\374\\200\\377\\374\\010\\377\\375\\276\\377\\375\\332\\377\\374\\020\\377\\374\\000\\377\\374\\372\\377\\375\\136\\377\\375\\000\\377\\377\\377\\377)] def - /monodirtyfile [19 14 (\\377\\377\\377\\376\\007\\377\\376\\343\\377\\376\\265\\377\\376\\346\\377\\376\\260\\177\\376\\327\\177\\376\\155\\177\\376\\377\\177\\376\\273\\177\\376\\356\\177\\376\\267\\177\\376\\000\\177\\377\\377\\377)] def - /monodirtylibrary [19 14 (\\377\\377\\377\\374\\017\\377\\374\\147\\377\\375\\073\\377\\374\\215\\377\\375\\114\\377\\374\\346\\377\\374\\162\\377\\375\\050\\377\\375\\234\\377\\374\\316\\377\\375\\244\\377\\374\\000\\377\\377\\377\\377)] def - /monodirtyobjectfile [19 14 (\\377\\377\\377\\376\\007\\377\\376\\253\\377\\376\\335\\377\\376\\344\\377\\376\\167\\177\\376\\072\\177\\376\\335\\177\\376\\156\\177\\376\\327\\177\\376\\373\\177\\376\\151\\177\\376\\000\\177\\377\\377\\377)] def - /monodirtyprogram [19 14 (\\377\\377\\377\\302\\007\\377\\376\\363\\377\\342\\265\\377\\376\\356\\377\\305\\140\\377\\375\\376\\377\\344\\326\\377\\375\\376\\377\\313\\171\\377\\371\\355\\377\\373\\275\\377\\370\\001\\377\\377\\377\\377)] def - /monodirtyproject [19 14 (\\377\\377\\377\\377\\037\\377\\376\\357\\377\\300\\000\\177\\335\\275\\177\\327\\367\\177\\336\\336\\177\\327\\367\\177\\333\\273\\177\\316\\356\\177\\333\\273\\177\\335\\377\\177\\300\\000\\177\\377\\377\\377)] def - /monodisablebreakpoint [18 16 (\\377\\377\\377\\374\\017\\377\\373\\367\\377\\367\\073\\377\\357\\075\\377\\337\\076\\377\\337\\076\\377\\337\\076\\377\\337\\076\\377\\337\\076\\377\\337\\076\\377\\357\\075\\377\\367\\073\\377\\373\\367\\377\\374\\017\\377\\377\\377\\377)] def - /monodot [16 16 (\\377\\377\\377\\377\\377\\377\\374\\077\\360\\017\\360\\017\\340\\007\\340\\007\\340\\007\\340\\007\\360\\017\\360\\017\\374\\077\\377\\377\\377\\377\\377\\377)] def - /monodotsx4 [4 4 (\\177\\377\\377\\377)] def - /monodotsx8 [8 8 (\\177\\377\\377\\377\\377\\377\\377\\377)] def - /monoeditor [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\337\\377\\376\\377\\337\\377\\376\\377\\320\\003\\376\\377\\337\\377\\376\\377\\320\\377\\376\\377\\337\\377\\376\\377\\320\\037\\376\\377\\337\\377\\376\\377\\320\\000\\002\\377\\337\\377\\376\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /monoenablebreakpoint [18 16 (\\377\\377\\377\\374\\017\\377\\373\\367\\377\\367\\373\\377\\357\\375\\377\\337\\376\\377\\337\\376\\377\\320\\002\\377\\320\\002\\377\\337\\376\\377\\337\\376\\377\\357\\375\\377\\367\\373\\377\\373\\367\\377\\374\\017\\377\\377\\377\\377)] def - /monoerror [19 14 (\\377\\377\\377\\376\\367\\377\\377\\157\\377\\377\\237\\377\\377\\157\\377\\371\\151\\377\\364\\362\\377\\376\\367\\377\\371\\371\\377\\366\\366\\377\\374\\363\\377\\373\\155\\377\\373\\235\\377\\377\\377\\377)] def - /monofat_lines [8 8 (\\125\\335\\335\\335\\125\\335\\335\\335)] def - /monofile [19 14 (\\377\\377\\377\\376\\003\\377\\376\\365\\377\\376\\366\\377\\376\\367\\177\\376\\360\\177\\376\\377\\177\\376\\377\\177\\376\\377\\177\\376\\377\\177\\376\\377\\177\\376\\377\\177\\376\\000\\177\\377\\377\\377)] def - /monoframe [16 14 (\\377\\377\\307\\343\\330\\033\\327\\353\\350\\027\\353\\327\\353\\327\\353\\327\\353\\327\\350\\027\\327\\353\\330\\033\\307\\343\\377\\377)] def - /monographer [26 13 (\\377\\377\\377\\377\\340\\000\\001\\377\\337\\377\\376\\377\\336\\177\\316\\377\\337\\077\\236\\377\\337\\237\\076\\377\\336\\000\\016\\377\\337\\237\\076\\377\\337\\077\\236\\377\\336\\177\\316\\377\\337\\377\\376\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /monogray [2 2 (\\177\\277)] def - /monogray3 [16 16 (\\167\\167\\377\\377\\335\\335\\377\\377\\167\\167\\377\\377\\335\\335\\377\\377\\167\\167\\377\\377\\335\\335\\377\\377\\167\\167\\377\\377\\335\\335\\377\\377)] def - /monoinfolinkfrom [22 14 (\\377\\377\\377\\300\\000\\017\\337\\377\\357\\334\\016\\157\\336\\356\\157\\337\\157\\357\\336\\254\\157\\335\\116\\157\\332\\356\\157\\325\\376\\157\\333\\374\\057\\337\\377\\357\\300\\000\\017\\377\\377\\377)] def - /monoinfolinkto [22 14 (\\377\\377\\377\\300\\000\\017\\337\\377\\357\\333\\376\\157\\325\\376\\157\\332\\357\\357\\335\\114\\157\\336\\256\\157\\337\\156\\157\\336\\356\\157\\334\\014\\057\\337\\377\\357\\300\\000\\017\\377\\377\\377)] def - /monoinfonote [16 14 (\\377\\377\\300\\003\\300\\003\\301\\203\\301\\203\\300\\003\\303\\203\\301\\203\\301\\203\\301\\203\\303\\303\\300\\003\\300\\003\\377\\377)] def - /monolanguageelement [19 14 (\\377\\377\\377\\377\\217\\377\\376\\163\\377\\376\\373\\377\\375\\375\\377\\375\\375\\377\\375\\375\\377\\375\\375\\377\\375\\375\\377\\375\\375\\377\\376\\373\\377\\376\\163\\377\\377\\217\\377\\377\\377\\377)] def - /monolibrary [19 14 (\\377\\377\\377\\374\\017\\377\\374\\167\\377\\375\\073\\377\\375\\235\\377\\375\\316\\377\\374\\346\\377\\374\\162\\377\\375\\070\\377\\375\\234\\377\\375\\316\\377\\375\\346\\377\\374\\000\\377\\377\\377\\377)] def - /monolibrary2 [15 15 (\\377\\377\\300\\177\\337\\277\\337\\337\\337\\357\\337\\367\\300\\007\\337\\367\\337\\367\\337\\367\\300\\007\\337\\367\\337\\367\\300\\007\\377\\377)] def - /monolight_gray [10 12 (\\125\\177\\377\\377\\125\\177\\377\\377\\125\\177\\377\\377\\125\\177\\377\\377\\125\\177\\377\\377\\125\\177\\377\\377)] def - /monolink1 [26 14 (\\377\\377\\377\\377\\300\\000\\000\\377\\337\\377\\376\\377\\320\\036\\002\\377\\300\\014\\000\\377\\307\\314\\370\\377\\307\\314\\370\\377\\307\\314\\370\\377\\307\\314\\370\\377\\300\\014\\000\\377\\320\\036\\002\\377\\337\\377\\376\\377\\300\\000\\000\\377\\377\\377\\377\\377)] def - /monolink2 [26 14 (\\377\\377\\377\\377\\300\\000\\000\\377\\300\\377\\376\\377\\317\\036\\002\\377\\337\\014\\000\\377\\330\\314\\370\\377\\376\\314\\370\\377\\376\\314\\370\\377\\330\\314\\370\\377\\337\\014\\000\\377\\317\\036\\002\\377\\300\\377\\376\\377\\300\\000\\000\\377\\377\\377\\377\\377)] def - /monolink3 [26 14 (\\377\\377\\377\\377\\300\\000\\000\\377\\300\\007\\376\\377\\317\\346\\002\\377\\337\\364\\000\\377\\330\\064\\370\\377\\376\\174\\370\\377\\376\\174\\370\\377\\330\\064\\370\\377\\337\\364\\000\\377\\317\\346\\002\\377\\300\\007\\376\\377\\300\\000\\000\\377\\377\\377\\377\\377)] def - /monolink4 [26 14 (\\377\\377\\377\\377\\300\\000\\000\\377\\300\\000\\076\\377\\317\\341\\302\\377\\337\\363\\300\\377\\330\\063\\070\\377\\376\\177\\270\\377\\376\\177\\270\\377\\330\\063\\070\\377\\337\\363\\300\\377\\317\\341\\302\\377\\300\\000\\076\\377\\300\\000\\000\\377\\377\\377\\377\\377)] def - /monolink5 [26 14 (\\377\\377\\377\\377\\300\\000\\000\\377\\300\\000\\000\\377\\317\\341\\374\\377\\337\\363\\376\\377\\330\\063\\006\\377\\376\\377\\337\\377\\376\\377\\337\\377\\330\\063\\006\\377\\337\\363\\376\\377\\317\\341\\374\\377\\300\\000\\000\\377\\300\\000\\000\\377\\377\\377\\377\\377)] def - /monolinkfrom [16 14 (\\377\\377\\300\\003\\337\\373\\334\\013\\336\\353\\337\\153\\336\\253\\335\\113\\332\\353\\325\\373\\333\\373\\337\\373\\300\\003\\377\\377)] def - /monolinkto [16 14 (\\377\\377\\300\\003\\300\\003\\304\\003\\316\\003\\307\\023\\303\\263\\301\\363\\300\\363\\301\\363\\303\\363\\300\\003\\300\\003\\377\\377)] def - /monomakefile [19 14 (\\377\\377\\377\\374\\007\\377\\375\\373\\377\\375\\375\\377\\375\\356\\377\\375\\223\\177\\375\\273\\177\\375\\175\\177\\375\\273\\177\\375\\223\\177\\375\\357\\177\\375\\377\\177\\374\\000\\177\\377\\377\\377)] def - /monomemory [13 14 (\\377\\377\\370\\377\\347\\077\\357\\277\\337\\337\\300\\037\\337\\337\\337\\337\\300\\037\\337\\337\\357\\277\\347\\077\\370\\377\\377\\377)] def - /monomodifiedtoplevelform [16 14 (\\377\\377\\377\\377\\340\\017\\376\\377\\355\\157\\373\\277\\361\\027\\335\\177\\365\\157\\375\\177\\354\\167\\377\\337\\366\\377\\377\\377)] def - /mononote [19 14 (\\377\\377\\377\\377\\377\\377\\371\\377\\377\\372\\177\\377\\373\\237\\377\\373\\347\\377\\373\\371\\377\\373\\371\\377\\373\\347\\377\\373\\237\\377\\372\\177\\377\\371\\377\\377\\377\\377\\377\\377\\377\\377)] def - /mononote1 [16 14 (\\377\\377\\300\\003\\337\\373\\337\\373\\337\\373\\337\\373\\336\\173\\336\\173\\337\\373\\337\\373\\337\\373\\337\\373\\300\\003\\377\\377)] def - /mononote2 [16 14 (\\377\\377\\300\\003\\337\\373\\337\\313\\337\\313\\337\\373\\337\\373\\337\\373\\337\\373\\323\\373\\323\\373\\337\\373\\300\\003\\377\\377)] def - /mononote3 [16 14 (\\377\\377\\300\\003\\337\\373\\337\\313\\337\\313\\337\\373\\336\\173\\336\\173\\337\\373\\323\\373\\323\\373\\337\\373\\300\\003\\377\\377)] def - /monoobjectfile [19 14 (\\377\\377\\377\\376\\007\\377\\376\\273\\377\\376\\335\\377\\376\\356\\377\\376\\167\\177\\376\\273\\177\\376\\335\\177\\376\\356\\177\\376\\367\\177\\376\\373\\177\\376\\375\\177\\376\\000\\177\\377\\377\\377)] def - /monoobjectfile1 [19 14 (\\377\\377\\377\\376\\007\\377\\376\\223\\377\\376\\301\\377\\376\\352\\377\\376\\160\\177\\376\\271\\177\\376\\034\\177\\376\\216\\177\\376\\047\\177\\376\\003\\177\\376\\225\\177\\376\\000\\177\\377\\377\\377)] def - /monoobjectfile2 [14 14 (\\377\\377\\300\\377\\337\\177\\337\\277\\337\\337\\337\\357\\337\\357\\300\\017\\300\\017\\337\\357\\337\\357\\337\\357\\300\\017\\377\\377)] def - /monoopeninfonote [16 14 (\\377\\377\\300\\003\\337\\373\\336\\173\\336\\173\\337\\373\\334\\173\\336\\173\\336\\173\\336\\173\\300\\003\\337\\373\\300\\003\\377\\377)] def - /monoopennote1 [16 14 (\\377\\377\\300\\003\\337\\373\\337\\373\\337\\373\\337\\373\\336\\173\\336\\173\\337\\373\\337\\373\\300\\003\\337\\373\\300\\003\\377\\377)] def - /monoopennote2 [16 14 (\\377\\377\\300\\003\\337\\373\\337\\313\\337\\313\\337\\373\\337\\373\\337\\373\\337\\373\\323\\373\\300\\003\\337\\373\\300\\003\\377\\377)] def - /monoopennote3 [16 14 (\\377\\377\\300\\003\\337\\373\\337\\313\\337\\313\\337\\373\\336\\173\\336\\173\\337\\373\\323\\373\\300\\003\\337\\373\\300\\003\\377\\377)] def - /monopendingtool [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\337\\377\\376\\377\\337\\377\\376\\377\\337\\377\\376\\377\\337\\377\\376\\377\\337\\377\\376\\377\\337\\377\\376\\377\\334\\314\\316\\377\\334\\314\\316\\377\\337\\377\\376\\377\\337\\377\\376\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /monoprogram [19 14 (\\377\\377\\377\\302\\007\\377\\376\\363\\377\\342\\365\\377\\376\\356\\377\\305\\340\\377\\375\\376\\377\\345\\376\\377\\375\\376\\377\\313\\375\\377\\373\\375\\377\\373\\375\\377\\370\\001\\377\\377\\377\\377)] def - /monoproject [19 14 (\\377\\377\\377\\377\\037\\377\\376\\357\\377\\300\\000\\177\\337\\377\\177\\337\\377\\177\\337\\377\\177\\337\\377\\177\\337\\377\\177\\337\\377\\177\\337\\377\\177\\337\\377\\177\\300\\000\\177\\377\\377\\377)] def - /monorandom [16 16 (\\377\\276\\357\\357\\376\\377\\177\\377\\357\\337\\376\\376\\377\\367\\373\\277\\277\\367\\377\\376\\367\\277\\377\\366\\376\\377\\357\\377\\177\\273\\375\\377)] def - /monoshlib_tool [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\337\\377\\376\\377\\334\\301\\316\\377\\333\\326\\366\\377\\333\\333\\166\\377\\333\\315\\166\\377\\333\\326\\166\\377\\333\\333\\166\\377\\333\\335\\166\\377\\334\\300\\116\\377\\337\\377\\376\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /monoslant [16 16 (\\357\\357\\337\\337\\277\\277\\177\\177\\376\\376\\375\\375\\373\\373\\367\\367\\357\\357\\337\\337\\277\\277\\177\\177\\376\\376\\375\\375\\373\\373\\367\\367)] def - /monosquare [7 8 (\\376\\202\\174\\174\\174\\174\\174\\202)] def - /monotoolstat [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\337\\377\\376\\377\\330\\000\\006\\377\\333\\377\\366\\377\\333\\377\\366\\377\\320\\000\\002\\377\\320\\000\\002\\377\\320\\000\\002\\377\\320\\000\\002\\377\\337\\377\\376\\377\\337\\377\\376\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /monotoplevelform [16 14 (\\377\\377\\377\\377\\340\\017\\376\\377\\375\\177\\373\\277\\361\\037\\375\\177\\375\\177\\375\\177\\374\\177\\377\\377\\377\\377\\377\\377)] def - /monovisitederror [16 14 (\\377\\377\\373\\337\\375\\277\\376\\177\\375\\277\\345\\247\\323\\313\\372\\137\\346\\147\\333\\333\\363\\317\\355\\267\\356\\167\\377\\377)] def - /monovisitedwarning [14 14 (\\377\\377\\377\\377\\377\\377\\374\\377\\374\\377\\373\\177\\373\\177\\367\\277\\367\\277\\357\\337\\354\\337\\334\\357\\300\\017\\377\\377)] def - /monowarning [19 14 (\\377\\377\\377\\377\\377\\377\\377\\237\\377\\377\\237\\377\\377\\157\\377\\377\\157\\377\\376\\367\\377\\376\\367\\377\\375\\373\\377\\375\\373\\377\\373\\375\\377\\370\\001\\377\\377\\377\\377\\377\\377\\377)] def - /note [19 14 (\\377\\377\\377\\377\\377\\377\\371\\377\\377\\370\\177\\377\\370\\037\\377\\370\\007\\377\\370\\001\\377\\370\\001\\377\\370\\007\\377\\370\\037\\377\\370\\177\\377\\371\\377\\377\\377\\377\\377\\377\\377\\377)] def - /note1 [16 14 (\\377\\377\\300\\003\\300\\003\\300\\003\\300\\003\\300\\003\\301\\203\\301\\203\\300\\003\\300\\003\\300\\003\\300\\003\\300\\003\\377\\377)] def - /note2 [16 14 (\\377\\377\\300\\003\\300\\003\\300\\063\\300\\063\\300\\003\\300\\003\\300\\003\\300\\003\\314\\003\\314\\003\\300\\003\\300\\003\\377\\377)] def - /note3 [16 14 (\\377\\377\\300\\003\\300\\003\\300\\063\\300\\063\\300\\003\\301\\203\\301\\203\\300\\003\\314\\003\\314\\003\\300\\003\\300\\003\\377\\377)] def - /objectfile [19 14 (\\377\\377\\377\\374\\017\\377\\375\\007\\377\\375\\203\\377\\375\\301\\377\\374\\340\\377\\374\\160\\377\\374\\070\\377\\374\\034\\377\\374\\016\\377\\374\\006\\377\\374\\002\\377\\374\\000\\377\\377\\377\\377)] def - /objectfile1 [14 14 (\\377\\377\\300\\377\\320\\177\\330\\077\\334\\037\\316\\017\\307\\017\\303\\217\\301\\317\\300\\357\\300\\157\\300\\057\\300\\017\\377\\377)] def - /objectfile2 [14 14 (\\377\\377\\300\\377\\300\\177\\300\\077\\300\\037\\300\\017\\300\\017\\337\\357\\337\\357\\300\\017\\300\\017\\300\\017\\300\\017\\377\\377)] def - /openinfonote [16 14 (\\377\\377\\300\\003\\300\\003\\301\\203\\301\\203\\300\\003\\303\\203\\301\\203\\301\\203\\301\\203\\303\\303\\337\\373\\300\\003\\377\\377)] def - /opennote1 [16 14 (\\377\\377\\300\\003\\300\\003\\300\\003\\300\\003\\300\\003\\301\\203\\301\\203\\300\\003\\300\\003\\300\\003\\337\\373\\300\\003\\377\\377)] def - /opennote2 [16 14 (\\377\\377\\300\\003\\300\\003\\300\\063\\300\\063\\300\\003\\300\\003\\300\\003\\300\\003\\314\\003\\314\\003\\337\\373\\300\\003\\377\\377)] def - /opennote3 [16 14 (\\377\\377\\300\\003\\300\\003\\300\\063\\300\\063\\300\\003\\301\\203\\301\\203\\300\\003\\314\\003\\314\\003\\337\\373\\300\\003\\377\\377)] def - /pendingtool [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\300\\000\\000\\377\\300\\000\\000\\377\\300\\000\\000\\377\\300\\000\\000\\377\\300\\000\\000\\377\\300\\000\\000\\377\\303\\063\\060\\377\\303\\063\\060\\377\\300\\000\\000\\377\\300\\000\\000\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /program [19 14 (\\377\\377\\377\\342\\017\\377\\376\\013\\377\\362\\011\\377\\376\\020\\377\\344\\037\\377\\374\\000\\377\\344\\000\\377\\374\\000\\377\\370\\001\\377\\370\\001\\377\\370\\001\\377\\370\\001\\377\\377\\377\\377)] def - /project [19 14 (\\377\\377\\377\\377\\037\\377\\376\\357\\377\\300\\000\\177\\300\\000\\177\\300\\000\\177\\300\\000\\177\\300\\000\\177\\300\\000\\177\\300\\000\\177\\300\\000\\177\\300\\000\\177\\300\\000\\177\\377\\377\\377)] def - /random [16 16 (\\377\\276\\357\\357\\376\\377\\177\\377\\357\\337\\376\\376\\377\\367\\373\\277\\277\\367\\377\\376\\367\\277\\377\\366\\376\\377\\357\\377\\177\\273\\375\\377)] def - /shlib_tool [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\300\\000\\000\\377\\306\\174\\060\\377\\310\\122\\010\\377\\310\\111\\010\\377\\310\\145\\010\\377\\310\\123\\010\\377\\310\\111\\010\\377\\310\\105\\010\\377\\306\\177\\060\\377\\300\\000\\000\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /slant [16 16 (\\357\\357\\337\\337\\277\\277\\177\\177\\376\\376\\375\\375\\373\\373\\367\\367\\357\\357\\337\\337\\277\\277\\177\\177\\376\\376\\375\\375\\373\\373\\367\\367)] def - /square [7 8 (\\376\\202\\000\\000\\000\\000\\000\\202)] def - /toolstat [26 14 (\\377\\377\\377\\377\\340\\000\\001\\377\\300\\000\\000\\377\\307\\377\\370\\377\\304\\000\\010\\377\\304\\000\\010\\377\\317\\377\\374\\377\\317\\377\\374\\377\\317\\377\\374\\377\\317\\377\\374\\377\\300\\000\\000\\377\\300\\000\\000\\377\\340\\000\\001\\377\\377\\377\\377\\377)] def - /toplevelform [16 14 (\\377\\377\\300\\007\\337\\367\\301\\007\\303\\207\\307\\307\\317\\347\\301\\007\\301\\007\\301\\007\\301\\007\\300\\007\\377\\377\\377\\377)] def - /visitederror [16 14 (\\377\\377\\373\\337\\375\\277\\376\\177\\374\\077\\344\\047\\320\\013\\371\\237\\341\\207\\330\\033\\360\\017\\354\\067\\356\\167\\377\\377)] def - /visitedwarning [14 14 (\\377\\377\\377\\377\\377\\377\\374\\377\\374\\377\\370\\177\\370\\177\\360\\077\\360\\077\\340\\037\\343\\037\\303\\017\\300\\017\\377\\377)] def - /warning [19 14 (\\377\\377\\377\\377\\377\\377\\377\\237\\377\\377\\237\\377\\377\\017\\377\\377\\017\\377\\376\\007\\377\\376\\007\\377\\374\\003\\377\\374\\003\\377\\370\\001\\377\\370\\001\\377\\377\\377\\377\\377\\377\\377)] def -end - -/tm 10.5 72 mul def -/bm 0.5 72 mul def -/lm 0.35 72 mul def -/rm 7.5 72 mul def -/maxht 0 def -/lastht 0 def -/fntht 0 def -/stkct 0 def -/xpos lm def -/ypos tm def -/ColorP systemdict /colorimage known def -/CFtCol /black def -/bcol /none def -/unl false def - -/B { - bcol /none ne { - dup gsave - xpos ypos moveto - true charpath pathbbox - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - bcol C fill - grestore - } if -} def - -/C { - ColorP { - dup colors exch known { - colors exch get - dup 0 get 255 div - exch dup 1 get 255 div - exch 2 get 255 div - setrgbcolor - } { pop } ifelse - } { pop } ifelse -} def - -/E { - newpageflag { L showpage } if - end -} def - -/F { - dup facecat exch known { - facecat exch get dup [ /F 3 -1 roll ] - 0 M - exch dup 0 get setfont 1 get /fntht exch def - } { pop } ifelse -} def - -/L { - 0 1 stkct 1 sub { - stkct exch sub -1 roll - dup 0 get - dup /F eq { - exch 1 get - dup 0 get setfont - dup 2 get /CFtCol exch def - dup 3 get /bcol exch def - 4 get /unl exch def - } if - dup /S eq { - exch dup - /xpos exch 1 get def - gsave - 2 get B - unl { U } if - CFtCol C - xpos ypos moveto - show - grestore - } if - dup /P eq { - exch dup 1 get /xpos exch def - gsave - /pix exch 2 get def - xpos ypos 3 sub translate - % w h i [ w 0 0 h neg 0 h ] { data } imagemask - pix 0 get pix 1 get false [ 1.3 0 0 -1.3 0 pix 1 get ] - pix 2 get - /maroon3 C - imagemask - grestore - } if - pop - } for - /stkct 0 def -} def - -/M { - dup maxht gt { /maxht exch def } { pop } ifelse - /stkct stkct 1 add def -} def - -/N { - stkct 0 eq { - /ypos ypos lastht sub def - } { - /ypos ypos maxht sub def - /lastht maxht def - } ifelse - ypos bm lt { - showpage - /ypos tm def - } if - L - /xpos lm def - /maxht 0 def -} def - -/P { - /newpageflag true def - dup pixcat exch known { - pixcat exch get - dup dup - [ /P xpos 2 add 4 -1 roll ] exch 1 get 1.3 div M - exch 0 get /xpos xpos 3 -1 roll 1.3 div add 4 add def - } { - pop - } ifelse -} def - -/S { - /newpageflag true def - dup stringwidth pop xpos add - dup rm gt - { - xpos sub exch /s exch def - /sp rm xpos sub def - round cvi s length idiv /ct exch def - s 0 ct getinterval stringwidth pop sp le - { /os -1 def /ts {gt} def ct ct 1 s length } - { /os 0 def /ts {le} def ct ct -1 0 } ifelse - { exch pop dup s 0 3 -1 roll getinterval stringwidth pop sp ts - { exit } if } for - os add /ct exch def s 0 ct getinterval - dup stringwidth pop exch - [ /S xpos 4 -1 roll ] fntht M - exch xpos add /xpos exch def - [ /S xpos 1 string dup 0 167 put ] fntht M - N s ct s length ct sub getinterval S - } { - exch [ /S xpos 4 -1 roll ] exch fntht M - /xpos exch def - } ifelse -} def - -/U { - gsave - xpos ypos moveto - dup gsave true charpath pathbbox grestore - pop exch pop ypos moveto ypos lineto 0.5 setlinewidth stroke - grestore -} def - -%%EndProlog -%%BeginSetup -/default F -%%EndSetup -%%Page: \"1\" 1 -")) - (save-excursion - (set-buffer buf) - (delete-region (point-min) (point-max)) - (if energize-annotate-print-ps-defns - (insert-file-contents energize-annotate-print-ps-defns) - (insert def-ps-defns)) - (goto-char (point-max)) - (while evs - (let ((e (car evs)) - f) - (if (nth 1 e) - (progn - (if f (insert " ")) - (setq f t) - (insert (concat "/" (prin1-to-string (nth 1 e)) " F")))) - (if (nth 2 e) - (progn - (if f (insert " ")) - (setq f t) - (insert (concat "/" (nth 2 e) " P")))) - (if (nth 3 e) - (progn - (if f (insert " ")) - (setq f t) - (insert "N"))) - (if (> (length (nth 4 e)) 0) - (progn - (if f (insert " ")) - (setq f t) - (insert "(" (energize-al-print-ps-string (nth 4 e)) ")S")))) - (insert "\n") - (setq evs (cdr evs))) - (insert "E" "\n" "%%EndPage: \"1\" 0" "\n" "%%Trailer" "\n") - (if (and energize-annotate-print-ps-whence - (funcall energize-annotate-print-ps-whence buf)) - (kill-buffer buf)) - ))) - -(defun energize-al-print-ps-string (s) - "Generate a PostScript printable version of a string" - (let ((st 0)) - (while (setq st (string-match "[()\\\\]" s st)) - (setq s (concat (substring s 0 st) "\\" (substring s st))) - (setq st (+ st 2)))) - s) - -(defun energize-al-print-lpr-buffer (buff) - "Print buffer. Return true to delete buffer" - (save-excursion - (set-buffer buff) - (lpr-buffer) - t))
--- a/lisp/energize/energize-font-lock.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ -;; interactive turn on and off of the font-lock-mode -;; Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. - -;; 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, 675 Mass Ave, Cambridge, MA 02139, USA. - - -;; This file is preloaded, but font-lock.el is not. -;; Make the font-lock faces exist at startup time, so that people can -;; mess with them in their .emacs file. -;; -;; They will be initialized either: from the resource db when the first -;; frame is created; or by font-lock.el when it is first loaded. - -(make-face 'font-lock-comment-face) -(make-face 'font-lock-doc-string-face) -(make-face 'font-lock-string-face) -(make-face 'font-lock-function-name-face) -(make-face 'font-lock-keyword-face) -(make-face 'font-lock-type-face) - - -;; Fontify Energize Error Log -(defconst energize-log-font-lock-keywords - (purecopy - '(("^ *Note:.*$" . font-lock-string-face) - ("^ *Warning:.*$" . font-lock-keyword-face) - ("^ *Error:.*$" . font-lock-function-name-face) - ("^/.* file system is full\r?$" . font-lock-function-name-face) - )) - "Expressions to highlight in the Energize Error Log.") -(add-hook 'energize-log-mode-hook 'turn-on-font-lock) - -;; font-lock is a kludge. Why does it have to be such a pain to configure? -(defun energize-configure-font-lock-mode (on-p font-p less-p) - (setq font-p (or font-p (not (x-color-display-p)))) - (cond (on-p - (add-hook 'c++-mode-hook 'turn-on-font-lock) - (add-hook 'c-mode-hook 'turn-on-font-lock) - (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock) - (add-hook 'lisp-mode-hook 'turn-on-font-lock)) - (t - (remove-hook 'c++-mode-hook 'turn-on-font-lock) - (remove-hook 'c-mode-hook 'turn-on-font-lock) - (remove-hook 'emacs-lisp-mode-hook 'turn-on-font-lock) - (remove-hook 'lisp-mode-hook 'turn-on-font-lock))) - (cond (font-p - (remove-hook 'font-lock-mode-hook 'font-lock-use-default-colors) - (add-hook 'font-lock-mode-hook 'font-lock-use-default-fonts)) - (t - (remove-hook 'font-lock-mode-hook 'font-lock-use-default-fonts) - (add-hook 'font-lock-mode-hook 'font-lock-use-default-colors))) - (cond (less-p - (remove-hook 'font-lock-mode-hook - 'font-lock-use-default-maximal-decoration) - (add-hook 'font-lock-mode-hook - 'font-lock-use-default-minimal-decoration)) - (t - (remove-hook 'font-lock-mode-hook - 'font-lock-use-default-minimal-decoration) - (add-hook 'font-lock-mode-hook - 'font-lock-use-default-maximal-decoration)))) -
--- a/lisp/energize/energize-font-size.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,146 +0,0 @@ -;; interactive adjust font size and face -;; Copyright (C) 1992-1993 Free Software Foundation, Inc. - -;; 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, 675 Mass Ave, Cambridge, MA 02139, USA. - -(defconst energize-x-modify-font-regexp - "-\\([^-]+-[^-]+\\)-\\([^-]+\\)-\\([^-]+\\)-\\([^-]+\\)-\\([^-]+\\)-\\([^-]+\\)-\\([^-]+\\)-\\([^-]+\\)-\\([^-]+\\)-\\([^-]+\\)-\\([^-]+\\)-\\([^-]+\\)-\\([^-]+\\)" - "Regexpr to extract or modify font entries") - -(defconst energize-font-families-parameters - '(("courier" . ("adobe-courier" "o")) - ("lucida" . ("b&h-lucida" "i")) - ("openwindows" . energize-make-openwindow-font) - ("helvetica" . ("adobe-helvetica" "o")) - ("times" . ("adobe-times" "i")) - ("clean" . ("shumacher-clean" "i")))) - -(defun energize-x-set-font-name-entry (font-name entry value) - (if (and font-name (string-match energize-x-modify-font-regexp font-name)) - (let ((match (substring font-name (match-beginning entry) (match-end entry)))) - (concat (substring font-name 0 (match-beginning entry)) - value - (substring font-name (match-end entry)))) - font-name)) - -(defun energize-x-set-font-entry (font entry value) - (if font - (let* ((font-name (if (stringp font) font (font-name font))) - (new-name (energize-x-set-font-name-entry font-name entry value))) - (if (stringp font) - new-name - (make-x-font new-name))))) - -(defun energize-x-set-face-font-entry (face entry value) - "Sets the face font to be of the specified point size" - (let* ((font (face-font face)) - (new-font (energize-x-set-font-entry font entry value))) - (and new-font - (condition-case a - (set-face-font face new-font) - (error (message "%S" a) (sit-for 0)))))) - -(defun energize-set-font-size (size) - (interactive "sSet new font size to: ") - (mapcar '(lambda (face) (energize-x-set-face-font-entry face 7 size)) - (list-faces))) - -(defun energize-make-openwindow-font (font-name) - (string-match energize-x-modify-font-regexp f-name) - (let ((slant (substring f-name (match-beginning 3) (match-end 3)))) - (if (member slant '("i" "o")) - (concat - (substring f-name 0 (match-beginning 1)) - "b&h-lucida" - (substring f-name (match-end 1) (match-beginning 3)) - "i" - (substring f-name (match-end 3))) - (let ((new-name - (concat - (substring f-name 0 (match-beginning 1)) - "b&h-lucidatypewriter" - (substring f-name (match-end 1) (match-beginning 3)) - slant - (substring f-name (match-end 3))))) - ;; tries the R5 name first and the openwindows name second - (if (x-list-fonts new-name) - new-name - (concat - (substring f-name 0 (match-beginning 1)) - "b&h-lucida sans typewriter" - (substring f-name (match-end 1) (match-beginning 3)) - slant - (substring f-name (match-end 3)))))))) - -(defun energize-set-font-family (family) - (interactive "sSet new font family to: ") - (let ((font-desc (cdr (assoc family energize-font-families-parameters))) - (faces (list-faces))) - (if (null font-desc) - (error "Unknown font family %s, use one of %s" family - (mapcar 'car energize-font-families-parameters))) - (while faces - (let* ((face (car faces)) - (font (face-font face)) - (f-name (and font (font-name font)))) - (if f-name - (progn - (if (symbolp font-desc) - (setq f-name (funcall font-desc f-name)) - (string-match energize-x-modify-font-regexp f-name) - (let ((slant (substring f-name - (match-beginning 3) (match-end 3)))) - (if (member slant '("i" "o")) - (setq slant (nth 1 font-desc))) - (setq f-name - (concat - (substring f-name 0 (match-beginning 1)) - (car font-desc) - (substring f-name (match-end 1) (match-beginning 3)) - slant - (substring f-name (match-end 3)))))))) - (set-face-font face f-name)) - (setq faces (cdr faces))))) - -(defun energize-set-font-boldness (bold) - (interactive "sEnter boldness:") - (let* ((default-name (font-name (face-font 'default))) - (default-boldness - (and (string-match energize-x-modify-font-regexp default-name) - (substring default-name (match-beginning 2) (match-end 2))))) - (if (not (equal bold default-boldness)) - (let ((faces (list-faces))) - (while faces - (let* ((face (car faces)) - (font (face-font face)) - (f-name (and font (font-name font)))) - (if f-name - (progn - (string-match energize-x-modify-font-regexp f-name) - (let ((font-boldness - (substring f-name (match-beginning 2) (match-end 2)))) - (setq new-boldness - (if (equal font-boldness "bold") - "medium" - "bold")) - (setq f-name - (concat - (substring f-name 0 (match-beginning 2)) - new-boldness - (substring f-name (match-end 2))))) - (set-face-font face f-name)))) - (setq faces (cdr faces)))))))
--- a/lisp/energize/energize-init.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,580 +0,0 @@ -;;; -*- Mode:Emacs-Lisp -*- -;;; Copyright © 1990-1994 by Lucid, Inc. All Rights Reserved. - -(defvar energize-auto-raise-screen t - "If T frames are automatically raised when Energize wants to show them.") - -(defvar energize-connect-hook nil - "*Function or functions to run when the Energize connection is established.") - -(defvar energize-disconnect-hook nil - "*Function or functions to run when the Emacs/Energize connection is closed.") - - -(defvar energize-screen-mode nil) -(defvar energize-split-screens-p t) - -(defun energize-multi-screen-mode () - "Call this function to put Energize into multi-frame mode. - -A frame named \"debugger\" will be used for the *Debugger* buffer, - and its associated source files. -A frame named \"energize\" will be used for the Top-Level buffer. -A frame named \"browser\" will be created for each L.E. Browser buffer. - At most 5 of these will be created; then they will be reused. -A frame named \"project\" will be created for each Project buffer. -A frame named \"error-log\" will be created for the Error Log buffer - and its associated source files (as when the Next Error command - displays a source file.) -A frame named \"manual\" will be created for each UNIX Manual page. - At most 5 of these will be created; then they will be reused. - -If an external editor is being used, then source files will be displayed -read-only in the \"debugger\" frame. - -If an external editor is not being used, then frames named \"sources\" -will be created to edit source files. At most five of these will be -created; then they will be reused. Find-file will use the current frame, -whatever that happens to be, but find-file-other-window, and selecting -source files from the Buffers menu will use an existing frame displaying -the file in question, or create a new one if there isn't one. - -Call `energize-single-screen-mode' to turn this off. - -See the documentation for the function get-frame-for-buffer for -information on how to customize this." - (interactive) - (put 'project 'instance-limit 0) - (put 'sources 'instance-limit 5) - (put 'manual 'instance-limit 5) - (put 'browser 'instance-limit 5) - (put 'energize-debugger-mode 'frame-name 'debugger) - (put 'gdb-mode 'frame-name 'debugger) - (put 'energize-top-level-mode 'frame-name 'energize) - (put 'energize-browser-mode 'frame-name 'browser) - (put 'energize-breakpoint-mode 'frame-name 'browser) - (put 'energize-project-mode 'frame-name 'project) - (put 'energize-no-file-project-mode 'frame-name 'project) - (put 'energize-log-mode 'frame-name 'error-log) - (put 'energize-manual-entry-mode 'frame-name 'manual) - (if energize-external-editor - (setq get-frame-for-buffer-default-frame-name 'debugger) - ;; hmmmm... - (setq get-frame-for-buffer-default-frame-name 'sources)) - (setq buffers-menu-switch-to-buffer-function 'pop-to-buffer) - (setq energize-screen-mode 'multi) - t) - -(defun energize-several-screens-mode () - "Call this function to put Energize into multi-frame mode, -but with only a few frames. See also `energize-multi-screen-mode'. - -A frame named \"debugger\" will be used for the *Debugger* buffer, - and its associated source files. -A frame named \"energize\" will be used for the Top-Level buffer. -A single frame named \"browser\" will be created for L.E. Browser buffers. -A single frame named \"project\" will be created for Project buffers. -A frame named \"error-log\" will be created for the Error Log buffer - and its associated source files (as when the Next Error command - displays a source file.) -A single frame named \"manual\" will be created for UNIX Manual page buffers. - -If an external editor is being used, then source files will be displayed -read-only in the \"debugger\" frame. - -If an external editor is not being used, then a single frame named -\"sources\" will be created to edit source files. Find-file will use the -current frame, whatever that happens to be, but find-file-other-window, -and selecting source files from the Buffers menu will use an existing frame -displaying the file in question, or create a new one if there isn't one. - -Call `energize-single-screen-mode' to turn this off. - -See the documentation for the function get-frame-for-buffer for -information on how to customize this." - (interactive) - (energize-multi-screen-mode) - (remprop 'browser 'instance-limit) - (remprop 'project 'instance-limit) - (remprop 'manual 'instance-limit) - (remprop 'sources 'instance-limit) - (setq energize-screen-mode 'several) - t) - -(defun energize-single-screen-mode () - "Call this function to put Energize into single-frame mode. -All buffers will be displayed in the currently selected frame." - (interactive) - (remprop 'browser 'instance-limit) - (remprop 'project 'instance-limit) - (remprop 'manual 'instance-limit) - (remprop 'sources 'instance-limit) - (remprop 'energize-debugger-mode 'frame-name) - (remprop 'gdb-mode 'frame-name) - (remprop 'energize-top-level-mode 'frame-name) - (remprop 'energize-browser-mode 'frame-name) - (remprop 'energize-breakpoint-mode 'frame-name) - (remprop 'energize-project-mode 'frame-name) - (remprop 'energize-no-file-project-mode 'frame-name) - (remprop 'energize-log-mode 'frame-name) - (remprop 'energize-manual-entry-mode 'frame-name) - (setq get-frame-for-buffer-default-frame-name nil) - (setq buffers-menu-switch-to-buffer-function 'switch-to-buffer) - (setq energize-screen-mode 'single) - nil) - -(energize-single-screen-mode) - - -;;; Connecting and disconnecting - -(or energize-attributes-mapping - (setq energize-attributes-mapping - (purecopy - '((0 . default) - (1 . bold) - (2 . italic) - (3 . bold-italic) - (4 . attributeSmall) - (50 . attributeGlyph) - (51 . attributeSectionHeader) - (52 . attributeToplevelFormGlyph) - (53 . attributeModifiedToplevelFormGlyph) - (54 . attributeBrowserHeader) - (68 . attributeWriteProtected) - (69 . attributeModifiedText) - )))) - -;; Make the faces before emacs is dumped - this should be ok, they will be -;; initialized from the resource database when the first frame is created. -(let ((rest energize-attributes-mapping)) - (while rest - (make-face (cdr (car rest))) - (setq rest (cdr rest)))) - - -(defun any-energize-buffers-p () - (let ((rest (buffer-list)) - (result nil)) - (while rest - (if (energize-buffer-p (car rest)) - (setq result (car rest) rest nil) - (setq rest (cdr rest)))) - result)) - -(defun connect-to-energize (server &optional enarg) - "Connect this emacs to a Energize server. -The SERVER argument should be the name of the host that the kernel is -running on (empty-string for localhost). It may also be of the form -``hostname:user'' or ``:user'', meaning to use the server running with -userid USER." - (interactive (if (connected-to-energize-p) - (error "Already connected to the server.") ; you bogon. - (list (read-string "connect to energize server: ")))) - (if (connected-to-energize-p) - (error "Already connected to the server.")) ; you bogon. - (if (or (null server) (equal server "")) - (setq server (or (getenv "ENERGIZE_PORT") (system-name)))) - (setq default-frame-name "energize") - (energize-rename-things) - (energize-hack-external-editor-mode) - - (let ((energize-disconnect-hook - ;; If we're being run interactively, don't exit emacs if connecting - ;; to Energize fails! That's damn annoying. - (if (and (interactive-p) - (consp energize-disconnect-hook) - (memq 'save-buffers-kill-emacs energize-disconnect-hook)) - (delq 'save-buffers-kill-emacs - (copy-sequence energize-disconnect-hook)) - energize-disconnect-hook))) - - (connect-to-energize-internal server enarg) - ;; Wait for the Top-Level buffer to be created. - ;; This really should happen down in C, but... - (let ((p (or (get-process "energize") - (error "Could not connect to Energize."))) - b) - (while (progn - (or (connected-to-energize-p) - (error "Energize connection refused.")) - (not (setq b (any-energize-buffers-p)))) - (accept-process-output p)) - ;; Make the displayed Energize buffer initially displayed. - (pop-to-buffer b) - (delete-other-windows) - (run-hooks 'energize-connect-hook)))) - -(defun disconnect-from-energize () - (interactive) - "Close the connection to energize" - (close-connection-to-energize)) - -;;; Energizing all buffers -;; After being connected to energize this function energizes all the -;; buffers that contain files that Energize knows about. - -(defun energize-all-buffers () - "Energize any buffer showing a file that the Energize server knows about. -Has to be called after Emacs has been connected to Energize" - (if (not (connected-to-energize-p)) - (error "You have to connect to Energize first")) - (save-window-excursion - (save-excursion - (let ((buffers (buffer-list)) - (buffers-to-avoid '()) - (lock-directory nil) - buffer - filename) - (while buffers - (setq buffer (car buffers)) - (setq buffers (cdr buffers)) - (setq filename (buffer-file-name buffer)) - (set-buffer buffer) - (cond - ((and filename - (not (energize-buffer-p buffer)) - (energize-query-buffer filename t)) - (cond ((buffer-modified-p) - (if (y-or-n-p - (format - "Buffer %s must be saved to be Energized; save it? " - (buffer-name buffer))) - (progn - (set-buffer buffer) ; oh, man... - (save-buffer)) - ;; said "no" - (setq buffers-to-avoid (cons buffer buffers-to-avoid)))) - - ((and (null (verify-visited-file-modtime buffer)) - (file-exists-p filename)) - (set-buffer buffer) - (if (y-or-n-p - (format "Buffer %s has changed on disk, revert? " - (buffer-name buffer))) - (progn - (set-buffer buffer) - (revert-buffer nil t)) - ;; said "no" - (setq buffers-to-avoid (cons buffer buffers-to-avoid)))) - - ;; It's wrong to check to also see if someone else is locking - ;; the file. The file is already in the buffer, and the user - ;; isn't really modifying it -- we're just rewriting it because - ;; energize likes to do that. That's why locking should be - ;; disabled here. - ) - (if (not (memq buffer buffers-to-avoid)) - (progn - (message "Energizing buffer %s..." (buffer-name buffer)) - (find-file-noselect filename)) - (message "Buffer %s not Energized." (buffer-name buffer)) - (sit-for 1))))) - (message nil))))) - -(add-hook 'energize-connect-hook 'energize-all-buffers) - - -;; This is called when the connection to Energize is lose (for whatever -;; reason). We could just run the energize-disconnect-hook from C and -;; put this function on it, but then the user could hurt themselves. -;; -(defun de-energize-all-buffers () - (save-excursion - (let ((buffers (buffer-list)) - buffer) - (while buffers - (condition-case condition - (progn - (setq buffer (car buffers)) - (set-buffer buffer) - (cond ((not (energize-buffer-p buffer)) - nil) - ((eq (energize-buffer-type buffer) 'energize-source-buffer) - (map-extents - (function (lambda (extent ignore) - (if (extent-property extent 'energize) - (delete-extent extent)) - nil)) - buffer) - (remove-hook 'write-file-data-hooks - 'energize-write-data-hook) - (setq revert-buffer-insert-file-contents-function nil) - (ad-Orig-normal-mode-after-energize) ; #### necessary? - ) - (t ; non-source-file Energize buffers - (set-buffer-modified-p nil) - (if (eq (other-buffer buffer) buffer) - (set-buffer (get-buffer-create "*scratch*")) - (set-buffer (other-buffer buffer))) - (kill-buffer buffer)))) - (error ;; condition-case clause - (beep) - (message "Error while de-Energizing: %s" condition))) - (setq buffers (cdr buffers))))) - ;; now clean the menubar - (deactivate-all-energize-menu-items) - (energize-rename-things 'back) - (run-hooks 'energize-disconnect-hook) - nil) - - -(defun energize-rename-things (&optional back) - ;; People who don't like emacs don't like seeing the word "Emacs" either - (let ((case-fold-search t)) - (if (and (consp mode-line-buffer-identification) - (stringp (car mode-line-buffer-identification)) - (string-match (if back "\\bEnergize\\b" - "\\bL?Emacs\\([- \t]*[-._0-9]+\\)?\\b") - (car mode-line-buffer-identification))) - (setq-default mode-line-buffer-identification - (cons - (concat (substring (car mode-line-buffer-identification) - 0 (match-beginning 0)) - (if back "Emacs" "Energize") - (substring (car mode-line-buffer-identification) - (match-end 0))) - (cdr mode-line-buffer-identification)))) -; (if (stringp frame-title-format) -; (if back -; (if (string-match "^Energize\\b ?" frame-title-format) -; (setq-default frame-title-format "%S: %b")) -; (or (string-match "Energize" frame-title-format) -; (setq-default frame-title-format "Energize: %b")))) - ) - nil) - - - -;;; The kernel is very random about the buffer-types it returns. -;;; This is a temporary permanent fix... - -(defun energize-buffer-type (buffer) - "Returns a symbol denoting the type of an Energize buffer, or nil." - (let ((type (energize-buffer-type-internal buffer))) - (cond ((eq type 'energize-top-level-buffer) - (cond ((equal "Error Log" (buffer-name buffer)) - 'energize-error-log-buffer) - ((equal "*includers*" (buffer-name buffer)) - 'energize-includers-buffer) - ((string-match "^Browser" (buffer-name buffer)) - 'energize-browser-buffer) - (t type))) - ((eq type 'energize-unspecified-buffer) - (signal 'error (list "buffer type unspecified" buffer))) - ((and (null type) (energize-buffer-p buffer)) - (signal 'error - (list "null buffer type for energize buffer" buffer))) - (t type)))) - -(defun energize-extent-at (pos &optional buffer) - (extent-at pos buffer 'energize)) - -(defun non-energize-errors-exist-p () - ;; Whether `next-error' executed right now should do the emacs thing. - ;; If we're in a *grep* or *compile* buffer, always do the emacs thing. - ;; If we're in the Error Log, always do the Energize thing. - ;; Otherwise, do the emacs thing if it would succeed; otherwise do the - ;; Energize thing. - (or (compilation-buffer-p (current-buffer)) ; in *grep* - (and (not (eq (energize-buffer-type (current-buffer)) ; in ErrLog - 'energize-error-log-buffer)) - ;; defined in compile.el (a XEmacs addition). - (compilation-errors-exist-p)))) - - -;;; Misc Energize hook functions - -(defvar inside-energize-buffer-creation-hook-function nil) - -(defun energize-buffer-creation-hook-function (buffer) - ;; This loser is called every time Energize wants to create a buffer, - ;; whether it is being spontaniously displayed (as by the debugger) or - ;; as a result of calling find-file -> energize-find-file-noselect -> - ;; energize-query-buffer. - (let ((inside-energize-buffer-creation-hook-function t)) - ;; the above is so we can call this from normal-mode, except when - ;; we're calling normal-mode. - (save-excursion - (set-buffer buffer) - - ;; Energize always hands us truenames, or something close to them - ;; (it chomps the /tmp_mnt/ automounter cruft off.) Let the user - ;; set up a pretty translation just like they can for normal files. - (if buffer-file-name - (setq buffer-file-name (abbreviate-file-name - (expand-file-name buffer-file-name)) - default-directory (file-name-directory buffer-file-name)) - (setq default-directory - (abbreviate-file-name (expand-file-name default-directory)))) - - (if buffer-file-name (set-buffer-modtime buffer)) - - (let ((type (energize-buffer-type buffer))) - (cond ((eq type 'energize-top-level-buffer) - (energize-top-level-mode)) - ((eq type 'energize-browser-buffer) - (energize-browser-mode)) - ((eq type 'energize-includers-buffer) - (energize-browser-mode)) - ((or (eq type 'energize-error-log-buffer) - (eq type 'energize-log-file-buffer)) - (energize-log-mode) - (setq buffer-read-only t)) - ((eq type 'energize-project-buffer) - (if (buffer-file-name) - (energize-project-mode) - (energize-no-file-project-mode))) - ((eq type 'energize-debugger-buffer) - (energize-debugger-mode)) - ((eq type 'energize-breakpoint-buffer) - (energize-breakpoint-mode)) - ((eq type 'energize-unix-manual-buffer) - (energize-manual-mode)) - ((or (eq type 'energize-source-buffer) - ;;(eq type 'energize-unspecified-buffer) - ;;(null type) - ) - (compute-buffer-file-truename) - (if (buffer-file-name buffer) - (after-find-file nil t) - (funcall default-major-mode)) - ) - (t - (signal 'error (list "unknown energize buffer type" type))))) - - (if (eq (energize-buffer-type (current-buffer)) 'energize-source-buffer) - (energize-source-minor-mode)) - - (energize-external-editor-set-mode buffer) - ))) - -(setq energize-create-buffer-hook 'energize-buffer-creation-hook-function) - -;;; Buffer modified hook - -(defun energize-send-buffer-modified-1 (start end) - (if (not (energize-buffer-p (current-buffer))) - nil - (map-extents #'(lambda (ext ignore) - (and (extent-property ext 'energize) - (set-extent-face ext 'attributeModifiedText)) - nil) - (current-buffer) start end) - (energize-send-buffer-modified t start end))) - -(add-hook 'before-change-functions 'energize-send-buffer-modified-1) - -;;; Reverting buffers -;;; This is called when Energize has informed us that a buffer has changed -;;; on disk, and we need to revert. - -(defun energize-auto-revert-buffer (buf) - (cond ((not (file-exists-p (buffer-file-name buf))) - ;; Signal an error here? Naah, let someone else deal with it. - nil) - ;; If it's not modified, just revert. If it is modified, ask. - ((or (not (buffer-modified-p buf)) - (yes-or-no-p - (format "File %s changed on disk. Discard your edits? " - (file-name-nondirectory (buffer-file-name buf))))) - (save-excursion - (set-buffer buf) - (revert-buffer t t))))) - -;;; Energize kernel busy hook - -(defun energize-message-if-not-in-minibuffer (reason) - (if (not (eq (selected-window) (minibuffer-window))) - (message reason))) - -(setq energize-kernel-busy-hook 'energize-message-if-not-in-minibuffer) - -;;; set-buffer-modified-p hook - -(defun energize-send-buffer-modified-2 (state start end) - (if (not (energize-buffer-p (current-buffer))) - nil - (if (not state) - ;; If we're unmodifying the buffer, un-highlight all Energize extents. - (let ((e (next-extent (current-buffer)))) - (while e - (if (and (extent-property e 'energize) - (eq (extent-face e) 'attributeModifiedText)) - (set-extent-face e nil)) - (setq e (next-extent e))))) - (energize-send-buffer-modified state start end))) - -(setq energize-buffer-modified-hook 'energize-send-buffer-modified-2) - -;;; hook in editorside.c - -(setq energize-kernel-modification-hook nil) - - -;; command line - -(defconst energize-args '(("-energize" . command-line-process-energize) - ("-context" . command-line-process-energize-1) - ("-beam-me-up" . command-line-process-energize-1))) - -(setq command-switch-alist (append command-switch-alist energize-args)) - -(fset 'command-line-process-energize 'command-line-process-energize-1) -(put 'command-line-process-energize-1 'undocumented t) -(defun command-line-process-energize-1 (arg) - "Connect to the Energize server at $ENERGIZE_PORT." - (let ((e-arg (car command-line-args-left)) - (e-host (getenv "ENERGIZE_PORT"))) ; maybe nil - (if (and e-arg (string-match "\\`[0-9a-fA-F]+[,][0-9a-fA-F]+\\'" e-arg)) - (setq command-line-args-left (cdr command-line-args-left)) - (setq e-arg nil)) - (message "Connecting to Energize...") - (sit-for 0) - (condition-case () - (connect-to-energize e-host e-arg) - (error - (beep) - (if e-host - (message "Failed to connect to Energize at %s." e-host) - (message "Failed to connect to Energize.")) - (sit-for 1))))) - - -;;; Originally defined in frame.el -;;; If we're being invoked with -energize, then set the default -;;; frame name to "energize" -;;; This is a total kludge; there ought to be a hook that gets -;;; run before the first frame is created (either before or -;;; after term/x-win.el is loaded.) - -(or (fboundp 'energize-orig-frame-initialize) - (fset 'energize-orig-frame-initialize - (symbol-function 'frame-initialize))) - -(defun frame-initialize () - (if (let ((rest energize-args)) - (catch 'done - (while rest - (if (member (car (car rest)) command-line-args) - (throw 'done t)) - (setq rest (cdr rest))) - nil)) - (setq default-frame-name "energize")) - (energize-orig-frame-initialize)) - -(defun energize-x-initializations () - (cond ((not noninteractive) - (energize-define-function-keys) - (energize-configure-font-lock-mode t (not (x-color-display-p)) t) - ;; faces will be initialized from the resource database when the first - ;; frame is created. - (let ((rest energize-attributes-mapping)) - (while rest - (make-face (cdr (car rest))) - (setq rest (cdr rest)))) - ))) - -;; Do these bindings after connecting to the X server, but before -;;; loading any init files, so that init files can override them. -(add-hook 'before-init-hook 'energize-x-initializations)
--- a/lisp/energize/energize-load.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -;;; load the elisp side of Energize - -;;; Remember, if you add any files here, you have to mention them in -;;; ymakefile or their docstrings won't be available. - -(load "view-less") -(garbage-collect) -;;; (or (featurep 'font-lock) (load "font-lock")) -;;; (garbage-collect) -;;; (or (featurep 'fast-lock) (load "fast-lock")) -;;; (garbage-collect) -(or (featurep 'dired-extra) (load "dired-x")) -(load "userlock") -(garbage-collect) -(load "comint") -(garbage-collect) -(load "shell") -(garbage-collect) -(load "compile") -(garbage-collect) -(load "gdb") -(garbage-collect) -(load "evi") -(garbage-collect) -(load "energize/energize-init") -(garbage-collect) -(load "energize/energize-windows") -(garbage-collect) -(load "energize/energize-mode") -(garbage-collect) -(load "energize/energize-menus") -(garbage-collect) -(load "energize/energize-shell") -(garbage-collect) -(load "energize/energize-visit-use") -(garbage-collect) -(load "energize/energize-vi") -(garbage-collect) -(load "energize/energize-advice") -(garbage-collect) -(load "energize/energize-font-lock") - -(autoload 'energize-annotate-print-ps "energize-annoprint" t) -(autoload 'energize-set-font-family "energize-font-size" t) -(autoload 'energize-set-font-size "energize-font-size" t) -(autoload 'energize-set-font-boldness "energize-font-size" t) -(autoload 'blink-paren-init "blink-paren" t) - -(if (fboundp (intern-soft "initialize-backtrace-logging-internal")) - (load "energize/backtrace-logging")) - -(provide 'energize)
--- a/lisp/energize/energize-menus.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1207 +0,0 @@ -;;; -*- Mode:Emacs-Lisp -*- -;;; Copyright (C) 1992, 1993, 1994 by Lucid, Inc. All Rights Reserved. -;;; Copyright (C) 1995 by INS Engineering. - -;;; The names of the menu items (as emacs sees them) are short and ugly. -;;; These are the names by which the Energize protocol knows the commands. -;;; The menu items are made to display in a more human-friendly way via the -;;; X resource database, which is expected to contain entries like -;;; -;;; *buildanddebug.labelString: Build and Debug -;;; -;;; in the Emacs app-defaults file. -;;; -;;; We need to map these short Energize-names to the functions which invoke -;;; them; we do this via the energize-menu-item-table, which is an obarray -;;; hash table associating the names with the functions. We do the reverse -;;; association via an 'energize-name property on the function's name symbol. -;;; -;;; Sometimes the short ugly names show up in error messages; probably we -;;; should read the resource database to get the pretty names. - -(require 'menubar) - -(defvar sc-mode nil) ; just so it has a value even if not loaded -(defvar font-lock-mode nil) ; likewise - -(defconst energize-menu-item-table (make-vector 511 nil) - "obarray used for fast mapping of symbolic energize request-names to the -functions that invoke them.") - -(defvar energize-default-menu-state () - "List of the Energize menu items associated with every buffers.") - -(defvar energize-menu-state () - "Buffer local variable listing the menu items associated with a buffer.") - -;; When it is made local, don't kill it when kill-all-local-variables is -;; called (as from the major mode via revert-buffer) or else we tend to lose -;; the information, as the ProposeChoicesRequest comes in at an inopportune -;; time. -(put 'energize-menu-state 'permanent-local t) - -;;; Hook to update the menu state when the kernel tells us it changed - -(defun energize-update-menu-state (items) - (let ((buffer (car items)) - (previous-buffer (current-buffer))) - (if (null buffer) - (setq energize-default-menu-state items) - (unwind-protect - (progn - (set-buffer buffer) - (setq energize-menu-state items)) - (set-buffer previous-buffer))))) - -(setq energize-menu-update-hook 'energize-update-menu-state) - -;;; The energize-with-timeout macro is used to show to the user that we are -;;; waiting for a reply from the energize kernel when it is too slow. - -(defvar initial-energize-timeout-state - (let ((l '("." ".." "..." "...." "....." "......" "......." "........"))) - (nconc l l))) - -(defvar energize-timeout-state initial-energize-timeout-state) - -(defun energize-warn-kernel-slow (pair) - (setq energize-timeout-state (cdr energize-timeout-state)) - (message "%s Type %c to cancel%s" - (car pair) (quit-char) (car energize-timeout-state)) - (rplacd pair t)) - -(defmacro energize-with-timeout (notice &rest body) - (list 'let* (list - (list 'timeout-pair (list 'cons notice nil)) - '(timeout (add-timeout 1.5 'energize-warn-kernel-slow - timeout-pair 1.5))) - (list 'unwind-protect (cons 'progn body) - '(disable-timeout timeout) - '(setq energize-timeout-state initial-energize-timeout-state) - '(if (cdr timeout-pair) (message ""))))) - -(defun energize-def-menu-item (name function &optional dont-define) - ;; function->name mapping is on the function name's plist - ;; name->function mapping is via an obarray - ;; dont-define means it already has a function definition - (put function 'energize-name (purecopy name)) - (set (intern name energize-menu-item-table) function) - ;; Define the (trivial) function - ;; It's ok that this function is interpreted, because it contains only - ;; one function call with constant args, so it's just as fast as it would - ;; be if it were byte-coded. - (if (not dont-define) - (fset function - (purecopy - (` (lambda () - (, (format "Executes the Energize \"%s\" command." name)) - (interactive) - (energize-execute-command (, name))))))) - ;; Return the menu-item descriptor. - (vector (purecopy name) function nil nil)) - -(defmacro energize-def-menu (menu-name &rest items) - (` (list (, menu-name) - (,@ (mapcar - '(lambda (x) - (if (and (consp x) (stringp (car x))) - (cons 'energize-def-menu-item - (mapcar '(lambda (xx) - (if (stringp xx) - (purecopy xx) - (list 'quote xx))) - x)) - x)) - items))))) - -(put 'energize-def-menu 'lisp-indent-function 1) - - -;; If menubar-religion is 'winning, the menubar looks like jwz likes it. -;; If menubar-religion is 'losing, the menubar looks like Gareth and the -;; documentation folks like it. See also menubar.el - it consults this -;; variable for the layout of the File menu which is inherited here. - -(defconst energize-menubar - (purecopy-menubar - (list - ["sheet" energize-toggle-psheet nil] - - ;; Perform some surgery on the default File menu to insert our items. - ;; This is to avoid having to duplicate it here... Don't try this at - ;; home, kids! -;;; (let* ((file (copy-sequence -;;; (car (find-menu-item default-menubar '("File"))))) -;;; (print (car (find-menu-item file '("Print Buffer")))) -;;; (exit (car (find-menu-item file '("Exit XEmacs")))) -;;; (print-cons (memq print file)) -;;; (exit-cons (memq exit file)) -;;; ) -;;; ;; Insert "Print Annotated" just after "Print" -;;; (setcdr print-cons (cons '["Print Annotated Buffer" -;;; energize-annotate-print-ps -;;; t] -;;; (cdr print-cons))) -;;; -;;; ;; Insert "Checkpoint" and "Shutdown" just before "Exit XEmacs". -;;; (setcar exit-cons ["Connect to Energize" energize-menu-connect-directly -;;; (not (connected-to-energize-p))]) -;;; (setcdr exit-cons -;;; (nconc -;;; (list (energize-def-menu-item "checkpoint" -;;; 'energize-checkpoint-database) -;;; ["Disconnect from Energize" disconnect-from-energize -;;; (connected-to-energize-p)] -;;; "----" -;;; (energize-def-menu-item "energizeShutdownServer" -;;; 'energize-kill-server) -;;; ) -;;; (if (not (eq menubar-religion 'winning)) -;;; (list "----")) -;;; (list exit))) -;;; file) - ;; this is the losing menubar-religion... - (` ("File" - ["New Frame" make-frame t] - ["Open..." find-file t] - ["Save" save-buffer nil "menubar.el"] - ["Save As..." write-file t] - ["Save Some Buffers" save-some-buffers t] - "------" - ["Insert File..." insert-file t] - "-----" - ["Print Buffer" lpr-buffer t nil] - ["Print Annotated Buffer" energize-annotate-print-ps t] - "-----" - ["Delete Frame" delete-frame t] - ["Kill Buffer" kill-this-buffer t nil] - ["Revert Buffer" revert-buffer t nil] - "-----" - ("Compare" - ["Two Files ..." ediff-files t] - ["Two Buffers ..." ediff-buffers t] - ["Three Files ..." ediff-files3 t] - ["Three Buffers ..." ediff-buffers3 t] - ["Windows ..." ediff-windows t] - ["Small Regions ..." ediff-small-regions t] - ["Large Regions ..." ediff-large-regions t] - ["File with Revision ..." ediff-revision t]) - ("Merge" - ["Files ..." ediff-merge-files t] - ["Files with Ancestor ..." ediff-merge-files-with-ancestor t] - ["Buffers ..." ediff-merge-buffers t] - ["Buffers with Ancestor ..." ediff-merge-buffers-with-ancestor t] - ["Revisions ..." ediff-merge-revisions t] - ["Revisions with Ancestor ..." ediff-merge-revisions-with-ancestor t] - ) - ("Apply Patch" - ["To a file ..." ediff-patch-file t] - ["To a buffer ..." ediff-patch-buffer t]) - "-----" - ["Connect to Energize" energize-menu-connect-directly - (not (connected-to-energize-p))] - (, (energize-def-menu-item "checkpoint" 'energize-checkpoint-database)) - ["Disconnect from Energize" disconnect-from-energize - (connected-to-energize-p)] - "----" - (, (energize-def-menu-item "energizeShutdownServer" 'energize-kill-server)) - "----" - ["Exit XEmacs" save-buffers-kill-emacs t])) - - ;; Energize also adds some menu items to the middle of the "Edit" menu. - ;; Someday these should be moved to the default menubar, maybe, once it's - ;; easier to define `energize-search' in a non-Energize world. - (let* ((edit (copy-sequence - (car (find-menu-item default-menubar '("Edit"))))) - (clear (car (find-menu-item edit '("Clear")))) - (clear-cons (memq clear edit)) - ) - ;; Insert these just after "Clear" - (setcdr clear-cons - (append '("-----" - ["Search and Replace..." energize-search t] - ["Search Selection Forward" ow-find - (or ow-find-last-string (x-selection-owner-p))] - ["Search Selection Backward" ow-find-backward - (or ow-find-last-string (x-selection-owner-p))] - ) - (cdr clear-cons))) - edit) - - (energize-def-menu "Browse" - ["editdef" energize-edit-definition t] - ("editdec" energize-edit-declaration-dbox) - ("calltreebrowser" energize-browse-tree) - ("classbrowser" energize-browse-class) - ("lebrowser" energize-browse-language-elt) - ("includers" energize-where-included) - "-----" - - ;; Make Energize control the selectability of these, but don't define - ;; the functions here (they are defined in lisp, not as aliases for - ;; an Energize command.) - - ;; No, this doesn't seem to work. Energize disowns all knowledge. - ["visituse" energize-next-use-start (connected-to-energize-p)] - ["nextuse" energize-next-use-command (connected-to-energize-p)] - "-----" - ["List History" energize-history (connected-to-energize-p)] - ["Step Back in History" energize-history-previous (connected-to-energize-p)] - "-----" - ("energize" energize-pop-to-energize-buffer) - ("showsystemlog" energize-browse-system-log) - ("errorbrowser" energize-browse-error) - "-----" - ("toolstatus" energize-browse-toolstat) - ["Shell" shell t] - ) - - (if (eq menubar-religion 'winning) - - (list - ;; Winning - "Options" - (energize-def-menu-item "debuggerpanel" 'energize-show-debugger-panel) - "------" - ["Read Only" toggle-read-only :style toggle :selected buffer-read-only] - ["Case Sensitive Search" (setq case-fold-search (not case-fold-search)) - :style toggle :selected (not case-fold-search)] - ["Case Sensitive Replace" (setq case-replace (not case-replace)) - :style toggle :selected (not case-replace)] - ["Overstrike" overwrite-mode :style toggle :selected overwrite-mode] - ["Auto Delete Selection" (if (memq 'pending-delete-pre-hook - pre-command-hook) - (pending-delete-off nil) - (pending-delete-on nil)) - :style toggle :selected (memq 'pending-delete-pre-hook pre-command-hook)] - ["Teach Extended Commands" (setq teach-extended-commands-p - (not teach-extended-commands-p)) - :style toggle :selected teach-extended-commands-p] - ["Debug On Error" (setq debug-on-error (not debug-on-error)) - :style toggle :selected debug-on-error] -; ["Line Numbers" (line-number-mode nil) -; :style toggle :selected line-number-mode] - (append '("Syntax Highlighting" - ["None" (font-lock-mode 0) :style radio :selected (null font-lock-mode)]) - (and (not (string-match "Widec" emacs-version)) - (list ["Fonts" (progn (require 'font-lock) - (font-lock-use-default-fonts) - (font-lock-mode 1)) - :style radio - :selected (and font-lock-mode - (equal (find-face 'italic) ; kind of a kludge... - (find-face 'font-lock-comment-face)))])) - '( - ["Colors" (progn (require 'font-lock) - (font-lock-use-default-colors) - (font-lock-mode 1)) - :style radio - :selected (and font-lock-mode - (not (equal (find-face 'italic) - (find-face 'font-lock-comment-face))))] - "-----" - ["Less" (progn (require 'font-lock) - (font-lock-use-default-minimal-decoration) - (font-lock-mode 0) - (font-lock-mode 1)) - :style radio - :selected (and font-lock-mode - (eq c++-font-lock-keywords c-font-lock-keywords-1))] - ["More" (progn (require 'font-lock) - (font-lock-use-default-maximal-decoration) - (font-lock-mode 0) - (font-lock-mode 1)) - :style radio - :selected (and font-lock-mode - (eq c++-font-lock-keywords c-font-lock-keywords-2))] - "-----" - ["Fast" (progn (require 'fast-lock) - (if fast-lock-mode - (progn - (fast-lock-mode 0) - ;; this shouldn't be necessary so there has to - ;; be a redisplay bug lurking somewhere (or - ;; possibly another event handler bug) - (force-mode-line-update)) - (if font-lock-mode - (progn - (fast-lock-mode 1) - (force-mode-line-update))))) - :active font-lock-mode - :style toggle - :selected fast-lock-mode] - )) - '("Paren Highlighting" - ["None" (paren-set-mode -1) - :style radio :selected (not paren-mode)] - ["Blinking Paren" (paren-set-mode 'blink-paren) - :style radio :selected (eq paren-mode 'blink-paren)] - ["Steady Paren" (paren-set-mode 'paren) - :style radio :selected (eq paren-mode 'paren)] - ["Expression" (paren-set-mode 'sexp) - :style radio :selected (eq paren-mode 'sexp)] - ["Nested Shading" (paren-set-mode 'nested) - :style radio :selected (eq paren-mode 'nested) :enabled nil] - ) - "------" - '("Font" "initialized later") - '("Size" "initialized later") - '("Weight" "initialized later") - ["Edit faces" edit-faces t] - "-----" - ["Energize Edit Modes..." energize-set-edit-modes t] - (energize-def-menu-item "setprojectdisplay" - 'energize-set-project-display) - (list "Target Display" - (energize-def-menu-item "fulltargets" - 'energize-full-targets) - (energize-def-menu-item "abbreviatetargets" - 'energize-abbreviate-targets)) - '("Source Control" - ["None" (sc-mode nil) :style radio :selected (eq sc-mode nil)] - ["SCCS" (sc-mode 'SCCS) :style radio :selected (eq sc-mode 'SCCS)] - ["RCS" (sc-mode 'RCS) :style radio :selected (eq sc-mode 'RCS)] - ["CVS" (sc-mode 'CVS) :style radio :selected (eq sc-mode 'CVS)] - ["ClearCase" (sc-mode 'CCASE):style radio :selected (eq sc-mode 'CCASE)] - ) - "-----" - ["Buffers Menu Length..." - (progn - (setq buffers-menu-max-size - (read-number - "Enter number of buffers to display (or 0 for unlimited): ")) - (if (eq buffers-menu-max-size 0) (setq buffers-menu-max-size nil))) - t] - ["Buffers Sub-Menus" (setq complex-buffers-menu-p - (not complex-buffers-menu-p)) - :style toggle :selected complex-buffers-menu-p] - "-----" - ["Save Options" save-options-menu-settings t] - ) - - (list - ;; Non-winning - "Options" - ["Split Screen" split-window-vertically t] - ["Unsplit" delete-other-windows t] - "------" - (energize-def-menu-item "debuggerpanel" 'energize-show-debugger-panel) - "------" - ["Read Only" toggle-read-only :style toggle :selected buffer-read-only] - ["Overstrike " overwrite-mode :style toggle :selected overwrite-mode] - ["Auto Delete Selection" (if (memq 'pending-delete-pre-hook - pre-command-hook) - (pending-delete-off nil) - (pending-delete-on nil)) - :style toggle :selected (memq 'pending-delete-pre-hook pre-command-hook)] - ["Teach Extended" (setq teach-extended-commands-p - (not teach-extended-commands-p)) - :style toggle :selected teach-extended-commands-p] - "------" - '("Font" "initialized later") - '("Size" "initialized later") - '("Weight" "initialized later") - "------" - (append '("Syntax Highlighting" - ["None" (font-lock-mode 0) :style radio :selected (null font-lock-mode)]) - (and (not (string-match "Widec" emacs-version)) - (list ["Fonts" (progn (require 'font-lock) - (font-lock-use-default-fonts) - (font-lock-mode 1)) - :style radio - :selected (and font-lock-mode - (equal (find-face 'italic) ; kind of a kludge... - (find-face 'font-lock-comment-face)))])) - '( - ["Colors" (progn (require 'font-lock) - (font-lock-use-default-colors) - (font-lock-mode 1)) - :style radio - :selected (and font-lock-mode - (not (equal (find-face 'italic) - (find-face 'font-lock-comment-face))))] - "-----" - ["Less" (progn (require 'font-lock) - (font-lock-use-default-minimal-decoration) - (font-lock-mode 0) - (font-lock-mode 1)) - :style radio - :selected (and font-lock-mode - (eq c++-font-lock-keywords c-font-lock-keywords-1))] - ["More" (progn (require 'font-lock) - (font-lock-use-default-maximal-decoration) - (font-lock-mode 0) - (font-lock-mode 1)) - :style radio - :selected (and font-lock-mode - (eq c++-font-lock-keywords c-font-lock-keywords-2))] - "-----" - ["Fast" (progn (require 'fast-lock) - (if fast-lock-mode - (progn - (fast-lock-mode 0) - ;; this shouldn't be necessary so there has to - ;; be a redisplay bug lurking somewhere (or - ;; possibly another event handler bug) - (force-mode-line-update)) - (if font-lock-mode - (progn - (fast-lock-mode 1) - (force-mode-line-update))))) - :active font-lock-mode - :style toggle - :selected fast-lock-mode] - )) - - '("Paren Highlighting" - ["None" (blink-paren 0) - :style radio - :selected (not (memq 'blink-paren-pre-command pre-command-hook))] - ["Blink" (progn - (setq highlight-paren-expression nil) - (blink-paren 1)) - :style radio - :selected (and (not highlight-paren-expression) - (memq 'blink-paren-pre-command pre-command-hook))] - ["Highlight" (progn - (setq highlight-paren-expression t) - (blink-paren 1)) - :style radio - :selected (and highlight-paren-expression - (memq 'blink-paren-pre-command pre-command-hook))] - ) - "-----" - ["Energize Edit Modes..." energize-set-edit-modes t] - (energize-def-menu-item "setprojectdisplay" - 'energize-set-project-display) - (list "Target Display" - (energize-def-menu-item "fulltargets" - 'energize-full-targets) - (energize-def-menu-item "abbreviatetargets" - 'energize-abbreviate-targets)) - "-----" - ["Buffers Length..." - (progn - (setq buffers-menu-max-size - (read-number - "Enter number of buffers to display (or 0 for unlimited): ")) - (if (eq buffers-menu-max-size 0) (setq buffers-menu-max-size nil))) - t] - ["Buffers Menus" (setq complex-buffers-menu-p - (not complex-buffers-menu-p)) - :style toggle :selected complex-buffers-menu-p] - "-----" - '("Source Control" - ["None" (sc-mode nil) :style radio :selected (eq sc-mode nil)] - ["SCCS" (sc-mode 'SCCS) :style radio :selected (eq sc-mode 'SCCS)] - ["RCS" (sc-mode 'RCS) :style radio :selected (eq sc-mode 'RCS)] - ["CVS" (sc-mode 'CVS) :style radio :selected (eq sc-mode 'CVS)] - ["ClearCase" (sc-mode 'CCASE):style radio :selected (eq sc-mode 'CCASE)] - ) - "-----" - ["Save Options" save-options-menu-settings t] - ) - - ) - - (if (eq menubar-religion 'winning) - - (energize-def-menu "Debug" - ;; Winning - ("debugprogram" energize-debug-target) - ("runprogram" energize-run-target) - "-----" - ;; Make Energize control the selectability of the setbreakpoint item, but - ;; don't define the function here (it just runs the existing gdb-break - ;; command, which is advised to hack Energize.) - ("setbreakpoint" gdb-break t) - ("breaklist" energize-list-breakpoints) - "-----" - ["Next Error" next-error t] - ["Previous Error" previous-error - :keys "\\[universal-argument] \\[next-error]"] - ("errorbrowser" energize-browse-error) - ("clearerrorlog" energize-clear-error-log) - ("cleardebuggerlog" energize-clear-debugger-log) - "-----" - ("closeprogram" energize-debugger-kill-program) - ("quitdebugger" energize-quit-debugger) - ) - - (energize-def-menu "Debug" - ;; Non-winning - ("debugprogram" energize-debug-target) - ("runprogram" energize-run-target) - "-----" - ;; Make Energize control the selectability of the setbreakpoint item, but - ;; don't define the function here (it just runs the existing gdb-break - ;; command, which is advised to hack Energize.) - ("setbreakpoint" gdb-break t) - "-----" - ("debuggerpanel" energize-show-debugger-panel) - "-----" - ("breaklist" energize-list-breakpoints) - ("cleardebuggerlog" energize-clear-debugger-log) - "-----" - ("errorbrowser" energize-browse-error) - ("clearerrorlog" energize-clear-error-log) - "-----" - ["Next Error" next-error t] - ["Previous Error" previous-error - :keys "\\[universal-argument] \\[next-error]"] - "-----" - ("closeprogram" energize-debugger-kill-program) - "-----" - ("quitdebugger" energize-quit-debugger) - ) - ) - - (if (eq menubar-religion 'winning) - - (energize-def-menu "Compile" - ;; Winning - ("buildatarget" energize-build-a-target) - ("custombuildatarget" energize-custom-build-a-target) -;; Matthieu believed that this could be done now; however it would seem that -;; it still can't. So out it goes for the time being. -;; "-----" -;; ("Terminate Build" energize-abort-build) - "-----" - ["Next Error" next-error t] - ["Previous Error" previous-error - :keys "\\[universal-argument] \\[next-error]"] - ("errorbrowser" energize-browse-error) - ("clearerrorlog" energize-clear-error-log) - "-----" - ("defaultcompile" energize-default-compile-file) - ("custombuildfile" energize-custom-build-file) - "-----" - ("deleteallobjects" energize-delete-object-files) - ) - - (energize-def-menu "Compile" - ;; Non-winning - ("buildatarget" energize-build-a-target) - ("custombuildatarget" energize-custom-build-a-target) - "-----" - ("defaultcompile" energize-default-compile-file) - ("custombuildfile" energize-custom-build-file) - "-----" - ("errorbrowser" energize-browse-error) - ("clearerrorlog" energize-clear-error-log) - "-----" - ["Next Error" next-error t] - ["Previous Error" previous-error - :keys "\\[universal-argument] \\[next-error]"] -;; Matthieu believed that this could be done now; however it would seem that -;; it still can't. So out it goes for the time being. -;; "-----" -;; ("Terminate Build" energize-abort-build) - "-----" - ("deleteallobjects" energize-delete-object-files) - ) - ) - - (if (eq menubar-religion 'winning) - - (list "Project" - ;; Winning - (energize-def-menu-item "newproject" 'energize-new-project) - (energize-def-menu-item "findproject" 'energize-find-project) - ["Save Project" save-buffer (eq major-mode 'energize-project-mode)] - ["Current Project" energize-pop-to-project-buffer nil nil] - (energize-def-menu-item "energize" 'energize-pop-to-energize-buffer) - "-----" - '("addprojectentry" - ["addobjectfiletarget" energize-insert-object-file-target - (eq major-mode 'energize-project-mode)] - "-----" - ["addexecutabletarget" energize-insert-executable-target - (eq major-mode 'energize-project-mode)] - ["addlibrarytarget" energize-insert-library-target - (eq major-mode 'energize-project-mode)] - ["addcollectiontarget" energize-insert-collection-target - (eq major-mode 'energize-project-mode)] - "-----" - ["addtargettarget" energize-insert-target-target - (eq major-mode 'energize-project-mode)] - ["addfiletarget" energize-insert-file-target - (eq major-mode 'energize-project-mode)] - "-----" - ["addrule" energize-insert-rule - (eq major-mode 'energize-project-mode)] - ) - (energize-def-menu-item "instrumentatarget" 'energize-instrument-a-target) - "-----" - (energize-def-menu-item "importproject" 'energize-import-project) - (energize-def-menu-item "importprojectlist" 'energize-import-project-list) - (energize-def-menu-item "writeprojectlist" 'energize-write-project-list) - "-----" - (energize-def-menu-item "setprojectdisplay" - 'energize-set-project-display) - (list "Target Display" - (energize-def-menu-item "fulltargets" - 'energize-full-targets) - (energize-def-menu-item "abbreviatetargets" - 'energize-abbreviate-targets)) - "-----" - (energize-def-menu-item "revertproject" - 'energize-fully-revert-project-buffer) - ) - - (list "Project" - ;; Non-winning - (energize-def-menu-item "newproject" 'energize-new-project) - (energize-def-menu-item "findproject" 'energize-find-project) - ["Save Project" save-buffer (eq major-mode 'energize-project-mode)] - "-----" - (energize-def-menu-item "energize" 'energize-pop-to-energize-buffer) - ["Current Project" energize-pop-to-project-buffer nil nil] - "-----" - ["New C/C++ File" energize-insert-object-file-target - (eq major-mode 'energize-project-mode)] - '("addprojectentry" - ["addobjectfiletarget" energize-insert-object-file-target - (eq major-mode 'energize-project-mode)] - "-----" - ["addexecutabletarget" energize-insert-executable-target - (eq major-mode 'energize-project-mode)] - ["addlibrarytarget" energize-insert-library-target - (eq major-mode 'energize-project-mode)] - ["addcollectiontarget" energize-insert-collection-target - (eq major-mode 'energize-project-mode)] - "-----" - ["addtargettarget" energize-insert-target-target - (eq major-mode 'energize-project-mode)] - ["addfiletarget" energize-insert-file-target - (eq major-mode 'energize-project-mode)] - "-----" - ["addrule" energize-insert-rule - (eq major-mode 'energize-project-mode)] - ) - "-----" - (energize-def-menu-item "instrumentatarget" 'energize-instrument-a-target) - "-----" - (energize-def-menu-item "importproject" 'energize-import-project) - (energize-def-menu-item "importprojectlist" 'energize-import-project-list) - "-----" - (energize-def-menu-item "writeprojectlist" 'energize-write-project-list) - "-----" - (energize-def-menu-item "setprojectdisplay" - 'energize-set-project-display) - (list "Target Display" - (energize-def-menu-item "fulltargets" - 'energize-full-targets) - (energize-def-menu-item "abbreviatetargets" - 'energize-abbreviate-targets)) - "-----" - (energize-def-menu-item "revertproject" - 'energize-fully-revert-project-buffer) - ) - ) - - - '("Buffers" ["List All Buffers" list-buffers t] - "--!here" ; anything after this will be nuked - ) - - nil ; the partition: menus after this are flushright - - ;; We don't make any changes to the Help menu. - ;; WelcomeMat requires one change: added separately though - (car (find-menu-item default-menubar '("Help"))) - ))) - -;; For this command, the menu name (the resource) is "currentproject" -;; but the Energize command is "project". the Energize command is -;; historical, and the resource name was changed so that the "Project" -;; menu and the "Project" menu item don't necessarily have to be the -;; same text. -;; -(energize-def-menu-item "project" 'energize-pop-to-project-buffer) - -;; code for tighter integration with specific tools - -(defun energize-menu-connect-directly () - (interactive) - (connect-to-energize nil)) - -(defvar energize-instrument-menu-options nil - "List of menu items which are instruments for Energize targets") - -(defun energize-define-instrumentatarget-using-tool (tool) - "Add a menu item (and function) supporting instrumenting a particular tool" - (let ((function (intern (concat "energize-instrumentatarget-using-" tool))) - (l energize-instrument-menu-options) - (name (if (equal tool "") "DBX Compatible" (capitalize tool)))) - (add-menu-item '("Project") (cons name "") - function - '(connected-to-energize-p) - "instrumentatarget") - (add-hook 'energize-hack-popup-hook 'energize-hack-instruments-in-popup) - (while (and l (not (equal (car l) tool))) - (setq l (cdr l))) - (if (null l) (setq energize-instrument-menu-options - (cons tool energize-instrument-menu-options))) - (fset function - (` (lambda () - (, (format "Instruments a target using \"%s\"" tool)) - (interactive) - (energize-execute-command "instrumentatarget" nil - (, tool) t)))))) - -(defun energize-hack-instruments-in-popup (ex m) - (let ((l (cdr m))) - (while l - (if (equal (aref (car l) 0) "instrument") - (let ((r energize-instrument-menu-options) - v) - (while r - (setq v (vconcat (car l))) - (let ((name - (if (equal (car r) "") "DBX Compatible" - (capitalize (car r))))) - (aset (car l) 0 name)) - (aset (car l) 1 (intern (concat - "energize-instrumentatarget-using-" - (car r)))) - (setcdr l (cons v (cdr l))) - (setq r (cdr r))) - (setq l nil)) - (setq l (cdr l)))) - m)) - -(defun energize-sensitize-instruments-hook () - "Sensitize the menubar by adding the executable to any derived -instrumented targets" - (condition-case nil ; in case Project menu doesn't exist - (let* ((l energize-instrument-menu-options) - (institem - (car (find-menu-item current-menubar - '("Project" "instrumentatarget")))) - (exenable (aref institem 2)) - (exname (aref institem 3)) - item) - (while l - (let ((citem (if (equal (car l) "") "DBX Compatible" (car l)))) - (setq item (car (find-menu-item current-menubar - (list "Project" citem))))) - (aset item 2 exenable) - (aset item 3 exname) - (setq l (cdr l)))) - (error nil))) - -(defun energize-set-default-menubar () - (set-menubar energize-menubar) - (add-hook 'activate-menubar-hook 'build-buffers-menu-hook) - (add-hook 'activate-menubar-hook 'sensitize-file-and-edit-menus-hook) - (add-hook 'activate-menubar-hook 'energize-sensitize-instruments-hook 't) - (setq buffers-menu-max-size 20) - (setq complex-buffers-menu-p nil)) - -(energize-set-default-menubar) - - -;; enable purify & plain dbx by default -;; you can enable the others by copying to .emacs and uncommenting ... -;; can't do this here because this file comes preloaded. - -(energize-define-instrumentatarget-using-tool "") -(energize-define-instrumentatarget-using-tool "purify") -;; (energize-define-instrumentatarget-using-tool "quantify") -;; (energize-define-instrumentatarget-using-tool "sentinel") -;; (energize-define-instrumentatarget-using-tool "tc") -;; (energize-define-instrumentatarget-using-tool "time") -;; (energize-define-instrumentatarget-using-tool "xproba") - -;; add the menu item Help->About Energize for the Energize Welcome Mat -(add-menu-item '("Help") (purecopy "About Energize") - 'energize-about-energize t) - -(defun energize-about-energize () - (interactive) - (start-process "about-energize" nil "about_energize")) - -(defun energize-kill-server () - "Kill the Energize server and all buffers associated with it." - (interactive) - (condition-case nil - (energize-execute-command "energizeShutdownServer") - (error nil))) - -(defun energize-unix-manual () - "Display a manual entry; if connected to Energize, uses the Energize version. -Otherwise, just runs the normal emacs `manual-entry' command." - (interactive) - (if (connected-to-energize-p) - (energize-execute-command "manual") - (call-interactively 'manual-entry))) - -;;; These functions are used in the menubar activate hook to update the -;;; enable state of the menu items - -(defvar active-items) ; quiet compiler -(defsubst activate-energize-menu-item-internal (item) - (cond - ((vectorp item) - (let ((fn (aref item 1))) - (if (not (and (symbolp fn) (get fn 'energize-name))) - nil - ;; Referencing special binding of `active-items' from a-e-m-i-hook. - ;; If the function which this item invokes is an Energize function - ;; (determined by the presence of an 'energize-name property) then - ;; make it be active iff it's on the active-items list. - (let ((active-p (assq fn active-items)) - (change-p nil)) - (if (not (eq (not active-p) (not (aref item 2)))) - (progn - (aset item 2 (not (not active-p))) - (setq change-p t))) - (if (and active-p - (not (equal (cdr active-p) - (if (> (length item) 3) - (aref item 3) - nil)))) - (progn - (aset item 3 (cdr active-p)) - (setq change-p t))) - change-p)))) - ((consp item) ; descend nested submenus - (activate-energize-menu-items-internal (cdr item))) - (t nil))) - -(defun activate-energize-menu-items-internal (items) - (let ((change-p nil)) - (if (not (consp items)) - (activate-energize-menu-item-internal items) - (while items - (setq change-p (or (activate-energize-menu-item-internal (car items)) - change-p) - items (cdr items))) - change-p))) - -(defun energize-build-menubar-names () - ;;; makes the list of currently active menu items. - (let* ((selection-p (x-selection-exists-p 'PRIMARY)) - (menubar - (if (< (cdr (energize-protocol-level)) 7) - (energize-with-timeout - "Getting updated menubar from Energize server..." - (energize-list-menu (current-buffer) () selection-p)) - (append energize-menu-state energize-default-menu-state)))) - (delq nil - (mapcar '(lambda (x) - (and (vectorp x) - (if (/= 0 (logand 1 (aref x 3))) - nil - (cons - (symbol-value - (intern-soft (aref x 0) - energize-menu-item-table)) - (aref x 4))))) - menubar)))) - -(defun activate-energize-menu-items-hook () - ;; This is O^2 because of the `rassq', but it looks like the elisp part - ;; of it only takes .03 seconds. - (if (connected-to-energize-p) - (let* ((items current-menubar) - (change-p nil) - ;; dynamically used by activate-energize-menu-item-internal - (active-items (energize-build-menubar-names)) - item) - (while items - (setq item (car items) - change-p (or (and item (activate-energize-menu-items-internal - (if (consp item) (cdr item) item))) - change-p) - items (cdr items))) - (not change-p)))) - -(add-hook 'activate-menubar-hook 'activate-energize-menu-items-hook t) - -(defun deactivate-all-energize-menu-items () - (let ((items current-menubar) - ;; dynamically used by activate-energize-menu-item-internal - (active-items nil) - item) - (while items - (if (setq item (car items)) - (activate-energize-menu-items-internal - (if (consp item) (cdr item) item))) - (setq items (cdr items))))) - - -;;; The Options menu - -(setq options-menu-saved-forms - (purecopy - (append - options-menu-saved-forms - '((list 'energize-set-edit-modes - (if energize-external-editor - (symbol-name energize-external-editor)) - (list 'quote energize-vi-terminal-emulator) - (list 'quote energize-internal-viewer) - (list 'quote energize-internal-editor) - (cond ((get 'browser 'instance-limit) ''multi) - ((get 'energize-top-level-mode 'screen-name) - ''several) - (t ''single)) - (list 'quote energize-split-screens-p) - ) - (if sc-mode - (list 'sc-mode (list 'quote sc-mode)) - '(if (featurep 'generic-sc) (sc-mode nil))) - )))) - - -;;; Popup-menus - -(defvar energize-popup-menu) - -(defvar energize-hack-popup-hook '() - "Hook for all functions that want to hack at the Energize popup menus. -Each function takes two arguments: an extent (or nil if none) and a menu -(or nil if none currently). It should return a menu (or nil)") - -(defun energize-popup-menu (event) - (interactive "e") - (if (popup-menu-up-p) - () - (if (null (event-over-text-area-p event)) - ;; clicking in non-text areas was causing errors...way bogus! - (popup-mode-menu) - (let* ((buffer (event-buffer event)) - (extent (if (extentp (event-glyph-extent event)) - (event-glyph-extent event) - (energize-menu-extent-at (event-point event) buffer))) - choices) - (select-window (event-window event)) - (if extent - (progn - (energize-with-timeout - "Asking Energize server for menu contents..." - (setq choices - (cdr - (cdr - (energize-list-menu buffer extent - (x-selection-exists-p 'PRIMARY)))))))) - (if (or (null extent) (null choices)) - (if (null (setq energize-popup-menu - (energize-extent-run-hook energize-hack-popup-hook - nil nil))) - (error "No menu to pop up")) - (force-highlight-extent extent t) - (sit-for 0) - (setq energize-popup-menu - (cons "energizePopup" - (mapcar - (function (lambda (item) - (vector - (aref item 0) - (list 'energize-execute-command - (aref item 0) - extent) - (= 0 (logand 1 (aref item 3))) - (aref item 4)))) - choices))) - (setq energize-popup-menu - (external-editor-hack-popup - (energize-extent-run-hook energize-hack-popup-hook - extent energize-popup-menu)))) - (if (equal (car energize-popup-menu) "energizePopup") - (let ((popup-menu-titles nil)) - (popup-menu 'energize-popup-menu)) - (popup-menu 'energize-popup-menu)))))) - -(defun energize-extent-run-hook (f ex m) - (if f - (energize-extent-run-hook (cdr f) ex (funcall (car f) ex m)) - m)) - -;;; Functions to interactively execute menu items by their names. - -(defun energize-menu-extent-at (pos buffer) - (if (null pos) - nil - (let ((extent (energize-extent-at pos buffer))) - (if (and extent (energize-extent-menu-p extent)) - extent - nil)))) - -;;; functions to execute the menu with the keyboard -(defun default-selection-value-for-item (menu-item) - (let ((flags (aref menu-item 3))) - (cond ((= (logand flags 2) 2) - (if (x-selection-owner-p 'PRIMARY) - (x-get-selection-internal 'PRIMARY 'STRING))) - ((= (logand flags 4) 4) - (if (x-selection-owner-p 'PRIMARY) - (x-get-selection-internal 'PRIMARY 'ENERGIZE_OBJECT))) - ((= (logand flags 128) 128) - (if (x-selection-owner-p 'SECONDARY) - (x-get-selection-internal 'SECONDARY 'STRING))) - ((= (logand flags 256) 256) - (if (x-selection-owner-p 'SECONDARY) - (x-get-selection-internal 'SECONDARY 'ENERGIZE_OBJECT)))))) - -(defun energize-execute-menu-item-with-selection (buffer - extent - item - selection - no-confirm) - (if (/= 0 (logand 1 (aref item 3))) - (error "The `%s' command is inappropriate in this context" - (aref item 0))) - (if (null selection) - (setq selection (default-selection-value-for-item item))) - (energize-execute-menu-item buffer extent item selection no-confirm)) - -(defun energize-find-item (name list) - (let ((l list) i (found ())) - (while (and l (not found)) - (setq i (car l) l (cdr l)) - (if (and (vectorp i) (equal (aref i 0) name)) - (setq found i))) - found)) - -(defun energize-menu-item-for-name (extent name) - (if (or extent (< (cdr (energize-protocol-level)) 7)) - (energize-with-timeout - "Checking Energize command with kernel..." - (energize-list-menu (current-buffer) extent - (x-selection-exists-p 'PRIMARY) name)) - (or (energize-find-item name energize-menu-state) - (energize-find-item name energize-default-menu-state)))) - -(defun energize-execute-command (name &optional extent selection no-confirm) - ;; add completion here... - (interactive "sExecute Energize command named: ") - - (if (not (stringp name)) - (error "Can't execute a choice, %s, that is not a string" name)) - - (or (connected-to-energize-p) (error "Not connected to Energize")) - - ;; patch the selection argument for "setbreakpoint" - (if (and (equal name "setbreakpoint") - (null selection)) - (setq selection - (save-excursion - (vector (energize-buffer-id (current-buffer)) - (progn (beginning-of-line) - (energize-file-position (point)))) - (progn (end-of-line) - (energize-file-position (point)))))) - (let* ((buffer (current-buffer)) - (extent (if extent - (if (extentp extent) - extent - (energize-menu-extent-at (point) buffer)) - nil))) - (if (< (cdr (energize-protocol-level)) 7) - ;; old way - (let ((item (energize-menu-item-for-name extent name))) - (if (not item) - (error "No Energize command named %s" name)) - (energize-execute-menu-item-with-selection buffer extent item - selection no-confirm)) - ;; new way - (if (and (null selection) - (x-selection-exists-p 'PRIMARY)) - (setq selection - (condition-case - () - (x-get-selection-internal 'PRIMARY 'STRING) - (error "")))) - (let ((energize-make-many-buffers-visible-should-enqueue-event - (equal name "save"))) - (energize-execute-command-internal buffer - extent - name - selection - no-confirm))))) - - - -;;; Buffer modified the first time hook -;;; Should be in energize-init.el but is here to benefit from the -;;; add-timeout macro - -(defun energize-check-if-buffer-locked () - (if (connected-to-energize-p) - (energize-with-timeout - "Asking Energize server if buffer is editable..." - (energize-barf-if-buffer-locked)))) - -(add-hook 'first-change-hook 'energize-check-if-buffer-locked) - - -;;; Here's a converter that makes emacs understand how to convert to -;;; selections of type ENERGIZE. Eventually the Energize server won't -;;; be using the selection mechanism any more, I hope. - -(defun xselect-convert-to-energize (selection type value) - (let (str id start end tmp) - (cond ((and (consp value) - (markerp (car value)) - (markerp (cdr value))) - (setq id (energize-buffer-id (marker-buffer (car value))) - start (1- (marker-position (car value))) ; zero based - end (1- (marker-position (cdr value))))) - ((extentp value) - (setq id (extent-to-generic-id value) - start 0 - end 0))) - (if (null id) - nil - (setq str (make-string 12 0)) - (if (< end start) (setq tmp start start end end tmp)) - (aset str 0 (logand (ash (car id) -8) 255)) - (aset str 1 (logand (car id) 255)) - (aset str 2 (logand (ash (cdr id) -8) 255)) - (aset str 3 (logand (cdr id) 255)) - (aset str 4 (logand (ash start -24) 255)) - (aset str 5 (logand (ash start -16) 255)) - (aset str 6 (logand (ash start -8) 255)) - (aset str 7 (logand start 255)) - (aset str 8 (logand (ash end -24) 255)) - (aset str 9 (logand (ash end -16) 255)) - (aset str 10 (logand (ash end -8) 255)) - (aset str 11 (logand end 255)) - (cons 'ENERGIZE_OBJECT str)))) - - -(or (assq 'ENERGIZE_OBJECT selection-converter-alist) - (setq selection-converter-alist - (cons '(ENERGIZE_OBJECT . xselect-convert-to-energize) - selection-converter-alist))) - - -;;; Function keys. - -(defun energize-define-function-keys () - "Define some Borland/Motif-like `F' keys for Energize." - (define-key global-map 'f1 'help-for-help) - (define-key global-map 'f3 'energize-search) - (define-key global-map '(shift delete) 'x-kill-primary-selection) - (define-key global-map '(control insert) 'x-copy-primary-selection) - (define-key global-map '(shift insert) 'x-yank-clipboard-selection) - (define-key global-map '(control delete) 'x-delete-primary-selection) - - (define-key global-map 'f7 'energize-browse-error) - (define-key global-map '(meta f7) 'next-error) - (define-key global-map '(meta f8) 'previous-error) - - (define-key global-map 'f9 'energize-build-a-target) - (define-key global-map '(meta f9) 'energize-default-compile-file) - (define-key global-map '(control f9) 'energize-run-target) - (define-key global-map '(meta shift f9) 'energize-abort-build) - - (define-key global-map '(meta control ?.) 'energize-edit-declaration-dbox) - (define-key global-map 'f5 'energize-browse-language-elt) - (define-key global-map '(shift f5) 'energize-next-use-start) - (define-key global-map '(control f5) 'energize-next-use-command) - ) -
--- a/lisp/energize/energize-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,790 +0,0 @@ -;;; -*- Mode:Emacs-Lisp -*- -;;; Copyright © 1991-1993 by Lucid, Inc. All Rights Reserved. - -(eval-when-compile - (require 'etags)) - -;; true if current-buffer is an energize buffer that does not support -;; the real write-file and so has to do the special energize way of doing -;; write-file that loses the annotations. -(defun energize-write-file-buffer-p () - ;; (and (energize-buffer-p (current-buffer) - ;; (not (eq major-mode 'energize-project-mode))) - (energize-buffer-p (current-buffer))) - - -(defun energize-beginning-of-defun (&optional arg) - "Move point to the beginning of the current top-level form. -With a numeric argument, move back that many forms." - (interactive "_p") - (or arg (setq arg 1)) - (if (not (energize-buffer-p (current-buffer))) - (error "Not an Energize buffer") - (if (< arg 0) - (energize-end-of-defun (- arg)) - (while (> arg 0) - (or (bobp) (forward-char -1)) - (while (and (not (bobp)) (null (energize-extent-at (point)))) - (forward-char -1)) - (let ((pos (point))) - (map-extents - (function - (lambda (extent dummy) - (if (< (setq pos (extent-start-position extent)) (point)) - (goto-char pos)))) - (current-buffer) (point) (point) nil t)) - (setq arg (1- arg)))))) - -(defun energize-end-of-defun (&optional arg) - "Move point to the end of the current top-level form. -With a numeric argument, move forward over that many forms." - (interactive "_p") - (or arg (setq arg 1)) - (if (not (energize-buffer-p (current-buffer))) - (error "Not an Energize buffer") - (if (< arg 0) - (energize-beginning-of-defun (- arg)) - (while (> arg 0) - (or (eobp) (forward-char 1)) - (while (and (not (eobp)) (null (energize-extent-at (point)))) - (forward-char 1)) - (let ((pos (point))) - (map-extents - (function - (lambda (extent dummy) - (if (> (setq pos (extent-end-position extent)) (point)) - (goto-char pos)))) - (current-buffer) (point) (point) nil t)) - (setq arg (1- arg)))))) - - -;;; Patching Energize into file I/O via the standard hooks. - -(defun energize-write-data-hook (name) - ;; for use as the last element of write-file-data-hooks - ;; in energize buffers. - (if (energize-buffer-p (current-buffer)) - (progn - (message "saving %s to Energize..." name) - (energize-execute-command "save") - (energize-update-menubar) - (message "saved %s to Energize." name) - t) - nil)) - -(defun energize-revert-buffer-insert-file-contents-hook (file noconfirm) - ;; for use as the value of revert-buffer-insert-file-contents-function - ;; in energize buffers. - (if (not (energize-buffer-p (current-buffer))) - (error "energize-revert-buffer-hook called for a non-energize buffer")) - (widen) - (cond ((equal file buffer-file-name) ; reverting from energize - ;; Do the default as in files.el - (if (file-exists-p file) - (progn - ;; Bind buffer-file-name to nil - ;; so that we don't try to lock the file. - (let ((buffer-file-name nil)) - (unlock-buffer) - (erase-buffer)) - (insert-file-contents file t))) - ;; Then asks the extents from Energize - (energize-execute-command "revert")) - (t ; reverting from autosave - (if (not (file-exists-p file)) - (error "File %s no longer exists!" file)) - (erase-buffer) - (insert-file-contents file))) - t) - - -(defun energize-kill-buffer-hook () - ;; for use as the value of kill-buffer-hook in energize buffers. - (if (energize-buffer-p (current-buffer)) - (energize-request-kill-buffer (current-buffer)) - (error "energize-kill-buffer-hook called on a non-energize buffer")) - t) - - -;;; - -(defun energize-edit-definition-default () - (save-excursion - (if (not (memq (char-syntax (preceding-char)) '(?w ?_))) - (while (not (looking-at "\\sw\\|\\s_\\|\\'")) - (forward-char 1))) - (while (looking-at "\\sw\\|\\s_") - (forward-char 1)) - (if (re-search-backward "\\sw\\|\\s_" nil t) - (progn (forward-char 1) - (buffer-substring (point) - (progn (forward-sexp -1) - (while (looking-at "\\s'") - (forward-char 1)) - (point)))) - nil))) - -;;; This prompts in the minibuffer, ##### with no completion. -(defun energize-edit-definition (def) - "If connected to Energize, the Energize database is used. -Otherwise, `find-tag' is invoked. -The X selection is used as a default, if it exists and contains no -newlines. Otherwise, the preceding token is used as a default. -If invoked from a mouse command, prompting happens with a dialog box; -otherwise, the minibuffer is used." - (interactive - (if (and (connected-to-energize-p) - (or (menu-event-p last-command-event) - (button-press-event-p last-command-event) - (button-release-event-p last-command-event))) - '(nil) - (list - (let (default - def) - (cond ((x-selection-owner-p) - (setq default (x-get-selection)) - (while (string-match "\\`[ \t\n]+" default) - (setq default (substring default (match-end 0)))) - (while (string-match "[ \t\n]+\\'" default) - (setq default (substring default 0 (match-beginning 0)))) - (if (string-match "[ \t\n]" default) - (setq default nil)))) - (or default (setq default (energize-edit-definition-default))) - (setq def - (if (connected-to-energize-p) - (completing-read - (if default - (format "Edit definition [%s]: " default) - "Edit definition: ") - nil nil; 'energize-edit-def-predicate - nil nil) - (or (and (fboundp 'find-tag-tag) (fboundp 'find-tag-default)) - (require 'tags "etags")) - (find-tag-tag "Edit definition: "))) - (if (or (equal "" def) - (equal '("") def)) - (setq def default)) - def)))) - (if (connected-to-energize-p) - ;; FIXME - this should fall back on tags if it fails...we might be - ;; searching for elisp or something... - (energize-execute-command "editdef" () (if (consp def) (car def) def) t) - (find-tag def))) - -(define-key global-map "\M-." 'energize-edit-definition) -(define-key global-map "\M-B" 'energize-build-a-target) ; M-Sh-B - -(defun disconnect-from-energize-query () - "Disconnect this emacs from the Energize server, after confirming." - (interactive) - (or (y-or-n-p "Disconnect from Energize? ") (error "not confirmed")) - (disconnect-from-energize)) - - -;;; Functions to add commands to the project buffers -(defun energize-insert-slots (got-to-top-p l) - (if (not (eq major-mode 'energize-project-mode)) - (error "Command available only in project buffers")) - ;; move to a suitable place - (if got-to-top-p - (beginning-of-buffer) - (beginning-of-line)) - ;; go before "Associated Projects" and "Related Files" - (if (or (search-backward "Related Projects:" () t) - (search-backward "Associated Files:" () t) - (looking-at "Related Projects:") - (looking-at "Associated Files:")) - (previous-line 2)) - ;; find empty space - (while (and (not (looking-at "$")) - (not (eq (point) (point-max)))) - (next-line 1)) - (newline) - (save-excursion - (mapcar '(lambda (i) (insert i) (newline)) l)) - ;; this is magic - (forward-char 18)) - -(defun energize-insert-rule () - (interactive) - (energize-insert-slots - t - '(" Rules:" - " <rule>: lcc -Xez -c -g -Xa -o $object $source"))) - -(defun energize-insert-object-file-target () - (interactive) - (energize-insert-slots - () - '(" Object File: <object-file>" - " Source File: <source-file>" - " Build Rule: <rule>"))) - -(defun energize-insert-executable-target () - (interactive) - (energize-insert-slots - () - '(" Executable: <executable>" - " Build Command: lcc -Xf -Xez -o $object <object-file> ..."))) - -(defun energize-insert-library-target () - (interactive) - (energize-insert-slots - () - '(" Library: <library>" - " Build Command: energize_ar -Xez -remove -ranlib clq $object \\" - " <object-file> ..."))) - -(defun energize-insert-collection-target () - (interactive) - (energize-insert-slots - () - '(" Collection: <collection>" - " Build Command: energize_collect -Xez -o $object <object-file> ..."))) - -(defun energize-insert-file-target () - (interactive) - (energize-insert-slots - () - '(" File Target: <target>" - " Dependencies: <target> ..." - " Build Command: <shell-command>"))) - -(defun energize-insert-target-target () - (interactive) - (energize-insert-slots - () - '(" Target: <target>" - " Dependencies: <target> ..." - " Build Command: <shell-command>"))) - - - -;;; Keymaps for Energize buffers. - -(defvar energize-map nil "*Parent keymap for all Energize buffers") -(defvar energize-top-level-map nil "*Keymap for the Energize top-level buffer") -(defvar energize-debugger-map nil "*Keymap for Energize debugger buffers") -(defvar energize-breakpoint-map nil "*Keymap for Energize breakpoint-lists") -(defvar energize-browser-map nil "*Keymap for Energize browser buffers") -(defvar energize-project-map nil "*Keymap for Energize project buffers") -(defvar energize-no-file-project-map nil - "*Keymap for Energize project buffers not associated with a file") -(defvar energize-source-map nil "*Keymap for Energize source buffers") - -(defvar energize-mode-hook nil - "Hook called when each energize buffer is created.") -(defvar energize-top-level-mode-hook nil - "Hook called when the energize top-level buffer is created.") -(defvar energize-project-mode-hook nil - "Hook called when an Energize project buffer is created.") -(defvar energize-no-file-project-mode-hook nil - "Hook called when an Energize project buffer with no file is created.") -(defvar energize-breakpoint-mode-hook nil - "Hook called when an Energize breakpoint-list buffer is created.") -(defvar energize-browser-mode-hook nil - "Hook called when an Energize browser buffer is created.") -(defvar energize-log-mode-hook nil - "Hook called when an Energize log buffer is created.") -(defvar energize-manual-mode-hook nil - "Hook called when an Energize manual buffer is created.") -(defvar energize-source-mode-hook nil - "Hook called when any source buffer is placed in the Energize minor-mode.") - - -(if energize-map - nil - (setq energize-map (make-sparse-keymap)) - (set-keymap-name energize-map 'energize-map) - (define-key energize-map "\^C\^F" 'energize-find-project) - (define-key energize-map "\^C\^B\^E" 'energize-browse-error) - (define-key energize-map "\^C\^B\^L" 'energize-browse-language-elt) - (define-key energize-map "\^C\^B\^T" 'energize-browse-tree) - (define-key energize-map "\^C\^B\^C" 'energize-browse-class) -;; now in global-map -;; (define-key energize-map "\M-B" 'energize-build-a-target) ; M-Sh-B - (define-key energize-map "\M-C" 'energize-default-compile-file) ; M-Sh-C - (define-key energize-map 'button3 'energize-popup-menu) - ) - -(if energize-top-level-map - nil - (setq energize-top-level-map (make-sparse-keymap)) - (set-keymap-name energize-top-level-map 'energize-top-level-map) - (set-keymap-parent energize-top-level-map energize-map) - (suppress-keymap energize-top-level-map) - (define-key energize-top-level-map "?" 'describe-mode) - (define-key energize-top-level-map " " 'energize-top-next-project) - (define-key energize-top-level-map "n" 'energize-top-next-project) - (define-key energize-top-level-map "p" 'energize-top-prev-project) - (define-key energize-top-level-map "N" 'energize-top-next-project) - (define-key energize-top-level-map "P" 'energize-top-prev-project) - (define-key energize-top-level-map "\t" 'energize-top-next-project) - (define-key energize-top-level-map '(shift tab) 'energize-top-prev-project) - (define-key energize-top-level-map '(control I) 'energize-top-prev-project) - - (define-key energize-top-level-map "Q" 'disconnect-from-energize-query) - - (define-key energize-top-level-map "d" 'energize-top-debug) - (define-key energize-top-level-map "\^D" 'energize-top-delete-project) - (define-key energize-top-level-map "e" 'energize-top-edit-project) - ) - -(if energize-project-map - nil - (setq energize-project-map (make-sparse-keymap)) - (set-keymap-name energize-project-map 'energize-project-map) - (set-keymap-parent energize-project-map energize-map) - ;;(suppress-keymap energize-project-map) - ;;(define-key energize-project-map "\t" 'energize-project-next-field) - ;;(define-key energize-project-map '(shift tab) 'energize-project-prev-field) - ;;(define-key energize-project-map '(control I) 'energize-project-prev-field) - - (define-key energize-project-map "\^C\^I" 'energize-import-file) - (define-key energize-project-map "\^C\^E" 'energize-project-edit-file) - (define-key energize-project-map "\^C\^S\^A" 'energize-project-sort-alpha) - (define-key energize-project-map "\^C\^S\^L" 'energize-project-sort-link) - (define-key energize-project-map "\^C\^V\^N" 'energize-project-view-names) -; (define-key energize-project-map "\^C\^V\^L" 'energize-project-view-long) - (define-key energize-project-map "\^C\^V\^C" 'energize-project-view-options) - ) - - -(if energize-no-file-project-map - nil - (setq energize-no-file-project-map (make-sparse-keymap)) - (set-keymap-name energize-no-file-project-map 'energize-no-file-project-map) - (set-keymap-parent energize-no-file-project-map energize-map)) - -(if energize-breakpoint-map - nil - (setq energize-breakpoint-map (make-sparse-keymap)) - (set-keymap-name energize-breakpoint-map 'energize-breakpoint-map) - (set-keymap-parent energize-breakpoint-map energize-map) - ) - -(if energize-browser-map - nil - (setq energize-browser-map (make-sparse-keymap)) - (set-keymap-name energize-browser-map 'energize-browser-map) - (set-keymap-parent energize-browser-map energize-map) - ) - -(if energize-source-map - nil - (setq energize-source-map (make-sparse-keymap)) - (set-keymap-name energize-source-map 'energize-source-map) - (set-keymap-parent energize-source-map energize-map) -;; There are too many problems with using extents to determine where the -;; top level forms are... -;; (define-key energize-source-map "\M-\C-a" 'energize-beginning-of-defun) -;; (define-key energize-source-map "\M-\C-e" 'energize-end-of-defun) - ) - -(defvar energize-menu-state nil - "State of the energize menu items of the buffer. -Automatically updated by the kernel when the state changes") - -(defvar energize-default-menu-state nil - "State of the energize default menu items. -Automatically updated by the kernel when the state changes") - -(defun energize-mode-internal () - ;; initialize stuff common to all energize buffers (hooks, etc). - (make-local-hook 'write-file-data-hooks) - (add-hook 'write-file-data-hooks 'energize-write-data-hook t t) - ;; - (make-local-variable 'revert-buffer-insert-file-contents-function) - (setq revert-buffer-insert-file-contents-function - 'energize-revert-buffer-insert-file-contents-hook) - ;; - (make-local-hook 'kill-buffer-hook) - (add-hook 'kill-buffer-hook 'energize-kill-buffer-hook nil t) - ;; - (make-local-variable 'require-final-newline) - (setq require-final-newline t) - ;; - (make-local-variable 'energize-menu-state) - ;; - (run-hooks 'energize-mode-hook)) - -(defun energize-non-file-mode-internal () - ;; do magic associated with energize-modes for buffers which are not - ;; and cannot be associated with files. -; (or (null buffer-file-name) -; (equal buffer-file-name mode-name) -; (error -; "This buffer is associated with a file, it can't be placed in %s mode" -; mode-name)) - ;; hack so that save-file doesn't prompt for a filename. - (or buffer-file-name - (setq buffer-file-name (buffer-name))) - (set (make-local-variable 'version-control) 'never) - nil) - -;; don't create random new buffers in these modes -(put 'energize-top-level-mode 'mode-class 'special) -(put 'energize-project-mode 'mode-class 'special) -(put 'energize-no-file-project-mode 'mode-class 'special) -(put 'energize-breakpoint-mode 'mode-class 'special) -(put 'energize-browser-mode 'mode-class 'special) -(put 'energize-log-mode 'mode-class 'special) - -(defun energize-top-level-mode () - "Major mode for the Energize top-level buffer. -In addition to normal cursor-motion commands, the following keys are bound: -\\{energize-top-level-map}" - (interactive) - (energize-mode-internal) - (use-local-map energize-top-level-map) - (setq major-mode 'energize-top-level-mode - mode-name "Energize") - (energize-non-file-mode-internal) - ;; the default of "energize: Energize" is not very attractive. - (if (equal frame-title-format "%S: %b") - (set (make-local-variable 'frame-title-format) "%S: Top-Level")) - (run-hooks 'energize-top-level-mode-hook)) - - -(defun energize-project-mode () - "Major mode for the Energize Project buffers. -In addition to the normal editing commands, the following keys are bound: -\\{energize-project-map}" - (interactive) - (energize-mode-internal) - (use-local-map energize-project-map) - (setq major-mode 'energize-project-mode - mode-name "Project") - ;; in later revisions of the kernel the project is really a file. - (if (< (cdr (energize-protocol-level)) 8) - (energize-non-file-mode-internal)) - (run-hooks 'energize-project-mode-hook)) - -(defun energize-no-file-project-mode () - "Major mode for the Energize Project buffers not associated with a file. -In addition to the normal editing commands, the following keys are bound: -\\{energize-no-file-project-map}" - (interactive) - (energize-mode-internal) - (use-local-map energize-no-file-project-map) - (setq major-mode 'energize-no-file-project-mode - mode-name "NoFileProject") - (energize-non-file-mode-internal) - (run-hooks 'energize-no-file-project-mode-hook)) - -(defun energize-breakpoint-mode () - "Major mode for the Energize Breakpoint-list buffers. -In addition to the normal editing commands, the following keys are bound: -\\{energize-breakpoint-map}" - (interactive) - (energize-mode-internal) - (use-local-map energize-breakpoint-map) - (setq major-mode 'energize-breakpoint-mode - mode-name "Breakpoint") - (energize-non-file-mode-internal) - (run-hooks 'energize-breakpoint-mode-hook)) - -(defun energize-browser-mode () - "Major mode for the Energize Browser buffers. -In addition to the normal editing commands, the following keys are bound: -\\{energize-browser-map}" - (interactive) - (energize-mode-internal) - (use-local-map energize-browser-map) - (setq major-mode 'energize-browser-mode - mode-name "Browser") - (energize-non-file-mode-internal) - (run-hooks 'energize-browser-mode-hook)) - -(defun energize-log-mode () - "Major mode for the Energize Error Log and System Log buffers. -In addition to the normal editing commands, the following keys are bound: -\\{energize-map}" - (interactive) - (energize-mode-internal) - (use-local-map energize-map) - (setq major-mode 'energize-log-mode - mode-name "Energize-Log") - (energize-non-file-mode-internal) - (run-hooks 'energize-log-mode-hook)) - -(defun energize-manual-mode () - "Major mode for the Energize UNIX Manual buffers. -In addition to the normal editing commands, the following keys are bound: -\\{energize-map}" - (interactive) - (energize-mode-internal) - (use-local-map energize-map) - (setq major-mode 'energize-manual-mode - mode-name "Energize-Manual") - (energize-non-file-mode-internal) - (run-hooks 'energize-manual-mode-hook)) - -(defvar energize-source-mode nil) -;;(put 'energize-source-mode 'permanent-local t) ; persists beyond mode-change - -;;; Add energize-source-mode to minor-mode-alist so that it shows up in -;;; the modeline when true. -;;; -(or (assq 'energize-source-mode minor-mode-alist) - (setq minor-mode-alist - (append minor-mode-alist - '((energize-source-mode " Energize"))))) - - -(defun energize-source-minor-mode () - "Minor mode for adding additional keybindings to Energize source buffers. -The following key bindings are added: -\\{energize-source-map} - -Since this minor mode defines keys, once it gets turned on you can't really -turn it off." - (interactive) - (energize-mode-internal) - (make-local-variable 'energize-source-mode) - (setq energize-source-mode t) - (let ((source-map energize-source-map) - (dest-map (make-sparse-keymap))) - (set-keymap-parent dest-map (current-local-map)) - (set-keymap-name dest-map 'energize-minor-mode-map) - (while source-map - (let (mapper prefixes) - (setq mapper (function (lambda (key val) - (if (keymapp val) - (let ((prefixes (append prefixes - (cons key nil)))) - (map-keymap val mapper)) - (define-key dest-map - (apply 'vector - (append prefixes (cons key nil))) - val) - )))) - (map-keymap source-map mapper)) - (setq source-map (keymap-parent source-map))) - (use-local-map dest-map)) - (run-hooks 'energize-source-mode-hook)) - - -;;; Commands in source buffers - -(defun recenter-definition () - "Position the beginning of the current definition at the top of the frame." - (interactive) - (end-of-line) - (if (eq major-mode 'c++-mode) - (c++-beginning-of-defun 1) - (beginning-of-defun 1)) - (recenter 1)) - -(define-key global-map "\M-\C-r" 'recenter-definition) - -(defun energize-hide-error-glyphs-in-form () - "Hides the error icons in the current toplevel form. -You cannot get them back until you recompile the file." - (interactive) - (save-excursion - (save-restriction - (let ((start (progn (energize-beginning-of-defun) (point))) - (end (progn (energize-end-of-defun) (point))) - e) - (narrow-to-region start end) - (goto-char (point-min)) - (setq e (extent-at (point))) - (while (and e - (< (extent-end-position e) (point-max))) - (if (extent-property e 'begin-glyph) - (set-extent-begin-glyph e nil)) - (setq e (next-extent e))))))) - -;;; Dired-like commands - -(defun energize-next-extent-for (command prev not-this-one) - (let ((last-e (if not-this-one 'none nil)) - e result) - (save-excursion - (while (not (or result - (if prev (bobp) (eobp)))) - (setq e (extent-at (point) (current-buffer))) - (if (and (not (eq e last-e)) - (not (eq last-e 'none))) - (setq result - (energize-menu-item-for-name e command))) - (forward-char (if prev -1 1)) - (setq last-e e))) - (if result e))) - -(defun energize-next-extent-on-line-for (command not-this-one) - (save-excursion - (save-restriction - (narrow-to-region (point) (progn (end-of-line) (point))) - (goto-char (point-min)) - (energize-next-extent-for command nil not-this-one)))) - - -;;; commands in the top-level buffer - -(defun energize-top-next-project () - "Position the cursor at the beginning of the following project." - (interactive) - (let ((p (point))) - (let ((e (energize-next-extent-for "editproject" nil t))) - (if (and e (= p (extent-start-position e))) - (save-excursion - (forward-char (extent-length e)) - (setq e (energize-next-extent-for "editproject" nil t)))) - (if e - (goto-char (extent-start-position e)) - (error "no next project"))))) - -(defun energize-top-prev-project () - "Position the cursor at the beginning of the preceding project." - (interactive) - (let ((p (point))) - (let ((e (energize-next-extent-for "editproject" t t))) - (if (and e (= p (extent-start-position e))) - (save-excursion - (forward-char -1) - (setq e (energize-next-extent-for "editproject" t t)))) - (if e - (goto-char (extent-start-position e)) - (error "no previous project"))))) - -(defun energize-top-execute-command (command) - (let ((e (or (energize-next-extent-on-line-for command nil) - (error - (concat "no following field on this line that handles the `" - command "' Energize command."))))) - (energize-execute-command command e))) - -(defun energize-top-debug () - "Execute the `Debug' command on the project at or following point." - (interactive) - (energize-top-execute-command "debugprogram")) - -(defun energize-top-delete-project () - "Delete the project at or following point." - (interactive) - (energize-top-execute-command "deleteproject")) - -(defun energize-top-edit-project () - "Edit the project at or following point." - (interactive) - (energize-top-execute-command "editproject")) - -;;; commands in the project buffer - -(defun energize-project-next-field (&optional prev) - (interactive) - (let ((e (extent-at (point) (current-buffer)))) - (if e - (if prev - (goto-char (1- (extent-start-position e))) - (goto-char (1+ (extent-end-position e))))) - (while (null (extent-at (point) (current-buffer))) - (forward-char (if prev -1 1))) - (while (extent-at (point) (current-buffer) 'write-protected) - (forward-char (if prev -1 1))) - (if prev - (if (setq e (extent-at (point) (current-buffer))) - (goto-char (extent-start-position e)) - (while (not (extent-at (point) (current-buffer))) - (forward-char -1)))))) - -(defun energize-project-prev-field () (interactive) - (energize-project-next-field t)) - -(defun energize-project-edit-file () (interactive) - (energize-top-execute-command "editfile")) - - -(defun energize-project-prune-unused-rules () - "Deletes all unused rules from the Rules: part of a Project buffer, -and renumbers the remaining rules sequentially." - (interactive) - (save-excursion - (goto-char (point-min)) - (re-search-forward "^[ \t]+Rules:") - (forward-line 1) - (let ((rules-regexp "^[ \t]*\\(\\.[a-zA-Z]+\\(([0-9]+)\\)?\\):") - (all-rules nil) - eor) - ;; - ;; Gather the contents of the Rule section, and find its end. - ;; - (save-excursion - (while (looking-at rules-regexp) - (setq all-rules (cons (list (buffer-substring (match-beginning 1) - (match-end 1)) - (point-marker)) - all-rules)) - (while (progn (end-of-line) (= (preceding-char) ?\\)) - (forward-line 1)) - (forward-line 1)) - (setq eor (point-marker))) - (setq all-rules (nreverse all-rules)) - (let ((rest all-rules) - rule) - ;; - ;; Walk through the buffer gathering references to the rules. - ;; - (while rest - (setq rule (car rest)) - (goto-char eor) - (let ((pattern (concat "^[ \t]+" (regexp-quote (car rule)) ":"))) - (while (re-search-forward pattern nil t) - (setcdr (cdr rule) - (cons (set-marker (make-marker) (match-beginning 0)) - (cdr (cdr rule)))))) - (setq rest (cdr rest))) - ;; - ;; Delete those rules that have no references. - ;; - (goto-char eor) - (setq rest all-rules) - (while rest - (setq rule (car rest)) - (if (null (cdr (cdr rule))) - (let ((p (nth 1 rule))) - (goto-char p) - (while (progn (end-of-line) (= (preceding-char) ?\\)) - (forward-line 1)) - (forward-line 1) - (delete-region p (point)) - (set-marker p nil) - (setq all-rules (delq rule all-rules)) - )) - (setq rest (cdr rest))) - ;; - ;; Renumber the remaining rules sequentially. - ;; - (goto-char eor) - (setq rest all-rules) - (let ((i 1)) - (while rest - (setq rule (car rest)) - (let ((referents (cdr rule))) ; including definition - (while referents - (goto-char (car referents)) - (or (and (looking-at - (concat "^[ \t]+" (regexp-quote (car rule)) ":")) - (looking-at "[^:(]+\\((\\([0-9]+\\))\\|\\):")) - (error "internal error")) - (if (null (match-beginning 2)) - (progn - (goto-char (match-beginning 1)) - (insert "(" (int-to-string i) ")")) - (goto-char (match-beginning 2)) - (delete-region (match-beginning 2) (match-end 2)) - (insert (int-to-string i))) - (set-marker (car referents) nil) - (setq referents (cdr referents)))) - (setq i (1+ i)) - (setq rest (cdr rest)))) - ;; - ;; TODO: - ;; - order the Rule Users list in the same order as the Rules list. - ;; - or, order the Rule Users list by number of files, and then - ;; order the Rules list the same as that (numbered sequentially.) - ;; - or, order the Rules list by length-of-rule (= complicatedness.) - ) - (set-marker eor nil))))
--- a/lisp/energize/energize-shell.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -;;; -*- Mode:Emacs-Lisp -*- -;;; Copyright (C) 1992-1993 by Lucid, Inc. All Rights Reserved. - -(require 'comint) -(require 'shell) -(require 'gdb) - -(defun energize-comint-input-sender (energize-proc input) - (energize-send-region (energize-user-input-buffer-mark) (point))) - -(defvar energize-shell-prompt-pattern "^(.*gdb) ?" - "*A regexp to recognize the prompt for the Energize debugger.") - -(defun energize-debugger-mode () - "Major mode for the Energize Debugger buffers. -In addition to the normal cursor-motion commands, the following keys are bound: -\\{energize-debugger-map}" - (interactive) - (comint-mode) - (setq comint-prompt-regexp energize-shell-prompt-pattern - comint-input-sentinel 'shell-directory-tracker - comint-input-sender 'energize-comint-input-sender) - (setq mode-line-process nil) - (energize-mode-internal) - (set-syntax-table c-mode-syntax-table) - (setq major-mode 'energize-debugger-mode - mode-name "Energize-Debugger") - (use-local-map energize-debugger-map) - (set (make-local-variable 'shell-dirstack) nil) - (set (make-local-variable 'shell-dirtrackp) t) - (set (make-local-variable 'gdb-last-frame) nil) - (set (make-local-variable 'gdb-last-frame-displayed-p) t) - (set (make-local-variable 'gdb-delete-prompt-marker) nil) - (set (make-local-variable 'comint-input-autoexpand) nil) - (run-hooks 'energize-debugger-mode-hook)) - - -(if energize-debugger-map - nil -;; (setq energize-debugger-map (make-sparse-keymap)) -;; kludge!! - (setq energize-debugger-map (copy-keymap energize-map)) - - (set-keymap-name energize-debugger-map 'energize-debugger-map) - (set-keymap-parent energize-debugger-map gdb-mode-map) - (define-key energize-debugger-map "\M-\t" 'comint-dynamic-complete) - (define-key energize-debugger-map "\M-?" 'comint-dynamic-list-completions) - (define-key energize-debugger-map "\C-c<" 'energize-debugger-up-frame) - (define-key energize-debugger-map "\C-c>" 'energize-debugger-down-frame) - (define-key energize-debugger-map "\C-c\C-f" 'energize-debugger-return) - (define-key energize-debugger-map "\C-c\C-c" 'energize-debugger-interrupt) - ;; should be quit-subjob - (define-key energize-debugger-map "\C-c\C-\\" 'energize-debugger-interrupt) - (define-key energize-debugger-map "\C-c\C-z" - 'energize-debugger-interrupt) ; should suspend - (define-key energize-debugger-map "\C-c\C-d" 'energize-debugger-send-eof) - ) - - -;;; Energize Debugger mode commands; it seems pointless to do this with advice. - -(defun energize-debugger-step-line (arg) - "Step one source line in the Energize debugger." - (interactive "p") - (energize-execute-command "steponce")) - -(defun energize-debugger-step-instruction (arg) - "Step one machine instruction in the Energize debugger." - (interactive "p") - (energize-execute-command "stepinst")) - -(defun energize-debugger-next-line (arg) - "Step one source line skipping function calls in the Energize debugger." - (interactive "p") - (energize-execute-command "stepnext")) - -(defun energize-debugger-continue-program (arg) - "Continue running program being debugged in the Energize debugger." - (interactive "p") - (energize-execute-command "continueprogram")) - -(defun energize-debugger-up-frame (arg) - "Go up one stack frame in the Energize debugger." - (interactive "p") - (energize-execute-command "upframe")) - -(defun energize-debugger-down-frame (arg) - "Go up one stack frame in the Energize debugger." - (interactive "p") - (energize-execute-command "downframe")) - -(defun energize-debugger-return (arg) - "Finish executing current function in the Energize debugger." - (interactive "p") - (energize-execute-command "continueuntilreturn")) - -(defun energize-debugger-interrupt (arg) - "Interrupt program or debugger command in the Energize debugger." - (interactive "p") - (energize-execute-command "stopprogram")) - -(defun energize-debugger-send-eof () - "Send an EOF to the Energize debugger." - (interactive) - (save-excursion - (insert ?\C-d) - (energize-send-region (1- (point)) (point)) - (delete-char -1)))
--- a/lisp/energize/energize-uimx.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -;;; Copyright (C) 1992 Free Software Foundation, Inc. - -;; 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, 675 Mass Ave, Cambridge, MA 02139, USA. - -;;; This file provides integration between XEmacs, Energize and UIM/X. -;;; It is not necessary to be running XEmacs as part of Energize. - -;;; To use this, store in a file, then do M-x load-file and type in the -;;; file name. Alternatively, add (load-file "...filename...") to your -;;; .emacs file to load it every time you start Emacs. - -;; First we add a menu item File->UIM/X to the menu bar (if it is not -;; already present), and set the action for this to be "start UIM/X" with -;; a couple of make flags set. - -(add-menu-item '("File") "UIM/X" 'start-uimx-running t) - -;; When we start UIM/X running, we start a process which runs a shell in -;; the background. This first sets the environment variable MAKEFLAGS to -;; be -e, forcing the environment variable CC to take precedence over the -;; defaults, and defining CC to be what we want. Then it starts UIM/X -;; running. When the user selects "make" the correct options should get -;; selected to do an Energize build. - -(defun start-uimx-running () - (interactive) - (start-process "uimx" nil "sh" "-c" "MAKEFLAGS=e CC=\"lcc -Xk -Xez\" uimx") -) - -;; Issues outstanding: - -;; Make will always select all the generated C files for recompilation. -;; Energize will automatically do the minimum work required when in incremental -;; compilation mode. You also gain from incremental compilation and linking. -;; Only writing changes rather than a whole project will reduce the required -;; number of compilations. - -;; Incremental Compilation is not compatible with UIM/X interpreter. -;; In order to avoid this being a problem, it is best to use full compile -;; mode. To turn this on, either select "Full Compiles" from the customise -;; compilation dialog box, or use the command: -;; -;; energize_make_target -Xez "filename.o" -build-option "full compile" -;; -;; from the directory where the file is located. - -;; Energize creates a project file which may nameclash with the existing -;; UIM/X project file. - -;; If this happens, one workaround is to create a new project manually -;; (using Project->New Project) and to specify the project file, and then -;; build the project, rather than accepting the default while building. -;; Another workaround is to rename the UIM/X project. - -
--- a/lisp/energize/energize-vi.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,709 +0,0 @@ -;;; -*- Mode:Emacs-Lisp -*- -;;; Copyright © 1992-1993 by Lucid, Inc. All Rights Reserved. -;;; Energize support for the Editor of the Beast, and others. - -(evi-define-key '(vi motion ex) "\C-x" 'evi-emacs-command) -(evi-define-key '(vi motion) "\177" 'evi-backward-char) -(evi-define-key '(vi) "\C-z" 'evi-quit-evi) - -(evi-define-key '(vi motion top-level) 'button3 'energize-popup-menu) - -(setq evi-meta-prefix-char ?\C-a) - -(defvar energize-external-editor nil) ; nil, vi, or a string -(defvar energize-internal-editor nil) ; nil or vi -(defvar energize-internal-viewer nil) ; nil, vi, or less -(defvar energize-vi-terminal-emulator nil) ; xterm, shelltool, or cmdtool - -(defun ex-quit (discard) - ;; originally defined in evi.el - ;; The old version would exit emacs; this version just kills the current - ;; buffer and deletes the current window (and frame if appropriate.) - (and (not discard) (buffer-file-name) (buffer-modified-p) - (evi-error - "No write since last change (use :quit! to override)")) - ;; #### Since we're unmodifying this buffer with the intent of killing it, - ;; we need to avoid telling Energize that we have unmodified it, or for some - ;; reason it recreates the buffer later. I don't understand... - (let ((energize-buffer-modified-hook nil)) - (set-buffer-modified-p nil)) - (delete-auto-save-file-if-necessary) - (kill-buffer (current-buffer)) - (setq ex-user-buffer (current-buffer)) - (condition-case nil - (delete-window (selected-window)) - ;; ignore error about trying to delete only window on only frame - (error nil)) - ) - -(defun ex-write-all-and-quit (quietly) - ;; originally defined in evi.el - ;; The old version would exit emacs; this version just kills the current - ;; buffer and deletes the current window (and frame if appropriate.) - (save-some-buffers quietly) - (ex-quit t)) - -(defun energize-external-editor-set-menubar () - "Set the menubar to be used for the external editor" - (delete-menu-item '("File" "Open...")) - (add-menu-item '("File") "View..." 'find-file-other-window t - "Save") - (add-menu-item '("File") '("Edit" . "") - 'energize-edit-buffer-externally t "Save") - (delete-menu-item '("File" "Exit XEmacs"))) - -(defun energize-internal-editor-set-menubar () - "Set the menubar to be used for the internal editor" - (add-menu-item '("File") "Open..." 'find-file t "Save") - (delete-menu-item '("File" "View...")) - (delete-menu-item '("File" "Edit")) - (add-menu-item '("File") "Exit XEmacs" 'save-buffers-kill-emacs t)) - - -(defun sensitize-external-editor-menus-hook () - ;; make the "Edit File" menu item be inactive if this buffer doesn't have a - ;; file, and make it contain the name of the file that will be edited. - (let* ((menu (cdr (car (find-menu-item current-menubar '("File"))))) - (ef (car (find-menu-item menu '("Edit File"))))) - (if (null ef) - t ; no change - (let ((name buffer-file-name)) - (if (eq (energize-buffer-type (current-buffer)) - 'energize-top-level-buffer) - (setq name nil)) - (aset ef 2 (if name t nil)) - (aset ef 3 (if name (file-name-nondirectory buffer-file-name) nil)) - nil)))) - -(add-hook 'activate-menubar-hook 'sensitize-external-editor-menus-hook) - -(defun energize-edit-buffer-externally-p (buffer) - (and energize-external-editor - (eq 'energize-source-buffer (energize-buffer-type buffer)))) - -(defun energize-edit-buffer-externally-1 (buffer extent) - (save-excursion - (set-buffer buffer) - (cond ((numberp extent) - (goto-char extent)) - ((null extent) - (goto-char 1)) - (t - (goto-char (extent-start-position extent)))) - (energize-begin-external-edit (buffer-file-name) - (save-excursion - (beginning-of-line) - (1+ (count-lines 1 (point))))))) - -(defun energize-edit-buffer-externally () - "Edit the currently-displayed buffer in $ENERGIZE_EDIT_MODE." - (interactive) - (if (not buffer-file-name) - (error "Buffer not associated with a file")) - (energize-edit-buffer-externally-1 (current-buffer) (point))) - - -;;; keeping track of inferior vi processes -;;; the energize_vi command can locate and reuse a running vi, but that's -;;; an expensive operation on X terminals, since the query-tree takes a -;;; *lot* of server traffic. So if we know that there's no vi editing the -;;; file (at least not one that *we* started) we can tell it to go ahead -;;; and start a new one without checking for an old one. If we used a -;;; smarter wrapper (one that told us the window id, or talked to the kernel -;;; directly) instead of xterm, we wouldn't need the query-tree at all. - -(defvar energize-vi-procs nil) ; vi is a special case (we're more clever) -(defvar energize-other-external-editor-procs nil) ; random others - -(defun energize-vi-buffer-being-edited-p (file) - (let ((rest energize-vi-procs) - result) - (while rest - (if (string-equal file (cdr (car rest))) - (setq result t - rest nil) - (setq rest (cdr rest)))) - result)) - -(defvar energize-vi-wrapper "energize_vi") - -(defun energize-begin-external-edit (file line) - (let* ((ez-path (getenv "ENERGIZE_PATH")) - (exec-path (if ez-path - (append exec-path (list ez-path)) - exec-path)) - (dir (file-name-directory file)) - (name (file-name-nondirectory file)) - (vi-p (eq energize-external-editor 'vi)) - (program (if vi-p energize-vi-wrapper energize-external-editor)) - (pretty (cond (vi-p "vi") - ((string-match "[ \t]" program) program) - (t (file-name-nondirectory program)))) - (procname (format "*%s %s*" (if vi-p "energize_vi" pretty) name)) - (edited-p (and vi-p (energize-vi-buffer-being-edited-p file))) - proc msg) - (setq line (if vi-p (format "+%d" line) "") - msg (format "%s %s %s %s..." (if edited-p "Reselecting" "Launching") - pretty name line)) - (message "%s" msg) - (let ((default-directory dir) - (inhibit-quit t)) - (cond (vi-p - (setq proc - (apply 'start-process procname nil program - dir name line - (cond ((eq energize-vi-terminal-emulator 'xterm) - "-xterm") - ((eq energize-vi-terminal-emulator 'cmdtool) - "-cmdtool") - ((eq energize-vi-terminal-emulator 'shelltool) - "-shelltool") - (t - (signal 'error - (list - "energize-vi-terminal-emulator unknown" - energize-vi-terminal-emulator)))) - (if edited-p '("-search") '()))) - (setq energize-vi-procs (cons (cons proc file) energize-vi-procs)) - (set-process-sentinel proc 'energize-vi-sentinel) - (set-process-filter proc 'energize-vi-filter)) - (t - ;; ### hack a %-spec for line number info -;; (setq proc (start-process procname nil program name)) - (setq proc (start-process procname nil "/bin/sh" "-c" - (concat program " " name))) - (setq energize-other-external-editor-procs - (cons (cons proc file) - energize-other-external-editor-procs)) - (set-process-sentinel proc 'energize-external-editor-sentinel) - (set-process-filter proc 'energize-external-editor-filter)))) - (if edited-p - (while (progn (accept-process-output) - (eq 'run (process-status proc))) - (sleep-for 1)) - (accept-process-output) - (sit-for 1)) - (if (eq 0 (process-exit-status proc)) ; don't blow away error message - (message "%s Done." msg)) - nil)) - -(defun energize-external-editor-sentinel-1 (process state name list-var) - (let ((rest (symbol-value list-var)) - (got-it nil)) - (let ((inhibit-quit t)) - (while rest - (if (eq process (car (car rest))) - (progn - (set list-var (delq (car rest) (symbol-value list-var))) - (setq got-it (car rest) - rest nil))) - (setq rest (cdr rest)))) - (if got-it - (progn - (energize-notice-external-editor-termination (cdr got-it)) - - (if (and state (string-match "\n+\\'" state)) - (setq state (substring state 0 (match-beginning 0)))) - (if (and (not (eq 0 (process-exit-status (car got-it)))) - state - (not (equal state ""))) - (error "%s: %s" (process-name process) state)) - -; (if (not (eq 0 (process-exit-status (car got-it)))) -; (error "vi process exited with code %s" -; (process-exit-status (car got-it)))) - - ) - (beep) - (message "unknown %s process died with %S" name state)))) - -(defun energize-vi-sentinel (process state) - (energize-external-editor-sentinel-1 process state "vi" 'energize-vi-procs)) - -(defun energize-external-editor-sentinel (process state) - (energize-external-editor-sentinel-1 - process state "external editor" 'energize-other-external-editor-procs)) - -(defun energize-external-editor-filter (process output) - (beep) - (message "%s" output)) - -(defun energize-vi-filter (process output) - ;; this will only get called if energize_vi (or the xterm) print error msgs - (energize-external-editor-filter process output)) - -(defun energize-notice-external-editor-termination (filename) - ;; - ;; when an external vi process edits, automatically revert any buffers - ;; associated with the file that was being edited, unless those buffers - ;; are modified (which shouldn't really happen in the vi model or doing - ;; things.) - ;; - ;; ## Since one vi process may have edited several files, possibly we - ;; ## should map over all energize files and revert as appropriate instead - ;; ## of only checking the file that the vi in question was started to edit. - ;; - (let ((buffer (get-file-buffer filename))) - (cond ((null buffer) - nil) - ((verify-visited-file-modtime buffer) - nil) - ((buffer-modified-p buffer) ; Hey, how'd that happen? - (if (not (file-exists-p filename)) - (error "File %s no longer exists! Buffer modified!" - (file-name-nondirectory filename)) - (beep) - (if (yes-or-no-p - (format "File %s changed on disk. Discard your edits? " - (file-name-nondirectory filename))) - (save-excursion - (set-buffer buffer) - (revert-buffer t t))))) -; ((not (file-exists-p filename)) ; File gone; kill buffer. -; (kill-buffer buffer)) - (t ; not modified; just revert - (let* ((w (get-buffer-window buffer)) ; let's not thrash so much - (p (and w (window-point w))) - (s (and w (window-start w)))) - (save-excursion - (set-buffer buffer) - (revert-buffer t t)) - (if p (set-window-point w p)) - (if s (set-window-start w s))))))) - - -;; evi mode - -(defun energize-evi-mode () - (evi) - ;; vi users like to be able to edit read-only files, but we shouldn't - ;; let them edit the Energize non-file buffers. - (if (and (energize-buffer-p (current-buffer)) - (or (null buffer-file-name) - (memq (energize-buffer-type (current-buffer)) - '(energize-top-level-buffer energize-browser-buffer - energize-error-log-buffer energize-includers-buffer)))) - (setq buffer-read-only t)) - ) - - -(defun energize-external-editor-set-mode (buffer) - ;; If an external editor is in use, then source buffers should be - ;; read-only in one manner or another. - (save-excursion - (set-buffer buffer) - (let* ((type (energize-buffer-type buffer)) - (debugger-p (eq type 'energize-debugger-buffer)) - (always-editable-p (memq type '(energize-project-buffer - energize-debugger-buffer - energize-breakpoint-buffer - ))) - (editable-p (or always-editable-p - (and (null energize-external-editor) - (not buffer-read-only))))) - - (or editable-p (setq buffer-read-only t)) - (cond (editable-p - (cond ((eq energize-internal-editor nil) - nil) - ((eq energize-internal-editor 'vi) - (if (not debugger-p) - (energize-evi-mode))) - (t - (signal 'error - (list "unknown value for energize-internal-editor" - energize-internal-editor))))) - ((eq energize-internal-viewer 'vi) - (energize-evi-mode)) - ((eq energize-internal-viewer 'less) - ;; put it in view-mode, but don't change the major-mode symbol - ;; so that the buffers go in the appropriate frames. - (let ((major-mode major-mode)) - (view-mode))) - ((eq energize-internal-viewer 'nil) - nil) - (t - (signal 'error - (list "unknown value for energize-internal-viewer" - energize-internal-viewer))))))) - -(defun external-editor-hack-popup (choices) - (if energize-external-editor - (let ((rest choices) - file) - (while rest - (if (and (vectorp (car rest)) - (equal "editfile" (aref (car rest) 0)) - (>= (length (car rest)) 4) - (stringp (setq file (aref (car rest) 3)))) - (progn - (setcdr rest - (cons (vector "View File" - (list 'pop-to-buffer - (list 'find-file-noselect file)) - t file) - (cdr rest))) - (setq rest nil))) - (setq rest (cdr rest))))) - choices) - - - -(defvar energize-search-match-data nil) - -(defun energize-search-internal (args) - ;; called from editorside.c - (let* ((case-fold-search (not (nth 0 args))) - (match-word-p (nth 1 args)) - (regexp-string-p (nth 2 args)) ; string for which to search is regex - (regexp-p (or match-word-p regexp-string-p)) ; use regex function? - (back-p (not (nth 3 args))) - (search-string (nth 4 args)) - (search (if match-word-p - (concat "\\b" - (if regexp-string-p ; coerce to regexp - search-string - (regexp-quote search-string)) - "\\b") - search-string)) - (replace (nth 5 args)) - (fn (if back-p - (if regexp-p 're-search-backward 'search-backward) - (if regexp-p 're-search-forward 'search-forward)))) - (setq this-command 'energize-search) - (cond ((equal search "") - (setq energize-search-match-data nil) - (error "No search string specified"))) - (cond ((consp replace) - ;; the "replace all" button was selected - (setq replace (car replace)) - ;; replace the one just searched for, if any - (cond ((and (eq last-command 'energize-search) - energize-search-match-data) - (store-match-data energize-search-match-data) - (if back-p - (save-excursion - (replace-match replace nil (not regexp-p))) - (replace-match replace nil (not regexp-p))))) - ;; now replace all the rest - (let ((count 0)) - (while (funcall fn search nil t) - (if back-p - (save-excursion - (replace-match replace nil (not regexp-p))) - (replace-match replace nil (not regexp-p))) - (setq count (1+ count))) - (message "%d replacement%s done." count (if (= count 1) "" "s"))) -;; (setq this-command nil) - (setq energize-search-match-data nil)) - (t - ;; otherwise, one of the search buttons was selected - (cond (replace - (or (eq last-command 'energize-search) ; fuck!! - (error "Last command was not a successful search.")) - (or energize-search-match-data (error "Last search failed")) - (store-match-data energize-search-match-data) - (if back-p - (save-excursion - (replace-match replace nil (not regexp-p))) - (replace-match replace nil (not regexp-p))))) - (setq energize-search-match-data nil) - (or (funcall fn search nil t) - (signal 'error - (list (cond ((and back-p regexp-p) - "Reverse regexp search failed") - (back-p "Reverse search failed") - (regexp-p "Regexp search failed") - (t "Search failed")) - search))) - (cond (zmacs-regions - (push-mark (if (= (point) (match-beginning 0)) - (match-end 0) - (match-beginning 0)) - t) - (zmacs-activate-region))) - (setq energize-search-match-data (match-data)) - )))) - - -(defvar energize-edit-modes-specified nil) - -(defun energize-set-edit-modes-minibuf-prompt () - (let* ((ee (completing-read "External editor (RET for none): " - nil nil nil nil t)) - (te (if (equal ee "vi") - (completing-read - "Terminal emulator in which to run vi (xterm, shelltool, or cmdtool): " - '(("xterm") ("shelltool") ("cmdtool")) nil t nil t) - "")) - (iv (completing-read - "View buffers using which keybindings (emacs, vi, or less): " - '(("emacs") ("vi") ("less")) nil t nil t)) - (ie (completing-read - "Edit other buffers using which keybindings (emacs or vi): " - '(("emacs") ("vi")) nil t nil t)) - (ms (y-or-n-p "Use multiple windows? ")) - (sp (y-or-n-p "Split screens? ")) - ) - (if (equal ee "") (setq ee nil)) - (if (equal te "") (setq te "xterm")) - (if (equal iv "") (setq iv "emacs")) - (if (equal ie "") (setq ie "emacs")) - (list ee (intern te) (intern iv) (intern ie) ms sp))) - -(defun energize-set-edit-modes-dbox-prompt () - (let* ((ee (cond ((member energize-external-editor '("" "emacs" nil)) 0) - ((member energize-external-editor '("vi" vi)) - (cond ((eq energize-vi-terminal-emulator 'xterm) 1) - ((eq energize-vi-terminal-emulator 'cmdtool) 2) - (t (error "unrecognised terminal emulator")))) - (t 3))) - (o (if (and (stringp energize-external-editor) - (not (equal energize-external-editor "vi"))) - energize-external-editor - "")) - (iv (cond ((memq energize-internal-viewer '(nil emacs)) 0) - ((eq energize-internal-viewer 'vi) 1) - ((eq energize-internal-viewer 'less) 2) - (t (error "unrecognised internal-viewer")))) - (ie (cond ((memq energize-internal-editor '(nil emacs)) 0) - ((eq energize-internal-editor 'vi) 1) - (t (error "unrecognised internal-editor")))) - (ms (cond ((memq energize-screen-mode '(nil single)) 0) - ((eq energize-screen-mode 'several) 1) - ((eq energize-screen-mode 'multi) 2) - (t (error "unrecognised screen-mode")))) - (sp (if energize-split-screens-p 1 0)) - - (result (energize-edit-mode-prompt ee ie iv o ms sp)) - ) - (setq ee (nth 0 result) - iv (nth 1 result) - ie (nth 2 result) - o (nth 3 result) - ms (nth 4 result) - sp (nth 5 result)) - (list (cond ((= ee 0) nil) - ((= ee 1) "vi") - ((= ee 2) "vi") - ((= ee 3) o) - (t (error "ee losing"))) - (cond ((= ee 1) 'xterm) - ((= ee 2) 'cmdtool) - (t nil)) - (cond ((= iv 0) 'emacs) - ((= iv 1) 'vi) - ((= iv 2) 'less) - (t (error "iv losing"))) - (cond ((= ie 0) 'emacs) - ((= ie 1) 'vi) - (t (error "ie losing"))) - (cond ((= ms 0) 'single) - ((= ms 1) 'several) - ((= ms 2) 'multi) - (t (error "ms losing"))) - (cond ((= sp 0) 'nil) - ((= sp 1) 't) - (t (error "sp losing"))) - ))) - -(defun energize-set-edit-modes (external-editor - terminal-emulator - internal-viewer - internal-editor - multi-screen-p - split-screens-p) - "Prompts for the various edit and view modes of Energize. - -The \"external editor\" is the editor which Energize should use when -you ask it to edit a file. If you simply hit return, the files will -be edited in Lucid Emacs. The default for this is taken from the -environment variable $ENERGIZE_EXTERNAL_EDITOR. - -If you specify \"vi\" as your external editor, then you will be asked -which terminal emulator window should be launched to run the vi (either -xterm, shelltool, or cmdtool.) The default for this is taken from the -environment variable $ENERGIZE_VI_WRAPPER. - -Many of the Energize buffers (such as the Browsers) are not editable. -You have three choices for which keybindings you would like to use for -moving and searching around in those buffers: \"emacs\", \"vi\", or -\"less\" (which is a popular variant of \"more\"). The default for -this is taken from the environment variable $ENERGIZE_VIEW_MODE. - -Some Energize buffers (such as the Project buffers) are editable, and -an external editor cannot be used on them. For these buffers, you have -a choice of either \"emacs\" or \"vi\" keybindings. The default for -this is taken from the environment variable $ENERGIZE_EDIT_MODE. - -If you are not using an external editor, then specifying \"vi\" here -means that evi, the emacs vi emulator, will be used to edit your source -files as well. - -You will also be asked whether Energize should automatically pop up multiple -windows (\"frames\" in emacs terminology) or should use and reuse one only -\(which is the traditional emacs model.) The default for this is taken from -the environment variable $ENERGIZE_MULTI_SCREEN_MODE. - -Sometimes Energize wants to display two buffers at once, for example, the -Debugger buffer and the source file corresponding to the current stack frame. -You have two choices for how this should happen: one is to display the source -in the debugger frame, `splitting' the frame vertically, and the other is to -use two frames, one for the debugger and one for the source. The default for -this is taken from the envvironment variable $ENERGIZE_SPLIT_SCREENS_P." -;; (interactive (energize-set-edit-modes-minibuf-prompt)) - (interactive (energize-set-edit-modes-dbox-prompt)) - (if (null terminal-emulator) (setq terminal-emulator 'xterm)) - (if (equal energize-external-editor "emacs") - (setq energize-external-editor nil)) - - (or (null external-editor) - (stringp external-editor) - (signal 'wrong-type-argument (list 'stringp external-editor))) - (or (symbolp terminal-emulator) - (signal 'wrong-type-argument (list 'symbolp terminal-emulator))) - (or (symbolp internal-viewer) - (signal 'wrong-type-argument (list 'symbolp internal-viewer))) - (or (symbolp internal-editor) - (signal 'wrong-type-argument (list 'symbolp internal-editor))) - (or (memq split-screens-p '(t nil)) - (error "split-screens-p must be t or nil")) - - (cond ((equal external-editor "") (setq energize-external-editor nil)) - ((equal external-editor "vi") (setq energize-external-editor 'vi)) - (t (setq energize-external-editor external-editor))) - - (if (eq internal-viewer 'emacs) (setq internal-viewer nil)) - (if (eq internal-editor 'emacs) (setq internal-editor nil)) - (setq energize-vi-terminal-emulator terminal-emulator) - (setq energize-internal-editor internal-editor) - (setq energize-internal-viewer internal-viewer) - - (cond ((and (null energize-internal-viewer) - (null energize-internal-editor)) - ;; Emacs all the way. They must be clueful. -;; (remove-hook 'energize-disconnect-hook 'save-buffers-kill-emacs) - (setq pop-up-windows energize-split-screens-p)) - (t -;; (add-hook 'energize-disconnect-hook 'save-buffers-kill-emacs) - (setq pop-up-windows nil))) - - (cond (energize-external-editor - (add-hook 'energize-disconnect-hook 'save-buffers-kill-emacs) - (energize-external-editor-set-menubar)) - (t - (remove-hook 'energize-disconnect-hook 'save-buffers-kill-emacs) - (energize-internal-editor-set-menubar))) - - (cond ;((eq multi-screen-p energize-screen-mode) - ; nil) - ((memq multi-screen-p '(t multi)) - (energize-multi-screen-mode)) - ((memq multi-screen-p '(nil single)) - (energize-single-screen-mode)) - ((memq multi-screen-p '(several)) - (energize-several-screens-mode)) - (t (error "multi-screen-p %S unrecognised" multi-screen-p))) - - (setq energize-split-screens-p split-screens-p) - - (let ((buffers (buffer-list))) - (save-excursion - (while buffers - (if (energize-buffer-p (car buffers)) - (progn - (set-buffer (car buffers)) - (normal-mode) - (energize-buffer-creation-hook-function (car buffers)))) - (setq buffers (cdr buffers))))) - (setq energize-edit-modes-specified t) - nil) - -(defun energize-hack-external-editor-mode () - (if energize-edit-modes-specified - nil - (condition-case c - (let ((ee (getenv "ENERGIZE_EXTERNAL_EDITOR")) - (te (getenv "ENERGIZE_VI_WRAPPER")) - (iv (getenv "ENERGIZE_VIEW_MODE")) - (ie (getenv "ENERGIZE_EDIT_MODE")) - (ms (getenv "ENERGIZE_MULTI_SCREEN_MODE")) - (sp (getenv "ENERGIZE_SPLIT_SCREENS_P")) - ) - (if (member ee '("" nil)) (setq ee nil)) - (if (member te '("" nil)) (setq te "xterm")) - (if (member iv '("" nil)) (setq iv "emacs")) - (if (member ie '("" nil)) (setq ie "emacs")) - (if (member sp '("" nil)) (setq sp "yes")) - (if ms (setq ms (downcase ms))) - (setq sp (downcase sp)) - (let ((standard-output (function external-debugging-output))) - (if (member te '("xterm" "shelltool" "cmdtool")) - nil - (princ (format - "$ENERGIZE_VI_WRAPPER is %S, not xterm, shelltool, or cmdtool.\n" te)) - (setq te nil)) - (if (member iv '("emacs" "vi" "less")) - nil - (princ (format - "$ENERGIZE_VIEW_MODE is %S, not emacs, vi, or less.\n" - iv)) - (setq iv nil)) - (if (member ie '("emacs" "vi" "less")) - nil - (princ (format - "$ENERGIZE_EDIT_MODE is %S, not emacs or vi.\n" ie)) - (setq ie nil)) - (cond ((member ms '("yes" "y" "true" "on" "1" "" "multi" "many" - "often")) - (setq ms 'multi)) - ((member ms '("no" "n" "false" "off" "0" "single" - "never")) - (setq ms 'single)) - ((member ms '("several" "some" "few" "sometimes")) - (setq ms 'several)) - (t - (if ms - (princ - (format - "$ENERGIZE_MULTI_SCREEN_MODE was %S, not often, sometimes, or never\n" - ms))) - (setq ms (or energize-screen-mode - (if (and (null ee) - (equal iv "emacs") - (equal ie "emacs")) - 'single - 'multi))))) - (cond ((member sp '("yes" "y" "true" "on" "1" "")) - (setq sp t)) - ((member sp '("no" "n" "false" "off" "0")) - (setq sp nil)) - (t - (princ - (format "$ENERGIZE_SPLIT_SCREENS_P was %S, not a boolean.\n" - sp)))) - ) - (energize-set-edit-modes ee (intern te) (intern iv) (intern ie) ms sp) - ) - ;; condition-case - (error - (let ((standard-output (function external-debugging-output))) - (princ "Internal error: %S\n" c)))))) - - -;;; Make the buffers menu say "view file" if in external-editor mode -;;; Originally defined in menubar.el - -(defun format-buffers-menu-line (buffer) - "Returns a string to represent the given buffer in the Buffer menu. -nil means the buffer shouldn't be listed. You can redefine this." - (if (string-match "\\` " (setq buffer (buffer-name buffer))) - nil - (if energize-external-editor - (concat -; (if (buffer-file-name (get-buffer buffer)) -; "View File " -; "View Buffer ") - "View " - buffer) - buffer)))
--- a/lisp/energize/energize-visit-use.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,682 +0,0 @@ -;;; -*- Mode:Emacs-Lisp -*- -;;; Copyright © 1992-1993 by Lucid, Inc. All Rights Reserved. - -;; Load this file and ^X-\ (back-slash) gets bound to a -;; command that visit all the places where a language element is used. -;; It can be started from the Le-Browser buffer of that language element -;; or from a toplevel from defining the element. -;; -;; The visit happens as follows: -;; - the 1st ^X-\ jumps to the beginning of the definition of the 1sr user. -;; - then search-forward inside the first user for the name of the -;; language element that was in the le-browser buffer. -;; - the 2rd one searches again etc.. until no more match is found inside -;; the body of the 1 user. -;; - after the last match is seen the next user of the LE is visited -;; the same way. -;; -;; If you want to start revisiting while a previous visit is not terminated do -;; ^U-^X-\ in another (or the same) le-browser buffer. -;; -;; If you position the point on a User in the LE Browser buffer before doing -;; ^X-\, that use will become the next one shown. -;; -;; energize-next-use-previous, ^U-1-^X-\, backs up one use -;; -;; It's quite crude and the UI could be improved in different ways. -;; What about: -;; - Allow for stacking of visits so that you can recursively -;; visit another LE while one is being visited. -;; - Highlight all the occurences of the LE-name inside the body of the user. -;; - Deal with *alternatives* - -(defvar energize-next-use-show-le-browser t - "*If t energize-next-use-command will show both the next use and the le-browser buffer") - -(defvar energize-next-use-search-by-file nil ;; default is off cause on is slow - "*If t energize-next-use-command will show all uses in a file before going to -the next file") - -(defvar energize-next-use-command-name ()) -(defvar energize-next-use-label ()) -(defvar energize-next-use-name ()) -(defvar energize-next-use-from-mark ()) -(defvar energize-next-use-source-start-mark ()) -(defvar energize-next-use-source-end-mark ()) -(defvar energize-next-use-source-current-mark ()) -(defvar energize-next-use-current-file ()) -(defvar energize-next-use-file-began-mark ()) -(defvar energize-next-use-from-extent-cache ()) -(defvar energize-next-use-history ()) -(defvar energize-next-use-history-pointer ()) -(defvar energize-next-use-marker-heap ()) - -;; remember markers we allocate so we can clean them up -(defun energize-next-use-make-a-marker () - (let ((m (make-marker))) - (setq energize-next-use-marker-heap - (cons m energize-next-use-marker-heap)) - m)) - -(defun energize-next-use-copy-a-marker (mark) - (let ((m (copy-marker mark))) - (setq energize-next-use-marker-heap - (cons m energize-next-use-marker-heap)) - m)) - -(defun energize-next-use-cleanup-markers () - (while energize-next-use-marker-heap - (set-marker (car energize-next-use-marker-heap) nil) - (setq energize-next-use-marker-heap (cdr energize-next-use-marker-heap)))) - -(defun extent-after (pos) - (let ((extent (next-extent (current-buffer)))) - (while (and extent (< (extent-start-position extent) pos)) - (setq extent (next-extent extent))) - extent)) - -(defun energize-next-use-start-pos () - (save-excursion - (goto-char (point-min)) - (if (search-forward energize-next-use-label () t) - (point) - ()))) - -;; see if we are in the LE Browser buffer of the object we are looking at -;; uses of. If so, capture the position as a possible place to find the -;; next user, rather than take the first or next in sequence. -(defun energize-next-use-start-pos-offset () - ;; energize-next-use-from-mark is NULL iff this is called from - ;; energize-next-use-init - in that case assume that if we are in a LEB - ;; it is the one we will be using - (if (if (and energize-next-use-from-mark - (marker-buffer energize-next-use-from-mark)) - (eq (current-buffer) (marker-buffer energize-next-use-from-mark)) - (eq major-mode 'energize-browser-mode)) - (save-excursion - (beginning-of-line) - (point)))) - -(defun energize-next-use-get-name (name) - (let ((colon (- (length name) 1))) - (while (and (> colon 0) (not (eq (aref name colon) ?:))) - (setq colon (- colon 1))) - (if (= (aref name colon) ?:) - (substring name (+ colon 1)) - name))) - -;; cache the extents (and later the results of following them to the -;; source buffer) to avoid calling the server too many times -;; returns nil if the extent does not have a "source" menu option -;; returns the cache entry otherwise -(defun energize-next-use-valid-from-extent-p (buff extent) - (let ((cache-entry (assoc extent energize-next-use-from-extent-cache))) - (if (not cache-entry) - (if (energize-list-menu buff extent () - energize-next-use-command-name) - (setq energize-next-use-from-extent-cache - (cons (setq cache-entry (list extent)) - energize-next-use-from-extent-cache)))) - cache-entry)) - -;; decide what use to look at next. current is nil if called from -;; energize-next-use-next, else it is the presumed first extent for -;; energize-next-use-from-mark passed from energize-next-use-init -;; wanted-pos is the position of the cursor in the LE Browser of the -;; object being looked for, or nil if the cursor is not in that buffer -;; if wanted-pos is non-nil it means we will consider restarting the -;; search at the user indicated by that position. Otherwise, we just -;; return current. If this is nil too, it means just continue searching -;; as before. If not, it means continue initializing as before. -;; -;; returns an extent to be used to set energize-next-use-from-mark or nil -(defun energize-next-use-adjust-for-start-offset (current wanted-pos) - ;; assumes we're in the LE browser buffer (we may not have been when - ;; the value of wanted-pos was determined) - (if wanted-pos - (let ((end-pos (energize-next-use-end-pos)) - ;; ok will be set to the first extent found that is actually - ;; a user - (ok nil) - (try (or current (extent-after (energize-next-use-start-pos))))) - ;; loop will exit if an actual user extent is found that follows - ;; the wanted-pos - if we go out of bounds, try is set to nil - ;; else it is the desired extent on exit from the loop - (while (and try - (or (< (extent-start-position try) end-pos) - (setq try nil)) - (not - (and - ;; try is a valid user extent if this menu exists - (energize-next-use-valid-from-extent-p - (current-buffer) try) - ;; but it might be before wanted-pos, - (or (> (extent-end-position try) wanted-pos) - ;; in which case remember it as ok unless - ;; ok was already set - (and (setq ok (or ok try)) nil))))) - (setq try (next-extent try))) - ;; return try or if we were called from init, return ok - ;; else return nil to mean continue searching in current sequence - (or try (and current ok))) - current)) - -(defun energize-next-use-set-marks (extent buffer) - (if (not energize-next-use-from-mark) - (setq energize-next-use-from-mark (make-marker))) - (set-marker energize-next-use-from-mark - (extent-start-position extent) buffer)) - -(defun energize-next-use-init (command label) - ;; start-offset is the position of point if it is in the LEB buffer - (let ((start-offset (energize-next-use-start-pos-offset))) - (if (not (eq major-mode 'energize-browser-mode)) - (if (energize-list-menu (current-buffer) - (energize-extent-at (point)) () - "browse_le") - (energize-execute-command "browse_le" - (energize-extent-at (point)) () t) - (error - "command undefined unless in a LE buffer or at a LE definition form"))) - (setq energize-next-use-command-name command) - (setq energize-next-use-label label) - (setq energize-next-use-current-file nil) - (setq energize-next-use-from-extent-cache nil) - (setq energize-next-use-history nil) - (setq energize-next-use-history-pointer nil) - (let* ((pos (energize-next-use-start-pos)) - (extent (and pos - ;; start at the beginning, unless start-pos says - ;; to start further along - (energize-next-use-adjust-for-start-offset - (extent-after pos) start-offset)))) - (if (null extent) - (error "no uses") - (energize-next-use-set-marks extent (current-buffer)) - (setq energize-next-use-name - (save-excursion - (let ((s (energize-next-use-get-name (buffer-name)))) - (if (let ((l (length s))) - (while (not - (and (> l 0) - (progn - (beginning-of-buffer) - (search-forward - (substring s 0 l) nil t)))) - (setq l (- l 1))) - (> l 0)) - (let (pos) - (backward-sexp) - (setq pos (point)) - (forward-sexp) - (buffer-substring pos (point))) - s)))))) - (energize-next-use-show-both))) - -(defun energize-next-use-end-pos () - (save-excursion - (goto-char (point-min)) - (search-forward energize-next-use-label) - (re-search-forward "^ *[A-Za-z ]*: " () 'end) - (point))) - -;; return the source-entry portion of the extent cache, looking it up -;; if necessary by doing energize-execute-command "source" on the extent -;; source-entry portion is list of -;; a) point marker after executing the "source" command -;; b) a flag saying we've actually visited this use, not just looked it up -;; c) marker for the window-start after executing the "source" command -(defun energize-next-use-from-extent-source-info (from-extent-entry) - (let ((extent (car from-extent-entry)) - (source-entry (cdr from-extent-entry))) - (if (not source-entry) - (save-window-excursion - (save-excursion - (let ((pre-display-buffer-function nil)) ;; hack for multi-frame - (energize-execute-command - energize-next-use-command-name extent () t)) - (setcdr from-extent-entry - (setq source-entry - (list (energize-next-use-copy-a-marker - (point-marker)) - nil - (set-marker - (energize-next-use-make-a-marker) - (window-start)))))))) - source-entry)) - -(defun energize-next-use-from-extent-source-mark (source-entry) - (car source-entry)) - -(defun energize-next-use-from-extent-source-start-mark (source-entry) - (car (cdr (cdr source-entry)))) - -(defun energize-next-use-from-extent-source-seen-p (source-entry) - (car (cdr source-entry))) - -(defun energize-next-use-from-extent-set-source-seen-p (source-entry) - (setcar (cdr source-entry) t)) - -;; goto the next user - or if advance is nil try to re-establish the -;; extent for the current one -(defun energize-next-use-next-to-extent (advance) - (let ((buff (marker-buffer energize-next-use-from-mark)) - (from-pos (marker-position energize-next-use-from-mark))) - (and buff from-pos - (let ((result nil)) - (set-buffer buff) - (let ((end-pos (energize-next-use-end-pos)) - (extent (or (energize-extent-at from-pos) - (setq advance nil) - (extent-after from-pos)))) - (if (and advance energize-next-use-search-by-file) - (if (not energize-next-use-current-file) - ;; if searching by file but dont have a current file, - ;; set current file to current source buffer - (if (setq energize-next-use-current-file - (and energize-next-use-source-start-mark - (marker-buffer - energize-next-use-source-start-mark))) - (progn - (if (not energize-next-use-file-began-mark) - (setq energize-next-use-file-began-mark - (make-marker))) - (set-marker energize-next-use-file-began-mark - from-pos buff)))) - (setq energize-next-use-current-file nil)) - (if advance - (setq extent (next-extent extent))) - (if energize-next-use-search-by-file - (message "Searching for next use in current file...") - (message "Searching for next use...")) - ;; validate the extent - (while extent - (while - (and - extent - ;; if extent is beyond the end of the "used by" zone - ;; set it to nil to terminate loop - (or (< (extent-start-position extent) end-pos) - (setq extent nil)) - (not - (let ((from-extent-entry - (energize-next-use-valid-from-extent-p - buff extent))) - (and - ;; true if the extent has a "source" menu option - from-extent-entry - (or - (not energize-next-use-search-by-file) - ;; see if this is extent points to the current file - ;; or a file we haven't looked at yet, if not current - ;; file is set now - (let* ((source-entry - (energize-next-use-from-extent-source-info - from-extent-entry)) - (source-marker - (energize-next-use-from-extent-source-mark - source-entry)) - (buff (marker-buffer source-marker))) - (if energize-next-use-current-file - (eq buff energize-next-use-current-file) - (not - (energize-next-use-from-extent-source-seen-p - source-entry))))))))) - (setq extent (next-extent extent))) - (if extent - ;; we found one we can use - remember it but set extent - ;; to nil to terminate the loop - (progn - ;; convert the extent to a mark for future reference - (energize-next-use-set-marks extent buff) - ;; terminate the loop - (setq extent nil) - ;; saw we succeeded in finding something - (setq result t)) - ;; we didn't find anything valid - if we were looking in - ;; the current file, restart the loop now looking for - ;; anything we haven't used yet, to make it the current file - ;; if we weren't looking in the current file then we really - ;; have failed to find anything left, so return nil - (if energize-next-use-current-file - (progn - (setq energize-next-use-current-file nil) - (setq extent - ;; restart loop from were we started looking at - ;; the current file - (let ((pos (marker-position - energize-next-use-file-began-mark))) - (and pos - (or (energize-extent-at pos) - (extent-after pos))))))))) - (if energize-next-use-search-by-file - (message "Searching for next use in current file...done") - (message "Searching for next use...done")) - result))))) - -(defun energize-next-use-show-from (&optional mark) - (setq mark (or mark energize-next-use-from-mark)) - (if energize-next-use-show-le-browser - ;; position the browser to the line of the current user - (let ((buff (marker-buffer mark)) - (from-pos (marker-position mark))) - (and buff from-pos - (progn - ;; don't worry about pre-display-buffer-function here; - ;; we actually want a new frame to be created when - ;; displaying the Browser buffer. - (pop-to-buffer buff) - (goto-char from-pos) - (beginning-of-line) - (set-window-start (selected-window) (point))))) - (message "next use of %s" energize-next-use-name))) - -(defun energize-next-use-show-to () - (let* ((buff (marker-buffer energize-next-use-from-mark)) - (from-pos (marker-position energize-next-use-from-mark)) - (from-extent (and buff from-pos (energize-extent-at from-pos buff))) - (from-extent-entry - ;; get the cache entry for the current user extent in the browser - (energize-next-use-valid-from-extent-p buff from-extent)) - (source-extent nil)) - (and - from-extent-entry - (let* ((source-entry - (energize-next-use-from-extent-source-info - from-extent-entry)) - (source-marker - (energize-next-use-from-extent-source-mark - source-entry)) - (source-buffer (marker-buffer source-marker)) - (source-pos (marker-position source-marker)) - ;; if we're allowed to split frames, call pop-to-buffer - ;; with no pre-display-buffer-function, so that the current - ;; frame (the frame of the Browser buffer) is used. If - ;; we don't split frames, then use the p-d-b-f, so that a - ;; new frame can be created for this file. - (pre-display-buffer-function - (if energize-split-screens-p - nil - pre-display-buffer-function))) - (if source-pos - (progn - ;; position the source window as if we had just executed the - ;; command "source" on the from-extent in the browser - (pop-to-buffer source-buffer) - (set-window-start - (selected-window) - (marker-position - (energize-next-use-from-extent-source-start-mark source-entry)) - t) - (goto-char source-marker) - ;; note that we have actually visited this use - (energize-next-use-from-extent-set-source-seen-p source-entry) - (setq source-extent (energize-extent-at (point)))))) - (let ((start-pos (extent-start-position source-extent))) - ;; convert positions to markers - (if (not energize-next-use-source-start-mark) - (setq energize-next-use-source-start-mark (make-marker))) - (if (not energize-next-use-source-end-mark) - (setq energize-next-use-source-end-mark (make-marker))) - (if (not energize-next-use-source-current-mark) - (setq energize-next-use-source-current-mark (make-marker))) - (set-marker energize-next-use-source-start-mark start-pos) - (set-marker energize-next-use-source-current-mark start-pos) - (set-marker energize-next-use-source-end-mark - (extent-end-position source-extent)))))) - -(defun energize-next-use-search-for-name () - (if (let ((case-fold-search nil) - (found nil) - (end-pos (marker-position energize-next-use-source-end-mark))) - (if end-pos - (progn - (buffer-syntactic-context-flush-cache) - ;; case sensitive exact search for token not in comment or string - (while - (and - (setq found - (re-search-forward - (concat "[^A-Za-z0-9_]" - (regexp-quote energize-next-use-name) - "[^A-Za-z0-9_]") - end-pos t)) - (save-excursion (buffer-syntactic-context)))))) - found) - (progn - ;; allow for the delimiter - (backward-char 1) - t) - nil)) - - -;; say this if search can't find the thing that is being used -(defun energize-next-use-not-lexically-apparent () - (message "next use of %s is here, but not lexically apparent" - energize-next-use-name)) - -;; called when visiting a new users, not a new use within that user -(defun energize-next-use-show-both () - ;; reposition the browser to the line showing the user - (energize-next-use-show-from) - ;; position the source to the user definition form - (energize-next-use-show-to) - ;; instead of stopping at the beginning of the user form, - ;; go immediately to the first use found if it is lexically apparent - (if (and - energize-next-use-source-start-mark - (let ((buff (marker-buffer energize-next-use-source-start-mark)) - (current-pos - (marker-position energize-next-use-source-current-mark)) - (end-pos (marker-position energize-next-use-source-end-mark))) - (if (and buff current-pos end-pos) - (save-excursion - (set-buffer buff) - (and (< current-pos end-pos) - (progn - (goto-char current-pos) - (energize-next-use-search-for-name))))))) - ;; an apparent use is there, so proceed as if going to the next use - ;; within the user - (energize-next-use-next) - ;; no use is apparent, so print a message - (energize-next-use-not-lexically-apparent) - ;; record the history entry for a non-apparent use - it is distinguished - ;; by having no point position from which to make a region to highlight - (setq energize-next-use-history - (cons (list (energize-next-use-copy-a-marker - energize-next-use-from-mark) - (energize-next-use-copy-a-marker - energize-next-use-source-current-mark) - (set-marker (energize-next-use-make-a-marker) - (window-start))) - energize-next-use-history)) - (setq energize-next-use-history-pointer - energize-next-use-history))) - -;; show the next use within the current user - if no more are found -;; go to the next user -(defun energize-next-use-next () - ;; new-start will get set to an extent for a user at which to - ;; reposition the visit, iff the cursor is in the LEB buffer - ;; of the usee at a valid position in the list of users. - (let ((new-start (energize-next-use-adjust-for-start-offset - nil (energize-next-use-start-pos-offset))) - (buff (marker-buffer energize-next-use-source-start-mark)) - (current-pos (marker-position energize-next-use-source-current-mark)) - (end-pos (marker-position energize-next-use-source-end-mark))) - (if (and buff (not (eq buff (current-buffer)))) - (set-buffer buff)) - ;; new-start means we are repositioning due to the point being in the - ;; user list in the browser. In this case we will act as if we are - ;; at the end of the old user - (if new-start - (energize-next-use-set-marks - new-start - (marker-buffer energize-next-use-from-mark))) - (cond ((and buff current-pos end-pos - (not new-start) ;; don't stay in current user if repositioning - (< current-pos end-pos) - (progn - (goto-char current-pos) - (energize-next-use-search-for-name))) - ;; the 'still in the same user' case - (set-marker energize-next-use-source-current-mark (point)) - ;; redisplay the browser in case it got covered up - (energize-next-use-show-from) - ;; We know that we're not changing files, so there won't be any - ;; need to create a new frame; it would be nice if we reselected - ;; the appropriate frame instead of just using the current frame, - ;; but that's more work, and this will very rarely do the wrong - ;; thing. - (let ((pre-display-buffer-function - (if energize-split-screens-p - nil - pre-display-buffer-function))) - ;; display the source buffer - (pop-to-buffer buff) - ;; had to do this because window-start overrides point - ;; in terms of deciding what part of the window to show - ;; this seems like a possible bug - (set-window-buffer (selected-window) buff) - (push-mark (point) t) - (backward-char (length energize-next-use-name)) - (if zmacs-regions - (zmacs-activate-region)) - ;; record the visit in the history - this entry has a point - ;; marker, distinguishing it from a non-lexically apparent one - (setq energize-next-use-history - (cons (list - (energize-next-use-copy-a-marker - energize-next-use-from-mark) - (energize-next-use-copy-a-marker - energize-next-use-source-current-mark) - (set-marker (energize-next-use-make-a-marker) - (window-start)) - (set-marker (energize-next-use-make-a-marker) - (point))) - energize-next-use-history)) - (setq energize-next-use-history-pointer - energize-next-use-history))) - ((or new-start - (energize-next-use-next-to-extent - (and buff current-pos end-pos))) - ;; the 'moved to a new user or repositioned to one' case - (energize-next-use-show-both)) - (t - ;; no more users - (energize-next-use-terminate) - (error "no more"))))) - - -(defun energize-next-use-terminate () - (setq energize-next-use-command-name ()) - (setq energize-next-use-label ()) - (setq energize-next-use-name ()) - (if energize-next-use-from-mark - (set-marker energize-next-use-from-mark nil)) - (if energize-next-use-source-start-mark - (set-marker energize-next-use-source-start-mark nil)) - (if energize-next-use-source-current-mark - (set-marker energize-next-use-source-current-mark nil)) - (if energize-next-use-source-end-mark - (set-marker energize-next-use-source-end-mark nil)) - (if energize-next-use-file-began-mark - (set-marker energize-next-use-file-began-mark nil)) - (energize-next-use-cleanup-markers)) - -;; get next use from history list if we have regressed or are regressing -;; if history-pointer == history then we are in the present -;; to go back set history-pointer to cdr history-pointer -;; to go forward set history-pointer to the last cell on history prior to -;; the current value of history-pointer -;; a history entry is just redisplay info for the browser and source buffers -(defun energize-next-use-from-history (backward) - (if backward - (setq energize-next-use-history-pointer - (cdr energize-next-use-history-pointer)) - (let ((temp energize-next-use-history-pointer)) - (setq energize-next-use-history-pointer - energize-next-use-history) - (while (not (eq (cdr energize-next-use-history-pointer) temp)) - (setq energize-next-use-history-pointer - (cdr energize-next-use-history-pointer))))) - (let* ((history-entry (car energize-next-use-history-pointer)) - (from-mark (car history-entry)) - (source-mark (car (cdr history-entry))) - (source-start-mark (car (cdr (cdr history-entry)))) - (source-point-mark (car (cdr (cdr (cdr history-entry)))))) - (energize-next-use-show-from from-mark) - (if (and (marker-position source-mark) - (marker-position source-start-mark)) - (progn - (pop-to-buffer (marker-buffer source-mark)) - (set-window-start - (selected-window) (marker-position source-start-mark) t) - (goto-char source-mark) - (if (and source-point-mark (marker-position source-point-mark)) - (progn - (push-mark (point) t) - (goto-char source-point-mark) - (if zmacs-regions - (zmacs-activate-region))) - (energize-next-use-not-lexically-apparent)))))) - -(defun energize-next-use-go (label command) - (if (and energize-next-use-from-mark - (marker-position energize-next-use-from-mark)) - (if (eq energize-next-use-history-pointer - energize-next-use-history) - ;; normal case - (energize-next-use-next) - ;; in the depths of history but going forward - (energize-next-use-from-history nil)) - ;; beginning of time - (energize-next-use-init label command))) - -(defun energize-next-use-previous () - (if (cdr energize-next-use-history-pointer) - ;; going back in time - (energize-next-use-from-history t) - ;; trying to go beyond the pale - (error "no prior use"))) - -(defun energize-next-use-command (arg) - "Show the next place where the current language element is used. -The current language element is the one that point is on for source buffers -or the element displayed in a language element browser buffer. -Repeated calls to this functions visit all the callers in sequence. - -With prefix arg = 1, back up to the last use. - -With prefix arg > 1, start a visit from scratch on the current language -element. - -If the point is on a particular user in the language element browser, the -search will be (re)started in that user. - -The variable energize-next-use-show-le-browser controls if this command should -display both the language element browser buffer and the next user or just the -next user of the current language element. - -The variable energize-next-use-search-by-file controls whether all uses within -a given file should be shown in sequence. If the value is nil, the uses -are shown in the order in which they appear in the LE Browser. If the -value is non-nil, the all uses in a given file are shown before proceeding to -the next use in another file." - (interactive "P") - (if (eq arg 1) - (energize-next-use-previous) - (if arg - (energize-next-use-terminate)) - (energize-next-use-go "source" "Used By:"))) - -(define-key global-map '[(control x) \\] 'energize-next-use-command) - -(defun energize-next-use-start () - "Start visiting the uses of a language element. -If executed in a LE Browser buffer visit the uses of the language element -in the buffer. In a source buffer visit the uses of the language element -at (point)" - (interactive) - (energize-next-use-command 4))
--- a/lisp/energize/energize-windows.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,404 +0,0 @@ -;;; -*- Mode:Emacs-Lisp -*- -;;; Copyright © 1992 by Lucid, Inc. All Rights Reserved. - -;;; Displaying buffers. Why is this so hard? - - -;;; This crud is damage control, because sometimes things get confused, and -;;; the server asks us to display a buffer that has been killed. - -(defun energize-request-kill-buffer-if-dead (buffer) - (cond ((not (bufferp buffer)) t) - ((null (buffer-name buffer)) - (if (energize-buffer-p buffer) - (energize-request-kill-buffer buffer)) - t) - (t nil))) - -(defun energize-prune-killed-buffers-from-list (buffer-extent-list) - (let ((rest buffer-extent-list) - (buffer-count 0) - (deleted-count 0)) - (while rest - (let* ((buffer (car rest)) - (extent (car (cdr rest)))) - (setq rest (cdr (cdr rest))) - (setq buffer-count (1+ buffer-count)) - (if (energize-request-kill-buffer-if-dead buffer) - (progn - (setq deleted-count (1+ deleted-count)) - (setq buffer-extent-list (delq buffer buffer-extent-list)) - (setq buffer-extent-list (delq extent buffer-extent-list)))))) - (if (> deleted-count 0) - (progn - (message - (format "Oops, confused about %s selected %s -- please try again." - (if (> deleted-count 1) - (format "%d of the" deleted-count) - (if (> buffer-count 1) - "one of the" - "the")) - (if (> buffer-count 1) - "buffers" - "buffer"))) - (ding t))) - buffer-extent-list)) - - -(defvar energize-auto-scroll-p t ;#### this should be nil, t is LOSING - "*If t, energize will scroll your debugger and error log buffers -to the bottom whenever output appears with reckless abandon. If nil, -it will behave just like normal shell and gdb-mode buffers.") - -(defvar energize-error-log-context-lines 0 - "*Number of lines to skip above the current error in the Energize error log") - -;;; called by energize-show-all-buffers -;;; If the extent is specified: -;;; - scrolls the window so that point is at at the beginning of the extent. -;;; - If the buffer is "Error Log", the extent is moved to top-of-window. -;;; - if `only-one' and the buffer is a source buffer, then... what? -;;; If the buffer is "*Debugger*" or "Error Log", point is moved to eof, -;;; IF and ONLY if it was at EOF already. -;;; -(defun energize-scroll-window-at-extent (window extent only-one) - (let* ((buffer (window-buffer window)) - (type (energize-buffer-type buffer))) - (if (and extent (null (extent-start-position extent))) - ;; it has been detached somehow. - (setq extent nil)) - (if extent - (let ((pos (extent-start-position extent))) - (if (not (eq pos 0)) - (progn - (set-window-point window pos) - (cond ((eq type 'energize-error-log-buffer) - ;; scroll the Error Log buffer so that the first error - ;; is at the top of the window. - (set-window-start window - (save-excursion - (set-buffer buffer) - (goto-char pos) - (forward-line - (- - energize-error-log-context-lines)) - (beginning-of-line) - (point)))) - ((and only-one (eq type 'energize-source-buffer)) - ;; if only one buffer is requested to be visible and it - ;; is a source buffer then scroll point close to the top - (set-window-start window - (save-excursion - (set-buffer buffer) - (goto-char pos) - (beginning-of-line) - (if (> (window-height window) - next-screen-context-lines) - (vertical-motion - (- next-screen-context-lines) - window) - (vertical-motion -1 window)) - (point))))))))) - - (cond ((and (memq type '(energize-error-log-buffer - energize-debugger-buffer)) - ; don't move point if it's before the last line - (or energize-auto-scroll-p - (>= (window-point window) - (save-excursion - (set-buffer (window-buffer window)) - ;;(comint-mark) - (energize-user-input-buffer-mark) - ))) - ) - ;; Debugger and Error Log buffers generally get scrolled to - ;; the bottom when displayed. - (set-window-point window - (save-excursion (set-buffer buffer) - (+ 1 (buffer-size)))) - ;; Careful to deactivate the selection when automatically moving - ;; the user to the end of the buffer. This is suboptimal, but - ;; otherwise we have bad interactions with the debugger-panel - ;; Print button. (Double-click on a value (point is now at the - ;; end of that word); hit Print; point is now at point-max, but - ;; the original word is still highlighted, which is incorrect - - ;; we're now in a state where the selection highlighting and the - ;; region between point and mark is out of sync. I'm not entirely - ;; sure how to fix this short of using a point-motion hook of some - ;; kind, so we'll punt, and just deactivate the region instead.) - (zmacs-deactivate-region) - )))) - - -;;; called by energize-make-buffers-visible -;;; For each of the contents of an plist of buffers and extents: -;;; - If the buffer is visible in a window -;;; - dedicate the window -;;; - energize-scroll-window-at-extent -;;; If we dedicated any windows, select the last one dedicated. -;;; For each of the buffers and extents: -;;; - pop-to-buffer -;;; - remember the first window selected in this way -;;; - dedicate the window -;;; - energize-scroll-window-at-extent; only-one arg is true if there -;;; is only one buffer/extent pair in the list -;;; - if energize-edit-buffer-externally-p make it read-only -;;; Un-dedicate the windows -;;; Select the remembered window (the first one we popped-to-buffer on) -;;; Maybe raise its frame -;;; -(defun energize-show-all-buffers (buffer-extent-list) - (let ((pop-up-windows t) - (dedicated-windows ()) - (buffer-extent-current) - (window-to-select ()) - (only-one (null (cdr (cdr buffer-extent-list))))) - (setq buffer-extent-current buffer-extent-list) - (while buffer-extent-current - (let* ((buffer (car buffer-extent-current)) - (extent (car (cdr buffer-extent-current))) - (window (get-buffer-window buffer (selected-frame)))) - (if window - (progn - (set-window-buffer-dedicated window buffer) - (setq dedicated-windows (cons window dedicated-windows)) - (energize-scroll-window-at-extent window extent only-one))) - (setq buffer-extent-current (cdr (cdr buffer-extent-current))))) - (if dedicated-windows - (select-window (car dedicated-windows))) - (setq buffer-extent-current buffer-extent-list) - (while buffer-extent-current - (let* ((buffer (car buffer-extent-current)) - (extent (car (cdr buffer-extent-current)))) -;; ## what was this intended to do? a frame is being passed as the -;; ## argument which means "always select a different window even if -;; ## it's visible in the selected window. -;; (pop-to-buffer buffer nil (selected-frame)) - (pop-to-buffer buffer) - (if (energize-edit-buffer-externally-p buffer) - (setq buffer-read-only t)) - (let ((window (selected-window))) - (if (null window-to-select) - (setq window-to-select window)) - (set-window-buffer-dedicated window buffer) - (setq dedicated-windows (cons window dedicated-windows)) - (energize-scroll-window-at-extent window extent only-one)) - (setq buffer-extent-current (cdr (cdr buffer-extent-current))))) - (while dedicated-windows - (set-window-buffer-dedicated (car dedicated-windows) ()) - (setq dedicated-windows (cdr dedicated-windows))) - - (select-window window-to-select) - ;; now we may have to pop the frame up - (let ((frame (selected-frame))) - (if (and energize-auto-raise-screen - (or (not (frame-visible-p frame)) - (not (frame-totally-visible-p frame)))) - (progn - (sit-for 0) - (make-frame-visible frame)))))) - -;;; called by energize-make-buffers-visible -(defun energize-main-buffer-of-list (list) - ;; Given an alternating list of buffers and extents, pick out the - ;; "interesting" buffer. If one of the buffers is in debugger-mode, - ;; or in breakpoint-mode, then that's the interesting one; otherwise, - ;; the last buffer in the list is the interesting one. - (let (buffer mode result) - (while list - (setq buffer (car list)) - (or (memq mode '(energize-debugger-mode energize-breakpoint-mode)) - (setq result buffer - mode (save-excursion (set-buffer buffer) major-mode))) - (setq list (cdr (cdr list)))) - result)) - -;;; called by energize-make-many-buffers-visible-function -;;; If there is only one buffer/extent pair, and it's a source buffer, then -;;; edit it in vi if that's the kind of kinkiness we're into. -;;; Get the "main" buffer, and select a frame for it. -;;; Then call energize-show-all-buffers. -;;; -(defun energize-make-buffers-visible (buffer-extent-list) - (let ((main-buffer (energize-main-buffer-of-list buffer-extent-list)) - window) - (if (and (null (cdr (cdr buffer-extent-list))) - (energize-edit-buffer-externally-p main-buffer)) - (energize-edit-buffer-externally-1 main-buffer - (car (cdr buffer-extent-list))) - ;; This may create and/or select a frame as a side-effect. - ;; I'm not sure it's necessary to call this, as display-buffer - ;; calls it too. But it can't hurt to select the appropriate - ;; frame early... - (let ((hacked-frame nil)) - (cond ((null energize-split-screens-p) - nil) - ((get-frame-name-for-buffer main-buffer) - (setq hacked-frame t) - (if pre-display-buffer-function - (funcall pre-display-buffer-function main-buffer nil nil)) - ) - ((setq window (get-buffer-window main-buffer t)) - (cond (window - (setq hacked-frame t) - (select-frame (window-frame window)))))) - (let ((pre-display-buffer-function - (if hacked-frame nil pre-display-buffer-function))) - (energize-show-all-buffers buffer-extent-list)) -;; ;; kludge!! Select the debugger frame, not the sources frame. -;; (if (and (null energize-split-screens-p) -;; pre-display-buffer-function) -;; (funcall pre-display-buffer-function main-buffer nil nil)) - )))) - -;;; this is the guts of energize-make-many-buffers-visible -;;; `arg' is really two args: `buffer-extent-list' and `go-there'. -;;; go-there is specified by -;;; Given a list of buffer/extent pairs, make them all visible at once -;;; (presumably in the same frame?) -;;; If `go-there' -;;; - call energize-make-buffers-visible -;;; else -;;; - dedicate the selected window -;;; - call energize-make-buffers-visible -;;; - re-select and undedicate the original selected window -;;; -(defun energize-make-many-buffers-visible-function (arg) - (let ((buffer-extent-list (car arg)) - (go-there (cdr arg))) - ;; enqueue an history record if we're going to move - (if go-there - (energize-history-enqueue)) - (setq buffer-extent-list - (energize-prune-killed-buffers-from-list buffer-extent-list)) - (if buffer-extent-list - (if go-there - (energize-make-buffers-visible buffer-extent-list) - (let ((window (selected-window))) - (set-window-buffer-dedicated window (window-buffer window)) - (unwind-protect - (energize-make-buffers-visible buffer-extent-list) - (set-window-buffer-dedicated window ()) - (select-window window))))))) - -(defvar energize-make-many-buffers-visible-should-enqueue-event t - "Special variable bound by energize-execute-command to allow the -buffers to be selected while the command is executed") - -;;; called by by editorside.c:MakeBufferAndExtentVisible(). -;;; should-enqueue is bound by `energize-execute-command' -;;; -(defun energize-make-many-buffers-visible (buffer-extent-list go-there) - "First arg is a list of buffers and extents. All those should be -made visible at the same time. If the second argument is T then point -should be moved to the first character of the extent of the first -buffer, or to the buffer if no extent is specified for this buffer. -If second argument is NIL point should not change." - (if energize-make-many-buffers-visible-should-enqueue-event - ;; don't do it from process filters, but wait until we come back to - ;; top-level. Using go-there should still be done sparingly, as we can - ;; surprise the user and grab their keystrokes into another buffer. - (enqueue-eval-event 'energize-make-many-buffers-visible-function - (cons buffer-extent-list go-there)) - ;; go-there is always true when called from energize-execute-command, - ;; I guess under the assumption that it's always ok to select a buffer - ;; when we're doing something in direct response to a menu selection. - (energize-make-many-buffers-visible-function - (cons buffer-extent-list t)))) - - -;;; This deales with the energize history -(defvar energize-navigation-history '(nil) - "List of places where Energize took you to. -It is a list of (file-name/buffer-name . position)") - -(defvar energize-history-maximum-length 20 - "Maximum number of locations kept in the energize history") - -(defvar energize-navigation-current () - "Current pointer into the energize-navigation-history") - -(defvar energize-navigation-current-length 0) - -(defun energize-history-enqueue () - "Memorize the current place in the history. -Trim the history if need be." - (let ((new-item - (cons (or buffer-file-truename (current-buffer)) - (1+ (count-lines 1 (point)))))) - (if (not (equal new-item (car energize-navigation-history))) - (progn - (setq energize-navigation-history - (cons new-item energize-navigation-history)) - (setq energize-navigation-current-length - (1+ energize-navigation-current-length)) - (if (> energize-navigation-current-length - (* 2 energize-history-maximum-length)) - (let ((tail (nthcdr energize-history-maximum-length - energize-navigation-history))) - (rplacd tail nil) - (setq energize-navigation-current-length - energize-history-maximum-length))))))) - -(defun energize-history-dequeue () - "Forget the current place in the history" - (setq energize-navigation-history (cdr energize-navigation-history))) - -(defun energize-history-go-back (item) - "Go back to the place memorized by item" - (let ((buffer-or-file (car item)) - (position (cdr item)) - (buffer ())) - (cond ((bufferp buffer-or-file) - (setq buffer buffer-or-file)) - ((stringp buffer-or-file) - (setq buffer (or (get-file-buffer buffer-or-file) - (find-file-noselect buffer-or-file))))) - (if (null (buffer-name buffer)) - () - (pop-to-buffer buffer) - (goto-line position) - t))) - -(defun energize-history-previous () - "Go back in the history. -If the last command was the same go back more" - (interactive) - (if (not (eq last-command 'energize-history-previous)) - (setq energize-navigation-current energize-navigation-history)) - (energize-history-enqueue) - (while (and (car energize-navigation-current) - (not - (energize-history-go-back (car energize-navigation-current)))) - (rplaca energize-navigation-current - (car (cdr energize-navigation-current))) - (rplacd energize-navigation-current - (cdr (cdr energize-navigation-current)))) - (if (null (car energize-navigation-current)) - (progn - (energize-history-dequeue) - (setq last-command 'beep) - (error "You reached the beginning of the Energize history")) - (setq energize-navigation-current - (cdr energize-navigation-current)))) - -(define-key global-map '(shift f14) 'energize-history-previous) - -(defun energize-history () - "Show the energize history in the energize history buffer" - (interactive) - (pop-to-buffer "*Energize History*") - (erase-buffer) - (mapcar (function (lambda (item) - (if item - (progn - (insert (format "%s" (car item))) - (indent-to-column 32 1) - (insert (format "%s\n" (cdr item))))))) - energize-navigation-history) - (goto-char (point-min)) - (energize-history-mode)) - -(defun energize-history-mode () - "Turn on energize history mode" - )
--- a/lisp/energize/ostore.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -;;; -*- Mode: Emacs-Lisp -*- -;;; Adds a couple of ObjectStore commands to the Energize "Browse" menu. - -(defun osbrowser-sentinel (proc msg) - (cond ((eq (process-status proc) 'exit) - (message "Osbrowser subprocess exited")) - ((eq (process-status proc) 'signal) - (message "Osbrowser subprocess killed")))) - -(defun os-browser () - (interactive) - (message "Launching osbrowser.") - (set-process-sentinel - (start-process "os-browser" "*os-browser*" "osbrowser") - 'osbrowser-sentinel)) - -(defun ossd-sentinel (proc msg) - (cond ((eq (process-status proc) 'exit) - (message "OS schema designer subprocess exited")) - ((eq (process-status proc) 'signal) - (message "OS schema designer subprocess killed")))) - -(defun os-schema-designer () - (interactive) - (message "Launching ossd.") - (set-process-sentinel - (start-process "os-schema-designer" "*os-schema-designer*" "ossd") - 'osbrowser-sentinel)) - -(add-menu-item '("Browse") "----" nil t) -(add-menu-item '("Browse") "OS Browser" 'os-browser t) -(add-menu-item '("Browse") "OS Schema Designer" 'os-schema-designer t) - -(provide 'ostore)
--- a/lisp/energize/write-file.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -; If you load this in your .emacs, write-file will be redefined to do -; what is described below. If you like it please tell us so -; that we could provide it by default. -; -; The function implements semantic 1. Comment out the lines marked -2 -; to get semantic 2 and comment out the lines marked -3 to get semantic 3. -; -; semantic 1: If it is assumed that C-x C-w _should_ rename the -; buffer as well as writing to the _new_ file, -; Energize is concerned, this should look as if I had copied the -; buffer, reverted the original to the disk image, and killed the -; reverted buffer, leaving only the new buffer without -; Energize dependencies or attachments. -; -; semantic 2: ... I would -; either want it to simply create the new file, leaving the buffer -; alone... -; -; semantic 3: ... or second best creating the file and a new buffer for it, -; so that I had two buffers, one for each named version of the -; file. - - -(defun energize-write-file (filename) - "Write the current buffer into file FILENAME. -Revert and kill the current buffer and replaces it by a new buffer -showing FILENAME." - (interactive - (list (if buffer-file-name - (read-file-name "Energize write file: " - nil nil nil nil) - (read-file-name "Energize write file: " - (cdr (assq 'default-directory - (buffer-local-variables))) - nil nil (buffer-name))))) - (if (and (file-exists-p filename) - (not - (yes-or-no-p (format "File %s already exists. Overwrite it? " - filename)))) - (error "Aborted")) - (write-region (point-min) (point-max) filename nil nil) - (if buffer-file-name ; -2 -3 - (revert-buffer t t)) ; -2 -3 - (kill-buffer nil) ; -2 -3 - (set-window-buffer ; -2 - (selected-window) ; -2 - (find-file-noselect filename)) ; -2 - ) - - -; Pick just one of the following -; This uses the new function for all buffers -(define-key ctl-x-map '(control w) 'energize-write-file) -; This preserves old behavior for non-energize buffers -; (energize-advise-function 'write-file) -
--- a/lisp/eos/loaddefs-eos.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11789 +0,0 @@ -;;; loaddefs.el --- define standard autoloads of other files - -;; Copyright (C) 1985, 1986, 1987, 1992-1995 Free Software Foundation, Inc. - -;; Maintainer: XEmacs -;; Keywords: internal - -;; 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 synched with FSF. - -;;; Commentary: - -;;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -;;; Special formatting conventions are used in this file! -;;; -;;; a backslash-newline is used at the beginning of a documentation string -;;; when that string should be stored in the file lib-src/DOCnnn, not in core. -;;; -;;; Such strings read into Lisp as numbers (during the pure-loading phase). -;;; -;;; But you must obey certain rules to make sure the string is understood -;;; and goes into lib-src/DOCnnn properly. Otherwise, the string will not go -;;; anywhere! -;;; -;;; The doc string must appear in the standard place in a call to -;;; defun, autoload, defvar or defconst. No Lisp macros are recognized. -;;; The open-paren starting the definition must appear in column 0. -;;; -;;; In defvar and defconst, there is an additional rule: -;;; The double-quote that starts the string must be on the same -;;; line as the defvar or defconst. -;;; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -;;; ********************************************************************** -;;; You should never need to write autoloads by hand and put them here. -;;; -;;; It is no longer necessary. Instead use autoload.el to maintain them -;;; for you. Just insert ";;;###autoload" before defuns or defmacros you -;;; want to be autoloaded, or other forms you want copied into loaddefs.el -;;; (defvars, key definitions, etc.). For example, -;;; ;;;###autoload -;;; (defun foobar () ....) -;;; ;;;###autoload (define-key global-map "f" 'foobar) -;;; ;;;###autoload -;;; (defvar foobar-var nil "\ -;;; This is foobar-var's doc-string.") -;;; -;;; Then do M-x update-file-autoloads on the file to update loaddefs.el. -;;; -;;; You can also use M-x update-directory-autoloads to update the autoloads -;;; in loaddefs.el for all .el files in the lisp/ directory, or M-x -;;; update-autoloads-here to update the autoloads for each file that -;;; already has an autoload section in this file. -;;; ********************************************************************** - -;;; Code: - -;; These variables are used by autoloadable packages. -;; They are defined here so that they do not get overridden -;; by the loading of those packages. - -;; Names in directory that end in one of these -;; are ignored in completion, -;; making it more likely you will get a unique match. -(setq completion-ignored-extensions - (mapcar 'purecopy - (if (eq system-type 'vax-vms) - '(".obj" ".elc" ".exe" ".bin" ".lbin" ".sbin" - ".dvi" ".toc" ".log" ".aux" - ".lof" ".brn" ".rnt" ".mem" ".lni" ".lis" - ".olb" ".tlb" ".mlb" ".hlb" ".glo" ".idx" ".lot" ".fmt") - '(".o" ".elc" "~" ".bin" ".lbin" ".fasl" - ".dvi" ".toc" ".log" ".aux" ".a" ".ln" - ".lof" ".blg" ".bbl" ".glo" ".idx" ".lot" ".fmt" - ".diff" ".oi")))) - -(make-variable-buffer-local 'indent-tabs-mode) - -;;; This code also was not generated by autoload.el, because VM goes out -;;; of its way to be perverse. - -(autoload 'vm "vm" - "\ -View Mail: an alternate mail reader for emacs. -Optional first arg FOLDER specifies the folder to visit. It defaults -to the value of vm-primary-inbox. The folder buffer is put into VM -mode, a major mode for reading mail. - -Prefix arg or optional second arg READ-ONLY non-nil indicates -that the folder should be considered read only. No attribute -changes, messages additions or deletions will be allowed in the -visited folder. - -Visiting the primary inbox causes any contents of the system mailbox to -be moved and appended to the resulting buffer. - -All the messages can be read by repeatedly pressing SPC. Use `n'ext and -`p'revious to move about in the folder. Messages are marked for -deletion with `d', and saved to another folder with `s'. Quitting VM -with `q' expunges deleted messages and saves the buffered folder to -disk. - -See the documentation for vm-mode for more information." - t) - -(autoload 'vm-mode "vm" - "\ -View Mail: an alternate mail reader for emacs. - -Commands: - h - summarize folder contents - j - discard cached information about the current message - - n - go to next message - p - go to previous message - N - like `n' but ignores skip-variable settings - P - like `p' but ignores skip-variable settings - M-n - go to next unread message - M-p - go to previous unread message - RET - go to numbered message (uses prefix arg or prompts in minibuffer) - TAB - go to last message seen - M-s - incremental search through the folder - - t - display hidden headers - SPC - scroll forward a page (if at end of message, then display next message) - b - scroll backward a page - < - go to beginning of current message - > - go to end of current message - - d - delete message, prefix arg deletes messages forward (flag as deleted) - C-d - delete message, prefix arg deletes messages backward (flag as deleted) - u - undelete - k - flag for deletion all messages with same subject as the current message - - r - reply (only to the sender of the message) - R - reply with included text for current message - M-r - extract and resend bounced message - f - followup (reply to all recipients of message) - F - followup with included text from the current message - z - forward the current message - m - send a message - B - resend the current message to another user. - c - continue composing the most recent message you were composing - - @ - digestify and mail entire folder contents (the folder is not modified) - * - burst a digest into individual messages, and append and assimilate these - message into the current folder. - - G - sort messages by various keys - - g - get any new mail that has arrived in the system mailbox - (new mail is appended to the disk and buffer copies of the - primary inbox.) - v - visit another mail folder - V - visit a virtual folder - - e - edit the current message - - s - save current message in a folder (appends if folder already exists) - w - write current message to a file without its headers (appends if exists) - S - save entire folder to disk, expunging deleted messages - A - save unfiled messages to their vm-auto-folder-alist specified folders - # - expunge deleted messages (without saving folder) - q - quit VM, deleted messages are expunged, folder saved to disk - x - exit VM with no change to the folder - - M N - use marks; the next vm command will affect only marked messages - if it makes sense for the command to do so - - M M - mark the current message - M U - unmark the current message - M m - mark all messages - M u - unmark all messages - M ? - help for the mark commands - - W S - save the current window configuration to a name - W D - delete a window configuration - W W - apply a configuration - W ? - help for the window configuration commands - - C-_ - undo, special undo that retracts the most recent - changes in message attributes. Expunges and saves - cannot be undone. C-x u is also bound to this - command. - - L - reload your VM init file, ~/.vm - - ? - help - - ! - run a shell command - | - run a shell command with the current message as input - - M-C - view conditions under which you may redistribute VM - M-W - view the details of VM's lack of a warranty - -Variables: - vm-auto-center-summary - vm-auto-folder-alist - vm-auto-folder-case-fold-search - vm-auto-get-new-mail - vm-auto-next-message - vm-berkeley-mail-compatibility - vm-check-folder-types - vm-convert-folder-types - vm-circular-folders - vm-confirm-new-folders - vm-confirm-quit - vm-crash-box - vm-delete-after-archiving - vm-delete-after-bursting - vm-delete-after-saving - vm-delete-empty-folders - vm-digest-burst-type - vm-digest-center-preamble - vm-digest-preamble-format - vm-digest-send-type - vm-folder-directory - vm-folder-read-only - vm-follow-summary-cursor - vm-forwarded-headers - vm-forwarding-digest-type - vm-forwarding-subject-format - vm-gargle-uucp - vm-highlighted-header-regexp - vm-honor-page-delimiters - vm-in-reply-to-format - vm-included-text-attribution-format - vm-included-text-prefix - vm-inhibit-startup-message - vm-invisible-header-regexp - vm-jump-to-new-messages - vm-jump-to-unread-messages - vm-keep-sent-messages - vm-mail-header-from - vm-mail-mode-hook - vm-mail-window-percentage - vm-mode-hook - vm-move-after-deleting - vm-move-after-undeleting - vm-mutable-windows - vm-preview-lines - vm-preview-read-messages - vm-primary-inbox - vm-recognize-pop-maildrops - vm-reply-ignored-addresses - vm-reply-subject-prefix - vm-resend-bounced-headers - vm-resend-bounced-discard-header-regexp - vm-resend-headers - vm-resend-discard-header-regexp - vm-retain-message-order - vm-rfc1153-digest-discard-header-regexp - vm-rfc1153-digest-headers - vm-rfc934-digest-discard-header-regexp - vm-rfc934-digest-headers - vm-search-using-regexps - vm-skip-deleted-messages - vm-skip-read-messages - vm-spool-files - vm-startup-with-summary - vm-strip-reply-headers - vm-summary-format - vm-unforwarded-header-regexp - vm-virtual-folder-alist - vm-virtual-mirror - vm-visible-headers - vm-visit-when-saving - vm-window-configuration-file -" - t) - -(autoload 'vm-visit-folder "vm" - "\ -Visit a mail file with View Mail, an alternate mail reader for emacs. -See the description of the `vm' and `vm-mode' functions. - -VM will parse and present its messages to you in the usual way. - -First arg FOLDER specifies the mail file to visit. When this -command is called interactively the file name is read from the -minibuffer. - -Prefix arg or optional second arg READ-ONLY non-nil indicates -that the folder should be considered read only. No attribute -changes, messages additions or deletions will be allowed in the -visited folder." - t) - -(autoload 'vm-mail "vm" - "\ -Send a mail message from within View Mail, or from without." - t) - - - -;;; Generated autoloads follow (made by autoload.el). - -;;; To sort them, execute the following after narrowing -;;; to a region starting just after the following formfeed (control-l) -;;; and ending just after the last formfeed in the file. - -;;;(sort-regexp-fields nil "\n*.*\n.*from \\(.*\\)[^]*" "\\1" -;;; (point-min) (point-max)) - -;;;*** - -;;;### (autoloads nil "byte-optimize" "bytecomp/byte-optimize.el" (12554 53317)) -;;; Generated autoloads from bytecomp/byte-optimize.el - -;;;*** - -;;;### (autoloads nil "bytecomp-runtime" "bytecomp/bytecomp-runtime.el" (12637 31036)) -;;; Generated autoloads from bytecomp/bytecomp-runtime.el - -;;;### (autoloads (batch-byte-recompile-directory batch-byte-recompile-directory-norecurse batch-byte-compile display-call-tree byte-compile-sexp byte-compile compile-defun byte-compile-file byte-recompile-file byte-recompile-directory byte-force-recompile) "bytecomp" "bytecomp/bytecomp.el" (12657 21937)) -;;; Generated autoloads from bytecomp/bytecomp.el - -(autoload 'byte-force-recompile "bytecomp" "\ -Recompile every `.el' file in DIRECTORY that already has a `.elc' file. -Files in subdirectories of DIRECTORY are processed also." t nil) - -(autoload 'byte-recompile-directory "bytecomp" "\ -Recompile every `.el' file in DIRECTORY that needs recompilation. -This is if a `.elc' file exists but is older than the `.el' file. -Files in subdirectories of DIRECTORY are processed also unless argument -NORECURSION is non-nil. - -If the `.elc' file does not exist, normally the `.el' file is *not* compiled. -But a prefix argument (optional second arg) means ask user, -for each such `.el' file, whether to compile it. Prefix argument 0 means -don't ask and compile the file anyway. - -A nonzero prefix argument also means ask about each subdirectory. - -If the fourth argument FORCE is non-nil, -recompile every `.el' file that already has a `.elc' file." t nil) - -(autoload 'byte-recompile-file "bytecomp" "\ -Recompile a file of Lisp code named FILENAME if it needs recompilation. -This is if the `.elc' file exists but is older than the `.el' file. - -If the `.elc' file does not exist, normally the `.el' file is *not* -compiled. But a prefix argument (optional second arg) means ask user -whether to compile it. Prefix argument 0 don't ask and recompile anyway." t nil) - -(autoload 'byte-compile-file "bytecomp" "\ -Compile a file of Lisp code named FILENAME into a file of byte code. -The output file's name is made by appending `c' to the end of FILENAME. -With prefix arg (noninteractively: 2nd arg), load the file after compiling." t nil) - -(autoload 'compile-defun "bytecomp" "\ -Compile and evaluate the current top-level form. -Print the result in the minibuffer. -With argument, insert value in current buffer after the form." t nil) - -(autoload 'byte-compile "bytecomp" "\ -If FORM is a symbol, byte-compile its function definition. -If FORM is a lambda or a macro, byte-compile it as a function." nil nil) - -(autoload 'byte-compile-sexp "bytecomp" "\ -Compile and return SEXP." nil nil) - -(autoload 'display-call-tree "bytecomp" "\ -Display a call graph of a specified file. -This lists which functions have been called, what functions called -them, and what functions they call. The list includes all functions -whose definitions have been compiled in this Emacs session, as well as -all functions called by those functions. - -The call graph does not include macros, inline functions, or -primitives that the byte-code interpreter knows about directly (eq, -cons, etc.). - -The call tree also lists those functions which are not known to be called -\(that is, to which no calls have been compiled), and which cannot be -invoked interactively." t nil) - -(autoload 'batch-byte-compile "bytecomp" "\ -Run `byte-compile-file' on the files remaining on the command line. -Use this from the command line, with `-batch'; -it won't work in an interactive Emacs. -Each file is processed even if an error occurred previously. -For example, invoke \"emacs -batch -f batch-byte-compile $emacs/ ~/*.el\"" nil nil) - -(autoload 'batch-byte-recompile-directory-norecurse "bytecomp" "\ -Same as `batch-byte-recompile-directory' but without recursion." nil nil) - -(autoload 'batch-byte-recompile-directory "bytecomp" "\ -Runs `byte-recompile-directory' on the dirs remaining on the command line. -Must be used only with `-batch', and kills Emacs on completion. -For example, invoke `xemacs -batch -f batch-byte-recompile-directory .'." nil nil) - -;;;*** - -;;;### (autoloads (disassemble) "disass" "bytecomp/disass.el" (12147 26365)) -;;; Generated autoloads from bytecomp/disass.el - -(autoload 'disassemble "disass" "\ -Print disassembled code for OBJECT in (optional) BUFFER. -OBJECT can be a symbol defined as a function, or a function itself -\(a lambda expression or a compiled-function object). -If OBJECT is not already compiled, we compile it, but do not -redefine OBJECT if it is a symbol." t nil) - -;;;*** - -;;;### (autoloads nil "appt" "calendar/appt.el" (12341 149)) -;;; Generated autoloads from calendar/appt.el - -;;;### (autoloads nil "cal-french" "calendar/cal-french.el" (12147 26371)) -;;; Generated autoloads from calendar/cal-french.el - -;;;*** - -;;;### (autoloads nil "cal-mayan" "calendar/cal-mayan.el" (12147 26370)) -;;; Generated autoloads from calendar/cal-mayan.el - -;;;### (autoloads nil "cal-x" "calendar/cal-x.el" (12247 39168)) -;;; Generated autoloads from calendar/cal-x.el - -(defvar calendar-setup 'one-frame "\ -The frame set up of the calendar. -The choices are `one-frame' (calendar and diary together in one separate, -dediciated frame) or `two-frames' (calendar and diary in separate, dedicated -frames); with any other value the current frame is used.") - -;;;*** - -;;;### (autoloads nil "cal-xemacs" "calendar/cal-xemacs.el" (12554 53321)) -;;; Generated autoloads from calendar/cal-xemacs.el - -;;;### (autoloads (list-yahrzeit-dates calendar) "calendar" "calendar/calendar.el" (12474 41340)) -;;; Generated autoloads from calendar/calendar.el - -(defvar calendar-week-start-day 0 "\ -*The day of the week on which a week in the calendar begins. -0 means Sunday (default), 1 means Monday, and so on.") - -(defvar calendar-offset 0 "\ -*The offset of the principal month from the center of the calendar window. -0 means the principal month is in the center (default), -1 means on the left, -+1 means on the right. Larger (or smaller) values push the principal month off -the screen.") - -(defvar view-diary-entries-initially nil "\ -*Non-nil means display current date's diary entries on entry. -The diary is displayed in another window when the calendar is first displayed, -if the current date is visible. The number of days of diary entries displayed -is governed by the variable `number-of-diary-entries'.") - -(defvar number-of-diary-entries 1 "\ -*Specifies how many days of diary entries are to be displayed initially. -This variable affects the diary display when the command M-x diary is used, -or if the value of the variable `view-diary-entries-initially' is t. For -example, if the default value 1 is used, then only the current day's diary -entries will be displayed. If the value 2 is used, then both the current -day's and the next day's entries will be displayed. - -The value can also be a vector such as [0 2 2 2 2 4 1]; this value -says to display no diary entries on Sunday, the display the entries -for the current date and the day after on Monday through Thursday, -display Friday through Monday's entries on Friday, and display only -Saturday's entries on Saturday. - -This variable does not affect the diary display with the `d' command -from the calendar; in that case, the prefix argument controls the -number of days of diary entries displayed.") - -(defvar mark-diary-entries-in-calendar nil "\ -*Non-nil means mark dates with diary entries, in the calendar window. -The marking symbol is specified by the variable `diary-entry-marker'.") - -(defvar view-calendar-holidays-initially nil "\ -*Non-nil means display holidays for current three month period on entry. -The holidays are displayed in another window when the calendar is first -displayed.") - -(defvar mark-holidays-in-calendar nil "\ -*Non-nil means mark dates of holidays in the calendar window. -The marking symbol is specified by the variable `calendar-holiday-marker'.") - -(defvar all-hebrew-calendar-holidays nil "\ -*If nil, show only major holidays from the Hebrew calendar. -This means only those Jewish holidays that appear on secular calendars. - -If t, show all the holidays that would appear in a complete Hebrew calendar.") - -(defvar all-christian-calendar-holidays nil "\ -*If nil, show only major holidays from the Christian calendar. -This means only those Christian holidays that appear on secular calendars. - -If t, show all the holidays that would appear in a complete Christian -calendar.") - -(defvar all-islamic-calendar-holidays nil "\ -*If nil, show only major holidays from the Islamic calendar. -This means only those Islamic holidays that appear on secular calendars. - -If t, show all the holidays that would appear in a complete Islamic -calendar.") - -(defvar calendar-load-hook nil "\ -*List of functions to be called after the calendar is first loaded. -This is the place to add key bindings to `calendar-mode-map'.") - -(defvar initial-calendar-window-hook nil "\ -*List of functions to be called when the calendar window is first opened. -The functions invoked are called after the calendar window is opened, but -once opened is never called again. Leaving the calendar with the `q' command -and reentering it will cause these functions to be called again.") - -(defvar today-visible-calendar-hook nil "\ -*List of functions called whenever the current date is visible. -This can be used, for example, to replace today's date with asterisks; a -function `calendar-star-date' is included for this purpose: - (setq today-visible-calendar-hook 'calendar-star-date) -It can also be used to mark the current date with `calendar-today-marker'; -a function is also provided for this: - (setq today-visible-calendar-hook 'calendar-mark-today) - -The corresponding variable `today-invisible-calendar-hook' is the list of -functions called when the calendar function was called when the current -date is not visible in the window. - -Other than the use of the provided functions, the changing of any -characters in the calendar buffer by the hooks may cause the failure of the -functions that move by days and weeks.") - -(defvar today-invisible-calendar-hook nil "\ -*List of functions called whenever the current date is not visible. - -The corresponding variable `today-visible-calendar-hook' is the list of -functions called when the calendar function was called when the current -date is visible in the window. - -Other than the use of the provided functions, the changing of any -characters in the calendar buffer by the hooks may cause the failure of the -functions that move by days and weeks.") - -(defvar diary-file "~/diary" "\ -*Name of the file in which one's personal diary of dates is kept. - -The file's entries are lines in any of the forms - - MONTH/DAY - MONTH/DAY/YEAR - MONTHNAME DAY - MONTHNAME DAY, YEAR - DAYNAME - -at the beginning of the line; the remainder of the line is the diary entry -string for that date. MONTH and DAY are one or two digit numbers, YEAR is -a number and may be written in full or abbreviated to the final two digits. -If the date does not contain a year, it is generic and applies to any year. -DAYNAME entries apply to any date on which is on that day of the week. -MONTHNAME and DAYNAME can be spelled in full, abbreviated to three -characters (with or without a period), capitalized or not. Any of DAY, -MONTH, or MONTHNAME, YEAR can be `*' which matches any day, month, or year, -respectively. - -The European style (in which the day precedes the month) can be used -instead, if you execute `european-calendar' when in the calendar, or set -`european-calendar-style' to t in your .emacs file. The European forms are - - DAY/MONTH - DAY/MONTH/YEAR - DAY MONTHNAME - DAY MONTHNAME YEAR - DAYNAME - -To revert to the default American style from the European style, execute -`american-calendar' in the calendar. - -A diary entry can be preceded by the character -`diary-nonmarking-symbol' (ordinarily `&') to make that entry -nonmarking--that is, it will not be marked on dates in the calendar -window but will appear in a diary window. - -Multiline diary entries are made by indenting lines after the first with -either a TAB or one or more spaces. - -Lines not in one the above formats are ignored. Here are some sample diary -entries (in the default American style): - - 12/22/1988 Twentieth wedding anniversary!! - &1/1. Happy New Year! - 10/22 Ruth's birthday. - 21: Payday - Tuesday--weekly meeting with grad students at 10am - Supowit, Shen, Bitner, and Kapoor to attend. - 1/13/89 Friday the thirteenth!! - &thu 4pm squash game with Lloyd. - mar 16 Dad's birthday - April 15, 1989 Income tax due. - &* 15 time cards due. - -If the first line of a diary entry consists only of the date or day name with -no trailing blanks or punctuation, then that line is not displayed in the -diary window; only the continuation lines is shown. For example, the -single diary entry - - 02/11/1989 - Bill Blattner visits Princeton today - 2pm Cognitive Studies Committee meeting - 2:30-5:30 Lizzie at Lawrenceville for `Group Initiative' - 4:00pm Jamie Tappenden - 7:30pm Dinner at George and Ed's for Alan Ryan - 7:30-10:00pm dance at Stewart Country Day School - -will appear in the diary window without the date line at the beginning. This -facility allows the diary window to look neater, but can cause confusion if -used with more than one day's entries displayed. - -Diary entries can be based on Lisp sexps. For example, the diary entry - - %%(diary-block 11 1 1990 11 10 1990) Vacation - -causes the diary entry \"Vacation\" to appear from November 1 through November -10, 1990. Other functions available are `diary-float', `diary-anniversary', -`diary-cyclic', `diary-day-of-year', `diary-iso-date', `diary-french-date', -`diary-hebrew-date', `diary-islamic-date', `diary-mayan-date', -`diary-yahrzeit', `diary-sunrise-sunset', `diary-phases-of-moon', -`diary-parasha', `diary-omer', `diary-rosh-hodesh', and -`diary-sabbath-candles'. See the documentation for the function -`list-sexp-diary-entries' for more details. - -Diary entries based on the Hebrew and/or the Islamic calendar are also -possible, but because these are somewhat slow, they are ignored -unless you set the `nongregorian-diary-listing-hook' and the -`nongregorian-diary-marking-hook' appropriately. See the documentation -for these functions for details. - -Diary files can contain directives to include the contents of other files; for -details, see the documentation for the variable `list-diary-entries-hook'.") - -(defvar diary-nonmarking-symbol "&" "\ -*Symbol indicating that a diary entry is not to be marked in the calendar.") - -(defvar hebrew-diary-entry-symbol "H" "\ -*Symbol indicating a diary entry according to the Hebrew calendar.") - -(defvar islamic-diary-entry-symbol "I" "\ -*Symbol indicating a diary entry according to the Islamic calendar.") - -(defvar diary-include-string "#include" "\ -*The string indicating inclusion of another file of diary entries. -See the documentation for the function `include-other-diary-files'.") - -(defvar sexp-diary-entry-symbol "%%" "\ -*The string used to indicate a sexp diary entry in diary-file. -See the documentation for the function `list-sexp-diary-entries'.") - -(defvar abbreviated-calendar-year t "\ -*Interpret a two-digit year DD in a diary entry as either 19DD or 20DD. -For the Gregorian calendar; similarly for the Hebrew and Islamic calendars. -If this variable is nil, years must be written in full.") - -(defvar european-calendar-style nil "\ -*Use the European style of dates in the diary and in any displays. -If this variable is t, a date 1/2/1990 would be interpreted as February 1, -1990. The accepted European date styles are - - DAY/MONTH - DAY/MONTH/YEAR - DAY MONTHNAME - DAY MONTHNAME YEAR - DAYNAME - -Names can be capitalized or not, written in full, or abbreviated to three -characters with or without a period.") - -(defvar american-date-diary-pattern '((month "/" day "[^/0-9]") (month "/" day "/" year "[^0-9]") (monthname " *" day "[^,0-9]") (monthname " *" day ", *" year "[^0-9]") (dayname "\\W")) "\ -*List of pseudo-patterns describing the American patterns of date used. -See the documentation of `diary-date-forms' for an explanation.") - -(defvar european-date-diary-pattern '((day "/" month "[^/0-9]") (day "/" month "/" year "[^0-9]") (backup day " *" monthname "\\W+\\<[^*0-9]") (day " *" monthname " *" year "[^0-9]") (dayname "\\W")) "\ -*List of pseudo-patterns describing the European patterns of date used. -See the documentation of `diary-date-forms' for an explanation.") - -(defvar european-calendar-display-form '((if dayname (concat dayname ", ")) day " " monthname " " year) "\ -*Pseudo-pattern governing the way a date appears in the European style. -See the documentation of calendar-date-display-form for an explanation.") - -(defvar american-calendar-display-form '((if dayname (concat dayname ", ")) monthname " " day ", " year) "\ -*Pseudo-pattern governing the way a date appears in the American style. -See the documentation of `calendar-date-display-form' for an explanation.") - -(defvar print-diary-entries-hook 'lpr-buffer "\ -*List of functions called after a temporary diary buffer is prepared. -The buffer shows only the diary entries currently visible in the diary -buffer. The default just does the printing. Other uses might include, for -example, rearranging the lines into order by day and time, saving the buffer -instead of deleting it, or changing the function used to do the printing.") - -(defvar list-diary-entries-hook nil "\ -*List of functions called after diary file is culled for relevant entries. -It is to be used for diary entries that are not found in the diary file. - -A function `include-other-diary-files' is provided for use as the value of -this hook. This function enables you to use shared diary files together -with your own. The files included are specified in the diary file by lines -of the form - - #include \"filename\" - -This is recursive; that is, #include directives in files thus included are -obeyed. You can change the \"#include\" to some other string by changing -the variable `diary-include-string'. When you use `include-other-diary-files' -as part of the list-diary-entries-hook, you will probably also want to use the -function `mark-included-diary-files' as part of `mark-diary-entries-hook'. - -For example, you could use - - (setq list-diary-entries-hook - '(include-other-diary-files sort-diary-entries)) - (setq diary-display-hook 'fancy-diary-display) - -in your `.emacs' file to cause the fancy diary buffer to be displayed with -diary entries from various included files, each day's entries sorted into -lexicographic order.") - -(defvar diary-hook nil "\ -*List of functions called after the display of the diary. -Can be used for appointment notification.") - -(defvar diary-display-hook nil "\ -*List of functions that handle the display of the diary. -If nil (the default), `simple-diary-display' is used. Use `ignore' for no -diary display. - -Ordinarily, this just displays the diary buffer (with holidays indicated in -the mode line), if there are any relevant entries. At the time these -functions are called, the variable `diary-entries-list' is a list, in order -by date, of all relevant diary entries in the form of ((MONTH DAY YEAR) -STRING), where string is the diary entry for the given date. This can be -used, for example, a different buffer for display (perhaps combined with -holidays), or produce hard copy output. - -A function `fancy-diary-display' is provided as an alternative -choice for this hook; this function prepares a special noneditable diary -buffer with the relevant diary entries that has neat day-by-day arrangement -with headings. The fancy diary buffer will show the holidays unless the -variable `holidays-in-diary-buffer' is set to nil. Ordinarily, the fancy -diary buffer will not show days for which there are no diary entries, even -if that day is a holiday; if you want such days to be shown in the fancy -diary buffer, set the variable `diary-list-include-blanks' to t.") - -(defvar nongregorian-diary-listing-hook nil "\ -*List of functions called for listing diary file and included files. -As the files are processed for diary entries, these functions are used to cull -relevant entries. You can use either or both of `list-hebrew-diary-entries' -and `list-islamic-diary-entries'. The documentation for these functions -describes the style of such diary entries.") - -(defvar mark-diary-entries-hook nil "\ -*List of functions called after marking diary entries in the calendar. - -A function `mark-included-diary-files' is also provided for use as the -mark-diary-entries-hook; it enables you to use shared diary files together -with your own. The files included are specified in the diary file by lines -of the form - #include \"filename\" -This is recursive; that is, #include directives in files thus included are -obeyed. You can change the \"#include\" to some other string by changing the -variable `diary-include-string'. When you use `mark-included-diary-files' as -part of the mark-diary-entries-hook, you will probably also want to use the -function `include-other-diary-files' as part of `list-diary-entries-hook'.") - -(defvar nongregorian-diary-marking-hook nil "\ -*List of functions called for marking diary file and included files. -As the files are processed for diary entries, these functions are used to cull -relevant entries. You can use either or both of `mark-hebrew-diary-entries' -and `mark-islamic-diary-entries'. The documentation for these functions -describes the style of such diary entries.") - -(defvar diary-list-include-blanks nil "\ -*If nil, do not include days with no diary entry in the list of diary entries. -Such days will then not be shown in the the fancy diary buffer, even if they -are holidays.") - -(defvar holidays-in-diary-buffer t "\ -*Non-nil means include holidays in the diary display. -The holidays appear in the mode line of the diary buffer, or in the -fancy diary buffer next to the date. This slows down the diary functions -somewhat; setting it to nil makes the diary display faster.") - -(put 'general-holidays 'risky-local-variable t) - -(defvar general-holidays '((holiday-fixed 1 1 "New Year's Day") (holiday-float 1 1 3 "Martin Luther King Day") (holiday-fixed 2 2 "Ground Hog Day") (holiday-fixed 2 14 "Valentine's Day") (holiday-float 2 1 3 "President's Day") (holiday-fixed 3 17 "St. Patrick's Day") (holiday-fixed 4 1 "April Fool's Day") (holiday-float 5 0 2 "Mother's Day") (holiday-float 5 1 -1 "Memorial Day") (holiday-fixed 6 14 "Flag Day") (holiday-float 6 0 3 "Father's Day") (holiday-fixed 7 4 "Independence Day") (holiday-float 9 1 1 "Labor Day") (holiday-float 10 1 2 "Columbus Day") (holiday-fixed 10 31 "Halloween") (holiday-fixed 11 11 "Veteran's Day") (holiday-float 11 4 4 "Thanksgiving")) "\ -*General holidays. Default value is for the United States. -See the documentation for `calendar-holidays' for details.") - -(put 'local-holidays 'risky-local-variable t) - -(defvar local-holidays nil "\ -*Local holidays. -See the documentation for `calendar-holidays' for details.") - -(put 'other-holidays 'risky-local-variable t) - -(defvar other-holidays nil "\ -*User defined holidays. -See the documentation for `calendar-holidays' for details.") - -(put 'hebrew-holidays-1 'risky-local-variable t) - -(defvar hebrew-holidays-1 '((holiday-rosh-hashanah-etc) (if all-hebrew-calendar-holidays (holiday-julian 11 (let* ((m displayed-month) (y displayed-year) (year)) (increment-calendar-month m y -1) (let ((year (extract-calendar-year (calendar-julian-from-absolute (calendar-absolute-from-gregorian (list m 1 y)))))) (if (zerop (% (1+ year) 4)) 22 21))) "\"Tal Umatar\" (evening)")))) - -(put 'hebrew-holidays-2 'risky-local-variable t) - -(defvar hebrew-holidays-2 '((if all-hebrew-calendar-holidays (holiday-hanukkah) (holiday-hebrew 9 25 "Hanukkah")) (if all-hebrew-calendar-holidays (holiday-hebrew 10 (let ((h-year (extract-calendar-year (calendar-hebrew-from-absolute (calendar-absolute-from-gregorian (list displayed-month 28 displayed-year)))))) (if (= (% (calendar-absolute-from-hebrew (list 10 10 h-year)) 7) 6) 11 10)) "Tzom Teveth")) (if all-hebrew-calendar-holidays (holiday-hebrew 11 15 "Tu B'Shevat")))) - -(put 'hebrew-holidays-3 'risky-local-variable t) - -(defvar hebrew-holidays-3 '((if all-hebrew-calendar-holidays (holiday-hebrew 11 (let ((m displayed-month) (y displayed-year)) (increment-calendar-month m y 1) (let* ((h-year (extract-calendar-year (calendar-hebrew-from-absolute (calendar-absolute-from-gregorian (list m (calendar-last-day-of-month m y) y))))) (s-s (calendar-hebrew-from-absolute (if (= (% (calendar-absolute-from-hebrew (list 7 1 h-year)) 7) 6) (calendar-dayname-on-or-before 6 (calendar-absolute-from-hebrew (list 11 17 h-year))) (calendar-dayname-on-or-before 6 (calendar-absolute-from-hebrew (list 11 16 h-year)))))) (day (extract-calendar-day s-s))) day)) "Shabbat Shirah")))) - -(put 'hebrew-holidays-4 'risky-local-variable t) - -(defvar hebrew-holidays-4 '((holiday-passover-etc) (if (and all-hebrew-calendar-holidays (let* ((m displayed-month) (y displayed-year) (year)) (increment-calendar-month m y -1) (let ((year (extract-calendar-year (calendar-julian-from-absolute (calendar-absolute-from-gregorian (list m 1 y)))))) (= 21 (% year 28))))) (holiday-julian 3 26 "Kiddush HaHamah")) (if all-hebrew-calendar-holidays (holiday-tisha-b-av-etc)))) - -(put 'hebrew-holidays 'risky-local-variable t) - -(defvar hebrew-holidays (append hebrew-holidays-1 hebrew-holidays-2 hebrew-holidays-3 hebrew-holidays-4) "\ -*Jewish holidays. -See the documentation for `calendar-holidays' for details.") - -(put 'christian-holidays 'risky-local-variable t) - -(defvar christian-holidays '((if all-christian-calendar-holidays (holiday-fixed 1 6 "Epiphany")) (holiday-easter-etc) (if all-christian-calendar-holidays (holiday-greek-orthodox-easter)) (if all-christian-calendar-holidays (holiday-fixed 8 15 "Assumption")) (if all-christian-calendar-holidays (holiday-advent)) (holiday-fixed 12 25 "Christmas") (if all-christian-calendar-holidays (holiday-julian 12 25 "Eastern Orthodox Christmas"))) "\ -*Christian holidays. -See the documentation for `calendar-holidays' for details.") - -(put 'islamic-holidays 'risky-local-variable t) - -(defvar islamic-holidays '((holiday-islamic 1 1 (format "Islamic New Year %d" (let ((m displayed-month) (y displayed-year)) (increment-calendar-month m y 1) (extract-calendar-year (calendar-islamic-from-absolute (calendar-absolute-from-gregorian (list m (calendar-last-day-of-month m y) y))))))) (if all-islamic-calendar-holidays (holiday-islamic 1 10 "Ashura")) (if all-islamic-calendar-holidays (holiday-islamic 3 12 "Mulad-al-Nabi")) (if all-islamic-calendar-holidays (holiday-islamic 7 26 "Shab-e-Mi'raj")) (if all-islamic-calendar-holidays (holiday-islamic 8 15 "Shab-e-Bara't")) (holiday-islamic 9 1 "Ramadan Begins") (if all-islamic-calendar-holidays (holiday-islamic 9 27 "Shab-e Qadr")) (if all-islamic-calendar-holidays (holiday-islamic 10 1 "Id-al-Fitr")) (if all-islamic-calendar-holidays (holiday-islamic 12 10 "Id-al-Adha"))) "\ -*Islamic holidays. -See the documentation for `calendar-holidays' for details.") - -(put 'solar-holidays 'risky-local-variable t) - -(defvar solar-holidays '((if (fboundp 'atan) (solar-equinoxes-solstices)) (if (progn (require 'cal-dst) t) (funcall 'holiday-sexp calendar-daylight-savings-starts '(format "Daylight Savings Time Begins %s" (if (fboundp 'atan) (solar-time-string (/ calendar-daylight-savings-starts-time (float 60)) calendar-standard-time-zone-name) "")))) (funcall 'holiday-sexp calendar-daylight-savings-ends '(format "Daylight Savings Time Ends %s" (if (fboundp 'atan) (solar-time-string (/ calendar-daylight-savings-ends-time (float 60)) calendar-daylight-time-zone-name) "")))) "\ -*Sun-related holidays. -See the documentation for `calendar-holidays' for details.") - -(put 'calendar-holidays 'risky-local-variable t) - -(autoload 'calendar "calendar" "\ -Display a three-month calendar in another window. -The three months appear side by side, with the current month in the middle -surrounded by the previous and next months. The cursor is put on today's date. - -If called with an optional prefix argument, prompts for month and year. - -This function is suitable for execution in a .emacs file; appropriate setting -of the variable `view-diary-entries-initially' will cause the diary entries for -the current date to be displayed in another window. The value of the variable -`number-of-diary-entries' controls the number of days of diary entries -displayed upon initial display of the calendar. - -An optional prefix argument ARG causes the calendar displayed to be ARG -months in the future if ARG is positive or in the past if ARG is negative; -in this case the cursor goes on the first day of the month. - -Once in the calendar window, future or past months can be moved into view. -Arbitrary months can be displayed, or the calendar can be scrolled forward -or backward. - -The cursor can be moved forward or backward by one day, one week, one month, -or one year. All of these commands take prefix arguments which, when negative, -cause movement in the opposite direction. For convenience, the digit keys -and the minus sign are automatically prefixes. The window is replotted as -necessary to display the desired date. - -Diary entries can be marked on the calendar or displayed in another window. - -Use M-x describe-mode for details of the key bindings in the calendar window. - -The Gregorian calendar is assumed. - -After loading the calendar, the hooks given by the variable -`calendar-load-hook' are run. This is the place to add key bindings to the -calendar-mode-map. - -After preparing the calendar window initially, the hooks given by the variable -`initial-calendar-window-hook' are run. - -The hooks given by the variable `today-visible-calendar-hook' are run -everytime the calendar window gets scrolled, if the current date is visible -in the window. If it is not visible, the hooks given by the variable -`today-invisible-calendar-hook' are run. Thus, for example, setting -`today-visible-calendar-hook' to 'calendar-star-date will cause today's date -to be replaced by asterisks to highlight it whenever it is in the window." t nil) - -(autoload 'list-yahrzeit-dates "calendar" "\ -List Yahrzeit dates for *Gregorian* DEATH-DATE from START-YEAR to END-YEAR. -When called interactively from the calendar window, the date of death is taken -from the cursor position." t nil) - -;;;*** - -;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (12147 26371)) -;;; Generated autoloads from calendar/cal-dst.el - -(put 'calendar-daylight-savings-starts 'risky-local-variable t) - -(put 'calendar-daylight-savings-ends 'risky-local-variable t) - -;;;*** - -;;;### (autoloads nil "diary-ins" "calendar/diary-ins.el" (12147 26375)) -;;; Generated autoloads from calendar/diary-ins.el - -;;;### (autoloads (diary) "diary-lib" "calendar/diary-lib.el" (12147 26376)) -;;; Generated autoloads from calendar/diary-lib.el - -(autoload 'diary "diary-lib" "\ -Generate the diary window for ARG days starting with the current date. -If no argument is provided, the number of days of diary entries is governed -by the variable `number-of-diary-entries'. This function is suitable for -execution in a `.emacs' file." t nil) - -;;;*** - -;;;### (autoloads (holidays) "holidays" "calendar/holidays.el" (12247 8260)) -;;; Generated autoloads from calendar/holidays.el - -(autoload 'holidays "holidays" "\ -Display the holidays for last month, this month, and next month. -If called with an optional prefix argument, prompts for month and year. - -This function is suitable for execution in a .emacs file." t nil) - -;;;*** - -;;;### (autoloads (phases-of-moon) "lunar" "calendar/lunar.el" (12147 26373)) -;;; Generated autoloads from calendar/lunar.el - -(autoload 'phases-of-moon "lunar" "\ -Display the quarters of the moon for last month, this month, and next month. -If called with an optional prefix argument, prompts for month and year. - -This function is suitable for execution in a .emacs file." t nil) - -;;;*** - -;;;### (autoloads (solar-equinoxes-solstices sunrise-sunset) "solar" "calendar/solar.el" (12147 26373)) -;;; Generated autoloads from calendar/solar.el - -(defvar calendar-time-display-form '(12-hours ":" minutes am-pm (if time-zone " (") time-zone (if time-zone ")")) "\ -*The pseudo-pattern that governs the way a time of day is formatted. - -A pseudo-pattern is a list of expressions that can involve the keywords -`12-hours', `24-hours', and `minutes', all numbers in string form, -and `am-pm' and `time-zone', both alphabetic strings. - -For example, the form - - '(24-hours \":\" minutes - (if time-zone \" (\") time-zone (if time-zone \")\")) - -would give military-style times like `21:07 (UTC)'.") - -(defvar calendar-latitude nil "\ -*Latitude of `calendar-location-name' in degrees. - -The value can be either a decimal fraction (one place of accuracy is -sufficient), + north, - south, such as 40.7 for New York City, or the value -can be a vector [degrees minutes north/south] such as [40 50 north] for New -York City. - -This variable should be set in site-local.el.") - -(defvar calendar-longitude nil "\ -*Longitude of `calendar-location-name' in degrees. - -The value can be either a decimal fraction (one place of accuracy is -sufficient), + east, - west, such as -73.9 for New York City, or the value -can be a vector [degrees minutes east/west] such as [73 55 west] for New -York City. - -This variable should be set in site-local.el.") - -(defvar calendar-location-name '(let ((float-output-format "%.1f")) (format "%s%s, %s%s" (if (numberp calendar-latitude) (abs calendar-latitude) (+ (aref calendar-latitude 0) (/ (aref calendar-latitude 1) 60.0))) (if (numberp calendar-latitude) (if (> calendar-latitude 0) "N" "S") (if (equal (aref calendar-latitude 2) 'north) "N" "S")) (if (numberp calendar-longitude) (abs calendar-longitude) (+ (aref calendar-longitude 0) (/ (aref calendar-longitude 1) 60.0))) (if (numberp calendar-longitude) (if (> calendar-longitude 0) "E" "W") (if (equal (aref calendar-latitude 2) 'east) "E" "W")))) "\ -*Expression evaluating to name of `calendar-longitude', calendar-latitude'. -For example, \"New York City\". Default value is just the latitude, longitude -pair. - -This variable should be set in site-local.el.") - -(autoload 'sunrise-sunset "solar" "\ -Local time of sunrise and sunset for today. Accurate to +/- 2 minutes. -If called with an optional prefix argument, prompt for date. - -If called with an optional double prefix argument, prompt for longitude, -latitude, time zone, and date, and always use standard time. - -This function is suitable for execution in a .emacs file." t nil) - -(autoload 'solar-equinoxes-solstices "solar" "\ -Date and time of equinoxes and solstices, if visible in the calendar window. -Requires floating point." nil nil) - -;;;*** - -;;;### (autoloads nil "cl-autoload" "cl/cl-autoload.el" (12638 48659)) -;;; Generated autoloads from cl/cl-autoload.el - -;;;### (autoloads nil "cl-compat" "cl/cl-compat.el" (12559 35064)) -;;; Generated autoloads from cl/cl-compat.el - -;;;*** - -;;;### (autoloads nil "cl-defs" "cl/cl-defs.el" (12638 48659)) -;;; Generated autoloads from cl/cl-defs.el - -;;;*** - -;;;### (autoloads nil "cl-extra" "cl/cl-extra.el" (12648 4955)) -;;; Generated autoloads from cl/cl-extra.el - -;;;*** - -;;;### (autoloads nil "cl-macs" "cl/cl-macs.el" (12639 27526)) -;;; Generated autoloads from cl/cl-macs.el - -;;;### (autoloads nil "cl-seq" "cl/cl-seq.el" (12638 48651)) -;;; Generated autoloads from cl/cl-seq.el - -;;;*** - -;;;### (autoloads nil "cl" "cl/cl.el" (12638 48653)) -;;; Generated autoloads from cl/cl.el - -;;;*** - -;;;### (autoloads nil "background" "comint/background.el" (12675 57052)) -;;; Generated autoloads from comint/background.el - -;;;*** - -;;;### (autoloads nil "dbx" "comint/dbx.el" (12178 29434)) -;;; Generated autoloads from comint/dbx.el - -;;;### (autoloads (gdb) "gdb" "comint/gdb.el" (12727 30106)) -;;; Generated autoloads from comint/gdb.el - -(defvar gdb-command-name "gdb" "\ -Pathname for executing gdb.") - -(autoload 'gdb "gdb" "\ -Run gdb on program FILE in buffer *gdb-FILE*. -The directory containing FILE becomes the initial working directory -and source-file directory for GDB. If you wish to change this, use -the GDB commands `cd DIR' and `directory'." t nil) - -;;;*** - -;;;### (autoloads (gdbsrc) "gdbsrc" "comint/gdbsrc.el" (12743 11618)) -;;; Generated autoloads from comint/gdbsrc.el - -(autoload 'gdbsrc "gdbsrc" "\ -Activates a gdb session with gdbsrc-mode turned on. A numeric prefix -argument can be used to specify a running process to attach, and a non-numeric -prefix argument will cause you to be prompted for a core file to debug." t nil) - -;;;*** - -;;;### (autoloads (perldb xdb dbx sdb) "gud" "comint/gud.el" (12212 10571)) -;;; Generated autoloads from comint/gud.el - -(autoload 'sdb "gud" "\ -Run sdb on program FILE in buffer *gud-FILE*. -The directory containing FILE becomes the initial working directory -and source-file directory for your debugger." t nil) - -(autoload 'dbx "gud" "\ -Run dbx on program FILE in buffer *gud-FILE*. -The directory containing FILE becomes the initial working directory -and source-file directory for your debugger." t nil) - -(autoload 'xdb "gud" "\ -Run xdb on program FILE in buffer *gud-FILE*. -The directory containing FILE becomes the initial working directory -and source-file directory for your debugger. - -You can set the variable 'gud-xdb-directories' to a list of program source -directories if your program contains sources from more than one directory." t nil) - -(autoload 'perldb "gud" "\ -Run perldb on program FILE in buffer *gud-FILE*. -The directory containing FILE becomes the initial working directory -and source-file directory for your debugger." t nil) - -;;;*** - -;;;### (autoloads nil "history" "comint/history.el" (12178 29436)) -;;; Generated autoloads from comint/history.el - -;;;### (autoloads nil "inf-lisp" "comint/inf-lisp.el" (12546 37582)) -;;; Generated autoloads from comint/inf-lisp.el - -(add-hook 'same-window-buffer-names "*inferior-lisp*") - -;;;*** - -;;;### (autoloads nil "kermit" "comint/kermit.el" (12546 37580)) -;;; Generated autoloads from comint/kermit.el - -;;;### (autoloads (rlogin) "rlogin" "comint/rlogin.el" (12282 39208)) -;;; Generated autoloads from comint/rlogin.el - -(add-hook 'same-window-regexps "^\\*rlogin-.*\\*\\(\\|<[0-9]+>\\)") - -(autoload 'rlogin "rlogin" "\ -Open a network login connection to HOST via the `rlogin' program. -Input is sent line-at-a-time to the remote connection. - -Communication with the remote host is recorded in a buffer `*rlogin-HOST*' -\(or `*rlogin-USER@HOST*' if the remote username differs). -If a prefix argument is given and the buffer `*rlogin-HOST*' already exists, -a new buffer with a different connection will be made. - -When called from a program, if the optional second argument is a string or -buffer, it names the buffer to use. - -The variable `rlogin-program' contains the name of the actual program to -run. It can be a relative or absolute path. - -The variable `rlogin-explicit-args' is a list of arguments to give to -the rlogin when starting. They are added after any arguments given in -INPUT-ARGS. - -If the default value of `rlogin-directory-tracking-mode' is t, then the -default directory in that buffer is set to a remote (FTP) file name to -access your home directory on the remote machine. Occasionally this causes -an error, if you cannot access the home directory on that machine. This -error is harmless as long as you don't try to use that default directory. - -If `rlogin-directory-tracking-mode' is neither t nor nil, then the default -directory is initially set up to your (local) home directory. -This is useful if the remote machine and your local machine -share the same files via NFS. This is the default. - -If you wish to change directory tracking styles during a session, use the -function `rlogin-directory-tracking-mode' rather than simply setting the -variable." t nil) - -;;;*** - -;;;### (autoloads (shell) "shell" "comint/shell.el" (12554 53325)) -;;; Generated autoloads from comint/shell.el - -(defvar shell-prompt-pattern (purecopy "^[^#$%>\n]*[#$%>] *") "\ -Regexp to match prompts in the inferior shell. -Defaults to \"^[^#$%>\\n]*[#$%>] *\", which works pretty well. -This variable is used to initialise `comint-prompt-regexp' in the -shell buffer. - -The pattern should probably not match more than one line. If it does, -shell-mode may become confused trying to distinguish prompt from input -on lines which don't start with a prompt. - -This is a fine thing to set in your `.emacs' file.") - -(autoload 'shell "shell" "\ -Run an inferior shell, with I/O through buffer *shell*. -If buffer exists but shell process is not running, make new shell. -If buffer exists and shell process is running, - just switch to buffer `*shell*'. -Program used comes from variable `explicit-shell-file-name', - or (if that is nil) from the ESHELL environment variable, - or else from SHELL if there is no ESHELL. -If a file `~/.emacs_SHELLNAME' exists, it is given as initial input - (Note that this may lose due to a timing error if the shell - discards input when it starts up.) -The buffer is put in Shell mode, giving commands for sending input -and controlling the subjobs of the shell. See `shell-mode'. -See also the variable `shell-prompt-pattern'. - -The shell file name (sans directories) is used to make a symbol name -such as `explicit-csh-args'. If that symbol is a variable, -its value is used as a list of arguments when invoking the shell. -Otherwise, one argument `-i' is passed to the shell. - -\(Type \\[describe-mode] in the shell buffer for a list of commands.)" t nil) - -(add-hook 'same-window-buffer-names "*shell*") - -;;;*** - -;;;### (autoloads (rsh telnet) "telnet" "comint/telnet.el" (12546 37583)) -;;; Generated autoloads from comint/telnet.el - -(add-hook 'same-window-regexps "\\*telnet-.*\\*\\(\\|<[0-9]+>\\)") - -(autoload 'telnet "telnet" "\ -Open a network login connection to host named HOST (a string). -With a prefix argument, prompts for the port name or number as well. -Communication with HOST is recorded in a buffer `*HOST-telnet*'. -Normally input is edited in Emacs and sent a line at a time. -See also `\\[rsh]'." t nil) - -(add-hook 'same-window-regexps "\\*rsh-[^-]*\\*\\(\\|<[0-9]*>\\)") - -(autoload 'rsh "telnet" "\ -Open a network login connection to host named HOST (a string). -Communication with HOST is recorded in a buffer `*rsh-HOST*'. -Normally input is edited in Emacs and sent a line at a time. -See also `\\[telnet]'." t nil) - -;;;*** - -;;;### (autoloads (ange-ftp-hook-function) "ange-ftp" "dired/ange-ftp.el" (12638 48627)) -;;; Generated autoloads from dired/ange-ftp.el - -(defvar ange-ftp-path-format '("^/\\(\\([^@/:]*\\)@\\)?\\([^@/:]*\\):\\(.*\\)" 3 2 4) "\ -*Format of a fully expanded remote pathname. This is a cons -\(REGEXP . (HOST USER PATH)), where REGEXP is a regular expression matching -the full remote pathname, and HOST, USER, and PATH are the numbers of -parenthesized expressions in REGEXP for the components (in that order).") - -(autoload 'ange-ftp-hook-function "ange-ftp" nil nil nil) - -(or (assoc (car ange-ftp-path-format) file-name-handler-alist) (setq file-name-handler-alist (cons (cons (car ange-ftp-path-format) 'ange-ftp-hook-function) file-name-handler-alist))) - -;;;*** - -;;;### (autoloads nil "dired-cd" "dired/dired-cd.el" (11903 15627)) -;;; Generated autoloads from dired/dired-cd.el - -;;;*** - -;;;### (autoloads nil "dired-chmod" "dired/dired-chmod.el" (12327 53752)) -;;; Generated autoloads from dired/dired-chmod.el - -;;;### (autoloads nil "dired-guess" "dired/dired-guess.el" (11903 15633)) -;;; Generated autoloads from dired/dired-guess.el - -;;;*** - -;;;### (autoloads nil "dired-link" "dired/dired-link.el" (12294 55504)) -;;; Generated autoloads from dired/dired-link.el - -;;;### (autoloads nil "dired-lisp" "dired/dired-lisp.el" (11903 15631)) -;;; Generated autoloads from dired/dired-lisp.el - -;;;*** - -;;;### (autoloads nil "dired-nstd" "dired/dired-nstd.el" (11903 15632)) -;;; Generated autoloads from dired/dired-nstd.el - -;;;*** - -;;;### (autoloads nil "dired-trns" "dired/dired-trns.el" (11903 15635)) -;;; Generated autoloads from dired/dired-trns.el - -;;;*** - -;;;### (autoloads nil "dired-vms" "dired/dired-vms.el" (12147 26387)) -;;; Generated autoloads from dired/dired-vms.el - -;;;*** - -;;;### (autoloads nil "dired-xemacs-highlight" "dired/dired-xemacs-highlight.el" (12745 48557)) -;;; Generated autoloads from dired/dired-xemacs-highlight.el - -;;;### (autoloads nil "dired-xemacs-menu" "dired/dired-xemacs-menu.el" (12322 9364)) -;;; Generated autoloads from dired/dired-xemacs-menu.el - -;;;### (autoloads (dired-noselect dired-other-window dired) "dired" "dired/dired.el" (12727 30109)) -;;; Generated autoloads from dired/dired.el - -(defvar dired-listing-switches (purecopy "-al") "\ -*Switches passed to ls for dired. MUST contain the `l' option. -Can contain even `F', `b', `i' and `s'.") - -(defvar dired-chown-program (purecopy (if (memq system-type '(dgux-unix hpux usg-unix-v silicon-graphics-unix irix)) "chown" "/etc/chown")) "\ -*Name of chown command (usully `chown' or `/etc/chown').") - -(defvar dired-ls-program (purecopy "ls") "\ -*Absolute or relative name of the ls program used by dired.") - -(defvar dired-ls-F-marks-symlinks t "\ -*Informs dired about how ls -lF marks symbolic links. -Set this to t if `dired-ls-program' with -lF marks the symbolic link -itself with a trailing @ (usually the case under Ultrix). - -Example: if `ln -s foo bar; ls -F bar' gives `bar -> foo', set it to -nil, if it gives `bar@ -> foo', set it to t. - -Dired checks if there is really a @ appended. Thus, if you have a -marking ls program on one host and a non-marking on another host, and -don't care about symbolic links which really end in a @, you can -always set this variable to t.") - -(defvar dired-trivial-filenames (purecopy "^\\.\\.?$\\|^#") "\ -*Regexp of files to skip when moving point to the first file of a new directory listing. -Nil means move to the subdir line, t means move to first file.") - -(defvar dired-keep-marker-move t "\ -If t, moved marked files are marked if their originals were. -If a character, those files (marked or not) are marked with that character.") - -(defvar dired-keep-marker-copy ?C "\ -If t, copied files are marked if their source files were. -If a character, those files are always marked with that character.") - -(defvar dired-keep-marker-hardlink ?H "\ -If t, hard-linked files are marked if the linked-to files were. -If a character, those files are always marked with that character.") - -(defvar dired-keep-marker-symlink ?Y "\ -If t, symlinked marked files are marked if the linked-to files were. -If a character, those files are always marked with that character.") - -(defvar dired-dwim-target nil "\ -*If non-nil, dired tries to guess a default target directory: -If there is a dired buffer displayed in the next window, use -its current subdir, instead of the current subdir of this dired -buffer. - -The target is used in the prompt for file copy, move etc.") - -(defvar dired-copy-preserve-time nil "\ -*If non-nil, Dired preserves the last-modified time in a file copy. -\(This works on only some systems.)\\<dired-mode-map> -Use `\\[dired-do-copy]' with a zero prefix argument to toggle its value.") - -(define-key ctl-x-map "d" 'dired) - -(autoload 'dired "dired" "\ -\"Edit\" directory DIRNAME--delete, rename, print, etc. some files in it. -With an optional prefix argument you can specify the ls SWITCHES that are used. -Dired displays a list of files in DIRNAME (which may also have - shell wildcards appended to select certain files). -You can move around in it with the usual commands. -You can flag files for deletion with \\<dired-mode-map>\\[dired-flag-file-deleted] and then delete them by - typing \\[dired-do-deletions]. -Type \\[describe-mode] after entering dired for more info. - -If DIRNAME is already in a dired buffer, that buffer is used without refresh." t nil) - -(define-key ctl-x-4-map "d" 'dired-other-window) - -(autoload 'dired-other-window "dired" "\ -\"Edit\" directory DIRNAME. Like `dired' but selects in another window." t nil) - -(autoload 'dired-noselect "dired" "\ -Like `dired' but returns the dired buffer as value, does not select it." nil nil) - -;;;*** - -;;;### (autoloads (dired-cwd-make-magic) "dired-cwd" "dired/dired-cwd.el" (11903 15632)) -;;; Generated autoloads from dired/dired-cwd.el - -(autoload 'dired-cwd-make-magic "dired-cwd" "\ -Modify COMMAND so that it's working directory is the current dired directory. -This works by binding `default-directory' to `(default-directory)'s value. -See also function `default-directory'." t nil) - -;;;*** - -;;;### (autoloads (dired-do-rename-list dired-do-rename-numeric) "dired-num" "dired/dired-num.el" (12013 11569)) -;;; Generated autoloads from dired/dired-num.el - -(autoload 'dired-do-rename-numeric "dired-num" "\ -Rename all marked (or next ARG) files using numbers. -You are prompted for a format string, e.g \"part_%d_of_8\", and a starting -number, e.g. 1. If there are 8 marked files, this example will rename them to - - part_1_of_8 - part_2_of_8 - ... - part_8_of_8" t nil) - -(autoload 'dired-do-rename-list "dired-num" "\ -Rename all marked (or next ARG) files using elements from LIST. -You are prompted for a format string, e.g \"x_%s\", and the list, -e.g. '(foo bar zod). This example will rename the marked files to - - x_foo - x_bar - x_zod - -It is an error if LIST has not as many elements as there are files." t nil) - -;;;*** - -;;;### (autoloads (dired-rcs-mark-rcs-files dired-rcs-mark-rcs-locked-files) "dired-rcs" "dired/dired-rcs.el" (12013 11570)) -;;; Generated autoloads from dired/dired-rcs.el - -(autoload 'dired-rcs-mark-rcs-locked-files "dired-rcs" "\ -Mark all files that are under RCS control and RCS-locked. -With prefix argument, unflag all those files. -Mentions RCS files for which a working file was not found in this buffer. -Type \\[dired-why] to see them again." t nil) - -(autoload 'dired-rcs-mark-rcs-files "dired-rcs" "\ -Mark all files that are under RCS control. -With prefix argument, unflag all those files. -Mentions RCS files for which a working file was not found in this buffer. -Type \\[dired-why] to see them again." t nil) - -;;;*** - -;;;### (autoloads (dired-extra-startup) "dired-x" "dired/dired-x.el" (12178 36799)) -;;; Generated autoloads from dired/dired-x.el - -(autoload 'dired-extra-startup "dired-x" "\ -Automatically put on dired-mode-hook to get extra dired features: -\\<dired-mode-map> - \\[dired-vm] -- VM on folder - \\[dired-rmail] -- Rmail on folder - \\[dired-do-insert-subdir] -- insert all marked subdirs - \\[dired-do-find-file] -- visit all marked files simultaneously - \\[dired-set-marker-char], \\[dired-restore-marker-char] -- change and display dired-marker-char dynamically. - \\[dired-omit-toggle] -- toggle omitting of files - \\[dired-mark-sexp] -- mark by lisp expression - \\[dired-do-unmark] -- replace existing marker with another. - \\[dired-mark-rcs-files] -- mark all RCS controlled files - \\[dired-mark-files-compilation-buffer] -- mark compilation files - \\[dired-copy-filename-as-kill] -- copy the file or subdir names into the kill ring. - You can feed it to other commands using \\[yank]. - -For more features, see variables - - dired-omit-files - dired-omit-extenstions - dired-dangerous-shell-command - dired-mark-keys - dired-local-variables-file - dired-find-subdir - dired-guess-have-gnutar - dired-auto-shell-command-alist - -See also functions - - dired-sort-on-size - dired-do-relsymlink - dired-flag-extension - dired-virtual - dired-jump-back - dired-jump-back-other-window -" t nil) - -;;;*** - -;;;### (autoloads (find-grep-dired find-name-dired find-dired) "find-dired" "dired/find-dired.el" (12675 57053)) -;;; Generated autoloads from dired/find-dired.el - -(defvar find-ls-option (purecopy (if (eq system-type 'berkeley-unix) '("-ls" . "-gilsb") '("-exec ls -ld {} \\;" . "-ld"))) "\ -*Description of the option to `find' to produce an `ls -l'-type listing. -This is a cons of two strings (FIND-OPTION . LS-SWITCHES). FIND-OPTION -gives the option (or options) to `find' that produce the desired output. -LS-SWITCHES is a list of `ls' switches to tell dired how to parse the output.") - -(defvar find-grep-options (purecopy (if (eq system-type 'berkeley-unix) "-s" "-q")) "\ -*Option to grep to be as silent as possible. -On Berkeley systems, this is `-s'; on Posix, and with GNU grep, `-q' does it. -On other systems, the closest you can come is to use `-l'.") - -(defvar find-dired-multiple-buffers nil "\ -*If non-nil, generates a new buffer for each find") - -(autoload 'find-dired "find-dired" "\ -Run `find' and go into dired-mode on a buffer of the output. -The command run (after changing into DIR) is - - find . \\( ARGS \\) -ls" t nil) - -(autoload 'find-name-dired "find-dired" "\ -Search DIR recursively for files matching the globbing pattern PATTERN, -and run dired on those files. -PATTERN is a shell wildcard (not an Emacs regexp) and need not be quoted. -The command run (after changing into DIR) is - - find . -name 'PATTERN' -ls" t nil) - -(autoload 'find-grep-dired "find-dired" "\ -Find files in DIR containing a regexp ARG and start Dired on output. -The command run (after changing into DIR) is - - find . -type f -exec test -r {} \\; -exec egrep -s ARG {} \\; -ls - -Thus ARG can also contain additional grep options." t nil) - -;;;*** - -;;;### (autoloads nil "gmhist-app" "dired/gmhist-app.el" (11903 15638)) -;;; Generated autoloads from dired/gmhist-app.el - -;;;*** - -;;;### (autoloads nil "gmhist-cmp" "dired/gmhist-cmp.el" (11903 15639)) -;;; Generated autoloads from dired/gmhist-cmp.el - -;;;*** - -;;;### (autoloads nil "gmhist-mh" "dired/gmhist-mh.el" (11903 15640)) -;;; Generated autoloads from dired/gmhist-mh.el - -;;;*** - -;;;### (autoloads nil "gmhist" "dired/gmhist.el" (12637 31043)) -;;; Generated autoloads from dired/gmhist.el - -;;;*** - -;;;### (autoloads nil "cl-read" "edebug/cl-read.el" (12637 25203)) -;;; Generated autoloads from edebug/cl-read.el - -;;;*** - -;;;### (autoloads nil "cl-specs" "edebug/cl-specs.el" (12546 50525)) -;;; Generated autoloads from edebug/cl-specs.el - -;;;*** - -;;;### (autoloads nil "cust-print" "edebug/cust-print.el" (12546 50527)) -;;; Generated autoloads from edebug/cust-print.el - -;;;*** - -;;;### (autoloads nil "edebug-cl-read" "edebug/edebug-cl-read.el" (12546 50528)) -;;; Generated autoloads from edebug/edebug-cl-read.el - -;;;*** - -;;;### (autoloads nil "edebug-test" "edebug/edebug-test.el" (12546 50557)) -;;; Generated autoloads from edebug/edebug-test.el - -;;;*** - -;;;### (autoloads (edebug-eval-top-level-form def-edebug-spec) "edebug" "edebug/edebug.el" (12637 28000)) -;;; Generated autoloads from edebug/edebug.el - -(autoload 'def-edebug-spec "edebug" "\ -Set the edebug-form-spec property of SYMBOL according to SPEC. -Both SYMBOL and SPEC are unevaluated. The SPEC can be 0, t, a symbol -\(naming a function), or a list." nil 'macro) - -(defalias 'edebug-defun 'edebug-eval-top-level-form) - -(autoload 'edebug-eval-top-level-form "edebug" "\ -Evaluate a top level form, such as a defun or defmacro. -This is like `eval-defun', but the code is always instrumented for Edebug. -Print its name in the minibuffer and leave point where it is, -or if an error occurs, leave point after it with mark at the original point." t nil) - -;;;*** - -;;;### (autoloads nil "eval-reg" "edebug/eval-reg.el" (12546 50557)) -;;; Generated autoloads from edebug/eval-reg.el - -;;;*** - -;;;### (autoloads nil "ediff-diff" "ediff/ediff-diff.el" (12747 30850)) -;;; Generated autoloads from ediff/ediff-diff.el - -;;;### (autoloads nil "ediff-hook" "ediff/ediff-hook.el" (12675 57178)) -;;; Generated autoloads from ediff/ediff-hook.el - -;;;### (autoloads nil "ediff-init" "ediff/ediff-init.el" (12675 57168)) -;;; Generated autoloads from ediff/ediff-init.el - -;;;*** - -;;;### (autoloads nil "ediff-merg" "ediff/ediff-merg.el" (12675 57169)) -;;; Generated autoloads from ediff/ediff-merg.el - -;;;*** - -;;;### (autoloads (ediff-show-registry) "ediff-mult" "ediff/ediff-mult.el" (12675 57177)) -;;; Generated autoloads from ediff/ediff-mult.el - -(autoload 'ediff-show-registry "ediff-mult" "\ -Display Ediff's registry." t nil) - -(defalias 'eregistry 'ediff-show-registry) - -;;;*** - -;;;### (autoloads nil "ediff-ptch" "ediff/ediff-ptch.el" (12639 8398)) -;;; Generated autoloads from ediff/ediff-ptch.el - -;;;*** - -;;;### (autoloads nil "ediff-util" "ediff/ediff-util.el" (12740 28859)) -;;; Generated autoloads from ediff/ediff-util.el - -;;;*** - -;;;### (autoloads nil "ediff-vers" "ediff/ediff-vers.el" (12675 57179)) -;;; Generated autoloads from ediff/ediff-vers.el - -;;;### (autoloads nil "ediff-wind" "ediff/ediff-wind.el" (12730 62272)) -;;; Generated autoloads from ediff/ediff-wind.el - -;;;### (autoloads (electric-buffer-list) "ebuff-menu" "electric/ebuff-menu.el" (12695 11397)) -;;; Generated autoloads from electric/ebuff-menu.el - -(autoload 'electric-buffer-list "ebuff-menu" "\ -Pops up a buffer describing the set of Emacs buffers. -Vaguely like ITS lunar select buffer; combining typeoutoid buffer -listing with menuoid buffer selection. - -If the very next character typed is a space then the buffer list -window disappears. Otherwise, one may move around in the -buffer list window, marking buffers to be selected, saved or deleted. - -To exit and select a new buffer, type a space when the cursor is on the -appropriate line of the buffer-list window. - -Other commands are much like those of buffer-menu-mode. - -Calls value of `electric-buffer-menu-mode-hook' on entry if non-nil. - -Non-null optional arg FILES-ONLY means mention only file buffers. -When called from Lisp code, FILES-ONLY may be a regular expression, -in which case only buffers whose names match that expression are listed, -or an arbitrary predicate function. - -\\{electric-buffer-menu-mode-map}" t nil) - -;;;*** - -;;;### (autoloads (electric-command-history Electric-command-history-redo-expression) "echistory" "electric/echistory.el" (12657 12773)) -;;; Generated autoloads from electric/echistory.el - -(autoload 'Electric-command-history-redo-expression "echistory" "\ -Edit current history line in minibuffer and execute result. -With prefix argument NOCONFIRM, execute current line as-is without editing." t nil) - -(autoload 'electric-command-history "echistory" "\ -\\<electric-history-map>Major mode for examining and redoing commands from `command-history'. -This pops up a window with the Command History listing. -The number of command listed is controlled by `list-command-history-max'. -The command history is filtered by `list-command-history-filter' if non-nil. -Combines typeout Command History list window with menu like selection -of an expression from the history for re-evaluation in the *original* buffer. - -The history displayed is filtered by `list-command-history-filter' if non-nil. - -This pops up a window with the Command History listing. If the very -next character typed is Space, the listing is killed and the previous -window configuration is restored. Otherwise, you can browse in the -Command History with Return moving down and Delete moving up, possibly -selecting an expression to be redone with Space or quitting with `Q'. - -Like Emacs-Lisp mode except that characters do not insert themselves and -Tab and Linefeed do not indent. Instead these commands are provided: -\\{electric-history-map} - -Calls the value of `electric-command-history-hook' if that is non-nil. -The Command History listing is recomputed each time this mode is invoked." t nil) - -;;;*** - -;;;### (autoloads (electric-helpify with-electric-help) "ehelp" "electric/ehelp.el" (12657 13467)) -;;; Generated autoloads from electric/ehelp.el - -(autoload 'with-electric-help "ehelp" "\ -Pop up an \"electric\" help buffer. -The arguments are THUNK &optional BUFFER NOERASE MINHEIGHT. -THUNK is a function of no arguments which is called to initialize the -contents of BUFFER. BUFFER defaults to `*Help*'. BUFFER will be -erased before THUNK is called unless NOERASE is non-nil. THUNK will -be called while BUFFER is current and with `standard-output' bound to -the buffer specified by BUFFER. - -If THUNK returns nil, we display BUFFER starting at the top, and -shrink the window to fit. If THUNK returns non-nil, we don't do those things. - -After THUNK has been called, this function \"electrically\" pops up a window -in which BUFFER is displayed and allows the user to scroll through that buffer -in electric-help-mode. The window's height will be at least MINHEIGHT if -this value is non-nil. - -If THUNK returns nil, we display BUFFER starting at the top, and -shrink the window to fit. If THUNK returns non-nil, we don't do those -things. - -When the user exits (with `electric-help-exit', or otherwise) the help -buffer's window disappears (i.e., we use `save-window-excursion') -BUFFER is put into `default-major-mode' (or `fundamental-mode') when we exit." nil nil) - -(autoload 'electric-helpify "ehelp" nil nil nil) - -;;;*** - -;;;### (autoloads nil "electric" "electric/electric.el" (12657 12771)) -;;; Generated autoloads from electric/electric.el - -;;;### (autoloads (Helper-help Helper-describe-bindings) "helper" "electric/helper.el" (12657 12774)) -;;; Generated autoloads from electric/helper.el - -(autoload 'Helper-describe-bindings "helper" "\ -Describe local key bindings of current mode." t nil) - -(autoload 'Helper-help "helper" "\ -Provide help for current mode." t nil) - -;;;*** - -;;;### (autoloads nil "edt" "emulators/edt.el" (12147 26395)) -;;; Generated autoloads from emulators/edt.el - -;;;### (autoloads (evi) "evi" "emulators/evi.el" (12106 7816)) -;;; Generated autoloads from emulators/evi.el - -(autoload 'evi "evi" "\ -Start vi emulation in this buffer." t nil) - -;;;*** - - -;;;### (autoloads (convert-mocklisp-buffer) "mlconvert" "emulators/mlconvert.el" (12147 26396)) -;;; Generated autoloads from emulators/mlconvert.el - -(autoload 'convert-mocklisp-buffer "mlconvert" "\ -Convert buffer of Mocklisp code to real Lisp that GNU Emacs can run." t nil) - -;;;*** - -;;;### (autoloads nil "mlsupport" "emulators/mlsupport.el" (12546 37584)) -;;; Generated autoloads from emulators/mlsupport.el - -;;;### (autoloads (teco-command) "teco" "emulators/teco.el" (12013 11585)) -;;; Generated autoloads from emulators/teco.el - -(autoload 'teco-command "teco" "\ -Read and execute a Teco command string." t nil) - -;;;*** - -;;;### (autoloads nil "tpu-doc" "emulators/tpu-doc.el" (12147 26400)) -;;; Generated autoloads from emulators/tpu-doc.el - -;;;### (autoloads (tpu-edt-on) "tpu-edt" "emulators/tpu-edt.el" (12657 15244)) -;;; Generated autoloads from emulators/tpu-edt.el - -(fset 'tpu-edt-mode 'tpu-edt-on) - -(fset 'tpu-edt 'tpu-edt-on) - -(autoload 'tpu-edt-on "tpu-edt" "\ -Turn on TPU/edt emulation." t nil) - -;;;*** - -;;;### (autoloads nil "tpu-extras" "emulators/tpu-extras.el" (12147 26399)) -;;; Generated autoloads from emulators/tpu-extras.el - -;;;*** - -;;;### (autoloads nil "tpu-mapper" "emulators/tpu-mapper.el" (12147 26401)) -;;; Generated autoloads from emulators/tpu-mapper.el - -;;;*** - -;;;### (autoloads nil "ws-mode" "emulators/ws-mode.el" (11903 15657)) -;;; Generated autoloads from emulators/ws-mode.el - -;;;*** - -;;;### (autoloads nil "backtrace-logging" "energize/backtrace-logging.el" (11903 15662)) -;;; Generated autoloads from energize/backtrace-logging.el - -;;;*** - -;;;### (autoloads nil "energize-advice" "energize/energize-advice.el" (12111 23959)) -;;; Generated autoloads from energize/energize-advice.el - -;;;*** - -;;;### (autoloads nil "energize-annoprint" "energize/energize-annoprint.el" (11903 15669)) -;;; Generated autoloads from energize/energize-annoprint.el - -;;;*** - -;;;### (autoloads nil "energize-font-lock" "energize/energize-font-lock.el" (12147 26402)) -;;; Generated autoloads from energize/energize-font-lock.el - -;;;*** - -;;;### (autoloads nil "energize-font-size" "energize/energize-font-size.el" (12178 36802)) -;;; Generated autoloads from energize/energize-font-size.el - -;;;### (autoloads nil "energize-init" "energize/energize-init.el" (12051 23190)) -;;; Generated autoloads from energize/energize-init.el - -;;;*** - -;;;### (autoloads nil "energize-load" "energize/energize-load.el" (12111 23959)) -;;; Generated autoloads from energize/energize-load.el - -;;;*** - -;;;### (autoloads nil "energize-menus" "energize/energize-menus.el" (12142 23800)) -;;; Generated autoloads from energize/energize-menus.el - -;;;*** - -;;;### (autoloads nil "energize-mode" "energize/energize-mode.el" (12720 34134)) -;;; Generated autoloads from energize/energize-mode.el - -;;;*** - -;;;### (autoloads nil "energize-shell" "energize/energize-shell.el" (12110 33408)) -;;; Generated autoloads from energize/energize-shell.el - -;;;### (autoloads nil "energize-uimx" "energize/energize-uimx.el" (12147 26403)) -;;; Generated autoloads from energize/energize-uimx.el - -;;;*** - -;;;### (autoloads nil "energize-vi" "energize/energize-vi.el" (12122 13994)) -;;; Generated autoloads from energize/energize-vi.el - -;;;### (autoloads nil "energize-visit-use" "energize/energize-visit-use.el" (12008 37450)) -;;; Generated autoloads from energize/energize-visit-use.el - -;;;*** - -;;;### (autoloads nil "energize-windows" "energize/energize-windows.el" (12008 37451)) -;;; Generated autoloads from energize/energize-windows.el - -;;;*** - -;;;### (autoloads nil "ostore" "energize/ostore.el" (11903 15667)) -;;; Generated autoloads from energize/ostore.el - -;;;*** - -;;;### (autoloads nil "write-file" "energize/write-file.el" (11903 15661)) -;;; Generated autoloads from energize/write-file.el - -;;;*** - -;;;### (autoloads nil "eos" "eos/eos.el" (12738 54604)) -;;; Generated autoloads from eos/eos.el - -;;;*** - -;;;### (autoloads nil "loaddefs-eos" "eos/loaddefs-eos.el" (12748 32915)) -;;; Generated autoloads from eos/loaddefs-eos.el - -;;;### (autoloads nil "sun-eos-browser" "eos/sun-eos-browser.el" (12738 54603)) -;;; Generated autoloads from eos/sun-eos-browser.el - -;;;### (autoloads nil "sun-eos-common" "eos/sun-eos-common.el" (12345 62348)) -;;; Generated autoloads from eos/sun-eos-common.el - -;;;*** - -;;;### (autoloads nil "sun-eos-debugger-extra" "eos/sun-eos-debugger-extra.el" (12738 54601)) -;;; Generated autoloads from eos/sun-eos-debugger-extra.el - -;;;*** - -;;;### (autoloads nil "sun-eos-debugger" "eos/sun-eos-debugger.el" (12738 54600)) -;;; Generated autoloads from eos/sun-eos-debugger.el - -;;;*** - -;;;### (autoloads nil "sun-eos-editor" "eos/sun-eos-editor.el" (12738 54604)) -;;; Generated autoloads from eos/sun-eos-editor.el - -;;;*** - -;;;### (autoloads nil "sun-eos-init" "eos/sun-eos-init.el" (12738 54603)) -;;; Generated autoloads from eos/sun-eos-init.el - -;;;*** - -;;;### (autoloads nil "sun-eos-load" "eos/sun-eos-load.el" (12738 54602)) -;;; Generated autoloads from eos/sun-eos-load.el - -;;;*** - -;;;### (autoloads nil "sun-eos-menubar" "eos/sun-eos-menubar.el" (12738 54605)) -;;; Generated autoloads from eos/sun-eos-menubar.el - -;;;*** - -;;;### (autoloads nil "sun-eos-toolbar" "eos/sun-eos-toolbar.el" (12738 54599)) -;;; Generated autoloads from eos/sun-eos-toolbar.el - -;;;*** - -;;;### (autoloads nil "sun-eos" "eos/sun-eos.el" (12738 54602)) -;;; Generated autoloads from eos/sun-eos.el - -;;;### (autoloads nil "epoch" "epoch/epoch.el" (11903 15869)) -;;; Generated autoloads from epoch/epoch.el - -;;;### (autoloads (term make-term) "term" "eterm/term.el" (12254 10521)) -;;; Generated autoloads from eterm/term.el - -(autoload 'make-term "term" "\ -Make a term process NAME in a buffer, running PROGRAM. -The name of the buffer is made by surrounding NAME with `*'s. -If there is already a running process in that buffer, it is not restarted. -Optional third arg STARTFILE is the name of a file to send the contents of to -the process. Any more args are arguments to PROGRAM." nil nil) - -(autoload 'term "term" "\ -Start a terminal-emulator in a new buffer." t nil) - -;;;*** - -;;;### (autoloads (tperldb txdb tdbx tsdb tgdb) "tgud" "eterm/tgud.el" (12147 26618)) -;;; Generated autoloads from eterm/tgud.el - -(autoload 'tgdb "tgud" "\ -Run gdb on program FILE in buffer *tgud-FILE*. -The directory containing FILE becomes the initial working directory -and source-file directory for your debugger." t nil) - -(autoload 'tsdb "tgud" "\ -Run sdb on program FILE in buffer *tgud-FILE*. -The directory containing FILE becomes the initial working directory -and source-file directory for your debugger." t nil) - -(autoload 'tdbx "tgud" "\ -Run dbx on program FILE in buffer *tgud-FILE*. -The directory containing FILE becomes the initial working directory -and source-file directory for your debugger." t nil) - -(autoload 'txdb "tgud" "\ -Run xdb on program FILE in buffer *tgud-FILE*. -The directory containing FILE becomes the initial working directory -and source-file directory for your debugger. - -You can set the variable 'tgud-xdb-directories' to a list of program source -directories if your program contains sources from more than one directory." t nil) - -(autoload 'tperldb "tgud" "\ -Run perldb on program FILE in buffer *tgud-FILE*. -The directory containing FILE becomes the initial working directory -and source-file directory for your debugger." t nil) - -;;;*** - -;;;### (autoloads (tshell) "tshell" "eterm/tshell.el" (12147 26618)) -;;; Generated autoloads from eterm/tshell.el - -(defvar tshell-prompt-pattern "^[^#$%>\n]*[#$%>] *" "\ -Regexp to match prompts in the inferior shell. -Defaults to \"^[^#$%>\\n]*[#$%>] *\", which works pretty well. -This variable is used to initialise `term-prompt-regexp' in the -shell buffer. - -The pattern should probably not match more than one line. If it does, -tshell-mode may become confused trying to distinguish prompt from input -on lines which don't start with a prompt. - -This is a fine thing to set in your `.emacs' file.") - -(autoload 'tshell "tshell" "\ -Run an inferior shell, with I/O through buffer *shell*. -If buffer exists but shell process is not running, make new shell. -If buffer exists and shell process is running, just switch to buffer `*shell*'. -Program used comes from variable `explicit-shell-file-name', - or (if that is nil) from the ESHELL environment variable, - or else from SHELL if there is no ESHELL. -If a file `~/.emacs_SHELLNAME' exists, it is given as initial input - (Note that this may lose due to a timing error if the shell - discards input when it starts up.) -The buffer is put in Tshell mode, giving commands for sending input -and controlling the subjobs of the shell. See `tshell-mode'. -See also the variable `tshell-prompt-pattern'. - -The shell file name (sans directories) is used to make a symbol name -such as `explicit-csh-args'. If that symbol is a variable, -its value is used as a list of arguments when invoking the shell. -Otherwise, one argument `-i' is passed to the shell. - -\(Type \\[describe-mode] in the shell buffer for a list of commands.)" t nil) - -;;;*** - -;;;### (autoloads nil "NeXTify" "games/NeXTify.el" (11903 15936)) -;;; Generated autoloads from games/NeXTify.el - -;;;### (autoloads (blackbox) "blackbox" "games/blackbox.el" (12147 26583)) -;;; Generated autoloads from games/blackbox.el - -(autoload 'blackbox "blackbox" "\ -Play blackbox. Optional prefix argument is the number of balls; -the default is 4. - -What is blackbox? - -Blackbox is a game of hide and seek played on an 8 by 8 grid (the -Blackbox). Your opponent (Emacs, in this case) has hidden several -balls (usually 4) within this box. By shooting rays into the box and -observing where they emerge it is possible to deduce the positions of -the hidden balls. The fewer rays you use to find the balls, the lower -your score. - -Overview of play: - -\\<blackbox-mode-map>To play blackbox, type \\[blackbox]. An optional prefix argument -specifies the number of balls to be hidden in the box; the default is -four. - -The cursor can be moved around the box with the standard cursor -movement keys. - -To shoot a ray, move the cursor to the edge of the box and press SPC. -The result will be determined and the playfield updated. - -You may place or remove balls in the box by moving the cursor into the -box and pressing \\[bb-romp]. - -When you think the configuration of balls you have placed is correct, -press \\[bb-done]. You will be informed whether you are correct or -not, and be given your score. Your score is the number of letters and -numbers around the outside of the box plus five for each incorrectly -placed ball. If you placed any balls incorrectly, they will be -indicated with `x', and their actual positions indicated with `o'. - -Details: - -There are three possible outcomes for each ray you send into the box: - - Detour: the ray is deflected and emerges somewhere other than - where you sent it in. On the playfield, detours are - denoted by matching pairs of numbers -- one where the - ray went in, and the other where it came out. - - Reflection: the ray is reflected and emerges in the same place - it was sent in. On the playfield, reflections are - denoted by the letter `R'. - - Hit: the ray strikes a ball directly and is absorbed. It does - not emerge from the box. On the playfield, hits are - denoted by the letter `H'. - -The rules for how balls deflect rays are simple and are best shown by -example. - -As a ray approaches a ball it is deflected ninety degrees. Rays can -be deflected multiple times. In the diagrams below, the dashes -represent empty box locations and the letter `O' represents a ball. -The entrance and exit points of each ray are marked with numbers as -described under \"Detour\" above. Note that the entrance and exit -points are always interchangeable. `*' denotes the path taken by the -ray. - -Note carefully the relative positions of the ball and the ninety -degree deflection it causes. - - 1 - - * - - - - - - - - - - - - - - - - - - - - - - - - * - - - - - - - - - - - - - - - - - - - - - - -1 * * - - - - - - - - - - - - - - - O - - - - O - - - - O - - - - - - - O - - - - - - - * * * * - - - - - - - - - - - - - - * * * * * 2 3 * * * - - * - - - - - - - - - - - - - - * - - - - - - - O - * - - - - - - - - - - - - - - * - - - - - - - - * * - - - - - - - - - - - - - - * - - - - - - - - * - O - - 2 3 - -As mentioned above, a reflection occurs when a ray emerges from the same point -it was sent in. This can happen in several ways: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - O - - - - - O - O - - - - - - - - - - - -R * * * * - - - - - - - * - - - - O - - - - - - - - - - - - O - - - - - - * - - - - R - - - - - - - - - - - - - - - - - - - - * - - - - - - - - - - - - - - - - - - - - - - - - * - - - - - - - - - - - - - - - - - - - - - R * * * * - - - - - - - - - - - - - - - - - - - - - - - - - O - - - - - - - - - - - - -In the first example, the ray is deflected downwards by the upper -ball, then left by the lower ball, and finally retraces its path to -its point of origin. The second example is similar. The third -example is a bit anomalous but can be rationalized by realizing the -ray never gets a chance to get into the box. Alternatively, the ray -can be thought of as being deflected downwards and immediately -emerging from the box. - -A hit occurs when a ray runs straight into a ball: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - O - - - - - - - - - - - - - - - - O - - - H * * * * - - - - - - - - - - - - - H * * * * O - - - - - - * - - - - - - - - - - - - - - - - - O - - - - - - O - - - - -H * * * O - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Be sure to compare the second example of a hit with the first example of -a reflection." t nil) - -;;;*** - -;;;### (autoloads (conx-load conx conx-region conx-buffer) "conx" "games/conx.el" (12013 11851)) -;;; Generated autoloads from games/conx.el - -(autoload 'conx-buffer "conx" "\ -Absorb the text in the current buffer into the tree." t nil) - -(autoload 'conx-region "conx" "\ -Absorb the text in the current region into the tree." t nil) - -(autoload 'conx "conx" "\ -Generate some random sentences in the *conx* buffer." t nil) - -(autoload 'conx-load "conx" "\ -Load in a CONX database written by the \\[conx-save] command. -This clears the database currently in memory." t nil) - -;;;*** - -;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie) "cookie1" "games/cookie1.el" (12147 26582)) -;;; Generated autoloads from games/cookie1.el - -(autoload 'cookie "cookie1" "\ -Return a random phrase from PHRASE-FILE. When the phrase file -is read in, display STARTMSG at beginning of load, ENDMSG at end." nil nil) - -(autoload 'cookie-insert "cookie1" "\ -Insert random phrases from PHRASE-FILE; COUNT of them. When the phrase file -is read in, display STARTMSG at beginning of load, ENDMSG at end." nil nil) - -(autoload 'cookie-snarf "cookie1" "\ -Reads in the PHRASE-FILE, returns it as a vector of strings. -Emit STARTMSG and ENDMSG before and after. Caches the result; second -and subsequent calls on the same file won't go to disk." nil nil) - -(autoload 'shuffle-vector "cookie1" "\ -Randomly permute the elements of VECTOR (all permutations equally likely)" nil nil) - -;;;*** - -;;;### (autoloads (dissociated-press) "dissociate" "games/dissociate.el" (12147 26583)) -;;; Generated autoloads from games/dissociate.el - -(autoload 'dissociated-press "dissociate" "\ -Dissociate the text of the current buffer. -Output goes in buffer named *Dissociation*, -which is redisplayed each time text is added to it. -Every so often the user must say whether to continue. -If ARG is positive, require ARG chars of continuity. -If ARG is negative, require -ARG words of continuity. -Default is 2." t nil) - -;;;*** - -;;;### (autoloads (doctor) "doctor" "games/doctor.el" (12147 26585)) -;;; Generated autoloads from games/doctor.el - -(autoload 'doctor "doctor" "\ -Switch to *doctor* buffer and start giving psychotherapy." t nil) - -;;;*** - -;;;### (autoloads (dunnet) "dunnet" "games/dunnet.el" (12147 26589)) -;;; Generated autoloads from games/dunnet.el - -(autoload 'dunnet "dunnet" "\ -Switch to *dungeon* buffer and start game." t nil) - -;;;*** - -;;;### (autoloads (flame) "flame" "games/flame.el" (12142 23857)) -;;; Generated autoloads from games/flame.el - -(autoload 'flame "flame" "\ -Generate ARG (default 1) sentences of half-crazed gibberish." t nil) - -;;;*** - -;;;### (autoloads (gomoku) "gomoku" "games/gomoku.el" (12546 37634)) -;;; Generated autoloads from games/gomoku.el - -(autoload 'gomoku "gomoku" "\ -Start a Gomoku game between you and Emacs. -If a game is in progress, this command allow you to resume it. -If optional arguments N and M are given, an N by M board is used. - -You and Emacs play in turn by marking a free square. You mark it with X -and Emacs marks it with O. The winner is the first to get five contiguous -marks horizontally, vertically or in diagonal. -You play by moving the cursor over the square you choose and hitting -\\<gomoku-mode-map>\\[gomoku-human-plays]. -Use \\[describe-mode] for more info." t nil) - -;;;*** - -;;;### (autoloads (hanoi) "hanoi" "games/hanoi.el" (12546 37635)) -;;; Generated autoloads from games/hanoi.el - -(autoload 'hanoi "hanoi" "\ -Towers of Hanoi diversion. Argument is number of rings." t nil) - -;;;*** - -;;;### (autoloads (life) "life" "games/life.el" (12742 53079)) -;;; Generated autoloads from games/life.el - -(autoload 'life "life" "\ -Run Conway's Life simulation. -The starting pattern is randomly selected. Prefix arg (optional first -arg non-nil from a program) is the number of seconds to sleep between -generations (this defaults to 1)." t nil) - -;;;*** - -;;;### (autoloads (mpuz) "mpuz" "games/mpuz.el" (12546 37635)) -;;; Generated autoloads from games/mpuz.el - -(autoload 'mpuz "mpuz" "\ -Multiplication puzzle with GNU Emacs." t nil) - -;;;*** - -;;;### (autoloads (snarf-spooks spook) "spook" "games/spook.el" (12546 37636)) -;;; Generated autoloads from games/spook.el - -(autoload 'spook "spook" "\ -Adds that special touch of class to your outgoing mail." t nil) - -(autoload 'snarf-spooks "spook" "\ -Return a vector containing the lines from `spook-phrases-file'." nil nil) - -;;;*** - -;;;### (autoloads nil "studly" "games/studly.el" (11903 15936)) -;;; Generated autoloads from games/studly.el - -;;;### (autoloads (psychoanalyze-pinhead insert-zippyism yow) "yow" "games/yow.el" (12546 37637)) -;;; Generated autoloads from games/yow.el - -(autoload 'yow "yow" "\ -Return or display a random Zippy quotation. With prefix arg, insert it." t nil) - -(autoload 'insert-zippyism "yow" "\ -Prompt with completion for a known Zippy quotation, and insert it at point." t nil) - -(autoload 'psychoanalyze-pinhead "yow" "\ -Zippy goes to the analyst." t nil) - -;;;*** - -;;;### (autoloads nil "custom" "gnus/custom.el" (12747 65485)) -;;; Generated autoloads from gnus/custom.el - -;;;*** - -;;;### (autoloads nil "dgnushack" "gnus/dgnushack.el" (12740 29829)) -;;; Generated autoloads from gnus/dgnushack.el - -;;;### (autoloads (gnus-cache-generate-nov-databases gnus-cache-generate-active gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (12740 29831)) -;;; Generated autoloads from gnus/gnus-cache.el - -(autoload 'gnus-jog-cache "gnus-cache" "\ -Go through all groups and put the articles into the cache." t nil) - -(autoload 'gnus-cache-generate-active "gnus-cache" "\ -Generate the cache active file." t nil) - -(autoload 'gnus-cache-generate-nov-databases "gnus-cache" "\ -Generate NOV files recursively starting in DIR." t nil) - -;;;*** - -;;;### (autoloads nil "gnus-cite" "gnus/gnus-cite.el" (12747 7531)) -;;; Generated autoloads from gnus/gnus-cite.el - -;;;### (autoloads nil "gnus-cus" "gnus/gnus-cus.el" (12740 29830)) -;;; Generated autoloads from gnus/gnus-cus.el - -;;;*** - -;;;### (autoloads nil "gnus-demon" "gnus/gnus-demon.el" (12740 29837)) -;;; Generated autoloads from gnus/gnus-demon.el - -;;;*** - -;;;### (autoloads nil "gnus-edit" "gnus/gnus-edit.el" (12740 29831)) -;;; Generated autoloads from gnus/gnus-edit.el - -;;;*** - -;;;### (autoloads nil "gnus-ems" "gnus/gnus-ems.el" (12743 11645)) -;;; Generated autoloads from gnus/gnus-ems.el - -;;;### (autoloads nil "gnus-gl" "gnus/gnus-gl.el" (12730 62276)) -;;; Generated autoloads from gnus/gnus-gl.el - -;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (12727 30137)) -;;; Generated autoloads from gnus/gnus-kill.el - -;;;*** - -;;;### (autoloads nil "gnus-mh" "gnus/gnus-mh.el" (12740 29832)) -;;; Generated autoloads from gnus/gnus-mh.el - -;;;*** - -;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (12747 7531)) -;;; Generated autoloads from gnus/gnus-msg.el - -;;;*** - -;;;### (autoloads nil "gnus-nocem" "gnus/gnus-nocem.el" (12727 30246)) -;;; Generated autoloads from gnus/gnus-nocem.el - -;;;*** - -;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (12747 7531)) -;;; Generated autoloads from gnus/gnus-picon.el - -;;;*** - -;;;### (autoloads nil "gnus-salt" "gnus/gnus-salt.el" (12745 38029)) -;;; Generated autoloads from gnus/gnus-salt.el - -;;;### (autoloads (gnus-score-mode) "gnus-scomo" "gnus/gnus-scomo.el" (12740 29837)) -;;; Generated autoloads from gnus/gnus-scomo.el - -(autoload 'gnus-score-mode "gnus-scomo" "\ -Mode for editing Gnus score files. -This mode is an extended emacs-lisp mode. - -\\{gnus-score-mode-map}" t nil) - -;;;*** - -;;;### (autoloads nil "gnus-score" "gnus/gnus-score.el" (12744 54652)) -;;; Generated autoloads from gnus/gnus-score.el - -;;;*** - -;;;### (autoloads nil "gnus-setup" "gnus/gnus-setup.el" (12727 30250)) -;;; Generated autoloads from gnus/gnus-setup.el - -;;;### (autoloads (gnus-batch-brew-soup) "gnus-soup" "gnus/gnus-soup.el" (12743 11653)) -;;; Generated autoloads from gnus/gnus-soup.el - -(autoload 'gnus-batch-brew-soup "gnus-soup" "\ -Brew a SOUP packet from groups mention on the command line. -Will use the remaining command line arguments as regular expressions -for matching on group names. - -For instance, if you want to brew on all the nnml groups, as well as -groups with \"emacs\" in the name, you could say something like: - -$ emacs -batch -f gnus-batch-brew-soup ^nnml \".*emacs.*\"" t nil) - -;;;*** - -;;;### (autoloads nil "gnus-srvr" "gnus/gnus-srvr.el" (12744 54656)) -;;; Generated autoloads from gnus/gnus-srvr.el - -;;;*** - -;;;### (autoloads nil "gnus-topic" "gnus/gnus-topic.el" (12727 30244)) -;;; Generated autoloads from gnus/gnus-topic.el - -;;;*** - -;;;### (autoloads nil "gnus-uu" "gnus/gnus-uu.el" (12743 11648)) -;;; Generated autoloads from gnus/gnus-uu.el - -;;;*** - -;;;### (autoloads nil "gnus-vis" "gnus/gnus-vis.el" (12747 7531)) -;;; Generated autoloads from gnus/gnus-vis.el - -;;;### (autoloads nil "gnus-vm" "gnus/gnus-vm.el" (12727 30143)) -;;; Generated autoloads from gnus/gnus-vm.el - -;;;### (autoloads nil "gnus-xemacs-toolbar" "gnus/gnus-xemacs-toolbar.el" (12698 34149)) -;;; Generated autoloads from gnus/gnus-xemacs-toolbar.el - -;;;### (autoloads nil "gnus-xemacs" "gnus/gnus-xemacs.el" (12291 51)) -;;; Generated autoloads from gnus/gnus-xemacs.el - -;;;*** - -;;;### (autoloads nil "gnus-xmas" "gnus/gnus-xmas.el" (12747 65515)) -;;; Generated autoloads from gnus/gnus-xmas.el - -;;;### (autoloads (gnus-batch-score gnus-fetch-group gnus gnus-other-frame gnus-slave gnus-no-server gnus-slave-no-server gnus-add-configuration gnus-update-format) "gnus" "gnus/gnus.el" (12748 42)) -;;; Generated autoloads from gnus/gnus.el - -(autoload 'gnus-update-format "gnus" "\ -Update the format specification near point." t nil) - -(autoload 'gnus-add-configuration "gnus" "\ -Add the window configuration CONF to `gnus-buffer-configuration'." nil nil) - -(autoload 'gnus-slave-no-server "gnus" "\ -Read network news as a slave, without connecting to local server" t nil) - -(autoload 'gnus-no-server "gnus" "\ -Read network news. -If ARG is a positive number, Gnus will use that as the -startup level. If ARG is nil, Gnus will be started at level 2. -If ARG is non-nil and not a positive number, Gnus will -prompt the user for the name of an NNTP server to use. -As opposed to `gnus', this command will not connect to the local server." t nil) - -(autoload 'gnus-slave "gnus" "\ -Read news as a slave." t nil) - -(autoload 'gnus-other-frame "gnus" "\ -Pop up a frame to read news." t nil) - -(autoload 'gnus "gnus" "\ -Read network news. -If ARG is non-nil and a positive number, Gnus will use that as the -startup level. If ARG is non-nil and not a positive number, Gnus will -prompt the user for the name of an NNTP server to use." t nil) - -(autoload 'gnus-fetch-group "gnus" "\ -Start Gnus if necessary and enter GROUP. -Returns whether the fetching was successful or not." t nil) - -(defalias 'gnus-batch-kill 'gnus-batch-score) - -(autoload 'gnus-batch-score "gnus" "\ -Run batched scoring. -Usage: emacs -batch -l gnus -f gnus-batch-score <newsgroups> ... -Newsgroups is a list of strings in Bnews format. If you want to score -the comp hierarchy, you'd say \"comp.all\". If you would not like to -score the alt hierarchy, you'd say \"!alt.all\"." t nil) - -;;;*** - -;;;### (autoloads nil "mailheader" "gnus/mailheader.el" (12727 30254)) -;;; Generated autoloads from gnus/mailheader.el - -;;;### (autoloads (unbold-region bold-region message-news-other-frame message-news-other-window message-mail-other-frame message-mail-other-window message-bounce message-resend message-forward message-recover message-supersede message-cancel-news message-followup message-wide-reply message-reply message-news message-mail message-mode) "message" "gnus/message.el" (12747 7532)) -;;; Generated autoloads from gnus/message.el - -(defvar message-directory "~/Mail/" "\ -*Directory from which all other mail file variables are derived.") - -(defvar message-fcc-handler-function 'rmail-output "\ -*A function called to save outgoing articles. -This function will be called with the name of the file to store the -article in. The default function is `rmail-output' which saves in Unix -mailbox format.") - -(defvar message-courtesy-message "The following message is a courtesy copy of an article\nthat has been posted as well.\n\n" "\ -*This is inserted at the start of a mailed copy of a posted message. -If this variable is nil, no such courtesy message will be added.") - -(defvar message-ignored-bounced-headers "^\\(Received\\|Return-Path\\):" "\ -*Regexp that matches headers to be removed in resent bounced mail.") - -(defvar message-from-style 'default "\ -*Specifies how \"From\" headers look. - -If `nil', they contain just the return address like: - king@grassland.com -If `parens', they look like: - king@grassland.com (Elvis Parsley) -If `angles', they look like: - Elvis Parsley <king@grassland.com> - -Otherwise, most addresses look like `angles', but they look like -`parens' if `angles' would need quoting and `parens' would not.") - -(defvar message-syntax-checks nil "\ -Controls what syntax checks should not be performed on outgoing posts. -To disable checking of long signatures, for instance, add - `(signature . disabled)' to this list. - -Don't touch this variable unless you really know what you're doing. - -Checks include subject-cmsg multiple-headers sendsys message-id from -long-lines control-chars size new-text redirected-followup signature -approved sender empty empty-headers message-id from subject.") - -(defvar message-required-news-headers '(From Newsgroups Subject Date Message-ID (optional . Organization) Lines (optional . X-Newsreader)) "\ -*Headers to be generated or prompted for when posting an article. -RFC977 and RFC1036 require From, Date, Newsgroups, Subject, -Message-ID. Organization, Lines, In-Reply-To, Expires, and -X-Newsreader are optional. If don't you want message to insert some -header, remove it from this list.") - -(defvar message-required-mail-headers '(From Subject Date (optional . In-Reply-To) Message-ID Lines (optional . X-Mailer)) "\ -*Headers to be generated or prompted for when mailing a message. -RFC822 required that From, Date, To, Subject and Message-ID be -included. Organization, Lines and X-Mailer are optional.") - -(defvar message-deletable-headers '(Message-ID Date) "\ -*Headers to be deleted if they already exist and were generated by message previously.") - -(defvar message-ignored-news-headers "^NNTP-Posting-Host:\\|^Xref:\\|^Bcc:\\|^Gcc:\\|^Fcc:" "\ -*Regexp of headers to be removed unconditionally before posting.") - -(defvar message-ignored-mail-headers "^Gcc:\\|^Fcc:" "\ -*Regexp of headers to be removed unconditionally before mailing.") - -(defvar message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|Return-Path:\\|^Supersedes:" "\ -*Header lines matching this regexp will be deleted before posting. -It's best to delete old Path and Date headers before posting to avoid -any confusion.") - -(defvar message-signature-separator "^-- *$" "\ -Regexp matching the signature separator.") - -(defvar message-interactive nil "\ -Non-nil means when sending a message wait for and display errors. -nil means let mailer mail back a message to report errors.") - -(defvar message-generate-new-buffers t "\ -*Non-nil means that a new message buffer will be created whenever `mail-setup' is called. -If this is a function, call that function with three parameters: The type, -the to address and the group name. (Any of these may be nil.) The function -should return the new buffer name.") - -(defvar message-kill-buffer-on-exit nil "\ -*Non-nil means that the message buffer will be killed after sending a message.") - -(defvar message-user-organization-file "/usr/lib/news/organization" "\ -*Local news organization file.") - -(defvar message-autosave-directory (concat (file-name-as-directory message-directory) "drafts/") "\ -*Directory where message autosaves buffers. -If nil, message won't autosave.") - -(defvar message-signature-before-forwarded-message t "\ -*If non-nil, put the signature before any included forwarded message.") - -(defvar message-included-forward-headers "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-\\|^Message-ID:\\|^References:" "\ -*Regexp matching headers to be included in forwarded messages.") - -(defvar message-ignored-resent-headers "^Return-receipt" "\ -*All headers that match this regexp will be deleted when resending a message.") - -(defvar message-ignored-cited-headers "." "\ -Delete these headers from the messages you yank.") - -(defvar message-send-mail-function 'message-send-mail-with-sendmail "\ -Function to call to send the current buffer as mail. -The headers should be delimited by a line whose contents match the -variable `mail-header-separator'. - -Legal values include `message-send-mail-with-mh' and -`message-send-mail-with-sendmail', which is the default.") - -(defvar message-send-news-function 'message-send-news "\ -Function to call to send the current buffer as news. -The headers should be delimited by a line whose contents match the -variable `mail-header-separator'.") - -(defvar message-reply-to-function nil "\ -Function that should return a list of headers. -This function should pick out addresses from the To, Cc, and From headers -and respond with new To and Cc headers.") - -(defvar message-wide-reply-to-function nil "\ -Function that should return a list of headers. -This function should pick out addresses from the To, Cc, and From headers -and respond with new To and Cc headers.") - -(defvar message-followup-to-function nil "\ -Function that should return a list of headers. -This function should pick out addresses from the To, Cc, and From headers -and respond with new To and Cc headers.") - -(defvar message-use-followup-to 'ask "\ -*Specifies what to do with Followup-To header. -If nil, ignore the header. If it is t, use its value, but query before -using the \"poster\" value. If it is the symbol `ask', query the user -whether to ignore the \"poster\" value. If it is the symbol `use', -always use the value.") - -(defvar message-post-method (cond ((and (boundp 'gnus-post-method) gnus-post-method) gnus-post-method) ((boundp 'gnus-select-method) gnus-select-method) (t '(nnspool ""))) "\ -Method used to post news.") - -(defvar message-generate-headers-first nil "\ -*If non-nil, generate all possible headers before composing.") - -(defvar message-citation-line-function 'message-insert-citation-line "\ -*Function called to insert the \"Whomever writes:\" line.") - -(defvar message-yank-prefix "> " "\ -*Prefix inserted on the lines of yanked messages. -nil means use indentation.") - -(defvar message-cite-function 'message-cite-original "\ -*Function for citing an original message.") - -(defvar message-indent-citation-function 'message-indent-citation "\ -*Function for modifying a citation just inserted in the mail buffer. -This can also be a list of functions. Each function can find the -citation between (point) and (mark t). And each function should leave -point and mark around the citation text as modified.") - -(defvar message-signature t "\ -*String to be inserted at the end of the message buffer. -If t, the `message-signature-file' file will be inserted instead. -If a function, the result from the function will be used instead. -If a form, the result from the form will be used instead.") - -(defvar message-signature-file "~/.signature" "\ -*File containing the text inserted at end of message. buffer.") - -(defvar message-default-headers nil "\ -*A string containing header lines to be inserted in outgoing messages. -It is inserted before you edit the message, so you can edit or delete -these lines.") - -(defvar message-default-mail-headers nil "\ -*A string of header lines to be inserted in outgoing mails.") - -(defvar message-default-news-headers nil "\ -*A string of header lines to be inserted in outgoing news articles.") - -(autoload 'message-mode "message" "\ -Major mode for editing mail and news to be sent. -Like Text Mode but with these additional commands: -C-c C-s message-send (send the message) C-c C-c message-send-and-exit -C-c C-f move to a header field (and create it if there isn't): - C-c C-f C-t move to To C-c C-f C-s move to Subject - C-c C-f C-c move to Cc C-c C-f C-b move to Bcc - C-c C-f C-f move to Fcc C-c C-f C-r move to Reply-To - C-c C-f C-u move to Summary C-c C-f C-n move to Newsgroups - C-c C-f C-k move to Keywords C-c C-f C-d move to Distribution - C-c C-f C-o move to Followup-To -C-c C-t message-insert-to (add a To header to a news followup) -C-c C-n message-insert-newsgroups (add a Newsgroup header to a news reply) -C-c C-b message-goto-body (move to beginning of message text). -C-c C-i message-goto-signature (move to the beginning of the signature). -C-c C-w message-insert-signature (insert `message-signature-file' file). -C-c C-y message-yank-original (insert current message, if any). -C-c C-q message-fill-yanked-message (fill what was yanked). -C-c C-r message-ceasar-buffer-body (rot13 the message body)." t nil) - -(autoload 'message-mail "message" "\ -Start editing a mail message to be sent." t nil) - -(autoload 'message-news "message" "\ -Start editing a news article to be sent." t nil) - -(autoload 'message-reply "message" "\ -Start editing a reply to the article in the current buffer." t nil) - -(autoload 'message-wide-reply "message" nil t nil) - -(autoload 'message-followup "message" nil t nil) - -(autoload 'message-cancel-news "message" "\ -Cancel an article you posted." t nil) - -(autoload 'message-supersede "message" "\ -Start composing a message to supersede the current message. -This is done simply by taking the old article and adding a Supersedes -header line with the old Message-ID." t nil) - -(autoload 'message-recover "message" "\ -Reread contents of current buffer from its last auto-save file." t nil) - -(autoload 'message-forward "message" "\ -Forward the current message via mail. -Optional NEWS will use news to forward instead of mail." t nil) - -(autoload 'message-resend "message" "\ -Resend the current article to ADDRESS." t nil) - -(autoload 'message-bounce "message" "\ -Re-mail the current message. -This only makes sense if the current message is a bounce message than -contains some mail you have written which has been bounced back to -you." t nil) - -(autoload 'message-mail-other-window "message" "\ -Like `message-mail' command, but display mail buffer in another window." t nil) - -(autoload 'message-mail-other-frame "message" "\ -Like `message-mail' command, but display mail buffer in another frame." t nil) - -(autoload 'message-news-other-window "message" "\ -Start editing a news article to be sent." t nil) - -(autoload 'message-news-other-frame "message" "\ -Start editing a news article to be sent." t nil) - -(autoload 'bold-region "message" "\ -Bold all nonblank characters in the region. -Works by overstriking characters. -Called from program, takes two arguments START and END -which specify the range to operate on." t nil) - -(autoload 'unbold-region "message" "\ -Remove all boldness (overstruck characters) in the region. -Called from program, takes two arguments START and END -which specify the range to operate on." t nil) - -;;;*** - -;;;### (autoloads nil "messagexmas" "gnus/messagexmas.el" (12743 11658)) -;;; Generated autoloads from gnus/messagexmas.el - -;;;### (autoloads nil "nnbabyl" "gnus/nnbabyl.el" (12740 29834)) -;;; Generated autoloads from gnus/nnbabyl.el - -;;;*** - -;;;### (autoloads nil "nndb" "gnus/nndb.el" (12740 29838)) -;;; Generated autoloads from gnus/nndb.el - -;;;### (autoloads nil "nndir" "gnus/nndir.el" (12727 30144)) -;;; Generated autoloads from gnus/nndir.el - -;;;*** - -;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (12727 30145)) -;;; Generated autoloads from gnus/nndoc.el - -;;;*** - -;;;### (autoloads nil "nndraft" "gnus/nndraft.el" (12727 30258)) -;;; Generated autoloads from gnus/nndraft.el - -;;;*** - -;;;### (autoloads nil "nneething" "gnus/nneething.el" (12727 30146)) -;;; Generated autoloads from gnus/nneething.el - -;;;### (autoloads (nnfolder-generate-active-file) "nnfolder" "gnus/nnfolder.el" (12740 29834)) -;;; Generated autoloads from gnus/nnfolder.el - -(autoload 'nnfolder-generate-active-file "nnfolder" "\ -Look for mbox folders in the nnfolder directory and make them into groups." t nil) - -;;;*** - -;;;### (autoloads nil "nnheader" "gnus/nnheader.el" (12747 7531)) -;;; Generated autoloads from gnus/nnheader.el - -;;;### (autoloads nil "nnheaderems" "gnus/nnheaderems.el" (12740 29838)) -;;; Generated autoloads from gnus/nnheaderems.el - -;;;*** - -;;;### (autoloads nil "nnheaderxm" "gnus/nnheaderxm.el" (12740 29470)) -;;; Generated autoloads from gnus/nnheaderxm.el - -;;;### (autoloads (nnkiboze-generate-groups) "nnkiboze" "gnus/nnkiboze.el" (12727 30150)) -;;; Generated autoloads from gnus/nnkiboze.el - -(autoload 'nnkiboze-generate-groups "nnkiboze" "\ -Usage: emacs -batch -l nnkiboze -f nnkiboze-generate-groups -Finds out what articles are to be part of the nnkiboze groups." t nil) - -;;;*** - -;;;### (autoloads nil "nnmail" "gnus/nnmail.el" (12743 11650)) -;;; Generated autoloads from gnus/nnmail.el - -;;;### (autoloads nil "nnmbox" "gnus/nnmbox.el" (12740 29835)) -;;; Generated autoloads from gnus/nnmbox.el - -;;;*** - -;;;### (autoloads nil "nnmh" "gnus/nnmh.el" (12745 38029)) -;;; Generated autoloads from gnus/nnmh.el - -;;;*** - -;;;### (autoloads (nnml-generate-nov-databases) "nnml" "gnus/nnml.el" (12745 38029)) -;;; Generated autoloads from gnus/nnml.el - -(autoload 'nnml-generate-nov-databases "nnml" "\ -Generate nov databases in all nnml directories." t nil) - -;;;*** - -;;;### (autoloads nil "nnoo" "gnus/nnoo.el" (12727 30260)) -;;; Generated autoloads from gnus/nnoo.el - -;;;### (autoloads (nnsoup-revert-variables nnsoup-set-variables nnsoup-pack-replies) "nnsoup" "gnus/nnsoup.el" (12727 30260)) -;;; Generated autoloads from gnus/nnsoup.el - -(autoload 'nnsoup-pack-replies "nnsoup" "\ -Make an outbound package of SOUP replies." t nil) - -(autoload 'nnsoup-set-variables "nnsoup" "\ -Use the SOUP methods for posting news and mailing mail." t nil) - -(autoload 'nnsoup-revert-variables "nnsoup" "\ -Revert posting and mailing methods to the standard Emacs methods." t nil) - -;;;*** - -;;;### (autoloads nil "nnspool" "gnus/nnspool.el" (12743 11641)) -;;; Generated autoloads from gnus/nnspool.el - -;;;*** - -;;;### (autoloads nil "nntp" "gnus/nntp.el" (12744 54655)) -;;; Generated autoloads from gnus/nntp.el - -;;;### (autoloads nil "nnvirtual" "gnus/nnvirtual.el" (12740 29836)) -;;; Generated autoloads from gnus/nnvirtual.el - -;;;### (autoloads (gnus-smiley-display) "smiley" "gnus/smiley.el" (12743 11659)) -;;; Generated autoloads from gnus/smiley.el - -(autoload 'gnus-smiley-display "smiley" nil t nil) - -;;;*** - -;;;### (autoloads nil "adapt" "hm--html-menus/adapt.el" (12351 16418)) -;;; Generated autoloads from hm--html-menus/adapt.el - -;;;### (autoloads nil "hm--date" "hm--html-menus/hm--date.el" (12134 29531)) -;;; Generated autoloads from hm--html-menus/hm--date.el - -;;;*** - -;;;### (autoloads nil "hm--html-configuration" "hm--html-menus/hm--html-configuration.el" (12583 65387)) -;;; Generated autoloads from hm--html-menus/hm--html-configuration.el - -;;;*** - -;;;### (autoloads nil "hm--html-keys" "hm--html-menus/hm--html-keys.el" (12583 65388)) -;;; Generated autoloads from hm--html-menus/hm--html-keys.el - -;;;*** - -;;;### (autoloads nil "hm--html-menu" "hm--html-menus/hm--html-menu.el" (12583 65384)) -;;; Generated autoloads from hm--html-menus/hm--html-menu.el - -;;;### (autoloads nil "hm--html" "hm--html-menus/hm--html.el" (12637 39898)) -;;; Generated autoloads from hm--html-menus/hm--html.el - -;;;*** - -;;;### (autoloads nil "html-mode" "hm--html-menus/html-mode.el" (12638 48648)) -;;; Generated autoloads from hm--html-menus/html-mode.el - -;;;### (autoloads (html-view-get-display html-view-goto-url html-view-view-buffer html-view-view-file html-view-start-mosaic) "html-view" "hm--html-menus/html-view.el" (12318 54261)) -;;; Generated autoloads from hm--html-menus/html-view.el - -(autoload 'html-view-start-mosaic "html-view" "\ -Start Mosaic." t nil) - -(autoload 'html-view-view-file "html-view" "\ -View an html file with Mosaic." t nil) - -(autoload 'html-view-view-buffer "html-view" "\ -View html buffer with Mosaic. -If BUFFER-TO-VIEW is nil, then the current buffer is used." t nil) - -(autoload 'html-view-goto-url "html-view" "\ -Goto an URL in Mosaic." t nil) - -(autoload 'html-view-get-display "html-view" "\ -Get the display for Mosaic." t nil) - -;;;*** - -;;;### (autoloads nil "tmpl-minor-mode" "hm--html-menus/tmpl-minor-mode.el" (12638 48649)) -;;; Generated autoloads from hm--html-menus/tmpl-minor-mode.el - -;;;*** - -;;;### (autoloads nil "hact" "hyperbole/hact.el" (12178 36891)) -;;; Generated autoloads from hyperbole/hact.el - -;;;*** - -;;;### (autoloads nil "hactypes" "hyperbole/hactypes.el" (12558 62953)) -;;; Generated autoloads from hyperbole/hactypes.el - -;;;### (autoloads nil "hargs" "hyperbole/hargs.el" (12378 2532)) -;;; Generated autoloads from hyperbole/hargs.el - -;;;*** - -;;;### (autoloads nil "hbdata" "hyperbole/hbdata.el" (12178 36894)) -;;; Generated autoloads from hyperbole/hbdata.el - -;;;*** - -;;;### (autoloads nil "hbmap" "hyperbole/hbmap.el" (12558 62954)) -;;; Generated autoloads from hyperbole/hbmap.el - -;;;*** - -;;;### (autoloads nil "hbut" "hyperbole/hbut.el" (12558 62955)) -;;; Generated autoloads from hyperbole/hbut.el - -;;;*** - -;;;### (autoloads nil "hgnus" "hyperbole/hgnus.el" (12558 62955)) -;;; Generated autoloads from hyperbole/hgnus.el - -;;;*** - -;;;### (autoloads nil "hhist" "hyperbole/hhist.el" (12178 36897)) -;;; Generated autoloads from hyperbole/hhist.el - -;;;*** - -;;;### (autoloads nil "hib-doc-id" "hyperbole/hib-doc-id.el" (12178 36897)) -;;; Generated autoloads from hyperbole/hib-doc-id.el - -;;;*** - -;;;### (autoloads nil "hib-kbd" "hyperbole/hib-kbd.el" (12558 62956)) -;;; Generated autoloads from hyperbole/hib-kbd.el - -;;;*** - -;;;### (autoloads nil "hibtypes" "hyperbole/hibtypes.el" (12558 62957)) -;;; Generated autoloads from hyperbole/hibtypes.el - -;;;*** - -;;;### (autoloads nil "hinit" "hyperbole/hinit.el" (12558 62958)) -;;; Generated autoloads from hyperbole/hinit.el - -;;;*** - -;;;### (autoloads nil "hlvar" "hyperbole/hlvar.el" (12264 40810)) -;;; Generated autoloads from hyperbole/hlvar.el - -;;;*** - -;;;### (autoloads (hmail:compose) "hmail" "hyperbole/hmail.el" (12558 62959)) -;;; Generated autoloads from hyperbole/hmail.el - -(autoload 'hmail:compose "hmail" "\ -Compose mail with ADDRESS and evaluation of EXPR. -Optional SUBJECT and HELP message may also be given." t nil) - -;;;*** - -;;;### (autoloads nil "hmh" "hyperbole/hmh.el" (12222 24177)) -;;; Generated autoloads from hyperbole/hmh.el - -;;;*** - -;;;### (autoloads nil "hmoccur" "hyperbole/hmoccur.el" (12178 36902)) -;;; Generated autoloads from hyperbole/hmoccur.el - -;;;*** - -;;;### (autoloads (Info-handle-in-note smart-info-assist smart-info) "hmous-info" "hyperbole/hmous-info.el" (12558 62960)) -;;; Generated autoloads from hyperbole/hmous-info.el - -(autoload 'smart-info "hmous-info" "\ -Walks through Info documentation networks using one key or mouse key. - -If key is pressed within: - (1) the first line of an Info Menu Entry or Cross Reference, the desired node - is found; - (2) the Up, Next, or Previous entries of a Node Header (first line), - the desired node is found; - (3) the File entry of a Node Header (first line), - the 'Top' node within that file is found; - (4) at the end of the current node, the Next node is found (this will - descend subtrees if the function 'Info-global-next' is bound); - (5) anywhere else (e.g. at the end of a line), the current node entry is - scrolled up one windowful. - -Returns t if key is pressed within an Info Node Header, Cross Reference, -or a Menu; otherwise returns nil." t nil) - -(autoload 'smart-info-assist "hmous-info" "\ -Walks through Info documentation networks using one assist-key or mouse assist-key. - -If assist-key is pressed within: - (1) the first line of an Info Menu Entry or Cross Reference, the desired node - is found; - (2) the Up, Next, or Previous entries of a Node Header (first line), - the last node in the history list is found; - (3) the File entry of a Node Header (first line), - the 'DIR' root-level node is found; - (4) at the end of the current node, the Previous node is found (this will - return from subtrees if the function 'Info-global-prev is bound); - (5) anywhere else (e.g. at the end of a line), the current node entry is - scrolled down one windowful. - -Returns t if assist-key is pressed within an Info Node Header, Cross Reference, -or a Menu; otherwise returns nil." t nil) - -(autoload 'Info-handle-in-note "hmous-info" "\ -Follows an Info cross-reference. -If point is within the first line of an Info note (cross-reference), follows -cross-reference and returns t; otherwise returns nil." nil nil) - -;;;*** - -;;;### (autoloads nil "hmouse-drv" "hyperbole/hmouse-drv.el" (12558 62962)) -;;; Generated autoloads from hyperbole/hmouse-drv.el - -;;;### (autoloads nil "hmouse-key" "hyperbole/hmouse-key.el" (12378 2537)) -;;; Generated autoloads from hyperbole/hmouse-key.el - -;;;*** - -;;;### (autoloads nil "hmouse-mod" "hyperbole/hmouse-mod.el" (12178 36905)) -;;; Generated autoloads from hyperbole/hmouse-mod.el - -;;;### (autoloads nil "hmouse-reg" "hyperbole/hmouse-reg.el" (12378 2537)) -;;; Generated autoloads from hyperbole/hmouse-reg.el - -;;;*** - -;;;### (autoloads nil "hmouse-sh" "hyperbole/hmouse-sh.el" (12378 2538)) -;;; Generated autoloads from hyperbole/hmouse-sh.el - -;;;### (autoloads (smart-tags-file smart-tags-file-path smart-objc-oobr smart-objc smart-fortran-at-tag-p smart-c++-oobr smart-c++ smart-c-at-tag-p smart-asm-at-tag-p) "hmouse-tag" "hyperbole/hmouse-tag.el" (12378 2539)) -;;; Generated autoloads from hyperbole/hmouse-tag.el - -(autoload 'smart-asm-at-tag-p "hmouse-tag" "\ -Return assembly tag name that point is within, else nil." nil nil) - -(autoload 'smart-c-at-tag-p "hmouse-tag" "\ -Return C tag name that point is within, else nil." nil nil) - -(autoload 'smart-c++ "hmouse-tag" "\ -Jumps to the definition of optional C++ IDENTIFIER or the one at point. -Optional second arg NEXT means jump to next matching C++ tag. - -It assumes that its caller has already checked that the key was pressed in an -appropriate buffer and has moved the cursor to the selected buffer. - -If: - (1) on a '#include' statement, the include file is displayed; - Look for include file in directory lists 'smart-c-cpp-include-dirs' - and 'smart-c-include-dirs'. - (2) on a C++ identifier, the identifier definition is displayed, - assuming the identifier is found within an 'etags' generated tag file - in the current directory or any of its ancestor directories. - (3) if 'smart-c-use-lib-man' is non-nil, the C++ identifier is - recognized as a library symbol, and a man page is found for the - identifier, then the man page is displayed." t nil) - -(autoload 'smart-c++-oobr "hmouse-tag" "\ -Jumps to the definition of selected C++ construct via OO-Browser support. -Optional JUNK is ignored. Does nothing if the OO-Browser is not available. - -It assumes that its caller has already checked that the key was pressed in an -appropriate buffer and has moved the cursor to the selected buffer. - -If key is pressed: - (1) on a '#include' statement, the include file is displayed; - Look for include file in directory lists 'smart-c-cpp-include-dirs' - and 'smart-c-include-dirs'. - (2) within a method declaration, its definition is displayed; - (3) on a class name, the class definition is shown. - - (2) and (3) require that an OO-Browser Environment has been loaded with - the {M-x br-env-load RTN} command." t nil) - -(autoload 'smart-fortran-at-tag-p "hmouse-tag" "\ -Return Fortran tag name that point is within, else nil." nil nil) - -(autoload 'smart-objc "hmouse-tag" "\ -Jumps to the definition of optional Objective-C IDENTIFIER or the one at point. -Optional second arg NEXT means jump to next matching Objective-C tag. - -It assumes that its caller has already checked that the key was pressed in an -appropriate buffer and has moved the cursor to the selected buffer. - -If: - (1) on a '#include' statement, the include file is displayed; - Look for include file in directory lists 'smart-c-cpp-include-dirs' - and 'smart-c-include-dirs'. - (2) on an Objective-C identifier, the identifier definition is displayed, - assuming the identifier is found within an 'etags' generated tag file - in the current directory or any of its ancestor directories. - (3) if 'smart-c-use-lib-man' is non-nil, the Objective-C identifier is - recognized as a library symbol, and a man page is found for the - identifier, then the man page is displayed." t nil) - -(autoload 'smart-objc-oobr "hmouse-tag" "\ -Jumps to the definition of selected Objective-C construct via OO-Browser support. -Optional JUNK is ignored. Does nothing if the OO-Browser is not available. - -It assumes that its caller has already checked that the key was pressed in an -appropriate buffer and has moved the cursor to the selected buffer. - -If key is pressed: - (1) on a '#include' statement, the include file is displayed; - Look for include file in directory lists 'smart-c-cpp-include-dirs' - and 'smart-c-include-dirs'. - (2) within a method declaration, its definition is displayed; - (3) on a class name, the class definition is shown. - - (2) and (3) require that an OO-Browser Environment has been loaded with - the {M-x br-env-load RTN} command." t nil) - -(autoload 'smart-tags-file-path "hmouse-tag" "\ -Expand relative FILE name by looking it up in the nearest tags file. -Return FILE unchanged if it exists relative to the current directory or -cannot be expanded via a tags file." nil nil) - -(autoload 'smart-tags-file "hmouse-tag" "\ -Return appropriate tags file name for CURR-FILENAME or 'tags-file-name'." nil nil) - -;;;*** - -;;;### (autoloads nil "hpath" "hyperbole/hpath.el" (12558 62962)) -;;; Generated autoloads from hyperbole/hpath.el - -;;;*** - -;;;### (autoloads nil "hrmail" "hyperbole/hrmail.el" (12222 24179)) -;;; Generated autoloads from hyperbole/hrmail.el - -;;;*** - -;;;### (autoloads nil "hsite-ex" "hyperbole/hsite-ex.el" (12558 62963)) -;;; Generated autoloads from hyperbole/hsite-ex.el - -;;;*** - -;;;### (autoloads nil "hsite" "hyperbole/hsite.el" (12558 62974)) -;;; Generated autoloads from hyperbole/hsite.el - -;;;*** - -;;;### (autoloads nil "hsmail" "hyperbole/hsmail.el" (12331 54478)) -;;; Generated autoloads from hyperbole/hsmail.el - -;;;*** - -;;;### (autoloads nil "hsys-hbase" "hyperbole/hsys-hbase.el" (12558 62963)) -;;; Generated autoloads from hyperbole/hsys-hbase.el - -;;;*** - -;;;### (autoloads nil "hsys-w3" "hyperbole/hsys-w3.el" (12558 62964)) -;;; Generated autoloads from hyperbole/hsys-w3.el - -;;;*** - -;;;### (autoloads nil "hsys-wais" "hyperbole/hsys-wais.el" (12558 62965)) -;;; Generated autoloads from hyperbole/hsys-wais.el - -;;;*** - -;;;### (autoloads nil "hsys-www" "hyperbole/hsys-www.el" (12178 36913)) -;;; Generated autoloads from hyperbole/hsys-www.el - -;;;*** - -;;;### (autoloads nil "htz" "hyperbole/htz.el" (12285 55426)) -;;; Generated autoloads from hyperbole/htz.el - -;;;*** - -;;;### (autoloads nil "hui-em19-b" "hyperbole/hui-em19-b.el" (12558 62965)) -;;; Generated autoloads from hyperbole/hui-em19-b.el - -;;;*** - -;;;### (autoloads nil "hui-ep-but" "hyperbole/hui-ep-but.el" (12178 36916)) -;;; Generated autoloads from hyperbole/hui-ep-but.el - -;;;*** - -;;;### (autoloads nil "hui-epV4-b" "hyperbole/hui-epV4-b.el" (12178 36916)) -;;; Generated autoloads from hyperbole/hui-epV4-b.el - -;;;*** - -;;;### (autoloads nil "hui-menu" "hyperbole/hui-menu.el" (12558 62975)) -;;; Generated autoloads from hyperbole/hui-menu.el - -;;;*** - -;;;### (autoloads nil "hui-mini" "hyperbole/hui-mini.el" (12558 63020)) -;;; Generated autoloads from hyperbole/hui-mini.el - -;;;*** - -;;;### (autoloads nil "hui-mouse" "hyperbole/hui-mouse.el" (12558 62966)) -;;; Generated autoloads from hyperbole/hui-mouse.el - -;;;*** - -;;;### (autoloads nil "hui-window" "hyperbole/hui-window.el" (12558 62968)) -;;; Generated autoloads from hyperbole/hui-window.el - -;;;*** - -;;;### (autoloads nil "hui-xe-but" "hyperbole/hui-xe-but.el" (12558 62969)) -;;; Generated autoloads from hyperbole/hui-xe-but.el - -;;;*** - -;;;### (autoloads nil "hui" "hyperbole/hui.el" (12351 16413)) -;;; Generated autoloads from hyperbole/hui.el - -;;;*** - -;;;### (autoloads (var:append) "hvar" "hyperbole/hvar.el" (12178 36921)) -;;; Generated autoloads from hyperbole/hvar.el - -(autoload 'var:append "hvar" "\ -Appends to value held by VAR-SYMBOL-NAME, LIST-TO-ADD. Returns new value. -If VAR-SYMBOL-NAME is unbound, it is set to LIST-TO-ADD. -Often used to append to 'hook' variables." nil nil) - -;;;*** - -;;;### (autoloads nil "hversion" "hyperbole/hversion.el" (12558 62969)) -;;; Generated autoloads from hyperbole/hversion.el - -;;;*** - -;;;### (autoloads nil "hvm" "hyperbole/hvm.el" (12285 55427)) -;;; Generated autoloads from hyperbole/hvm.el - -;;;### (autoloads (hypb:configuration) "hypb" "hyperbole/hypb.el" (12558 62970)) -;;; Generated autoloads from hyperbole/hypb.el - -(autoload 'hypb:configuration "hypb" "\ -Insert Emacs configuration information at the end of optional OUT-BUF or the current buffer." nil nil) - -;;;*** - -;;;### (autoloads nil "hyperbole" "hyperbole/hyperbole.el" (12558 62971)) -;;; Generated autoloads from hyperbole/hyperbole.el - -(defvar action-key-url-function 'w3-fetch "\ -Value is a function of one argument, a url, which displays the url referent. -Possible values are: - w3-fetch - display using the W3 Emacs web browser; - highlight-headers-follow-url-netscape - display in Netscape; - highlight-headers-follow-url-mosaic - display in Mosaic.") - -(defvar kimport:mode-alist '((t . kimport:text) (outline-mode . kimport:star-outline)) "\ -Alist of (major-mode . importation-function) elements. -This determines the type of importation done on a file when `kimport:file' is -called if the major mode of the import file matches the car of an element in -this list. If there is no match, then `kimport:suffix-alist' is checked. If -that yields no match, the element in this list whose car is 't is used. It -normally does an import of a koutline or text file. - -Each importation-function must take two arguments, a buffer/file to import -and a buffer/file into which to insert the imported elements and a third -optional argument, CHILDREN-P, which when non-nil means insert imported cells -as the initial set of children of the current cell, if any. - - outline-mode - imported as an Emacs outline whose entries begin with - asterisks; - .kot - .kotl - imported as a structured koutline - - all others - imported as text.") - -(defvar kimport:suffix-alist '(("\\.otl$" . kimport:star-outline) ("\\.aug$" . kimport:aug-post-outline)) "\ -Alist of (buffer-name-suffix-regexp . importation-function) elements. -This determines the type of importation done on a file when `kimport:file' is -called. Each importation-function must take two arguments, a buffer/file to -import and a buffer/file into which to insert the imported elements and a -third optional argument, CHILDREN-P, which when non-nil means insert imported -cells as the initial set of children of the current cell, if any. - - .otl - imported as an Emacs outline whose entries begin with asterisks; - .kot - .kotl - imported as a structured koutline - .aug - imported as an Augment post-numbered outline.") - -;;;*** - -;;;### (autoloads nil "set" "hyperbole/set.el" (12178 36925)) -;;; Generated autoloads from hyperbole/set.el - -;;;### (autoloads (wconfig-yank-pop wconfig-ring-save wconfig-delete-pop wconfig-restore-by-name wconfig-delete-by-name wconfig-add-by-name) "wconfig" "hyperbole/wconfig.el" (12178 36925)) -;;; Generated autoloads from hyperbole/wconfig.el - -(autoload 'wconfig-add-by-name "wconfig" "\ -Saves the current window configuration under the string NAME. -When called interactively and a window configuration already exists under -NAME, confirms whether or not to replace it." t nil) - -(autoload 'wconfig-delete-by-name "wconfig" "\ -Deletes window configuration saved under NAME." t nil) - -(autoload 'wconfig-restore-by-name "wconfig" "\ -Restores window configuration saved under NAME." t nil) - -(autoload 'wconfig-delete-pop "wconfig" "\ -Replaces current window config with most recently saved config in ring. -Then deletes this new configuration from the ring." t nil) - -(autoload 'wconfig-ring-save "wconfig" "\ -Saves the current window configuration onto the save ring. -Use {\\[wconfig-yank-pop]} to restore it at a later time." t nil) - -(autoload 'wconfig-yank-pop "wconfig" "\ -Replaces current window config with prefix arg Nth prior one in save ring. -Interactively, default value of N = 1, meaning the last saved window -configuration is displayed. - -The sequence of window configurations wraps around, so that after the oldest -one comes the newest one." t nil) - -;;;*** - -;;;### (autoloads (rolo-logic) "wrolo-logic" "hyperbole/wrolo-logic.el" (12178 36926)) -;;; Generated autoloads from hyperbole/wrolo-logic.el - -(autoload 'rolo-logic "wrolo-logic" "\ -Apply FUNC to all entries in optional IN-BUFS, display entries where FUNC is non-nil. -If IN-BUFS is nil, 'rolo-file-list' is used. If optional COUNT-ONLY is -non-nil, don't display entries, return count of matching entries only. If -optional INCLUDE-SUB-ENTRIES flag is non-nil, FUNC will be applied across all -sub-entries at once. Default is to apply FUNC to each entry and sub-entry -separately. Entries are displayed with all of their sub-entries unless -INCLUDE-SUB-ENTRIES is nil and optional NO-SUB-ENTRIES-OUT flag is non-nil. -FUNC should use the free variables 'start' and 'end' which contain the limits -of the region on which it should operate. Returns number of applications of -FUNC that return non-nil." t nil) - -;;;*** - -;;;### (autoloads nil "wrolo-menu" "hyperbole/wrolo-menu.el" (12558 62975)) -;;; Generated autoloads from hyperbole/wrolo-menu.el - -;;;*** - -;;;### (autoloads (rolo-yank rolo-sort rolo-kill rolo-grep rolo-fgrep rolo-edit rolo-display-matches rolo-add) "wrolo" "hyperbole/wrolo.el" (12558 62972)) -;;; Generated autoloads from hyperbole/wrolo.el - -(autoload 'rolo-add "wrolo" "\ -Adds a new entry in personal rolodex for NAME. -Last name first is best, e.g. \"Smith, John\". -With prefix argument, prompts for optional FILE to add entry within. -NAME may be of the form: parent/child to insert child below a parent -entry which begins with the parent string." t nil) - -(autoload 'rolo-display-matches "wrolo" "\ -Display optional DISPLAY-BUF buffer of previously found rolodex matches. -If DISPLAY-BUF is nil, use the value in 'rolo-display-buffer'. -Second arg RETURN-TO-BUFFER is the buffer to leave point within after the display." t nil) - -(autoload 'rolo-edit "wrolo" "\ -Edits a rolodex entry given by optional NAME within 'rolo-file-list'. -With prefix argument, prompts for optional FILE to locate entry within. -With no NAME arg, simply displays FILE or first entry in 'rolo-file-list' in an -editable mode. NAME may be of the form: parent/child to edit child below a -parent entry which begins with the parent string." t nil) - -(autoload 'rolo-fgrep "wrolo" "\ -Display rolodex entries matching STRING. -To a maximum of optional prefix arg MAX-MATCHES, in file(s) from optional -ROLO-FILE or rolo-file-list. Default is to find all matching entries. Each -entry is displayed with all of its sub-entries. Optional COUNT-ONLY non-nil -means don't retrieve and don't display matching entries. Optional NO-DISPLAY -non-nil means retrieve entries but don't display. - -Nil value of MAX-MATCHES means find all matches, t value means find all matches -but omit file headers, negative values mean find up to the inverse of that -number of entries and omit file headers. - -Returns number of entries matched. See also documentation for the variable -rolo-file-list." t nil) - -(autoload 'rolo-grep "wrolo" "\ -Display rolodex entries matching REGEXP. -To a maximum of prefix arg MAX-MATCHES, in buffer(s) from optional ROLO-BUFS or -rolo-file-list. Default is to find all matching entries. Each entry is -displayed with all of its sub-entries. Optional COUNT-ONLY non-nil means don't -retrieve and don't display matching entries. Optional NO-DISPLAY non-nil -means retrieve entries but don't display. - -Nil value of MAX-MATCHES means find all matches, t value means find all matches -but omit file headers, negative values mean find up to the inverse of that -number of entries and omit file headers. - -Returns number of entries matched. See also documentation for the variable -rolo-file-list." t nil) - -(autoload 'rolo-kill "wrolo" "\ -Kills a rolodex entry given by NAME within 'rolo-file-list'. -With prefix argument, prompts for optional FILE to locate entry within. -NAME may be of the form: parent/child to kill child below a parent entry -which begins with the parent string. -Returns t if entry is killed, nil otherwise." t nil) - -(autoload 'rolo-sort "wrolo" "\ -Sorts up to 14 levels of entries in ROLO-FILE (default is personal rolo). -Assumes entries are delimited by one or more '*'characters. -Returns list of number of groupings at each entry level." t nil) - -(autoload 'rolo-yank "wrolo" "\ -Inserts at point the first rolodex entry matching NAME. -With optional prefix arg, REGEXP-P, treats NAME as a regular expression instead -of a string." t nil) - -;;;*** - -;;;### (autoloads nil "bridge" "ilisp/bridge.el" (12071 49092)) -;;; Generated autoloads from ilisp/bridge.el - -;;;*** - -;;;### (autoloads nil "comint-ipc" "ilisp/comint-ipc.el" (12071 49086)) -;;; Generated autoloads from ilisp/comint-ipc.el - -;;;*** - -;;;### (autoloads nil "comint-v18" "ilisp/comint-v18.el" (11904 37632)) -;;; Generated autoloads from ilisp/comint-v18.el - -;;;*** - -;;;### (autoloads nil "completer" "ilisp/completer.el" (12666 32964)) -;;; Generated autoloads from ilisp/completer.el - -;;;*** - -;;;### (autoloads nil "ilcompat" "ilisp/ilcompat.el" (12071 49152)) -;;; Generated autoloads from ilisp/ilcompat.el - -;;;### (autoloads nil "ilfsf18" "ilisp/ilfsf18.el" (12071 49153)) -;;; Generated autoloads from ilisp/ilfsf18.el - -;;;*** - -;;;### (autoloads nil "ilfsf19" "ilisp/ilfsf19.el" (12071 49154)) -;;; Generated autoloads from ilisp/ilfsf19.el - -;;;*** - -;;;### (autoloads nil "ilisp-acl" "ilisp/ilisp-acl.el" (12071 49099)) -;;; Generated autoloads from ilisp/ilisp-acl.el - -;;;*** - -;;;### (autoloads nil "ilisp-aut" "ilisp/ilisp-aut.el" (12071 49100)) -;;; Generated autoloads from ilisp/ilisp-aut.el - -;;;*** - -;;;### (autoloads nil "ilisp-bat" "ilisp/ilisp-bat.el" (12071 49087)) -;;; Generated autoloads from ilisp/ilisp-bat.el - -;;;*** - -;;;### (autoloads nil "ilisp-bug" "ilisp/ilisp-bug.el" (12071 49097)) -;;; Generated autoloads from ilisp/ilisp-bug.el - -;;;*** - -;;;### (autoloads nil "ilisp-chs" "ilisp/ilisp-chs.el" (12071 49154)) -;;; Generated autoloads from ilisp/ilisp-chs.el - -;;;*** - -;;;### (autoloads nil "ilisp-cl" "ilisp/ilisp-cl.el" (12071 49099)) -;;; Generated autoloads from ilisp/ilisp-cl.el - -;;;*** - -;;;### (autoloads nil "ilisp-cmp" "ilisp/ilisp-cmp.el" (12106 7817)) -;;; Generated autoloads from ilisp/ilisp-cmp.el - -;;;*** - -;;;### (autoloads nil "ilisp-cmt" "ilisp/ilisp-cmt.el" (12071 49100)) -;;; Generated autoloads from ilisp/ilisp-cmt.el - -;;;*** - -;;;### (autoloads nil "ilisp-cmu" "ilisp/ilisp-cmu.el" (12071 49104)) -;;; Generated autoloads from ilisp/ilisp-cmu.el - -;;;*** - -;;;### (autoloads nil "ilisp-cpat" "ilisp/ilisp-cpat.el" (12071 49094)) -;;; Generated autoloads from ilisp/ilisp-cpat.el - -;;;*** - -;;;### (autoloads nil "ilisp-def" "ilisp/ilisp-def.el" (12071 49103)) -;;; Generated autoloads from ilisp/ilisp-def.el - -;;;*** - -;;;### (autoloads nil "ilisp-dia" "ilisp/ilisp-dia.el" (12071 49102)) -;;; Generated autoloads from ilisp/ilisp-dia.el - -;;;*** - -;;;### (autoloads nil "ilisp-doc" "ilisp/ilisp-doc.el" (12071 49101)) -;;; Generated autoloads from ilisp/ilisp-doc.el - -;;;*** - -;;;### (autoloads nil "ilisp-el" "ilisp/ilisp-el.el" (12071 49104)) -;;; Generated autoloads from ilisp/ilisp-el.el - -;;;*** - -;;;### (autoloads nil "ilisp-ext" "ilisp/ilisp-ext.el" (12071 49088)) -;;; Generated autoloads from ilisp/ilisp-ext.el - -;;;*** - -;;;### (autoloads nil "ilisp-hi" "ilisp/ilisp-hi.el" (12071 49106)) -;;; Generated autoloads from ilisp/ilisp-hi.el - -;;;*** - -;;;### (autoloads nil "ilisp-hlw" "ilisp/ilisp-hlw.el" (12071 49154)) -;;; Generated autoloads from ilisp/ilisp-hlw.el - -;;;*** - -;;;### (autoloads nil "ilisp-hnd" "ilisp/ilisp-hnd.el" (12071 49106)) -;;; Generated autoloads from ilisp/ilisp-hnd.el - -;;;*** - -;;;### (autoloads nil "ilisp-ind" "ilisp/ilisp-ind.el" (12071 49107)) -;;; Generated autoloads from ilisp/ilisp-ind.el - -;;;*** - -;;;### (autoloads nil "ilisp-inp" "ilisp/ilisp-inp.el" (12071 49107)) -;;; Generated autoloads from ilisp/ilisp-inp.el - -;;;*** - -;;;### (autoloads nil "ilisp-kcl" "ilisp/ilisp-kcl.el" (12071 49110)) -;;; Generated autoloads from ilisp/ilisp-kcl.el - -;;;*** - -;;;### (autoloads nil "ilisp-key" "ilisp/ilisp-key.el" (12071 49109)) -;;; Generated autoloads from ilisp/ilisp-key.el - -;;;*** - -;;;### (autoloads nil "ilisp-kil" "ilisp/ilisp-kil.el" (12071 49108)) -;;; Generated autoloads from ilisp/ilisp-kil.el - -;;;*** - -;;;### (autoloads nil "ilisp-low" "ilisp/ilisp-low.el" (12071 49109)) -;;; Generated autoloads from ilisp/ilisp-low.el - -;;;*** - -;;;### (autoloads nil "ilisp-luc" "ilisp/ilisp-luc.el" (12071 49110)) -;;; Generated autoloads from ilisp/ilisp-luc.el - -;;;*** - -;;;### (autoloads nil "ilisp-mak" "ilisp/ilisp-mak.el" (12071 49096)) -;;; Generated autoloads from ilisp/ilisp-mak.el - -;;;*** - -;;;### (autoloads nil "ilisp-menu" "ilisp/ilisp-menu.el" (12071 49089)) -;;; Generated autoloads from ilisp/ilisp-menu.el - -;;;*** - -;;;### (autoloads nil "ilisp-mnb" "ilisp/ilisp-mnb.el" (12071 49155)) -;;; Generated autoloads from ilisp/ilisp-mnb.el - -;;;*** - -;;;### (autoloads nil "ilisp-mod" "ilisp/ilisp-mod.el" (12554 53331)) -;;; Generated autoloads from ilisp/ilisp-mod.el - -;;;*** - -;;;### (autoloads nil "ilisp-mov" "ilisp/ilisp-mov.el" (12071 49112)) -;;; Generated autoloads from ilisp/ilisp-mov.el - -;;;*** - -;;;### (autoloads nil "ilisp-out" "ilisp/ilisp-out.el" (12142 23804)) -;;; Generated autoloads from ilisp/ilisp-out.el - -;;;### (autoloads nil "ilisp-prc" "ilisp/ilisp-prc.el" (12071 49113)) -;;; Generated autoloads from ilisp/ilisp-prc.el - -;;;*** - -;;;### (autoloads nil "ilisp-prn" "ilisp/ilisp-prn.el" (12071 49112)) -;;; Generated autoloads from ilisp/ilisp-prn.el - -;;;*** - -;;;### (autoloads nil "ilisp-rng" "ilisp/ilisp-rng.el" (12071 49114)) -;;; Generated autoloads from ilisp/ilisp-rng.el - -;;;*** - -;;;### (autoloads nil "ilisp-s2c" "ilisp/ilisp-s2c.el" (12071 49152)) -;;; Generated autoloads from ilisp/ilisp-s2c.el - -;;;*** - -;;;### (autoloads nil "ilisp-sch" "ilisp/ilisp-sch.el" (12071 49115)) -;;; Generated autoloads from ilisp/ilisp-sch.el - -;;;*** - -;;;### (autoloads nil "ilisp-snd" "ilisp/ilisp-snd.el" (12071 49117)) -;;; Generated autoloads from ilisp/ilisp-snd.el - -;;;*** - -;;;### (autoloads nil "ilisp-src" "ilisp/ilisp-src.el" (12071 49090)) -;;; Generated autoloads from ilisp/ilisp-src.el - -;;;*** - -;;;### (autoloads nil "ilisp-sym" "ilisp/ilisp-sym.el" (12071 49117)) -;;; Generated autoloads from ilisp/ilisp-sym.el - -;;;*** - -;;;### (autoloads nil "ilisp-utl" "ilisp/ilisp-utl.el" (12071 49117)) -;;; Generated autoloads from ilisp/ilisp-utl.el - -;;;*** - -;;;### (autoloads nil "ilisp-val" "ilisp/ilisp-val.el" (12071 49117)) -;;; Generated autoloads from ilisp/ilisp-val.el - -;;;*** - -;;;### (autoloads nil "ilisp-xfr" "ilisp/ilisp-xfr.el" (12071 49119)) -;;; Generated autoloads from ilisp/ilisp-xfr.el - -;;;*** - -;;;### (autoloads nil "ilisp" "ilisp/ilisp.el" (12071 49091)) -;;; Generated autoloads from ilisp/ilisp.el - -;;;*** - -;;;### (autoloads nil "illuc19" "ilisp/illuc19.el" (12071 49156)) -;;; Generated autoloads from ilisp/illuc19.el - -;;;*** - -;;;### (autoloads nil "ilxemacs" "ilisp/ilxemacs.el" (12657 15247)) -;;; Generated autoloads from ilisp/ilxemacs.el - -;;;### (autoloads nil "iso-ascii" "iso/iso-ascii.el" (12282 39217)) -;;; Generated autoloads from iso/iso-ascii.el - -;;;*** - -;;;### (autoloads nil "iso-cvt" "iso/iso-cvt.el" (12282 39218)) -;;; Generated autoloads from iso/iso-cvt.el - -;;;*** - -;;;### (autoloads nil "iso-insert" "iso/iso-insert.el" (12282 39218)) -;;; Generated autoloads from iso/iso-insert.el - -;;;*** - -;;;### (autoloads nil "iso-swed" "iso/iso-swed.el" (12282 39219)) -;;; Generated autoloads from iso/iso-swed.el - -;;;*** - -;;;### (autoloads nil "iso-syntax" "iso/iso-syntax.el" (12282 39219)) -;;; Generated autoloads from iso/iso-syntax.el - -;;;*** - -;;;### (autoloads nil "iso8859-1" "iso/iso8859-1.el" (12147 26518)) -;;; Generated autoloads from iso/iso8859-1.el - -;;;*** - -;;;### (autoloads nil "swedish" "iso/swedish.el" (12282 39220)) -;;; Generated autoloads from iso/swedish.el - -;;;*** - -;;;### (autoloads nil "site-start" "lisp/site-start.el" (12354 5512)) -;;; Generated autoloads from lisp/site-start.el - -;;;### (autoloads (mc-deactivate-passwd mc-install-write-mode mc-install-read-mode) "mailcrypt" "mailcrypt/mailcrypt.el" (12675 57163)) -;;; Generated autoloads from mailcrypt/mailcrypt.el - -(autoload 'mc-install-read-mode "mailcrypt" nil t nil) - -(autoload 'mc-install-write-mode "mailcrypt" nil t nil) - -(autoload 'mc-deactivate-passwd "mailcrypt" "\ -*Deactivate the passphrase cache." t nil) - -;;;*** - -;;;### (autoloads (mc-pgp-fetch-key mc-scheme-pgp) "mc-pgp" "mailcrypt/mc-pgp.el" (12639 8334)) -;;; Generated autoloads from mailcrypt/mc-pgp.el - -(autoload 'mc-scheme-pgp "mc-pgp" nil nil nil) - -(autoload 'mc-pgp-fetch-key "mc-pgp" "\ -Attempt to fetch a key for addition to PGP keyring. Interactively, -prompt for string matching key to fetch. - -Non-interactively, ID must be a pair. The CAR must be a bare Email -address and the CDR a keyID (with \"0x\" prefix). Either, but not -both, may be nil. - -Return t if we think we were successful; nil otherwise. Note that nil -is not necessarily an error, since we may have merely fired off an Email -request for the key." t nil) - -;;;*** - -;;;### (autoloads (mc-remailer-insert-response-block mc-remailer-encrypt-for-chain mc-remailer-insert-pseudonym) "mc-remail" "mailcrypt/mc-remail.el" (12639 8334)) -;;; Generated autoloads from mailcrypt/mc-remail.el - -(autoload 'mc-remailer-insert-pseudonym "mc-remail" "\ -Insert pseudonym as a From field in the hash-mark header. - -See the documentation for the variable `mc-remailer-pseudonyms' for -more information." t nil) - -(autoload 'mc-remailer-encrypt-for-chain "mc-remail" "\ -Encrypt message for a remailer chain, prompting for chain to use. - -With \\[universal-argument], pause before each encryption." t nil) - -(autoload 'mc-remailer-insert-response-block "mc-remail" "\ -Insert response block at point, prompting for chain to use. - -With \\[universal-argument], enter a recursive edit of the innermost -layer of the block before encrypting it." t nil) - -;;;*** - -;;;### (autoloads (mc-mh-snarf-keys mc-mh-verify-signature mc-mh-decrypt-message mc-gnus-decrypt-message mc-gnus-snarf-keys mc-gnus-verify-signature mc-vm-snarf-keys mc-vm-decrypt-message mc-vm-verify-signature mc-rmail-decrypt-message mc-rmail-verify-signature mc-rmail-summary-snarf-keys mc-rmail-summary-decrypt-message mc-rmail-summary-verify-signature mc-snarf-keys mc-snarf mc-insert-public-key mc-verify-signature mc-verify mc-sign-message mc-sign mc-decrypt-message mc-decrypt mc-encrypt-message mc-encrypt mc-cleanup-recipient-headers) "mc-toplev" "mailcrypt/mc-toplev.el" (12639 8335)) -;;; Generated autoloads from mailcrypt/mc-toplev.el - -(autoload 'mc-cleanup-recipient-headers "mc-toplev" nil nil nil) - -(autoload 'mc-encrypt "mc-toplev" "\ -*Encrypt the current buffer. - -Exact behavior depends on current major mode. - -With \\[universal-argument], prompt for User ID to sign as. - -With \\[universal-argument] \\[universal-argument], prompt for encryption scheme to use." t nil) - -(autoload 'mc-encrypt-message "mc-toplev" "\ -*Encrypt a message for RECIPIENTS using the given encryption SCHEME. -RECIPIENTS is a comma separated string. If SCHEME is nil, use the value -of `mc-default-scheme'. Returns t on success, nil otherwise." nil nil) - -(autoload 'mc-decrypt "mc-toplev" "\ -*Decrypt a message in the current buffer. - -Exact behavior depends on current major mode." t nil) - -(autoload 'mc-decrypt-message "mc-toplev" "\ -Decrypt whatever message is in the current buffer. -Returns a pair (SUCCEEDED . VERIFIED) where SUCCEEDED is t if the encryption -succeeded and VERIFIED is t if it had a valid signature." nil nil) - -(autoload 'mc-sign "mc-toplev" "\ -*Sign a message in the current buffer. - -Exact behavior depends on current major mode. - -With one prefix arg, prompts for private key to use, with two prefix args, -also prompts for encryption scheme to use. With negative prefix arg, -inhibits clearsigning (pgp)." t nil) - -(autoload 'mc-sign-message "mc-toplev" "\ -Clear sign the message." nil nil) - -(autoload 'mc-verify "mc-toplev" "\ -*Verify a message in the current buffer. - -Exact behavior depends on current major mode." t nil) - -(autoload 'mc-verify-signature "mc-toplev" "\ -*Verify the signature of the signed message in the current buffer. -Show the result as a message in the minibuffer. Returns t if the signature -is verified." nil nil) - -(autoload 'mc-insert-public-key "mc-toplev" "\ -*Insert your public key at point. -With one prefix arg, prompts for user id to use. With two prefix -args, prompts for encryption scheme." t nil) - -(autoload 'mc-snarf "mc-toplev" "\ -*Add all public keys in the buffer to your keyring. - -Exact behavior depends on current major mode." t nil) - -(autoload 'mc-snarf-keys "mc-toplev" "\ -*Add all public keys in the buffer to your keyring." t nil) - -(autoload 'mc-rmail-summary-verify-signature "mc-toplev" "\ -*Verify the signature in the current message." t nil) - -(autoload 'mc-rmail-summary-decrypt-message "mc-toplev" "\ -*Decrypt the contents of this message" t nil) - -(autoload 'mc-rmail-summary-snarf-keys "mc-toplev" "\ -*Adds keys from current message to public key ring" t nil) - -(autoload 'mc-rmail-verify-signature "mc-toplev" "\ -*Verify the signature in the current message." t nil) - -(autoload 'mc-rmail-decrypt-message "mc-toplev" "\ -*Decrypt the contents of this message" t nil) - -(autoload 'mc-vm-verify-signature "mc-toplev" "\ -*Verify the signature in the current VM message" t nil) - -(autoload 'mc-vm-decrypt-message "mc-toplev" "\ -*Decrypt the contents of the current VM message" t nil) - -(autoload 'mc-vm-snarf-keys "mc-toplev" "\ -*Snarf public key from the contents of the current VM message" t nil) - -(autoload 'mc-gnus-verify-signature "mc-toplev" nil t nil) - -(autoload 'mc-gnus-snarf-keys "mc-toplev" nil t nil) - -(autoload 'mc-gnus-decrypt-message "mc-toplev" nil t nil) - -(autoload 'mc-mh-decrypt-message "mc-toplev" "\ -Decrypt the contents of the current MH message in the show buffer." t nil) - -(autoload 'mc-mh-verify-signature "mc-toplev" "\ -*Verify the signature in the current MH message." t nil) - -(autoload 'mc-mh-snarf-keys "mc-toplev" nil t nil) - -;;;*** - -;;;### (autoloads (mh-letter-mode mh-smail-other-window mh-smail-batch mh-smail) "mh-comp" "mh-e/mh-comp.el" (12657 40619)) -;;; Generated autoloads from mh-e/mh-comp.el - -(autoload 'mh-smail "mh-comp" "\ -Compose and send mail with the MH mail system. -This function is an entry point to mh-e, the Emacs front end -to the MH mail system. - -See documentation of `\\[mh-send]' for more details on composing mail." t nil) - -(autoload 'mh-smail-batch "mh-comp" "\ -Set up a mail composition draft with the MH mail system. -This function is an entry point to mh-e, the Emacs front end -to the MH mail system. This function does not prompt the user -for any header fields, and thus is suitable for use by programs -that want to create a mail buffer. -Users should use `\\[mh-smail]' to compose mail." nil nil) - -(autoload 'mh-smail-other-window "mh-comp" "\ -Compose and send mail in other window with the MH mail system. -This function is an entry point to mh-e, the Emacs front end -to the MH mail system. - -See documentation of `\\[mh-send]' for more details on composing mail." t nil) - -(autoload 'mh-letter-mode "mh-comp" "\ -Mode for composing letters in mh-e.\\<mh-letter-mode-map> -When you have finished composing, type \\[mh-send-letter] to send the message -using the MH mail handling system. -See the documentation for \\[mh-edit-mhn] for information on composing MIME -messages. - -\\{mh-letter-mode-map} - -Variables controlling this mode (defaults in parentheses): - - mh-delete-yanked-msg-window (nil) - If non-nil, \\[mh-yank-cur-msg] will delete any windows displaying - the yanked message. - - mh-yank-from-start-of-msg (t) - If non-nil, \\[mh-yank-cur-msg] will include the entire message. - If `body', just yank the body (no header). - If nil, only the portion of the message following the point will be yanked. - If there is a region, this variable is ignored. - - mh-ins-buf-prefix (\"> \") - String to insert before each non-blank line of a message as it is - inserted in a draft letter. - - mh-signature-file-name (\"~/.signature\") - File to be inserted into message by \\[mh-insert-signature]. - -Upon invoking mh-letter-mode, text-mode-hook and mh-letter-mode-hook are -invoked with no args, if those values are non-nil." t nil) - -;;;*** - -;;;### (autoloads (mh-version mh-rmail) "mh-e" "mh-e/mh-e.el" (12747 30151)) -;;; Generated autoloads from mh-e/mh-e.el - -(autoload 'mh-rmail "mh-e" "\ -Inc(orporate) new mail with MH, or, with arg, scan an MH mail folder. -This function is an entry point to mh-e, the Emacs front end -to the MH mail system." t nil) - -(autoload 'mh-version "mh-e" "\ -Display version information about mh-e and the MH mail handling system." t nil) - -;;;*** - -;;;### (autoloads nil "mh-funcs" "mh-e/mh-funcs.el" (12657 40621)) -;;; Generated autoloads from mh-e/mh-funcs.el - -;;;### (autoloads nil "mh-mime" "mh-e/mh-mime.el" (12657 40622)) -;;; Generated autoloads from mh-e/mh-mime.el - -(defvar mh-mime-content-types '(("text/plain") ("text/richtext") ("multipart/mixed") ("multipart/alternative") ("multipart/digest") ("multipart/parallel") ("message/rfc822") ("message/partial") ("message/external-body") ("application/octet-stream") ("application/postscript") ("image/jpeg") ("image/gif") ("audio/basic") ("video/mpeg")) "\ -Legal MIME content types. See documentation for \\[mh-edit-mhn].") - -;;;*** - -;;;### (autoloads nil "mh-pick" "mh-e/mh-pick.el" (12657 40622)) -;;; Generated autoloads from mh-e/mh-pick.el - -;;;*** - -;;;### (autoloads nil "mh-seq" "mh-e/mh-seq.el" (12657 40624)) -;;; Generated autoloads from mh-e/mh-seq.el - -;;;### (autoloads nil "mh-utils" "mh-e/mh-utils.el" (12657 40625)) -;;; Generated autoloads from mh-e/mh-utils.el - -(put 'mh-progs 'risky-local-variable t) - -(put 'mh-lib 'risky-local-variable t) - -;;;*** - -;;;### (autoloads nil "abbrev" "modes/abbrev.el" (12637 31044)) -;;; Generated autoloads from modes/abbrev.el - -;;;### (autoloads (ada-make-filename-from-adaname ada-mode) "ada-mode" "modes/ada-mode.el" (12559 35052)) -;;; Generated autoloads from modes/ada-mode.el - -(autoload 'ada-mode "ada-mode" "\ -Ada Mode is the major mode for editing Ada code. - -Bindings are as follows: (Note: 'LFD' is control-j.) - - Indent line '\\[ada-tab]' - Indent line, insert newline and indent the new line. '\\[newline-and-indent]' - - Re-format the parameter-list point is in '\\[ada-format-paramlist]' - Indent all lines in region '\\[ada-indent-region]' - Call external pretty printer program '\\[ada-call-pretty-printer]' - - Adjust case of identifiers and keywords in region '\\[ada-adjust-case-region]' - Adjust case of identifiers and keywords in buffer '\\[ada-adjust-case-buffer]' - - Call EXTERNAL pretty printer (if you have one) '\\[ada-call-pretty-printer]' - - Fill comment paragraph '\\[ada-fill-comment-paragraph]' - Fill comment paragraph and justify each line '\\[ada-fill-comment-paragraph-justify]' - Fill comment paragraph, justify and append postfix '\\[ada-fill-comment-paragraph-postfix]' - - Next func/proc/task '\\[ada-next-procedure]' Previous func/proc/task '\\[ada-previous-procedure]' - Next package '\\[ada-next-package]' Previous package '\\[ada-previous-package]' - - Goto matching start of current 'end ...;' '\\[ada-move-to-start]' - Goto end of current block '\\[ada-move-to-end]' - -Comments are handled using standard GNU Emacs conventions, including: - Start a comment '\\[indent-for-comment]' - Comment region '\\[comment-region]' - Uncomment region '\\[ada-uncomment-region]' - Continue comment on next line '\\[indent-new-comment-line]' - -If you use imenu.el: - Display index-menu of functions & procedures '\\[imenu]' - -If you use find-file.el: - Switch to other file (Body <-> Spec) '\\[ff-find-other-file]' - or '\\[ff-mouse-find-other-file] - Switch to other file in other window '\\[ada-ff-other-window]' - or '\\[ff-mouse-find-other-file-other-window] - If you use this function in a spec and no body is available, it gets created - with body stubs. - -If you use ada-xref.el: - Goto declaration: '\\[ada-point-and-xref]' on the identifier - or '\\[ada-goto-declaration]' with point on the identifier - Complete identifier: '\\[ada-complete-identifier]' - Execute Gnatf: '\\[ada-gnatf-current]'" t nil) - -(autoload 'ada-make-filename-from-adaname "ada-mode" "\ -determine the filename of a package/procedure from its own Ada name." t nil) - -;;;*** - -;;;### (autoloads (archive-mode) "arc-mode" "modes/arc-mode.el" (12559 35053)) -;;; Generated autoloads from modes/arc-mode.el - -(autoload 'archive-mode "arc-mode" "\ -Major mode for viewing an archive file in a dired-like way. -You can move around using the usual cursor motion commands. -Letters no longer insert themselves. -Type `e' to pull a file out of the archive and into its own buffer; -or click mouse-2 on the file's line in the archive mode buffer. - -If you edit a sub-file of this archive (as with the `e' command) and -save it, the contents of that buffer will be saved back into the -archive. - -\\{archive-mode-map}" nil nil) - -;;;*** - -;;;### (autoloads (asm-mode) "asm-mode" "modes/asm-mode.el" (12554 53340)) -;;; Generated autoloads from modes/asm-mode.el - -(autoload 'asm-mode "asm-mode" "\ -Major mode for editing typical assembler code. -Features a private abbrev table and the following bindings: - -\\[asm-colon] outdent a preceding label, tab to next tab stop. -\\[tab-to-tab-stop] tab to next tab stop. -\\[asm-newline] newline, then tab to next tab stop. -\\[asm-comment] smart placement of assembler comments. - -The character used for making comments is set by the variable -`asm-comment-char' (which defaults to `?;'). - -Alternatively, you may set this variable in `asm-mode-set-comment-hook', -which is called near the beginning of mode initialization. - -Turning on Asm mode runs the hook `asm-mode-hook' at the end of initialization. - -Special commands:\\{asm-mode-map} -" t nil) - -;;;*** - -;;;### (autoloads nil "auto-show" "modes/auto-show.el" (12713 64124)) -;;; Generated autoloads from modes/auto-show.el - -;;;### (autoloads (awk-mode) "awk-mode" "modes/awk-mode.el" (12559 34537)) -;;; Generated autoloads from modes/awk-mode.el - -(autoload 'awk-mode "awk-mode" "\ -Major mode for editing AWK code. -This is much like C mode except for the syntax of comments. It uses -the same keymap as C mode and has the same variables for customizing -indentation. It has its own abbrev table and its own syntax table. - -Turning on AWK mode calls the value of the variable `awk-mode-hook' -with no args, if that value is non-nil." t nil) - -;;;*** - -;;;### (autoloads nil "bib-mode" "modes/bib-mode.el" (12559 35043)) -;;; Generated autoloads from modes/bib-mode.el - -;;;### (autoloads (bibtex-mode) "bibtex" "modes/bibtex.el" (12147 26420)) -;;; Generated autoloads from modes/bibtex.el - -(autoload 'bibtex-mode "bibtex" "\ -Major mode for editing bibtex files. - -\\{bibtex-mode-map} - -A command such as \\[bibtex-Book] will outline the fields for a BibTeX book entry. - -The optional fields start with the string OPT, and thus ignored by BibTeX. -The OPT string may be removed from a field with \\[bibtex-remove-OPT]. -\\[bibtex-kill-optional-field] kills the current optional field entirely. -\\[bibtex-remove-double-quotes] removes the double-quotes around the text of -the current field. \\[bibtex-empty-field] replaces the text of the current -field with the default \"\". - -The command \\[bibtex-clean-entry] cleans the current entry, i.e. (i) removes -double-quotes from entirely numerical fields, (ii) removes OPT from all -non-empty optional fields, (iii) removes all empty optional fields, and (iv) -checks that no non-optional fields are empty. - -Use \\[bibtex-find-text] to position the dot at the end of the current field. -Use \\[bibtex-next-field] to move to end of the next field. - -The following may be of interest as well: - - Functions: - find-bibtex-duplicates - find-bibtex-entry-location - hide-bibtex-entry-bodies - sort-bibtex-entries - validate-bibtex-buffer - - Variables: - bibtex-clean-entry-zap-empty-opts - bibtex-entry-field-alist - bibtex-include-OPTannote - bibtex-include-OPTcrossref - bibtex-include-OPTkey - bibtex-maintain-sorted-entries - bibtex-mode-user-optional-fields - -Fields: - address - Publisher's address - annote - Long annotation used for annotated bibliographies (begins sentence) - author - Name(s) of author(s), in BibTeX name format - booktitle - Book title when the thing being referenced isn't the whole book. - For book entries, the title field should be used instead. - chapter - Chapter number - crossref - The database key of the entry being cross referenced. - edition - Edition of a book (e.g., \"second\") - editor - Name(s) of editor(s), in BibTeX name format. - If there is also an author field, then the editor field should be - for the book or collection that the work appears in - howpublished - How something strange has been published (begins sentence) - institution - Sponsoring institution - journal - Journal name (macros are provided for many) - key - Alphabetizing and labeling key (needed when no author or editor) - month - Month (macros are provided) - note - To help the reader find a reference (begins sentence) - number - Number of a journal or technical report - organization - Organization (sponsoring a conference) - pages - Page number or numbers (use `--' to separate a range) - publisher - Publisher name - school - School name (for theses) - series - The name of a series or set of books. - An individual book will will also have it's own title - title - The title of the thing being referenced - type - Type of a technical report (e.g., \"Research Note\") to be used - instead of the default \"Technical Report\" - volume - Volume of a journal or multivolume work - year - Year---should contain only numerals ---------------------------------------------------------- -Entry to this mode calls the value of bibtex-mode-hook if that value is -non-nil." t nil) - -;;;*** - -;;;### (autoloads nil "c-comment" "modes/c-comment.el" (12689 65199)) -;;; Generated autoloads from modes/c-comment.el - -;;;### (autoloads nil "c-fill" "modes/c-fill.el" (12559 35044)) -;;; Generated autoloads from modes/c-fill.el - -;;;*** - -;;;### (autoloads nil "c-style" "modes/c-style.el" (12559 35045)) -;;; Generated autoloads from modes/c-style.el - -;;;*** - -;;;### (autoloads nil "cc-compat" "modes/cc-compat.el" (12559 35048)) -;;; Generated autoloads from modes/cc-compat.el - -;;;*** - -;;;### (autoloads nil "cc-guess" "modes/cc-guess.el" (12559 35050)) -;;; Generated autoloads from modes/cc-guess.el - -;;;*** - -;;;### (autoloads nil "cc-lobotomy" "modes/cc-lobotomy.el" (12559 35048)) -;;; Generated autoloads from modes/cc-lobotomy.el - -;;;*** - -;;;### (autoloads nil "cc-mode" "modes/cc-mode.el" (12740 25201)) -;;; Generated autoloads from modes/cc-mode.el - -;;;### (autoloads (common-lisp-indent-function) "cl-indent" "modes/cl-indent.el" (12147 25404)) -;;; Generated autoloads from modes/cl-indent.el - -(autoload 'common-lisp-indent-function "cl-indent" nil nil nil) - -;;;*** - -;;;### (autoloads (c-macro-expand) "cmacexp" "modes/cmacexp.el" (12546 37587)) -;;; Generated autoloads from modes/cmacexp.el - -(autoload 'c-macro-expand "cmacexp" "\ -Expand C macros in the region, using the C preprocessor. -Normally display output in temp buffer, but -prefix arg means replace the region with it. - -`c-macro-preprocessor' specifies the preprocessor to use. -Prompt for arguments to the preprocessor (e.g. `-DDEBUG -I ./include') -if the user option `c-macro-prompt-flag' is non-nil. - -Noninteractive args are START, END, SUBST. -For use inside Lisp programs, see also `c-macro-expansion'." t nil) - -;;;*** - -;;;### (autoloads nil "cperl-mode" "modes/cperl-mode.el" (12666 32995)) -;;; Generated autoloads from modes/cperl-mode.el - -;;;### (autoloads (enriched-decode enriched-encode enriched-mode) "enriched" "modes/enriched.el" (12648 4995)) -;;; Generated autoloads from modes/enriched.el - -(autoload 'enriched-mode "enriched" "\ -Minor mode for editing text/enriched files. -These are files with embedded formatting information in the MIME standard -text/enriched format. -Turning the mode on runs `enriched-mode-hooks'. - -More information about enriched-mode is available in the file -etc/enriched.doc in the Emacs distribution directory. - -Commands: - -\\<enriched-mode-map>\\{enriched-mode-map}" t nil) - -(autoload 'enriched-encode "enriched" nil nil nil) - -(autoload 'enriched-decode "enriched" nil nil nil) - -;;;*** - -;;;### (autoloads (f90-mode) "f90" "modes/f90.el" (12675 57058)) -;;; Generated autoloads from modes/f90.el - -(autoload 'f90-mode "f90" "\ -Major mode for editing Fortran 90 code in free format. - -\\[f90-indent-new-line] corrects current indentation and creates new indented line. -\\[f90-indent-line] indents the current line correctly. -\\[f90-indent-subprogram] indents the current subprogram. - -Type `? or `\\[help-command] to display a list of built-in abbrevs for F90 keywords. - -Key definitions: -\\{f90-mode-map} - -Variables controlling indentation style and extra features: - - f90-do-indent - Extra indentation within do blocks. (default 3) - f90-if-indent - Extra indentation within if/select case/where/forall blocks. (default 3) - f90-type-indent - Extra indentation within type/interface/block-data blocks. (default 3) - f90-program-indent - Extra indentation within program/module/subroutine/function blocks. - (default 2) - f90-continuation-indent - Extra indentation applied to continuation lines. (default 5) - f90-comment-region - String inserted by \\[f90-comment-region] at start of each line in - region. (default \"!!!$\") - f90-indented-comment-re - Regexp determining the type of comment to be intended like code. - (default \"!\") - f90-directive-comment-re - Regexp of comment-like directive like \"!HPF\\\\$\", not to be indented. - (default \"!hpf\\\\$\") - f90-break-delimiters - Regexp holding list of delimiters at which lines may be broken. - (default \"[-+*/><=,% \\t]\") - f90-break-before-delimiters - Non-nil causes `f90-do-auto-fill' to break lines before delimiters. - (default t) - f90-beginning-ampersand - Automatic insertion of & at beginning of continuation lines. (default t) - f90-smart-end - From an END statement, check and fill the end using matching block start. - Allowed values are 'blink, 'no-blink, and nil, which determine - whether to blink the matching beginning.) (default 'blink) - f90-auto-keyword-case - Automatic change of case of keywords. (default nil) - The possibilities are 'downcase-word, 'upcase-word, 'capitalize-word. - f90-leave-line-no - Do not left-justify line numbers. (default nil) - f90-startup-message - Set to nil to inhibit message first time F90 mode is used. (default t) - f90-keywords - List of keywords used for highlighting/upcase-keywords etc. - -Turning on F90 mode calls the value of the variable `f90-mode-hook' -with no args, if that value is non-nil." t nil) - -;;;*** - -;;;### (autoloads (follow-delete-other-windows-and-split follow-mode turn-off-follow-mode turn-on-follow-mode) "follow" "modes/follow.el" (12720 34136)) -;;; Generated autoloads from modes/follow.el - -(add-minor-mode 'follow-mode nil 'follow-mode-map) - -(autoload 'turn-on-follow-mode "follow" "\ -Turn on Follow mode. Please see the function `follow-mode'." t nil) - -(autoload 'turn-off-follow-mode "follow" "\ -Turn off Follow mode. Please see the function `follow-mode'." t nil) - -(autoload 'follow-mode "follow" "\ -Minor mode which combines windows into one tall virtual window. - -The feeling of a \"virtual window\" has been accomplished by the use -of two major techniques: - -* The windows always displays adjacent sections of the buffer. - This means that whenever one window is moved, all the - others will follow. (Hence the name Follow Mode.) - -* Should the point (cursor) end up outside a window, another - window displaying that point is selected, if possible. This - makes it possible to walk between windows using normal cursor - movement commands. - -Follow mode comes to its prime when used on a large screen and two -side-by-side window are used. The user can, with the help of Follow -mode, use two full-height windows as though they would have been -one. Imagine yourself editing a large function, or section of text, -and beeing able to use 144 lines instead of the normal 72... (your -mileage may vary). - -To split one large window into two side-by-side windows, the commands -`\\[split-window-horizontally]' or `M-x follow-delete-other-windows-and-split' can be used. - -Only windows displayed in the same frame follow each-other. - -If the variable `follow-intercept-processes' is non-nil, Follow mode -will listen to the output of processes and redisplay accordingly. -\(This is the default.) - -When Follow mode is switched on, the hook `follow-mode-hook' -is called. When turned off, `follow-mode-off-hook' is called. - -Keys specific to Follow mode: -\\{follow-mode-map}" t nil) - -(autoload 'follow-delete-other-windows-and-split "follow" "\ -Create two side by side windows and enter Follow Mode. - -Execute this command to display as much as possible of the text -in the selected window. All other windows, in the current -frame, are deleted and the selected window is split in two -side-by-side windows. Follow Mode is activated, hence the -two windows always will display two successive pages. -\(If one window is moved, the other one will follow.) - -If ARG is positive, the leftmost window is selected. If it negative, -the rightmost is selected. If ARG is nil, the leftmost window is -selected if the original window is the first one in the frame. - -To bind this command to a hotkey, place the following line -in your `~/.emacs' file, replacing [f7] by your favourite key: - (global-set-key [f7] 'follow-delete-other-windows-and-split)" t nil) - -;;;*** - -;;;### (autoloads nil "fortran-misc" "modes/fortran-misc.el" (11903 15745)) -;;; Generated autoloads from modes/fortran-misc.el - -;;;### (autoloads (fortran-mode) "fortran" "modes/fortran.el" (12554 53334)) -;;; Generated autoloads from modes/fortran.el - -(defvar fortran-tab-mode-default nil "\ -*Default tabbing/carriage control style for empty files in Fortran mode. -A value of t specifies tab-digit style of continuation control. -A value of nil specifies that continuation lines are marked -with a character in column 6.") - -(autoload 'fortran-mode "fortran" "\ -Major mode for editing Fortran code. -\\[fortran-indent-line] indents the current Fortran line correctly. -DO statements must not share a common CONTINUE. - -Type ;? or ;\\[help-command] to display a list of built-in abbrevs for Fortran keywords. - -Key definitions: -\\{fortran-mode-map} - -Variables controlling indentation style and extra features: - - comment-start - Normally nil in Fortran mode. If you want to use comments - starting with `!', set this to the string \"!\". - fortran-do-indent - Extra indentation within do blocks. (default 3) - fortran-if-indent - Extra indentation within if blocks. (default 3) - fortran-structure-indent - Extra indentation within structure, union, map and interface blocks. - (default 3) - fortran-continuation-indent - Extra indentation applied to continuation statements. (default 5) - fortran-comment-line-extra-indent - Amount of extra indentation for text within full-line comments. (default 0) - fortran-comment-indent-style - nil means don't change indentation of text in full-line comments, - fixed means indent that text at `fortran-comment-line-extra-indent' beyond - the value of `fortran-minimum-statement-indent-fixed' (for fixed - format continuation style) or `fortran-minimum-statement-indent-tab' - (for TAB format continuation style). - relative means indent at `fortran-comment-line-extra-indent' beyond the - indentation for a line of code. - (default 'fixed) - fortran-comment-indent-char - Single-character string to be inserted instead of space for - full-line comment indentation. (default \" \") - fortran-minimum-statement-indent-fixed - Minimum indentation for Fortran statements in fixed format mode. (def.6) - fortran-minimum-statement-indent-tab - Minimum indentation for Fortran statements in TAB format mode. (default 9) - fortran-line-number-indent - Maximum indentation for line numbers. A line number will get - less than this much indentation if necessary to avoid reaching - column 5. (default 1) - fortran-check-all-num-for-matching-do - Non-nil causes all numbered lines to be treated as possible \"continue\" - statements. (default nil) - fortran-blink-matching-if - Non-nil causes \\[fortran-indent-line] on an ENDIF statement to blink on - matching IF. Also, from an ENDDO statement, blink on matching DO [WHILE] - statement. (default nil) - fortran-continuation-string - Single-character string to be inserted in column 5 of a continuation - line. (default \"$\") - fortran-comment-region - String inserted by \\[fortran-comment-region] at start of each line in - region. (default \"c$$$\") - fortran-electric-line-number - Non-nil causes line number digits to be moved to the correct column - as typed. (default t) - fortran-break-before-delimiters - Non-nil causes `fortran-fill' breaks lines before delimiters. - (default t) - fortran-startup-message - Set to nil to inhibit message first time Fortran mode is used. - -Turning on Fortran mode calls the value of the variable `fortran-mode-hook' -with no args, if that value is non-nil." t nil) - -;;;*** - -;;;### (autoloads nil "hideif" "modes/hideif.el" (12637 41289)) -;;; Generated autoloads from modes/hideif.el - -(add-minor-mode 'hide-ifdef-mode " Ifdef") - -;;;*** - -;;;### (autoloads (hs-minor-mode hs-hide-block hs-hide-all) "hideshow" "modes/hideshow.el" (12648 4910)) -;;; Generated autoloads from modes/hideshow.el - -(defvar hs-minor-mode nil "\ -Non-nil if using hideshow mode as a minor mode of some other mode. -Use the command `hs-minor-mode' to toggle this variable.") - -(autoload 'hs-hide-all "hideshow" "\ -Hides all top-level blocks, displaying only first and last lines. -When done, point is repositioned at the beginning of the line, and -hs-hide-hooks is called. See documentation for `run-hooks'." t nil) - -(autoload 'hs-hide-block "hideshow" "\ -Selects a block and hides it. With prefix arg, reposition at end. -Block is defined as a sexp for lispish modes, mode-specific otherwise. -Comments are blocks, too. Upon completion, point is at repositioned and -hs-hide-hooks is called. See documentation for `run-hooks'." t nil) - -(autoload 'hs-minor-mode "hideshow" "\ -Toggle hideshow minor mode. -With ARG, turn hideshow minor mode on if ARG is positive, off otherwise. -When hideshow minor mode is on, the menu bar is augmented with hideshow -commands and the hideshow commands are enabled. The variables - - selective-display - selective-display-ellipses - -are set to t. Lastly, the hooks set in hs-minor-mode-hook are called. -See documentation for `run-hooks'. - -Turning hideshow minor mode off reverts the menu bar and the -variables to default values and disables the hideshow commands." t nil) - -(add-minor-mode 'hs-minor-mode " hs" 'hs-minor-mode-map) - -;;;*** - -;;;### (autoloads (icon-mode) "icon" "modes/icon.el" (12559 35046)) -;;; Generated autoloads from modes/icon.el - -(autoload 'icon-mode "icon" "\ -Major mode for editing Icon code. -Expression and list commands understand all Icon brackets. -Tab indents for Icon code. -Paragraphs are separated by blank lines only. -Delete converts tabs to spaces as it moves back. -\\{icon-mode-map} -Variables controlling indentation style: - icon-tab-always-indent - Non-nil means TAB in Icon mode should always reindent the current line, - regardless of where in the line point is when the TAB command is used. - icon-auto-newline - Non-nil means automatically newline before and after braces - inserted in Icon code. - icon-indent-level - Indentation of Icon statements within surrounding block. - The surrounding block's indentation is the indentation - of the line on which the open-brace appears. - icon-continued-statement-offset - Extra indentation given to a substatement, such as the - then-clause of an if or body of a while. - icon-continued-brace-offset - Extra indentation given to a brace that starts a substatement. - This is in addition to `icon-continued-statement-offset'. - icon-brace-offset - Extra indentation for line if it starts with an open brace. - icon-brace-imaginary-offset - An open brace following other text is treated as if it were - this far to the right of the start of its line. - -Turning on Icon mode calls the value of the variable `icon-mode-hook' -with no args, if that value is non-nil." t nil) - -;;;*** - -;;;### (autoloads (ksh-mode) "ksh-mode" "modes/ksh-mode.el" (12714 11706)) -;;; Generated autoloads from modes/ksh-mode.el - -(autoload 'ksh-mode "ksh-mode" "\ -ksh-mode 2.6 - Major mode for editing (Bourne, Korn or Bourne again) -shell scripts. -Special key bindings and commands: -\\{ksh-mode-map} -Variables controlling indentation style: -ksh-indent - Indentation of ksh statements with respect to containing block. - Default value is 2. -ksh-case-indent - Additional indentation for statements under case items. - Default value is nil which will align the statements one position - past the \")\" of the pattern. -ksh-case-item-offset - Additional indentation for case items within a case statement. - Default value is 2. -ksh-group-offset - Additional indentation for keywords \"do\" and \"then\". - Default value is -2. -ksh-brace-offset - Additional indentation of \"{\" under functions or brace groupings. - Default value is 0. -ksh-multiline-offset - Additional indentation of line that is preceded of a line ending with a - \\ to make it continue on next line. -ksh-tab-always-indent - Controls the operation of the TAB key. If t (the default), always - reindent the current line. If nil, indent the current line only if - point is at the left margin or in the line's indentation; otherwise - insert a tab. -ksh-match-and-tell - If non-nil echo in the minibuffer the matching compound command - for the \"done\", \"}\", \"fi\", or \"esac\". Default value is t. - -ksh-align-to-keyword - Controls whether nested constructs align from the keyword or - the current indentation. If non-nil, indentation will be relative to - the column the keyword starts. If nil, indentation will be relative to - the current indentation of the line the keyword is on. - The default value is non-nil. - -ksh-comment-regexp - Regular expression used to recognize comments. Customize to support - ksh-like languages. Default value is \"\\s *#\". - -Style Guide. - By setting - (setq ksh-indent default-tab-width) - (setq ksh-group-offset 0) - - The following style is obtained: - - if [ -z $foo ] - then - bar # <-- ksh-group-offset is additive to ksh-indent - foo - fi - - By setting - (setq ksh-indent default-tab-width) - (setq ksh-group-offset (- 0 ksh-indent)) - - The following style is obtained: - - if [ -z $foo ] - then - bar - foo - fi - - By setting - (setq ksh-case-item-offset 1) - (setq ksh-case-indent nil) - - The following style is obtained: - - case x in * - foo) bar # <-- ksh-case-item-offset - baz;; # <-- ksh-case-indent aligns with \")\" - foobar) foo - bar;; - esac - - By setting - (setq ksh-case-item-offset 1) - (setq ksh-case-indent 6) - - The following style is obtained: - - case x in * - foo) bar # <-- ksh-case-item-offset - baz;; # <-- ksh-case-indent - foobar) foo - bar;; - esac - - -Installation: - Put ksh-mode.el in some directory in your load-path. - Put the following forms in your .emacs file. - - (setq auto-mode-alist - (append auto-mode-alist - (list - '(\"\\\\.sh$\" . ksh-mode) - '(\"\\\\.ksh$\" . ksh-mode) - '(\"\\\\.bashrc\" . ksh-mode) - '(\"\\\\..*profile\" . ksh-mode)))) - - (setq ksh-mode-hook - (function (lambda () - (font-lock-mode 1) ;; font-lock the buffer - (setq ksh-indent 8) - (setq ksh-group-offset -8)) - (setq ksh-brace-offset -8) - (setq ksh-tab-always-indent t) - (setq ksh-match-and-tell t) - (setq ksh-align-to-keyword t) ;; Turn on keyword alignment - )))" t nil) - -;;;*** - -;;;### (autoloads nil "lisp-mnt" "modes/lisp-mnt.el" (12546 37598)) -;;; Generated autoloads from modes/lisp-mnt.el - -;;;*** - -;;;### (autoloads nil "lisp-mode" "modes/lisp-mode.el" (12728 13787)) -;;; Generated autoloads from modes/lisp-mode.el - -;;;*** - -;;;### (autoloads nil "list-mode" "modes/list-mode.el" (12740 25201)) -;;; Generated autoloads from modes/list-mode.el - -;;;### (autoloads (makefile-mode) "make-mode" "modes/make-mode.el" (12554 51310)) -;;; Generated autoloads from modes/make-mode.el - -(autoload 'makefile-mode "make-mode" "\ -Major mode for editing Makefiles. -This function ends by invoking the function(s) `makefile-mode-hook'. - -\\{makefile-mode-map} - -In the browser, use the following keys: - -\\{makefile-browser-map} - -Makefile mode can be configured by modifying the following variables: - -makefile-browser-buffer-name: - Name of the macro- and target browser buffer. - -makefile-target-colon: - The string that gets appended to all target names - inserted by `makefile-insert-target'. - \":\" or \"::\" are quite common values. - -makefile-macro-assign: - The string that gets appended to all macro names - inserted by `makefile-insert-macro'. - The normal value should be \" = \", since this is what - standard make expects. However, newer makes such as dmake - allow a larger variety of different macro assignments, so you - might prefer to use \" += \" or \" := \" . - -makefile-tab-after-target-colon: - If you want a TAB (instead of a space) to be appended after the - target colon, then set this to a non-nil value. - -makefile-browser-leftmost-column: - Number of blanks to the left of the browser selection mark. - -makefile-browser-cursor-column: - Column in which the cursor is positioned when it moves - up or down in the browser. - -makefile-browser-selected-mark: - String used to mark selected entries in the browser. - -makefile-browser-unselected-mark: - String used to mark unselected entries in the browser. - -makefile-browser-auto-advance-after-selection-p: - If this variable is set to a non-nil value the cursor - will automagically advance to the next line after an item - has been selected in the browser. - -makefile-pickup-everything-picks-up-filenames-p: - If this variable is set to a non-nil value then - `makefile-pickup-everything' also picks up filenames as targets - (i.e. it calls `makefile-find-filenames-as-targets'), otherwise - filenames are omitted. - -makefile-cleanup-continuations-p: - If this variable is set to a non-nil value then makefile-mode - will assure that no line in the file ends with a backslash - (the continuation character) followed by any whitespace. - This is done by silently removing the trailing whitespace, leaving - the backslash itself intact. - IMPORTANT: Please note that enabling this option causes makefile-mode - to MODIFY A FILE WITHOUT YOUR CONFIRMATION when \"it seems necessary\". - -makefile-browser-hook: - A function or list of functions to be called just before the - browser is entered. This is executed in the makefile buffer. - -makefile-special-targets-list: - List of special targets. You will be offered to complete - on one of those in the minibuffer whenever you enter a `.'. - at the beginning of a line in Makefile mode." t nil) - -;;;*** - -;;;### (autoloads nil "old-c++-mode" "modes/old-c++-mode.el" (12211 28119)) -;;; Generated autoloads from modes/old-c++-mode.el - -;;;*** - -;;;### (autoloads nil "old-c-mode" "modes/old-c-mode.el" (12546 37597)) -;;; Generated autoloads from modes/old-c-mode.el - -;;;### (autoloads (python-mode) "python-mode" "modes/python-mode.el" (12802 32945)) -;;; Generated autoloads from modes/python-mode.el - -(eval-when-compile (condition-case nil (progn (require 'cl) (require 'imenu)) (error nil))) - -(autoload 'python-mode "python-mode" "\ -Major mode for editing Python files. -To submit a problem report, enter `\\[py-submit-bug-report]' from a -`python-mode' buffer. Do `\\[py-describe-mode]' for detailed -documentation. To see what version of `python-mode' you are running, -enter `\\[py-version]'. - -This mode knows about Python indentation, tokens, comments and -continuation lines. Paragraphs are separated by blank lines only. - -COMMANDS -\\{py-mode-map} -VARIABLES - -py-indent-offset indentation increment -py-block-comment-prefix comment string used by comment-region -py-python-command shell command to invoke Python interpreter -py-scroll-process-buffer always scroll Python process buffer -py-temp-directory directory used for temp files (if needed) -py-beep-if-tab-change ring the bell if tab-width is changed" t nil) - -;;;*** - -;;;### (autoloads (rexx-mode) "rexx-mode" "modes/rexx-mode.el" (12554 53343)) -;;; Generated autoloads from modes/rexx-mode.el - -(autoload 'rexx-mode "rexx-mode" "\ -Major mode for editing REXX code. -\\{rexx-mode-map} - -Variables controlling indentation style: - rexx-indent - The basic indentation for do-blocks. - rexx-end-indent - The relative offset of the \"end\" statement. 0 places it in the - same column as the statements of the block. Setting it to the same - value as rexx-indent places the \"end\" under the do-line. - rexx-cont-indent - The indention for lines following \"then\", \"else\" and \",\" - (continued) lines. - rexx-tab-always-indent - Non-nil means TAB in REXX mode should always reindent the current - line, regardless of where in the line the point is when the TAB - command is used. - -If you have set rexx-end-indent to a nonzero value, you probably want to -remap RETURN to rexx-indent-newline-indent. It makes sure that lines -indents correctly when you press RETURN. - -An extensive abbrevation table consisting of all the keywords of REXX are -supplied. Expanded keywords are converted into upper case making it -easier to distinguish them. To use this feature the buffer must be in -abbrev-mode. (See example below.) - -Turning on REXX mode calls the value of the variable rexx-mode-hook with -no args, if that value is non-nil. - -For example: -\(setq rexx-mode-hook '(lambda () - (setq rexx-indent 4) - (setq rexx-end-indent 4) - (setq rexx-cont-indent 4) - (local-set-key \"\\C-m\" 'rexx-indent-newline-indent) - (abbrev-mode 1) - )) - -will make the END aligned with the DO/SELECT. It will indent blocks and -IF-statenents four steps and make sure that the END jumps into the -correct position when RETURN is pressed. Finaly it will use the abbrev -table to convert all REXX keywords into upper case." t nil) - -;;;*** - -;;;### (autoloads (define-mail-alias build-mail-aliases mail-aliases-setup) "mail-abbrevs" "modes/mail-abbrevs.el" (12399 59968)) -;;; Generated autoloads from modes/mail-abbrevs.el - -(defvar mail-abbrev-mailrc-file nil "\ -Name of file with mail aliases. If nil, ~/.mailrc is used.") - -(defvar mail-aliases nil "\ -Word-abbrev table of mail address aliases. -If this is nil, it means the aliases have not yet been initialized and -should be read from the .mailrc file. (This is distinct from there being -no aliases, which is represented by this being a table with no entries.)") - -(autoload 'mail-aliases-setup "mail-abbrevs" nil nil nil) - -(autoload 'build-mail-aliases "mail-abbrevs" "\ -Read mail aliases from .mailrc and set mail-aliases." nil nil) - -(autoload 'define-mail-alias "mail-abbrevs" "\ -Define NAME as a mail-alias that translates to DEFINITION. -If DEFINITION contains multiple addresses, separate them with commas." t nil) - -;;;*** - -;;;### (autoloads (modula-2-mode) "modula2" "modes/modula2.el" (12078 45202)) -;;; Generated autoloads from modes/modula2.el - -(autoload 'modula-2-mode "modula2" "\ -This is a mode intended to support program development in Modula-2. -All control constructs of Modula-2 can be reached by typing -Control-C followed by the first character of the construct. -\\{m2-mode-map} - Control-c b begin Control-c c case - Control-c d definition Control-c e else - Control-c f for Control-c h header - Control-c i if Control-c m module - Control-c l loop Control-c o or - Control-c p procedure Control-c Control-w with - Control-c r record Control-c s stdio - Control-c t type Control-c u until - Control-c v var Control-c w while - Control-c x export Control-c y import - Control-c { begin-comment Control-c } end-comment - Control-c Control-z suspend-emacs Control-c Control-t toggle - Control-c Control-c compile Control-x ` next-error - Control-c Control-l link - - m2-indent controls the number of spaces for each indentation. - m2-compile-command holds the command to compile a Modula-2 program. - m2-link-command holds the command to link a Modula-2 program." t nil) - -;;;*** - -;;;### (autoloads (electric-nroff-mode nroff-mode) "nroff-mode" "modes/nroff-mode.el" (12648 4909)) -;;; Generated autoloads from modes/nroff-mode.el - -(autoload 'nroff-mode "nroff-mode" "\ -Major mode for editing text intended for nroff to format. -\\{nroff-mode-map} -Turning on Nroff mode runs `text-mode-hook', then `nroff-mode-hook'. -Also, try `nroff-electric-mode', for automatically inserting -closing requests for requests that are used in matched pairs." t nil) - -(autoload 'electric-nroff-mode "nroff-mode" "\ -Toggle `nroff-electric-newline' minor mode. -`nroff-electric-newline' forces Emacs to check for an nroff request at the -beginning of the line, and insert the matching closing request if necessary. -This command toggles that mode (off->on, on->off), with an argument, -turns it on iff arg is positive, otherwise off." t nil) - -(defvar nroff-electric-mode nil "\ -Non-nil if in electric-nroff minor mode.") - -(add-minor-mode 'nroff-electric-mode " Electric" nil nil 'electric-nroff-mode) - -;;;*** - -;;;### (autoloads (outl-mouse-minor-mode outl-mouse-mode) "outl-mouse" "modes/outl-mouse.el" (12235 18865)) -;;; Generated autoloads from modes/outl-mouse.el - -(autoload 'outl-mouse-mode "outl-mouse" "\ -Calls outline-mode, with outl-mouse extensions" t nil) - -(autoload 'outl-mouse-minor-mode "outl-mouse" "\ -Toggles outline-minor-mode, with outl-mouse extensions" t nil) - -;;;*** - -;;;### (autoloads (outline-minor-mode outline-mode) "outline" "modes/outline.el" (12648 4907)) -;;; Generated autoloads from modes/outline.el - -(defvar outline-minor-mode nil "\ -Non-nil if using Outline mode as a minor mode of some other mode.") - -(make-variable-buffer-local 'outline-minor-mode) - -(put 'outline-minor-mode 'permanent-local t) - -(add-minor-mode 'outline-minor-mode " Outl") - -(autoload 'outline-mode "outline" "\ -Set major mode for editing outlines with selective display. -Headings are lines which start with asterisks: one for major headings, -two for subheadings, etc. Lines not starting with asterisks are body lines. - -Body text or subheadings under a heading can be made temporarily -invisible, or visible again. Invisible lines are attached to the end -of the heading, so they move with it, if the line is killed and yanked -back. A heading with text hidden under it is marked with an ellipsis (...). - -Commands:\\<outline-mode-map> -\\[outline-next-visible-heading] outline-next-visible-heading move by visible headings -\\[outline-previous-visible-heading] outline-previous-visible-heading -\\[outline-forward-same-level] outline-forward-same-level similar but skip subheadings -\\[outline-backward-same-level] outline-backward-same-level -\\[outline-up-heading] outline-up-heading move from subheading to heading - -\\[hide-body] make all text invisible (not headings). -\\[show-all] make everything in buffer visible. - -The remaining commands are used when point is on a heading line. -They apply to some of the body or subheadings of that heading. -\\[hide-subtree] hide-subtree make body and subheadings invisible. -\\[show-subtree] show-subtree make body and subheadings visible. -\\[show-children] show-children make direct subheadings visible. - No effect on body, or subheadings 2 or more levels down. - With arg N, affects subheadings N levels down. -\\[hide-entry] make immediately following body invisible. -\\[show-entry] make it visible. -\\[hide-leaves] make body under heading and under its subheadings invisible. - The subheadings remain visible. -\\[show-branches] make all subheadings at all levels visible. - -The variable `outline-regexp' can be changed to control what is a heading. -A line is a heading if `outline-regexp' matches something at the -beginning of the line. The longer the match, the deeper the level. - -Turning on outline mode calls the value of `text-mode-hook' and then of -`outline-mode-hook', if they are non-nil." t nil) - -(autoload 'outline-minor-mode "outline" "\ -Toggle Outline minor mode. -With arg, turn Outline minor mode on if arg is positive, off otherwise. -See the command `outline-mode' for more information on this mode." t nil) - -;;;*** - -;;;### (autoloads (pascal-mode) "pascal" "modes/pascal.el" (12698 34037)) -;;; Generated autoloads from modes/pascal.el - -(autoload 'pascal-mode "pascal" "\ -Major mode for editing Pascal code. \\<pascal-mode-map> -TAB indents for Pascal code. Delete converts tabs to spaces as it moves back. - -\\[pascal-complete-word] completes the word around current point with respect to position in code -\\[pascal-show-completions] shows all possible completions at this point. - -Other useful functions are: - -\\[pascal-mark-defun] - Mark function. -\\[pascal-insert-block] - insert begin ... end; -\\[pascal-star-comment] - insert (* ... *) -\\[pascal-comment-area] - Put marked area in a comment, fixing nested comments. -\\[pascal-uncomment-area] - Uncomment an area commented with \\[pascal-comment-area]. -\\[pascal-beg-of-defun] - Move to beginning of current function. -\\[pascal-end-of-defun] - Move to end of current function. -\\[pascal-goto-defun] - Goto function prompted for in the minibuffer. -\\[pascal-outline] - Enter pascal-outline-mode (see also pascal-outline). - -Variables controlling indentation/edit style: - - pascal-indent-level (default 3) - Indentation of Pascal statements with respect to containing block. - pascal-case-indent (default 2) - Indentation for case statements. - pascal-auto-newline (default nil) - Non-nil means automatically newline after simcolons and the punctation mark - after an end. - pascal-tab-always-indent (default t) - Non-nil means TAB in Pascal mode should always reindent the current line, - regardless of where in the line point is when the TAB command is used. - pascal-auto-endcomments (default t) - Non-nil means a comment { ... } is set after the ends which ends cases and - functions. The name of the function or case will be set between the braces. - pascal-auto-lineup (default t) - List of contexts where auto lineup of :'s or ='s hould be done. - -See also the user variables pascal-type-keywords, pascal-start-keywords and -pascal-separator-keywords. - -Turning on Pascal mode calls the value of the variable pascal-mode-hook with -no args, if that value is non-nil." t nil) - -;;;*** - -;;;### (autoloads (perl-mode) "perl-mode" "modes/perl-mode.el" (12568 8627)) -;;; Generated autoloads from modes/perl-mode.el - -(autoload 'perl-mode "perl-mode" "\ -Major mode for editing Perl code. -Expression and list commands understand all Perl brackets. -Tab indents for Perl code. -Comments are delimited with # ... \\n. -Paragraphs are separated by blank lines only. -Delete converts tabs to spaces as it moves back. -\\{perl-mode-map} -Variables controlling indentation style: - perl-tab-always-indent - Non-nil means TAB in Perl mode should always indent the current line, - regardless of where in the line point is when the TAB command is used. - perl-tab-to-comment - Non-nil means that for lines which don't need indenting, TAB will - either delete an empty comment, indent an existing comment, move - to end-of-line, or if at end-of-line already, create a new comment. - perl-nochange - Lines starting with this regular expression are not auto-indented. - perl-indent-level - Indentation of Perl statements within surrounding block. - The surrounding block's indentation is the indentation - of the line on which the open-brace appears. - perl-continued-statement-offset - Extra indentation given to a substatement, such as the - then-clause of an if or body of a while. - perl-continued-brace-offset - Extra indentation given to a brace that starts a substatement. - This is in addition to `perl-continued-statement-offset'. - perl-brace-offset - Extra indentation for line if it starts with an open brace. - perl-brace-imaginary-offset - An open brace following other text is treated as if it were - this far to the right of the start of its line. - perl-label-offset - Extra indentation for line that is a label. - -Various indentation styles: K&R BSD BLK GNU LW - perl-indent-level 5 8 0 2 4 - perl-continued-statement-offset 5 8 4 2 4 - perl-continued-brace-offset 0 0 0 0 -4 - perl-brace-offset -5 -8 0 0 0 - perl-brace-imaginary-offset 0 0 4 0 0 - perl-label-offset -5 -8 -2 -2 -2 - -Turning on Perl mode runs the normal hook `perl-mode-hook'." t nil) - -;;;*** - -;;;### (autoloads (picture-mode) "picture" "modes/picture.el" (12637 39889)) -;;; Generated autoloads from modes/picture.el - -(autoload 'picture-mode "picture" "\ -Switch to Picture mode, in which a quarter-plane screen model is used. -Printing characters replace instead of inserting themselves with motion -afterwards settable by these commands: - C-c < Move left after insertion. - C-c > Move right after insertion. - C-c ^ Move up after insertion. - C-c . Move down after insertion. - C-c ` Move northwest (nw) after insertion. - C-c ' Move northeast (ne) after insertion. - C-c / Move southwest (sw) after insertion. - C-c \\ Move southeast (se) after insertion. -The current direction is displayed in the modeline. The initial -direction is right. Whitespace is inserted and tabs are changed to -spaces when required by movement. You can move around in the buffer -with these commands: - \\[picture-move-down] Move vertically to SAME column in previous line. - \\[picture-move-up] Move vertically to SAME column in next line. - \\[picture-end-of-line] Move to column following last non-whitespace character. - \\[picture-forward-column] Move right inserting spaces if required. - \\[picture-backward-column] Move left changing tabs to spaces if required. - C-c C-f Move in direction of current picture motion. - C-c C-b Move in opposite direction of current picture motion. - Return Move to beginning of next line. -You can edit tabular text with these commands: - M-Tab Move to column beneath (or at) next interesting character. - `Indents' relative to a previous line. - Tab Move to next stop in tab stop list. - C-c Tab Set tab stops according to context of this line. - With ARG resets tab stops to default (global) value. - See also documentation of variable picture-tab-chars - which defines \"interesting character\". You can manually - change the tab stop list with command \\[edit-tab-stops]. -You can manipulate text with these commands: - C-d Clear (replace) ARG columns after point without moving. - C-c C-d Delete char at point - the command normally assigned to C-d. - \\[picture-backward-clear-column] Clear (replace) ARG columns before point, moving back over them. - \\[picture-clear-line] Clear ARG lines, advancing over them. The cleared - text is saved in the kill ring. - \\[picture-open-line] Open blank line(s) beneath current line. -You can manipulate rectangles with these commands: - C-c C-k Clear (or kill) a rectangle and save it. - C-c C-w Like C-c C-k except rectangle is saved in named register. - C-c C-y Overlay (or insert) currently saved rectangle at point. - C-c C-x Like C-c C-y except rectangle is taken from named register. - \\[copy-rectangle-to-register] Copies a rectangle to a register. - \\[advertised-undo] Can undo effects of rectangle overlay commands - commands if invoked soon enough. -You can return to the previous mode with: - C-c C-c Which also strips trailing whitespace from every line. - Stripping is suppressed by supplying an argument. - -Entry to this mode calls the value of picture-mode-hook if non-nil. - -Note that Picture mode commands will work outside of Picture mode, but -they are not defaultly assigned to keys." t nil) - -(defalias 'edit-picture 'picture-mode) - -;;;*** - -;;;### (autoloads (postscript-mode) "postscript" "modes/postscript.el" (12554 53338)) -;;; Generated autoloads from modes/postscript.el - -(autoload 'postscript-mode "postscript" "\ -Major mode for editing PostScript files. - -\\[ps-execute-buffer] will send the contents of the buffer to the NeWS -server using psh(1). \\[ps-execute-region] sends the current region. -\\[ps-shell] starts an interactive psh(1) window which will be used for -subsequent \\[ps-execute-buffer] or \\[ps-execute-region] commands. - -In this mode, TAB and \\[indent-region] attempt to indent code -based on the position of {}, [], and begin/end pairs. The variable -ps-indent-level controls the amount of indentation used inside -arrays and begin/end pairs. - -\\{ps-mode-map} - -\\[postscript-mode] calls the value of the variable postscript-mode-hook -with no args, if that value is non-nil." t nil) - -;;;*** - -;;;### (autoloads (run-prolog inferior-prolog-mode prolog-mode) "prolog" "modes/prolog.el" (12554 53339)) -;;; Generated autoloads from modes/prolog.el - -(autoload 'prolog-mode "prolog" "\ -Major mode for editing Prolog code for Prologs. -Blank lines and `%%...' separate paragraphs. `%'s start comments. -Commands: -\\{prolog-mode-map} -Entry to this mode calls the value of `prolog-mode-hook' -if that value is non-nil." t nil) - -(autoload 'inferior-prolog-mode "prolog" "\ -Major mode for interacting with an inferior Prolog process. - -The following commands are available: -\\{inferior-prolog-mode-map} - -Entry to this mode calls the value of `prolog-mode-hook' with no arguments, -if that value is non-nil. Likewise with the value of `comint-mode-hook'. -`prolog-mode-hook' is called after `comint-mode-hook'. - -You can send text to the inferior Prolog from other buffers -using the commands `send-region', `send-string' and \\[prolog-consult-region]. - -Commands: -Tab indents for Prolog; with argument, shifts rest - of expression rigidly with the current line. -Paragraphs are separated only by blank lines and '%%'. -'%'s start comments. - -Return at end of buffer sends line as input. -Return not at end copies rest of line to end and sends it. -\\[comint-kill-input] and \\[backward-kill-word] are kill commands, imitating normal Unix input editing. -\\[comint-interrupt-subjob] interrupts the shell or its current subjob if any. -\\[comint-stop-subjob] stops. \\[comint-quit-subjob] sends quit signal." t nil) - -(autoload 'run-prolog "prolog" "\ -Run an inferior Prolog process, input and output via buffer *prolog*." t nil) - -;;;*** - -;;;### (autoloads (resize-minibuffer-mode) "rsz-minibuf" "modes/rsz-minibuf.el" (12546 37599)) -;;; Generated autoloads from modes/rsz-minibuf.el - -(defvar resize-minibuffer-mode nil "\ -*If non-`nil', resize the minibuffer so its entire contents are visible.") - -(defvar resize-minibuffer-window-max-height nil "\ -*Maximum size the minibuffer window is allowed to become. -If less than 1 or not a number, the limit is the height of the frame in -which the active minibuffer window resides.") - -(defvar resize-minibuffer-window-exactly t "\ -*If non-`nil', make minibuffer exactly the size needed to display all its contents. -Otherwise, the minibuffer window can temporarily increase in size but -never get smaller while it is active.") - -(defvar resize-minibuffer-frame nil "\ -*If non-`nil' and the active minibuffer is the sole window in its frame, allow changing the frame height.") - -(defvar resize-minibuffer-frame-max-height nil "\ -*Maximum size the minibuffer frame is allowed to become. -If less than 1 or not a number, there is no limit.") - -(defvar resize-minibuffer-frame-exactly nil "\ -*If non-`nil', make minibuffer frame exactly the size needed to display all its contents. -Otherwise, the minibuffer frame can temporarily increase in size but -never get smaller while it is active.") - -(autoload 'resize-minibuffer-mode "rsz-minibuf" "\ -Enable or disable resize-minibuffer mode. -A negative prefix argument disables this mode. A positive argument or -argument of 0 enables it. - -When this minor mode is enabled, the minibuffer is dynamically resized to -contain the entire region of text put in it as you type. - -The variable `resize-minibuffer-mode' is set to t or nil depending on -whether this mode is active or not. - -The maximum height to which the minibuffer can grow is controlled by the -variable `resize-minibuffer-window-max-height'. - -The variable `resize-minibuffer-window-exactly' determines whether the -minibuffer window should ever be shrunk to make it no larger than needed to -display its contents. - -When using a window system, it is possible for a minibuffer to tbe the sole -window in a frame. Since that window is already its maximum size, the only -way to make more text visible at once is to increase the size of the frame. -The variable `resize-minibuffer-frame' controls whether this should be -done. The variables `resize-minibuffer-frame-max-height' and -`resize-minibuffer-frame-exactly' are analogous to their window -counterparts." t nil) - -;;;*** - -;;;### (autoloads (scheme-mode) "scheme" "modes/scheme.el" (12147 26433)) -;;; Generated autoloads from modes/scheme.el - -(autoload 'scheme-mode "scheme" "\ -Major mode for editing Scheme code. -Editing commands are similar to those of lisp-mode. - -In addition, if an inferior Scheme process is running, some additional -commands will be defined, for evaluating expressions and controlling -the interpreter, and the state of the process will be displayed in the -modeline of all Scheme buffers. The names of commands that interact -with the Scheme process start with \"xscheme-\". For more information -see the documentation for xscheme-interaction-mode. - -Commands: -Delete converts tabs to spaces as it moves back. -Blank lines separate paragraphs. Semicolons start comments. -\\{scheme-mode-map} -Entry to this mode calls the value of scheme-mode-hook -if that value is non-nil." t nil) - -;;;*** - -;;;### (autoloads (scribe-mode) "scribe" "modes/scribe.el" (12078 45205)) -;;; Generated autoloads from modes/scribe.el - -(autoload 'scribe-mode "scribe" "\ -Major mode for editing files of Scribe (a text formatter) source. -Scribe-mode is similar text-mode, with a few extra commands added. -\\{scribe-mode-map} - -Interesting variables: - -scribe-fancy-paragraphs - Non-nil makes Scribe mode use a different style of paragraph separation. - -scribe-electric-quote - Non-nil makes insert of double quote use `` or '' depending on context. - -scribe-electric-parenthesis - Non-nil makes an open-parenthesis char (one of `([<{') - automatically insert its close if typed after an @Command form." t nil) - -;;;*** - -;;;### (autoloads (mail-other-frame mail-other-window mail mail-mode) "sendmail" "modes/sendmail.el" (12686 31726)) -;;; Generated autoloads from modes/sendmail.el - -(defvar mail-from-style 'angles "\ -*Specifies how \"From:\" fields look. - -If `nil', they contain just the return address like: - king@grassland.com -If `parens', they look like: - king@grassland.com (Elvis Parsley) -If `angles', they look like: - Elvis Parsley <king@grassland.com>") - -(defvar mail-self-blind nil "\ -Non-nil means insert BCC to self in messages to be sent. -This is done when the message is initialized, -so you can remove or alter the BCC field to override the default.") - -(defvar mail-interactive nil "\ -Non-nil means when sending a message wait for and display errors. -nil means let mailer mail back a message to report errors.") - -(defvar mail-dir nil "\ -*Default directory for saving messages.") - -(defvar rmail-ignored-headers (purecopy (concat "^\\(" (mapconcat 'identity '("Sender:" "References:" "Return-Path:" "Received:" "[^: \n]*Message-ID:" "Errors-To:" "Path:" "Expires:" "Xref:" "Lines:" "Approved:" "Distribution:" "Content-Length:" "Mime-Version:" "Content-Type:" "Content-Transfer-Encoding:" "X400-Received:" "X400-Originator:" "X400-Mts-Identifier:" "X400-Content-Type:" "Content-Identifier:" "Status:" "Summary-Line:" "X-Attribution:" "Via:" "Sent-Via:" "Mail-From:" "Origin:" "Comments:" "Originator:" "NF-ID:" "NF-From:" "Posting-Version:" "Posted:" "Posted-Date:" "Date-Received:" "Relay-Version:" "Article-I\\.D\\.:" "NNTP-Version:" "NNTP-Posting-Host:" "X-Mailer:" "X-Newsreader:" "News-Software:" "X-Received:" "X-References:" "X-Envelope-To:" "X-VMS-" "Remailed-" "X-Plantation:" "X-Windows:" "X-Pgp-") "\\|") "\\)")) "\ -*Gubbish header fields one would rather not see.") - -(defvar mail-yank-ignored-headers (purecopy (concat rmail-ignored-headers "\\|" "^\\(" (mapconcat 'identity '("Resent-To:" "Resent-By:" "Resent-CC:" "To:" "Subject:" "In-Reply-To:") "\\|") "\\)")) "\ -Delete these headers from old message when it's inserted in a reply.") - -(defvar send-mail-function 'sendmail-send-it "\ -Function to call to send the current buffer as mail. -The headers should be delimited by a line whose contents -match the variable `mail-header-separator'.") - -(defvar mail-header-separator (purecopy "--text follows this line--") "\ -*Line used to separate headers from text in messages being composed.") - -(defvar mail-archive-file-name nil "\ -*Name of file to write all outgoing messages in, or nil for none. -This can be an inbox file or an Rmail file.") - -(defvar mail-default-reply-to nil "\ -*Address to insert as default Reply-to field of outgoing messages. -If nil, it will be initialized from the REPLYTO environment variable -when you first send mail.") - -(defvar mail-alias-file nil "\ -*If non-nil, the name of a file to use instead of `/usr/lib/aliases'. -This file defines aliases to be expanded by the mailer; this is a different -feature from that of defining aliases in `.mailrc' to be expanded in Emacs. -This variable has no effect unless your system uses sendmail as its mailer.") - -(defvar mail-yank-prefix "> " "\ -*Prefix insert on lines of yanked message being replied to. -nil means use indentation.") - -(defvar mail-signature nil "\ -*Text inserted at end of mail buffer when a message is initialized. -If t, it means to insert the contents of the file `mail-signature-file'.") - -(autoload 'mail-mode "sendmail" "\ -Major mode for editing mail to be sent. -Like Text Mode but with these additional commands: -C-c C-s mail-send (send the message) C-c C-c mail-send-and-exit -C-c C-f move to a header field (and create it if there isn't): - C-c C-f C-t move to To: C-c C-f C-s move to Subj: - C-c C-f C-b move to BCC: C-c C-f C-c move to CC: - C-c C-f C-f move to FCC: C-c C-f C-r move to Reply-To: -C-c C-t mail-text (move to beginning of message text). -C-c C-w mail-signature (insert `mail-signature-file' file). -C-c C-y mail-yank-original (insert current message, in Rmail). -C-c C-q mail-fill-yanked-message (fill what was yanked). -C-c C-v mail-sent-via (add a sent-via field for each To or CC)." t nil) - -(autoload 'mail "sendmail" "\ -Edit a message to be sent. Prefix arg means resume editing (don't erase). -When this function returns, the buffer `*mail*' is selected. -The value is t if the message was newly initialized; otherwise, nil. - -Optionally, the signature file `mail-signature-file' can be inserted at the -end; see the variable `mail-signature'. - -\\<mail-mode-map> -While editing message, type \\[mail-send-and-exit] to send the message and exit. - -Various special commands starting with C-c are available in sendmail mode -to move to message header fields: -\\{mail-mode-map} - -The variable `mail-signature' controls whether the signature file -`mail-signature-file' is inserted immediately. - -If `mail-signature' is nil, use \\[mail-signature] to insert the -signature in `mail-signature-file'. - -If `mail-self-blind' is non-nil, a BCC to yourself is inserted -when the message is initialized. - -If `mail-default-reply-to' is non-nil, it should be an address (a string); -a Reply-to: field with that address is inserted. - -If `mail-archive-file-name' is non-nil, an FCC field with that file name -is inserted. - -The normal hook `mail-setup-hook' is run after the message is -initialized. It can add more default fields to the message. - -When calling from a program, the first argument if non-nil says -not to erase the existing contents of the `*mail*' buffer. - -The second through fifth arguments, - TO, SUBJECT, IN-REPLY-TO and CC, specify if non-nil - the initial contents of those header fields. - These arguments should not have final newlines. -The sixth argument REPLYBUFFER is a buffer whose contents - should be yanked if the user types C-c C-y. -The seventh argument ACTIONS is a list of actions to take - if/when the message is sent. Each action looks like (FUNCTION . ARGS); - when the message is sent, we apply FUNCTION to ARGS. - This is how Rmail arranges to mark messages `answered'." t nil) - -(autoload 'mail-other-window "sendmail" "\ -Like `mail' command, but display mail buffer in another window." t nil) - -(autoload 'mail-other-frame "sendmail" "\ -Like `mail' command, but display mail buffer in another frame." t nil) - -(define-key ctl-x-map "m" 'mail) - -(define-key ctl-x-4-map "m" 'mail-other-window) - -(define-key ctl-x-5-map "m" 'mail-other-frame) - -(add-hook 'same-window-buffer-names "*mail*") - -;;;*** - -;;;### (autoloads nil "simula" "modes/simula.el" (12546 37593)) -;;; Generated autoloads from modes/simula.el - -;;;### (autoloads (tcl-help-on-word inferior-tcl tcl-mode) "tcl" "modes/tcl.el" (12637 33801)) -;;; Generated autoloads from modes/tcl.el - -(autoload 'tcl-mode "tcl" "\ -Major mode for editing Tcl code. -Expression and list commands understand all Tcl brackets. -Tab indents for Tcl code. -Paragraphs are separated by blank lines only. -Delete converts tabs to spaces as it moves back. - -Variables controlling indentation style: - tcl-indent-level - Indentation of Tcl statements within surrounding block. - tcl-continued-indent-level - Indentation of continuation line relative to first line of command. - -Variables controlling user interaction with mode (see variable -documentation for details): - tcl-tab-always-indent - Controls action of TAB key. - tcl-auto-newline - Non-nil means automatically newline before and after braces, brackets, - and semicolons inserted in Tcl code. - tcl-electric-hash-style - Controls action of `#' key. - tcl-use-hairy-comment-detector - If t, use more complicated, but slower, comment detector. - This variable is only used in GNU Emacs 19. - tcl-use-smart-word-finder - If not nil, use a smarter, Tcl-specific way to find the current - word when looking up help on a Tcl command. - -Turning on Tcl mode calls the value of the variable `tcl-mode-hook' -with no args, if that value is non-nil. Read the documentation for -`tcl-mode-hook' to see what kinds of interesting hook functions -already exist. - -Commands: -\\{tcl-mode-map}" t nil) - -(autoload 'inferior-tcl "tcl" "\ -Run inferior Tcl process. -Prefix arg means enter program name interactively. -See documentation for function `inferior-tcl-mode' for more information." t nil) - -(autoload 'tcl-help-on-word "tcl" "\ -Get help on Tcl command. Default is word at point. -Prefix argument means invert sense of `tcl-use-smart-word-finder'." t nil) - -;;;*** - -;;;### (autoloads (latex-mode plain-tex-mode tex-mode) "tex-mode" "modes/tex-mode.el" (12147 26435)) -;;; Generated autoloads from modes/tex-mode.el - -(autoload 'tex-mode "tex-mode" "\ -Major mode for editing files of input for TeX, LaTeX, or SliTeX. -Tries to determine (by looking at the beginning of the file) whether -this file is for plain TeX, LaTeX, or SliTeX and calls plain-tex-mode, -latex-mode, or slitex-mode, respectively. If it cannot be determined, -such as if there are no commands in the file, the value of tex-default-mode -is used." t nil) - -(fset 'TeX-mode 'tex-mode) - -(fset 'LaTeX-mode 'latex-mode) - -(autoload 'plain-tex-mode "tex-mode" "\ -Major mode for editing files of input for plain TeX. -Makes $ and } display the characters they match. -Makes \" insert `` when it seems to be the beginning of a quotation, -and '' when it appears to be the end; it inserts \" only after a \\. - -Use \\[tex-region] to run TeX on the current region, plus a \"header\" -copied from the top of the file (containing macro definitions, etc.), -running TeX under a special subshell. \\[tex-buffer] does the whole buffer. -\\[tex-file] saves the buffer and then processes the file. -\\[tex-print] prints the .dvi file made by any of these. -\\[tex-view] previews the .dvi file made by any of these. -\\[tex-bibtex-file] runs bibtex on the file of the current buffer. - -Use \\[validate-tex-buffer] to check buffer for paragraphs containing -mismatched $'s or braces. - -Special commands: -\\{tex-mode-map} - -Mode variables: -tex-run-command - Command string used by \\[tex-region] or \\[tex-buffer]. -tex-directory - Directory in which to create temporary files for TeX jobs - run by \\[tex-region] or \\[tex-buffer]. -tex-dvi-print-command - Command string used by \\[tex-print] to print a .dvi file. -tex-alt-dvi-print-command - Alternative command string used by \\[tex-print] (when given a prefix - argument) to print a .dvi file. -tex-dvi-view-command - Command string used by \\[tex-view] to preview a .dvi file. -tex-show-queue-command - Command string used by \\[tex-show-print-queue] to show the print - queue that \\[tex-print] put your job on. - -Entering Plain-tex mode calls the value of text-mode-hook, then the value of -tex-mode-hook, and then the value of plain-tex-mode-hook. When the special -subshell is initiated, the value of tex-shell-hook is called." t nil) - -(fset 'plain-TeX-mode 'plain-tex-mode) - -(autoload 'latex-mode "tex-mode" "\ -Major mode for editing files of input for LaTeX. -Makes $ and } display the characters they match. -Makes \" insert `` when it seems to be the beginning of a quotation, -and '' when it appears to be the end; it inserts \" only after a \\. - -Use \\[tex-region] to run LaTeX on the current region, plus the preamble -copied from the top of the file (containing \\documentstyle, etc.), -running LaTeX under a special subshell. \\[tex-buffer] does the whole buffer. -\\[tex-file] saves the buffer and then processes the file. -\\[tex-print] prints the .dvi file made by any of these. -\\[tex-view] previews the .dvi file made by any of these. -\\[tex-bibtex-file] runs bibtex on the file of the current buffer. - -Use \\[validate-tex-buffer] to check buffer for paragraphs containing -mismatched $'s or braces. - -Special commands: -\\{tex-mode-map} - -Mode variables: -latex-run-command - Command string used by \\[tex-region] or \\[tex-buffer]. -tex-directory - Directory in which to create temporary files for LaTeX jobs - run by \\[tex-region] or \\[tex-buffer]. -tex-dvi-print-command - Command string used by \\[tex-print] to print a .dvi file. -tex-alt-dvi-print-command - Alternative command string used by \\[tex-print] (when given a prefix - argument) to print a .dvi file. -tex-dvi-view-command - Command string used by \\[tex-view] to preview a .dvi file. -tex-show-queue-command - Command string used by \\[tex-show-print-queue] to show the print - queue that \\[tex-print] put your job on. - -Entering Latex mode calls the value of text-mode-hook, then the value of -tex-mode-hook, and then the value of latex-mode-hook. When the special -subshell is initiated, the value of tex-shell-hook is called." t nil) - -;;;*** - -;;;### (autoloads (texinfo-mode) "texinfo" "modes/texinfo.el" (12554 53342)) -;;; Generated autoloads from modes/texinfo.el - -(autoload 'texinfo-mode "texinfo" "\ -Major mode for editing Texinfo files. - - It has these extra commands: -\\{texinfo-mode-map} - - These are files that are used as input for TeX to make printed manuals -and also to be turned into Info files with \\[makeinfo-buffer] or -the `makeinfo' program. These files must be written in a very restricted and -modified version of TeX input format. - - Editing commands are like text-mode except that the syntax table is -set up so expression commands skip Texinfo bracket groups. To see -what the Info version of a region of the Texinfo file will look like, -use \\[makeinfo-region], which runs `makeinfo' on the current region. - - You can show the structure of a Texinfo file with \\[texinfo-show-structure]. -This command shows the structure of a Texinfo file by listing the -lines with the @-sign commands for @chapter, @section, and the like. -These lines are displayed in another window called the *Occur* window. -In that window, you can position the cursor over one of the lines and -use \\[occur-mode-goto-occurrence], to jump to the corresponding spot -in the Texinfo file. - - In addition, Texinfo mode provides commands that insert various -frequently used @-sign commands into the buffer. You can use these -commands to save keystrokes. And you can insert balanced braces with -\\[texinfo-insert-braces] and later use the command \\[up-list] to -move forward past the closing brace. - -Also, Texinfo mode provides functions for automatically creating or -updating menus and node pointers. These functions - - * insert the `Next', `Previous' and `Up' pointers of a node, - * insert or update the menu for a section, and - * create a master menu for a Texinfo source file. - -Here are the functions: - - texinfo-update-node \\[texinfo-update-node] - texinfo-every-node-update \\[texinfo-every-node-update] - texinfo-sequential-node-update - - texinfo-make-menu \\[texinfo-make-menu] - texinfo-all-menus-update \\[texinfo-all-menus-update] - texinfo-master-menu - - texinfo-indent-menu-description (column &optional region-p) - -The `texinfo-column-for-description' variable specifies the column to -which menu descriptions are indented. - -Passed an argument (a prefix argument, if interactive), the -`texinfo-update-node' and `texinfo-make-menu' functions do their jobs -in the region. - -To use the updating commands, you must structure your Texinfo file -hierarchically, such that each `@node' line, with the exception of the -Top node, is accompanied by some kind of section line, such as an -`@chapter' or `@section' line. - -If the file has a `top' node, it must be called `top' or `Top' and -be the first node in the file. - -Entering Texinfo mode calls the value of text-mode-hook, and then the -value of texinfo-mode-hook." t nil) - -;;;*** - -;;;### (autoloads nil "text-mode" "modes/text-mode.el" (12546 37592)) -;;; Generated autoloads from modes/text-mode.el - -;;;### (autoloads (tc-recenter tc-scroll-down tc-scroll-up tc-scroll-line tc-associated-buffer tc-merge tc-dissociate tc-split tc-associate-buffer tc-two-columns) "two-column" "modes/two-column.el" (12648 4913)) -;;; Generated autoloads from modes/two-column.el - -(defvar tc-mode-map nil "\ -Keymap for commands for two-column mode.") - -(if tc-mode-map nil (setq tc-mode-map (make-sparse-keymap)) (define-key tc-mode-map "1" 'tc-merge) (define-key tc-mode-map "2" 'tc-two-columns) (define-key tc-mode-map "b" 'tc-associate-buffer) (define-key tc-mode-map "d" 'tc-dissociate) (define-key tc-mode-map "\^L" 'tc-recenter) (define-key tc-mode-map "o" 'tc-associated-buffer) (define-key tc-mode-map "s" 'tc-split) (define-key tc-mode-map "{" 'shrink-window-horizontally) (define-key tc-mode-map "}" 'enlarge-window-horizontally) (define-key tc-mode-map " " 'tc-scroll-up) (define-key tc-mode-map "" 'tc-scroll-down) (define-key tc-mode-map " -" 'tc-scroll-line)) - -(global-set-key "6" tc-mode-map) - -(defvar tc-other nil "\ -Marker to the associated buffer, if non-nil.") - -(make-variable-buffer-local 'tc-other) - -(put 'tc-other 'permanent-local t) - -(autoload 'tc-two-columns "two-column" "\ -Split current window vertically for two-column editing. - -When called the first time, associates a buffer with the current -buffer. Both buffers are put in two-column minor mode and -tc-mode-hook gets called on both. These buffers remember -about one another, even when renamed. - -When called again, restores the screen layout with the current buffer -first and the associated buffer to it's right. - -If you include long lines, i.e which will span both columns (eg. -source code), they should be in what will be the first column, with -the associated buffer having empty lines next to them. - -You have the following commands at your disposal: - -\\[tc-two-columns] Rearrange screen -\\[tc-associate-buffer] Reassociate buffer after changing major mode -\\[tc-scroll-up] Scroll both buffers up by a screenfull -\\[tc-scroll-down] Scroll both buffers down by a screenful -\\[tc-scroll-line] Scroll both buffers up by one or more lines -\\[tc-recenter] Recenter and realign other buffer -\\[shrink-window-horizontally], \\[enlarge-window-horizontally] Shrink, enlarge current column -\\[tc-associated-buffer] Switch to associated buffer -\\[tc-merge] Merge both buffers - -These keybindings can be customized in your ~/.emacs by `tc-prefix' -and `tc-mode-map'. - -The appearance of the screen can be customized by the variables -`tc-window-width', `tc-beyond-fill-column', -`tc-mode-line-format' and `truncate-partial-width-windows'." t nil) - -(add-minor-mode 'tc-other " 2C" nil nil 'tc-two-columns) - -(autoload 'tc-associate-buffer "two-column" "\ -Associate another buffer with this one in two-column minor mode. -Can also be used to associate a just previously visited file, by -accepting the proposed default buffer. - -See \\[tc-two-columns] and `lisp/two-column.el' for further details." t nil) - -(autoload 'tc-split "two-column" "\ -Unmerge a two-column text into two buffers in two-column minor mode. -The text is unmerged at the cursor's column which becomes the local -value of `tc-window-width'. Only lines that have the ARG same -preceding characters at that column get split. The ARG preceding -characters without any leading whitespace become the local value for -`tc-separator'. This way lines that continue across both -columns remain untouched in the first buffer. - -This function can be used with a prototype line, to set up things as -you like them. You write the first line of each column with the -separator you like and then unmerge that line. E.g.: - -First column's text sSs Second columns text - \\___/\\ - / \\ - 5 character Separator You type M-5 \\[tc-split] with the point here - -See \\[tc-two-columns] and `lisp/two-column.el' for further details." t nil) - -(autoload 'tc-dissociate "two-column" "\ -Turn off two-column minor mode in current and associated buffer. -If the associated buffer is unmodified and empty, it is killed." t nil) - -(autoload 'tc-merge "two-column" "\ -Merges the associated buffer with the current buffer. -They get merged at the column, which is the value of -`tc-window-width', i.e. usually at the vertical window -separator. This separator gets replaced with white space. Beyond -that the value of gets inserted on merged lines. The two columns are -thus pasted side by side, in a single text. If the other buffer is -not displayed to the left of this one, then this one becomes the left -column. - -If you want `tc-separator' on empty lines in the second column, -you should put just one space in them. In the final result, you can strip -off trailing spaces with \\[beginning-of-buffer] \\[replace-regexp] [ SPC TAB ] + $ RET RET" t nil) - -(autoload 'tc-associated-buffer "two-column" "\ -Switch to associated buffer." t nil) - -(autoload 'tc-scroll-line "two-column" "\ -Scroll current window upward by ARG lines. -The associated window gets scrolled to the same line." t nil) - -(autoload 'tc-scroll-up "two-column" "\ -Scroll current window upward by ARG screens. -The associated window gets scrolled to the same line." t nil) - -(autoload 'tc-scroll-down "two-column" "\ -Scroll current window downward by ARG screens. -The associated window gets scrolled to the same line." t nil) - -(autoload 'tc-recenter "two-column" "\ -Center point in window. With ARG, put point on line ARG. -This counts from bottom if ARG is negative. The associated window -gets scrolled to the same line." t nil) - -;;;*** - -;;;### (autoloads (auto-view-mode view-major-mode view-mode view-minor-mode view-buffer-other-window view-file-other-window view-buffer view-file) "view-less" "modes/view-less.el" (12742 53066)) -;;; Generated autoloads from modes/view-less.el - -(autoload 'view-file "view-less" "\ -Find FILE, enter view mode. With prefix arg OTHER-P, use other window." t nil) - -(autoload 'view-buffer "view-less" "\ -Switch to BUF, enter view mode. With prefix arg use other window." t nil) - -(autoload 'view-file-other-window "view-less" "\ -Find FILE in other window, and enter view mode." t nil) - -(autoload 'view-buffer-other-window "view-less" "\ -Switch to BUFFER in another window, and enter view mode." t nil) - -(autoload 'view-minor-mode "view-less" "\ -Minor mode for viewing text, with bindings like `less'. -Commands are: -\\<view-minor-mode-map> -0..9 prefix args -- prefix minus -\\[scroll-up] page forward -\\[scroll-down] page back -\\[view-scroll-lines-up] scroll prefix-arg lines forward, default 1. -\\[view-scroll-lines-down] scroll prefix-arg lines backward, default 1. -\\[view-scroll-some-lines-down] scroll prefix-arg lines backward, default 10. -\\[view-scroll-some-lines-up] scroll prefix-arg lines forward, default 10. -\\[what-line] print line number -\\[view-mode-describe] print this help message -\\[view-search-forward] regexp search, uses previous string if you just hit RET -\\[view-search-backward] as above but searches backward -\\[view-repeat-search] repeat last search -\\[view-goto-line] goto line prefix-arg, default 1 -\\[view-last-windowful] goto line prefix-arg, default last line -\\[view-goto-percent] goto a position by percentage -\\[toggle-truncate-lines] toggle truncate-lines -\\[view-file] view another file -\\[view-buffer] view another buffer -\\[view-cleanup-backspaces] cleanup backspace constructions -\\[shell-command] execute a shell command -\\[shell-command-on-region] execute a shell command with the region as input -\\[view-quit] exit view-mode, and bury the current buffer. - -If invoked with the optional (prefix) arg non-nil, view-mode cleans up -backspace constructions. - -More precisely: -\\{view-minor-mode-map}" t nil) - -(autoload 'view-mode "view-less" "\ -View the current buffer using view-minor-mode. This exists to be 99.9% -compatible with the implementations of `view-mode' in view.el and older -versions of view-less.el." t nil) - -(autoload 'view-major-mode "view-less" "\ -View the current buffer using view-mode, as a major mode. -This function has a nonstandard name because `view-mode' is wrongly -named but is like this for compatibility reasons." t nil) - -(autoload 'auto-view-mode "view-less" "\ -If the file of the current buffer is not writable, call view-mode. -This is meant to be added to `find-file-hooks'." nil nil) - -;;;*** - -;;;### (autoloads nil "view" "modes/view.el" (12546 37594)) -;;; Generated autoloads from modes/view.el - -;;;### (autoloads (vrml-mode) "vrml-mode" "modes/vrml-mode.el" (12714 11707)) -;;; Generated autoloads from modes/vrml-mode.el - -(autoload 'vrml-mode "vrml-mode" "\ -Major mode for editing VRML code. -Expression and list commands understand all VRML brackets. -Tab indents for VRML code. -Paragraphs are separated by blank lines only. -Delete converts tabs to spaces as it moves back. - -Variables controlling indentation style: - vrml-indent-level - Indentation of VRML statements within surrounding block. - -Variables controlling user interaction with mode (see variable -documentation for details): - vrml-tab-always-indent - Controls action of TAB key. - vrml-auto-newline - Non-nil means automatically newline before and after braces - inserted in VRML code. - -Turning on VRML mode calls the value of the variable `vrml-mode-hook' -with no args, if that value is non-nil. Read the documentation for -`vrml-mode-hook' to see what kinds of interesting hook functions -already exist. - -Commands: -\\{vrml-mode-map}" t nil) - -;;;*** - -;;;### (autoloads (xpm-mode) "xpm-mode" "modes/xpm-mode.el" (12559 35054)) -;;; Generated autoloads from modes/xpm-mode.el - -(autoload 'xpm-mode "xpm-mode" "\ -Treat the current buffer as an xpm file and colorize it. - - Shift-button-1 lets you paint by dragging the mouse. Shift-button-1 on a -color definition line will change the current painting color to that line's -value. - - Characters inserted from the keyboard will NOT be colored properly yet. -Use the mouse, or do xpm-init (\\[xpm-init]) after making changes. - -\\[xpm-add-color] Add a new color, prompting for character and value -\\[xpm-show-image] show the current image at the top of the buffer -\\[xpm-parse-color] parse the current line's color definition and add - it to the color table. Provided as a means of changing colors. -XPM minor mode bindings: -\\{xpm-mode-map}" t nil) - -;;;*** - -;;;### (autoloads nil "ns-init" "ns/ns-init.el" (12528 15474)) -;;; Generated autoloads from ns/ns-init.el - -;;;*** - -;;;### (autoloads nil "br-c++-ft" "oobr/br-c++-ft.el" (12202 46025)) -;;; Generated autoloads from oobr/br-c++-ft.el - -;;;*** - -;;;### (autoloads nil "br-c++" "oobr/br-c++.el" (12558 62979)) -;;; Generated autoloads from oobr/br-c++.el - -;;;*** - -;;;### (autoloads nil "br-c-ft" "oobr/br-c-ft.el" (12558 62993)) -;;; Generated autoloads from oobr/br-c-ft.el - -;;;*** - -;;;### (autoloads nil "br-clos-ft" "oobr/br-clos-ft.el" (12351 16429)) -;;; Generated autoloads from oobr/br-clos-ft.el - -;;;*** - -;;;### (autoloads nil "br-clos" "oobr/br-clos.el" (12558 62980)) -;;; Generated autoloads from oobr/br-clos.el - -;;;*** - -;;;### (autoloads nil "br-compl" "oobr/br-compl.el" (12202 46027)) -;;; Generated autoloads from oobr/br-compl.el - -;;;*** - -;;;### (autoloads nil "br-eif-ft" "oobr/br-eif-ft.el" (12212 18736)) -;;; Generated autoloads from oobr/br-eif-ft.el - -;;;*** - -;;;### (autoloads nil "br-eif" "oobr/br-eif.el" (12558 62980)) -;;; Generated autoloads from oobr/br-eif.el - -;;;*** - -;;;### (autoloads (br-env-load br-env-browse) "br-env" "oobr/br-env.el" (12714 11760)) -;;; Generated autoloads from oobr/br-env.el - -(autoload 'br-env-browse "br-env" "\ -Invoke the OO-Browser on an existing or to be created Environment ENV-FILE." t nil) - -(autoload 'br-env-load "br-env" "\ -Load browser Environment or spec from optional ENV-FILE or 'br-env-file'. -Non-nil PROMPT means prompt user before building tables. -Non-nil NO-BUILD means skip build of Environment entirely. -Return t if load is successful, else nil." t nil) - -;;;*** - -;;;### (autoloads nil "br-ftr" "oobr/br-ftr.el" (12355 23867)) -;;; Generated autoloads from oobr/br-ftr.el - -;;;*** - -;;;### (autoloads nil "br-info" "oobr/br-info.el" (12558 62982)) -;;; Generated autoloads from oobr/br-info.el - -;;;*** - -;;;### (autoloads nil "br-init" "oobr/br-init.el" (12714 11761)) -;;; Generated autoloads from oobr/br-init.el - -;;;### (autoloads nil "br-java-ft" "oobr/br-java-ft.el" (12558 62996)) -;;; Generated autoloads from oobr/br-java-ft.el - -;;;*** - -;;;### (autoloads nil "br-java" "oobr/br-java.el" (12558 62996)) -;;; Generated autoloads from oobr/br-java.el - -;;;*** - -;;;### (autoloads nil "br-lib" "oobr/br-lib.el" (12558 62984)) -;;; Generated autoloads from oobr/br-lib.el - -;;;*** - -;;;### (autoloads nil "br-menu" "oobr/br-menu.el" (12558 62984)) -;;; Generated autoloads from oobr/br-menu.el - -;;;*** - -;;;### (autoloads nil "br-objc-ft" "oobr/br-objc-ft.el" (12202 46031)) -;;; Generated autoloads from oobr/br-objc-ft.el - -;;;*** - -;;;### (autoloads nil "br-objc" "oobr/br-objc.el" (12558 62985)) -;;; Generated autoloads from oobr/br-objc.el - -;;;*** - -;;;### (autoloads nil "br-python-ft" "oobr/br-python-ft.el" (12714 11806)) -;;; Generated autoloads from oobr/br-python-ft.el - -;;;*** - -;;;### (autoloads nil "br-python" "oobr/br-python.el" (12714 11806)) -;;; Generated autoloads from oobr/br-python.el - -;;;### (autoloads nil "br-site" "oobr/br-site.el" (12351 16433)) -;;; Generated autoloads from oobr/br-site.el - -;;;*** - -;;;### (autoloads nil "br-smt" "oobr/br-smt.el" (12558 62986)) -;;; Generated autoloads from oobr/br-smt.el - -;;;*** - -;;;### (autoloads (oo-browser) "br-start" "oobr/br-start.el" (12558 62986)) -;;; Generated autoloads from oobr/br-start.el - -(fset 'oobr 'oo-browser) - -(autoload 'oo-browser "br-start" "\ -Prompt for an Environment and language over which to run the OO-Browser. -Optional prefix argument SAME-ENV-FLAG means browse the current Environment, -if any, without prompting." t nil) - -;;;*** - -;;;### (autoloads nil "br-tree" "oobr/br-tree.el" (12294 59327)) -;;; Generated autoloads from oobr/br-tree.el - -;;;*** - -;;;### (autoloads nil "br-vers" "oobr/br-vers.el" (12714 11762)) -;;; Generated autoloads from oobr/br-vers.el - -;;;### (autoloads (br-to-from-viewer br-add-class-file) "br" "oobr/br.el" (12714 11763)) -;;; Generated autoloads from oobr/br.el - -(autoload 'br-add-class-file "br" "\ -Add a file of classes to the current Environment. -Interactively or when optional CLASS-PATH is nil, CLASS-PATH defaults to the -current buffer file pathname. If optional LIB-TABLE-P is non-nil, add to -Library Environment, otherwise add to System Environment. If optional -SAVE-FILE is t, the Environment is then stored to the filename given by -'br-env-file'. If SAVE-FILE is non-nil and not t, its string value is used -as the file to which to save the Environment." t nil) - -(autoload 'br-to-from-viewer "br" "\ -Move point to viewer window or back to last recorded listing window." t nil) - -;;;*** - -;;;### (autoloads (c++-browse) "c++-browse" "oobr/c++-browse.el" (12558 62989)) -;;; Generated autoloads from oobr/c++-browse.el - -(autoload 'c++-browse "c++-browse" "\ -Invoke the C++ OO-Browser. -This allows browsing through C++ library and system class hierarchies. With -an optional non-nil prefix argument ENV-FILE, prompt for Environment file to -use. Alternatively, a string value of ENV-FILE is used as the Environment -file name. See also the file \"br-help\"." t nil) - -;;;*** - -;;;### (autoloads (clos-browse) "clos-brows" "oobr/clos-brows.el" (12558 62989)) -;;; Generated autoloads from oobr/clos-brows.el - -(autoload 'clos-browse "clos-brows" "\ -Invoke the CLOS OO-Browser. -This allows browsing through CLOS library and system class hierarchies. With -an optional non-nil prefix argument ENV-FILE, prompt for Environment file -to use. Alternatively, a string value of ENV-FILE is used as the -Environment file name. See also the file \"br-help\"." t nil) - -;;;*** - -;;;### (autoloads (eif-browse) "eif-browse" "oobr/eif-browse.el" (12558 62989)) -;;; Generated autoloads from oobr/eif-browse.el - -(autoload 'eif-browse "eif-browse" "\ -Invoke the Eiffel OO-Browser. -This allows browsing through Eiffel library and system class hierarchies. -With an optional prefix arg ENV-FILE equal to t, prompt for Environment file -to use. Alternatively, a string value of ENV-FILE is used as the Environment -file name. See also the file \"br-help\"." t nil) - -;;;*** - -;;;### (autoloads nil "eif-calls" "oobr/eif-calls.el" (12356 62998)) -;;; Generated autoloads from oobr/eif-calls.el - -;;;*** - -;;;### (autoloads nil "eif-ise-er" "oobr/eif-ise-er.el" (12193 28644)) -;;; Generated autoloads from oobr/eif-ise-er.el - -;;;*** - -;;;### (autoloads nil "hash-test" "oobr/hash-test.el" (12178 36955)) -;;; Generated autoloads from oobr/hash-test.el - -;;;*** - -;;;### (autoloads nil "hasht" "oobr/hasht.el" (12558 62990)) -;;; Generated autoloads from oobr/hasht.el - -;;;*** - -;;;### (autoloads nil "hmouse-br" "oobr/hmouse-br.el" (12558 62991)) -;;; Generated autoloads from oobr/hmouse-br.el - -;;;### (autoloads (info-browse) "info-brows" "oobr/info-brows.el" (12558 62991)) -;;; Generated autoloads from oobr/info-brows.el - -(autoload 'info-browse "info-brows" "\ -Invoke the Info OO-Browser. -This allows browsing through Info library and system class hierarchies. With -an optional non-nil prefix argument ENV-FILE, prompt for Environment file to -use. Alternatively, a string value of ENV-FILE is used as the Environment -file name. See also the file \"br-help\"." t nil) - -;;;*** - -;;;### (autoloads (java-browse) "java-brows" "oobr/java-brows.el" (12558 62998)) -;;; Generated autoloads from oobr/java-brows.el - -(autoload 'java-browse "java-brows" "\ -Invoke the Java OO-Browser. -This allows browsing through Java library and system class hierarchies. With -an optional non-nil prefix argument ENV-FILE, prompt for Environment file to -use. Alternatively, a string value of ENV-FILE is used as the Environment -file name. See also the file \"br-help\"." t nil) - -;;;*** - -;;;### (autoloads (objc-browse) "objc-brows" "oobr/objc-brows.el" (12558 62992)) -;;; Generated autoloads from oobr/objc-brows.el - -(autoload 'objc-browse "objc-brows" "\ -Invoke the Objective-C OO-Browser. -This allows browsing through Objective-C library and system class -hierarchies. With an optional non-nil prefix argument ENV-FILE, prompt for -Environment file to use. Alternatively, a string value of ENV-FILE is used -as the Environment file name. See also the file \"br-help\"." t nil) - -;;;*** - -;;;### (autoloads (python-browse) "python-browse" "oobr/python-browse.el" (12714 11806)) -;;; Generated autoloads from oobr/python-browse.el - -(autoload 'python-browse "python-browse" "\ -Invoke the Python OO-Browser. -This allows browsing through Python library and system class hierarchies. -With an optional non-nil prefix argument ENV-FILE, prompt for Environment -file to use. Alternatively, a string value of ENV-FILE is used as the -Environment file name. See also the file \"br-help\"." t nil) - -;;;*** - -;;;### (autoloads (smt-browse) "smt-browse" "oobr/smt-browse.el" (12558 62993)) -;;; Generated autoloads from oobr/smt-browse.el - -(autoload 'smt-browse "smt-browse" "\ -Invoke the Smalltalk OO-Browser. -This allows browsing through Smalltalk library and system class hierarchies. -With an optional non-nil prefix argument ENV-FILE, prompt for Environment -file to use. Alternatively, a string value of ENV-FILE is used as the -Environment file name. See also the file \"br-help\"." t nil) - -;;;*** - -;;;### (autoloads (add-log-current-defun change-log-mode add-change-log-entry-other-window add-change-log-entry find-change-log prompt-for-change-log-name) "add-log" "packages/add-log.el" (12554 53347)) -;;; Generated autoloads from packages/add-log.el - -(defvar change-log-default-name nil "\ -*Name of a change log file for \\[add-change-log-entry].") - -(defvar add-log-current-defun-function nil "\ -*If non-nil, function to guess name of current function from surrounding text. -\\[add-change-log-entry] calls this function (if nil, `add-log-current-defun' -instead) with no arguments. It returns a string or nil if it cannot guess.") - -(defvar add-log-full-name nil "\ -*Full name of user, for inclusion in ChangeLog daily headers. -This defaults to the value returned by the `user-full-name' function.") - -(defvar add-log-mailing-address nil "\ -*Electronic mail address of user, for inclusion in ChangeLog daily headers. -This defaults to the value of `user-mail-address'.") - -(autoload 'prompt-for-change-log-name "add-log" "\ -Prompt for a change log name." nil nil) - -(autoload 'find-change-log "add-log" "\ -Find a change log file for \\[add-change-log-entry] and return the name. -Optional arg FILE-NAME specifies the file to use. -If FILE-NAME is nil, use the value of `change-log-default-name'. -If 'change-log-default-name' is nil, behave as though it were 'ChangeLog' -\(or whatever we use on this operating system). - -If 'change-log-default-name' contains a leading directory component, then -simply find it in the current directory. Otherwise, search in the current -directory and its successive parents for a file so named. - -Once a file is found, `change-log-default-name' is set locally in the -current buffer to the complete file name." nil nil) - -(autoload 'add-change-log-entry "add-log" "\ -Find change log file and add an entry for today. -Optional arg (interactive prefix) non-nil means prompt for user name and site. -Second arg is file name of change log. If nil, uses `change-log-default-name'. -Third arg OTHER-WINDOW non-nil means visit in other window. -Fourth arg NEW-ENTRY non-nil means always create a new entry at the front; -never append to an existing entry." t nil) - -(autoload 'add-change-log-entry-other-window "add-log" "\ -Find change log file in other window and add an entry for today. -Optional arg (interactive prefix) non-nil means prompt for user name and site. -Second arg is file name of change log. If nil, uses `change-log-default-name'." t nil) - -(define-key ctl-x-4-map "a" 'add-change-log-entry-other-window) - -(autoload 'change-log-mode "add-log" "\ -Major mode for editing change logs; like Indented Text Mode. -Prevents numeric backups and sets `left-margin' to 8 and `fill-column' to 74. -New log entries are usually made with \\[add-change-log-entry] or \\[add-change-log-entry-other-window]. -Each entry behaves as a paragraph, and the entries for one day as a page. -Runs `change-log-mode-hook'." t nil) - -(autoload 'add-log-current-defun "add-log" "\ -Return name of function definition point is in, or nil. - -Understands C, Lisp, LaTeX (\"functions\" are chapters, sections, ...), -Texinfo (@node titles), Perl, and Fortran. - -Other modes are handled by a heuristic that looks in the 10K before -point for uppercase headings starting in the first column or -identifiers followed by `:' or `=', see variable -`add-log-current-defun-header-regexp'. - -Has a preference of looking backwards." nil nil) - -;;;*** - -;;;### (autoloads (apropos-documentation apropos-value apropos apropos-command) "apropos" "packages/apropos.el" (12738 54588)) -;;; Generated autoloads from packages/apropos.el - -(fset 'command-apropos 'apropos-command) - -(autoload 'apropos-command "apropos" "\ -Shows commands (interactively callable functions) that match REGEXP. -With optional prefix ARG or if `apropos-do-all' is non-nil, also show -variables." t nil) - -(autoload 'apropos "apropos" "\ -Show all bound symbols whose names match REGEXP. -With optional prefix ARG or if `apropos-do-all' is non-nil, also show unbound -symbols and key bindings, which is a little more time-consuming. -Returns list of symbols and documentation found." t nil) - -(autoload 'apropos-value "apropos" "\ -Show all symbols whose value's printed image matches REGEXP. -With optional prefix ARG or if `apropos-do-all' is non-nil, also looks -at the function and at the names and values of properties. -Returns list of symbols and values found." t nil) - -(autoload 'apropos-documentation "apropos" "\ -Show symbols whose documentation contain matches for REGEXP. -With optional prefix ARG or if `apropos-do-all' is non-nil, also use -documentation that is not stored in the documentation file and show key -bindings. -Returns list of symbols and documentation found." t nil) - -;;;*** - -;;;### (autoloads nil "array" "packages/array.el" (12547 41212)) -;;; Generated autoloads from packages/array.el - -;;;*** - -;;;### (autoloads nil "auto-save" "packages/auto-save.el" (12178 29448)) -;;; Generated autoloads from packages/auto-save.el - -;;;### (autoloads (define-auto-insert auto-insert) "autoinsert" "packages/autoinsert.el" (12546 37604)) -;;; Generated autoloads from packages/autoinsert.el - -(autoload 'auto-insert "autoinsert" "\ -Insert default contents into a new file if `auto-insert' is non-nil. -Matches the visited file name against the elements of `auto-insert-alist'." t nil) - -(autoload 'define-auto-insert "autoinsert" "\ -Associate CONDITION with (additional) ACTION in `auto-insert-alist'. -Optional AFTER means to insert action after all existing actions for CONDITION, -or if CONDITION had no actions, after all other CONDITIONs." nil nil) - -;;;*** - -;;;### (autoloads nil "avoid" "packages/avoid.el" (12558 50924)) -;;; Generated autoloads from packages/avoid.el - -(add-minor-mode 'mouse-avoidance-mode " Avoid") - -;;;*** - -;;;### (autoloads nil "balloon-help" "packages/balloon-help.el" (12547 41272)) -;;; Generated autoloads from packages/balloon-help.el - -;;;*** - -;;;### (autoloads nil "big-menubar" "packages/big-menubar.el" (12264 40798)) -;;; Generated autoloads from packages/big-menubar.el - -;;;*** - -;;;### (autoloads (blink-cursor-mode) "blink-cursor" "packages/blink-cursor.el" (12637 24293)) -;;; Generated autoloads from packages/blink-cursor.el - -(autoload 'blink-cursor-mode "blink-cursor" "\ -Enable or disable a blinking cursor. -If TIMEOUT is nil, toggle on or off. -If TIMEOUT is t, enable with the previous timeout value. -If TIMEOUT is 0, disable. -If TIMEOUT is greater than 0, then the cursor will blink once -each TIMEOUT secs (can be a float)." t nil) - -;;;*** - -;;;### (autoloads nil "blink-paren" "packages/blink-paren.el" (12178 36812)) -;;; Generated autoloads from packages/blink-paren.el - -;;;### (autoloads (bookmark-menu-delete bookmark-menu-rename bookmark-menu-locate bookmark-menu-jump bookmark-menu-insert bookmark-bmenu-list bookmark-load bookmark-save bookmark-write bookmark-delete bookmark-insert bookmark-rename bookmark-insert-location bookmark-relocate bookmark-jump bookmark-set) "bookmark" "packages/bookmark.el" (12666 29157)) -;;; Generated autoloads from packages/bookmark.el - -(if (symbolp (key-binding "r")) nil (progn (define-key ctl-x-map "rb" 'bookmark-jump) (define-key ctl-x-map "rm" 'bookmark-set) (define-key ctl-x-map "rl" 'bookmark-bmenu-list))) - -(defvar bookmark-map nil "\ -Keymap containing bindings to bookmark functions. -It is not bound to any key by default: to bind it -so that you have a bookmark prefix, just use `global-set-key' and bind a -key of your choice to `bookmark-map'. All interactive bookmark -functions have a binding in this keymap.") - -(define-prefix-command 'bookmark-map) - -(define-key bookmark-map "x" 'bookmark-set) - -(define-key bookmark-map "m" 'bookmark-set) - -(define-key bookmark-map "j" 'bookmark-jump) - -(define-key bookmark-map "g" 'bookmark-jump) - -(define-key bookmark-map "i" 'bookmark-insert) - -(define-key bookmark-map "e" 'edit-bookmarks) - -(define-key bookmark-map "f" 'bookmark-insert-location) - -(define-key bookmark-map "r" 'bookmark-rename) - -(define-key bookmark-map "d" 'bookmark-delete) - -(define-key bookmark-map "l" 'bookmark-load) - -(define-key bookmark-map "w" 'bookmark-write) - -(define-key bookmark-map "s" 'bookmark-save) - -(autoload 'bookmark-set "bookmark" "\ -Set a bookmark named NAME inside a file. -If name is nil, then the user will be prompted. -With prefix arg, will not overwrite a bookmark that has the same name -as NAME if such a bookmark already exists, but instead will \"push\" -the new bookmark onto the bookmark alist. Thus the most recently set -bookmark with name NAME would be the one in effect at any given time, -but the others are still there, should you decide to delete the most -recent one. - -To yank words from the text of the buffer and use them as part of the -bookmark name, type C-w while setting a bookmark. Successive C-w's -yank successive words. - -Typing C-u inserts the name of the last bookmark used in the buffer -\(as an aid in using a single bookmark name to track your progress -through a large file). If no bookmark was used, then C-u inserts the -name of the file being visited. - -Use \\[bookmark-delete] to remove bookmarks (you give it a name, -and it removes only the first instance of a bookmark with that name from -the list of bookmarks.)" t nil) - -(autoload 'bookmark-jump "bookmark" "\ -Jump to bookmark BOOKMARK (a point in some file). -You may have a problem using this function if the value of variable -`bookmark-alist' is nil. If that happens, you need to load in some -bookmarks. See help on function `bookmark-load' for more about -this. - -If the file pointed to by BOOKMARK no longer exists, you will be asked -if you wish to give the bookmark a new location, and bookmark-jump -will then jump to the new location, as well as recording it in place -of the old one in the permanent bookmark record." t nil) - -(autoload 'bookmark-relocate "bookmark" "\ -Relocate BOOKMARK -- prompts for a filename, and makes an already -existing bookmark point to that file, instead of the one it used to -point at. Useful when a file has been renamed after a bookmark was -set in it." t nil) - -(autoload 'bookmark-insert-location "bookmark" "\ -Insert the name of the file associated with BOOKMARK. -Optional second arg NO-HISTORY means don't record this in the -minibuffer history list `bookmark-history'." t nil) - -(autoload 'bookmark-rename "bookmark" "\ -Change the name of OLD bookmark to NEW name. If called from -keyboard, prompts for OLD and NEW. If called from menubar, OLD is -selected from a menu, and prompts for NEW. - -If called from Lisp, prompts for NEW if only OLD was passed as an -argument. If called with two strings, then no prompting is done. You -must pass at least OLD when calling from Lisp. - -While you are entering the new name, consecutive C-w's insert -consectutive words from the text of the buffer into the new bookmark -name." t nil) - -(autoload 'bookmark-insert "bookmark" "\ -Insert the text of the file pointed to by bookmark BOOKMARK. -You may have a problem using this function if the value of variable -`bookmark-alist' is nil. If that happens, you need to load in some -bookmarks. See help on function `bookmark-load' for more about -this." t nil) - -(autoload 'bookmark-delete "bookmark" "\ -Delete BOOKMARK from the bookmark list. -Removes only the first instance of a bookmark with that name. If -there are one or more other bookmarks with the same name, they will -not be deleted. Defaults to the \"current\" bookmark (that is, the -one most recently used in this file, if any). -Optional second arg BATCH means don't update the bookmark list buffer, -probably because we were called from there." t nil) - -(autoload 'bookmark-write "bookmark" "\ -Write bookmarks to a file (for which the user will be prompted -interactively). Don't use this in Lisp programs; use bookmark-save -instead." t nil) - -(autoload 'bookmark-save "bookmark" "\ -Save currently defined bookmarks. -Saves by default in the file defined by the variable -`bookmark-default-file'. With a prefix arg, save it in file FILE -\(second argument). - -If you are calling this from Lisp, the two arguments are PREFIX-ARG -and FILE, and if you just want it to write to the default file, then -pass no arguments. Or pass in nil and FILE, and it will save in FILE -instead. If you pass in one argument, and it is non-nil, then the -user will be interactively queried for a file to save in. - -When you want to load in the bookmarks from a file, use -`bookmark-load', \\[bookmark-load]. That function will prompt you -for a file, defaulting to the file defined by variable -`bookmark-default-file'." t nil) - -(autoload 'bookmark-load "bookmark" "\ -Load bookmarks from FILE (which must be in bookmark format). -Appends loaded bookmarks to the front of the list of bookmarks. If -optional second argument REVERT is non-nil, existing bookmarks are -destroyed. Optional third arg NO-MSG means don't display any messages -while loading. - -If you load a file that doesn't contain a proper bookmark alist, you -will corrupt Emacs's bookmark list. Generally, you should only load -in files that were created with the bookmark functions in the first -place. Your own personal bookmark file, `~/.emacs.bmk', is -maintained automatically by Emacs; you shouldn't need to load it -explicitly." t nil) - -(autoload 'bookmark-bmenu-list "bookmark" "\ -Display a list of existing bookmarks. -The list is displayed in a buffer named `*Bookmark List*'. -The leftmost column displays a D if the bookmark is flagged for -deletion, or > if it is flagged for displaying." t nil) - -(defalias 'list-bookmarks 'bookmark-bmenu-list) - -(defalias 'edit-bookmarks 'bookmark-bmenu-list) - -(autoload 'bookmark-menu-insert "bookmark" "\ -Insert the text of the file pointed to by bookmark BOOKMARK. -You may have a problem using this function if the value of variable -`bookmark-alist' is nil. If that happens, you need to load in some -bookmarks. See help on function `bookmark-load' for more about -this. - -Warning: this function only takes an EVENT as argument. Use the -corresponding bookmark function from Lisp (the one without the -\"-menu-\" in its name)." t nil) - -(autoload 'bookmark-menu-jump "bookmark" "\ -Jump to bookmark BOOKMARK (a point in some file). -You may have a problem using this function if the value of variable -`bookmark-alist' is nil. If that happens, you need to load in some -bookmarks. See help on function `bookmark-load' for more about -this. - -Warning: this function only takes an EVENT as argument. Use the -corresponding bookmark function from Lisp (the one without the -\"-menu-\" in its name)." t nil) - -(autoload 'bookmark-menu-locate "bookmark" "\ -Insert the name of the file associated with BOOKMARK. -\(This is not the same as the contents of that file). - -Warning: this function only takes an EVENT as argument. Use the -corresponding bookmark function from Lisp (the one without the -\"-menu-\" in its name)." t nil) - -(autoload 'bookmark-menu-rename "bookmark" "\ -Change the name of OLD-BOOKMARK to NEWNAME. -If called from keyboard, prompts for OLD-BOOKMARK and NEWNAME. -If called from menubar, OLD-BOOKMARK is selected from a menu, and -prompts for NEWNAME. -If called from Lisp, prompts for NEWNAME if only OLD-BOOKMARK was -passed as an argument. If called with two strings, then no prompting -is done. You must pass at least OLD-BOOKMARK when calling from Lisp. - -While you are entering the new name, consecutive C-w's insert -consectutive words from the text of the buffer into the new bookmark -name. - -Warning: this function only takes an EVENT as argument. Use the -corresponding bookmark function from Lisp (the one without the -\"-menu-\" in its name)." t nil) - -(autoload 'bookmark-menu-delete "bookmark" "\ -Delete the bookmark named NAME from the bookmark list. -Removes only the first instance of a bookmark with that name. If -there are one or more other bookmarks with the same name, they will -not be deleted. Defaults to the \"current\" bookmark (that is, the -one most recently used in this file, if any). - -Warning: this function only takes an EVENT as argument. Use the -corresponding bookmark function from Lisp (the one without the -\"-menu-\" in its name)." t nil) - -;;;*** - -;;;### (autoloads nil "buff-menu" "packages/buff-menu.el" (12731 19095)) -;;; Generated autoloads from packages/buff-menu.el - -;;;### (autoloads (command-history-mode list-command-history repeat-matching-complex-command) "chistory" "packages/chistory.el" (12546 37604)) -;;; Generated autoloads from packages/chistory.el - -(autoload 'repeat-matching-complex-command "chistory" "\ -Edit and re-evaluate complex command with name matching PATTERN. -Matching occurrences are displayed, most recent first, until you -select a form for evaluation. If PATTERN is empty (or nil), every form -in the command history is offered. The form is placed in the minibuffer -for editing and the result is evaluated." t nil) - -(autoload 'list-command-history "chistory" "\ -List history of commands typed to minibuffer. -The number of commands listed is controlled by `list-command-history-max'. -Calls value of `list-command-history-filter' (if non-nil) on each history -element to judge if that element should be excluded from the list. - -The buffer is left in Command History mode." t nil) - -(autoload 'command-history-mode "chistory" "\ -Major mode for examining commands from `command-history'. -The number of commands listed is controlled by `list-command-history-max'. -The command history is filtered by `list-command-history-filter' if non-nil. -Use \\<command-history-map>\\[command-history-repeat] to repeat the command on the current line. - -Otherwise much like Emacs-Lisp Mode except that there is no self-insertion -and digits provide prefix arguments. Tab does not indent. -\\{command-history-map} -Calls the value of `command-history-hook' if that is non-nil. -The Command History listing is recomputed each time this mode is invoked." t nil) - -;;;*** - -;;;### (autoloads nil "cmuscheme" "packages/cmuscheme.el" (12546 63882)) -;;; Generated autoloads from packages/cmuscheme.el - -(add-hook 'same-window-buffer-names "*scheme*") - -;;;*** - -;;;### (autoloads (display-column-mode) "column" "packages/column.el" (12657 15255)) -;;; Generated autoloads from packages/column.el - -(autoload 'display-column-mode "column" "\ -Toggle display column mode. -With prefix arg, turn display column mode on iff arg is positive. - -When display column mode is on, the current column and line number are -displayed in the mode line." t nil) - -;;;*** - -;;;### (autoloads (compare-windows) "compare-w" "packages/compare-w.el" (12547 41213)) -;;; Generated autoloads from packages/compare-w.el - -(autoload 'compare-windows "compare-w" "\ -Compare text in current window with text in next window. -Compares the text starting at point in each window, -moving over text in each one as far as they match. - -This command pushes the mark in each window -at the prior location of point in that window. -If both windows display the same buffer, -the mark is pushed twice in that buffer: -first in the other window, then in the selected window. - -A prefix arg means ignore changes in whitespace. -The variable `compare-windows-whitespace' controls how whitespace is skipped. -If `compare-ignore-case' is non-nil, changes in case are also ignored." t nil) - -;;;*** - -;;;### (autoloads (first-error previous-error next-error compilation-minor-mode grep compile) "compile" "packages/compile.el" (12743 22072)) -;;; Generated autoloads from packages/compile.el - -(defvar compilation-mode-hook nil "\ -*List of hook functions run by `compilation-mode' (see `run-hooks').") - -(defvar compilation-window-height nil "\ -*Number of lines in a compilation window. If nil, use Emacs default.") - -(defvar compilation-buffer-name-function nil "\ -Function to compute the name of a compilation buffer. -The function receives one argument, the name of the major mode of the -compilation buffer. It should return a string. -nil means compute the name with `(concat \"*\" (downcase major-mode) \"*\")'.") - -(defvar compilation-finish-function nil "\ -*Function to call when a compilation process finishes. -It is called with two arguments: the compilation buffer, and a string -describing how the process finished.") - -(defvar compilation-search-path '(nil) "\ -*List of directories to search for source files named in error messages. -Elements should be directory names, not file names of directories. -nil as an element means to try the default directory.") - -(autoload 'compile "compile" "\ -Compile the program including the current buffer. Default: run `make'. -Runs COMMAND, a shell command, in a separate process asynchronously -with output going to the buffer `*compilation*'. - -You can then use the command \\[next-error] to find the next error message -and move to the source code that caused it. - -Interactively, prompts for the command if `compilation-read-command' is -non-nil; otherwise uses `compile-command'. With prefix arg, always prompts. - -To run more than one compilation at once, start one and rename the -`*compilation*' buffer to some other name with \\[rename-buffer]. -Then start the next one. - -The name used for the buffer is actually whatever is returned by -the function in `compilation-buffer-name-function', so you can set that -to a function that generates a unique name." t nil) - -(autoload 'grep "compile" "\ -Run grep, with user-specified args, and collect output in a buffer. -While grep runs asynchronously, you can use the \\[next-error] command -to find the text that grep hits refer to. - -This command uses a special history list for its arguments, so you can -easily repeat a grep command." t nil) - -(autoload 'compilation-minor-mode "compile" "\ -Toggle compilation minor mode. -With arg, turn compilation mode on if and only if arg is positive. -See `compilation-mode'. -! \\{compilation-mode-map}" t nil) - -(autoload 'next-error "compile" "\ -Visit next compilation error message and corresponding source code. -This operates on the output from the \\[compile] command. -If all preparsed error messages have been processed, -the error message buffer is checked for new ones. - -A prefix arg specifies how many error messages to move; -negative means move back to previous error messages. -Just C-u as a prefix means reparse the error message buffer -and start at the first error. - -\\[next-error] normally applies to the most recent compilation started, -but as long as you are in the middle of parsing errors from one compilation -output buffer, you stay with that compilation output buffer. - -Use \\[next-error] in a compilation output buffer to switch to -processing errors from that compilation. - -See variables `compilation-parse-errors-function' and -`compilation-error-regexp-alist' for customization ideas." t nil) - -(autoload 'previous-error "compile" "\ -Visit previous compilation error message and corresponding source code. -This operates on the output from the \\[compile] command." t nil) - -(autoload 'first-error "compile" "\ -Reparse the error message buffer and start at the first error -Visit corresponding source code. -This operates on the output from the \\[compile] command." t nil) - -(define-key ctl-x-map "`" 'next-error) - -;;;*** - -;;;### (autoloads nil "completion" "packages/completion.el" (12547 41271)) -;;; Generated autoloads from packages/completion.el - -;;;*** - -;;;### (autoloads nil "crypt" "packages/crypt.el" (12743 22072)) -;;; Generated autoloads from packages/crypt.el - -;;;*** - -;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "packages/dabbrev.el" (12547 2068)) -;;; Generated autoloads from packages/dabbrev.el - -(define-key global-map [(meta /)] 'dabbrev-expand) - -(define-key global-map [(meta control /)] 'dabbrev-completion) - -(autoload 'dabbrev-completion "dabbrev" "\ -Completion on current word. -Like \\[dabbrev-expand] but finds all expansions in the current buffer -and presents suggestions for completion. - -With a prefix argument, it searches all buffers accepted by the -function pointed out by `dabbrev-friend-buffer-function' to find the -completions. - -If the prefix argument is 16 (which comes from C-u C-u), -then it searches *all* buffers. - -With no prefix argument, it reuses an old completion list -if there is a suitable one already." t nil) - -(autoload 'dabbrev-expand "dabbrev" "\ -Expand previous word \"dynamically\". - -Expands to the most recent, preceding word for which this is a prefix. -If no suitable preceding word is found, words following point are -considered. If still no suitable word is found, then look in the -buffers accepted by the function pointed out by variable -`dabbrev-friend-buffer-function'. - -A positive prefix argument, N, says to take the Nth backward *distinct* -possibility. A negative argument says search forward. - -If the cursor has not moved from the end of the previous expansion and -no argument is given, replace the previously-made expansion -with the next possible expansion not yet tried. - -The variable `dabbrev-backward-only' may be used to limit the -direction of search to backward if set non-nil. - -See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion]." t nil) - -;;;*** - -;;;### (autoloads nil "desktop" "packages/desktop.el" (12547 41259)) -;;; Generated autoloads from packages/desktop.el - -;;;*** - -;;;### (autoloads nil "detexinfo" "packages/detexinfo.el" (12285 55375)) -;;; Generated autoloads from packages/detexinfo.el - -;;;### (autoloads (ediff-documentation ediff-version ediff-revision ediff-patch-buffer ediff-patch-file run-ediff-from-cvs-buffer ediff-merge-revisions-with-ancestor ediff-merge-revisions ediff-merge-buffers-with-ancestor ediff-merge-buffers ediff-merge-files-with-ancestor ediff-merge-files ediff-regions-linewise ediff-regions-wordwise ediff-windows-linewise ediff-windows-wordwise ediff-merge-directory-revisions-with-ancestor ediff-merge-directory-revisions ediff-merge-directories-with-ancestor ediff-merge-directories ediff-directories3 ediff-directory-revisions ediff-directories ediff-buffers3 ediff-buffers ediff-files3 ediff-files) "ediff" "ediff/ediff.el" (12740 25221)) -;;; Generated autoloads from ediff/ediff.el - -(autoload 'ediff-files "ediff" "\ -Run Ediff on a pair of files, FILE-A and FILE-B." t nil) - -(autoload 'ediff-files3 "ediff" "\ -Run Ediff on three files, FILE-A, FILE-B, and FILE-C." t nil) - -(defalias 'ediff3 'ediff-files3) - -(defalias 'ediff 'ediff-files) - -(autoload 'ediff-buffers "ediff" "\ -Run Ediff on a pair of buffers, BUFFER-A and BUFFER-B." t nil) - -(defalias 'ebuffers 'ediff-buffers) - -(autoload 'ediff-buffers3 "ediff" "\ -Run Ediff on three buffers, BUFFER-A, BUFFER-B, and BUFFER-C." t nil) - -(defalias 'ebuffers3 'ediff-buffers3) - -(autoload 'ediff-directories "ediff" "\ -Run Ediff on a pair of directories, DIR1 and DIR2, comparing files that have -the same name in both. The third argument, REGEXP, is a regular expression that -can be used to filter out certain file names." t nil) - -(defalias 'edirs 'ediff-directories) - -(autoload 'ediff-directory-revisions "ediff" "\ -Run Ediff on a directory, DIR1, comparing its files with their revisions. -The second argument, REGEXP, is a regular expression that filters the file -names. Only the files that are under revision control are taken into account." t nil) - -(defalias 'edir-revisions 'ediff-directory-revisions) - -(autoload 'ediff-directories3 "ediff" "\ -Run Ediff on three directories, DIR1, DIR2, and DIR3, comparing files that -have the same name in all three. The last argument, REGEXP, is a regular -expression that can be used to filter out certain file names." t nil) - -(defalias 'edirs3 'ediff-directories3) - -(autoload 'ediff-merge-directories "ediff" "\ -Run Ediff on a pair of directories, DIR1 and DIR2, merging files that have -the same name in both. The third argument, REGEXP, is a regular expression that -can be used to filter out certain file names." t nil) - -(defalias 'edirs-merge 'ediff-merge-directories) - -(autoload 'ediff-merge-directories-with-ancestor "ediff" "\ -Merge files in directories DIR1 and DIR2 using files in ANCESTOR-DIR as ancestors. -Ediff merges files that have identical names in DIR1, DIR2. If a pair of files -in DIR1 and DIR2 doesn't have an ancestor in ANCESTOR-DIR, Ediff will merge -without ancestor. The fourth argument, REGEXP, is a regular expression that -can be used to filter out certain file names." t nil) - -(autoload 'ediff-merge-directory-revisions "ediff" "\ -Run Ediff on a directory, DIR1, merging its files with their revisions. -The second argument, REGEXP, is a regular expression that filters the file -names. Only the files that are under revision control are taken into account." t nil) - -(defalias 'edir-merge-revisions 'ediff-merge-directory-revisions) - -(autoload 'ediff-merge-directory-revisions-with-ancestor "ediff" "\ -Run Ediff on a directory, DIR1, merging its files with their revisions and ancestors. -The second argument, REGEXP, is a regular expression that filters the file -names. Only the files that are under revision control are taken into account." t nil) - -(defalias 'edir-merge-revisions-with-ancestor 'ediff-merge-directory-revisions-with-ancestor) - -(defalias 'edirs-merge-with-ancestor 'ediff-merge-directories-with-ancestor) - -(autoload 'ediff-windows-wordwise "ediff" "\ -Compare WIND-A and WIND-B, which are selected by clicking, wordwise. -With prefix argument, DUMB-MODE, or on a non-windowing display, works as -follows: -If WIND-A is nil, use selected window. -If WIND-B is nil, use window next to WIND-A." t nil) - -(autoload 'ediff-windows-linewise "ediff" "\ -Compare WIND-A and WIND-B, which are selected by clicking, linewise. -With prefix argument, DUMB-MODE, or on a non-windowing display, works as -follows: -If WIND-A is nil, use selected window. -If WIND-B is nil, use window next to WIND-A." t nil) - -(autoload 'ediff-regions-wordwise "ediff" "\ -Run Ediff on a pair of regions in two different buffers. -Regions (i.e., point and mark) are assumed to be set in advance. -This function is effective only for relatively small regions, up to 200 -lines. For large regions, use `ediff-regions-linewise'." t nil) - -(autoload 'ediff-regions-linewise "ediff" "\ -Run Ediff on a pair of regions in two different buffers. -Regions (i.e., point and mark) are assumed to be set in advance. -Each region is enlarged to contain full lines. -This function is effective for large regions, over 100-200 -lines. For small regions, use `ediff-regions-wordwise'." t nil) - -(defalias 'ediff-merge 'ediff-merge-files) - -(autoload 'ediff-merge-files "ediff" "\ -Merge two files without ancestor." t nil) - -(autoload 'ediff-merge-files-with-ancestor "ediff" "\ -Merge two files with ancestor." t nil) - -(defalias 'ediff-merge-with-ancestor 'ediff-merge-files-with-ancestor) - -(autoload 'ediff-merge-buffers "ediff" "\ -Merge buffers without ancestor." t nil) - -(autoload 'ediff-merge-buffers-with-ancestor "ediff" "\ -Merge buffers with ancestor." t nil) - -(autoload 'ediff-merge-revisions "ediff" "\ -Run Ediff by merging two revisions of a file. -The file is the optional FILE argument or the file visited by the current -buffer." t nil) - -(autoload 'ediff-merge-revisions-with-ancestor "ediff" "\ -Run Ediff by merging two revisions of a file with a common ancestor. -The file is the the optional FILE argument or the file visited by the current -buffer." t nil) - -(autoload 'run-ediff-from-cvs-buffer "ediff" "\ -Run Ediff-merge on appropriate revisions of the selected file. -First run after `M-x cvs-update'. Then place the cursor on a lide describing a -file and then run `run-ediff-from-cvs-buffer'." t nil) - -(autoload 'ediff-patch-file "ediff" "\ -Run Ediff by patching SOURCE-FILENAME." t nil) - -(autoload 'ediff-patch-buffer "ediff" "\ -Run Ediff by patching BUFFER-NAME." t nil) - -(defalias 'epatch 'ediff-patch-file) - -(defalias 'epatch-buffer 'ediff-patch-buffer) - -(autoload 'ediff-revision "ediff" "\ -Run Ediff by comparing versions of a file. -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) - -(autoload 'ediff-version "ediff" "\ -Return string describing the version of Ediff. -When called interactively, displays the version." t nil) - -(autoload 'ediff-documentation "ediff" "\ -Display Ediff's manual." t nil) - -;;;*** - -;;;### (autoloads (diff-backup diff) "diff" "packages/diff.el" (12547 2066)) -;;; Generated autoloads from packages/diff.el - -(defvar diff-switches (purecopy "-c") "\ -*A string or list of strings specifying switches to be be passed to diff.") - -(autoload 'diff "diff" "\ -Find and display the differences between OLD and NEW files. -Interactively the current buffer's file name is the default for NEW -and a backup file for NEW is the default for OLD. -With prefix arg, prompt for diff switches." t nil) - -(autoload 'diff-backup "diff" "\ -Diff this file with its backup file or vice versa. -Uses the latest backup, if there are several numerical backups. -If this file is a backup, diff it with its original. -The backup file is the first file given to `diff'." t nil) - -;;;*** - -;;;### (autoloads nil "doctex" "packages/doctex.el" (12073 20620)) -;;; Generated autoloads from packages/doctex.el - -;;;### (autoloads (edit-faces) "edit-faces" "packages/edit-faces.el" (12743 11661)) -;;; Generated autoloads from packages/edit-faces.el - -(autoload 'edit-faces "edit-faces" "\ -Alter face characteristics by editing a list of defined faces. -Pops up a buffer containing a list of defined faces. - -Editing commands: - -\\{edit-faces-mode-map}" t nil) - -;;;*** - -;;;### (autoloads (report-emacs-bug) "emacsbug" "packages/emacsbug.el" (12547 41218)) -;;; Generated autoloads from packages/emacsbug.el - -(autoload 'report-emacs-bug "emacsbug" "\ -Report a bug in GNU Emacs. -Prompts for bug subject. Leaves you in a mail buffer." t nil) - -;;;*** - -;;;### (autoloads (emerge-merge-directories emerge-revisions-with-ancestor emerge-revisions emerge-files-with-ancestor-remote emerge-files-remote emerge-files-with-ancestor-command emerge-files-command emerge-buffers-with-ancestor emerge-buffers emerge-files-with-ancestor emerge-files) "emerge" "packages/emerge.el" (12547 41220)) -;;; Generated autoloads from packages/emerge.el - -(autoload 'emerge-files "emerge" "\ -Run Emerge on two files." t nil) - -(fset 'emerge 'emerge-files) - -(autoload 'emerge-files-with-ancestor "emerge" "\ -Run Emerge on two files, giving another file as the ancestor." t nil) - -(autoload 'emerge-buffers "emerge" "\ -Run Emerge on two buffers." t nil) - -(autoload 'emerge-buffers-with-ancestor "emerge" "\ -Run Emerge on two buffers, giving another buffer as the ancestor." t nil) - -(autoload 'emerge-files-command "emerge" nil nil nil) - -(autoload 'emerge-files-with-ancestor-command "emerge" nil nil nil) - -(autoload 'emerge-files-remote "emerge" nil nil nil) - -(autoload 'emerge-files-with-ancestor-remote "emerge" nil nil nil) - -(autoload 'emerge-revisions "emerge" "\ -Emerge two RCS revisions of a file." t nil) - -(autoload 'emerge-revisions-with-ancestor "emerge" "\ -Emerge two RCS revisions of a file, with another revision as ancestor." t nil) - -(autoload 'emerge-merge-directories "emerge" nil t nil) - -;;;*** - -;;;### (autoloads (tags-apropos list-tags tags-query-replace tags-search tags-loop-continue next-file find-tag-other-window find-tag visit-tags-table) "etags" "packages/etags.el" (12743 22072)) -;;; Generated autoloads from packages/etags.el - -(defvar tags-build-completion-table 'ask "\ -*If this variable is nil, then tags completion is disabled. -If this variable is t, then things which prompt for tags will do so with - completion across all known tags. -If this variable is the symbol `ask', then you will be asked whether each - tags table should be added to the completion list as it is read in. - (With the exception that for very small tags tables, you will not be asked, - since they can be parsed quickly.)") - -(defvar tags-always-exact nil "\ -*If this variable is non-nil, then tags always looks for exact matches.") - -(defvar tag-table-alist nil "\ -*A list which determines which tags files should be active for a -given buffer. This is not really an association list, in that all -elements are checked. The CAR of each element of this list is a -pattern against which the buffer's file name is compared; if it -matches, then the CDR of the list should be the name of the tags -table to use. If more than one element of this list matches the -buffer's file name, then all of the associated tags tables will be -used. Earlier ones will be searched first. - -If the CAR of elements of this list are strings, then they are treated -as regular-expressions against which the file is compared (like the -auto-mode-alist). If they are not strings, then they are evaluated. -If they evaluate to non-nil, then the current buffer is considered to -match. - -If the CDR of the elements of this list are strings, then they are -assumed to name a TAGS file. If they name a directory, then the string -\"TAGS\" is appended to them to get the file name. If they are not -strings, then they are evaluated, and must return an appropriate string. - -For example: - (setq tag-table-alist - '((\"/usr/src/public/perl/\" . \"/usr/src/public/perl/perl-3.0/\") - (\"\\\\.el$\" . \"/usr/local/emacs/src/\") - (\"/jbw/gnu/\" . \"/usr15/degree/stud/jbw/gnu/\") - (\"\" . \"/usr/local/emacs/src/\") - )) - -This means that anything in the /usr/src/public/perl/ directory should use -the TAGS file /usr/src/public/perl/perl-3.0/TAGS; and file ending in .el should -use the TAGS file /usr/local/emacs/src/TAGS; and anything in or below the -directory /jbw/gnu/ should use the TAGS file /usr15/degree/stud/jbw/gnu/TAGS. -A file called something like \"/usr/jbw/foo.el\" would use both the TAGS files -/usr/local/emacs/src/TAGS and /usr15/degree/stud/jbw/gnu/TAGS (in that order) -because it matches both patterns. - -If the buffer-local variable `buffer-tag-table' is set, then it names a tags -table that is searched before all others when find-tag is executed from this -buffer. - -If there is a file called \"TAGS\" in the same directory as the file in -question, then that tags file will always be used as well (after the -`buffer-tag-table' but before the tables specified by this list.) - -If the variable tags-file-name is set, then the tags file it names will apply -to all buffers (for backwards compatibility.) It is searched first. -") - -(autoload 'visit-tags-table "etags" "\ -Tell tags commands to use tags table file FILE first. -FILE should be the name of a file created with the `etags' program. -A directory name is ok too; it means file TAGS in that directory." t nil) - -(autoload 'find-tag "etags" "\ -*Find tag whose name contains TAGNAME. - Selects the buffer that the tag is contained in -and puts point at its definition. - If TAGNAME is a null string, the expression in the buffer -around or before point is used as the tag name. - If called interactively with a numeric argument, searches for the next tag -in the tag table that matches the tagname used in the previous find-tag. - If second arg OTHER-WINDOW is non-nil, uses another window to display -the tag. - -This version of this function supports multiple active tags tables, -and completion. - -Variables of note: - - tag-table-alist controls which tables apply to which buffers - tags-file-name a default tags table - tags-build-completion-table controls completion behavior - buffer-tag-table another way of specifying a buffer-local table - make-tags-files-invisible whether tags tables should be very hidden - tag-mark-stack-max how many tags-based hops to remember" t nil) - -(autoload 'find-tag-other-window "etags" "\ -*Find tag whose name contains TAGNAME. - Selects the buffer that the tag is contained in in another window -and puts point at its definition. - If TAGNAME is a null string, the expression in the buffer -around or before point is used as the tag name. - If second arg NEXT is non-nil (interactively, with prefix arg), -searches for the next tag in the tag table -that matches the tagname used in the previous find-tag. - -This version of this function supports multiple active tags tables, -and completion. - -Variables of note: - - tag-table-alist controls which tables apply to which buffers - tags-file-name a default tags table - tags-build-completion-table controls completion behavior - buffer-tag-table another way of specifying a buffer-local table - make-tags-files-invisible whether tags tables should be very hidden - tag-mark-stack-max how many tags-based hops to remember" t nil) - -(autoload 'next-file "etags" "\ -Select next file among files in current tag table(s). - -A first argument of t (prefix arg, if interactive) initializes to the -beginning of the list of files in the (first) tags table. If the argument -is neither nil nor t, it is evalled to initialize the list of files. - -Non-nil second argument NOVISIT means use a temporary buffer -to save time and avoid uninteresting warnings. - -Value is nil if the file was already visited; -if the file was newly read in, the value is the filename." t nil) - -(autoload 'tags-loop-continue "etags" "\ -Continue last \\[tags-search] or \\[tags-query-replace] command. -Used noninteractively with non-nil argument to begin such a command (the -argument is passed to `next-file', which see). -Two variables control the processing we do on each file: -the value of `tags-loop-scan' is a form to be executed on each file -to see if it is interesting (it returns non-nil if so) -and `tags-loop-operate' is a form to execute to operate on an interesting file -If the latter returns non-nil, we exit; otherwise we scan the next file." t nil) - -(autoload 'tags-search "etags" "\ -Search through all files listed in tags table for match for REGEXP. -Stops when a match is found. -To continue searching for next match, use command \\[tags-loop-continue]. - -See documentation of variable `tag-table-alist'." t nil) - -(autoload 'tags-query-replace "etags" "\ -Query-replace-regexp FROM with TO through all files listed in tags table. -Third arg DELIMITED (prefix arg) means replace only word-delimited matches. -If you exit (\\[keyboard-quit] or ESC), you can resume the query-replace -with the command \\[tags-loop-continue]. - -See documentation of variable `tag-table-alist'." t nil) - -(autoload 'list-tags "etags" "\ -Display list of tags in file FILE. -FILE should not contain a directory spec -unless it has one in the tag table." t nil) - -(autoload 'tags-apropos "etags" "\ -Display list of all tags in tag table REGEXP matches." t nil) - -;;;*** - -;;;### (autoloads nil "fa-extras" "packages/fa-extras.el" (12547 41264)) -;;; Generated autoloads from packages/fa-extras.el - -;;;### (autoloads (turn-on-fast-lock fast-lock-mode) "fast-lock" "packages/fast-lock.el" (12557 11949)) -;;; Generated autoloads from packages/fast-lock.el - -(defvar fast-lock-mode nil) - -(autoload 'fast-lock-mode "fast-lock" "\ -Toggle Fast Lock mode. -With arg, turn Fast Lock mode on if and only if arg is positive and the buffer -is associated with a file. Enable it automatically in your `~/.emacs' by: - - (add-hook 'font-lock-mode-hook 'turn-on-fast-lock) - -If Fast Lock mode is enabled, and the current buffer does not contain any text -properties, any associated Font Lock cache is used if its timestamp matches the -buffer's file, and its `font-lock-keywords' match those that you are using. - -Font Lock caches may be saved: - - When you save the file's buffer. - - When you kill an unmodified file's buffer. - - When you exit Emacs, for all unmodified or saved buffers. -Depending on the value of `fast-lock-save-events'. -See also the commands `fast-lock-read-cache' and `fast-lock-save-cache'. - -Use \\[font-lock-fontify-buffer] to fontify the buffer if the cache is bad. - -Various methods of control are provided for the Font Lock cache. In general, -see variable `fast-lock-cache-directories' and function `fast-lock-cache-name'. -For saving, see variables `fast-lock-minimum-size', `fast-lock-save-events', -`fast-lock-save-others' and `fast-lock-save-faces'. - -Use \\[fast-lock-submit-bug-report] to send bug reports or feedback." t nil) - -(autoload 'turn-on-fast-lock "fast-lock" "\ -Unconditionally turn on Fast Lock mode." nil nil) - -(add-minor-mode 'fast-lock-mode " Fast") - -;;;*** - -;;;### (autoloads (feedmail-send-it) "feedmail" "packages/feedmail.el" (12695 9732)) -;;; Generated autoloads from packages/feedmail.el - -(autoload 'feedmail-send-it "feedmail" nil nil nil) - -;;;*** - -;;;### (autoloads (make-file-part) "file-part" "packages/file-part.el" (12637 25166)) -;;; Generated autoloads from packages/file-part.el - -(autoload 'make-file-part "file-part" "\ -Make a file part on buffer BUFFER out of the region. Call it NAME. -This command creates a new buffer containing the contents of the -region and marks the buffer as referring to the specified buffer, -called the `master buffer'. When the file-part buffer is saved, -its changes are integrated back into the master buffer. When the -master buffer is deleted, all file parts are deleted with it. - -When called from a function, expects four arguments, START, END, -NAME, and BUFFER, all of which are optional and default to the -beginning of BUFFER, the end of BUFFER, a name generated from -BUFFER's name, and the current buffer, respectively." t nil) - -;;;*** - -;;;### (autoloads nil "filladapt" "packages/filladapt.el" (12731 26117)) -;;; Generated autoloads from packages/filladapt.el - -;;;*** - -;;;### (autoloads (font-lock-fontify-buffer turn-off-font-lock turn-on-font-lock font-lock-mode) "font-lock" "packages/font-lock.el" (12730 62142)) -;;; Generated autoloads from packages/font-lock.el - -(defvar font-lock-auto-fontify t "\ -*Whether font-lock should automatically fontify files as they're loaded. -This will only happen if font-lock has fontifying keywords for the major -mode of the file. You can get finer-grained control over auto-fontification -by using this variable in combination with `font-lock-mode-enable-list' or -`font-lock-mode-disable-list'.") - -(defvar font-lock-mode-enable-list nil "\ -*List of modes to auto-fontify, if `font-lock-auto-fontify' is nil.") - -(defvar font-lock-mode-disable-list nil "\ -*List of modes not to auto-fontify, if `font-lock-auto-fontify' is t.") - -(defvar font-lock-use-colors '(color) "\ -*Specification for when Font Lock will set up color defaults. -Normally this should be '(color), meaning that Font Lock will set up -color defaults that are only used on color displays. Set this to nil -if you don't want Font Lock to set up color defaults at all. This -should be one of - --- a list of valid tags, meaning that the color defaults will be used - when all of the tags apply. (e.g. '(color x)) --- a list whose first element is 'or and whose remaining elements are - lists of valid tags, meaning that the defaults will be used when - any of the tag lists apply. --- nil, meaning that the defaults should not be set up at all. - -\(If you specify face values in your init file, they will override any -that Font Lock specifies, regardless of whether you specify the face -values before or after loading Font Lock.) - -See also `font-lock-use-fonts'. If you want more control over the faces -used for fontification, see the documentation of `font-lock-mode' for -how to do it.") - -(defvar font-lock-use-fonts '(or (mono) (grayscale)) "\ -*Specification for when Font Lock will set up non-color defaults. - -Normally this should be '(or (mono) (grayscale)), meaning that Font -Lock will set up non-color defaults that are only used on either mono -or grayscale displays. Set this to nil if you don't want Font Lock to -set up non-color defaults at all. This should be one of - --- a list of valid tags, meaning that the non-color defaults will be used - when all of the tags apply. (e.g. '(grayscale x)) --- a list whose first element is 'or and whose remaining elements are - lists of valid tags, meaning that the defaults will be used when - any of the tag lists apply. --- nil, meaning that the defaults should not be set up at all. - -\(If you specify face values in your init file, they will override any -that Font Lock specifies, regardless of whether you specify the face -values before or after loading Font Lock.) - -See also `font-lock-use-colors'. If you want more control over the faces -used for fontification, see the documentation of `font-lock-mode' for -how to do it.") - -(defvar font-lock-maximum-decoration nil "\ -*If non-nil, the maximum decoration level for fontifying. -If nil, use the minimum decoration (equivalent to level 0). -If t, use the maximum decoration available. -If a number, use that level of decoration (or if not available the maximum). -If a list, each element should be a cons pair of the form (MAJOR-MODE . LEVEL), -where MAJOR-MODE is a symbol or t (meaning the default). For example: - ((c++-mode . 2) (c-mode . t) (t . 1)) -means use level 2 decoration for buffers in `c++-mode', the maximum decoration -available for buffers in `c-mode', and level 1 decoration otherwise.") - -(define-obsolete-variable-alias 'font-lock-use-maximal-decoration 'font-lock-maximum-decoration) - -(defvar font-lock-maximum-size (* 250 1024) "\ -*If non-nil, the maximum size for buffers for fontifying. -Only buffers less than this can be fontified when Font Lock mode is turned on. -If nil, means size is irrelevant. -If a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE), -where MAJOR-MODE is a symbol or t (meaning the default). For example: - ((c++-mode . 256000) (c-mode . 256000) (rmail-mode . 1048576)) -means that the maximum size is 250K for buffers in `c++-mode' or `c-mode', one -megabyte for buffers in `rmail-mode', and size is irrelevant otherwise.") - -(defvar font-lock-keywords nil "\ -*A list of the keywords to highlight. -Each element should be of the form: - - MATCHER - (MATCHER . MATCH) - (MATCHER . FACENAME) - (MATCHER . HIGHLIGHT) - (MATCHER HIGHLIGHT ...) - -where HIGHLIGHT should be either MATCH-HIGHLIGHT or MATCH-ANCHORED. - -For highlighting single items, typically only MATCH-HIGHLIGHT is required. -However, if an item or (typically) items is to be hightlighted following the -instance of another item (the anchor) then MATCH-ANCHORED may be required. - -MATCH-HIGHLIGHT should be of the form: - - (MATCH FACENAME OVERRIDE LAXMATCH) - -Where MATCHER can be either the regexp to search for, or the function name to -call to make the search (called with one argument, the limit of the search). -MATCH is the subexpression of MATCHER to be highlighted. FACENAME is either -a symbol naming a face, or an expression whose value is the face name to use. -If you want FACENAME to be a symbol that evaluates to a face, use a form -like \"(progn sym)\". - -OVERRIDE and LAXMATCH are flags. If OVERRIDE is t, existing fontification may -be overwritten. If `keep', only parts not already fontified are highlighted. -If `prepend' or `append', existing fontification is merged with the new, in -which the new or existing fontification, respectively, takes precedence. -If LAXMATCH is non-nil, no error is signalled if there is no MATCH in MATCHER. - -For example, an element of the form highlights (if not already highlighted): - - \"\\\\\\=<foo\\\\\\=>\" Discrete occurrences of \"foo\" in the value of the - variable `font-lock-keyword-face'. - (\"fu\\\\(bar\\\\)\" . 1) Substring \"bar\" within all occurrences of \"fubar\" in - the value of `font-lock-keyword-face'. - (\"fubar\" . fubar-face) Occurrences of \"fubar\" in the value of `fubar-face'. - (\"foo\\\\|bar\" 0 foo-bar-face t) - Occurrences of either \"foo\" or \"bar\" in the value - of `foo-bar-face', even if already highlighted. - -MATCH-ANCHORED should be of the form: - - (MATCHER PRE-MATCH-FORM POST-MATCH-FORM MATCH-HIGHLIGHT ...) - -Where MATCHER is as for MATCH-HIGHLIGHT with one exception. The limit of the -search is currently guaranteed to be (no greater than) the end of the line. -PRE-MATCH-FORM and POST-MATCH-FORM are evaluated before the first, and after -the last, instance MATCH-ANCHORED's MATCHER is used. Therefore they can be -used to initialise before, and cleanup after, MATCHER is used. Typically, -PRE-MATCH-FORM is used to move to some position relative to the original -MATCHER, before starting with MATCH-ANCHORED's MATCHER. POST-MATCH-FORM might -be used to move, before resuming with MATCH-ANCHORED's parent's MATCHER. - -For example, an element of the form highlights (if not already highlighted): - - (\"\\\\\\=<anchor\\\\\\=>\" (0 anchor-face) (\"\\\\\\=<item\\\\\\=>\" nil nil (0 item-face))) - - Discrete occurrences of \"anchor\" in the value of `anchor-face', and subsequent - discrete occurrences of \"item\" (on the same line) in the value of `item-face'. - (Here PRE-MATCH-FORM and POST-MATCH-FORM are nil. Therefore \"item\" is - initially searched for starting from the end of the match of \"anchor\", and - searching for subsequent instance of \"anchor\" resumes from where searching - for \"item\" concluded.) - -Note that the MATCH-ANCHORED feature is experimental; in the future, we may -replace it with other ways of providing this functionality. - -These regular expressions should not match text which spans lines. While -\\[font-lock-fontify-buffer] handles multi-line patterns correctly, updating -when you edit the buffer does not, since it considers text one line at a time. - -Be very careful composing regexps for this list; -the wrong pattern can dramatically slow things down!") - -(make-variable-buffer-local 'font-lock-keywords) - -(defvar font-lock-mode nil) - -(defvar font-lock-mode-hook nil "\ -Function or functions to run on entry to font-lock-mode.") - -(autoload 'font-lock-mode "font-lock" "\ -Toggle Font Lock Mode. -With arg, turn font-lock mode on if and only if arg is positive. - -When Font Lock mode is enabled, text is fontified as you type it: - - - Comments are displayed in `font-lock-comment-face'; - - Strings are displayed in `font-lock-string-face'; - - Documentation strings (in Lisp-like languages) are displayed in - `font-lock-doc-string-face'; - - Language keywords (\"reserved words\") are displayed in - `font-lock-keyword-face'; - - Function names in their defining form are displayed in - `font-lock-function-name-face'; - - Variable names in their defining form are displayed in - `font-lock-variable-name-face'; - - Type names are displayed in `font-lock-type-face'; - - References appearing in help files and the like are displayed - in `font-lock-reference-face'; - - Preprocessor declarations are displayed in - `font-lock-preprocessor-face'; - - and - - - Certain other expressions are displayed in other faces according - to the value of the variable `font-lock-keywords'. - -Where modes support different levels of fontification, you can use the variable -`font-lock-maximum-decoration' to specify which level you generally prefer. -When you turn Font Lock mode on/off the buffer is fontified/defontified, though -fontification occurs only if the buffer is less than `font-lock-maximum-size'. -To fontify a buffer without turning on Font Lock mode, and regardless of buffer -size, you can use \\[font-lock-fontify-buffer]. - -See the variable `font-lock-keywords' for customization." t nil) - -(autoload 'turn-on-font-lock "font-lock" "\ -Unconditionally turn on Font Lock mode." nil nil) - -(autoload 'turn-off-font-lock "font-lock" "\ -Unconditionally turn off Font Lock mode." nil nil) - -(autoload 'font-lock-fontify-buffer "font-lock" "\ -Fontify the current buffer the way `font-lock-mode' would. -See `font-lock-mode' for details. - -This can take a while for large buffers." t nil) - -(add-minor-mode 'font-lock-mode " Font") - -;;;*** - -;;;### (autoloads nil "fontl-hooks" "packages/fontl-hooks.el" (12554 42334)) -;;; Generated autoloads from packages/fontl-hooks.el - -;;;*** - -;;;### (autoloads nil "func-menu" "packages/func-menu.el" (12721 2451)) -;;; Generated autoloads from packages/func-menu.el - -;;;### (autoloads (sc-mode) "generic-sc" "packages/generic-sc.el" (12147 25472)) -;;; Generated autoloads from packages/generic-sc.el - -(autoload 'sc-mode "generic-sc" "\ -Toggle sc-mode. -SYSTEM can be sccs, rcs or cvs. -Cvs requires the pcl-cvs package. - -The following commands are available -\\[sc-next-operation] perform next logical source control operation on current file -\\[sc-show-changes] compare the version being edited with an older one -\\[sc-version-diff-file] compare two older versions of a file -\\[sc-show-history] display change history of current file -\\[sc-visit-previous-revision] display an older revision of current file -\\[sc-revert-file] revert buffer to last checked-in version -\\[sc-list-all-locked-files] show all files locked in current directory -\\[sc-list-locked-files] show all files locked by you in current directory -\\[sc-list-registered-files] show all files under source control in current directory -\\[sc-update-directory] get fresh copies of files checked-in by others in current directory -\\[sc-rename-file] rename the current file and its source control file - - -While you are entering a change log message for a check in, sc-log-entry-mode -will be in effect. - -Global user options: - sc-diff-command A list consisting of the command and flags - to be used for generating context diffs. - sc-mode-expert suppresses some conformation prompts, - notably for delta aborts and file saves. - sc-max-log-size specifies the maximum allowable size - of a log message plus one. - - -When using SCCS you have additional commands and options - -\\[sccs-insert-headers] insert source control headers in current file - -When you generate headers into a buffer using \\[sccs-insert-headers], -the value of sc-insert-headers-hook is called before insertion. If the -file is recognized a C or Lisp source, sc-insert-c-header-hook or -sc-insert-lisp-header-hook is called after insertion respectively. - - sccs-headers-wanted which %-keywords to insert when adding - headers with C-c h - sccs-insert-static if non-nil, keywords inserted in C files - get stuffed in a static string area so that - what(1) can see them in the compiled object code. - -When using CVS you have additional commands - -\\[sc-cvs-update-directory] update the current directory using pcl-cvs -\\[sc-cvs-file-status] show the CVS status of current file -" t nil) - -;;;*** - -;;;### (autoloads (gnuserv-start) "gnuserv" "packages/gnuserv.el" (12738 60129)) -;;; Generated autoloads from packages/gnuserv.el - -(autoload 'gnuserv-start "gnuserv" "\ -Allow this Emacs process to be a server for client processes. -This starts a server communications subprocess through which -client \"editors\" (gnuclient and gnudoit) can send editing commands to -this Emacs job. See the gnuserv(1) manual page for more details. - -Prefix arg means just kill any existing server communications subprocess." t nil) - -;;;*** - -;;;### (autoloads (gopher-atpoint gopher) "gopher" "packages/gopher.el" (12073 20627)) -;;; Generated autoloads from packages/gopher.el - -(autoload 'gopher "gopher" "\ -Start a gopher session. With C-u, prompt for a gopher server." t nil) - -(autoload 'gopher-atpoint "gopher" "\ -Try to interpret the text around point as a gopher bookmark, and dispatch -to that object." t nil) - -;;;*** - -;;;### (autoloads (hexl-find-file hexl-mode) "hexl" "packages/hexl.el" (12666 32966)) -;;; Generated autoloads from packages/hexl.el - -(autoload 'hexl-mode "hexl" "\ -\\<hexl-mode-map> -A major mode for editing binary files in hex dump format. - -This function automatically converts a buffer into the hexl format -using the function `hexlify-buffer'. - -Each line in the buffer has an \"address\" (displayed in hexadecimal) -representing the offset into the file that the characters on this line -are at and 16 characters from the file (displayed as hexadecimal -values grouped every 16 bits) and as their ASCII values. - -If any of the characters (displayed as ASCII characters) are -unprintable (control or meta characters) they will be replaced as -periods. - -If `hexl-mode' is invoked with an argument the buffer is assumed to be -in hexl format. - -A sample format: - - HEX ADDR: 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f ASCII-TEXT - -------- ---- ---- ---- ---- ---- ---- ---- ---- ---------------- - 00000000: 5468 6973 2069 7320 6865 786c 2d6d 6f64 This is hexl-mod - 00000010: 652e 2020 4561 6368 206c 696e 6520 7265 e. Each line re - 00000020: 7072 6573 656e 7473 2031 3620 6279 7465 presents 16 byte - 00000030: 7320 6173 2068 6578 6164 6563 696d 616c s as hexadecimal - 00000040: 2041 5343 4949 0a61 6e64 2070 7269 6e74 ASCII.and print - 00000050: 6162 6c65 2041 5343 4949 2063 6861 7261 able ASCII chara - 00000060: 6374 6572 732e 2020 416e 7920 636f 6e74 cters. Any cont - 00000070: 726f 6c20 6f72 206e 6f6e 2d41 5343 4949 rol or non-ASCII - 00000080: 2063 6861 7261 6374 6572 730a 6172 6520 characters.are - 00000090: 6469 7370 6c61 7965 6420 6173 2070 6572 displayed as per - 000000a0: 696f 6473 2069 6e20 7468 6520 7072 696e iods in the prin - 000000b0: 7461 626c 6520 6368 6172 6163 7465 7220 table character - 000000c0: 7265 6769 6f6e 2e0a region.. - -Movement is as simple as movement in a normal emacs text buffer. Most -cursor movement bindings are the same (ie. Use \\[hexl-backward-char], \\[hexl-forward-char], \\[hexl-next-line], and \\[hexl-previous-line] -to move the cursor left, right, down, and up). - -Advanced cursor movement commands (ala \\[hexl-beginning-of-line], \\[hexl-end-of-line], \\[hexl-beginning-of-buffer], and \\[hexl-end-of-buffer]) are -also supported. - -There are several ways to change text in hexl mode: - -ASCII characters (character between space (0x20) and tilde (0x7E)) are -bound to self-insert so you can simply type the character and it will -insert itself (actually overstrike) into the buffer. - -\\[hexl-quoted-insert] followed by another keystroke allows you to insert the key even if -it isn't bound to self-insert. An octal number can be supplied in place -of another key to insert the octal number's ASCII representation. - -\\[hexl-insert-hex-char] will insert a given hexadecimal value (if it is between 0 and 0xFF) -into the buffer at the current point. - -\\[hexl-insert-octal-char] will insert a given octal value (if it is between 0 and 0377) -into the buffer at the current point. - -\\[hexl-insert-decimal-char] will insert a given decimal value (if it is between 0 and 255) -into the buffer at the current point. - -\\[hexl-mode-exit] will exit hexl-mode. - -Note: saving the file with any of the usual Emacs commands -will actually convert it back to binary format while saving. - -You can use \\[hexl-find-file] to visit a file in hexl-mode. - -\\[describe-bindings] for advanced commands." t nil) - -(autoload 'hexl-find-file "hexl" "\ -Edit file FILENAME in hexl-mode. -Switch to a buffer visiting file FILENAME, creating one in none exists." t nil) - -;;;*** - -;;;### (autoloads (hypropos-popup-menu hypropos-set-variable hyper-describe-function hyper-describe-variable hyper-apropos) "hyper-apropos" "packages/hyper-apropos.el" (12606 7439)) -;;; Generated autoloads from packages/hyper-apropos.el - -(defvar hypropos-show-brief-docs t "\ -*If non-nil, `hyper-apropos' will display some documentation in the -\"*Hyper Apropos*\" buffer. Setting this to nil will speed up searches.") - -(autoload 'hyper-apropos "hyper-apropos" "\ -Display lists of functions and variables matching REGEXP -in buffer \"*Hyper Apropos*\". If optional prefix arg is given, then the value -of `hypropos-programming-apropos' is toggled for this search. -See also `hyper-apropos-mode'." t nil) - -(autoload 'hyper-describe-variable "hyper-apropos" "\ -Hypertext drop-in replacement for `describe-variable'. -See also `hyper-apropos' and `hyper-describe-function'." t nil) - -(autoload 'hyper-describe-function "hyper-apropos" "\ -Hypertext replacement for `describe-function'. Unlike `describe-function' -in that the symbol under the cursor is the default if it is a function. -See also `hyper-apropos' and `hyper-describe-variable'." t nil) - -(autoload 'hypropos-set-variable "hyper-apropos" "\ -Interactively set the variable on the current line." t nil) - -(autoload 'hypropos-popup-menu "hyper-apropos" nil t nil) - -;;;*** - -;;;### (autoloads (icomplete-minibuffer-setup icomplete-mode) "icomplete" "packages/icomplete.el" (12547 41243)) -;;; Generated autoloads from packages/icomplete.el - -(autoload 'icomplete-mode "icomplete" "\ -Activate incremental minibuffer completion for this emacs session, -or deactivate with negative prefix arg." t nil) - -(autoload 'icomplete-minibuffer-setup "icomplete" "\ -Run in minibuffer on activation to establish incremental completion. - -Usually run by inclusion in minibuffer-setup-hook." nil nil) - -;;;*** - -;;;### (autoloads (Info-elisp-ref Info-emacs-key Info-goto-emacs-key-command-node Info-goto-emacs-command-node Info-emacs-command Info-search Info-visit-file Info-goto-node Info-query info) "info" "packages/info.el" (12738 60127)) -;;; Generated autoloads from packages/info.el - -(autoload 'info "info" "\ -Enter Info, the documentation browser. -Optional argument FILE specifies the file to examine; -the default is the top-level directory of Info. - -In interactive use, a prefix argument directs this command -to read a file name from the minibuffer." t nil) - -(autoload 'Info-query "info" "\ -Enter Info, the documentation browser. Prompt for name of Info file." t nil) - -(autoload 'Info-goto-node "info" "\ -Go to info node named NAME. Give just NODENAME or (FILENAME)NODENAME. -Actually, the following interpretations of NAME are tried in order: - (FILENAME)NODENAME - (FILENAME) (using Top node) - NODENAME (in current file) - TAGNAME (see below) - FILENAME (using Top node) -where TAGNAME is a string that appears in quotes: \"TAGNAME\", in an -annotation for any node of any file. (See `a' and `x' commands.)" t nil) - -(autoload 'Info-visit-file "info" "\ -Directly visit an info file." t nil) - -(autoload 'Info-search "info" "\ -Search for REGEXP, starting from point, and select node it's found in." t nil) - -(autoload 'Info-emacs-command "info" "\ -Look up an Emacs command in the Emacs manual in the Info system. -This command is designed to be used whether you are already in Info or not." t nil) - -(autoload 'Info-goto-emacs-command-node "info" "\ -Look up an Emacs command in the Emacs manual in the Info system. -This command is designed to be used whether you are already in Info or not." t nil) - -(autoload 'Info-goto-emacs-key-command-node "info" "\ -Look up an Emacs key sequence in the Emacs manual in the Info system. -This command is designed to be used whether you are already in Info or not." t nil) - -(autoload 'Info-emacs-key "info" "\ -Look up an Emacs key sequence in the Emacs manual in the Info system. -This command is designed to be used whether you are already in Info or not." t nil) - -(autoload 'Info-elisp-ref "info" "\ -Look up an Emacs Lisp function in the Elisp manual in the Info system. -This command is designed to be used whether you are already in Info or not." t nil) - -;;;*** - -;;;### (autoloads (batch-info-validate Info-validate Info-split Info-tagify) "informat" "packages/informat.el" (12547 41223)) -;;; Generated autoloads from packages/informat.el - -(autoload 'Info-tagify "informat" "\ -Create or update Info-file tag table in current buffer." t nil) - -(autoload 'Info-split "informat" "\ -Split an info file into an indirect file plus bounded-size subfiles. -Each subfile will be up to 50,000 characters plus one node. - -To use this command, first visit a large Info file that has a tag -table. The buffer is modified into a (small) indirect info file which -should be saved in place of the original visited file. - -The subfiles are written in the same directory the original file is -in, with names generated by appending `-' and a number to the original -file name. The indirect file still functions as an Info file, but it -contains just the tag table and a directory of subfiles." t nil) - -(autoload 'Info-validate "informat" "\ -Check current buffer for validity as an Info file. -Check that every node pointer points to an existing node." t nil) - -(autoload 'batch-info-validate "informat" "\ -Runs `Info-validate' on the files remaining on the command line. -Must be used only with -batch, and kills Emacs on completion. -Each file will be processed even if an error occurred previously. -For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\"" nil nil) - -;;;*** - -;;;### (autoloads (ispell-message ispell-minor-mode ispell-complete-word-interior-frag ispell-complete-word ispell-continue ispell-buffer ispell-region ispell-change-dictionary ispell-kill-ispell ispell-help ispell-word) "ispell" "packages/ispell.el" (12727 30160)) -;;; Generated autoloads from packages/ispell.el - -(defvar ispell-personal-dictionary nil "\ -*File name of your personal spelling dictionary, or nil. -If nil, the default personal dictionary, \"~/.ispell_DICTNAME\" is used, -where DICTNAME is the name of your default dictionary.") - -(defvar ispell-dictionary-alist-1 '((nil "[A-Za-z]" "[^A-Za-z]" "[']" nil ("-B") nil) ("english" "[A-Za-z]" "[^A-Za-z]" "[']" nil ("-B") nil) ("british" "[A-Za-z]" "[^A-Za-z]" "[']" nil ("-B" "-d" "british") nil) ("deutsch" "[a-zA-Z\"]" "[^a-zA-Z\"]" "[']" t ("-C") "~tex") ("deutsch8" "[a-zA-ZÄÖÜäößü]" "[^a-zA-ZÄÖÜäößü]" "[']" t ("-C" "-d" "deutsch") "~latin1") ("nederlands" "[A-Za-zÀ-ÅÇÈ-ÏÒ-ÖÙ-Üà-åçè-ïñò-öù-ü]" "[^A-Za-zÀ-ÅÇÈ-ÏÒ-ÖÙ-Üà-åçè-ïñò-öù-ü]" "[']" t ("-C") nil) ("nederlands8" "[A-Za-zÀ-ÅÇÈ-ÏÒ-ÖÙ-Üà-åçè-ïñò-öù-ü]" "[^A-Za-zÀ-ÅÇÈ-ÏÒ-ÖÙ-Üà-åçè-ïñò-öù-ü]" "[']" t ("-C") nil))) - -(defvar ispell-dictionary-alist-2 '(("svenska" "[A-Za-z}{|\\133\\135\\\\]" "[^A-Za-z}{|\\133\\135\\\\]" "[']" nil ("-C") nil) ("svenska8" "[A-Za-zåäöÅÄö]" "[^A-Za-zåäöÅÄö]" "[']" nil ("-C" "-d" "svenska") "~list") ("francais7" "[A-Za-z]" "[^A-Za-z]" "[`'^---]" t nil nil) ("francais" "[A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûü]" "[^A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûü]" "[---']" t nil "~list") ("francais-tex" "[A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûü\\]" "[^A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûü\\]" "[---'^`\"]" t nil "~tex") ("dansk" "[A-ZÆØÅa-zæøå]" "[^A-ZÆØÅa-zæøå]" "" nil ("-C") nil))) - -(defvar ispell-dictionary-alist (append ispell-dictionary-alist-1 ispell-dictionary-alist-2) "\ -An alist of dictionaries and their associated parameters. - -Each element of this list is also a list: - -\(DICTIONARY-NAME CASECHARS NOT-CASECHARS OTHERCHARS MANY-OTHERCHARS-P - ISPELL-ARGS EXTENDED-CHARACTER-MODE) - -DICTIONARY-NAME is a possible value of variable `ispell-dictionary', nil -means the default dictionary. - -CASECHARS is a regular expression of valid characters that comprise a -word. - -NOT-CASECHARS is the opposite regexp of CASECHARS. - -OTHERCHARS is a regular expression of other characters that are valid -in word constructs. Otherchars cannot be adjacent to each other in a -word, nor can they begin or end a word. This implies we can't check -\"Stevens'\" as a correct possessive and other correct formations. - -Hint: regexp syntax requires the hyphen to be declared first here. - -MANY-OTHERCHARS-P is non-nil if many otherchars are to be allowed in a -word instead of only one. - -ISPELL-ARGS is a list of additional arguments passed to the ispell -subprocess. - -EXTENDED-CHARACTER-MODE should be used when dictionaries are used which -have been configured in an Ispell affix file. (For example, umlauts -can be encoded as \\\"a, a\\\", \"a, ...) Defaults are ~tex and ~nroff -in English. This has the same effect as the command-line `-T' option. -The buffer Major Mode controls Ispell's parsing in tex or nroff mode, -but the dictionary can control the extended character mode. -Both defaults can be overruled in a buffer-local fashion. See -`ispell-parsing-keyword' for details on this. - -Note that the CASECHARS and OTHERCHARS slots of the alist should -contain the same character set as casechars and otherchars in the -language.aff file (e.g., english.aff).") - -(defvar ispell-menu-map nil "\ -Key map for ispell menu") - -(defvar ispell-menu-lucid nil "\ -Spelling menu for Lucid Emacs.") - -(defconst ispell-menu-map-needed (and (not ispell-menu-map) (string-lessp "19" emacs-version) (not (string-match "XEmacs" emacs-version)))) - -(if ispell-menu-map-needed (let ((dicts (reverse (cons (cons "default" nil) ispell-dictionary-alist))) name) (setq ispell-menu-map (make-sparse-keymap "Spell")) (while dicts (setq name (car (car dicts)) dicts (cdr dicts)) (if (stringp name) (define-key ispell-menu-map (vector (intern name)) (cons (concat "Select " (capitalize name)) (list 'lambda nil '(interactive) (list 'ispell-change-dictionary name)))))))) - -(if ispell-menu-map-needed (progn (define-key ispell-menu-map [ispell-change-dictionary] '("Change Dictionary" . ispell-change-dictionary)) (define-key ispell-menu-map [ispell-kill-ispell] '("Kill Process" . ispell-kill-ispell)) (define-key ispell-menu-map [ispell-pdict-save] '("Save Dictionary" lambda nil (interactive) (ispell-pdict-save t t))) (define-key ispell-menu-map [ispell-complete-word] '("Complete Word" . ispell-complete-word)) (define-key ispell-menu-map [ispell-complete-word-interior-frag] '("Complete Word Frag" . ispell-complete-word-interior-frag)))) - -(if ispell-menu-map-needed (progn (define-key ispell-menu-map [ispell-continue] '("Continue Check" . ispell-continue)) (define-key ispell-menu-map [ispell-word] '("Check Word" . ispell-word)) (define-key ispell-menu-map [ispell-region] '("Check Region" . ispell-region)) (define-key ispell-menu-map [ispell-buffer] '("Check Buffer" . ispell-buffer)))) - -(if ispell-menu-map-needed (progn (define-key ispell-menu-map [ispell-message] '("Check Message" . ispell-message)) (define-key ispell-menu-map [ispell-help] '("Help" lambda nil (interactive) (describe-function 'ispell-help))) (put 'ispell-region 'menu-enable 'mark-active) (fset 'ispell-menu-map (symbol-value 'ispell-menu-map)))) - -(defvar ispell-local-pdict ispell-personal-dictionary "\ -A buffer local variable containing the current personal dictionary. -If non-nil, the value must be a string, which is a file name. - -If you specify a personal dictionary for the current buffer which is -different from the current personal dictionary, the effect is similar -to calling \\[ispell-change-dictionary]. This variable is automatically -set when defined in the file with either `ispell-pdict-keyword' or the -local variable syntax.") - -(define-key global-map "¤" 'ispell-word) - -(autoload 'ispell-word "ispell" "\ -Check spelling of word under or before the cursor. -If the word is not found in dictionary, display possible corrections -in a window allowing you to choose one. - -With a prefix argument (or if CONTINUE is non-nil), -resume interrupted spell-checking of a buffer or region. - -If optional argument FOLLOWING is non-nil or if `ispell-following-word' -is non-nil when called interactively, then the following word -\(rather than preceding) is checked when the cursor is not over a word. -When the optional argument QUIETLY is non-nil or `ispell-quietly' is non-nil -when called interactively, non-corrective messages are suppressed. - -Word syntax described by `ispell-dictionary-alist' (which see). - -This will check or reload the dictionary. Use \\[ispell-change-dictionary] -or \\[ispell-region] to update the Ispell process." t nil) - -(autoload 'ispell-help "ispell" "\ -Display a list of the options available when a misspelling is encountered. - -Selections are: - -DIGIT: Replace the word with a digit offered in the *Choices* buffer. -SPC: Accept word this time. -`i': Accept word and insert into private dictionary. -`a': Accept word for this session. -`A': Accept word and place in `buffer-local dictionary'. -`r': Replace word with typed-in value. Rechecked. -`R': Replace word with typed-in value. Query-replaced in buffer. Rechecked. -`?': Show these commands. -`x': Exit spelling buffer. Move cursor to original point. -`X': Exit spelling buffer. Leaves cursor at the current point, and permits - the aborted check to be completed later. -`q': Quit spelling session (Kills ispell process). -`l': Look up typed-in replacement in alternate dictionary. Wildcards okay. -`u': Like `i', but the word is lower-cased first. -`m': Like `i', but allows one to include dictionary completion information. -`C-l': redraws screen -`C-r': recursive edit -`C-z': suspend emacs or iconify frame" nil nil) - -(autoload 'ispell-kill-ispell "ispell" "\ -Kill current Ispell process (so that you may start a fresh one). -With NO-ERROR, just return non-nil if there was no Ispell running." t nil) - -(autoload 'ispell-change-dictionary "ispell" "\ -Change `ispell-dictionary' (q.v.) and kill old Ispell process. -A new one will be started as soon as necessary. - -By just answering RET you can find out what the current dictionary is. - -With prefix argument, set the default directory." t nil) - -(autoload 'ispell-region "ispell" "\ -Interactively check a region for spelling errors." t nil) - -(autoload 'ispell-buffer "ispell" "\ -Check the current buffer for spelling errors interactively." t nil) - -(autoload 'ispell-continue "ispell" nil t nil) - -(autoload 'ispell-complete-word "ispell" "\ -Look up word before or under point in dictionary (see lookup-words command) -and try to complete it. If optional INTERIOR-FRAG is non-nil then the word -may be a character sequence inside of a word. - -Standard ispell choices are then available." t nil) - -(autoload 'ispell-complete-word-interior-frag "ispell" "\ -Completes word matching character sequence inside a word." t nil) - -(autoload 'ispell-minor-mode "ispell" "\ -Toggle Ispell minor mode. -With prefix arg, turn Ispell minor mode on iff arg is positive. - -In Ispell minor mode, pressing SPC or RET -warns you if the previous word is incorrectly spelled." t nil) - -(autoload 'ispell-message "ispell" "\ -Check the spelling of a mail message or news post. -Don't check spelling of message headers except the Subject field. -Don't check included messages. - -To abort spell checking of a message REGION and send the message anyway, -use the `x' or `q' command. (Any subsequent regions will be checked.) -The `X' command aborts the message send so that you can edit the buffer. - -To spell-check whenever a message is sent, include the appropriate lines -in your .emacs file: - (add-hook 'news-inews-hook 'ispell-message) - (add-hook 'mail-send-hook 'ispell-message) - (add-hook 'mh-before-send-letter-hook 'ispell-message) - -You can bind this to the key C-c i in GNUS or mail by adding to -`news-reply-mode-hook' or `mail-mode-hook' the following lambda expression: - (function (lambda () (local-set-key \"\\C-ci\" 'ispell-message)))" t nil) - -;;;*** - -;;;### (autoloads (jka-compr-install toggle-auto-compression jka-compr-load) "jka-compr" "packages/jka-compr.el" (12637 25168)) -;;; Generated autoloads from packages/jka-compr.el - -(autoload 'jka-compr-load "jka-compr" "\ -Documented as original." nil nil) - -(autoload 'toggle-auto-compression "jka-compr" "\ -Toggle automatic file compression and decompression. -With prefix argument ARG, turn auto compression on if positive, else off. -Returns the new status of auto compression (non-nil means on)." t nil) - -(autoload 'jka-compr-install "jka-compr" "\ -Install jka-compr. -This adds entries to `file-name-handler-alist' and `auto-mode-alist' -and `inhibit-first-line-modes-suffixes'." nil nil) - -;;;*** - -;;;### (autoloads (turn-on-lazy-lock lazy-lock-mode) "lazy-lock" "packages/lazy-lock.el" (12742 53071)) -;;; Generated autoloads from packages/lazy-lock.el - -(defvar lazy-lock-mode nil) - -(autoload 'lazy-lock-mode "lazy-lock" "\ -Toggle Lazy Lock mode. -With arg, turn Lazy Lock mode on if and only if arg is positive and the buffer -is at least `lazy-lock-minimum-size' characters long. - -When Lazy Lock mode is enabled, fontification is demand-driven and stealthy: - - - Fontification occurs in visible parts of buffers when necessary. - Occurs if there is no input after pausing for `lazy-lock-continuity-time'. - - - Fontification occurs in invisible parts when Emacs has been idle. - Occurs if there is no input after pausing for `lazy-lock-stealth-time'. - -If `lazy-lock-hide-invisible' is non-nil, text is not displayed until it is -fontified, otherwise it is displayed in `lazy-lock-invisible-foreground'. - -See also variables `lazy-lock-walk-windows' and `lazy-lock-ignore-commands' for -window (scroll) fontification, and `lazy-lock-stealth-lines', -`lazy-lock-stealth-nice' and `lazy-lock-stealth-verbose' for stealth -fontification. - -Use \\[lazy-lock-submit-bug-report] to send bug reports or feedback." t nil) - -(autoload 'turn-on-lazy-lock "lazy-lock" "\ -Unconditionally turn on Lazy Lock mode." nil nil) - -(add-minor-mode 'lazy-lock-mode " Lazy") - -;;;*** - -;;;### (autoloads (ledit-from-lisp-mode ledit-mode) "ledit" "packages/ledit.el" (12547 41226)) -;;; Generated autoloads from packages/ledit.el - -(defconst ledit-save-files t "\ -*Non-nil means Ledit should save files before transferring to Lisp.") - -(defconst ledit-go-to-lisp-string "%?lisp" "\ -*Shell commands to execute to resume Lisp job.") - -(defconst ledit-go-to-liszt-string "%?liszt" "\ -*Shell commands to execute to resume Lisp compiler job.") - -(autoload 'ledit-mode "ledit" "\ -\\<ledit-mode-map>Major mode for editing text and stuffing it to a Lisp job. -Like Lisp mode, plus these special commands: - \\[ledit-save-defun] -- record defun at or after point - for later transmission to Lisp job. - \\[ledit-save-region] -- record region for later transmission to Lisp job. - \\[ledit-go-to-lisp] -- transfer to Lisp job and transmit saved text. - \\[ledit-go-to-liszt] -- transfer to Liszt (Lisp compiler) job - and transmit saved text. -\\{ledit-mode-map} -To make Lisp mode automatically change to Ledit mode, -do (setq lisp-mode-hook 'ledit-from-lisp-mode)" t nil) - -(autoload 'ledit-from-lisp-mode "ledit" nil nil nil) - -;;;*** - -;;;### (autoloads nil "lispm-fonts" "packages/lispm-fonts.el" (12147 26460)) -;;; Generated autoloads from packages/lispm-fonts.el - -;;;### (autoloads (print-region lpr-region print-buffer lpr-buffer) "lpr" "packages/lpr.el" (12546 37613)) -;;; Generated autoloads from packages/lpr.el - -(defvar lpr-switches nil "\ -*List of strings to pass as extra switch args to `lpr' when it is invoked.") - -(defvar lpr-command (if (memq system-type '(usg-unix-v dgux hpux irix)) "lp" "lpr") "\ -*Name of program for printing a file.") - -(autoload 'lpr-buffer "lpr" "\ -Print buffer contents as with Unix command `lpr'. -`lpr-switches' is a list of extra switches (strings) to pass to lpr." t nil) - -(autoload 'print-buffer "lpr" "\ -Print buffer contents as with Unix command `lpr -p'. -`lpr-switches' is a list of extra switches (strings) to pass to lpr." t nil) - -(autoload 'lpr-region "lpr" "\ -Print region contents as with Unix command `lpr'. -`lpr-switches' is a list of extra switches (strings) to pass to lpr." t nil) - -(autoload 'print-region "lpr" "\ -Print region contents as with Unix command `lpr -p'. -`lpr-switches' is a list of extra switches (strings) to pass to lpr." t nil) - -;;;*** - -;;;### (autoloads nil "makeinfo" "packages/makeinfo.el" (12547 41222)) -;;; Generated autoloads from packages/makeinfo.el - -;;;### (autoloads (make-command-summary) "makesum" "packages/makesum.el" (12547 41212)) -;;; Generated autoloads from packages/makesum.el - -(autoload 'make-command-summary "makesum" "\ -Make a summary of current key bindings in the buffer *Summary*. -Previous contents of that buffer are killed first." t nil) - -;;;*** - -;;;### (autoloads (manual-entry) "man" "packages/man.el" (12723 42155)) -;;; Generated autoloads from packages/man.el - -(autoload 'manual-entry "man" "\ -Display the Unix manual entry (or entries) for TOPIC. -If prefix arg is given, modify the search according to the value: - 2 = complement default exact matching of the TOPIC name; - exact matching default is specified by `Manual-match-topic-exactly' - 3 = force a search of the unformatted man directories - 4 = both 2 and 3 -The manual entries are searched according to the variable -Manual-directory-list, which should be a list of directories. If -Manual-directory-list is nil, \\[Manual-directory-list-init] is -invoked to create this list from the MANPATH environment variable. -See the variable Manual-topic-buffer which controls how the buffer -is named. See also the variables Manual-match-topic-exactly, -Manual-query-multiple-pages, and Manual-buffer-view-mode." t nil) - -;;;*** - -;;;### (autoloads nil "metamail" "packages/metamail.el" (12547 41256)) -;;; Generated autoloads from packages/metamail.el - -;;;*** - -;;;### (autoloads nil "mime-compose" "packages/mime-compose.el" (12727 30161)) -;;; Generated autoloads from packages/mime-compose.el - -;;;*** - -;;;### (autoloads nil "mode-motion+" "packages/mode-motion+.el" (12583 65333)) -;;; Generated autoloads from packages/mode-motion+.el - -;;;### (autoloads nil "netunam" "packages/netunam.el" (12547 41227)) -;;; Generated autoloads from packages/netunam.el - -;;;*** - -;;;### (autoloads nil "page-ext" "packages/page-ext.el" (12547 41231)) -;;; Generated autoloads from packages/page-ext.el - -;;;### (autoloads (blink-paren paren-set-mode) "paren" "packages/paren.el" (12648 4919)) -;;; Generated autoloads from packages/paren.el - -(defvar paren-mode nil "\ -*Sets the style of parenthesis highlighting. -Valid values are nil, `blink-paren', `paren', and `sexp'. - nil no parenthesis highlighting. - blink-paren causes the matching paren to blink. - paren causes the matching paren to be highlighted but not to blink. - sexp whole expression enclosed by the local paren at its mate. - nested (not yet implemented) use variable shading to see the - nesting of an expression. Also groks regular expressions - and shell quoting. - -This variable is global by default, but you can make it buffer-local and -highlight parentheses differrently in different major modes.") - -(autoload 'paren-set-mode "paren" "\ -Cycles through possible values for `paren-mode', force off with negative arg. -When called from lisp, a symbolic value for `paren-mode' can be pased directly. -See also `paren-mode' and `paren-highlight'." t nil) - -(make-obsolete 'blink-paren 'paren-set-mode) - -(autoload 'blink-paren "paren" "\ -Obsolete. Use `paren-set-mode' instead." t nil) - -;;;*** - -;;;### (autoloads (pending-delete pending-delete-off pending-delete-on) "pending-del" "packages/pending-del.el" (12547 41228)) -;;; Generated autoloads from packages/pending-del.el - -(autoload 'pending-delete-on "pending-del" "\ -Turn on pending delete. -When it is ON, typed text replaces the selection if the selection is active. -When it is OFF, typed text is just inserted at point." t nil) - -(autoload 'pending-delete-off "pending-del" "\ -Turn off pending delete. -When it is ON, typed text replaces the selection if the selection is active. -When it is OFF, typed text is just inserted at point." t nil) - -(autoload 'pending-delete "pending-del" "\ -Toggle automatic deletion of the selected region. -With a positive argument, turns it on. -With a non-positive argument, turns it off. -When active, typed text replaces the selection." t nil) - -;;;*** - -;;;### (autoloads (ps-despool ps-spool-region-with-faces ps-spool-region ps-spool-buffer-with-faces ps-spool-buffer ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces ps-print-buffer) "ps-print" "packages/ps-print.el" (12742 53406)) -;;; Generated autoloads from packages/ps-print.el - -(defvar ps-paper-type 'ps-letter "\ -*Specifies the size of paper to format for. Should be one of -`ps-letter', `ps-legal', or `ps-a4'.") - -(defvar ps-print-color-p (and (or (fboundp 'x-color-values) (fboundp 'color-instance-rgb-components)) (fboundp 'float)) "\ -*If non-nil, print the buffer's text in color.") - -(autoload 'ps-print-buffer "ps-print" "\ -Generate and print a PostScript image of the buffer. - -When called with a numeric prefix argument (C-u), prompts the user for -the name of a file to save the PostScript image in, instead of sending -it to the printer. - -More specifically, the FILENAME argument is treated as follows: if it -is nil, send the image to the printer. If FILENAME is a string, save -the PostScript image in a file with that name. If FILENAME is a -number, prompt the user for the name of the file to save in." t nil) - -(autoload 'ps-print-buffer-with-faces "ps-print" "\ -Generate and print a PostScript image of the buffer. - -Like `ps-print-buffer', but includes font, color, and underline -information in the generated image." t nil) - -(autoload 'ps-print-region "ps-print" "\ -Generate and print a PostScript image of the region. - -Like `ps-print-buffer', but prints just the current region." t nil) - -(autoload 'ps-print-region-with-faces "ps-print" "\ -Generate and print a PostScript image of the region. - -Like `ps-print-region', but includes font, color, and underline -information in the generated image." t nil) - -(autoload 'ps-spool-buffer "ps-print" "\ -Generate and spool a PostScript image of the buffer. - -Like `ps-print-buffer' except that the PostScript image is saved in a -local buffer to be sent to the printer later. - -Use the command `ps-despool' to send the spooled images to the printer." t nil) - -(autoload 'ps-spool-buffer-with-faces "ps-print" "\ -Generate and spool a PostScript image of the buffer. - -Like `ps-spool-buffer', but includes font, color, and underline -information in the generated image. - -Use the command `ps-despool' to send the spooled images to the printer." t nil) - -(autoload 'ps-spool-region "ps-print" "\ -Generate a PostScript image of the region and spool locally. - -Like `ps-spool-buffer', but spools just the current region. - -Use the command `ps-despool' to send the spooled images to the printer." t nil) - -(autoload 'ps-spool-region-with-faces "ps-print" "\ -Generate a PostScript image of the region and spool locally. - -Like `ps-spool-region', but includes font, color, and underline -information in the generated image. - -Use the command `ps-despool' to send the spooled images to the printer." t nil) - -(autoload 'ps-despool "ps-print" "\ -Send the spooled PostScript to the printer. - -When called with a numeric prefix argument (C-u), prompt the user for -the name of a file to save the spooled PostScript in, instead of sending -it to the printer. - -More specifically, the FILENAME argument is treated as follows: if it -is nil, send the image to the printer. If FILENAME is a string, save -the PostScript image in a file with that name. If FILENAME is a -number, prompt the user for the name of the file to save in." t nil) - -;;;*** - -;;;### (autoloads (remote-compile) "rcompile" "packages/rcompile.el" (12720 56374)) -;;; Generated autoloads from packages/rcompile.el - -(autoload 'remote-compile "rcompile" "\ -Compile the the current buffer's directory on HOST. Log in as USER. -See \\[compile]." t nil) - -;;;*** - -;;;### (autoloads nil "recent-files" "packages/recent-files.el" (12554 42318)) -;;; Generated autoloads from packages/recent-files.el - -;;;*** - -;;;### (autoloads nil "saveconf" "packages/saveconf.el" (12547 41238)) -;;; Generated autoloads from packages/saveconf.el - -;;;*** - -;;;### (autoloads nil "server" "packages/server.el" (12547 41239)) -;;; Generated autoloads from packages/server.el - -(make-obsolete 'server-start 'gnuserv-start) - -;;;*** - -;;;### (autoloads nil "session" "packages/session.el" (12547 41240)) -(autoload 'install-shell-fonts "shell-font" "\ -Decorate the current interaction buffer with fonts. -This uses the faces called `shell-prompt', `shell-input' and `shell-output'; -you can alter the graphical attributes of those with the normal -face-manipulation functions." nil nil) - -;;;*** - -;;;### (autoloads nil "spell" "packages/spell.el" (12547 41234)) -;;; Generated autoloads from packages/spell.el - -;;;*** - -;;;### (autoloads nil "supercite" "packages/supercite.el" (12637 31054)) -;;; Generated autoloads from packages/supercite.el - -;;;### (autoloads (tar-mode) "tar-mode" "packages/tar-mode.el" (12547 41240)) -;;; Generated autoloads from packages/tar-mode.el - -(autoload 'tar-mode "tar-mode" "\ -Major mode for viewing a tar file as a dired-like listing of its contents. -You can move around using the usual cursor motion commands. -Letters no longer insert themselves. -Type 'e' to pull a file out of the tar file and into its own buffer. -Type 'c' to copy an entry from the tar file into another file on disk. - -If you edit a sub-file of this archive (as with the 'e' command) and -save it with Control-X Control-S, the contents of that buffer will be -saved back into the tar-file buffer; in this way you can edit a file -inside of a tar archive without extracting it and re-archiving it. - -See also: variables tar-update-datestamp and tar-anal-blocksize. -\\{tar-mode-map}" nil nil) - -;;;*** - -;;;### (autoloads (terminal-emulator) "terminal" "packages/terminal.el" (12743 11661)) -;;; Generated autoloads from packages/terminal.el - -(autoload 'terminal-emulator "terminal" "\ -Under a display-terminal emulator in BUFFER, run PROGRAM on arguments ARGS. -ARGS is a list of argument-strings. Remaining arguments are WIDTH and HEIGHT. -BUFFER's contents are made an image of the display generated by that program, -and any input typed when BUFFER is the current Emacs buffer is sent to that -program an keyboard input. - -Interactively, BUFFER defaults to \"*terminal*\" and PROGRAM and ARGS -are parsed from an input-string using your usual shell. -WIDTH and HEIGHT are determined from the size of the current window --- WIDTH will be one less than the window's width, HEIGHT will be its height. - -To switch buffers and leave the emulator, or to give commands -to the emulator itself (as opposed to the program running under it), -type Control-^. The following character is an emulator command. -Type Control-^ twice to send it to the subprogram. -This escape character may be changed using the variable `terminal-escape-char'. - -`Meta' characters may not currently be sent through the terminal emulator. - -Here is a list of some of the variables which control the behaviour -of the emulator -- see their documentation for more information: -terminal-escape-char, terminal-scrolling, terminal-more-processing, -terminal-redisplay-interval. - -This function calls the value of terminal-mode-hook if that exists -and is non-nil after the terminal buffer has been set up and the -subprocess started. - -Presently with `termcap' only; if somebody sends us code to make this -work with `terminfo' we will try to use it." t nil) - -;;;*** - -;;;### (autoloads nil "tex-latin1" "packages/tex-latin1.el" (12698 34039)) -;;; Generated autoloads from packages/tex-latin1.el - -;;;*** - -;;;### (autoloads (batch-texinfo-format texinfo-format-region texinfo-format-buffer) "texinfmt" "packages/texinfmt.el" (12547 2143)) -;;; Generated autoloads from packages/texinfmt.el - -(autoload 'texinfo-format-buffer "texinfmt" "\ -Process the current buffer as texinfo code, into an Info file. -The Info file output is generated in a buffer visiting the Info file -names specified in the @setfilename command. - -Non-nil argument (prefix, if interactive) means don't make tag table -and don't split the file if large. You can use Info-tagify and -Info-split to do these manually." t nil) - -(autoload 'texinfo-format-region "texinfmt" "\ -Convert the current region of the Texinfo file to Info format. -This lets you see what that part of the file will look like in Info. -The command is bound to \\[texinfo-format-region]. The text that is -converted to Info is stored in a temporary buffer." t nil) - -(autoload 'batch-texinfo-format "texinfmt" "\ -Runs texinfo-format-buffer on the files remaining on the command line. -Must be used only with -batch, and kills emacs on completion. -Each file will be processed even if an error occurred previously. -For example, invoke - \"emacs -batch -funcall batch-texinfo-format $docs/ ~/*.texinfo\"." nil nil) - -;;;*** - -;;;### (autoloads nil "texnfo-tex" "packages/texnfo-tex.el" (12657 15256)) -;;; Generated autoloads from packages/texnfo-tex.el - -;;;### (autoloads (texinfo-sequential-node-update texinfo-every-node-update texinfo-update-node) "texnfo-upd" "packages/texnfo-upd.el" (12547 41252)) -;;; Generated autoloads from packages/texnfo-upd.el - -(autoload 'texinfo-update-node "texnfo-upd" "\ -Without any prefix argument, update the node in which point is located. -Non-nil argument (prefix, if interactive) means update the nodes in the -marked region. - -The functions for creating or updating nodes and menus, and their -keybindings, are: - - texinfo-update-node (&optional region-p) \\[texinfo-update-node] - texinfo-every-node-update () \\[texinfo-every-node-update] - texinfo-sequential-node-update (&optional region-p) - - texinfo-make-menu (&optional region-p) \\[texinfo-make-menu] - texinfo-all-menus-update () \\[texinfo-all-menus-update] - texinfo-master-menu () - - texinfo-indent-menu-description (column &optional region-p) - -The `texinfo-column-for-description' variable specifies the column to -which menu descriptions are indented. Its default value is 32." t nil) - -(autoload 'texinfo-every-node-update "texnfo-upd" "\ -Update every node in a Texinfo file." t nil) - -(autoload 'texinfo-sequential-node-update "texnfo-upd" "\ -Update one node (or many) in a Texinfo file with sequential pointers. - -This function causes the `Next' or `Previous' pointer to point to the -immediately preceding or following node, even if it is at a higher or -lower hierarchical level in the document. Continually pressing `n' or -`p' takes you straight through the file. - -Without any prefix argument, update the node in which point is located. -Non-nil argument (prefix, if interactive) means update the nodes in the -marked region. - -This command makes it awkward to navigate among sections and -subsections; it should be used only for those documents that are meant -to be read like a novel rather than a reference, and for which the -Info `g*' command is inadequate." t nil) - -;;;*** - -;;;### (autoloads (time-stamp) "time-stamp" "packages/time-stamp.el" (12547 41218)) -;;; Generated autoloads from packages/time-stamp.el - -(autoload 'time-stamp "time-stamp" "\ -Update the time stamp string in the buffer. -Only does its thing if the variable time-stamp-active is non-nil. -Typically used on write-file-hooks for automatic time-stamping. -The format of the time stamp is determined by the variable -time-stamp-format. The first time-stamp-line-limit lines of the -buffer (normally 8) are searched for the time stamp template, -and if it is found, a new time stamp is written into it." t nil) - -;;;*** - -;;;### (autoloads (display-time) "time" "packages/time.el" (12546 37613)) -;;; Generated autoloads from packages/time.el - -(defvar display-time-day-and-date nil "\ -*Non-nil means \\[display-time] should display day and date as well as time.") - -(autoload 'display-time "time" "\ -Display current time, load level, and mail flag in mode line of each buffer. -Updates automatically every minute. -If `display-time-day-and-date' is non-nil, the current day and date -are displayed as well. -After each update, `display-time-hook' is run with `run-hooks'. -If `display-time-echo-area' is non-nil, the time is displayed in the -echo area instead of in the mode-line." t nil) - -;;;*** - -;;;### (autoloads nil "uncompress" "packages/uncompress.el" (12547 41241)) -;;; Generated autoloads from packages/uncompress.el - -;;;### (autoloads (ununderline-and-unoverstrike-region overstrike-region unoverstrike-region ununderline-region underline-region) "underline" "packages/underline.el" (12546 37614)) -;;; Generated autoloads from packages/underline.el - -(autoload 'underline-region "underline" "\ -Underline all nonblank characters in the region. -Works by overstriking underscores. -Called from program, takes two arguments START and END -which specify the range to operate on." t nil) - -(autoload 'ununderline-region "underline" "\ -Remove all underlining (overstruck underscores) in the region. -Called from program, takes two arguments START and END -which specify the range to operate on." t nil) - -(autoload 'unoverstrike-region "underline" "\ -Remove all overstriking (character-backspace-character) in the region. -Called from program, takes two arguments START and END which specify the -range to operate on." t nil) - -(autoload 'overstrike-region "underline" "\ -Overstrike (character-backspace-character) all nonblank characters in -the region. Called from program, takes two arguments START and END which -specify the range to operate on." t nil) - -(autoload 'ununderline-and-unoverstrike-region "underline" "\ -Remove underlining and overstriking in the region. Called from a program, -takes two arguments START and END which specify the range to operate on." t nil) - -;;;*** - -;;;### (autoloads (ask-to-update-copyright update-copyright) "upd-copyr" "packages/upd-copyr.el" (12546 37615)) -;;; Generated autoloads from packages/upd-copyr.el - -(defvar copyright-do-not-disturb "Free Software Foundation, Inc." "\ -*If non-nil, the existing copyright holder is checked against this regexp. -If it does not match, then a new copyright line is added with the copyright -holder set to the value of `copyright-whoami'.") - -(defvar copyright-whoami nil "\ -*A string containing the name of the owner of new copyright notices.") - -(defvar copyright-notice-file nil "\ -*If non-nil, replace copying notices with this file.") - -(autoload 'update-copyright "upd-copyr" "\ -Update the copyright notice at the beginning of the buffer -to indicate the current year. If optional arg REPLACE is given -\(interactively, with prefix arg) replace the years in the notice -rather than adding the current year after them. -If `copyright-notice-file' is set, the copying permissions following the -copyright are replaced as well. - -If optional third argument ASK is non-nil, the user is prompted for whether -or not to update the copyright. If optional fourth argument ASK-YEAR is -non-nil, the user is prompted for whether or not to replace the year rather -than adding to it." t nil) - -(autoload 'ask-to-update-copyright "upd-copyr" "\ -If the current buffer contains a copyright notice that is out of date, -ask the user if it should be updated with `update-copyright' (which see). -Put this on write-file-hooks." nil nil) - -;;;*** - -;;;### (autoloads nil "vc-hooks" "packages/vc-hooks.el" (12728 13773)) -;;; Generated autoloads from packages/vc-hooks.el - -;;;### (autoloads (vc-update-change-log vc-rename-file vc-cancel-version vc-revert-buffer vc-print-log vc-retrieve-snapshot vc-create-snapshot vc-directory vc-insert-headers vc-version-other-window vc-version-diff vc-diff vc-register vc-next-action vc-file-status) "vc" "packages/vc.el" (12675 57064)) -;;; Generated autoloads from packages/vc.el - -(defvar vc-checkin-hook nil "\ -*List of functions called after a checkin is done. See `run-hooks'.") - -(autoload 'vc-file-status "vc" "\ -Display the current status of the file being visited. -Currently, this is only defined for CVS. The information provided in the -modeline is generally sufficient for RCS and SCCS." t nil) - -(autoload 'vc-next-action "vc" "\ -Do the next logical checkin or checkout operation on the current file. - -For RCS and SCCS files: - If the file is not already registered, this registers it for version -control and then retrieves a writable, locked copy for editing. - If the file is registered and not locked by anyone, this checks out -a writable and locked file ready for editing. - If the file is checked out and locked by the calling user, this -first checks to see if the file has changed since checkout. If not, -it performs a revert. - If the file has been changed, this pops up a buffer for entry -of a log message; when the message has been entered, it checks in the -resulting changes along with the log message as change commentary. If -the variable `vc-keep-workfiles' is non-nil (which is its default), a -read-only copy of the changed file is left in place afterwards. - If the file is registered and locked by someone else, you are given -the option to steal the lock. - -For CVS files: - If the file is not already registered, this registers it for version -control. This does a \"cvs add\", but no \"cvs commit\". - If the file is added but not committed, it is committed. - If the file has not been changed, neither in your working area or -in the repository, a message is printed and nothing is done. - If your working file is changed, but the repository file is -unchanged, this pops up a buffer for entry of a log message; when the -message has been entered, it checks in the resulting changes along -with the logmessage as change commentary. A writable file is retained. - If the repository file is changed, you are asked if you want to -merge in the changes into your working copy. - -The following is true regardless of which version control system you -are using: - - If you call this from within a VC dired buffer with no files marked, -it will operate on the file in the current line. - If you call this from within a VC dired buffer, and one or more -files are marked, it will accept a log message and then operate on -each one. The log message will be used as a comment for any register -or checkin operations, but ignored when doing checkouts. Attempted -lock steals will raise an error. - - For checkin, a prefix argument lets you specify the version number to use." t nil) - -(autoload 'vc-register "vc" "\ -Register the current file into your version-control system." t nil) - -(autoload 'vc-diff "vc" "\ -Display diffs between file versions. -Normally this compares the current file and buffer with the most recent -checked in version of that file. This uses no arguments. -With a prefix argument, it reads the file name to use -and two version designators specifying which versions to compare." t nil) - -(autoload 'vc-version-diff "vc" "\ -For FILE, report diffs between two stored versions REL1 and REL2 of it. -If FILE is a directory, generate diffs between versions for all registered -files in or below it." t nil) - -(autoload 'vc-version-other-window "vc" "\ -Visit version REV of the current buffer in another window. -If the current buffer is named `F', the version is named `F.~REV~'. -If `F.~REV~' already exists, it is used instead of being re-created." t nil) - -(autoload 'vc-insert-headers "vc" "\ -Insert headers in a file for use with your version-control system. -Headers desired are inserted at the start of the buffer, and are pulled from -the variable `vc-header-alist'." t nil) - -(autoload 'vc-directory "vc" "\ -Show version-control status of all files in the directory DIR. -If the second argument VERBOSE is non-nil, show all files; -otherwise show only files that current locked in the version control system. -Interactively, supply a prefix arg to make VERBOSE non-nil. - -If the optional third argument NESTED is non-nil, -scan the entire tree of subdirectories of the current directory." t nil) - -(autoload 'vc-create-snapshot "vc" "\ -Make a snapshot called NAME. -The snapshot is made from all registered files at or below the current -directory. For each file, the version level of its latest -version becomes part of the named configuration." t nil) - -(autoload 'vc-retrieve-snapshot "vc" "\ -Retrieve the snapshot called NAME. -This function fails if any files are locked at or below the current directory -Otherwise, all registered files are checked out (unlocked) at their version -levels in the snapshot." t nil) - -(autoload 'vc-print-log "vc" "\ -List the change log of the current buffer in a window." t nil) - -(autoload 'vc-revert-buffer "vc" "\ -Revert the current buffer's file back to the latest checked-in version. -This asks for confirmation if the buffer contents are not identical -to that version. -If the back-end is CVS, this will give you the most recent revision of -the file on the branch you are editing." t nil) - -(autoload 'vc-cancel-version "vc" "\ -Get rid of most recently checked in version of this file. -A prefix argument means do not revert the buffer afterwards." t nil) - -(autoload 'vc-rename-file "vc" "\ -Rename file OLD to NEW, and rename its master file likewise." t nil) - -(autoload 'vc-update-change-log "vc" "\ -Find change log file and add entries from recent RCS logs. -The mark is left at the end of the text prepended to the change log. -With prefix arg of C-u, only find log entries for the current buffer's file. -With any numeric prefix arg, find log entries for all files currently visited. -Otherwise, find log entries for all registered files in the default directory. -From a program, any arguments are passed to the `rcs2log' script." t nil) - -;;;*** - -;;;### (autoloads nil "webster-ucb" "packages/webster-ucb.el" (12547 41248)) -;;; Generated autoloads from packages/webster-ucb.el - -;;;### (autoloads (webster-spell webster-endings webster) "webster" "packages/webster.el" (12547 41251)) -;;; Generated autoloads from packages/webster.el - -(autoload 'webster "webster" "\ -Look up a word in the Webster's dictionary. -Open a network login connection to a webster host if necessary. -Communication with host is recorded in a buffer *webster*." t nil) - -(autoload 'webster-endings "webster" "\ -Look up endings for a word in the Webster's dictionary. -Open a network login connection to a webster host if necessary. -Communication with host is recorded in a buffer *webster*." t nil) - -(autoload 'webster-spell "webster" "\ -Look spelling for a word in the Webster's dictionary. -Open a network login connection to a webster host if necessary. -Communication with host is recorded in a buffer *webster*." t nil) - -;;;*** - -;;;### (autoloads (run-scheme) "xscheme" "packages/xscheme.el" (12547 41250)) -;;; Generated autoloads from packages/xscheme.el - -(defvar scheme-program-name "scheme" "\ -*Program invoked by the `run-scheme' command.") - -(defvar scheme-band-name nil "\ -*Band loaded by the `run-scheme' command.") - -(defvar scheme-program-arguments nil "\ -*Arguments passed to the Scheme program by the `run-scheme' command.") - -(autoload 'run-scheme "xscheme" "\ -Run an inferior Scheme process. -Output goes to the buffer `*scheme*'. -With argument, asks for a command line." t nil) - -;;;*** - -;;;### (autoloads nil "compile-all" "pcl-cvs/compile-all.el" (11903 15856)) -;;; Generated autoloads from pcl-cvs/compile-all.el - -;;;*** - -;;;### (autoloads nil "cookie" "pcl-cvs/cookie.el" (12675 57104)) -;;; Generated autoloads from pcl-cvs/cookie.el - -;;;*** - -;;;### (autoloads nil "dll-debug" "pcl-cvs/dll-debug.el" (12675 57104)) -;;; Generated autoloads from pcl-cvs/dll-debug.el - -;;;*** - -;;;### (autoloads nil "dll" "pcl-cvs/dll.el" (12675 57108)) -;;; Generated autoloads from pcl-cvs/dll.el - -;;;*** - -;;;### (autoloads nil "elib-node" "pcl-cvs/elib-node.el" (12675 57109)) -;;; Generated autoloads from pcl-cvs/elib-node.el - -;;;*** - -;;;### (autoloads nil "pcl-cvs-lucid" "pcl-cvs/pcl-cvs-lucid.el" (12675 57113)) -;;; Generated autoloads from pcl-cvs/pcl-cvs-lucid.el - -;;;*** - -;;;### (autoloads nil "pcl-cvs-startup" "pcl-cvs/pcl-cvs-startup.el" (12675 57106)) -;;; Generated autoloads from pcl-cvs/pcl-cvs-startup.el - -;;;*** - -;;;### (autoloads (pcl-cvs-fontify) "pcl-cvs-xemacs" "pcl-cvs/pcl-cvs-xemacs.el" (12686 31809)) -;;; Generated autoloads from pcl-cvs/pcl-cvs-xemacs.el - -(autoload 'pcl-cvs-fontify "pcl-cvs-xemacs" nil nil nil) - -;;;*** - -;;;### (autoloads (cvs-update-other-window cvs-update) "pcl-cvs" "pcl-cvs/pcl-cvs.el" (12686 31737)) -;;; Generated autoloads from pcl-cvs/pcl-cvs.el - -(autoload 'cvs-update "pcl-cvs" "\ -Run a 'cvs update' in the current working directory. Feed the -output to a *cvs* buffer and run cvs-mode on it. -If optional prefix argument LOCAL is non-nil, 'cvs update -l' is run." t nil) - -(autoload 'cvs-update-other-window "pcl-cvs" "\ -Run a 'cvs update' in the current working directory. Feed the -output to a *cvs* buffer, display it in the other window, and run -cvs-mode on it. - -If optional prefix argument LOCAL is non-nil, 'cvs update -l' is run." t nil) - -;;;*** - -;;;### (autoloads nil "string" "pcl-cvs/string.el" (12675 57116)) -;;; Generated autoloads from pcl-cvs/string.el - -;;;*** - -;;;### (autoloads (about-xemacs) "about" "prim/about.el" (12782 56406)) -;;; Generated autoloads from prim/about.el - -(autoload 'about-xemacs "about" nil t nil) - -;;;*** - -;;;### (autoloads (all-hail-emacs all-hail-xemacs praise-be-unto-emacs praise-be-unto-xemacs) "advocacy" "prim/advocacy.el" (12748 62826)) -;;; Generated autoloads from prim/advocacy.el - -(defvar xemacs-praise-sound-file "sounds/im_so_happy.au" "\ -The name of an audio file containing something to play -when praising XEmacs") - -(defvar xemacs-praise-message "All Hail XEmacs!\n" "\ -What to praise XEmacs with") - -(autoload 'praise-be-unto-xemacs "advocacy" "\ -All Hail XEmacs!" t nil) - -(autoload 'praise-be-unto-emacs "advocacy" nil t nil) - -(autoload 'all-hail-xemacs "advocacy" "\ -All Hail XEmacs!" t nil) - -(autoload 'all-hail-emacs "advocacy" nil t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "backquote" "prim/backquote.el" (12677 32599)) -;;; Generated autoloads from prim/backquote.el - -;;;*** - -;;;### (autoloads nil "buffer" "prim/buffer.el" (12677 32606)) -;;; Generated autoloads from prim/buffer.el - -;;;### (autoloads (describe-buffer-case-table) "case-table" "prim/case-table.el" (12677 32539)) -;;; Generated autoloads from prim/case-table.el - -(autoload 'describe-buffer-case-table "case-table" "\ -Describe the case table of the current buffer." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "cmdloop" "prim/cmdloop.el" (12677 32587)) -;;; Generated autoloads from prim/cmdloop.el - -;;;*** - -;;;### (autoloads nil "cmdloop1" "prim/cmdloop1.el" (12677 32593)) -;;; Generated autoloads from prim/cmdloop1.el - -;;;*** - -;;;### (autoloads nil "console" "prim/console.el" (12677 32604)) -;;; Generated autoloads from prim/console.el - -;;;### (autoloads nil "curmudgeon" "prim/curmudgeon.el" (12648 4996)) -;;; Generated autoloads from prim/curmudgeon.el - -;;;### (autoloads (cancel-debug-on-entry debug-on-entry debug) "debug" "prim/debug.el" (12677 32548)) -;;; Generated autoloads from prim/debug.el - -(autoload 'debug "debug" "\ -Enter debugger. To return, type \\<debugger-mode-map>`\\[debugger-continue]'. -Arguments are mainly for use when this is called - from the internals of the evaluator. -You may call with no args, or you may - pass nil as the first arg and any other args you like. - In that case, the list of args after the first will - be printed into the backtrace buffer." t nil) - -(autoload 'debug-on-entry "debug" "\ -Request FUNCTION to invoke debugger each time it is called. -If you tell the debugger to continue, FUNCTION's execution proceeds. -This works by modifying the definition of FUNCTION, -which must be written in Lisp, not predefined. -Use \\[cancel-debug-on-entry] to cancel the effect of this command. -Redefining FUNCTION also cancels it." t nil) - -(autoload 'cancel-debug-on-entry "debug" "\ -Undo effect of \\[debug-on-entry] on FUNCTION. -If argument is nil or an empty string, cancel for all functions." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "device" "prim/device.el" (12677 32599)) -;;; Generated autoloads from prim/device.el - -;;;*** - -;;;### (autoloads nil "dialog" "prim/dialog.el" (12677 32597)) -;;; Generated autoloads from prim/dialog.el - -;;;### (autoloads (standard-display-european standard-display-underline standard-display-graphic standard-display-g1 standard-display-ascii standard-display-default standard-display-8bit make-display-table describe-current-display-table) "disp-table" "prim/disp-table.el" (12677 32597)) -;;; Generated autoloads from prim/disp-table.el - -(autoload 'describe-current-display-table "disp-table" "\ -Describe the display table in use in the selected window and buffer." t nil) - -(autoload 'make-display-table "disp-table" "\ -Return a new, empty display table." nil nil) - -(autoload 'standard-display-8bit "disp-table" "\ -Display characters in the range L to H literally." nil nil) - -(autoload 'standard-display-default "disp-table" "\ -Display characters in the range L to H using the default notation." nil nil) - -(autoload 'standard-display-ascii "disp-table" "\ -Display character C using printable string S." nil nil) - -(autoload 'standard-display-g1 "disp-table" "\ -Display character C as character SC in the g1 character set. -This function assumes that your terminal uses the SO/SI characters; -it is meaningless for an X frame." nil nil) - -(autoload 'standard-display-graphic "disp-table" "\ -Display character C as character GC in graphics character set. -This function assumes VT100-compatible escapes; it is meaningless for an -X frame." nil nil) - -(autoload 'standard-display-underline "disp-table" "\ -Display character C as character UC plus underlining." nil nil) - -(autoload 'standard-display-european "disp-table" "\ -Toggle display of European characters encoded with ISO 8859. -When enabled, characters in the range of 160 to 255 display not -as octal escapes, but as accented characters. -With prefix argument, enable European character display iff arg is positive." t nil) - -;;;*** - -;;;### (autoloads (setenv) "env" "prim/env.el" (12677 32596)) -;;; Generated autoloads from prim/env.el - -(autoload 'setenv "env" "\ -Set the value of the environment variable named VARIABLE to VALUE. -VARIABLE should be a string. VALUE is optional; if not provided or is -`nil', the environment variable VARIABLE will be removed. - -Interactively, a prefix argument means to unset the variable. -Interactively, the current value (if any) of the variable -appears at the front of the history list when you type in the new value. - -This function works by modifying `process-environment'." t nil) - -;;;*** - -;;;### (autoloads nil "events" "prim/events.el" (12723 42162)) -;;; Generated autoloads from prim/events.el - -;;;*** - -;;;*** - -;;;### (autoloads nil "extents" "prim/extents.el" (12807 55695)) -;;; Generated autoloads from prim/extents.el - -;;;*** - -;;;### (autoloads nil "faces" "prim/faces.el" (12807 55177)) -;;; Generated autoloads from prim/faces.el - -;;;*** - -;;;### (autoloads nil "files-nomule" "prim/files-nomule.el" (12677 32601)) -;;; Generated autoloads from prim/files-nomule.el - -;;;*** - -;;;### (autoloads nil "files" "prim/files.el" (12807 55202)) -;;; Generated autoloads from prim/files.el - -;;;*** - -;;;### (autoloads nil "fill" "prim/fill.el" (12677 32537)) -;;; Generated autoloads from prim/fill.el - -;;;*** - -;;;### (autoloads nil "float-sup" "prim/float-sup.el" (12677 32540)) -;;; Generated autoloads from prim/float-sup.el - -;;;*** - -;;;### (autoloads nil "format" "prim/format.el" (12677 32604)) -;;; Generated autoloads from prim/format.el - -;;;*** - -;;;### (autoloads nil "frame" "prim/frame.el" (12807 55443)) -;;; Generated autoloads from prim/frame.el - -;;;*** - -;;;### (autoloads nil "glyphs" "prim/glyphs.el" (12731 34889)) -;;; Generated autoloads from prim/glyphs.el - -;;;*** - -;;;### (autoloads nil "gui" "prim/gui.el" (12677 32607)) -;;; Generated autoloads from prim/gui.el - -;;;*** - -;;;### (autoloads nil "help" "prim/help.el" (12748 62806)) -;;; Generated autoloads from prim/help.el - -;;;*** - -;;;### (autoloads nil "inc-vers" "prim/inc-vers.el" (12677 32555)) -;;; Generated autoloads from prim/inc-vers.el - -;;;*** - -;;;### (autoloads nil "indent" "prim/indent.el" (12677 32539)) -;;; Generated autoloads from prim/indent.el - -;;;### (autoloads nil "isearch-mode" "prim/isearch-mode.el" (12713 64141)) -;;; Generated autoloads from prim/isearch-mode.el - -;;;*** - -;;;*** - -;;;### (autoloads nil "itimer" "prim/itimer.el" (12677 32589)) -;;; Generated autoloads from prim/itimer.el - -;;;*** - -;;;### (autoloads nil "keydefs" "prim/keydefs.el" (12677 32584)) -;;; Generated autoloads from prim/keydefs.el - -;;;*** - -;;;### (autoloads nil "keymap" "prim/keymap.el" (12807 55309)) -;;; Generated autoloads from prim/keymap.el - -;;;*** - -;;;### (autoloads nil "lisp" "prim/lisp.el" (12677 32539)) -;;; Generated autoloads from prim/lisp.el - -;;;*** - -;;;### (autoloads nil "loaddefs" "prim/loaddefs.el" (12808 3973)) -;;; Generated autoloads from prim/loaddefs.el - -;;;*** - -;;;### (autoloads nil "loadup-el" "prim/loadup-el.el" (12677 32596)) -;;; Generated autoloads from prim/loadup-el.el - -;;;*** - -;;;### (autoloads nil "loadup" "prim/loadup.el" (12808 4537)) -;;; Generated autoloads from prim/loadup.el - -;;;### (autoloads (apply-macro-to-region-lines kbd-macro-query insert-kbd-macro name-last-kbd-macro) "macros" "prim/macros.el" (12677 32539)) -;;; Generated autoloads from prim/macros.el - -(autoload 'name-last-kbd-macro "macros" "\ -Assign a name to the last keyboard macro defined. -Argument SYMBOL is the name to define. -The symbol's function definition becomes the keyboard macro string. -Such a \"function\" cannot be called from Lisp, but it is a valid -editor command." t nil) - -(autoload 'insert-kbd-macro "macros" "\ -Insert in buffer the definition of kbd macro NAME, as Lisp code. -Optional second argument KEYS means also record the keys it is on -\(this is the prefix argument, when calling interactively). - -This Lisp code will, when executed, define the kbd macro with the -same definition it has now. If you say to record the keys, -the Lisp code will also rebind those keys to the macro. -Only global key bindings are recorded since executing this Lisp code -always makes global bindings. - -To save a kbd macro, visit a file of Lisp code such as your `~/.emacs', -use this command, and then save the file." t nil) - -(autoload 'kbd-macro-query "macros" "\ -Query user during kbd macro execution. -With prefix argument, enters recursive edit, - reading keyboard commands even within a kbd macro. - You can give different commands each time the macro executes. -Without prefix argument, asks whether to continue running the macro. -Your options are: \\<query-replace-map> -\\[act] Finish this iteration normally and continue with the next. -\\[skip] Skip the rest of this iteration, and start the next. -\\[exit] Stop the macro entirely right now. -\\[recenter] Redisplay the frame, then ask again. -\\[edit] Enter recursive edit; ask again when you exit from that." t nil) - -(autoload 'apply-macro-to-region-lines "macros" "\ -For each complete line between point and mark, move to the beginning -of the line, and run the last keyboard macro. - -When called from lisp, this function takes two arguments TOP and -BOTTOM, describing the current region. TOP must be before BOTTOM. -The optional third argument MACRO specifies a keyboard macro to -execute. - -This is useful for quoting or unquoting included text, adding and -removing comments, or producing tables where the entries are regular. - -For example, in Usenet articles, sections of text quoted from another -author are indented, or have each line start with `>'. To quote a -section of text, define a keyboard macro which inserts `>', put point -and mark at opposite ends of the quoted section, and use -`\\[apply-macro-to-region-lines]' to mark the entire section. - -Suppose you wanted to build a keyword table in C where each entry -looked like this: - - { \"foo\", foo_data, foo_function }, - { \"bar\", bar_data, bar_function }, - { \"baz\", baz_data, baz_function }, - -You could enter the names in this format: - - foo - bar - baz - -and write a macro to massage a word into a table entry: - - \\C-x ( - \\M-d { \"\\C-y\", \\C-y_data, \\C-y_function }, - \\C-x ) - -and then select the region of un-tablified names and use -`\\[apply-macro-to-region-lines]' to build the table from the names. -" t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "menubar" "prim/menubar.el" (12677 32542)) -;;; Generated autoloads from prim/menubar.el - -;;;*** - -;;;### (autoloads nil "minibuf" "prim/minibuf.el" (12807 55265)) -;;; Generated autoloads from prim/minibuf.el - -;;;*** - -;;;### (autoloads nil "misc" "prim/misc.el" (12677 32548)) -;;; Generated autoloads from prim/misc.el - -;;;*** - -;;;### (autoloads nil "mode-motion" "prim/mode-motion.el" (12677 32547)) -;;; Generated autoloads from prim/mode-motion.el - -;;;*** - -;;;### (autoloads nil "modeline" "prim/modeline.el" (12731 37914)) -;;; Generated autoloads from prim/modeline.el - -;;;*** - -;;;### (autoloads nil "mouse" "prim/mouse.el" (12748 62808)) -;;; Generated autoloads from prim/mouse.el - -;;;### (autoloads (disable-command enable-command disabled-command-hook) "novice" "prim/novice.el" (12677 32578)) -;;; Generated autoloads from prim/novice.el - -(autoload 'disabled-command-hook "novice" nil nil nil) - -(autoload 'enable-command "novice" "\ -Allow COMMAND to be executed without special confirmation from now on. -The user's .emacs file is altered so that this will apply -to future sessions." t nil) - -(autoload 'disable-command "novice" "\ -Require special confirmation to execute COMMAND from now on. -The user's .emacs file is altered so that this will apply -to future sessions." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "objects" "prim/objects.el" (12677 32598)) -;;; Generated autoloads from prim/objects.el - -;;;*** - -;;;### (autoloads nil "obsolete" "prim/obsolete.el" (12701 8652)) -;;; Generated autoloads from prim/obsolete.el - -;;;### (autoloads (edit-options list-options) "options" "prim/options.el" (12677 32546)) -;;; Generated autoloads from prim/options.el - -(autoload 'list-options "options" "\ -Display a list of XEmacs user options, with values and documentation." t nil) - -(autoload 'edit-options "options" "\ -Edit a list of XEmacs user option values. -Selects a buffer containing such a list, -in which there are commands to set the option values. -Type \\[describe-mode] in that buffer for a list of commands." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "page" "prim/page.el" (12677 32535)) -;;; Generated autoloads from prim/page.el - -;;;*** - -;;;### (autoloads nil "paragraphs" "prim/paragraphs.el" (12677 32580)) -;;; Generated autoloads from prim/paragraphs.el - -;;;### (autoloads nil "process" "prim/process.el" (12723 42161)) -;;; Generated autoloads from prim/process.el - -;;;*** - -;;;### (autoloads nil "profile" "prim/profile.el" (12677 32606)) -;;; Generated autoloads from prim/profile.el - -;;;### (autoloads (clear-rectangle string-rectangle open-rectangle insert-rectangle yank-rectangle kill-rectangle extract-rectangle delete-extract-rectangle delete-rectangle) "rect" "prim/rect.el" (12677 32555)) -;;; Generated autoloads from prim/rect.el - -(autoload 'delete-rectangle "rect" "\ -Delete (don't save) text in rectangle with point and mark as corners. -The same range of columns is deleted in each line -starting with the line where the region begins -and ending with the line where the region ends." t nil) - -(autoload 'delete-extract-rectangle "rect" "\ -Delete contents of rectangle and return it as a list of strings. -Arguments START and END are the corners of the rectangle. -The value is list of strings, one for each line of the rectangle." nil nil) - -(autoload 'extract-rectangle "rect" "\ -Return contents of rectangle with corners at START and END. -Value is list of strings, one for each line of the rectangle." nil nil) - -(defvar killed-rectangle nil "\ -Rectangle for yank-rectangle to insert.") - -(autoload 'kill-rectangle "rect" "\ -Delete rectangle with corners at point and mark; save as last killed one. -Calling from program, supply two args START and END, buffer positions. -But in programs you might prefer to use `delete-extract-rectangle'." t nil) - -(autoload 'yank-rectangle "rect" "\ -Yank the last killed rectangle with upper left corner at point." t nil) - -(autoload 'insert-rectangle "rect" "\ -Insert text of RECTANGLE with upper left corner at point. -RECTANGLE's first line is inserted at point, -its second line is inserted at a point vertically under point, etc. -RECTANGLE should be a list of strings. -After this command, the mark is at the upper left corner -and point is at the lower right corner." nil nil) - -(autoload 'open-rectangle "rect" "\ -Blank out rectangle with corners at point and mark, shifting text right. -The text previously in the region is not overwritten by the blanks, -but instead winds up to the right of the rectangle." t nil) - -(autoload 'string-rectangle "rect" "\ -Insert STRING on each line of the region-rectangle, shifting text right. -The left edge of the rectangle specifies the column for insertion. -This command does not delete or overwrite any existing text. - -Called from a program, takes three args; START, END and STRING." t nil) - -(autoload 'clear-rectangle "rect" "\ -Blank out rectangle with corners at point and mark. -The text previously in the region is overwritten by the blanks. -When called from a program, requires two args which specify the corners." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "register" "prim/register.el" (12677 32547)) -;;; Generated autoloads from prim/register.el - -;;;*** - -;;;### (autoloads nil "replace" "prim/replace.el" (12807 55225)) -;;; Generated autoloads from prim/replace.el - -;;;### (autoloads (reposition-window) "reposition" "prim/reposition.el" (12677 32578)) -;;; Generated autoloads from prim/reposition.el - -(autoload 'reposition-window "reposition" "\ -Make the current definition and/or comment visible. -Further invocations move it to the top of the window or toggle the -visibility of comments that precede it. - Point is left unchanged unless prefix ARG is supplied. - If the definition is fully onscreen, it is moved to the top of the -window. If it is partly offscreen, the window is scrolled to get the -definition (or as much as will fit) onscreen, unless point is in a comment -which is also partly offscreen, in which case the scrolling attempts to get -as much of the comment onscreen as possible. - Initially `reposition-window' attempts to make both the definition and -preceding comments visible. Further invocations toggle the visibility of -the comment lines. - If ARG is non-nil, point may move in order to make the whole defun -visible (if only part could otherwise be made so), to make the defun line -visible (if point is in code and it could not be made so, or if only -comments, including the first comment line, are visible), or to make the -first comment line visible (if point is in a comment)." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "scrollbar" "prim/scrollbar.el" (12677 32600)) -;;; Generated autoloads from prim/scrollbar.el - -;;;### (autoloads nil "simple" "prim/simple.el" (12689 65207)) -;;; Generated autoloads from prim/simple.el - -;;;### (autoloads (reverse-region sort-columns sort-regexp-fields sort-fields sort-float-fields sort-numeric-fields sort-pages sort-paragraphs sort-lines sort-subr) "sort" "prim/sort.el" (12677 32586)) -;;; Generated autoloads from prim/sort.el - -(autoload 'sort-subr "sort" "\ -General text sorting routine to divide buffer into records and sort them. -Arguments are REVERSE NEXTRECFUN ENDRECFUN &optional STARTKEYFUN ENDKEYFUN. - -We divide the accessible portion of the buffer into disjoint pieces -called sort records. A portion of each sort record (perhaps all of -it) is designated as the sort key. The records are rearranged in the -buffer in order by their sort keys. The records may or may not be -contiguous. - -Usually the records are rearranged in order of ascending sort key. -If REVERSE is non-nil, they are rearranged in order of descending sort key. - -The next four arguments are functions to be called to move point -across a sort record. They will be called many times from within sort-subr. - -NEXTRECFUN is called with point at the end of the previous record. -It moves point to the start of the next record. -It should move point to the end of the buffer if there are no more records. -The first record is assumed to start at the position of point when sort-subr -is called. - -ENDRECFUN is called with point within the record. -It should move point to the end of the record. - -STARTKEYFUN moves from the start of the record to the start of the key. -It may return either a non-nil value to be used as the key, or -else the key is the substring between the values of point after -STARTKEYFUN and ENDKEYFUN are called. If STARTKEYFUN is nil, the key -starts at the beginning of the record. - -ENDKEYFUN moves from the start of the sort key to the end of the sort key. -ENDKEYFUN may be nil if STARTKEYFUN returns a value or if it would be the -same as ENDRECFUN." nil nil) - -(autoload 'sort-lines "sort" "\ -Sort lines in region alphabetically; argument means descending order. -Called from a program, there are three arguments: -REVERSE (non-nil means reverse order), BEG and END (region to sort)." t nil) - -(autoload 'sort-paragraphs "sort" "\ -Sort paragraphs in region alphabetically; argument means descending order. -Called from a program, there are three arguments: -REVERSE (non-nil means reverse order), BEG and END (region to sort)." t nil) - -(autoload 'sort-pages "sort" "\ -Sort pages in region alphabetically; argument means descending order. -Called from a program, there are three arguments: -REVERSE (non-nil means reverse order), BEG and END (region to sort)." t nil) - -(autoload 'sort-numeric-fields "sort" "\ -Sort lines in region numerically by the ARGth field of each line. -Fields are separated by whitespace and numbered from 1 up. -Specified field must contain a number in each line of the region. -With a negative arg, sorts by the ARGth field counted from the right. -Called from a program, there are three arguments: -FIELD, BEG and END. BEG and END specify region to sort. -If you want to sort floating-point numbers, try `sort-float-fields'." t nil) - -(autoload 'sort-float-fields "sort" "\ -Sort lines in region numerically by the ARGth field of each line. -Fields are separated by whitespace and numbered from 1 up. Specified field -must contain a floating point number in each line of the region. With a -negative arg, sorts by the ARGth field counted from the right. Called from a -program, there are three arguments: FIELD, BEG and END. BEG and END specify -region to sort." t nil) - -(autoload 'sort-fields "sort" "\ -Sort lines in region lexicographically by the ARGth field of each line. -Fields are separated by whitespace and numbered from 1 up. -With a negative arg, sorts by the ARGth field counted from the right. -Called from a program, there are three arguments: -FIELD, BEG and END. BEG and END specify region to sort." t nil) - -(autoload 'sort-regexp-fields "sort" "\ -Sort the region lexicographically as specified by RECORD-REGEXP and KEY. -RECORD-REGEXP specifies the textual units which should be sorted. - For example, to sort lines RECORD-REGEXP would be \"^.*$\" -KEY specifies the part of each record (ie each match for RECORD-REGEXP) - is to be used for sorting. - If it is \"\\\\digit\" then the digit'th \"\\\\(...\\\\)\" match field from - RECORD-REGEXP is used. - If it is \"\\\\&\" then the whole record is used. - Otherwise, it is a regular-expression for which to search within the record. -If a match for KEY is not found within a record then that record is ignored. - -With a negative prefix arg sorts in reverse order. - -For example: to sort lines in the region by the first word on each line - starting with the letter \"f\", - RECORD-REGEXP would be \"^.*$\" and KEY would be \"\\\\=\\<f\\\\w*\\\\>\"" t nil) - -(autoload 'sort-columns "sort" "\ -Sort lines in region alphabetically by a certain range of columns. -For the purpose of this command, the region includes -the entire line that point is in and the entire line the mark is in. -The column positions of point and mark bound the range of columns to sort on. -A prefix argument means sort into reverse order. - -Note that `sort-columns' rejects text that contains tabs, -because tabs could be split across the specified columns -and it doesn't know how to handle that. Also, when possible, -it uses the `sort' utility program, which doesn't understand tabs. -Use \\[untabify] to convert tabs to spaces before sorting." t nil) - -(autoload 'reverse-region "sort" "\ -Reverse the order of lines in a region. -From a program takes two point or marker arguments, BEG and END." t nil) - -;;;*** - -;;;### (autoloads (load-default-sounds load-sound-file) "sound" "prim/sound.el" (12677 32584)) -;;; Generated autoloads from prim/sound.el - -(or sound-alist (setq sound-alist '((ready nil) (warp nil)))) - -(autoload 'load-sound-file "sound" "\ -Read in an audio-file and add it to the sound-alist. - -You can only play sound files if you are running on display 0 of the console -of a Sun SparcStation, SGI machine, or HP9000s700, or running a NetAudio -server. The sound file must be in the Sun/NeXT U-LAW format." t nil) - -(autoload 'load-default-sounds "sound" "\ -Load and install some sound files as beep-types. -This only works if you're on display 0 of a Sun SparcStation, SGI machine, -or HP9000s700, or running a NetAudio server." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "specifier" "prim/specifier.el" (12807 56265)) -;;; Generated autoloads from prim/specifier.el - -;;;*** - -;;;### (autoloads nil "startup" "prim/startup.el" (12782 56012)) -;;; Generated autoloads from prim/startup.el - -;;;*** - -;;;### (autoloads nil "subr" "prim/subr.el" (12677 32556)) -;;; Generated autoloads from prim/subr.el - -;;;*** - -;;;### (autoloads nil "symbols" "prim/symbols.el" (12677 32605)) -;;; Generated autoloads from prim/symbols.el - -;;;*** - -;;;### (autoloads nil "syntax" "prim/syntax.el" (12807 55354)) -;;; Generated autoloads from prim/syntax.el - -;;;### (autoloads (tabify untabify) "tabify" "prim/tabify.el" (12677 32587)) -;;; Generated autoloads from prim/tabify.el - -(autoload 'untabify "tabify" "\ -Convert all tabs in region to multiple spaces, preserving columns. -Called non-interactively, the region is specified by arguments -START and END, rather than by the position of point and mark. -The variable `tab-width' controls the spacing of tab stops." t nil) - -(autoload 'tabify "tabify" "\ -Convert multiple spaces in region to tabs when possible. -A group of spaces is partially replaced by tabs -when this can be done without changing the column they end at. -Called non-interactively, the region is specified by arguments -START and END, rather than by the position of point and mark. -The variable `tab-width' controls the spacing of tab stops." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "toolbar" "prim/toolbar.el" (12677 32580)) -;;; Generated autoloads from prim/toolbar.el - -;;;*** - -;;;### (autoloads nil "undo-stack" "prim/undo-stack.el" (12807 56246)) -;;; Generated autoloads from prim/undo-stack.el - -;;;*** - -;;;### (autoloads nil "update-elc" "prim/update-elc.el" (12677 32597)) -;;; Generated autoloads from prim/update-elc.el - -;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock) "userlock" "prim/userlock.el" (12677 32588)) -;;; Generated autoloads from prim/userlock.el - -(autoload 'ask-user-about-lock "userlock" "\ -Ask user what to do when he wants to edit FILE but it is locked by USER. -This function has a choice of three things to do: - do (signal 'file-locked (list FILE USER)) - to refrain from editing the file - return t (grab the lock on the file) - return nil (edit the file even though it is locked). -You can rewrite it to use any criterion you like to choose which one to do." nil nil) - -(autoload 'ask-user-about-supersession-threat "userlock" "\ -Ask a user who is about to modify an obsolete buffer what to do. -This function has two choices: it can return, in which case the modification -of the buffer will proceed, or it can (signal 'file-supersession (file)), -in which case the proposed buffer modification will not be made. - -You can rewrite this to use any criterion you like to choose which one to do. -The buffer in question is current when this function is called." nil nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "window" "prim/window.el" (12677 32584)) -;;; Generated autoloads from prim/window.el - -;;;*** - -;;;### (autoloads nil "iso-sgml" "psgml/iso-sgml.el" (12807 62604)) -;;; Generated autoloads from psgml/iso-sgml.el - -;;;*** - -;;;### (autoloads nil "psgml-api" "psgml/psgml-api.el" (12677 33125)) -;;; Generated autoloads from psgml/psgml-api.el - -;;;*** - -;;;### (autoloads nil "psgml-charent" "psgml/psgml-charent.el" (12677 33125)) -;;; Generated autoloads from psgml/psgml-charent.el - -;;;*** - -;;;### (autoloads nil "psgml-debug" "psgml/psgml-debug.el" (12677 33125)) -;;; Generated autoloads from psgml/psgml-debug.el - -;;;*** - -;;;### (autoloads nil "psgml-dtd" "psgml/psgml-dtd.el" (12677 33127)) -;;; Generated autoloads from psgml/psgml-dtd.el - -;;;*** - -;;;### (autoloads nil "psgml-edit" "psgml/psgml-edit.el" (12677 33129)) -;;; Generated autoloads from psgml/psgml-edit.el - -;;;### (autoloads (style-format) "psgml-fs" "psgml/psgml-fs.el" (12677 33124)) -;;; Generated autoloads from psgml/psgml-fs.el - -(autoload 'style-format "psgml-fs" nil t nil) - -;;;*** - -;;;### (autoloads nil "psgml-html" "psgml/psgml-html.el" (12677 33129)) -;;; Generated autoloads from psgml/psgml-html.el - -(autoload 'html-mode "psgml-html" "\ -HTML mode." t) - -(autoload 'html3-mode "psgml-html" "\ -HTML3 mode." t) - -;;;*** - -;;;*** - -;;;### (autoloads nil "psgml-info" "psgml/psgml-info.el" (12677 33130)) -;;; Generated autoloads from psgml/psgml-info.el - -;;;*** - -;;;### (autoloads nil "psgml-other" "psgml/psgml-other.el" (12677 33132)) -;;; Generated autoloads from psgml/psgml-other.el - -;;;*** - -;;;### (autoloads nil "psgml-parse" "psgml/psgml-parse.el" (12807 57462)) -;;; Generated autoloads from psgml/psgml-parse.el - -;;;*** - -;;;### (autoloads nil "psgml-style" "psgml/psgml-style.el" (12677 33124)) -;;; Generated autoloads from psgml/psgml-style.el - -;;;### (autoloads (tmpl-expand-templates-in-buffer tmpl-expand-templates-in-region) "psgml-tmpl-mode" "psgml/psgml-tmpl-mode.el" (12638 54403)) -;;; Generated autoloads from psgml/psgml-tmpl-mode.el - -(autoload 'tmpl-expand-templates-in-region "psgml-tmpl-mode" "\ -Expand the templates in the region from BEGIN to END. -If BEGIN and and are nil, then the current region is used." t nil) - -(autoload 'tmpl-expand-templates-in-buffer "psgml-tmpl-mode" "\ -Expand all templates in the current buffer." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "psgml-xemacs" "psgml/psgml-xemacs.el" (12677 33140)) -;;; Generated autoloads from psgml/psgml-xemacs.el - -;;;### (autoloads (sgml-mode) "psgml" "psgml/psgml.el" (12677 33140)) -;;; Generated autoloads from psgml/psgml.el - -(autoload 'sgml-mode "psgml" "\ -Major mode for editing SGML.\\<sgml-mode-map> -Makes > display the matching <. Makes / display matching /. -Use \\[sgml-validate] to validate your document with an SGML parser. - -You can find information with: -\\[sgml-show-context] Show the nesting of elements at cursor position. -\\[sgml-list-valid-tags] Show the tags valid at cursor position. - -Insert tags with completion of contextually valid tags with \\[sgml-insert-tag]. -End the current element with \\[sgml-insert-end-tag]. Insert an element (i.e. -both start and end tag) with \\[sgml-insert-element]. Or tag a region with -\\[sgml-tag-region]. - -To tag a region with the mouse, use transient mark mode or secondary selection. - -Structure editing: -\\[sgml-backward-element] Moves backwards over the previous element. -\\[sgml-forward-element] Moves forward over the nex element. -\\[sgml-down-element] Move forward and down one level in the element structure. -\\[sgml-backward-up-element] Move backward out of this element level. -\\[sgml-beginning-of-element] Move to after the start tag of the current element. -\\[sgml-end-of-element] Move to before the end tag of the current element. -\\[sgml-kill-element] Kill the element following the cursor. - -Finding interesting positions -\\[sgml-next-data-field] Move forward to next point where data is allowed. -\\[sgml-next-trouble-spot] Move forward to next point where something is - amiss with the structure. - -Folding and unfolding -\\[sgml-fold-element] Fold the lines comprising the current element, leaving - the first line visible. -\\[sgml-fold-subelement] Fold the elements in the content of the current element. - Leaving the first line of every element visible. -\\[sgml-unfold-line] Show hidden lines in current line. - -User options: - -sgml-omittag Set this to reflect OMITTAG in the SGML declaration. -sgml-shortag Set this to reflect SHORTTAG in the SGML declaration. -sgml-auto-insert-required-elements If non-nil, automatically insert required - elements in the content of an inserted element. -sgml-balanced-tag-edit If non-nil, always insert start-end tag pairs. -sgml-omittag-transparent If non-nil, will show legal tags inside elements - with omitable start tags and legal tags beyond omitable end tags. -sgml-leave-point-after-insert If non-nil, the point will remain after - inserted tag(s). -sgml-warn-about-undefined-elements If non-nil, print a warning when a tag - for a undefined element is found. -sgml-max-menu-size Max number of entries in Tags and Entities menus before - they are split into several panes. -sgml-always-quote-attributes If non-nil, quote all attribute values - inserted after finishing edit attributes. -sgml-minimize-attributes Determines minimization of attributes inserted by - edit-attributes. -sgml-normalize-trims If non-nil, sgml-normalize will trim off white space - from end of element when adding end tag. -sgml-indent-step How much to increament indent for every element level. -sgml-indent-data If non-nil, indent in data/mixed context also. -sgml-set-face If non-nil, psgml will set the face of parsed markup. -sgml-markup-faces The faces used when the above variable is non-nil. -sgml-system-path List of directorys used to look for system identifiers. -sgml-public-map Mapping from public identifiers to file names. -sgml-offer-save If non-nil, ask about saving modified buffers before - \\[sgml-validate] is run. - -All bindings: -\\{sgml-mode-map} -" t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "tempo" "psgml/tempo.el" (12677 33139)) -;;; Generated autoloads from psgml/tempo.el - -;;;*** - -;;;### (autoloads nil "rmail-kill" "rmail/rmail-kill.el" (12677 32616)) -;;; Generated autoloads from rmail/rmail-kill.el - -;;;*** - -;;;### (autoloads nil "rmail-lucid" "rmail/rmail-lucid.el" (12677 32616)) -;;; Generated autoloads from rmail/rmail-lucid.el - -;;;### (autoloads (rmail-input rmail-mode rmail) "rmail" "rmail/rmail.el" (12724 35576)) -;;; Generated autoloads from rmail/rmail.el - -(defvar rmail-dont-reply-to-names nil "\ -*A regexp specifying names to prune of reply to messages. -A value of nil means exclude your own name only.") - -(defvar rmail-default-dont-reply-to-names "info-" "\ -A regular expression specifying part of the value of the default value of -the variable `rmail-dont-reply-to-names', for when the user does not set -`rmail-dont-reply-to-names' explicitly. (The other part of the default -value is the user's name.) -It is useful to set this variable in the site customization file.") - -(defvar rmail-delete-after-output nil "\ -*Non-nil means automatically delete a message that is copied to a file.") - -(defvar rmail-primary-inbox-list nil "\ -*List of files which are inboxes for user's primary mail file `~/RMAIL'. -`nil' means the default, which is (\"/usr/spool/mail/$USER\") -\(the name varies depending on the operating system, -and the value of the environment variable MAIL overrides it).") - -(defvar rmail-mail-new-frame nil "\ -*Non-nil means Rmail makes a new frame for composing outgoing mail.") - -(defvar rmail-retry-setup-hook nil "\ -Hook that `rmail-retry-failure' uses in place of `mail-setup-hook'.") - -(defvar rmail-last-file nil) - -(autoload 'rmail "rmail" "\ -Read and edit incoming mail. -Moves messages into file named by `rmail-file-name' (a babyl format file) - and edits that file in RMAIL Mode. -Type \\[describe-mode] once editing that file, for a list of RMAIL commands. - -May be called with filename as argument; then performs rmail editing on -that file, but does not copy any new mail into the file." t nil) - -(autoload 'rmail-mode "rmail" "\ -Rmail Mode is used by \\<rmail-mode-map>\\[rmail] for editing Rmail files. -All normal editing commands are turned off. -Instead, these commands are available: - -\\[rmail-beginning-of-message] Move point to front of this message (same as \\[beginning-of-buffer]). -\\[scroll-up] Scroll to next screen of this message. -\\[scroll-down] Scroll to previous screen of this message. -\\[rmail-next-undeleted-message] Move to Next non-deleted message. -\\[rmail-previous-undeleted-message] Move to Previous non-deleted message. -\\[rmail-next-message] Move to Next message whether deleted or not. -\\[rmail-previous-message] Move to Previous message whether deleted or not. -\\[rmail-first-message] Move to the first message in Rmail file. -\\[rmail-last-message] Move to the last message in Rmail file. -\\[rmail-show-message] Jump to message specified by numeric position in file. -\\[rmail-search] Search for string and show message it is found in. -\\[rmail-delete-forward] Delete this message, move to next nondeleted. -\\[rmail-delete-backward] Delete this message, move to previous nondeleted. -\\[rmail-undelete-previous-message] Undelete message. Tries current message, then earlier messages - till a deleted message is found. -\\[rmail-edit-current-message] Edit the current message. \\[rmail-cease-edit] to return to Rmail. -\\[rmail-expunge] Expunge deleted messages. -\\[rmail-expunge-and-save] Expunge and save the file. -\\[rmail-quit] Quit Rmail: expunge, save, then switch to another buffer. -\\[save-buffer] Save without expunging. -\\[rmail-get-new-mail] Move new mail from system spool directory into this file. -\\[rmail-mail] Mail a message (same as \\[mail-other-window]). -\\[rmail-continue] Continue composing outgoing message started before. -\\[rmail-reply] Reply to this message. Like \\[rmail-mail] but initializes some fields. -\\[rmail-retry-failure] Send this message again. Used on a mailer failure message. -\\[rmail-forward] Forward this message to another user. -\\[rmail-output-to-rmail-file] Output this message to an Rmail file (append it). -\\[rmail-output] Output this message to a Unix-format mail file (append it). -\\[rmail-input] Input Rmail file. Run Rmail on that file. -\\[rmail-add-label] Add label to message. It will be displayed in the mode line. -\\[rmail-kill-label] Kill label. Remove a label from current message. -\\[rmail-next-labeled-message] Move to Next message with specified label - (label defaults to last one specified). - Standard labels: filed, unseen, answered, forwarded, deleted. - Any other label is present only if you add it with \\[rmail-add-label]. -\\[rmail-previous-labeled-message] Move to Previous message with specified label -\\[rmail-summary] Show headers buffer, with a one line summary of each message. -\\[rmail-summary-by-labels] Summarize only messages with particular label(s). -\\[rmail-summary-by-recipients] Summarize only messages with particular recipient(s). -\\[rmail-summary-by-regexp] Summarize only messages with particular regexp(s). -\\[rmail-summary-by-topic] Summarize only messages with subject line regexp(s). -\\[rmail-toggle-header] Toggle display of complete header." t nil) - -(autoload 'rmail-input "rmail" "\ -Run Rmail on file FILENAME." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "rmailedit" "rmail/rmailedit.el" (12677 32616)) -;;; Generated autoloads from rmail/rmailedit.el - -;;;*** - -;;;### (autoloads nil "rmailkwd" "rmail/rmailkwd.el" (12677 32619)) -;;; Generated autoloads from rmail/rmailkwd.el - -;;;*** - -;;;### (autoloads nil "rmailmsc" "rmail/rmailmsc.el" (12677 32619)) -;;; Generated autoloads from rmail/rmailmsc.el - -;;;### (autoloads (rmail-file-p) "rmailout" "rmail/rmailout.el" (12677 32620)) -;;; Generated autoloads from rmail/rmailout.el - -(autoload 'rmail-file-p "rmailout" nil nil nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "rmailsort" "rmail/rmailsort.el" (12677 32620)) -;;; Generated autoloads from rmail/rmailsort.el - -;;;*** - -;;;### (autoloads nil "rmailsum" "rmail/rmailsum.el" (12677 32620)) -;;; Generated autoloads from rmail/rmailsum.el - -;;;*** - -;;;### (autoloads nil "undigest" "rmail/undigest.el" (12677 32621)) -;;; Generated autoloads from rmail/undigest.el - -;;;### (autoloads (unrmail batch-unrmail) "unrmail" "rmail/unrmail.el" (12677 32621)) -;;; Generated autoloads from rmail/unrmail.el - -(autoload 'batch-unrmail "unrmail" "\ -Convert Rmail files to mailbox files. -Specify the input Rmail file names as command line arguments. -For each Rmail file, the corresponding output file name -is made by adding `.mail' at the end. -For example, invoke `emacs -batch -f batch-unrmail RMAIL'." nil nil) - -(autoload 'unrmail "unrmail" "\ -Convert Rmail file FILE to mailbox-format file TO-FILE." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "sunpro-init" "sunpro/sunpro-init.el" (12807 56367)) -;;; Generated autoloads from sunpro/sunpro-init.el - -;;;*** - -;;;### (autoloads nil "sunpro-keys" "sunpro/sunpro-keys.el" (12677 32713)) -;;; Generated autoloads from sunpro/sunpro-keys.el - -;;;*** - -;;;### (autoloads nil "sunpro-load" "sunpro/sunpro-load.el" (12688 9300)) -;;; Generated autoloads from sunpro/sunpro-load.el - -;;;### (autoloads nil "sunpro-menubar" "sunpro/sunpro-menubar.el" (12738 54596)) -;;; Generated autoloads from sunpro/sunpro-menubar.el - -;;;*** - -;;;### (autoloads nil "sunpro-sparcworks" "sunpro/sunpro-sparcworks.el" (12738 54598)) -;;; Generated autoloads from sunpro/sunpro-sparcworks.el - -;;;*** - -;;;### (autoloads nil "AT386" "term/AT386.el" (12677 32622)) -;;; Generated autoloads from term/AT386.el - -;;;*** - -;;;### (autoloads nil "apollo" "term/apollo.el" (12677 32622)) -;;; Generated autoloads from term/apollo.el - -;;;*** - -;;;### (autoloads nil "bg-mouse" "term/bg-mouse.el" (12677 32623)) -;;; Generated autoloads from term/bg-mouse.el - -;;;*** - -;;;### (autoloads nil "bobcat" "term/bobcat.el" (12677 32624)) -;;; Generated autoloads from term/bobcat.el - -;;;*** - -;;;### (autoloads nil "internal" "term/internal.el" (12677 32624)) -;;; Generated autoloads from term/internal.el - -;;;*** - -;;;### (autoloads nil "keyswap" "term/keyswap.el" (12677 32624)) -;;; Generated autoloads from term/keyswap.el - -;;;*** - -;;;### (autoloads nil "linux" "term/linux.el" (12677 32624)) -;;; Generated autoloads from term/linux.el - -;;;*** - -;;;### (autoloads nil "lk201" "term/lk201.el" (12677 32624)) -;;; Generated autoloads from term/lk201.el - -;;;*** - -;;;### (autoloads nil "news" "term/news.el" (12677 32622)) -;;; Generated autoloads from term/news.el - -;;;*** - -;;;### (autoloads nil "pc-win" "term/pc-win.el" (12677 32625)) -;;; Generated autoloads from term/pc-win.el - -;;;*** - -;;;### (autoloads nil "scoansi" "term/scoansi.el" (12748 62974)) -;;; Generated autoloads from term/scoansi.el - -;;;*** - -;;;### (autoloads nil "sun-mouse" "term/sun-mouse.el" (12807 56584)) -;;; Generated autoloads from term/sun-mouse.el - -;;;*** - -;;;### (autoloads nil "sun" "term/sun.el" (12677 32627)) -;;; Generated autoloads from term/sun.el - -;;;*** - -;;;### (autoloads nil "sup-mouse" "term/sup-mouse.el" (12677 32628)) -;;; Generated autoloads from term/sup-mouse.el - -;;;*** - -;;;### (autoloads nil "tty-init" "term/tty-init.el" (12701 8657)) -;;; Generated autoloads from term/tty-init.el - -;;;*** - -;;;### (autoloads nil "tvi970" "term/tvi970.el" (12677 32628)) -;;; Generated autoloads from term/tvi970.el - -;;;*** - -;;;### (autoloads nil "vt-control" "term/vt-control.el" (12677 32623)) -;;; Generated autoloads from term/vt-control.el - -;;;*** - -;;;### (autoloads nil "vt100-led" "term/vt100-led.el" (12677 32623)) -;;; Generated autoloads from term/vt100-led.el - -;;;*** - -;;;### (autoloads nil "vt100" "term/vt100.el" (12677 32622)) -;;; Generated autoloads from term/vt100.el - -;;;*** - -;;;### (autoloads nil "vt102" "term/vt102.el" (12677 32628)) -;;; Generated autoloads from term/vt102.el - -;;;*** - -;;;### (autoloads nil "vt125" "term/vt125.el" (12677 32623)) -;;; Generated autoloads from term/vt125.el - -;;;*** - -;;;### (autoloads nil "vt200" "term/vt200.el" (12677 32628)) -;;; Generated autoloads from term/vt200.el - -;;;*** - -;;;### (autoloads nil "vt201" "term/vt201.el" (12677 32628)) -;;; Generated autoloads from term/vt201.el - -;;;*** - -;;;### (autoloads nil "vt220" "term/vt220.el" (12677 32629)) -;;; Generated autoloads from term/vt220.el - -;;;*** - -;;;### (autoloads nil "vt240" "term/vt240.el" (12677 32629)) -;;; Generated autoloads from term/vt240.el - -;;;*** - -;;;### (autoloads nil "vt300" "term/vt300.el" (12677 32628)) -;;; Generated autoloads from term/vt300.el - -;;;*** - -;;;### (autoloads nil "vt320" "term/vt320.el" (12677 32630)) -;;; Generated autoloads from term/vt320.el - -;;;*** - -;;;### (autoloads nil "vt400" "term/vt400.el" (12677 32629)) -;;; Generated autoloads from term/vt400.el - -;;;*** - -;;;### (autoloads nil "vt420" "term/vt420.el" (12677 32630)) -;;; Generated autoloads from term/vt420.el - -;;;*** - -;;;### (autoloads nil "win32-win" "term/win32-win.el" (12677 32630)) -;;; Generated autoloads from term/win32-win.el - -;;;*** - -;;;### (autoloads nil "wyse50" "term/wyse50.el" (12677 32630)) -;;; Generated autoloads from term/wyse50.el - -;;;*** - -;;;### (autoloads nil "xterm" "term/xterm.el" (12677 32630)) -;;; Generated autoloads from term/xterm.el - -;;;### (autoloads nil "tooltalk-init" "tooltalk/tooltalk-init.el" (12713 64143)) -;;; Generated autoloads from tooltalk/tooltalk-init.el - -;;;*** - -;;;### (autoloads nil "tooltalk-load" "tooltalk/tooltalk-load.el" (12677 32712)) -;;; Generated autoloads from tooltalk/tooltalk-load.el - -;;;*** - -;;;### (autoloads nil "tooltalk-macros" "tooltalk/tooltalk-macros.el" (12677 32712)) -;;; Generated autoloads from tooltalk/tooltalk-macros.el - -;;;*** - -;;;### (autoloads nil "tooltalk-util" "tooltalk/tooltalk-util.el" (12677 32711)) -;;; Generated autoloads from tooltalk/tooltalk-util.el - -;;;*** - -;;;### (autoloads nil "base64" "url/base64.el" (12677 33090)) -;;; Generated autoloads from url/base64.el - -;;;*** - -;;;### (autoloads nil "md5" "url/md5.el" (12748 62894)) -;;; Generated autoloads from url/md5.el - -;;;*** - -;;;### (autoloads nil "mm" "url/mm.el" (12718 1361)) -;;; Generated autoloads from url/mm.el - -;;;*** - -;;;### (autoloads nil "ssl" "url/ssl.el" (12718 1318)) -;;; Generated autoloads from url/ssl.el - -;;;*** - -;;;### (autoloads nil "url-cookie" "url/url-cookie.el" (12731 38041)) -;;; Generated autoloads from url/url-cookie.el - -;;;*** - -;;;### (autoloads nil "url-file" "url/url-file.el" (12748 62901)) -;;; Generated autoloads from url/url-file.el - -;;;*** - -;;;### (autoloads nil "url-gopher" "url/url-gopher.el" (12677 33103)) -;;; Generated autoloads from url/url-gopher.el - -;;;*** - -;;;### (autoloads nil "url-hash" "url/url-hash.el" (12677 33104)) -;;; Generated autoloads from url/url-hash.el - -;;;*** - -;;;### (autoloads nil "url-http" "url/url-http.el" (12748 62901)) -;;; Generated autoloads from url/url-http.el - -;;;*** - -;;;### (autoloads nil "url-irc" "url/url-irc.el" (12748 62975)) -;;; Generated autoloads from url/url-irc.el - -;;;*** - -;;;### (autoloads nil "url-mail" "url/url-mail.el" (12731 38036)) -;;; Generated autoloads from url/url-mail.el - -;;;*** - -;;;### (autoloads nil "url-misc" "url/url-misc.el" (12748 62902)) -;;; Generated autoloads from url/url-misc.el - -;;;*** - -;;;### (autoloads nil "url-news" "url/url-news.el" (12721 20345)) -;;; Generated autoloads from url/url-news.el - -;;;*** - -;;;### (autoloads nil "url-nfs" "url/url-nfs.el" (12748 62975)) -;;; Generated autoloads from url/url-nfs.el - -;;;*** - -;;;### (autoloads nil "url-parse" "url/url-parse.el" (12677 33107)) -;;; Generated autoloads from url/url-parse.el - -;;;*** - -;;;### (autoloads nil "url-pgp" "url/url-pgp.el" (12718 1367)) -;;; Generated autoloads from url/url-pgp.el - -;;;*** - -;;;### (autoloads nil "url-sysdp" "url/url-sysdp.el" (12731 38039)) -;;; Generated autoloads from url/url-sysdp.el - -;;;*** - -;;;### (autoloads nil "url-vars" "url/url-vars.el" (12807 57573)) -;;; Generated autoloads from url/url-vars.el - -;;;*** - -;;;### (autoloads nil "url-wais" "url/url-wais.el" (12718 1375)) -;;; Generated autoloads from url/url-wais.el - -;;;### (autoloads (url-retrieve url-cache-expired url-popup-info url-get-url-at-point url-buffer-visiting url-normalize-url url-file-attributes) "url" "url/url.el" (12748 62898)) -;;; Generated autoloads from url/url.el - -(autoload 'url-file-attributes "url" "\ -Return a list of attributes of URL. -Value is nil if specified file cannot be opened. -Otherwise, list elements are: - 0. t for directory, string (name linked to) for symbolic link, or nil. - 1. Number of links to file. - 2. File uid. - 3. File gid. - 4. Last access time, as a list of two integers. - First integer has high-order 16 bits of time, second has low 16 bits. - 5. Last modification time, likewise. - 6. Last status change time, likewise. - 7. Size in bytes. (-1, if number is out of range). - 8. File modes, as a string of ten letters or dashes as in ls -l. - If URL is on an http server, this will return the content-type if possible. - 9. t iff file's gid would change if file were deleted and recreated. -10. inode number. -11. Device number. - -If file does not exist, returns nil." nil nil) - -(autoload 'url-normalize-url "url" "\ -Return a 'normalized' version of URL. This strips out default port -numbers, etc." nil nil) - -(autoload 'url-buffer-visiting "url" "\ -Return the name of a buffer (if any) that is visiting URL." nil nil) - -(autoload 'url-get-url-at-point "url" "\ -Get the URL closest to point, but don't change your -position. Has a preference for looking backward when not -directly on a symbol." nil nil) - -(autoload 'url-popup-info "url" "\ -Retrieve the HTTP/1.0 headers and display them in a temp buffer." nil nil) - -(autoload 'url-cache-expired "url" "\ -Return t iff a cached file has expired." nil nil) - -(autoload 'url-retrieve "url" "\ -Retrieve a document over the World Wide Web. -The document should be specified by its fully specified -Uniform Resource Locator. No parsing is done, just return the -document as the server sent it. The document is left in the -buffer specified by url-working-buffer. url-working-buffer is killed -immediately before starting the transfer, so that no buffer-local -variables interfere with the retrieval. HTTP/1.0 redirection will -be honored before this function exits." nil nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "urlauth" "url/urlauth.el" (12677 33101)) -;;; Generated autoloads from url/urlauth.el - -;;;### (autoloads nil "abbrevlist" "utils/abbrevlist.el" (12677 32631)) -;;; Generated autoloads from utils/abbrevlist.el - -;;;### (autoloads (defadvice ad-add-advice) "advice" "utils/advice.el" (12677 32646)) -;;; Generated autoloads from utils/advice.el - -(defvar ad-redefinition-action 'warn "\ -*Defines what to do with redefinitions during Advice de/activation. -Redefinition occurs if a previously activated function that already has an -original definition associated with it gets redefined and then de/activated. -In such a case we can either accept the current definition as the new -original definition, discard the current definition and replace it with the -old original, or keep it and raise an error. The values `accept', `discard', -`error' or `warn' govern what will be done. `warn' is just like `accept' but -it additionally prints a warning message. All other values will be -interpreted as `error'.") - -(defvar ad-default-compilation-action 'maybe "\ -*Defines whether to compile advised definitions during activation. -A value of `always' will result in unconditional compilation, `never' will -always avoid compilation, `maybe' will compile if the byte-compiler is already -loaded, and `like-original' will compile if the original definition of the -advised function is compiled or a built-in function. Every other value will -be interpreted as `maybe'. This variable will only be considered if the -COMPILE argument of `ad-activate' was supplied as nil.") - -(autoload 'ad-add-advice "advice" "\ -Adds a piece of ADVICE to FUNCTION's list of advices in CLASS. -If FUNCTION already has one or more pieces of advice of the specified -CLASS then POSITION determines where the new piece will go. The value -of POSITION can either be `first', `last' or a number where 0 corresponds -to `first'. Numbers outside the range will be mapped to the closest -extreme position. If there was already a piece of ADVICE with the same -name, then the position argument will be ignored and the old advice -will be overwritten with the new one. - If the FUNCTION was not advised already, then its advice info will be -initialized. Redefining a piece of advice whose name is part of the cache-id -will clear the cache." nil nil) - -(autoload 'defadvice "advice" "\ -Defines a piece of advice for FUNCTION (a symbol). -The syntax of `defadvice' is as follows: - - (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...) - [DOCSTRING] [INTERACTIVE-FORM] - BODY... ) - -FUNCTION ::= Name of the function to be advised. -CLASS ::= `before' | `around' | `after' | `activation' | `deactivation'. -NAME ::= Non-nil symbol that names this piece of advice. -POSITION ::= `first' | `last' | NUMBER. Optional, defaults to `first', - see also `ad-add-advice'. -ARGLIST ::= An optional argument list to be used for the advised function - instead of the argument list of the original. The first one found in - before/around/after-advices will be used. -FLAG ::= `protect'|`disable'|`activate'|`compile'|`preactivate'|`freeze'. - All flags can be specified with unambiguous initial substrings. -DOCSTRING ::= Optional documentation for this piece of advice. -INTERACTIVE-FORM ::= Optional interactive form to be used for the advised - function. The first one found in before/around/after-advices will be used. -BODY ::= Any s-expression. - -Semantics of the various flags: -`protect': The piece of advice will be protected against non-local exits in -any code that precedes it. If any around-advice of a function is protected -then automatically all around-advices will be protected (the complete onion). - -`activate': All advice of FUNCTION will be activated immediately if -FUNCTION has been properly defined prior to this application of `defadvice'. - -`compile': In conjunction with `activate' specifies that the resulting -advised function should be compiled. - -`disable': The defined advice will be disabled, hence, it will not be used -during activation until somebody enables it. - -`preactivate': Preactivates the advised FUNCTION at macro-expansion/compile -time. This generates a compiled advised definition according to the current -advice state that will be used during activation if appropriate. Only use -this if the `defadvice' gets actually compiled. - -`freeze': Expands the `defadvice' into a redefining `defun/defmacro' according -to this particular single advice. No other advice information will be saved. -Frozen advices cannot be undone, they behave like a hard redefinition of -the advised function. `freeze' implies `activate' and `preactivate'. The -documentation of the advised function can be dumped onto the `DOC' file -during preloading. - -Look at the file `advice.el' for comprehensive documentation." nil 'macro) - -;;;*** - -;;;### (autoloads nil "assoc" "utils/assoc.el" (12677 32657)) -;;; Generated autoloads from utils/assoc.el - -;;;*** - -;;;### (autoloads nil "atomic-extents" "utils/atomic-extents.el" (12677 32653)) -;;; Generated autoloads from utils/atomic-extents.el - -;;;*** - -;;;### (autoloads (batch-update-autoloads update-directory-autoloads update-autoloads-here update-file-autoloads generate-file-autoloads) "autoload" "utils/autoload.el" (12677 32640)) -;;; Generated autoloads from utils/autoload.el - -(autoload 'generate-file-autoloads "autoload" "\ -Insert at point a loaddefs autoload section for FILE. -autoloads are generated for defuns and defmacros in FILE -marked by `generate-autoload-cookie' (which see). -If FILE is being visited in a buffer, the contents of the buffer -are used." t nil) - -(autoload 'update-file-autoloads "autoload" "\ -Update the autoloads for FILE in `generated-autoload-file' -\(which FILE might bind in its local variables)." t nil) - -(autoload 'update-autoloads-here "autoload" "\ -Update sections of the current buffer generated by \\[update-file-autoloads]." t nil) - -(autoload 'update-directory-autoloads "autoload" "\ -Run \\[update-file-autoloads] on each .el file in DIR." t nil) - -(autoload 'batch-update-autoloads "autoload" "\ -Update the autoloads for the files or directories on the command line. -Runs \\[update-file-autoloads] on files and \\[update-directory-autoloads] -on directories. Must be used only with -batch, and kills Emacs on completion. -Each file will be processed even if an error occurred previously. -For example, invoke `emacs -batch -f batch-update-autoloads *.el'." nil nil) - -;;;*** - -;;;### (autoloads nil "blessmail" "utils/blessmail.el" (12677 32660)) -;;; Generated autoloads from utils/blessmail.el - -;;;### (autoloads (browse-url-lynx-emacs browse-url-lynx-xterm browse-url-w3 browse-url-iximosaic browse-url-grail browse-url-mosaic browse-url-netscape) "browse-url" "utils/browse-url.el" (12748 62832)) -;;; Generated autoloads from utils/browse-url.el - -(defvar browse-url-browser-function 'browse-url-w3 "\ -*Function to display the current buffer in a WWW browser. -Used by the `browse-url-at-point', `browse-url-at-mouse', and -`browse-url-of-file' commands.") - -(autoload 'browse-url-netscape "browse-url" "\ -Ask the Netscape WWW browser to load URL. - -Default to the URL around or before point. The strings in variable -`browse-url-netscape-arguments' are also passed to Netscape. - -When called interactively, if variable `browse-url-new-window-p' is -non-nil, load the document in a new Netscape window, otherwise use a -random existing one. A non-nil interactive prefix argument reverses -the effect of browse-url-new-window-p. - -When called non-interactively, optional second argument NEW-WINDOW is -used instead of browse-url-new-window-p." t nil) - -(autoload 'browse-url-mosaic "browse-url" "\ -Ask the XMosaic WWW browser to load URL. -Default to the URL around or before point." t nil) - -(autoload 'browse-url-grail "browse-url" "\ -Ask the Grail WWW browser to load URL. -Default to the URL around or before point. Runs the program in the -variable `browse-url-grail'." t nil) - -(autoload 'browse-url-iximosaic "browse-url" "\ -Ask the IXIMosaic WWW browser to load URL. -Default to the URL around or before point." t nil) - -(autoload 'browse-url-w3 "browse-url" "\ -Ask the w3 WWW browser to load URL. -Default to the URL around or before point." t nil) - -(autoload 'browse-url-lynx-xterm "browse-url" "\ -Ask the Lynx WWW browser to load URL. -Default to the URL around or before point. A new Lynx process is run -in an Xterm window." t nil) - -(autoload 'browse-url-lynx-emacs "browse-url" "\ -Ask the Lynx WWW browser to load URL. -Default to the URL around or before point. Run a new Lynx process in -an Emacs buffer." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "crontab" "utils/crontab.el" (12677 32660)) -;;; Generated autoloads from utils/crontab.el - -;;;*** - -;;;### (autoloads nil "delbackspace" "utils/delbackspace.el" (12748 62831)) -;;; Generated autoloads from utils/delbackspace.el - -;;;*** - -;;;### (autoloads nil "derived" "utils/derived.el" (12677 32633)) -;;; Generated autoloads from utils/derived.el - -;;;### (autoloads (docref-setup) "docref" "utils/docref.el" (12677 32661)) -;;; Generated autoloads from utils/docref.el - -(autoload 'docref-setup "docref" "\ -Process docref cross-references in the current buffer. -See also \\(f@docref-subst)." t nil) - -;;;*** - -;;;### (autoloads (easy-menu-define) "easymenu" "utils/easymenu.el" (12692 3843)) -;;; Generated autoloads from utils/easymenu.el - -(autoload 'easy-menu-define "easymenu" "\ -Define a menu bar submenu in maps MAPS, according to MENU. -The arguments SYMBOL and DOC are ignored; they are present for -compatibility only. SYMBOL is not evaluated. In other Emacs versions -these arguments may be used as a variable to hold the menu data, and a -doc string for that variable. - -The first element of MENU must be a string. It is the menu bar item name. -The rest of the elements are menu items. - -A menu item is usually a vector of three elements: [NAME CALLBACK ENABLE] - -NAME is a string--the menu item name. - -CALLBACK is a command to run when the item is chosen, -or a list to evaluate when the item is chosen. - -ENABLE is an expression; the item is enabled for selection -whenever this expression's value is non-nil. - -Alternatively, a menu item may have the form: - - [ NAME CALLBACK [ KEYWORD ARG ] ... ] - -Where KEYWORD is one of the symbol defined below. - - :keys KEYS - -KEYS is a string; a complex keyboard equivalent to this menu item. - - :active ENABLE - -ENABLE is an expression; the item is enabled for selection -whenever this expression's value is non-nil. - - :suffix NAME - -NAME is a string; the name of an argument to CALLBACK. - - :style STYLE - -STYLE is a symbol describing the type of menu item. The following are -defined: - -toggle: A checkbox. - Currently just prepend the name with the string \"Toggle \". -radio: A radio button. -nil: An ordinary menu item. - - :selected SELECTED - -SELECTED is an expression; the checkbox or radio button is selected -whenever this expression's value is non-nil. -Currently just disable radio buttons, no effect on checkboxes. - -A menu item can be a string. Then that string appears in the menu as -unselectable text. A string consisting solely of hyphens is displayed -as a solid horizontal line. - -A menu item can be a list. It is treated as a submenu. -The first element should be the submenu name. That's used as the -menu item in the top-level menu. The cdr of the submenu list -is a list of menu items, as above." nil 'macro) - -;;;*** - -;;;### (autoloads (elp-submit-bug-report elp-results elp-instrument-package elp-instrument-list elp-restore-function elp-instrument-function) "elp" "utils/elp.el" (12677 32656)) -;;; Generated autoloads from utils/elp.el - -(autoload 'elp-instrument-function "elp" "\ -Instrument FUNSYM for profiling. -FUNSYM must be a symbol of a defined function." t nil) - -(autoload 'elp-restore-function "elp" "\ -Restore an instrumented function to its original definition. -toggle: A checkbox. - -(autoload 'elp-instrument-list "elp" "\ -Instrument for profiling, all functions in `elp-function-list'. -Use optional LIST if provided instead." t nil) - -(autoload 'elp-instrument-package "elp" "\ -Instrument for profiling, all functions which start with PREFIX. -For example, to instrument all ELP functions, do the following: - - \\[elp-instrument-package] RET elp- RET" t nil) - -(autoload 'elp-results "elp" "\ -Display current profiling results. -If `elp-reset-after-results' is non-nil, then current profiling -information for all instrumented functions are reset after results are -displayed." t nil) - -(autoload 'elp-submit-bug-report "elp" "\ -Submit via mail, a bug report on elp." t nil) - -;;;*** - -;;;### (autoloads (list-colors-display facemenu-read-color list-text-properties-at facemenu-remove-special facemenu-remove-props facemenu-set-read-only facemenu-set-intangible facemenu-set-invisible facemenu-make-much-smaller facemenu-make-much-larger facemenu-make-smaller facemenu-make-larger facemenu-set-size-default facemenu-set-face-from-menu facemenu-set-background facemenu-set-foreground facemenu-set-face) "facemenu" "utils/facemenu.el" (12677 32647)) -;;; Generated autoloads from utils/facemenu.el - -(defvar facemenu-menu nil "\ -Facemenu top-level menu keymap.") - -(defvar facemenu-keymap (let ((map (make-sparse-keymap "Set face"))) (define-key map ?o 'facemenu-set-face) map) "\ -Keymap for face-changing commands. -`Facemenu-update' fills in the keymap according to the bindings -requested in `facemenu-keybindings'.") - -(autoload 'facemenu-set-face "facemenu" "\ -Add FACE to the region or next character typed. -It will be added to the top of the face list; any faces lower on the list that -will not show through at all will be removed. - -Interactively, the face to be used is read with the minibuffer. - -If the region is active and there is no prefix argument, -this command sets the region to the requested face. - -Otherwise, this command specifies the face for the next character -inserted. Moving point or switching buffers before -typing a character to insert cancels the specification." t nil) - -(autoload 'facemenu-set-foreground "facemenu" "\ -Set the foreground color of the region or next character typed. -The color is prompted for. A face named `fg:color' is used (or created). -If the region is active, it will be set to the requested face. If -it is inactive (even if mark-even-if-inactive is set) the next -character that is typed (via `self-insert-command') will be set to -the selected face. Moving point or switching buffers before -typing a character cancels the request." t nil) - -(autoload 'facemenu-set-background "facemenu" "\ -Set the background color of the region or next character typed. -The color is prompted for. A face named `bg:color' is used (or created). -If the region is active, it will be set to the requested face. If -it is inactive (even if mark-even-if-inactive is set) the next -character that is typed (via `self-insert-command') will be set to -the selected face. Moving point or switching buffers before -typing a character cancels the request." t nil) - -(autoload 'facemenu-set-face-from-menu "facemenu" "\ -Set the face of the region or next character typed. -This function is designed to be called from a menu; the face to use -is the menu item's name. - -If the region is active and there is no prefix argument, -this command sets the region to the requested face. - -Otherwise, this command specifies the face for the next character -inserted. Moving point or switching buffers before -typing a character to insert cancels the specification." nil nil) - -(autoload 'facemenu-set-size-default "facemenu" nil t nil) - -(autoload 'facemenu-make-larger "facemenu" nil t nil) - -(autoload 'facemenu-make-smaller "facemenu" nil t nil) - -(autoload 'facemenu-make-much-larger "facemenu" nil t nil) - -(autoload 'facemenu-make-much-smaller "facemenu" nil t nil) - -(autoload 'facemenu-set-invisible "facemenu" "\ -Make the region invisible. -This sets the `invisible' text property; it can be undone with -`facemenu-remove-special'." t nil) - -(autoload 'facemenu-set-intangible "facemenu" "\ -Make the region intangible: disallow moving into it. -This sets the `intangible' text property; it can be undone with -`facemenu-remove-special'." t nil) - -(autoload 'facemenu-set-read-only "facemenu" "\ -Make the region unmodifiable. -This sets the `read-only' text property; it can be undone with -`facemenu-remove-special'." t nil) - -(autoload 'facemenu-remove-props "facemenu" "\ -Remove all text properties that facemenu added to region." t nil) - -(autoload 'facemenu-remove-special "facemenu" "\ -Remove all the \"special\" text properties from the region. -These special properties include `invisible', `intangible' and `read-only'." t nil) - -(autoload 'list-text-properties-at "facemenu" "\ -Pop up a buffer listing text-properties at LOCATION." t nil) - -(autoload 'facemenu-read-color "facemenu" "\ -Read a color using the minibuffer." nil nil) - -(autoload 'list-colors-display "facemenu" "\ -Display names of defined colors, and show what they look like. -If the optional argument LIST is non-nil, it should be a list of -colors to display. Otherwise, this command computes a list -of colors that the current display can handle." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "find-gc" "utils/find-gc.el" (12677 32658)) -;;; Generated autoloads from utils/find-gc.el - -;;;*** - -;;;### (autoloads nil "finder-inf" "utils/finder-inf.el" (12677 32657)) -;;; Generated autoloads from utils/finder-inf.el - -;;;*** - -;;;### (autoloads nil "finder" "utils/finder.el" (12677 32658)) -;;; Generated autoloads from utils/finder.el - -;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl" "utils/flow-ctrl.el" (12807 56744)) -;;; Generated autoloads from utils/flow-ctrl.el - -(autoload 'enable-flow-control "flow-ctrl" "\ -Toggle flow control handling. -When handling is enabled, user can type C-s as C-\\, and C-q as C-^. -With arg, enable flow control mode if arg is positive, otherwise disable." t nil) - -(autoload 'enable-flow-control-on "flow-ctrl" "\ -Enable flow control if using one of a specified set of terminal types. -Use `(enable-flow-control-on \"vt100\" \"h19\")' to enable flow control -on VT-100 and H19 terminals. When flow control is enabled, -you must type C-\\ to get the effect of a C-s, and type C-^ -to get the effect of a C-q. - -This function has no effect unless the current device is a tty. - -The tty terminal type is determined from the TERM environment variable. -Trailing hyphens and everything following is stripped, so a TERM -value of \"vt100-nam\" is treated the same as \"vt100\"." nil nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "foldout" "utils/foldout.el" (12677 32660)) -;;; Generated autoloads from utils/foldout.el - -;;;*** - -;;;### (autoloads nil "forms-d2" "utils/forms-d2.el" (12677 32653)) -;;; Generated autoloads from utils/forms-d2.el - -;;;*** - -;;;### (autoloads nil "forms-pass" "utils/forms-pass.el" (12677 32653)) -;;; Generated autoloads from utils/forms-pass.el - -;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode) "forms" "utils/forms.el" (12677 32652)) -;;; Generated autoloads from utils/forms.el - -(autoload 'forms-mode "forms" "\ -Major mode to visit files in a field-structured manner using a form. - -Commands: Equivalent keys in read-only mode: - - TAB forms-next-field TAB - C-c TAB forms-next-field - C-c < forms-first-record < - C-c > forms-last-record > - C-c ? describe-mode ? - C-c C-k forms-delete-record - C-c C-q forms-toggle-read-only q - C-c C-o forms-insert-record - C-c C-l forms-jump-record l - C-c C-n forms-next-record n - C-c C-p forms-prev-record p - C-c C-s forms-search s - C-c C-x forms-exit x" t nil) - -(autoload 'forms-find-file "forms" "\ -Visit a file in Forms mode." t nil) - -(autoload 'forms-find-file-other-window "forms" "\ -Visit a file in Forms mode in other window." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "hide-copyleft" "utils/hide-copyleft.el" (12748 62974)) -;;; Generated autoloads from utils/hide-copyleft.el - -;;;### (autoloads (highlight-headers-follow-url highlight-headers-follow-url-mosaic highlight-headers-follow-url-netscape highlight-headers) "highlight-headers" "utils/highlight-headers.el" (12807 56606)) -;;; Generated autoloads from utils/highlight-headers.el - -(autoload 'highlight-headers "highlight-headers" "\ -Highlight message headers between start and end. -Faces used: - message-headers the part before the colon - message-header-contents the part after the colon - message-highlighted-header-contents contents of \"special\" headers - message-cited-text quoted text from other messages - -Variables used: - - highlight-headers-regexp what makes a \"special\" header - highlight-headers-citation-regexp matches lines of quoted text - highlight-headers-citation-header-regexp matches headers for quoted text - -If HACK-SIG is true,then we search backward from END for something that -looks like the beginning of a signature block, and don't consider that a -part of the message (this is because signatures are often incorrectly -interpreted as cited text.)" nil nil) - -(autoload 'highlight-headers-follow-url-netscape "highlight-headers" nil nil nil) - -(autoload 'highlight-headers-follow-url-mosaic "highlight-headers" nil nil nil) - -(autoload 'highlight-headers-follow-url "highlight-headers" nil t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "lib-complete" "utils/lib-complete.el" (12677 32661)) -;;; Generated autoloads from utils/lib-complete.el - -;;;*** - -;;;### (autoloads nil "live-icon" "utils/live-icon.el" (12677 32663)) -;;; Generated autoloads from utils/live-icon.el - -;;;### (autoloads (unload-feature) "loadhist" "utils/loadhist.el" (12677 32660)) -;;; Generated autoloads from utils/loadhist.el - -(autoload 'unload-feature "loadhist" "\ -Unload the library that provided FEATURE, restoring all its autoloads. -If the feature is required by any other loaded code, and optional FORCE -is nil, raise an error." t nil) - -;;;*** - -;;;### (autoloads (what-domain mail-extract-address-components) "mail-extr" "utils/mail-extr.el" (12807 61946)) -;;; Generated autoloads from utils/mail-extr.el - -(autoload 'mail-extract-address-components "mail-extr" "\ -Given an RFC-822 ADDRESS, extract full name and canonical address. -Returns a list of the form (FULL-NAME CANONICAL-ADDRESS). -If no name can be extracted, FULL-NAME will be nil. -ADDRESS may be a string or a buffer. If it is a buffer, the visible - (narrowed) portion of the buffer will be interpreted as the address. - (This feature exists so that the clever caller might be able to avoid - consing a string.) -If ADDRESS contains more than one RFC-822 address, only the first is - returned. Some day this function may be extended to extract multiple - addresses, or perhaps return the position at which parsing stopped." nil nil) - -(autoload 'what-domain "mail-extr" "\ -Prompts for a mail domain, and prints the country it corresponds to -in the minibuffer." t nil) - -;;;*** - -;;;### (autoloads (mail-fetch-field mail-file-babyl-p) "mail-utils" "utils/mail-utils.el" (12748 62828)) -;;; Generated autoloads from utils/mail-utils.el - -(defvar mail-use-rfc822 nil "\ -*If non-nil, use a full, hairy RFC822 parser on mail addresses. -Otherwise, (the default) use a smaller, somewhat faster, and -often correct parser.") - -(autoload 'mail-file-babyl-p "mail-utils" nil nil nil) - -(autoload 'mail-fetch-field "mail-utils" "\ -Return the value of the header field FIELD-NAME. -The buffer is expected to be narrowed to just the headers of the message. -If second arg LAST is non-nil, use the last such field if there are several. -If third arg ALL is non-nil, concatenate all such fields with commas between." nil nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "mailpost" "utils/mailpost.el" (12677 32633)) -;;; Generated autoloads from utils/mailpost.el - -;;;*** - -;;;### (autoloads nil "map-ynp" "utils/map-ynp.el" (12748 62829)) -;;; Generated autoloads from utils/map-ynp.el - -;;;*** - -;;;### (autoloads nil "meese" "utils/meese.el" (12677 32633)) -;;; Generated autoloads from utils/meese.el - -;;;### (autoloads (read-passwd) "passwd" "utils/passwd.el" (12677 32650)) -;;; Generated autoloads from utils/passwd.el - -(autoload 'read-passwd "passwd" "\ -Prompts for a password in the minibuffer, and returns it as a string. -If PROMPT may be a prompt string or an alist of elements -'(prompt . default). -If optional arg CONFIRM is true, then ask the user to type the password -again to confirm that they typed it correctly. -If optional arg DEFAULT is provided, then it is a string to insert as -the default choice (it is not, of course, displayed.) - -If running under X, the keyboard will be grabbed (with XGrabKeyboard()) -to reduce the possibility that evesdropping is occuring. - -When reading a password, all keys self-insert, except for: -\\<read-passwd-map> - \\[read-passwd-erase-line] Erase the entire line. - \\[quoted-insert] Insert the next character literally. - \\[delete-backward-char] Delete the previous character. - \\[exit-minibuffer] Accept what you have typed. - \\[keyboard-quit] Abort the command. - -The returned value is always a newly-created string. No additional copies -of the password remain after this function has returned. - -NOTE: unless great care is taken, the typed password will exist in plaintext -form in the running image for an arbitrarily long time. Priveleged users may -be able to extract it from memory. If emacs crashes, it may appear in the -resultant core file. - -Some steps you can take to prevent the password from being copied around: - - - as soon as you are done with the returned string, destroy it with - (fillarray string 0). The same goes for any default passwords - or password histories. - - - do not copy the string, as with concat or substring - if you do, be - sure to keep track of and destroy all copies. - - - do not insert the password into a buffer - if you do, be sure to - overwrite the buffer text before killing it, as with the functions - `passwd-erase-buffer' or `passwd-kill-buffer'. Note that deleting - the text from the buffer does NOT necessarily remove the text from - memory. - - - be careful of the undo history - if you insert the password into a - buffer which has undo recording turned on, the password will be - copied onto the undo list, and thus recoverable. - - - do not pass it as an argument to a shell command - anyone will be - able to see it if they run `ps' at the right time. - -Note that the password will be temporarily recoverable with the `view-lossage' -command. This data will not be overwritten until another hundred or so -characters are typed. There's not currently a way around this." nil nil) - -;;;*** - -;;;### (autoloads (pp) "pp" "utils/pp.el" (12677 32653)) -;;; Generated autoloads from utils/pp.el - -(autoload 'pp "pp" "\ -Output the pretty-printed representation of OBJECT, any Lisp object. -Quoting characters are printed when needed to make output that `read' -can handle, whenever this is possible. -Output stream is STREAM, or value of `standard-output' (which see)." nil nil) - -(defalias 'pprint 'pp) - -;;;*** - -;;;*** - -;;;### (autoloads nil "regi" "utils/regi.el" (12677 32653)) -;;; Generated autoloads from utils/regi.el - -;;;### (autoloads (reporter-submit-bug-report) "reporter" "utils/reporter.el" (12677 32651)) -;;; Generated autoloads from utils/reporter.el - -(autoload 'reporter-submit-bug-report "reporter" nil nil nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "rfc822" "utils/rfc822.el" (12677 32635)) -;;; Generated autoloads from utils/rfc822.el - -;;;*** - -;;;### (autoloads nil "shadowfile" "utils/shadowfile.el" (12677 32661)) -;;; Generated autoloads from utils/shadowfile.el - -;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy define-skeleton) "skeleton" "utils/skeleton.el" (12677 32659)) -;;; Generated autoloads from utils/skeleton.el - -(defvar skeleton-filter 'identity "\ -Function for transforming a skeleton-proxy's aliases' variable value.") - -(autoload 'define-skeleton "skeleton" "\ -Define a user-configurable COMMAND that enters a statement skeleton. -DOCUMENTATION is that of the command, while the variable of the same name, -which contains the skeleton, has a documentation to that effect. -INTERACTOR and ELEMENT ... are as defined under `skeleton-insert'." nil 'macro) - -(autoload 'skeleton-proxy "skeleton" "\ -Insert skeleton defined by variable of same name (see `skeleton-insert'). -Prefix ARG allows wrapping around words or regions (see `skeleton-insert'). -This command can also be an abbrev expansion (3rd and 4th columns in -\\[edit-abbrevs] buffer: \"\" command-name). - -When called as a function, optional first argument STR may also be a string -which will be the value of `str' whereas the skeleton's interactor is then -ignored." t nil) - -(autoload 'skeleton-insert "skeleton" "\ -Insert the complex statement skeleton SKELETON describes very concisely. - -With optional third REGIONS wrap first interesting point (`_') in skeleton -around next REGIONS words, if REGIONS is positive. If REGIONS is negative, -wrap REGIONS preceding interregions into first REGIONS interesting positions -\(successive `_'s) in skeleton. An interregion is the stretch of text between -two contiguous marked points. If you marked A B C [] (where [] is the cursor) -in alphabetical order, the 3 interregions are simply the last 3 regions. But -if you marked B A [] C, the interregions are B-A, A-[], []-C. - -Optional fourth STR is the value for the variable `str' within the skeleton. -When this is non-`nil' the interactor gets ignored, and this should be a valid -skeleton element. - -SKELETON is made up as (INTERACTOR ELEMENT ...). INTERACTOR may be nil if -not needed, a prompt-string or an expression for complex read functions. - -If ELEMENT is a string or a character it gets inserted (see also -`skeleton-transformation'). Other possibilities are: - - \\n go to next line and indent according to mode - _ interesting point, interregion here, point after termination - > indent line (or interregion if > _) according to major mode - & do next ELEMENT if previous moved point - | do next ELEMENT if previous didn't move point - -num delete num preceding characters (see `skeleton-untabify') - resume: skipped, continue here if quit is signaled - nil skipped - -Further elements can be defined via `skeleton-further-elements'. ELEMENT may -itself be a SKELETON with an INTERACTOR. The user is prompted repeatedly for -different inputs. The SKELETON is processed as often as the user enters a -non-empty string. \\[keyboard-quit] terminates skeleton insertion, but -continues after `resume:' and positions at `_' if any. If INTERACTOR in such -a subskeleton is a prompt-string which contains a \".. %s ..\" it is -formatted with `skeleton-subprompt'. Such an INTERACTOR may also a list of -strings with the subskeleton being repeated once for each string. - -Quoted lisp-expressions are evaluated evaluated for their side-effect. -Other lisp-expressions are evaluated and the value treated as above. -Note that expressions may not return `t' since this impplies an -endless loop. Modes can define other symbols by locally setting them -to any valid skeleton element. The following local variables are -available: - - str first time: read a string according to INTERACTOR - then: insert previously read string once more - help help-form during interaction with the user or `nil' - input initial input (string or cons with index) while reading str - v1, v2 local variables for memorising anything you want - -When done with skeleton, but before going back to `_'-point call -`skeleton-end-hook' if that is non-`nil'." nil nil) - -(autoload 'skeleton-pair-insert-maybe "skeleton" "\ -Insert the character you type ARG times. - -With no ARG, if `skeleton-pair' is non-nil, and if -`skeleton-pair-on-word' is non-nil or we are not before or inside a -word, and if `skeleton-pair-filter' returns nil, pairing is performed. - -If a match is found in `skeleton-pair-alist', that is inserted, else -the defaults are used. These are (), [], {}, <> and `' for the -symmetrical ones, and the same character twice for the others." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "soundex" "utils/soundex.el" (12677 32663)) -;;; Generated autoloads from utils/soundex.el - -;;;*** - -;;;### (autoloads nil "symbol-syntax" "utils/symbol-syntax.el" (12677 32631)) -;;; Generated autoloads from utils/symbol-syntax.el - -;;;*** - -;;;### (autoloads nil "sysdep" "utils/sysdep.el" (12718 987)) -;;; Generated autoloads from utils/sysdep.el - -;;;*** - -;;;### (autoloads nil "text-props" "utils/text-props.el" (12807 56562)) -;;; Generated autoloads from utils/text-props.el - -;;;*** - -;;;### (autoloads nil "thing" "utils/thing.el" (12677 32660)) -;;; Generated autoloads from utils/thing.el - -;;;*** - -;;;### (autoloads nil "timezone" "utils/timezone.el" (12677 32663)) -;;; Generated autoloads from utils/timezone.el - -;;;### (autoloads (tq-create) "tq" "utils/tq.el" (12677 32663)) -;;; Generated autoloads from utils/tq.el - -(autoload 'tq-create "tq" "\ -Create and return a transaction queue communicating with PROCESS. -PROCESS should be a subprocess capable of sending and receiving -streams of bytes. It may be a local process, or it may be connected -to a tcp server on another machine." nil nil) - -;;;*** - -;;;### (autoloads (trace-function-background trace-function) "trace" "utils/trace.el" (12677 32651)) -;;; Generated autoloads from utils/trace.el - -(defvar trace-buffer "*trace-output*" "\ -*Trace output will by default go to that buffer.") - -(autoload 'trace-function "trace" "\ -Traces FUNCTION with trace output going to BUFFER. -For every call of FUNCTION Lisp-style trace messages that display argument -and return values will be inserted into BUFFER. This function generates the -trace advice for FUNCTION and activates it together with any other advice -there might be!! The trace BUFFER will popup whenever FUNCTION is called. -Do not use this to trace functions that switch buffers or do any other -display oriented stuff, use `trace-function-background' instead." t nil) - -(autoload 'trace-function-background "trace" "\ -Traces FUNCTION with trace output going quietly to BUFFER. -For every call of FUNCTION Lisp-style trace messages that display argument -and return values will be inserted into BUFFER. This function generates the -trace advice for FUNCTION and activates it together with any other advice -there might be!! Trace output will quietly go to BUFFER without changing -the window or buffer configuration at all." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "tree-menu" "utils/tree-menu.el" (12677 32657)) -;;; Generated autoloads from utils/tree-menu.el - -;;;### (autoloads (y-or-n-p-with-timeout yes-or-no-p-with-timeout with-timeout with-timeout-internal) "with-timeout" "utils/with-timeout.el" (12677 32636)) -;;; Generated autoloads from utils/with-timeout.el - -(autoload 'with-timeout-internal "with-timeout" nil nil nil) - -(autoload 'with-timeout "with-timeout" "\ -Usage: (with-timeout (seconds &rest timeout-forms) &rest body) -This is just like progn, but if the given number of seconds expires before -the body returns, then timeout-forms are evaluated and returned instead. -The body won't be interrupted in the middle of a computation: the check for -the timer expiration only occurs when body does a redisplay, or prompts the -user for input, or calls accept-process-output." nil 'macro) - -(autoload 'yes-or-no-p-with-timeout "with-timeout" "\ -Just like yes-or-no-p, but will time out after TIMEOUT seconds -if the user has not yes answered, returning DEFAULT-VALUE." nil nil) - -(autoload 'y-or-n-p-with-timeout "with-timeout" "\ -Just like y-or-n-p, but will time out after TIMEOUT seconds -if the user has not yes answered, returning DEFAULT-VALUE." nil nil) - -;;;*** - -;;;### (autoloads (xbm-button-create) "xbm-button" "utils/xbm-button.el" (12677 32665)) -;;; Generated autoloads from utils/xbm-button.el - -(autoload 'xbm-button-create "xbm-button" "\ -Returns a list of XBM image instantiators for a button displaying TEXT. -The list is of the form - (UP DOWN DISABLED) -where UP, DOWN, and DISABLED are the up, down and disabled image -instantiators for the button. - -BORDER-THICKNESS specifies how many pixels should be used for the -borders on the edges of the buttons. It should be a positive integer, -or 0 to mean no border." nil nil) - -;;;*** - -;;;### (autoloads (xpm-button-create) "xpm-button" "utils/xpm-button.el" (12677 32648)) -;;; Generated autoloads from utils/xpm-button.el - -(autoload 'xpm-button-create "xpm-button" "\ -Returns a list of XPM image instantiators for a button displaying TEXT. -The list is of the form - (UP DOWN DISABLED) -where UP, DOWN, and DISABLED are the up, down and disabled image -instantiators for the button. - -SHADOW-THICKNESS specifies how many pixels should be used for the -shadows on the edges of the buttons. It should be a positive integer, -or 0 to mean no shadows on the edges. -FG-COLOR is the color used to display the text. It should be a string. -BG-COLOR is the background color the text will be displayed upon. -It should be a string." nil nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "viper-ex" "viper/viper-ex.el" (12808 12348)) -;;; Generated autoloads from viper/viper-ex.el - -;;;*** - -;;;### (autoloads nil "viper-keym" "viper/viper-keym.el" (12677 32983)) -;;; Generated autoloads from viper/viper-keym.el - -;;;*** - -;;;### (autoloads nil "viper-macs" "viper/viper-macs.el" (12716 43963)) -;;; Generated autoloads from viper/viper-macs.el - -;;;### (autoloads nil "viper-mous" "viper/viper-mous.el" (12720 34147)) -;;; Generated autoloads from viper/viper-mous.el - -;;;*** - -;;;*** - -;;;### (autoloads nil "viper-util" "viper/viper-util.el" (12748 62888)) -;;; Generated autoloads from viper/viper-util.el - -;;;### (autoloads (viper-mode) "viper" "viper/viper.el" (12748 62891)) -;;; Generated autoloads from viper/viper.el - -(autoload 'viper-mode "viper" "\ -Turn on Viper emulation of Vi." t nil) - -(defalias 'vip-mode 'viper-mode) - -;;;*** - -;;;*** - -;;;### (autoloads nil "tapestry" "vm/tapestry.el" (12677 32694)) -;;; Generated autoloads from vm/tapestry.el - -;;;*** - -;;;### (autoloads nil "vm-autoload" "vm/vm-autoload.el" (12808 12661)) -;;; Generated autoloads from vm/vm-autoload.el - -;;;*** - -;;;### (autoloads nil "vm-byteopts" "vm/vm-byteopts.el" (12677 32690)) -;;; Generated autoloads from vm/vm-byteopts.el - -;;;*** - -;;;### (autoloads nil "vm-delete" "vm/vm-delete.el" (12807 56781)) -;;; Generated autoloads from vm/vm-delete.el - -;;;*** - -;;;### (autoloads nil "vm-digest" "vm/vm-digest.el" (12677 32666)) -;;; Generated autoloads from vm/vm-digest.el - -;;;### (autoloads (vm-easy-menu-create-keymaps vm-easy-menu-define) "vm-easymenu" "vm/vm-easymenu.el" (12677 32693)) -;;; Generated autoloads from vm/vm-easymenu.el - -(autoload 'vm-easy-menu-define "vm-easymenu" "\ -Define a menu bar submenu in maps MAPS, according to MENU. -The menu keymap is stored in symbol SYMBOL, both as its value -and as its function definition. DOC is used as the doc string for SYMBOL. - -The first element of MENU must be a string. It is the menu bar item name. -The rest of the elements are menu items. - -A menu item is usually a vector of three elements: [NAME CALLBACK ENABLE] - -NAME is a string--the menu item name. - -CALLBACK is a command to run when the item is chosen, -or a list to evaluate when the item is chosen. - -ENABLE is an expression; the item is enabled for selection -whenever this expression's value is non-nil. - -Alternatively, a menu item may have the form: - - [ NAME CALLBACK [ KEYWORD ARG ] ... ] - -Where KEYWORD is one of the symbol defined below. - - :keys KEYS - -KEYS is a string; a complex keyboard equivalent to this menu item. -This is normally not needed because keyboard equivalents are usually -computed automatically. - - :active ENABLE - -ENABLE is an expression; the item is enabled for selection -whenever this expression's value is non-nil. - - :suffix NAME - -NAME is a string; the name of an argument to CALLBACK. - - :style - -STYLE is a symbol describing the type of menu item. The following are -defined: - -toggle: A checkbox. - Currently just prepend the name with the string \"Toggle \". -radio: A radio button. -nil: An ordinary menu item. - - :selected SELECTED - -SELECTED is an expression; the checkbox or radio button is selected -whenever this expression's value is non-nil. -Currently just disable radio buttons, no effect on checkboxes. - -A menu item can be a string. Then that string appears in the menu as -unselectable text. A string consisting solely of hyphens is displayed -as a solid horizontal line. - -A menu item can be a list. It is treated as a submenu. -The first element should be the submenu name. That's used as the -menu item in the top-level menu. The cdr of the submenu list -is a list of menu items, as above." nil 'macro) - -(autoload 'vm-easy-menu-create-keymaps "vm-easymenu" nil nil nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "vm-edit" "vm/vm-edit.el" (12677 32667)) -;;; Generated autoloads from vm/vm-edit.el - -;;;*** - -;;;### (autoloads nil "vm-folder" "vm/vm-folder.el" (12807 56485)) -;;; Generated autoloads from vm/vm-folder.el - -;;;*** - -;;;### (autoloads nil "vm-license" "vm/vm-license.el" (12677 32672)) -;;; Generated autoloads from vm/vm-license.el - -;;;*** - -;;;### (autoloads nil "vm-mark" "vm/vm-mark.el" (12677 32673)) -;;; Generated autoloads from vm/vm-mark.el - -;;;*** - -;;;### (autoloads nil "vm-menu" "vm/vm-menu.el" (12677 32677)) -;;; Generated autoloads from vm/vm-menu.el - -;;;*** - -;;;### (autoloads nil "vm-message" "vm/vm-message.el" (12677 32674)) -;;; Generated autoloads from vm/vm-message.el - -;;;*** - -;;;### (autoloads nil "vm-minibuf" "vm/vm-minibuf.el" (12677 32691)) -;;; Generated autoloads from vm/vm-minibuf.el - -;;;*** - -;;;### (autoloads nil "vm-misc" "vm/vm-misc.el" (12748 62836)) -;;; Generated autoloads from vm/vm-misc.el - -;;;*** - -;;;### (autoloads nil "vm-motion" "vm/vm-motion.el" (12748 62837)) -;;; Generated autoloads from vm/vm-motion.el - -;;;*** - -;;;### (autoloads nil "vm-mouse" "vm/vm-mouse.el" (12677 32692)) -;;; Generated autoloads from vm/vm-mouse.el - -;;;*** - -;;;### (autoloads nil "vm-page" "vm/vm-page.el" (12677 32678)) -;;; Generated autoloads from vm/vm-page.el - -;;;*** - -;;;### (autoloads nil "vm-pop" "vm/vm-pop.el" (12748 62835)) -;;; Generated autoloads from vm/vm-pop.el - -;;;*** - -;;;### (autoloads nil "vm-reply" "vm/vm-reply.el" (12677 32668)) -;;; Generated autoloads from vm/vm-reply.el - -;;;*** - -;;;### (autoloads nil "vm-save" "vm/vm-save.el" (12677 32678)) -;;; Generated autoloads from vm/vm-save.el - -;;;*** - -;;;### (autoloads nil "vm-search" "vm/vm-search.el" (12749 3230)) -;;; Generated autoloads from vm/vm-search.el - -;;;*** - -;;;### (autoloads nil "vm-search18" "vm/vm-search18.el" (12677 32686)) -;;; Generated autoloads from vm/vm-search18.el - -;;;*** - -;;;### (autoloads nil "vm-search19" "vm/vm-search19.el" (12677 32690)) -;;; Generated autoloads from vm/vm-search19.el - -;;;*** - -;;;### (autoloads nil "vm-sort" "vm/vm-sort.el" (12677 32686)) -;;; Generated autoloads from vm/vm-sort.el - -;;;*** - -;;;### (autoloads nil "vm-startup" "vm/vm-startup.el" (12748 62843)) -;;; Generated autoloads from vm/vm-startup.el - -;;;*** - -;;;### (autoloads nil "vm-summary" "vm/vm-summary.el" (12748 62838)) -;;; Generated autoloads from vm/vm-summary.el - -;;;*** - -;;;### (autoloads nil "vm-thread" "vm/vm-thread.el" (12677 32692)) -;;; Generated autoloads from vm/vm-thread.el - -;;;### (autoloads nil "vm-toolbar" "vm/vm-toolbar.el" (12740 27721)) -;;; Generated autoloads from vm/vm-toolbar.el - -;;;*** - -;;;### (autoloads nil "vm-undo" "vm/vm-undo.el" (12677 32680)) -;;; Generated autoloads from vm/vm-undo.el - -;;;*** - -;;;### (autoloads nil "vm-vars" "vm/vm-vars.el" (12807 56463)) -;;; Generated autoloads from vm/vm-vars.el - -;;;*** - -;;;### (autoloads nil "vm-version" "vm/vm-version.el" (12748 62841)) -;;; Generated autoloads from vm/vm-version.el - -;;;*** - -;;;### (autoloads nil "vm-virtual" "vm/vm-virtual.el" (12677 32684)) -;;; Generated autoloads from vm/vm-virtual.el - -;;;*** - -;;;### (autoloads nil "vm-window" "vm/vm-window.el" (12748 62841)) -;;; Generated autoloads from vm/vm-window.el - -;;;*** - -;;;### (autoloads nil "docomp" "w3/docomp.el" (12730 9825)) -;;; Generated autoloads from w3/docomp.el - -;;;*** - -;;;### (autoloads nil "font" "w3/font.el" (12721 20236)) -;;; Generated autoloads from w3/font.el - -;;;*** - -;;;### (autoloads nil "images" "w3/images.el" (12718 1084)) -;;; Generated autoloads from w3/images.el - -;;;*** - -;;;### (autoloads nil "w3-about" "w3/w3-about.el" (12748 62861)) -;;; Generated autoloads from w3/w3-about.el - -;;;*** - -;;;### (autoloads nil "w3-annotat" "w3/w3-annotat.el" (12731 37946)) -;;; Generated autoloads from w3/w3-annotat.el - -;;;*** - -;;;### (autoloads nil "w3-auto" "w3/w3-auto.el" (12731 37950)) -;;; Generated autoloads from w3/w3-auto.el - -;;;### (autoloads nil "w3-beta" "w3/w3-beta.el" (12686 31765)) -;;; Generated autoloads from w3/w3-beta.el - -;;;*** - -;;;*** - -;;;### (autoloads nil "w3-draw" "w3/w3-draw.el" (12731 37943)) -;;; Generated autoloads from w3/w3-draw.el - -;;;*** - -;;;### (autoloads nil "w3-e19" "w3/w3-e19.el" (12730 9828)) -;;; Generated autoloads from w3/w3-e19.el - -;;;*** - -;;;### (autoloads nil "w3-emulate" "w3/w3-emulate.el" (12718 1157)) -;;; Generated autoloads from w3/w3-emulate.el - -;;;*** - -;;;### (autoloads nil "w3-forms" "w3/w3-forms.el" (12748 62863)) -;;; Generated autoloads from w3/w3-forms.el - -;;;### (autoloads (w3-use-hotlist) "w3-hot" "w3/w3-hot.el" (12731 37948)) -;;; Generated autoloads from w3/w3-hot.el - -(autoload 'w3-use-hotlist "w3-hot" "\ -Possibly go to a link in your W3/Mosaic hotlist. -This is part of the emacs World Wide Web browser. It will prompt for -one of the items in your 'hotlist'. A hotlist is a list of often -visited or interesting items you have found on the World Wide Web." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "w3-imap" "w3/w3-imap.el" (12718 1155)) -;;; Generated autoloads from w3/w3-imap.el - -;;;*** - -;;;### (autoloads nil "w3-keyword" "w3/w3-keyword.el" (12731 37958)) -;;; Generated autoloads from w3/w3-keyword.el - -;;;*** - -;;;### (autoloads nil "w3-latex" "w3/w3-latex.el" (12731 38144)) -;;; Generated autoloads from w3/w3-latex.el - -;;;*** - -;;;### (autoloads nil "w3-menu" "w3/w3-menu.el" (12731 37956)) -;;; Generated autoloads from w3/w3-menu.el - -;;;*** - -;;;### (autoloads nil "w3-mouse" "w3/w3-mouse.el" (12721 20268)) -;;; Generated autoloads from w3/w3-mouse.el - -;;;*** - -;;;### (autoloads nil "w3-mule" "w3/w3-mule.el" (12692 3956)) -;;; Generated autoloads from w3/w3-mule.el - -;;;*** - -;;;### (autoloads nil "w3-parse" "w3/w3-parse.el" (12807 62842)) -;;; Generated autoloads from w3/w3-parse.el - -;;;*** - -;;;### (autoloads nil "w3-prefs" "w3/w3-prefs.el" (12748 62865)) -;;; Generated autoloads from w3/w3-prefs.el - -;;;*** - -;;;### (autoloads nil "w3-print" "w3/w3-print.el" (12731 37955)) -;;; Generated autoloads from w3/w3-print.el - -;;;*** - -;;;### (autoloads nil "w3-speak" "w3/w3-speak.el" (12748 62866)) -;;; Generated autoloads from w3/w3-speak.el - -;;;*** - -;;;### (autoloads nil "w3-style" "w3/w3-style.el" (12731 37941)) -;;; Generated autoloads from w3/w3-style.el - -;;;*** - -;;;### (autoloads nil "w3-sysdp" "w3/w3-sysdp.el" (12731 37922)) -;;; Generated autoloads from w3/w3-sysdp.el - -;;;*** - -;;;### (autoloads nil "w3-toolbar" "w3/w3-toolbar.el" (12692 3945)) -;;; Generated autoloads from w3/w3-toolbar.el - -;;;*** - -;;;### (autoloads nil "w3-vars" "w3/w3-vars.el" (12748 62858)) -;;; Generated autoloads from w3/w3-vars.el - -;;;*** - -;;;### (autoloads nil "w3-widget" "w3/w3-widget.el" (12721 20248)) -;;; Generated autoloads from w3/w3-widget.el - -;;;*** - -;;;### (autoloads nil "w3-xemac" "w3/w3-xemac.el" (12807 58091)) -;;; Generated autoloads from w3/w3-xemac.el - -;;;### (autoloads (w3-follow-link w3-follow-link-other-frame w3-do-setup w3 w3-preview-this-buffer w3-batch-fetch w3-follow-url-at-point w3-follow-url-at-point-other-frame w3-maybe-follow-link w3-maybe-follow-link-mouse w3-fetch w3-fetch-other-frame w3-find-file w3-open-local) "w3" "w3/w3.el" (12748 62860)) -;;; Generated autoloads from w3/w3.el - -(autoload 'w3-open-local "w3" "\ -Find a local file, and interpret it as a hypertext document. -It will prompt for an existing file or directory, and retrieve it as a -hypertext document. If it is a directory, and url-use-hypertext-dired -is non-nil, then an HTML directory listing is created on the fly. -Otherwise, dired-mode is used to visit the buffer." t nil) - -(autoload 'w3-find-file "w3" "\ -Find a local file, and interpret it as a hypertext document. -It will prompt for an existing file or directory, and retrieve it as a -hypertext document. If it is a directory, and url-use-hypertext-dired -is non-nil, then an HTML directory listing is created on the fly. -Otherwise, dired-mode is used to visit the buffer." t nil) - -(autoload 'w3-fetch-other-frame "w3" "\ -Attempt to follow the hypertext reference under point in a new frame. -With prefix-arg P, ignore viewers and dump the link straight -to disk." t nil) - -(autoload 'w3-fetch "w3" "\ -Retrieve a document over the World Wide Web. -The World Wide Web is a global hypertext system started by CERN in -Switzerland in 1991. - -The document should be specified by its fully specified -Uniform Resource Locator. The document will be parsed, printed, or -passed to an external viewer as appropriate. Variable -`mm-mime-info' specifies viewers for particular file types." t nil) - -(autoload 'w3-maybe-follow-link-mouse "w3" "\ -Maybe follow a hypertext link under point. -If there is no link under point, this will try using -url-get-url-at-point" t nil) - -(autoload 'w3-maybe-follow-link "w3" "\ -Maybe follow a hypertext link under point. -If there is no link under point, this will try using -url-get-url-at-point" t nil) - -(autoload 'w3-follow-url-at-point-other-frame "w3" "\ -Follow the URL under PT, defaults to link under (point)" t nil) - -(autoload 'w3-follow-url-at-point "w3" "\ -Follow the URL under PT, defaults to link under (point)" t nil) - -(autoload 'w3-batch-fetch "w3" "\ -Fetch all the URLs on the command line and save them to files in -the current directory. The first argument after the -f w3-batch-fetch -on the command line should be a string specifying how to save the -information retrieved. If it is \"html\", then the page will be -unformatted when it is written to disk. If it is \"text\", then the -page will be formatted before it is written to disk. If it is -\"binary\" it will not mess with the file extensions, and just save -the data in raw binary format. If none of those, the default is -\"text\", and the first argument is treated as a normal URL." nil nil) - -(autoload 'w3-preview-this-buffer "w3" "\ -See what this buffer will look like when its formatted as HTML. -HTML is the HyperText Markup Language used by the World Wide Web to -specify formatting for text. More information on HTML can be found at -ftp.w3.org:/pub/www/doc." t nil) - -(autoload 'w3 "w3" "\ -Retrieve the default World Wide Web home page. -The World Wide Web is a global hypertext system started by CERN in -Switzerland in 1991. - -The home page is specified by the variable w3-default-homepage. The -document should be specified by its fully specified Uniform Resource -Locator. The document will be parsed as HTML (if appropriate) and -displayed in a new buffer." t nil) - -(autoload 'w3-do-setup "w3" "\ -Do setup - this is to avoid conflict with user settings when W3 is -dumped with emacs." nil nil) - -(autoload 'w3-follow-link-other-frame "w3" "\ -Attempt to follow the hypertext reference under point in a new frame. -With prefix-arg P, ignore viewers and dump the link straight -to disk." nil nil) - -(autoload 'w3-follow-link "w3" "\ -Attempt to follow the hypertext reference under point. -With prefix-arg P, ignore viewers and dump the link straight -to disk." t nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "widget-edit" "w3/widget-edit.el" (12748 62864)) -;;; Generated autoloads from w3/widget-edit.el - -;;;*** - -;;;### (autoloads nil "widget" "w3/widget.el" (12721 20262)) -;;; Generated autoloads from w3/widget.el - -;;;*** - -;;;### (autoloads nil "x-compose" "x11/x-compose.el" (12807 56799)) -;;; Generated autoloads from x11/x-compose.el - -;;;*** - -;;;### (autoloads nil "x-faces" "x11/x-faces.el" (12701 8661)) -;;; Generated autoloads from x11/x-faces.el - -;;;### (autoloads (font-menu-weight-constructor font-menu-size-constructor font-menu-family-constructor reset-device-font-menus) "x-font-menu" "x11/x-font-menu.el" (12807 56845)) -;;; Generated autoloads from x11/x-font-menu.el - -(defvar font-menu-ignore-scaled-fonts t "\ -*If non-nil, then the font menu will try to show only bitmap fonts.") - -(defvar font-menu-this-frame-only-p t "\ -*If non-nil, then changing the default font from the font menu will only -affect one frame instead of all frames.") - -(fset 'install-font-menus 'reset-device-font-menus) - -(autoload 'reset-device-font-menus "x-font-menu" "\ -Generates the `Font', `Size', and `Weight' submenus for the Options menu. -This is run the first time that a font-menu is needed for each device. -If you don't like the lazy invocation of this function, you can add it to -`create-device-hook' and that will make the font menus respond more quickly -when they are selected for the first time. If you add fonts to your system, -or if you change your font path, you can call this to re-initialize the menus." nil nil) - -(autoload 'font-menu-family-constructor "x-font-menu" nil nil nil) - -(autoload 'font-menu-size-constructor "x-font-menu" nil nil nil) - -(autoload 'font-menu-weight-constructor "x-font-menu" nil nil nil) - -;;;*** - -;;;*** - -;;;### (autoloads nil "x-init" "x11/x-init.el" (12807 57082)) -;;; Generated autoloads from x11/x-init.el - -;;;*** - -;;;### (autoloads nil "x-iso8859-1" "x11/x-iso8859-1.el" (12677 32698)) -;;; Generated autoloads from x11/x-iso8859-1.el - -;;;*** - -;;;### (autoloads nil "x-menubar" "x11/x-menubar.el" (12807 56932)) -;;; Generated autoloads from x11/x-menubar.el - -;;;*** - -;;;### (autoloads nil "x-misc" "x11/x-misc.el" (12677 32708)) -;;; Generated autoloads from x11/x-misc.el - -;;;*** - -;;;### (autoloads nil "x-mouse" "x11/x-mouse.el" (12701 8664)) -;;; Generated autoloads from x11/x-mouse.el - -;;;*** - -;;;### (autoloads nil "x-scrollbar" "x11/x-scrollbar.el" (12677 32708)) -;;; Generated autoloads from x11/x-scrollbar.el - -;;;*** - -;;;### (autoloads nil "x-select" "x11/x-select.el" (12677 32696)) -;;; Generated autoloads from x11/x-select.el - -;;;### (autoloads nil "x-toolbar" "x11/x-toolbar.el" (12713 64142)) -;;; Generated autoloads from x11/x-toolbar.el - -;;;*** - -;;;*** - -;;;### (autoloads nil "x-win-sun" "x11/x-win-sun.el" (12807 56434)) -;;; Generated autoloads from x11/x-win-sun.el - -;;;*** - -;;;### (autoloads nil "x-win-xfree86" "x11/x-win-xfree86.el" (12677 32709)) -;;; Generated autoloads from x11/x-win-xfree86.el - -;;; Generated autoloads from x11/x-win-sun.el - -;;; Don't make backup versions of this file - most of it is generated -;;; automatically by autoload.el, and what isn't changes rarely. -;;; Local Variables: -;;; version-control: never -;;; no-byte-compile: t -;;; no-update-autoloads: t -;;; End: -;;; loaddefs.el ends here
--- a/lisp/gnus/ChangeLog Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/ChangeLog Mon Aug 13 09:38:25 2007 +0200 @@ -1,3 +1,88 @@ +Sun May 25 17:08:16 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no> + + * gnus.el: Gnus v5.4.55 is released. + +Sun May 25 15:13:45 1997 Michael R. Cook <mcook@cognex.com> + + * gnus-art.el (gnus-button-alist): Typo fix. + +Sun May 25 14:44:38 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no> + + * gnus-salt.el (gnus-pick-start-reading): Mark unpicked as read. + + * gnus-sum.el (gnus-summary-move-article): Don't scan. + + * gnus-group.el (gnus-group-get-new-news-this-group): Accept an + optional non-scan parameter. + +Sun May 25 14:33:47 1997 Jan Vroonhof <vroonhof@math.ethz.ch> + + * gnus-cite.el (gnus-cite-attribution-prefix): Typo. + +Sat May 24 12:57:46 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no> + + * gnus-nocem.el (gnus-nocem-verify-issuer): Ignore errors when + verifying. + +Sat May 24 11:55:04 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no> + + * gnus.el: Gnus v5.4.54 is released. + +Sat May 24 10:35:40 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no> + + * message.el (message-set-auto-save-file-name): Don't use "*" in + autosave name. + + * gnus-art.el (gnus-article-delete-text-of-type): New version. + +Sat May 24 10:33:43 1997 Dan Christensen <jdchrist@math.mit.edu> + + * gnus-art.el (gnus-article-delete-invisible-text): New version. + +Sat May 24 10:26:34 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no> + + * nnmail.el (nnmail-article-group): Remove all 'junk splits. + +Wed May 21 16:18:03 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * gnus-cite.el (gnus-cite-attribution-prefix): Recognize + Microsoft/Agent style attribution lines. + (gnus-cite-attribution-suffix): Ditto. + +Sat May 24 05:23:46 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no> + + * gnus-cache.el (gnus-cache-read-active): Would generate cache + active file too often. + (gnus-cache-possibly-alter-active): Test statement removed. + (gnus-cache-articles-in-group): Would destroy hashtb. + + * gnus-sum.el (gnus-summary-limit-mark-excluded-as-read): Don't + mark everything as read. + + * gnus-cite.el (gnus-article-fill-cited-article): Nix out + gnus-cite-article. + +Tue May 20 21:43:31 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no> + + * gnus-sum.el (gnus-summary-move-article): Don't suppress moved + articles. + + * gnus-start.el (gnus-dribble-read-file): Check that the dribble + file exists. + + * gnus-cache.el (gnus-cache-articles-in-group): Update cache + active file. + +Mon May 19 02:04:01 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no> + + * gnus-sum.el (gnus-summary-search-article): Typo. + + * nnml.el (nnml-update-file-alist): Allow forcing. + + * nnheaderxm.el (nnheader-xmas-find-file-noselect): Removed. + (nnheader-xmas-cancel-timer): Removed. + (nnheader-xmas-cancel-function-timers): Removed. + Sun May 18 07:35:43 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no> * gnus.el: Gnus v5.4.53 is released.
--- a/lisp/gnus/gnus-art.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/gnus-art.el Mon Aug 13 09:38:25 2007 +0200 @@ -580,20 +580,18 @@ (defun gnus-article-delete-text-of-type (type) "Delete text of TYPE in the current buffer." (save-excursion - (let ((e (point-min)) - b) - (while (setq b (text-property-any e (point-max) 'article-type type)) - (setq e (text-property-not-all b (point-max) 'article-type type)) - (delete-region b e))))) + (let ((b (point-min))) + (while (setq b (text-property-any b (point-max) 'article-type type)) + (delete-region + b (text-property-not-all b (point-max) 'article-type type)))))) (defun gnus-article-delete-invisible-text () "Delete all invisible text in the current buffer." (save-excursion - (let ((e (point-min)) - b) - (while (setq b (text-property-any e (point-max) 'invisible t)) - (setq e (text-property-not-all b (point-max) 'invisible t)) - (delete-region b e))))) + (let ((b (point-min))) + (while (setq b (text-property-any b (point-max) 'invisible t)) + (delete-region + b (text-property-not-all b (point-max) 'invisible t)))))) (defun gnus-article-text-type-exists-p (type) "Say whether any text of type TYPE exists in the buffer." @@ -1733,34 +1731,33 @@ (put 'gnus-article-mode 'mode-class 'special) -(when t - (gnus-define-keys gnus-article-mode-map - " " gnus-article-goto-next-page - "\177" gnus-article-goto-prev-page - [delete] gnus-article-goto-prev-page - "\C-c^" gnus-article-refer-article - "h" gnus-article-show-summary - "s" gnus-article-show-summary - "\C-c\C-m" gnus-article-mail - "?" gnus-article-describe-briefly - gnus-mouse-2 gnus-article-push-button - "\r" gnus-article-press-button - "\t" gnus-article-next-button - "\M-\t" gnus-article-prev-button - "e" gnus-article-edit - "<" beginning-of-buffer - ">" end-of-buffer - "\C-c\C-i" gnus-info-find-node - "\C-c\C-b" gnus-bug +(gnus-define-keys gnus-article-mode-map + " " gnus-article-goto-next-page + "\177" gnus-article-goto-prev-page + [delete] gnus-article-goto-prev-page + "\C-c^" gnus-article-refer-article + "h" gnus-article-show-summary + "s" gnus-article-show-summary + "\C-c\C-m" gnus-article-mail + "?" gnus-article-describe-briefly + gnus-mouse-2 gnus-article-push-button + "\r" gnus-article-press-button + "\t" gnus-article-next-button + "\M-\t" gnus-article-prev-button + "e" gnus-article-edit + "<" beginning-of-buffer + ">" end-of-buffer + "\C-c\C-i" gnus-info-find-node + "\C-c\C-b" gnus-bug - "\C-d" gnus-article-read-summary-keys - "\M-*" gnus-article-read-summary-keys - "\M-#" gnus-article-read-summary-keys - "\M-^" gnus-article-read-summary-keys - "\M-g" gnus-article-read-summary-keys) + "\C-d" gnus-article-read-summary-keys + "\M-*" gnus-article-read-summary-keys + "\M-#" gnus-article-read-summary-keys + "\M-^" gnus-article-read-summary-keys + "\M-g" gnus-article-read-summary-keys) - (substitute-key-definition - 'undefined 'gnus-article-read-summary-keys gnus-article-mode-map)) +(substitute-key-definition + 'undefined 'gnus-article-read-summary-keys gnus-article-mode-map) (defun gnus-article-make-menu-bar () (gnus-turn-off-edit-menu 'article) @@ -2547,7 +2544,7 @@ (defcustom gnus-button-alist `(("<\\(url: ?\\)?news:\\([^>\n\t ]*@[^>\n\t ]*\\)>" 0 t gnus-button-message-id 2) - ("\\bnews:\\([^>\n\t ]*@[^>\n\t ]*+\\)" 0 t gnus-button-message-id 1) + ("\\bnews:\\([^>\n\t ]*@[^>\n\t ]*\\)" 0 t gnus-button-message-id 1) ("\\(\\b<\\(url: ?\\)?news:\\(//\\)?\\([^>\n\t ]*\\)>\\)" 1 t gnus-button-fetch-group 4) ("\\bnews:\\(//\\)?\\([^>\n\t ]+\\)" 0 t gnus-button-fetch-group 2)
--- a/lisp/gnus/gnus-cache.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/gnus-cache.el Mon Aug 13 09:38:25 2007 +0200 @@ -255,15 +255,13 @@ (defun gnus-cache-possibly-alter-active (group active) "Alter the ACTIVE info for GROUP to reflect the articles in the cache." - (when (equal group "no.norsk") (error "hie")) (when gnus-cache-active-hashtb (let ((cache-active (gnus-gethash group gnus-cache-active-hashtb))) - (and cache-active - (< (car cache-active) (car active)) - (setcar active (car cache-active))) - (and cache-active - (> (cdr cache-active) (cdr active)) - (setcdr active (cdr cache-active)))))) + (when cache-active + (when (< (car cache-active) (car active)) + (setcar active (car cache-active))) + (when (> (cdr cache-active) (cdr active)) + (setcdr active (cdr cache-active))))))) (defun gnus-cache-retrieve-headers (articles group &optional fetch-old) "Retrieve the headers for ARTICLES in GROUP." @@ -452,11 +450,18 @@ (defun gnus-cache-articles-in-group (group) "Return a sorted list of cached articles in GROUP." - (let ((dir (file-name-directory (gnus-cache-file-name group 1)))) + (let ((dir (file-name-directory (gnus-cache-file-name group 1))) + articles) (when (file-exists-p dir) - (sort (mapcar (lambda (name) (string-to-int name)) - (directory-files dir nil "^[0-9]+$" t)) - '<)))) + (setq articles + (sort (mapcar (lambda (name) (string-to-int name)) + (directory-files dir nil "^[0-9]+$" t)) + '<)) + ;; Update the cache active file, just to synch more. + (when articles + (gnus-cache-update-active group (car articles) t) + (gnus-cache-update-active group (car (last articles)))) + articles))) (defun gnus-cache-braid-nov (group cached) (let ((cache-buf (get-buffer-create " *gnus-cache*")) @@ -553,8 +558,8 @@ (defun gnus-cache-read-active (&optional force) "Read the cache active file." (gnus-make-directory gnus-cache-directory) - (if (not (and (file-exists-p gnus-cache-active-file) - (or force (not gnus-cache-active-hashtb)))) + (if (or (not (file-exists-p gnus-cache-active-file)) + force) ;; There is no active file, so we generate one. (gnus-cache-generate-active) ;; We simply read the active file.
--- a/lisp/gnus/gnus-cite.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/gnus-cite.el Mon Aug 13 09:38:25 2007 +0200 @@ -98,13 +98,14 @@ :group 'gnus-cite :type 'integer) -(defcustom gnus-cite-attribution-prefix "in article\\|in <" +(defcustom gnus-cite-attribution-prefix + "in article\\|in <\\|On \\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\)," "Regexp matching the beginning of an attribution line." :group 'gnus-cite :type 'regexp) (defcustom gnus-cite-attribution-suffix - "\\(wrote\\|writes\\|said\\|says\\):[ \t]*$" + "\\(\\(wrote\\|writes\\|said\\|says\\|>\\)\\(:\\|\\.\\.\\.\\)\\)[ ]*$" "Regexp matching the end of an attribution line. The text matching the first grouping will be used as a button." :group 'gnus-cite @@ -437,7 +438,8 @@ (setq gnus-cite-prefix-alist nil gnus-cite-attribution-alist nil gnus-cite-loose-prefix-alist nil - gnus-cite-loose-attribution-alist nil))))) + gnus-cite-loose-attribution-alist nil + gnus-cite-article nil))))) (defun gnus-article-hide-citation (&optional arg force) "Toggle hiding of all cited text except attribution lines.
--- a/lisp/gnus/gnus-group.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/gnus-group.el Mon Aug 13 09:38:25 2007 +0200 @@ -2874,7 +2874,7 @@ (gnus-group-list-groups (and (numberp arg) (max (car gnus-group-list-mode) arg))))) -(defun gnus-group-get-new-news-this-group (&optional n) +(defun gnus-group-get-new-news-this-group (&optional n dont-scan) "Check for newly arrived news in the current group (and the N-1 next groups). The difference between N and the number of newsgroup checked is returned. If N is negative, this group and the N-1 previous groups will be checked." @@ -2888,7 +2888,7 @@ (gnus-group-remove-mark group) ;; Bypass any previous denials from the server. (gnus-remove-denial (gnus-find-method-for-group group)) - (if (gnus-activate-group group 'scan) + (if (gnus-activate-group group (if dont-scan nil 'scan)) (progn (gnus-get-unread-articles-in-group (gnus-get-info group) (gnus-active group) t)
--- a/lisp/gnus/gnus-nocem.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/gnus-nocem.el Mon Aug 13 09:38:25 2007 +0200 @@ -194,7 +194,8 @@ (defun gnus-nocem-verify-issuer (person) "Verify using PGP that the canceler is who she says she is." (if (fboundp gnus-nocem-verifyer) - (funcall gnus-nocem-verifyer) + (ignore-errors + (funcall gnus-nocem-verifyer)) ;; If we don't have Mailcrypt, then we use the message anyway. t))
--- a/lisp/gnus/gnus-salt.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/gnus-salt.el Mon Aug 13 09:38:25 2007 +0200 @@ -158,7 +158,7 @@ (if gnus-pick-elegant-flow (progn (when (or catch-up gnus-mark-unpicked-articles-as-read) - (gnus-summary-limit-mark-excluded-as-read)) + (gnus-summary-catchup)) (if (gnus-group-quit-config gnus-newsgroup-name) (gnus-summary-exit) (gnus-summary-next-group)))
--- a/lisp/gnus/gnus-start.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/gnus-start.el Mon Aug 13 09:38:25 2007 +0200 @@ -762,6 +762,7 @@ ;; Set the file modes to reflect the .newsrc file modes. (save-buffer) (when (and (file-exists-p gnus-current-startup-file) + (file-exists-p dribble-file) (setq modes (file-modes gnus-current-startup-file))) (set-file-modes dribble-file modes)) ;; Possibly eval the file later. @@ -1648,7 +1649,7 @@ (gnus-make-hashtable (count-lines (point-min) (point-max))) (gnus-make-hashtable 4096))))))) - ;; Delete unnecessary lines, cleaned up dmoore@ucsd.edu 31.10.1996 + ;; Delete unnecessary lines. (goto-char (point-min)) (cond ((gnus-ignored-newsgroups-has-to-p) (delete-matching-lines gnus-ignored-newsgroups)) @@ -1660,21 +1661,20 @@ ;; Make the group names readable as a lisp expression even if they ;; contain special characters. - ;; Fix by Luc Van Eycken <Luc.VanEycken@esat.kuleuven.ac.be>. (goto-char (point-max)) (while (re-search-backward "[][';?()#]" nil t) (insert ?\\)) ;; If these are groups from a foreign select method, we insert the ;; group prefix in front of the group names. - (and method (not (gnus-server-equal - (gnus-server-get-method nil method) - (gnus-server-get-method nil gnus-select-method))) - (let ((prefix (gnus-group-prefixed-name "" method))) - (goto-char (point-min)) - (while (and (not (eobp)) - (progn (insert prefix) - (zerop (forward-line 1))))))) + (when (not (gnus-server-equal + (gnus-server-get-method nil method) + (gnus-server-get-method nil gnus-select-method))) + (let ((prefix (gnus-group-prefixed-name "" method))) + (goto-char (point-min)) + (while (and (not (eobp)) + (progn (insert prefix) + (zerop (forward-line 1))))))) ;; Store the active file in a hash table. (goto-char (point-min)) (let (group max min)
--- a/lisp/gnus/gnus-sum.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/gnus-sum.el Mon Aug 13 09:38:25 2007 +0200 @@ -5858,7 +5858,7 @@ '<) (sort gnus-newsgroup-limit '<))) article) - (setq gnus-newsgroup-unreads nil) + (setq gnus-newsgroup-unreads gnus-newsgroup-limit) (if all (setq gnus-newsgroup-dormant nil gnus-newsgroup-marked nil @@ -6334,7 +6334,7 @@ `gnus-select-article-hook' is not called during the search." ;; We have to require this here to make sure that the following ;; dynamic binding isn't shadowed by autoloading. - (require 'gnus-asynch) + (require 'gnus-async) (let ((gnus-select-article-hook nil) ;Disable hook. (gnus-article-display-hook nil) (gnus-mark-article-hook nil) ;Inhibit marking as read. @@ -6663,6 +6663,8 @@ (cond ;; Move the article. ((eq action 'move) + ;; Remove this article from future suppression. + (gnus-dup-unsuppress-article article) (gnus-request-move-article article ; Article to move gnus-newsgroup-name ; From newsgroup @@ -6804,7 +6806,7 @@ (save-excursion (set-buffer gnus-group-buffer) (when (gnus-group-goto-group (car to-groups) t) - (gnus-group-get-new-news-this-group 1)) + (gnus-group-get-new-news-this-group 1 t)) (pop to-groups))) (gnus-kill-buffer copy-buf)
--- a/lisp/gnus/gnus.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/gnus.el Mon Aug 13 09:38:25 2007 +0200 @@ -226,7 +226,7 @@ :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "5.4.53" +(defconst gnus-version-number "5.4.55" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number)
--- a/lisp/gnus/message.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/message.el Mon Aug 13 09:38:25 2007 +0200 @@ -2968,7 +2968,9 @@ (let ((name (make-temp-name (expand-file-name (concat (file-name-as-directory message-autosave-directory) - "msg." (buffer-name)))))) + "msg." + (nnheader-replace-chars-in-string + (buffer-name) ?* ?.)))))) (setq buffer-auto-save-file-name (save-excursion (prog1
--- a/lisp/gnus/nnheaderxm.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/nnheaderxm.el Mon Aug 13 09:38:25 2007 +0200 @@ -25,9 +25,6 @@ ;;; Code: -(eval-and-compile - (autoload 'nnheader-insert-file-contents "nnheader")) - (defun nnheader-xmas-run-at-time (time repeat function &rest args) (start-itimer "nnheader-run-at-time" @@ -35,121 +32,9 @@ (,function ,@args)) time repeat)) -(defun nnheader-xmas-cancel-timer (timer) - (delete-itimer timer)) - -(defun nnheader-xmas-cancel-function-timers (function) - ) - -(defun nnheader-xmas-find-file-noselect (filename &optional nowarn rawfile) - "Read file FILENAME into a buffer and return the buffer. -If a buffer exists visiting FILENAME, return that one, but -verify that the file has not changed since visited or saved. -The buffer is not selected, just returned to the caller." - (setq filename - (abbreviate-file-name - (expand-file-name filename))) - (if (file-directory-p filename) - (if find-file-run-dired - (dired-noselect filename) - (error "%s is a directory." filename)) - (let* ((buf (get-file-buffer filename)) - (truename (abbreviate-file-name (file-truename filename))) - (number (nthcdr 10 (file-attributes truename))) - ;; Find any buffer for a file which has same truename. - (other (and (not buf) - (get-file-buffer filename))) - error) - ;; Let user know if there is a buffer with the same truename. - (when other - (or nowarn - (string-equal filename (buffer-file-name other)) - (message "%s and %s are the same file" - filename (buffer-file-name other))) - ;; Optionally also find that buffer. - (when (or (and (boundp 'find-file-existing-other-name) - find-file-existing-other-name) - find-file-visit-truename) - (setq buf other))) - (if buf - (or nowarn - (verify-visited-file-modtime buf) - (cond ((not (file-exists-p filename)) - (error "File %s no longer exists!" filename)) - ((yes-or-no-p - (if (string= (file-name-nondirectory filename) - (buffer-name buf)) - (format - (if (buffer-modified-p buf) - "File %s changed on disk. Discard your edits? " - "File %s changed on disk. Reread from disk? ") - (file-name-nondirectory filename)) - (format - (if (buffer-modified-p buf) - "File %s changed on disk. Discard your edits in %s? " - "File %s changed on disk. Reread from disk into %s? ") - (file-name-nondirectory filename) - (buffer-name buf)))) - (save-excursion - (set-buffer buf) - (revert-buffer t t))))) - (save-excursion -;;; The truename stuff makes this obsolete. -;;; (let* ((link-name (car (file-attributes filename))) -;;; (linked-buf (and (stringp link-name) -;;; (get-file-buffer link-name)))) -;;; (if (bufferp linked-buf) -;;; (message "Symbolic link to file in buffer %s" -;;; (buffer-name linked-buf)))) - (setq buf (create-file-buffer filename)) - ;; (set-buffer-major-mode buf) - (set-buffer buf) - (erase-buffer) - (if rawfile - (condition-case () - (nnheader-insert-file-contents filename t) - (file-error - ;; Unconditionally set error - (setq error t))) - (condition-case () - (insert-file-contents filename t) - (file-error - ;; Run find-file-not-found-hooks until one returns non-nil. - (or t ; (run-hook-with-args-until-success 'find-file-not-found-hooks) - ;; If they fail too, set error. - (setq error t))))) - ;; Find the file's truename, and maybe use that as visited name. - (setq buffer-file-truename truename) - (setq buffer-file-number number) - ;; On VMS, we may want to remember which directory in a search list - ;; the file was found in. - (and (eq system-type 'vax-vms) - (let (logical) - (when (string-match ":" (file-name-directory filename)) - (setq logical (substring (file-name-directory filename) - 0 (match-beginning 0)))) - (not (member logical find-file-not-true-dirname-list))) - (setq buffer-file-name buffer-file-truename)) - (when find-file-visit-truename - (setq buffer-file-name - (setq filename - (expand-file-name buffer-file-truename)))) - ;; Set buffer's default directory to that of the file. - (setq default-directory (file-name-directory filename)) - ;; Turn off backup files for certain file names. Since - ;; this is a permanent local, the major mode won't eliminate it. - (when (not (funcall backup-enable-predicate buffer-file-name)) - (make-local-variable 'backup-inhibited) - (setq backup-inhibited t)) - (if rawfile - nil - (after-find-file error (not nowarn))))) - buf))) - (fset 'nnheader-run-at-time 'nnheader-xmas-run-at-time) -(fset 'nnheader-cancel-timer 'nnheader-xmas-cancel-timer) -(fset 'nnheader-cancel-function-timers 'nnheader-xmas-cancel-function-timers) -(fset 'nnheader-find-file-noselect 'nnheader-xmas-find-file-noselect) +(fset 'nnheader-cancel-timer 'delete-itimer) +(fset 'nnheader-cancel-function-timers 'ignore) (provide 'nnheaderxm)
--- a/lisp/gnus/nnmail.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/nnmail.el Mon Aug 13 09:38:25 2007 +0200 @@ -1042,6 +1042,9 @@ (fboundp nnmail-split-methods)) (let ((split (condition-case nil + ;; `nnmail-split-methods' is a function, so we + ;; just call this function here and use the + ;; result. (or (funcall nnmail-split-methods) '("bogus")) (error @@ -1049,9 +1052,13 @@ "Error in `nnmail-split-methods'; using `bogus' mail group") (sit-for 1) '("bogus"))))) - (unless (equal split '(junk)) - ;; `nnmail-split-methods' is a function, so we just call - ;; this function here and use the result. + ;; The article may be "cross-posted" to `junk'. What + ;; to do? Just remove the `junk' spec. Don't really + ;; see anything else to do... + (let (elem) + (while (setq elem (assq 'junk split)) + (setq split (delq elem split)))) + (when split (setq group-art (mapcar (lambda (group) (cons group (funcall func group))) @@ -1085,7 +1092,10 @@ ;; The article may be "cross-posted" to `junk'. What ;; to do? Just remove the `junk' spec. Don't really ;; see anything else to do... - (nreverse (delq (assq 'junk group-art) group-art))))))) + (let (elem) + (while (setq elem (assq 'junk group-art)) + (setq group-art (delq elem group-art))) + (nreverse group-art))))))) (defun nnmail-insert-lines () "Insert how many lines there are in the body of the mail.
--- a/lisp/gnus/nnml.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/gnus/nnml.el Mon Aug 13 09:38:25 2007 +0200 @@ -460,8 +460,15 @@ (defun nnml-article-to-file (article) (nnml-update-file-alist) (let (file) - (when (setq file (cdr (assq article nnml-article-file-alist))) - (concat nnml-current-directory file)))) + (if (setq file (cdr (assq article nnml-article-file-alist))) + (concat nnml-current-directory file) + ;; Just to make sure nothing went wrong when reading over NFS -- + ;; check once more. + (when (file-exists-p + (setq file (concat nnml-current-directory "/" + (number-to-string article)))) + (nnml-update-file-alist t) + file)))) (defun nnml-deletable-article-p (group article) "Say whether ARTICLE in GROUP can be deleted." @@ -783,8 +790,9 @@ (setf (car active) num))))))) t)) -(defun nnml-update-file-alist () - (unless nnml-article-file-alist +(defun nnml-update-file-alist (&optional force) + (when (or (not nnml-article-file-alist) + force) (setq nnml-article-file-alist (nnheader-article-to-file-alist nnml-current-directory))))
--- a/lisp/hm--html-menus/ANNOUNCEMENT Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/hm--html-menus/ANNOUNCEMENT Mon Aug 13 09:38:25 2007 +0200 @@ -1,9 +1,9 @@ Hello, -I've written a new version (5.5) of my html package for the XEmacs +I've written a new version (5.7) of my html package for the XEmacs and the GNU Emacs 19. The name of the package is: - hm--html-menus-5.5.tar.gz + hm--html-menus-5.7.tar.gz With this package it is very easy to write html pages for the World Wide Web (WWW). Eg: In most cases the user gets help to construct a specific @@ -23,9 +23,13 @@ (look at the variable hm--html-site-config-file) - a better syntax table from Bob Weiner - a lot of bug fixes +- a Texinfo ducomentation +- automatic update of the created, changed and title date is more + flexible +- a visible modified line could be inserted and updated automaticly Read the NEWS file to see news in detail... -You should find hm--html-menus-5.5.tar.gz on the following ftp server: +You should find hm--html-menus-5.7.tar.gz on the following ftp server: sunsite.unc.edu in /pub/Linux/apps/editors/emacs/ ftp.tnt.uni-hannover.de in /pub/editors/xemacs/contrib @@ -37,7 +41,7 @@ This package provides also a minor mode (hm--html-minor-mode), which can be used together with another html major mode, like the psgml-html -mode in the XEmacs 19.14. +mode in the XEmacs 19.15. The package provides functions to insert the following stuff in html-pages: 1. Anchors:
--- a/lisp/hm--html-menus/NEWS Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/hm--html-menus/NEWS Mon Aug 13 09:38:25 2007 +0200 @@ -1,3 +1,54 @@ +24.05.97 + Added `hm--html-automatic-create-title-date' and changed the + variable `hm--html-automatic-new-date' to + `hm--html-automatic-update-title-date'. `hm--html-automatic-new-date' + is no an obsolete variable and will be deleted in the future. + Applied a patch from Luca Pisati <pisati@nichimen.com>, which + fixed a bug in `hm--html-indent-region'. + Fixed a bug in the `hm--html-minor-region-mode-map'. Thanks to + Luca Pisati, for the bug report. + Applied a patch from Gary D. Foster <Gary.Foster@Corp.Sun.COM> + to fix the misspelled words *formatted and *formating. Thanks Gary. + Changed `hm--html-indent-line' so that the indentation leaves the + point now at the old text position, if it was behind the + indentation column. +23.05.97 + Changed the special character entities &circumflex to &circ, + thanks to Guylaine Prat <prat@cisi.cnes.fr>, for the bug report. + Added the variables `hm--html-automatic-changed-comment-prefix', + `hm--html-automatic-created-comment-prefix' and + `hm--html-automatic-comment-infix' to make the automatic insertation + of created and changed comments more flexible. + Added the command `hm--html-insert-modified-line' and the + variables `hm--html-automatic-create-modified-line', + `hm--html-automatic-update-modified-line', `hm--html-modified-prefix', + `hm--html-modified-start-tag', `hm--html-modified-end-tag' and + `hm--html-modified-insert-before', for inserting and updating + a visible "Modified line". +08.05.97 + Added the function `idd-get-buffer'. +29.03.97 + Fixed the problem with `:keys "\\[idd-help-mouse-drag-and-drop]"' + in the Emacs 19. + Fixed the template commands for the Emacs 19. + Added the commands `tmpl-util-indent-region' and + `tmpl-util-indent-buffer', which are useful utilities in + template files. + Changed frame.html.tmpl and command-description.html.tmpl, so that + they now will be indented after their insertation. +28.03.97 + Fixed the commands `idd-mouse-drag-and-drop-click' and + `idd-mouse-drag-and-drop-press-button-during-move' for the Emacs 19. + Fixed also the mouse keybinding for these commands in the Emacs 19. + Fixed the command `idd-start-mouse-drag-and-drop' for the Emacs 19. + Therefore the internal drag and drop is now working again in the + Emacs 19. + The idd help functions are fixed for the Emacs 19. + Fixed the function `hm--html-is-one-element-tag-p' for the Emacs 19. +26.03.97 + Applied a patch from Michael D. Harnois to fix the documentation. + Fixed a bug in adapt.el. + -- BUILDED the version 5.6 of the package -- 25.03.97 Fixed a bug in `hm--html-search-place-for-element-in-head'. Fixed bugs in `hm--html-add-base' and `hm--html-add-isindex'. @@ -524,8 +575,9 @@ the title in a html-file. Fixed also some minor bugs; - - - - - + +Local Variables: +mode: text +minor-mode: auto-fill-mode +fill-prefix: " " +End: \ No newline at end of file
--- a/lisp/hm--html-menus/README Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/hm--html-menus/README Mon Aug 13 09:38:25 2007 +0200 @@ -1,10 +1,10 @@ -This README file describes the emacs lisp package hm--html-menus-5.5. +This README file describes the emacs lisp package hm--html-menus-5.7. The package provides functions and various popup and pulldown menus for a html mode called hm--html-mode, a mode for writing html pages. It provides also a minor mode (hm--html-minor-mode), which can be used together with another html major mode, like the psgml-html mode in the -XEmacs 19.14. +XEmacs 19.15. It has an interface to view the html documents in a W3 browser with Netscape, the w3-package from William M. Perry and Mosaic with the @@ -30,11 +30,15 @@ Read the file README-EMACS-19, if you want to use this package with GNU Emacs 19. -Thanks to Richard Stallman, who has helped me to port this package to -the Emacs 19 and thanks to John Ladwig, who has corrected a lot of the -text and comments in this package and to all the other people like -Jerry G. DeLapp, Andreas Ernst, Bob Weiner and so on, who had provided -code, ideas, bug fixes or bug reports for this package. +Thanks to Richard Stallman, who helped me to port this package to the +Emacs 19, thanks to John Ladwig, who corrected a lot of the text and +comments in this package and thanks to Michael D. Harnois, who +corrected the Texinfo documentation and to all the other people like +Jerry G. DeLapp, Andreas Ernst, Bob Weiner, Luca Pisati, Guylaine +Prat, Gary D. Foster, Martin Buchholz, Ola Stromfors, Berthold +Crysmann, Noriaki Seki, Valeriy E. Ushakov, D-P Deng, Rick +Braumoeller, Sean Dowd and so on, who provided code, ideas, bug fixes +or bug reports for this package. The package consists of the following files:
--- a/lisp/hm--html-menus/adapt.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/hm--html-menus/adapt.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,4 +1,4 @@ -;;; $Id: adapt.el,v 1.3 1997/03/28 02:28:41 steve Exp $ +;;; $Id: adapt.el,v 1.4 1997/05/29 23:49:41 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -236,7 +236,23 @@ (and (eventp obj) (or (eq 'mouse-1 (event-basic-type obj)) (eq 'mouse-2 (event-basic-type obj)) - (eq 'mouse-3 (event-basic-type obj)))))) + (eq 'mouse-3 (event-basic-type obj)) + (eq 'down-mouse-1 (event-basic-type obj)) + (eq 'down-mouse-2 (event-basic-type obj)) + (eq 'down-mouse-3 (event-basic-type obj)) + (eq 'up-mouse-1 (event-basic-type obj)) + (eq 'up-mouse-2 (event-basic-type obj)) + (eq 'up-mouse-3 (event-basic-type obj)) + (eq 'drag-mouse-1 (event-basic-type obj)) + (eq 'drag-mouse-2 (event-basic-type obj)) + (eq 'drag-mouse-3 (event-basic-type obj)) + )))) + + (if (not (fboundp 'button-drag-event-p)) + (defun button-drag-event-p (obj) + "True if OBJ is a mouse-button-drag event object." + (and (button-event-p obj) + (member 'drag (event-modifiers obj))))) (if (not (fboundp 'button-press-event-p)) (defun button-press-event-p (obj) @@ -266,37 +282,55 @@ (if (not (fboundp 'event-window)) (defun event-window (event) - "Return the window of the given mouse event. - This may be nil if the event occurred in the border or over a toolbar. - The modeline is considered to be in the window it represents." - (and (eventp event) - (listp event) - (listp (cdr event)) - (listp (car (cdr event))) - (car (car (cdr event)))))) + "Return the window of the given mouse EVENT. +This may be nil if the event occurred in the border or over a toolbar. +The modeline is considered to be in the window it represents. + +If the EVENT is a mouse drag event, then the end event window is returned." + (if (button-drag-event-p event) + (and (listp event) + (third event) + (listp (third event)) + (windowp (car (third event))) + (car (third event))) + (and (eventp event) + (listp event) + (second event) + (listp (second event)) + (windowp (car (second event))) + (car (second event)))))) + +; (listp (cdr event)) +; (listp (car (cdr event))) +; (windowp (car (car (cdr event)))) +; (car (car (cdr event)))))) (if (not (fboundp 'event-buffer)) (defun event-buffer (event) - "Given a mouse-motion, button-press, or button-release event, return - the buffer on which that event occurred. This will be nil for non-mouse - events. If event-over-text-area-p is nil, this will also be nil." + "Given a mouse-motion, button-press, or button-release event, +return the buffer on which that event occurred. This will be nil for +non-mouse events. If event-over-text-area-p is nil, this will also be nil." (if (button-event-p event) (window-buffer (event-window event))))) (if (not (fboundp 'event-closest-point)) (defun event-closest-point (event) - "Return the character position of the given mouse event. -If the event did not occur over a window or over text, return the -closest point to the location of the event. If the Y pixel position + "Return the character position of the given mouse EVENT. +If the EVENT did not occur over a window or over text, return the +closest point to the location of the EVENT. If the Y pixel position overlaps a window and the X pixel position is to the left of that window, the closest point is the beginning of the line containing the Y position. If the Y pixel position overlaps a window and the X pixel position is to the right of that window, the closest point is the end of the line containing the Y position. If the Y pixel position is above a window, return 0. If it is below a window, return the value -of (window-end)." - (posn-point (event-start event)))) +of (window-end). + +If the EVENT is a drag event, the event-end will be used." + (if (button-drag-event-p event) + (posn-point (event-end event)) + (posn-point (event-start event))))) (if (not (fboundp 'add-minor-mode)) (defun add-minor-mode (toggle @@ -345,6 +379,80 @@ (if (not (fboundp 'mouse-track)) (defalias 'mouse-track 'mouse-drag-region)) + (if (not (fboundp 'windows-of-buffer)) + (defun windows-of-buffer (&optional buffer) + "Returns a list of windows that have BUFFER in them. +If BUFFER is not specified, the current buffer will be used." + (get-buffer-window-list buffer))) + + (if (not (boundp 'help-selects-help-window)) + (defvar help-selects-help-window t + "*If nil, use the \"old Emacs\" behavior for Help buffers. +This just displays the buffer in another window, rather than selecting +the window.")) + + (if (not (fboundp 'with-displaying-help-buffer)) + (defun with-displaying-help-buffer (thunk) + (let ((winconfig (current-window-configuration)) + (was-one-window (one-window-p)) + (help-not-visible + (not (and (windows-of-buffer "*Help*") ;shortcut + (member (selected-frame) + (mapcar 'window-frame + (windows-of-buffer "*Help*"))))))) + (prog1 (with-output-to-temp-buffer "*Help*" + (prog1 (funcall thunk) + (save-excursion + (set-buffer standard-output) + (help-mode)))) + (let ((helpwin (get-buffer-window "*Help*"))) + (if helpwin + (progn + (save-excursion + (set-buffer (window-buffer helpwin)) + ;;If the *Help* buffer is already displayed on this + ;; frame, don't override the previous configuration +; (if help-not-visible +; (set-frame-property +; (selected-frame) +; 'help-window-config winconfig))) + ) + (if help-selects-help-window + (select-window helpwin)) + (cond ((eq helpwin (selected-window)) + (message + (substitute-command-keys + "\\[scroll-up] to scroll the help." + ))) + (was-one-window + (message + (substitute-command-keys + "\\[scroll-other-window] to scroll the help." + ))) + (t + (message + (substitute-command-keys + "\\[scroll-other-window] to scroll the help." + ))))))))))) + + (if (not (fboundp 'set-extent-mouse-face)) + (defun set-extent-mouse-face (extent face) + "Set the face used to highlight EXTENT when the mouse passes over it. +FACE can also be a list of faces, and all faces listed will apply, +with faces earlier in the list taking priority over those later in the +list. + +In the Emacs 19, the argument FACE could not be a list of faces." + (put-text-property (overlay-start extent) + (overlay-end extent) + 'mouse-face face) + )) + + + (if (not (fboundp 'read-directory-name)) + (defalias 'read-directory-name 'read-file-name)) + + ))
--- a/lisp/hm--html-menus/hm--html-configuration.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-configuration.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,6 +1,6 @@ ;;; hm--html-configuration.el - Configurationfile for the html-mode ;;; -;;; $Id: hm--html-configuration.el,v 1.5 1997/03/28 02:28:41 steve Exp $ +;;; $Id: hm--html-configuration.el,v 1.6 1997/05/29 23:49:42 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -42,6 +42,7 @@ ;(require 'adapt) + ;;; The User config file (an proposal of Manoj Srivastava) (defvar hm--html-user-config-file nil "*The location of the users config file. @@ -363,20 +364,66 @@ ;;; For insertation of created and changed comments and automatic -;;; date update in the title line +;;; date update in the title line and a visible modification date -(defvar hm--html-automatic-new-date t +(defvar hm--html-automatic-create-title-date t + "*t => A date string will be inserted in the title line. +This will be updated each time before file saving, if +`hm--html-automatic-update-title-date' is also set to t.") + +(defvar hm--html-automatic-update-title-date t "*t => The date in the title line will be updated before filesaving. nil => No automatic update of the date.") +(define-obsolete-variable-alias 'hm--html-automatic-new-date + 'hm--html-automatic-update-title-date) + (defvar hm--html-automatic-changed-comment t "*t => A \"changed comment\" line will be added before filesaving. nil => No automatic insertation of a \"changed comment\" line.") +(defvar hm--html-changed-comment-prefix "Changed by: " + "*The prefix text of the \"changed comment\" lines.") + +(defvar hm--html-created-comment-prefix "Created by: " + "*The prefix text of the \"created comment\" lines.") + +(defvar hm--html-comment-infix nil + "*The infix (second part) of the \"changed/created comment\" lines. +By default, if this variable is nil, the username is used. +Then the infix looks like \"Heiko Münkel, \". +Set it to an empty string, if you don't want to have your name +in the comments.") + (defvar hm--html-automatic-created-comment t "*t => A \"created comment\" line will be added. nil => No automatic insertation of a \"created comment\" line.") +(defvar hm--html-automatic-create-modified-line nil + "*t => Inserts a visible \"modified\" line with the current date. +Visible means, that it is not a HTML comment.") + +(defvar hm--html-automatic-update-modified-line nil + "*t => Updates a visible \"modified\" line with the current date. +Visible means, that it is not a HTML comment.") + +(defvar hm--html-modified-prefix "Modified: " + "*Prefix of the last modified entry.") + +(defvar hm--html-modified-start-tag "<EM>" + "*Start tag of the modified line. +If you change this, you'll need to change also +`hm--html-modified-end-tag'.") + +(defvar hm--html-modified-end-tag "</EM>" + "*End tag of the modified line. +If you change this, you'll need to change also +`hm--html-modified-start-tag'.") + +(defvar hm--html-modified-insert-before "</body>" + "Insert modified line before this string. +The search will be done from the end to the beginning.") + ;;; Keybindings:
--- a/lisp/hm--html-menus/hm--html-indentation.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-indentation.el Mon Aug 13 09:38:25 2007 +0200 @@ -150,7 +150,7 @@ (defun hm--html-is-one-element-tag-p (tag-name) "Returns t, if the tag with the tag-name is a one element tag." - (assoc :hm--html-one-element-tag + (assoc ':hm--html-one-element-tag (cdr (assoc* (downcase tag-name) hm--html-tag-name-alist :test 'string=)))) @@ -224,13 +224,34 @@ (hm--html-previous-line-indentation))) )))) + +;;; Indentation commands + (defun hm--html-indent-line () "Indent the current line line." (interactive) (unless hm--html-disable-indentation - (indent-line-to (max 0 (hm--html-calculate-indent))))) + (let ((pos (- (point-max) (point)))) + (indent-line-to (max 0 (hm--html-calculate-indent))) + (when (> (- (point-max) pos) (point)) + (goto-char (- (point-max) pos)))))) -;;; Indentation +;(defun hm--html-indent-region (begin end) +; "Indents the region between BEGIN and END according to the major mode." +; (interactive "d\nm") +; (when (< end begin) +; (let ((a end)) +; (setq end begin) +; (setq begin a))) +; (save-excursion +; (goto-char begin) +; (let ((old-point)) +; (while (and (<= (point) end) +; (not (eq (point) old-point))) +; (setq old-point (point)) +; (indent-according-to-mode) +; (forward-line) +; )))) (defun hm--html-indent-region (begin end) "Indents the region between BEGIN and END according to the major mode." @@ -239,15 +260,12 @@ (let ((a end)) (setq end begin) (setq begin a))) - (save-excursion - (goto-char begin) - (let ((old-point)) - (while (and (<= (point) end) - (not (eq (point) old-point))) - (setq old-point (point)) - (indent-according-to-mode) - (forward-line) - )))) - + (let ((lines (count-lines begin end))) + (save-excursion + (goto-char begin) + (loop repeat lines + do (indent-according-to-mode) + (forward-line)))) + ) (provide 'hm--html-indentation)
--- a/lisp/hm--html-menus/hm--html-keys.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-keys.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,4 +1,4 @@ -;;; $Id: hm--html-keys.el,v 1.6 1997/05/09 03:28:00 steve Exp $ +;;; $Id: hm--html-keys.el,v 1.7 1997/05/29 23:49:42 steve Exp $ ;;; ;;; Copyright (C) 1995, 1996, 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -125,6 +125,8 @@ (define-key hm--html-noregion-frame-map [(control c)] 'hm--html-insert-created-comment) (define-key hm--html-noregion-frame-map "c" 'hm--html-insert-changed-comment) + (define-key hm--html-noregion-frame-map + [(control m)] 'hm--html-insert-modified-line) (define-key hm--html-noregion-frame-map "d" 'hm--html-new-date) ) @@ -218,9 +220,6 @@ (defvar hm--html-noregion-formatting-paragraph-map nil "Noregion sub keymap for inserting paragraph formatting elements.") -(define-obsolete-variable-alias - 'hm--html-noregion-formating-paragraph-map - 'hm--html-noregion-formatting-paragraph-map) (if hm--html-noregion-formatting-paragraph-map () @@ -247,9 +246,6 @@ (defvar hm--html-region-formatting-paragraph-map nil "Region sub keymap for inserting paragraph formatting elements.") -(define-obsolete-variable-alias - 'hm--html-region-formating-paragraph-map - 'hm--html-region-formatting-paragraph-map) (if hm--html-region-formatting-paragraph-map () @@ -276,9 +272,6 @@ (defvar hm--html-noregion-formatting-word-map nil "Norgion sub keymap for inserting physical text formatting elements.") -(define-obsolete-variable-alias - 'hm--html-noregion-formating-word-map - 'hm--html-noregion-formatting-word-map) (if hm--html-noregion-formatting-word-map () @@ -309,9 +302,6 @@ (defvar hm--html-region-formatting-word-map nil "Region sub keymap for inserting word text formatting elements.") -(define-obsolete-variable-alias - 'hm--html-region-formating-word-map - 'hm--html-region-formatting-word-map) (if hm--html-region-formatting-word-map () @@ -754,7 +744,7 @@ (if (adapt-xemacsp) (progn (define-key hm--html-minor-region-mode-map - '(button3) 'hm--html-popup-menu-region) + '(button3) 'hm--html-popup-minor-html-menu-region) (define-key hm--html-minor-region-mode-map [(meta control button1)] 'idd-mouse-drag-and-drop)) (if hm--html-expert
--- a/lisp/hm--html-menus/hm--html-menu.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-menu.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,6 +1,6 @@ ;;; hm--html-menu --- A menu for the hm--html-mode. ;;; -;;; $Id: hm--html-menu.el,v 1.6 1997/05/09 03:28:00 steve Exp $ +;;; $Id: hm--html-menu.el,v 1.7 1997/05/29 23:49:42 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -98,6 +98,7 @@ "----" ["Created comment" hm--html-insert-created-comment t] ["Changed comment" hm--html-insert-changed-comment t] + ["Modified line" hm--html-insert-modified-line t] ["New date in title" hm--html-new-date t] ) ("Structure" @@ -475,59 +476,110 @@ )) - -(setq hm--html-pulldown-menu - '("HTML Config Menu" - ("Set popup menu" - ["Novice menu" - hm--html-use-novice-menu - :active t - :style radio - :selected (not hm--html-expert)] - ["Expert menu" - hm--html-use-expert-menu - :active t - :style radio - :selected hm--html-expert] - ) - ["Reload config files" hm--html-load-config-files t] - ["Templates (fixed dirs) ..." - hm--html-insert-template-from-fixed-dirs - t] - ["Templates ..." hm--html-insert-template t] - ["Drag & Drop" - idd-start-mouse-drag-and-drop - :active t - :keys "\\[idd-mouse-drag-and-drop]"] - ["Drag & Drop Help" - idd-start-help-mouse-drag-and-drop - :active t - :keys "\\[idd-help-mouse-drag-and-drop]"] - "----" - ["Remove numeric names" hm--html-remove-numeric-names t] - ["Quotify hrefs" hm--html-quotify-hrefs t] - "----" - ["Submit bug report..." hm--html-submit-bug-report t] - ["WWW Package Docs" hm--html-view-www-package-docu t] - "----" - ("Preview Document" - ["Netscape view buffer" (hm--html-send-buffer-to-netscape - (current-buffer)) t] - "----" - ["Xmosaic start" html-view-start-mosaic t] - ["Xmosaic view buffer" html-view-view-buffer t] - ["Xmosaic view file" html-view-view-file t] - ["Xmosaic goto url" html-view-goto-url t] - ["Xmosaic get display" html-view-get-display t] - "----" - ["W3 start" w3 t] - ["W3 view buffer" w3-preview-this-buffer t] - ["W3 open remote file..." w3-fetch t] - ["W3 open local..." w3-open-local t] - ["W3 use hotlist..." w3-use-hotlist t] - ) - )) - +(if (adapt-xemacsp) + ;; The reason for this if form is, that the Emacs 19 can't + ;; work correct with `:keys "\\[idd-help-mouse-drag-and-drop]"' + (setq hm--html-pulldown-menu + '("HTML Config Menu" + ("Set popup menu" + ["Novice menu" + hm--html-use-novice-menu + :active t + :style radio + :selected (not hm--html-expert)] + ["Expert menu" + hm--html-use-expert-menu + :active t + :style radio + :selected hm--html-expert] + ) + ["Reload config files" hm--html-load-config-files t] + ["Templates (fixed dirs) ..." + hm--html-insert-template-from-fixed-dirs + t] + ["Templates ..." hm--html-insert-template t] + ["Drag & Drop" + idd-start-mouse-drag-and-drop + :active t + :keys "\\[idd-mouse-drag-and-drop]"] + ["Drag & Drop Help" + idd-start-help-mouse-drag-and-drop + :active t + :keys "\\[idd-help-mouse-drag-and-drop]"] + "----" + ["Remove numeric names" hm--html-remove-numeric-names t] + ["Quotify hrefs" hm--html-quotify-hrefs t] + "----" + ["Submit bug report..." hm--html-submit-bug-report t] + ["WWW Package Docs" hm--html-view-www-package-docu t] + "----" + ("Preview Document" + ["Netscape view buffer" (hm--html-send-buffer-to-netscape + (current-buffer)) t] + "----" + ["Xmosaic start" html-view-start-mosaic t] + ["Xmosaic view buffer" html-view-view-buffer t] + ["Xmosaic view file" html-view-view-file t] + ["Xmosaic goto url" html-view-goto-url t] + ["Xmosaic get display" html-view-get-display t] + "----" + ["W3 start" w3 t] + ["W3 view buffer" w3-preview-this-buffer t] + ["W3 open remote file..." w3-fetch t] + ["W3 open local..." w3-open-local t] + ["W3 use hotlist..." w3-use-hotlist t] + ) + )) + (setq hm--html-pulldown-menu + '("HTML Config Menu" + ("Set popup menu" + ["Novice menu" + hm--html-use-novice-menu + :active t + :style radio + :selected (not hm--html-expert)] + ["Expert menu" + hm--html-use-expert-menu + :active t + :style radio + :selected hm--html-expert] + ) + ["Reload config files" hm--html-load-config-files t] + ["Templates (fixed dirs) ..." + hm--html-insert-template-from-fixed-dirs + t] + ["Templates ..." hm--html-insert-template t] + ["Drag & Drop" + idd-start-mouse-drag-and-drop + :active t] + ["Drag & Drop Help" + idd-start-help-mouse-drag-and-drop + :active t] + "----" + ["Remove numeric names" hm--html-remove-numeric-names t] + ["Quotify hrefs" hm--html-quotify-hrefs t] + "----" + ["Submit bug report..." hm--html-submit-bug-report t] + ["WWW Package Docs" hm--html-view-www-package-docu t] + "----" + ("Preview Document" + ["Netscape view buffer" (hm--html-send-buffer-to-netscape + (current-buffer)) t] + "----" + ["Xmosaic start" html-view-start-mosaic t] + ["Xmosaic view buffer" html-view-view-buffer t] + ["Xmosaic view file" html-view-view-file t] + ["Xmosaic goto url" html-view-goto-url t] + ["Xmosaic get display" html-view-get-display t] + "----" + ["W3 start" w3 t] + ["W3 view buffer" w3-preview-this-buffer t] + ["W3 open remote file..." w3-fetch t] + ["W3 open local..." w3-open-local t] + ["W3 use hotlist..." w3-use-hotlist t] + ) + )) + ) (if (adapt-xemacsp) (defun hm--install-html-menu (menu-name)
--- a/lisp/hm--html-menus/hm--html-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-mode.el Mon Aug 13 09:38:25 2007 +0200 @@ -2,7 +2,7 @@ ;;; ;;; Keywords: hypermedia languages help docs wp ;;; -;;; $Id: hm--html-mode.el,v 1.5 1997/03/28 02:28:42 steve Exp $ +;;; $Id: hm--html-mode.el,v 1.6 1997/05/29 23:49:43 steve Exp $ ;;; ;;; Copyright (C) 1996, 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -99,7 +99,7 @@ (defconst hm--html-menus-package-name "hm--html-menus") -(defconst hm--html-menus-package-version "5.5") +(defconst hm--html-menus-package-version "5.7") ;;; Generate the help buffer faces
--- a/lisp/hm--html-menus/hm--html.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/hm--html-menus/hm--html.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,4 +1,4 @@ -;;; $Id: hm--html.el,v 1.6 1997/05/09 03:28:00 steve Exp $ +;;; $Id: hm--html.el,v 1.7 1997/05/29 23:49:43 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -845,14 +845,14 @@ (defun hm--html-add-preformatted () - "Adds the HTML tags for preformatted text at the point in the current buffer." + "Adds the HTML tags for preformatted text at the current point." (interactive) (hm--html-add-tags 'hm--html-insert-start-tag-with-newline "<PRE>" 'hm--html-insert-end-tag-with-newline "</PRE>")) -(define-obsolete-function-alias - 'hm--html-add-preformated + +(define-obsolete-function-alias 'hm--html-add-preformated 'hm--html-add-preformatted) (defun hm--html-add-preformatted-to-region () @@ -862,8 +862,8 @@ "<PRE>" 'hm--html-insert-end-tag-with-newline "</PRE>")) -(define-obsolete-function-alias - 'hm--html-add-preformated-to-region + +(define-obsolete-function-alias 'hm--html-add-preformated-to-region 'hm--html-add-preformatted-to-region) (defun hm--html-add-blockquote () @@ -1427,11 +1427,13 @@ (if (search-forward "<title>" nil t) (let ((point-after-start-tag (point))) (if (not (search-forward "</title>" nil t)) - nil + nil (goto-char (- (point) 8)) (delete-backward-char (- (point) point-after-start-tag)) (let ((start (point))) - (insert title " (" (hm--date) ")") + (if hm--html-automatic-create-title-date + (insert title " (" (hm--date) ")") + (insert title)) (goto-char start)))) ;; Noch kein <TITLE> im Buffer vorhanden (hm--html-set-point-for-title) @@ -1439,8 +1441,10 @@ "<TITLE>" 'hm--html-insert-end-tag "</TITLE>" - 'insert - (concat title " (" (hm--date) ")")) + 'insert + (if hm--html-automatic-create-title-date + (concat title " (" (hm--date) ")") + title)) (forward-char 8) (newline 1) )))) @@ -1458,16 +1462,20 @@ (if (not (search-forward "</title>" nil t)) nil (goto-char (- (point) 8)) - (delete-backward-char (- (point) point-after-start-tag)) - (insert title " (" (hm--date) ")"))) + (delete-backward-char (- (point) point-after-start-tag)) + (if hm--html-automatic-create-title-date + (insert title " (" (hm--date) ")") + (insert title)))) ;; Noch kein <TITLE> im Buffer vorhanden (hm--html-set-point-for-title) (hm--html-add-tags 'hm--html-insert-start-tag "<TITLE>" 'hm--html-insert-end-tag "</TITLE>" - 'insert - (concat title " (" (hm--date) ")")) + 'insert + (if hm--html-automatic-create-title-date + (concat title " (" (hm--date) ")") + title)) (forward-char 8) ;(newline 1) )))) @@ -1633,13 +1641,15 @@ (hm--html-add-head) (hm--html-add-body) (hm--html-add-title-and-header title) - (if hm--html-signature-file - (hm--html-add-signature)) + (when hm--html-signature-file + (hm--html-add-signature)) (goto-char (point-min)) (search-forward "</h1>" nil t) (forward-line 1) - (if hm--html-automatic-created-comment - (hm--html-insert-created-comment)))) + (when hm--html-automatic-created-comment + (hm--html-insert-created-comment)) + (when hm--html-automatic-create-modified-line + (hm--html-insert-modified-line)))) (defun hm--html-add-full-html-frame-with-region () @@ -1654,8 +1664,10 @@ (hm--html-add-head) (hm--html-add-body) (hm--html-add-signature) - (if hm--html-automatic-created-comment - (hm--html-insert-created-comment))) + (when hm--html-automatic-created-comment + (hm--html-insert-created-comment)) + (when hm--html-automatic-create-modified-line + (hm--html-insert-modified-line))) (defun hm--html-add-link-target-to-region (name) @@ -2722,12 +2734,14 @@ (defun hm--html-maybe-new-date-and-changed-comment () "Hook function which updates the date in the title line, if -'hm--html-automatic-new-date' is t and which inserts a +'hm--html-automatic-update-title-date' is t and which inserts a \"changed comment\" line, if 'hm--html-automatic-changed-comment' is t." - (if hm--html-automatic-new-date - (hm--html-new-date)) - (if hm--html-automatic-changed-comment - (hm--html-insert-changed-comment t))) + (when hm--html-automatic-update-title-date + (hm--html-new-date)) + (when hm--html-automatic-changed-comment + (hm--html-insert-changed-comment t)) + (when hm--html-automatic-update-modified-line + (hm--html-insert-modified-line))) (defun hm--html-new-date () @@ -2770,45 +2784,59 @@ (point) (if (search-forward "<body>" nil t) (point) - (point-max))))) + (point-max)))) + (comment-infix (or hm--html-comment-infix + (concat (or hm--html-username (user-full-name)) + ", ")))) (goto-char (point-min)) (if (not (search-forward "</title>" end-of-head t)) (if (not noerror) (error "ERROR: Please insert a title in the document !")) ; (let ((end-of-title-position (point))) - (if (search-forward "<!-- Created by: " end-of-head t) + (if (search-forward (concat "<!-- " + hm--html-created-comment-prefix) + end-of-head + t) (if (yes-or-no-p - "Replace the old comment \"<!-- Created by: \" ") + (concat "Replace the old comment \"<!-- " + hm--html-created-comment-prefix + "\" ")) (progn (goto-char (match-beginning 0)) (kill-line) (hm--html-add-comment) - (insert "Created by: " - (or hm--html-username (user-full-name)) - ", " + (insert hm--html-created-comment-prefix + comment-infix +; (or hm--html-username (user-full-name)) +; ", " (hm--date)))) (newline) (hm--html-add-comment) - (insert "Created by: " - (or hm--html-username (user-full-name)) - ", " + (insert hm--html-created-comment-prefix + comment-infix +; (insert "Created by: " +; (or hm--html-username (user-full-name)) +; ", " (hm--date) )))))) -(defun hm--html-insert-changed-comment-1 (newline username) +(defun hm--html-insert-changed-comment-1 (newline) "Internal function of 'hm--html-insert-changed-comment'. -Inserts a newline if NEWLINE is t, before the comment is inserted. -USERNAME is the name to be inserted in the comment." +Inserts a newline if NEWLINE is t, before the comment is inserted." (if newline (progn (newline))) (hm--html-add-comment) - (insert "Changed by: " username ", " (hm--date))) + (insert hm--html-changed-comment-prefix + (or hm--html-comment-infix + (concat (or hm--html-username (user-full-name)) ", ")) + (hm--date))) (defun hm--html-insert-changed-comment (&optional noerror) "The function inserts a \"changed comment\". -The comment looks like <!-- Changed by: Heiko Münkel, 10-Dec-1993 -->. +The comment looks by default like + <!-- Changed by: Heiko Münkel, 10-Dec-1993 -->. The comment will be inserted after the last \"changed comment\" line, or, if there isn't such a line, after the \"created comment\" line, or, after the title line. If there is no title and NOERROR is nil, an error @@ -2817,8 +2845,12 @@ If the last \"changed line\" is from the same author, it is only replaced by the new one. -Attention: Don't change the format of the lines and don't write anything -else in such a line !" +Look at the variables `hm--html-changed-comment-prefix' and +`hm--html-comment-infix', if you'd like to change the +inserted comments. You should not use different values for this +variables in the same HTML file. + +Attention: Don't write anything else in such a line!" (interactive) (save-excursion (goto-char (point-min)) @@ -2828,10 +2860,18 @@ (if (search-forward "<body>" nil t) (point) (point-max)))) - (username (or hm--html-username (user-full-name)))) + (comment-infix (or hm--html-comment-infix + hm--html-username + (user-full-name)))) +; (username (or hm--html-username (user-full-name)))) (goto-char end-of-head) - (if (search-backward "<!-- Changed by: " nil t) - (if (string-match username +; (if (search-backward "<!-- Changed by: " nil t) + (if (search-backward (concat "<!-- " + hm--html-changed-comment-prefix) + nil + t) +; (if (string-match username + (if (string-match comment-infix (buffer-substring (point) (progn (end-of-line) @@ -2842,14 +2882,18 @@ (delete-region (point) (progn (end-of-line) (point))) - (hm--html-insert-changed-comment-1 nil username)) + (hm--html-insert-changed-comment-1 nil)) ;; new comment line (end-of-line) - (hm--html-insert-changed-comment-1 t username)) - (if (search-backward "<!-- Created by: " nil t) + (hm--html-insert-changed-comment-1 t)) +; (if (search-backward "<!-- Created by: " nil t) + (if (search-backward (concat "<!-- " + hm--html-created-comment-prefix) + nil + t) (progn (end-of-line) - (hm--html-insert-changed-comment-1 t username)) + (hm--html-insert-changed-comment-1 t)) (if (search-backward "</title>" nil t) (progn (goto-char (match-end 0)) @@ -2857,12 +2901,58 @@ (progn (newline) (forward-char -1))) - (hm--html-insert-changed-comment-1 t username)) + (hm--html-insert-changed-comment-1 t)) (if (not noerror) (error "ERROR: Insert at first a title in the document !")))))))) - +(defun hm--html-insert-modified-line () + "Inserts a modified line. +By default the line looks like: + <EM>Modified: 23-May-1997</EM> + +Look at the variables `hm--html-automatic-create-modified-line', +`hm--html-automatic-update-modified-line', `hm--html-modified-prefix', +`hm--html-modified-start-tag', `hm--html-modified-end-tag' and +`hm--html-modified-insert-before' to change the behaviour of this +feature." + (interactive) + (save-excursion + (goto-char (point-max)) + (if (search-backward-regexp (concat hm--html-modified-start-tag + "[ \t\n]*" + hm--html-modified-prefix) + nil + t) + (progn ; old modified line exists + (goto-char (match-end 0)) + (if (search-forward-regexp (concat "\\([ \t\n]*\\)" + "\\([^ \t\n<]+\\)" + "\\([ \t\n]*" + hm--html-modified-end-tag + "\\)")) + (progn + (delete-region (match-beginning 2) (match-end 2)) + (goto-char (match-beginning 2)) + (insert (hm--date))) +; (replace-match (concat "\\1" (hm--date))) + (error "Destroyed \"Modified line\" found!"))) + (search-backward hm--html-modified-insert-before nil t) + (search-backward "</html>" nil t) + (search-backward "</body>" nil t) + (newline) + (indent-according-to-mode) + (forward-line -1) + (unless (= (util-return-end-of-line) (point)) + (end-of-line) + (newline)) + (newline) + (indent-according-to-mode) + (insert hm--html-modified-start-tag + hm--html-modified-prefix + (hm--date) + hm--html-modified-end-tag)))) + ;;; Functions to insert templates @@ -3834,52 +3924,52 @@ (defun hm--html_acircumflex () "Insert the character 'acircumflex'." (interactive) - (insert "âumflex;")) + (insert "â")) (defun hm--html_ecircumflex () "Insert the character 'ecircumflex'." (interactive) - (insert "êumflex;")) + (insert "ê")) (defun hm--html_icircumflex () "Insert the character 'icircumflex'." (interactive) - (insert "îumflex;")) + (insert "î")) (defun hm--html_ocircumflex () "Insert the character 'ocircumflex'." (interactive) - (insert "ôumflex;")) + (insert "ô")) (defun hm--html_ucircumflex () "Insert the character 'ucircumflex'." (interactive) - (insert "ûumflex;")) + (insert "û")) (defun hm--html_Acircumflex () "Insert the character 'Acircumflex'." (interactive) - (insert "Âumflex;")) + (insert "Â")) (defun hm--html_Ecircumflex () "Insert the character 'Ecircumflex'." (interactive) - (insert "Êumflex;")) + (insert "Ê")) (defun hm--html_Icircumflex () "Insert the character 'Icircumflex'." (interactive) - (insert "Îumflex;")) + (insert "Î")) (defun hm--html_Ocircumflex () "Insert the character 'Ocircumflex'." (interactive) - (insert "Ôumflex;")) + (insert "Ô")) (defun hm--html_Ucircumflex () "Insert the character 'Ucircumflex'." (interactive) - (insert "Ûumflex;")) + (insert "Û")) (defun hm--html_ediaeresis () "Insert the character 'ediaeresis'." @@ -4050,8 +4140,13 @@ 'major-mode 'hm--html-automatic-changed-comment 'hm--html-automatic-created-comment + 'hm--html-automatic-create-modified-line 'hm--html-automatic-expand-templates - 'hm--html-automatic-new-date + 'hm--html-automatic-update-modified-line + 'hm--html-automatic-update-title-date + 'hm--html-changed-comment-prefix + 'hm--html-comment-infix + 'hm--html-created-comment-prefix 'hm--html-expert 'hm--html-favorite-http-server-host-name 'hm--html-file-path-alist @@ -4075,6 +4170,10 @@ 'hm--html-mail-path-alist 'hm--html-marc 'hm--html-menu-load-hook + 'hm--html-modified-end-tag + 'hm--html-modified-insert-before + 'hm--html-modified-prefix + 'hm--html-modified-start-tag 'hm--html-proggate-allowed-file 'hm--html-proggate-hostname:port-alist 'hm--html-proggate-hostname:port-default
--- a/lisp/hm--html-menus/internal-drag-and-drop.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/hm--html-menus/internal-drag-and-drop.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,4 +1,4 @@ -;;; $Id: internal-drag-and-drop.el,v 1.3 1997/03/28 02:28:42 steve Exp $ +;;; $Id: internal-drag-and-drop.el,v 1.4 1997/05/29 23:49:44 steve Exp $ ;;; ;;; Copyright (C) 1996, 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -67,16 +67,46 @@ ;;; The variable `idd-global-mouse-keys' defines the mouse keys, ;;; which are bound to the drag and drop command. ;;; +;;; The variable `idd-global-help-mouse-keys' defines the mouse keys, +;;; which are bound to the drag and drop help command. +;;; ;;; The variable `idd-drag-and-drop-mouse-binding-type' determines ;;; if you've to hold a mouse button down during moving the mouse ;;; from the source to the destination or not. ;;; +;;; Emacs 19 users should read carefully the whole comments of +;;; `idd-drag-and-drop-mouse-binding-type', `idd-global-mouse-keys' +;;; and `idd-global-help-mouse-keys', if they would like to change +;;; any of these variables or the mouse bindings! +;;; (require 'adapt) (require 'cl) +(defvar idd-drag-and-drop-mouse-binding-type 'click + "*The type of the drag and drop mouse binding. +The value maybe `click' or `press-button-during-move'. +A value of `click' means, that you've to click over the source, leave +the button and click it again over the destination. +A value of `press-button-during-move' means, that you've to press +the button down over the source and hold it until the mouse pointer +is over the destination. + +The disadvantage of the `press-button-during-move' type compared with +the `click' type is, that you can't select a destination region and +therefore a drag and drop action depending on a selected region can't +be started with that type of mouse binding. + +Note: In the Emacs 19 you'll have to change also the keybindings of +the drag and drop commands, if you change this variable. Look at the +variables `idd-global-mouse-keys' and `idd-global-help-mouse-keys' for +this.") + (defvar idd-global-mouse-keys (if (adapt-emacs19p) - [(meta control mouse-1)] + (if (eq idd-drag-and-drop-mouse-binding-type + 'click) + [(meta control mouse-1)] + [(meta control down-mouse-1)]) [(meta control button1)]) "The mouse keys for the command `idd-mouse-drag-and-drop'. The command `idd-mouse-drag-and-drop' is bound during the loading @@ -86,11 +116,21 @@ Set it to nil, if you don't want to bind this function during loading. If the command is already bound in the global keymap during loading, -then this key sequence will not be bind.") +then this key sequence will not be bind. -(defvar idd-global-help-mouse-keys (if (adapt-emacs19p) - [(meta control mouse-3)] - [(meta control button3)]) +Note: In the Emacs 19 the mouse keys must contain the modifier +`down', if `idd-drag-and-drop-mouse-binding-type' is set to +`press-button-during-move' and must not contain the modifier, if it +is set to `click'. If you set `idd-drag-and-drop-mouse-binding-type' +before loading the package internal-drag-and-drop, the mouse will +be bind in the right way.") + +(defvar idd-global-help-mouse-keys + (if (adapt-emacs19p) + (if (eq idd-drag-and-drop-mouse-binding-type 'click) + [(meta control mouse-3)] + [(meta control down-mouse-3)]) + [(meta control button3)]) "The mouse keys for the command `idd-help-mouse-drag-and-drop'. The command `idd-help-mouse-drag-and-drop' is bound during the loading of the package internal-drag-and-drop to this keys in the global @@ -99,21 +139,14 @@ Set it to nil, if you don't want to bind this function during loading. If the command is already bound in the global keymap during loading, -then this key sequence will not be bind.") +then this key sequence will not be bind. -(defvar idd-drag-and-drop-mouse-binding-type 'click - "*The type of the drag and drop mouse binding. -The value maybe `click or 'press-button-during-move. -A value of `click means, that you've to click over the source, leave -the button and click it again over the destination. -A value of 'press-button-during-move means, that you've to press -the button down over the source and hold it until the mouse pointer -is over the destination. - -The disadvantage of the `press-button-during-move' type compared with -the `click' type is, that you can't select a destination region and -therefore a drag and drop action depending on a selected region can't -be started with that type of mouse binding.") +Note: In the Emacs 19 the mouse keys must contain the modifier +`down', if `idd-drag-and-drop-mouse-binding-type' is set to +`press-button-during-move' and must not contain the modifier, if it +is set to `click'. If you set `idd-drag-and-drop-mouse-binding-type' +before loading the package internal-drag-and-drop, the mouse will +be bind in the right way.") (defvar idd-actions '((((idd-if-region-active-p . nil)) (((idd-if-region-active-p . t)) @@ -295,18 +328,24 @@ ; "Parse PATH according to ange-ftp-path-format (which see). ;Returns a list (HOST USER PATH), or nil if PATH does not match the format.") +(defun idd-get-buffer (source-or-destination) + "Returns the buffer of the SOURCE-OR-DESTINATION." + (cdr (assoc ':buffer source-or-destination))) + (defun idd-set-point (source-or-destination) "Sets the point and buffer to SOURCE-OR-DESTINATION." - (set-buffer (cdr (assoc ':buffer source-or-destination))) + (set-buffer (idd-get-buffer source-or-destination)) (goto-char (cdr (assoc ':drag-or-drop-point source-or-destination)))) (defun idd-set-region (source-or-destination) "Sets the point, mark and buffer to SOURCE-OR-DESTINATION. The region is active after this function is called." - (set-buffer (cdr (assoc ':buffer source-or-destination))) + (set-buffer (idd-get-buffer source-or-destination)) (goto-char (car (cdr (assoc ':region-active source-or-destination)))) (set-mark (cdr (cdr (assoc ':region-active source-or-destination)))) - (activate-region)) + (if (adapt-xemacsp) + (activate-region)) + ) ;;; Specification type functions for the list `idd-actions' @@ -349,7 +388,7 @@ "Checks, if the major mode of SOURCE-OR-DESTINATION is MODE. It returns 1, if that is t and nil otherwise." (save-excursion - (set-buffer (cdr (assoc ':buffer source-or-destination))) + (set-buffer (idd-get-buffer source-or-destination)) (if (eq major-mode mode) 1 nil))) @@ -358,7 +397,7 @@ "Checks, if the variable named VARIABLE isn't t in SOURCE-OR-DESTINATION. It returns 1, if this is t." (save-excursion - (set-buffer (cdr (assoc ':buffer source-or-destination))) + (set-buffer (idd-get-buffer source-or-destination)) (if (eval variable) 1 nil))) @@ -398,7 +437,7 @@ (defun idd-get-local-filename (source-or-destination) "Returns the filename of a local file specified by SOURCE-OR-DESTINATION." - (buffer-file-name (cdr (assoc ':buffer source-or-destination)))) + (buffer-file-name (idd-get-buffer source-or-destination))) (defun idd-get-directory-of-buffer (source-or-destination) "Returns the directory name assigned to the SOURCE-OR-DESTINATION buffer." @@ -421,7 +460,7 @@ "Checks, if SOURCE-OR-DESTINATION has a buffer called BUFFER-NAME. It returns 1 if this is the case or nil otherwise." (if (string= buffer-name - (buffer-name (cdr (assoc ':buffer source-or-destination)))) + (buffer-name (idd-get-buffer source-or-destination))) 1 nil)) @@ -528,8 +567,10 @@ (setq idd-help-start-extent (make-extent start (point))) (set-extent-mouse-face idd-help-start-extent 'highlight) (set-extent-face idd-help-start-extent 'bold) - (set-extent-keymap idd-help-start-extent - idd-help-start-action-keymap) + (if (adapt-xemacsp) + (set-extent-keymap idd-help-start-extent + idd-help-start-action-keymap) + ) ) (insert "'\n") (insert (format "Source buffer : `%s'\n" @@ -573,7 +614,12 @@ (setq source-event (next-command-event nil drag-and-drop-message)) (if (button-press-event-p source-event) - (idd-mouse-drag-and-drop source-event) + (progn + (when (and (adapt-emacs19p) + (mouse-event-p source-event) + (eq idd-drag-and-drop-mouse-binding-type 'click)) + (while (not (button-release-event-p (next-command-event))))) + (idd-mouse-drag-and-drop source-event)) (message "Wrong event! Exit drag and drop.")))) (defun idd-help-mouse-drag-and-drop (source-event) @@ -641,7 +687,9 @@ (setq destination-event (next-command-event nil drag-and-drop-message)) (message "") - (cond ((button-release-event-p destination-event) + (cond ((or (button-release-event-p destination-event) + (and (adapt-emacs19p) + (button-drag-event-p destination-event))) (setq destination (idd-get-source-or-destination-alist destination-event)) (idd-set-point destination) @@ -667,8 +715,8 @@ (destination nil) (destination-event)) (message drag-and-drop-message) - (if (and (adapt-xemacsp) (mouse-event-p source-event)) - (dispatch-event (next-command-event))) + (when (and (adapt-xemacsp) (mouse-event-p source-event)) + (dispatch-event (next-command-event))) (setq destination-event (next-command-event nil drag-and-drop-message)) (message "") @@ -677,8 +725,8 @@ (setq destination (idd-get-source-or-destination-alist destination-event)) (idd-set-point destination) - (if (adapt-emacs19p) - (while (not (button-release-event-p (next-command-event))))) +; (when (adapt-emacs19p) +; (while (not (button-release-event-p (next-command-event))))) (if idd-help-instead-of-action (idd-display-help-about-action (idd-get-action source destination @@ -702,7 +750,13 @@ (idd-call-action (idd-get-action source destination idd-actions) source destination))) - (t (message "Wrong event! Exit drag and drop.") nil)))) + (t (message "Wrong event! Exit drag and drop.") nil)) + + ;; Useful for debugging + ;; (setq idd-last-source source) + ;; (setq idd-last-destination destination) + + )) (defun idd-help-start-action (event) "Used to start the action from the help buffer."
--- a/lisp/hm--html-menus/tmpl-minor-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/hm--html-menus/tmpl-minor-mode.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,6 +1,6 @@ ;;; tmpl-minor-mode.el --- Template Minor Mode ;;; -;;; $Id: tmpl-minor-mode.el,v 1.4 1997/03/28 02:28:43 steve Exp $ +;;; $Id: tmpl-minor-mode.el,v 1.5 1997/05/29 23:49:44 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -88,7 +88,9 @@ (defvar tmpl-history-variable-name 'tmpl-history-variable "The name of the history variable. The history variable is used by the commands `tmpl-insert-template-file' -and `tmpl-insert-template-file-from-fixed-dirs'.") +and `tmpl-insert-template-file-from-fixed-dirs'. + +Not used in the Emacs 19.") (defvar tmpl-history-variable nil "The history variable. See also `tmpl-history-variable-name'.") @@ -435,11 +437,16 @@ ((file-accessible-directory-p (car template-dirs)) (append (mapcar '(lambda (file) (cons (file-name-nondirectory file) file)) - (directory-files (car template-dirs) - t - filter-regexp - nil - t)) + (if (adapt-xemacsp) + (directory-files (car template-dirs) + t + filter-regexp + nil + t) + (directory-files (car template-dirs) + t + filter-regexp + nil))) (tmpl-get-table-with-template-files (cdr template-dirs) filter-regexp))) (t (tmpl-get-table-with-template-files (cdr template-dirs) @@ -557,13 +564,20 @@ (list (let* ((default-directory (or (car tmpl-template-dir-list) default-directory)) - (filename (read-file-name "Templatefile: " - (if (listp tmpl-template-dir-list) - (car tmpl-template-dir-list)) - nil - t - nil - tmpl-history-variable-name)) + (filename (if (adapt-xemacsp) + (read-file-name "Templatefile: " + (if (listp tmpl-template-dir-list) + (car tmpl-template-dir-list)) + nil + t + nil + tmpl-history-variable-name) + (read-file-name "Templatefile: " + (if (listp tmpl-template-dir-list) + (car tmpl-template-dir-list)) + nil + t + nil))) (directory (expand-file-name (file-name-directory filename)))) (when (and (not (member* directory tmpl-template-dir-list @@ -592,6 +606,25 @@ ; (if automatic-expand ; (tmpl-expand-templates-in-buffer))) +;;; General utilities, which are useful in a template file +(defun tmpl-util-indent-region (begin end) + "Indents a region acording to the mode." + (interactive "r") + (save-excursion + (goto-char end) + (let ((number-of-lines (count-lines begin (point))) + (line 0)) + (goto-char begin) + (while (< line number-of-lines) + (setq line (1+ line)) + (indent-according-to-mode) + (forward-line))))) + +(defun tmpl-util-indent-buffer () + "Indents the whole buffer acording to the mode." + (interactive) + (tmpl-util-indent-region (point-min) (point-max))) + ;;; Definition of the minor mode tmpl
--- a/lisp/iso/iso-acc.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/iso/iso-acc.el Mon Aug 13 09:38:25 2007 +0200 @@ -2,12 +2,11 @@ ;; Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc. -;; Author: Johan Vromans <jv@mh.nl> +;; Author: Johan Vromans ;; Maintainer: Alexandre Oliva <oliva@dcc.unicamp.br> ;; Keywords: i18n -;; Adapted to XEmacs 19.14 by Alexandre Oliva <oliva@dcc.unicamp.br> -;; $Revision: 1.4 $ -;; $Date: 1997/05/10 23:20:58 $ +;; $Revision: 1.5 $ +;; $Date: 1997/05/29 23:49:45 $ ;; This file is part of GNU Emacs. @@ -31,7 +30,7 @@ ;; Function `iso-accents-mode' activates a minor mode in which ;; typewriter "dead keys" are emulated. The purpose of this emulation ;; is to provide a simple means for inserting accented characters -;; according to the ISO-8859-1 character set. +;; according to the ISO-8859-1 and other character sets. ;; ;; In `iso-accents-mode', pseudo accent characters are used to ;; introduce accented keys. The pseudo-accent characters are: @@ -42,9 +41,9 @@ ;; ^ (caret) -> circumflex ;; ~ (tilde) -> tilde over the character ;; / (slash) -> slash through the character +;; Also: /A is A-with-ring and /E is AE ligature. ;; . (dot) -> dot over the character -;; , (cedilla) -> cedilla under the character (except on default mode) -;; Also: /A is A-with-ring and /E is AE ligature. +;; , (cedilla) -> cedilla under the character (some languages only) ;; ;; The action taken depends on the key that follows the pseudo accent. ;; In general: @@ -69,21 +68,28 @@ (provide 'iso-acc) -;; needed for compatibility with XEmacs 19.14 +;; multiple Emacs versions compatibility section + +(if (fboundp 'make-char) + (defalias 'iso-make-char 'make-char) + (defun iso-make-char (charset) 128)) + (if (fboundp 'read-event) (defalias 'iso-read-event 'read-event) (defun iso-read-event () (event-key (next-command-event)))) (if (fboundp 'character-to-event) - (defun iso-char-to-event (ch) - "returns an event containing the given character" - (character-to-event (list ch))) - (defun iso-char-to-event (ch) - "returns the character itself" - ch)) + (progn + (defun iso-char-list-to-event (l) + "returns an event containing the given list of characters" + (character-to-event l)) + (defun iso-char-to-event (ch) + "returns an event containing the given character" + (iso-char-list-to-event (list ch)))) + (defalias 'iso-char-to-event 'identity) + (defalias 'iso-char-list-to-event 'identity)) -;; needed for compatibility with XEmacs 19.14 and GNU Emacs 19.30 (if (fboundp 'this-single-command-keys) () (if (string-match "Lucid" (version)) (defun this-single-command-keys () @@ -91,10 +97,63 @@ (this-command-keys)) (defun this-single-command-keys () (this-command-keys)))) -;; end of compatibility modules +(defvar iso-accents-insert-offset + (if (boundp 'nonascii-insert-offset) + nonascii-insert-offset + 0) + "*Offset added by ISO Accents mode to character codes 0200 and above.") + +;; end of compatibility section (defvar iso-languages - '(("portuguese" + '(("catalan" + ;; Note this includes some extra characters used in Spanish, + ;; on the idea that someone who uses Catalan is likely to use Spanish + ;; as well. + (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332) + (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372) + (?\ . ?')) + (?` (?A . ?\300) (?E . ?\310) (?O . ?\322) + (?a . ?\340) (?e . ?\350) (?o . ?\362) (?\ . ?`)) + (?\" (?I . ?\317) (?U . ?\334) (?i . ?\357) (?u . ?\374) (?\ . ?\")) + (?~ (?C . ?\307) (?N . ?\321) (?c . ?\347) (?n . ?\361) + (?> . ?\273) (?< . ?\253) (?! . ?\241) (?? . ?\277) + (?\ . ?~))) + + ("esperanto" + (?^ (?H . ?\246) (?J . ?\254) (?h . ?\266) (?j . ?\274) (?C . ?\306) + (?G . ?\330) (?S . ?\336) (?c . ?\346) (?g . ?\370) (?s . ?\376) + (?^ . ?^) (?\ . ?^)) + (?~ (?U . ?\335) (?u . ?\375) (?\ . ?~))) + + ("french" + (?' (?E . ?\311) (?C . ?\307) + (?e . ?\351) (?c . ?\347) + (?\ . ?') (space . ?')) + (?` (?A . ?\300) (?E . ?\310) (?U . ?\331) + (?a . ?\340) (?e . ?\350) (?u . ?\371) + (?\ . ?`) (space . ?`)) + (?^ (?A . ?\302) (?E . ?\312) (?I . ?\316) (?O . ?\324) (?U . ?\333) + (?a . ?\342) (?e . ?\352) (?i . ?\356) (?o . ?\364) (?u . ?\373) + (?\ . ?^) (space . ?^)) + (?\" (?E . ?\313) (?I . ?\317) + (?e . ?\353) (?i . ?\357) + (?\ . ?\") (space . ?\")) + (?~ (?< . ?\253) (?> . ?\273) + (?C . ?\307) (?c . ?\347) + (?\ . ?~) (space . ?~)) + (?, (?c . ?\347) (?C . ?\307) (?, . ?,))) + + ("german" + (?\" (?A . ?\304) (?O . ?\326) (?U . ?\334) + (?a . ?\344) (?o . ?\366) (?u . ?\374) (?s . ?\337) (?\ . ?\"))) + + ("irish" + (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332) + (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372) + (?\ . ?') (space . ?'))) + + ("portuguese" (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332) (?C . ?\307) (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372) (?c . ?\347) (?\ . ?') (space . ?')) @@ -102,83 +161,19 @@ (?^ (?A . ?\302) (?E . ?\312) (?O . ?\324) (?a . ?\342) (?e . ?\352) (?o . ?\364) (?\ . ?^) (space . ?^)) (?\" (?U . ?\334) (?u . ?\374) (?\ . ?\") (space . ?\")) - (?\~ (?A . ?\303) (?O . ?\325) (?a . ?\343) (?o . ?\365) (?\ . ?\~) - (space . ?\~)) - (?, (?c . ?\347) (?C . ?\307))) - - ("irish" + (?~ (?A . ?\303) (?O . ?\325) + (?a . ?\343) (?o . ?\365) + (?\ . ?~) (space . ?~)) + (?, (?c . ?\347) (?C . ?\307) (?, . ?,))) + + ("spanish" (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332) (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372) - (?\ . ?') (space . ?'))) - - ("french" - (?' (?E . ?\311) (?C . ?\307) (?e . ?\351) (?c . ?\347) (?\ . ?') - (space . ?')) - (?` (?A . ?\300) (?E . ?\310) (?a . ?\340) (?e . ?\350) (?\ . ?`) - (space . ?`)) - (?^ (?A . ?\302) (?E . ?\312) (?I . ?\316) (?O . ?\324) (?U . ?\333) - (?a . ?\342) (?e . ?\352) (?i . ?\356) (?o . ?\364) (?u . ?\373) - (?\ . ?^) (space . ?^)) - (?\" (?E . ?\313) (?I . ?\317) - (?e . ?\353) (?i . ?\357) (?\ . ?\") (space . ?\")) - (?\~ (?< . ?\253) (?> . ?\273) (?C . ?\307) (?c . ?\347) (?\ . ?\~) - (space . ?\~)) - (?, (?c . ?\347) (?C . ?\307))) + (?\ . ?')) + (?\" (?U . ?\334) (?u . ?\374) (?\ . ?\")) + (?~ (?N . ?\321) (?n . ?\361) (?> . ?\273) (?< . ?\253) (?! . ?\241) + (?? . ?\277) (?\ . ?~))) - ;;; ISO-8859-3, developed by D. Dale Gulledge <ddg@cci.com> - ("latin-3" - (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) - (?U . ?\332) (?a . ?\341) (?e . ?\351) (?i . ?\355) - (?o . ?\363) (?u . ?\372) (?\ . ?') (space . ?')) - (?. (?C . ?\305) (?G . ?\325) (?I . ?\251) (?Z . ?\257) - (?c . ?\345) (?g . ?\365) (?z . ?\277)) - (?\" (?A . ?\304) (?E . ?\313) (?I . ?\317) (?O . ?\326) - (?U . ?\334) (?a . ?\344) (?e . ?\353) (?i . ?\357) - (?o ?\366) (?u ?\374) (?\ . ?\") (space . ?\")) - (?\/ (?\/ . ?\260) (?\ . ?/) (space . ?/)) - (?\~ (?C . ?\307) (?G . ?\253) (?N . ?\321) (?S . ?\252) - (?U . ?\335) (?\~ . ?\270) (?c . ?\347) (?g . ?\273) - (?h . ?\261) (?n . ?\361) (?u . ?\375) - (?\ . ?~) (space . ?~)) - (?^ (?A . ?\302) (?C . ?\306) (?E . ?\312) (?G . ?\330) - (?H . ?\246) (?I . ?\316) (?J . ?\254) (?O . ?\324) - (?S . ?\336) (?U . ?\333) (?a . ?\342) (?c . ?\346) - (?e . ?\352) (?g . ?\370) (?h . ?\266) (?i . ?\356) - (?j . ?\274) (?o . ?\364) (?s . ?\376) (?u . ?\373) - (?\ . ?^) (space . \^)) - (?` (?A . ?\300) (?E . ?\310) (?I . ?\314) (?O . ?\322) - (?U . ?\331) (?a . ?\340) (?e . ?\350) (?i . ?\354) - (?o . ?\362) (?u . ?\371) (?\ . ?`) (space . ?`))) - - ;;; Thanks to Tudor <tudor@cs.unh.edu> for some fixes and additions. - ("latin-2" - (?' (?A . ?\301) (?C . ?\306) (?D . ?\320) (?E . ?\311) (?I . ?\315) - (?L . ?\305) (?N . ?\321) (?O . ?\323) (?R . ?\300) (?S . ?\246) - (?U . ?\332) (?Y . ?\335) (?Z . ?\254) (?a . ?\341) (?c . ?\346) - (?d . ?\360) (?e . ?\351) (?i . ?\355) (?l . ?\345) (?n . ?\361) - (?o . ?\363) (?r . ?\340) (?s . ?\266) (?u . ?\372) (?y . ?\375) - (?z . ?\274) (?' . ?\264) (?\ . ?') (space . ?')) - (?` (?A . ?\241) (?C . ?\307) (?E . ?\312) (?L . ?\243) (?S . ?\252) - (?T . ?\336) (?Z . ?\257) (?a . ?\261) (?l . ?\263) (?c . ?\347) - (?e . ?\352) (?s . ?\272) (?t . ?\376) (?z . ?\277) (?` . ?\252) - (?. . ?\377) (?\ . ?`) (space . ?`)) - (?^ (?A . ?\302) (?I . ?\316) (?O . ?\324) - (?a . ?\342) (?i . ?\356) (?o . ?\364) - (?^ . ?^) ; no special code? - (?\ . ?^) (space . ?^)) - (?\" (?A . ?\304) (?E . ?\313) (?O . ?\326) (?U . ?\334) (?a . ?\344) - (?e . ?\353) (?o . ?\366) (?s . ?\337) (?u . ?\374) (?\" . ?\250) - (?\ . ?\") (space . ?\")) - (?\~ (?A . ?\303) (?C . ?\310) (?D . ?\317) (?L . ?\245) (?N . ?\322) - (?O . ?\325) (?R . ?\330) (?S . ?\251) (?T . ?\253) (?U . ?\333) - (?Z . ?\256) (?a . ?\343) (?c . ?\350) (?d . ?\357) (?l . ?\265) - (?n . ?\362) (?o . ?\365) (?r . ?\370) (?s . ?\271) (?t . ?\273) - (?u . ?\373) (?z . ?\276) - (?v . ?\242) ; v accent - (?\~ . ?\242) ; v accent - (?\. . ?\270) ; cedilla accent - (?\ . ?\~) (space . ?\~))) - ("latin-1" (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332) (?Y . ?\335) (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) @@ -192,23 +187,90 @@ (?\" (?A . ?\304) (?E . ?\313) (?I . ?\317) (?O . ?\326) (?U . ?\334) (?a . ?\344) (?e . ?\353) (?i . ?\357) (?o . ?\366) (?s . ?\337) (?u . ?\374) (?y . ?\377) (?\" . ?\250) (?\ . ?\") (space . ?\")) - (?\~ (?A . ?\303) (?C . ?\307) (?D . ?\320) (?N . ?\321) (?O . ?\325) - (?T . ?\336) (?a . ?\343) (?c . ?\347) (?d . ?\360) (?n . ?\361) - (?o . ?\365) (?t . ?\376) (?> . ?\273) (?< . ?\253) (?\~ . ?\270) - (?! . ?\241) (?? . ?\277) - (?\ . ?\~) (space . ?\~)) - (?\/ (?A . ?\305) (?E . ?\306) (?O . ?\330) (?a . ?\345) (?e . ?\346) - (?o . ?\370) (?\/ . ?\260) (?\ . ?\/) (space . ?\/)))) + (?~ (?A . ?\303) (?C . ?\307) (?D . ?\320) (?N . ?\321) (?O . ?\325) + (?T . ?\336) (?a . ?\343) (?c . ?\347) (?d . ?\360) (?n . ?\361) + (?o . ?\365) (?t . ?\376) (?> . ?\273) (?< . ?\253) (?~ . ?\270) + (?! . ?\241) (?? . ?\277) + (?\ . ?~) (space . ?~)) + (?/ (?A . ?\305) (?E . ?\306) (?O . ?\330) (?a . ?\345) (?e . ?\346) + (?o . ?\370) (?/ . ?\260) (?\ . ?/) (space . ?/))) + + ("latin-2" latin-iso8859-2 + (?' (?A . ?\301) (?C . ?\306) (?D . ?\320) (?E . ?\311) (?I . ?\315) + (?L . ?\305) (?N . ?\321) (?O . ?\323) (?R . ?\300) (?S . ?\246) + (?U . ?\332) (?Y . ?\335) (?Z . ?\254) + (?a . ?\341) (?c . ?\346) (?d . ?\360) (?e . ?\351) (?i . ?\355) + (?l . ?\345) (?n . ?\361) (?o . ?\363) (?r . ?\340) (?s . ?\266) + (?u . ?\372) (?y . ?\375) (?z . ?\274) + (?' . ?\264) (?\ . ?') (space . ?')) + (?` (?A . ?\241) (?C . ?\307) (?E . ?\312) (?L . ?\243) (?S . ?\252) + (?T . ?\336) (?Z . ?\257) + (?a . ?\261) (?l . ?\263) (?c . ?\347) (?e . ?\352) (?s . ?\272) + (?t . ?\376) (?z . ?\277) + (?` . ?\252) + (?. . ?\377) (?\ . ?`) (space . ?`)) + (?^ (?A . ?\302) (?I . ?\316) (?O . ?\324) + (?a . ?\342) (?i . ?\356) (?o . ?\364) + (?^ . ?^) ; no special code? + (?\ . ?^) (space . ?^)) + (?\" (?A . ?\304) (?E . ?\313) (?O . ?\326) (?U . ?\334) + (?a . ?\344) (?e . ?\353) (?o . ?\366) (?s . ?\337) (?u . ?\374) + (?\" . ?\250) + (?\ . ?\") (space . ?\")) + (?~ (?A . ?\303) (?C . ?\310) (?D . ?\317) (?L . ?\245) (?N . ?\322) + (?O . ?\325) (?R . ?\330) (?S . ?\251) (?T . ?\253) (?U . ?\333) + (?Z . ?\256) + (?a . ?\343) (?c . ?\350) (?d . ?\357) (?l . ?\265) (?n . ?\362) + (?o . ?\365) (?r . ?\370) (?s . ?\271) (?t . ?\273) (?u . ?\373) + (?z . ?\276) + (?v . ?\242) ; v accent + (?~ . ?\242) ; v accent + (?. . ?\270) ; cedilla accent + (?\ . ?~) (space . ?~))) + + ("latin-3" latin-iso8859-3 + (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332) + (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) (?u . ?\372) + (?' . ?\264) (?\ . ?') (space . ?')) + (?` (?A . ?\300) (?E . ?\310) (?I . ?\314) (?O . ?\322) (?U . ?\331) + (?a . ?\340) (?e . ?\350) (?i . ?\354) (?o . ?\362) (?u . ?\371) + (?` . ?`) (?\ . ?`) (space . ?`)) + (?^ (?A . ?\302) (?C . ?\306) (?E . ?\312) (?G . ?\330) + (?H . ?\246) (?I . ?\316) (?J . ?\254) (?O . ?\324) + (?S . ?\336) (?U . ?\333) + (?a . ?\342) (?c . ?\346) (?e . ?\352) (?g . ?\370) (?h . ?\266) + (?i . ?\356) (?j . ?\274) (?o . ?\364) (?s . ?\376) (?u . ?\373) + (?^ . ?^) (?\ . ?^) (space . \^)) + (?\" (?A . ?\304) (?E . ?\313) (?I . ?\317) (?O . ?\326) (?U . ?\334) + (?a . ?\344) (?e . ?\353) (?i . ?\357) (?o . ?\366) (?u . ?\374) + (?s . ?\337) + (?\" . ?\250) (?\ . ?\") (space . ?\")) + (?. (?C . ?\305) (?G . ?\325) (?I . ?\251) (?Z . ?\257) + (?c . ?\345) (?g . ?\365) (?z . ?\277)) + (?~ (?A . ?\303) (?C . ?\307) (?D . ?\320) (?G . ?\253) (?N . ?\321) + (?O . ?\325) (?S . ?\252) (?U . ?\335) + (?a . ?\343) (?c . ?\347) (?d . ?\360) (?g . ?\273) (?n . ?\361) + (?o . ?\365) (?s . ?\252) (?u . ?\375) + (?h . ?\261) (?$ . ?\245) (?` . ?\242) + (?~ . ?\270) (?\ . ?~) (space . ?~)) + (?/ (?C . ?\305) (?G . ?\325) (?H . ?\241) (?I . ?\251) (?Z . ?\257) + (?c . ?\345) (?g . ?\365) (?h . ?\261) (?i . ?\271) (?z . ?\277) + (?r . ?\256) (?. . ?\377) (?# . ?\243) (?$ . ?\244) + (?/ . ?\260) (?\ . ?/) (space . ?/))) + ) "List of language-specific customizations for the ISO Accents mode. Each element of the list is of the form - (LANGUAGE + (LANGUAGE [CHARSET] (PSEUDO-ACCENT MAPPINGS) (PSEUDO-ACCENT MAPPINGS) ...) LANGUAGE is a string naming the language. +CHARSET (which may be omitted) is the symbol name + of the character set used in this language. + If CHARSET is omitted, latin-iso8859-1 is the default. PSEUDO-ACCENT is a char specifying an accent key. MAPPINGS are cons cells of the form (CHAR . ISO-CHAR). @@ -268,9 +330,16 @@ (entry (cdr (assq second-char list)))) (if entry ;; Found it: return the mapped char - (vector (iso-char-to-event entry)) + (vector + (iso-char-to-event + (if (and (boundp 'enable-multibyte-characters) + enable-multibyte-characters + (>= entry ?\200)) + (+ iso-accents-insert-offset entry) + entry))) ;; Otherwise, advance and schedule the second key for execution. - (setq unread-command-events (cons (iso-char-to-event second-char) + (setq unread-command-events (cons (iso-char-list-to-event + (list second-char)) unread-command-events)) (vector (iso-char-to-event first-char))))) @@ -279,8 +348,8 @@ ;; If so, uncomment the next four lines. ;; (or (assq 'iso-accents-mode minor-mode-alist) ;; (setq minor-mode-alist -;; (append minor-mode-alist -;; '((iso-accents-mode " ISO-Acc"))))) +;; (append minor-mode-alist +;; '((iso-accents-mode " ISO-Acc"))))) ;;;###autoload (defun iso-accents-mode (&optional arg) @@ -323,12 +392,19 @@ It selects the customization based on the specifications in the `iso-languages' variable." (interactive (list (completing-read "Language: " iso-languages nil t))) - (let ((table (assoc language iso-languages)) + (let ((table (cdr (assoc language iso-languages))) tail) (if (not table) - (error "Unknown language '%s'" language) + (error "Unknown language `%s'" language) + (setq iso-accents-insert-offset (- (iso-make-char + (if (symbolp (car table)) + (car table) + 'latin-iso8859-1)) + 128)) + (if (symbolp (car table)) + (setq table (cdr table))) (setq iso-language language - iso-accents-list (cdr table)) + iso-accents-list table) (if key-translation-map (substitute-key-definition 'iso-accents-accent-key nil key-translation-map) @@ -421,6 +497,8 @@ (set-buffer (window-buffer minibuffer-scroll-window)) iso-accents-mode))) -(add-hook 'minibuf-setup-hook 'iso-acc-minibuf-setup) +(if (boundp 'minibuffer-setup-hook) + (add-hook 'minibuffer-setup-hook 'iso-acc-minibuf-setup) + (add-hook 'minibuf-setup-hook 'iso-acc-minibuf-setup)) ;;; iso-acc.el ends here
--- a/lisp/modes/ada-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/ada-mode.el Mon Aug 13 09:38:25 2007 +0200 @@ -3308,8 +3308,8 @@ ;; Casing (define-key ada-mode-map "\C-c\C-r" 'ada-adjust-case-region) (define-key ada-mode-map "\C-c\C-b" 'ada-adjust-case-buffer) - - (define-key ada-mode-map "\177" 'backward-delete-char-untabify) +;; GDF - don't rebind the DEL key +;; (define-key ada-mode-map "\177" 'backward-delete-char-untabify) ;; Use predefined function of emacs19 for comments (RE) (define-key ada-mode-map "\C-c;" 'comment-region)
--- a/lisp/modes/cc-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/cc-mode.el Mon Aug 13 09:38:25 2007 +0200 @@ -1035,7 +1035,8 @@ (define-key c-mode-map "\C-c\C-p" 'c-backward-conditional) (define-key c-mode-map "\C-c\C-u" 'c-up-conditional) (define-key c-mode-map "\t" 'c-indent-command) - (define-key c-mode-map "\177" 'c-electric-delete) +;; GDF - don't rebind the DEL key +;; (define-key c-mode-map "\177" 'c-electric-delete) ;; these are new keybindings, with no counterpart to BOCM (define-key c-mode-map "," 'c-electric-semi&comma) (define-key c-mode-map "*" 'c-electric-star) @@ -1427,6 +1428,8 @@ \\{c-mode-map}" (interactive) (kill-all-local-variables) + (make-local-hook 'backspace-or-delete-hook) + (add-hook 'backspace-or-delete-hook 'c-electric-delete nil t) (set-syntax-table c-mode-syntax-table) (setq major-mode 'c-mode mode-name "C" @@ -1953,8 +1956,8 @@ (skip-chars-backward " \t\n") (if (/= (point) here) (delete-region (point) here) - (funcall c-delete-function 1) - )))) + (funcall c-delete-function 1)))) + t) (defun c-electric-pound (arg) "Electric pound (`#') insertion.
--- a/lisp/modes/cperl-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/cperl-mode.el Mon Aug 13 09:38:25 2007 +0200 @@ -32,7 +32,7 @@ ;;; Corrections made by Ilya Zakharevich ilya@math.mps.ohio-state.edu ;;; XEmacs changes by Peter Arius arius@informatik.uni-erlangen.de -;; $Id: cperl-mode.el,v 1.6 1997/05/23 01:36:22 steve Exp $ +;; $Id: cperl-mode.el,v 1.7 1997/05/29 23:49:50 steve Exp $ ;;; To use this mode put the following into your .emacs file: @@ -713,7 +713,8 @@ (cperl-define-key "\e\C-q" 'cperl-indent-exp) ; Usually not bound ;;(cperl-define-key "\M-q" 'cperl-fill-paragraph) ;;(cperl-define-key "\e;" 'cperl-indent-for-comment) - (cperl-define-key "\177" 'cperl-electric-backspace) +;; GDF - don't clobber the DEL binding... +;; (cperl-define-key "\177" 'cperl-electric-backspace) (cperl-define-key "\t" 'cperl-indent-command) ;; don't clobber the backspace binding: (cperl-define-key "\C-hf" 'cperl-info-on-command [(control h) f]) @@ -991,6 +992,8 @@ with no args." (interactive) (kill-all-local-variables) + (make-local-hook 'backspace-or-delete-hook) + (add-hook 'backspace-or-delete-hook 'cperl-electric-backspace nil t) ;;(if cperl-hairy ;; (progn ;; (cperl-set 'cperl-font-lock cperl-hairy) @@ -1548,7 +1551,7 @@ (defun cperl-electric-backspace (arg) "Backspace-untabify, or remove the whitespace inserted by an electric key." - (interactive "p") + (interactive "*P") (if (and cperl-auto-newline (memq last-command '(cperl-electric-semi cperl-electric-terminator @@ -1560,7 +1563,8 @@ (setq p (point)) (skip-chars-backward " \t\n") (delete-region (point) p)) - (backward-delete-char-untabify arg))) + (backward-delete-char-untabify (prefix-numeric-value arg))) + t) (defun cperl-inside-parens-p () (condition-case ()
--- a/lisp/modes/eiffel3.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/eiffel3.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,4 +1,4 @@ -;;; $Id: eiffel3.el,v 1.1.1.2 1996/12/21 20:47:49 steve Exp $ +;;; $Id: eiffel3.el,v 1.2 1997/05/29 23:49:51 steve Exp $ ;;;-------------------------------------------------------------------------- ;;; TowerEiffel -- Copyright (c) 1993-1996 Tower Technology Corporation. ;;; All Rights Reserved. @@ -1785,7 +1785,6 @@ (if (and (boundp 'eif-cr-function) eif-cr-function) (define-key eiffel-mode-map "\C-m" eif-cr-function) ) - (define-key eiffel-mode-map "\177" 'backward-delete-char-untabify) (define-key eiffel-mode-map "\M-\C-q" 'eif-indent-construct) (define-key eiffel-mode-map "\M-'" 'eif-feature-quote) (define-key eiffel-mode-map "\M-q" 'eif-fill-paragraph)
--- a/lisp/modes/icon.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/icon.el Mon Aug 13 09:38:25 2007 +0200 @@ -46,7 +46,8 @@ (define-key icon-mode-map "\e\C-a" 'beginning-of-icon-defun) (define-key icon-mode-map "\e\C-e" 'end-of-icon-defun) (define-key icon-mode-map "\e\C-q" 'indent-icon-exp) - (define-key icon-mode-map "\177" 'backward-delete-char-untabify) +;; GDF - Don't rebind the DEL key +;; (define-key icon-mode-map "\177" 'backward-delete-char-untabify) (define-key icon-mode-map "\t" 'icon-indent-command)) (defvar icon-mode-syntax-table nil
--- a/lisp/modes/lisp-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/lisp-mode.el Mon Aug 13 09:38:25 2007 +0200 @@ -202,8 +202,10 @@ ;; XEmacs changes (set-keymap-name shared-lisp-mode-map 'shared-lisp-mode-map) (define-key shared-lisp-mode-map "\M-;" 'lisp-indent-for-comment) - (define-key shared-lisp-mode-map "\e\C-q" 'indent-sexp) - (define-key shared-lisp-mode-map "\177" 'backward-delete-char-untabify)) +;; GDF - don't rebind the DEL key +;; (define-key shared-lisp-mode-map "\177" 'backward-delete-char-untabify) + + (define-key shared-lisp-mode-map "\e\C-q" 'indent-sexp)) (defvar emacs-lisp-mode-map () "Keymap for Emacs Lisp mode.
--- a/lisp/modes/old-c++-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2870 +0,0 @@ -;;; c++-mode.el --- major mode for editing C++ (and C) code - -;; Author: 1992 Barry A. Warsaw, Century Computing Inc. <bwarsaw@cen.com> -;; 1987 Dave Detlefs and Stewart Clamen -;; 1985 Richard M. Stallman -;; Maintainer: c++-mode-help@anthem.nlm.nih.gov -;; Created: a long, long, time ago. adapted from the original c-mode.el -;; Version: 2.353 -;; Last Modified: 1993/06/23 13:58:52 -;; Keywords: c - -;; Copyright (C) 1992, 1993 Free Software Foundation, Inc. - -;; 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. - -;; Introduction -;; ============ -;; Do a "C-h m" in a c++-mode buffer for more information on -;; customizing c++-mode. To submit bug reports hit "C-c C-b" in a -;; c++-mode buffer. This runs the command c++-submit-bug-report and -;; automatically sets up the mail buffer with all the necessary -;; information. If you have other questions contact me at the -;; following address: c++-mode-help@anthem.nlm.nih.gov. Please don't -;; send bug reports to my personal account, I may not get it for a -;; long time. - -;; Notes for Novice Users -;; ====================== -;; c++-mode facilitates editing of C++ code by automatically handling -;; the indentation of lines of code in a manner very similar to c-mode -;; as distributed with GNU Emacs. Refer to the GNU Emacs manual, -;; chapter 21 for more information on "Editing Programs". In fact, -;; c++-mode (through its companion mode entry point c++-c-mode) can -;; also be used to edit both K&R and ANSI C code! -;; -;; To use c++-mode, add the following to your .emacs file. This -;; assumes you will use .cc or .C extensions for your C++ source: -;; -;; (autoload 'c++-mode "c++-mode" "C++ Editing Mode" t) -;; (autoload 'c++-c-mode "c++-mode" "C Editing Mode" t) -;; (setq auto-mode-alist -;; (append '(("\\.C$" . c++-mode) -;; ("\\.cc$" . c++-mode) -;; ("\\.c$" . c++-c-mode) ; to edit C code -;; ("\\.h$" . c++-c-mode) ; to edit C code -;; ) auto-mode-alist)) -;; -;; If you want to use the default c-mode for editing C code, then just -;; omit the lines marked "to edit C code". -;; -;; Finally, you may want to customize certain c++-mode variables. The -;; best place to do this is in the mode hook variable called -;; c++-mode-hook. Again, see the Emacs manual, chapter 21 for more -;; information. - -;; Important Note about Escapes in Comments, and Performance -;; ========================================================= -;; You may notice that certain characters, when typed in comment -;; regions, get escaped with a backslash. This is a workaround for -;; bugs in Emacs' syntax parsing algorithms. In brief, syntax parsing -;; in Emacs 18 and derivatives is broken because syntax tables are not -;; rich enough to support more than 1 comment style per mode (as C++ -;; requires). The result is that Emacs will sometimes choke on -;; unbalanced parentheses and single quotes in comments. Please do a -;; "C-h v c++-untame-characters" for more information. -;; -;; This problem affect both the accuracy and performance of c++-mode -;; because some parsing must be performed in Emacs lisp instead of -;; relying on the C primitives. In general, I've chosen accuracy over -;; performance, but have worked hard to give moderately acceptable -;; speed in all but the most uncommon situations. You will most likely -;; notice c++-mode slowing when you're editing a file of preprocessor -;; commands, or inside long functions or class definitions. -;; Optimization is an ongoing concern, but the real solution is to fix -;; Emacs. -;; -;; As of release 19.4, Lucid Emacs is distributed with the fixes in -;; place, and c++-mode will automatically take advantage of them so -;; none of the above applies to you. Similar patches will be part of -;; FSF GNU Emacs 19. Some patches for GNU Emacs 18 have been released -;; on the beta site, but they are unsupported. Email for more -;; information. - -;; Beta Testers Mailing List -;; ========================= -;; Want to be a c++-mode victim, er, beta-tester? Send add/drop -;; requests to c++-mode-victims-request@anthem.nlm.nih.gov. -;; Discussions go to c++-mode-victims@anthem.nlm.nih.gov, but bug -;; reports and such should still be sent to c++-mode-help only. -;; -;; Many, many thanks go out to all the folks on the beta test list. -;; Without their patience, testing, insight, and code contribution, -;; c++-mode.el would be a far inferior package. - -;; Getting c++-mode.el -;; =================== -;; The latest public release version of this file should always be -;; available for anonymous ftp on the Emacs lisp archive machine. The -;; path to the file is: -;; -;; archive.cis.ohio-state.edu:pub/gnu/emacs/elisp-archive/modes/c++-mode.el.Z -;; -;; For those of you without anon-ftp access, you can use the DEC's -;; ftpmail'er at the address ftpmail@decwrl.dec.com. Send the -;; following message in the body of your mail to that address to get -;; c++-mode: -;; -;; reply <a valid net address back to you> -;; connect archive.cis.ohio-state.edu -;; binary -;; uuencode -;; chdir pub/gnu/emacs/elisp-archive/modes -;; get c++-mode.el.Z -;; -;; or just send the message "help" for more information on ftpmail. -;; Response times will vary with the number of requests in the queue. - -;; LCD Archive Entry: -;; c++-mode|Barry A. Warsaw|c++-mode-help@anthem.nlm.nih.gov -;; |Mode for editing C++, and ANSI/K&R C code (was Detlefs' c++-mode.el) -;; |1993/06/23 13:58:52|2.353| - -;;; Code: - -;; some people may not have c-mode loaded in by default. c++-mode.el -;; unfortunately still depends on distrib c-mode. c-mode doesn't -;; provide itself so this hack is best known way to ensure its loaded -(or (fboundp 'c-mode) - (load "c-mode" nil t)) - - -;; ====================================================================== -;; user definable variables -;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - -(defconst c++-emacs-features - (let ((mse-spec 'no-dual-comments) - (scanner 'v18)) - ;; vanilla GNU18/Epoch 4 uses default values - (if (= 8 (length (parse-partial-sexp (point) (point)))) - ;; we know we're using v19 style dual-comment specifications. - ;; All Lemacsen use 8-bit modify-syntax-entry flags, as do all - ;; patched FSF19, GNU18, Epoch4's. Only vanilla FSF19 uses - ;; 1-bit flag. Lets be as smart as we can about figuring this - ;; out. - (let ((table (copy-syntax-table))) - (modify-syntax-entry ?a ". 12345678" table) - (if (= (logand (lsh (aref table ?a) -16) 255) 255) - (setq mse-spec '8-bit) - (setq mse-spec '1-bit)) - ;; we also know we're using a quicker, built-in comment - ;; scanner, but we don't know if its old-style or new. - ;; Fortunately we can ask emacs directly - (if (fboundp 'forward-comment) - (setq scanner 'v19) - (setq scanner 'old-v19)))) - ;; now cobble up the necessary list - (list mse-spec scanner)) - "A list of needed features extant in the Emacs you are using. -There are many flavors of Emacs out on the net, each with different -features supporting those needed by c++-mode. Here's the current -known list, along with the values for this variable: - -Vanilla GNU 18/Epoch 4: (no-dual-comments v18) -GNU 18/Epoch 4 (patch1): (8-bit old-v19) -GNU 18/Epoch 4 (patch2): (8-bit v19) -Lemacs 19.4 - 19.7: (8-bit old-v19) -Lemacs 19.8 and over: (8-bit v19) -FSF 19: (1-bit v19) -FSF 19 (patched): (8-bit v19)") - -(defvar c++-mode-abbrev-table nil - "Abbrev table in use in c++-mode buffers.") -(define-abbrev-table 'c++-mode-abbrev-table ()) - -(defvar c++-mode-map () - "Keymap used in c++-mode.") -(if c++-mode-map - () - (setq c++-mode-map (make-sparse-keymap)) - (define-key c++-mode-map "\C-j" 'reindent-then-newline-and-indent) - (define-key c++-mode-map "\C-m" 'newline-and-indent) - (define-key c++-mode-map "{" 'c++-electric-brace) - (define-key c++-mode-map "}" 'c++-electric-brace) - (define-key c++-mode-map ";" 'c++-electric-semi) - (define-key c++-mode-map "#" 'c++-electric-pound) - (define-key c++-mode-map "\e\C-h" 'mark-c-function) - (define-key c++-mode-map "\e\C-q" 'c++-indent-exp) - (define-key c++-mode-map "\t" 'c++-indent-command) - (define-key c++-mode-map "\C-c\C-i" 'c++-insert-header) - (define-key c++-mode-map "\C-c\C-\\" 'c++-macroize-region) - (define-key c++-mode-map "\C-c\C-c" 'c++-comment-region) - (define-key c++-mode-map "\C-c\C-u" 'c++-uncomment-region) - (define-key c++-mode-map "\C-c\C-x" 'c++-match-paren) - (define-key c++-mode-map "\e\C-a" 'c++-beginning-of-defun) - (define-key c++-mode-map "\e\C-e" 'c++-end-of-defun) - (define-key c++-mode-map "\e\C-x" 'c++-indent-defun) - (define-key c++-mode-map "/" 'c++-electric-slash) - (define-key c++-mode-map "*" 'c++-electric-star) - (define-key c++-mode-map ":" 'c++-electric-colon) - (define-key c++-mode-map "\177" 'c++-electric-delete) - (define-key c++-mode-map "\C-c\C-t" 'c++-toggle-auto-hungry-state) - (define-key c++-mode-map "\C-c\C-h" 'c++-toggle-hungry-state) - (define-key c++-mode-map "\C-c\C-a" 'c++-toggle-auto-state) - (if (memq 'v18 c++-emacs-features) - (progn - (define-key c++-mode-map "\C-c'" 'c++-tame-comments) - (define-key c++-mode-map "'" 'c++-tame-insert) - (define-key c++-mode-map "[" 'c++-tame-insert) - (define-key c++-mode-map "]" 'c++-tame-insert) - (define-key c++-mode-map "(" 'c++-tame-insert) - (define-key c++-mode-map ")" 'c++-tame-insert))) - (define-key c++-mode-map "\C-c\C-b" 'c++-submit-bug-report) - (define-key c++-mode-map "\C-c\C-v" 'c++-version) - ;; these are necessary because default forward-sexp and - ;; backward-sexp don't automatically let-bind - ;; parse-sexp-ignore-comments, which is needed for them to work - ;; properly in a C++ buffer. - (define-key c++-mode-map "\e\C-f" 'c++-forward-sexp) - (define-key c++-mode-map "\e\C-b" 'c++-backward-sexp) - ) - -(defvar c++-mode-syntax-table nil - "Syntax table used in c++-mode buffers.") -(defvar c++-c-mode-syntax-table nil - "Syntax table used in c++-c-mode buffers.") - -(if c++-mode-syntax-table - () - (setq c++-mode-syntax-table (make-syntax-table)) - (modify-syntax-entry ?\\ "\\" c++-mode-syntax-table) - (modify-syntax-entry ?+ "." c++-mode-syntax-table) - (modify-syntax-entry ?- "." c++-mode-syntax-table) - (modify-syntax-entry ?= "." c++-mode-syntax-table) - (modify-syntax-entry ?% "." c++-mode-syntax-table) - (modify-syntax-entry ?< "." c++-mode-syntax-table) - (modify-syntax-entry ?> "." c++-mode-syntax-table) - (modify-syntax-entry ?& "." c++-mode-syntax-table) - (modify-syntax-entry ?| "." c++-mode-syntax-table) - (modify-syntax-entry ?\' "\"" c++-mode-syntax-table) - ;; comment syntax - (cond - ((memq '8-bit c++-emacs-features) - ;; Lucid emacs has the best implementation - (modify-syntax-entry ?/ ". 1456" c++-mode-syntax-table) - (modify-syntax-entry ?* ". 23" c++-mode-syntax-table) - (modify-syntax-entry ?\n "> b" c++-mode-syntax-table)) - ((memq '1-bit c++-emacs-features) - ;; FSF19 has sub-optimal, but workable implementation - ;; Some strange behavior may be encountered. LOBBY FSF! - (modify-syntax-entry ?/ ". 124" c++-mode-syntax-table) - (modify-syntax-entry ?* ". 23b" c++-mode-syntax-table) - (modify-syntax-entry ?\n ">" c++-mode-syntax-table)) - (t - ;; Vanilla GNU18 is just plain busted. We'll do the best we can, - ;; but some strange behavior may be encountered. PATCH or UPGRADE! - (modify-syntax-entry ?/ ". 124" c++-mode-syntax-table) - (modify-syntax-entry ?* ". 23" c++-mode-syntax-table) - (modify-syntax-entry ?\n ">" c++-mode-syntax-table)) - )) - -(if c++-c-mode-syntax-table - () - (setq c++-c-mode-syntax-table (make-syntax-table)) - (modify-syntax-entry ?\\ "\\" c++-c-mode-syntax-table) - (modify-syntax-entry ?+ "." c++-c-mode-syntax-table) - (modify-syntax-entry ?- "." c++-c-mode-syntax-table) - (modify-syntax-entry ?= "." c++-c-mode-syntax-table) - (modify-syntax-entry ?% "." c++-c-mode-syntax-table) - (modify-syntax-entry ?< "." c++-c-mode-syntax-table) - (modify-syntax-entry ?> "." c++-c-mode-syntax-table) - (modify-syntax-entry ?& "." c++-c-mode-syntax-table) - (modify-syntax-entry ?| "." c++-c-mode-syntax-table) - (modify-syntax-entry ?\' "\"" c++-c-mode-syntax-table) - (modify-syntax-entry ?/ ". 14" c++-c-mode-syntax-table) - (modify-syntax-entry ?* ". 23" c++-c-mode-syntax-table) - ) - -(defvar c++-tab-always-indent - (if (boundp 'c-tab-always-indent) c-tab-always-indent t) - "*Controls the operation of the TAB key. -If t (the default), always just indent the current line. If nil, -indent the current line only if point is at the left margin or in the -line's indentation; otherwise insert a tab. If not-nil-or-t, then tab -is inserted only within literals (comments and strings) and inside -preprocessor directives, but line is always reindented.") -(defvar c++-always-arglist-indent-p nil - "*Control indentation of continued arglists. -When non-nil, arglists continued on subsequent lines will always -indent `c++-empty-arglist-indent' spaces, otherwise, they will indent to -just under previous line's argument indentation.") -(defvar c++-block-close-brace-offset 0 - "*Extra indentation given to close braces which close a block. -This variable can be either an integer or a list. If an integer, it -describes the extra offset given a block closing brace (and a closing -paren if `c++-paren-as-block-close-p' is non-nil), treating all -closing parens the same. If a list of the form (OTHERS . TOPLEVEL), -OTHERS is an integer describing the offset given to all but top-level -(e.g. function) closing braces, while TOPLEVEL is an integer -describing offset given only to braces which close top-level -constructs.") -(defvar c++-paren-as-block-close-p nil - "*Treat a parenthesis which is the first non-whitespace on a line as -a paren which closes a block. When non-nil, `c-indent-level' is -subtracted, and `c++-block-close-brace-offset' is added to the line's -offset.") -(defvar c++-continued-member-init-offset nil - "*Extra indent for continuation lines of member inits; nil means to align -with previous initializations rather than with the colon on the first line.") -(defvar c++-member-init-indent 0 - "*Indentation level of member initializations in function declarations.") -(defvar c++-friend-offset -4 - "*Offset of C++ friend class declarations relative to member declarations.") -(defvar c++-access-specifier-offset c-label-offset - "*Extra indentation given to public, protected, and private labels.") -(defvar c++-empty-arglist-indent nil - "*Indicates how far to indent a line following an empty argument list. -Nil means indent to just after the paren.") -(defvar c++-comment-only-line-offset 0 - "*Indentation offset for line which contains only C or C++ style comments. -This variable can take either a single integer or a list of integers. -If a single integer this is the extra indentation offset to apply to -all comment-only lines, except those which start in column zero. If a -list is used, the first integer is for all non-column-zero -comment-only lines and the second integer is for all column-zero -lines. You can also use a list containing only 1 integer, in which -case, this value is used for all comment-only lines. For example: - -value meaning -===== ======= - 0 comment-only lines do not indent - 4 non-col0 lines indent 4 spaces, col0 lines don't indent -'(4) all comment-only lines indent 4 spaces -'(4 1) non-col0 lines indent 4 spaces, col0 lines indent 1 space") - -(defvar c++-C-block-comments-indent-p nil - "*4 styles of C block comments are supported. If this variable is nil, -then styles 1-3 are supported. If this variable is non-nil, style 4 is -supported. -style 1: style 2: style 3: style 4: -/* /* /* /* - blah * blah ** blah blah - blah * blah ** blah blah - */ */ */ */ -") -(defvar c++-cleanup-list nil - "*List of various C++ constructs to ``clean up''. -These cleanups only take place when the auto-newline feature is turned -on, as evidenced by the `/a' or `/ah' appearing next to the mode name. - -Current legal values are: - `brace-else-brace' -- clean up ``} else {'' constructs by placing entire - construct on a single line. This cleanup only - takes place when there is nothing but white - space between the braces and the else. - `empty-defun-braces' -- cleans up empty C++ function braces by - placing them on the same line. - `defun-close-semi' -- cleans up the terminating semi-colon on class - definitions and functions by placing the semi - on the same line as the closing brace.") -(defvar c++-hanging-braces t - "*Controls the insertion of newlines before open (left) braces. -This variable only has effect when auto-newline is on, as evidenced by -the `/a' or `/ah' appearing next to the mode name. If nil, open -braces do not hang (i.e. a newline is inserted before all open -braces). If t, all open braces hang -- no newline is inserted before -open braces. If not nil or t, newlines are only inserted before -top-level open braces; all other braces hang.") -(defvar c++-hanging-member-init-colon 'before - "*Defines how colons which introduce member initializations are formatted. -Legal values are: - t -- no newlines inserted before or after colon - nil -- newlines inserted before and after colon - `after' -- newlines inserted only after colon - `before` -- newlines inserted only before colon") -(defvar c++-auto-hungry-initial-state 'none - "*Initial state of auto/hungry features when buffer is first visited. -Legal values are: - `none' -- no auto-newline and no hungry-delete-key. - `auto-only' -- auto-newline, but no hungry-delete-key. - `hungry-only' -- no auto-newline, but hungry-delete-key. - `auto-hungry' -- both auto-newline and hungry-delete-key enabled. -Nil is synonymous for `none' and t is synonymous for `auto-hungry'.") - -(defvar c++-auto-hungry-toggle t - "*Enable/disable toggling of auto/hungry features. -Legal values are: - `none' -- auto-newline and hungry-delete-key cannot be enabled. - `auto-only' -- only auto-newline feature can be toggled. - `hungry-only' -- only hungry-delete-key feature can be toggled. - `auto-hungry' -- both auto-newline and hungry-delete-key can be toggled. -Nil is synonymous for `none' and t is synonymous for `auto-hungry'.") - -(defvar c++-relative-offset-p t - "*Control the calculation for indentation. -When non-nil (the default), indentation is calculated relative to the -first statement in the block. When nil, the indentation is calculated -without regard to how the first statement is indented.") - -(defvar c++-untame-characters (and (memq 'v18 c++-emacs-features) '(?\')) - "*Utilize a backslashing workaround of an Emacs syntax parsing bug. -If non-nil, this variable should contain a list of characters which -will be prepended by a backslash in comment regions. By default, the -list contains only the most troublesome character, the single quote. -To be completely safe, set this variable to: - - '(?\( ?\) ?\' ?\{ ?\} ?\[ ?\]) - -This is the full list of characters which can potentially cause -problems if they exist unbalanced within comments. Setting this -variable to nil will defeat this feature, but be forewarned! Such -un-escaped characters in comment regions can potentially break many -things such as some indenting and blinking of parenthesis. - -Note further that only the default set of characters will be escaped -automatically as they are typed. But, executing `c++-tame-comments' -(\\[c++-tame-comments]) will escape all characters which are members -of this set, and which are found in comments throughout the file. - -Finally, c++-mode can tell if you're running a patched Emacs. If so, -taming characters isn't necessary and this variable is automatically -set to nil.") - -(defvar c++-default-macroize-column 78 - "*Column to insert backslashes.") -(defvar c++-special-indent-hook nil - "*Hook for user defined special indentation adjustments. -This hook gets called after a line is indented by the mode. By -supplying a hook, you can make adjustments to the line's standard -indentation. If you do use this hook, you will likely need to also -set `c++-relative-offset-p' to nil. The call to this hook is wrapped in -a `save-excursion' so you don't need to worry about restoring point and -mark inside the hook function.") -(defvar c++-delete-function 'backward-delete-char-untabify - "*Function called by `c++-electric-delete' when deleting a single char.") -(defvar c++-electric-pound-behavior nil - "*List of behaviors for electric pound insertion. -Only currently supported behavior is `alignleft'.") -(defvar c++-backscan-limit 2000 - "*Limit in characters for looking back while skipping syntactic ws. -If you typically write really big methods, and start noticing -incorrect indentations, try cranking this value up. The larger this -value is, though, the slower parts of c++-mode can become. Setting -this variable to nil defeats backscan limits.") - -;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -;; NO USER DEFINABLE VARIABLES BEYOND THIS POINT -;; -(defvar c++-hungry-delete-key nil - "Internal state of hungry delete key feature.") -(defvar c++-auto-newline nil - "Internal state of auto newline feature.") - -(make-variable-buffer-local 'c++-auto-newline) -(make-variable-buffer-local 'c++-hungry-delete-key) - -(defconst c++-access-key "\\<\\(public\\|protected\\|private\\)\\>:" - "Regexp which describes access specification keywords.") -(defconst c++-class-key - (concat - "\\(\\(extern\\|typedef\\)\\s +\\)?" - "\\(template\\s *<[^>]*>\\s *\\)?" - "\\<\\(class\\|struct\\|union\\)\\>") - "Regexp which describes a class declaration, including templates.") -(defconst c++-inher-key - (concat "\\(\\<static\\>\\s +\\)?" - c++-class-key - "[ \t]+\\(\\(\\w\\|_\\)+[ \t]*:[ \t]*\\)?") - "Regexp which describes a class inheritance declaration.") - - -;; ====================================================================== -;; c++-mode main entry point -;; ====================================================================== -;;##autoload ;; don't autoload an obsolete package -(defun c++-mode () - "Major mode for editing C++ code. 2.353 -To submit a problem report, enter `\\[c++-submit-bug-report]' from a -c++-mode buffer. This automatically sets up a mail buffer with -version information already added. You just need to add a description -of the problem and send the message. - -1. Very much like editing C code, -2. Expression and list commands understand all C++ brackets, -3. Tab at left margin indents for C++ code, -4. Both C++ and C style block comments are recognized, -5. Paragraphs are separated by blank lines only, -6. Hungry delete key and auto newline features are optional. - -IMPORTANT NOTE: You may notice that some characters (by default, only -single quote) will get escaped with a backslash when typed in a -comment region. This is a necessary workaround of a bug present in -GNU Emacs 18 and derivatives. Enter `\\[describe-variable] c++-untame-characters RET' -for more information. If you are running a patched Emacs, no -characters will be escaped in comment regions, and many functions will -run much faster. - -Key bindings: -\\{c++-mode-map} - -These variables control indentation style. Those with names like -c-<thing> are inherited from c-mode. Those with names like -c++-<thing> are unique for this mode, or have extended functionality -from their c-mode cousins. - - c-argdecl-indent - Indentation level of declarations of C function arguments. - c-brace-imaginary-offset - An open brace following other text is treated as if it were - this far to the right of the start of its line. - c-brace-offset - Extra indentation for line if it starts with an open brace. - c-continued-brace-offset - Extra indentation given to a brace that starts a substatement. - This is in addition to `c-continued-statement-offset'. - c-continued-statement-offset - Extra indentation given to a substatement, such as the - then-clause of an if or body of a while. - c-indent-level - Indentation of C statements within surrounding block. - The surrounding block's indentation is the indentation - of the line on which the open-brace appears. - c-label-offset - Extra indentation for line that is a label, or case or ``default:'' - - c++-C-block-comments-indent-p - Style of C block comments to support. - c++-access-specifier-offset - Extra indentation given to public, protected, and private keyword lines. - c++-always-arglist-indent-p - Control indentation of continued arglists. When non-nil, arglists - continued on subsequent lines will always indent - `c++-empty-arglist-indent' spaces, otherwise, they will indent to - just under previous line's argument indentation. - c++-auto-hungry-initial-state - Initial state of auto/hungry feature when a C++ buffer is first visited. - c++-auto-hungry-toggle - Enable/disable toggling of auto/hungry features. - c++-backscan-limit - Limit in characters for looking back while skipping syntactic - whitespace. This variable is only used in an un-patched Emacs to - help improve performance at the expense of some accuracy. Patched - Emacses are both fast and accurate. - c++-block-close-brace-offset - Extra indentation give to braces which close a block. - c++-cleanup-list - A list of construct ``clean ups'' which c++-mode will perform when - auto-newline feature is on. Current legal values are: - `brace-else-brace', `empty-defun-braces', `defun-close-semi'. - c++-comment-only-line-offset - Extra indentation for a line containing only a C or C++ style - comment. Can be an integer or list, specifying the various styles - of comment-only line special indentations. - c++-continued-member-init-offset - Extra indentation for continuation lines of member initializations; nil - means to align with previous initializations rather than with the colon. - c++-default-macroize-column - Column to insert backslashes when macroizing a region. - c++-delete-function - Function called by `c++-electric-delete' when deleting a single char. - c++-electric-pound-behavior - List of behaviors for electric pound insertion. - c++-empty-arglist-indent - Extra indentation to apply to a line following an empty argument - list. nil means to line it up with the left paren. - c++-friend-offset - Offset of C++ friend class declarations relative to member declarations. - c++-hanging-braces - Controls open brace hanging behavior when using auto-newline feature. - nil says no braces hang, t says all open braces hang. non-nil-or-t - means top-level open braces don't hang, all others do. - c++-hanging-member-init-colon - Defines how colons which introduce member initialization lists are - formatted. t means no newlines are inserted either before or after - the colon. nil means newlines are inserted both before and after - the colon. `before' inserts newlines only before the colon, and - `after' inserts newlines only after colon. - c++-member-init-indent - Indentation level of member initializations in function declarations, - if they are on a separate line beginning with a colon. - c++-paren-as-block-close-p - If non-nil, treat a parenthesis which is the first non-whitespace - on a line as a paren which closes a block (i.e. treat it similar - to right curly brace). - c++-relative-offset-p - Control the calculation for indentation. When non-nil (the - default), indentation is calculated relative to the first - statement in the block. When nil, the indentation is calculated - without regard to how the first statement is indented. Useful when - using a `c++-special-indent-hook'. - c++-special-indent-hook - Hook for user defined special indentation adjustments. You can use - this hook, which gets called after a line is indented by the mode, - to customize indentations of the line. - c++-tab-always-indent - Controls the operation of the TAB key. t means always just indent - the current line. nil means indent the current line only if point - is at the left margin or in the line's indentation; otherwise - insert a tab. If not-nil-or-t, then tab is inserted only within - literals (comments and strings) and inside preprocessor - directives, but the line is always reindented. Default is value - for `c-tab-always-indent'. - c++-untame-characters - When non-nil, inserts backslash escapes before certain untamed - characters in comment regions. It is recommended that you keep the - default setting to workaround a nasty Emacs bug, unless you are - running a patched Emacs. - -Auto-newlining is no longer an all or nothing proposition. In my -opinion, I don't believe it is possible to implement a perfect -auto-newline algorithm. Sometimes you want it and sometimes you don't. -So now auto-newline (and its companion feature, hungry-delete-key) can -be toggled on and off on the fly. Hungry-delete-key is the optional -behavior of the delete key so that, when enabled, hitting the delete -key once consumes all preceding whitespace, unless point is within a -literal (defined as a C or C++ comment, or string). Inside literals, -and with hungry-delete-key disabled, the delete key just calls the -function in variable `c++-delete-function'. - -Selection and toggling of these features is controlled by the -variables `c++-auto-hungry-initial-state' and `c++-auto-hungry-toggle'. -Legal values for both variables are: - - `none' (or nil) -- no auto-newline or hungry-delete-key. - `auto-only' -- function affects only auto-newline feature. - `hungry-only' -- function affects only hungry-delete-key feature. - `auto-hungry' (or t) -- function affects both features. - -Thus if `c++-auto-hungry-initial-state' is `hungry-only', then only -hungry-delete-key feature is turned on when the buffer is first -visited. If `c++-auto-hungry-toggle' is `auto-hungry', and both -auto-newline and hungry-delete-key features are on, then hitting -`\\[c++-toggle-auto-hungry-state]' will toggle both features. Hitting -`\\[c++-toggle-hungry-state]' will always toggle hungry-delete-key -feature and hitting `\\[c++-toggle-auto-state]' will always toggle -auto-newline feature, regardless of the value of -`c++-auto-hungry-toggle'. - -Settings for K&R, BSD, and Stroustrup indentation styles are - c-indent-level 5 8 4 - c-continued-statement-offset 5 8 4 - c-continued-brace-offset 0 - c-brace-offset -5 -8 0 - c-brace-imaginary-offset 0 - c-argdecl-indent 0 8 4 - c-label-offset -5 -8 -4 - c++-access-specifier-offset -5 -8 -4 - c++-empty-arglist-indent 4 - c++-friend-offset 0 - -Turning on C++ mode calls the value of the variable `c++-mode-hook' with -no args, if that value is non-nil." - (interactive) - (kill-all-local-variables) - (use-local-map c++-mode-map) - (set-syntax-table c++-mode-syntax-table) - (setq major-mode 'c++-mode - mode-name "C++" - local-abbrev-table c++-mode-abbrev-table) - (set (make-local-variable 'paragraph-start) (concat "^$\\|" page-delimiter)) - (set (make-local-variable 'paragraph-separate) paragraph-start) - (set (make-local-variable 'paragraph-ignore-fill-prefix) t) - (set (make-local-variable 'require-final-newline) t) - (set (make-local-variable 'parse-sexp-ignore-comments) nil) - ;; - (set (make-local-variable 'indent-line-function) 'c++-indent-line) - (set (make-local-variable 'comment-start) "// ") - (set (make-local-variable 'comment-end) "") - (set (make-local-variable 'comment-column) 32) - (set (make-local-variable 'comment-start-skip) "/\\*+ *\\|// *") - (set (make-local-variable 'comment-indent-hook) 'c++-comment-indent) - ;; hack auto-hungry designators into modeline-format - (if (listp modeline-format) - (setq modeline-format - (let ((modeline nil)) - (mapcar - (function - (lambda (element) - (setq modeline - (append modeline - (if (eq element 'mode-name) - '(mode-name (c++-hungry-delete-key - (c++-auto-newline "/ah" "/h") - (c++-auto-newline "/a"))) - (list element)))))) - modeline-format) - modeline))) - (run-hooks 'c++-mode-hook) - (c++-set-auto-hungry-state - (memq c++-auto-hungry-initial-state '(auto-only auto-hungry t)) - (memq c++-auto-hungry-initial-state '(hungry-only auto-hungry t)))) - -;;##autoload ;; don't autoload an obsolete package -(defun c++-c-mode () - "Major mode for editing K&R and ANSI C code. 2.353 -This mode is based on c++-mode. Documentation for this mode is -available by doing a `\\[describe-function] c++-mode'." - (interactive) - (c++-mode) - (setq major-mode 'c++-c-mode - mode-name "C" - local-abbrev-table c-mode-abbrev-table) - (setq comment-start "/* " - comment-end " */") - ;; some syntax differences are necessary for C vs. C++ - (set-syntax-table c++-c-mode-syntax-table) - (run-hooks 'c++-c-mode-hook)) - -(defun c++-comment-indent () - "Used by `indent-for-comment' to decide how much to indent a comment -in C++ code based on its context." - (if (looking-at "^\\(/\\*\\|//\\)") - 0 ; Existing comment at bol stays there. - (save-excursion - (skip-chars-backward " \t") - (max - ;; leave at least one space on non-empty lines. - (if (zerop (current-column)) - 0 - (1+ (current-column))) - ;; use comment-column if previous line is comment only line - ;; indented to the left of comment-column - (save-excursion - (beginning-of-line) - (if (not (bobp)) (forward-line -1)) - (skip-chars-forward " \t") - (if (looking-at "/\\*\\|//") - (if (< (current-column) comment-column) - comment-column - (current-column)) - 0)) - (let ((cur-pt (point))) - (beginning-of-line 0) - ;; If previous line had a comment, use it's indent - (if (re-search-forward comment-start-skip cur-pt t) - (progn - (goto-char (match-beginning 0)) - (current-column)) - comment-column)))))) ; otherwise indent at comment column. - - -;; ====================================================================== -;; most command level (interactive) and related -;; ====================================================================== -(defun c++-set-auto-hungry-state (auto-p hungry-p) - "Set auto/hungry to state indicated by AUTO-P and HUNGRY-P. -Update modeline to indicate state to user." - (setq c++-auto-newline auto-p - c++-hungry-delete-key hungry-p) - (set-buffer-modified-p (buffer-modified-p))) - -(defun c++-toggle-auto-state (arg) - "Toggle auto-newline feature. -This function ignores `c++-auto-hungry-toggle' variable. Optional -numeric ARG, if supplied turns on auto-newline when positive, turns -off auto-newline when negative and toggles when zero." - (interactive "P") - (let ((auto (cond - ((not arg) - (not c++-auto-newline)) - ((zerop (setq arg (prefix-numeric-value arg))) - (not c++-auto-newline)) - ((< arg 0) nil) - (t t)))) - (c++-set-auto-hungry-state auto c++-hungry-delete-key))) - -(defun c++-toggle-hungry-state (arg) - "Toggle hungry-delete-key feature. -This function ignores `c++-auto-hungry-toggle' variable. Optional -numeric ARG, if supplied turns on hungry-delete-key when positive, -turns off hungry-delete-key when negative and toggles when zero." - (interactive "P") - (let ((hungry (cond - ((not arg) - (not c++-hungry-delete-key)) - ((zerop (setq arg (prefix-numeric-value arg))) - (not c++-hungry-delete-key)) - ((< arg 0) nil) - (t t)))) - (c++-set-auto-hungry-state c++-auto-newline hungry))) - -(defun c++-toggle-auto-hungry-state (arg) - "Toggle auto-newline and hungry-delete-key features. -Actual toggling of these features is controlled by -`c++-auto-hungry-toggle' variable. - -Optional argument has the following meanings when supplied: - Universal argument \\[universal-argument] - resets features to c++-auto-hungry-initial-state. - negative number - turn off both auto-newline and hungry-delete-key features. - positive number - turn on both auto-newline and hungry-delete-key features. - zero - toggle both features regardless of `c++-auto-hungry-toggle-p'." - (interactive "P") - (let* ((numarg (prefix-numeric-value arg)) - (apl (list 'auto-only 'auto-hungry t)) - (hpl (list 'hungry-only 'auto-hungry t)) - (auto (cond - ((not arg) - (if (memq c++-auto-hungry-toggle apl) - (not c++-auto-newline) - c++-auto-newline)) - ((listp arg) - (memq c++-auto-hungry-initial-state apl)) - ((zerop numarg) - (not c++-auto-newline)) - ((< arg 0) nil) - (t t))) - (hungry (cond - ((not arg) - (if (memq c++-auto-hungry-toggle hpl) - (not c++-hungry-delete-key) - c++-hungry-delete-key)) - ((listp arg) - (memq c++-auto-hungry-initial-state hpl)) - ((zerop numarg) - (not c++-hungry-delete-key)) - ((< arg 0) nil) - (t t)))) - (c++-set-auto-hungry-state auto hungry))) - -(defun c++-tame-insert (arg) - "Safely inserts certain troublesome characters in comment regions. -Because of syntax bugs in Emacs, characters with string or parenthesis -syntax must be escaped with a backslash or lots of things get messed -up. Unfortunately, setting `parse-sexp-ignore-comments' to non-nil does -not fix the problem, but this function is unnecessary if you are -running a patched Emacs. - -See also the variable `c++-untame-characters'." - (interactive "p") - (if (and (memq last-command-char c++-untame-characters) - (memq (c++-in-literal) '(c c++))) - (insert "\\")) - (self-insert-command arg)) - -(defun c++-electric-delete (arg) - "If `c++-hungry-delete-key' is non-nil, consumes all preceding -whitespace unless ARG is supplied, or point is inside a C or C++ style -comment or string. If ARG is supplied, this just calls -`backward-delete-char-untabify' passing along ARG. - -If `c++-hungry-delete-key' is nil, just call `backward-delete-char-untabify'." - (interactive "P") - (cond - ((or (not c++-hungry-delete-key) arg) - (funcall c++-delete-function (prefix-numeric-value arg))) - ((let ((bod (c++-point 'bod))) - (not (or (memq (c++-in-literal bod) '(c c++ string)) - (save-excursion - (skip-chars-backward " \t") - (= (preceding-char) ?#))))) - (let ((here (point))) - (skip-chars-backward " \t\n") - (if (/= (point) here) - (delete-region (point) here) - (funcall c++-delete-function 1)))) - (t (funcall c++-delete-function 1)))) - -(defun c++-electric-pound (arg) - "Electric pound command." - (interactive "p") - (if (memq (c++-in-literal) '(c c++ string)) - (self-insert-command arg) - (let ((here (point-marker)) - (bobp (bobp)) - (bolp (bolp))) - (if (memq 'alignleft c++-electric-pound-behavior) - (progn (beginning-of-line) - (delete-horizontal-space))) - (if bobp - (insert (make-string arg last-command-char)) - (insert-before-markers (make-string arg last-command-char))) - (if (not bolp) - (goto-char here)) - (set-marker here nil)))) - -(defun c++-electric-brace (arg) - "Insert character and correct line's indentation." - (interactive "P") - (let (insertpos - (last-command-char last-command-char) - (bod (c++-point 'bod))) - (if (and (not arg) - (save-excursion - (skip-chars-forward " \t") - (eolp)) - (or (save-excursion - (skip-chars-backward " \t") - (bolp)) - (let ((c++-auto-newline c++-auto-newline) - (open-brace-p (= last-command-char ?{))) - (if (and open-brace-p - (or (eq c++-hanging-braces t) - (and c++-hanging-braces - (not (c++-at-top-level-p t bod))))) - (setq c++-auto-newline nil)) - (if (c++-auto-newline) - ;; this may have auto-filled so we need to - ;; indent the previous line. we also need to - ;; indent the currently line, or - ;; c++-beginning-of-defun will not be able to - ;; correctly find the bod when - ;; c++-match-headers-strongly is nil. - (progn (c++-indent-line) - (save-excursion - (forward-line -1) - (c++-indent-line)))) - t))) - (progn - (if (and (memq last-command-char c++-untame-characters) - (memq (c++-in-literal bod) '(c c++))) - (insert "\\")) - ;; we need to work around a bogus feature of Emacs where an - ;; open brace at bolp means a beginning-of-defun. but it - ;; really might not. - (and (= last-command-char ?{) - (bolp) - (c++-indent-line)) - (insert last-command-char) - ;; try to clean up empty defun braces if conditions apply - (let ((here (point-marker))) - (and (memq 'empty-defun-braces c++-cleanup-list) - (c++-at-top-level-p t bod) - c++-auto-newline - (= last-command-char ?\}) - (progn (forward-char -1) - (skip-chars-backward " \t\n") - (= (preceding-char) ?\{)) - (not (memq (c++-in-literal) '(c c++ string))) - (delete-region (point) (1- here))) - (goto-char here) - (set-marker here nil)) - (let ((here (point-marker)) - mbeg mend) - (if (and (memq 'brace-else-brace c++-cleanup-list) - (= last-command-char ?\{) - (let ((status - (re-search-backward "}[ \t\n]*else[ \t\n]*{" - nil t))) - (setq mbeg (match-beginning 0) - mend (match-end 0)) - status) - (= mend here) - (not (memq (c++-in-literal bod) '(c c++ string)))) - (progn - ;; we should clean up brace-else-brace syntax - (delete-region mbeg mend) - (insert-before-markers "} else {") - (goto-char here) - (set-marker here nil)) - (goto-char here) - (set-marker here nil))) - (c++-indent-line) - (if (c++-auto-newline) - (progn - ;; c++-auto-newline may have done an auto-fill - (save-excursion - (let ((here (point-marker))) - (goto-char (- (point) 2)) - (c++-indent-line) - (setq insertpos (- (goto-char here) 2)) - (set-marker here nil))) - (c++-indent-line))) - (save-excursion - (if insertpos (goto-char (1+ insertpos))) - (delete-char -1)))) - (if insertpos - (save-excursion - (goto-char insertpos) - (self-insert-command (prefix-numeric-value arg))) - (self-insert-command (prefix-numeric-value arg))))) - -(defun c++-electric-slash (arg) - "Insert slash, and if slash is second of a double-slash comment -introducing construct, indent line as comment. This only indents if -we're on a comment-only line, otherwise use `indent-for-comment' (\\[indent-for-comment])." - (interactive "P") - (let ((here (point)) char) - (self-insert-command (prefix-numeric-value arg)) - (and (setq char (char-after (1- here))) - (= char ?/) - (save-excursion - (goto-char here) - (c++-indent-line))))) - -(defun c++-electric-star (arg) - "Works with `c++-electric-slash' to auto indent C style comment lines." - (interactive "P") - (let ((here (point)) char) - (self-insert-command (prefix-numeric-value arg)) - (if (and (setq char (char-after (1- here))) - (memq (c++-in-literal) '(c)) - (memq char '(?/ ?* ?\t 32 ?\n)) - (save-excursion - (skip-chars-backward "* \t") - (if (= (preceding-char) ?/) - (progn - (forward-char -1) - (skip-chars-backward " \t"))) - (bolp))) - (save-excursion - (goto-char here) - (c++-indent-line))))) - -(defun c++-electric-semi (arg) - "Insert character and correct line's indentation." - (interactive "P") - (if (c++-in-literal) - (self-insert-command (prefix-numeric-value arg)) - (let ((here (point-marker))) - (if (and (memq 'defun-close-semi c++-cleanup-list) - c++-auto-newline - (progn - (skip-chars-backward " \t\n") - (= (preceding-char) ?}))) - (delete-region here (point))) - (goto-char here) - (set-marker here nil)) - (c++-electric-terminator arg))) - -(defun c++-electric-colon (arg) - "Electrify colon. -De-auto-newline double colons. No auto-new-lines for member -initialization list." - (interactive "P") - (if (c++-in-literal) - (self-insert-command (prefix-numeric-value arg)) - (let ((c++-auto-newline c++-auto-newline) - (insertion-point (point)) - (bod (c++-point 'bod))) - (save-excursion - (cond - ;; check for double-colon where the first colon is not in a - ;; comment or literal region - ((progn (skip-chars-backward " \t\n") - (and (= (preceding-char) ?:) - (not (memq (c++-in-literal bod) '(c c++ string))))) - (progn (delete-region insertion-point (point)) - (setq c++-auto-newline nil - insertion-point (point)))) - ;; check for ?: construct which may be at any level - ((progn (goto-char insertion-point) - (condition-case premature-end - (backward-sexp 1) - (error nil)) - ;; is possible that the sexp we just skipped was a - ;; negative number. in that case the minus won't be - ;; gobbled - (skip-chars-backward "-") - (c++-backward-syntactic-ws bod) - (= (preceding-char) ?\?)) - (setq c++-auto-newline nil)) - ;; check for being at top level or top with respect to the - ;; class. if not, process as normal - ((progn (goto-char insertion-point) - (not (c++-at-top-level-p t bod)))) - ;; if at top level, check to see if we are introducing a member - ;; init list. if not, continue - ((progn (c++-backward-syntactic-ws bod) - (= (preceding-char) ?\))) - (goto-char insertion-point) - ;; at a member init list, figure out about auto newlining. if - ;; nil or before then put a newline before the colon and - ;; adjust the insertion point, but *only* if there is no - ;; newline already before the insertion point - (if (and (memq c++-hanging-member-init-colon '(nil before)) - c++-auto-newline) - (if (not (save-excursion (skip-chars-backward " \t") - (bolp))) - (let ((c++-auto-newline t)) - (c++-auto-newline) - (setq insertion-point (point))))) - ;; if hanging colon is after or nil, then newline is inserted - ;; after colon. set up variable so c++-electric-terminator - ;; places the newline correctly - (setq c++-auto-newline - (and c++-auto-newline - (memq c++-hanging-member-init-colon '(nil after))))) - ;; last condition is always put newline after colon - (t (setq c++-auto-newline nil)) - )) ; end-cond, end-save-excursion - (goto-char insertion-point) - (c++-electric-terminator arg)))) - -(defun c++-electric-terminator (arg) - "Insert character and correct line's indentation." - (interactive "P") - (let (insertpos (end (point))) - (if (and (not arg) - (save-excursion - (skip-chars-forward " \t") - (eolp)) - (not (save-excursion - (beginning-of-line) - (skip-chars-forward " \t") - (or (= (following-char) ?#) - ;; Colon is special only after a label, or - ;; case, or another colon. - ;; So quickly rule out most other uses of colon - ;; and do no indentation for them. - (and (eq last-command-char ?:) - (not (looking-at "case[ \t]")) - (save-excursion - (forward-word 1) - (skip-chars-forward " \t") - (< (point) end)) - ;; Do re-indent double colons - (save-excursion - (end-of-line 1) - (looking-at ":"))) - (progn - (c++-beginning-of-defun) - (let* ((parse-sexp-ignore-comments t) - (pps (parse-partial-sexp (point) end))) - (or (nth 3 pps) (nth 4 pps) (nth 5 pps)))))))) - (progn - (insert last-command-char) - (c++-indent-line) - (and c++-auto-newline - (not (c++-in-parens-p)) - (progn - ;; the new marker object, used to be just an integer - (setq insertpos (make-marker)) - ;; changed setq to set-marker - (set-marker insertpos (1- (point))) - ;; do this before the newline, since in auto fill can break - (newline) - (c++-indent-line))) - (save-excursion - (if insertpos (goto-char (1+ insertpos))) - (delete-char -1)))) - (if insertpos - (save-excursion - (goto-char insertpos) - (self-insert-command (prefix-numeric-value arg))) - (self-insert-command (prefix-numeric-value arg))))) - -(defun c++-indent-command (&optional whole-exp) - "Indent current line as C++ code, or in some cases insert a tab character. - -If `c++-tab-always-indent' is t, always just indent the current line. -If nil, indent the current line only if point is at the left margin or -in the line's indentation; otherwise insert a tab. If not-nil-or-t, -then tab is inserted only within literals (comments and strings) and -inside preprocessor directives, but line is always reindented. - -A numeric argument, regardless of its value, means indent rigidly all -the lines of the expression starting after point so that this line -becomes properly indented. The relative indentation among the lines -of the expression are preserved." - (interactive "P") - (let ((bod (c++-point 'bod))) - (if whole-exp - ;; If arg, always indent this line as C - ;; and shift remaining lines of expression the same amount. - (let ((shift-amt (c++-indent-line bod)) - beg end) - (save-excursion - (if (eq c++-tab-always-indent t) - (beginning-of-line)) - (setq beg (point)) - (forward-sexp 1) - (setq end (point)) - (goto-char beg) - (forward-line 1) - (setq beg (point))) - (if (> end beg) - (indent-code-rigidly beg end shift-amt "#"))) - (cond - ;; CASE 1: indent when at column zero or in lines indentation, - ;; otherwise insert a tab - ((not c++-tab-always-indent) - (if (and (save-excursion - (skip-chars-backward " \t") - (bolp)) - (or (looking-at "[ \t]*$") - (/= (point) (c++-point 'boi)) - (bolp))) - (c++-indent-line bod) - (insert-tab))) - ;; CASE 2: just indent the line - ((eq c++-tab-always-indent t) - (c++-indent-line bod)) - ;; CASE 3: if in a literal, insert a tab, but always indent the line - ((or (memq (c++-in-literal bod) '(c c++ string)) - (save-excursion - (skip-chars-backward " \t") - (= (preceding-char) ?#))) - (let ((here (point)) - (boi (save-excursion (back-to-indentation) (point))) - (indent-p nil)) - (c++-indent-line bod) - (save-excursion - (back-to-indentation) - (setq indent-p (and (> here boi) (= (point) boi)))) - (if indent-p (insert-tab)))) - ;; CASE 4: bogus, just indent the line - (t (c++-indent-line bod)))))) - -(defun c++-indent-exp () - "Indent each line of the C++ grouping following point." - (interactive) - (let ((indent-stack (list nil)) - (contain-stack (list (point))) - (case-fold-search nil) - restart outer-loop-done inner-loop-done state ostate - this-indent last-sexp last-depth - at-else at-brace - (parse-sexp-ignore-comments t) - (opoint (point)) - (next-depth 0)) - (save-excursion - (forward-sexp 1)) - (save-excursion - (setq outer-loop-done nil) - (while (and (not (eobp)) (not outer-loop-done)) - (setq last-depth next-depth) - ;; Compute how depth changes over this line - ;; plus enough other lines to get to one that - ;; does not end inside a comment or string. - ;; Meanwhile, do appropriate indentation on comment lines. - (setq inner-loop-done nil) - (while (and (not inner-loop-done) - (not (and (eobp) (setq outer-loop-done t)))) - (setq ostate state) - ;; fix by reed@adapt.net.com - ;; must pass in the return past the end of line, so that - ;; parse-partial-sexp finds it, and recognizes that a "//" - ;; comment is over. otherwise, state is set that we're in a - ;; comment, and never gets unset, causing outer-loop to only - ;; terminate in (eobp). old: - ;;(setq state (parse-partial-sexp (point) - ;;(progn (end-of-line) (point)) - ;;nil nil state)) - (let ((start (point)) - (line-end - (progn (end-of-line) - (while (eq (c++-in-literal) 'c) - (forward-line 1) - (c++-indent-line) - (end-of-line)) - (skip-chars-backward " \t") - (end-of-line) - (point))) - (end (progn (if (not (eobp)) (forward-char)) (point)))) - (setq state (parse-partial-sexp start end nil nil state)) - (goto-char line-end)) - (setq next-depth (car state)) - (if (and (car (cdr (cdr state))) - (>= (car (cdr (cdr state))) 0)) - (setq last-sexp (car (cdr (cdr state))))) - (if (or (nth 4 ostate)) - (c++-indent-line)) - (if (or (nth 3 state)) - (forward-line 1) - (setq inner-loop-done t))) - (if (<= next-depth 0) - (setq outer-loop-done t)) - (if outer-loop-done - nil - ;; If this line had ..))) (((.. in it, pop out of the levels - ;; that ended anywhere in this line, even if the final depth - ;; doesn't indicate that they ended. - (while (> last-depth (nth 6 state)) - (setq indent-stack (cdr indent-stack) - contain-stack (cdr contain-stack) - last-depth (1- last-depth))) - (if (/= last-depth next-depth) - (setq last-sexp nil)) - ;; Add levels for any parens that were started in this line. - (while (< last-depth next-depth) - (setq indent-stack (cons nil indent-stack) - contain-stack (cons nil contain-stack) - last-depth (1+ last-depth))) - (if (null (car contain-stack)) - (setcar contain-stack (or (car (cdr state)) - (save-excursion (forward-sexp -1) - (point))))) - (forward-line 1) - (skip-chars-forward " \t") - ;; check for C comment block - (if (memq (c++-in-literal) '(c)) - (let ((eoc (save-excursion - (re-search-forward "\\*/" (point-max) 'move) - (point)))) - (while (< (point) eoc) - (c++-indent-line) - (forward-line 1)))) - (if (eolp) - nil - (if (and (car indent-stack) - (>= (car indent-stack) 0)) - ;; Line is on an existing nesting level. - ;; Lines inside parens are handled specially. - (if (or (/= (char-after (car contain-stack)) ?{) - ;;(c++-at-top-level-p t)) - ;; baw hack for continued statement offsets - ;; repercussions??? - t) - (setq this-indent (car indent-stack)) - ;; Line is at statement level. - ;; Is it a new statement? Is it an else? - ;; Find last non-comment character before this line - (save-excursion - (setq at-else (looking-at "else\\W")) - (setq at-brace (= (following-char) ?{)) - (c++-backward-syntactic-ws opoint) - (if (not (memq (preceding-char) '(nil ?\, ?\; ?} ?: ?{))) - ;; Preceding line did not end in comma or semi; - ;; indent this line c-continued-statement-offset - ;; more than previous. - (progn - (c-backward-to-start-of-continued-exp - (car contain-stack)) - (setq this-indent - (+ c-continued-statement-offset - (current-column) - (if at-brace c-continued-brace-offset 0)))) - ;; Preceding line ended in comma or semi; - ;; use the standard indent for this level. - (if at-else - (progn (c++-backward-to-start-of-if opoint) - (back-to-indentation) - (skip-chars-forward "{ \t") - (setq this-indent (current-column))) - (setq this-indent (car indent-stack)))))) - ;; Just started a new nesting level. - ;; Compute the standard indent for this level. - (let ((val (c++-calculate-indent - (if (car indent-stack) - (- (car indent-stack)))))) - (setcar indent-stack - (setq this-indent val)))) - ;; Adjust line indentation according to its contents - (cond - ;; looking at public, protected, private line - ((looking-at c++-access-key) - (setq this-indent (+ this-indent c++-access-specifier-offset))) - ;; looking at a case, default, or other label - ((or (looking-at "\\(case[ \t]+.*\\|default[ \t]*\\):") - (and (looking-at "[A-Za-z]") - (save-excursion - (forward-sexp 1) - (looking-at ":[^:]")))) - (setq this-indent (max 0 (+ this-indent c-label-offset)))) - ;; looking at a comment only line? - ((looking-at comment-start-skip) - ;; different indentation base on whether this is a col0 - ;; comment only line or not. also, if comment is in, or - ;; to the right of comment-column, the comment doesn't - ;; move - (progn - (skip-chars-forward " \t") - (setq this-indent - (if (>= (current-column) comment-column) - (current-column) - (c++-comment-offset - (bolp) - (+ this-indent - (if (save-excursion - (c++-backward-syntactic-ws - (car contain-stack)) - (memq (preceding-char) - '(nil ?\, ?\; ?} ?: ?{))) - 0 c-continued-statement-offset)) - ))))) - ;; looking at a friend declaration - ((looking-at "friend[ \t]") - (setq this-indent (+ this-indent c++-friend-offset))) - ;; looking at a close brace - ((= (following-char) ?}) - (setq this-indent (- this-indent c-indent-level))) - ;; looking at an open brace - ((= (following-char) ?{) - (setq this-indent - (+ this-indent c-brace-offset - (if (c++-at-top-level-p t (car contain-stack)) - 0 c-indent-level)))) - ;; check for continued statements - ((save-excursion - (c++-backward-syntactic-ws (car contain-stack)) - (and (not (c++-in-parens-p)) - (not (memq (preceding-char) '(nil ?\000 ?\; ?\} ?\: ?\{))) - (progn - (beginning-of-line) - (skip-chars-forward " \t") - (not (looking-at c++-class-key))))) - (setq this-indent - (+ this-indent - c-continued-statement-offset - ;; are we in a member init list? - (if (not (looking-at "[ \t]*:")) - (save-excursion - (let ((lim (car contain-stack))) - (c++-backward-syntactic-ws lim) - (while (and (< lim (point)) - (= (preceding-char) ?,)) - (beginning-of-line) - (c++-backward-syntactic-ws)) - (forward-line 1) - (beginning-of-line) - (if (looking-at "[ \t]*:") - (- (save-excursion - (skip-chars-forward " \t") - (point)) - (point)) - 0))) - 0) - ))) - ;; check for stream operator - ((looking-at "\\(<<\\|>>\\)") - (setq this-indent (c++-calculate-indent))) - ) ;; end-cond - ;; Put chosen indentation into effect. - (or (= (current-column) this-indent) - (= (following-char) ?\#) - (progn - (delete-region (point) (progn (beginning-of-line) (point))) - (indent-to this-indent))) - ;; Indent any comment following the text. - (or (looking-at comment-start-skip) - (if (re-search-forward - comment-start-skip - (c++-point 'eol) t) - (progn (indent-for-comment) - (beginning-of-line)))) - )))))) - -(defun c++-insert-header () - "Insert header denoting C++ code at top of buffer." - (interactive) - (save-excursion - (goto-char (point-min)) - (insert "// " - "This may look like C code, but it is really " - "-*- C++ -*-" - "\n\n"))) - -(defun c++-tame-comments () - "Backslashifies all untamed in comment regions found in the buffer. -This is a workaround for Emacs syntax bugs. This function is -unnecessary (and un-used automatically) if you are running a patched -Emacs. Untamed characters to escape are defined in the variable -`c++-untame-characters'." - (interactive) - ;; make the list into a valid charset, escaping where necessary - (let ((charset (concat "^" (mapconcat - (function - (lambda (char) - (if (memq char '(?\\ ?^ ?-)) - (concat "\\" (char-to-string char)) - (char-to-string char)))) - c++-untame-characters "")))) - (save-excursion - (beginning-of-buffer) - (while (not (eobp)) - (skip-chars-forward charset) - (if (and (not (zerop (following-char))) - (memq (c++-in-literal) '(c c++)) - (/= (preceding-char) ?\\ )) - (insert "\\")) - (if (not (eobp)) - (forward-char 1)))))) - -;; taken from match-paren.el. Author: unknown -(defun c++-match-paren () - "Jumps to the paren matching the one under point, if there is one." - (interactive) - (let ((parse-sexp-ignore-comments (memq 'v19 c++-emacs-features))) - (cond - ((looking-at "[\(\[{]") - (forward-sexp 1) - (backward-char)) - ((looking-at "[])}]") - (forward-char) - (backward-sexp 1)) - (t (message "Could not find matching paren."))))) - -(defun c++-forward-sexp (&optional arg) - "Safe forward-sexp call." - (interactive "_p") - (let ((parse-sexp-ignore-comments (memq 'v19 c++-emacs-features))) - (forward-sexp arg))) - -(defun c++-backward-sexp (&optional arg) - "Safe backward-sexp call." - (interactive "_p") - (let ((parse-sexp-ignore-comments (memq 'v19 c++-emacs-features))) - (backward-sexp arg))) - - -;; ====================================================================== -;; compatibility between emacsen -;; ====================================================================== - -;; This is the best we can do in vanilla GNU 18 emacsen. Note that the -;; following problems exist: -;; 1. We only look back to LIM, and that could place us inside a -;; literal if we are scanning backwards over lots of comments -;; 2. This can potentially get slower the larger LIM is -;; If anybody has a better solution, I'll all ears -(defun c++-backward-syntactic-ws-v18 (&optional lim) - "Skip backwards over syntactic whitespace. -Syntactic whitespace is defined as lexical whitespace, C and C++ style -comments, and preprocessor directives. Search no farther back than -optional LIM. If LIM is omitted, `beginning-of-defun' is used." - (let ((lim (or lim (c++-point 'bod))) - literal stop) - (if (and c++-backscan-limit - (> (- (point) lim) c++-backscan-limit)) - (setq lim (- (point) c++-backscan-limit))) - (while (not stop) - (skip-chars-backward " \t\n\r\f" lim) - ;; c++ comment - (if (eq (setq literal (c++-in-literal lim)) 'c++) - (progn - (skip-chars-backward "^/" lim) - (skip-chars-backward "/" lim) - (while (not (or (and (= (following-char) ?/) - (= (char-after (1+ (point))) ?/)) - (<= (point) lim))) - (skip-chars-backward "^/" lim) - (skip-chars-backward "/" lim))) - ;; c comment - (if (eq literal 'c) - (progn - (skip-chars-backward "^*" lim) - (skip-chars-backward "*" lim) - (while (not (or (and (= (following-char) ?*) - (= (preceding-char) ?/)) - (<= (point) lim))) - (skip-chars-backward "^*" lim) - (skip-chars-backward "*" lim)) - (or (bobp) (forward-char -1))) - ;; preprocessor directive - (if (eq literal 'pound) - (progn - (beginning-of-line) - (setq stop (<= (point) lim))) - ;; just outside of c block - (if (and (= (preceding-char) ?/) - (= (char-after (- (point) 2)) ?*)) - (progn - (skip-chars-backward "^*" lim) - (skip-chars-backward "*" lim) - (while (not (or (and (= (following-char) ?*) - (= (preceding-char) ?/)) - (<= (point) lim))) - (skip-chars-backward "^*" lim) - (skip-chars-backward "*" lim)) - (or (bobp) (forward-char -1))) - ;; none of the above - (setq stop t)))))))) - -;; This defun works well for Lemacs 19.4-7, which implemented a first -;; shot at doing this via a C built-in backward-syntactic-ws. This -;; has been obsoleted in future Lemacsen and in FSF19 -(defun c++-fast-backward-syntactic-ws-1 (&optional lim) - "Skip backwards over syntactic whitespace. -Syntactic whitespace is defined as lexical whitespace, C and C++ style -comments, and preprocessor directives. Search no farther back than -optional LIM. If LIM is omitted, `beginning-of-defun' is used." - (save-restriction - (let ((parse-sexp-ignore-comments t) - donep boi char - (lim (or lim (c++-point 'bod)))) - (if (< lim (point)) - (unwind-protect - (progn - (narrow-to-region lim (point)) - ;; cpp statements are comments for our purposes here - (if (eq major-mode 'c++-mode) - (modify-syntax-entry ?# "< b" c++-mode-syntax-table) - (modify-syntax-entry ?\n "> b" c++-c-mode-syntax-table) - (modify-syntax-entry ?# "< b" c++-c-mode-syntax-table)) - (while (not donep) - ;; if you're not running a patched XEmacs, the new byte - ;; compiler will complain about this function. ignore that - (backward-syntactic-ws) - (if (not (looking-at "#\\|/\\*\\|//\\|\n")) - (forward-char 1)) - (setq boi (c++-point 'boi) - char (char-after boi)) - (if (and char (= char ?#)) - (progn (goto-char boi) - (setq donep (<= (point) lim))) - (setq donep t)) - )) - ;; cpp statements are not comments anywhere else - (if (eq major-mode 'c++-mode) - (modify-syntax-entry ?# "." c++-mode-syntax-table) - (modify-syntax-entry ?\n " " c++-c-mode-syntax-table) - (modify-syntax-entry ?# "." c++-c-mode-syntax-table)))) - ))) - -;; This is the way it should be done for all post 19.7 Lemacsen and -;; for all FSF19 implementations -(defun c++-fast-backward-syntactic-ws-2 (&optional lim) - "Skip backwards over syntactic whitespace. -Syntactic whitespace is defined as lexical whitespace, C and C++ style -comments, and preprocessor directives. Search no farther back than -optional LIM. If LIM is omitted, `beginning-of-defun' is used." - (save-restriction - (let* ((lim (or lim (c++-point 'bod))) - (here lim)) - (if (< lim (point)) - (unwind-protect - (progn - (narrow-to-region lim (point)) - ;; cpp statements are comments for our purposes here - (if (eq major-mode 'c++-mode) - (modify-syntax-entry ?# "< b" c++-mode-syntax-table) - (modify-syntax-entry ?\n "> b" c++-c-mode-syntax-table) - (modify-syntax-entry ?# "< b" c++-c-mode-syntax-table)) - (while (/= here (point)) - (setq here (point)) - (forward-comment -1))) - ;; cpp statements are not comments everywhere else - (if (eq major-mode 'c++-mode) - (modify-syntax-entry ?# "." c++-mode-syntax-table) - (modify-syntax-entry ?\n " " c++-c-mode-syntax-table) - (modify-syntax-entry ?# "." c++-c-mode-syntax-table)))) - ))) - -;; This is the slow and ugly way, but its the best we can do in -;; vanilla GNU18 emacsen -(defun c++-in-literal-v18 (&optional lim) - "Determine if point is in a C++ ``literal''. -Return `c' if in a C-style comment, `c++' if in a C++ style comment, -`string' if in a string literal, `pound' if on a preprocessor line, or -nil if not in a comment at all. Optional LIM is used as the backward -limit of the search. If omitted, or nil, `c++-beginning-of-defun' is -used." - (save-excursion - (let* ((here (point)) - (state nil) - (match nil) - (backlim (or lim (c++-point 'bod)))) - (goto-char backlim) - (while (< (point) here) - (setq match - (and (re-search-forward "\\(/[/*]\\)\\|[\"']\\|\\(^[ \t]*#\\)" - here 'move) - (buffer-substring (match-beginning 0) (match-end 0)))) - (setq state - (cond - ;; no match - ((null match) nil) - ;; looking at the opening of a C++ style comment - ((string= "//" match) - (if (<= here (progn (end-of-line) (point))) 'c++)) - ;; looking at the opening of a C block comment - ((string= "/*" match) - (if (not (re-search-forward "*/" here 'move)) 'c)) - ;; looking at the opening of a double quote string - ((string= "\"" match) - (if (not (save-restriction - ;; this seems to be necessary since the - ;; re-search-forward will not work without it - (narrow-to-region (point) here) - (re-search-forward - ;; this regexp matches a double quote - ;; which is preceded by an even number - ;; of backslashes, including zero - "\\([^\\]\\|^\\)\\(\\\\\\\\\\)*\"" here 'move))) - 'string)) - ;; looking at the opening of a single quote string - ((string= "'" match) - (if (not (save-restriction - ;; see comments from above - (narrow-to-region (point) here) - (re-search-forward - ;; this matches a single quote which is - ;; preceded by zero or two backslashes. - "\\([^\\]\\|^\\)\\(\\\\\\\\\\)?'" - here 'move))) - 'string)) - ((string-match "[ \t]*#" match) - (if (<= here (progn (end-of-line) (point))) 'pound)) - (t nil))) - ) ; end-while - state))) - -;; This is for all 8-bit emacsen (Lucid 19, patched GNU18) -(defun c++-in-literal-8-bit (&optional lim) - "Determine if point is in a C++ ``literal''. -Return `c' if in a C-style comment, `c++' if in a C++ style comment, -`string' if in a string literal, `pound' if on a preprocessor line, or -nil if not in a comment at all. Optional LIM is used as the backward -limit of the search. If omitted, or nil, `c++-beginning-of-defun' is -used." - (save-excursion - (let* ((backlim (or lim (c++-point 'bod))) - (here (point)) - (parse-sexp-ignore-comments t) ; may not be necessary - (state (parse-partial-sexp backlim (point)))) - (cond - ((nth 3 state) 'string) - ((nth 4 state) (if (nth 7 state) 'c++ 'c)) - ((progn - (goto-char here) - (beginning-of-line) - (looking-at "[ \t]*#")) - 'pound) - (t nil))))) - -;; This is for all 1-bit emacsen (FSF19) -(defun c++-in-literal-1-bit (&optional lim) - "Determine if point is in a C++ ``literal''. -Return `c' if in a C-style comment, `c++' if in a C++ style comment, -`string' if in a string literal, `pound' if on a preprocessor line, or -nil if not in a comment at all. Optional LIM is used as the backward -limit of the search. If omitted, or nil, `c++-beginning-of-defun' is -used." - (save-excursion - (let* ((backlim (or lim (c++-point 'bod))) - (here (point)) - (parse-sexp-ignore-comments t) ; may not be necessary - (state (parse-partial-sexp backlim (point)))) - (cond - ((nth 3 state) 'string) - ((nth 4 state) (if (nth 7 state) 'c 'c++)) - ((progn - (goto-char here) - (beginning-of-line) - (looking-at "[ \t]*#")) - 'pound) - (t nil))))) - -(cond - ((memq 'old-v19 c++-emacs-features) - (fset 'c++-backward-syntactic-ws 'c++-fast-backward-syntactic-ws-1)) - ((memq 'v19 c++-emacs-features) - (fset 'c++-backward-syntactic-ws 'c++-fast-backward-syntactic-ws-2)) - (t - (fset 'c++-backward-syntactic-ws 'c++-backward-syntactic-ws-v18)) - ) -(cond - ((memq '8-bit c++-emacs-features) - (fset 'c++-in-literal 'c++-in-literal-8-bit)) - ((memq '1-bit c++-emacs-features) - (fset 'c++-in-literal 'c++-in-literal-1-bit)) - (t - (fset 'c++-in-literal 'c++-in-literal-v18)) - ) - - -;; ====================================================================== -;; defuns for parsing syntactic elements -;; ====================================================================== -(defun c++-parse-state (&optional limit) - "Determinate the syntactic state of the code at point. -Iteratively uses `parse-partial-sexp' from point to LIMIT and returns -the result of `parse-partial-sexp' at point. LIMIT is optional and -defaults to `point-max'." - (let ((limit (or limit (point-max))) - (parse-sexp-ignore-comments t) - state) - (while (< (point) limit) - (setq state (parse-partial-sexp (point) limit 0))) - state)) - -(defun c++-at-top-level-p (wrt &optional bod) - "Return t if point is not inside a containing C++ expression, nil -if it is embedded in an expression. When WRT is non-nil, returns nil -if not at the top level with respect to an enclosing class, or the -depth of class nesting at point. With WRT nil, returns nil if not at -the ``real'' top level. Optional BOD is the beginning of defun." - (save-excursion - (let ((indent-point (point)) - (case-fold-search nil) - state containing-sexp paren-depth - (bod (or bod (c++-point 'bod))) - foundp) - (goto-char bod) - (setq state (c++-parse-state indent-point) - containing-sexp (nth 1 state) - paren-depth (nth 0 state)) - (cond - ((eq major-mode 'c++-c-mode) - (and (null containing-sexp) 0)) - ((not wrt) - (null containing-sexp)) - ((null containing-sexp) 0) - ((c++-in-parens-p) nil) - (t - ;; calculate depth wrt containing (possibly nested) classes - (goto-char containing-sexp) - (while (and (setq foundp (re-search-backward - (concat "[;}]\\|" c++-class-key) - (point-min) t)) - (let ((bod (c++-point 'bod))) - (or (c++-in-literal bod) - (c++-in-parens-p bod) - ;; see if class key is inside a template spec - (and (looking-at c++-class-key) - (progn (skip-chars-backward " \t\n") - (memq (preceding-char) '(?, ?<)))))))) - (if (memq (following-char) '(?} ?\;)) - nil - (setq state (c++-parse-state containing-sexp)) - (and foundp - (not (nth 1 state)) - (nth 2 state) - paren-depth)) - ))))) - -(defun c++-in-parens-p (&optional lim) - "Return t if inside a paren expression. -Optional LIM is used as the backward limit of the search." - (let ((lim (or lim (c++-point 'bod)))) - (condition-case var - (save-excursion - (save-restriction - (narrow-to-region (point) lim) - (goto-char (point-max)) - (= (char-after (or (scan-lists (point) -1 1) - (point-min))) - ?\())) - (error nil) - ))) - -(defun c++-in-function-p (&optional containing) - "Return t if inside a C++ function definition. -Optional CONTAINING is position of containing s-exp open brace. If not -supplied, point is used as search start." - (save-excursion - (let ((here (if (not containing) - (point) - (goto-char containing) - (c++-backward-syntactic-ws) - (point)))) - (if (and (= (preceding-char) ?t) - (forward-word -1) - (looking-at "\\<const\\>")) - (c++-backward-syntactic-ws) - (goto-char here)) - (= (preceding-char) ?\))))) - - -;; ====================================================================== -;; defuns for calculating indentation -;; ====================================================================== -(defun c++-indent-line (&optional bod) - "Indent current line as C++ code. -Return the amount the indentation changed by. Optional BOD is the -point of the beginning of the C++ definition." - (let* ((bod (or bod (c++-point 'bod))) - (indent (c++-calculate-indent nil bod)) - beg shift-amt - close-paren top-close-paren - (case-fold-search nil) - (pos (- (point-max) (point)))) - ;; calculate block close paren offset - (if (listp c++-block-close-brace-offset) - (setq close-paren (car c++-block-close-brace-offset) - top-close-paren (cdr c++-block-close-brace-offset)) - (setq close-paren c++-block-close-brace-offset - top-close-paren c++-block-close-brace-offset)) - ;; now start cleanup - (beginning-of-line) - (setq beg (point)) - (cond - ((eq indent nil) - (setq indent (current-indentation))) - ((eq indent t) - (setq indent (c++-calculate-c-indent-within-comment))) - ((looking-at "[ \t]*#") - (setq indent 0)) - ((save-excursion - (back-to-indentation) - (looking-at "//\\|/\\*")) - ;; we've found a comment-only line. we now must try to determine - ;; if the line is a continuation from a comment on the previous - ;; line. we check to see if the comment starts in or to the - ;; right of comment-column and if so, we don't change its - ;; indentation. - (skip-chars-forward " \t") - (if (>= (current-column) comment-column) - (setq indent (current-column)) - (setq indent (c++-comment-offset (bolp) indent)))) - (t - (skip-chars-forward " \t") - (if (listp indent) (setq indent (car indent))) - (cond - ((looking-at c++-access-key) - (setq indent (+ indent c++-access-specifier-offset))) - ((looking-at "default[ \t]*:") - (setq indent (+ indent c-label-offset))) - ((or (looking-at "case[ \t]+.*:") - (and (looking-at "[A-Za-z]") - (save-excursion - (forward-sexp 1) - (looking-at ":[^:]")))) - (setq indent (max 1 (+ indent c-label-offset)))) - ((and (looking-at "else\\b") - (not (looking-at "else\\s_"))) - (setq indent (save-excursion - (c++-backward-to-start-of-if) - (back-to-indentation) - (skip-chars-forward "{ \t") - (current-column)))) - ((looking-at "\\<friend\\>") - (setq indent (+ indent c++-friend-offset))) - ((and (= (following-char) ?\)) - c++-paren-as-block-close-p) - (setq indent (+ (- indent c-indent-level) - (if (save-excursion - (forward-char 1) - (c++-at-top-level-p nil bod)) - top-close-paren - close-paren)))) - ((= (following-char) ?}) - (setq indent (+ (- indent c-indent-level) - (if (save-excursion - (forward-char 1) - (c++-at-top-level-p nil bod)) - top-close-paren - close-paren)))) - ((= (following-char) ?{) - (setq indent (+ indent c-brace-offset)))))) - (skip-chars-forward " \t") - (setq shift-amt (- indent (current-column))) - (if (zerop shift-amt) - (if (> (- (point-max) pos) (point)) - (goto-char (- (point-max) pos))) - (delete-region beg (point)) - (indent-to indent) - ;; If initial point was within line's indentation, - ;; position after the indentation. Else stay at same point in text. - (if (> (- (point-max) pos) (point)) - (goto-char (- (point-max) pos)))) - ;; save-excursion is necessary because things break if the hook - ;; changes point or mark - (save-excursion - (run-hooks 'c++-special-indent-hook)) - shift-amt)) - -(defun c++-cont-indent (ipnt char lim) - "Calculate the indentation for a continued statement. -IPNT is the indentation point; CHAR is the character before the -indentation point, excluding any intervening whitespace; LIM is the -minimum point to search backwards to." - (let ((charlist '(nil ?\000 ?\, ?\; ?\} ?\: ?\{)) - streamop-pos here) - (goto-char ipnt) - (c++-backward-syntactic-ws lim) - (if (not (memq char charlist)) - ;; This line is continuation of preceding line's statement - (progn - (c-backward-to-start-of-continued-exp lim) - ;; take care of << and >> while in streams - (setq here (point)) - (if (save-excursion - (and (progn (goto-char ipnt) - (looking-at "[ \t]*\\(<<\\|>>\\)")) - (progn (goto-char here) - (skip-chars-forward "^><\n") - (setq streamop-pos (current-column)) - (looking-at "\\(<<\\|>>\\)")))) - streamop-pos - (+ (current-column) - ;; prevent repeated continued indentation - (if (save-excursion - (beginning-of-line 1) - (c++-backward-syntactic-ws lim) - (memq (preceding-char) charlist)) - c-continued-statement-offset - ;; the following statements *do* indent even - ;; for single statements (are there others?) - (if (looking-at "\\(do\\|else\\|for\\|if\\|while\\)\\b") - c-continued-statement-offset - ;; else may be a continued statement inside - ;; a simple for/else/while/if/do loop - (beginning-of-line 1) - (forward-char -1) - (c++-backward-syntactic-ws lim) - (c-backward-to-start-of-continued-exp lim) - (if (looking-at "\\(do\\|else\\|for\\|if\\|while\\)\\b") - c-continued-statement-offset - 0))) - (save-excursion - (goto-char ipnt) - (skip-chars-forward " \t") - (cond - ((= (following-char) ?\{) - c-continued-brace-offset) - ((and (= (following-char) ?\}) - (progn (forward-char 1) - (c++-at-top-level-p nil lim))) - (- c-continued-statement-offset)) - (t 0)))))) - nil))) - -(defun c++-calculate-indent (&optional parse-start bod) - "Return appropriate indentation for current line as C++ code. -In usual case returns an integer: the column to indent to. -Returns nil if line starts inside a string, t if in a comment. -Optional PARSE-START is the location to start parsing, and optional -BOD is the beginning of the C++ definition." - (save-excursion - (beginning-of-line) - (let ((indent-point (point)) - (case-fold-search nil) - state do-indentation literal in-meminit-p - containing-sexp streamop-pos char-before-ip - (inclass-shift 0) inclass-depth inclass-unshift - (bod (or bod (c++-point 'bod)))) - (if parse-start - (goto-char parse-start) - (goto-char bod)) - (setq parse-start (point) - state (c++-parse-state indent-point) - containing-sexp (nth 1 state)) - ;; it is possible that c++-defun-header-weak could not find the - ;; beginning of the C++ definition. The following code attempts - ;; to work around this. It is probably better to just use - ;; c++-match-header-strongly, but there are performance questions - (if (null state) - (let* ((c++-match-header-strongly t) - (bod (c++-point 'bod))) - (goto-char bod) - (setq state (c++-parse-state indent-point) - containing-sexp (nth 1 state) - parse-start (point)))) - (setq literal (c++-in-literal bod)) - ;; cache char before indent point - (save-excursion - (goto-char indent-point) - (c++-backward-syntactic-ws bod) - (setq char-before-ip (preceding-char))) - (cond - ;; CASE 1: in a string. - ((memq literal '(string)) nil) - ;; CASE 2: in a C or C++ style comment. - ((memq literal '(c c++)) t) - ;; CASE 3: Line is at top level. May be comment-only line, - ;; data or function definition, or may be function argument - ;; declaration or member initialization. Indent like the - ;; previous top level line unless: - ;; - ;; 1. the previous line ends in a closeparen without - ;; semicolon, in which case this line is the first - ;; argument declaration or member initialization, or - ;; - ;; 2. the previous line ends with a closeparen - ;; (closebrace), optional spaces, and a semicolon, in - ;; which case this line follows a multiline function - ;; declaration (class definition), or - ;; - ;; 3. the previous line begins with a colon, in which - ;; case this is the second line of member inits. It is - ;; assumed that arg decls and member inits are not mixed. - ;; - ((setq inclass-depth (c++-at-top-level-p t bod)) - (+ - ;; add an offset if we are inside a class defun body, i.e. we - ;; are at the top level, but only wrt a containing class - (let ((shift/level (+ c-indent-level c-brace-imaginary-offset))) - (setq inclass-shift (* shift/level inclass-depth) - inclass-unshift (* shift/level (max 0 (1- inclass-depth)))) - inclass-shift) - (progn - (goto-char indent-point) - (skip-chars-forward " \t") - (cond - ;; - ((or (= (following-char) ?{) - (progn - (c++-backward-syntactic-ws parse-start) - (bobp))) - 0) - ;; first arg decl or member init - ((c++-in-function-p) - (goto-char indent-point) - (skip-chars-forward " \t") - (if (= (following-char) ?:) - c++-member-init-indent - c-argdecl-indent)) - ;; - ((progn - (if (= (preceding-char) ?\;) - (progn - (backward-char 1) - (skip-chars-backward " \t"))) - ;; may be first line after a hanging member init colon. - ;; check to be sure its not a scope operator meaning we - ;; are inside a member def - (or (= (preceding-char) ?:) - (save-excursion - (forward-line 1) - (skip-chars-forward " \t") - (or (eobp) (forward-char 1)) - (and (= (preceding-char) ?:) - (/= (following-char) ?:))) - (save-excursion - (and (= (preceding-char) ?,) - (let ((bol (c++-point 'bol))) - (skip-chars-backward "^:" bol) - (= (preceding-char) ?:)) - (not (c++-in-parens-p)) - (progn - (forward-char -1) - (skip-chars-backward " \t") - (not (bolp))) - ;; make sure its not a multiple inheritance - ;; continuation line - (progn - (beginning-of-line) - (not (looking-at c++-inher-key))) - )))) - ;; check to see if we're looking at a member init, or - ;; access specifier - (if (progn - (beginning-of-line) - (skip-chars-forward " \t") - (looking-at c++-access-key)) - ;; access specifier. class defun opening brace may - ;; not be in col zero, and derived classes could be - ;; on a separate line than class intro - (progn - (goto-char (or containing-sexp bod)) - (beginning-of-line) - (skip-chars-forward " \t") - (if (looking-at - ":[ \t]*\\<\\(public\\|protected\\|private\\)\\>") - (forward-line -1)) - (- (current-indentation) - ;; remove some nested inclass indentation - inclass-unshift)) - ;; member init, so add offset. add additional offset if - ;; looking at line with just a member init colon - (+ c++-member-init-indent - (if (looking-at ":[ \t]*$") - (or c++-continued-member-init-offset 0) 0)))) - ((or (= (preceding-char) ?}) - (= (preceding-char) ?\)) - (save-excursion - (beginning-of-line) - (looking-at "[ \t]*\\<friend\\>"))) - ;; indentation of class defun opening brace may not be - ;; zero - (goto-char (or containing-sexp bod)) - (- (current-indentation) - ;; remove some nested inclass indentation - inclass-unshift)) - ;; cont arg decls or member inits. we might be inside a - ;; K&R C arg decl - ((save-excursion - (while (and (< bod (point)) - (memq (preceding-char) '(?\, ?\;))) - (beginning-of-line) - (c++-backward-syntactic-ws bod)) - (and (eq major-mode 'c++-c-mode) - (= (preceding-char) ?\)))) - (+ c-argdecl-indent - (progn - (goto-char indent-point) - (c++-backward-syntactic-ws bod) - (if (= (preceding-char) ?,) - c-continued-statement-offset - 0)))) - ((progn - (beginning-of-line) - (skip-chars-forward " \t") - (or (memq (c++-in-literal bod) '(c c++)) - (looking-at "/[/*]"))) - 0) - ;; are we looking at the first member init? - ((and (= (following-char) ?:) - (save-excursion - (c++-backward-syntactic-ws bod) - (= (preceding-char) ?\)))) - (if c++-continued-member-init-offset - (+ (current-indentation) - c++-continued-member-init-offset) - (progn - (forward-char 1) - (skip-chars-forward " \t") - (- (current-column) - inclass-shift)))) - ;; else first check to see if its a multiple inheritance - ;; continuation line, but not a K&R C arg decl - ((and (not (eq major-mode 'c++-c-mode)) - (looking-at c++-inher-key)) - (if (= char-before-ip ?,) - (progn (goto-char (match-end 0)) - (current-column)) - ;; nope, its probably a nested class - 0)) - ;; we might be looking at the opening brace of a class - ;; defun - ((= (following-char) ?\{) - ;; indentation of opening brace may not be zero - (- (current-indentation) - ;; remove some nested inclass indentation - inclass-unshift)) - ((eolp) - ;; looking at a blank line, indent next line to zero - 0) - ;; at beginning of buffer, if nothing else, indent to zero - ((save-excursion - (goto-char indent-point) - (beginning-of-line) - (bobp)) - 0) - ;; this could be a compound statement, but make sure its - ;; not a member init list - ((save-excursion - (goto-char indent-point) - (c++-backward-syntactic-ws bod) - (and (= (preceding-char) ?,) - (save-excursion - (while (and (< bod (point)) - (= (preceding-char) ?,)) - (beginning-of-line) - (c++-backward-syntactic-ws bod)) - (forward-line 1) - (not (setq in-meminit-p (looking-at "[ \t]*:")))))) - c-continued-statement-offset) - (t - (if (c++-in-parens-p) - ;; we are perhaps inside a member init call - (while (and (c++-in-parens-p) - (< bod (point))) - (forward-line -1) - (skip-chars-forward " \t"))) - ;; check to be sure that we're not on the first line of - ;; the member init list - (if (and (= (following-char) ?:) - (save-excursion - (c++-backward-syntactic-ws bod) - (= (preceding-char) ?\)))) - (progn - (forward-char 1) - (skip-chars-forward " \t"))) - ;; skip to start of compound statement, but only if we're - ;; not in a member initialization list - (if (not in-meminit-p) - (let ((ipnt (point))) - (c++-backward-syntactic-ws bod) - (while (and (= (preceding-char) ?,) - (< bod (point))) - (beginning-of-line) - (skip-chars-forward " \t") - (setq ipnt (point)) - (c++-backward-syntactic-ws bod)) - (goto-char ipnt))) - ;; subtract inclass-shift since its already incorporated - ;; by default in current-column - (- (current-column) inclass-shift) - ))))) - ;; CASE 4: line is expression, not statement. indent to just - ;; after the surrounding open -- unless empty arg list, in - ;; which case we do what c++-empty-arglist-indent says to do. - ((/= (char-after containing-sexp) ?{) - (if (and c++-empty-arglist-indent - (or c++-always-arglist-indent-p - (null (nth 2 state)) - ;; indicates empty arg list. Use a heuristic: if - ;; the first non-whitespace following left paren - ;; on same line is not a comment, is not an empty - ;; arglist. - (save-excursion - (goto-char (1+ containing-sexp)) - (looking-at "[ \t]*[/\n]")))) - (progn - (goto-char containing-sexp) - (beginning-of-line) - (skip-chars-forward " \t") - (goto-char (min (+ (point) c++-empty-arglist-indent) - (1+ containing-sexp))) - (current-column)) - ;; In C-mode, we would always indent to one after the - ;; left paren. Here, though, we may have an - ;; empty-arglist, so we'll indent to the min of that - ;; and the beginning of the first argument. - (goto-char (1+ containing-sexp)) - ;; we want to skip any whitespace b/w open paren and - ;; first argument. this handles while (thing) style - ;; and while( thing ) style - (skip-chars-forward " \t") - (current-column))) - ;; CASE 5: Statement. Find previous non-comment character. - (t - (or (c++-cont-indent indent-point char-before-ip containing-sexp) - ;; This line may start a new statement, or it could - ;; represent the while closure of a do/while construct - (if (save-excursion - (and (progn (goto-char indent-point) - (skip-chars-forward " \t\n") - (looking-at "while\\b")) - (progn - (c++-backward-to-start-of-do containing-sexp) - (looking-at "do\\b")) - (setq do-indentation (current-column)))) - do-indentation - ;; this could be a case statement. if so we want to - ;; indent it like the first case statement after a switch - (if (save-excursion - (goto-char indent-point) - (skip-chars-forward " \t\n") - (looking-at "\\(case[ \t]+.*\\|default[ \t]*\\):")) - (progn - (goto-char containing-sexp) - (back-to-indentation) - (+ (current-column) c-indent-level)) - ;; else, this is the start of a new statement - ;; Position following last unclosed open. - (goto-char containing-sexp) - ;; Is line first statement after an open-brace? - (or - (and c++-relative-offset-p - ;; If no, find that first statement and - ;; indent like it. - (save-excursion - (forward-char 1) - (while - (progn - (skip-chars-forward " \t\n") - (looking-at - (concat - "#\\|/\\*\\|//" - "\\|\\(case[ \t]+.*\\|default[ \t]*\\):" - "\\|[a-zA-Z0-9_$]*:[^:]" - "\\|friend[ \t]" - c++-class-key - "[ \t]"))) - ;; Skip over comments and labels - ;; following openbrace. - (cond - ((= (following-char) ?\#) - (forward-line 1)) - ((looking-at "/\\*") - (search-forward "*/" nil 'move)) - ((looking-at - (concat "//\\|friend[ \t]" c++-class-key - "[ \t]")) - (forward-line 1)) - ((looking-at "\\(case[ \t]+.*\\|default[ \t]*\\):") - (forward-line 1)) - (t - (re-search-forward ":[^:]" nil 'move)))) - ;; The first following code counts - ;; if it is before the line we want to indent. - (and (< (point) indent-point) - (+ (current-column) - (c++-compound-offset - char-before-ip containing-sexp bod))))) - ;; If no previous statement, indent it relative to - ;; line brace is on. For open brace in column - ;; zero, don't let statement start there too. If - ;; c-indent-offset is zero, use c-brace-offset + - ;; c-continued-statement-offset instead. For - ;; open-braces not the first thing in a line, add - ;; in c-brace-imaginary-offset. - (+ (if (and (bolp) (zerop c-indent-level)) - (+ c-brace-offset c-continued-statement-offset) - c-indent-level) - ;; Move back over whitespace before the openbrace. - ;; If openbrace is not first nonwhite thing on the line, - ;; add the c-brace-imaginary-offset. - (progn (skip-chars-backward " \t") - (if (bolp) 0 c-brace-imaginary-offset)) - ;; If the openbrace is preceded by a parenthesized exp, - ;; move to the beginning of that; - ;; possibly a different line - (progn - (if (eq (preceding-char) ?\)) - (forward-sexp -1)) - ;; Get initial indentation of the line we are on. - (current-indentation)))))))) ; end t outer cond - )))) - -(defun c++-calculate-c-indent-within-comment () - "Return the indentation amount for line, assuming that -the current line is to be regarded as part of a block comment." - (let (end stars indent) - (save-excursion - (beginning-of-line) - (skip-chars-forward " \t") - (setq stars (if (looking-at "\\*\\*?") - (- (match-end 0) (match-beginning 0)) - 0)) - (skip-chars-backward " \t\n") - (setq end (point)) - (beginning-of-line) - (skip-chars-forward " \t") - (if (re-search-forward "/\\*[ \t]*" end t) - (goto-char (+ (match-beginning 0) - (cond - (c++-C-block-comments-indent-p 0) - ((= stars 1) 1) - ((= stars 2) 0) - (t (- (match-end 0) (match-beginning 0))))))) - (current-column)))) - -(defun c++-comment-offset (col0-line-p indent) - "Calculates and returns the comment-only line offset. -Offset is based on the value of `c++-comment-only-line-offset', the -argument COL0-LINE-P, and the current indentation INDENT." - (let ((offset 0)) - (if col0-line-p - ;; col0 means we need to look at the second member of the var's - ;; list value. if value is not a list, then zero is used - (if (listp c++-comment-only-line-offset) - ;; it is a list, so second element must be nil or a number - (setq offset - (+ indent - (or (car (cdr c++-comment-only-line-offset)) - (car c++-comment-only-line-offset))))) - ;; not in column zero so indentation is car or value of variable - (setq offset - (+ indent - (if (listp c++-comment-only-line-offset) - (car c++-comment-only-line-offset) - c++-comment-only-line-offset)))) - offset)) - -(defun c++-compound-offset (char-before-ip containing-sexp bod) - "Calculates any addition offset due a comma separated compound statement. -CHAR-BEFORE-IP is the character before the indentation point and -CONTAINING-SEXP is the buffer position of the open brace or paren. -BOD is the `beginning-of-defun' point." - (cond - ;; not a compound statement - ((/= char-before-ip ?,) 0) - ;; open brace could be at column zero == bod - ((and (= containing-sexp bod) - (or (let ((lim (progn - (goto-char containing-sexp) - (forward-line -1) - (point)))) - (end-of-line) - (c++-backward-syntactic-ws lim) - (= (preceding-char) ?=)) - (progn - (beginning-of-line) - (looking-at "\\(^\\|[ \t]*\\)enum[ \t]")) - )) - 0) - ;; check for inside an enum - ((let ((parse-sexp-ignore-comments t) - in-enum-p) - (goto-char containing-sexp) - (while (< bod (point)) - (c++-backward-syntactic-ws) - (if (memq (preceding-char) '(?\) ?\" ?\; ?\})) - (goto-char bod) - (forward-sexp -1) - (if (looking-at "\\(enum[ \t\n]\\|\\[.*\\]\\)") - (progn (goto-char bod) - (setq in-enum-p t))))) - in-enum-p) - 0) - ;; assume we're not in a list of enums or static array elems - (t c-continued-statement-offset) - )) - - - -;; ====================================================================== -;; defuns to look backwards for things -;; ====================================================================== - -(defun c++-backward-to-start-of-do (&optional limit) - "Move to the start of the last ``unbalanced'' do." - (let ((do-level 1) - (case-fold-search nil) - (limit (or limit (c++-point 'bod)))) - (while (not (zerop do-level)) - ;; we protect this call because trying to execute this when the - ;; while is not associated with a do will throw an error - (condition-case err - (progn - (backward-sexp 1) - (cond - ((memq (c++-in-literal limit) '(c c++))) - ((looking-at "while\\b") - (setq do-level (1+ do-level))) - ((looking-at "do\\b") - (setq do-level (1- do-level))) - ((< (point) limit) - (setq do-level 0) - (goto-char limit)))) - (error - (goto-char limit) - (setq do-level 0)))))) - -(defun c++-backward-to-start-of-if (&optional limit) - "Move to the start of the last ``unbalanced'' if." - (let ((if-level 1) - (case-fold-search nil) - (limit (or limit (c++-point 'bod)))) - (while (and (not (bobp)) - (not (zerop if-level))) - (c++-backward-syntactic-ws) - (c++-backward-sexp 1) - (cond ((looking-at "else\\b") - (setq if-level (1+ if-level))) - ((looking-at "if\\b") - (setq if-level (1- if-level))) - ((< (point) limit) - (setq if-level 0) - (goto-char limit)))))) - -(defun c++-auto-newline () - "Insert a newline iff we're not in a literal. -Literals are defined as being inside a C or C++ style comment or open -string according to mode's syntax." - (let ((bod (c++-point 'bod))) - (and c++-auto-newline - (not (c++-in-literal bod)) - (not (newline))))) - -(defun c++-point (position) - "Returns the value of point at certain commonly referenced POSITIONs. -POSITION can be one of the following symbols: - `bol' -- beginning of line - `eol' -- end of line - `bod' -- beginning of defun - `boi' -- back to indentation -This function does not modify point or mark." - (let ((here (point)) bufpos) - (cond - ((eq position 'bol) (beginning-of-line)) - ((eq position 'eol) (end-of-line)) - ((eq position 'bod) (c++-beginning-of-defun)) - ((eq position 'boi) (back-to-indentation)) - ) - (setq bufpos (point)) - (goto-char here) - bufpos)) - - -;; ====================================================================== -;; defuns for "macroizations" -- making C++ parameterized types via macros -;; ====================================================================== -(defun c++-macroize-region (from to arg) - "Insert backslashes at end of every line in region. -Useful for defining cpp macros. If called with a prefix argument, -it will remove trailing backslashes." - (interactive "r\nP") - (save-excursion - (goto-char from) - (beginning-of-line 1) - (let ((line (count-lines (point-min) (point))) - (to-line (save-excursion (goto-char to) - (count-lines (point-min) (point))))) - (while (< line to-line) - (c++-backslashify-current-line (null arg)) - (forward-line 1) (setq line (1+ line)))))) - -(defun c++-backslashify-current-line (doit) - "Backslashifies current line." - (end-of-line 1) - (cond - (doit - ;; Note that "\\\\" is needed to get one backslash. - (if (not (save-excursion (forward-char -1) (looking-at "\\\\"))) - (progn - (if (>= (current-column) c++-default-macroize-column) - (insert " \\") - (while (<= (current-column) c++-default-macroize-column) - (insert "\t") (end-of-line)) - (delete-char -1) - (while (< (current-column) c++-default-macroize-column) - (insert " ") (end-of-line)) - (insert "\\"))))) - (t - (forward-char -1) - (if (looking-at "\\\\") - (progn (skip-chars-backward " \t") - (kill-line)))))) - - -;; ====================================================================== -;; defuns for commenting out multiple lines. -;; ====================================================================== -(defun c++-comment-region (beg end) - "Comment out all lines in a region between mark and current point by -inserting `comment-start' in front of each line." - (interactive "*r") - (save-excursion - (save-restriction - (narrow-to-region - (progn (goto-char beg) (beginning-of-line) (point)) - (progn (goto-char end) (or (bolp) (forward-line 1)) (point))) - (goto-char (point-min)) - (while (not (eobp)) - (insert comment-start) - (forward-line 1)) - (if (eq major-mode 'c++-c-mode) - (insert comment-end))))) - -(defun c++-uncomment-region (beg end) - "Uncomment all lines in region between mark and current point by deleting -the leading ``// '' from each line, if any." - (interactive "*r") - (save-excursion - (save-restriction - (narrow-to-region - (progn (goto-char beg) (beginning-of-line) (point)) - (progn (goto-char end) (forward-line 1) (point))) - (goto-char (point-min)) - (let ((comment-regexp - (if (eq major-mode 'c++-c-mode) - (concat "\\s *\\(" (regexp-quote comment-start) - "\\|" (regexp-quote comment-end) - "\\)") - (concat "\\s *" (regexp-quote comment-start))))) - (while (not (eobp)) - (if (looking-at comment-regexp) - (delete-region (match-beginning 0) (match-end 0))) - (forward-line 1)))))) - - -;; ====================================================================== -;; grammar parsing -;; ====================================================================== - -;;; Below are two regular expressions that attempt to match defuns -;;; "strongly" and "weakly." The strong one almost reconstructs the -;;; grammar of C++; the weak one just figures anything id or curly on -;;; the left begins a defun. The constant "c++-match-header-strongly" -;;; determines which to use; the default is the weak one. - -(defvar c++-match-header-strongly nil - "*If nil, use `c++-defun-header-weak' to identify beginning of definitions, -if non-nil, use `c++-defun-header-strong'.") - -(defvar c++-defun-header-strong-struct-equivs - "\\(class\\|struct\\|union\\|enum\\)" - "Regexp to match names of structure declaration blocks in C++") - -(defconst c++-defun-header-strong - (let* - (; valid identifiers - ;; There's a real weirdness here -- if I switch the below - (id "\\(\\w\\|_\\)+") - ;; to be - ;; (id "\\(_\\|\\w\\)+") - ;; things no longer work right. Try it and see! - - ; overloadable operators - (op-sym1 - "[---+*/%^&|~!=<>]\\|[---+*/%^&|<>=!]=\\|<<=?\\|>>=?") - (op-sym2 - "&&\\|||\\|\\+\\+\\|--\\|()\\|\\[\\]") - (op-sym (concat "\\(" op-sym1 "\\|" op-sym2 "\\)")) - ; whitespace - (middle "[^\\*]*\\(\\*+[^/\\*][^\\*]*\\)*") - (c-comment (concat "/\\*" middle "\\*+/")) - (wh (concat "\\(\\s \\|\n\\|//.*$\\|" c-comment "\\)")) - (wh-opt (concat wh "*")) - (wh-nec (concat wh "+")) - (oper (concat "\\(" "operator" "\\(" - wh-opt op-sym "\\|" wh-nec id "\\)" "\\)")) - (dcl-list "([^():]*)") - (func-name (concat "\\(" oper "\\|" id "::" id "\\|" id "\\)")) - (inits - (concat "\\(:" - "\\(" wh-opt id "(.*\\()" wh-opt "," "\\)\\)*" - wh-opt id "(.*)" wh-opt "{" - "\\|" wh-opt "{\\)")) - (type-name (concat - "\\(" c++-defun-header-strong-struct-equivs wh-nec "\\)?" - id)) - (type (concat "\\(const" wh-nec "\\)?" - "\\(" type-name "\\|" type-name wh-opt "\\*+" "\\|" - type-name wh-opt "&" "\\)")) - (modifier "\\(inline\\|virtual\\|overload\\|auto\\|static\\)") - (modifiers (concat "\\(" modifier wh-nec "\\)*")) - (func-header - ;; type arg-dcl - (concat modifiers type wh-nec func-name wh-opt dcl-list wh-opt inits)) - (inherit (concat "\\(:" wh-opt "\\(public\\|protected\\|private\\)?" - wh-nec id "\\)")) - (cs-header (concat - c++-defun-header-strong-struct-equivs - wh-nec id wh-opt inherit "?" wh-opt "{"))) - (concat "^\\(" func-header "\\|" cs-header "\\)")) - "Strongly-defined regexp to match beginning of structure or -function definition.") - - -;; This part has to do with recognizing defuns. - -;; The weak convention we will use is that a defun begins any time -;; there is a left curly brace, or some identifier on the left margin, -;; followed by a left curly somewhere on the line. (This will also -;; incorrectly match some continued strings, but this is after all -;; just a weak heuristic.) Suggestions for improvement (short of the -;; strong scheme shown above) are welcomed. - -(defconst c++-defun-header-weak "^{\\|^[_a-zA-Z].*{" - "Weakly-defined regexp to match beginning of structure or function -definition.") - - -(defun c++-beginning-of-defun (&optional arg) - "Find the beginning of the C++ function or class." - (interactive "_p") - (if (not arg) (setq arg 1)) - (let ((c++-defun-header (if c++-match-header-strongly - c++-defun-header-strong - c++-defun-header-weak))) - (cond - ((or (= arg 0) (and (> arg 0) (bobp))) nil) - ((and (not (looking-at c++-defun-header)) - (let ((curr-pos (point)) - (open-pos (if (search-forward "{" nil 'move) - (point))) - (beg-pos - (if (re-search-backward c++-defun-header nil 'move) - (match-beginning 0)))) - (if (and open-pos beg-pos - (< beg-pos curr-pos) - (> open-pos curr-pos)) - (progn - (goto-char beg-pos) - (if (= arg 1) t nil));; Are we done? - (goto-char curr-pos) - nil)))) - (t - (if (and (looking-at c++-defun-header) (not (bobp))) - (forward-char (if (< arg 0) 1 -1))) - (and (re-search-backward c++-defun-header nil 'move (or arg 1)) - (goto-char (match-beginning 0))))))) - - -(defun c++-end-of-defun (arg) - "Find the end of the C++ function or class." - (interactive "_p") - (let ((c++-defun-header (if c++-match-header-strongly - c++-defun-header-strong - c++-defun-header-weak)) - (parse-sexp-ignore-comments t)) - (if (and (eobp) (> arg 0)) - nil - (if (and (> arg 0) (looking-at c++-defun-header)) (forward-char 1)) - (let ((pos (point))) - (c++-beginning-of-defun - (if (< arg 0) - (- (- arg (if (eobp) 0 1))) - arg)) - (if (and (< arg 0) (bobp)) - t - (if (re-search-forward c++-defun-header nil 'move) - (progn (forward-char -1) - (forward-sexp) - (beginning-of-line 2))) - (if (and (= pos (point)) - (re-search-forward c++-defun-header nil 'move)) - (c++-end-of-defun 1)))) - t))) - -(defun c++-indent-defun () - "Indents the current function def, struct or class declaration." - (interactive) - (let ((restore (point))) - (c++-end-of-defun 1) - (beginning-of-line 1) - (let ((end (point-marker))) - (c++-beginning-of-defun) - (while (and (< (point) end)) - (c++-indent-line) - (forward-line 1) - (beginning-of-line 1)) - (set-marker end nil)) - (goto-char restore))) - - -;; ====================================================================== -;; defuns for submitting bug reports -;; ====================================================================== -(defconst c++-version "2.353" - "c++-mode version number.") -(defconst c++-mode-help-address "c++-mode-help@anthem.nlm.nih.gov" - "Address accepting submission of bug reports.") - -(defun c++-version () - "Echo the current version of c++-mode." - (interactive) - (message "Using c++-mode.el %s" c++-version)) - -(defun c++-submit-bug-report () - "Submit via mail a bug report on c++-mode." - (interactive) - (require 'reporter) - (and - (y-or-n-p "Do you want to submit a report on c++-mode? ") - (reporter-submit-bug-report - c++-mode-help-address - (concat "c++-mode.el " c++-version " (editing " - (if (eq major-mode 'c++-mode) "C++" "C") - " code)") - (list - 'c++-emacs-features - 'c++-C-block-comments-indent-p - 'c++-access-specifier-offset - 'c++-always-arglist-indent-p - 'c++-auto-hungry-initial-state - 'c++-auto-hungry-toggle - 'c++-auto-newline - 'c++-backscan-limit - 'c++-block-close-brace-offset - 'c++-cleanup-list - 'c++-comment-only-line-offset - 'c++-continued-member-init-offset - 'c++-default-macroize-column - 'c++-defun-header-strong-struct-equivs - 'c++-delete-function - 'c++-electric-pound-behavior - 'c++-empty-arglist-indent - 'c++-friend-offset - 'c++-hanging-braces - 'c++-hanging-member-init-colon - 'c++-hungry-delete-key - 'c++-match-header-strongly - 'c++-member-init-indent - 'c++-paren-as-block-close-p - 'c++-relative-offset-p - 'c++-tab-always-indent - 'c++-untame-characters - 'c-argdecl-indent - 'c-brace-imaginary-offset - 'c-brace-offset - 'c-continued-brace-offset - 'c-continued-statement-offset - 'c-indent-level - 'c-label-offset - 'tab-width - ) - (function - (lambda () - (insert - (if c++-special-indent-hook - (concat "\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n" - "c++-special-indent-hook is set to '" - (format "%s" c++-special-indent-hook) - ".\nPerhaps this is your problem?\n" - "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n") - "\n") - ))) - ))) - - -;; this is sometimes useful -(provide 'c++-mode) - -;;; c++-mode.el ends here
--- a/lisp/modes/old-c-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1682 +0,0 @@ -;;; c-mode.el --- C code editing commands for Emacs -;; Copyright (C) 1985, 86, 87, 92, 94, 95 Free Software Foundation, Inc. - -;; Maintainer: FSF -;; Keywords: c - -;; 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: FSF 19.30. - -;;; Commentary: - -;; A smart editing mode for C code. It knows a lot about C syntax and tries -;; to position the cursor according to C layout conventions. You can -;; change the details of the layout style with option variables. Load it -;; and do M-x describe-mode for details. - -;;; Code: - -(defvar c-mode-abbrev-table nil - "Abbrev table in use in C mode.") -(define-abbrev-table 'c-mode-abbrev-table ()) - -(defvar c-mode-map () - "Keymap used in C mode.") -;; XEmacs change: if cc-mode is loaded, then override its keymap. -;; otherwise things will be really screwed up. -(if (or (null c-mode-map) (featurep 'cc-mode)) - (progn - (setq c-mode-map (make-sparse-keymap)) - (set-keymap-name c-mode-map 'c-mode-map) - (define-key c-mode-map "{" 'electric-c-brace) - (define-key c-mode-map "}" 'electric-c-brace) - (define-key c-mode-map ";" 'electric-c-semi) - (define-key c-mode-map "#" 'electric-c-sharp-sign) - (define-key c-mode-map ":" 'electric-c-terminator) - (define-key c-mode-map "\e{" 'c-insert-braces) - ;; Commented out electric square brackets because nobody likes them. - ;;(define-key c-mode-map "[" 'c-insert-brackets) - (define-key c-mode-map "\e\C-h" 'mark-c-function) - (define-key c-mode-map "\e\C-q" 'indent-c-exp) - (define-key c-mode-map "\ea" 'c-beginning-of-statement) - (define-key c-mode-map "\ee" 'c-end-of-statement) - (define-key c-mode-map "\C-c\C-n" 'c-forward-conditional) - (define-key c-mode-map "\C-c\C-p" 'c-backward-conditional) - (define-key c-mode-map "\C-c\C-u" 'c-up-conditional) - (define-key c-mode-map "\177" 'backward-delete-char-untabify) - (define-key c-mode-map "\t" 'c-indent-command))) - -(defvar c-mode-popup-menu - (purecopy '("C Menu" - ["Comment Out Region" comment-region (region-exists-p)] - ["Macro Expand Region" c-macro-expand (region-exists-p)] - ["Backslashify" c-backslash-region (region-exists-p)] - "---" - ["Indent Expression" indent-c-exp t] - ["Indent Line" c-indent-command t] - ["Fill Comment Paragraph" c-fill-paragraph t] - "---" - ["Highlight Conditionals" cpp-highlight-buffer 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] - ))) - -(defvar c-mode-menubar-menu - (purecopy (cons "C" (cdr c-mode-popup-menu)))) - -;; cmacexp is lame because it uses no preprocessor symbols. -;; It isn't very extensible either -- hardcodes /lib/cpp. -(autoload 'c-macro-expand "cmacexp" - "Display the result of expanding all C macros occurring in the region. -The expansion is entirely correct because it uses the C preprocessor." - t) - -(defvar c-mode-syntax-table nil - "Syntax table in use in C-mode buffers.") - -(if c-mode-syntax-table - () - (setq c-mode-syntax-table (make-syntax-table)) - (modify-syntax-entry ?\\ "\\" c-mode-syntax-table) - (modify-syntax-entry ?/ ". 14" c-mode-syntax-table) - (modify-syntax-entry ?* ". 23" c-mode-syntax-table) - (modify-syntax-entry ?+ "." c-mode-syntax-table) - (modify-syntax-entry ?- "." c-mode-syntax-table) - (modify-syntax-entry ?= "." c-mode-syntax-table) - (modify-syntax-entry ?% "." c-mode-syntax-table) - (modify-syntax-entry ?< "." c-mode-syntax-table) - (modify-syntax-entry ?> "." c-mode-syntax-table) - (modify-syntax-entry ?& "." c-mode-syntax-table) - (modify-syntax-entry ?| "." c-mode-syntax-table) - (modify-syntax-entry ?\' "\"" c-mode-syntax-table)) - -(defvar c-indent-level 2 - "*Indentation of C statements with respect to containing block.") -(defvar c-brace-imaginary-offset 0 - "*Imagined indentation of a C open brace that actually follows a statement.") -(defvar c-brace-offset 0 - "*Extra indentation for braces, compared with other text in same context.") -(defvar c-argdecl-indent 5 - "*Indentation level of declarations of C function arguments.") -(defvar c-label-offset -2 - "*Offset of C label lines and case statements relative to usual indentation.") -(defvar c-continued-statement-offset 2 - "*Extra indent for lines not starting new statements.") -(defvar c-continued-brace-offset 0 - "*Extra indent for substatements that start with open-braces. -This is in addition to `c-continued-statement-offset'.") -(defconst c-style-alist - '(("GNU" - (c-indent-level . 2) - (c-argdecl-indent . 5) - (c-brace-offset . 0) - (c-continued-brace-offset . 0) - (c-label-offset . -2) - (c-continued-statement-offset . 2)) - ("K&R" - (c-indent-level . 5) - (c-argdecl-indent . 0) - (c-brace-offset . 0) - (c-continued-brace-offset . -5) - (c-label-offset . -5) - (c-continued-statement-offset . 5)) - ("BSD" - (c-indent-level . 4) - (c-argdecl-indent . 4) - (c-brace-offset . 0) - (c-continued-brace-offset . -4) - (c-label-offset . -4) - (c-continued-statement-offset . 4)) - ("C++" - (c-indent-level . 4) - (c-argdecl-indent . 0) - (c-brace-offset . 0) - (c-continued-brace-offset . -4) - (c-label-offset . -4) - (c-continued-statement-offset . 4) - (c-auto-newline . t)) - ("Whitesmith" - (c-indent-level . 4) - (c-argdecl-indent . 4) - (c-brace-offset . 0) - (c-continued-brace-offset . 0) - (c-label-offset . -4) - (c-continued-statement-offset . 4)))) - -(defvar c-auto-newline nil - "*Non-nil means automatically newline before and after braces, -and after colons and semicolons, inserted in C code. -If you do not want a leading newline before braces then use: - (define-key c-mode-map \"{\" 'electric-c-semi)") - -(defvar c-tab-always-indent t - "*Non-nil means TAB in C mode should always reindent the current line, -regardless of where in the line point is when the TAB command is used.") - -;;; Regular expression used internally to recognize labels in switch -;;; statements. -(defvar c-switch-label-regexp (purecopy "case[ \t'/(]\\|default[ \t]*:")) - -;;; This is actually the expression for C++ mode, but it's used for C too. -;(defvar c-imenu-generic-expression -; (` -; ((nil -; (, -; (concat -; "^" ; beginning of line is required -; "\\(template[ \t]*<[^>]+>[ \t]*\\)?" ; there may be a "template <...>" -; "\\([a-zA-Z0-9_:]+[ \t]+\\)?" ; type specs; there can be no -; "\\([a-zA-Z0-9_:]+[ \t]+\\)?" ; more than 3 tokens, right? -; -; "\\(" ; last type spec including */& -; "[a-zA-Z0-9_:]+" -; "\\([ \t]*[*&]+[ \t]*\\|[ \t]+\\)" ; either pointer/ref sign or whitespace -; "\\)?" ; if there is a last type spec -; "\\(" ; name; take that into the imenu entry -; "[a-zA-Z0-9_:~]+" ; member function, ctor or dtor... -; ; (may not contain * because then -; ; "a::operator char*" would become "char*"!) -; "\\|" -; "\\([a-zA-Z0-9_:~]*::\\)?operator" -; "[^a-zA-Z1-9_][^(]*" ; ...or operator -; " \\)" -; "[ \t]*([^)]*)[ \t\n]*[^ ;]" ; require something other than a ; after -; ; the (...) to avoid prototypes. Can't -; ; catch cases with () inside the parentheses -; ; surrounding the parameters -; ; (like "int foo(int a=bar()) {...}" -; -; )) 6) -; ("Class" -; (, (concat -; "^" ; beginning of line is required -; "\\(template[ \t]*<[^>]+>[ \t]*\\)?" ; there may be a "template <...>" -; "class[ \t]+" -; "\\([a-zA-Z0-9_]+\\)" ; this is the string we want to get -; "[ \t]*[:{]" -; )) 2) -;;; Example of generic expression for finding prototypes, structs, unions, enums. -;;; Uncomment if you want to find these too. It will be a bit slower gathering -;;; the indexes. -;; ("Prototypes" -;; (, -;; (concat -;; "^" ; beginning of line is required -;; "\\(template[ \t]*<[^>]+>[ \t]*\\)?" ; there may be a "template <...>" -;; "\\([a-zA-Z0-9_:]+[ \t]+\\)?" ; type specs; there can be no -;; "\\([a-zA-Z0-9_:]+[ \t]+\\)?" ; more than 3 tokens, right? -; -;; "\\(" ; last type spec including */& -;; "[a-zA-Z0-9_:]+" -;; "\\([ \t]*[*&]+[ \t]*\\|[ \t]+\\)" ; either pointer/ref sign or whitespace -;; "\\)?" ; if there is a last type spec -;; "\\(" ; name; take that into the imenu entry -;; "[a-zA-Z0-9_:~]+" ; member function, ctor or dtor... -;; ; (may not contain * because then -;; ; "a::operator char*" would become "char*"!) -;; "\\|" -;; "\\([a-zA-Z0-9_:~]*::\\)?operator" -;; "[^a-zA-Z1-9_][^(]*" ; ...or operator -;; " \\)" -;; "[ \t]*([^)]*)[ \t\n]*;" ; require ';' after -;; ; the (...) Can't -;; ; catch cases with () inside the parentheses -;; ; surrounding the parameters -;; ; (like "int foo(int a=bar());" -;; )) 6) -;; ("Struct" -;; (, (concat -;; "^" ; beginning of line is required -;; "\\(static[ \t]+\\)?" ; there may be static or const. -;; "\\(const[ \t]+\\)?" -;; "struct[ \t]+" -;; "\\([a-zA-Z0-9_]+\\)" ; this is the string we want to get -;; "[ \t]*[{]" -;; )) 3) -;; ("Enum" -;; (, (concat -;; "^" ; beginning of line is required -;; "\\(static[ \t]+\\)?" ; there may be static or const. -;; "\\(const[ \t]+\\)?" -;; "enum[ \t]+" -;; "\\([a-zA-Z0-9_]+\\)" ; this is the string we want to get -;; "[ \t]*[{]" -;; )) 3) -;; ("Union" -;; (, (concat -;; "^" ; beginning of line is required -;; "\\(static[ \t]+\\)?" ; there may be static or const. -;; "\\(const[ \t]+\\)?" -;; "union[ \t]+" -;; "\\([a-zA-Z0-9_]+\\)" ; this is the string we want to get -;; "[ \t]*[{]" -;; )) 3) -; )) -; "Imenu generic expression for C mode. See `imenu-generic-expression'.") - -(defun c-mode () - "Major mode for editing C code. -Expression and list commands understand all C brackets. -Tab indents for C code. -Comments are delimited with /* ... */. -Paragraphs are separated by blank lines only. -Delete converts tabs to spaces as it moves back. -\\{c-mode-map} -Variables controlling indentation style: - c-tab-always-indent - Non-nil means TAB in C mode should always reindent the current line, - regardless of where in the line point is when the TAB command is used. - c-auto-newline - Non-nil means automatically newline before and after braces, - and after colons and semicolons, inserted in C code. - c-indent-level - Indentation of C statements within surrounding block. - The surrounding block's indentation is the indentation - of the line on which the open-brace appears. - c-continued-statement-offset - Extra indentation given to a substatement, such as the - then-clause of an if or body of a while. - c-continued-brace-offset - Extra indentation given to a brace that starts a substatement. - This is in addition to c-continued-statement-offset. - c-brace-offset - Extra indentation for line if it starts with an open brace. - c-brace-imaginary-offset - An open brace following other text is treated as if it were - this far to the right of the start of its line. - c-argdecl-indent - Indentation level of declarations of C function arguments. - c-label-offset - Extra indentation for line that is a label, or case or default. - -Settings for K&R and BSD indentation styles are - c-indent-level 5 8 - c-continued-statement-offset 5 8 - c-brace-offset -5 -8 - c-argdecl-indent 0 8 - c-label-offset -5 -8 - -Turning on C mode calls the value of the variable c-mode-hook with no args, -if that value is non-nil." - (interactive) - (kill-all-local-variables) - (use-local-map c-mode-map) - (setq major-mode 'c-mode) - (setq mode-popup-menu c-mode-popup-menu) - (setq mode-name "C") - (setq local-abbrev-table c-mode-abbrev-table) - (set-syntax-table c-mode-syntax-table) - (make-local-variable 'paragraph-start) - (setq paragraph-start (concat "$\\|" page-delimiter)) - (make-local-variable 'paragraph-separate) - (setq paragraph-separate paragraph-start) - (make-local-variable 'paragraph-ignore-fill-prefix) - (setq paragraph-ignore-fill-prefix t) - (make-local-variable 'fill-paragraph-function) - (setq fill-paragraph-function 'c-fill-paragraph) - (make-local-variable 'indent-line-function) - (setq indent-line-function 'c-indent-line) - (make-local-variable 'indent-region-function) - (setq indent-region-function 'c-indent-region) - (make-local-variable 'require-final-newline) - (setq require-final-newline t) - (make-local-variable 'outline-regexp) - (setq outline-regexp "[^#\n\^M]") - (make-local-variable 'outline-level) - (setq outline-level 'c-outline-level) - (make-local-variable 'comment-start) - (setq comment-start "/* ") - (make-local-variable 'comment-end) - (setq comment-end " */") - (make-local-variable 'comment-column) - (setq comment-column 32) - (make-local-variable 'comment-start-skip) - (setq comment-start-skip "/\\*+ *") - (make-local-variable 'comment-indent-function) - (setq comment-indent-function 'c-comment-indent) - (make-local-variable 'comment-multi-line) - (setq comment-multi-line t) - (make-local-variable 'parse-sexp-ignore-comments) - (setq parse-sexp-ignore-comments t) - (if (featurep 'menubar) - (progn - ;; make a local copy of the menubar, so our modes don't - ;; change the global menubar - (set-buffer-menubar current-menubar) - (add-submenu nil c-mode-menubar-menu))) -; (make-local-variable 'imenu-generic-expression) -; (setq imenu-generic-expression c-imenu-generic-expression) - (run-hooks 'c-mode-hook)) - -(defun c-outline-level () - (save-excursion - (skip-chars-forward "\t ") - (current-column))) -^L -;; This is used by indent-for-comment -;; to decide how much to indent a comment in C code -;; based on its context. -(defun c-comment-indent () - (if (looking-at "^/\\*") - 0 ;Existing comment at bol stays there. - (let ((opoint (point))) - (save-excursion - (beginning-of-line) - (cond ((looking-at "[ \t]*}[ \t]*\\($\\|/\\*\\)") - ;; A comment following a solitary close-brace - ;; should have only one space. - (search-forward "}") - (1+ (current-column))) - ((or (looking-at "^#[ \t]*endif[ \t]*") - (looking-at "^#[ \t]*else[ \t]*")) - 7) ;2 spaces after #endif - ((progn - (goto-char opoint) - (skip-chars-backward " \t") - (and (= comment-column 0) (bolp))) - ;; If comment-column is 0, and nothing but space - ;; before the comment, align it at 0 rather than 1. - 0) - (t - (max (1+ (current-column)) ;Else indent at comment column - comment-column))))))) ; except leave at least one space. - -(defun c-fill-paragraph (&optional arg) - "Like \\[fill-paragraph] but handle C comments. -If any of the current line is a comment or within a comment, -fill the comment or the paragraph of it that point is in, -preserving the comment indentation or line-starting decorations." - (interactive "P") - (let* (comment-start-place - (first-line - ;; Check for obvious entry to comment. - (save-excursion - (beginning-of-line) - (skip-chars-forward " \t\n") - (and (looking-at comment-start-skip) - (setq comment-start-place (point)))))) - (if (and (eq major-mode 'c++-mode) - (save-excursion - (beginning-of-line) - (looking-at ".*//"))) - (let (fill-prefix - (paragraph-start - ;; Lines containing just a comment start or just an end - ;; should not be filled into paragraphs they are next to. - (concat - paragraph-start - "\\|[ \t]*/\\*[ \t]*$\\|[ \t]*\\*/[ \t]*$\\|[ \t/*]*$")) - (paragraph-separate - (concat - paragraph-separate - "\\|[ \t]*/\\*[ \t]*$\\|[ \t]*\\*/[ \t]*$\\|[ \t/*]*$"))) - (save-excursion - (beginning-of-line) - ;; Move up to first line of this comment. - (while (and (not (bobp)) (looking-at "[ \t]*//")) - (forward-line -1)) - (if (not (looking-at ".*//")) - (forward-line 1)) - ;; Find the comment start in this line. - (re-search-forward "[ \t]*//[ \t]*") - ;; Set the fill-prefix to be what all lines except the first - ;; should start with. - (let ((endcol (current-column))) - (skip-chars-backward " \t") - (setq fill-prefix - (concat (make-string (- (current-column) 2) ?\ ) - "//" - (make-string (- endcol (current-column)) ?\ )))) - (save-restriction - ;; Narrow down to just the lines of this comment. - (narrow-to-region (point) - (save-excursion - (forward-line 1) - (while (looking-at "[ \t]*//") - (forward-line 1)) - (point))) - (insert fill-prefix) - (fill-paragraph arg) - (delete-region (point-min) - (+ (point-min) (length fill-prefix)))))) - (if (or first-line - ;; t if we enter a comment between start of function and this line. - (eq (calculate-c-indent) t) - ;; t if this line contains a comment starter. - (setq first-line - (save-excursion - (beginning-of-line) - (prog1 - (re-search-forward comment-start-skip - (save-excursion (end-of-line) - (point)) - t) - (setq comment-start-place (point)))))) - ;; Inside a comment: fill one comment paragraph. - (let ((fill-prefix - ;; The prefix for each line of this paragraph - ;; is the appropriate part of the start of this line, - ;; up to the column at which text should be indented. - (save-excursion - (beginning-of-line) - (if (looking-at "[ \t]*/\\*.*\\*/") - (progn (re-search-forward comment-start-skip) - (make-string (current-column) ?\ )) - (if first-line (forward-line 1)) - - (let ((line-width (progn (end-of-line) (current-column)))) - (beginning-of-line) - (prog1 - (buffer-substring - (point) - - ;; How shall we decide where the end of the - ;; fill-prefix is? - ;; calculate-c-indent-within-comment bases its value - ;; on the indentation of previous lines; if they're - ;; indented specially, it could return a column - ;; that's well into the current line's text. So - ;; we'll take at most that many space, tab, or * - ;; characters, and use that as our fill prefix. - (let ((max-prefix-end - (progn - (move-to-column - (calculate-c-indent-within-comment t) - t) - (point)))) - (beginning-of-line) - (skip-chars-forward " \t*" max-prefix-end) - ;; Don't include part of comment terminator - ;; in the fill-prefix. - (and (eq (following-char) ?/) - (eq (preceding-char) ?*) - (backward-char 1)) - (point))) - - ;; If the comment is only one line followed by a blank - ;; line, calling move-to-column above may have added - ;; some spaces and tabs to the end of the line; the - ;; fill-paragraph function will then delete it and the - ;; newline following it, so we'll lose a blank line - ;; when we shouldn't. So delete anything - ;; move-to-column added to the end of the line. We - ;; record the line width instead of the position of the - ;; old line end because move-to-column might break a - ;; tab into spaces, and the new characters introduced - ;; there shouldn't be deleted. - - ;; If you can see a better way to do this, please make - ;; the change. This seems very messy to me. - (delete-region (progn (move-to-column line-width) - (point)) - (progn (end-of-line) (point)))))))) - (paragraph-start - ;; Lines containing just a comment start or just an end - ;; should not be filled into paragraphs they are next to. - (concat paragraph-start - ;; This: - ;; "\\|[ \t]*/\\*[ \t]*$" - ;; "\\|[ \t]*\\*/[ \t]*$" - ;; "\\|[ \t/*]*$" - ;; is just this: - "\\|[ \t/*]*$")) - (paragraph-separate - (concat paragraph-separate - ;; This: - ;; "\\|[ \t]*/\\*[ \t]*$" - ;; "\\|[ \t]*\\*/[ \t]*$" - ;; "\\|[ \t/*]*$" - ;; is just this: - "\\|[ \t/*]*$")) - (chars-to-delete 0)) - (save-restriction - ;; Don't fill the comment together with the code following it. - ;; So temporarily exclude everything before the comment start, - ;; and everything after the line where the comment ends. - ;; If comment-start-place is non-nil, the comment starter is there. - ;; Otherwise, point is inside the comment. - (narrow-to-region (save-excursion - (if comment-start-place - (goto-char comment-start-place) - (search-backward "/*")) - ;; Protect text before the comment start - ;; by excluding it. Add spaces to bring back - ;; proper indentation of that point. - (let ((column (current-column))) - (prog1 (point) - (setq chars-to-delete column) - (insert-char ?\ column)))) - (save-excursion - (if comment-start-place - (goto-char (+ comment-start-place 2))) - (search-forward "*/" nil 'move) - (forward-line 1) - (point))) - (save-excursion - (goto-char (point-max)) - (forward-line -1) - ;; And comment terminator was on a separate line before, - ;; keep it that way. - ;; This also avoids another problem: - ;; if the fill-prefix ends in a *, it could eat up - ;; the * of the comment terminator. - (if (looking-at "[ \t]*\\*/") - (narrow-to-region (point-min) (point)))) - (fill-paragraph arg) - (save-excursion - ;; Delete the chars we inserted to avoid clobbering - ;; the stuff before the comment start. - (goto-char (point-min)) - (if (> chars-to-delete 0) - (delete-region (point) (+ (point) chars-to-delete))) - ;; Find the comment ender (should be on last line of buffer, - ;; given the narrowing) and don't leave it on its own line. - ;; Do this with a fill command, so as to preserve sentence - ;; boundaries. - (goto-char (point-max)) - (forward-line -1) - (search-forward "*/" nil 'move) - (beginning-of-line) - (if (looking-at "[ \t]*\\*/") - (let ((fill-column (+ fill-column 9999))) - (forward-line -1) - (fill-region-as-paragraph (point) (point-max))))))) - ;; Outside of comments: do ordinary filling. - (fill-paragraph arg))) - t)) - -(defun electric-c-brace (arg) - "Insert character and correct line's indentation." - (interactive "P") - (let ((insertpos nil)) - (if (and (not arg) - (eolp) - (or (save-excursion - (skip-chars-backward " \t") - (bolp)) - (if c-auto-newline (progn (c-indent-line) (newline) t) nil))) - (progn - (insert last-command-char) - (c-indent-line) - (if c-auto-newline - (progn - (newline) - ;; (newline) may have done auto-fill - (setq insertpos (- (point) 2)) - (c-indent-line))) - (save-excursion - (if insertpos (goto-char (1+ insertpos))) - (delete-char -1)))) - (if insertpos - (save-excursion - (goto-char insertpos) - (self-insert-command (prefix-numeric-value arg))) - (self-insert-command (prefix-numeric-value arg))))) - -(defun c-insert-brackets () - (interactive) - (insert ?[) - (save-excursion - (insert ?]))) - -(defun c-insert-braces () - (interactive) - (setq last-command-char ?{) - (electric-c-brace 1) - (newline) - (c-indent-line) - (save-excursion - (newline) - (insert ?}) - (c-indent-line))) - -(defun electric-c-sharp-sign (arg) - "Insert character and correct line's indentation." - (interactive "P") - (if (save-excursion - (skip-chars-backward " \t") - (bolp)) - (let ((c-auto-newline nil)) - (electric-c-terminator arg)) - (self-insert-command (prefix-numeric-value arg)))) - -(defun electric-c-semi (arg) - "Insert character and correct line's indentation." - (interactive "P") - (if c-auto-newline - (electric-c-terminator arg) - (self-insert-command (prefix-numeric-value arg)))) - -(defun electric-c-terminator (arg) - "Insert character and correct line's indentation." - (interactive "P") - (let (insertpos (end (point))) - (if (and (not arg) (eolp) - (not (save-excursion - (beginning-of-line) - (skip-chars-forward " \t") - (or (= (following-char) ?#) - ;; Colon is special only after a label, or case .... - ;; So quickly rule out most other uses of colon - ;; and do no indentation for them. - (and (eq last-command-char ?:) - (not (looking-at c-switch-label-regexp)) - (save-excursion - (skip-chars-forward "a-zA-Z0-9_$") - (skip-chars-forward " \t") - (< (point) end))) - (progn - (beginning-of-defun) - (let ((pps (parse-partial-sexp (point) end))) - (or (nth 3 pps) (nth 4 pps) (nth 5 pps)))))))) - (progn - (insert last-command-char) - (c-indent-line) - (and c-auto-newline - (not (c-inside-parens-p)) - (progn - (newline) - ;; (newline) may have done auto-fill - (setq insertpos (- (point) 2)) - (c-indent-line))) - (save-excursion - (if insertpos (goto-char (1+ insertpos))) - (delete-char -1)))) - (if insertpos - (save-excursion - (goto-char insertpos) - (self-insert-command (prefix-numeric-value arg))) - (self-insert-command (prefix-numeric-value arg))))) - -(defun c-inside-parens-p () - (condition-case () - (save-excursion - (save-restriction - (narrow-to-region (point) - (progn (beginning-of-defun) (point))) - (goto-char (point-max)) - (= (char-after (or (scan-lists (point) -1 1) (point-min))) ?\())) - (error nil))) - -(defun c-indent-command (&optional whole-exp) - "Indent current line as C code, or in some cases insert a tab character. -If `c-tab-always-indent' is non-nil (the default), always indent current line. -Otherwise, indent the current line only if point is at the left margin -or in the line's indentation; otherwise insert a tab. - -A numeric argument, regardless of its value, means indent rigidly all -the lines of the expression starting after point so that this line -becomes properly indented. The relative indentation among the lines -of the expression are preserved." - (interactive "P") - (if whole-exp - ;; If arg, always indent this line as C - ;; and shift remaining lines of expression the same amount. - (let ((shift-amt (c-indent-line)) - beg end) - (save-excursion - (if c-tab-always-indent - (beginning-of-line)) - ;; Find beginning of following line. - (save-excursion - (forward-line 1) (setq beg (point))) - ;; Find first beginning-of-sexp for sexp extending past this line. - (while (< (point) beg) - (forward-sexp 1) - (setq end (point)) - (skip-chars-forward " \t\n"))) - (if (> end beg) - (indent-code-rigidly beg end shift-amt "#"))) - (if (and (not c-tab-always-indent) - (save-excursion - (skip-chars-backward " \t") - (not (bolp)))) - (insert-tab) - (c-indent-line)))) - -(defun c-indent-line () - "Indent current line as C code. -Return the amount the indentation changed by." - (let ((indent (calculate-c-indent nil)) - beg shift-amt - (case-fold-search nil) - (pos (- (point-max) (point)))) - (beginning-of-line) - (setq beg (point)) - (cond ((eq indent nil) - (setq indent (current-indentation))) - ((eq indent t) - (setq indent (calculate-c-indent-within-comment))) - ((looking-at "[ \t]*#") - (setq indent 0)) - (t - (skip-chars-forward " \t") - (if (listp indent) (setq indent (car indent))) - (cond ((or (looking-at c-switch-label-regexp) - (and (looking-at "[A-Za-z]") - (save-excursion - (forward-sexp 1) - (looking-at ":")))) - (setq indent (max 1 (+ indent c-label-offset)))) - ((and (looking-at "else\\b") - (not (looking-at "else\\s_"))) - (setq indent (save-excursion - (c-backward-to-start-of-if) - (current-indentation)))) - ((and (looking-at "}[ \t]*else\\b") - (not (looking-at "}[ \t]*else\\s_"))) - (setq indent (save-excursion - (forward-char) - (backward-sexp) - (c-backward-to-start-of-if) - (current-indentation)))) - ((and (looking-at "while\\b") - (not (looking-at "while\\s_")) - (save-excursion - (c-backward-to-start-of-do))) - ;; This is a `while' that ends a do-while. - (setq indent (save-excursion - (c-backward-to-start-of-do) - (current-indentation)))) - ((= (following-char) ?}) - (setq indent (- indent c-indent-level))) - ((= (following-char) ?{) - (setq indent (+ indent c-brace-offset)))))) - (skip-chars-forward " \t") - (setq shift-amt (- indent (current-column))) - (if (zerop shift-amt) - (if (> (- (point-max) pos) (point)) - (goto-char (- (point-max) pos))) - (delete-region beg (point)) - (indent-to indent) - ;; If initial point was within line's indentation, - ;; position after the indentation. Else stay at same point in text. - (if (> (- (point-max) pos) (point)) - (goto-char (- (point-max) pos)))) - shift-amt)) - -(defun calculate-c-indent (&optional parse-start) - "Return appropriate indentation for current line as C code. -In usual case returns an integer: the column to indent to. -Returns nil if line starts inside a string, t if in a comment." - (save-excursion - (beginning-of-line) - (let ((indent-point (point)) - (case-fold-search nil) - state - containing-sexp) - (if parse-start - (goto-char parse-start) - (beginning-of-defun)) - (while (< (point) indent-point) - (setq parse-start (point)) - (setq state (parse-partial-sexp (point) indent-point 0)) - (setq containing-sexp (car (cdr state)))) - (cond ((or (nth 3 state) (nth 4 state)) - ;; return nil or t if should not change this line - (nth 4 state)) - ((null containing-sexp) - ;; Line is at top level. May be data or function definition, - ;; or may be function argument declaration. - ;; Indent like the previous top level line - ;; unless that ends in a closeparen without semicolon, - ;; in which case this line is the first argument decl. - (goto-char indent-point) - (skip-chars-forward " \t") - (if (= (following-char) ?{) - 0 ; Unless it starts a function body - (c-backward-to-noncomment (or parse-start (point-min))) - ;; Look at previous line that's at column 0 - ;; to determine whether we are in top-level decls - ;; or function's arg decls. Set basic-indent accordingly. - (let ((basic-indent - (save-excursion - (re-search-backward "^[^ \^L\t\n#]" nil 'move) - (let (comment lim) - ;; Recognize the DEFUN macro in Emacs. - (if (save-excursion - ;; Move down to the (putative) argnames line. - (while (and (not (eobp)) - (not (looking-at " *[({}#/]"))) - (forward-line 1)) - ;; Go back to the DEFUN, if it is one. - (condition-case nil - (backward-sexp 1) - (error)) - (beginning-of-line) - (looking-at "DEFUN\\b")) - c-argdecl-indent - (if (and (looking-at "\\sw\\|\\s_") - ;; This is careful to stop at the first - ;; paren if we have - ;; int foo Proto ((int, int)); - (looking-at "[^\"\n=(]*(") - (progn - (goto-char (1- (match-end 0))) - ;; Skip any number of paren-groups. - ;; Consider typedef int (*fcn) (int); - (while (= (following-char) ?\() - (setq lim (point)) - (condition-case nil - (forward-sexp 1) - (error)) - (skip-chars-forward " \t\f")) - ;; Have we reached something - ;; that shows this isn't a function - ;; definition? - (and (< (point) indent-point) - (not (memq (following-char) - '(?\, ?\;))))) - ;; Make sure the "function decl" we found - ;; is not inside a comment. - (progn - ;; Move back to the `(' starting arglist - (goto-char lim) - (beginning-of-line) - (while (and (not comment) - (search-forward "/*" lim t)) - (setq comment - (not (search-forward "*/" lim t)))) - (not comment))) - c-argdecl-indent 0)))))) - basic-indent))) - -;; ;; Now add a little if this is a continuation line. -;; (+ basic-indent (if (or (bobp) -;; (memq (preceding-char) '(?\) ?\; ?\})) -;; ;; Line with zero indentation -;; ;; is probably the return-type -;; ;; of a function definition, -;; ;; so following line is function name. -;; (= (current-indentation) 0)) -;; 0 c-continued-statement-offset)) - - ((/= (char-after containing-sexp) ?{) - ;; line is expression, not statement: - ;; indent to just after the surrounding open. - (goto-char (1+ containing-sexp)) - (current-column)) - (t - ;; Statement level. Is it a continuation or a new statement? - ;; Find previous non-comment character. - (goto-char indent-point) - (c-backward-to-noncomment containing-sexp) - ;; Back up over label lines, since they don't - ;; affect whether our line is a continuation. - (while (or (eq (preceding-char) ?\,) - (and (eq (preceding-char) ?:) - (or (eq (char-after (- (point) 2)) ?\') - (memq (char-syntax (char-after (- (point) 2))) - '(?w ?_))))) - (if (eq (preceding-char) ?\,) - (progn (forward-char -1) - (c-backward-to-start-of-continued-exp containing-sexp))) - (beginning-of-line) - (c-backward-to-noncomment containing-sexp)) - ;; Check for a preprocessor statement or its continuation lines. - ;; Move back to end of previous non-preprocessor line, - ;; or possibly beginning of buffer. - (let ((found (point)) stop) - (while (not stop) - (beginning-of-line) - (cond ((bobp) - (setq found (point) - stop t)) - ((save-excursion (forward-char -1) - (= (preceding-char) ?\\)) - (forward-char -1)) - ;; This line is not preceded by a backslash. - ;; So either it starts a preprocessor command - ;; or any following continuation lines - ;; should not be skipped. - ((= (following-char) ?#) - (forward-char -1) - (setq found (point))) - (t (setq stop t)))) - (goto-char found)) - ;; Now we get the answer. - (if (and (not (memq (preceding-char) '(0 ?\, ?\; ?\} ?\{))) - ;; But don't treat a line with a close-brace - ;; as a continuation. It is probably the - ;; end of an enum type declaration. - (save-excursion - (goto-char indent-point) - (skip-chars-forward " \t") - (not (= (following-char) ?})))) - ;; This line is continuation of preceding line's statement; - ;; indent c-continued-statement-offset more than the - ;; previous line of the statement. - (progn - (c-backward-to-start-of-continued-exp containing-sexp) - (+ c-continued-statement-offset (current-column) - (if (save-excursion (goto-char indent-point) - (skip-chars-forward " \t") - (eq (following-char) ?{)) - c-continued-brace-offset 0))) - ;; This line starts a new statement. - ;; Position following last unclosed open. - (goto-char containing-sexp) - ;; Is line first statement after an open-brace? - (or - ;; If no, find that first statement and indent like it. - (save-excursion - (forward-char 1) - (let ((colon-line-end 0)) - (while (progn (skip-chars-forward " \t\n") - (looking-at "#\\|/\\*\\|case[ \t\n'/(].*:\\|[a-zA-Z0-9_$]*:")) - ;; Skip over comments and labels following openbrace. - (cond ((= (following-char) ?\#) - (forward-line 1)) - ((= (following-char) ?\/) - (forward-char 2) - (search-forward "*/" nil 'move)) - ;; case or label: - (t - (save-excursion (end-of-line) - (setq colon-line-end (point))) - (search-forward ":")))) - ;; The first following code counts - ;; if it is before the line we want to indent. - (and (< (point) indent-point) - (- - (if (> colon-line-end (point)) - (- (current-indentation) c-label-offset) - (current-column)) - ;; If prev stmt starts with open-brace, that - ;; open brace was offset by c-brace-offset. - ;; Compensate to get the column where - ;; an ordinary statement would start. - (if (= (following-char) ?\{) c-brace-offset 0))))) - ;; If no previous statement, - ;; indent it relative to line brace is on. - (calculate-c-indent-after-brace)))))))) - -(defun calculate-c-indent-after-brace () - "Return the proper C indent for the first line after an open-brace. -This function is called with point before the brace." - ;; For open brace in column zero, don't let statement - ;; start there too. If c-indent-level is zero, - ;; use c-brace-offset + c-continued-statement-offset instead. - ;; For open-braces not the first thing in a line, - ;; add in c-brace-imaginary-offset. - (+ (if (and (bolp) (zerop c-indent-level)) - (+ c-brace-offset c-continued-statement-offset) - c-indent-level) - ;; Move back over whitespace before the openbrace. - ;; If openbrace is not first nonwhite thing on the line, - ;; add the c-brace-imaginary-offset. - (progn (skip-chars-backward " \t") - (if (bolp) 0 c-brace-imaginary-offset)) - ;; If the openbrace is preceded by a parenthesized exp, - ;; move to the beginning of that; - ;; possibly a different line - (progn - (if (eq (preceding-char) ?\)) - (forward-sexp -1)) - ;; Get initial indentation of the line we are on. - (current-indentation)))) - -(defun calculate-c-indent-within-comment (&optional after-star) - "Return the indentation amount for line inside a block comment. -Optional arg AFTER-STAR means, if lines in the comment have a leading star, -return the indentation of the text that would follow this star." - (let (end star-start) - (save-excursion - (beginning-of-line) - (skip-chars-forward " \t") - (setq star-start (= (following-char) ?\*)) - (skip-chars-backward " \t\n") - (setq end (point)) - (beginning-of-line) - (skip-chars-forward " \t") - (if after-star - (and (looking-at "\\*") - (re-search-forward "\\*[ \t]*"))) - (and (re-search-forward "/\\*[ \t]*" end t) - star-start - (not after-star) - (goto-char (1+ (match-beginning 0)))) - (if (and (looking-at "[ \t]*$") (= (preceding-char) ?\*)) - (1+ (current-column)) - (current-column))))) - - -(defun c-backward-to-noncomment (lim) - (let (opoint stop) - (while (not stop) - (skip-chars-backward " \t\n\f" lim) - (setq opoint (point)) - (if (and (>= (point) (+ 2 lim)) - (save-excursion - (forward-char -2) - (looking-at "\\*/"))) - (search-backward "/*" lim 'move) - (setq stop (or (<= (point) lim) - (save-excursion - (while (progn - (beginning-of-line) - (eq ?\\ (char-after (- (point) 2)))) - (forward-char -1) - (beginning-of-line)) - (skip-chars-forward " \t") - (not (looking-at "#"))))) - (or stop (beginning-of-line)))))) - -(defun c-backward-to-start-of-continued-exp (lim) - (if (memq (preceding-char) '(?\) ?\")) - (forward-sexp -1)) - (beginning-of-line) - (if (<= (point) lim) - (goto-char (1+ lim))) - (skip-chars-forward " \t")) - -(defun c-backward-to-start-of-if (&optional limit) - "Move to the start of the last \"unbalanced\" `if'." - (or limit (setq limit (save-excursion (beginning-of-defun) (point)))) - (let ((if-level 1) - (case-fold-search nil)) - (while (and (not (bobp)) (not (zerop if-level))) - (backward-sexp 1) - (cond ((and (looking-at "else\\b") - (not (looking-at "else\\s_"))) - (setq if-level (1+ if-level))) - ((and (looking-at "if\\b") - (not (looking-at "if\\s_"))) - (setq if-level (1- if-level))) - ((< (point) limit) - (setq if-level 0) - (goto-char limit)))))) - -(defun c-backward-to-start-of-do (&optional limit) - "If point follows a `do' statement, move to beginning of it and return t. -Otherwise return nil and don't move point." - (or limit (setq limit (save-excursion (beginning-of-defun) (point)))) - (let ((first t) - (startpos (point)) - (done nil)) - (while (not done) - (let ((next-start (point))) - (condition-case nil - ;; Move back one token or one brace or paren group. - (backward-sexp 1) - ;; If we find an open-brace, we lose. - (error (setq done 'fail))) - (if done - nil - ;; If we reached a `do', we win. - (if (looking-at "do\\b") - (setq done 'succeed) - ;; Otherwise, if we skipped a semicolon, we lose. - ;; (Exception: we can skip one semicolon before getting - ;; to a the last token of the statement, unless that token - ;; is a close brace.) - (if (save-excursion - (forward-sexp 1) - (or (and (not first) (= (preceding-char) ?})) - (search-forward ";" next-start t - (if (and first - (/= (preceding-char) ?})) - 2 1)))) - (setq done 'fail) - (setq first nil) - ;; If we go too far back in the buffer, we lose. - (if (< (point) limit) - (setq done 'fail))))))) - (if (eq done 'succeed) - t - (goto-char startpos) - nil))) - -(defun c-beginning-of-statement (count) - "Go to the beginning of the innermost C statement. -With prefix arg, go back N - 1 statements. If already at the beginning of a -statement then go to the beginning of the preceding one. -If within a string or comment, or next to a comment (only whitespace between), -move by sentences instead of statements." - (interactive "p") - (let ((here (point)) state) - (save-excursion - (beginning-of-defun) - (setq state (parse-partial-sexp (point) here nil nil))) - (if (or (nth 3 state) (nth 4 state) - (looking-at (concat "[ \t]*" comment-start-skip)) - (save-excursion (skip-chars-backward " \t") - (goto-char (- (point) 2)) - (looking-at "\\*/"))) - (forward-sentence (- count)) - (while (> count 0) - (c-beginning-of-statement-1) - (setq count (1- count))) - (while (< count 0) - (c-end-of-statement-1) - (setq count (1+ count)))))) - -(defun c-end-of-statement (count) - "Go to the end of the innermost C statement. -With prefix arg, go forward N - 1 statements. -Move forward to end of the next statement if already at end. -If within a string or comment, move by sentences instead of statements." - (interactive "p") - (c-beginning-of-statement (- count))) - -(defun c-beginning-of-statement-1 () - (let ((last-begin (point)) - (first t)) - (condition-case () - (progn - (while (and (not (bobp)) - (progn - (backward-sexp 1) - (or first - (not (re-search-forward "[;{}]" last-begin t))))) - (setq last-begin (point) first nil)) - (goto-char last-begin)) - (error (if first (backward-up-list 1) (goto-char last-begin)))))) - -(defun c-end-of-statement-1 () - (condition-case () - (progn - (while (and (not (eobp)) - (let ((beg (point))) - (forward-sexp 1) - (let ((end (point))) - (save-excursion - (goto-char beg) - (not (re-search-forward "[;{}]" end t))))))) - (re-search-backward "[;}]") - (forward-char 1)) - (error - (let ((beg (point))) - (backward-up-list -1) - (let ((end (point))) - (goto-char beg) - (search-forward ";" end 'move)))))) - -(defun mark-c-function () - "Put mark at end of C function, point at beginning." - (interactive) - (push-mark (point)) - (end-of-defun) - (push-mark (point) nil t) - (beginning-of-defun) - (backward-paragraph)) - -;; Idea of ENDPOS is, indent each line, stopping when -;; ENDPOS is encountered. But it's too much of a pain to make that work. -(defun indent-c-exp (&optional endpos) - "Indent each line of the C grouping following point." - (interactive) - (let* ((indent-stack (list nil)) - (opoint (point)) ;; May be altered below. - (contain-stack - (list (if endpos - (let (funbeg) - ;; Find previous fcn-start. - (save-excursion (forward-char 1) - (beginning-of-defun) - (setq funbeg (point))) - (setq opoint funbeg) - ;; Try to find containing open, - ;; but don't scan past that fcn-start. - (save-restriction - (narrow-to-region funbeg (point)) - (condition-case nil - (save-excursion - (backward-up-list 1) (point)) - ;; We gave up: must be between fcns. - ;; Set opoint to beg of prev fcn - ;; since otherwise calculate-c-indent - ;; will get wrong answers. - (error -;;;#### Commented-out in XEmacs, present in FSFmacs -; (setq opoint funbeg) - (point))))) - (point)))) - (case-fold-search nil) - restart outer-loop-done inner-loop-done state ostate - this-indent last-sexp - at-else at-brace at-while - last-depth this-point - (next-depth 0)) - ;; If the braces don't match, get an error right away. - (save-excursion - (forward-sexp 1)) - ;; Realign the comment on the first line, even though we don't reindent it. - (save-excursion - (let ((beg (point))) - (and (re-search-forward - comment-start-skip - (save-excursion (end-of-line) (point)) t) - ;; Make sure this isn't a comment alone on a line - ;; (which should be indented like code instead). - (save-excursion - (goto-char (match-beginning 0)) - (skip-chars-backward " \t") - (not (bolp))) - ;; Make sure the comment starter we found - ;; is not actually in a string or quoted. - (let ((new-state - (parse-partial-sexp beg (point) - nil nil state))) - (and (not (nth 3 new-state)) (not (nth 5 new-state)))) - (progn (indent-for-comment) (beginning-of-line))))) - (save-excursion - (setq outer-loop-done nil) - (while (and (not (eobp)) - (if endpos - (< (point) endpos) - (not outer-loop-done))) - (setq last-depth next-depth) - ;; Compute how depth changes over this line - ;; plus enough other lines to get to one that - ;; does not end inside a comment or string. - ;; Meanwhile, do appropriate indentation on comment lines. - (setq inner-loop-done nil) - (while (and (not inner-loop-done) - (not (and (eobp) (setq outer-loop-done t)))) - (setq ostate state) - (setq state (parse-partial-sexp (point) (progn (end-of-line) (point)) - nil nil state)) - (setq next-depth (car state)) - (if (and (car (cdr (cdr state))) - (>= (car (cdr (cdr state))) 0)) - (setq last-sexp (car (cdr (cdr state))))) - ;; If this line started within a comment, indent it as such. - (if (or (nth 4 ostate) (nth 7 ostate)) - (c-indent-line)) - ;; If it ends outside of comments or strings, exit the inner loop. - ;; Otherwise move on to next line. - (if (or (nth 3 state) (nth 4 state) (nth 7 state)) - (forward-line 1) - (setq inner-loop-done t))) - (and endpos - (while (< next-depth 0) - (setq indent-stack (append indent-stack (list nil))) - (setq contain-stack (append contain-stack (list nil))) - (setq next-depth (1+ next-depth)) - (setq last-depth (1+ last-depth)) - (setcar (nthcdr 6 state) (1+ (nth 6 state))))) - (setq outer-loop-done (and (not endpos) (<= next-depth 0))) - (if outer-loop-done - nil - ;; If this line had ..))) (((.. in it, pop out of the levels - ;; that ended anywhere in this line, even if the final depth - ;; doesn't indicate that they ended. - (while (> last-depth (nth 6 state)) - (setq indent-stack (cdr indent-stack) - contain-stack (cdr contain-stack) - last-depth (1- last-depth))) - (if (/= last-depth next-depth) - (setq last-sexp nil)) - ;; Add levels for any parens that were started in this line. - (while (< last-depth next-depth) - (setq indent-stack (cons nil indent-stack) - contain-stack (cons nil contain-stack) - last-depth (1+ last-depth))) - (if (null (car contain-stack)) - (setcar contain-stack (or (car (cdr state)) - (save-excursion (forward-sexp -1) - (point))))) - (forward-line 1) - (skip-chars-forward " \t") - ;; Don't really reindent if the line is just whitespace, - ;; or if it is past the endpos. - ;; (The exit test in the outer while - ;; does not exit until we have passed the first line - ;; past the region.) - (if (or (eolp) (and endpos (>= (point) endpos))) - nil - ;; Is this line in a new nesting level? - ;; In other words, is this the first line that - ;; starts in the new level? - (if (and (car indent-stack) - (>= (car indent-stack) 0)) - nil - ;; Yes. - ;; Compute the standard indent for this level. - (let (val) - (if (= (char-after (car contain-stack)) ?{) - (save-excursion - (goto-char (car contain-stack)) - (setq val (calculate-c-indent-after-brace))) - (setq val (calculate-c-indent - (if (car indent-stack) - (- (car indent-stack)) - opoint)))) - ;; t means we are in a block comment and should - ;; calculate accordingly. - (if (eq val t) - (setq val (calculate-c-indent-within-comment))) - (setcar indent-stack val))) - ;; Adjust indent of this individual line - ;; based on its predecessor. - ;; Handle continuation lines, if, else, while, and so on. - (if (/= (char-after (car contain-stack)) ?{) - (setq this-indent (car indent-stack)) - ;; Line is at statement level. - ;; Is it a new statement? Is it an else? - ;; Find last non-comment character before this line - (save-excursion - (setq this-point (point)) - (setq at-else (and (looking-at "else\\b") - (not (looking-at "else\\s_")))) - (setq at-brace (= (following-char) ?{)) - (setq at-while (and (looking-at "while\\b") - (not (looking-at "while\\s_")))) - (if (= (following-char) ?}) - (setq this-indent (car indent-stack)) - (c-backward-to-noncomment opoint) - (if (not (memq (preceding-char) '(0 ?\, ?\; ?} ?: ?{))) - ;; Preceding line did not end in comma or semi; - ;; indent this line c-continued-statement-offset - ;; more than previous. - (progn - (c-backward-to-start-of-continued-exp (car contain-stack)) - (setq this-indent - (+ c-continued-statement-offset (current-column) - (if at-brace c-continued-brace-offset 0)))) - ;; Preceding line ended in comma or semi; - ;; use the standard indent for this level. - (cond (at-else (progn (c-backward-to-start-of-if opoint) - (setq this-indent - (current-indentation)))) - ((and at-while (c-backward-to-start-of-do opoint)) - (setq this-indent (current-indentation))) - ((eq (preceding-char) ?\,) - (goto-char this-point) - (setq this-indent (calculate-c-indent))) - (t (setq this-indent (car indent-stack)))))))) - ;; Adjust line indentation according to its contents - (if (or (looking-at c-switch-label-regexp) - (and (looking-at "[A-Za-z]") - (save-excursion - (forward-sexp 1) - (looking-at ":")))) - (setq this-indent (max 1 (+ this-indent c-label-offset)))) - (if (= (following-char) ?}) - (setq this-indent (- this-indent c-indent-level))) - (if (= (following-char) ?{) - ;; Don't move an open-brace in column 0. - ;; This is good when constructs such as - ;; `extern "C" {' surround a function definition - ;; that should be indented as usual. - ;; It is also good for nested functions. - ;; It is bad when an open-brace is indented at column 0 - ;; and you want to fix that, but we can't win 'em all. - (if (zerop (current-column)) - (setq this-indent 0) - (setq this-indent (+ this-indent c-brace-offset)))) - ;; Don't leave indentation in empty lines. - (if (eolp) (setq this-indent 0)) - ;; Put chosen indentation into effect. - (or (= (current-column) this-indent) - (= (following-char) ?\#) - (progn - (delete-region (point) (progn (beginning-of-line) (point))) - (indent-to this-indent))) - ;; Indent any comment following the text. - (or (looking-at comment-start-skip) - (save-excursion - (let ((beg (point))) - (and (re-search-forward - comment-start-skip - (save-excursion (end-of-line) (point)) t) - ;; Make sure the comment starter we found - ;; is not actually in a string or quoted. - (let ((new-state - (parse-partial-sexp beg (point) - nil nil state))) - (and (not (nth 3 new-state)) - (not (nth 5 new-state)))) - (indent-for-comment))))))))))) - -;; Look at all comment-start strings in the current line after point. -;; Return t if one of them starts a real comment. -;; This is not used yet, because indent-for-comment -;; isn't smart enough to handle the cases this can find. -(defun indent-c-find-real-comment () - (let (win) - (while (and (not win) - (re-search-forward comment-start-skip - (save-excursion (end-of-line) (point)) - t)) - ;; Make sure the comment start is not quoted. - (let ((state-1 - (parse-partial-sexp - (save-excursion (beginning-of-line) (point)) - (point) nil nil state))) - (setq win (and (null (nth 3 state-1)) (null (nth 5 state-1)))))) - win)) - -;; Indent every line whose first char is between START and END inclusive. -(defun c-indent-region (start end) - (save-excursion - (goto-char start) - ;; Advance to first nonblank line. - (skip-chars-forward " \t\n") - (beginning-of-line) - (let ((endmark (copy-marker end)) - (c-tab-always-indent t)) - (while (and (bolp) (not (eobp)) (< (point) endmark)) - ;; Indent one line as with TAB. - (let ((shift-amt (c-indent-line)) - nextline sexpbeg sexpend) - (if (save-excursion (beginning-of-line) (looking-at "[ \t]*#")) - (forward-line 1) - (save-excursion - ;; Find beginning of following line. - (save-excursion - (forward-line 1) (setq nextline (point))) - ;; Find first beginning-of-sexp for sexp extending past this line. - (beginning-of-line) - (while (< (point) nextline) - (condition-case nil - (progn - (forward-sexp 1) - (setq sexpend (point-marker))) - (error (setq sexpend nil) - (goto-char nextline))) - (skip-chars-forward " \t\n")) - (if sexpend - (progn - ;; Make sure the sexp we found really starts on the - ;; current line and extends past it. - (goto-char sexpend) - (backward-sexp 1) - (setq sexpbeg (point))))) - ;; If that sexp ends within the region, - ;; indent it all at once, fast. - (if (and sexpend (> sexpend nextline) (<= sexpend endmark) - (< sexpbeg nextline)) - (progn - (indent-c-exp) - (goto-char sexpend))) - ;; Move to following line and try again. - (and sexpend (set-marker sexpend nil)) - (forward-line 1)))) - (set-marker endmark nil)))) - -(defun set-c-style (style &optional global) - "Set C-mode variables to use one of several different indentation styles. -The arguments are a string representing the desired style -and a flag which, if non-nil, means to set the style globally. -\(Interactively, the flag comes from the prefix argument.) -Available styles are GNU, K&R, BSD and Whitesmith." - (interactive (list (let ((completion-ignore-case t)) - (completing-read "Use which C indentation style? " - c-style-alist nil t)) - current-prefix-arg)) - (let ((vars (cdr (assoc style c-style-alist)))) - (or vars - (error "Invalid C indentation style `%s'" style)) - (while vars - (or global - (make-local-variable (car (car vars)))) - (set (car (car vars)) (cdr (car vars))) - (setq vars (cdr vars))))) - -;;; This page handles insertion and removal of backslashes for C macros. - -(defvar c-backslash-column 48 - "*Minimum column for end-of-line backslashes of macro definitions.") - -(defun c-backslash-region (from to delete-flag) - "Insert, align, or delete end-of-line backslashes on the lines in the region. -With no argument, inserts backslashes and aligns existing backslashes. -With an argument, deletes the backslashes. - -This function does not modify the last line of the region if the region ends -right at the start of the following line; it does not modify blank lines -at the start of the region. So you can put the region around an entire macro -definition and conveniently use this command." - (interactive "r\nP") - (save-excursion - (goto-char from) - (let ((column c-backslash-column) - (endmark (make-marker))) - (move-marker endmark to) - ;; Compute the smallest column number past the ends of all the lines. - (if (not delete-flag) - (while (< (point) to) - (end-of-line) - (if (= (preceding-char) ?\\) - (progn (forward-char -1) - (skip-chars-backward " \t"))) - (setq column (max column (1+ (current-column)))) - (forward-line 1))) - ;; Adjust upward to a tab column, if that doesn't push past the margin. - (if (> (% column tab-width) 0) - (let ((adjusted (* (/ (+ column tab-width -1) tab-width) tab-width))) - (if (< adjusted (window-width)) - (setq column adjusted)))) - ;; Don't modify blank lines at start of region. - (goto-char from) - (while (and (< (point) endmark) (eolp)) - (forward-line 1)) - ;; Add or remove backslashes on all the lines. - (while (and (< (point) endmark) - ;; Don't backslashify the last line - ;; if the region ends right at the start of the next line. - (save-excursion - (forward-line 1) - (< (point) endmark))) - (if (not delete-flag) - (c-append-backslash column) - (c-delete-backslash)) - (forward-line 1)) - (move-marker endmark nil)))) - -(defun c-append-backslash (column) - (end-of-line) - ;; Note that "\\\\" is needed to get one backslash. - (if (= (preceding-char) ?\\) - (progn (forward-char -1) - (delete-horizontal-space) - (indent-to column)) - (indent-to column) - (insert "\\"))) - -(defun c-delete-backslash () - (end-of-line) - (or (bolp) - (progn - (forward-char -1) - (if (looking-at "\\\\") - (delete-region (1+ (point)) - (progn (skip-chars-backward " \t") (point))))))) - -(defun c-up-conditional (count) - "Move back to the containing preprocessor conditional, leaving mark behind. -A prefix argument acts as a repeat count. With a negative argument, -move forward to the end of the containing preprocessor conditional. -When going backwards, `#elif' is treated like `#else' followed by `#if'. -When going forwards, `#elif' is ignored." - (interactive "p") - (c-forward-conditional (- count) t)) - -(defun c-backward-conditional (count &optional up-flag) - "Move back across a preprocessor conditional, leaving mark behind. -A prefix argument acts as a repeat count. With a negative argument, -move forward across a preprocessor conditional." - (interactive "p") - (c-forward-conditional (- count) up-flag)) - -(defun c-forward-conditional (count &optional up-flag) - "Move forward across a preprocessor conditional, leaving mark behind. -A prefix argument acts as a repeat count. With a negative argument, -move backward across a preprocessor conditional." - (interactive "p") - (let* ((forward (> count 0)) - (increment (if forward -1 1)) - (search-function (if forward 're-search-forward 're-search-backward)) - (opoint (point)) - (new)) - (save-excursion - (while (/= count 0) - (let ((depth (if up-flag 0 -1)) found) - (save-excursion - ;; Find the "next" significant line in the proper direction. - (while (and (not found) - ;; Rather than searching for a # sign that comes - ;; at the beginning of a line aside from whitespace, - ;; search first for a string starting with # sign. - ;; Then verify what precedes it. - ;; This is faster on account of the fastmap feature of - ;; the regexp matcher. - (funcall search-function - "#[ \t]*\\(if\\|elif\\|endif\\)" - nil t)) - (beginning-of-line) - ;; Now verify it is really a preproc line. - (if (looking-at "^[ \t]*#[ \t]*\\(if\\|elif\\|endif\\)") - (let ((prev depth)) - ;; Update depth according to what we found. - (beginning-of-line) - (cond ((looking-at "[ \t]*#[ \t]*endif") - (setq depth (+ depth increment))) - ((looking-at "[ \t]*#[ \t]*elif") - (if (and forward (= depth 0)) - (setq found (point)))) - (t (setq depth (- depth increment)))) - ;; If we are trying to move across, and we find - ;; an end before we find a beginning, get an error. - (if (and (< prev 0) (< depth prev)) - (error (if forward - "No following conditional at this level" - "No previous conditional at this level"))) - ;; When searching forward, start from next line - ;; so that we don't find the same line again. - (if forward (forward-line 1)) - ;; If this line exits a level of conditional, exit inner loop. - (if (< depth 0) - (setq found (point)))) - ;; If the line is not really a conditional, skip past it. - (if forward (end-of-line))))) - (or found - (error "No containing preprocessor conditional")) - (goto-char (setq new found))) - (setq count (+ count increment)))) - (push-mark) - (goto-char new))) - -;;; c-mode.el ends here
--- a/lisp/modes/pascal.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/pascal.el Mon Aug 13 09:38:25 2007 +0200 @@ -88,7 +88,8 @@ (define-key pascal-mode-map "\t" 'electric-pascal-tab) (define-key pascal-mode-map "\M-\t" 'pascal-complete-word) (define-key pascal-mode-map "\M-?" 'pascal-show-completions) - (define-key pascal-mode-map "\177" 'backward-delete-char-untabify) +;; GDF - don't rebind the delete key. +;; (define-key pascal-mode-map "\177" 'backward-delete-char-untabify) (define-key pascal-mode-map "\M-\C-h" 'pascal-mark-defun) (define-key pascal-mode-map "\C-c\C-b" 'pascal-insert-block) (define-key pascal-mode-map "\M-*" 'pascal-star-comment)
--- a/lisp/modes/perl-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/perl-mode.el Mon Aug 13 09:38:25 2007 +0200 @@ -120,7 +120,8 @@ (define-key perl-mode-map "\e\C-e" 'perl-end-of-function) (define-key perl-mode-map "\e\C-h" 'mark-perl-function) (define-key perl-mode-map "\e\C-q" 'indent-perl-exp) - (define-key perl-mode-map "\177" 'backward-delete-char-untabify) +;; GDF - Don't rebind the delete key +;; (define-key perl-mode-map "\177" 'backward-delete-char-untabify) (define-key perl-mode-map "\t" 'perl-indent-command)) (autoload 'c-macro-expand "cmacexp"
--- a/lisp/modes/python-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/python-mode.el Mon Aug 13 09:38:25 2007 +0200 @@ -304,7 +304,8 @@ ("\C-c\C-c" . py-execute-buffer) ("\C-c|" . py-execute-region) ("\C-c!" . py-shell) - ("\177" . py-delete-char) +;; GDF - Don't rebind the delete key +;; ("\177" . py-delete-char) ("\n" . py-newline-and-indent) ("\C-c:" . py-guess-indent-offset) ("\C-c\t" . py-indent-region)
--- a/lisp/modes/scheme.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/scheme.el Mon Aug 13 09:38:25 2007 +0200 @@ -121,7 +121,8 @@ (defun scheme-mode-commands (map) (define-key map "\t" 'scheme-indent-line) - (define-key map "\177" 'backward-delete-char-untabify) +;; GDF - Don't rebind the delete key +;; (define-key map "\177" 'backward-delete-char-untabify) (define-key map "\e\C-q" 'scheme-indent-sexp)) (defvar scheme-mode-map nil)
--- a/lisp/modes/sh-script.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/sh-script.el Mon Aug 13 09:38:25 2007 +0200 @@ -314,9 +314,10 @@ map (current-global-map)) (substitute-key-definition 'newline-and-indent 'sh-newline-and-indent map (current-global-map)) - (substitute-key-definition 'delete-backward-char - 'backward-delete-char-untabify - map (current-global-map)) +;; GDF - Don't mess around with the DEL bindings +;; (substitute-key-definition 'delete-backward-char +;; 'backward-delete-char-untabify +;; map (current-global-map)) (define-key map "\C-c:" 'sh-set-shell) (substitute-key-definition 'beginning-of-defun 'sh-beginning-of-compound-command
--- a/lisp/modes/simula.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/simula.el Mon Aug 13 09:38:25 2007 +0200 @@ -123,7 +123,8 @@ (define-key simula-mode-map "\C-c\C-n" 'simula-next-statement) ;(define-key simula-mode-map "\C-c\C-g" 'simula-goto-definition) ;(define-key simula-mode-map "\C-c\C-h" 'simula-standard-help) - (define-key simula-mode-map "\177" 'backward-delete-char-untabify) +;; GDF - Don't mess with DEL +;; (define-key simula-mode-map "\177" 'backward-delete-char-untabify) (define-key simula-mode-map ":" 'simula-electric-label) (define-key simula-mode-map "\t" 'simula-indent-command))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/modes/strokes.el Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,1424 @@ +;;; strokes.el Sat May 24 14:18:08 1997 + +;; Copyright (C) 1997 Free Software Foundation, Inc. + +;; Author: David Bakhash <cadet@mit.edu> +;; Maintainer: David Bakhash <cadet@mit.edu> +;; Version: 2.3-beta +;; Created: 12 April 1997 +;; Keywords: lisp, mouse, extensions + +;; 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 of the License, or +;; (at your option) any later version. + +;; XEmacs program 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: + +;; This package is written for for XEmacs v19.14 and up. +;; This is the strokes package. It is intended to allow the user to +;; control XEmacs by means of mouse strokes. Once strokes is loaded, you +;; can always get help be invoking `strokes-help': + +;; > M-x strokes-help + +;; and you can learn how to use the package. A mouse stroke, for now, +;; can be defined as holding the middle button, for instance, and then +;; moving the mouse in whatever pattern you wish, which you have set +;; XEmacs to understand as mapping to a given command. For example, you +;; may wish the have a mouse stroke that looks like a capital `C' which +;; means `copy-region-as-kill'. Treat strokes just like you do key +;; bindings. For example, XEmacs sets key bindings globally with the +;; `global-set-key' command. Likewise, you can do + +;; > M-x global-set-stroke + +;; to interactively program in a stroke. It would be wise to set the +;; first one to this very command, so that from then on, you invoke +;; `global-set-stroke' with a stroke. likewise, there may eventually +;; be a `local-set-stroke' command, also analogous to `local-set-key'. + +;; You can always unset the last stroke definition with the command + +;; > M-x strokes-unset-last-stroke + +;; and the last stroke that was added to `strokes-global-map' will be +;; removed. + +;; Other analogies between strokes and key bindings are as follows: + +;; 1) To describe a stroke binding, you can type + +;; > M-x describe-stroke + +;; analogous to `describe-key'. It's also wise to have a stroke, +;; like an `h', for help, or a `?', mapped to `describe-stroke'. + +;; 2) stroke bindings are set internally through the lisp function +;; `define-stroke', similar to the `define-key' function. some +;; examples for a 3x3 stroke grid would be + +;; (define-stroke c-mode-stroke-map +;; '((0 . 0) (1 . 1) (2 . 2)) +;; 'kill-region) +;; (define-stroke strokes-global-map +;; '((0 . 0) (0 . 1) (0 . 2) (1 . 2) (2 . 2)) +;; 'list-buffers) + +;; however, if you would probably just have the user enter in the +;; stroke interactively and then set the stroke to whatever he/she +;; entered. The lisp function to interactively read a stroke is +;; `strokes-read-stroke'. This is especially helpful when you're +;; on a fast computer that can handle a 9x9 stroke grid. + +;; NOTE: only global stroke bindings are currently implemented, +;; however mode- and buffer-local stroke bindings may eventually +;; be implemented in a future version. + +;; The important variables to be aware of for this package are listed +;; below. They can all be altered through the customizing package via + +;; > M-x customize + +;; and customizing the group named `strokes'. You can also read +;; documentation on the variables there. + +;; `strokes-minimum-match-score' (determines the threshold of error that +;; makes a stroke acceptable or unacceptable. If your strokes arn't +;; matching, then you should raise this variable. + +;; `strokes-grid-resolution' (determines the grid dimensions that you use +;; when defining/reading strokes. The finer the grid your computer can +;; handle, the more you can do, but even a 3x3 grid is pretty cool.) +;; The default value (7) should be fine for most decent computers. +;; NOTE: This variable should not be set to a number less than 3. + +;; `strokes-display-strokes-buffer' will allow you to hide the strokes +;; buffer when doing simple strokes. This is a speedup for slow +;; computers as well as people who don't want to see their strokes. + +;; If you find that your mouse is accelerating too fast, you can +;; execute the UNIX X command to slow it down. A good possibility is + +;; % xset m 5/4 8 + +;; which seems, heuristically, to work okay, without much disruption. + +;; Whenever you load in the strokes package, you will be able to save +;; what you've done upon exiting XEmacs. You can also do + +;; > M-x save-strokes + +;; and it will save your strokes in ~/.strokes, or you may wish to change +;; this by setting the variable `strokes-file'. + +;; Note that internally, all of the routines that are part of this +;; package are able to deal with complex strokes, as they are a superset +;; of simple strokes. However, the default of this package will map +;; mouse button2 to the command `strokes-do-stroke', and NOT +;; `strokes-do-complex-stroke'. If you wish to use complex strokes, you +;; will have to override this key mapping. Complex strokes are terminated +;; with mouse button3. The strokes package will not interfere with +;; `mouse-yank', but you may want to examine how this is done (see the +;; variable `strokes-click-command') + +;; To get strokes to work as part of your your setup, then you'll have +;; put the strokes package in your load-path (preferably byte-compiled) +;; and then add the following to your .xemacs-options file (or wherever +;; you put XEmacs-specific startup preferences): + +;;(and (fboundp 'device-on-window-system-p) +;; (device-on-window-system-p) +;; (require 'strokes)) + +;; Once loaded, you can start stroking. You can also toggle between +;; strokes mode by simple typing + +;; > M-x strokes-mode + +;; I am now in the process of porting this package to emacs. I also hope +;; that, with the help of others, this package will be useful in entering +;; in pictographic-like language text using the mouse (i.e. Korean). +;; Japanese and Chinese are a bit trickier, but I'm sure that with help +;; it can be done. The next version will allow the user to enter strokes +;; which "remove the pencil from the paper" so to speak, so one character +;; can have multiple strokes. + +;; Great thanks to Rob Ristroph for his generosity in letting me use his +;; PC to develop this, Jason Johnson for his help in algorithms, Euna +;; Kim for her help in Korean, and massive thanks to the helpful guys +;; on the help instance on athena (zeno, jered, amu, gsstark, ghudson, etc) +;; Special thanks to Steve Baur and Hrvoje Niksic for all their help. + +;; Tasks: (what I'm getting ready for future version)... +;; 2) use 'strokes-read-complex-stroke for korean, etc. +;; 4) buffer-local 'strokes-local-map, and mode-stroke-maps would be nice +;; 5) 'list-strokes (kinda important). What do people want? +;; How about an optional docstring for each stroke so that a person +;; can examine the strokes-file and actually make sense of it? +;; (e.g. "This stroke is a pentagram") +;; 6) add some hooks, like `strokes-read-stroke-hook' +;; 7) See what people think of the factory settings. Should I change +;; them? They're all pretty arbitrary in a way. I guess they +;; should be minimal, but computers are getting lots faster, and +;; if I choose the defaults too conservatively, then strokes will +;; surely dissapoint some people on decent machines (until they +;; figure out M-x customize). I need feedback. +;; Other: I always have the most beta version of strokes, so if you +;; want it just let me know. + +;;; Change Log: + +;; 1.3: provided user variable `strokes-use-strokes-buffer' to let users +;; hide the strokes and strokes buffer when entering simple strokes. +;; 1.3: cleaned up most leaks. +;; 1.3: with Jari Aalto's help, cleaned up overall program. +;; 1.3: added `strokes-help' for help on strokes +;; 1.3: fixed 'strokes-load-hook bug +;; 1.3: email address change: now <cadet@mit.edu> +;; 1.3: added `strokes-report-bug' based on efs/dired's `dired-report-bug' +;; 1.3: added more dialog-box queries for mouse-event stuff. +;; 1.4: allowed strokes to invoke kbd macros as well (thanks gsstark!) +;; 2.0: fixed up ordering of certain functions. +;; 2.0: fixed bug applying to strokes in dedicated and minibuffer windows. +;; 2.0: punted the C-h way of invoking strokes help routines. +;; 2.0: fixed `strokes-define-stroke' so it would error check against +;; defining strokes that were too short (really clicks) +;; 2.0: added `strokes-toggle-strokes-buffer' interactive function +;; 2.0: added `customize' support, thanks to patch from Hrvoje (thanks) +;; 2.1: strokes no longer forces `mouse-yank-at-point' to t on mouse-yank +;; (i.e. `mouse-yank-at-point' is up to you again) +;; 2.1: toggling strokes-mode off and then back on no longer deletes +;; the strokes that you programmed in but didn't save before +;; toggling off strokes-mode. +;; 2.1: advised may functions for modes like VM and w3 so that they too +;; can use strokes, while still mantaining old button2 functionality. +;; 2.1: with steve's help, got the autoload for `strokes-mode' and +;; fixed up the package so loading it does not enable strokes +;; until user calls `strokes-mode'. +;; 2.2: made sure that abbrev-mode was off in the ` *strokes*' buffer +;; 2.2: added more dired advice for mouse permissions commands +;; 2.2: added some checks to see if saving strokes is really necessary so +;; the user doesn't get promped aimlessly. +;; 2.2: change the `strokes-lift' symbol to a keyword of value `:strokes-lift' +;; for legibility. IF YOUR OLD STROKES DON'T WORK, THIS IS PROBABLY WHY. +;; 2.2: I might have to change this back to `'strokes-lift' because the keyword +;; fails in emacs, though I don't know why. +;; 2.2: `strokes-describe-stroke' is nicer during recursive edits +;; 2.2: provided `strokes-fill-stroke' to fill in empty spaces of strokes +;; as an important step towards platform (speed) independence. +;; Because of this, I moved the global setting of `strokes-last-stroke' +;; from `strokes-eliminate-consecutive-redundancies' to +;; `strokes-fill-stroke' since the latter comes later in processing +;; a user stroke. +;; 2.2: Finally changed the defaults, so now `strokes-grid-resolution' is 9 +;; and `strokes-minimum-match-score' is 1000 by default. This will surely +;; mess some people up, but if so, just set it back w/ M-x customize. +;; 2.2: Fixed up the mechanism for updating the `strokes-window-configuration'. +;; Now it only uses one function (`strokes-update-window-configuration') +;; which does it all, and much more efficiently (thanks RMS!). +;; 2.2 Fixed up the appearance of the *strokes* buffer so that there are no +;; ugly line truncations, and I got rid of the bug which would draw the stroke +;; on the wrong line. I still wish that `event-closest-point' was smarter. +;; In fact, `event-closest-point' does *not* do what its name suggests. +;; 2.3 Added more to `strokes-update-window-configuration' so it goes to hell less often +;; 2.3 `strokes-mode' no longer will undefine keys unless it's sure that the user had +;; had them mapped to a strokes command. +;; 2.3 added more magic autoload statements so strokes work more smoothly. +;; similarly, I made strokes-mode turn itself on when the user defines a stroke +;; (thanks Hrvoje). +;; 2.3 Added "Strokes" to the modeline when strokes is on, and allow toggling strokes +;; with mouse button2. +;; 2.3 Added `list-strokes', which is a really nice function which graphically lists +;; all the strokes that the user has defined and their corresponding commands. +;; `list-strokes' will appropriately colorize the pixmaps to display some time info. + +;;; Code: + +;;; Requirements and provisions... + +(autoload 'reporter-submit-bug-report "reporter") +(autoload 'mail-position-on-field "sendmail") + +;;; Constants... + +(defconst strokes-version "2.3-beta") + +(defconst strokes-bug-address "cadet@mit.edu") + +(defconst strokes-lift :strokes-lift + "Symbol representing a stroke lift event for complex strokes. +Complex strokes are those which contain two or more simple strokes. +This will be useful for when XEmacs understands Chinese.") + +;;; user variables... + +(defgroup strokes nil + "Control Emacs through mouse strokes" + :group 'mouse) + +(defcustom strokes-modeline-string " Strokes" + "*Modeline identification when strokes are on \(default is \" Strokes\"\)." + :type 'string + :group 'strokes) + +(defcustom strokes-character ?o + "*Character used when drawing strokes in the strokes buffer. +\(The default is lower-case `o', which works okay\)." + :type 'character + :group 'strokes) + +(defcustom strokes-minimum-match-score 1000 + "*Minimum score for a stroke to be considered a possible match. +Requiring a perfect match would set this variable to 0. +The default value is 1000, but it's mostly dependent on how precisely +you manage to replicate your user-defined strokes. It also depends on +the value of `strokes-grid-resolution', since a higher grid resolution +will correspond to more sample points, and thus more distance +measurements. Usually, this is not a problem since you first set +`strokes-grid-resolution' based on what your computer seems to be able +to handle (though the defaults are usually more than sufficent), and +then you can set `strokes-minimum-match-score' to something that works +for you. The only purpose of this variable is to insure that if you +do a bogus stroke that really doesn't match any of the predefined +ones, then strokes should NOT pick the one that came closest." + :type 'integer + :group 'strokes) + +(defcustom strokes-grid-resolution 9 + "*Integer defining dimensions of the stroke grid. +The grid is a square grid, where STROKES-GRID-RESOLUTION defaults to +`9', making a 9x9 grid whose coordinates go from (0 . 0) on the top +left to ((STROKES-GRID-RESOLUTION - 1) . (STROKES-GRID-RESOLUTION - 1)) +on the bottom right. The greater the resolution, the more intricate +your strokes can be. +NOTE: This variable should be odd and MUST NOT be less than 3. +WARNING: Changing the value of this variable will gravely affect the + strokes you have already programmed in. You should try to + figure out what it should be based on your needs and on how + quick the particular platform(s) you're operating on, and + only then start programming in your custom strokes." + :type 'integer + :group 'strokes) + +(defcustom strokes-file "~/.strokes" + "*File containing saved strokes for stroke-mode (default is ~/.strokes)." + :type 'file + :group 'strokes) + +(defcustom strokes-buffer-name " *strokes*" + "The buffer that the strokes take place in (default is ` *strokes*')." + :type 'string + :group 'strokes) + +(defcustom strokes-use-strokes-buffer t + "*If non-nil, the strokes buffer is used and strokes are displayed. +If nil, strokes will be read the same, however the user will not be +able to see the strokes. This be helpful for people who don't like +the delay in switching to the strokes buffer." + :type 'boolean + :group 'strokes) + +(defcustom strokes-click-command 'mouse-yank + "*Command to execute when stroke is actually a `click' event. +This is set to `mouse-yank' by default." + :type 'function + :group 'strokes) + +;;; internal variables... + +;;;###autoload +(defvar strokes-mode nil + "Non-nil when `strokes' is globally enabled") + +(defvar strokes-window-configuration nil + "The special window configuration used when entering strokes. +This is set properly in the function `strokes-update-window-configuration'.") + +(defvar strokes-last-stroke nil + "Last stroke entered by the user. +Its value gets set every time the function +`strokes-fill-stroke' gets called, +since that is the best time to set the variable") + +(defvar strokes-global-map '() + "Association list of strokes and their definitions. +Each entry is (STROKE . COMMAND) where STROKE is itself a list of +coordinates (X . Y) where X and Y are lists of positions on the +normalized stroke grid, with the top left at (0 . 0). COMMAND is the +corresponding interactive function") + +(defvar strokes-load-hook nil + "Function or functions to be called when `strokes' is loaded.") + +;;; Macros... + +(defsubst strokes-click-p (stroke) + "Non-nil if STROKE is really click." + (< (length stroke) 3)) + +;;; old, but worked pretty good (just in case)... +;;(defmacro strokes-define-stroke (stroke-map stroke def) +;; "Add STROKE to STROKE-MAP alist with given command DEF" +;; (list 'if (list '< (list 'length stroke) 3) +;; (list 'error +;; "That's a click, not a stroke. See `strokes-click-command'") +;; (list 'setq stroke-map (list 'cons (list 'cons stroke def) +;; (list 'remassoc stroke stroke-map))))) + +(defmacro strokes-define-stroke (stroke-map stroke def) + "Add STROKE to STROKE-MAP alist with given command DEF" + `(if (strokes-click-p ,stroke) + (error "That's a click, not a stroke; see `strokes-click-command'") + (setq ,stroke-map (cons (cons ,stroke ,def) + (remassoc ,stroke ,stroke-map))))) + +(defalias 'define-stroke 'strokes-define-stroke) + +(defsubst strokes-square (x) + "Returns the square of the number X" + (* x x)) + +(defsubst strokes-distance-squared (p1 p2) + "Gets the distance (squared) between to points P1 and P2. +Each point is a cons cells (X . Y)" + (let ((x1 (car p1)) + (y1 (cdr p1)) + (x2 (car p2)) + (y2 (cdr p2))) + (+ (strokes-square (- x2 x1)) + (strokes-square (- y2 y1))))) + +;;; Advice for various functions... + +;; I'd originally wanted to write a macro that would just take in the +;; generic functions which use mouse button2 in various modes. Most of +;; them are identical in form: they take an event as the single argument +;; and then do their thing. I tried writing a macro that looked +;; something like this, but failed. Advice just ain't that easy. The +;; one that bugged me the most was `Manual-follow-xref', because that had +;; &rest arguments, and I didn't know how to work around it in defadvice. +;; However, I was able to fix up most of the important modes (i.e. the +;; ones I use all the time). One `bug' in the program that I just can't +;; seem to figure out is why I can only advise other button2 functions +;; successfully when the variable `strokes-use-strokes-buffer' is nil. I +;; did all the save-excursion/save-window-excursion stuff SPECIFICALLY so +;; that using the strokes buffer or not would absolutely not affect any +;; other part of the program. If someone can figure out how to make the +;; following advices work w/ regardless of that variable +;; `strokes-use-strokes-buffer', then that would be a great victory. If +;; someone out there would be kind enough to make the commented code +;; below work, I'd be grateful. By the way, I put the `protect' keywords +;; there to insure that if a stroke went bad, then +;; `strokes-click-command' would be set back. If this isn't necessary, +;; then feel free to let me know. + +;; For what follows, I really wanted something that would work like this: + +;;(strokes-fix-button2 'vm-mouse-button-2) + +;; Or even better, I could have simply done something like: + +;;(mapcar 'strokes-fix-button2 +;; '(vm-mouse-button-2 +;; rmail-summary-mouse-goto-msg +;; <rest of them>)) + +;;; With help from Hans (author of advice.el)... +(defmacro strokes-fix-button2-command (command) + "Fix COMMAND so that it can also work with strokes. +COMMAND must take one event argument. +Example of how one might fix up a command that's bound to button2 +and which is an interactive funcion of one event argument: + +(strokes-fix-button2-command 'vm-mouse-button-2)" + (let ((command (eval command))) + `(progn + (defadvice ,command (around strokes-fix-button2 compile preactivate) + ,(format "Fix %s to work with strokes." command) + (if strokes-use-strokes-buffer + ;; then strokes is no good and we'll have to use the original + ad-do-it + ;; otherwise, we can make strokes work too... + (let ((strokes-click-command + ',(intern (format "ad-Orig-%s" command)))) + (strokes-do-stroke (ad-get-arg 0)))))))) + +(strokes-fix-button2-command 'vm-mouse-button-2) +(strokes-fix-button2-command 'rmail-summary-mouse-goto-msg) +(strokes-fix-button2-command 'Buffer-menu-mouse-select) +(strokes-fix-button2-command 'w3-widget-button-click) +(strokes-fix-button2-command 'widget-image-button-press) +(strokes-fix-button2-command 'Info-follow-clicked-node) +(strokes-fix-button2-command 'compile-mouse-goto-error) +(strokes-fix-button2-command 'gdbsrc-select-or-yank) +(strokes-fix-button2-command 'hypropos-mouse-get-doc) +(strokes-fix-button2-command 'gnus-mouse-pick-group) +(strokes-fix-button2-command 'gnus-mouse-pick-article) +(strokes-fix-button2-command 'gnus-article-push-button) +(strokes-fix-button2-command 'dired-mouse-find-file) +(strokes-fix-button2-command 'url-dired-find-file-mouse) +(strokes-fix-button2-command 'dired-u-r-mouse-toggle) +(strokes-fix-button2-command 'dired-u-w-mouse-toggle) +(strokes-fix-button2-command 'dired-u-x-mouse-toggle) +(strokes-fix-button2-command 'dired-g-r-mouse-toggle) +(strokes-fix-button2-command 'dired-g-w-mouse-toggle) +(strokes-fix-button2-command 'dired-g-x-mouse-toggle) +(strokes-fix-button2-command 'dired-o-r-mouse-toggle) +(strokes-fix-button2-command 'dired-o-w-mouse-toggle) +(strokes-fix-button2-command 'isearch-yank-x-selection) +(strokes-fix-button2-command 'occur-mode-mouse-goto) + +;;; I can fix the customize widget button click, but then +;;; people will get confused when they try to customize +;;; strokes with the mouse and customize tells them that +;;; `strokes-click-command' is mapped to `ad-Orig-widget-button-click' +;;(strokes-fix-button2-command 'widget-button-click) + +;;; without the advice, each advised function would look like... +;;(defadvice vm-mouse-button-2 (around vm-strokes activate protect) +;; "Allow strokes to work in VM." +;; (if strokes-use-strokes-buffer +;; ;; then strokes is no good and we'll have to use the original +;; ad-do-it +;; ;; otherwise, we can make strokes work too... +;; (let ((strokes-click-command 'ad-Orig-vm-mouse-button-2)) +;; (strokes-do-stroke (ad-get-arg 0))))) + +;;; Functions... + +(defun strokes-lift-p (object) + "Return non-nil if object is a stroke-lift" + (eq object strokes-lift)) + +(defun strokes-unset-last-stroke () + "Undo the last stroke definition." + (interactive) + (let ((command (cdar strokes-global-map))) + (if (y-or-n-p-maybe-dialog-box + (format "really delete last stroke definition, defined to `%s'? " + command)) + (progn + (setq strokes-global-map (cdr strokes-global-map)) + (message "That stroke has been deleted")) + (message "Nothing done")))) + +;;;###autoload +(defun strokes-global-set-stroke (stroke command) + "Interactively give STROKE the global binding as COMMAND. +Operated just like `global-set-key', except for strokes. +COMMAND is a symbol naming an interactively-callable function. STROKE +is a list of sampled positions on the stroke grid as described in the +documentation for the `strokes-define-stroke' function." + (interactive + (list + (and (or strokes-mode (strokes-mode t)) + (strokes-read-complex-stroke + "Define a new stroke. Draw with button1 (or 2). End with button3...")) + (read-command "command to map stroke to: "))) + (strokes-define-stroke strokes-global-map stroke command)) + +;;;###autoload +(defalias 'global-set-stroke 'strokes-global-set-stroke) + +;;(defun global-unset-stroke (stroke); FINISH THIS DEFUN! +;; "delete all strokes matching STROKE from `strokes-global-map', +;; letting the user input +;; the stroke with the mouse" +;; (interactive +;; (list +;; (strokes-read-stroke "Enter the stroke you want to delete..."))) +;; (strokes-define-stroke 'strokes-global-map stroke command)) + +(defun strokes-get-grid-position (stroke-extent position &optional grid-resolution) + "Map POSITION to a new grid position based on its STROKE-EXTENT and GRID-RESOLUTION. +STROKE-EXTENT as a list \(\(xmin . ymin\) \(xmax . ymax\)\). +If POSITION is a `strokes-lift', then it is itself returned. +Optional GRID-RESOLUTION may be used in place of STROKES-GRID-RESOLUTION. +The grid is a square whose dimesion is [0,GRID-RESOLUTION)." + (cond ((consp position) ; actual pixel location + (let ((grid-resolution (or grid-resolution strokes-grid-resolution)) + (x (car position)) + (y (cdr position)) + (xmin (caar stroke-extent)) + (ymin (cdar stroke-extent)) + ;; the `1+' is there to insure that the + ;; formula evaluates correctly at the boundaries + (xmax (1+ (caadr stroke-extent))) + (ymax (1+ (cdadr stroke-extent)))) + (cons (floor (* grid-resolution + (/ (float (- x xmin)) + (- xmax xmin)))) + (floor (* grid-resolution + (/ (float (- y ymin)) + (- ymax ymin))))))) + ((strokes-lift-p position) ; stroke lift + strokes-lift))) + +;;(defun strokes-get-grid-position (stroke-extent pix-pos) +;; "Return the stroke-grid position for PIX-POS given the total STROKE-EXTENT. +;;STROKE-EXTENT as a list \(\(xmin . ymin\) \(xmax . ymax\)\) and a particular +;;pixel position or `strokes-lift', find the corresponding grid position +;;\(based on `strokes-grid-resolution'\) for the PIX-POS." +;; (cond ((consp pix-pos) ; actual pixel location +;; (let ((x (car pix-pos)) +;; (y (cdr pix-pos)) +;; (xmin (caar stroke-extent)) +;; (ymin (cdar stroke-extent)) +;; ;; the `1+' is there to insure that the +;; ;; formula evaluates correctly at the boundaries +;; (xmax (1+ (caadr stroke-extent))) +;; (ymax (1+ (cdadr stroke-extent)))) +;; (cons (floor (* strokes-grid-resolution +;; (/ (float (- x xmin)) +;; (- xmax xmin)))) +;; (floor (* strokes-grid-resolution +;; (/ (float (- y ymin)) +;; (- ymax ymin))))))) +;; ((strokes-lift-p pix-pos) ; stroke lift +;; strokes-lift))) + +(defun strokes-get-stroke-extent (pixel-positions) + "From a list of absolute PIXEL-POSITIONS, returns absolute spatial extent. +The return value is a list ((xmin . ymin) (xmax . ymax))." + (if pixel-positions + (let ((xmin (caar pixel-positions)) + (xmax (caar pixel-positions)) + (ymin (cdar pixel-positions)) + (ymax (cdar pixel-positions)) + (rest (cdr pixel-positions))) + (while rest + (if (consp (car rest)) + (let ((x (caar rest)) + (y (cdar rest))) + (if (< x xmin) + (setq xmin x)) + (if (> x xmax) + (setq xmax x)) + (if (< y ymin) + (setq ymin y)) + (if (> y ymax) + (setq ymax y)))) + (setq rest (cdr rest))) + (let ((delta-x (- xmax xmin)) + (delta-y (- ymax ymin))) + (if (> delta-x delta-y) + (setq ymin (- ymin + (/ (- delta-x delta-y) + 2)) + ymax (+ ymax + (/ (- delta-x delta-y) + 2))) + (setq xmin (- xmin + (/ (- delta-y delta-x) + 2)) + xmax (+ xmax + (/ (- delta-y delta-x) + 2)))) + (list (cons xmin ymin) + (cons xmax ymax)))) + nil)) + +(defun strokes-eliminate-consecutive-redundancies (entries) + "Returns a list with no consecutive redundant entries." + ;; defun a grande vitesse grace a Dave G. + (loop for element on entries + if (not (equal (car element) (cadr element))) + collect (car element))) +;; (loop for element on entries +;; nconc (if (not (equal (car el) (cadr el))) +;; (list (car el))))) +;; yet another (orig) way of doing it... +;; (if entries +;; (let* ((current (car entries)) +;; (rest (cdr entries)) +;; (non-redundant-list (list current)) +;; (next nil)) +;; (while rest +;; (setq next (car rest)) +;; (if (equal current next) +;; (setq rest (cdr rest)) +;; (setq non-redundant-list (cons next non-redundant-list) +;; current next +;; rest (cdr rest)))) +;; (nreverse non-redundant-list)) +;; nil)) + +(defun strokes-renormalize-to-grid (positions &optional grid-resolution) + "Map POSITIONS to a new grid whose dimensions are based on GRID-RESOLUTION. +POSITIONS is a list of positions and stroke-lifts. +Optional GRID-RESOLUTION may be used in place of STROKES-GRID-RESOLUTION. +The grid is a square whose dimesion is [0,GRID-RESOLUTION)." + (let ((stroke-extent (strokes-get-stroke-extent positions))) + (mapcar (function + (lambda (pos) + (strokes-get-grid-position stroke-extent pos grid-resolution))) + positions))) + +;;(defun strokes-normalize-pixels-to-grid (pixel-positions) +;; "Map PIXEL-POSITIONS to the stroke grid. +;;PIXEL-POSITIONS is a list of pixel-positions and stroke-lifts. The +;;normalized stroke grid is defined by the variable STROKES-GRID-RESOLUTION" +;; (let ((stroke-extent (strokes-get-stroke-extent pixel-positions))) +;; (mapcar (function +;; (lambda (pix-pos) +;; (strokes-get-grid-position stroke-extent pix-pos))) +;; pixel-positions))) + +(defun strokes-fill-stroke (unfilled-stroke &optional force) + "Fill in missing grid locations in the list of UNFILLED-STROKE. +If FORCE is non-nil, then fill the stroke even if it's `stroke-click'. +NOTE: This is where the global variable `strokes-last-stroke' is set." + (setq strokes-last-stroke ; this is global + (if (and (strokes-click-p unfilled-stroke) + (not force)) + unfilled-stroke + (loop for grid-locs on unfilled-stroke + nconc (let* ((current (car grid-locs)) + (current-is-a-point-p (consp current)) + (next (cadr grid-locs)) + (next-is-a-point-p (consp next)) + (both-are-points-p (and current-is-a-point-p + next-is-a-point-p)) + (x1 (and current-is-a-point-p + (car current))) + (y1 (and current-is-a-point-p + (cdr current))) + (x2 (and next-is-a-point-p + (car next))) + (y2 (and next-is-a-point-p + (cdr next))) + (delta-x (and both-are-points-p + (- x2 x1))) + (delta-y (and both-are-points-p + (- y2 y1))) + (slope (and both-are-points-p + (if (zerop delta-x) + nil ; undefined vertical slope + (/ (float delta-y) + delta-x))))) + (cond ((not both-are-points-p) + (list current)) + ((null slope) ; undefinded vertical slope + (if (>= delta-y 0) + (loop for y from y1 below y2 + collect (cons x1 y)) + (loop for y from y1 above y2 + collect (cons x1 y)))) + ((zerop slope) ; (= y1 y2) + (if (>= delta-x 0) + (loop for x from x1 below x2 + collect (cons x y1)) + (loop for x from x1 above x2 + collect (cons x y1)))) + ((>= (abs delta-x) (abs delta-y)) + (if (> delta-x 0) + (loop for x from x1 below x2 + collect (cons x + (+ y1 + (round (* slope + (- x x1)))))) + (loop for x from x1 above x2 + collect (cons x + (+ y1 + (round (* slope + (- x x1)))))))) + (t ; (< (abs delta-x) (abs delta-y)) + (if (> delta-y 0) + (loop for y from y1 below y2 + collect (cons (+ x1 + (round (/ (- y y1) + slope))) + y)) + (loop for y from y1 above y2 + collect (cons (+ x1 + (round (/ (- y y1) + slope))) + y)))))))))) + +(defun strokes-rate-stroke (stroke1 stroke2) + "Rates STROKE1 with STROKE2 and returns a score based on a distance metric. +Note: the rating is an error rating, and therefore, a return of 0 +represents a perfect match. Also note that the order of stroke +arguments is order-independent for the algorithm used here." + (if (and stroke1 stroke2) + (let ((rest1 (cdr stroke1)) + (rest2 (cdr stroke2)) + (err (strokes-distance-squared (car stroke1) + (car stroke2)))) + (while (and rest1 rest2) + (while (and (consp (car rest1)) + (consp (car rest2))) + (setq err (+ err + (strokes-distance-squared (car rest1) + (car rest2))) + stroke1 rest1 + stroke2 rest2 + rest1 (cdr stroke1) + rest2 (cdr stroke2))) + (cond ((and (strokes-lift-p (car rest1)) + (strokes-lift-p (car rest2))) + (setq rest1 (cdr rest1) + rest2 (cdr rest2))) + ((strokes-lift-p (car rest2)) + (while (consp (car rest1)) + (setq err (+ err + (strokes-distance-squared (car rest1) + (car stroke2))) + rest1 (cdr rest1)))) + ((strokes-lift-p (car rest1)) + (while (consp (car rest2)) + (setq err (+ err + (strokes-distance-squared (car stroke1) + (car rest2))) + rest2 (cdr rest2)))))) + (if (null rest2) + (while (consp (car rest1)) + (setq err (+ err + (strokes-distance-squared (car rest1) + (car stroke2))) + rest1 (cdr rest1)))) + (if (null rest1) + (while (consp (car rest2)) + (setq err (+ err + (strokes-distance-squared (car stroke1) + (car rest2))) + rest2 (cdr rest2)))) + (if (or (strokes-lift-p (car rest1)) + (strokes-lift-p (car rest2))) + (setq err nil) + err)) + nil)) + +(defun strokes-match-stroke (stroke stroke-map) + "Finds the best matching command of STROKE in STROKE-MAP. +Returns the corresponding match as (COMMAND . SCORE)." + (if (and stroke stroke-map) + (let ((score (strokes-rate-stroke stroke (caar stroke-map))) + (command (cdar stroke-map)) + (map (cdr stroke-map))) + (while map + (let ((newscore (strokes-rate-stroke stroke (caar map)))) + (if (or (and newscore score (< newscore score)) + (and newscore (null score))) + (setq score newscore + command (cdar map))) + (setq map (cdr map)))) + (if score + (cons command score) + nil)) + nil)) + +;;;###autoload +(defun strokes-read-stroke (&optional prompt event) + "Read a simple stroke (interactively) and return the stroke. +Optional PROMPT in minibuffer displays before and during stroke reading. +This function will display the stroke interactively as it is being +entered in the strokes buffer if the variable +`strokes-use-strokes-buffer' is non-nil. +Optional EVENT is currently not used, but hopefully will be soon." + (save-excursion + (let ((pix-locs nil) + (grid-locs nil) + (event (or event (make-event)))) + (if strokes-use-strokes-buffer + ;; switch to the strokes buffer and + ;; display the stroke as it's being read + (save-window-excursion + (set-window-configuration strokes-window-configuration) + (if prompt + (progn + (setq event (next-event event prompt)) + (while (not (button-press-event-p event)) + (dispatch-event event) + (setq event (next-event event))))) + (unwind-protect + (progn + (setq event (next-event event)) + (while (not (button-release-event-p event)) + (if (mouse-event-p event) + (let ((point (event-closest-point event))) + (when point + (goto-char point) + (subst-char-in-region point (1+ point) ?\ strokes-character)) + (setq pix-locs (cons (cons (event-x-pixel event) + (event-y-pixel event)) + pix-locs)))) + (setq event (next-event event)))) + ;; protected + ;; clean up strokes buffer and then bury it. + (subst-char-in-region (point-min) (point-max) strokes-character ?\ ) + (goto-char (point-min)) + (bury-buffer))) + ;; Otherwise, don't use strokes buffer and read stroke silently + (if prompt + (progn + (setq event (next-event event prompt)) + (while (not (button-press-event-p event)) + (dispatch-event event) + (setq event (next-event event))))) + (setq event (next-event)) + (while (not (button-release-event-p event)) + (if (mouse-event-p event) + (setq pix-locs (cons (cons (event-x-pixel event) + (event-y-pixel event)) + pix-locs))) + (setq event (next-event event)))) + (setq grid-locs (strokes-renormalize-to-grid (nreverse pix-locs))) + (strokes-fill-stroke (strokes-eliminate-consecutive-redundancies grid-locs))))) + +;;;###autoload +(defun strokes-read-complex-stroke (&optional prompt event) + "Read a complex stroke (interactively) and return the stroke. +Optional PROMPT in minibuffer displays before and during stroke reading. +Note that a complex stroke allows the user to pen-up and pen-down. This +is implemented by allowing the user to paint with button1 or button2 and +then complete the stroke with button3. +Optional EVENT is currently not used, but hopefully will be soon." + (save-excursion + (save-window-excursion + (set-window-configuration strokes-window-configuration) + (let ((pix-locs nil) + (grid-locs nil) + (event (or event (next-event nil prompt)))) + (if prompt + (while (not (button-press-event-p event)) + (dispatch-event event) + (setq event (next-event event)))) + (unwind-protect + (progn + (while (not (and (button-press-event-p event) + (eq (event-button event) 3))) + (while (not (button-release-event-p event)) + (if (mouse-event-p event) + (let ((point (event-closest-point event))) + (when point + (goto-char point) + (subst-char-in-region point (1+ point) ?\ strokes-character)) + (setq pix-locs (cons (cons (event-x-pixel event) + (event-y-pixel event)) + pix-locs)))) + (setq event (next-event event prompt))) + (setq pix-locs (cons strokes-lift pix-locs)) + (while (not (button-press-event-p event)) + (dispatch-event event) + (setq event (next-event event prompt)))) + (setq pix-locs (nreverse (cdr pix-locs)) + grid-locs (strokes-renormalize-to-grid pix-locs)) + (strokes-fill-stroke + (strokes-eliminate-consecutive-redundancies grid-locs))) + ;; protected + (subst-char-in-region (point-min) (point-max) strokes-character ?\ ) + (goto-char (point-min)) + (bury-buffer)))))) + +(defun strokes-execute-stroke (stroke) + "Given STROKE, execute the command which corresponds to it. +The command will be executed provided one exists for that stroke, +based on the variable `strokes-minimum-match-score'. +If no stroke matches, nothing is done and return value is nil." + (let* ((match (strokes-match-stroke stroke strokes-global-map)) + (command (car match)) + (score (cdr match))) + (cond ((strokes-click-p stroke) + ;; This is the case of a `click' type event + (command-execute strokes-click-command)) + ((and match (<= score strokes-minimum-match-score)) + (message "%s" command) + (command-execute command)) + ((null strokes-global-map) + (if (file-exists-p strokes-file) + (and (y-or-n-p-maybe-dialog-box + (format "No strokes loaded. Load `%s'? " + strokes-file)) + (strokes-load-user-strokes)) + (error "No strokes defined; use `global-set-stroke'"))) + (t + (error + "No stroke matches; see variable `strokes-minimum-match-score'") + nil)))) + +;;;###autoload +(defun strokes-do-stroke (event) + "Read a simple stroke from the user and then exectute its comand. +This must be bound to a mouse event." + (interactive "e") + (or strokes-mode (strokes-mode t)) + (strokes-execute-stroke (strokes-read-stroke nil event))) + +;;;###autoload +(defun strokes-do-complex-stroke (event) + "Read a complex stroke from the user and then exectute its command. +This must be bound to a mouse event." + (interactive "e") + (or strokes-mode (strokes-mode t)) + (strokes-execute-stroke (strokes-read-complex-stroke nil event))) + +;;;###autoload +(defun strokes-describe-stroke (stroke) + "Displays the command which STROKE maps to, reading STROKE interactively." + (interactive + (list + (strokes-read-complex-stroke + "Enter stroke to describe; end with button3..."))) + (let* ((match (strokes-match-stroke stroke strokes-global-map)) + (command (or (and (strokes-click-p stroke) + strokes-click-command) + (car match))) + (score (cdr match))) + (if (or (and match + (<= score strokes-minimum-match-score)) + (and (strokes-click-p stroke) + strokes-click-command)) + (message "That stroke maps to `%s'" command) + (message "That stroke is undefined")) + (sleep-for 1))) ; helpful for recursive edits + +;;;###autoload +(defalias 'describe-stroke 'strokes-describe-stroke) + +;;;###autoload +(defun strokes-help () + "Get instructional help on using the the `strokes' package." + (interactive) + (with-displaying-help-buffer + (function + (lambda () + (save-excursion + (let ((helpdoc + "This is help for the strokes package. + +If you find something wrong with it, or feel that it can be improved +in some way, then please feel free to email me: + +David Bakhash <cadet@mit.edu> + +or just do + +M-x strokes-report-bug + +------------------------------------------------------------ + +The strokes package allows you to define strokes (that you make with +the mouse or other pointer device) that XEmacs can interpret as +corresponding to commands, and then executes the commands. It does +character recognition, so you don't have to worry about getting it +right every time. + +Strokes are easy to program and fun to use. To start strokes going, +you'll want to put the following line in your .emacs file: + +(and (fboundp 'device-on-window-system-p) + (device-on-window-system-p) + (require 'strokes)) + +This will load strokes when and only when you start XEmacs on a window +system (i.e. that has a pointer (mouse) device, etc.). + +To toggle strokes-mode, you just do + +> M-x strokes-mode + +When you're ready to start defining strokes, just use the command + +> M-x global-set-stroke + +You will see a ` *strokes*' buffer which is waiting for you to enter in +your stroke. When you enter in the stroke, you draw with button1 or +button2, and then end with button3. Next, you enter in the command +which will be executed when that stroke is invoked. Simple as that. +For now, try to define a stroke to copy a region. This is a popular +edit command, so type + +> M-x global-set-stroke + +Then, in the ` *strokes*' buffer, draw the letter `C' (for `copy') +and then, when it asks you to enter the command to map that to, type + +> copy-region-as-kill + +That's about as hard as it gets. +Remember: paint with button1 or button2 and then end with button3. + +If ever you want to know what a certain strokes maps to, then do + +> M-x describe-stroke + +and you can enter in any arbitrary stroke. Remember: The strokes +package lets you program in simple and complex (multi-lift) strokes. +The only difference is how you *invoke* the two. You will most likely +use simple strokes, as complex strokes were developed for +Chinese/Japanese/Korean. So the middle mouse button (button2) will +invoke the command `strokes-do-stroke' in buffers where button2 doesn't +already have a meaning other than its original, which is `mouse-yank'. +But don't worry: `mouse-yank' will still work with strokes (see the +variable `strokes-click-command'). + +If ever you define a stroke which you don't like, then you can unset +it with the command + +> M-x strokes-unset-last-stroke + +You can always get an idea of what your current strokes look like with +the command + +> M-x list-strokes + +Your strokes will be displayed in from most recent down, and the +beginning of each simple stroke will be marked by a color dot. Since +you may have several simple strokes in a complex stroke, the dot +colors are arranged in the rainbow color sequence, `ROYGBIV'. + +Your strokes are stored as you enter them. They get saved in a file +called ~/.strokes, along with other strokes configuration variables. +You can change this location by setting the variable `strokes-file'. +You will be prompted to save them when you exit XEmacs, or you can save +them with + +> M-x save-strokes + +Your strokes get loaded automatically when you enable `strokes-mode'. +You can also load in your user-defined strokes with + +> M-x load-user-strokes + +A few more important things: + +o The command `strokes-do-stroke' is also invoked with C-button2, so that you + can still enter a stroke in modes which use button2 for other things, + such as cross-referencing. + +o Complex strokes (i.e. `strokes-do-complex-stroke'), by default, use + Sh-button2. + +o Strokes are a bit computer-dependent in that they depend somewhat on + the speed of the computer you're working on. This means that you + may have to tweak some variables. You can read about them in the + commentary of `strokes.el'. Better to just use apropos and read their + docstrings. All variables/functions start with `strokes'. The one + variable which many people wanted to see was + `strokes-use-strokes-buffer' which allows the user to use strokes + silently--without displaying the strokes. All variables can be set + by customizing the group named `strokes' via the customization package: + + > M-x customize + +o A problem with strokes happens when you resize windows. If you + enlarge your XEmacs window a lot and realize that your strokes + buffer is not big enough, you may need to fix it with + + > M-x strokes-update-window-configuration.")) + (princ helpdoc standard-output))))))) + +(defun strokes-report-bug () + "Submit a bug report for strokes." + (interactive) + (let ((reporter-prompt-for-summary-p t)) + (or (boundp 'reporter-version) + (setq reporter-version + "Your version of reporter is obsolete. Please upgrade.")) + (reporter-submit-bug-report + strokes-bug-address "Strokes" + (cons + 'strokes-version + (nconc + (mapcar + 'intern + (sort + (let (completion-ignore-case) + (all-completions "strokes-" obarray 'user-variable-p)) + 'string-lessp)) + (list 'reporter-version))) + (function + (lambda () + (save-excursion + (mail-position-on-field "subject") + (beginning-of-line) + (skip-chars-forward "^:\n") + (if (looking-at ": Strokes;") + (progn + (goto-char (match-end 0)) + (delete-char -1) + (insert " " strokes-version " bug:"))))))))) + +(defsubst strokes-fill-current-buffer-with-whitespace () + "Erase the contents of the current buffer and fill it with whitespace" + (erase-buffer) + (loop for i from 1 to (frame-height) do + (progn + (insert-char ?\ (1- (frame-width))) + (newline))) + (goto-char (point-min))) + +(defun strokes-update-window-configuration () + "Insure that `strokes-window-configuration' is up-to-date." + (interactive) + (let ((current-window (selected-window))) + (cond ((or (window-minibuffer-p current-window) + (window-dedicated-p current-window)) + ;; don't try to update strokes window configuration + ;; if window is dedicated or a minibuffer + nil) + ((or (interactive-p) + (not (buffer-live-p (get-buffer strokes-buffer-name))) + (null strokes-window-configuration)) + ;; create `strokes-window-configuration' from scratch... + (save-excursion + (save-window-excursion + (get-buffer-create strokes-buffer-name) + (set-window-buffer current-window strokes-buffer-name) + (delete-other-windows) + (fundamental-mode) + (auto-save-mode 0) + (if (featurep 'font-lock) + (font-lock-mode 0)) + (abbrev-mode 0) + (buffer-disable-undo (current-buffer)) + (setq truncate-lines nil) + (strokes-fill-current-buffer-with-whitespace) + (setq strokes-window-configuration (current-window-configuration)) + (bury-buffer)))) + (t ; `strokes buffer' still exists... + ;; update the strokes-window-configuration for this specific frame... + (save-excursion + (save-window-excursion + (set-window-buffer current-window strokes-buffer-name) + (delete-other-windows) + (strokes-fill-current-buffer-with-whitespace) + (setq strokes-window-configuration (current-window-configuration)) + (bury-buffer))))))) + +;;;###autoload +(defun strokes-load-user-strokes () + "Load user-defined strokes from file named by `strokes-file'." + (interactive) + (cond ((and (file-exists-p strokes-file) + (file-readable-p strokes-file)) + (load-file strokes-file)) + ((interactive-p) + (error "Trouble loading user-defined strokes; nothing done")) + (t + (message "No user-defined strokes, sorry")))) + +;;;###autoload +(defalias 'load-user-strokes 'strokes-load-user-strokes) + +(defun strokes-prompt-user-save-strokes () + "Save user-defined strokes to file named by `strokes-file'." + (interactive) + (save-excursion + (let ((current strokes-global-map)) + (unwind-protect + (progn + (setq strokes-global-map nil) + (strokes-load-user-strokes) + (if (and (not (equal current strokes-global-map)) + (or (interactive-p) + (yes-or-no-p-maybe-dialog-box "save your strokes? "))) + (progn + (require 'pp) ; pretty-print variables + (message "Saving strokes in %s..." strokes-file) + (get-buffer-create "*saved-strokes*") + (set-buffer "*saved-strokes*") + (erase-buffer) + (emacs-lisp-mode) + (goto-char (point-min)) + (insert-string + ";; -*- Syntax: Emacs-Lisp; Mode: emacs-lisp -*-\n") + (insert-string (format ";;; saved strokes for %s, as of %s\n\n" + (user-full-name) + (format-time-string "%B %e, %Y" nil))) + (message "Saving strokes in %s..." strokes-file) + (insert-string (format "(setq strokes-global-map '%s)" + (pp current))) + (message "Saving strokes in %s..." strokes-file) + (indent-region (point-min) (point-max) nil) + (write-region (point-min) + (point-max) + strokes-file)) + (message "(no changes need to be saved)"))) + ;; protected + (if (get-buffer "*saved-strokes*") + (kill-buffer (get-buffer "*saved-strokes*"))) + (setq strokes-global-map current))))) + +(defalias 'save-strokes 'strokes-prompt-user-save-strokes) + +(defun strokes-toggle-strokes-buffer (&optional arg) + "Toggle the use of the strokes buffer. +In other words, toggle the variabe `strokes-use-strokes-buffer'. +With ARG, use strokes buffer if and only if ARG is positive or true. +Returns value of `strokes-use-strokes-buffer'." + (interactive "P") + (setq strokes-use-strokes-buffer + (if arg (> (prefix-numeric-value arg) 0) + (not strokes-use-strokes-buffer)))) + +(defun strokes-xpm-for-stroke (stroke &optional bufname) + "Create an xpm pixmap for the given stroke in buffer `*strokes-xpm*'. +Optional BUFNAME to name something else. +The pixmap will contain time information via rainbow dot colors +where each individual strokes begins." + (save-excursion + (let ((buf (get-buffer-create (or bufname "*strokes-xpm*"))) + (stroke (strokes-eliminate-consecutive-redundancies + (strokes-fill-stroke + (strokes-renormalize-to-grid stroke 31)))) + (lift-flag t) + (rainbow-chars (list ?R ?O ?Y ?G ?B ?P)) ; ROYGBIV w/o indigo + (header (format "/* XPM */ +static char * stroke_xpm[] = { +/* width height ncolors cpp [x_hot y_hot] */ +\"33 33 9 1 26 23\", +/* colors */ +\" c #FFFFFFFFFFFF\", +\"* s iconColor1 m black c black\", +\"R c #FFFF00000000\", +\"O c #FFFF80000000\", +\"Y c #FFFFFFFF0000\", +\"G c #0000FFFF0000\", +\"B c #00000000FFFF\", +\"P c #FFFF0000FFFF\", +\". c #45458B8B0000\", +/* pixels */"))) + (set-buffer buf) + (erase-buffer) + (insert header) + (loop repeat 33 do + (newline) + (insert-char ?\") + (insert-char ?\ 33) + (insert "\",") + finally (insert "}\n")) + (loop for point in stroke + for x = (car-safe point) + for y = (cdr-safe point) do + (cond ((consp point) + ;; draw a point, and possibly a starting-point + (if lift-flag + ;; mark starting point with the appropriate color + (let ((char (or (car rainbow-chars) ?\.))) + (loop for i from 0 to 2 do + (loop for j from 0 to 2 do + (goto-line (+ 16 i y)) + (forward-char (+ 1 j x)) + (delete-char 1) + (insert-char char))) + (setq rainbow-chars (cdr rainbow-chars) + lift-flag nil)) + ;; Otherwise, just plot the point... + (goto-line (+ 17 y)) + (forward-char (+ 2 x)) + (subst-char-in-region (point) (1+ (point)) ?\ ?\*))) + ((strokes-lift-p point) + ;; a lift--tell the loop to X out the next point... + (setq lift-flag t))))))) + +;;;###autoload +(defun strokes-list-strokes (&optional stroke-map) + "Pop up a buffer containing a listing of all strokes defined in STROKE-MAP. +If STROKE-MAP is not given, `strokes-global-map' will be used instead." + (interactive) + (push-window-configuration) + (set-buffer (get-buffer-create "*Strokes List*")) + (setq buffer-read-only nil) + (erase-buffer) + (insert + "Command Stroke\n" + "------- ------\n\n") + (loop for def in (or stroke-map strokes-global-map) do + (let ((stroke (car def)) + (command (cdr def))) + (strokes-xpm-for-stroke stroke " *strokes-xpm*") + (insert-char ?\ 60) + (beginning-of-line) + (insert (symbol-name command)) + (beginning-of-line) + (forward-char 45) + (make-annotation (make-glyph + (list + (vector 'xpm + :data (buffer-substring + (point-min " *strokes-xpm*") + (point-max " *strokes-xpm*") + " *strokes-xpm*")) + [string :data "[Image]"])) + (point) 'text) + (newline 2))) + (view-buffer "*Strokes List*" t) + (goto-char (point-min)) +;; (define-key +;; (current-local-map (get-buffer "*Strokes List*")) +;; [(q)] +;; 'pop-window-configuration)) + ) + +;;;###autoload +(defalias 'list-strokes 'strokes-list-strokes) + +;;;###autoload +(defun strokes-mode (&optional arg) + "Toggle strokes being enabled. +With ARG, turn strokes on if and only if ARG is positive or true. +Note that `strokes-mode' is a global mode. Think of it as a minor +mode in all buffers when activated. +By default, strokes are invoked with mouse button-2. You can define +new strokes with + +> M-x global-set-stroke" + (interactive "P") + (let ((on-p (if arg + (> (prefix-numeric-value arg) 0) + (not strokes-mode)))) + (cond ((not (device-on-window-system-p)) + (error "Can't use strokes without windows")) + (on-p ; turn on strokes + (and (file-exists-p strokes-file) + (null strokes-global-map) + (strokes-load-user-strokes)) + (add-hook 'kill-emacs-hook + 'strokes-prompt-user-save-strokes) + (add-hook 'select-frame-hook + 'strokes-update-window-configuration) + (strokes-update-window-configuration) + (define-key global-map [(button2)] 'strokes-do-stroke) + (define-key global-map [(control button2)] 'strokes-do-stroke) + (define-key global-map [(shift button2)] + 'strokes-do-complex-stroke) + (ad-activate-regexp "^strokes-") ; advise button2 commands + (setq strokes-mode t)) + (t ; turn off strokes + (if (get-buffer strokes-buffer-name) + (kill-buffer (get-buffer strokes-buffer-name))) + (remove-hook 'select-frame-hook + 'strokes-update-window-configuration) + (if (string-match "^strokes-" (symbol-name (key-binding [(button2)]))) + (define-key global-map [(button2)] strokes-click-command)) + (if (string-match "^strokes-" (symbol-name (key-binding [(control button2)]))) + (global-unset-key [(control button2)])) + (if (string-match "^strokes-" (symbol-name (key-binding [(shift button2)]))) + (global-unset-key [(shift button2)])) + (ad-deactivate-regexp "^strokes-") ; unadvise strokes-button2 commands + (setq strokes-mode nil)))) + (redraw-modeline)) + +(add-minor-mode 'strokes-mode strokes-modeline-string nil nil 'strokes-mode) + +(provide 'strokes) +(run-hooks 'strokes-load-hook) + +;;; strokes.el ends here
--- a/lisp/modes/tcl.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/tcl.el Mon Aug 13 09:38:25 2007 +0200 @@ -565,7 +565,8 @@ ;; FIXME. (define-key tcl-mode-map "\e\C-h" 'tcl-mark-defun) (define-key tcl-mode-map "\e\C-q" 'indent-tcl-exp) - (define-key tcl-mode-map "\177" 'backward-delete-char-untabify) +;; GDF - Don't mess with the DEL key +;; (define-key tcl-mode-map "\177" 'backward-delete-char-untabify) (define-key tcl-mode-map "\t" 'tcl-indent-command) (define-key tcl-mode-map "\M-;" 'tcl-indent-for-comment) (define-key tcl-mode-map "\M-\C-x" 'tcl-eval-defun) @@ -590,7 +591,8 @@ 'comint-dynamic-list-filename-completions) (define-key inferior-tcl-mode-map "\e\C-a" 'tcl-beginning-of-defun) (define-key inferior-tcl-mode-map "\e\C-e" 'tcl-end-of-defun) - (define-key inferior-tcl-mode-map "\177" 'backward-delete-char-untabify) +;; GDF - Don't mess with the DEL key +;; (define-key inferior-tcl-mode-map "\177" 'backward-delete-char-untabify) (define-key inferior-tcl-mode-map "\M-\C-x" 'tcl-eval-defun) (define-key inferior-tcl-mode-map "\C-c\C-b" 'tcl-submit-bug-report) (define-key inferior-tcl-mode-map "\C-c\C-i" 'tcl-help-on-word)
--- a/lisp/modes/two-column.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,611 +0,0 @@ -;;; two-column.el --- minor mode for editing of two-column text - -;; Copyright (C) 1992, 1994 Free Software Foundation, Inc. - -;; Author: Daniel Pfeiffer <pfeiffer@cix.cict.fr> -;; Adapted-By: ESR - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - -;;; Commentary: - -;; This package gives you the ability to edit text in a two-column format. - -;; --8<---- two-column.el ----8<--------8<--------8<--------8<--------8<------- -;; Esperanto: English: - -;; Minora modalo por samtempa dukolumna Minor mode for simultaneous -;; tajpado two-column editing - -;; Tiu minora modalo ebligas al vi This minor mode allows you to -;; tajpi sendepende en du apudaj independently edit two adjacent -;; bufroj. Vi havas tri eblecojn por buffers. You have three ways to -;; eki ^gin. ^Ciu donas al vi start it up. Each gives you a -;; horizontale disigatan fenestron, horizontally split window similar to -;; simila al fina apareco de via the final outcome of your text: -;; teksto: - -;; C-x 6 2 asocias novan bufron nomatan associates a new buffer called -;; same, sed kun 2C/ anta^u. the same, but with 2C/ -;; prepended. - -;; C-x 6 b asocias alian bufron. Vi povas associates another buffer. -;; anka^u asocii dataron, se vi This can be used to associate a -;; ^jus anta^ue faris C-x C-f. file if you just did C-x C-f. - -;; C-x 6 u disigas jam dukolumnan tekston unmerges a two-column text into -;; en du bufroj ekde la nuna two buffers from the current -;; linio, kaj je la nuna kolumno. line and at the current column. -;; La anta^uaj signoj (ofte The preceding characters (often -;; tabeligilo a^u |) estas la tab or |) are the column -;; kolumna disiganto. Linioj kiuj separator. Lines that don't -;; ne enhavas ilin ne estas have them won't be separated. -;; disigitaj. Kiel la kvara kaj Like the fourth and fifth line -;; la kvina linio se vi disigas if you unmerge this file from -;; ^ci dataron ekde la unua angla the first english word. -;; vorto. - -;; Je ^cia flanko estas bufro, kiu On each side is a buffer that knows -;; konas la alian. Kun la ordonoj C-x about the other. With the commands -;; 6 SPC, C-x 6 DEL kaj C-x 6 RET oni C-x 6 SPC, C-x 6 DEL and C-x 6 RET -;; povas suben- a^u supreniri unu you can simultaneously scroll up or -;; ekranon, kaj subeniri linion, down by a screenfull and by a line -;; samtempe en la du bufroj. Al la alia in both buffers. Empty lines are -;; bufro estas aldonataj linioj se added to the other buffer if -;; necesas, por ke vi vidu la saman necessary, so that you see the same -;; parton. Per C-x 6 C-l vi povas part. With C-x 6 C-l you can -;; recentrigi la linion. Kiam vi nur recenter the line. When you only -;; plu havas unu el la du bufroj have one of the two buffers onscreen -;; surekrane vi revidos la alian per you can get the other back with C-x -;; denove C-x 6 2. 6 2 once more. - -;; Se vi volas meti longajn liniojn If you include long lines, i.e which -;; (ekz. programerojn) en la kunigotan will span both columns (eg. source -;; tekston, ili devas esti en la code), they should be in what will -;; estonte unua kolumno. La alia devas be the first column, with the -;; havi malplenajn linion apud ili. associated buffer having empty lines -;; next to them. - -;; Averto: en Emacs kiam vi ^san^gas la Attention: in Emacs when you change -;; ma^joran modalon, la minoraj modaloj the major mode, the minor modes are -;; estas anka^u elmemorigitaj. Tiu- also purged from memory. In that -;; okaze vi devas religi la du bufrojn case you must reassociate the two -;; per iu C-x 6-ordono, ekz. C-x 6 b. buffers with any C-x 6-command, e.g. -;; C-x 6 b. - -;; Kiam vi estos kontenta de la When you have edited both buffers to -;; rezulto, vi kunmetos la du kolumnojn your content, you merge them with -;; per C-x 6 1. Se vi poste vidas C-x 6 1. If you then see a problem, -;; problemon, vi neniigu la kunmeton you undo the merge with C-x u and -;; per C-x u kaj plue modifu la du continue to edit the two buffers. -;; bufrojn. Kiam vi ne plu volas tajpi When you no longer want to edit in -;; dukolumne, vi eliru el la minora two columns, you turn off the minor -;; modalo per C-x 6 k. mode with C-x 6 k. - - -;; An^stata^u tri `autoload' kaj tri | Instead of three `autoload' and -;; `global-set-key' vi povas uzi la | three `global-set-key' you can use -;; jenon en via dataro ~/.emacs, por | the following in your file -;; memstare ^sar^gi la modalon: | ~/.emacs, to automatically load -;; | the mode: - -;; (global-set-key "\C-x6" -;; '(lambda () (interactive) -;; (load-library "two-column") -;; (call-interactively -;; (cdr (assq (read-char) tc-mode-map))))) - -;; Se vi ^satus havi la dukolumnajn | If you'd like to have the -;; ordonojn je funkciklavo <f2>, vi | two-column commands on function -;; povas uzi la jenon en via dataro | key <f2>, you can use the -;; ~/.emacs: | following in your file ~/.emacs: - -;; (global-set-key [f2] (function -;; (lambda () -;; (interactive) -;; (load-library "two-column") -;; (global-set-key [f2] tc-mode-map) -;; (call-interactively -;; (cdr (assq (read-char) tc-mode-map)))))) - -;; In addition to two-column editing of text, for example for writing a -;; bilingual text side-by-side as shown below in the file's prolog, other -;; interesting uses have been found for this minor mode: -;; -;; -;; You can separate the columns with {+} C-x 6 u or <f2> u if you prefer -;; any string that pleases you, by {+} handles these with a prefix argument -;; setting tc-separator. For {+} that enables you to declare the -;; example "{+} " if you like to {+} desired length of such a string. -;; amuse yourself. -;; -;; -;; keyword You can write any text corresponding to a -;; given keyword in a filled paragraph next to -;; it. Note that the width of the first column -;; may be less than window-min-width in the -;; result, but will be displayed at that width. -;; -;; another This is not a three- or multi-column mode. -;; The example in the file's prolog required -;; working on two columns and then treating the -;; result as one column in order to add the -;; third. -;; -;; -;; Programmers might like the ability to split off the comment column of -;; a file that looks like the following. The advantage is that with -;; (setq fill-prefix "-- ") you can run M-q (fill-paragraph) on the -;; comment. The problem is, code quickly gets rather wide, so you need -;; to use a narrower comment column, which is less interesting, unless -;; you have a 132-column screen. Code lines that reach beyond -;; comment-column are no problem, except that you won't always see their -;; end during editing. -;; -;; BEGIN -- This is just some meaningless -;; FOR i IN 1..10 LOOP -- code in Ada, that runs foobar -;; foobar( i ); -- once for each argument from one -;; END LOOP; -- to ten, and then we're already -;; END; -- through with it. -;; -;; Better yet, you can put the point before "This", type M-3 C-x 6 u -;; which makes "-- " the separator between a no-comments Ada buffer, and -;; a plain text comment buffer. When you put them back together, every -;; non-empty line of the 2nd column will again be preceded by "-- ". -;; -;; -;; The <f2> function key hack (which is one of the rare times when -;; function keys are mnemonic) at the end of the file's prolog requires -;; that the lisp/term/*.el for your terminal use the standard -;; conventions. Too bad that some don't (at least not in version 18.55). -;; The Sun one is hopelessly non-standard, and vt2[024]0 somehow forgot -;; to define <f1> thru <f5>. (It defines <pf1> thru <pf4> instead, but -;; that is not what we need on an X terminal.) If you want to use those, -;; you'll need another hack something like: -;; -;; (if (string= (system-name) "cix") -;; (progn -;; (load-library "term/vt200.el") -;; (define-key CSI-map "12~" (cons function-keymap ?\^b))) -;; (global-unset-key "\e[") -;; (define-key esc-map "[225z" (cons function-keymap ?\^b))) -;; -;; where "cix" is the non-sun machine I use. Actually I use the same X -;; terminal to connect to both machines, and I want to keep my ~/.emacs -;; identical on both. Bother, the two Emacses don't recognize the same -;; keys and assign different sequences to those they do! I sure hope all -;; this nonsense will stop with version 19 (or preferably soon) where I'd -;; like to be able to say (define-key some-map '<f2> some-cmd), and see -;; <f2> rather than some unintelligible ESC-sequence in command key -;; sequences. - -;;; Code: - -;;;;; Set up keymap ;;;;; - -;;;###autoload -(defvar tc-mode-map nil - "Keymap for commands for two-column mode.") - -;;;###autoload -(if tc-mode-map - () - (setq tc-mode-map (make-sparse-keymap)) - (define-key tc-mode-map "1" 'tc-merge) - (define-key tc-mode-map "2" 'tc-two-columns) - (define-key tc-mode-map "b" 'tc-associate-buffer) - (define-key tc-mode-map "d" 'tc-dissociate) - (define-key tc-mode-map "\C-l" 'tc-recenter) - (define-key tc-mode-map "o" 'tc-associated-buffer) - (define-key tc-mode-map "s" 'tc-split) - (define-key tc-mode-map "{" 'shrink-window-horizontally) - (define-key tc-mode-map "}" 'enlarge-window-horizontally) - (define-key tc-mode-map " " 'tc-scroll-up) - (define-key tc-mode-map "\^?" 'tc-scroll-down) - (define-key tc-mode-map "\C-m" 'tc-scroll-line)) - -;;;###autoload -(global-set-key "\C-x6" tc-mode-map) - -;;;;; variable declarations ;;;;; - -;; markers seem to be the only buffer-id not affected by renaming -;; a buffer. This nevertheless loses when a buffer is killed. -;;;###autoload -(defvar tc-other nil - "Marker to the associated buffer, if non-nil.") -;;;###autoload -(make-variable-buffer-local 'tc-other) -;;;###autoload -(put 'tc-other 'permanent-local t) - -;(setq minor-mode-alist (cons '(tc-other " 2C") minor-mode-alist)) -;; XEmacs: moved after def of tc-two-columns. - -;; rearranged, so that the pertinent info will show in 40 columns -(defvar tc-mode-line-format - '("-%*- %15b --" (-3 . "%p") "--%[(" mode-name - minor-mode-alist mode-line-process "%n" ")%]%-") - "*Value of mode-line-format for a buffer in two-column minor mode.") - -(defvar tc-separator "" - "*A string inserted between the two columns when merging. -This gets set locally by \\[tc-split].") -(put 'tc-separator 'permanent-local t) - -(defvar tc-window-width 40 - "*The width of the first column. (Must be at least `window-min-width') -This value is local for every buffer that sets it.") -(make-variable-buffer-local 'tc-window-width) -(put 'tc-window-width 'permanent-local t) - -(defvar tc-beyond-fill-column 4 - "*Base for calculating `fill-column' for a buffer in two-column minor mode. -The value of `fill-column' becomes `tc-window-width' for this buffer -minus this value.") - -(defvar tc-mode-hook nil - "Function called, if non-nil, whenever turning on two-column minor mode. -It can get called by \\[tc-two-columns] (tc-two-columns), \\[tc-split] (tc-split) -and \\[tc-associate-buffer] (tc-associate-buffer), on both buffers.") - -;;;;; base functions ;;;;; - -;; the access method for the other buffer. this tries to remedy against -;; lost local variables and lost buffers. -(defun tc-other () - (if tc-other - (or (prog1 - (marker-buffer tc-other) - (setq mode-line-format tc-mode-line-format )) - ; The associated buffer somehow got killed. - (progn - ; The other variables may later be useful if the user - ; reestablishes the association. - (kill-local-variable 'tc-other) - (kill-local-variable 'mode-line-format) - nil)))) - -;;;###autoload -(defun tc-two-columns (&optional buffer) - "Split current window vertically for two-column editing. - -When called the first time, associates a buffer with the current -buffer. Both buffers are put in two-column minor mode and -tc-mode-hook gets called on both. These buffers remember -about one another, even when renamed. - -When called again, restores the screen layout with the current buffer -first and the associated buffer to it's right. - -If you include long lines, i.e which will span both columns (eg. -source code), they should be in what will be the first column, with -the associated buffer having empty lines next to them. - -You have the following commands at your disposal: - -\\[tc-two-columns] Rearrange screen -\\[tc-associate-buffer] Reassociate buffer after changing major mode -\\[tc-scroll-up] Scroll both buffers up by a screenfull -\\[tc-scroll-down] Scroll both buffers down by a screenful -\\[tc-scroll-line] Scroll both buffers up by one or more lines -\\[tc-recenter] Recenter and realign other buffer -\\[shrink-window-horizontally], \\[enlarge-window-horizontally] Shrink, enlarge current column -\\[tc-associated-buffer] Switch to associated buffer -\\[tc-merge] Merge both buffers - -These keybindings can be customized in your ~/.emacs by `tc-prefix' -and `tc-mode-map'. - -The appearance of the screen can be customized by the variables -`tc-window-width', `tc-beyond-fill-column', -`tc-mode-line-format' and `truncate-partial-width-windows'." - - (interactive "P") - ; first go to full width, so that we can certainly split into - ; two windows - (if (< (window-width) (frame-width)) - (enlarge-window 99999 t)) - (split-window-horizontally - (max window-min-width (min tc-window-width - (- (frame-width) window-min-width)))) - (if (tc-other) - (progn - (other-window 1) - (switch-to-buffer (tc-other)) - (other-window -1) - ; align buffers if necessary - (tc-scroll-line 0)) - - ; set up minor mode linking two buffers - (setq fill-column (- tc-window-width - tc-beyond-fill-column) - mode-line-format tc-mode-line-format) - (run-hooks tc-mode-hook) - (let ((other (point-marker))) - (other-window 1) - (switch-to-buffer - (or buffer - (generate-new-buffer - (concat "2C/" (buffer-name))))) - (or buffer - (text-mode)) - (setq fill-column (- tc-window-width - tc-beyond-fill-column) - mode-line-format tc-mode-line-format - tc-other other - other (point-marker)) - (run-hooks tc-mode-hook) - (other-window -1) - (setq tc-other other)))) - -;; XEmacs: do it right. -;;;###autoload -(add-minor-mode 'tc-other " 2C" nil nil 'tc-two-columns) - -(defalias 'tc-mode 'tc-two-columns) - -;;;###autoload -(defun tc-associate-buffer () - "Associate another buffer with this one in two-column minor mode. -Can also be used to associate a just previously visited file, by -accepting the proposed default buffer. - -See \\[tc-two-columns] and `lisp/two-column.el' for further details." - (interactive) - (let ((b1 (current-buffer)) - (b2 (or (tc-other) - (read-buffer "Associate buffer: " (other-buffer))))) - (save-excursion - (setq tc-other nil) - (set-buffer b2) - (and (tc-other) - (not (eq b1 (tc-other))) - (error "Buffer already associated with buffer `%s'." - (buffer-name (tc-other)))) - (setq b1 (and (assq 'tc-window-width (buffer-local-variables)) - tc-window-width))) - ; if other buffer has a local width, adjust here too - (if b1 (setq tc-window-width (- (frame-width) b1))) - (tc-two-columns b2))) - -;;;###autoload -(defun tc-split (arg) - "Unmerge a two-column text into two buffers in two-column minor mode. -The text is unmerged at the cursor's column which becomes the local -value of `tc-window-width'. Only lines that have the ARG same -preceding characters at that column get split. The ARG preceding -characters without any leading whitespace become the local value for -`tc-separator'. This way lines that continue across both -columns remain untouched in the first buffer. - -This function can be used with a prototype line, to set up things as -you like them. You write the first line of each column with the -separator you like and then unmerge that line. E.g.: - -First column's text sSs Second columns text - \\___/\\ - / \\ - 5 character Separator You type M-5 \\[tc-split] with the point here - -See \\[tc-two-columns] and `lisp/two-column.el' for further details." - (interactive "p") - (and (tc-other) - (if (y-or-n-p (concat "Overwrite associated buffer `" - (buffer-name (tc-other)) - "'? ")) - (save-excursion - (set-buffer (tc-other)) - (erase-buffer)) - (signal 'quit nil))) - (let ((point (point)) - ; make next-line always come back to same column - (goal-column (current-column)) - ; a counter for empty lines in other buffer - (n (1- (count-lines (point-min) (point)))) - chars other) - (save-excursion - (backward-char arg) - (setq chars (buffer-substring (point) point)) - (skip-chars-forward " \t" point) - (make-local-variable 'tc-separator) - (setq tc-separator (buffer-substring (point) point) - tc-window-width (current-column))) - (tc-two-columns) - (setq other (tc-other)) - ; now we're ready to actually unmerge - (save-excursion - (while (not (eobp)) - (if (not (and (= (current-column) goal-column) - (string= chars - (buffer-substring (point) - (save-excursion - (backward-char arg) - (point)))))) - (setq n (1+ n)) - (setq point (point)) - (backward-char arg) - (skip-chars-backward " \t") - (delete-region point (point)) - (setq point (point)) - (insert-char ?\n n) - (append-to-buffer other point (progn (end-of-line) - (if (eobp) - (point) - (1+ (point))))) - (delete-region point (point)) - (setq n 0)) - (next-line 1))))) - -;;;###autoload -(defun tc-dissociate () - "Turn off two-column minor mode in current and associated buffer. -If the associated buffer is unmodified and empty, it is killed." - (interactive) - (let ((buffer (current-buffer))) - (save-excursion - (and (tc-other) - (set-buffer (tc-other)) - (or (not (tc-other)) - (eq buffer (tc-other))) - (if (and (not (buffer-modified-p)) - (eobp) (bobp)) - (kill-buffer nil) - (kill-local-variable 'tc-other) - (kill-local-variable 'tc-window-width) - (kill-local-variable 'tc-separator) - (kill-local-variable 'mode-line-format) - (kill-local-variable 'fill-column)))) - (kill-local-variable 'tc-other) - (kill-local-variable 'tc-window-width) - (kill-local-variable 'tc-separator) - (kill-local-variable 'mode-line-format) - (kill-local-variable 'fill-column))) - - -;; this doesn't use yank-rectangle, so that the first column can -;; contain long lines -;;;###autoload -(defun tc-merge () - "Merges the associated buffer with the current buffer. -They get merged at the column, which is the value of -`tc-window-width', i.e. usually at the vertical window -separator. This separator gets replaced with white space. Beyond -that the value of gets inserted on merged lines. The two columns are -thus pasted side by side, in a single text. If the other buffer is -not displayed to the left of this one, then this one becomes the left -column. - -If you want `tc-separator' on empty lines in the second column, -you should put just one space in them. In the final result, you can strip -off trailing spaces with \\[beginning-of-buffer] \\[replace-regexp] [ SPC TAB ] + $ RET RET" - - (interactive) - (or (tc-other) - (error "You must first set two-column minor mode.")) - (and (> (car (window-pixel-edges)) 0) ; not touching left edge of screen - (eq (window-buffer (previous-window)) - (tc-other)) - (other-window -1)) - (save-excursion - (let ((b1 (current-buffer)) - (b2 (tc-other)) - string) - (goto-char (point-min)) - (set-buffer b2) - (goto-char (point-min)) - (while (not (eobp)) - (setq string (buffer-substring (point) - (progn (end-of-line) (point)))) - (or (eobp) - (forward-char)) ; next line - (set-buffer b1) - (if (string= string "") - () - (end-of-line) - (indent-to-column tc-window-width) - (insert tc-separator string)) - (next-line 1) ; add one if necessary - (set-buffer b2)))) - (if (< (window-width) (frame-width)) - (enlarge-window 99999 t))) - -;;;;; utility functions ;;;;; - -;;;###autoload -(defun tc-associated-buffer () - "Switch to associated buffer." - (interactive) - (or (tc-other) - (error "You must set two-column minor mode.")) - (if (get-buffer-window (tc-other)) - (select-window (get-buffer-window (tc-other))) - (switch-to-buffer (tc-other)))) - -;; It would be desirable to intercept anything that causes the current -;; window to scroll. Maybe a `scroll-hook'? -;;;###autoload -(defun tc-scroll-line (arg) - "Scroll current window upward by ARG lines. -The associated window gets scrolled to the same line." - (interactive "p") - (or (tc-other) - (error "You must set two-column minor mode.")) - ; scroll-up has a bug on arg 0 at end of buffer - (or (zerop arg) - (scroll-up arg)) - (setq arg (count-lines (point-min) (window-start))) - ; too bad that pre 18.57 Emacs makes save-window-excursion restore - ; the point. When it becomes extinct, we can simplify this. - (if (get-buffer-window (tc-other)) - (let ((window (selected-window))) - (select-window (get-buffer-window (tc-other))) - (setq arg (- arg (count-lines (point-min) (window-start)))) - ; make sure that other buffer has enough lines - (save-excursion - (goto-char (point-max)) - (insert-char ?\n - (- arg (count-lines (window-start) (point-max)) -1))) - (or (zerop arg) - (scroll-up arg)) - (select-window window)))) - -;;;###autoload -(defun tc-scroll-up (arg) - "Scroll current window upward by ARG screens. -The associated window gets scrolled to the same line." - (interactive "p") - (tc-scroll-line (* arg (- (window-height) - next-screen-context-lines 1)))) - -;;;###autoload -(defun tc-scroll-down (arg) - "Scroll current window downward by ARG screens. -The associated window gets scrolled to the same line." - (interactive "p") - (tc-scroll-line (* arg (- next-screen-context-lines - (window-height) -1)))) - -;;;###autoload -(defun tc-recenter (arg) - "Center point in window. With ARG, put point on line ARG. -This counts from bottom if ARG is negative. The associated window -gets scrolled to the same line." - (interactive "P") - (setq arg (and arg (prefix-numeric-value arg))) - (tc-scroll-line (- (count-lines (window-start) (point)) - (cond ((null arg) (/ (window-height) 2)) - ((< arg 0) (+ (window-height) arg)) - ( arg))))) - -(defun enlarge-window-horizontally (arg) - "Make current window ARG columns wider." - (interactive "p") - (enlarge-window arg t) - (and (tc-other) - (setq tc-window-width (+ tc-window-width arg)) - (set-buffer (tc-other)) - (setq tc-window-width (- tc-window-width arg)))) - -(defun shrink-window-horizontally (arg) - "Make current window ARG columns narrower." - (interactive "p") - (enlarge-window-horizontally (- arg))) - -(provide 'two-column) - -;;; two-column.el ends here
--- a/lisp/modes/verilog-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/verilog-mode.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,6 +1,6 @@ ;;; verilog-mode.el --- major mode for editing verilog source in Emacs ;; -;; $Header: /afs/informatik.uni-tuebingen.de/local/web/xemacs/xemacs-cvs/XEmacs/xemacs/lisp/modes/Attic/verilog-mode.el,v 1.4 1997/05/09 03:28:03 steve Exp $ +;; $Header: /afs/informatik.uni-tuebingen.de/local/web/xemacs/xemacs-cvs/XEmacs/xemacs/lisp/modes/Attic/verilog-mode.el,v 1.5 1997/05/29 23:49:56 steve Exp $ ;; Copyright (C) 1996 Free Software Foundation, Inc. @@ -70,7 +70,7 @@ (provide 'verilog-mode) ;; This variable will always hold the version number of the mode -(defconst verilog-mode-version "$$Revision: 1.4 $$" +(defconst verilog-mode-version "$$Revision: 1.5 $$" "Version of this verilog mode.") ;; @@ -264,7 +264,8 @@ (define-key verilog-mode-map "\M-\C-f" 'electric-verilog-forward-sexp) (define-key verilog-mode-map "\M-\r" (function (lambda () (interactive) (electric-verilog-terminate-line 1)))) - (define-key verilog-mode-map "\177" 'backward-delete-char-untabify) +;; GDF - Leave the DEL key alone +;; (define-key verilog-mode-map "\177" 'backward-delete-char-untabify) (define-key verilog-mode-map "\M-\t" 'verilog-complete-word) (define-key verilog-mode-map "\M-?" 'verilog-show-completions) (define-key verilog-mode-map "\M-\C-h" 'verilog-mark-defun)
--- a/lisp/modes/vhdl-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/vhdl-mode.el Mon Aug 13 09:38:25 2007 +0200 @@ -7,8 +7,8 @@ ;; Author: Rodney J. Whitby <rwhitby@asc.corp.mot.com> ;; Maintainer: Rodney J. Whitby <rwhitby@asc.corp.mot.com> ;; Created: June 1994, adapted from cc-mode.el 4.29 by Barry A. Warsaw. -;; Version: $Revision: 1.2 $ -;; Last Modified: $Date: 1997/03/08 23:26:29 $ +;; Version: $Revision: 1.3 $ +;; Last Modified: $Date: 1997/05/29 23:49:57 $ ;; Keywords: languages VHDL ;; Archive: ftp.eda.com.au:/pub/emacs/vhdl-mode.tar.gz @@ -69,7 +69,7 @@ ;; LCD Archive Entry: ;; vhdl-mode.el|Rodney J. Whitby|rwhitby@asc.corp.mot.com ;; |Major mode for editing VHDL code -;; |$Date: 1997/03/08 23:26:29 $|$Revision: 1.2 $ +;; |$Date: 1997/05/29 23:49:57 $|$Revision: 1.3 $ ;; |ftp.eda.com.au:/pub/emacs/vhdl-mode.tar.gz @@ -347,7 +347,8 @@ (define-key vhdl-mode-map "\M-\C-h" 'vhdl-mark-defun) (define-key vhdl-mode-map "\M-\C-q" 'vhdl-indent-sexp) (define-key vhdl-mode-map "\t" 'vhdl-indent-command) - (define-key vhdl-mode-map "\177" 'backward-delete-char-untabify) +;; GDF - leave the DEL key alone! +;; (define-key vhdl-mode-map "\177" 'backward-delete-char-untabify) ;; these are new keybindings, with no counterpart to BOCM (define-key vhdl-mode-map "\C-c\C-b" 'vhdl-submit-bug-report) (define-key vhdl-mode-map "\C-c\C-c" 'comment-region) @@ -539,7 +540,7 @@ ;;;###autoload (defun vhdl-mode () "Major mode for editing VHDL code. -vhdl-mode $Revision: 1.2 $ +vhdl-mode $Revision: 1.3 $ To submit a problem report, enter `\\[vhdl-submit-bug-report]' from a vhdl-mode buffer. This automatically sets up a mail buffer with version information already added. You just need to add a description of the @@ -2593,7 +2594,7 @@ ;; Defuns for submitting bug reports: -(defconst vhdl-version "$Revision: 1.2 $" +(defconst vhdl-version "$Revision: 1.3 $" "vhdl-mode version number.") (defconst vhdl-mode-help-address "rwhitby@asc.corp.mot.com" "Address accepting submission of bug reports.")
--- a/lisp/modes/view-less.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/view-less.el Mon Aug 13 09:38:25 2007 +0200 @@ -59,7 +59,8 @@ (define-key map "-" 'negative-argument) (define-key map " " 'scroll-up) (define-key map "f" 'scroll-up) - (define-key map "\177" 'scroll-down) +;; GDF - Don't rebind the DEL key +;; (define-key map "\177" 'scroll-down) (define-key map "b" 'scroll-down) (define-key map 'backspace 'scroll-down) (define-key map "\r" 'view-scroll-lines-up)
--- a/lisp/modes/vrml-mode.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/modes/vrml-mode.el Mon Aug 13 09:38:25 2007 +0200 @@ -98,7 +98,8 @@ (define-key vrml-mode-map "{" 'vrml-electric-brace) (define-key vrml-mode-map "}" 'vrml-electric-brace) (define-key vrml-mode-map "\e\C-q" 'indent-vrml-exp) - (define-key vrml-mode-map "\177" 'backward-delete-char-untabify) +;; GDF - why does EVERYONE want to rebind the DEL key? *sigh* +;; (define-key vrml-mode-map "\177" 'backward-delete-char-untabify) (define-key vrml-mode-map "\t" 'vrml-indent-command) (define-key vrml-mode-map "\M-;" 'vrml-indent-for-comment) ))
--- a/lisp/packages/bookmark.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/packages/bookmark.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,20 +1,13 @@ ;;; bookmark.el --- set bookmarks, maybe annotate them, jump to them later. -;; Copyright (C) 1993, 1994, 1995 Free Software Foundation +;; Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation -;; Author: Karl Fogel <kfogel@cyclic.com> -;; Maintainer: Karl Fogel <kfogel@cyclic.com> +;; Author: Karl Fogel <kfogel@red-bean.com> +;; Maintainer: Karl Fogel <kfogel@red-bean.com> ;; Created: July, 1993 -;; Author's Update Number: 2.6.14-x +;; Author's Update Number: see variable `bookmark-version'. ;; Keywords: bookmarks, placeholders, annotations -;;; Summary: -;; This package is for setting "bookmarks" in files. A bookmark -;; associates a string with a location in a certain file. Thus, you -;; can navigate your way to that location by providing the string. -;; See the "User Variables" section for customizations. - -;;; Copyright info: ;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify @@ -28,11 +21,16 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +;; along with GNU Emacs; 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: FSF 19.30. -;;; We appear to have a more recent version than FSF? +;;; Commentary: + +;; This package is for setting "bookmarks" in files. A bookmark +;; associates a string with a location in a certain file. Thus, you +;; can navigate your way to that location by providing the string. +;; See the "User Variables" section for customizations. ;; Thanks to David Bremner <bremner@cs.sfu.ca> for thinking of and ;; then implementing the bookmark-current-bookmark idea. He even @@ -50,7 +48,7 @@ ;; bookmark-bmenu-check-position, and some of the Lucid compatibility ;; stuff). -;; Kudos (whatever they are) go to Jim Blandy <jimb@cyclic.com> +;; Kudos (whatever they are) go to Jim Blandy <jimb@red-bean.com> ;; for his eminently sensible suggestion to separate bookmark-jump ;; into bookmark-jump and bookmark-jump-noselect, which made many ;; other things cleaner as well. @@ -79,12 +77,15 @@ ;; FAVORITE CHINESE RESTAURANT: ;; Boy, that's a tough one. Probably Hong Min, or maybe Emperor's ;; Choice (both in Chicago's Chinatown). Well, both. How about you? + +;;;; Code: - (require 'pp) - -;;;; Code: +(defconst bookmark-version "2.6.4" + "Version number of bookmark.el. This is not related to the version +of Emacs bookmark comes with; it is used solely by bookmark's +maintainers to avoid version confusion.") ;;; Misc comments: ;; @@ -98,24 +99,17 @@ ;;; User Variables -(defgroup bookmark nil - "Setting, annotation and jumping to bookmarks" - :group 'matching) +(defvar bookmark-use-annotations nil + "*If non-nil, saving a bookmark will query for an annotation in a +buffer.") -(defcustom bookmark-use-annotations nil - "*If non-nil, saving a bookmark will query for an annotation in a -buffer." - :type 'boolean - :group 'bookmark) - - -(defcustom bookmark-save-flag t +(defvar bookmark-save-flag t "*Controls when Emacs saves bookmarks to a file. --> Nil means never save bookmarks, except when `bookmark-save' is explicitly called \(\\[bookmark-save]\). --> t means save bookmarks when Emacs is killed. ---> Otherise, it should be a number that is the frequency with which +--> Otherwise, it should be a number that is the frequency with which the bookmark list is saved \(i.e.: the number of times which Emacs' bookmark list may be modified before it is automatically saved.\). If it is a number, Emacs will also automatically save @@ -126,9 +120,7 @@ behavior.\) To specify the file in which to save them, modify the variable -bookmark-default-file, which is `~/.emacs.bmk' by default." - :type '(choice (const nil) (const t) integer) - :group 'bookmark) +bookmark-default-file, which is `~/.emacs.bmk' by default.") (defconst bookmark-old-default-file "~/.emacs-bkmrks" @@ -139,76 +131,58 @@ (defvar bookmark-file nil "Old name for `bookmark-default-file'.") -(defcustom bookmark-default-file - (if (and (boundp 'bookmark-file) bookmark-file) +(defvar bookmark-default-file + (if bookmark-file ;; In case user set `bookmark-file' in her .emacs: bookmark-file - (if (eq system-type 'ms-dos) - "~/emacs.bmk" ; Cannot have initial dot [Yuck!] - "~/.emacs.bmk")) - "*File in which to save bookmarks by default." - :type 'file - :group 'bookmark) + (convert-standard-filename "~/.emacs.bmk")) + "*File in which to save bookmarks by default.") -(defcustom bookmark-version-control 'nospecial +(defvar bookmark-version-control 'nospecial "*Whether or not to make numbered backups of the bookmark file. It can have four values: t, nil, `never', and `nospecial'. The first three have the same meaning that they do for the variable `version-control', and the final value `nospecial' means just -use the value of `version-control'." - :type '(choice (const t) (const nil) (const never) (const nospecial)) - :group 'bookmark) +use the value of `version-control'.") -(defcustom bookmark-completion-ignore-case t - "*Non-nil means bookmark functions ignore case in completion." - :type 'boolean - :group 'bookmark) +(defvar bookmark-completion-ignore-case t + "*Non-nil means bookmark functions ignore case in completion.") -(defcustom bookmark-sort-flag t +(defvar bookmark-sort-flag t "*Non-nil means that bookmarks will be displayed sorted by bookmark name. Otherwise they will be displayed in LIFO order (that is, most -recently set ones come first, oldest ones come last)." - :type 'boolean - :group 'bookmark) +recently set ones come first, oldest ones come last).") + + +(defvar bookmark-automatically-show-annotations t + "*Nil means don't show annotations when jumping to a bookmark.") -(defcustom bookmark-automatically-show-annotations t - "*Nil means don't show annotations when jumping to a bookmark." - :type 'boolean - :group 'bookmark) +(defvar bookmark-bmenu-file-column 30 + "*Column at which to display filenames in a buffer listing bookmarks. +You can toggle whether files are shown with \\<bookmark-bmenu-mode-map>\\[bookmark-bmenu-toggle-filenames].") -(defcustom bookmark-bmenu-file-column 30 - "*Column at which to display filenames in a buffer listing bookmarks. -You can toggle whether files are shown with \\<bookmark-bmenu-mode-map>\\[bookmark-bmenu-toggle-filenames]." - :type 'integer - :group 'bookmark) - - -(defcustom bookmark-bmenu-toggle-filenames t +(defvar bookmark-bmenu-toggle-filenames t "*Non-nil means show filenames when listing bookmarks. This may result in truncated bookmark names. To disable this, put the following in your .emacs: -\(setq bookmark-bmenu-toggle-filenames nil\)" - :type 'boolean - :group 'bookmark) +\(setq bookmark-bmenu-toggle-filenames nil\)") -(defcustom bookmark-menu-length 70 - "*Maximum length of a bookmark name displayed on a popup menu." - :type 'integer - :group 'boolean) +(defvar bookmark-menu-length 70 + "*Maximum length of a bookmark name displayed on a popup menu.") ;;; No user-serviceable parts beyond this point. ;; Is it XEmacs? (defconst bookmark-xemacsp - (string-match "\\(Lucid\\|XEmacs\\)" emacs-version)) + (string-match "\\(Lucid\\|Xemacs\\)" emacs-version)) ;; Added for lucid emacs compatibility, db @@ -217,6 +191,18 @@ ;; suggested for lucid compatibility by david hughes: (or (fboundp 'frame-height) (defalias 'frame-height 'screen-height)) +;; This variable is probably obsolete now... +(or (boundp 'baud-rate) + ;; some random value higher than 9600 + (setq baud-rate 19200)) + +;; XEmacs apparently call this `buffer-substring-without-properties', +;; sigh. +(or (fboundp 'buffer-substring-no-properties) + (if (fboundp 'buffer-substring-without-properties) + (fset 'buffer-substring-no-properties + 'buffer-substring-without-properties) + (fset 'buffer-substring-no-properties 'buffer-substring))) ;;; Keymap stuff: @@ -310,7 +296,7 @@ ;; just add the hook to make sure that people don't lose bookmarks ;; when they kill Emacs, unless they don't want to save them. -;;;Don't ###autoload this, there's no need. -jwz +;;;###autoload (add-hook 'kill-emacs-hook (function (lambda () (and (featurep 'bookmark) @@ -462,7 +448,11 @@ (if cell (setcdr cell node) (nconc (bookmark-get-bookmark-record bookmark) - (list (cons 'info-node node)))))) + (list (cons 'info-node node))))) + + (message "%S" (assq 'info-node (bookmark-get-bookmark-record bookmark))) + (sit-for 4) + ) (defvar bookmark-history nil @@ -502,19 +492,24 @@ (setq bookmark-history (cons (, string) bookmark-history))))) -(defun bookmark-make (name &optional annotation overwrite) +(defun bookmark-make (name &optional annotation overwrite info-node) "Make a bookmark named NAME. Optional second arg ANNOTATION gives it an annotation. Optional third arg OVERWRITE means replace any existing bookmarks with -this name." +this name. +Optional fourth arg INFO-NODE means this bookmark is at info node +INFO-NODE, so record this fact in the bookmark's entry." (bookmark-maybe-load-default-file) (let ((stripped-name (copy-sequence name))) - (set-text-properties 0 (length stripped-name) nil stripped-name) + (or bookmark-xemacsp + ;; XEmacs's `set-text-properties' doesn't work on + ;; free-standing strings, apparently. + (set-text-properties 0 (length stripped-name) nil stripped-name)) (if (and (bookmark-get-bookmark stripped-name) (not overwrite)) - ;; already existing boookmark under that name and + ;; already existing bookmark under that name and ;; no prefix arg means just overwrite old bookmark (setcdr (bookmark-get-bookmark stripped-name) - (list (bookmark-make-cell annotation))) + (list (bookmark-make-cell annotation info-node))) ;; otherwise just cons it onto the front (either the bookmark ;; doesn't exist already, or there is no prefix arg. In either @@ -523,7 +518,7 @@ (setq bookmark-alist (cons (list stripped-name - (bookmark-make-cell annotation)) + (bookmark-make-cell annotation info-node)) bookmark-alist))) ;; Added by db @@ -534,25 +529,38 @@ (bookmark-save)))) -(defun bookmark-make-cell (annotation) +(defun bookmark-make-cell (annotation &optional info-node) "Return the record part of a new bookmark, given ANNOTATION. Must be at the correct position in the buffer in which the bookmark is -being set. This will change soon." - (` ((filename . (, (bookmark-buffer-file-name))) - (front-context-string - . (, (if (>= (- (point-max) (point)) bookmark-search-size) - (buffer-substring-no-properties - (point) - (+ (point) bookmark-search-size)) - nil))) - (rear-context-string - . (, (if (>= (- (point) (point-min)) bookmark-search-size) - (buffer-substring-no-properties - (point) - (- (point) bookmark-search-size)) - nil))) - (position . (, (point))) - (annotation . (, annotation))))) +being set. This might change someday. +Optional second arg INFO-NODE means this bookmark is at info node +INFO-NODE, so record this fact in the bookmark's entry." + (let ((the-record + (` ((filename . (, (bookmark-buffer-file-name))) + (front-context-string + . (, (if (>= (- (point-max) (point)) bookmark-search-size) + (buffer-substring-no-properties + (point) + (+ (point) bookmark-search-size)) + nil))) + (rear-context-string + . (, (if (>= (- (point) (point-min)) bookmark-search-size) + (buffer-substring-no-properties + (point) + (- (point) bookmark-search-size)) + nil))) + (position . (, (point))) + )))) + + ;; Now fill in the optional parts: + (if annotation + (nconc the-record (list (cons 'annotation annotation)))) + (if info-node + (nconc the-record (list (cons 'info-node info-node)))) + + ;; Finally, return the completed record. + the-record)) + ;;; File format stuff @@ -599,11 +607,9 @@ ;; bookmark-jump will search for STRING-BEHIND and STRING-IN-FRONT in ;; case the file has changed since the bookmark was set. It will ;; attempt to place the user before the changes, if there were any. -;; annotation is the annotation for the bookmark; it may not exist +;; ANNOTATION is the annotation for the bookmark; it may not exist ;; (for backward compatibility), be nil (no annotation), or be a ;; string. -;; -;; ANNOTATION is an annotation for the bookmark. (defconst bookmark-file-format-version 1 @@ -631,7 +637,7 @@ (forward-char -1) (read (current-buffer))) ;; Else no hope of getting information here. - (error "Not bookmark format."))))) + (error "Not bookmark format"))))) (defun bookmark-upgrade-version-0-alist (old-list) @@ -667,7 +673,7 @@ (pp new-list (current-buffer)) (save-buffer)) (goto-char (point-min)) - (message "Upgrading bookmark format from 0 to %d... done." + (message "Upgrading bookmark format from 0 to %d...done" bookmark-file-format-version) ) @@ -697,11 +703,11 @@ ((= version 0) (bookmark-upgrade-file-format-from-0)) (t - (error "Bookmark file format version strangeness."))))) + (error "Bookmark file format version strangeness"))))) (defun bookmark-insert-file-format-version-stamp () - "Insert text indicating current version of bookmark file-format." + "Insert text indicating current version of bookmark file format." (insert (format ";;;; Emacs Bookmark Format Version %d ;;;;\n" bookmark-file-format-version)) @@ -742,7 +748,7 @@ (interactive (list nil current-prefix-arg)) (or (bookmark-buffer-file-name) - (error "Buffer not visiting a file or directory.")) + (error "Buffer not visiting a file or directory")) (bookmark-maybe-load-default-file) @@ -769,15 +775,18 @@ (if bookmark-use-annotations (bookmark-read-annotation parg str) (progn - (bookmark-make str annotation parg) - ;; In Info, there's a little more information to record: - (if (eq major-mode 'Info-mode) - (bookmark-set-info-node str Info-current-node)) + (bookmark-make str annotation parg (bookmark-info-current-node)) (setq bookmark-current-bookmark str) (bookmark-bmenu-surreptitiously-rebuild-list) (goto-char bookmark-current-point))))) +(defun bookmark-info-current-node () + "If in Info-mode, return current node name (a string), else nil." + (if (eq major-mode 'Info-mode) + Info-current-node)) + + (defun bookmark-kill-line (&optional newline-too) "Kill from point to end of line. If optional arg NEWLINE-TOO is non-nil, delete the newline too. @@ -797,12 +806,13 @@ (defun bookmark-send-annotation () - "After remove lines beginning with '#', use the contents of this buffer -as the annotation for a bookmark, and store it in the bookmark list with + "Use buffer contents as the annotation for a bookmark. +Exclude lines that begin with `#'. +Store the annotation text in the bookmark list with the bookmark (and file, and point) specified in buffer local variables." (interactive) (if (not (eq major-mode 'bookmark-read-annotation-mode)) - (error "Not in bookmark-read-annotation-mode.")) + (error "Not in bookmark-read-annotation-mode")) (goto-char (point-min)) (while (< (point) (point-max)) (if (looking-at "^#") @@ -821,7 +831,7 @@ (save-excursion (pop-to-buffer buf) (goto-char pt) - (bookmark-make bookmark annotation parg) + (bookmark-make bookmark annotation parg (bookmark-info-current-node)) (setq bookmark-current-bookmark bookmark)) (bookmark-bmenu-surreptitiously-rebuild-list) (goto-char bookmark-current-point)) @@ -838,10 +848,8 @@ (defvar bookmark-read-annotation-text-func 'bookmark-default-annotation-text - "A variable containing a function which returns the text to insert -into an annotation compisition buffer. It takes the name of the bookmark, -as a string, as an arg.") - + "Function to return default text to use for a bookmark annotation. +It takes the name of the bookmark, as a string, as an arg.") (defun bookmark-read-annotation-mode (buf point parg bookmark) "Mode for composing annotations for a bookmark. @@ -870,8 +878,8 @@ (defun bookmark-read-annotation (parg bookmark) - "Pop up a buffer for entering a bookmark annotation. Text surrounding -the bookmark is PARG; the bookmark name is BOOKMARK." + "Pop up a buffer for entering a bookmark annotation. +Text surrounding the bookmark is PARG; the bookmark name is BOOKMARK." (let ((buf (current-buffer)) (point (point))) (pop-to-buffer (generate-new-buffer-name "*Bookmark Annotation Compose*")) @@ -907,11 +915,10 @@ (defun bookmark-send-edited-annotation () - "After remove lines beginning with '#', use the contents of this buffer -as the new annotation for a bookmark." + "Use buffer contents (minus beginning with `#' as annotation for a bookmark." (interactive) (if (not (eq major-mode 'bookmark-edit-annotation-mode)) - (error "Not in bookmark-edit-annotation-mode.")) + (error "Not in bookmark-edit-annotation-mode")) (goto-char (point-min)) (while (< (point) (point-max)) (if (looking-at "^#") @@ -934,8 +941,8 @@ (defun bookmark-insert-current-bookmark () - "Insert this buffer's value of bookmark-current-bookmark, default -to file name if it's nil." + "Insert this buffer's value of bookmark-current-bookmark. +Default to file name if it's nil." (interactive) (let ((str (save-excursion @@ -945,8 +952,8 @@ (defun bookmark-insert-buffer-name () - "Insert the name (sans path) of the current file into the bookmark -name that is being set." + "Insert the current file name into the bookmark name being set. +The directory part of the file name is not used." (interactive) (let ((str (save-excursion @@ -1010,7 +1017,6 @@ (defun bookmark-maybe-load-default-file () (and (not bookmarks-already-loaded) (null bookmark-alist) - (prog2 (and ;; Possibly the old bookmark file, "~/.emacs-bkmrks", needs @@ -1108,10 +1114,10 @@ ;; rather than after and remain perhaps unaware of the changes. (if forward-str (if (search-forward forward-str (point-max) t) - (backward-char (length forward-str)))) + (goto-char (match-beginning 0)))) (if behind-str (if (search-backward behind-str (point-min) t) - (forward-char (length behind-str)))) + (goto-char (match-end 0)))) ;; added by db (setq bookmark-current-bookmark str) (cons (current-buffer) (point))) @@ -1132,10 +1138,10 @@ ;;;###autoload (defun bookmark-relocate (bookmark) - "Relocate BOOKMARK -- prompts for a filename, and makes an already -existing bookmark point to that file, instead of the one it used to -point at. Useful when a file has been renamed after a bookmark was -set in it." + "Relocate BOOKMARK to another file (reading file name with minibuffer). +This makes an already existing bookmark point to that file, instead of +the one it used to point at. Useful when a file has been renamed +after a bookmark was set in it." (interactive (bookmark-completing-read "Bookmark to relocate")) (bookmark-maybe-historicize-string bookmark) (bookmark-maybe-load-default-file) @@ -1154,8 +1160,18 @@ minibuffer history list `bookmark-history'." (interactive (bookmark-completing-read "Insert bookmark location")) (or no-history (bookmark-maybe-historicize-string bookmark)) - (insert (bookmark-location bookmark))) + (let ((start (point))) + (prog1 + (insert (bookmark-location bookmark)) ; *Return this line* + (if window-system + (put-text-property start + (save-excursion (re-search-backward + "[^ \t]") + (1+ (point))) + 'mouse-face 'highlight))))) +;;;###autoload +(defalias 'bookmark-locate 'bookmark-insert-location) (defun bookmark-location (bookmark) "Return the name of the file associated with BOOKMARK." @@ -1165,11 +1181,11 @@ ;;;###autoload (defun bookmark-rename (old &optional new) - "Change the name of OLD bookmark to NEW name. If called from -keyboard, prompts for OLD and NEW. If called from menubar, OLD is -selected from a menu, and prompts for NEW. + "Change the name of OLD bookmark to NEW name. +If called from keyboard, prompt for OLD and NEW. If called from +menubar, select OLD from a menu and prompt for NEW. -If called from Lisp, prompts for NEW if only OLD was passed as an +If called from Lisp, prompt for NEW if only OLD was passed as an argument. If called with two strings, then no prompting is done. You must pass at least OLD when calling from Lisp. @@ -1270,9 +1286,8 @@ ;;;###autoload (defun bookmark-write () - "Write bookmarks to a file \(for which the user will be prompted -interactively\). Don't use this in Lisp programs; use bookmark-save -instead." + "Write bookmarks to a file (reading the file name with the minibuffer). +Don't use this in Lisp programs; use `bookmark-save' instead." (interactive) (bookmark-maybe-load-default-file) (bookmark-save t)) @@ -1320,7 +1335,7 @@ (defun bookmark-write-file (file) (save-excursion (save-window-excursion - (if (>= (device-baud-rate) 9600) + (if (>= baud-rate 9600) (message "Saving bookmarks to file %s..." file)) (set-buffer (let ((enable-local-variables nil)) (find-file-noselect file))) @@ -1337,8 +1352,8 @@ t)))) (write-file file) (kill-buffer (current-buffer)) - (if (>= (device-baud-rate) 9600) - (message "Saving bookmarks to file %s... done." file)) + (if (>= baud-rate 9600) + (message "Saving bookmarks to file %s...done" file)) )))) @@ -1368,7 +1383,7 @@ (if (file-readable-p file) (save-excursion (save-window-excursion - (if (and (null no-msg) (>= (device-baud-rate) 9600)) + (if (and (null no-msg) (>= baud-rate 9600)) (message "Loading bookmarks from %s..." file)) (set-buffer (let ((enable-local-variables nil)) (find-file-noselect file))) @@ -1384,11 +1399,11 @@ (setq bookmark-alist (append blist (if (not revert) bookmark-alist))) (bookmark-bmenu-surreptitiously-rebuild-list)) - (error "Invalid bookmark list in %s." file))) + (error "Invalid bookmark list in %s" file))) (kill-buffer (current-buffer))) - (if (and (null no-msg) (>= (device-baud-rate) 9600)) - (message "Loading bookmarks from %s... done" file))) - (error "Cannot read bookmark file %s." file))) + (if (and (null no-msg) (>= baud-rate 9600)) + (message "Loading bookmarks from %s...done" file))) + (error "Cannot read bookmark file %s" file))) @@ -1415,14 +1430,15 @@ (define-key bookmark-bmenu-mode-map "2" 'bookmark-bmenu-2-window) (define-key bookmark-bmenu-mode-map "1" 'bookmark-bmenu-1-window) (define-key bookmark-bmenu-mode-map "j" 'bookmark-bmenu-this-window) + (define-key bookmark-bmenu-mode-map "\C-c\C-c" 'bookmark-bmenu-this-window) (define-key bookmark-bmenu-mode-map "f" 'bookmark-bmenu-this-window) (define-key bookmark-bmenu-mode-map "o" 'bookmark-bmenu-other-window) - (define-key bookmark-bmenu-mode-map "\C-o" 'bookmark-bmenu-switch-other-window) + (define-key bookmark-bmenu-mode-map "\C-o" + 'bookmark-bmenu-switch-other-window) (define-key bookmark-bmenu-mode-map "s" 'bookmark-bmenu-save) (define-key bookmark-bmenu-mode-map "k" 'bookmark-bmenu-delete) (define-key bookmark-bmenu-mode-map "\C-d" 'bookmark-bmenu-delete-backwards) (define-key bookmark-bmenu-mode-map "x" 'bookmark-bmenu-execute-deletions) - (define-key bookmark-bmenu-mode-map "\C-k" 'bookmark-bmenu-delete) (define-key bookmark-bmenu-mode-map "d" 'bookmark-bmenu-delete) (define-key bookmark-bmenu-mode-map " " 'next-line) (define-key bookmark-bmenu-mode-map "n" 'next-line) @@ -1436,7 +1452,9 @@ (define-key bookmark-bmenu-mode-map "t" 'bookmark-bmenu-toggle-filenames) (define-key bookmark-bmenu-mode-map "a" 'bookmark-bmenu-show-annotation) (define-key bookmark-bmenu-mode-map "A" 'bookmark-bmenu-show-all-annotations) - (define-key bookmark-bmenu-mode-map "e" 'bookmark-bmenu-edit-annotation)) + (define-key bookmark-bmenu-mode-map "e" 'bookmark-bmenu-edit-annotation) + (define-key bookmark-bmenu-mode-map [mouse-2] + 'bookmark-bmenu-other-window-with-mouse)) @@ -1479,7 +1497,7 @@ (bookmark-maybe-sort-alist) (mapcar (lambda (full-record) - ;; if a bookmark has an annotation, precede it with a "*" + ;; if a bookmark has an annotation, prepend a "*" ;; in the list of bookmarks. (let ((annotation (bookmark-get-annotation (bookmark-name-from-full-record full-record)))) @@ -1487,7 +1505,16 @@ (not (string-equal annotation ""))) (insert " *") (insert " ")) - (insert (concat (bookmark-name-from-full-record full-record) "\n")))) + (let ((start (point))) + (insert (bookmark-name-from-full-record full-record)) + (if window-system + (put-text-property start + (save-excursion (re-search-backward + "[^ \t]") + (1+ (point))) + 'mouse-face 'highlight)) + (insert "\n") + ))) bookmark-alist)) (goto-char (point-min)) (forward-line 2) @@ -1523,7 +1550,7 @@ \\[bookmark-bmenu-rename] -- rename this bookmark \(prompts for new name\). \\[bookmark-bmenu-delete] -- mark this bookmark to be deleted, and move down. \\[bookmark-bmenu-delete-backwards] -- mark this bookmark to be deleted, and move up. -\\[bookmark-bmenu-execute-deletions] -- delete marked bookmarks. +\\[bookmark-bmenu-execute-deletions] -- delete bookmarks marked with `\\[bookmark-bmenu-delete]'. \\[bookmark-bmenu-save] -- save the current bookmark list in the default file. With a prefix arg, prompts for a file to save in. \\[bookmark-bmenu-load] -- load in a file of bookmarks (prompts for file.) @@ -1573,8 +1600,13 @@ (let ((bmrk (bookmark-bmenu-bookmark))) (setq bookmark-bmenu-hidden-bookmarks (cons bmrk bookmark-bmenu-hidden-bookmarks)) - (move-to-column bookmark-bmenu-file-column t) - (delete-region (point) (progn (end-of-line) (point))) + (let ((start (save-excursion (end-of-line) (point)))) + (move-to-column bookmark-bmenu-file-column t) + ;; Strip off `mouse-face' from the white spaces region. + (if window-system + (remove-text-properties start (point) + '(mouse-face)))) + (delete-region (point) (progn (end-of-line) (point))) (insert " ") ;; Pass the NO-HISTORY arg: (bookmark-insert-location bmrk t) @@ -1600,7 +1632,14 @@ (while bookmark-bmenu-hidden-bookmarks (move-to-column bookmark-bmenu-bookmark-column t) (bookmark-kill-line) - (insert (car bookmark-bmenu-hidden-bookmarks)) + (let ((start (point))) + (insert (car bookmark-bmenu-hidden-bookmarks)) + (if window-system + (put-text-property start + (save-excursion (re-search-backward + "[^ \t]") + (1+ (point))) + 'mouse-face 'highlight))) (setq bookmark-bmenu-hidden-bookmarks (cdr bookmark-bmenu-hidden-bookmarks)) (forward-line 1)))))))) @@ -1640,7 +1679,7 @@ (beginning-of-line) (forward-char bookmark-bmenu-bookmark-column) (prog1 - (buffer-substring (point) + (buffer-substring-no-properties (point) (progn (end-of-line) (point))) @@ -1691,7 +1730,7 @@ (defun bookmark-bmenu-mark () - "Mark bookmark on this line to be displayed by \\<bookmark-bmenu-mode-map>\\[bookmark-bmenu-select] command." + "Mark bookmark on this line to be displayed by \\<bookmark-bmenu-mode-map>\\[bookmark-bmenu-select]." (interactive) (beginning-of-line) (if (bookmark-bmenu-check-position) @@ -1818,6 +1857,19 @@ (set-buffer o-buffer)) (bookmark-show-annotation bookmark))))) +(defun bookmark-bmenu-other-window-with-mouse (event) + "Select bookmark at the mouse pointer in other window, leaving bookmark menu visible." + (interactive "e") + (save-excursion + (set-buffer (if (fboundp 'event-buffer) ; XEmacs + (event-buffer event) + (window-buffer (posn-window (event-end event))))) + (save-excursion + (goto-char (if (fboundp 'event-closest-point) + (event-closest-point event) + (posn-point (event-end event)))) + (bookmark-bmenu-other-window)))) + (defun bookmark-bmenu-show-annotation () "Show the annotation for the current bookmark in another window." @@ -1876,7 +1928,8 @@ (defun bookmark-bmenu-delete () - "Mark bookmark on this line to be deleted by \\<bookmark-bmenu-mode-map>\\[bookmark-bmenu-execute-deletions] command." + "Mark bookmark on this line to be deleted. +To carry out the deletions that you've marked, use \\<bookmark-bmenu-mode-map>\\[bookmark-bmenu-execute-deletions]." (interactive) (beginning-of-line) (if (bookmark-bmenu-check-position) @@ -1887,8 +1940,8 @@ (defun bookmark-bmenu-delete-backwards () - "Mark bookmark on this line to be deleted by \\<bookmark-bmenu-mode-map>\\[bookmark-bmenu-execute-deletions] command -and then move up one line" + "Mark bookmark on this line to be deleted, then move up one line. +To carry out the deletions that you've marked, use \\<bookmark-bmenu-mode-map>\\[bookmark-bmenu-execute-deletions]." (interactive) (bookmark-bmenu-delete) (forward-line -2) @@ -1899,6 +1952,7 @@ (defun bookmark-bmenu-execute-deletions () "Delete bookmarks marked with \\<Buffer-menu-mode-map>\\[Buffer-menu-delete] commands." (interactive) + (message "Deleting bookmarks...") (let ((hide-em bookmark-bmenu-toggle-filenames) (o-point (point)) (o-str (save-excursion @@ -1930,7 +1984,9 @@ (setq bookmark-alist-modification-count (1+ bookmark-alist-modification-count)) (if (bookmark-time-to-save-p) - (bookmark-save)))) + (bookmark-save)) + (message "Deleting bookmarks...done") + )) (defun bookmark-bmenu-rename () @@ -2026,7 +2082,19 @@ in the menu. The number of panes depends on the number of entries." (interactive "e") - (x-popup-menu event (bookmark-menu-build-paned-menu name entries))) + (cond ((fboundp 'x-popup-menu) ; Emacs + (x-popup-menu event (bookmark-menu-build-paned-menu name entries))) + (t ; XEmacs + (get-popup-menu-response + (cons title + (mapcar + (function + (lambda (x) + (if (stringp x) + (vector x nil nil) + (vector (car x) (list (car x)) t)))) + (bookmark-menu-build-paned-menu name entries))))))) + (defun bookmark-menu-popup-paned-bookmark-menu (event name) @@ -2039,12 +2107,9 @@ (defun bookmark-popup-menu-and-apply-function (func-sym menu-label event) ;; help function for making menus that need to apply a bookmark ;; function to a string. - (if bookmark-xemacsp - (popup-menu (bookmark-build-xemacs-menu - menu-label (bookmark-all-names) func-sym)) - (let* ((choice (bookmark-menu-popup-paned-bookmark-menu - event menu-label))) - (if choice (apply func-sym (list choice)))))) + (let* ((choice (bookmark-menu-popup-paned-bookmark-menu + event menu-label))) + (if choice (apply func-sym (list choice))))) ;;;###autoload @@ -2136,66 +2201,60 @@ ;; We MUST autoload EACH form used to set up this variable's value, so ;; that the whole job is done in loaddefs.el. -;; a pox on autoloading this form. It's too big. --ben -;(if (string-match "\\(Lucid\\|XEmacs\\)" emacs-version) -; (progn -; (defvar bookmark-xemacs-menu -; '("Bookmarks" -; ["Jump to bookmark" bookmark-menu-jump t] -; ["Set bookmark" bookmark-set t] -; "---" -; ["Insert contents" bookmark-menu-insert t] -; ["Insert location" bookmark-menu-locate t] -; "---" -; ["Rename bookmark" bookmark-menu-rename t] -; ["Delete bookmark" bookmark-menu-delete t] -; ["Edit Bookmark List" bookmark-bmenu-list t] -; "---" -; ["Save bookmarks" bookmark-save t] -; ["Save bookmarks as..." bookmark-write t] -; ["Load a bookmark file" bookmark-load t])) -; ;; Display a solid horizontal line -; ;;(add-menu-button '("File") ["---" nil nil] "Insert File...") -; ;;(add-submenu '("File") bookmark-xemacs-menu "Insert File...") -; (add-hook 'before-init-hook -; (lambda () -; (if (featurep 'menubar) -; (add-submenu '("Edit") bookmark-xemacs-menu -; "Goto Line...")))) -; ) - -; ;; Emacs menubar stuff -; (defvar menu-bar-bookmark-map (make-sparse-keymap "Bookmark functions")) -; (defalias 'menu-bar-bookmark-map (symbol-value 'menu-bar-bookmark-map)) +;; Emacs menubar stuff. + +;;;###autoload +(defvar menu-bar-bookmark-map (make-sparse-keymap "Bookmark functions")) + +;;;###autoload +(defalias 'menu-bar-bookmark-map (symbol-value 'menu-bar-bookmark-map)) + +;; make bookmarks appear toward the right side of the menu. +(if (boundp 'menu-bar-final-items) + (if menu-bar-final-items + (setq menu-bar-final-items + (cons 'bookmark menu-bar-final-items))) + (setq menu-bar-final-items '(bookmark))) + +;;;###autoload +(define-key menu-bar-bookmark-map [load] + '("Load a Bookmark File..." . bookmark-load)) + +;;;###autoload +(define-key menu-bar-bookmark-map [write] + '("Save Bookmarks As..." . bookmark-write)) + +;;;###autoload +(define-key menu-bar-bookmark-map [save] + '("Save Bookmarks" . bookmark-save)) -; ;; make bookmarks appear toward the right side of the menu. -; (if (boundp 'menu-bar-final-items) -; (if menu-bar-final-items -; (setq menu-bar-final-items -; (cons 'bookmark menu-bar-final-items))) -; (setq menu-bar-final-items '(bookmark))) - -; (define-key menu-bar-bookmark-map [load] -; '("Load a bookmark file" . bookmark-load)) -; (define-key menu-bar-bookmark-map [write] -; '("Save bookmarks as..." . bookmark-write)) -; (define-key menu-bar-bookmark-map [save] -; '("Save bookmarks" . bookmark-save)) -; (define-key menu-bar-bookmark-map [edit] -; '("Edit Bookmark List" . bookmark-bmenu-list)) -; (define-key menu-bar-bookmark-map [delete] -; '("Delete bookmark" . bookmark-menu-delete)) -; (define-key menu-bar-bookmark-map [rename] -; '("Rename bookmark" . bookmark-menu-rename)) -; (define-key menu-bar-bookmark-map [locate] -; '("Insert location" . bookmark-menu-locate)) -; (define-key menu-bar-bookmark-map [insert] -; '("Insert contents" . bookmark-menu-insert)) -; (define-key menu-bar-bookmark-map [set] -; '("Set bookmark" . bookmark-set)) -; (define-key menu-bar-bookmark-map [jump] -; '("Jump to bookmark" . bookmark-menu-jump))) +;;;###autoload +(define-key menu-bar-bookmark-map [edit] + '("Edit Bookmark List" . bookmark-bmenu-list)) + +;;;###autoload +(define-key menu-bar-bookmark-map [delete] + '("Delete Bookmark" . bookmark-menu-delete)) + +;;;###autoload +(define-key menu-bar-bookmark-map [rename] + '("Rename Bookmark" . bookmark-menu-rename)) +;;;###autoload +(define-key menu-bar-bookmark-map [locate] + '("Insert Location" . bookmark-menu-locate)) + +;;;###autoload +(define-key menu-bar-bookmark-map [insert] + '("Insert Contents" . bookmark-menu-insert)) + +;;;###autoload +(define-key menu-bar-bookmark-map [set] + '("Set Bookmark" . bookmark-set)) + +;;;###autoload +(define-key menu-bar-bookmark-map [jump] + '("Jump to Bookmark" . bookmark-menu-jump)) ;;;; end bookmark menu stuff ;;;;
--- a/lisp/packages/font-lock.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/packages/font-lock.el Mon Aug 13 09:38:25 2007 +0200 @@ -1860,7 +1860,7 @@ 2 'font-lock-function-name-face) ;; ;; Fontify case clauses. This is fast because its anchored on the left. - '("case[ \t]+\\(\\(\\sw\\|\\s_\\)+\\):". 1) + '("case[ \t]+\\(\\(\\sw\\|\\s_\\)+\\)[ \t]+:". 1) ;; '("\\<\\(default\\):". 1) ;; Fontify filenames in #include <...> preprocessor directives as strings.
--- a/lisp/packages/generic-sc.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1755 +0,0 @@ -;;; generic-sc.el --- generic interface to source control systems - -;; Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. - -;; Author: devin@lucid.com -;; Keywords: tools, unix - -;; 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. - -;; The generic interface provide a common set of functions that can be -;; used to interface with a source control system like SCCS, RCS or -;; CVS. -;; -;; You chose which source control system to use by calling sc-mode -;; -;; The module is based on the sccs.el mode of Eric S. Raymond -;; (eric@snark.thyrsus.com) which was distantly derived from an rcs -;; mode written by Ed Simpson ({decvax, seismo}!mcnc!duke!dukecdu!evs) -;; in years gone by and revised at MIT's Project Athena. - -;;; This can be customized by the user - -(defgroup generic-sc nil - "Generic interface to source control systems" - :prefix "sc-" - :group 'tools) - - -(defcustom sc-diff-command '("diff") - "*The command/flags list to be used in constructing diff commands." - :type '(repeat string) - :group 'generic-sc) - -;; Duplicated from pcl-cvs. -(defvar cvs-program "cvs" - "*The command name of the cvs program.") - -(defcustom sc-mode-expert () - "*Treat user as expert; suppress yes-no prompts on some things." - :type 'boolean - :group 'generic-sc) - -(defcustom sc-max-log-size 510 - "*Maximum allowable size of a source control log message." - :type 'integer - :group 'generic-sc) - -(defcustom sc-ccase-comment-on '(checkout checkout-dir checkin-dir rename - new-brtype new-branch checkin-merge - create-label label-sources) - "*Operations on which comments would be appreciated. -We check the values checkout, checkout-dir, checkin-dir, -rename, new-brtype, new-branch, create-label, -and label-sources as symbols." - :type '(repeat symbol) - :group 'generic-sc) - -(defvar sc-ccase-reserve nil - "Whether to reserve checkouts or not. By default, this is nil - don't. -Other values are t - do, and anything else, eg. 'ask - ask.") - -;; default keybindings -(defvar sc-prefix-map (lookup-key global-map "\C-xv")) -(if (not (keymapp sc-prefix-map)) - (progn - (setq sc-prefix-map (make-sparse-keymap)) - (define-key global-map "\C-xv" sc-prefix-map) - (define-key sc-prefix-map "v" 'sc-next-operation) - (define-key sc-prefix-map "=" 'sc-show-changes) - (define-key sc-prefix-map "l" 'sc-show-history) - (define-key sc-prefix-map "p" 'sc-visit-previous-revision) - (define-key sc-prefix-map "u" 'sc-revert-file) - (define-key sc-prefix-map "d" 'sc-list-registered-files) - (define-key sc-prefix-map "\C-d" 'sc-update-directory) - (define-key sc-prefix-map "\C-r" 'sc-rename-file) - )) - - -;;; The user does not change these -(defvar sc-generic-name "" - "Name of the source control system used. Is displayed in the modeline.") - -(defvar sc-mode-line-string () - "Revision number to show in the mode line") - -(defvar sc-generic-log-buf () - "Buffer for entering log message") - -(defvar sc-log-entry-keymap () - "Additional keybindings used when entering the log message") - -(defvar sc-can-hack-dir () - "Does the SC system allow users to play directly with directories") - -(defvar sc-ccase-mfs-prefixes () - "Prefixes known to the system to be MFS ... ignore all others") - -(defmacro sc-chmod (perms file) - (list 'call-process "chmod" nil nil nil perms file)) - -(defmacro error-occurred (&rest body) - (list 'condition-case nil (cons 'progn (append body '(nil))) '(error t))) - - -;;; User level functions -(defun sc-next-operation (verbose) - "Do the next logical source-control operation on the file in the current buffer. -The current subdirectory must be under source control. - If the file is not already registered with the source control, this registers it -and checks it out. - If the file is registered and not locked by anyone, this checks it out. - If the file is registered and locked by the calling user, this pops up a -buffer for creation of a log message, then checks the file in. -A read-only copy of the changed file is left in place afterwards. - If the file is registered and locked by someone else, an error message is -returned indicating who has locked it." - (interactive "P") - (if (not buffer-file-name) - (error "There is no file associated with buffer %s" (buffer-name))) - (let* (revision - (file buffer-file-name) - (lock-info (sc-lock-info file)) - (sc-generic-log-buf - (get-buffer-create (format "*%s-Log*" sc-generic-name))) - (err-msg nil)) - (if (eq lock-info 'na) - (error "The file associated with buffer %s is not registered" (buffer-name))) - - ;; if file is not registered register it and set lock-info to show it's not locked - (if (not lock-info) - (progn - (sc-register-file verbose) - (setq lock-info (list () ())))) - - (cond ((not (car lock-info)) - ;; if there is no lock on the file, assert one and get it - (sc-check-out file t) - (revert-buffer nil t) - (sc-mode-line)) - - ((and (not (equal sc-generic-name "CCase")) - (not (equal (car lock-info) (user-login-name)))) - ;; file is locked by someone else - (error "Sorry, %s has that file locked." (car lock-info))) - - (t - ;; OK, user owns the lock on the file - ;; if so, give user a chance to save before delta-ing. - (if (and (buffer-modified-p) - (or - sc-mode-expert - (y-or-n-p (format "%s has been modified. Write it out? " - (buffer-name))))) - (save-buffer)) - - (setq revision (car (cdr lock-info))) - - ;; user may want to set nonstandard parameters - (if verbose - (if (or sc-mode-expert - (y-or-n-p - (format "revision: %s Change revision level? " - revision))) - (setq revision (read-string "New revision level: ")))) - - ;; OK, let's do the delta - (let ((buffer (sc-temp-buffer))) - (if (save-window-excursion - ;; this excursion returns t if the new version was saved OK - (pop-to-buffer buffer) - (erase-buffer) - (set-buffer-modified-p nil) - (sc-log-entry-mode) - (message - "Enter log message. Type C-c C-c when done, C-c ? for help.") - (prog1 - (and (not (error-occurred (recursive-edit))) - (not (error-occurred - (sc-check-in file revision - (buffer-string))))) - (setq buffer-file-name nil) - (bury-buffer buffer))) - - ;; if the save went OK do some post-checking - (if (buffer-modified-p) - (error - "Checked-in version of file does not match buffer!") - (revert-buffer nil t) - (sc-mode-line) - (run-hooks 'sc-check-in-ok)))))))) - -(defun sc-insert-last-log () - "Insert the log message of the last check in at point." - (interactive) - (insert-buffer sc-generic-log-buf)) - -(defun sc-abort-check-in () - "Abort a source control check-in command." - (interactive) - (if (or sc-mode-expert (y-or-n-p "Really Abort Check-in? ")) - (progn - (delete-window) - (abort-recursive-edit)))) - -(defun sc-log-exit () - "Proceed with checkin with the contents of the current buffer as message." - (interactive) - (if (< (buffer-size) sc-max-log-size) - (progn - (copy-to-buffer sc-generic-log-buf (point-min) (point-max)) - (exit-recursive-edit) - (delete-window)) - (goto-char sc-max-log-size) - (error - "Log must be less than %d characters. Point is now at char %d." - sc-max-log-size (point)))) - - -;;; Functions to look at the edit history -(defun sc-show-changes (arg) - "Compare the version being edited with the last checked-in revision. -With a prefix argument prompt for revision to compare with." - (interactive "P") - ;; check that the file is not modified - (if (and (buffer-modified-p) - (or - sc-mode-expert - (y-or-n-p (format "%s has been modified. Write it out? " - (buffer-name))))) - (save-buffer)) - (let* ((revision (and arg (read-string "Revision to compare against: "))) - (file buffer-file-name) - (name (file-name-nondirectory file)) - (old (sc-get-version-in-temp-file file revision)) - (buffer (sc-temp-buffer)) - status) - (save-excursion - (set-buffer buffer) - (erase-buffer) - (setq default-directory (file-name-directory file)) - (setq status - (apply 'call-process (car sc-diff-command) () t () - (append (cdr sc-diff-command) (list old) (list file))))) - (if (not (or (eq 0 status) (eq 1 status))) ; see man diff.1 - (progn - (display-buffer buffer) - (error "diff FAILED"))) - (delete-file old) - (save-excursion - (set-buffer buffer) - (goto-char (point-min)) - (if (equal (point-min) (point-max)) - (insert - (format "No changes to %s since last update." - (file-name-nondirectory file))) - (insert "==== Diffs for " file "\n") - (insert "==== ") - (mapcar '(lambda (i) (insert i " ")) sc-diff-command) - (insert name "<" (or revision "current") ">" " " name "\n\n"))) - (display-buffer buffer))) - -(defun sc-show-revision-changes () - "Prompt for a revision to diff against." - (interactive) - (sc-show-changes 4)) - -(defun sc-version-diff-file (file rel1 rel2) - "For FILE, report diffs between two revisions REL1 and REL2 of it." - (interactive "fFile: \nsOlder version: \nsNewer version: ") - (if (string-equal rel1 "") (setq rel1 nil)) - (if (string-equal rel2 "") (setq rel2 nil)) - (let ((buffer (sc-temp-buffer))) - (set-buffer buffer) - (erase-buffer) - (let ((v1 (sc-get-version-in-temp-file file rel1)) - (v2 (if rel2 (sc-get-version-in-temp-file file rel2) file))) - (and v1 - v2 - (unwind-protect - (apply 'call-process (car sc-diff-command) nil t t - (append (cdr sc-diff-command) (list v1) (list v2))))) - (condition-case () (delete-file v1) (error nil)) - (if rel2 - (condition-case () (delete-file v2) (error nil))) - (set-buffer-modified-p nil) - (goto-char (point-min)) - (if (equal (point-min) (point-max)) - (message - (format "No changes to %s between %s and %s." file rel1 rel2)) - (display-buffer buffer))))) - -(defun sc-show-history () - "List the edit history of the current buffer." - (interactive) - (let ((file buffer-file-name)) - (if (not file) - (error "There is no file associated with buffer %s" (buffer-name))) - (if (not (sc-lock-info file)) - (error "The file is not registered in the source control system")) - (let ((buffer (sc-temp-buffer))) - (save-excursion - (set-buffer buffer) - (erase-buffer) - (sc-history file) - (goto-char (point-min))) - (display-buffer buffer)))) - -(defun sc-visit-previous-revision (revision) - "Show a previous revision of the current file" - (interactive "sShow previous revision number: ") - (let ((file buffer-file-name)) - (if (not file) - (error "There is no file associated with buffer %s" (buffer-name))) - (let ((other-file (sc-get-version-in-temp-file file revision)) - (buffer-name (concat (file-name-nondirectory file) - "<" sc-generic-name " " revision ">"))) - (pop-to-buffer (get-buffer-create buffer-name)) - (erase-buffer) - (insert-file other-file) - ;; get the same major mode as the original file - (setq buffer-file-name file) - (normal-mode) - (setq buffer-file-name ()) - (set-buffer-modified-p ()) - (toggle-read-only) - (delete-file other-file)))) - -(defun sc-revert-file () - "Revert the current buffer's file back to the last saved version." - (interactive) - (let ((file buffer-file-name)) - (if (y-or-n-p (format "Revert file %s to last checked-in revision?" file)) - (progn - (sc-revert file) - (revert-buffer nil t) - (sc-mode-line))))) - -;; Functions to get directory level information - -(defun sc-list-all-locked-files (arg) - "List all files currently locked under the revision control system. -With prefix arg list only the files locked by the user." - (interactive "P") - (let* ((locker (and arg (user-login-name))) - (buffer (sc-tree-walk 'sc-list-file-if-locked locker))) - (save-excursion - (set-buffer buffer) - (goto-char (point-min)) - (if (= (point-min) (point-max)) - (insert "No files locked ") - (insert "Files locked ")) - (if locker - (insert "by " locker " ")) - (insert "in " default-directory "\n\n")) - (display-buffer buffer))) - -(defun sc-list-locked-files () - "List all files currently locked by me" - (interactive) - (sc-list-all-locked-files 4)) - -(defun sc-list-registered-files () - "List all files currently registered under the revision control system." - (interactive) - (let ((buffer (sc-tree-walk 'sc-list-file))) - (save-excursion - (set-buffer buffer) - (if (= (point-min) (point-max)) - (insert "No files registered in " sc-generic-name - " in " default-directory) - (goto-char (point-min)) - (insert "Files registered in " sc-generic-name " in " default-directory - "\n\n"))) - (display-buffer buffer))) - -(defun sc-update-directory () - "Updates the current directory by getting the latest copies of the files" - (interactive) - (save-some-buffers) - (let ((buffer (sc-tree-walk 'sc-update-file))) - (save-excursion - (set-buffer buffer) - (goto-char (point-min)) - (if (= (point-min) (point-max)) - (insert "No files needed to be updated in " default-directory "\n\n") - (insert "Files updated in " default-directory "\n\n"))) - (display-buffer buffer))) - -;; Miscellaneous other entry points - -(defun sc-register-file (verbose) - "Register the file visited by the current buffer into source control. -Prefix argument register it under an explicit revision number." - (interactive "P") - (let ((file buffer-file-name)) - (if (not file) - (error "There is no file associated with buffer %s" (buffer-name))) - (let ((lock-info (sc-lock-info file)) - (revision ())) - (if lock-info - (error "This file is already registered into %s" sc-generic-name)) - ;; propose to save the file if it's modified - (if (and (buffer-modified-p) - (or - sc-mode-expert - (y-or-n-p (format "%s has been modified. Write it out? " - (buffer-name))))) - (save-buffer)) - ;; get the revision number - (if verbose - (setq revision (read-string "Initial Revision Number: "))) - (sc-register file revision) - (revert-buffer nil t) - (sc-mode-line)))) - -(defun sc-rename-file (old new) - "Rename a file, taking its source control archive with it." - (interactive "fOld name: \nFNew name: ") - (let ((owner (sc-locking-user old))) - (if (and owner (not (string-equal owner (user-login-name)))) - (error "Sorry, %s has that file checked out" owner))) - (if sc-can-hack-dir - (rename-file old new t)) - (sc-rename old new)) - -(defun sc-rename-this-file (new) - "Rename the file of the current buffer, taking its source control archive with it" - (interactive "FNew name: ") - (if (and (buffer-modified-p) - (y-or-n-p (format "%s has been modified. Write it out? " - (buffer-name)))) - (save-buffer)) - (sc-rename-file buffer-file-name new) - (let ((old-buffer (current-buffer)) - (new-buffer (find-file-noselect new))) - (set-window-buffer (selected-window) new-buffer) - (pop-to-buffer (current-buffer)) - (bury-buffer old-buffer))) - - -;;; Mode independent functions -;;; All those sc-... functions FUNCALL the corresponding sc-generic-... function. -;;; The variables are set to functions that do the SCCS, RCS or CVS commands -;;; depending on the mode chosen. - -(defvar sc-generic-lock-info () - "Function to implement sc-lock-info") - -(defun sc-lock-info (file) - "Return a list of the current locker and current locked revision for FILE. -Returns NIL if FILE is not registered in the source control system. -Return (NIL NIL) if FILE is registered but not locked. -Return (locker revision) if file is locked." - (funcall sc-generic-lock-info file)) - - -(defvar sc-generic-register () - "Function to implement sc-register") - -(defun sc-register (file revision) - "Register FILE under source control with initial revision REVISION." - (funcall sc-generic-register file revision)) - - -(defvar sc-generic-check-out () - "Function to implement sc-check-out") - -(defun sc-check-out (file lockp) - "Checks out the latest version of FILE. -If LOCKP is not NIL, FILE is also locked." - (funcall sc-generic-check-out file lockp)) - - -(defvar sc-generic-get-version () - "Function to implement sc-get-version") - -(defun sc-get-version (file buffer revision) - "Insert a previous revison of FILE in BUFFER. -REVISION is the revision number requested." - (funcall sc-generic-get-version file buffer revision)) - - -(defvar sc-generic-check-in () - "Function to implement sc-check-in") - -(defun sc-check-in (file revision message) - "Check in FILE with revision REVISION. -MESSAGE is a string describing the changes." - (funcall sc-generic-check-in file revision message)) - - -(defvar sc-generic-history () - "Function to implement sc-history") - -(defun sc-history (file) - "Insert the edit history of FILE in the current buffer." - (funcall sc-generic-history file)) - - -(defvar sc-generic-tree-list () - "Function to implement sc-tree-list") - -(defun sc-tree-list () - "List in the current buffer the files registered in the source control system" - (funcall sc-generic-tree-list)) - - -(defvar sc-generic-new-revision-p () - "Function to implement sc-new-revision-p") - -(defun sc-new-revision-p (file) - "True if a new revision of FILE was checked in since we last got a copy of it" - (funcall sc-generic-new-revision-p file)) - - -(defvar sc-generic-revert () - "Function to implement sc-revert") - -(defun sc-revert (file) - "Cancel a check out of FILE and get back the latest checked in version" - (funcall sc-generic-revert file)) - - -(defvar sc-generic-rename () - "Function to implement sc-rename") - -(defun sc-rename (old new) - "Rename the source control archives for OLD to NEW" - (funcall sc-generic-rename old new)) - - -(defvar sc-menu () - "Menu to use") - - -;;; Utilities functions -(defun sc-do-command (buffer message command file sc-file &rest flags) - "Execute a command, notifying the user and checking for errors." - (setq file (expand-file-name file)) - (message "Running %s on %s..." message file) - (let ((status - (save-excursion - (set-buffer (get-buffer-create buffer)) - (erase-buffer) - (setq flags (append flags (and file (list sc-file)))) - (setq flags (delq () flags)) - (let ((default-directory (file-name-directory (or file "./")))) - (eq (apply 'call-process command nil t nil flags) 0))))) - (if status - (message "Running %s...OK" message) - (save-excursion - (set-buffer buffer) - (goto-char (point-min)) - (insert command) - (mapcar '(lambda (i) (insert " " i)) flags) - (insert "\n\n") - (goto-char (point-min))) - (display-buffer buffer) - (error "Running %s...FAILED" message)))) - -(defun sc-enter-comment () - "Enter a comment. Return it as a string." - (let ((buffer (sc-temp-buffer))) - (setq sc-generic-log-buf - (get-buffer-create (format "*%s-Log*" sc-generic-name))) - (save-window-excursion - ;; this excursion returns t if the new version was saved OK - (pop-to-buffer buffer) - (erase-buffer) - (set-buffer-modified-p nil) - (sc-log-entry-mode) - (message - "Enter log message. Type C-c C-c when done, C-c ? for help.") - (prog1 - (and (not (error-occurred (recursive-edit))) - (let ((bs (buffer-string))) - (if (> (length bs) 0) bs))) - (setq buffer-file-name nil) - (bury-buffer buffer))))) - -(defun sc-locking-user (file) - "Return the login name of the locker of FILE. Return nil if FILE is not locked" - (car (sc-lock-info file))) - -(defun sc-locked-revision (file) - "Return the revision number currently locked for FILE, nil if FILE is not locked." - (car (cdr (sc-lock-info file)))) - -(defun sc-mode-line () - "Set the mode line for the current buffer. -FILE is the file being visited." - (let* ((file buffer-file-name) - (lock-info (sc-lock-info file))) - ;; ensure that the global mode string is not NIL - (or global-mode-string (setq global-mode-string '(""))) - ;; ensure that our variable is in the global-mode-string - (or (memq 'sc-mode-line-string global-mode-string) - (setq global-mode-string - (append global-mode-string '(sc-mode-line-string)))) - (make-local-variable 'sc-mode-line-string) - (setq sc-mode-line-string - (cond ((or - (eq lock-info 'na) - (null lock-info)) ()) - ((null (car lock-info)) - (format " <%s:>" sc-generic-name)) - ((equal (car lock-info) (user-login-name)) - (format " <%s: %s>" sc-generic-name (car (cdr lock-info)))) - (t - (format " <%s: %s>" sc-generic-name (car lock-info))))))) - -(defun sc-temp-buffer () - "Return a temporary buffer to use for output" - (get-buffer-create (format "*%s*" sc-generic-name))) - -(defun sc-tree-walk (func &rest args) - "Apply FUNC to the files registered in the source control system. -FUNC is passed the file path and ARGS." - (let* ((buffer-name (format "*%s directory*" sc-generic-name)) - (buffer (get-buffer-create buffer-name)) - (dir default-directory) - files) - ;; recreate the directory buffer in the right directory - (save-excursion - (set-buffer buffer) - (erase-buffer) - (setq default-directory dir) - ;; get a list of all the registered files - (sc-tree-list) - ;; remove the "not found" messages - (goto-char (point-min)) - (while (search-forward "not found" () t) - (beginning-of-line 1) - (kill-line 1)) - ;; check if any file is listed - (if (= (point-min) (point-max)) - (error "No registered files under %s" default-directory)) - ;; build the list of files - (goto-char (point-min)) - (setq files ()) - (while (not (eobp)) - (let ((file - (buffer-substring (point) (progn (end-of-line) (point))))) - (setq files (cons file files))) - (forward-line 1)) - (setq files (nreverse files)) - ;; let the function output information in the buffer - (erase-buffer)) - (display-buffer buffer) - ;; apply the function - (save-excursion - (set-buffer buffer) - (while files - (apply func (car files) args) - (setq files (cdr files))) - buffer))) - -(defun sc-get-version-in-temp-file (file revision) - "For the given FILE, retrieve a copy of the version with given REVISION. -The text is retrieved into a tempfile. Return the tempfile name." - (let* ((oldversion - (make-temp-name - (concat (or (ccase-protect-expanded-name revision) "current") - "-" - (file-name-nondirectory file) - "-"))) - (vbuf (get-buffer-create oldversion))) - (sc-get-version file vbuf revision) - (save-excursion - (set-buffer vbuf) - (write-region (point-min) (point-max) oldversion t 0)) - (kill-buffer vbuf) - (sc-chmod "-w" oldversion) - oldversion)) - -;; Functions used to get directory level information - -(defun sc-insert-file-lock-info (file lock-info) - (insert (car lock-info) ":" (car (cdr lock-info))) - (indent-to-column 16 1) - (insert (file-name-nondirectory file) "\n")) - -(defun sc-list-file-if-locked (file &optional arg) - "List all files underneath the current directory matching a prefix type." - (let ((lock-info (sc-lock-info file))) - (if (and lock-info - (car lock-info) - (or (null arg) (equal arg (car lock-info)))) - (progn - (sc-insert-file-lock-info file lock-info) - (sit-for 0))))) - -(defun sc-list-file (file) - (let ((lock-info (sc-lock-info file))) - (cond ((eq lock-info 'na) - (indent-to-column 16 1) - (insert (file-name-nondirectory file) "\n")) - ((car lock-info) - (sc-insert-file-lock-info file lock-info)) - ((sc-new-revision-p file) - (insert "needs update") - (indent-to-column 16 1) - (insert (file-name-nondirectory file) "\n")) - (t - (indent-to-column 16 1) - (insert (file-name-nondirectory file) "\n"))) - (sit-for 0))) - -;;; Function to update one file from the archive -(defun sc-update-file (file) - "get the latest version of the file if a new one was checked-in" - (if (sc-new-revision-p file) - (let ((file-name (file-name-nondirectory file))) - ;; get the latest copy - (rename-file (sc-get-version-in-temp-file file nil) file t) - (let ((b (get-file-buffer file))) - (if b - (save-excursion - (set-buffer b) - (revert-buffer nil t) - (sc-mode-line)))) - ;; show the file was updated - (insert "updated") - (indent-to-column 16 1) - (insert file-name "\n") - (sit-for 0)))) - -;; Set up key bindings for use while editing log messages - -(if sc-log-entry-keymap - nil - (setq sc-log-entry-keymap (make-sparse-keymap)) - (define-key sc-log-entry-keymap "\C-ci" 'sc-insert-last-log) - (define-key sc-log-entry-keymap "\C-c\C-i" 'sc-insert-last-log) - (define-key sc-log-entry-keymap "\C-ca" 'sc-abort-check-in) - (define-key sc-log-entry-keymap "\C-c\C-a" 'sc-abort-check-in) - (define-key sc-log-entry-keymap "\C-c\C-c" 'sc-log-exit) - (define-key sc-log-entry-keymap "\C-x\C-s" 'sc-log-exit)) - -(defvar sc-mode-hook nil - "*Function or functions to run on entry to sc-mode.") - -(defvar sc-mode () - "The currently active source control mode. Use M-x sc-mode to set it") - -;;;###autoload -(defun sc-mode (system) - "Toggle sc-mode. -SYSTEM can be sccs, rcs or cvs. -Cvs requires the pcl-cvs package. - -The following commands are available -\\[sc-next-operation] perform next logical source control operation on current file -\\[sc-show-changes] compare the version being edited with an older one -\\[sc-version-diff-file] compare two older versions of a file -\\[sc-show-history] display change history of current file -\\[sc-visit-previous-revision] display an older revision of current file -\\[sc-revert-file] revert buffer to last checked-in version -\\[sc-list-all-locked-files] show all files locked in current directory -\\[sc-list-locked-files] show all files locked by you in current directory -\\[sc-list-registered-files] show all files under source control in current directory -\\[sc-update-directory] get fresh copies of files checked-in by others in current directory -\\[sc-rename-file] rename the current file and its source control file - - -While you are entering a change log message for a check in, sc-log-entry-mode -will be in effect. - -Global user options: - sc-diff-command A list consisting of the command and flags - to be used for generating context diffs. - sc-mode-expert suppresses some conformation prompts, - notably for delta aborts and file saves. - sc-max-log-size specifies the maximum allowable size - of a log message plus one. - - -When using SCCS you have additional commands and options - -\\[sccs-insert-headers] insert source control headers in current file - -When you generate headers into a buffer using \\[sccs-insert-headers], -the value of sc-insert-headers-hook is called before insertion. If the -file is recognized a C or Lisp source, sc-insert-c-header-hook or -sc-insert-lisp-header-hook is called after insertion respectively. - - sccs-headers-wanted which %-keywords to insert when adding - headers with C-c h - sccs-insert-static if non-nil, keywords inserted in C files - get stuffed in a static string area so that - what(1) can see them in the compiled object code. - -When using CVS you have additional commands - -\\[sc-cvs-update-directory] update the current directory using pcl-cvs -\\[sc-cvs-file-status] show the CVS status of current file -" - (interactive - (if sc-mode - '(()) - (list - (intern - (read-string "Turn on source control mode on for: " "SCCS"))))) - (cond ((eq system ()) - (remove-hook 'find-file-hooks 'sc-mode-line) - (delete-menu-item (list sc-generic-name)) - (remove-hook 'activate-menubar-hook 'sc-sensitize-menu) - (setq sc-mode ())) - (sc-mode - (sc-mode ()) - (sc-mode system)) - (t - (setq system (intern (upcase (symbol-name system)))) - (let ((f (intern (format "sc-set-%s-mode" system)))) - (if (not (fboundp f)) - (error - "No source control interface for \"%s\". \ -Please use SCCS, RCS, CVS, or Atria." - system) - (funcall f) - (add-hook 'find-file-hooks 'sc-mode-line) - (add-submenu '() (cons sc-generic-name sc-menu)) - (add-hook 'activate-menubar-hook 'sc-sensitize-menu) - (run-hooks 'sc-mode-hook) - (setq sc-mode system)))))) - -(defun sc-log-entry-mode () - "Major mode for editing log message. - -These bindings are available when entering the log message -\\[sc-log-exit] proceed with check in, ending log message entry -\\[sc-insert-last-log] insert log message from last check-in -\\[sc-abort-check-in] abort this check-in - -Entry to the change-log submode calls the value of text-mode-hook, then -the value sc-log-entry-mode-hook. -" - (interactive) - (set-syntax-table text-mode-syntax-table) - (use-local-map sc-log-entry-keymap) - (setq local-abbrev-table text-mode-abbrev-table) - (setq major-mode 'sc-log-entry-mode) - (setq mode-name "Source Control Change Log Entry") - (run-hooks 'text-mode-hook 'sc-log-entry-mode-hook)) - - - -;;; SCCS specific part - -;; Find a reasonable default for the SCCS bin directory -(defvar sccs-bin-directory - (cond ((file-executable-p "/usr/sccs/unget") "/usr/sccs") - ((file-executable-p "/usr/bin/unget") "/usr/bin") - ((file-directory-p "/usr/sccs") "/usr/sccs") - ((file-directory-p "/usr/bin/sccs") "/usr/bin/sccs") - (t "/usr/bin")) - "*Directory where to find the sccs executables") - -(defvar sccs-headers-wanted '("\%\W\%") - "*SCCS header keywords to be inserted when sccs-insert-header is executed.") - -(defvar sccs-insert-static t - "*Insert a static character string when inserting source control headers in C mode. -Only relevant for the SCCS mode.") - -;; Vars the user doesn't need to know about. - -(defvar sccs-log-entry-mode nil) -(defvar sccs-current-major-version nil) - -;; Some helper functions - -(defun sccs-name (file &optional letter) - "Return the sccs-file name corresponding to a given file." - (if (null file) - () - (let ((expanded-file (expand-file-name file))) - (format "%sSCCS/%s.%s" - (concat (file-name-directory expanded-file)) - (or letter "s") - (concat (file-name-nondirectory expanded-file)))))) - -(defun sccs-lock-info (file) - "Lock-info method for SCCS. See sc-generic-lock-info" - (let ((sccs-file (sccs-name file "s")) - (lock-file (sccs-name file "p"))) - (cond ((or (null file) (not (file-exists-p sccs-file))) - ()) - ((not (file-exists-p lock-file)) - (list () ())) - (t - (save-excursion - (set-buffer (get-buffer-create "*SCCS tmp*")) - (insert-file lock-file) - (while (search-forward " " () t) - (replace-match "\n" () t)) - (goto-char (point-min)) - (forward-line 1) - (let ((revision - (buffer-substring (point) (progn (end-of-line) (point)))) - (name - (progn (forward-line 1) - (buffer-substring (point) - (progn (end-of-line) (point)))))) - (kill-buffer (current-buffer)) - (list name revision))))))) - - -(defun sccs-do-command (buffer command file &rest flags) - "Execute an SCCS command, notifying the user and checking for errors." - (let ((exec-path (cons sccs-bin-directory exec-path))) - (apply 'sc-do-command buffer command command file (sccs-name file) flags))) - -(defun sccs-admin (file sid) - "Checks a file into sccs. -FILE is the unmodified name of the file. SID should be the base-level sid to -check it in under." - ;; give a change to save the file if it's modified - (if (and (buffer-modified-p) - (y-or-n-p (format "%s has been modified. Write it out? " - (buffer-name)))) - (save-buffer)) - (sccs-do-command "*SCCS*" "admin" file - (concat "-i" file) (concat "-r" sid)) - (sc-chmod "-w" file) - ;; expand SCCS headers - (sccs-check-out file nil)) - -(defun sccs-register (file revision) - (sccs-load-vars) - (if (and (not (file-exists-p "SCCS")) - (y-or-n-p "Directory SCCS does not exist, create it?")) - (make-directory "SCCS")) - (sccs-admin file - (cond - (revision revision) - ((error-occurred (load-file "SCCS/emacs-vars.el")) "1") - (t sccs-current-major-version)))) - -(defun sccs-check-out (file lockp) - "Retrieve a copy of the latest version of the given file." - (sccs-do-command "*SCCS*" "get" file (if lockp "-e"))) - -(defun sccs-get-version (file buffer revision) - (sccs-do-command buffer "get" file - (and revision (concat "-r" revision)) - "-p" "-s")) - -(defun sccs-check-in (file revision comment) - "Check-in a given version of the given file with the given comment." - (sccs-do-command "*SCCS*" "delta" file "-n" - (format "-r%s" revision) - (format "-y%s" comment)) - (sc-chmod "-w" file) - ;; sccs-delta already turned off write-privileges on the - ;; file, let's not re-fetch it unless there's something - ;; in it that get would expand - (save-excursion - (let ((buffer (get-file-buffer file))) - (if buffer - (progn - (set-buffer buffer) - (sccs-check-out file nil)))))) - -(defun sccs-history (file) - (sccs-do-command (current-buffer) "prs" file)) - -;; There has *got* to be a better way to do this... - -(defun sccs-save-vars (sid) - (save-excursion - (find-file "SCCS/emacs-vars.el") - (erase-buffer) - (insert "(setq sccs-current-major-version \"" sid "\")") - (basic-save-buffer))) - -(defun sccs-load-vars () - (if (error-occurred (load-file "SCCS/emacs-vars.el")) - (setq sccs-current-major-version "1"))) - -;; SCCS header insertion code - -(defun sccs-insert-headers () - "*Insert headers for use with the Source Code Control System. -Headers desired are inserted at the start of the buffer, and are pulled from -the variable sccs-headers-wanted" - (interactive) - (save-excursion - (save-restriction - (widen) - (if (or (not (sccs-check-headers)) - (y-or-n-p "SCCS headers already exist. Insert another set?")) - (progn - (goto-char (point-min)) - (run-hooks 'sccs-insert-headers-hook) - (cond ((eq major-mode 'c-mode) (sccs-insert-c-header)) - ((eq major-mode 'lisp-mode) (sccs-insert-lisp-header)) - ((eq major-mode 'emacs-lisp-mode) (sccs-insert-lisp-header)) - ((eq major-mode 'scheme-mode) (sccs-insert-lisp-header)) - ((eq major-mode 'nroff-mode) (sccs-insert-nroff-header)) - ((eq major-mode 'plain-tex-mode) (sccs-insert-tex-header)) - ((eq major-mode 'texinfo-mode) (sccs-insert-texinfo-header)) - (t (sccs-insert-generic-header)))))))) - - - -(defun sccs-insert-c-header () - (let (st en) - (insert "/*\n") - (mapcar '(lambda (s) - (insert " *\t" s "\n")) - sccs-headers-wanted) - (insert " */\n\n") - (if (and sccs-insert-static - (not (string-match "\\.h$" buffer-file-name))) - (progn - (insert "#ifndef lint\n" - "static char *sccsid") -;; (setq st (point)) -;; (insert (file-name-nondirectory buffer-file-name)) -;; (setq en (point)) -;; (subst-char-in-region st en ?. ?_) - (insert " = \"\%\W\%\";\n" - "#endif /* lint */\n\n"))) - (run-hooks 'sccs-insert-c-header-hook))) - -(defun sccs-insert-lisp-header () - (mapcar '(lambda (s) - (insert ";;;\t" s "\n")) - sccs-headers-wanted) - (insert "\n") - (run-hooks 'sccs-insert-lisp-header-hook)) - -(defun sccs-insert-nroff-header () - (mapcar '(lambda (s) - (insert ".\\\"\t" s "\n")) - sccs-headers-wanted) - (insert "\n") - (run-hooks 'sccs-insert-nroff-header-hook)) - -(defun sccs-insert-tex-header () - (mapcar '(lambda (s) - (insert "%%\t" s "\n")) - sccs-headers-wanted) - (insert "\n") - (run-hooks 'sccs-insert-tex-header-hook)) - -(defun sccs-insert-texinfo-header () - (mapcar '(lambda (s) - (insert "@comment\t" s "\n")) - sccs-headers-wanted) - (insert "\n") - (run-hooks 'sccs-insert-texinfo-header-hook)) - -(defun sccs-insert-generic-header () - (let* ((comment-start-sccs (or comment-start "#")) - (comment-end-sccs (or comment-end "")) - (dont-insert-nl-p (string-match "\n" comment-end-sccs))) - (mapcar '(lambda (s) - (insert comment-start-sccs "\t" s "" - comment-end-sccs (if dont-insert-nl-p "" "\n"))) - sccs-headers-wanted) - (insert comment-start-sccs comment-end-sccs (if dont-insert-nl-p "" "\n")))) - -(defun sccs-check-headers () - "Check if the current file has any SCCS headers in it." - (save-excursion - (goto-char (point-min)) - (let ((case-fold-search ())) - (re-search-forward "%[MIRLBSDHTEGUYFPQCZWA]%" (point-max) t)))) - -(defun sccs-tree-list () - "List all the registered files in the current directory" - (call-process "/bin/sh" () t () "-c" - (concat "/bin/ls -1 " default-directory "SCCS/s.*")) - (goto-char (point-min)) - (while (search-forward "SCCS/s." () t) - (replace-match "" () t))) - -(defun sccs-new-revision-p (file) - "True if the SCCS archive is more recent than the file itself" - (file-newer-than-file-p (sccs-name file) file)) - -(defun sccs-revert (file) - "Cancel a check-out and get a fresh copy of the file" - (delete-file (sccs-name file "p")) - (delete-file file) - (sccs-do-command "*SCCS*" "get" file "-s")) - -(defun sccs-rename (old new) - "Rename the SCCS archives for OLD to NEW" - (if (file-exists-p (sccs-name old "p")) - (rename-file (sccs-name old "p") (sccs-name new "p") t)) - (if (file-exists-p (sccs-name old "s")) - (rename-file (sccs-name old "s") (sccs-name new "s") t))) - - -;;; RCS specific part - -;; Some helper functions - -(defun rcs-name (file) - "Return the rcs-file corresponding to a given file." - (if (null file) - () - (let* ((name (expand-file-name file)) - (rcs-file (concat name ",v"))) - (if (and (not (file-exists-p rcs-file)) - (file-exists-p (concat (file-name-directory name) "RCS"))) - (setq rcs-file - (format "%sRCS/%s,v" (file-name-directory name) - (file-name-nondirectory name)))) - rcs-file))) - -(defun rcs-lock-info (file) - "Lock-info method for RCS. See sc-generic-lock-info" - (let ((rcs-file (rcs-name file)) - locks-regexp) - (if (or (null rcs-file) (not (file-exists-p rcs-file))) - () - (save-excursion - (set-buffer (get-buffer-create "*RCS tmp*")) - (erase-buffer) - (call-process "rlog" () t () "-L" "-h" rcs-file) - (goto-char (point-min)) - (if (looking-at "\n.*Working file") - ;; RCS 4.x - (setq locks-regexp "^locks:") - ;; RCS 5.x - (setq locks-regexp "^locks:.*$\n")) - (if (not (re-search-forward locks-regexp () t)) - (list () ()) - (if (not (looking-at (concat "[\t ]*\\([^:]*\\): \\([0-9\\.]*\\)"))) - (list () ()) - (list (buffer-substring (match-beginning 1) (match-end 1)) - (buffer-substring (match-beginning 2) (match-end 2))))))))) - - -(defun rcs-register (file revision) - (if (and (not (file-exists-p "RCS")) - (y-or-n-p "Directory RCS does not exist, create it?")) - (make-directory "RCS")) - (sc-do-command "*RCS*" "ci" "ci" file (rcs-name file) "-u")) - -(defun rcs-check-out (file lockp) - (sc-do-command "*RCS*" "co" "co" file (rcs-name file) (if lockp "-l"))) - -(defun rcs-get-version (file buffer revision) - (sc-do-command buffer "co" "co" file (rcs-name file) - (if revision (concat "-p" revision) "-p") - "-q")) - -(defun rcs-check-in (file revision comment) - "Check-in a given version of the given file with the given comment." - (sc-do-command "*RCS*" "ci" "ci" file (rcs-name file) "-f" - (format "-m%s" comment) - (if (equal revision (sc-locked-revision file)) - "-u" - (format "-u%s" revision)))) - -(defun rcs-history (file) - (sc-do-command (current-buffer) "rlog" "rlog" file (rcs-name file))) - -(defun rcs-tree-list () - "List all the registered files in the current directory" - (call-process "/bin/sh" () t () "-c" - (concat "/bin/ls -1 " default-directory "RCS/*,v")) - (call-process "/bin/sh" () t () "-c" - (concat "/bin/ls -1 " default-directory "*,v")) - (goto-char (point-min)) - (while (search-forward "RCS/" () t) - (replace-match "" () t)) - (goto-char (point-min)) - (while (search-forward ",v" () t) - (replace-match "" () t))) - -(defun rcs-new-revision-p (file) - "True if the archive is more recent than the file itself" - (file-newer-than-file-p (rcs-name file) file)) - -(defun rcs-revert (file) - "Cancel a check-out and get a fresh copy of the file" - (sc-do-command "*RCS*" "rcs" "rcs" file (rcs-name file) "-u") - (delete-file file) - (sc-do-command "*RCS*" "co" "co" file (rcs-name file))) - -(defun rcs-rename (old new) - "Rename the archives for OLD to NEW" - (if (file-exists-p (rcs-name old)) - (rename-file (rcs-name old) (rcs-name new) t))) - - -;;; CVS specific part - -;;; As we rely on pcl-cvs for the directory level functions the menu is -;;; much shorter in CVS mode - - -(defun cvs-lock-info (file) - "Lock-info method for CVS, different from RCS and SCCS modes. -File are never locked in CVS." - (list () ())) - -(defun cvs-register (file revision) - (sc-do-command "*CVS*" "cvs add" cvs-program file - (file-name-nondirectory file) - "add" "-mInitial revision")) - -(defun cvs-check-out (file lockp) - ) - -(defun cvs-get-version (file buffer revision) - (sc-do-command buffer "cvs update" cvs-program file file "update" - (if revision (concat "-r" revision)) - "-p" "-q")) - -(defun cvs-check-in (file revision comment) - "Check-in a given version of the given file with the given comment." - (sc-do-command "*CVS*" "cvs commit" cvs-program file file "commit" - (and revision (format "-r%s" revision)) - (format "-m%s" comment))) - -(defun cvs-history (file) - (sc-do-command (current-buffer) "cvs log" cvs-program file file "log")) - -(defun cvs-revert (file) - "Cancel a check-out and get a fresh copy of the file" - (delete-file file) - (sc-do-command "*CVS*" "cvs update" cvs-program file file "update")) - -(defun sc-cvs-update-directory () - "Update the current directory by calling cvs-update from pcl-cvs" - (interactive) - (cvs-update default-directory)) - -(defun sc-cvs-file-status () - "Show the CVS status of the current file" - (interactive) - (if (not buffer-file-name) - (error "There is no file associated with buffer %s" (buffer-name))) - (let ((file buffer-file-name)) - (sc-do-command "*CVS*" "cvs status" cvs-program file file "status" "-v")) - (save-excursion - (set-buffer "*CVS*") - (goto-char (point-min))) - (display-buffer "*CVS*")) - - -;;; ClearCase specific part - -(defun ccase-is-registered-3 (fod) - (if (or (not fod) - (not (file-readable-p fod))) - 'na - (let ((dirs sc-ccase-mfs-prefixes) - (f nil) - (file (expand-file-name fod))) - (while (and (null f) dirs) - (if (string-match (car dirs) file) - (setq f t) - (setq dirs (cdr dirs)))) - (if (null f) - 'na - (sc-do-command "*CCase*" "describe" "cleartool" fod fod "describe") - (save-excursion - (set-buffer "*CCase*") - (let ((s (buffer-string))) - (cond - ((string-match "@@" s) t) - ((string-match "^Unix" s) 'na) - (t nil) - ))))))) - -(defun ccase-is-registered (fod) - (eq (ccase-is-registered-3 fod) t)) - -(defun ccase-lock-info (file) - (let ((cc (ccase-is-registered-3 file)) - s) - (if (eq cc 't) - (progn - (save-excursion - (set-buffer "*CCase*") - (setq s (buffer-string))) - (if (string-match "@@[^\n]*CHECKEDOUT\" from \\([^ ]*\\)[^\n]*\n[^\n]* by \\([^(\n]*\\) (" s) - (list - (substring s (match-beginning 1) (match-end 1)) - (substring s (match-beginning 2) (match-end 2))) - (list nil nil))) - cc))) - -(defun ccase-maybe-comment (tag) - (if (memq tag sc-ccase-comment-on) - (sc-enter-comment))) - -(defun ccase-register (file revision) - "Registers the file. We don't support the revision argument. -Also, we have to checkout the directory first." - ;; probably need proper error handling to catch the - ;; cases where we co the directory, but don't get to - ;; ci it back (want to uco in this case) - (let ((dpath (file-name-directory file))) - (if (not (ccase-is-registered dpath)) - (error "Cannot register file outside of VOB") - (sc-do-command "*CCase*" "co - dir" "cleartool" dpath dpath "co") - (sc-do-command "*CCase*" "register" "cleartool" file file "mkelem") - (sc-do-command "*CCase*" "ci - dir" "cleartool" dpath dpath "ci")))) - -(defun ccase-check-out (file lockp) - "Checks out the latest version of FILE. -If LOCKP is not NIL, FILE is also locked." - (let ((comment (ccase-maybe-comment 'checkout))) - (sc-do-command "*CCase*" "co" "cleartool" file file "co" - (if comment "-c" "-nc") - (if comment comment) - ;; this locking does not correspond to what we actually want. It's a - ;; hack from the days when this was SCCS-only - (if (ccase-reserve-p) "-res" "-unr")) -)) - -(defun ccase-reserve-p () - "Determine whether the user wants a reserved or unreserved checkout" - (cond - ((eq sc-ccase-reserve t) t) - ((eq sc-ccase-reserve nil) nil) - (t (y-or-n-p "Reserve Checkout? ")))) - -(defun ccase-get-version (file buffer revision) - "Insert a previous revison of FILE in BUFFER. -REVISION is the revision number requested." - (save-excursion - (set-buffer buffer) - (delete-region (point-min) (point-max)) - (insert-file-contents (concat file "@@/" revision))) -) - -(defun ccase-check-in (file revision message) - "Check in FILE with revision REVISION. -MESSAGE is a string describing the changes." - ;; we ignore revision since we can't use it - (sc-do-command "*CCase*" "ci" "cleartool" file file "ci" "-c" message (if sc-mode-expert "-ide")) -) - -(defun ccase-history (file) - "Insert the edit history of FILE in the current buffer." - (sc-do-command (buffer-name) "history" "cleartool" file file "lsh") -) - -(defun ccase-tree-list () - "List in the current buffer the files registered in the source control system" - ;;; This isn't going to fly as a practicality. We abstract everything out. - ;; (sc-do-command (buffer-name) "listing" "cleartool" (default-directory) (default-directory) "ls" "-r" "-short" "-vis" "-nxname") -) - -(defun ccase-new-revision-p (file) - "True if a new revision of FILE was checked in since we last got a copy of it" - (save-excursion - (let (pos newfile res br1 br2) - (sc-do-command "*CCase*" "Describe" "cleartool" file file "des") - (set-buffer "*CCase*") - (goto-char (point-min)) - (if (setq pos (search-forward-regexp "@@\\([^ \"]*\\)CHECKEDOUT\" from \\([^ ]*\\) (\\([a-z]*\\))" nil t)) -;; (if (setq pos (search-forward-regexp "@@\\([^ \"]*\\)CHECKEDOUT\"" nil t)) - (progn - (setq res (buffer-substring (match-beginning 3) (match-end 3))) - (if (equal res "unreserved") - (progn - (setq newfile (concat file "@@" - (buffer-substring (match-beginning 1) - (match-end 1)) - "LATEST")) - (setq br1 (buffer-substring (match-beginning 2) (match-end 2))) - (sc-do-command "*CCase*" "Describe" "cleartool" file newfile - "des") - (search-forward-regexp "@@\\([^ \"]*\\)" nil t) - (setq br2 (buffer-substring (match-beginning 1) (match-end 1))) - (not (equal br1 br2))) - nil)) - (error "%s not currently checked out" file))))) - -(defun ccase-revert (file) - "Cancel a check out of FILE and get back the latest checked in version" - (sc-do-command "*CCase*" "uco" "cleartool" file file "unco") -) - -(defun ccase-rename (old new) - "Rename the source control archives for OLD to NEW" - (let ((dpath (file-name-directory old)) - (comment (ccase-maybe-comment 'rename))) - (if (not (ccase-is-registered dpath)) - (error "Cannot rename file outside of VOB") - (sc-do-command "*CCase*" "co - dir" "cleartool" dpath dpath "co" - (if comment "-c" "-nc") - (if comment comment)) - (sc-do-command "*CCase*" "mv" "cleartool" new new "mv" - (if comment "-c" "-nc") - (if comment comment) - old) - (sc-do-command "*CCase*" "ci - dir" "cleartool" dpath dpath "ci" - (if comment "-c" "-nc") - (if comment comment))))) - -(defun sc-ccase-checkout-dir () - "Checkout the directory this file is in" - (interactive) - (let ((dpath default-directory) - (comment (ccase-maybe-comment 'checkout-dir))) - (if (not (ccase-is-registered dpath)) - (error "Cannot checkout directory outside of VOB") - (sc-do-command "*CCase*" "co - dir" "cleartool" dpath dpath "co" - (if comment "-c" "-nc") - (if comment comment))))) - -(defun sc-ccase-checkin-dir () - "Checkin the directory this file is in" - (interactive) - (let ((dpath default-directory) - (comment (ccase-maybe-comment 'checkin-dir))) - (if (not (ccase-is-registered dpath)) - (error "Cannot checkout directory outside of VOB") - (sc-do-command "*CCase*" "ci - dir" "cleartool" dpath dpath "ci" - (if comment "-c" "-nc") - (if comment comment))))) - -(defun sc-ccase-editcs () - "Edit Config Spec for this view" - (interactive) - (sc-do-command "*CCase-cs*" "catcs" "cleartool" "" nil "catcs") - (switch-to-buffer-other-window "*CCase-cs*") - (local-set-key "\C-c\C-c" 'exit-recursive-edit) - (recursive-edit) - (set-buffer "*CCase-cs*") - (let ((name (make-temp-name "/tmp/configspec"))) - (write-region (point-min) (point-max) name) - (kill-buffer "*CCase-cs*") - (sc-do-command "*CCase*" "setcs" "cleartool" name name "setcs")) -) - -(defun sc-ccase-new-brtype (brt) - "Create a new branch type" - (interactive "sBranch Name: ") - (let ((comment (ccase-maybe-comment 'new-brtype))) - (sc-do-command "*CCase*" "mkbrt" "cleartool" brt brt "mkbrtype" - (if comment "-c" "-nc") - (if comment comment)))) - -(defun sc-ccase-new-branch (brch) - "Create a new branch for element" - (interactive "sBranch: ") - (let ((file (buffer-file-name)) - (comment (ccase-maybe-comment 'new-branch))) - (sc-do-command "*CCase*" "mkbrch" "cleartool" file file "mkbranch" - (if comment "-c" "-nc") - (if comment comment) - brch))) - -(defun sc-ccase-checkin-merge () - "Merge in changes to enable checkin" - (interactive) - (save-excursion - (let ((file (buffer-file-name)) - (buf (current-buffer)) - (comment (ccase-maybe-comment 'checkin-merge))) - (sc-do-command "*CCase*" "Describe" "cleartool" file file "des") - (set-buffer "*CCase*") - (goto-char (point-min)) - (if (search-forward-regexp "@@\\([^ \"]*\\)CHECKEDOUT\" from \\([^ ]*\\) (\\([a-z]*\\))" nil t) - (progn - (sc-do-command "*CCase*" "Merging" "cleartool" file - (concat (buffer-substring (match-beginning 1) - (match-end 1)) "LATEST") - "merge" - (if comment "-c" "-nc") - (if comment comment) - "-abort" "-to" file "-ver") - (set-buffer buf) - (revert-buffer t t) - (display-buffer "*CCase*")) - (error "File %s not checked out" file))))) - -(defun sc-ccase-version-tree () - "List version tree for file" - (interactive) - (let ((p (buffer-file-name))) - (sc-do-command "*CCase*" "lsvtree" "cleartool" p p "lsvtree") - (display-buffer "*CCase*"))) - -(defun ccase-protect-expanded-name (revision) - "Protect ccase extended names from being used as temp names. Munge /s into :s" - (if (equal sc-generic-name "CCase") - (progn - (if (string-match "/" revision) - (let ((str (substring revision 0)) ;; copy string - i) - (while (setq i (string-match "/" str)) - (aset str i 58)) ; 58 is for : - str))))) - -(defun sc-ccase-list-locked-files () - (interactive) - (sc-do-command "*CCase directory*" "listing" "cleartool" (default-directory) nil "lsco" "-cview")) - -(defun sc-ccase-list-all-locked-files () - (interactive) - (sc-do-command "*CCase directory*" "listing" "cleartool" (default-directory) nil "lsco")) - -(defun sc-ccase-list-registered-files () - "List files registered in clearcase" - (interactive) - (sc-do-command "*CCase directory*" "listing" "cleartool" (default-directory) nil "ls" "-r" "-vis" "-nxname")) - -;;; Instantiation and installation of the menus - -;;; Set the menubar for Lucid Emacs -(defvar sc-default-menu - '(["NEXT-OPERATION" sc-next-operation t nil] - ["Update Current Directory" sc-update-directory t] - "----" - ["Revert File" sc-revert-file t nil] - ["Rename File" sc-rename-this-file t nil] - "----" - ["Show Changes" sc-show-changes t] - ["Show Changes Since Revision..." sc-show-revision-changes t] - ["Visit Previous Revision..." sc-visit-previous-revision t] - ["Show Edit History" sc-show-history t] - "----" - ["List Locked Files" sc-list-locked-files t] - ["List Locked Files Any User" sc-list-all-locked-files t] - ["List Registered Files" sc-list-registered-files t]) - "Menubar entry for using the revision control system.") - -(defvar sc-cvs-menu - '(["Update Current Directory" sc-cvs-update-directory t] - ["Revert File" sc-revert-file t nil] - "----" - ["Show Changes" sc-show-changes t] - ["Show Changes Since Revision..." sc-show-revision-changes t] - ["Visit Previous Revision..." sc-visit-previous-revision t] - ["Show File Status" sc-cvs-file-status t] - ["Show Edit History" sc-show-history t]) - "Menubar entry for using the revision control system with CVS.") - -(defvar sc-ccase-menu - '(["NEXT-OPERATION" sc-next-operation t nil] - ["Revert File" sc-revert-file t nil] - ["Checkin Merge" sc-ccase-checkin-merge t] - "----" - ["Show Changes" sc-show-changes t] - ["Show Changes Since Revision..." sc-show-revision-changes t] - ["Visit Previous Revision..." sc-visit-previous-revision t] - ["Show Edit History" sc-show-history t] - "----" - ("Directories" - ["Checkout Directory" sc-ccase-checkout-dir t] - ["Checkin Directory" sc-ccase-checkin-dir t] - ["Rename File..." sc-rename-this-file t nil]) - ("Configs" - ["Edit Config Spec..." sc-ccase-editcs t] - ["Create New Branch..." sc-ccase-new-brtype t] - ["Make New Branch..." sc-ccase-new-branch t]) - ("Listings" - ["List Version Tree" sc-ccase-version-tree t] - ["List Locked Files" sc-ccase-list-locked-files t] - ["List Locked Files Any User" sc-ccase-list-all-locked-files t] - ["List Registered Files" sc-ccase-list-registered-files t] - )) - "Menubar entry for using the revision control system.") - -(defun sc-sensitize-menu () - (let* ((rest (cdr (car - (find-menu-item current-menubar (list sc-generic-name))))) - (case-fold-search t) - (file (if buffer-file-name - (file-name-nondirectory buffer-file-name) - (buffer-name))) - (dir (file-name-directory - (if buffer-file-name buffer-file-name default-directory))) - (lock-info (sc-lock-info buffer-file-name)) - command - nested-rest - item) - (while rest - (setq item (car rest)) - (if (listp item) - (progn - (setq nested-rest (cons (cdr rest) nested-rest)) - (setq rest (cdr item))) - (if (vectorp item) - (progn - (setq command (aref item 1)) - (cond ((eq 'sc-next-operation command) - (aset item 0 - (cond ((eq lock-info 'na) "Not Available") - ((not lock-info) "Register File") - ((not (car lock-info)) "Check out File") - (t "Check in File"))) - ;; if locked by somebody else disable the next-operation - (if (or (not buffer-file-name) - (eq lock-info 'na) - (and (car lock-info) - (not (equal sc-generic-name "CCase")) - (not (equal (car lock-info) (user-login-name))))) - (aset item 2 ()) - (aset item 2 t))) - ((eq lock-info 'na) (aset item 2 ())) - ((> (length item) 3) - (aset item 3 file)) - (t nil)) - (if (not (eq lock-info 'na)) - (let ((enable-file-items - (if (member sc-generic-name '("CVS" "CCase")) - buffer-file-name - (if lock-info t ())))) - (if (memq command - '(sc-force-check-in-file - sc-register-file - sc-revert-file - sc-rename-this-file - sc-show-history - sc-show-changes - sc-show-revision-changes - sc-visit-previous-revision - sc-cvs-file-status - sc-ccase-checkout-dir - sc-ccase-checkin-dir - sc-ccase-editcs - sc-ccase-new-brtype - sc-ccase-new-branch - sc-ccase-checkin-merge - sc-ccase-needs-merge - sc-ccase-merge-changes - sc-ccase-create-label - sc-ccase-label-sources - sc-ccase-version-tree - sc-list-locked-files - sc-list-all-locked-files - sc-ccase-list-registered-files - )) - (aset item 2 enable-file-items)))))) - (if (not (setq rest (cdr rest))) - (if nested-rest - (progn - (setq rest (car nested-rest)) - (setq nested-rest (cdr nested-rest))))))) - nil)) - - -;;; Function to decide which Source control to use -(defun sc-set-SCCS-mode () - (setq sc-generic-name "SCCS") - (setq sc-can-hack-dir t) - (setq sc-generic-lock-info 'sccs-lock-info) - (setq sc-generic-register 'sccs-register) - (setq sc-generic-check-out 'sccs-check-out) - (setq sc-generic-get-version 'sccs-get-version) - (setq sc-generic-check-in 'sccs-check-in) - (setq sc-generic-history 'sccs-history) - (setq sc-generic-tree-list 'sccs-tree-list) - (setq sc-generic-new-revision-p 'sccs-new-revision-p) - (setq sc-generic-revert 'sccs-revert) - (setq sc-generic-rename 'sccs-rename) - (setq sc-menu - (cons (car sc-default-menu) - (cons ["Insert Headers" sccs-insert-headers t] - (cdr sc-default-menu)))) - (define-key sc-prefix-map "h" 'sccs-insert-headers) - (define-key sc-prefix-map "\C-d" 'sc-update-directory)) - -(defun sc-set-RCS-mode () - (setq sc-generic-name "RCS") - (setq sc-can-hack-dir t) - (setq sc-generic-lock-info 'rcs-lock-info) - (setq sc-generic-register 'rcs-register) - (setq sc-generic-check-out 'rcs-check-out) - (setq sc-generic-get-version 'rcs-get-version) - (setq sc-generic-check-in 'rcs-check-in) - (setq sc-generic-history 'rcs-history) - (setq sc-generic-tree-list 'rcs-tree-list) - (setq sc-generic-new-revision-p 'rcs-new-revision-p) - (setq sc-generic-revert 'rcs-revert) - (setq sc-generic-rename 'rcs-rename) - (setq sc-menu sc-default-menu) - (define-key sc-prefix-map "\C-d" 'sc-update-directory)) - -(defun sc-set-CVS-mode () - (require 'pcl-cvs) - (setq sc-generic-name "CVS") - (setq sc-can-hack-dir t) - (setq sc-generic-lock-info 'cvs-lock-info) - (setq sc-generic-register 'cvs-register) - (setq sc-generic-check-out 'cvs-check-out) - (setq sc-generic-get-version 'cvs-get-version) - (setq sc-generic-check-in 'cvs-check-in) - (setq sc-generic-history 'cvs-history) - (setq sc-generic-tree-list 'cvs-tree-list) - (setq sc-generic-new-revision-p 'cvs-new-revision-p) - (setq sc-generic-revert 'cvs-revert) - (setq sc-generic-rename 'cvs-rename) - (setq sc-menu sc-cvs-menu) - (define-key sc-prefix-map "\C-d" 'sc-cvs-update-directory) - (define-key sc-prefix-map "s" 'sc-cvs-file-status)) - -(defun sc-set-CLEARCASE-mode () - (setq sc-generic-name "CCase") - (setq sc-can-hack-dir nil) - (setq sc-generic-lock-info 'ccase-lock-info) - (setq sc-generic-register 'ccase-register) - (setq sc-generic-check-out 'ccase-check-out) - (setq sc-generic-get-version 'ccase-get-version) - (setq sc-generic-check-in 'ccase-check-in) - (setq sc-generic-history 'ccase-history) - (setq sc-generic-tree-list 'ccase-tree-list) - (setq sc-generic-new-revision-p 'ccase-new-revision-p) - (setq sc-generic-revert 'ccase-revert) - (setq sc-generic-rename 'ccase-rename) - (setq sc-menu sc-ccase-menu) - - ;; caching for file directory types - (save-excursion - (set-buffer (get-buffer-create "*CCase*")) - (shell-command-on-region (point-min) (point-max) "df -t mfs | sed -n 's%.*[ ]\\(/[^ ]*\\)$%\\1%p'" t) - (goto-char (point-min)) - (let (x l) - (while (condition-case nil (setq x (read (current-buffer))) - (error nil)) - (setq l (cons (prin1-to-string x) l))) - (setq sc-ccase-mfs-prefixes (nreverse l)))) -) - -(defun sc-set-ATRIA-mode () - (sc-set-CLEARCASE-mode)) - -(defun sc-set-CCASE-mode () - (sc-set-CLEARCASE-mode)) - - -;; the module is sucessfully loaded! -(provide 'generic-sc)
--- a/lisp/packages/gnuserv.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/packages/gnuserv.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,9 +1,11 @@ ;;; gnuserv.el --- Lisp interface code between Emacs and gnuserv ;; Copyright (C) 1989-1997 Free Software Foundation, Inc. -;; Version: 3.2 +;; Version: 3.3 ;; Author: Andy Norman (ange@hplb.hpl.hp.com), originally based on server.el ;; Hrvoje Niksic <hniksic@srce.hr> +;; Maintainer: Jan Vroonhof <vroonhof@math.ethz.ch>, +;; Hrvoje Niksic <hniksic@srce.hr> ;; Keywords: environment, processes, terminals ;; This file is part of XEmacs. @@ -45,11 +47,12 @@ ;; TTY, this TTY will be attached as a new device to the running ;; XEmacs, and will be removed once you are done with the buffer. -;; To evaluate a Lisp form in a running Emacs, use the `gnudoit' -;; utility. For example `gnudoit "(+ 2 3)"' will print `5', whereas -;; `gnudoit "(gnus)"' will fire up your favorite newsreader. Like -;; gnuclient, `gnudoit' requires the server to be started prior to -;; using it. +;; To evaluate a Lisp form in a running Emacs, use the `-eval' +;; argument of gnuclient. To simplify this, we provide the `gnudoit' +;; shell script. For example `gnudoit "(+ 2 3)"' will print `5', +;; whereas `gnudoit "(gnus)"' will fire up your favorite newsreader. +;; Like gnuclient, `gnudoit' requires the server to be started prior +;; to using it. ;; For more information you can refer to man pages of gnuclient, ;; gnudoit and gnuserv, distributed with XEmacs. @@ -77,7 +80,7 @@ ;;; Code: (defconst gnuserv-rcs-version - "$Id: gnuserv.el,v 1.9 1997/05/23 01:36:30 steve Exp $") + "$Id: gnuserv.el,v 1.10 1997/05/29 23:50:05 steve Exp $") (defgroup gnuserv nil "The gnuserv suite of programs to talk to Emacs from outside." @@ -317,7 +320,7 @@ "Process gnuserv client requests to execute Emacs commands." (setq gnuserv-string (concat gnuserv-string string)) ;; C-d means end of request. - (when (string-match "\C-d$" gnuserv-string) + (when (string-match "\C-d\\'" gnuserv-string) (cond ((string-match "^[0-9]+" gnuserv-string) ; client request id (let ((header (read-from-string gnuserv-string))) ;; Set the client we are talking to. @@ -627,7 +630,7 @@ ;; return its first buffer. ((setq client (car (member-if-not 'null gnuserv-clients - :key 'gnuserv-buffers))) + :key 'gnuclient-buffers))) (car (gnuclient-buffers client))) ;; Oh, give up. (t nil)))) @@ -674,8 +677,7 @@ (condition-case () (delete-process gnuserv-process) (error nil)) - (setq gnuserv-process nil) - (message "Killed server"))) + (setq gnuserv-process nil))) ;; Actually start the process. Kills all the clients before-hand. (defun gnuserv-start-1 (&optional leave-dead)
--- a/lisp/packages/icomplete.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/packages/icomplete.el Mon Aug 13 09:38:25 2007 +0200 @@ -1,33 +1,33 @@ -;;; icomplete.el --- minibuffer completion with incremental feedback +;;;_. icomplete.el - minibuffer completion incremental feedback -;;; Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. +;; Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. -;;; Author: Ken Manheimer <klm@nist.gov> -;;; Maintainer: Ken Manheimer <klm@nist.gov> -;;; Version: $Id: icomplete.el,v 1.2 1997/03/16 03:05:29 steve Exp $ -;;; Created: Mar 1993 klm@nist.gov - first release to usenet -;;; Keywords: help, abbrev +;; Author: Ken Manheimer <klm@python.org> +;; Maintainer: Ken Manheimer <klm@python.org> +;; Version: $Id: icomplete.el,v 1.3 1997/05/29 23:50:06 steve Exp $ +;; Created: Mar 1993 klm@nist.gov - first release to usenet +;; Keywords: help, abbrev -;;; Hacked for XEmacs: David Hughes 7th September 1995 +;; This file is part of GNU Emacs. -;; 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 +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. -;; XEmacs is 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. +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. ;; 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. +;; along with GNU Emacs; 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: FSF 19.34. +;; This file is also part of XEmacs. +;; Hacked for XEmacs: David Hughes 7th September 1995 +;; With some integration and refinement by Ken Manheimer, May 1997 ;;; Commentary: @@ -72,6 +72,13 @@ (provide 'icomplete) ;;;_* User Customization variables +(defvar icomplete-compute-delay .3 + "*Completions-computation stall, used only with large-number +completions - see `icomplete-delay-completions-threshold'.") +(defvar icomplete-delay-completions-threshold 400 + "*Pending-completions number over which to apply icomplete-compute-delay.") +(defvar icomplete-max-delay-chars 3 + "*Maximum number of initial chars to apply icomplete compute delay.") ;;;_* Initialization ;;;_ = icomplete-minibuffer-setup-hook @@ -121,28 +128,30 @@ (add-hook 'icomplete-post-command-hook 'icomplete-exhibit) ;; XEmacs addition -(defvar icomplete-show-key-bindings t +(defvar icomplete-show-key-bindings (string-match "XEmacs\\|Lucid" + emacs-version) "When non-nil show key bindings as well as completion when matching -a command.") +a command. Currently working only for XEmacs - see `icomplete-get-keys'.") -;; XEmacs addition (defun icomplete-get-keys (func-name) - "Return the keys `func-name' is bound to as a string." + "Return the keys `func-name' is bound to as a string, or nil if none. +NOTE that this depends on `owindow' minbuf setting and `current-local-map' +taking arg, both present in XEmacs but not present in mainline GNU Emacs +19.34." (when (commandp func-name) (save-excursion ;; Depends on dynamic scope from read-from-minibuffer :-( (let* ((sym (intern func-name)) (buf (set-buffer (window-buffer owindow))) (keys (where-is-internal sym (current-local-map buf)))) - (concat "<" - (if keys + (if keys + (concat "<" (mapconcat 'key-description (sort keys #'(lambda (x y) (< (length x) (length y)))) ", ") - "Unbound") - ">"))))) + ">")))))) ;;;_ > icomplete-mode (&optional prefix) ;;;###autoload @@ -216,6 +225,7 @@ ;;;_ > icomplete-exhibit () (defun icomplete-exhibit () "Insert icomplete completions display. + Should be run via minibuffer `post-command-hook'. See `icomplete-mode' and `minibuffer-setup-hook'." (if (icomplete-simple-completing-p) @@ -231,7 +241,22 @@ (make-local-variable 'icomplete-eoinput)) (setq icomplete-eoinput (point)) ; Insert the match-status information: - (if (> (point-max) 1) + (if (and (> (point-max) 1) + (or + ;; Don't bother with delay after certain number of chars: + (> (point-max) icomplete-max-delay-chars) + ;; Don't delay if alternatives number is small enough: + (if minibuffer-completion-table + (cond ((numberp minibuffer-completion-table) + (< minibuffer-completion-table + icomplete-delay-completions-threshold)) + ((sequencep minibuffer-completion-table) + (< (length minibuffer-completion-table) + icomplete-delay-completions-threshold)) + )) + ;; Delay - give some grace time for next keystroke, before + ;; embarking on computing completions: + (sit-for icomplete-compute-delay))) (insert-string (icomplete-completions contents minibuffer-completion-table @@ -256,7 +281,13 @@ The displays for unambiguous matches have ` [Matched]' appended \(whether complete or not), or ` \[No matches]', if no eligible -matches exist." +matches exist. \(In XEmacs, keybindings for matched commands, if any, +are exhibited within the square braces.)" + + ;; 'all-completions' doesn't like empty + ;; minibuffer-completion-table's (ie: (nil)) + (if (and (listp candidates) (null (car candidates))) + (setq candidates nil)) (let ((comps (all-completions name candidates predicate)) ; "-determined" - only one candidate @@ -266,53 +297,71 @@ (open-bracket-prospects "{") (close-bracket-prospects "}") ) - (cond ((null comps) (format " %sNo matches%s" - open-bracket-determined - close-bracket-determined)) - ((null (cdr comps)) ;one match - (concat (if (and (> (length (car comps)) - (length name))) - (concat open-bracket-determined - (substring (car comps) (length name)) - close-bracket-determined) - "") - " [Matched]" - ;; XEmacs - (if (and icomplete-show-key-bindings - (commandp (intern-soft (car comps)))) - (icomplete-get-keys (car comps)) - "") - )) - (t ;multiple matches - (let* ((most (try-completion name candidates predicate)) - (most-len (length most)) - most-is-exact - (alternatives - (apply - (function concat) - (cdr (apply - (function nconc) - (mapcar '(lambda (com) - (if (= (length com) most-len) - ;; Most is one exact match, - ;; note that and leave out - ;; for later indication: - (progn - (setq most-is-exact t) - ()) - (list "," - (substring com - most-len)))) - comps)))))) - (concat (and (> most-len (length name)) - (concat open-bracket-determined - (substring most (length name)) + (catch 'input + (cond ((null comps) (format " %sNo matches%s" + open-bracket-determined close-bracket-determined)) - open-bracket-prospects - (if most-is-exact - (concat "," alternatives) - alternatives) - close-bracket-prospects)))))) + ((null (cdr comps)) ;one match + (concat (if (and (> (length (car comps)) + (length name))) + (concat open-bracket-determined + (substring (car comps) (length name)) + close-bracket-determined) + "") + " [Matched" + (let ((keys (and icomplete-show-key-bindings + (commandp (intern-soft (car comps))) + (icomplete-get-keys (car comps))))) + (if keys + (concat "; " keys) + "")) + "]")) + (t ;multiple matches + (let* ((most + (try-completion name candidates + (and predicate + ;; Wrap predicate in impatience - ie, + ;; `throw' up when pending input is + ;; noticed. Adds some overhead to + ;; predicate, but should be worth it. + (function + (lambda (item) + (if (input-pending-p) + (throw 'input "") + (apply predicate + item nil))))))) + (most-len (length most)) + most-is-exact + (alternatives + (substring + (apply (function concat) + (mapcar (function + (lambda (com) + (if (input-pending-p) + (throw 'input "")) + (if (= (length com) most-len) + ;; Most is one exact match, + ;; note that and leave out + ;; for later indication: + (progn + (setq most-is-exact t) + ()) + (concat "," + (substring com + most-len))))) + comps)) + 1))) + (concat (and (> most-len (length name)) + (concat open-bracket-determined + (substring most (length name)) + close-bracket-determined)) + open-bracket-prospects + (if most-is-exact + ;; Add a ',' at the front to indicate "complete but + ;; not unique": + (concat "," alternatives) + alternatives) + close-bracket-prospects))))))) ;;;_ + Initialization ;;; If user hasn't setq-default icomplete-mode to nil, then setup for
--- a/lisp/packages/mime-compose.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1284 +0,0 @@ -;;; File: --- mime-compose.el --- -;;; Author: Marc Andreessen (marca@ncsa.uiuc.edu) -;;; Additional code: Keith Waclena (k-waclena@uchicago.edu). -;;; Christopher Davis (ckd@eff.org). -;;; Copyright (C) National Center for Supercomputing Applications, 1992. -;;; -;;; This program 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 1, or (at your option) -;;; any later version. -;;; -;;; This program 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 your copy of Emacs; if not, write to the Free Software -;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -;;; -;;; Synched up with: Not in FSF. - -;;; -------------------------------- CONTENTS -------------------------------- -;;; -;;; mime-compose: Utility routines for composing MIME-compliant mail. -;;; !Revision: 1.5 ! -;;; !Date: 1994/03/24 00:00:47 ! -;;; -;;; Canonical list of features: -;;; Automatic MIME header construction. -;;; Include GIF/JPEG image. -;;; Include audio file. -;;; Include PostScript file. -;;; Include MPEG animation sequence. -;;; Include raw binary/nonbinary file. -;;; Include xwd window dump taken on the fly. -;;; Include reference to anonymous/regular FTP. -;;; Include audio snippet recorded on the fly. -;;; Convert region to MIME richtext. -;;; Convert region to any ISO 8859 charset. -;;; Optional conversion of plaintext bodyparts to quoted-printable -;;; with arbitrary charset when messages are sent. -;;; Deemphasizing/highlighting of MIME headers. -;;; Completion on content type and charset. -;;; Automatic encoding in base64 and quoted-printable formats. -;;; Selective display hides raw data. -;;; Works with mail-mode and mh. -;;; -;;; ------------------------------ INSTRUCTIONS ------------------------------ -;;; -;;; Use the normal Emacs mail composer (C-x m). -;;; -;;; (Or, use with Emacs mh-e by loading this file *after* loading mh-e. -;;; But due to incestuous hookification, you can't require mime-compose -;;; inside mh-letter-mode-hook.) -;;; -;;; Do nothing special to prepare a message to have MIME elements -;;; included in it. -;;; -;;; The basic commands to add MIME elements (images, audio, etc.) to a -;;; message are as follows: -;;; -;;; mail-mode (mh-e) function what happens -;;; ~~~~~~~~~ (~~~~~~~~~) ~~~~~~~~ ~~~~~~~~~~~~ -;;; C-c g (C-c C-m g) mime-include-gif Add a GIF file. -;;; C-c j (C-c C-m j) mime-include-jpeg Add a JPEG file. -;;; C-c a (C-c C-m a) mime-include-audio Add an audio file. -;;; C-c p (C-c C-m p) mime-include-postscript Add a PostScript file. -;;; C-c v (C-c C-m v) mime-include-mpeg Add an MPEG file. -;;; -;;; (Note that mime-compose assumes you have the 'mmencode' program -;;; installed on your system. See 'WHAT MIME IS' below for more -;;; information on mmencode and the metamail distribution.) -;;; -;;; Some mime-compose commands create data themselves; these follow: -;;; -;;; C-c x (C-c C-m x) -;;; mime-include-xwd-dump -;;; Add the result of an X-window dump. The program named in -;;; mime-xwd-command will be run, and the resulting dump will be -;;; inserted into the message. -;;; C-c s (C-c C-m s) -;;; mime-include-audio-snippet -;;; Add an audio snippet, recorded on the fly. CURRENTLY THIS WORKS -;;; ONLY FOR SILICON GRAPHICS INDIGO AND 4D/35's. The Sun version -;;; may also work; see the source code below. Recording begins -;;; immediately; press 'y' to end recording or 'n' to abort the -;;; whole process. The resulting audio file will be converted to -;;; standard mulaw format and incorporated into the message. -;;; -;;; If you have a raw binary file and MIME or mime-compose doesn't -;;; have built-in support for its format (e.g. an Emacs Lisp -;;; byte-compiled file), you can use: -;;; -;;; C-c r (C-c C-m r) -;;; mime-include-raw-binary -;;; Add a raw binary file. You will be prompted for both the -;;; filename and the content type of the file; if you do not give a -;;; content type, the default (application/octet-stream) will be -;;; used, and the recipient will be able to have his/her MIME mail -;;; handler extract the raw binary file from the message. -;;; -;;; Similarly, to include nonbinary (text) files using -;;; quoted-printable encoding, use: -;;; -;;; C-c n (C-c C-m n) -;;; mime-include-raw-nonbinary -;;; Add a raw nonbinary (text) file. You will be prompted for both -;;; the filename and the content type of the file (which defaults to -;;; text/plain). With prefix arg, you will also be prompted for the -;;; character set (default is US-ASCII). -;;; -;;; You can also point to external elements: files that will not be -;;; included in the document, but can be accessed by the recipient in -;;; some other way (most commonly, via FTP). The following commands -;;; handle this: -;;; -;;; C-c e (C-c C-m e) -;;; mime-include-external-anonftp -;;; Point to an external file (assumed to be accessable via -;;; anonymous FTP). You will be prompted for the name of the FTP -;;; site, the remote directory name, and remote filename, the remote -;;; file's content type, and a description of the remote file. -;;; C-c f (C-c C-m f) -;;; mime-include-external-ftp -;;; This is the same as 'C-c e', except that the file will be -;;; accessed via regular FTP rather than anonymous FTP -- a username -;;; and password will have to be provided by the recipient to gain -;;; access to the file. -;;; -;;; Note that whenever you are prompted for a content type, Emacs' -;;; completion feature is active: press TAB for a list of valid types. -;;; You can also enter a type not in the completion list. -;;; -;;; If you type in text that belongs in a character set other than the -;;; default (US-ASCII), you can use the following function to encode -;;; the text and generate appropriate MIME headers: -;;; -;;; C-c C-r i (C-c C-m C-r i) -;;; mime-region-to-charset -;;; Encode region in an alternate character set. (MIME only -;;; sanctions the use of ISO charsets; thus, the command key for -;;; this function is 'i'.) You will be prompted for a character set -;;; (minibuffer completion is provided). -;;; -;;; MIME also defines a 'richtext' format; you can encode the current -;;; region as richtext with: -;;; -;;; C-c C-r r (C-c C-m C-r r) -;;; mime-region-to-richtext -;;; Encode region as richtext. With prefix arg, you will be -;;; prompted for a character set, else the default (US-ASCII) is -;;; used. -;;; -;;; If you regularly use 8-bit characters in your messages, you will -;;; probably want all of your plaintext bodyparts automatically -;;; encoded in quoted-printable and labeled as belonging to the -;;; character set that you're using when a message is sent. To have -;;; this happen, set this variable: -;;; -;;; mime-encode-plaintext-on-send (variable, default NIL) -;;; If T, all text/plain bodyparts in the message will be encoded in -;;; quoted-printable and labeled with charset mime-default-charset -;;; (by default, US-ASCII) when a message is sent. If NIL, -;;; text/plain bodyparts will not be touched. -;;; -;;; ---------------------------- ADDITIONAL NOTES ---------------------------- -;;; -;;; mime-compose uses Emacs' selective-display feature: only the first -;;; line of any encoded data file will be displayed, followed by -;;; ellipses (indicating that some data is not being shown). See the -;;; variable 'mime-use-selective-display' below. -;;; -;;; If you are running XEmacs/Lucid Emacs, the mail-mode popup menu (attached -;;; to the third mouse button) will include mime-compose entries. -;;; -;;; If you are running XEmacs/Lucid Emacs or Epoch, highlighting will be used -;;; to deemphasize the various MIME headers (but emphasize the various -;;; MIME content types). You can turn this feature off; see the -;;; variable 'mime-use-highlighting'. -;;; -;;; After your message has been `mimified' (by including a MIME -;;; element), it is best not to put trailing text outside the final -;;; boundary at the end of the file -- such text will not be -;;; considered to be part of the message by MIME-compliant mail -;;; readers (although it will still be sent). -;;; -;;; As you compose a complex MIME message, you may notice useless -;;; bodyparts accumulating: extra text/plain bodyparts, in particular, -;;; containing no text. These bodyparts will be stripped from the -;;; message before the message is sent, so you (and I) won't look like -;;; a moron to the recipient. -;;; -;;; A command that usually isn't necessary, but is provided in case -;;; you wish to send a plaintext message with the various MIME headers -;;; and boundaries, is: -;;; -;;; C-c m (C-c C-m m) mime-mimify-message Mimify a message. -;;; -;;; MIME messages can contain elements and structures not yet -;;; supported by mime-compose. If you have ideas or code for support -;;; that should be provided by mime-compose, please send them to the -;;; author. -;;; -;;; ------------------------ WHAT MIME-COMPOSE IS NOT ------------------------ -;;; -;;; mime-compose is not a MIME message handler. It will not interpret -;;; MIME messages, display images, or anything similar. -;;; -;;; mime-compose is not intelligent enough (yet) to construct complex -;;; MIME messages (with nested boundaries, parallel message elements, -;;; and so on). -;;; -;;; mime-compose will not enforce correctness (MIME compliance) on -;;; your messages. mime-compose generates MIME-compliant message -;;; elements, but will sit quietly if you alter them or add your own -;;; incorrect elements. -;;; -;;; In particular, note that the MIME specification demands a blank -;;; line following the Content declarations for a bodypart. -;;; mime-compose will give you that blank line, but will not demand -;;; that you leave it blank; if you don't, your message will not be -;;; happy. -;;; -;;; ------------------------------ WHAT MIME IS ------------------------------ -;;; -;;; MIME defines a format for email messages containing non-plaintext -;;; elements (images, audio, etc.). MIME is detailed in Internet RFC -;;; 1341, by N. Borenstein and N. Freed. You can FTP this RFC from -;;; many archive sites, including uxc.cso.uiuc.edu. -;;; -;;; Few mail readers handle MIME messages, yet. However, most popular -;;; mail readers can be easily patched to feed MIME messages to a -;;; program called 'metamail', which can handle MIME messages. You -;;; can FTP metamail from thumper.bellcore.com in /pub/nsb as -;;; mm.tar.Z. Since mime-compose requires the existence of the -;;; program 'mmencode' (from the metamail distribution) to insert -;;; binary and nonbinary files into messages, it is a Good Idea to -;;; have metamail installed on your system. -;;; -;;; -------------------------------------------------------------------------- -;;; LCD Archive Entry: -;;; mime-compose|Marc Andreessen|marca@ncsa.uiuc.edu| -;;; MIME-compliant message generation utilities.| -;;; !Date: 1994/03/24 00:00:47 !|!Revision: 1.5 !|~/misc/mime-compose.el.Z| -;;; -------------------------------------------------------------------------- - -(provide 'mime-compose) - -(defvar mime-running-mh-e (featurep 'mh-e) - "Non-nil if running under mh-e.") - -(if (not mime-running-mh-e) - (require 'sendmail)) - -;;; ---------------------- User-customizable variables ----------------------- - -(defvar mime-compose-hook nil - "*Invoked exactly once by first invocation of mime-mimify-message, -before any processing is done.") - -(defvar mime-use-selective-display t - "*Flag for using selective-display to hide bodies of MIME enclosures. -If non-NIL, selective-display will be used; if NIL, it will not be used.") - -(defvar mime-default-charset "US-ASCII" - "*Default character set for MIME messages elements. According to the -MIME specification, this can be either US-ASCII or ISO-8859-x, where x -must be between 1 and 9 inclusive.") - -(defvar mime-encode-plaintext-on-send nil - "*Non-NIL if plaintext bodyparts should be encoded in quoted-printable -and labeled with mime-default-charset when a message is sent; NIL -otherwise.") - -(defvar mime-use-highlighting t - "*Flag to use highlighting for MIME headers and content types in -Epoch or XEmacs/Lucid Emacs; if non-NIL, highlighting will be used.") - -(defvar mime-deemphasize-color "grey80" - "*Color for de-highlighting MIME headers in Epoch or XEmacs/Lucid Emacs.") - -(defvar mime-emphasize-color "yellow" - "*Color for highlighting MIME content types in Epoch or XEmacs/Lucid Emacs.") - -(defvar mime-name-included-files t - "*If non-NIL, use name attribute for included files.") - -(defvar mime-use-waiting-messages t - "*If non-NIL, enable waiting messages feature.") - -(defvar mime-primary-boundary "mysteryboxofun" - "*Word used as the primary MIME boundary.") - -(defvar mime-xwd-command "xwd -frame" - "*Command used to do a window dump under the X Window System.") - -(defvar mime-encode-base64-command "mmencode" - "*Command used to encode data in base64 format.") - -(defvar mime-encode-qp-command "mmencode -q" - "*Command used to encode data in quoted-printable format.") - -(defvar mime-babbling-description "talking" - "*Adjective(s) (or gerunds; I never could tell them apart) applying to -audio snippets.") - -(defvar mime-sgi-record-program "/usr/sbin/recordaiff" - "*Full name of SGI audio record program.") - -(defvar mime-sun-record-program "/usr/demo/SOUND/record" - "*Full name of Sun audio record program, patched with the context -diff found at the end of mime-compose.el.") - -;;; ---------------------------- Other variables ----------------------------- - -(defvar mime-compose-hook-was-run nil - "NIL implies we haven't yet run mime-compose-hook.") - -(defvar mime-valid-include-types - '(("image/gif" 1) - ("image/jpeg" 2) - ("application/postscript" 3) - ("application/andrew-inset" 4) - ("application/octet-stream" 5) - ("text/richtext" 6) - ("text/plain" 7) - ("audio/basic" 8) - ("video/mpeg" 9) - ("message/rfc822" 10) - ;; These aren't ``standard'', but are useful. - ("application/x-emacs-lisp" 11) - ("application/x-unix-tar-z" 12) - ("application/x-dvi" 13) - ("image/x-xbm" 14) - ("image/x-xwd" 15) - ("image/x-tiff" 16) - ("audio/x-aiff" 17) - ("text/x-html" 18)) - "A list of valid content types for minibuffer completion.") - -(defvar mime-valid-charsets - '(("US-ASCII" 1) - ("ISO-8859-1" 2) - ("ISO-8859-2" 3) - ("ISO-8859-3" 4) - ("ISO-8859-4" 5) - ("ISO-8859-5" 6) - ("ISO-8859-6" 7) - ("ISO-8859-7" 8) - ("ISO-8859-8" 9) - ("ISO-8859-9" 10)) - "A list of valid charset names for minibuffer completion.") - -(defvar mime-using-silicon-graphics - (or (eq system-type 'silicon-graphics-unix) (eq system-type 'irix)) - "Flag to indicate use of Silicon Graphics platform. If T, Emacs is being -run on a Silicon Graphics workstation; else it is not.") - -(defvar mime-running-lemacs (string-match "XEmacs\\|Lucid" emacs-version) - "Non-nil if running XEmacs/Lucid Emacs.") - -(defvar mime-running-epoch (boundp 'epoch::version) - "Non-nil if running Epoch.") - -(if (and mime-running-epoch mime-use-highlighting) - (progn - (defvar mime-deemphasize-style (make-style)) - (set-style-foreground mime-deemphasize-style mime-deemphasize-color) - (defvar mime-emphasize-style (make-style)) - (set-style-foreground mime-emphasize-style mime-emphasize-color))) - -(if (and mime-running-lemacs mime-use-highlighting) - (progn - (defvar mime-deemphasize-style (make-face 'mime-deemphasize-face)) - (set-face-foreground mime-deemphasize-style mime-deemphasize-color) - (defvar mime-emphasize-style (make-face 'mime-emphasize-face)) - (set-face-foreground mime-emphasize-style mime-emphasize-color))) - -(defvar mime-audio-file "/tmp/.fooblatz" - "Filename to store audio snippets recorded on the fly.") - -(defvar mime-audio-tmp-file "/tmp/.fooblatz.aiff" - "Filename to store audio snippets recorded on the fly.") - -(defconst mime-waiting-message-lines - '("Mail mime-compose bug reports to marca@ncsa.uiuc.edu and pray for help." - "For the daring: ftp.ncsa.uiuc.edu:/outgoing/marca/mime-compose.el" - "Feature requests? Fervent wishes? Unfulfilled desires? Write code!" - "mime-compose.el: the Kitchen Sink(tm) of mail composers." - "Q: How many Elisp hackers does it take to change a light bulb?" - "A: None -- we glow in the dark." - ".gnol oot yaw rof scamE gnisu neeb ev'uoy ,siht daer nac uoy fI" - "Macs? We don' need no steenkin Macs! We got MIME!" - "All hail MIME. All hail MIME. Yay. Yay. Woo. Woo.") - "List of stupid strings to display while waiting for more to do.") - -;;; --------------------------- Utility functions ---------------------------- - -(defun mime-primary-boundary () - "Return the current primary boundary. Note that in the current version -of mime-compose.el, there is no support for secondary boundaries (for -parallel or alternate bodyparts, etc.). In the future, there may be." - mime-primary-boundary) - -(defun mime-hide-region (from to hideflag) - "Hides or shows lines from FROM to TO, according to HIDEFLAG: -If T, region is hidden, else if NIL, region is shown." - (let ((old (if hideflag ?\n ?\^M)) - (new (if hideflag ?\^M ?\n)) - (modp (buffer-modified-p))) - (unwind-protect (progn - (subst-char-in-region from to old new t)) - (set-buffer-modified-p modp)))) - -(defun mime-maybe-hide-region (start end) - "Hide the current region if mime-use-selective-display is T." - (if mime-use-selective-display - (mime-hide-region start end t))) - -(defun mime-add-description (description) - "Add a description to the current MIME message element." - (interactive "sDescription: ") - (save-excursion - (if (re-search-backward (concat "--" (mime-primary-boundary)) - (point-min) t) - (progn - (next-line 2) - (insert "Content-Description: " description "\n"))))) - -(defun mime-display-waiting-messages () - "Display cute messages until input arrives. Shamelessly stolen -from VM, the Kitchen Sink(tm) of mail readers." - (if mime-use-waiting-messages - (progn - (if (sit-for 2) - (let ((lines mime-waiting-message-lines)) - (message - "mime-compose.el !Revision: 1.5 !, by marca@ncsa.uiuc.edu") - (while (and (sit-for 4) lines) - (message (car lines)) - (setq lines (cdr lines))))) - (message "") - (if (not (input-pending-p)) - (progn - (sit-for 2) - ;; TODO: Don't recurse; iterate. - (if (not (input-pending-p)) - (mime-display-waiting-messages))))))) - -;;; ------------------------------ Highlighting ------------------------------ - -(if mime-use-highlighting - (progn - (if mime-running-lemacs - (defun mime-add-zone (start end style) - "Add a XEmacs/Lucid Emacs extent from START to END with STYLE." - (let ((extent (make-extent start end))) - (set-extent-face extent style) - (set-extent-property extent 'mime-compose t)))) - (if mime-running-epoch - (defun mime-add-zone (start end style) - "Add an Epoch zone from START to END with STYLE." - (let ((zone (add-zone start end style))) - (epoch::set-zone-data zone 'mime-compose)))))) - -(defun mime-maybe-highlight-region (start end) - "Maybe highlight a region of text. Region is from START to END." - (if (and (or mime-running-epoch mime-running-lemacs) - mime-use-highlighting) - (progn - (mime-add-zone start end mime-deemphasize-style) - (save-excursion - (goto-char start) - (if (re-search-forward "Content-Type: " end t) - (let ((s (match-end 0))) - (re-search-forward "[;\n]") - (mime-add-zone - s (- (match-end 0) 1) mime-emphasize-style))))))) - -;;; -------------------------- mime-mimify-message --------------------------- - -(defun mime-mimify-message () - "Add MIME headers to a message. Add an initial informational message -for mail readers that don't process MIME messages automatically. Add -an initial area for plaintext. Add a closing boundary at the end of -the message. - -This function is safe to call more than once." - (interactive) - (if (not mime-compose-hook-was-run) - (progn - (setq mime-compose-hook-was-run t) - (run-hooks 'mime-compose-hook))) - (let ((mail-header-separator (if (eq major-mode 'mh-letter-mode) - "\n\n\\|^-+$" - mail-header-separator))) - (or - (save-excursion - (goto-char (point-min)) - (re-search-forward "^Mime-Version: " - (save-excursion - (goto-char (point-min)) - (re-search-forward mail-header-separator) - (point)) - t)) - (let ((mime-virgin-message (save-excursion - (next-line -1) - (looking-at mail-header-separator)))) - (if mime-virgin-message - (insert "\n")) - (save-excursion - (save-excursion - (goto-char (point-min)) - (re-search-forward mail-header-separator) - (beginning-of-line) - (insert "Mime-Version: 1.0\n") - (insert "Content-Description: A MIME message created by mime-compose.el.\n") - (insert "Content-Type: multipart/mixed; boundary=" (mime-primary-boundary) "\n") - (mime-maybe-highlight-region (save-excursion (next-line -3) (point)) - (- (point) 1)) - (next-line 1) - (let ((start (point)) end) - (insert "> THIS IS A MESSAGE IN 'MIME' FORMAT.\n") - (insert - "> If you are reading this, your mail reader may not support MIME.\n") - (insert - "> Some parts of this message will be readable as plain text.\n") - (setq end (point)) - (mime-maybe-hide-region start (- end 1))) - (insert "\n") - (goto-char (point-max)) - (insert "\n") - (insert "\n") - (insert "--" (mime-primary-boundary) "--\n") - (mime-maybe-highlight-region (save-excursion (next-line -1) (point)) - (- (point) 1))) - (save-excursion - (goto-char (point-min)) - (re-search-forward mail-header-separator) - (beginning-of-line) - ;; THIS HAS TO MATCH the number of lines of text included - ;; as a message ``header'' above. - (if mime-use-selective-display - (next-line 3) - (next-line 5)) - (insert "--" (mime-primary-boundary) "\n") - (insert "Content-Type: text/plain\n") - (mime-maybe-highlight-region - (save-excursion (next-line -2) (point)) - (- (point) 1)) - (insert "\n")) - (if mime-virgin-message - (backward-delete-char 1)))))) - (if (interactive-p) - (mime-display-waiting-messages))) - -(defun mime-open-text-bodypart () - "At current point, just open up a new plaintext bodypart." - (interactive) - (mime-mimify-message) - (push-mark) - (let ((start (point)) end) - (insert "--" (mime-primary-boundary) "\n") - (insert "Content-Type: text/plain") - (setq end (point)) - (insert "\n\n") - (mime-maybe-highlight-region start end)) - (mime-display-waiting-messages)) - -;;; ---------------------------- file inclusions ----------------------------- - -(defun mime-include-file (filename content-type binary &optional charset) - "Include a file named by FILENAME and with MIME content type -CONTENT-TYPE. If third argument BINARY is T, then the file is binary; -else it's text. Optional fourth arg CHARSET names character set for -data. Data will be encoded in base64 or quoted-printable format as -appropriate." - (mime-mimify-message) - (push-mark) - (insert "--" (mime-primary-boundary) "\n") - (insert "Content-Type: " content-type) - (if charset - (insert "; charset=" charset)) - (if (and mime-name-included-files (not (string= filename mime-audio-file))) - (insert "; name=\"" (file-name-nondirectory filename) "\"")) - (insert "\n") - (if (not (string= filename mime-audio-file)) - (insert "Content-Description: " filename "\n")) - (if binary - (insert "Content-Transfer-Encoding: base64\n") - (insert "Content-Transfer-Encoding: quoted-printable\n")) - (mime-maybe-highlight-region - (save-excursion (re-search-backward - (concat "--" (mime-primary-boundary))) (point)) - (- (point) 1)) - (insert "\n") - (let ((start (point)) end (seldisp selective-display)) - (next-line 1) - (save-excursion - (next-line -1) - (insert-file filename)) - (setq end (- (point) 1)) - (setq selective-display nil) - (if binary - (shell-command-on-region start end mime-encode-base64-command t) - (shell-command-on-region start end mime-encode-qp-command t)) - (setq selective-display seldisp) - (setq end (point)) - (mime-maybe-hide-region start (- end 1)) - (insert "\n") - (insert "--" (mime-primary-boundary) "\n") - (insert "Content-Type: text/plain\n") - (mime-maybe-highlight-region - (save-excursion (re-search-backward - (concat "--" (mime-primary-boundary))) (point)) - (- (point) 1)) - (insert "\n\n") - (next-line -1))) - -(defun mime-include-binary-file (filename content-type) - "Include a binary file named by FILENAME at point in a MIME message. -CONTENT-TYPE names MIME content type of file. Data will be encoded in -base64 format." - (mime-include-file filename content-type t)) - -(defun mime-include-nonbinary-file (filename content-type &optional charset) - "Include a nonbinary file named by FILENAME at point in a MIME -message. CONTENT-TYPE names MIME content type of file; optional third -arg CHARSET names MIME character set. Data will be encoded in -quoted-printable format." - (mime-include-file filename content-type nil charset)) - -;;; -------------------------- external references --------------------------- - -(defun mime-include-external (site directory name content-type description - access-type) - "Include an external pointer in a MIME message. Args are SITE, -DIRECTORY, NAME, CONTENT-TYPE, DESCRIPTION, and ACCESS-TYPE; these are -all strings." - (mime-mimify-message) - (push-mark) - (insert "--" (mime-primary-boundary) "\n") - (insert "Content-Type: message/external-body;\n") - (insert "\taccess-type=\"" access-type "\";\n") - (insert "\tsite=\"" site "\";\n") - (insert "\tdirectory=\"" directory "\";\n") - (insert "\tname=\"" name "\"\n") - (insert "Content-Description: " description "\n") - (insert "\n") - (insert "Content-Type: " content-type "\n") - (mime-maybe-highlight-region - (save-excursion (re-search-backward - (concat "--" (mime-primary-boundary))) (point)) - (- (point) 1)) - (insert "\n") - (insert "\n") - (insert "--" (mime-primary-boundary) "\n") - (insert "Content-Type: text/plain\n") - (mime-maybe-highlight-region - (save-excursion (re-search-backward - (concat "--" (mime-primary-boundary))) (point)) - (- (point) 1)) - (insert "\n")) - -(defun mime-include-external-anonftp (site directory name description) - "Include an external pointer (anonymous FTP) in a MIME message. Args -are SITE, DIRECTORY, NAME, and DESCRIPTION; these are all strings, and -if interactive, will be prompted for." - (interactive - "sFTP site: \nsRemote directory name: \nsRemote filename: \nsDescription: ") - (let ((content-type - (completing-read "Content type: " mime-valid-include-types - nil nil nil))) - ;; Unadvertised default. - (if (string= content-type "") - (setq content-type "application/octet-stream")) - (mime-include-external site directory name content-type - description "anon-ftp")) - (mime-display-waiting-messages)) - -(defun mime-include-external-ftp (site directory name description) - "Include an external pointer (regular FTP) in a MIME message. Args -are SITE, DIRECTORY, NAME, and DESCRIPTION; these are all strings, and -if interactive, will be prompted for." - (interactive - "sFTP site: \nsRemote directory name: \nsRemote filename: \nsDescription: ") - (let ((content-type - (completing-read "Content type: " mime-valid-include-types - nil nil nil))) - ;; Unadvertised default. - (if (string= content-type "") - (setq content-type "application/octet-stream")) - (mime-include-external site directory name content-type - description "ftp")) - (mime-display-waiting-messages)) - -;;; ------------------------------ window dumps ------------------------------ - -(defun mime-include-xwd-dump () - "Run program named by 'mime-xwd-command' and include the results in -a MIME message." - (interactive) - (mime-mimify-message) - (push-mark) - (insert "--" (mime-primary-boundary) "\n") - (insert "Content-Type: image/x-xwd\n") - (insert "Content-Description: Window dump from " (system-name) "\n") - (insert "Content-Transfer-Encoding: base64\n") - (mime-maybe-highlight-region - (save-excursion (re-search-backward - (concat "--" (mime-primary-boundary))) (point)) - (- (point) 1)) - (insert "\n") - (let ((start (point)) end (seldisp selective-display)) - (next-line 1) - (save-excursion - (next-line -1) - (message "When crosshair cursor appears, click on window...") - (sit-for 0) - (call-process "/bin/sh" nil t nil "-c" mime-xwd-command) - (message "") - (sit-for 0)) - (setq end (point)) - (setq selective-display nil) - (shell-command-on-region start end mime-encode-base64-command t) - (setq selective-display seldisp) - (setq end (point)) - (mime-maybe-hide-region start (- end 1)) - (insert "\n") - (insert "--" (mime-primary-boundary) "\n") - (insert "Content-Type: text/plain\n") - (mime-maybe-highlight-region - (save-excursion (re-search-backward - (concat "--" (mime-primary-boundary))) (point)) - (- (point) 1)) - (insert "\n\n") - (next-line -1)) - (mime-display-waiting-messages)) - -;;; ----------------------------- audio snippets ----------------------------- - -(defun mime-sgi-grab-audio-snippet () - "Grab an audio snippet into file named in 'mime-audio-file'. -This routine works on SGI Indigo's and 4D/35's." - (let (audio-process done-flag) - (setq audio-process - (start-process "snippet" "snippet" - mime-sgi-record-program "-n" "1" "-s" "8" "-r" "8000" - mime-audio-tmp-file)) - ;; Quick hack to make Emacs sit until recording is done. - (setq done-flag - (y-or-n-p "Press y when done recording (n to abort): ")) - (interrupt-process "snippet") - ;; Wait until recordaiff has written data to disk. - (while (eq (process-status "snippet") 'run) - (message "Waiting...") - (sleep-for 1)) - (message "Done waiting.") - ;; Kill off recordaiff and our buffer. - (delete-process "snippet") - (kill-buffer "snippet") - ;; Remove the old mulaw file and do the conversion. - (call-process "/bin/rm" nil nil nil "-f" mime-audio-file) - (if done-flag - (call-process "/usr/sbin/sfconvert" nil nil nil mime-audio-tmp-file - mime-audio-file "-o" "mulaw")) - (call-process "/bin/rm" nil nil nil "-f" mime-audio-tmp-file) - ;; Return done flag. If nil, mime-include-audio-snippet should - ;; clean up. - done-flag)) - -(defun mime-sun-grab-audio-snippet () - "Grab an audio snippet into file named in 'mime-audio-file'. -This is the Sun version. I don't know how well it works. It also -requires a patched version of /usr/demo/SOUND/record.c; see the -context diff at the end of mime-compose.el. - -Courtesy Christopher Davis <ckd@eff.org>." - (let (audio-process done-flag) - (setq audio-process - (start-process "snippet" "snippet" - mime-sun-record-program "-m" mime-audio-file)) - ;; Quick hack to make Emacs sit until recording is done. - (setq done-flag - (y-or-n-p "Press y when done recording (n to abort): ")) - (interrupt-process "snippet") - ;; Wait until the record process is done. - (while (eq (process-status "snippet") 'run) - (message "Waiting...") - (sleep-for 1)) - (message "Done waiting.") - ;; Kill off the record process and our buffer. - (delete-process "snippet") - (kill-buffer "snippet") - ;; Return done flag. If nil, mime-include-audio-snippet should - ;; clean up. - done-flag)) - -(defun mime-include-audio-snippet () - "Record a snippet of audio in a MIME message. This should work on -both Silicon Graphics and Sun platforms. Code contributions for other -platforms are welcome." - (interactive) - (let ((mime-grab-audio-snippet - (if mime-using-silicon-graphics - 'mime-sgi-grab-audio-snippet - 'mime-sun-grab-audio-snippet))) - (if (eq (funcall mime-grab-audio-snippet) t) - (progn - (mime-include-binary-file mime-audio-file "audio/basic") - (save-excursion - (next-line -4) - (mime-add-description - (concat (user-full-name) " " - mime-babbling-description ".")))))) - (mime-display-waiting-messages)) - -;;; ------------------------- Basic include commands ------------------------- - -(defun mime-include-gif (filename) - "Include a GIF file named by FILENAME." - (interactive "fGIF image filename: ") - (mime-include-binary-file filename "image/gif") - (mime-display-waiting-messages)) - -(defun mime-include-jpeg (filename) - "Include a JPEG file named by FILENAME." - (interactive "fJPEG image filename: ") - (mime-include-binary-file filename "image/jpeg") - (mime-display-waiting-messages)) - -(defun mime-include-audio (filename &optional prefix-arg) - "Include an audio file named by FILENAME. Note that to match the -MIME specification for audio/basic, this should be an 8-bit mulaw file. -With prefix arg, use AIFF format (unofficial MIME subtype audio/x-aiff) -instead of audio/basic." - (interactive "fAudio filename: \nP") - (if prefix-arg - (mime-include-binary-file filename "audio/x-aiff") - (mime-include-binary-file filename "audio/basic")) - (mime-display-waiting-messages)) - -(defun mime-include-mpeg (filename) - "Include a MPEG file named by FILENAME." - (interactive "fMPEG animation filename: ") - (mime-include-binary-file filename "video/mpeg") - (mime-display-waiting-messages)) - -(defun mime-include-postscript (filename) - "Include a PostScript file named by FILENAME." - (interactive "fPostScript filename: ") - (mime-include-nonbinary-file filename "application/postscript") - (mime-display-waiting-messages)) - -(defun mime-include-raw-binary (filename) - "Include a raw binary file named by FILENAME." - (interactive "fRaw binary filename: ") - (let ((content-type - (completing-read "Content type (RET for default): " - mime-valid-include-types - nil nil nil))) - (if (string= content-type "") - (setq content-type "application/octet-stream")) - (mime-include-binary-file filename content-type)) - (mime-display-waiting-messages)) - -(defun mime-include-raw-nonbinary (filename &optional prefix-arg) - "Include a raw nonbinary file named by FILENAME. With prefix arg, -prompt for character set." - (interactive "fRaw nonbinary filename: \nP") - (let ((charset - (if prefix-arg - (completing-read "Character set: " mime-valid-charsets - nil nil nil) - mime-default-charset)) - (content-type - (completing-read "Content type (RET for default): " - mime-valid-include-types - nil nil nil))) - (if (string= content-type "") - (setq content-type "text/plain")) - (if (string= charset "") - (setq charset "asdfasdfdfsdafs")) - (mime-include-nonbinary-file filename content-type charset)) - (mime-display-waiting-messages)) - -;;; ---------------------------- Region commands ----------------------------- - -(defun mime-encode-region (start end content-type charset) - "Encode a region specified by START and END. CONTENT-TYPE and -CHARSET name the content type and character set of the data in the -region." - ;; Start by encoding the region in quoted-printable. This will - ;; move end, but not start. - (goto-char end) - (let ((seldisp selective-display)) - (setq selective-display nil) - (shell-command-on-region start end mime-encode-qp-command t) - (setq selective-display seldisp)) - ;; Now pick up the new end. - (setq end (point)) - ;; Pop up to start and insert the header; this will also change - ;; end, but with save-excursion we'll end up at the new end. - (save-excursion - (goto-char start) - (push-mark) - (insert "--" (mime-primary-boundary) "\n") - (insert "Content-Type: " content-type "; charset=" charset "\n") - (insert "Content-Transfer-Encoding: quoted-printable\n") - (mime-maybe-highlight-region - (save-excursion (re-search-backward - (concat "--" (mime-primary-boundary))) (point)) - (- (point) 1)) - (insert "\n")) - ;; Pick up the new end again. - (setq end (point)) - ;; Insert the trailing boundary and the new text/plain header. - (insert "\n") - (insert "--" (mime-primary-boundary) "\n") - (insert "Content-Type: text/plain\n") - (mime-maybe-highlight-region - (save-excursion (re-search-backward - (concat "--" (mime-primary-boundary))) (point)) - (- (point) 1)) - (insert "\n") - ;; Last but not least, add MIME headers if necessary. - (save-excursion - (mime-mimify-message))) - -(defun mime-region-to-richtext (start end &optional prefix-arg) - "Convert the current region to MIME richtext. MIME headers are -added if necessary; a MIME boundary is added at the start of the -region to indicate richtext; the conversion (see below) is done; a new -boundary is added for more text. - -With prefix arg, prompt for character set; else use value of -mime-default-charset. - -Currently no textual conversion is done, other than encoding in -quoted-printable format. Instead, you use directives such as <bold> -and </bold> in the text, as described in the MIME RFC. The -alternative would be to parse tilde sequences as is done in the mailto -program. Let me know if you think the latter would be more -appropriate for mime-compose.el." - (interactive "r\nP") - (let ((charset - (if (not prefix-arg) - mime-default-charset - (completing-read "Character set: " mime-valid-charsets - nil nil nil)))) - ;; Unadvertised default. - (if (string= charset "") - (setq charset mime-default-charset)) - (mime-encode-region start end "text/richtext" - charset)) - (mime-display-waiting-messages)) - -(defun mime-region-to-charset (start end) - "Convert the current region to plaintext in a non-default character -set. You are prompted for a character set, and the text in the region -is encoded in quoted-printable format and identified as being in that -character set." - (interactive "r") - (let ((charset - (completing-read "Character set: " mime-valid-charsets - nil nil nil))) - ;; Unadvertised default. - (if (string= charset "") - (setq charset mime-default-charset)) - (mime-encode-region start end "text/plain" charset)) - (mime-display-waiting-messages)) - -;;; -------------------------------- Keymaps --------------------------------- - -;;; Add functions to MH letter mode. -(if mime-running-mh-e - ;; Running mh-e. - (if (or (not (boundp 'mh-letter-mode-mime-map)) - (not mh-letter-mode-mime-map)) - (progn - (setq mh-letter-mode-mime-map (make-sparse-keymap)) - (define-key mh-letter-mode-map "\C-c\C-m" mh-letter-mode-mime-map) - (define-key mh-letter-mode-mime-map "m" 'mime-mimify-message) - (define-key mh-letter-mode-mime-map "g" 'mime-include-gif) - (define-key mh-letter-mode-mime-map "j" 'mime-include-jpeg) - (define-key mh-letter-mode-mime-map "a" 'mime-include-audio) - (define-key mh-letter-mode-mime-map "v" 'mime-include-mpeg) - (define-key mh-letter-mode-mime-map "p" 'mime-include-postscript) - (define-key mh-letter-mode-mime-map "r" 'mime-include-raw-binary) - (define-key mh-letter-mode-mime-map "n" 'mime-include-raw-nonbinary) - (define-key mh-letter-mode-mime-map "x" 'mime-include-xwd-dump) - (define-key mh-letter-mode-mime-map "e" - 'mime-include-external-anonftp) - (define-key mh-letter-mode-mime-map "f" - 'mime-include-external-ftp) - (define-key mh-letter-mode-mime-map "s" - 'mime-include-audio-snippet) - ;; Functions that operate on regions. - (defvar mime-region-map (make-sparse-keymap)) - (define-key mh-letter-mode-mime-map "\C-r" mime-region-map) - (define-key mime-region-map "r" 'mime-region-to-richtext) - (define-key mime-region-map "i" 'mime-region-to-charset))) - ;; Not running mh-e. - (progn - (define-key mail-mode-map "\C-cm" 'mime-mimify-message) - (define-key mail-mode-map "\C-cg" 'mime-include-gif) - (define-key mail-mode-map "\C-cj" 'mime-include-jpeg) - (define-key mail-mode-map "\C-ca" 'mime-include-audio) - (define-key mail-mode-map "\C-cp" 'mime-include-postscript) - (define-key mail-mode-map "\C-cr" 'mime-include-raw-binary) - (define-key mail-mode-map "\C-cn" 'mime-include-raw-nonbinary) - (define-key mail-mode-map "\C-cx" 'mime-include-xwd-dump) - (define-key mail-mode-map "\C-ce" 'mime-include-external-anonftp) - (define-key mail-mode-map "\C-cf" 'mime-include-external-ftp) - (define-key mail-mode-map "\C-cs" 'mime-include-audio-snippet) - (define-key mail-mode-map "\C-cv" 'mime-include-mpeg) - - ;; Functions that operate on regions. - (defvar mime-region-map (make-sparse-keymap)) - (define-key mail-mode-map "\C-c\C-r" mime-region-map) - (define-key mime-region-map "r" 'mime-region-to-richtext) - (define-key mime-region-map "i" 'mime-region-to-charset))) - -;;; -------------------------------- Menubar --------------------------------- - -(defvar mime-compose-menu - (list - "MIME Inclusions:" - "----" - ["Include GIF File" mime-include-gif t] - ["Include JPEG File" mime-include-jpeg t] - ["Include MPEG File" mime-include-mpeg t] - ["Include Audio File" mime-include-audio t] - ["Include PostScript File" mime-include-postscript t] - ["Include XWD Dump" mime-include-xwd-dump t] - ["Include Audio Snippet" mime-include-audio-snippet t] - ["Include Raw Binary File" mime-include-raw-binary t] - ["Include Raw Nonbinary File" mime-include-raw-nonbinary t] - ["Include External AnonFTP" mime-include-external-anonftp t] - ["Include External FTP" mime-include-external-ftp t] - ) - "Popup menu for MIME Compose.") - -;; Attach menu to mail-mode-menu. -(and mime-running-lemacs - (setq mail-menubar-menu (append mail-menubar-menu '("---") mime-compose-menu)) - (setq mail-popup-menu (append mail-popup-menu '("---") mime-compose-menu))) - -;; Arrange to attach to VM's mail mode menu. -(defun mime-compose-attach-to-mode-menu () - (if (boundp 'vm-menu-mail-menu) - (progn - (setq vm-menu-mail-menu - (nconc vm-menu-mail-menu (list "----") mime-compose-menu)) - (remove-hook 'vm-mail-mode-hook 'mime-compose-attach-to-mode-menu)))) - -(add-hook 'vm-mail-mode-hook 'mime-compose-attach-to-mode-menu) - -;;; ----------------------------- New mail-send ------------------------------ - -;; If we're not running XEmacs, pop in a new mail-send routine. -(if (not mime-running-lemacs) - (defun mail-send () - "Send the message in the current buffer. -If mail-interactive is non-nil, wait for success indication -or error messages, and inform user. -Otherwise any failure is reported in a message back to -the user from the mailer." - (interactive) - (message "Sending...") - (run-hooks 'mail-send-hook) - (funcall send-mail-function) - (set-buffer-modified-p nil) - (delete-auto-save-file-if-necessary) - (message "Sending...done"))) - -;;; --------------------------------- Hooks ---------------------------------- - -;; Author: Daniel LaLiberte (liberte@cs.uiuc.edu). -(defun mime-postpend-unique-hook (hook-var hook-function) - "Postpend HOOK-VAR with HOOK-FUNCTION, if it is not already an element. -hook-var's value may be a single function or a list of functions." - (if (boundp hook-var) - (let ((value (symbol-value hook-var))) - (if (and (listp value) (not (eq (car value) 'lambda))) - (and (not (memq hook-function value)) - (set hook-var (append value (list hook-function)))) - (and (not (eq hook-function value)) - (set hook-var (append value (list hook-function)))))) - (set hook-var (list hook-function)))) - -(defun mime-unfrob-selective-display () - "Turn off selective display throughout this buffer." - (if mime-use-selective-display - (progn - (message "Unfrobbing selective-display...") - (mime-hide-region (point-min) (point-max) nil)))) - -(defun mime-strip-useless-bodyparts () - "Strip useless (empty) bodyparts out of a message." - (save-excursion - (goto-char (point-min)) - (while (re-search-forward - (concat "^--" (mime-primary-boundary) - "\nContent-Type: text.*[\n]*--" (mime-primary-boundary)) - (point-max) t) - (replace-match (concat "--" (mime-primary-boundary)) t t) - ;; Go all the way back up to start over. - (goto-char (point-min))))) - -(defun mime-encode-region-qp (start end) - "Encode a region specified by START and END in quoted-printable -format. Return the new endpoint. Do not use save-excursion." - ;; Start by encoding the region in quoted-printable. This will - ;; move end, but not start. - (goto-char end) - (let ((seldisp selective-display)) - (setq selective-display nil) - (shell-command-on-region start end mime-encode-qp-command t) - (setq selective-display seldisp))) - -(defun mime-encode-plaintext () - "Encode all plaintext bodyparts in the message in quoted-printable -and set the charset to mime-default-charset." - (save-excursion - (goto-char (point-min)) - ;; We're looking for text/plain bodyparts with no extra fields. - (while (re-search-forward - (concat "^--" (mime-primary-boundary) - "\nContent-Type: text/plain\n") (point-max) t) - (let* ((head (match-beginning 0)) - (start (match-end 0)) - ;; Assume there's a closing boundary; go find it. - (end (save-excursion (re-search-forward - (concat "^--" (mime-primary-boundary))) - (- (match-beginning 0) 1)))) - ;; Maybe there's already a Content-Transfer-Encoding. If so, - ;; never mind. - (or (re-search-forward "^Content-Transfer-Encoding: " end t) - (let ((new-end (save-excursion - (mime-encode-region-qp start end)))) - (save-excursion - (goto-char head) - (next-line 1) - (end-of-line) - (let ((s (point))) - (insert "; charset=" mime-default-charset "\n") - (insert "Content-Transfer-Encoding: quoted-printable") - (mime-maybe-highlight-region s (point)))))))))) - -(defun mime-send-hook-function () - "Function to be called from mail-send-hook. Unfrob selective -display if active, strip out empty (useless) bodyparts, and optionally -encode plaintext bodyparts in quoted-printable with a given charset." - (mime-unfrob-selective-display) - (mime-strip-useless-bodyparts) - (and mime-encode-plaintext-on-send - (mime-encode-plaintext))) - -;; Before the message is sent, remove the selective display crap. -(if mime-running-mh-e - (mime-postpend-unique-hook 'mh-before-send-letter-hook - 'mime-send-hook-function) - (mime-postpend-unique-hook 'mail-send-hook 'mime-send-hook-function)) - -(defun mime-setup-hook-function () - (if mime-use-selective-display - (setq selective-display t))) - -;; During mail setup, activate selective-display if necessary. We use -;; mail-mode-hook rather than mail-setup-hook because if a message is -;; being composed and C-x m gets hit again, mail-mode will be -;; reentered, causing selective-display to revert to nil and possibly -;; screwing up the display bigtime unless mail-mode-hook knows what to -;; do. -(if mime-running-mh-e - (mime-postpend-unique-hook 'mh-letter-mode-hook - 'mime-setup-hook-function) - (mime-postpend-unique-hook 'mail-mode-hook 'mime-setup-hook-function)) - -;;; ------------------------- END OF MIME-COMPOSE.EL ------------------------- - -;;; ---------------------- PATCH FOR SUN RECORD PROGRAM ---------------------- - -;;; This patch must be applied to record.c as found in the Sun demo -;;; directories in order to enable on-the-fly audio recording in -;;; mime-compose. - -;; *** record.c.orig Wed Oct 23 13:56:38 1991 -;; --- record.c Sun Dec 6 22:50:06 1992 -;; *************** -;; *** 2,7 **** -;; --- 2,9 ---- -;; static char sccsid[] = "@(#)record.c 1.2 90/01/02 Copyr 1989 Sun Micro"; -;; #endif -;; /* Copyright (c) 1989 by Sun Microsystems, Inc. */ -;; + /* 921206: modifications to not output audio header (ckd@eff.org) */ -;; + /* yes, I know it's ugly code... sorry... */ -;; -;; #include <stdio.h> -;; #include <errno.h> -;; *************** -;; *** 30,36 **** -;; /* Local variables */ -;; char *prog; -;; char prog_desc[] = "Record an audio file"; -;; ! char prog_opts[] = "aft:v:d:i:?"; /* getopt() flags */ -;; -;; char *Stdout = "stdout"; -;; -;; --- 32,38 ---- -;; /* Local variables */ -;; char *prog; -;; char prog_desc[] = "Record an audio file"; -;; ! char prog_opts[] = "aft:v:d:i:?m"; /* getopt() flags */ -;; -;; char *Stdout = "stdout"; -;; -;; *************** -;; *** 69,76 **** -;; usage() -;; { -;; Error(stderr, "%s -- usage:\n\t%s ", prog_desc, prog); -;; ! Error(stderr, "\t[-a] [-v #] [-t #] [-i msg] [-d dev] [file]\n"); -;; Error(stderr, "where:\n\t-a\tAppend to output file\n"); -;; Error(stderr, "\t-f\tIgnore sample rate differences on append\n"); -;; Error(stderr, "\t-v #\tSet record volume (0 - %d)\n", MAX_GAIN); -;; Error(stderr, "\t-t #\tSpecify record time (hh:mm:ss.dd)\n"); -;; --- 71,79 ---- -;; usage() -;; { -;; Error(stderr, "%s -- usage:\n\t%s ", prog_desc, prog); -;; ! Error(stderr, "\t[-a] [-m] [-v #] [-t #] [-i msg] [-d dev] [file]\n"); -;; Error(stderr, "where:\n\t-a\tAppend to output file\n"); -;; + Error(stderr, "\t-m\tDon't add audio header (for MIME)\n"); -;; Error(stderr, "\t-f\tIgnore sample rate differences on append\n"); -;; Error(stderr, "\t-v #\tSet record volume (0 - %d)\n", MAX_GAIN); -;; Error(stderr, "\t-t #\tSpecify record time (hh:mm:ss.dd)\n"); -;; *************** -;; *** 112,117 **** -;; --- 115,121 ---- -;; int cnt; -;; int err; -;; int ofd; -;; + int addheader = 1; -;; double vol; -;; struct stat st; -;; struct sigvec vec; -;; *************** -;; *** 150,155 **** -;; --- 154,162 ---- -;; Info = optarg; /* set information string */ -;; Ilen = strlen(Info); -;; break; -;; + case 'm': -;; + addheader = 0; /* no header (for MIME) */ -;; + break; -;; case '?': -;; usage(); -;; /*NOTREACHED*/ -;; *************** -;; *** 288,293 **** -;; --- 295,301 ---- -;; exit(1); -;; } -;; } else { -;; + if (addheader) { -;; if (audio_write_filehdr(ofd, &Dev_hdr, Info, Ilen) != -;; AUDIO_SUCCESS) { -;; Error(stderr, "%s: error writing header for \n", prog); -;; *************** -;; *** 294,299 **** -;; --- 302,308 ---- -;; perror(Ofile); -;; exit(1); -;; } -;; + } -;; } -;; -;; /* If -v flag, set the record volume now */ - -;;; ------------------------------ END OF PATCH ------------------------------ -
--- a/lisp/packages/netunam.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ -;;; netunam.el --- HP-UX RFA Commands - -;; Copyright (C) 1988 Free Software Foundation, Inc. - -;; Author: Chris Hanson <cph@zurich.ai.mit.edu> -;; Keywords: comm - -;; 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. -;;; #### Chuck -- maybe we should nuke this file. I somehow or -;;; other get the sense that it's extremely obsolete. - -;;; Commentary: - -;; Use the Remote File Access (RFA) facility of HP-UX from Emacs. - -;;; Code: - -(defconst rfa-node-directory "/net/" - "Directory in which RFA network special files are stored. -By HP convention, this is \"/net/\".") - -(defvar rfa-default-node nil - "If not nil, this is the name of the default RFA network special file.") - -(defvar rfa-password-memoize-p t - "If non-nil, remember login user's passwords after they have been entered.") - -(defvar rfa-password-alist '() - "An association from node-name strings to password strings. -Used if `rfa-password-memoize-p' is non-nil.") - -(defvar rfa-password-per-node-p t - "If nil, login user uses same password on all machines. -Has no effect if `rfa-password-memoize-p' is nil.") - -(defun rfa-set-password (password &optional node user) - "Add PASSWORD to the RFA password database. -Optional second arg NODE is a string specifying a particular nodename; - if supplied and not nil, PASSWORD applies to only that node. -Optional third arg USER is a string specifying the (remote) user whose - password this is; if not supplied this defaults to (user-login-name)." - (if (not user) (setq user (user-login-name))) - (let ((node-entry (assoc node rfa-password-alist))) - (if node-entry - (let ((user-entry (assoc user (cdr node-entry)))) - (if user-entry - (rplacd user-entry password) - (rplacd node-entry - (nconc (cdr node-entry) - (list (cons user password)))))) - (setq rfa-password-alist - (nconc rfa-password-alist - (list (list node (cons user password)))))))) - -(defun rfa-open (node &optional user password) - "Open a network connection to a server using remote file access. -First argument NODE is the network node for the remote machine. -Second optional argument USER is the user name to use on that machine. - If called interactively, the user name is prompted for. -Third optional argument PASSWORD is the password string for that user. - If not given, this is filled in from the value of -`rfa-password-alist', or prompted for. A prefix argument of - will -cause the password to be prompted for even if previously memoized." - (interactive - (list (read-file-name "rfa-open: " rfa-node-directory rfa-default-node t) - (read-string "user-name: " (user-login-name)))) - (let ((node - (and (or rfa-password-per-node-p - (not (equal user (user-login-name)))) - node))) - (if (not password) - (setq password - (let ((password - (cdr (assoc user (cdr (assoc node rfa-password-alist)))))) - (or (and (not current-prefix-arg) password) - (rfa-password-read - (format "password for user %s%s: " - user - (if node (format " on node \"%s\"" node) "")) - password)))))) - (let ((result - (sysnetunam (expand-file-name node rfa-node-directory) - (concat user ":" password)))) - (if (interactive-p) - (if result - (message "Opened network connection to %s as %s" node user) - (error "Unable to open network connection"))) - (if (and rfa-password-memoize-p result) - (rfa-set-password password node user)) - result)) - -(defun rfa-close (node) - "Close a network connection to a server using remote file access. -NODE is the network node for the remote machine." - (interactive - (list (read-file-name "rfa-close: " rfa-node-directory rfa-default-node t))) - (let ((result (sysnetunam (expand-file-name node rfa-node-directory) ""))) - (cond ((not (interactive-p)) result) - ((not result) (error "Unable to close network connection")) - (t (message "Closed network connection to %s" node))))) - -(defun rfa-password-read (prompt default) - (let ((rfa-password-accumulator (or default ""))) - (read-from-minibuffer prompt - (and default - (let ((copy (concat default)) - (index 0) - (length (length default))) - (while (< index length) - (aset copy index ?.) - (setq index (1+ index))) - copy)) - rfa-password-map) - rfa-password-accumulator)) - -(defvar rfa-password-map nil) -(if (not rfa-password-map) - (let ((char ? )) - (setq rfa-password-map (make-keymap)) - (while (< char 127) - (define-key rfa-password-map (char-to-string char) - 'rfa-password-self-insert) - (setq char (1+ char))) - (define-key rfa-password-map "\C-g" - 'abort-recursive-edit) - (define-key rfa-password-map "\177" - 'rfa-password-rubout) - (define-key rfa-password-map "\n" - 'exit-minibuffer) - (define-key rfa-password-map "\r" - 'exit-minibuffer))) - -(defvar rfa-password-accumulator nil) - -(defun rfa-password-self-insert () - (interactive) - (setq rfa-password-accumulator - (concat rfa-password-accumulator - (char-to-string last-command-char))) - (insert ?.)) - -(defun rfa-password-rubout () - (interactive) - (delete-char -1) - (setq rfa-password-accumulator - (substring rfa-password-accumulator 0 -1))) - -;;; netunam.el ends here
--- a/lisp/packages/sccs.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,913 +0,0 @@ -;; sccs.el -- easy-to-use SCCS control from within Emacs -;; @(#)sccs.el 3.5 - -;; This file is part of GNU Emacs. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY. No author or distributor -;; accepts responsibility to anyone for the consequences of using it -;; or for whether it serves any particular purpose or works at all, -;; unless he says so in writing. Refer to the GNU Emacs General Public -;; License for full details. - -;; Everyone is granted permission to copy, modify and redistribute -;; GNU Emacs, but only under the conditions described in the -;; GNU Emacs General Public License. A copy of this license is -;; supposed to have been given to you along with GNU Emacs so you -;; can know your rights and responsibilities. It should be in a -;; file named COPYING. Among other things, the copyright notice -;; and this notice must be preserved on all copies. -;;; -;;; Synched up with: Not in FSF. -;;; #### Chuck -- I say remove this piece of crap! Use VC instead. - -;;; Author: Eric S. Raymond (eric@snark.thyrsus.com). -;;; -;;; It is distantly derived from an rcs mode written by Ed Simpson -;;; ({decvax, seismo}!mcnc!duke!dukecdu!evs) in years gone by -;;; and revised at MIT's Project Athena. -;;; -;;; Modified: Made to work for Lucid Emacs by persons who don't know SCCS. -;;; Modified: Ben Wing (Ben.Wing@eng.sun.com) -- fixed up and redid menus -;;; - -;; User options - -(defvar sccs-bin-directory nil - "*Directory that holds the SCCS executables. -Initialized automatically the first time you execute an SCCS command, -if not already set.") - -(defvar sccs-max-log-size 510 - "*Maximum allowable size of an SCCS log message.") -(defvar sccs-diff-command '("diff" "-c") - "*The command/flags list to be used in constructing SCCS diff commands.") -(defvar sccs-headers-wanted '("\%\W\%") - "*SCCS header keywords to be inserted when sccs-insert-header is executed.") -(defvar sccs-insert-static t - "*Insert a static character string when inserting SCCS headers in C mode.") -(defvar sccs-mode-expert nil - "*Treat user as expert; suppress yes-no prompts on some things.") - -;; Vars the user doesn't need to know about. - -(defvar sccs-log-entry-mode nil) -(defvar sccs-current-major-version nil) - -;; Some helper functions - -(defun sccs-name (file &optional letter) - "Return the sccs-file name corresponding to a given file." - (format "%sSCCS/%s.%s" - (concat (file-name-directory (expand-file-name file))) - (or letter "s") - (concat (file-name-nondirectory (expand-file-name file))))) - -(defun sccs-lock-info (file index) - "Return the nth token in a file's SCCS-lock information." - (let - ((pfile (sccs-name file "p"))) - (and (file-exists-p pfile) - (save-excursion - (find-file pfile) - (auto-save-mode nil) - (goto-char (point-min)) - (replace-string " " "\n") - (goto-char (point-min)) - (forward-line index) - (prog1 - (buffer-substring (point) (progn (end-of-line) (point))) - (set-buffer-modified-p nil) - (kill-buffer (current-buffer))) - ) - ) - ) - ) - -(defun sccs-locking-user (file) - "Return the name of the person currently holding a lock on FILE. -Return nil if there is no such person." - (sccs-lock-info file 2) - ) - -(defun sccs-locked-revision (file) - "Return the revision number currently locked for FILE, nil if none such." - (sccs-lock-info file 1) - ) - -(defmacro error-occurred (&rest body) - (list 'condition-case nil (cons 'progn (append body '(nil))) '(error t))) - -;; There has *got* to be a better way to do this... -(defmacro chmod (perms file) - (list 'call-process "chmod" nil nil nil perms file)) - -(defun sccs-save-vars (sid) - (save-excursion - (find-file "SCCS/emacs-vars.el") - (erase-buffer) - (insert "(setq sccs-current-major-version \"" sid "\")") - (basic-save-buffer) - ) - ) - -(defun sccs-load-vars () - (if (error-occurred (load-file "SCCS/emacs-vars.el")) - (setq sccs-current-major-version "1")) -) - -(defun sccs-init-bin-directory () - (setq sccs-bin-directory - (cond ((file-executable-p "/usr/sccs/unget") "/usr/sccs") - ((file-executable-p "/usr/bin/unget") "/usr/bin") - ((file-directory-p "/usr/sccs") "/usr/sccs") - ((file-directory-p "/usr/bin/sccs") "/usr/bin/sccs") - (t "/usr/bin")))) - -;; The following functions do most of the real work - -(defun sccs-get-version (file sid) - "For the given FILE, retrieve a copy of the version with given SID. -The text is retrieved into a tempfile. Return the tempfile name, or nil -if no such version exists." - (let (oldversion vbuf) - (setq oldversion (sccs-name file (or sid "new"))) - (setq vbuf (create-file-buffer oldversion)) - (prog1 - (if (not (error-occurred - (sccs-do-command vbuf "get" file - (and sid (concat "-r" sid)) - "-p" "-s"))) - (save-excursion - (set-buffer vbuf) - (write-region (point-min) (point-max) oldversion t 0) - oldversion) - ) - (kill-buffer vbuf) - ) - ) - ) - -(defun sccs-mode-line (file) - "Set the mode line for an SCCS buffer. -FILE is the file being visited to put in the modeline." - (setq mode-line-process - (if (file-exists-p (sccs-name file "p")) - (format " <SCCS: %s>" (sccs-locked-revision file)) - "")) - - ; force update of frame - (save-excursion (set-buffer (other-buffer))) - (sit-for 0) - ) - -(defun sccs-do-command (buffer command file &rest flags) - " Execute an SCCS command, notifying the user and checking for errors." - (setq file (expand-file-name file)) - (message "Running %s on %s..." command file) - (or sccs-bin-directory (sccs-init-bin-directory)) - (let ((status - (save-window-excursion - (set-buffer (get-buffer-create buffer)) - (erase-buffer) - (while (and flags (not (car flags))) - (setq flags (cdr flags))) - (setq flags (append flags (and file (list (sccs-name file))))) - (let ((default-directory (file-name-directory (or file "./"))) - (exec-path (cons sccs-bin-directory exec-path))) - (apply 'call-process command nil t nil flags) - ) - (goto-char (point-max)) - (previous-line 1) - (if (looking-at "ERROR") - (progn - (previous-line 1) - (print (cons command flags)) - (next-line 1) - nil) - t)))) - (if status - (message "Running %s...OK" command) - (pop-to-buffer buffer) - (error "Running %s...FAILED" command))) - (if file (sccs-mode-line file))) - -(defun sccs-shell-command (command) - "Like shell-command except that the *Shell Command Output*buffer -is created even if the command does not output anything" - (shell-command command) - (get-buffer-create "*Shell Command Output*")) - -(defun sccs-tree-walk (func &rest optargs) - "Apply FUNC to each SCCS file under the default directory. -If present, OPTARGS are also passed." - (sccs-shell-command (concat "/bin/ls -1 " default-directory "SCCS/s.*")) - (set-buffer "*Shell Command Output*") - (goto-char (point-min)) - (replace-string "SCCS/s." "") - (goto-char (point-min)) - (if (eobp) - (error "No SCCS files under %s" default-directory)) - (while (not (eobp)) - (let ((file (buffer-substring (point) (progn (end-of-line) (point))))) - (apply func file optargs) - ) - (forward-line 1) - ) - ) - -(defun sccs-init () - (or (current-local-map) (use-local-map (make-sparse-keymap))) - (condition-case nil - ;; If C-c s is already defined by another mode, then we - ;; will get an error. In that case, just don't do anything. - (progn - (define-key (current-local-map) "\C-cs?" 'describe-mode) - (define-key (current-local-map) "\C-csn" 'sccs) - (define-key (current-local-map) "\C-csm" 'sccs-register-file) - (define-key (current-local-map) "\C-csh" 'sccs-insert-headers) - (define-key (current-local-map) "\C-csd" 'sccs-revert-diff) - (define-key (current-local-map) "\C-csp" 'sccs-prs) - (define-key (current-local-map) "\C-csr" 'sccs-revert-buffer) - (define-key (current-local-map) "\C-cs\C-d" 'sccs-version-diff) - (define-key (current-local-map) "\C-cs\C-p" 'sccs-pending) - (define-key (current-local-map) "\C-cs\C-r" 'sccs-registered) - ) - (error nil))) - -;; Here's the major entry point - -(defun sccs (verbose) - "*Do the next logical SCCS operation on the file in the current buffer. -You must have an SCCS subdirectory in the same directory as the file being -operated on. - If the file is not already registered with SCCS, this does an admin -i -followed by a get -e. - If the file is registered and not locked by anyone, this does a get -e. - If the file is registered and locked by the calling user, this pops up a -buffer for creation of a log message, then does a delta -n on the file. -A read-only copy of the changed file is left in place afterwards. - If the file is registered and locked by someone else, an error message is -returned indicating who has locked it." - (interactive "P") - (sccs-init) - (if (buffer-file-name) - (let - (do-update revision owner - (file (buffer-file-name)) - (sccs-file (sccs-name (buffer-file-name))) - (sccs-log-buf (get-buffer-create "*SCCS-Log*")) - (err-msg nil)) - - ;; if there is no SCCS file corresponding, create one - (if (not (file-exists-p sccs-file)) - (progn - (sccs-load-vars) - (sccs-admin - file - (cond - (verbose (read-string "Initial SID: ")) - ((error-occurred (load-file "SCCS/emacs-vars.el")) "1") - (t sccs-current-major-version)) - ) - ) - ) - - (cond - - ;; if there is no lock on the file, assert one and get it - ((not (file-exists-p (sccs-name file "p"))) - (progn - (sccs-get file t) - (revert-buffer nil t) - (sccs-mode-line file) - )) - - ;; a checked-out version exists, but the user may not own the lock - ((not (string-equal - (setq owner (sccs-locking-user file)) (user-login-name))) - (error "Sorry, %s has that file checked out" owner)) - - ;; OK, user owns the lock on the file - (t (progn - - ;; if so, give luser a chance to save before delta-ing. - (if (and (buffer-modified-p) - (or - sccs-mode-expert - (y-or-n-p (format "%s has been modified. Write it out? " - (buffer-name))))) - (save-buffer)) - - (setq revision (sccs-locked-revision file)) - - ;; user may want to set nonstandard parameters - (if verbose - (if (or sccs-mode-expert (y-or-n-p - (format "SID: %s Change revision level? " revision))) - (setq revision (read-string "New revision level: ")))) - - ;; OK, let's do the delta - (if - ;; this excursion returns t if the new version was saved OK - (save-window-excursion - (pop-to-buffer (get-buffer-create "*SCCS*")) - (erase-buffer) - (set-buffer-modified-p nil) - (sccs-mode) - (message - "Enter log message. Type C-c C-c when done, C-c ? for help.") - (prog1 - (and (not (error-occurred (recursive-edit))) - (not (error-occurred (sccs-delta file revision)))) - (setq buffer-file-name nil) - (bury-buffer "*SCCS*"))) - - ;; if the save went OK do some post-checking - (if (buffer-modified-p) - (error - "Delta-ed version of file does not match buffer!") - (progn - ;; sccs-delta already turned off write-privileges on the - ;; file, let's not re-fetch it unless there's something - ;; in it that get would expand - ;; - ;; fooey on this. You always need to refetch the - ;; file; otherwise weirdness will ensue when you're - ;; trying to do a make. --bpw - ; (if (sccs-check-headers) - (sccs-get file nil) - (revert-buffer nil t) - (sccs-mode-line file) - (run-hooks 'sccs-delta-ok) - ) - )))))) - (error "There is no file associated with buffer %s" (buffer-name)))) - -(defun sccs-insert-last-log () - "*Insert the log message of the last SCCS check in at point." - (interactive) - (insert-buffer sccs-log-buf)) - -;;; These functions help the sccs entry point - -(defun sccs-get (file writeable) - "Retrieve a copy of the latest delta of the given file." - (sccs-do-command "*SCCS*" "get" file (if writeable "-e"))) - -(defun sccs-admin (file sid) - "Checks a file into sccs. -FILE is the unmodified name of the file. SID should be the base-level sid to -check it in under." - ; give a change to save the file if it's modified - (if (and (buffer-modified-p) - (y-or-n-p (format "%s has been modified. Write it out? " - (buffer-name)))) - (save-buffer)) - (sccs-do-command "*SCCS*" "admin" file - (concat "-i" file) (concat "-r" sid)) - (chmod "-w" file) - (if (sccs-check-headers) - (sccs-get file nil)) ;; expand SCCS headers - (revert-buffer nil t) - (sccs-mode-line file) -) - -(defun sccs-delta (file &optional rev comment) - "Delta the file specified by FILE. -The optional argument REV may be a string specifying the new revision level -\(if nil increment the current level). The file is retained with write -permissions zeroed. COMMENT is a comment string; if omitted, the contents of -the current buffer up to point becomes the comment for this delta." - (if (not comment) - (progn - (goto-char (point-max)) - (if (not (bolp)) (newline)) - (newline) - (setq comment (buffer-substring (point-min) (1- (point))))) - ) - (sccs-do-command "*SCCS*" "delta" file "-n" - (if rev (format "-r%s" rev)) - (format "-y%s" comment)) - (chmod "-w" file)) - -(defun sccs-delta-abort () - "Abort an SCCS delta command." - (interactive) - (if (or sccs-mode-expert (y-or-n-p "Abort the delta? ")) - (progn - (delete-window) - (error "Delta aborted"))) - ) - -(defun sccs-log-exit () - "Leave the recursive edit of an SCCS log message." - (interactive) - (if (< (buffer-size) sccs-max-log-size) - (progn - (copy-to-buffer sccs-log-buf (point-min) (point-max)) - (exit-recursive-edit) - (delete-window)) - (progn - (goto-char sccs-max-log-size) - (error - "Log must be less than %d characters. Point is now at char %d." - sccs-max-log-size sccs-max-log-size))) -) - -;; Additional entry points for examining version histories - -(defun sccs-revert-diff (&rest flags) - "*Compare the version being edited with the last checked-in revision. -Or, if given a prefix argument, with another specified revision." - (interactive) - (let (old file) - (if - (setq old (sccs-get-version (buffer-file-name) - (and - current-prefix-arg - (read-string "Revision to compare against: ")) - )) - (progn - (if (and (buffer-modified-p) - (or - sccs-mode-expert - (y-or-n-p (format "%s has been modified. Write it out? " - (buffer-name))))) - (save-buffer)) - - (setq file (buffer-file-name)) - (set-buffer (get-buffer-create "*SCCS*")) - (erase-buffer) - (apply 'call-process (car sccs-diff-command) nil t nil - (append (cdr sccs-diff-command) flags (list old) (list file))) - (set-buffer-modified-p nil) - (goto-char (point-min)) - (delete-file old) - (if (equal (point-min) (point-max)) - (message "No changes to %s since last get." file) - (pop-to-buffer "*SCCS*") - ) - ) - ) - ) - ) - -(defun sccs-prs () - "*List the SCCS log of the current buffer in an emacs window." - (interactive) - (if (and buffer-file-name (file-exists-p (sccs-name buffer-file-name "s"))) - (progn - (sccs-do-command "*SCCS*" "prs" buffer-file-name) - (pop-to-buffer (get-buffer-create "*SCCS*")) - ) - (error "There is no SCCS file associated with this buffer") - ) - ) - -(defun sccs-version-diff (file rel1 rel2) - "*For FILE, report diffs between two stored deltas REL1 and REL2 of it." - (interactive "fFile: \nsOlder version: \nsNewer version: ") - (if (string-equal rel1 "") (setq rel1 nil)) - (if (string-equal rel2 "") (setq rel2 nil)) - (set-buffer (get-buffer-create "*SCCS*")) - (erase-buffer) - (sccs-vdiff file rel1 rel2) - (set-buffer-modified-p nil) - (goto-char (point-min)) - (if (equal (point-min) (point-max)) - (message "No changes to %s between %s and %s." file rel1 rel2) - (pop-to-buffer "*SCCS*") - ) - ) - -(defun sccs-vdiff (file rel1 rel2 &optional flags) - "Compare two deltas into the current buffer." - (let (vers1 vers2) - (and - (setq vers1 (sccs-get-version file rel1)) - (setq vers2 (if rel2 (sccs-get-version file rel2) file)) -; (prog1 -; (save-excursion -; (not (error-occurred -; (call-process "prs" nil t t -; (sccs-name file)))) -; ) -; ) - (unwind-protect - (apply 'call-process (car sccs-diff-command) nil t t - (append (cdr sccs-diff-command) flags (list vers1) (list vers2))) - (condition-case () (delete-file vers1) (error nil)) - (if rel2 - (condition-case () (delete-file vers2) (error nil))) - ) - ) - ) - ) - -;; SCCS header insertion code - -(defun sccs-insert-headers () - "*Insert headers for use with the Source Code Control System. -Headers desired are inserted at the start of the buffer, and are pulled from -the variable sccs-headers-wanted" - (interactive) - (save-excursion - (save-restriction - (widen) - (if (or (not (sccs-check-headers)) - (y-or-n-p "SCCS headers already exist. Insert another set?")) - (progn - (goto-char (point-min)) - (run-hooks 'sccs-insert-headers-hook) - (cond ((eq major-mode 'c-mode) (sccs-insert-c-header)) - ((eq major-mode 'lisp-mode) (sccs-insert-lisp-header)) - ((eq major-mode 'emacs-lisp-mode) (sccs-insert-lisp-header)) - ((eq major-mode 'scheme-mode) (sccs-insert-lisp-header)) - ((eq major-mode 'nroff-mode) (sccs-insert-nroff-header)) - ((eq major-mode 'plain-tex-mode) (sccs-insert-tex-header)) - ((eq major-mode 'texinfo-mode) (sccs-insert-texinfo-header)) - (t (sccs-insert-generic-header)))))))) - -(defun sccs-insert-c-header () - (let (st en) - (insert "/*\n") - (mapcar '(lambda (s) - (insert " *\t" s "\n")) - sccs-headers-wanted) - (insert " */\n\n") - (if (and sccs-insert-static - (not (string-match "\\.h$" (buffer-file-name)))) - (progn - (insert "#ifndef lint\n" - "static char *sccsid") -;; (setq st (point)) -;; (insert (file-name-nondirectory (buffer-file-name))) -;; (setq en (point)) -;; (subst-char-in-region st en ?. ?_) - (insert " = \"\%\W\%\";\n" - "#endif /* lint */\n\n"))) - (run-hooks 'sccs-insert-c-header-hook))) - -(defun sccs-insert-lisp-header () - (mapcar '(lambda (s) - (insert ";;;\t" s "\n")) - sccs-headers-wanted) - (insert "\n") - (run-hooks 'sccs-insert-lisp-header-hook)) - -(defun sccs-insert-nroff-header () - (mapcar '(lambda (s) - (insert ".\\\"\t" s "\n")) - sccs-headers-wanted) - (insert "\n") - (run-hooks 'sccs-insert-nroff-header-hook)) - -(defun sccs-insert-tex-header () - (mapcar '(lambda (s) - (insert "%%\t" s "\n")) - sccs-headers-wanted) - (insert "\n") - (run-hooks 'sccs-insert-tex-header-hook)) - -(defun sccs-insert-texinfo-header () - (mapcar '(lambda (s) - (insert "@comment\t" s "\n")) - sccs-headers-wanted) - (insert "\n") - (run-hooks 'sccs-insert-texinfo-header-hook)) - -(defun sccs-insert-generic-header () - (let* ((comment-start-sccs (or comment-start "#")) - (comment-end-sccs (or comment-end "")) - (dont-insert-nl-p (string-match "\n" comment-end-sccs))) - (mapcar '(lambda (s) - (insert comment-start-sccs "\t" s "" - comment-end-sccs (if dont-insert-nl-p "" "\n"))) - sccs-headers-wanted) - (insert comment-start-sccs comment-end-sccs (if dont-insert-nl-p "" "\n")))) - -(defun sccs-check-headers () - "Check if the current file has any SCCS headers in it." - (interactive) - (save-excursion - (goto-char (point-min)) - (re-search-forward "%[MIRLBSDHTEGUYFPQCZWA]%" (point-max) t))) - -;; Status-checking functions - -(defun sccs-status (prefix legend) - "List all files underneath the current directory matching a prefix type." - (sccs-shell-command - (concat "/bin/ls -1 SCCS/" prefix ".*")) - (if - (save-excursion - (set-buffer "*Shell Command Output*") - (if (= (point-max) (point-min)) - (not (message - "No files are currently %s under %s" - legend default-directory)) - (progn - (goto-char (point-min)) - (insert - "The following files are currently " legend - " under " default-directory ":\n") - (replace-string (format "SCCS/%s." prefix) "") - ) - ) - ) - (pop-to-buffer "*Shell Command Output*") - ) - ) - -(defun sccs-pending () - "*List all files currently SCCS locked." - (interactive) - (sccs-status "p" "locked")) - -(defun sccs-registered () - "*List all files currently SCCS registered." - (interactive) - (sccs-status "s" "registered")) - -(defun sccs-register-file (override) - "*Register the file visited by the current buffer into SCCS." - (interactive "P") - (if (file-exists-p (sccs-name (buffer-file-name))) - (error "This file is already registered into SCCS.") - (progn - (if (and (buffer-modified-p) - (or - sccs-mode-expert - (y-or-n-p (format "%s has been modified. Write it out? " - (buffer-name))))) - (save-buffer)) - (sccs-load-vars) - (sccs-admin - (buffer-file-name) - (cond - (override (read-string "Initial SID: ")) - ((error-occurred (load-file "SCCS/emacs-vars.el")) "1") - (t sccs-current-major-version)) - ) - ) - ) - ) - -;; Major functions for release-tracking and generation. - -(defun sccs-release-diff (rel1 rel2) - "*Diff all files below default-directory between versions REL1 and REL2. -The report goes to a shell output buffer which is popped to. If REL2 is -omitted or nil, the comparison is done against the most recent version." - (interactive "sOlder version: \nsNewer version: ") - (if (string-equal rel1 "") (setq rel1 nil)) - (if (string-equal rel2 "") (setq rel2 nil)) - (sccs-shell-command (concat - "/bin/ls -1 " default-directory "SCCS/s.*" - )) - (set-buffer "*Shell Command Output*") - (goto-char (point-min)) - (replace-string "SCCS/s." "") - (goto-char (point-min)) - (if (eobp) - (error "No SCCS files under %s" default-directory)) - (let - ((sccsbuf (get-buffer-create "*SCCS*"))) - (save-excursion - (set-buffer sccsbuf) - (erase-buffer) - (insert (format "Diffs from %s to %s.\n\n" - (or rel1 "current") (or rel2 "current")))) - (while (not (eobp)) - (let ((file (buffer-substring (point) (progn (end-of-line) (point))))) - (save-excursion - (set-buffer sccsbuf) - (set-buffer-modified-p nil) - - (sccs-vdiff file rel1 rel2) - (if (buffer-modified-p) - (insert "\n")) - ) - (forward-line 1) - ) - ) - (kill-buffer "*Shell Command Output*") - (pop-to-buffer sccsbuf) - (insert "\nEnd of diffs.\n") - (goto-char (point-min)) - (replace-string (format "/SCCS/%s." rel1) "/") - (goto-char (point-min)) - (replace-string (format "/SCCS/%s." rel2) "/new/") - (goto-char (point-min)) - (replace-string "/SCCS/new." "/new/") - (goto-char (point-min)) - (replace-regexp (concat "^*** " default-directory) "*** ") - (goto-char (point-min)) - (replace-regexp (concat "^--- " default-directory) "--- ") - (goto-char (point-min)) - (set-buffer-modified-p nil) - ) - ) - -(defun sccs-dummy-delta (file sid) - "Make a dummy delta to the given FILE with the given SID." - (interactive "sFile: \nsRelease ID: ") - (if (not (sccs-locked-revision file)) - (sccs-get file t)) - ;; Grottiness alert -- to get around SCCS's obsessive second-guessing we - ;; have to mung the p-file - (save-excursion - (let ((pfile (sccs-name file "p"))) - (chmod "u+w" pfile) - (find-file pfile) - (auto-save-mode nil) - (replace-regexp "^\\([0-9.]+\\) \\([0-9.]+\\)" (concat "\\1 " sid) t) - (write-region (point-min) (point-max) pfile t 0) - (chmod "u-w" pfile) - (set-buffer-modified-p nil) - (kill-buffer (current-buffer)) - ) - ) - (sccs-delta file sid (concat "Release " sid)) - (sccs-get file nil) - (sccs-save-vars sid) - ) - -(defun sccs-delta-release (sid) - "*Delta everything underneath the current directory to mark it as a release." - (interactive "sRelease: ") - (sccs-tree-walk 'sccs-dummy-delta sid) - (kill-buffer "*SCCS*") - ) - -;; Miscellaneous other entry points - -(defun sccs-revert-buffer () - "*Revert the current buffer's file back to the last saved version." - (interactive) - (let ((file (buffer-file-name))) - (if (y-or-n-p (format "Revert file %s to last SCCS revision?" file)) - (progn - (delete-file file) - (delete-file (sccs-name file "p")) - (rename-file (sccs-get-version file nil) file) - (chmod "-w" file) - (revert-buffer nil t) - (sccs-mode-line file))))) - -(defun sccs-rename-file (old new) - "*Rename a file, taking its SCCS files with it." - (interactive "fOld name: \nFNew name: ") - (let ((owner (sccs-locking-user old))) - (if (and owner (not (string-equal owner (user-login-name)))) - (error "Sorry, %s has that file checked out" owner)) - ) - (rename-file old new) - (if (file-exists-p (sccs-name old "p")) - (rename-file (sccs-name old "p") (sccs-name new "p"))) - (if (file-exists-p (sccs-name old "s")) - (rename-file (sccs-name old "s") (sccs-name new "s"))) - ) - -;; Set up key bindings for SCCS use, e.g. while editing log messages - -(defun sccs-mode () - "Minor mode for driving the SCCS tools. - -These bindings are added to the global keymap when you enter this mode: -\\[sccs] perform next logical SCCS operation (`sccs') on current file -\\[sccs-register-file] register current file into SCCS -\\[sccs-insert-headers] insert SCCS headers in current file -\\[sccs-prs] display change history of current file -\\[sccs-revert-buffer] revert buffer to last saved version -\\[sccs-revert-diff] show difference between buffer and last saved delta -\\[sccs-pending] show all files currently locked by any user in or below . -\\[sccs-registered] show all files registered into SCCS in or below . -\\[sccs-version-diff] show diffs between saved versions for all files in or below . - -When you generate headers into a buffer using C-c h, the value of -sccs-insert-headers-hook is called before insertion. If the file is -recognized a C or Lisp source, sccs-insert-c-header-hook or -sccs-insert-lisp-header-hook is called after insertion respectively. - -While you are entering a change log message for a delta, the following -additional bindings will be in effect. - -\\[sccs-log-exit] proceed with check in, ending log message entry -\\[sccs-insert-last-log] insert log message from last check-in -\\[sccs-delta-abort] abort this delta check-in - -Entry to the change-log submode calls the value of text-mode-hook, then -the value sccs-mode-hook. - -Global user options: - sccs-mode-expert suppresses some conformation prompts, - notably for delta aborts and file saves. - sccs-max-log-size specifies the maximum allowable size - of a log message plus one. - sccs-diff-command A list consisting of the command and flags - to be used for generating context diffs. - sccs-headers-wanted which %-keywords to insert when adding - SCCS headers with C-c h - sccs-insert-static if non-nil, SCCS keywords inserted in C files - get stuffed in a static string area so that - what(1) can see them in the compiled object - code. -" - (interactive) - (set-syntax-table text-mode-syntax-table) - (use-local-map sccs-log-entry-mode) - (setq local-abbrev-table text-mode-abbrev-table) - (setq major-mode 'sccs-mode) - (setq mode-name "SCCS Change Log Entry") - (run-hooks 'text-mode-hook 'sccs-mode-hook) -) - -;; Initialization code, to be done just once at load-time -(if sccs-log-entry-mode - nil - (setq sccs-log-entry-mode (make-sparse-keymap)) - (define-key sccs-log-entry-mode "\C-ci" 'sccs-insert-last-log) - (define-key sccs-log-entry-mode "\C-c\C-i" 'sccs-insert-last-log) - (define-key sccs-log-entry-mode "\C-ca" 'sccs-delta-abort) - (define-key sccs-log-entry-mode "\C-c\C-a" 'sccs-delta-abort) - (define-key sccs-log-entry-mode "\C-c\C-c" 'sccs-log-exit) - (define-key sccs-log-entry-mode "\C-x\C-s" 'sccs-log-exit) - ) - - -;;; Lucid Emacs support - -(defconst sccs-menu - '("SCCS Commands" - - ["SCCS" sccs t nil] ; C-c s n - ["Insert Headers" sccs-insert-headers t] ; C-c s h - ["Archive History:" sccs-prs t nil] ; C-c s p - ["Diffs from Archive:" sccs-revert-diff t nil] ; C-c s d - ["Revert to Archive:" sccs-revert-buffer t nil] ; C-c s r - "----" - ["Check In..." sccs-dummy-delta t] - ["Create Archive..." sccs-register-file t] ; C-c s h - ["Rename Archive..." sccs-rename-file t] - "----" - ["List Checked-Out Files" sccs-pending t] ; C-c s C-p - ["List Registered Files" sccs-registered t] ; C-c s C-r - ["Diff Directory" sccs-release-diff t] - ["Delta Directory" sccs-delta-release t] - )) - -(progn - (delete-menu-item '("SCCS")) - (add-menu '() "SCCS" (cdr sccs-menu))) - -(defun sccs-sensitize-menu () - (let* ((rest (cdr (car (find-menu-item current-menubar '("SCCS"))))) - (case-fold-search t) - (file (if buffer-file-name - (file-name-nondirectory buffer-file-name) - (buffer-name))) - (dir (file-name-directory - (if buffer-file-name buffer-file-name default-directory))) - (sccs-file (and buffer-file-name (sccs-name buffer-file-name))) - (known-p (and sccs-file (file-exists-p sccs-file))) - (checked-out-p (and known-p - (file-exists-p (sccs-name buffer-file-name "p")))) - command - item) - (while rest - (setq item (car rest)) - (if (not (vectorp item)) - nil - (setq command (aref item 1)) - (if (eq 'sccs command) - (aset item 0 - (cond ((or (null sccs-file) (not known-p)) - "Create Archive:") - ((not checked-out-p) - "Check Out") - (t - "Check In")))) - (cond - ((and (> (length item) 3) - (string-match "directory" (aref item 0))) - (aset item 3 dir)) - ((> (length item) 3) - (aset item 3 file)) - (t nil)) - (aset item 2 - (cond - ((memq command '(sccs-prs)) - known-p) - ((memq command '(sccs-revert-diff sccs-revert-buffer)) - checked-out-p) - (t)))) - (setq rest (cdr rest)))) - nil) - -(add-hook 'activate-menubar-hook 'sccs-sensitize-menu) - -(provide 'sccs) - -;; sccs.el ends here
--- a/lisp/packages/server.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,426 +0,0 @@ -;;; server.el --- Lisp code for GNU Emacs running as server process. - -;; Copyright (C) 1986, 1987, 1992, 1994, 1995 Free Software Foundation, Inc. - -;; Author: William Sommerfeld <wesommer@athena.mit.edu> -;; Keywords: processes - -;; Changes by peck@sun.com and by rms. - -;; 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 FSF 19.34. - -;;; Commentary: - -;; This Lisp code is run in Emacs when it is to operate as -;; a server for other processes. - -;; Load this library and do M-x server-edit to enable Emacs as a server. -;; Emacs runs the program ../../lib-src/emacsserver as a subprocess -;; for communication with clients. If there are no client buffers to edit, -;; server-edit acts like (switch-to-buffer (other-buffer)) - -;; When some other program runs "the editor" to edit a file, -;; "the editor" can be the Emacs client program ../../lib-src/emacsclient. -;; This program transmits the file names to Emacs through -;; the server subprocess, and Emacs visits them and lets you edit them. - -;; Note that any number of clients may dispatch files to emacs to be edited. - -;; When you finish editing a Server buffer, again call server-edit -;; to mark that buffer as done for the client and switch to the next -;; Server buffer. When all the buffers for a client have been edited -;; and exited with server-edit, the client "editor" will return -;; to the program that invoked it. - -;; Your editing commands and Emacs's display output go to and from -;; the terminal in the usual way. Thus, server operation is possible -;; only when Emacs can talk to the terminal at the time you invoke -;; the client. This is possible in four cases: - -;; 1. On a window system, where Emacs runs in one window and the -;; program that wants to use "the editor" runs in another. - -;; 2. On a multi-terminal system, where Emacs runs on one terminal and the -;; program that wants to use "the editor" runs on another. - -;; 3. When the program that wants to use "the editor" is running -;; as a subprocess of Emacs. - -;; 4. On a system with job control, when Emacs is suspended, the program -;; that wants to use "the editor" will stop and display -;; "Waiting for Emacs...". It can then be suspended, and Emacs can be -;; brought into the foreground for editing. When done editing, Emacs is -;; suspended again, and the client program is brought into the foreground. - -;; The buffer local variable "server-buffer-clients" lists -;; the clients who are waiting for this buffer to be edited. -;; The global variable "server-clients" lists all the waiting clients, -;; and which files are yet to be edited for each. - -;;; Code: - -(defvar server-program (expand-file-name "emacsserver" exec-directory) - "*The program to use as the edit server.") - -(defvar server-visit-hook nil - "*List of hooks to call when visiting a file for the Emacs server.") - -(defvar server-switch-hook nil - "*List of hooks to call when switching to a buffer for the Emacs server.") - -(defvar server-done-hook nil - "*List of hooks to call when done editing a buffer for the Emacs server.") - -(defvar server-process nil - "the current server process") - -(defvar server-previous-string "") - -(defvar server-clients nil - "List of current server clients. -Each element is (CLIENTID BUFFERS...) where CLIENTID is a string -that can be given to the server process to identify a client. -When a buffer is marked as \"done\", it is removed from this list.") - -(defvar server-buffer-clients nil - "List of clientids for clients requesting editing of current buffer.") -(make-variable-buffer-local 'server-buffer-clients) -;; Changing major modes should not erase this local. -(put 'server-buffer-clients 'permanent-local t) - -(defvar server-window nil - "*The window to use for selecting Emacs server buffers. -If nil, use the selected window. -If it is a frame, use the frame's selected window.") - -(defvar server-temp-file-regexp "^/tmp/Re\\|/draft$" - "*Regexp which should match filenames of temporary files -which are deleted and reused after each edit -by the programs that invoke the emacs server.") - -(or (assq 'server-buffer-clients minor-mode-alist) - (setq minor-mode-alist (cons '(server-buffer-clients " Server") minor-mode-alist))) - -;; If a *server* buffer exists, -;; write STRING to it for logging purposes. -(defun server-log (string) - (if (get-buffer "*server*") - (save-excursion - (set-buffer "*server*") - (goto-char (point-max)) - (insert (current-time-string) " " string) - (or (bolp) (newline))))) - -(defun server-sentinel (proc msg) - (cond ((eq (process-status proc) 'exit) - (server-log (message "Server subprocess exited"))) - ((eq (process-status proc) 'signal) - (server-log (message "Server subprocess killed"))))) - -;;;###autoload -(make-obsolete 'server-start 'gnuserv-start) -(defun server-start (&optional leave-dead) - "Use `gnuserv-start' instead of this function. -Allow this Emacs process to be a server for client processes. -This starts a server communications subprocess through which -client \"editors\" can send your editing commands to this Emacs job. -To use the server, set up the program `emacsclient' in the -Emacs distribution as your standard \"editor\". - -Prefix arg means just kill any existing server communications subprocess." - (interactive "P") - ;; kill it dead! - (if server-process - (progn - (set-process-sentinel server-process nil) - (condition-case () (delete-process server-process) (error nil)))) - (condition-case () (delete-file "~/.emacs_server") (error nil)) - (let* ((sysname (system-name)) - (dot-index (string-match "\\." sysname))) - (condition-case () - (delete-file (format "/tmp/esrv%d-%s" (user-uid) sysname)) - (error nil)) - ;; In case the server file name was made with a domainless hostname, - ;; try deleting that name too. - (if dot-index - (condition-case () - (delete-file (format "/tmp/esrv%d-%s" (user-uid) - (substring sysname 0 dot-index))) - (error nil)))) - ;; If we already had a server, clear out associated status. - (while server-clients - (let ((buffer (nth 1 (car server-clients)))) - (server-buffer-done buffer))) - (if leave-dead - nil - (if server-process - (server-log (message "Restarting server"))) - ;; Using a pty is wasteful, and the separate session causes - ;; annoyance sometimes (some systems kill idle sessions). - (let ((process-connection-type nil)) - (setq server-process (start-process "server" nil server-program))) - (set-process-sentinel server-process 'server-sentinel) - (set-process-filter server-process 'server-process-filter) - (process-kill-without-query server-process))) - -;Process a request from the server to edit some files. -;Format of STRING is "Client: CLIENTID PATH PATH PATH... \n" -(defun server-process-filter (proc string) - (server-log string) - (setq string (concat server-previous-string string)) - ;; If the input is multiple lines, - ;; process each line individually. - (while (string-match "\n" string) - (let ((request (substring string 0 (match-beginning 0))) - client - (files nil) - (lineno 1)) - ;; Remove this line from STRING. - (setq string (substring string (match-end 0))) - (if (string-match "^Error: " request) - (message "Server error: %s" (substring request (match-end 0))) - (if (string-match "^Client: " request) - (progn - (setq request (substring request (match-end 0))) - (setq client (list (substring request 0 (string-match " " request)))) - (setq request (substring request (match-end 0))) - (while (string-match "[^ ]+ " request) - (let ((arg - (substring request (match-beginning 0) (1- (match-end 0))))) - (setq request (substring request (match-end 0))) - (if (string-match "\\`\\+[0-9]+\\'" arg) - ;; ARG is a line number option. - (setq lineno (read (substring arg 1))) - ;; ARG is a file name. - ;; Collapse multiple slashes to single slashes. - (setq arg (command-line-normalize-file-name arg)) - (setq files - (cons (list arg lineno) - files)) - (setq lineno 1)))) - (server-visit-files files client) - ;; CLIENT is now a list (CLIENTNUM BUFFERS...) - (setq server-clients (cons client server-clients)) - (server-switch-buffer (nth 1 client)) - (run-hooks 'server-switch-hook) - (message (substitute-command-keys - "When done with a buffer, type \\[server-edit]"))))))) - ;; Save for later any partial line that remains. - (setq server-previous-string string)) - -(defun server-visit-files (files client) - "Finds FILES and returns the list CLIENT with the buffers nconc'd. -FILES is an alist whose elements are (FILENAME LINENUMBER)." - ;; Bind last-nonmenu-event to force use of keyboard, not mouse, for queries. - ;; XEmacs: this doesn't work as far as I can tell. -sb - (let (client-record (last-nonmenu-event t) (obuf (current-buffer))) - ;; Restore the current buffer afterward, but not using save-excursion, - ;; because we don't want to save point in this buffer - ;; if it happens to be one of those specified by the server. - (unwind-protect - (while files - ;; If there is an existing buffer modified or the file is modified, - ;; revert it. - ;; If there is an existing buffer with deleted file, offer to write it. - (let* ((filen (car (car files))) - (obuf (get-file-buffer filen))) - (if (and obuf (set-buffer obuf)) - (if (file-exists-p filen) - (if (or (not (verify-visited-file-modtime obuf)) - (buffer-modified-p obuf)) - (revert-buffer t nil)) - (if (y-or-n-p - (concat "File no longer exists: " - filen - ", write buffer to file? ")) - (write-file filen))) - (set-buffer (find-file-noselect filen)) - (run-hooks 'server-visit-hook))) - (goto-line (nth 1 (car files))) - (setq server-buffer-clients (cons (car client) server-buffer-clients)) - (setq client-record (cons (current-buffer) client-record)) - (setq files (cdr files))) - (set-buffer obuf)) - (nconc client client-record))) - -(defun server-buffer-done (buffer) - "Mark BUFFER as \"done\" for its client(s). -This buries the buffer, then returns a list of the form (NEXT-BUFFER KILLED). -NEXT-BUFFER is another server buffer, as a suggestion for what to select next, -or nil. KILLED is t if we killed BUFFER (because it was a temp file)." - (let ((running (eq (process-status server-process) 'run)) - (next-buffer nil) - (killed nil) - (first t) - (old-clients server-clients)) - (while old-clients - (let ((client (car old-clients))) - (or next-buffer - (setq next-buffer (nth 1 (memq buffer client)))) - (delq buffer client) - ;; Delete all dead buffers from CLIENT. - (let ((tail client)) - (while tail - (and (bufferp (car tail)) - (null (buffer-name (car tail))) - (delq (car tail) client)) - (setq tail (cdr tail)))) - ;; If client now has no pending buffers, - ;; tell it that it is done, and forget it entirely. - (if (cdr client) nil - (if running - (progn - ;; Don't send emacsserver two commands in close succession. - ;; It cannot handle that. - (or first (sit-for 1)) - (setq first nil) - ;; XEmacs: FSF uses obsolete send-string - (process-send-string server-process - (format "Close: %s Done\n" (car client))) - (server-log (format "Close: %s Done\n" (car client))))) - (setq server-clients (delq client server-clients)))) - (setq old-clients (cdr old-clients))) - (if (and (bufferp buffer) (buffer-name buffer)) - (progn - (save-excursion - (set-buffer buffer) - (setq server-buffer-clients nil) - (run-hooks 'server-done-hook)) - (if (server-temp-file-p buffer) - (progn (kill-buffer buffer) - (setq killed t)) - (bury-buffer buffer)))) - (list next-buffer killed))) - -(defun server-temp-file-p (buffer) - "Return non-nil if BUFFER contains a file considered temporary. -These are files whose names suggest they are repeatedly -reused to pass information to another program. - -The variable `server-temp-file-regexp' controls which filenames -are considered temporary." - (and (buffer-file-name buffer) - (string-match server-temp-file-regexp (buffer-file-name buffer)))) - -(defun server-done () - "Offer to save current buffer, mark it as \"done\" for clients. -This buries the buffer, then returns a list of the form (NEXT-BUFFER KILLED). -NEXT-BUFFER is another server buffer, as a suggestion for what to select next, -or nil. KILLED is t if we killed the BUFFER (because it was a temp file)." - (let ((buffer (current-buffer))) - (if server-buffer-clients - (progn - (if (server-temp-file-p buffer) - ;; For a temp file, save, and do make a non-numeric backup - ;; (unless make-backup-files is nil). - (let ((version-control nil) - (buffer-backed-up nil)) - (save-buffer)) - (if (and (buffer-modified-p) - (y-or-n-p (concat "Save file " buffer-file-name "? "))) - (save-buffer buffer))) - (server-buffer-done buffer))))) - -;; Ask before killing a server buffer. -;; It was suggested to release its client instead, -;; but I think that is dangerous--the client would proceed -;; using whatever is on disk in that file. -- rms. -(defun server-kill-buffer-query-function () - (or (not server-buffer-clients) - (yes-or-no-p (format "Buffer `%s' still has clients; kill it? " - (buffer-name (current-buffer)))))) - -(add-hook 'kill-buffer-query-functions - 'server-kill-buffer-query-function) - -(defun server-kill-emacs-query-function () - (let (live-client - (tail server-clients)) - ;; See if any clients have any buffers that are still alive. - (while tail - (if (memq t (mapcar 'stringp (mapcar 'buffer-name (cdr (car tail))))) - (setq live-client t)) - (setq tail (cdr tail))) - (or (not live-client) - (yes-or-no-p "Server buffers still have clients; exit anyway? ")))) - -(add-hook 'kill-emacs-query-functions 'server-kill-emacs-query-function) - -(defun server-edit (&optional arg) - "Switch to next server editing buffer; say \"Done\" for current buffer. -If a server buffer is current, it is marked \"done\" and optionally saved. -When all of a client's buffers are marked as \"done\", the client is notified. - -Temporary files such as MH <draft> files are always saved and backed up, -no questions asked. (The variable `make-backup-files', if nil, still -inhibits a backup; you can set it locally in a particular buffer to -prevent a backup for it.) The variable `server-temp-file-regexp' controls -which filenames are considered temporary. - -If invoked with a prefix argument, or if there is no server process running, -starts server process and that is all. Invoked by \\[server-edit]." - (interactive "P") - (if (or arg - (not server-process) - (memq (process-status server-process) '(signal exit))) - (server-start nil) - (apply 'server-switch-buffer (server-done)))) - -(defun server-switch-buffer (&optional next-buffer killed-one) - "Switch to another buffer, preferably one that has a client. -Arg NEXT-BUFFER is a suggestion; if it is a live buffer, use it." - ;; KILLED-ONE is t in a recursive call - ;; if we have already killed one temp-file server buffer. - ;; This means we should avoid the final "switch to some other buffer" - ;; since we've already effectively done that. - (cond ((and (windowp server-window) - (window-live-p server-window)) - (select-window server-window)) - ((framep server-window) - (if (not (frame-live-p server-window)) - (setq server-window (make-frame))) - (select-window (frame-selected-window server-window)))) - (if (window-minibuffer-p (selected-window)) - (select-window (next-window nil 'nomini 0))) - ;; Move to a non-dedicated window, if we have one. - (let ((last-window (previous-window nil 'nomini 0))) - (while (and (window-dedicated-p (selected-window)) - (not (eq last-window (selected-window)))) - (select-window (next-window nil 'nomini 0)))) - (set-window-dedicated-p (selected-window) nil) - (if next-buffer - (if (and (bufferp next-buffer) - (buffer-name next-buffer)) - (switch-to-buffer next-buffer) - ;; If NEXT-BUFFER is a dead buffer, - ;; remove the server records for it - ;; and try the next surviving server buffer. - (apply 'server-switch-buffer - (server-buffer-done next-buffer))) - (if server-clients - (server-switch-buffer (nth 1 (car server-clients)) killed-one) - (if (not killed-one) - (switch-to-buffer (other-buffer)))))) - -(global-set-key "\C-x#" 'server-edit) - -(provide 'server) - -;;; server.el ends here
--- a/lisp/packages/vc-hooks.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/packages/vc-hooks.el Mon Aug 13 09:38:25 2007 +0200 @@ -1037,7 +1037,6 @@ (define-key vc-prefix-map "u" 'vc-revert-buffer) (define-key vc-prefix-map "v" 'vc-next-action) (define-key vc-prefix-map "=" 'vc-diff) - #+xemacs (define-key vc-prefix-map "?" 'vc-file-status) (define-key vc-prefix-map "~" 'vc-version-other-window))) ;; Emacs menus @@ -1083,8 +1082,6 @@ '("VC" :filter vc-menu-filter ["" vc-next-action buffer-file-name nil] - ;; ^^^ this gets changed to checkin, checkout, register, or steal - ["Show status of" vc-file-status nil nil] ;;["Show Locked Files" vc-directory t] ;; needs new dired "----" ["Revert to Last Revision" vc-revert-buffer vc-mode nil]
--- a/lisp/packages/vc.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/packages/vc.el Mon Aug 13 09:38:25 2007 +0200 @@ -1370,7 +1370,7 @@ (setq dirname (concat dirname "/"))) (let (nonempty (dl (if (featurep 'xemacs) - (+ 1 (length (directory-file-name (expand-file-name dir)))) + (+ 1 (length (directory-file-name (expand-file-name dirname)))) (length dirname))) (filelist nil) (statelist nil) (old-dir default-directory)
--- a/lisp/prim/about.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/prim/about.el Mon Aug 13 09:38:25 2007 +0200 @@ -1165,7 +1165,7 @@ Stephen Carney <carney@gvc.dec.com> Lorenzo M. Catucci <lorenzo@argon.roma2.infn.it> Philippe Charton <charton@lmd.ens.fr> - Peter Cheng <peter.cheng@sun.com> + Peter Cheng <peter.h.cheng@worldnet.att.net> Jin S. Choi <jin@atype.com> Tomasz J. Cholewo <tjchol01@mecca.spd.louisville.edu> Serenella Ciongoli <czs00@ladybug.oes.amdahl.com> @@ -1263,6 +1263,7 @@ Tonny Madsen <Tonny.Madsen@netman.dk> Ketil Z Malde <ketil@ii.uib.no> Steve March <smarch@quaver.urbana.mcd.mot.com> + Ricardo Marek <ricky@ornet.co.il> Pekka Marjola <pema@iki.fi> Simon Marshall <simon@gnu.ai.mit.edu> Dave Mason <dmason@plg.uwaterloo.ca> @@ -1285,6 +1286,7 @@ Joseph J. Nuspl Jr. <nuspl@cc.purdue.edu> Kim Nyberg <kny@tekla.fi> David Ofelt <ofelt@getalife.Stanford.EDU> + Alexandre Oliva <oliva@dcc.unicamp.br> Tore Olsen <toreo@colargol.idb.hist.no> Greg Onufer <Greg.Onufer@eng.sun.com> Achim Oppelt <aoppelt@theorie3.physik.uni-erlangen.de>
--- a/lisp/prim/auto-autoloads.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/prim/auto-autoloads.el Mon Aug 13 09:38:25 2007 +0200 @@ -690,6 +690,49 @@ ;;;*** +;;;### (autoloads (ssh) "ssh" "comint/ssh.el") + +(add-hook 'same-window-regexps "^\\*ssh-.*\\*\\(\\|<[0-9]+>\\)") + +(autoload 'ssh "ssh" "\ +Open a network login connection via `ssh' with args INPUT-ARGS. +INPUT-ARGS should start with a host name; it may also contain +other arguments for `ssh'. + +Input is sent line-at-a-time to the remote connection. + +Communication with the remote host is recorded in a buffer `*ssh-HOST*' +\(or `*ssh-USER@HOST*' if the remote username differs). +If a prefix argument is given and the buffer `*ssh-HOST*' already exists, +a new buffer with a different connection will be made. + +When called from a program, if the optional second argument BUFFER is +a string or buffer, it specifies the buffer to use. + +The variable `ssh-program' contains the name of the actual program to +run. It can be a relative or absolute path. + +The variable `ssh-explicit-args' is a list of arguments to give to +the ssh when starting. They are prepended to any arguments given in +INPUT-ARGS. + +If the default value of `ssh-directory-tracking-mode' is t, then the +default directory in that buffer is set to a remote (FTP) file name to +access your home directory on the remote machine. Occasionally this causes +an error, if you cannot access the home directory on that machine. This +error is harmless as long as you don't try to use that default directory. + +If `ssh-directory-tracking-mode' is neither t nor nil, then the default +directory is initially set up to your (local) home directory. +This is useful if the remote machine and your local machine +share the same files via NFS. This is the default. + +If you wish to change directory tracking styles during a session, use the +function `ssh-directory-tracking-mode' rather than simply setting the +variable." t nil) + +;;;*** + ;;;### (autoloads (rsh telnet) "telnet" "comint/telnet.el") (add-hook 'same-window-regexps "\\*telnet-.*\\*\\(\\|<[0-9]+>\\)") @@ -711,7 +754,7 @@ ;;;*** -;;;### (autoloads (customize-menu-create custom-menu-create custom-save-all custom-save-customized custom-buffer-create-other-window custom-buffer-create customize-apropos customize-saved customize-customized customize-face-other-window customize-face customize-variable-other-window customize-variable customize-other-window customize custom-set-variable custom-set-value) "cus-edit" "custom/cus-edit.el") +;;;### (autoloads (customize-menu-create custom-menu-create custom-save-all custom-save-customized custom-buffer-create-other-window custom-buffer-create customize-apropos customize-saved customize-customized customize-face-other-window customize-face customize-variable-other-window customize-variable customize-group-other-window customize-group customize custom-set-variable custom-set-value) "cus-edit" "custom/cus-edit.el") (autoload 'custom-set-value "cus-edit" "\ Set VARIABLE to VALUE. VALUE is a Lisp object. @@ -738,9 +781,15 @@ `:prompt-value' property of that widget will be used for reading the value. " t nil) (autoload 'customize "cus-edit" "\ -Customize SYMBOL, which must be a customization group." t nil) - -(autoload 'customize-other-window "cus-edit" "\ +Select a customization buffer which you can use to set user options. +User options are structured into \"groups\". +Initially the top-level group `Emacs' and its immediate subgroups +are shown; the contents of those subgroups are initially hidden." t nil) + +(autoload 'customize-group "cus-edit" "\ +Customize GROUP, which must be a customization group." t nil) + +(autoload 'customize-group-other-window "cus-edit" "\ Customize SYMBOL, which must be a customization group." t nil) (autoload 'customize-variable "cus-edit" "\ @@ -1413,13 +1462,6 @@ ;;;*** -;;;### (autoloads (convert-mocklisp-buffer) "mlconvert" "emulators/mlconvert.el") - -(autoload 'convert-mocklisp-buffer "mlconvert" "\ -Convert buffer of Mocklisp code to real Lisp that GNU Emacs can run." t nil) - -;;;*** - ;;;### (autoloads (teco-command) "teco" "emulators/teco.el") (autoload 'teco-command "teco" "\ @@ -1561,10 +1603,6 @@ ;;;*** -;;;### (autoloads nil "loaddefs-eos" "eos/loaddefs-eos.el") - -;;;*** - ;;;### (autoloads (term make-term) "term" "eterm/term.el") (autoload 'make-term "term" "\ @@ -3772,7 +3810,7 @@ ;;;### (autoloads (ksh-mode) "ksh-mode" "modes/ksh-mode.el") (autoload 'ksh-mode "ksh-mode" "\ -ksh-mode $Revision: 1.29 $ - Major mode for editing (Bourne, Korn or Bourne again) +ksh-mode $Revision: 1.30 $ - Major mode for editing (Bourne, Korn or Bourne again) shell scripts. Special key bindings and commands: \\{ksh-mode-map} @@ -4705,16 +4743,72 @@ ;;;*** -;;;### (autoloads (strokes-mode) "strokes" "modes/strokes.el") - -(defvar strokes-enabled-p nil "\ -Variable determining whether `strokes' is globally enabled") +;;;### (autoloads (strokes-mode strokes-list-strokes strokes-load-user-strokes strokes-help strokes-describe-stroke strokes-do-complex-stroke strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke strokes-global-set-stroke) "strokes" "modes/strokes.el") + +(defvar strokes-mode nil "\ +Non-nil when `strokes' is globally enabled") + +(autoload 'strokes-global-set-stroke "strokes" "\ +Interactively give STROKE the global binding as COMMAND. +Operated just like `global-set-key', except for strokes. +COMMAND is a symbol naming an interactively-callable function. STROKE +is a list of sampled positions on the stroke grid as described in the +documentation for the `strokes-define-stroke' function." t nil) + +(defalias 'global-set-stroke 'strokes-global-set-stroke) + +(autoload 'strokes-read-stroke "strokes" "\ +Read a simple stroke (interactively) and return the stroke. +Optional PROMPT in minibuffer displays before and during stroke reading. +This function will display the stroke interactively as it is being +entered in the strokes buffer if the variable +`strokes-use-strokes-buffer' is non-nil. +Optional EVENT is currently not used, but hopefully will be soon." nil nil) + +(autoload 'strokes-read-complex-stroke "strokes" "\ +Read a complex stroke (interactively) and return the stroke. +Optional PROMPT in minibuffer displays before and during stroke reading. +Note that a complex stroke allows the user to pen-up and pen-down. This +is implemented by allowing the user to paint with button1 or button2 and +then complete the stroke with button3. +Optional EVENT is currently not used, but hopefully will be soon." nil nil) + +(autoload 'strokes-do-stroke "strokes" "\ +Read a simple stroke from the user and then exectute its comand. +This must be bound to a mouse event." t nil) + +(autoload 'strokes-do-complex-stroke "strokes" "\ +Read a complex stroke from the user and then exectute its command. +This must be bound to a mouse event." t nil) + +(autoload 'strokes-describe-stroke "strokes" "\ +Displays the command which STROKE maps to, reading STROKE interactively." t nil) + +(defalias 'describe-stroke 'strokes-describe-stroke) + +(autoload 'strokes-help "strokes" "\ +Get instructional help on using the the `strokes' package." t nil) + +(autoload 'strokes-load-user-strokes "strokes" "\ +Load user-defined strokes from file named by `strokes-file'." t nil) + +(defalias 'load-user-strokes 'strokes-load-user-strokes) + +(autoload 'strokes-list-strokes "strokes" "\ +Pop up a buffer containing a listing of all strokes defined in STROKE-MAP. +If STROKE-MAP is not given, `strokes-global-map' will be used instead." t nil) + +(defalias 'list-strokes 'strokes-list-strokes) (autoload 'strokes-mode "strokes" "\ Toggle strokes being enabled. With ARG, turn strokes on if and only if ARG is positive or true. Note that `strokes-mode' is a global mode. Think of it as a minor -mode in all buffers when activated." t nil) +mode in all buffers when activated. +By default, strokes are invoked with mouse button-2. You can define +new strokes with + +> M-x global-set-stroke" t nil) ;;;*** @@ -4939,125 +5033,6 @@ ;;;*** -;;;### (autoloads (tc-recenter tc-scroll-down tc-scroll-up tc-scroll-line tc-associated-buffer tc-merge tc-dissociate tc-split tc-associate-buffer tc-two-columns) "two-column" "modes/two-column.el") - -(defvar tc-mode-map nil "\ -Keymap for commands for two-column mode.") - -(if tc-mode-map nil (setq tc-mode-map (make-sparse-keymap)) (define-key tc-mode-map "1" 'tc-merge) (define-key tc-mode-map "2" 'tc-two-columns) (define-key tc-mode-map "b" 'tc-associate-buffer) (define-key tc-mode-map "d" 'tc-dissociate) (define-key tc-mode-map "\^L" 'tc-recenter) (define-key tc-mode-map "o" 'tc-associated-buffer) (define-key tc-mode-map "s" 'tc-split) (define-key tc-mode-map "{" 'shrink-window-horizontally) (define-key tc-mode-map "}" 'enlarge-window-horizontally) (define-key tc-mode-map " " 'tc-scroll-up) (define-key tc-mode-map "" 'tc-scroll-down) (define-key tc-mode-map " " 'tc-scroll-line)) - -(global-set-key "6" tc-mode-map) - -(defvar tc-other nil "\ -Marker to the associated buffer, if non-nil.") - -(make-variable-buffer-local 'tc-other) - -(put 'tc-other 'permanent-local t) - -(autoload 'tc-two-columns "two-column" "\ -Split current window vertically for two-column editing. - -When called the first time, associates a buffer with the current -buffer. Both buffers are put in two-column minor mode and -tc-mode-hook gets called on both. These buffers remember -about one another, even when renamed. - -When called again, restores the screen layout with the current buffer -first and the associated buffer to it's right. - -If you include long lines, i.e which will span both columns (eg. -source code), they should be in what will be the first column, with -the associated buffer having empty lines next to them. - -You have the following commands at your disposal: - -\\[tc-two-columns] Rearrange screen -\\[tc-associate-buffer] Reassociate buffer after changing major mode -\\[tc-scroll-up] Scroll both buffers up by a screenfull -\\[tc-scroll-down] Scroll both buffers down by a screenful -\\[tc-scroll-line] Scroll both buffers up by one or more lines -\\[tc-recenter] Recenter and realign other buffer -\\[shrink-window-horizontally], \\[enlarge-window-horizontally] Shrink, enlarge current column -\\[tc-associated-buffer] Switch to associated buffer -\\[tc-merge] Merge both buffers - -These keybindings can be customized in your ~/.emacs by `tc-prefix' -and `tc-mode-map'. - -The appearance of the screen can be customized by the variables -`tc-window-width', `tc-beyond-fill-column', -`tc-mode-line-format' and `truncate-partial-width-windows'." t nil) - -(add-minor-mode 'tc-other " 2C" nil nil 'tc-two-columns) - -(autoload 'tc-associate-buffer "two-column" "\ -Associate another buffer with this one in two-column minor mode. -Can also be used to associate a just previously visited file, by -accepting the proposed default buffer. - -See \\[tc-two-columns] and `lisp/two-column.el' for further details." t nil) - -(autoload 'tc-split "two-column" "\ -Unmerge a two-column text into two buffers in two-column minor mode. -The text is unmerged at the cursor's column which becomes the local -value of `tc-window-width'. Only lines that have the ARG same -preceding characters at that column get split. The ARG preceding -characters without any leading whitespace become the local value for -`tc-separator'. This way lines that continue across both -columns remain untouched in the first buffer. - -This function can be used with a prototype line, to set up things as -you like them. You write the first line of each column with the -separator you like and then unmerge that line. E.g.: - -First column's text sSs Second columns text - \\___/\\ - / \\ - 5 character Separator You type M-5 \\[tc-split] with the point here - -See \\[tc-two-columns] and `lisp/two-column.el' for further details." t nil) - -(autoload 'tc-dissociate "two-column" "\ -Turn off two-column minor mode in current and associated buffer. -If the associated buffer is unmodified and empty, it is killed." t nil) - -(autoload 'tc-merge "two-column" "\ -Merges the associated buffer with the current buffer. -They get merged at the column, which is the value of -`tc-window-width', i.e. usually at the vertical window -separator. This separator gets replaced with white space. Beyond -that the value of gets inserted on merged lines. The two columns are -thus pasted side by side, in a single text. If the other buffer is -not displayed to the left of this one, then this one becomes the left -column. - -If you want `tc-separator' on empty lines in the second column, -you should put just one space in them. In the final result, you can strip -off trailing spaces with \\[beginning-of-buffer] \\[replace-regexp] [ SPC TAB ] + $ RET RET" t nil) - -(autoload 'tc-associated-buffer "two-column" "\ -Switch to associated buffer." t nil) - -(autoload 'tc-scroll-line "two-column" "\ -Scroll current window upward by ARG lines. -The associated window gets scrolled to the same line." t nil) - -(autoload 'tc-scroll-up "two-column" "\ -Scroll current window upward by ARG screens. -The associated window gets scrolled to the same line." t nil) - -(autoload 'tc-scroll-down "two-column" "\ -Scroll current window downward by ARG screens. -The associated window gets scrolled to the same line." t nil) - -(autoload 'tc-recenter "two-column" "\ -Center point in window. With ARG, put point on line ARG. -This counts from bottom if ARG is negative. The associated window -gets scrolled to the same line." t nil) - -;;;*** - ;;;### (autoloads (verilog-mode) "verilog-mode" "modes/verilog-mode.el") (autoload 'verilog-mode "verilog-mode" "\ @@ -5136,7 +5111,7 @@ (autoload 'vhdl-mode "vhdl-mode" "\ Major mode for editing VHDL code. -vhdl-mode $Revision: 1.29 $ +vhdl-mode $Revision: 1.30 $ To submit a problem report, enter `\\[vhdl-submit-bug-report]' from a vhdl-mode buffer. This automatically sets up a mail buffer with version information already added. You just need to add a description of the @@ -5156,7 +5131,7 @@ ;;;### (autoloads (auto-view-mode view-major-mode view-mode view-minor-mode view-buffer-other-window view-file-other-window view-buffer view-file) "view-less" "modes/view-less.el") -(defvar view-minor-mode-map (let ((map (make-keymap))) (set-keymap-name map 'view-minor-mode-map) (suppress-keymap map) (define-key map "-" 'negative-argument) (define-key map " " 'scroll-up) (define-key map "f" 'scroll-up) (define-key map "" 'scroll-down) (define-key map "b" 'scroll-down) (define-key map 'backspace 'scroll-down) (define-key map " " 'view-scroll-lines-up) (define-key map "\n" 'view-scroll-lines-up) (define-key map "e" 'view-scroll-lines-up) (define-key map "j" 'view-scroll-lines-up) (define-key map "y" 'view-scroll-lines-down) (define-key map "k" 'view-scroll-lines-down) (define-key map "d" 'view-scroll-some-lines-up) (define-key map "u" 'view-scroll-some-lines-down) (define-key map "r" 'recenter) (define-key map "t" 'toggle-truncate-lines) (define-key map "N" 'view-buffer) (define-key map "E" 'view-file) (define-key map "P" 'view-buffer) (define-key map "!" 'shell-command) (define-key map "|" 'shell-command-on-region) (define-key map "=" 'what-line) (define-key map "?" 'view-search-backward) (define-key map "h" 'view-mode-describe) (define-key map "s" 'view-repeat-search) (define-key map "n" 'view-repeat-search) (define-key map "/" 'view-search-forward) (define-key map "\\" 'view-search-backward) (define-key map "g" 'view-goto-line) (define-key map "G" 'view-last-windowful) (define-key map "%" 'view-goto-percent) (define-key map "p" 'view-goto-percent) (define-key map "m" 'point-to-register) (define-key map "'" 'register-to-point) (define-key map "C" 'view-cleanup-backspaces) (define-key map "" 'view-quit) (define-key map "" 'view-quit-toggle-ro) (define-key map "q" 'view-quit) map)) +(defvar view-minor-mode-map (let ((map (make-keymap))) (set-keymap-name map 'view-minor-mode-map) (suppress-keymap map) (define-key map "-" 'negative-argument) (define-key map " " 'scroll-up) (define-key map "f" 'scroll-up) (define-key map "b" 'scroll-down) (define-key map 'backspace 'scroll-down) (define-key map " " 'view-scroll-lines-up) (define-key map "\n" 'view-scroll-lines-up) (define-key map "e" 'view-scroll-lines-up) (define-key map "j" 'view-scroll-lines-up) (define-key map "y" 'view-scroll-lines-down) (define-key map "k" 'view-scroll-lines-down) (define-key map "d" 'view-scroll-some-lines-up) (define-key map "u" 'view-scroll-some-lines-down) (define-key map "r" 'recenter) (define-key map "t" 'toggle-truncate-lines) (define-key map "N" 'view-buffer) (define-key map "E" 'view-file) (define-key map "P" 'view-buffer) (define-key map "!" 'shell-command) (define-key map "|" 'shell-command-on-region) (define-key map "=" 'what-line) (define-key map "?" 'view-search-backward) (define-key map "h" 'view-mode-describe) (define-key map "s" 'view-repeat-search) (define-key map "n" 'view-repeat-search) (define-key map "/" 'view-search-forward) (define-key map "\\" 'view-search-backward) (define-key map "g" 'view-goto-line) (define-key map "G" 'view-last-windowful) (define-key map "%" 'view-goto-percent) (define-key map "p" 'view-goto-percent) (define-key map "m" 'point-to-register) (define-key map "'" 'register-to-point) (define-key map "C" 'view-cleanup-backspaces) (define-key map "" 'view-quit) (define-key map "" 'view-quit-toggle-ro) (define-key map "q" 'view-quit) map)) (defvar view-mode-map (let ((map (copy-keymap view-minor-mode-map))) (set-keymap-name map 'view-mode-map) map)) @@ -5607,6 +5582,8 @@ (define-key bookmark-map "s" 'bookmark-save) +(add-hook 'kill-emacs-hook (function (lambda nil (and (featurep 'bookmark) bookmark-alist (bookmark-time-to-save-p t) (bookmark-save))))) + (autoload 'bookmark-set "bookmark" "\ Set a bookmark named NAME inside a file. If name is nil, then the user will be prompted. @@ -5643,22 +5620,24 @@ of the old one in the permanent bookmark record." t nil) (autoload 'bookmark-relocate "bookmark" "\ -Relocate BOOKMARK -- prompts for a filename, and makes an already -existing bookmark point to that file, instead of the one it used to -point at. Useful when a file has been renamed after a bookmark was -set in it." t nil) +Relocate BOOKMARK to another file (reading file name with minibuffer). +This makes an already existing bookmark point to that file, instead of +the one it used to point at. Useful when a file has been renamed +after a bookmark was set in it." t nil) (autoload 'bookmark-insert-location "bookmark" "\ Insert the name of the file associated with BOOKMARK. Optional second arg NO-HISTORY means don't record this in the minibuffer history list `bookmark-history'." t nil) +(defalias 'bookmark-locate 'bookmark-insert-location) + (autoload 'bookmark-rename "bookmark" "\ -Change the name of OLD bookmark to NEW name. If called from -keyboard, prompts for OLD and NEW. If called from menubar, OLD is -selected from a menu, and prompts for NEW. - -If called from Lisp, prompts for NEW if only OLD was passed as an +Change the name of OLD bookmark to NEW name. +If called from keyboard, prompt for OLD and NEW. If called from +menubar, select OLD from a menu and prompt for NEW. + +If called from Lisp, prompt for NEW if only OLD was passed as an argument. If called with two strings, then no prompting is done. You must pass at least OLD when calling from Lisp. @@ -5683,9 +5662,8 @@ probably because we were called from there." t nil) (autoload 'bookmark-write "bookmark" "\ -Write bookmarks to a file (for which the user will be prompted -interactively). Don't use this in Lisp programs; use bookmark-save -instead." t nil) +Write bookmarks to a file (reading the file name with the minibuffer). +Don't use this in Lisp programs; use `bookmark-save' instead." t nil) (autoload 'bookmark-save "bookmark" "\ Save currently defined bookmarks. @@ -5786,6 +5764,30 @@ corresponding bookmark function from Lisp (the one without the \"-menu-\" in its name)." t nil) +(defvar menu-bar-bookmark-map (make-sparse-keymap "Bookmark functions")) + +(defalias 'menu-bar-bookmark-map (symbol-value 'menu-bar-bookmark-map)) + +(define-key menu-bar-bookmark-map [load] '("Load a Bookmark File..." . bookmark-load)) + +(define-key menu-bar-bookmark-map [write] '("Save Bookmarks As..." . bookmark-write)) + +(define-key menu-bar-bookmark-map [save] '("Save Bookmarks" . bookmark-save)) + +(define-key menu-bar-bookmark-map [edit] '("Edit Bookmark List" . bookmark-bmenu-list)) + +(define-key menu-bar-bookmark-map [delete] '("Delete Bookmark" . bookmark-menu-delete)) + +(define-key menu-bar-bookmark-map [rename] '("Rename Bookmark" . bookmark-menu-rename)) + +(define-key menu-bar-bookmark-map [locate] '("Insert Location" . bookmark-menu-locate)) + +(define-key menu-bar-bookmark-map [insert] '("Insert Contents" . bookmark-menu-insert)) + +(define-key menu-bar-bookmark-map [set] '("Set Bookmark" . bookmark-set)) + +(define-key menu-bar-bookmark-map [jump] '("Jump to Bookmark" . bookmark-menu-jump)) + ;;;*** ;;;### (autoloads nil "buff-menu" "packages/buff-menu.el") @@ -6436,62 +6438,6 @@ ;;;*** -;;;### (autoloads (sc-mode) "generic-sc" "packages/generic-sc.el") - -(autoload 'sc-mode "generic-sc" "\ -Toggle sc-mode. -SYSTEM can be sccs, rcs or cvs. -Cvs requires the pcl-cvs package. - -The following commands are available -\\[sc-next-operation] perform next logical source control operation on current file -\\[sc-show-changes] compare the version being edited with an older one -\\[sc-version-diff-file] compare two older versions of a file -\\[sc-show-history] display change history of current file -\\[sc-visit-previous-revision] display an older revision of current file -\\[sc-revert-file] revert buffer to last checked-in version -\\[sc-list-all-locked-files] show all files locked in current directory -\\[sc-list-locked-files] show all files locked by you in current directory -\\[sc-list-registered-files] show all files under source control in current directory -\\[sc-update-directory] get fresh copies of files checked-in by others in current directory -\\[sc-rename-file] rename the current file and its source control file - - -While you are entering a change log message for a check in, sc-log-entry-mode -will be in effect. - -Global user options: - sc-diff-command A list consisting of the command and flags - to be used for generating context diffs. - sc-mode-expert suppresses some conformation prompts, - notably for delta aborts and file saves. - sc-max-log-size specifies the maximum allowable size - of a log message plus one. - - -When using SCCS you have additional commands and options - -\\[sccs-insert-headers] insert source control headers in current file - -When you generate headers into a buffer using \\[sccs-insert-headers], -the value of sc-insert-headers-hook is called before insertion. If the -file is recognized a C or Lisp source, sc-insert-c-header-hook or -sc-insert-lisp-header-hook is called after insertion respectively. - - sccs-headers-wanted which %-keywords to insert when adding - headers with C-c h - sccs-insert-static if non-nil, keywords inserted in C files - get stuffed in a static string area so that - what(1) can see them in the compiled object code. - -When using CVS you have additional commands - -\\[sc-cvs-update-directory] update the current directory using pcl-cvs -\\[sc-cvs-file-status] show the CVS status of current file -" t nil) - -;;;*** - ;;;### (autoloads (gnuserv-start gnuserv-running-p) "gnuserv" "packages/gnuserv.el") (defcustom gnuserv-frame nil "*The frame to be used to display all edited files.\nIf nil, then a new frame is created for each file edited.\nIf t, then the currently selected frame will be used.\nIf a function, then this will be called with a symbol `x' or `tty' as the\nonly argument, and its return value will be interpreted as above." :tag "Gnuserv Frame" :type '(radio (const :tag "Create new frame each time" nil) (const :tag "Use selected frame" t) (function-item :tag "Use main Emacs frame" gnuserv-main-frame-function) (function-item :tag "Use visible frame, otherwise create new" gnuserv-visible-frame-function) (function-item :tag "Create special Gnuserv frame and use it" gnuserv-special-frame-function) (function :tag "Other")) :group 'gnuserv) @@ -7278,12 +7224,6 @@ ;;;*** -;;;### (autoloads nil "server" "packages/server.el") - -(make-obsolete 'server-start 'gnuserv-start) - -;;;*** - ;;;### (autoloads (install-shell-fonts) "shell-font" "packages/shell-font.el") (autoload 'install-shell-fonts "shell-font" "\ @@ -9396,6 +9336,23 @@ ;;;*** +;;;### (autoloads (savehist-save savehist-load) "savehist" "utils/savehist.el") + +(autoload 'savehist-load "savehist" "\ +Load the histories saved to `savehist-file'. +Unless PREFIX is non-nil, the function will also add the save function to +`kill-emacs-hook'. + +This function should be normally used from your Emacs init file. Since it +removes your current minibuffer histories (if any), it is unwise to call it +at any other time." t nil) + +(autoload 'savehist-save "savehist" "\ +Save the histories from `savehist-history-variables' to `savehist-file'. +A variable will be saved if it is bound and non-nil." t nil) + +;;;*** + ;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy skeleton-proxy-new define-skeleton) "skeleton" "utils/skeleton.el") (defvar skeleton-filter 'identity "\
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/prim/cus-load.el Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,303 @@ +(put 'gnus-start 'custom-loads '("gnus-group" "gnus-int" "gnus-start" "gnus-util" "gnus")) +(put 'extensions 'custom-loads '("wid-edit" "page-ext" "time-stamp" "tempo" "eldoc")) +(put 'change-log 'custom-loads '("add-log")) +(put 'message 'custom-loads '("message" "highlight-headers" "sendmail")) +(put 'filladapt 'custom-loads '("filladapt")) +(put 'psgml-dtd 'custom-loads '("psgml")) +(put 'copyright 'custom-loads '("upd-copyr")) +(put 'gnus-score-expire 'custom-loads '("gnus-kill" "gnus-score")) +(put 'gnus-score-kill 'custom-loads '("gnus-kill")) +(put 'eldoc 'custom-loads '("eldoc")) +(put 'prolog 'custom-loads '("prolog")) +(put 'recent-files-menu 'custom-loads '("recent-files")) +(put 'url 'custom-loads '("url-gw" "url-irc" "url-vars" "url")) +(put 'custom-faces 'custom-loads '("cus-edit")) +(put 'execute 'custom-loads '()) +(put 'gnus-message 'custom-loads '("message")) +(put 'mouse 'custom-loads '("mouse" "outl-mouse" "strokes" "avoid")) +(put 'mail-abbrevs 'custom-loads '("mail-abbrevs")) +(put 'gnus-summary-sort 'custom-loads '("gnus-sum")) +(put 'nnmail-procmail 'custom-loads '("nnmail")) +(put 'pascal 'custom-loads '("pascal")) +(put 'tex 'custom-loads '("tex" "texnfo-tex")) +(put 'ssl 'custom-loads '("ssl")) +(put 'tcl 'custom-loads '("tcl")) +(put 'ssh 'custom-loads '("ssh")) +(put 'etags 'custom-loads '("etags")) +(put 'limits 'custom-loads '()) +(put 'igrep 'custom-loads '("igrep")) +(put 'telnet 'custom-loads '("telnet")) +(put 'widgets 'custom-loads '("wid-browse" "wid-edit")) +(put 'minibuffer 'custom-loads '("minibuf" "detached-minibuf" "savehist")) +(put 'environment 'custom-loads '("minibuf" "modeline" "x-toolbar" "cus-edit" "dired-faces" "gnuserv" "sound")) +(put 'shell 'custom-loads '("shell" "term")) +(put 'sound 'custom-loads '("sound")) +(put 'gnus-article-buttons 'custom-loads '("gnus-art")) +(put 'gnus-extract-archive 'custom-loads '("gnus-uu")) +(put 'html 'custom-loads '("psgml-html")) +(put 'cc-style 'custom-loads '("cc-mode")) +(put 'icon 'custom-loads '("icon")) +(put 'gnus-article-headers 'custom-loads '("gnus-art" "gnus-sum")) +(put 'holidays 'custom-loads '("calendar")) +(put 'texinfo 'custom-loads '("texinfo" "texnfo-tex")) +(put 'gnus-score 'custom-loads '("gnus-nocem" "gnus")) +(put 'LaTeX-label 'custom-loads '("latex")) +(put 'gnus-summary-various 'custom-loads '("gnus-sum")) +(put 'LaTeX-environment 'custom-loads '("latex")) +(put 'terminals 'custom-loads '("gnuserv")) +(put 'gnus-topic 'custom-loads '("gnus-topic")) +(put 'comint-completion 'custom-loads '("comint")) +(put 'gnus-article-emphasis 'custom-loads '("gnus-art")) +(put 'earcon 'custom-loads '("earcon")) +(put 'auto-save 'custom-loads '("auto-save")) +(put 'LaTeX-macro 'custom-loads '("latex")) +(put 'gnus-group-foreign 'custom-loads '("gnus-group")) +(put 'xrdb 'custom-loads '("xrdb-mode")) +(put 'gnus-article-washing 'custom-loads '("gnus-xmas" "gnus-art")) +(put 'ispell 'custom-loads '("ispell")) +(put 'mail 'custom-loads '("gnus" "message" "mh-e" "mail-abbrevs" "feedmail" "metamail" "supercite" "highlight-headers" "smtpmail")) +(put 'gnus-summary-exit 'custom-loads '("gnus-sum")) +(put 'fortran-indent 'custom-loads '("fortran")) +(put 'ps-print-face 'custom-loads '("ps-print")) +(put 'gnus-article-saving 'custom-loads '("gnus-art")) +(put 'gnus-extract-view 'custom-loads '("gnus-sum" "gnus-uu")) +(put 'crypt 'custom-loads '("crypt")) +(put 'object 'custom-loads '("gopher")) +(put 'comint 'custom-loads '("comint-xemacs" "comint" "telnet")) +(put 'gnus-group-listing 'custom-loads '("gnus-group")) +(put 'man 'custom-loads '("man")) +(put 'lpr 'custom-loads '("lpr")) +(put 'gnus-summary 'custom-loads '("gnus-sum" "gnus")) +(put 'message-headers 'custom-loads '("message")) +(put 'ps-print-header 'custom-loads '("ps-print")) +(put 'docs 'custom-loads '("texinfo" "hyper-apropos" "makeinfo")) +(put 'lisp-indent 'custom-loads '("cl-indent")) +(put 'completion 'custom-loads '("completion")) +(put 'tools 'custom-loads '("ediff" "make-mode" "add-log" "diff" "etags" "func-menu" "rcompile")) +(put 'cc-comment 'custom-loads '("cc-mode")) +(put 'url-cookie 'custom-loads '("url-cookie" "url-vars")) +(put 'TeX-output 'custom-loads '("tex-buf" "tex")) +(put 'uniquify 'custom-loads '("uniquify")) +(put 'recent-files 'custom-loads '("recent-files")) +(put 'editing-basics 'custom-loads '("simple")) +(put 'gnus-group-select 'custom-loads '("gnus-sum")) +(put 'display-time-balloon 'custom-loads '("time")) +(put 'LaTeX-math 'custom-loads '("latex")) +(put 'internal 'custom-loads '("cus-edit")) +(put 'calendar 'custom-loads '("calendar")) +(put 'dabbrev 'custom-loads '("dabbrev")) +(put 'help-appearance 'custom-loads '("help")) +(put 'display-time 'custom-loads '("time")) +(put 'hypermedia 'custom-loads '("wid-edit" "gopher" "metamail" "browse-url" "url-vars" "w3-cus")) +(put 'save-place 'custom-loads '("saveplace")) +(put 'w3-advanced 'custom-loads '("w3-cus")) +(put 'lisp 'custom-loads '("edebug" "cl-indent" "elp")) +(put 'jka-compr 'custom-loads '("jka-compr")) +(put 'rlogin 'custom-loads '("rlogin")) +(put 'diff 'custom-loads '("diff")) +(put 'shell-faces 'custom-loads '("shell")) +(put 'sh-script 'custom-loads '("sh-script")) +(put 'w3-menus 'custom-loads '("w3-cus" "w3-menu")) +(put 'gnus-summary-mail 'custom-loads '("gnus-sum")) +(put 'elp 'custom-loads '("elp")) +(put 'psgml 'custom-loads '("psgml-html" "psgml")) +(put 'supercite-cite 'custom-loads '("supercite")) +(put 'gnus-score-default 'custom-loads '("gnus-score" "gnus-sum")) +(put 'nnmail-expire 'custom-loads '("nnmail")) +(put 'gnus-thread 'custom-loads '("gnus-sum")) +(put 'gnus-nocem 'custom-loads '("gnus-nocem")) +(put 'gnus-threading 'custom-loads '("gnus-sum")) +(put 'ediff-diff 'custom-loads '("ediff-diff")) +(put 'applications 'custom-loads '("cus-edit" "uniquify")) +(put 'outlines 'custom-loads '("outl-mouse" "whitespace-mode")) +(put 'paren-matching 'custom-loads '("paren")) +(put 'time-stamp 'custom-loads '("time-stamp")) +(put 'gnus-summary-maneuvering 'custom-loads '("gnus-sum")) +(put 'avoid 'custom-loads '("avoid")) +(put 'f90 'custom-loads '("f90")) +(put 'term 'custom-loads '("term")) +(put 'gnus-extract 'custom-loads '("gnus" "gnus-uu")) +(put 'help 'custom-loads '("help" "cus-edit" "info" "man")) +(put 'supercite 'custom-loads '("supercite")) +(put 'local 'custom-loads '("calendar" "gopher")) +(put 'nnmail-split 'custom-loads '("nnmail")) +(put 'keyboard 'custom-loads '("edmacro")) +(put 'minubuffer 'custom-loads '("minibuf")) +(put 'asm 'custom-loads '("asm-mode")) +(put 'url-gateway 'custom-loads '("url-gw")) +(put 'gnus-article-various 'custom-loads '("gnus-art" "gnus-sum")) +(put 'mh-hook 'custom-loads '("mh-e")) +(put 'message-sending 'custom-loads '("message")) +(put 'TeX-parse 'custom-loads '("tex")) +(put 'w3-files 'custom-loads '("w3-cus")) +(put 'widget-browse 'custom-loads '("wid-browse")) +(put 'data 'custom-loads '("auto-save" "jka-compr" "recent-files" "saveplace" "time-stamp")) +(put 'gnus-article 'custom-loads '("gnus-art" "gnus-cite")) +(put 'AUC-TeX 'custom-loads '("tex")) +(put 'TeX-command 'custom-loads '("tex")) +(put 'TeX-command-name 'custom-loads '("tex")) +(put 'edebug 'custom-loads '("edebug")) +(put 'ps-print 'custom-loads '("ps-print")) +(put 'TeX-commands 'custom-loads '("tex-buf")) +(put 'cc-indent 'custom-loads '("cc-mode")) +(put 'comm 'custom-loads '("ssl")) +(put 'ediff-window 'custom-loads '()) +(put 'gnus 'custom-loads '("gnus-art" "gnus-async" "gnus-cache" "gnus-demon" "gnus-dup" "gnus-eform" "gnus-uu" "gnus-win" "gnus-xmas" "gnus" "nnmail")) +(put 'ps-print-font 'custom-loads '("ps-print")) +(put 'id-select 'custom-loads '("id-select")) +(put 'gnus-xmas 'custom-loads '("gnus-xmas")) +(put 'fortran-comment 'custom-loads '("fortran")) +(put 'outl-mouse 'custom-loads '("outl-mouse")) +(put 'gnus-treading 'custom-loads '("gnus-sum")) +(put 'url-cache 'custom-loads '("url-cache" "url-vars")) +(put 'frames 'custom-loads '("rsz-minibuf" "ediff-wind" "balloon-help" "desktop" "detached-minibuf")) +(put 'psgml-html 'custom-loads '("psgml-html")) +(put 'nnmail 'custom-loads '("nnmail")) +(put 'gnus-article-hiding 'custom-loads '("gnus-art" "gnus-sum")) +(put 'customize 'custom-loads '("cus-face" "wid-edit" "cus-edit")) +(put 'w3-printing 'custom-loads '("w3-cus")) +(put 'nnmail-duplicate 'custom-loads '("nnmail")) +(put 'verilog 'custom-loads '("verilog-mode")) +(put 'supercite-attr 'custom-loads '("supercite")) +(put 'gnus-summary-visual 'custom-loads '("gnus-sum" "gnus")) +(put 'w3-images 'custom-loads '("w3-cus")) +(put 'shell-directories 'custom-loads '("shell")) +(put 'desktop 'custom-loads '("desktop")) +(put 'gnus-group-various 'custom-loads '("gnus-group")) +(put 'abbrev 'custom-loads '("cus-edit" "dabbrev")) +(put 'f90-indent 'custom-loads '("f90")) +(put 'nnmail-retrieve 'custom-loads '("nnmail")) +(put 'ediff-ptch 'custom-loads '()) +(put 'url-history 'custom-loads '("url-vars")) +(put 'strokes 'custom-loads '("strokes")) +(put 'message-interface 'custom-loads '("message")) +(put 'gnus-group 'custom-loads '("gnus-topic" "gnus")) +(put 'remote-compile 'custom-loads '("rcompile")) +(put 'programming 'custom-loads '("cus-edit" "compile")) +(put 'gnus-article-signature 'custom-loads '("gnus-art")) +(put 'metamail 'custom-loads '("metamail")) +(put 'toolbar 'custom-loads '("x-toolbar")) +(put 'compilation 'custom-loads '("compile")) +(put 'dired 'custom-loads '("dired-faces")) +(put 'gnus-duplicate 'custom-loads '("gnus-dup")) +(put 'url-hairy 'custom-loads '("url-vars")) +(put 'sgml 'custom-loads '("psgml-html" "psgml")) +(put 'gnus-score-adapt 'custom-loads '("gnus-score")) +(put 'comint-source 'custom-loads '("comint")) +(put 'makeinfo 'custom-loads '("makeinfo")) +(put 'nnmail-various 'custom-loads '("nnmail")) +(put 'fume 'custom-loads '("func-menu")) +(put 'cc-auto 'custom-loads '("cc-mode")) +(put 'nnmail-files 'custom-loads '("nnmail")) +(put 'gnus-asynchronous 'custom-loads '("gnus-async")) +(put 'url-mime 'custom-loads '("url-vars")) +(put 'gnus-visual 'custom-loads '("earcon" "gnus-art" "gnus-picon" "gnus" "smiley")) +(put 'c-macro 'custom-loads '("cmacexp")) +(put 'message-forwarding 'custom-loads '("message")) +(put 'TeX-indentation 'custom-loads '("latex")) +(put 'killing 'custom-loads '("simple")) +(put 'smtpmail 'custom-loads '("smtpmail")) +(put 'widget-button 'custom-loads '("wid-edit")) +(put 'message-news 'custom-loads '("message")) +(put 'paren-blinking 'custom-loads '("simple")) +(put 'vrml 'custom-loads '("vrml-mode")) +(put 'games 'custom-loads '("xmine")) +(put 'gnus-edit-form 'custom-loads '("gnus-eform")) +(put 'fast-lock 'custom-loads '("fast-lock")) +(put 'external 'custom-loads '("cus-edit")) +(put 'gnus-files 'custom-loads '("gnus" "nnmail")) +(put 'TeX-macro 'custom-loads '("latex")) +(put 'fortran 'custom-loads '("f90" "fortran")) +(put 'ediff-merge 'custom-loads '("ediff-merg")) +(put 'gnus-cite 'custom-loads '("gnus-cite")) +(put 'gnus-demon 'custom-loads '("gnus-demon")) +(put 'gnus-summary-choose 'custom-loads '("gnus-sum")) +(put 'cc-mode 'custom-loads '("cc-mode")) +(put 'development 'custom-loads '("cus-edit")) +(put 'mh-buffer 'custom-loads '("mh-utils")) +(put 'tempo 'custom-loads '("tempo")) +(put 'gnuserv 'custom-loads '("gnuserv")) +(put 'ps-print-horizontal 'custom-loads '("ps-print")) +(put 'gnus-windows 'custom-loads '("gnus-win")) +(put 'maint 'custom-loads '("upd-copyr")) +(put 'detached-minibuf 'custom-loads '("detached-minibuf")) +(put 'message-mail 'custom-loads '("message")) +(put 'ediff-mult 'custom-loads '("ediff-mult")) +(put 'windows 'custom-loads '()) +(put 'message-various 'custom-loads '("message")) +(put 'resize-minibuffer 'custom-loads '("rsz-minibuf")) +(put 'gnus-group-levels 'custom-loads '("gnus-group")) +(put 'languages 'custom-loads '("cus-edit" "asm-mode" "fortran" "icon" "pascal" "prolog" "rexx-mode" "sh-script" "tcl" "verilog-mode" "vrml-mode" "xrdb-mode" "psgml")) +(put 'gnus-summary-format 'custom-loads '("gnus-sum")) +(put 'gnus-score-decay 'custom-loads '("gnus-score")) +(put 'fill 'custom-loads '("filladapt")) +(put 'edmacro 'custom-loads '("edmacro")) +(put 'balloon-help 'custom-loads '("balloon-help")) +(put 'gnus-extract-post 'custom-loads '("gnus-uu")) +(put 'debug 'custom-loads '()) +(put 'supercite-hooks 'custom-loads '("supercite")) +(put 'display 'custom-loads '()) +(put 'texinfo-tex 'custom-loads '("texnfo-tex")) +(put 'faces 'custom-loads '("cus-edit" "wid-edit" "gnus" "message" "fast-lock" "ps-print" "highlight-headers" "font")) +(put 'passwd 'custom-loads '("passwd")) +(put 'pages 'custom-loads '("page-ext")) +(put 'diary 'custom-loads '("calendar")) +(put 'gnus-various 'custom-loads '("gnus-sum")) +(put 'cc-syntax 'custom-loads '("cc-mode")) +(put 'smiley 'custom-loads '()) +(put 'mh-compose 'custom-loads '("mh-comp")) +(put 'xmine 'custom-loads '("xmine")) +(put 'supercite-frames 'custom-loads '("supercite")) +(put 'browse-url 'custom-loads '("browse-url")) +(put 'feedmail 'custom-loads '("feedmail")) +(put 'enriched 'custom-loads '("enriched")) +(put 'gnus-article-highlight 'custom-loads '("gnus-art")) +(put 'emacs 'custom-loads '("cus-edit")) +(put 'processes 'custom-loads '("background" "comint" "rlogin" "shell" "ssh" "cus-edit" "term" "executable" "gnuserv" "ispell" "metamail" "rcompile" "passwd")) +(put 'news 'custom-loads '("gnus" "message" "supercite" "highlight-headers")) +(put 'rexx 'custom-loads '("rexx-mode")) +(put 'w3-hooks 'custom-loads '("w3-cus")) +(put 'executable 'custom-loads '("executable")) +(put 'LaTeX-indentation 'custom-loads '("latex")) +(put 'highlight-headers 'custom-loads '("highlight-headers")) +(put 'gnus-cache 'custom-loads '()) +(put 'message-insertion 'custom-loads '("message")) +(put 'hyper-apropos 'custom-loads '("hyper-apropos")) +(put 'psgml-insert 'custom-loads '("psgml")) +(put 'savehist 'custom-loads '("savehist")) +(put 'LaTeX 'custom-loads '("latex" "tex")) +(put 'wp 'custom-loads '("cus-edit" "enriched" "lpr" "ps-print")) +(put 'background 'custom-loads '("background")) +(put 'message-faces 'custom-loads '("message")) +(put 'w3 'custom-loads '("w3-cus" "w3-script")) +(put 'sh 'custom-loads '("sh-script")) +(put 'ps-print-vertical 'custom-loads '("ps-print")) +(put 'url-file 'custom-loads '("url-cache" "url-vars")) +(put 'alloc 'custom-loads '()) +(put 'isearch 'custom-loads '("isearch-mode")) +(put 'mh 'custom-loads '("mh-comp" "mh-e" "mh-utils")) +(put 'gnus-score-files 'custom-loads '("gnus-score")) +(put 'gopher 'custom-loads '("gopher")) +(put 'modeline 'custom-loads '("modeline")) +(put 'makefile-mode 'custom-loads '("make-mode")) +(put 'gnus-summary-marks 'custom-loads '("gnus-sum")) +(put 'appt 'custom-loads '("appt")) +(put 'picons 'custom-loads '("gnus-picon")) +(put 'processes-basics 'custom-loads '()) +(put 'nnmail-prepare 'custom-loads '("nnmail")) +(put 'whitespace 'custom-loads '("whitespace-mode")) +(put 'w3-display 'custom-loads '("w3-cus")) +(put 'w3-parsing 'custom-loads '("w3-cus")) +(put 'message-buffers 'custom-loads '("message")) +(put 'editing 'custom-loads '("simple" "cus-edit")) +(put 'matching 'custom-loads '("simple" "isearch-mode" "whitespace-mode" "completion")) +(put 'ediff 'custom-loads '("ediff-diff" "ediff-merg" "ediff-mult" "ediff-ptch" "ediff-wind" "ediff")) +(put 'gnus-article-mime 'custom-loads '("gnus-art" "gnus-sum")) +(put 'i18n 'custom-loads '("url-vars")) +(put 'ps-print-color 'custom-loads '("ps-print")) +(put 'info 'custom-loads '("info")) +(put 'w3-scripting 'custom-loads '("w3-script")) +(put 'TeX-file 'custom-loads '("tex")) +(put 'unix 'custom-loads '("rlogin" "shell" "ssh" "term" "sh-script")) +(put 'x 'custom-loads '()) +(put 'c 'custom-loads '("cc-mode" "cmacexp"))
--- a/lisp/prim/cus-start.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/prim/cus-start.el Mon Aug 13 09:38:25 2007 +0200 @@ -143,7 +143,7 @@ ;; If variables are removed from C code, give an error here! (message "Intrinsic `%S' not bound" symbol)) ;; This is called before any user can have changed the value. - (put symbol 'factory-value + (put symbol 'standard-value (list (custom-start-quote (default-value symbol)))) ;; Add it to the right group. (custom-add-to-group group symbol 'custom-variable)
--- a/lisp/prim/custom-load.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,288 +0,0 @@ -(put 'gnus-start 'custom-loads '("gnus-group" "gnus-int" "gnus-start" "gnus-util" "gnus")) -(put 'extensions 'custom-loads '("wid-edit" "page-ext" "time-stamp" "tempo" "eldoc")) -(put 'change-log 'custom-loads '("add-log")) -(put 'message 'custom-loads '("message" "highlight-headers" "sendmail")) -(put 'filladapt 'custom-loads '("filladapt")) -(put 'psgml-dtd 'custom-loads '("psgml")) -(put 'copyright 'custom-loads '("upd-copyr")) -(put 'gnus-score-expire 'custom-loads '("gnus-kill" "gnus-score")) -(put 'gnus-score-kill 'custom-loads '("gnus-kill")) -(put 'eldoc 'custom-loads '("eldoc")) -(put 'prolog 'custom-loads '("prolog")) -(put 'bookmark 'custom-loads '("bookmark")) -(put 'recent-files-menu 'custom-loads '("recent-files")) -(put 'url 'custom-loads '("url-gw" "url-irc" "url-vars" "url")) -(put 'custom-faces 'custom-loads '("cus-edit")) -(put 'execute 'custom-loads '()) -(put 'gnus-message 'custom-loads '("message")) -(put 'mouse 'custom-loads '("mouse" "outl-mouse" "strokes" "avoid")) -(put 'mail-abbrevs 'custom-loads '("mail-abbrevs")) -(put 'gnus-summary-sort 'custom-loads '("gnus-sum")) -(put 'nnmail-procmail 'custom-loads '("nnmail")) -(put 'pascal 'custom-loads '("pascal")) -(put 'tex 'custom-loads '("texnfo-tex")) -(put 'ssl 'custom-loads '("ssl")) -(put 'tcl 'custom-loads '("tcl")) -(put 'etags 'custom-loads '("etags")) -(put 'limits 'custom-loads '()) -(put 'igrep 'custom-loads '("igrep")) -(put 'telnet 'custom-loads '("telnet")) -(put 'widgets 'custom-loads '("wid-browse" "wid-edit")) -(put 'minibuffer 'custom-loads '("minibuf" "detached-minibuf")) -(put 'environment 'custom-loads '("minibuf" "modeline" "x-toolbar" "cus-edit" "dired-faces" "gnuserv" "sound")) -(put 'shell 'custom-loads '("shell" "term")) -(put 'sound 'custom-loads '("sound")) -(put 'gnus-article-buttons 'custom-loads '("gnus-art")) -(put 'gnus-extract-archive 'custom-loads '("gnus-uu")) -(put 'html 'custom-loads '("psgml-html")) -(put 'cc-style 'custom-loads '("cc-mode")) -(put 'icon 'custom-loads '("icon")) -(put 'gnus-article-headers 'custom-loads '("gnus-art" "gnus-sum")) -(put 'holidays 'custom-loads '("calendar")) -(put 'texinfo 'custom-loads '("texinfo" "texnfo-tex")) -(put 'gnus-score 'custom-loads '("gnus-nocem" "gnus")) -(put 'gnus-summary-various 'custom-loads '("gnus-sum")) -(put 'terminals 'custom-loads '("gnuserv")) -(put 'gnus-topic 'custom-loads '("gnus-topic")) -(put 'comint-completion 'custom-loads '("comint")) -(put 'gnus-article-emphasis 'custom-loads '("gnus-art")) -(put 'earcon 'custom-loads '("earcon")) -(put 'boolean 'custom-loads '("bookmark")) -(put 'auto-save 'custom-loads '("auto-save")) -(put 'gnus-group-foreign 'custom-loads '("gnus-group")) -(put 'xrdb 'custom-loads '("xrdb-mode")) -(put 'gnus-article-washing 'custom-loads '("gnus-xmas" "gnus-art")) -(put 'ispell 'custom-loads '("ispell")) -(put 'mail 'custom-loads '("gnus" "message" "mh-e" "mail-abbrevs" "feedmail" "metamail" "supercite" "highlight-headers" "smtpmail")) -(put 'gnus-summary-exit 'custom-loads '("gnus-sum")) -(put 'fortran-indent 'custom-loads '("fortran")) -(put 'ps-print-face 'custom-loads '("ps-print")) -(put 'gnus-article-saving 'custom-loads '("gnus-art")) -(put 'gnus-extract-view 'custom-loads '("gnus-sum" "gnus-uu")) -(put 'crypt 'custom-loads '("crypt")) -(put 'object 'custom-loads '("gopher")) -(put 'comint 'custom-loads '("comint-xemacs" "comint" "telnet")) -(put 'gnus-group-listing 'custom-loads '("gnus-group")) -(put 'man 'custom-loads '("man")) -(put 'lpr 'custom-loads '("lpr")) -(put 'gnus-summary 'custom-loads '("gnus-sum" "gnus")) -(put 'message-headers 'custom-loads '("message")) -(put 'ps-print-header 'custom-loads '("ps-print")) -(put 'docs 'custom-loads '("texinfo" "hyper-apropos" "makeinfo")) -(put 'lisp-indent 'custom-loads '("cl-indent")) -(put 'completion 'custom-loads '("completion")) -(put 'tools 'custom-loads '("ediff" "make-mode" "add-log" "diff" "etags" "func-menu" "generic-sc" "rcompile")) -(put 'cc-comment 'custom-loads '("cc-mode")) -(put 'url-cookie 'custom-loads '("url-cookie" "url-vars")) -(put 'uniquify 'custom-loads '("uniquify")) -(put 'recent-files 'custom-loads '("recent-files")) -(put 'editing-basics 'custom-loads '("simple")) -(put 'gnus-group-select 'custom-loads '("gnus-sum")) -(put 'display-time-balloon 'custom-loads '("time")) -(put 'internal 'custom-loads '("cus-edit")) -(put 'calendar 'custom-loads '("calendar")) -(put 'dabbrev 'custom-loads '("dabbrev")) -(put 'help-appearance 'custom-loads '("help")) -(put 'display-time 'custom-loads '("time")) -(put 'hypermedia 'custom-loads '("wid-edit" "gopher" "metamail" "browse-url" "url-vars" "w3-cus")) -(put 'save-place 'custom-loads '("saveplace")) -(put 'w3-advanced 'custom-loads '("w3-cus")) -(put 'lisp 'custom-loads '("edebug" "cl-indent" "elp")) -(put 'jka-compr 'custom-loads '("jka-compr")) -(put 'rlogin 'custom-loads '("rlogin")) -(put 'diff 'custom-loads '("diff")) -(put 'shell-faces 'custom-loads '("shell")) -(put 'sh-script 'custom-loads '("sh-script")) -(put 'w3-menus 'custom-loads '("w3-cus" "w3-menu")) -(put 'gnus-summary-mail 'custom-loads '("gnus-sum")) -(put 'elp 'custom-loads '("elp")) -(put 'psgml 'custom-loads '("psgml-html" "psgml")) -(put 'supercite-cite 'custom-loads '("supercite")) -(put 'gnus-score-default 'custom-loads '("gnus-score" "gnus-sum")) -(put 'nnmail-expire 'custom-loads '("nnmail")) -(put 'gnus-thread 'custom-loads '("gnus-sum")) -(put 'gnus-nocem 'custom-loads '("gnus-nocem")) -(put 'gnus-threading 'custom-loads '("gnus-sum")) -(put 'ediff-diff 'custom-loads '("ediff-diff")) -(put 'applications 'custom-loads '("cus-edit" "uniquify")) -(put 'outlines 'custom-loads '("outl-mouse" "whitespace-mode")) -(put 'paren-matching 'custom-loads '("paren")) -(put 'time-stamp 'custom-loads '("time-stamp")) -(put 'gnus-summary-maneuvering 'custom-loads '("gnus-sum")) -(put 'avoid 'custom-loads '("avoid")) -(put 'f90 'custom-loads '("f90")) -(put 'term 'custom-loads '("term")) -(put 'gnus-extract 'custom-loads '("gnus" "gnus-uu")) -(put 'help 'custom-loads '("help" "cus-edit" "info" "man")) -(put 'supercite 'custom-loads '("supercite")) -(put 'generic-sc 'custom-loads '("generic-sc")) -(put 'local 'custom-loads '("calendar" "gopher")) -(put 'nnmail-split 'custom-loads '("nnmail")) -(put 'keyboard 'custom-loads '("edmacro")) -(put 'minubuffer 'custom-loads '("minibuf")) -(put 'asm 'custom-loads '("asm-mode")) -(put 'url-gateway 'custom-loads '("url-gw")) -(put 'gnus-article-various 'custom-loads '("gnus-art" "gnus-sum")) -(put 'mh-hook 'custom-loads '("mh-e")) -(put 'message-sending 'custom-loads '("message")) -(put 'w3-files 'custom-loads '("w3-cus")) -(put 'widget-browse 'custom-loads '("wid-browse")) -(put 'data 'custom-loads '("auto-save" "jka-compr" "recent-files" "saveplace" "time-stamp")) -(put 'gnus-article 'custom-loads '("gnus-art" "gnus-cite")) -(put 'edebug 'custom-loads '("edebug")) -(put 'ps-print 'custom-loads '("ps-print")) -(put 'cc-indent 'custom-loads '("cc-mode")) -(put 'comm 'custom-loads '("ssl")) -(put 'ediff-window 'custom-loads '()) -(put 'gnus 'custom-loads '("gnus-art" "gnus-async" "gnus-cache" "gnus-demon" "gnus-dup" "gnus-eform" "gnus-uu" "gnus-win" "gnus-xmas" "gnus" "nnmail")) -(put 'ps-print-font 'custom-loads '("ps-print")) -(put 'id-select 'custom-loads '("id-select")) -(put 'gnus-xmas 'custom-loads '("gnus-xmas")) -(put 'fortran-comment 'custom-loads '("fortran")) -(put 'outl-mouse 'custom-loads '("outl-mouse")) -(put 'gnus-treading 'custom-loads '("gnus-sum")) -(put 'url-cache 'custom-loads '("url-cache" "url-vars")) -(put 'frames 'custom-loads '("rsz-minibuf" "ediff-wind" "balloon-help" "desktop" "detached-minibuf")) -(put 'psgml-html 'custom-loads '("psgml-html")) -(put 'nnmail 'custom-loads '("nnmail")) -(put 'gnus-article-hiding 'custom-loads '("gnus-art" "gnus-sum")) -(put 'customize 'custom-loads '("cus-face" "wid-edit" "cus-edit")) -(put 'w3-printing 'custom-loads '("w3-cus")) -(put 'nnmail-duplicate 'custom-loads '("nnmail")) -(put 'verilog 'custom-loads '("verilog-mode")) -(put 'supercite-attr 'custom-loads '("supercite")) -(put 'gnus-summary-visual 'custom-loads '("gnus-sum" "gnus")) -(put 'w3-images 'custom-loads '("w3-cus")) -(put 'shell-directories 'custom-loads '("shell")) -(put 'desktop 'custom-loads '("desktop")) -(put 'gnus-group-various 'custom-loads '("gnus-group")) -(put 'abbrev 'custom-loads '("cus-edit" "dabbrev")) -(put 'f90-indent 'custom-loads '("f90")) -(put 'nnmail-retrieve 'custom-loads '("nnmail")) -(put 'ediff-ptch 'custom-loads '()) -(put 'url-history 'custom-loads '("url-vars")) -(put 'strokes 'custom-loads '("strokes")) -(put 'message-interface 'custom-loads '("message")) -(put 'gnus-group 'custom-loads '("gnus-topic" "gnus")) -(put 'remote-compile 'custom-loads '("rcompile")) -(put 'programming 'custom-loads '("cus-edit" "compile")) -(put 'gnus-article-signature 'custom-loads '("gnus-art")) -(put 'metamail 'custom-loads '("metamail")) -(put 'toolbar 'custom-loads '("x-toolbar")) -(put 'compilation 'custom-loads '("compile")) -(put 'dired 'custom-loads '("dired-faces")) -(put 'gnus-duplicate 'custom-loads '("gnus-dup")) -(put 'url-hairy 'custom-loads '("url-vars")) -(put 'sgml 'custom-loads '("psgml-html" "psgml")) -(put 'gnus-score-adapt 'custom-loads '("gnus-score")) -(put 'comint-source 'custom-loads '("comint")) -(put 'makeinfo 'custom-loads '("makeinfo")) -(put 'nnmail-various 'custom-loads '("nnmail")) -(put 'fume 'custom-loads '("func-menu")) -(put 'cc-auto 'custom-loads '("cc-mode")) -(put 'nnmail-files 'custom-loads '("nnmail")) -(put 'gnus-asynchronous 'custom-loads '("gnus-async")) -(put 'url-mime 'custom-loads '("url-vars")) -(put 'gnus-visual 'custom-loads '("earcon" "gnus-art" "gnus-picon" "gnus" "smiley")) -(put 'c-macro 'custom-loads '("cmacexp")) -(put 'message-forwarding 'custom-loads '("message")) -(put 'killing 'custom-loads '("simple")) -(put 'smtpmail 'custom-loads '("smtpmail")) -(put 'message-news 'custom-loads '("message")) -(put 'paren-blinking 'custom-loads '("simple")) -(put 'vrml 'custom-loads '("vrml-mode")) -(put 'games 'custom-loads '("xmine")) -(put 'gnus-edit-form 'custom-loads '("gnus-eform")) -(put 'fast-lock 'custom-loads '("fast-lock")) -(put 'external 'custom-loads '("cus-edit")) -(put 'gnus-files 'custom-loads '("gnus" "nnmail")) -(put 'fortran 'custom-loads '("f90" "fortran")) -(put 'ediff-merge 'custom-loads '("ediff-merg")) -(put 'gnus-cite 'custom-loads '("gnus-cite")) -(put 'gnus-demon 'custom-loads '("gnus-demon")) -(put 'gnus-summary-choose 'custom-loads '("gnus-sum")) -(put 'cc-mode 'custom-loads '("cc-mode")) -(put 'development 'custom-loads '("cus-edit")) -(put 'mh-buffer 'custom-loads '("mh-utils")) -(put 'tempo 'custom-loads '("tempo")) -(put 'gnuserv 'custom-loads '("gnuserv")) -(put 'ps-print-horizontal 'custom-loads '("ps-print")) -(put 'gnus-windows 'custom-loads '("gnus-win")) -(put 'maint 'custom-loads '("upd-copyr")) -(put 'detached-minibuf 'custom-loads '("detached-minibuf")) -(put 'message-mail 'custom-loads '("message")) -(put 'ediff-mult 'custom-loads '("ediff-mult")) -(put 'windows 'custom-loads '()) -(put 'message-various 'custom-loads '("message")) -(put 'resize-minibuffer 'custom-loads '("rsz-minibuf")) -(put 'gnus-group-levels 'custom-loads '("gnus-group")) -(put 'languages 'custom-loads '("cus-edit" "asm-mode" "fortran" "icon" "pascal" "prolog" "rexx-mode" "sh-script" "tcl" "verilog-mode" "vrml-mode" "xrdb-mode" "psgml")) -(put 'gnus-summary-format 'custom-loads '("gnus-sum")) -(put 'gnus-score-decay 'custom-loads '("gnus-score")) -(put 'fill 'custom-loads '("filladapt")) -(put 'edmacro 'custom-loads '("edmacro")) -(put 'balloon-help 'custom-loads '("balloon-help")) -(put 'gnus-extract-post 'custom-loads '("gnus-uu")) -(put 'debug 'custom-loads '()) -(put 'supercite-hooks 'custom-loads '("supercite")) -(put 'display 'custom-loads '()) -(put 'texinfo-tex 'custom-loads '("texnfo-tex")) -(put 'faces 'custom-loads '("cus-edit" "wid-edit" "gnus" "message" "fast-lock" "ps-print" "highlight-headers" "font")) -(put 'passwd 'custom-loads '("passwd")) -(put 'pages 'custom-loads '("page-ext")) -(put 'diary 'custom-loads '("calendar")) -(put 'gnus-various 'custom-loads '("gnus-sum")) -(put 'cc-syntax 'custom-loads '("cc-mode")) -(put 'smiley 'custom-loads '()) -(put 'mh-compose 'custom-loads '("mh-comp")) -(put 'xmine 'custom-loads '("xmine")) -(put 'supercite-frames 'custom-loads '("supercite")) -(put 'browse-url 'custom-loads '("browse-url")) -(put 'feedmail 'custom-loads '("feedmail")) -(put 'enriched 'custom-loads '("enriched")) -(put 'gnus-article-highlight 'custom-loads '("gnus-art")) -(put 'emacs 'custom-loads '("cus-edit")) -(put 'processes 'custom-loads '("background" "comint" "rlogin" "shell" "cus-edit" "term" "executable" "gnuserv" "ispell" "metamail" "rcompile" "passwd")) -(put 'news 'custom-loads '("gnus" "message" "supercite" "highlight-headers")) -(put 'rexx 'custom-loads '("rexx-mode")) -(put 'w3-hooks 'custom-loads '("w3-cus")) -(put 'executable 'custom-loads '("executable")) -(put 'highlight-headers 'custom-loads '("highlight-headers")) -(put 'gnus-cache 'custom-loads '()) -(put 'message-insertion 'custom-loads '("message")) -(put 'hyper-apropos 'custom-loads '("hyper-apropos")) -(put 'psgml-insert 'custom-loads '("psgml")) -(put 'wp 'custom-loads '("cus-edit" "enriched" "lpr" "ps-print")) -(put 'background 'custom-loads '("background")) -(put 'message-faces 'custom-loads '("message")) -(put 'w3 'custom-loads '("w3-cus" "w3-script")) -(put 'sh 'custom-loads '("sh-script")) -(put 'ps-print-vertical 'custom-loads '("ps-print")) -(put 'url-file 'custom-loads '("url-cache" "url-vars")) -(put 'alloc 'custom-loads '()) -(put 'isearch 'custom-loads '("isearch-mode")) -(put 'mh 'custom-loads '("mh-comp" "mh-e" "mh-utils")) -(put 'gnus-score-files 'custom-loads '("gnus-score")) -(put 'gopher 'custom-loads '("gopher")) -(put 'modeline 'custom-loads '("modeline")) -(put 'makefile-mode 'custom-loads '("make-mode")) -(put 'gnus-summary-marks 'custom-loads '("gnus-sum")) -(put 'appt 'custom-loads '("appt")) -(put 'picons 'custom-loads '("gnus-picon")) -(put 'processes-basics 'custom-loads '()) -(put 'nnmail-prepare 'custom-loads '("nnmail")) -(put 'whitespace 'custom-loads '("whitespace-mode")) -(put 'w3-display 'custom-loads '("w3-cus")) -(put 'w3-parsing 'custom-loads '("w3-cus")) -(put 'message-buffers 'custom-loads '("message")) -(put 'editing 'custom-loads '("simple" "cus-edit")) -(put 'matching 'custom-loads '("simple" "isearch-mode" "whitespace-mode" "bookmark" "completion")) -(put 'ediff 'custom-loads '("ediff-diff" "ediff-merg" "ediff-mult" "ediff-ptch" "ediff-wind" "ediff")) -(put 'gnus-article-mime 'custom-loads '("gnus-art" "gnus-sum")) -(put 'i18n 'custom-loads '("url-vars")) -(put 'ps-print-color 'custom-loads '("ps-print")) -(put 'info 'custom-loads '("info")) -(put 'w3-scripting 'custom-loads '("w3-script")) -(put 'unix 'custom-loads '("rlogin" "shell" "term" "sh-script")) -(put 'x 'custom-loads '()) -(put 'c 'custom-loads '("cc-mode" "cmacexp"))
--- a/lisp/prim/files.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/prim/files.el Mon Aug 13 09:38:25 2007 +0200 @@ -1092,24 +1092,26 @@ (defvar auto-mode-alist '(("\\.te?xt\\'" . text-mode) ("\\.[ch]\\'" . c-mode) - ("\\.ltx\\'" . latex-mode) ("\\.el\\'" . emacs-lisp-mode) - ("\\.l\\(i?sp\\)?\\'" . lisp-mode) - ("\\.f\\(or\\)?\\'" . fortran-mode) - ("\\.p\\(as\\)?\\'" . pascal-mode) - ("\\.ad[abs]\\'" . ada-mode) - ("\\.p[lm]\\'" . perl-mode) ("\\.\\([CH]\\|cc\\|hh\\)\\'" . c++-mode) ("\\.[ch]\\(pp\\|xx\\|\\+\\+\\)\\'" . c++-mode) ("\\.java\\'" . java-mode) + ("\\.f\\(or\\)?\\'" . fortran-mode) + ("\\.F\\(OR\\)?\\'" . fortran-mode) + ("\\.[fF]90\\'" . f90-mode) ;;; Less common extensions come here ;;; so more common ones above are found faster. + ("\\.p[lm]\\'" . perl-mode) + ("\\.py\\'" . python-mode) ("\\.texi\\(nfo\\)?\\'" . texinfo-mode) + ("\\.ad[abs]\\'" . ada-mode) + ("\\.l\\(i?sp\\)?\\'" . lisp-mode) + ("\\.p\\(as\\)?\\'" . pascal-mode) + ("\\.ltx\\'" . latex-mode) ("\\.[sS]\\'" . asm-mode) ("[Cc]hange.?[Ll]og?\\(.[0-9]+\\)?\\'" . change-log-mode) ("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode) ("\\.scm\\(\\.[0-9]*\\)?\\'" . scheme-mode) - ("\\.py\\'" . python-mode) ("\\.e\\'" . eiffel-mode) ("\\.mss\\'" . scribe-mode) ("\\.m\\([mes]\\|an\\)\\'" . nroff-mode) @@ -1125,7 +1127,6 @@ ("\\.letter\\'" . text-mode) ("\\.\\(tcl\\|exp\\)\\'" . tcl-mode) ("\\.wrl\\'" . vrml-mode) - ("\\.f90\\'" . f90-mode) ("\\.awk\\'" . awk-mode) ("\\.prolog\\'" . prolog-mode) ("\\.tar\\'" . tar-mode) @@ -1150,13 +1151,13 @@ ;; _emacs following a directory delimiter ;; in MsDos syntax ("[:/]_emacs\\'" . emacs-lisp-mode) - ("\\.m4\\'" . m4-mode) + ("\\.m4\\'" . autoconf-mode) ("configure\\.in\\'" . autoconf-mode) ("\\.ml\\'" . lisp-mode) ("\\.ma?k\\'" . makefile-mode) ("[Mm]akefile\\(\\.\\|\\'\\)" . makefile-mode) ) - "Alist of filename patterns vs. corresponding major mode functions. +"Alist of filename patterns vs. corresponding major mode functions. Each element looks like (REGEXP . FUNCTION) or (REGEXP FUNCTION NON-NIL). \(NON-NIL stands for anything that is not nil; the value does not matter.) Visiting a file whose name matches REGEXP specifies FUNCTION as the
--- a/lisp/prim/help.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/prim/help.el Mon Aug 13 09:38:25 2007 +0200 @@ -602,12 +602,25 @@ (Info-find-node "xemacs-faq" "Top")) (switch-to-buffer "*info*")) +(defcustom view-lossage-key-count 100 + "*Number of keys `view-lossage' shows. +The maximum number of available keys is governed by `recent-keys-ring-size'." + :type 'integer + :group 'help) + +(defcustom view-lossage-message-count 100 + "*Number of minibuffer messages `view-lossage' shows." + :type 'integer + :group 'help) + (defun view-lossage () - "Display last 100 input keystrokes and last 100 or so minibuffer messages." + "Display recent input keystrokes and recent minibuffer messages. +The number of keys shown is controlled by `view-lossage-key-count'. +The number of messages shown is controlled by `view-lossage-message-count'." (interactive) (with-displaying-help-buffer (lambda () - (princ (key-description (recent-keys))) + (princ (key-description (recent-keys view-lossage-key-count))) (save-excursion (set-buffer standard-output) (goto-char (point-min)) @@ -625,7 +638,7 @@ (goto-char (point-max)) (set-buffer standard-output) (while (and (> (point buffer) (point-min buffer)) - (< count 100)) + (< count view-lossage-message-count)) (setq oldpoint (point buffer)) (forward-line -1 buffer) (insert-buffer-substring buffer (point buffer) oldpoint) @@ -671,7 +684,7 @@ it prints which keystrokes invoke that command. \\[describe-distribution] XEmacs ordering information. \\[describe-copying] print XEmacs copying permission (General Public License). -\\[view-emacs-news] print print news of recent XEmacs changes. +\\[view-emacs-news] print news of recent XEmacs changes. \\[describe-no-warranty] print information on absence of warranty for XEmacs." (interactive) (let ((help-key (copy-event last-command-event))
--- a/lisp/prim/keydefs.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/prim/keydefs.el Mon Aug 13 09:38:25 2007 +0200 @@ -95,7 +95,7 @@ (define-key global-map "\C-e" 'end-of-line) (define-key global-map "\C-f" 'forward-char) (define-key global-map "\C-d" 'delete-char) -(define-key global-map "\177" 'delete-backward-char) +(define-key global-map "\177" 'backspace-or-delete) ;; FSFmacs files.el @@ -371,9 +371,8 @@ ;; Default binding of "Backspace" is no longer the same as delete. ;; Default binding of "Control-h" is help. -(define-key global-map 'backspace "\C-?") -(define-key global-map '(meta backspace) "\e\C-?") - +(define-key global-map 'backspace 'delete-backward-char) +(define-key global-map '(meta backspace) 'backward-kill-word) (define-key global-map "\M-\C-z" 'activate-region)
--- a/lisp/prim/loadup.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/prim/loadup.el Mon Aug 13 09:38:25 2007 +0200 @@ -210,7 +210,6 @@ (load-gc "energize/energize-load.el")) (when (featurep 'sparcworks) (load-gc "sunpro/sunpro-load.el")) - (load-gc "custom-load") (fmakunbound 'load-gc) )) ;; end of call-with-condition-handler
--- a/lisp/prim/minibuf.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/prim/minibuf.el Mon Aug 13 09:38:25 2007 +0200 @@ -1787,25 +1787,29 @@ (defun mouse-file-display-completion-list (window dir minibuf user-data) (let ((standard-output (window-buffer window))) - (display-completion-list - (directory-files dir nil nil nil t) - :window-width (* 2 (window-width window)) - :activate-callback - 'mouse-read-file-name-activate-callback - :user-data user-data - :reference-buffer minibuf - :help-string ""))) + (condition-case nil + (display-completion-list + (directory-files dir nil nil nil t) + :window-width (* 2 (window-width window)) + :activate-callback + 'mouse-read-file-name-activate-callback + :user-data user-data + :reference-buffer minibuf + :help-string "") + (t nil)))) (defun mouse-directory-display-completion-list (window dir minibuf user-data) (let ((standard-output (window-buffer window))) - (display-completion-list - (delete "." (directory-files dir nil nil nil 1)) - :window-width (window-width window) - :activate-callback - 'mouse-read-file-name-activate-callback - :user-data user-data - :reference-buffer minibuf - :help-string ""))) + (condition-case nil + (display-completion-list + (delete "." (directory-files dir nil nil nil 1)) + :window-width (window-width window) + :activate-callback + 'mouse-read-file-name-activate-callback + :user-data user-data + :reference-buffer minibuf + :help-string "") + (t nil)))) (defun mouse-read-file-name-activate-callback (event extent user-data) (let* ((file (extent-string extent))
--- a/lisp/prim/mouse.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/prim/mouse.el Mon Aug 13 09:38:25 2007 +0200 @@ -47,9 +47,16 @@ :type 'boolean :group 'mouse) -(defvar mouse-yank-function 'yank ; x11/x-mouse changes this... +(defvar mouse-yank-function 'mouse-consolidated-yank "Function that is called upon by `mouse-yank' to actually insert text.") +(defun mouse-consolidated-yank () + (interactive) + (case (device-type) + (x (x-yank-function)) + (tty (yank)) + (otherwise (yank)))) + (defun mouse-select () "Select Emacs window the mouse is on."
--- a/lisp/prim/process.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/prim/process.el Mon Aug 13 09:38:25 2007 +0200 @@ -325,3 +325,7 @@ ;; by "William G. Dubuque" <wgd@zurich.ai.mit.edu> (with-output-to-string (call-process shell-file-name nil t nil "-c" command))) + +(defalias 'shell-command-to-string 'exec-to-string) + +;;; process.el ends here
--- a/lisp/prim/simple.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/prim/simple.el Mon Aug 13 09:38:25 2007 +0200 @@ -353,6 +353,35 @@ (and overwrite-mode (not (eolp)) (save-excursion (insert-char ?\ arg)))) +(defcustom delete-erases-forward nil + "If non-nil, the DEL key will erase one character forwards. +If nil, the DEL key will erase one character backwards." + :type 'boolean + :group 'editing-basics) + +(defcustom backspace-or-delete-hook nil + "Hook that is run prior to executing the backspace-or-delete function. +Return a non-nil value to indicate that the editing chore has been +handled and the backspace-or-delete function will exit without doing +anything else." + :type 'hook) + +(defun backspace-or-delete (arg) + "Delete either one character backwards or one character forwards. +Controlled by the state of `delete-erases-forward' and whether the +BackSpace keysym even exists on your keyboard. If you don't have a +BackSpace keysym, the delete key should always delete one character +backwards." + (interactive "*P") + (unless (run-hook-with-args 'backspace-or-delete-hook arg) + (if zmacs-region-active-p + (kill-region (point) (mark)) + (if (and delete-erases-forward + (or (eq 'tty (device-type)) + (x-keysym-on-keyboard-p "BackSpace"))) + (delete-char (prefix-numeric-value arg)) + (delete-backward-char (prefix-numeric-value arg)))))) + (defun zap-to-char (arg char) "Kill up to and including ARG'th occurrence of CHAR. Goes backward if ARG is negative; error if CHAR not found."
--- a/lisp/tm/tm-edit.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/tm/tm-edit.el Mon Aug 13 09:38:25 2007 +0200 @@ -6,7 +6,7 @@ ;; MORIOKA Tomohiko <morioka@jaist.ac.jp> ;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp> ;; Created: 1994/08/21 renamed from mime.el -;; Version: $Revision: 1.9 $ +;; Version: $Revision: 1.10 $ ;; Keywords: mail, news, MIME, multimedia, multilingual ;; This file is part of tm (Tools for MIME). @@ -120,7 +120,7 @@ ;;; (defconst mime-editor/RCS-ID - "$Id: tm-edit.el,v 1.9 1997/03/22 06:02:45 steve Exp $") + "$Id: tm-edit.el,v 1.10 1997/05/29 23:50:20 steve Exp $") (defconst mime-editor/version (get-version-string mime-editor/RCS-ID)) @@ -210,6 +210,7 @@ ("image" ("gif") ("jpeg") + ("png") ("tiff") ("x-pic") ("x-mag") @@ -245,6 +246,11 @@ "base64" "inline" (("filename" . file)) ) + ("\\.png$" + "image" "png" nil + "base64" + "inline" (("filename" . file)) + ) ("\\.tiff$" "image" "tiff" nil "base64"
--- a/lisp/tm/tm-image.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/tm/tm-image.el Mon Aug 13 09:38:25 2007 +0200 @@ -7,7 +7,7 @@ ;; Dan Rich <drich@morpheus.corp.sgi.com> ;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp> ;; Created: 1995/12/15 -;; Version: $Id: tm-image.el,v 1.5 1997/03/16 03:05:46 steve Exp $ +;; Version: $Id: tm-image.el,v 1.6 1997/05/29 23:50:21 steve Exp $ ;; Keywords: image, picture, X-Face, MIME, multimedia, mail, news @@ -132,6 +132,7 @@ ("image/x-xpixmap" . xpm) ("image/x-pic" . pic) ("image/x-mag" . mag) + ("image/png" . png) )) (defvar mime-viewer/ps-to-gif-command "pstogif")
--- a/lisp/tm/tm-view.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/tm/tm-view.el Mon Aug 13 09:38:25 2007 +0200 @@ -4,7 +4,7 @@ ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp> ;; Created: 1994/7/13 (1994/8/31 obsolete tm-body.el) -;; Version: $Revision: 1.4 $ +;; Version: $Revision: 1.5 $ ;; Keywords: mail, news, MIME, multimedia ;; This file is part of tm (Tools for MIME). @@ -42,7 +42,7 @@ ;;; (defconst mime-viewer/RCS-ID - "$Id: tm-view.el,v 1.4 1997/04/24 04:00:14 steve Exp $") + "$Id: tm-view.el,v 1.5 1997/05/29 23:50:21 steve Exp $") (defconst mime-viewer/version (get-version-string mime-viewer/RCS-ID)) (defconst mime/viewer-version mime-viewer/version) @@ -77,6 +77,10 @@ (method "tm-image" nil 'file 'type 'encoding 'mode 'name) (mode "play" "print") ) + ((type . "image/png") + (method "tm-image" nil 'file 'type 'encoding 'mode 'name) + (mode "play" "print") + ) ((type . "image/tiff") (method "tm-image" nil 'file 'type 'encoding 'mode 'name) (mode "play" "print")
--- a/lisp/utils/autoload.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/utils/autoload.el Mon Aug 13 09:38:25 2007 +0200 @@ -337,7 +337,7 @@ autoloads go somewhere else.") (defvar generated-custom-file - (expand-file-name "../lisp/prim/custom-load.el" data-directory) + (expand-file-name "../lisp/prim/cus-load.el" data-directory) "*File `update-file-autoloads' puts customization into.") ;; Written by Per Abrahamsen
--- a/lisp/utils/mailpost.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -;;; mailpost.el --- RMAIL coupler to /usr/uci/post mailer - -;; This is in the public domain -;; since Delp distributed it without a copyright notice in 1986. - -;; Author: Gary Delp <delp@huey.Udel.Edu> -;; Maintainer: FSF -;; Created: 13 Jan 1986 -;; Keywords: mail - -;; 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: FSF 19.34. - -;;; Commentary: - -;; Yet another mail interface. this for the rmail system to provide -;; the missing sendmail interface on systems without /usr/lib/sendmail, -;; but with /usr/uci/post. - -;;; Code: - -;(require 'mailalias) ;; not in XEmacs -(require 'sendmail) - -;; (setq send-mail-function 'post-mail-send-it) - -(defun post-mail-send-it () - "The MH -post interface for `rmail-mail' to call. -To use it, include \"(setq send-mail-function 'post-mail-send-it)\" in -site-init." - (let ((errbuf (if mail-interactive - (generate-new-buffer " post-mail errors") - 0)) - (temfile "/tmp/,rpost") - (tembuf (generate-new-buffer " post-mail temp")) - (case-fold-search nil) - delimline - (mailbuf (current-buffer))) - (unwind-protect - (save-excursion - (set-buffer tembuf) - (erase-buffer) - (insert-buffer-substring mailbuf) - (goto-char (point-max)) - ;; require one newline at the end. - (or (= (preceding-char) ?\n) - (insert ?\n)) - ;; Change header-delimiter to be what post-mail expects. - (goto-char (point-min)) - (search-forward (concat "\n" mail-header-separator "\n")) - (replace-match "\n\n") - (backward-char 1) - (setq delimline (point-marker)) - ;; XEmacs: expand-mail-aliases doesn't exist. - (if (and mail-aliases (fboundp 'expand-mail-aliases)) - (expand-mail-aliases (point-min) delimline)) - (goto-char (point-min)) - ;; ignore any blank lines in the header - (while (and (re-search-forward "\n\n\n*" delimline t) - (< (point) delimline)) - (replace-match "\n")) - ;; Find and handle any FCC fields. - (let ((case-fold-search t)) - (goto-char (point-min)) - (if (re-search-forward "^FCC:" delimline t) - (mail-do-fcc delimline)) - ;; If there is a From and no Sender, put it a Sender. - (goto-char (point-min)) - (and (re-search-forward "^From:" delimline t) - (not (save-excursion - (goto-char (point-min)) - (re-search-forward "^Sender:" delimline t))) - (progn - (forward-line 1) - (insert "Sender: " (user-login-name) "\n"))) - ;; don't send out a blank subject line - (goto-char (point-min)) - (if (re-search-forward "^Subject:[ \t]*\n" delimline t) - (replace-match "")) - (if mail-interactive - (save-excursion - (set-buffer errbuf) - (erase-buffer)))) - (write-file (setq temfile (make-temp-name temfile))) - (set-file-modes temfile 384) - (apply 'call-process - (append (list (if (boundp 'post-mail-program) - post-mail-program - "/usr/uci/lib/mh/post") - nil errbuf nil - "-nofilter" "-msgid") - (if mail-interactive '("-watch") '("-nowatch")) - (list temfile))) - (if mail-interactive - (save-excursion - (set-buffer errbuf) - (goto-char (point-min)) - (while (re-search-forward "\n\n* *" nil t) - (replace-match "; ")) - (if (not (zerop (buffer-size))) - (error "Sending...failed to %s" - (buffer-substring (point-min) (point-max))))))) - (kill-buffer tembuf) - (if (bufferp errbuf) - (switch-to-buffer errbuf))))) - -;;; mailpost.el ends here
--- a/lisp/utils/meese.el Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -;;; meese.el --- protect the impressionable young minds of America - -;; This is in the public domain on account of being distributed since -;; 1985 or 1986 without a copyright notice. - -;; Maintainer: FSF -;; Keywords: games - -;;; Commentary: -;; This file is grossly misnamed. It should be called reno.el. - -;;; Synched up with: FSF 19.34. - -;;; Code: - -(defun protect-innocence-hook () - (let ((dir (file-name-directory buffer-file-name))) - (if (and (equal buffer-file-name (expand-file-name "sex.6" dir)) - (file-exists-p buffer-file-name) - (not (y-or-n-p "Are you over 18? "))) - (progn - (clear-visited-file-modtime) - (setq buffer-file-name (expand-file-name "celibacy.1" dir)) - (let ((inhibit-read-only t)) ; otherwise (erase-buffer) may bomb. - (erase-buffer) - (insert-file-contents buffer-file-name t)) - (rename-buffer (file-name-nondirectory buffer-file-name)))))) - -(add-hook 'find-file-hooks 'protect-innocence-hook) -(provide 'meese) - -;;; meese.el ends here
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/utils/savehist.el Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,186 @@ +;;; savehist.el --- Save minibuffer history + +;; Copyright (c) 1997 Free Software Foundation + +;; Author: Hrvoje Niksic <hniksic@srce.hr> +;; Keywords: minibuffer +;; Version: 0.2 + +;; 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: + +;; Many editors (e.g. Vim) have the feature of saving minibuffer +;; history to an external file after exit. This package provides the +;; same feature in Emacs. When Emacs is about the exit, +;; `savehist-save' will dump the contents of various minibuffer +;; histories (as determined by `savehist-history-variables') to a save +;; file (`~/.emacs-history' by default). Although the package was +;; designed for saving the minibuffer histories, any variables can be +;; saved that way. + +;; To use savehist, put the following to `~/.emacs': +;; +;; (require 'savehist) +;; (savehist-load) + +;; Be sure to have `savehist.el' in a directory that is in your +;; load-path, and byte-compile it. + +;; This code should work on XEmacs 19.14 and later, as well as GNU +;; Emacs 19.34 and later. + + +;;; Code: + +(require 'custom) + +;; User variables + +(defgroup savehist nil + "Save minibuffer history." + :group 'minibuffer) + + +(defcustom savehist-history-variables + '( + ;; Catch-all minibuffer history + minibuffer-history + ;; File-oriented commands + file-name-history + ;; Regexp-related reads + regexp-history + ;; Searches in minibuffer (via `M-r' and such) + minibuffer-history-search-history + ;; Query replace + query-replace-history + ;; eval-expression (`M-:') + read-expression-history + ;; shell-command (`M-!') + shell-command-history + ;; Viper stuff + vip-ex-history vip-search-history + vip-replace1-history vip-replace2-history + vip-shell-history vip-search-history + + ;; XEmacs-specific: + ;; Buffer-related commands + buffer-history + ;; Reads of variables and functions + variable-history function-history + ;; Extended commands + read-command-history + + ;; GNU Emacs-specific: + ;; Extended commands + extended-command-history + + ;; This is not a list, but it's cool to have it anyway, since it's + ;; minibuffer history too. + compile-command) + "*List of symbols to be saved. +Every symbol should refer to a variable. The variable will be saved only +if it is bound is bound, and has a non-nil value. Thus it is safe to +specify a superset of the variables a user is expected to want to save. + +Default value contains minibuffer history variables used by XEmacs, GNU +Emacs and Viper (uh-oh). `compile-command' was added for good measure." + :type '(repeat (symbol :tag "Variable")) + :group 'minibuffer) + +(defcustom savehist-file "~/.emacs-history" + "*File name to save minibuffer history to. +The minibuffer history is a series of Lisp expressions, which should be +loaded using `savehist-load' from your .emacs. See `savehist-load' for +more details." + :type 'file + :group 'savehist) + +(defcustom savehist-length 100 + "*Maximum length of a minibuffer list. +If set to nil, the length is unlimited." + :type '(choice integer + (const :tag "Unlimited" nil)) + :group 'savehist) + + +;; Functions + +;;;###autoload +(defun savehist-load (&optional prefix) + "Load the histories saved to `savehist-file'. +Unless PREFIX is non-nil, the function will also add the save function to +`kill-emacs-hook'. + +This function should be normally used from your Emacs init file. Since it +removes your current minibuffer histories (if any), it is unwise to call it +at any other time." + (interactive "P") + (unless prefix + (add-hook 'kill-emacs-hook 'savehist-save)) + (when (file-exists-p savehist-file) + (load savehist-file))) + +;;;###autoload +(defun savehist-save () + "Save the histories from `savehist-history-variables' to `savehist-file'. +A variable will be saved if it is bound and non-nil." + (interactive) + (save-excursion + ;; Is it wise to junk `find-file-hooks' just like that? How else + ;; should I avoid font-lock et al.? + (let ((find-file-hooks nil) + (buffer-exists-p (get-file-buffer savehist-file))) + (set-buffer (find-file-noselect savehist-file)) + (unwind-protect + (progn + (erase-buffer) + (insert + ";; -*- emacs-lisp -*-\n" + ";; Minibuffer history file.\n\n" + ";; This file is automatically generated by `savehist-save'" + " or when\n" + ";; exiting Emacs.\n" + ";; Do not edit. Unless you really want to, that is.\n\n") + (dolist (sym savehist-history-variables) + (when (and (boundp sym) + (symbol-value sym)) + (prin1 + `(setq ,sym (quote ,(savehist-delimit (symbol-value sym) + savehist-length))) + (current-buffer)) + (insert ?\n))) + (save-buffer)) + (or buffer-exists-p + (kill-buffer (current-buffer))))))) + +;; If ARG is a arg with less than N elements, return it, else return +;; its subsequence of N elements. If N is nil, always return ARG. If +;; ARG is not a list, just return it. +(defun savehist-delimit (arg n) + (if (and n + (listp arg) + (> (length arg) n)) + (subseq arg 0 n) + arg)) + +(provide 'savehist) + +;;; savehist.el ends here
--- a/lisp/version.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/version.el Mon Aug 13 09:38:25 2007 +0200 @@ -25,7 +25,7 @@ (defconst emacs-version "20.3" "Version numbers of this version of Emacs.") -(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (beta2)"))) +(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (beta3)"))) (defconst emacs-major-version (progn (or (string-match "^[0-9]+" emacs-version)
--- a/lisp/x11/x-menubar.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/x11/x-menubar.el Mon Aug 13 09:38:25 2007 +0200 @@ -140,10 +140,11 @@ ("Customize" ("Emacs" :filter (lambda (&rest junk) (cdr (custom-menu-create 'emacs)))) - ["Group..." customize t] + ["Group..." customize-group t] ["Variable..." customize-variable t] ["Face..." customize-face t] - ["Saved..." customize-customized t] + ["Saved..." customize-saved t] + ["Set..." customize-customized t] ["Apropos..." customize-apropos t]) ["Read Only" (toggle-read-only) :style toggle :selected buffer-read-only] @@ -542,7 +543,7 @@ (strokes-mode) (beep) (message "This option requires a window system.")) - :style toggle :selected (and strokes-enabled-p window-system)]) + :style toggle :selected (and strokes-mode window-system)]) ("Open URLs With" ["Emacs-W3" (setq browse-url-browser-function 'browse-url-w3) :style radio
--- a/lisp/x11/x-mouse.el Mon Aug 13 09:37:21 2007 +0200 +++ b/lisp/x11/x-mouse.el Mon Aug 13 09:38:25 2007 +0200 @@ -24,8 +24,6 @@ ;;(define-key global-map '(shift button2) 'x-mouse-kill) (define-key global-map '(control button2) 'x-set-point-and-move-selection) -(setq mouse-yank-function 'x-yank-function) - (defun x-mouse-kill (event) "Kill the text between the point and mouse and copy it to the clipboard and to the cut buffer"
--- a/man/custom.texi Mon Aug 13 09:37:21 2007 +0200 +++ b/man/custom.texi Mon Aug 13 09:38:25 2007 +0200 @@ -13,7 +13,7 @@ @comment node-name, next, previous, up @top The Customization Library -Version: 1.97 +Version: 1.98 @menu * Introduction:: @@ -34,11 +34,11 @@ @dfn{faces}. Each user option can have four different values simultaneously: @table @dfn -@item factory setting +@item standard setting The value specified by the programmer. @item saved value The value saved by the user as the default for this variable. This -overwrites the factory setting when starting a new emacs. +overwrites the standard setting when starting a new emacs. @item current value The value used by Emacs. This will not be remembered next time you run Emacs. @@ -64,8 +64,10 @@ @table @code @item customize -Create a customization buffer containing a specific group, by default -the @code{emacs} group. +Create a customization buffer containing the @code{emacs} group. + +@item customize-group +Create a customization buffer containing a specific group. @item customize-variable Create a customization buffer containing a single variable. @@ -153,15 +155,15 @@ @menu * The Introductory Text:: +* The Customization Buttons:: * The Customization Options:: * The Variable Options:: * The Face Options:: * The Group Options:: * The State Button:: -* The Customization Buttons:: @end menu -@node The Introductory Text, The Customization Options, The Customization Buffer, The Customization Buffer +@node The Introductory Text, The Customization Buttons, The Customization Buffer, The Customization Buffer @comment node-name, next, previous, up @subsection The Introductory Text @@ -177,33 +179,36 @@ @samp{help} is a button that will bring up this document when activated. -@node The Customization Options, The Variable Options, The Introductory Text, The Customization Buffer +@node The Customization Buttons, The Customization Options, The Introductory Text, The Customization Buffer +@comment node-name, next, previous, up +@subsection The Customization Buttons + +The next part of the customization buffer looks like this: + +@example +[Set] [Save] [Reset] [Done] +@end example + +Activating the @samp{[Set]}, @samp{[Save]}, or @samp{[Reset]} +button will affect all modified customization items that are visible in +the buffer. @samp{[Done]} will bury the buffer. + +@node The Customization Options, The Variable Options, The Customization Buttons, The Customization Buffer @comment node-name, next, previous, up @subsection The Customization Options Each customization option looks similar to the following text: @example - *** custom-background-mode: default - State: this item is unchanged from its factory setting. - [ ] [?] The brightness of the background. + Custom Background Mode: default + State: this item is unchanged from its standard setting. + [?] The brightness of the background. @end example The option contains the parts described below. @table @samp -@item *** -The Level Button. The customization options in the buffer are organized -in a hierarchy, which is indicated by the number of stars in the level -button. The top level options will be shown as @samp{*}. When they are -expanded, the suboptions will be shown as @samp{**}. The example option -is thus a subsuboption. - -Activating the level buttons will toggle between hiding and exposing the -content of that option. The content can either be the value of the -option, as in this example, or a list of suboptions. - -@item custom-background-mode +@item Custom Background Mode This is the tag of the the option. The tag is a name of a variable, a face, or customization group. Activating the tag has an effect that depends on the exact type of the option. In this particular case, @@ -217,16 +222,13 @@ file name, it is displayed in an editable field, i.e. you can edit it using the standard emacs editing commands. -@item State: this item is unchanged from its factory setting. +@item State: this item is unchanged from its standard setting. The state line. This line will explain the state of the option, e.g. whether it is currently hidden, or whether it has been modified or not. Activating the button will allow you to change the state, e.g. set or reset the changes you have made. This is explained in detail in the following sections. -@item [ ] -The magic button. This is an abbreviated version of the state line. - @item [?] The documentation button. If the documentation is more than one line, this button will be present. Activating the button will toggle whether @@ -258,12 +260,12 @@ will be evaluated when you start emacs. The result of the evaluation will be used as the initial value for that variable. Editing the lisp value is for experts only, but if the current value of the -variable is of a wrong type (i.e. a symbol where a string is expected), +variable is of a wrong type (e.g. a symbol where a string is expected), the `edit lisp' mode will always be selected. You can see what mode is currently selected by looking at the state -button. If it uses parenthesises (like @samp{( )}) it is in edit lisp -mode, with square brackets (like @samp{[ ]}) it is normal edit mode. +description. It will end with @samp{(lisp)} in lisp mode. + You can switch mode by activating the state button, and select either @samp{Edit} or @samp{Edit lisp} from the menu. @@ -288,13 +290,14 @@ Activating this item will reset the value of the variable to the last value you marked as permanent with `Save'. -@item Reset to Factory Settings +@item Reset to Standard Settings Activating this item will undo all modifications you have made, and reset the value to the initial value specified by the program itself. @end table -By default, the value of large or complicated variables are hidden. You -can show the value by clicking on the level button. +By default, the value of large or complicated variables are hidden. +You can change this with the @samp{Hide} and @samp{Show} entries in the +state menu. @node The Face Options, The Group Options, The Variable Options, The Customization Buffer @comment node-name, next, previous, up @@ -320,9 +323,9 @@ Here is an example: @example - *** custom-invalid-face: (sample) - State: this item is unchanged from its factory setting. - [ ] Face used when the customize item is invalid. + Custom Invalid Face: (sample) + State: this item is unchanged from its standard setting. + Face used when the customize item is invalid. [INS] [DEL] Display: [ ] Type: [ ] X [ ] PM [ ] Win32 [ ] DOS [ ] TTY [X] Class: [X] Color [ ] Grayscale [ ] Monochrome [ ] Background: [ ] Light [ ] Dark @@ -345,7 +348,7 @@ This has two display specifications. The first will match all color displays, independently on what window system the device belongs to, and whether background color is dark or light. For devices matching this -specification, @samp{custom-invalid-face} will force text to be +specification, @samp{Custom Invalid Face} will force text to be displayed in yellow on red, but leave all other attributes alone. The second display will simply match everything. Since the list is @@ -364,6 +367,9 @@ changes take effect. The menu items in the state button menu is similar to the state menu items for variables described in the previous section. +Faces usually start out hidden, activate the @samp{State} button to show +them. + @node The Group Options, The State Button, The Face Options, The Customization Buffer @comment node-name, next, previous, up @subsection The Group Options @@ -372,7 +378,7 @@ been organized in groups. Each group can contain other groups, thus creating a customization hierarchy. The nesting of the customization within the visible part of this hierarchy is indicated by the number of -stars in the level button. +asterisks before the name of the group. Since there is really no customization needed for the group itself, the menu items in the groups state button will affect all modified group @@ -381,7 +387,7 @@ will be applied. For those members that themselves are groups, it will work as if you had activated the @samp{Set} menu item on them as well. -@node The State Button, The Customization Buttons, The Group Options, The Customization Buffer +@node The State Button, , The Group Options, The Customization Buffer @comment node-name, next, previous, up @subsection The State Line and The Magic Button @@ -389,7 +395,14 @@ as described in the previous sections. The second is to indicate the state of each customization item. -For the magic button, this is done by the character inside the brackets. +There is an optional `magic button' that holds the same information in a +more compact form. The magic button contain a character inside the +brackets (in edit mode) or parentheses (in lisp mode). + +@defopt custom-magic-show-button +Show a magic button indicating the state of each customization option. +@end defopt + The following states have been defined, the first that applies to the current item will be used: @@ -411,15 +424,15 @@ The current value of this option is different from the saved value. @item ! -The saved value of this option is different from the factory setting. +The saved value of this option is different from the standard setting. @item @@ -The factory setting of this option is not known. This occurs when you +The standard setting of this option is not known. This occurs when you try to customize variables or faces that have not been explicitly declared as customizable. @item SPC -The factory setting is still in effect. +The standard setting is still in effect. @end table @@ -427,20 +440,6 @@ of its members, where more severe means that it appears earlier in the list above (except hidden members, which are ignored). -@node The Customization Buttons, , The State Button, The Customization Buffer -@comment node-name, next, previous, up -@subsection The Customization Buttons - -The last part of the customization buffer looks like this: - -@example -[Set] [Save] [Reset] [Done] -@end example - -Activating the @samp{[Set]}, @samp{[Save]}, or @samp{[Reset]} -button will affect all modified customization items that are visible in -the buffer. @samp{[Done]} will bury the buffer. - @node Declarations, Utilities, The Customization Buffer, Top @comment node-name, next, previous, up @section Declarations @@ -581,7 +580,7 @@ @end defun Internally, custom uses the symbol property @code{custom-type} to keep -track of the variables type, @code{factory-value} for the program +track of the variables type, @code{standard-value} for the program specified default value, @code{saved-value} for a value saved by the user, and @code{variable-documentation} for the documentation string. @@ -616,8 +615,6 @@ @var{atts} is a list of face attributes and their values. The possible attributes are defined in the variable `custom-face-attributes'. -Alternatively, @var{atts} can be a face in which case the attributes of -that face is used. The @var{atts} of the first entry in @var{spec} where the @var{display} matches the frame should take effect in that frame. @var{display} can @@ -792,6 +789,18 @@ @item Better handling of saved but uninitialized items. +@item +Detect when faces have been changed outside customize. + +@item +Activate mouse help in Emacs by default. + +@item +Group members should be sorted, groups last. + +@item +Add an easy way to display the standard settings when an item is modified. + @end itemize @contents
--- a/man/gnus.texi Mon Aug 13 09:37:21 2007 +0200 +++ b/man/gnus.texi Mon Aug 13 09:38:25 2007 +0200 @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename gnus -@settitle Gnus 5.4.53 Manual +@settitle Gnus 5.4.55 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -287,7 +287,7 @@ @tex @titlepage -@title Gnus 5.4.53 Manual +@title Gnus 5.4.55 Manual @author by Lars Magne Ingebrigtsen @page @@ -323,7 +323,7 @@ spool or your mbox file. All at the same time, if you want to push your luck. -This manual corresponds to Gnus 5.4.53. +This manual corresponds to Gnus 5.4.55. @end ifinfo @@ -9220,6 +9220,19 @@ articles that are marked as expirable have an @samp{E} in the first column in the summary buffer. +By default, if you have auto expiry switched on, Gnus will mark all the +articles you read as expirable, no matter if they were read or unread +before. To avoid having articles marked as read marked as expirable +automatically, you can put something like the following in your +@file{.gnus} file: + +@vindex gnus-mark-article-hook +@lisp +(remove-hook 'gnus-mark-article-hook + 'gnus-summary-mark-read-and-unread-as-read) +(add-hook 'gnus-mark-article-hook 'gnus-summary-mark-unread-as-read) +@end lisp + Note that making a group auto-expirable don't mean that all read articles are expired---only the articles that are marked as expirable will be expired. Also note the using the @kbd{d} command won't make @@ -9943,7 +9956,7 @@ @item body-end If present, this should match the end of the body of the article. -@item nndoc-file-end +@item file-end If present, this should match the end of the file. All text after this regexp will be totally ignored. @@ -11144,7 +11157,8 @@ you e.g. increase the score of followups to your own articles, or decrease the score of followups to the articles of some known trouble-maker. Uses the same match types as the @code{From} header -uses. +uses. (Using this match key will lead to creation of @file{ADAPT} +files.) @item Thread This match key works along the same lines as the @code{Followup} match @@ -11156,7 +11170,8 @@ articles.) This will ensure that you can raise/lower the score of an entire thread, even though some articles in the thread may not have complete @code{References} headers. Note that using this may lead to -undeterministic scores of the articles in the thread. +undeterministic scores of the articles in the thread. (Using this match +key will lead to creation of @file{ADAPT} files.) @end table @end enumerate @@ -14090,6 +14105,7 @@ Joao Cachopo, Zlatko Calusic, Massimo Campostrini, +Dan Christensen, Michael R. Cook, Glenn Coombs, Frank D. Cringle, @@ -14838,7 +14854,8 @@ @item foreign @cindex foreign You can also have any number of foreign groups active at the same time. -These are groups that use different backends for getting news. +These are groups that use non-native non-secondary backends for getting +news. @item secondary @cindex secondary
--- a/man/hm--html-mode.texi Mon Aug 13 09:37:21 2007 +0200 +++ b/man/hm--html-mode.texi Mon Aug 13 09:38:25 2007 +0200 @@ -4,7 +4,7 @@ @settitle HM HTML Mode @setchapternewpage odd @comment %**end of header (This is for running Texinfo on a region.) -@comment $Id: hm--html-mode.texi,v 1.2 1997/03/28 02:29:28 steve Exp $ +@comment $Id: hm--html-mode.texi,v 1.3 1997/05/29 23:50:32 steve Exp $ @ifinfo This file documents the Elisp package @code{hm--html-menus}. @@ -45,7 +45,7 @@ @sp 4 @center by Heiko Münkel @sp 4 -@center Version 5.6, March 1997 +@center Version 5.7, May 1997 @page @vskip 0pt plus 1filll Copyright @copyright{} 1997 Heiko Münkel @@ -94,6 +94,7 @@ * Use With psgml-html:: Use this package as an add-on minor mode * Internal Drag And Drop:: The HTML independent drag and drop package * Template Minor Mode:: The HTML independent template package +* Hints For Emacs 19 Users:: Missing features in the Emacs 19 * Bug Reports:: How and to whom you should send bug reports * Concept Index:: Concept Index * Function Index:: Function Index @@ -131,10 +132,10 @@ @findex hm--html-mode @findex hm--html-minor-mode -This document describes the Elisp package @emph{hm---html-menus 5.6}. +This document describes the Elisp package @emph{hm---html-menus 5.7}. The version of the document is:@* -$Id: hm--html-mode.texi,v 1.2 1997/03/28 02:29:28 steve Exp $ +$Id: hm--html-mode.texi,v 1.3 1997/05/29 23:50:32 steve Exp $ The package provides commands and various popup and pulldown menus for an HTML mode called @dfn{hm---html-mode}, a mode for writing HTML pages @@ -280,6 +281,38 @@ (autoload 'tmpl-expand-templates-in-buffer "tmpl-minor-mode" "Expand all templates in the current buffer." t) +(autoload 'tmpl-expand-templates-in-region "tmpl-minor-mode" + "Expands the templates in the region from BEGIN to END. +If BEGIN and END are nil, then the current region is used." + t) +(autoload 'tmpl-insert-template-file-from-fixed-dirs "tmpl-minor-mode" + "Inserts a template FILE and expands it, if `tmpl-automatic-expand' is t. +This command tries to read the template file from a list of +predefined directories (look at `tmpl-template-dir-list') and it filters +the contents of these directories with the regular expression +`tmpl-filter-regexp' (look also at this variable). +The command uses a history variable, which could be changed with the +variable `tmpl-history-variable-name'. + +The user of the command is able to change interactively to another +directory by entering at first the string \"Change the directory\". +This may be too difficult for the user. Therefore another command +called `tmpl-insert-template-file' exist, which doesn't use fixed +directories and filters." + t) + +(autoload 'tmpl-insert-template-file "tmpl-minor-mode" + "Inserts a template FILE and expand it, if `tmpl-automatic-expand' is t. +Look also at `tmpl-template-dir-list', to specify a default template +directory. +You should also take a look at `tmpl-insert-template-file-from-fixed-dirs' +which has additional advantages (and disadvantages :-). + +ATTENTION: The interface of this function has changed. The old +function had the argument list (&optional TEMPLATE-DIR AUTOMATIC-EXPAND). +The variables `tmpl-template-dir-list' and `tmpl-automatic-expand' must +now be used instead of the args TEMPLATE-DIR and AUTOMATIC-EXPAND." + t) (autoload 'html-view-start-mosaic "html-view" "Start Xmosaic." t) (autoload 'html-view-view-buffer @@ -417,12 +450,12 @@ @comment node-name, next, previous, up @subsection Where To Put User Specific Customization @cindex user specific customization -@cindex ~/.hm--configuration-file.el +@cindex ~/.hm--html-configuration.el @vindex HTML_USER_CONFIG_FILE @vindex hm--html-user-config-file User specific customization can be put in the file -@file{.hm--configuration-file.el}, which is searched by default in the +@file{.hm--html-configuration.el}, which is searched by default in the home directory of the user. This can be overwritten by setting either the environment variable @code{HTML_USER_CONFIG_FILE} or the lisp variable @code{hm--html-user-config-file} to the name of the file and @@ -918,23 +951,79 @@ @cindex created comment @vindex hm--html-automatic-new-date @vindex hm--html-automatic-changed-comment -@vindex hm--html-automatic-created-comment +@vindex hm--html-automatic-create-modified-line +@vindex hm--html-automatic-update-modified-line +@vindex hm--html-changed-comment-prefix +@vindex hm--html-created-comment-prefix +@vindex hm--html-comment-infix +@vindex hm--html-modified-prefix +@vindex hm--html-modified-end-tag +@vindex hm--html-modified-insert-before +@vindex hm--html-modified-start-tag + The @code{hm--html-mode} automatically inserts some useful information in html pages. This behaviour can be changed by the following variables. @itemize @bullet @item -@code{hm--html-automatic-new-date}: t => The date in the title line will -be updated before file saving. nil => No automatic update of the date. +@code{hm--html-automatic-create-title-date}: t => A date string will be +inserted in the title line. This will be updated each time before file +saving, if @code{hm--html-automatic-update-title-date} is also set to t. +@item +@code{hm--html-automatic-update-title-date}: t => The date in the title +line will be updated before file saving. nil => No automatic update of +the date. +@item +@code{hm--html-automatic-created-comment}: t => A "created comment" +line will be added. nil => No automatic insert of a "created +comment" line. +@item +@code{hm--html-created-comment-prefix}: The prefix text of the "created +comment" lines. By default this is set to "Created by: ". +@item +@code{hm--html-comment-infix}: The infix (second part) of the "created +comment" and the "changed comment" lines. By default, if this variable +is nil, the value of @code{hm--html-username} or, if this variable is +also nil, the return value of @code{(user-full-name)} will be used. +In these cases the infix looks like "Heiko Münkel, ". + +Set it to an empty string, if you don't want to have your name in the +comments. @item @code{hm--html-automatic-changed-comment}: t => A "changed comment" line will be added before file saving. nil => No automatic insert of a "changed comment" line. @item -@code{hm--html-automatic-created-comment}: t => A "created comment" -line will be added. nil => No automatic insert of a "created -comment" line. +@code{hm--html-changed-comment-prefix}: The prefix text of the "changed +comment" lines. By default this is set to "Changed by: ". +@item +@code{hm--html-automatic-create-modified-line}: t => Some commands will +insert a visible "modified" line with the current date, if such a line +does not exist already. If it already exist, the date in the line will +be updated. Visible means, that it is not a HTML comment. By default it +looks like the following: +@samp{<EM>Modified 24-May-1997</EM>} +@item +@code{hm--html-automatic-update-modified-line}: t => The visible +"modified" line will be updated with the current date before file +saving. If such a line does not exist, nothing will be done. +@item +@code{hm--html-modified-prefix}: Prefix of the "modified" line. +By default it is set to @samp{"Modified: "}. +@item +@code{hm--html-modified-start-tag}: Start tag of the modified line. +By default it is @samp{<EM>}. If you change this, you'll need to change also +@code{hm--html--modified-end-tag}. +@item +@code{hm--html-modified-end-tag}: End tag of the modified line. +By default it is @samp{</EM>}. If you change this, you'll need to change +also @code{hm--html-modified-start-tag}. +@item +@code{hm--html-modified-insert-before}: The "modified line" will be +inserted before this string. The search will be done from the end to the +beginning. And the "modified line" will be put at least before the +@samp{</HTML>} and the @samp{</BODY>} tags. @end itemize @@ -948,7 +1037,7 @@ @item @code{hm--html-bind-latin-1-char-entities}: Set this to nil, if you don't want to use the ISO Latin 1 character entities. This is only -useful if `hm--html-use-old-keymap' is set to nil. It is only used +useful if @code{hm--html-use-old-keymap} is set to nil. It is only used when loading the html package the first time. @end itemize @@ -1589,7 +1678,7 @@ @end itemize -@node Template Minor Mode, Bug Reports, Internal Drag And Drop, Top +@node Template Minor Mode, Hints For Emacs 19 Users, Internal Drag And Drop, Top @comment node-name, next, previous, up @chapter Template Minor Mode @cindex templates @@ -1976,7 +2065,46 @@ mode in a future release. -@node Bug Reports, Concept Index, Template Minor Mode, Top +@node Hints For Emacs 19 Users, Bug Reports, Template Minor Mode, Top +@comment node-name, next, previous, up +@chapter Hints For Emacs 19 Users +@cindex Emacs 19 +@cindex missing features in the Emacs 19 +@vindex tmpl-history-variable-name +@findex file-remote-p + +This package is tested with the GNU Emacs 19.34. The Emacs 19.34 has had +not all features of the XEmacs. Therefore also some of the features of +this package could not be implemeted in the Emacs 19. + +Please read also the Emacs 19 related file @file{README-EMACS-19}! + +The following is a list of missing features: + +@itemize @bullet +@item +The capability to start an action from the help buffer. This is only +possible in the XEmacs, because in the Emacs 19.34 one can't assign +keymaps to a text region (overlay). + +@item +The keybindings of the drag and drop commands are not displayed in +the menus, because the Emacs 19 isn't able to handle the following +menu specification: @code{:keys "\\[idd-help-mouse-drag-and-drop]"}. + +@item +The function @code{file-remote-p} couldn't be implemeted, because of the +lack of the function @code{ange-ftp-ftp-p} in the ange-ftp package of +the Emacs 19.34. + +@item +The history variable determined by @code{tmpl-history-variable-name} +isn't used, because the function @code{read-file-name} doesn't support +it in the Emacs 19. +@end itemize + + +@node Bug Reports, Concept Index, Hints For Emacs 19 Users, Top @comment node-name, next, previous, up @chapter Bug Reports @cindex bug report
--- a/man/lispref/consoles-devices.texi Mon Aug 13 09:37:21 2007 +0200 +++ b/man/lispref/consoles-devices.texi Mon Aug 13 09:38:25 2007 +0200 @@ -27,13 +27,12 @@ displayed at various locations within the display, be resized, etc. For TTY, only one frame can be displayed at a time, and it occupies the entire TTY display area. -@ignore @c Not yet implemented -However, you can still define multiple frames -and switch between them. Their contents are entirely separate from each -other. These sorts of frames resemble the ``virtual console'' -capability provided under Linux or the multiple screens provided by the -multiplexing program @samp{screen} under Unix. -@end ignore + +However, you can still define multiple frames and switch between them. +Their contents are entirely separate from each other. These sorts of +frames resemble the ``virtual console'' capability provided under Linux +or the multiple screens provided by the multiplexing program +@samp{screen} under Unix. When you start up XEmacs, an initial console and device are created to receive input and display frames on. This will either be an X display
--- a/man/message.texi Mon Aug 13 09:37:21 2007 +0200 +++ b/man/message.texi Mon Aug 13 09:38:25 2007 +0200 @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message -@settitle Message 5.4.53 Manual +@settitle Message 5.4.55 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -39,7 +39,7 @@ @tex @titlepage -@title Message 5.4.53 Manual +@title Message 5.4.55 Manual @author by Lars Magne Ingebrigtsen @page @@ -79,7 +79,7 @@ * Key Index:: List of Message mode keys. @end menu -This manual corresponds to Message 5.4.53. Message is distributed with +This manual corresponds to Message 5.4.55. Message is distributed with the Gnus distribution bearing the same version number as this manual has.
--- a/man/widget.texi Mon Aug 13 09:37:21 2007 +0200 +++ b/man/widget.texi Mon Aug 13 09:38:25 2007 +0200 @@ -13,7 +13,7 @@ @comment node-name, next, previous, up @top The Emacs Widget Library -Version: 1.97 +Version: 1.98 @menu * Introduction:: @@ -57,14 +57,14 @@ option is itself a widget. Only the selected option will be visible in the buffer. @item radio-button-choice -Allows the user to choose one of multiple options by pushing radio +Allows the user to choose one of multiple options by activating radio buttons. The options are implemented as widgets. All options will be visible in the buffer. @item item A simple constant widget intended to be used in the @code{menu-choice} and @code{radio-button-choice} widgets. @item choice-item -An button item only intended for use in choices. When pushed, the user +An button item only intended for use in choices. When activated, the user will be asked to select another option from the choice widget. @item toggle A simple @samp{on}/@samp{off} switch. @@ -233,7 +233,7 @@ for implementing multiple-choice fields. You can create it wit @item The @samp{@b{( )}} and @samp{@b{(*)}} buttons. Only one radio button in a @code{radio-button-choice} widget can be -selected at any time. When you push one of the unselected radio +selected at any time. When you activate one of the unselected radio buttons, it will be selected and the previous selected radio button will become unselected. @item The @samp{@b{[Apply Form]}} @samp{@b{[Reset Form]}} buttons. @@ -445,6 +445,17 @@ @itemx %] The text inside will be marked as a button. +By default, the text will be shown in @code{widget-button-face}, and +surrounded by brackets. + +@defopt widget-button-prefix +String to prefix buttons. +@end defopt + +@defopt widget-button-suffix +String to suffix buttons. +@end defopt + @item %@{ @itemx %@} The text inside will be displayed with the face specified by @@ -477,6 +488,23 @@ @item :button-face Face used to highlight text inside %[ %] in the format. +@item :button-prefix +@itemx :button-suffix + +Text around %[ %] in the format. + +These can be +@table @emph +@item nil +No text is inserted. + +@item a string +The string is inserted literally. + +@item a symbol +The value of the symbol is expanded according to this table. +@end table + @item :doc The string inserted by the @samp{%d} escape in the format string. @@ -612,6 +640,16 @@ property. The value should be a string, which will be inserted in the buffer. +By default the link will be shown in brackets. + +@defopt widget-link-prefix +String to prefix links. +@end defopt + +@defopt widget-link-suffix +String to suffix links. +@end defopt + @node url-link, info-link, link, Basic Types @comment node-name, next, previous, up @subsection The @code{url-link} Widget @@ -652,17 +690,15 @@ property. The value should be a string, which will be inserted in the buffer. -The following extra properties are recognized. +By default the tag will be shown in brackets. -@table @code -@item :text-format -The format string used when the push button cannot be displayed -graphically. There are two escapes, @code{%s}, which must be present -exactly once, will be substituted with the tag, and @code{%%} will be -substituted with a singe @samp{%}. -@end table +@defopt widget-push-button-prefix +String to prefix push buttons. +@end defopt -By default the tag will be shown in brackets. +@defopt widget-push-button-suffix +String to suffix push buttons. +@end defopt @node editable-field, text, push-button, Basic Types @comment node-name, next, previous, up
--- a/src/ChangeLog Mon Aug 13 09:37:21 2007 +0200 +++ b/src/ChangeLog Mon Aug 13 09:38:25 2007 +0200 @@ -1,3 +1,60 @@ +1997-05-29 Steven L Baur <steve@altair.xemacs.org> + + * eval.c (Fprogn): Delete mocklisp support. + (Fwhile): Ditto. + (Fcommandp): Ditto. + (Feval): Ditto. + (funcall_recording_as): Ditto. + (funcall_lambda): Ditto. + + * elhash.c (verify_function): Delete mocklisp support. + + * doc.c (Fdocumentation): Delete mocklisp support. + + * data.c (wrong_type_argument): Delete mocklisp support. + + * config.h.in: Delete mocklisp support. + + * callint.c (Fcall_interactively): Delete mocklisp support. + + * emacs.c (main_1): Delete mocklisp initialization. + + * symsinit.h: Delete mocklisp.c decls. + + * Makefile.in.in: Delete mocklisp stuffs. + +Thu May 29 03:00:16 1997 Kyle Jones <kyle@crystal.wonderworks.com> + + * frame.c (change_frame_size_1): + Drop code that returns immediately if the old frame + size is equal to the new. + Leave the minibuffer height the same if the frame has + been initialized, and the minibuffer height is tall + enough to display at least one line of text in the default + font, and the old minibuffer height is a multiple of the + default font height. This should cause the minibuffer + height to be recomputed on font changes but not for + other frame size changes, which seems reasonable. + +1997-05-26 Steven L Baur <steve@altair.xemacs.org> + + * event-stream.c (Frecent_keys): Take optional parameter to + indicate how many keystrokes to return. + (Frecent_keys_ring_size): New function returns the maximum number + of events `recent-keys' can return. + (Fset_recent_keys_ring_size): New function. Modifies the above. + + From Hrvoje Niksic <hniksic@srce.hr> + + * event-stream.c: New variable recent_keys_ring_size replacing a + hard-coded macro. + +1997-05-23 Steven L Baur <steve@altair.xemacs.org> + From Hrvoje Niksic <hniksic@srce.hr> + + * sysdep.c: Correction of subprocess support when compiling + without ttys. + 1997-05-21 Steven L Baur <steve@altair.xemacs.org> * editfns.c (format-time-string): Update DOCstring. Make time
--- a/src/Makefile.in.in Mon Aug 13 09:37:21 2007 +0200 +++ b/src/Makefile.in.in Mon Aug 13 09:38:25 2007 +0200 @@ -98,11 +98,6 @@ do not let it interfere with this file. */ #undef register -/* On some systems we may not be able to use the system make command. */ -#ifdef MAKE_COMMAND -MAKE = MAKE_COMMAND -#endif - /* Unless inhibited or changed, use -lg to link for debugging. */ #ifndef LIBS_DEBUG #define LIBS_DEBUG -lg @@ -119,7 +114,7 @@ #ifndef ORDINARY_LINK #ifndef CRT0_COMPILE -#define CRT0_COMPILE $(CC) -c $(cflags) C_SWITCH_ASM +#define CRT0_COMPILE $(CC) -c $(cflags) C_SWITCH_ASM #endif #ifndef START_FILES @@ -258,7 +253,7 @@ GNULIB_VAR = `if [ -f LIB_GCC ] ; then echo LIB_GCC; else echo; fi` #endif /* __GNUC__ < 2 */ #else /* ! defined (__GNUC__) */ -GNULIB_VAR = +GNULIB_VAR = #endif /* ! defined (__GNUC__) */ #else @@ -388,7 +383,7 @@ # ifdef LWLIB_USES_MOTIF # ifdef EXTW_LINK -# define MOTIF_OTHER_FILES libextcli_Xm.a libextcli_Xm.so.1 +# define MOTIF_OTHER_FILES libextcli_Xm.a libextcli_Xm.so.1 # else # define MOTIF_OTHER_FILES libextcli_Xm.a # endif @@ -585,8 +580,8 @@ Every file that is loaded from loadup.el must be enumerated here, or the functions will have no docstrings. This is dumb - this list should be generated automatically. - [Note: "version.el" is included in the doc separately, but is not listed - here because we do not want things to appear to be out-of-date just + [Note: "version.el" is included in the doc separately, but is not listed + here because we do not want things to appear to be out-of-date just because the version number has been incremented. -- D.N.G. 8/28/93] */ lisp= ${lispdir}paths.el ${lispdir}prim/featurep.elc \ @@ -622,7 +617,7 @@ ${lispdir}prim/itimer.elc ${lispdir}prim/itimer-autosave.elc \ ${lispdir}ediff/ediff-hook.elc \ ${lispdir}custom/widget.elc ${lispdir}custom/custom.elc \ - ${lispdir}prim/custom-load.elc ${lispdir}prim/cus-start.elc \ + ${lispdir}prim/cus-start.elc \ ${lispdir}packages/fontl-hooks.elc SCROLLBAR_LISP \ ${lispdir}prim/buffer.elc MENUBAR_LISP \ ${lispdir}packages/buff-menu.elc DIALOG_LISP MULE_LISP NOMULE_LISP \ @@ -660,7 +655,7 @@ mo_file = ${mo_dir}emacs.mo #endif -LOADPATH = EMACSLOADPATH="${lispdir}prim" +LOADPATH = EMACSLOADPATH="${lispdir}prim" DUMPENV = $(LOADPATH) release: temacs ${lisp} ${libsrc}DOC $(mo_file) OTHER_FILES @@ -770,7 +765,7 @@ cd ${libsrc} && ${MAKE} ${MFLAGS} make-docfile /* Lint Section */ -LINT.c=$(LINT) $(LINTFLAGS) $(LINTINCLUDES) +LINT.c=$(LINT) $(LINTFLAGS) $(LINTINCLUDES) LINTFILES= $(objs:.o=.ln) LINTINCLUDES = $(cppflags) /* LINTFLAGS= -fd -m -p -s -u -v -x */ @@ -858,7 +853,7 @@ # define EXTERNAL_CLIENT_XT_OBJS_NONSHARED ExternalClient-Xt-nonshared.o extw-Xt-nonshared.o extw-Xlib-nonshared.o # define EXTERNAL_CLIENT_XLIB_OBJS_NONSHARED ExternalClient-Xlib-nonshared.o extw-Xlib-nonshared.o -/* Add dependencies so things work right with a parallel make */ +/* Add dependencies so things work right with a parallel make */ ExternalClient-Xm-shared.o: ${srcdir}/ExternalClient.c ExternalClient-Xt-shared.o ExternalClient-Xm-nonshared.o $(CC) -c $(pic_arg) $(cflags) -DEXTW_USES_MOTIF ${srcdir}/ExternalClient.c mv ExternalClient.o ExternalClient-Xm-shared.o @@ -1082,7 +1077,7 @@ depend: : > depend.tmp - makedepend -f depend.tmp -Dsubprocesses -DMOCKLISP_SUPPORT \ + makedepend -f depend.tmp -Dsubprocesses \ -DHAVE_X_WINDOWS -DMULE -- $(cppflags) $(cflags) \ -- *.c sh ${libsrc}process-depends.sh < depend.tmp > depend.out @@ -1090,8 +1085,7 @@ grep -v '^mule' depend.out | grep -v '[^a-zA-Z]mule' > /tmp/depend2.$$ echo '#ifdef MULE' > depend.out cat /tmp/depend1.$$ >> depend.out - /* The things you have to do to pay homage to the lexer God ... - truly frightening. */ + @# The things you have to do to pay homage to the lexer God ... frightening echo '#endif /''* MULE *''/' >> depend.out echo '' >> depend.out cat /tmp/depend2.$$ >> depend.out @@ -1226,7 +1220,6 @@ md5.o: mule-charset.h menubar-x.o: mule-charset.h minibuf.o: mule-charset.h -mocklisp.o: mule-charset.h #ifdef HAVE_CANNA mule-canna.o: blocktype.h mule-canna.o: buffer.h @@ -2432,11 +2425,6 @@ minibuf.o: systime.h minibuf.o: toolbar.h minibuf.o: window.h -mocklisp.o: blocktype.h -mocklisp.o: buffer.h -mocklisp.o: bufslots.h -mocklisp.o: config.h -mocklisp.o: dynarr.h msdos.o: config.h nas.o: blocktype.h nas.o: config.h
--- a/src/callint.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/callint.c Mon Aug 13 09:38:25 2007 +0200 @@ -310,13 +310,6 @@ goto lose; specs = Fcar (Fcdr (specs)); } -#ifdef MOCKLISP_SUPPORT - else if (EQ (funcar, Qmocklisp)) - { - single_console_state (); - return ml_apply (fun, Qinteractive); - } -#endif else goto lose; }
--- a/src/config.h.in Mon Aug 13 09:37:21 2007 +0200 +++ b/src/config.h.in Mon Aug 13 09:38:25 2007 +0200 @@ -374,9 +374,6 @@ #undef HAVE_WNN #undef WNN6 -/* Mocklisp Support. */ -#undef MOCKLISP_SUPPORT - /* Enable special GNU Make features in the Makefiles. */ #undef USE_GNU_MAKE
--- a/src/console-tty.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/console-tty.c Mon Aug 13 09:38:25 2007 +0200 @@ -127,6 +127,11 @@ #endif /* MULE */ CONSOLE_TTY_DATA (con)->terminal_type = terminal_type; CONSOLE_TTY_DATA (con)->controlling_process = controlling_process; + +#ifdef HAVE_GPM + connect_to_gpm(con); +#endif + if (NILP (CONSOLE_NAME (con))) CONSOLE_NAME (con) = Ffile_name_nondirectory (tty); {
--- a/src/console-tty.h Mon Aug 13 09:37:21 2007 +0200 +++ b/src/console-tty.h Mon Aug 13 09:38:25 2007 +0200 @@ -41,6 +41,9 @@ struct tty_console { int infd, outfd; +#ifdef HAVE_GPM + int mouse_fd; +#endif Lisp_Object instream, outstream; Lisp_Object terminal_type; Lisp_Object controlling_process; @@ -197,6 +200,9 @@ unsigned int is_stdio :1; }; +#ifdef HAVE_GPM +#define CONSOLE_TTY_MOUSE_FD(c) (CONSOLE_TTY_DATA (c)->mouse_fd) +#endif #define CONSOLE_TTY_DATA(c) CONSOLE_TYPE_DATA (c, tty) #define CONSOLE_TTY_CURSOR_X(c) (CONSOLE_TTY_DATA (c)->cursor_x) #define CONSOLE_TTY_CURSOR_Y(c) (CONSOLE_TTY_DATA (c)->cursor_y)
--- a/src/data.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/data.c Mon Aug 13 09:38:25 2007 +0200 @@ -109,20 +109,6 @@ REGISTER Lisp_Object tem; do { -#ifdef MOCKLISP_SUPPORT - if (!EQ (Vmocklisp_arguments, Qt)) - { - if (STRINGP (value) && - (EQ (predicate, Qintegerp) || - EQ (predicate, Qinteger_or_marker_p) || - EQ (predicate, Qinteger_char_or_marker_p))) - return Fstring_to_number (value); - if (INTP (value) && EQ (predicate, Qstringp)) - return Fnumber_to_string (value); - if (CHARP (value) && EQ (predicate, Qstringp)) - return Fchar_to_string (value); - } -#endif /* MOCKLISP_SUPPORT */ value = Fsignal (Qwrong_type_argument, list2 (predicate, value)); tem = call1 (predicate, value); }
--- a/src/doc.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/doc.c Mon Aug 13 09:38:25 2007 +0200 @@ -348,10 +348,6 @@ else return Qnil; } -#ifdef MOCKLISP_SUPPORT - else if (EQ (funcar, Qmocklisp)) - return Qnil; -#endif else if (EQ (funcar, Qmacro)) return Fdocumentation (Fcdr (fun), raw); else
--- a/src/editfns.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/editfns.c Mon Aug 13 09:38:25 2007 +0200 @@ -224,7 +224,8 @@ */ (buffer)) { - return make_int (BUF_PT (decode_buffer (buffer, 1))); + struct buffer *b = decode_buffer (buffer, 1); + return make_int (BUF_PT (b)); } DEFUN ("point-marker", Fpoint_marker, 0, 2, 0, /* @@ -313,16 +314,16 @@ } DEFUN ("region-beginning", Fregion_beginning, 0, 1, 0, /* -Return position of beginning of region, as an integer. +Return position of beginning of region in BUFFER, as an integer. If BUFFER is nil, the current buffer is assumed. */ (buffer)) { - return (region_limit (1, decode_buffer (buffer, 1))); + return region_limit (1, decode_buffer (buffer, 1)); } DEFUN ("region-end", Fregion_end, 0, 1, 0, /* -Return position of end of region, as an integer. +Return position of end of region in BUFFER, as an integer. If BUFFER is nil, the current buffer is assumed. */ (buffer)) @@ -496,7 +497,7 @@ (buffer)) { struct buffer *b = decode_buffer (buffer, 1); - return (make_int (BUF_SIZE (b))); + return make_int (BUF_SIZE (b)); } DEFUN ("point-min", Fpoint_min, 0, 1, 0, /* @@ -507,7 +508,7 @@ (buffer)) { struct buffer *b = decode_buffer (buffer, 1); - return (make_int (BUF_BEGV (b))); + return make_int (BUF_BEGV (b)); } DEFUN ("point-min-marker", Fpoint_min_marker, 0, 1, 0, /* @@ -529,7 +530,8 @@ */ (buffer)) { - return make_int (BUF_ZV (decode_buffer (buffer,1))); + struct buffer *b = decode_buffer (buffer, 1); + return make_int (BUF_ZV (b)); } DEFUN ("point-max-marker", Fpoint_max_marker, 0, 1, 0, /* @@ -553,9 +555,9 @@ { struct buffer *b = decode_buffer (buffer, 1); if (BUF_PT (b) >= BUF_ZV (b)) - return (Qzero); /* #### Gag me! */ + return Qzero; /* #### Gag me! */ else - return (make_char (BUF_FETCH_CHAR (b, BUF_PT (b)))); + return make_char (BUF_FETCH_CHAR (b, BUF_PT (b))); } DEFUN ("preceding-char", Fpreceding_char, 0, 1, 0, /* @@ -567,9 +569,9 @@ { struct buffer *b = decode_buffer (buffer, 1); if (BUF_PT (b) <= BUF_BEGV (b)) - return (Qzero); /* #### Gag me! */ + return Qzero; /* #### Gag me! */ else - return (make_char (BUF_FETCH_CHAR (b, BUF_PT (b) - 1))); + return make_char (BUF_FETCH_CHAR (b, BUF_PT (b) - 1)); } DEFUN ("bobp", Fbobp, 0, 1, 0, /* @@ -723,7 +725,7 @@ #else Lisp_Object tem = build_string (pw ? pw->pw_name : "unknown");/* no gettext */ #endif - return (tem); + return tem; } DEFUN ("user-uid", Fuser_uid, 0, 0, 0, /* @@ -803,7 +805,7 @@ p = getenv ("NAME"); if (p) tem = build_string (p); - return (tem); + return tem; } DEFUN ("system-name", Fsystem_name, 0, 0, 0, /* @@ -811,7 +813,7 @@ */ ()) { - return (Fcopy_sequence (Vsystem_name)); + return Fcopy_sequence (Vsystem_name); } /* For the benefit of callers who don't want to include lisp.h. @@ -1371,9 +1373,9 @@ */ (string, buffer)) { - struct buffer *buf = decode_buffer (buffer, 1); + struct buffer *b = decode_buffer (buffer, 1); CHECK_STRING (string); - buffer_insert_lisp_string (buf, string); + buffer_insert_lisp_string (b, string); zmacs_region_stays = 0; return Qnil; } @@ -1405,7 +1407,7 @@ REGISTER Bytecount n; REGISTER Bytecount charlen; Bufbyte str[MAX_EMCHAR_LEN]; - struct buffer *buf = decode_buffer (buffer, 1); + struct buffer *b = decode_buffer (buffer, 1); int cou; CHECK_CHAR_COERCE_INT (chr); @@ -1430,7 +1432,7 @@ slen = i; while (n >= slen) { - buffer_insert_raw_string (buf, string, slen); + buffer_insert_raw_string (b, string, slen); n -= slen; } if (n > 0) @@ -1442,7 +1444,7 @@ insert (string, n); } #else - buffer_insert_raw_string (buf, string, n); + buffer_insert_raw_string (b, string, n); #endif zmacs_region_stays = 0; @@ -1936,18 +1938,17 @@ (c1, c2, buffer)) { Emchar x1, x2; - struct buffer *buf = decode_buffer (buffer, 1); + struct buffer *b = decode_buffer (buffer, 1); CHECK_CHAR_COERCE_INT (c1); CHECK_CHAR_COERCE_INT (c2); x1 = XCHAR (c1); x2 = XCHAR (c2); - if (!NILP (buf->case_fold_search) - ? DOWNCASE (buf, x1) == DOWNCASE (buf, x2) - : x1 == x2) - return Qt; - return Qnil; + return (!NILP (b->case_fold_search) + ? DOWNCASE (b, x1) == DOWNCASE (b, x2) + : x1 == x2) + ? Qt : Qnil; } DEFUN ("char=", Fchar_Equal, 2, 3, 0, /* @@ -1957,14 +1958,10 @@ */ (c1, c2, buffer)) { - Emchar x1, x2; - CHECK_CHAR_COERCE_INT (c1); CHECK_CHAR_COERCE_INT (c2); - x1 = XCHAR (c1); - x2 = XCHAR (c2); - return x1 == x2 ? Qt : Qnil; + return XCHAR(c1) == XCHAR(c2) ? Qt : Qnil; } #if 0 /* Undebugged FSFmacs code */ @@ -2030,7 +2027,7 @@ } } -#endif +#endif /* 0 */ DEFUN ("transpose-regions", Ftranspose_regions, 4, 5, 0, /* Transpose region START1 to END1 with START2 to END2.
--- a/src/elhash.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/elhash.c Mon Aug 13 09:38:25 2007 +0200 @@ -475,9 +475,6 @@ Lisp_Object funcar = Fcar (function); if ((SYMBOLP (funcar)) && (EQ (funcar, Qlambda) -#ifdef MOCKLISP_SUPPORT - || EQ (funcar, Qmocklisp) -#endif || EQ (funcar, Qautoload))) return; }
--- a/src/emacs.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/emacs.c Mon Aug 13 09:38:25 2007 +0200 @@ -813,9 +813,6 @@ syms_of_menubar (); #endif syms_of_minibuf (); -#ifdef MOCKLISP_SUPPORT - syms_of_mocklisp (); -#endif syms_of_objects (); syms_of_print (); #if !defined (NO_SUBPROCESSES) @@ -1127,9 +1124,6 @@ vars_of_menubar (); #endif vars_of_minibuf (); -#ifdef MOCKLISP_SUPPORT - vars_of_mocklisp (); -#endif vars_of_objects (); vars_of_print (); #ifndef NO_SUBPROCESSES
--- a/src/eval.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/eval.c Mon Aug 13 09:38:25 2007 +0200 @@ -724,21 +724,6 @@ Lisp_Object args_left; struct gcpro gcpro1; -#ifdef MOCKLISP_SUPPORT - /* In Mucklisp code, symbols at the front of the progn arglist - are to be bound to zero. */ - if (!EQ (Vmocklisp_arguments, Qt)) - { - Lisp_Object tem; - val = Qzero; - while (!NILP (args) && (tem = Fcar (args), SYMBOLP (tem))) - { - QUIT; - specbind (tem, val), args = Fcdr (args); - } - } -#endif - if (NILP (args)) return Qnil; @@ -936,12 +921,7 @@ test = Fcar (args); body = Fcdr (args); -#ifdef MOCKLISP_SUPPORT - while (tem = Feval (test), - (!EQ (Vmocklisp_arguments, Qt) ? XINT (tem) : !NILP (tem))) -#else while (tem = Feval (test), !NILP (tem)) -#endif { QUIT; Fprogn (body); @@ -2550,10 +2530,6 @@ return Fsignal (Qinvalid_function, list1 (fun)); if (EQ (funcar, Qlambda)) return Fassq (Qinteractive, Fcdr (Fcdr (fun))); -#ifdef MOCKLISP_SUPPORT - if (EQ (funcar, Qmocklisp)) - return Qt; /* All mocklisp functions can be called interactively */ -#endif if (EQ (funcar, Qautoload)) return Fcar (Fcdr (Fcdr (Fcdr (fun)))); else @@ -2894,15 +2870,6 @@ val = Fsymbol_value (form); -#ifdef MOCKLISP_SUPPORT - if (!EQ (Vmocklisp_arguments, Qt)) - { - if (NILP (val)) - val = Qzero; - else if (EQ (val, Qt)) - val = make_int (1); - } -#endif return val; } @@ -3001,15 +2968,6 @@ * (And GC-protected.) */ lisp_eval_depth--; -#ifdef MOCKLISP_SUPPORT - if (!EQ (Vmocklisp_arguments, Qt)) - { - if (NILP (val)) - val = Qzero; - else if (EQ (val, Qt)) - val = make_int (1); - } -#endif if (backtrace.debug_on_exit) val = do_debug_on_exit (val); POP_BACKTRACE (backtrace); @@ -3062,10 +3020,6 @@ val = Feval (apply1 (Fcdr (fun), original_args)); else if (EQ (funcar, Qlambda)) val = apply_lambda (fun, nargs, original_args); -#ifdef MOCKLISP_SUPPORT - else if (EQ (funcar, Qmocklisp)) - val = ml_apply (fun, original_args); -#endif else { invalid_function: @@ -3074,15 +3028,6 @@ } lisp_eval_depth--; -#ifdef MOCKLISP_SUPPORT - if (!EQ (Vmocklisp_arguments, Qt)) - { - if (NILP (val)) - val = Qzero; - else if (EQ (val, Qt)) - val = make_int (1); - } -#endif if (backtrace.debug_on_exit) val = do_debug_on_exit (val); POP_BACKTRACE (backtrace); @@ -3197,10 +3142,6 @@ goto invalid_function; if (EQ (funcar, Qlambda)) val = funcall_lambda (fun, nargs, args + 1); -#ifdef MOCKLISP_SUPPORT - else if (EQ (funcar, Qmocklisp)) - val = ml_apply (fun, Flist (nargs, args + 1)); -#endif else if (EQ (funcar, Qautoload)) { do_autoload (fun, args[0]); @@ -3546,11 +3487,6 @@ REGISTER int i; int optional = 0, rest = 0; -#ifdef MOCKLISP_SUPPORT - if (!EQ (Vmocklisp_arguments, Qt)) - specbind (Qmocklisp_arguments, Qt); /* t means NOT mocklisp! */ -#endif - if (CONSP (fun)) syms_left = Fcar (Fcdr (fun)); else if (COMPILED_FUNCTIONP (fun))
--- a/src/event-Xt.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/event-Xt.c Mon Aug 13 09:38:25 2007 +0200 @@ -1729,6 +1729,9 @@ { Lisp_Object console = Qnil; int infd; +#ifdef HAVE_GPM + int mousefd; +#endif if (CONSOLE_X_P (con)) return; /* X consoles are automatically selected for when we @@ -1736,6 +1739,15 @@ infd = event_stream_unixoid_select_console (con); XSETCONSOLE (console, con); select_filedesc (infd, console); +#ifdef HAVE_GPM + /* On a stream device (ie: noninteractive), bad things can happen. */ + if (EQ (CONSOLE_TYPE (con), Qtty)) { + mousefd = CONSOLE_TTY_MOUSE_FD (con); + if (mousefd >= 0) { + select_filedesc (mousefd, console); + } + } +#endif } static void @@ -1743,6 +1755,9 @@ { Lisp_Object console = Qnil; int infd; +#ifdef HAVE_GPM + int mousefd; +#endif if (CONSOLE_X_P (con)) return; /* X consoles are automatically selected for when we @@ -1750,6 +1765,15 @@ infd = event_stream_unixoid_unselect_console (con); XSETCONSOLE (console, con); unselect_filedesc (infd); +#ifdef HAVE_GPM + /* On a stream device (ie: noninteractive), bad things can happen. */ + if (EQ (CONSOLE_TYPE (con), Qtty)) { + mousefd = CONSOLE_TTY_MOUSE_FD (con); + if (mousefd >= 0) { + unselect_filedesc (mousefd); + } + } +#endif } /* read an event from a tty, if one is available. Returns non-zero
--- a/src/event-stream.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/event-stream.c Mon Aug 13 09:38:25 2007 +0200 @@ -188,6 +188,11 @@ /* File in which we write all commands we read; an lstream */ static Lisp_Object Vdribble_file; +/* Recent keys ring location; a vector of events or nil-s */ +Lisp_Object Vrecent_keys_ring; +int recent_keys_ring_size; +int recent_keys_ring_index; + #ifdef DEBUG_XEMACS int debug_emacs_events; #endif @@ -3227,24 +3232,39 @@ data structure.) */ -#define RECENT_KEYS_SIZE 100 -Lisp_Object recent_keys_ring; -int recent_keys_ring_index; - -DEFUN ("recent-keys", Frecent_keys, 0, 0, 0, /* -Return vector of last 100 or so keyboard or mouse button events read. +DEFUN ("recent-keys", Frecent_keys, 0, 1, 0, /* +Return a vector of recent keyboard or mouse button events read. +If NUMBER is non-nil, not more than NUMBER events will be returned. +Change number of events stored using `set-recent-keys-size'. + This copies the event objects into a new vector; it is safe to keep and modify them. */ - ()) + (number)) { struct gcpro gcpro1; Lisp_Object val = Qnil; - int size = XVECTOR (recent_keys_ring)->size; + int nwanted; int start, nkeys, i, j; GCPRO1 (val); - if (NILP (vector_data (XVECTOR (recent_keys_ring))[recent_keys_ring_index])) + if (NILP (number)) + nwanted = recent_keys_ring_size; + else + { + CHECK_NATNUM (number); + nwanted = XINT (number); + } + + /* Create the keys ring vector, if none present. */ + if (NILP (Vrecent_keys_ring)) + { + Vrecent_keys_ring = make_vector (recent_keys_ring_size, Qnil); + /* And return nothing in particular. */ + return make_vector (0, Qnil); + } + + if (NILP (vector_data (XVECTOR (Vrecent_keys_ring))[recent_keys_ring_index])) /* This means the vector has not yet wrapped */ { nkeys = recent_keys_ring_index; @@ -3252,26 +3272,102 @@ } else { - nkeys = size; - start = ((recent_keys_ring_index == size) ? 0 : recent_keys_ring_index); + nkeys = recent_keys_ring_size; + start = ((recent_keys_ring_index == nkeys) ? 0 : recent_keys_ring_index); } - val = make_vector (nkeys, Qnil); + if (nwanted < nkeys) + { + start += nkeys - nwanted; + if (start >= recent_keys_ring_size) + start -= recent_keys_ring_size; + nkeys = nwanted; + } + else + nwanted = nkeys; + + val = make_vector (nwanted, Qnil); for (i = 0, j = start; i < nkeys; i++) { - Lisp_Object e = vector_data (XVECTOR (recent_keys_ring))[j]; + Lisp_Object e = vector_data (XVECTOR (Vrecent_keys_ring))[j]; if (NILP (e)) abort (); vector_data (XVECTOR (val))[i] = Fcopy_event (e, Qnil); - if (++j >= size) + if (++j >= recent_keys_ring_size) j = 0; } UNGCPRO; return (val); } + +DEFUN ("recent-keys-ring-size", Frecent_keys_ring_size, 0, 0, 0, /* +The maximum number of events `recent-keys' can return. +*/ + ()) +{ + return make_int (recent_keys_ring_size); +} + +DEFUN ("set-recent-keys-ring-size", Fset_recent_keys_ring_size, 1, 1, 0, /* +Set the maximum number of events to be stored internally. +*/ + (size)) +{ + Lisp_Object new_vector = Qnil; + int i, j, nkeys, start, min; + struct gcpro gcpro1; + GCPRO1 (new_vector); + + CHECK_INT (size); + if (XINT (size) <= 0) + error ("Recent keys ring size must be positive"); + if (XINT (size) == recent_keys_ring_size) + return size; + + new_vector = make_vector (XINT (size), Qnil); + + if (NILP (Vrecent_keys_ring)) + { + Vrecent_keys_ring = new_vector; + return size; + } + + if (NILP (vector_data (XVECTOR (Vrecent_keys_ring))[recent_keys_ring_index])) + /* This means the vector has not yet wrapped */ + { + nkeys = recent_keys_ring_index; + start = 0; + } + else + { + nkeys = recent_keys_ring_size; + start = ((recent_keys_ring_index == nkeys) ? 0 : recent_keys_ring_index); + } + + if (XINT (size) > nkeys) + min = nkeys; + else + min = XINT (size); + + for (i = 0, j = start; i < min; i++) + { + vector_data (XVECTOR (new_vector))[i] + = vector_data (XVECTOR (Vrecent_keys_ring))[j]; + if (++j >= recent_keys_ring_size) + j = 0; + } + recent_keys_ring_size = XINT (size); + recent_keys_ring_index = (i < recent_keys_ring_size) ? i : 0; + + Vrecent_keys_ring = new_vector; + + UNGCPRO; + return size; +} + /* Vthis_command_keys having value Qnil means that the next time push_this_command_keys is called, it should start over. The times at which the command-keys are reset @@ -3372,16 +3468,20 @@ static void push_recent_keys (Lisp_Object event) { - Lisp_Object e - = vector_data (XVECTOR (recent_keys_ring)) [recent_keys_ring_index]; + Lisp_Object e; + + if (NILP (Vrecent_keys_ring)) + Vrecent_keys_ring = make_vector (recent_keys_ring_size, Qnil); + + e = vector_data (XVECTOR (Vrecent_keys_ring)) [recent_keys_ring_index]; if (NILP (e)) { e = Fmake_event (); - vector_data (XVECTOR (recent_keys_ring)) [recent_keys_ring_index] = e; + vector_data (XVECTOR (Vrecent_keys_ring)) [recent_keys_ring_index] = e; } Fcopy_event (event, e); - if (++recent_keys_ring_index == XVECTOR (recent_keys_ring)->size) + if (++recent_keys_ring_index == recent_keys_ring_size) recent_keys_ring_index = 0; } @@ -4160,6 +4260,8 @@ defsymbol (&Qcommand_execute, "command-execute"); DEFSUBR (Frecent_keys); + DEFSUBR (Frecent_keys_ring_size); + DEFSUBR (Fset_recent_keys_ring_size); DEFSUBR (Finput_pending_p); DEFSUBR (Fenqueue_eval_event); DEFSUBR (Fnext_event); @@ -4207,8 +4309,9 @@ recent_keys_ring_index = 0; - recent_keys_ring = make_vector (RECENT_KEYS_SIZE, Qnil); - staticpro (&recent_keys_ring); + recent_keys_ring_size = 100; + Vrecent_keys_ring = Qnil; + staticpro (&Vrecent_keys_ring); Vthis_command_keys = Qnil; staticpro (&Vthis_command_keys); @@ -4472,7 +4575,6 @@ Vdribble_file = Qnil; staticpro (&Vdribble_file); - #ifdef DEBUG_XEMACS DEFVAR_INT ("debug-emacs-events", &debug_emacs_events /* If non-zero, display debug information about Emacs events that XEmacs sees.
--- a/src/event-unixoid.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/event-unixoid.c Mon Aug 13 09:38:25 2007 +0200 @@ -39,6 +39,11 @@ #include "sysproc.h" /* select stuff */ #include "systime.h" +#ifdef HAVE_GPM +#include "gpmevent.h" +#include <gpm.h> +#endif + /* Mask of bits indicating the descriptors that we wait for input on. These work as follows: @@ -78,6 +83,12 @@ XSETCONSOLE (console, con); +#ifdef HAVE_GPM + if (fd == CONSOLE_TTY_MOUSE_FD (con)) { + return (handle_gpm_read (event,con,fd)); + } +#endif + nread = read (fd, &ch, 1); if (nread <= 0) {
--- a/src/events.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/events.c Mon Aug 13 09:38:25 2007 +0200 @@ -421,9 +421,12 @@ for (i = 0; i < XVECTOR (Vthis_command_keys)->size; i++) if (EQ (event, vector_data (XVECTOR (Vthis_command_keys)) [i])) abort (); - for (i = 0; i < XVECTOR (Vrecent_keys_ring)->size; i++) - if (EQ (event, vector_data (XVECTOR (Vrecent_keys_ring)) [i])) - abort (); + if (!NILP (Vrecent_keys_ring)) + { + for (i = 0; i < XVECTOR (Vrecent_keys_ring)->size; i++) + if (EQ (event, vector_data (XVECTOR (Vrecent_keys_ring)) [i])) + abort (); + } } #endif /* 0 */
--- a/src/frame-tty.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/frame-tty.c Mon Aug 13 09:38:25 2007 +0200 @@ -31,6 +31,10 @@ #include "console-tty.h" #include "frame.h" +#ifdef HAVE_GPM +#include <gpm.h> +#endif + /* Default properties to use when creating frames. */ Lisp_Object Vdefault_tty_frame_plist; @@ -82,6 +86,33 @@ call1 (Qinit_post_tty_win, FRAME_CONSOLE (f)); } +#ifdef HAVE_GPM +static int +tty_get_mouse_position (struct device *d, Lisp_Object *frame, int *x, int *y) +{ + Gpm_Event ev; + int num_buttons; + + num_buttons = Gpm_GetSnapshot(&ev); + *x = ev.x; + *y = ev.y; + *frame = DEVICE_SELECTED_FRAME (d); + return (1); +} + +static void +tty_set_mouse_position (struct window *w, int x, int y) +{ + /* XXX + I couldn't find any GPM functions that set the mouse position. + Mr. Perry had left this function empty; that must be why. + karlheg + */ +} + +#endif + + /* Change from withdrawn state to mapped state. */ static void tty_make_frame_visible (struct frame *f) @@ -170,6 +201,10 @@ CONSOLE_HAS_METHOD (tty, init_frame_1); CONSOLE_HAS_METHOD (tty, init_frame_3); CONSOLE_HAS_METHOD (tty, after_init_frame); +#ifdef HAVE_GPM + CONSOLE_HAS_METHOD (tty, get_mouse_position); + CONSOLE_HAS_METHOD (tty, set_mouse_position); +#endif CONSOLE_HAS_METHOD (tty, make_frame_visible); CONSOLE_HAS_METHOD (tty, make_frame_invisible); CONSOLE_HAS_METHOD (tty, frame_visible_p); @@ -190,4 +225,7 @@ tty_console_methods->device_specific_frame_props = &Vdefault_tty_frame_plist; + + /* Tty frames are now supported. Advertise a feature to indicate this. */ + Fprovide (intern ("tty-frames")); }
--- a/src/frame.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/frame.c Mon Aug 13 09:38:25 2007 +0200 @@ -2637,14 +2637,6 @@ XSETFRAME (frame, f); - /* - * If the frame has been initialized and the new height and width - * are the same as the current height and width, then just return. - */ - if (f->init_finished && - newheight == FRAME_HEIGHT (f) && newwidth == FRAME_WIDTH (f)) - return; - default_face_height_and_width (frame, &font_height, &font_width); /* This size-change overrides any pending one for this frame. */ @@ -2702,14 +2694,29 @@ && ! FRAME_MINIBUF_ONLY_P (f)) /* Frame has both root and minibuffer. */ { + /* + * Leave the minibuffer height the same if the frame has + * been initialized, and the minibuffer height is tall + * enough to display at least one line of text in the default + * font, and the old minibuffer height is a multiple of the + * default font height. This should cause the minibuffer + * height to be recomputed on font changes but not for + * other frame size changes, which seems reasonable. + */ + int old_minibuf_height = + XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_height; + int minibuf_height = + f->init_finished && (old_minibuf_height % font_height) == 0 ? + max(old_minibuf_height, font_height) : + font_height; set_window_pixheight (FRAME_ROOT_WINDOW (f), /* - font_height for minibuffer */ - new_pixheight - font_height, 0); + new_pixheight - minibuf_height, 0); XWINDOW (FRAME_MINIBUF_WINDOW (f))->pixel_top = - new_pixheight - font_height + FRAME_TOP_BORDER_END (f); + new_pixheight - minibuf_height + FRAME_TOP_BORDER_END (f); - set_window_pixheight (FRAME_MINIBUF_WINDOW (f), font_height, 0); + set_window_pixheight (FRAME_MINIBUF_WINDOW (f), minibuf_height, 0); } else /* Frame has just one top-level window. */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/gpmevent.c Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,113 @@ +/* William Perry 1997 */ + +#include <config.h> +#include "lisp.h" +#include "console-tty.h" +#include "device.h" +#include "events.h" +#include "events-mod.h" +#include "process.h" +#include "sysdep.h" +#include "sysproc.h" /* select stuff */ +#include "systime.h" + +#ifdef HAVE_GPM +#include "gpmevent.h" +#include <gpm.h> + +#if (!defined(__linux__)) /* possible under xterm */ +#define KG_SHIFT 0 +#define KG_CTRL 2 +#define KG_ALT 3 +#else +#include <linux/keyboard.h> +#endif + +extern SELECT_TYPE input_wait_mask, non_fake_input_wait_mask; +extern SELECT_TYPE process_only_mask, device_only_mask; +void select_filedesc (int fd, Lisp_Object what); + +int handle_gpm_read(struct Lisp_Event *event, struct console *con, int fd) +{ + Gpm_Event ev; + int modifiers,type,button; + + type = -1; + button = 1; + + if (!Gpm_GetEvent(&ev)) + return(0); + + event->timestamp = 0; + event->channel = CONSOLE_SELECTED_FRAME (con); + + /* Whow, wouldn't named defines be NICE!?!?! */ + modifiers = 0; + + if (ev.modifiers & 1) modifiers |= MOD_SHIFT; + if (ev.modifiers & 2) modifiers |= MOD_META; + if (ev.modifiers & 4) modifiers |= MOD_CONTROL; + if (ev.modifiers & 8) modifiers |= MOD_META; + + if (ev.type & GPM_DOWN) + type = GPM_DOWN; + else if (ev.type & GPM_UP) + type = GPM_UP; + else if (ev.type & GPM_MOVE) { + type = GPM_MOVE; + GPM_DRAWPOINTER(&ev); + } + + if (ev.buttons & GPM_B_LEFT) + button = 1; + else if (ev.buttons & GPM_B_MIDDLE) + button = 2; + else if (ev.buttons & GPM_B_RIGHT) + button = 3; + + switch (type) { + case GPM_DOWN: + case GPM_UP: + if (type == GPM_DOWN) + event->event_type = button_press_event; + else event->event_type = button_release_event; + event->event.button.x = ev.x; + event->event.button.y = ev.y; + event->event.button.button = button; + event->event.button.modifiers = modifiers; + break; + case GPM_MOVE: + event->event_type = pointer_motion_event; + event->event.motion.x = ev.x; + event->event.motion.y = ev.y; + event->event.motion.modifiers = modifiers; + default: + return (0); + } + return (1); +} + +int connect_to_gpm(struct console *con) +{ + /* Only do this if we are running after dumping and really interactive */ + if (!noninteractive && initialized) { + /* We really only want to do this on a TTY */ + if (EQ (CONSOLE_TYPE (con), Qtty)) { + Gpm_Connect conn; + + conn.eventMask = GPM_DOWN|GPM_UP|GPM_MOVE; + conn.defaultMask = GPM_MOVE; + conn.minMod = 0; + conn.maxMod = ((1<<KG_SHIFT)|(1<<KG_ALT)|(1<<KG_CTRL)); + + if (Gpm_Open (&conn, 0) == -1) { + CONSOLE_TTY_MOUSE_FD (con) = -1; + return(0); + } + set_descriptor_non_blocking (gpm_fd); + CONSOLE_TTY_MOUSE_FD (con) = gpm_fd; + } + } +} + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/gpmevent.h Mon Aug 13 09:38:25 2007 +0200 @@ -0,0 +1,7 @@ +#ifndef _HAVE_GPM +#define _HAVE_GPM + +int handle_gpm_read(struct Lisp_Event *event, struct console *con, int fd); +int connect_to_gpm(struct console *con); + +#endif
--- a/src/mocklisp.c Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,290 +0,0 @@ -/* Mocklisp compatibility functions for XEmacs Lisp interpreter. - Copyright (C) 1985, 1986, 1992, 1993, 1995 Free Software Foundation, Inc. - -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: FSF 19.30. */ - - -/* Compatibility for mocklisp */ - -#include <config.h> - -#ifdef MOCKLISP_SUPPORT /* whole file */ - -#include "lisp.h" -#include "buffer.h" - -Lisp_Object Qmocklisp; -Lisp_Object Qmocklisp_arguments; -Lisp_Object Vmocklisp_arguments; - -#if 0 /* Now in lisp code ("macrocode...") */ -xxDEFUN ("ml-defun", ml_defun, 0, UNEVALLED, 0 /* -Define mocklisp functions -*/ ) - (Lisp_Object args) -{ - Lisp_Object elt; - - while (!NILP (args)) - { - elt = Fcar (args); - Ffset (Fcar (elt), Fcons (Qmocklisp, Fcdr (elt))); - args = Fcdr (args); - } - return Qnil; -} -#endif /* 0 */ - - -DEFUN ("ml-if", Fml_if, 0, UNEVALLED, 0, /* -Mocklisp version of `if'. -*/ - (args)) -{ - /* This function can GC */ - Lisp_Object val; - struct gcpro gcpro1; - - GCPRO1 (args); - while (!NILP (args)) - { - val = Feval (Fcar (args)); - args = Fcdr (args); - if (NILP (args)) break; - if (XINT (val)) - { - val = Feval (Fcar (args)); - break; - } - args = Fcdr (args); - } - UNGCPRO; - return val; -} - -#if 0 /* Now converted to regular "while" by hairier conversion code. */ -xxDEFUN ("ml-while", ml_while, 1, UNEVALLED, 0 /* -while for mocklisp programs -*/ ) - (Lisp_Object args) -{ - Lisp_Object test, body, tem; - struct gcpro gcpro1, gcpro2; - - GCPRO2 (test, body); - - test = Fcar (args); - body = Fcdr (args); - while (tem = Feval (test), XINT (tem)) - { - QUIT; - Fprogn (body); - } - - UNGCPRO; - return Qnil; -} -#endif /* 0 */ - - -/* This is the main entry point to mocklisp execution. - When eval sees a mocklisp function being called, it calls here - with the unevaluated argument list */ - -Lisp_Object -ml_apply (Lisp_Object function, Lisp_Object args) -{ - /* This function can GC */ - int speccount = specpdl_depth (); - Lisp_Object val; - - specbind (Qmocklisp_arguments, args); - val = Fprogn (Fcdr (function)); - return unbind_to (speccount, val); -} - -#if 0 /* now in lisp code */ - -xxDEFUN ("ml-nargs", Fml_nargs, Sml_nargs, 0, 0, 0 /* -Number of arguments to currently executing mocklisp function. -*/ ) - () -{ - if (EQ (Vmocklisp_arguments, Qinteractive)) - return make_int (0); - return Flength (Vmocklisp_arguments); -} - - -/* now in lisp code */ -xxDEFUN ("ml-arg", Fml_arg, Sml_arg, 1, 2, 0 /* -Argument number N to currently executing mocklisp function. -*/ ) - (n, prompt) - Lisp_Object n, prompt; -{ - if (EQ (Vmocklisp_arguments, Qinteractive)) - return call1 (Qread_from_minibuffer, prompt); - CHECK_INT (n); - XSETINT (n, XINT (n) - 1); /* Mocklisp likes to be origin-1 */ - return Fcar (Fnthcdr (n, Vmocklisp_arguments)); -} - -/* now in lisp code */ -xxDEFUN ("ml-interactive", Fml_interactive, Sml_interactive, 0, 0, 0 /* -True if currently executing mocklisp function was called interactively. -*/ ) - () -{ - return (EQ (Vmocklisp_arguments, Qinteractive)) ? Qt : Qnil; -} - -#endif /* 0 */ - - -/* ??? Isn't this the same as `provide-prefix-arg' from mlsupport.el? */ -DEFUN ("ml-provide-prefix-argument", Fml_provide_prefix_argument, 2, UNEVALLED, 0, /* -Evaluate second argument, using first argument as prefix arg value. -*/ - (args)) -{ - /* This function can GC */ - struct gcpro gcpro1; - GCPRO1 (args); - Vcurrent_prefix_arg = Feval (Fcar (args)); - UNGCPRO; - return Feval (Fcar (Fcdr (args))); -} - -DEFUN ("ml-prefix-argument-loop", Fml_prefix_argument_loop, 0, UNEVALLED, 0, /* - -*/ - (args)) -{ - /* This function can GC */ - Lisp_Object tem; - int i; - struct gcpro gcpro1; - - /* Set `arg' in case we call a built-in function that looks at it. Still are a few. */ - if (NILP (Vcurrent_prefix_arg)) - i = 1; - else - { - tem = Vcurrent_prefix_arg; - if (CONSP (tem)) - tem = Fcar (tem); - if (EQ (tem, Qminus)) - i = -1; - else i = XINT (tem); - } - - GCPRO1 (args); - while (i-- > 0) - Fprogn (args); - UNGCPRO; - return Qnil; -} - - -#if 0 -/* now in lisp code */ -DEFUN ("ml-substr", Fml_substr, 3, 3, 0, /* -Return a substring of STRING, starting at index FROM and of length LENGTH. -If either FROM or LENGTH is negative, the length of STRING is added to it. -*/ - (string, from, to)) -{ - CHECK_STRING (string); - CHECK_INT (from); - CHECK_INT (to); - - if (XINT (from) < 0) - XSETINT (from, XINT (from) + string_char_length (XSTRING (string))); - if (XINT (to) < 0) - XSETINT (to, XINT (to) + string_char_length (XSTRING (string))); - XSETINT (to, XINT (to) + XINT (from)); - return Fsubstring (string, from, to); -} - - -/* now in lisp code */ -DEFUN ("insert-string", Finsert_string, 0, MANY, 0, /* -Mocklisp-compatibility insert function. -Like the function `insert' except that any argument that is a number -is converted into a string by expressing it in decimal. -*/ - (int nargs, Lisp_Object *args)) -{ - int argnum; - Lisp_Object tem; - - for (argnum = 0; argnum < nargs; argnum++) - { - tem = args[argnum]; - retry: - if (INTP (tem)) - tem = Fnumber_to_string (tem); - if (STRINGP (tem)) - buffer_insert1 (current_buffer, tem); - else - { - tem = wrong_type_argument (Qstringp, tem); - goto retry; - } - } - return Qnil; -} - -#endif /* 0 */ - - -/************************************************************************/ -/* initialization */ -/************************************************************************/ - -void -syms_of_mocklisp (void) -{ - defsymbol (&Qmocklisp, "mocklisp"); - defsymbol (&Qmocklisp_arguments, "mocklisp-arguments"); - -/*DEFSUBR (Fml_defun);*/ - DEFSUBR (Fml_if); -/*DEFSUBR (Fml_while);*/ -/*DEFSUBR (Fml_nargs);*/ -/*DEFSUBR (Fml_arg);*/ -/*DEFSUBR (Fml_interactive);*/ - DEFSUBR (Fml_provide_prefix_argument); - DEFSUBR (Fml_prefix_argument_loop); -/*DEFSUBR (Fml_substr);*/ -/*DEFSUBR (Finsert_string);*/ -} - -void -vars_of_mocklisp (void) -{ - DEFVAR_LISP ("mocklisp-arguments", &Vmocklisp_arguments /* -While in a mocklisp function, the list of its unevaluated args. -*/ ); - Vmocklisp_arguments = Qt; -} - -#endif /* MOCKLISP_SUPPORT */
--- a/src/process.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/process.c Mon Aug 13 09:38:25 2007 +0200 @@ -69,6 +69,12 @@ maybe other values to come. */ static Lisp_Object Vprocess_connection_type; +#ifdef PROCESS_IO_BLOCKING +/* List of port numbers or port names to set a blocking I/O mode. + Nil means set a non-blocking I/O mode [default]. */ +static Lisp_Object network_stream_blocking_port_list; +#endif /* PROCESS_IO_BLOCKING */ + /* FSFmacs says: These next two vars are non-static since sysdep.c uses them in the @@ -1496,7 +1502,37 @@ descriptor_to_process[inch] = proc; +#ifdef PROCESS_IO_BLOCKING + { + Lisp_Object tail; + + 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)) + { + struct servent *svc_info; + CHECK_STRING (tail_port); + svc_info = getservbyname ((char *) XSTRING_DATA (tail_port), "tcp"); + if ((svc_info != 0) && (svc_info->s_port == port)) + break; + else + continue; + } + else if ((INTP (tail_port)) && (htons ((unsigned short) XINT (tail_port)) == port)) + break; + } + + if (!CONSP (tail)) + { +#endif /* PROCESS_IO_BLOCKING */ set_descriptor_non_blocking (inch); +#ifdef PROCESS_IO_BLOCKING + } + } +#endif /* PROCESS_IO_BLOCKING */ XPROCESS (proc)->pid = Fcons (service, host); XPROCESS (proc)->buffer = buffer; @@ -3394,6 +3430,15 @@ The value takes effect when `start-process' is called. */ ); Vprocess_connection_type = Qt; + +#ifdef PROCESS_IO_BLOCKING + DEFVAR_LISP ("network-stream-blocking-port-list", &network_stream_blocking_port_list /* +List of port numbers or port names to set a blocking I/O mode with connection. +Nil value means to set a default(non-blocking) I/O mode. +The value takes effect when `open-network-stream-internal' is called. +*/ ); + network_stream_blocking_port_list = Qnil; +#endif /* PROCESS_IO_BLOCKING */ } #endif /* not NO_SUBPROCESSES */
--- a/src/s/386bsd.h Mon Aug 13 09:37:21 2007 +0200 +++ b/src/s/386bsd.h Mon Aug 13 09:38:25 2007 +0200 @@ -15,8 +15,6 @@ #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base) -/* Need to use GNU make, as system make has problems */ -#define MAKE_COMMAND gmake #define LIBS_DEBUG /* For mem-limits.h. */
--- a/src/s/decosf3-1.h Mon Aug 13 09:37:21 2007 +0200 +++ b/src/s/decosf3-1.h Mon Aug 13 09:38:25 2007 +0200 @@ -23,3 +23,7 @@ #endif #define BROKEN_SIGIO + +#ifndef TERMINFO +#define TERMINFO +#endif
--- a/src/s/usg5-4.h Mon Aug 13 09:37:21 2007 +0200 +++ b/src/s/usg5-4.h Mon Aug 13 09:38:25 2007 +0200 @@ -55,9 +55,6 @@ /* there are no -lg libraries on this system, and no libPW */ #define LIBS_DEBUG -/* This is turned off because nobody actually uses LIBS_STANDARD (Nov 1995). - That name is a typo. The next step is to delete this entirely. */ -/* #define LIBS_STANDARD -lc */ /* No <sioctl.h> */ @@ -176,3 +173,6 @@ /* Tell x11term.c and keyboard.c we have the system V streams feature. */ #define SYSV_STREAMS +/* On Some SysV System , w3 freeze. If freeze your xemacs , Add below definition */ +/* This definition added by Shogo Fujii(shogo@bsd1.kbnes.nec.co.jp) */ +#define PROCESS_IO_BLOCKING
--- a/src/symsinit.h Mon Aug 13 09:37:21 2007 +0200 +++ b/src/symsinit.h Mon Aug 13 09:38:25 2007 +0200 @@ -99,7 +99,6 @@ void syms_of_menubar_x (void); void syms_of_menubar (void); void syms_of_minibuf (void); -void syms_of_mocklisp (void); void syms_of_mule (void); void syms_of_mule_canna (void); void syms_of_mule_ccl (void); @@ -235,7 +234,6 @@ void vars_of_menubar_x (void); void vars_of_menubar (void); void vars_of_minibuf (void); -void vars_of_mocklisp (void); void vars_of_mule (void); void vars_of_mule_canna (void); void vars_of_mule_charset (void);
--- a/src/sysdep.c Mon Aug 13 09:37:21 2007 +0200 +++ b/src/sysdep.c Mon Aug 13 09:38:25 2007 +0200 @@ -1322,7 +1322,8 @@ /* Getting and setting emacs_tty structures */ /* ------------------------------------------------------ */ -#ifdef HAVE_TTY +/* It's wrong to encase these into #ifdef HAVE_TTY because we need + them for child TTY processes. */ /* Set *TC to the parameters associated with the terminal FD. Return zero if all's well, or -1 if we ran into an error we @@ -1463,8 +1464,6 @@ return 0; } -#endif - /* ------------------------------------------------------ */ /* Initializing a device */
--- a/src/uaf.h Mon Aug 13 09:37:21 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,298 +0,0 @@ -/* XEmacs VMS UAF definition file. - Copyright (C) 1986 Free Software Foundation, Inc. - -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: FSF 19.30. */ - -/* - * User Authorization File record formats - */ -#ifndef UAF$K_LENGTH - -struct UAF { -#define UAF$C_USER_ID 1 -#define UAF$C_VERSION1 1 -#define UAF$C_KEYED_PART 52 -#define UAF$C_AD_II 0 -#define UAF$C_PURDY 1 -#define UAF$C_PURDY_V 2 -#define UAF$K_FIXED 644 -#define UAF$C_FIXED 644 -#define UAF$K_LENGTH 1412 -#define UAF$C_LENGTH 1412 -#define UAF$S_UAFDEF 1412 -#define UAF$B_RTYPE 0 - char uaf$b_rtype; -#define UAF$B_VERSION 1 - char uaf$b_version; -#define UAF$W_USRDATOFF 2 - short uaf$w_usrdatoff; -#define UAF$S_USERNAME 32 -#define UAF$T_USERNAME 4 -#define UAF$T_USERNAME_TAG 35 - char uaf$t_username[UAF$S_USERNAME]; -#define UAF$L_UIC 36 -#define UAF$W_MEM 36 -#define UAF$W_GRP 38 - union { - long uaf_l_uic; -#define uaf$l_uic uaf_u_uic.uaf_l_uic - struct { - short uaf_w_mem; - short uaf_w_grp; -#define uaf$w_mem uaf_u_uic.uaf_u_mem_grp.uaf_w_mem -#define uaf$w_grp uaf_u_uic.uaf_u_mem_grp.uaf_w_grp - } uaf_u_mem_grp; - } uaf_u_uic; -#define UAF$L_SUB_ID 40 - long uaf$l_sub_id; -#define UAF$S_PARENT_ID 8 -#define UAF$Q_PARENT_ID 44 - char uaf$q_parent_id[UAF$S_PARENT_ID]; -#define UAF$S_ACCOUNT 32 -#define UAF$T_ACCOUNT 52 - char uaf$t_account[UAF$S_ACCOUNT]; -#define UAF$S_OWNER 32 -#define UAF$T_OWNER 84 - char uaf$t_owner[UAF$S_OWNER]; -#define UAF$S_DEFDEV 32 -#define UAF$T_DEFDEV 116 - char uaf$t_defdev[UAF$S_DEFDEV]; -#define UAF$S_DEFDIR 64 -#define UAF$T_DEFDIR 148 - char uaf$t_defdir[UAF$S_DEFDIR]; -#define UAF$S_LGICMD 64 -#define UAF$T_LGICMD 212 - char uaf$t_lgicmd[UAF$S_LGICMD]; -#define UAF$S_DEFCLI 32 -#define UAF$T_DEFCLI 276 - char uaf$t_defcli[UAF$S_DEFCLI]; -#define UAF$S_CLITABLES 32 -#define UAF$T_CLITABLES 308 - char uaf$t_clitables[UAF$S_CLITABLES]; -#define UAF$S_PWD 8 -#define UAF$Q_PWD 340 -#define UAF$L_PWD 340 - char uaf$q_pwd[UAF$S_PWD]; -#define uaf$l_pwd uaf$q_pwd[0] -#define UAF$S_PWD2 8 -#define UAF$Q_PWD2 348 - char uaf$q_pwd2[UAF$S_PWD2]; -#define UAF$W_LOGFAILS 356 - short uaf$w_logfails; -#define UAF$W_SALT 358 - short uaf$w_salt; -#define UAF$B_ENCRYPT 360 - char uaf$b_encrypt; -#define UAF$B_ENCRYPT2 361 - char uaf$b_encrypt2; -#define UAF$B_PWD_LENGTH 362 - char uaf$b_pwd_length; -#define UAF$S_EXPIRATION 8 -#define UAF$Q_EXPIRATION 364 - char uaf$q_expiration[UAF$S_EXPIRATION]; -#define UAF$S_PWD_LIFETIME 8 -#define UAF$Q_PWD_LIFETIME 372 - char uaf$q_pwd_lifetime[UAF$S_PWD_LIFETIME]; -#define UAF$S_PWD_DATE 8 -#define UAF$Q_PWD_DATE 380 - char uaf$q_pwd_date[UAF$S_PWD_DATE]; -#define UAF$S_PWD2_DATE 8 -#define UAF$Q_PWD2_DATE 388 - char uaf$q_pwd2_date[UAF$S_PWD2_DATE]; -#define UAF$S_LASTLOGIN_I 8 -#define UAF$Q_LASTLOGIN_I 396 - char uaf$q_lastlogin_i[UAF$S_LASTLOGIN_I]; -#define UAF$S_LASTLOGIN_N 8 -#define UAF$Q_LASTLOGIN_N 404 - char uaf$q_lastlogin_n[UAF$S_LASTLOGIN_N]; -#define UAF$S_PRIV 8 -#define UAF$Q_PRIV 412 - char uaf$q_priv[UAF$S_PRIV]; -#define UAF$S_DEF_PRIV 8 -#define UAF$Q_DEF_PRIV 420 - char uaf$q_def_priv[UAF$S_DEF_PRIV]; -#define UAF$S_MIN_CLASS 20 -#define UAF$R_MIN_CLASS 428 - char uaf$r_min_class[UAF$S_MIN_CLASS]; -#define UAF$S_MAX_CLASS 20 -#define UAF$R_MAX_CLASS 448 - char uaf$r_max_class[UAF$S_MAX_CLASS]; -#define UAF$L_FLAGS 468 -#define UAF$V_DISCTLY 0 -#define UAF$V_DEFCLI 1 -#define UAF$V_LOCKPWD 2 -#define UAF$V_CAPTIVE 3 -#define UAF$V_DISACNT 4 -#define UAF$V_DISWELCOM 5 -#define UAF$V_DISMAIL 6 -#define UAF$V_NOMAIL 7 -#define UAF$V_GENPWD 8 -#define UAF$V_PWD_EXPIRED 9 -#define UAF$V_PWD2_EXPIRED 10 -#define UAF$V_AUDIT 11 -#define UAF$V_DISREPORT 12 -#define UAF$V_DISRECONNECT 13 - union { - unsigned long uaf_l_flags; -#define uaf$l_flags uaf_u_flags.uaf_l_flags - struct { - unsigned long - uaf_v_disctly : 1, -#define uaf$v_disctly uaf_u_flags.uaf_v_flags.uaf_v_disctly - uaf_v_defcli : 1, -#define uaf$v_defcli uaf_u_flags.uaf_v_flags.uaf_v_discli - uaf_v_lockpwd : 1, -#define uaf$v_lockpwd uaf_u_flags.uaf_v_flags.uaf_v_lockpwd - uaf_v_captive : 1, -#define uaf$v_captive uaf_u_flags.uaf_v_flags.uaf_v_captive - uaf_v_disacnt : 1, -#define uaf$v_disacnt uaf_u_flags.uaf_v_flags.uaf_v_disacnt - uaf_v_diswelcom : 1, -#define uaf$v_diswelcom uaf_u_flags.uaf_v_flags.uaf_v_diswelcom - uaf_v_dismail : 1, -#define uaf$v_dismail uaf_u_flags.uaf_v_flags.uaf_v_dismail - uaf_v_nomail : 1, -#define uaf$v_nomail uaf_u_flags.uaf_v_flags.uaf_v_nomail - uaf_v_genpwd : 1, -#define uaf$v_genpwd uaf_u_flags.uaf_v_flags.uaf_v_genpwd - uaf_v_pwd_expired : 1, -#define uaf$v_pwd_expired uaf_u_flags.uaf_v_flags.uaf_v_pwd_expired - uaf_v_pwd2_expired : 1, -#define uaf$v_pwd2_expired uaf_u_flags.uaf_v_flags.uaf_v_pwd2_expired - uaf_v_audit : 1, -#define uaf$v_audit uaf_u_flags.uaf_v_flags.uaf_v_audit - uaf_v_disreport : 1, -#define uaf$v_disreport uaf_u_flags.uaf_v_flags.uaf_v_disreport - uaf_v_disreconnect : 1; -#define uaf$v_disreconnect uaf_u_flags.uaf_v_flags.uaf_v_disreconnect - } uaf_v_flags; - } uaf_u_flags; -#define UAF$S_NETWORK_ACCESS_P 3 -#define UAF$B_NETWORK_ACCESS_P 472 - char uaf$b_network_access_p[UAF$S_NETWORK_ACCESS_P]; -#define UAF$S_NETWORK_ACCESS_S 3 -#define UAF$B_NETWORK_ACCESS_S 475 - char uaf$b_network_access_s[UAF$S_NETWORK_ACCESS_S]; -#define UAF$S_BATCH_ACCESS_P 3 -#define UAF$B_BATCH_ACCESS_P 478 - char uaf$b_batch_access_p[UAF$S_BATCH_ACCESS_P]; -#define UAF$S_BATCH_ACCESS_S 3 -#define UAF$B_BATCH_ACCESS_S 481 - char uaf$b_batch_access_s[UAF$S_BATCH_ACCESS_S]; -#define UAF$S_LOCAL_ACCESS_P 3 -#define UAF$B_LOCAL_ACCESS_P 484 - char uaf$b_local_access_p[UAF$S_LOCAL_ACCESS_P]; -#define UAF$S_LOCAL_ACCESS_S 3 -#define UAF$B_LOCAL_ACCESS_S 487 - char uaf$b_local_access_s[UAF$S_LOCAL_ACCESS_S]; -#define UAF$S_DIALUP_ACCESS_P 3 -#define UAF$B_DIALUP_ACCESS_P 490 - char uaf$b_dialup_access_p[UAF$S_DIALUP_ACCESS_P]; -#define UAF$S_DIALUP_ACCESS_S 3 -#define UAF$B_DIALUP_ACCESS_S 493 - char uaf$b_dialup_access_s[UAF$S_DIALUP_ACCESS_S]; -#define UAF$S_REMOTE_ACCESS_P 3 -#define UAF$B_REMOTE_ACCESS_P 496 - char uaf$b_remote_access_p[UAF$S_REMOTE_ACCESS_P]; -#define UAF$S_REMOTE_ACCESS_S 3 -#define UAF$B_REMOTE_ACCESS_S 499 - char uaf$b_remote_access_s[UAF$S_REMOTE_ACCESS_S]; -#define UAF$B_PRIMEDAYS 514 -#define UAF$V_MONDAY 0 -#define UAF$V_TUESDAY 1 -#define UAF$V_WEDNESDAY 2 -#define UAF$V_THURSDAY 3 -#define UAF$V_FRIDAY 4 -#define UAF$V_SATURDAY 5 -#define UAF$V_SUNDAY 6 - union { - unsigned char uaf_b_primedays; -#define uaf$b_primedays uaf_u_primedays.uaf_b_primedays - unsigned char - uaf_v_monday : 1, -#define uaf$v_monday uaf_u_primedays.uaf_v_monday - uaf_v_tuesday : 1, -#define uaf$v_tuesday uaf_u_primedays.uaf_v_tuesday - uaf_v_wednesday : 1, -#define uaf$v_wednesday uaf_u_primedays.uaf_v_wednesday - uaf_v_thursday : 1, -#define uaf$v_thursday uaf_u_primedays.uaf_v_thursday - uaf_v_friday : 1, -#define uaf$v_friday uaf_u_primedays.uaf_v_friday - uaf_v_saturday : 1, -#define uaf$v_saturday uaf_u_primedays.uaf_v_saturday - uav_v_sunday : 1; -#define uaf$v_sunday uaf_u_primedays.uaf_v_sunday - } uaf_u_primedays; -#define UAF$B_PRI 516 - char uaf$b_pri; -#define UAF$B_QUEPRI 517 - char uaf$b_quepri; -#define UAF$W_MAXJOBS 518 - short uaf$w_maxjobs; -#define UAF$W_MAXACCTJOBS 520 - short uaf$w_maxacctjobs; -#define UAF$W_MAXDETACH 522 - short uaf$w_maxdetach; -#define UAF$W_PRCCNT 524 - short uaf$w_prccnt; -#define UAF$W_BIOLM 526 - short uaf$w_biolm; -#define UAF$W_DIOLM 528 - short uaf$w_diolm; -#define UAF$W_TQCNT 530 - short uaf$w_twcnt; -#define UAF$W_ASTLM 532 - short uaf$w_astlm; -#define UAF$W_ENQLM 534 - short uaf$w_enqlm; -#define UAF$W_FILLM 536 - short uaf$w_fillm; -#define UAF$W_SHRFILLM 538 - short uaf$w_shrfillm; -#define UAF$L_WSQUOTA 540 - long uaf$l_wsquota; -#define UAF$L_DFWSCNT 544 - long uaf$l_dfwscnt; -#define UAF$L_WSEXTENT 548 - long uaf$l_wsextent; -#define UAF$L_PGFLQUOTA 552 - long uaf$l_pgflquota; -#define UAF$L_CPUTIM 556 - long uaf$l_cputim; -#define UAF$L_BYTLM 560 - long uaf$l_bytlm; -#define UAF$L_PBYTLM 564 - long uaf$l_pbytlm; -#define UAF$L_JTQUOTA 568 - long uaf$l_jtquota; -#define UAF$W_PROXY_LIM 572 - short uaf$w_proxy_lim; -#define UAF$W_PROXIES 574 - short uaf$w_proxies; -#define UAF$W_ACCOUNT_LIM 576 - short uaf$w_account_lim; -#define UAF$W_ACCOUNTS 578 - short uaf$w_accounts; - char uaf$b_fixed[UAF$C_FIXED - UAF$W_ACCOUNTS + 2]; - char uaf$b_usrdata[UAF$C_LENGTH - UAF$C_FIXED]; -}; - -#endif /* not UAF$K_LENGTH */