# HG changeset patch # User cvs # Date 1186989857 -7200 # Node ID 7d55a9ba150cb66b90d8d7806396ff1cf42b569d # Parent 578fd4947a727387c20a190b2ec7b0992c53d26d Import from CVS: tag r20-1b11 diff -r 578fd4947a72 -r 7d55a9ba150c CHANGES-beta --- a/CHANGES-beta Mon Aug 13 09:23:08 2007 +0200 +++ b/CHANGES-beta Mon Aug 13 09:24:17 2007 +0200 @@ -1,4 +1,25 @@ -*- indented-text -*- +to 20.1 beta11 +-- Move lisp/auctex/style/*.el to etc/auctex/style/. +-- regenerated finder database (every lisp file should have a Keywords: line) +-- VM-6.23 +-- dired-1.15-x4 +-- time-1.13 +-- xmine-1.2 +-- More MS Windows NT patches Courtesy of Marc Paquette +-- webster-www.el Courtesy of Tomasz Cholewo +-- webster.el, webster-ucb.el removed from distribution +-- movemail imported from Emacs 19.34 (With POP/Hesiod/Kerberos support) +-- Custom-1.69 +-- miscellaneous bug fixes +-- W3-3.0.79 +-- Gnus-5.4.40 +-- GNATS/send-pr fixes, should work now +-- edmacro-3.07 +-- configure fixes +-- cc-mode-4.390 +-- restore inline.c + to 20.1 beta10 -- custom-1.68 [Beyond 19.15] -- W3-3.0.75 diff -r 578fd4947a72 -r 7d55a9ba150c ChangeLog --- a/ChangeLog Mon Aug 13 09:23:08 2007 +0200 +++ b/ChangeLog Mon Aug 13 09:24:17 2007 +0200 @@ -1,3 +1,26 @@ +Sat Apr 5 09:11:36 1997 Steven L Baur + + * XEmacs 20.1-b11 is released. + +Wed Apr 2 15:27:35 1997 Steven L Baur + + * Makefile.in (install-only): New target. Functionality suggested + by Larry Schwimmer, correct way of doing it suggested by Chuck + Thompson. + + * configure.in: Default to "-Olimit 2000" as suggested by Jamie + Zawinski for SGI cc and Irix 6. + +Tue Apr 1 12:23:13 1997 Steven L Baur + + * configure.in: Add configuration parameters for Emacs 19.34 + movemail.c (--with-pop, --with-kerberos, --with-hesiod). + +Fri Mar 28 19:58:41 1997 Steven L Baur + + * configure.in: Remove garbage if [ ... ] constructs and a + mispatch. + Thu Mar 27 18:24:19 1997 Steven L Baur * XEmacs 20.1-b10 is released. diff -r 578fd4947a72 -r 7d55a9ba150c Makefile.in --- a/Makefile.in Mon Aug 13 09:23:08 2007 +0200 +++ b/Makefile.in Mon Aug 13 09:24:17 2007 +0200 @@ -20,7 +20,8 @@ # Boston, MA 02111-1307, USA. # make all to compile and build XEmacs. -# make install to install it. +# make install to build and install it. +# make install-only to install after a previous complete build # make TAGS to update tags tables. # # make clean or make mostlyclean @@ -351,6 +352,8 @@ ## inconsistency in the build process. So we go ahead and depend on ## all. --cet +install-only: ${MAKE_SUBDIR} install-arch-dep install-arch-indep + install: all install-arch-dep install-arch-indep; install-arch-dep: mkdir diff -r 578fd4947a72 -r 7d55a9ba150c configure --- a/configure Mon Aug 13 09:23:08 2007 +0200 +++ b/configure Mon Aug 13 09:24:17 2007 +0200 @@ -262,6 +262,9 @@ to run. --usage-tracking Enable some Sun-internal code. If you don't know what this is, you don't want it. +--with-pop support POP for mail retrieval +--with-kerberos support Kerberos-authenticated POP +--with-hesiod support Hesiod to get the POP server host Internationalization options: @@ -420,6 +423,9 @@ with_energize | \ with_sparcworks | \ with_tooltalk | \ + with_pop | \ + with_kerberos | \ + with_hesiod | \ external_widget | \ extra_verbose | \ const_is_losing | \ @@ -1293,7 +1299,9 @@ ## Iris 4D mips-sgi-irix3.* ) machine=iris4d opsys=irix3-3 ;; mips-sgi-irix4.* ) machine=iris4d opsys=irix4-0 ;; - mips-sgi-irix6* ) machine=iris4d opsys=irix6-0 ;; + mips-sgi-irix6* ) machine=iris4d + opsys=irix6-0 + NON_GNU_CC="cc -Olimit 2000" ;; mips-sgi-irix5.[3-9]* ) machine=iris4d opsys=irix5-3 ;; mips-sgi-irix5.2* ) machine=iris4d opsys=irix5-2 ;; mips-sgi-irix5.1* ) machine=iris4d opsys=irix5-1 ;; @@ -1517,7 +1525,7 @@ esac elif test "${dynamic}" = "no" ; then case "${opsys}" in - sol2* | decosf1-3 | decosf3-* | linux ) opsys="${opsys}-static" ;; + sol2* | decosf1-3 | decosf3-* | decosf4-* | linux ) opsys="${opsys}-static" ;; esac fi @@ -2688,7 +2696,7 @@ # In the IRIX 5.3 ld, only the last -rpath arg has any effect. This is # fundamentaly incompatible with having separate LD_SWITCH_X_SITE # and LD_SWITCH_SITE variables. Fortunately, SGI fixed this by 6.2. - if [ -n "${x_libraries}" ] || [ -n "${site_runtime_libraries}" ]; then + if test -n "${x_libraries}" || test -n "${site_runtime_libraries}" ; then (echo "WARNING: The IRIX 5 ld ignores all but the last -rpath argument,"; echo " so if you need to specify more than one additional"; echo " runtime library directory, you will have to do so"; @@ -2880,11 +2888,11 @@ CPP=`eval "echo $CPP"` eval `${CPP} -Isrc ${tempcname} \ | grep 'configure___' \ - | sed -n -e 's/^configure___ \(^=*=\)\(.*\)$/\1"\2"/p'` + | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'` if test "x$SPECIFIED_CFLAGS" = x ; then eval `${CPP} -Isrc -DTHIS_IS_CONFIGURE ${tempcname} \ | grep 'configure___' \ - | sed -n -e 's/^configure___ \(^=*=\)\(.*\)$/\1"\2"/p'` + | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'` else REAL_CFLAGS="$CFLAGS" fi @@ -2916,7 +2924,7 @@ #### Add the libraries to LIBS and check for some functions. -] + CPPFLAGS="${C_SWITCH_SITE} $c_switch_system $c_switch_machine $c_switch_x_system $CPPFLAGS" DEFS="${C_SWITCH_SITE} $c_switch_system $c_switch_machine $c_switch_x_system $DEFS" LIBS="${LD_SWITCH_SITE} $ld_switch_x_system $libsrc_libs $LIBS" @@ -5881,7 +5889,7 @@ case "${arg}" in -L*) if test -f `echo "${arg}/libtt.a" | sed 's/^\-L//'` ; then dash_r='' - if "${add_runtime_flag}" = "yes" ; then + if test "${add_runtime_flag}" = "yes" ; then dash_r=`echo ${arg} | sed "s/^-L */${runtime_arg}/"` fi LD_SWITCH_X_SITE="${LD_SWITCH_X_SITE} ${arg} ${dash_r}" @@ -6849,6 +6857,42 @@ " } +test "${with_pop}" = yes && +{ +test -n "$verbose" && \ +echo " defining MAIL_USE_POP" +echo "#define" MAIL_USE_POP "1" >> confdefs.h +DEFS="$DEFS -DMAIL_USE_POP=1" +ac_sed_defs="${ac_sed_defs}\${ac_dA}MAIL_USE_POP\${ac_dB}MAIL_USE_POP\${ac_dC}1\${ac_dD} +\${ac_uA}MAIL_USE_POP\${ac_uB}MAIL_USE_POP\${ac_uC}1\${ac_uD} +\${ac_eA}MAIL_USE_POP\${ac_eB}MAIL_USE_POP\${ac_eC}1\${ac_eD} +" +} + +test "${with_kerberos}" = yes && +{ +test -n "$verbose" && \ +echo " defining KERBEROS" +echo "#define" KERBEROS "1" >> confdefs.h +DEFS="$DEFS -DKERBEROS=1" +ac_sed_defs="${ac_sed_defs}\${ac_dA}KERBEROS\${ac_dB}KERBEROS\${ac_dC}1\${ac_dD} +\${ac_uA}KERBEROS\${ac_uB}KERBEROS\${ac_uC}1\${ac_uD} +\${ac_eA}KERBEROS\${ac_eB}KERBEROS\${ac_eC}1\${ac_eD} +" +} + +test "${with_hesiod}" = yes && +{ +test -n "$verbose" && \ +echo " defining HESIOD" +echo "#define" HESIOD "1" >> confdefs.h +DEFS="$DEFS -DHESIOD=1" +ac_sed_defs="${ac_sed_defs}\${ac_dA}HESIOD\${ac_dB}HESIOD\${ac_dC}1\${ac_dD} +\${ac_uA}HESIOD\${ac_uB}HESIOD\${ac_uC}1\${ac_uD} +\${ac_eA}HESIOD\${ac_eB}HESIOD\${ac_eC}1\${ac_eD} +" +} + test "${error_check_extents}" = yes && { @@ -7001,7 +7045,11 @@ -echo "$0 $configure_args" >> Installation +( +echo "uname -a: `uname -a`" +echo "" +echo "$0 $configure_args" +) >> Installation # Start stdout redirection to '| tee -a Installation' ( echo " @@ -7030,7 +7078,7 @@ elif test -n "$site_runtime_libraries"; then echo " Additional libraries: ${site_runtime_libraries}" fi -if test "$with_wnn"; then +if test "$with_wnn" = yes ; then echo " Finding WNN includes with: ${wnn_includes}" echo " Loading WNN libs with: ${wnn_libraries}" fi @@ -7062,7 +7110,7 @@ test "$with_database_dbm" = yes && echo " Compiling in support for DBM." test "$with_database_gnudbm" = yes && echo " Compiling in support for GNU DBM." -test "$with_ncurses" = yes && echo " Compiling in support for ncurses." +test "$have_ncurses" = yes && echo " Compiling in support for ncurses." test "$with_socks" = yes && echo " Compiling in support for SOCKS." test "$with_mule" = yes && echo " Compiling in Mule (multi-lingual) support." @@ -7094,14 +7142,19 @@ test "$with_dialogs" = motif && echo " Using the Motif dialog boxes." test "$with_dialogs" = athena && echo " Using the Athena dialog boxes." test "$with_dialogs" = athena3d && echo " Using the Athena-3d dialog boxes." +test "$with_pop" = yes && "Using POP for mail access" +test "$with_kerberos" = yes && "Using Kerberos for POP authentication" +test "$with_hesiod" = yes && "Using Hesiod to get POP server host" test "${use_union_type}" = yes && echo " Using the union type for Lisp_Objects." test "${debug}" = yes && echo " Compiling in extra code for debugging." test "${memory_usage_stats}" = yes && echo " Compiling in code for checking XEmacs memory usage." test "$usage_tracking" = yes && echo " Compiling with usage tracking active (Sun internal)." +echo "" ) | tee -a Installation -echo " | tee -a Installation -" +echo 'The above configure report is appended to "Installation" file.' +echo "" + # Remove any trailing slashes in these variables. diff -r 578fd4947a72 -r 7d55a9ba150c configure.in --- a/configure.in Mon Aug 13 09:23:08 2007 +0200 +++ b/configure.in Mon Aug 13 09:24:17 2007 +0200 @@ -278,6 +278,9 @@ to run. --usage-tracking Enable some Sun-internal code. If you don't know what this is, you don't want it. +--with-pop support POP for mail retrieval +--with-kerberos support Kerberos-authenticated POP +--with-hesiod support Hesiod to get the POP server host Internationalization options: @@ -436,6 +439,9 @@ with_energize | \ with_sparcworks | \ with_tooltalk | \ + with_pop | \ + with_kerberos | \ + with_hesiod | \ external_widget | \ extra_verbose | \ const_is_losing | \ @@ -1299,7 +1305,9 @@ ## Iris 4D mips-sgi-irix3.* ) machine=iris4d opsys=irix3-3 ;; mips-sgi-irix4.* ) machine=iris4d opsys=irix4-0 ;; - mips-sgi-irix6* ) machine=iris4d opsys=irix6-0 ;; + mips-sgi-irix6* ) machine=iris4d + opsys=irix6-0 + NON_GNU_CC="cc -Olimit 2000" ;; mips-sgi-irix5.[3-9]* ) machine=iris4d opsys=irix5-3 ;; mips-sgi-irix5.2* ) machine=iris4d opsys=irix5-2 ;; mips-sgi-irix5.1* ) machine=iris4d opsys=irix5-1 ;; @@ -1523,7 +1531,7 @@ esac elif test "${dynamic}" = "no" ; then case "${opsys}" in - sol2* | decosf1-3 | decosf3-* | linux ) opsys="${opsys}-static" ;; + sol2* | decosf1-3 | decosf3-* | decosf4-* | linux ) opsys="${opsys}-static" ;; esac fi @@ -1878,7 +1886,7 @@ # In the IRIX 5.3 ld, only the last -rpath arg has any effect. This is # fundamentaly incompatible with having separate LD_SWITCH_X_SITE # and LD_SWITCH_SITE variables. Fortunately, SGI fixed this by 6.2. - if [ -n "${x_libraries}" ] || [ -n "${site_runtime_libraries}" ]; then + if test -n "${x_libraries}" || test -n "${site_runtime_libraries}" ; then (echo "WARNING: The IRIX 5 ld ignores all but the last -rpath argument,"; echo " so if you need to specify more than one additional"; echo " runtime library directory, you will have to do so"; @@ -1899,7 +1907,7 @@ esac if test -n "${x_libraries}" ; then - if test "${add_runtime_flag}" = "yes" ]; then + if test "${add_runtime_flag}" = "yes" ; then LD_SWITCH_X_SITE="-L${x_libraries} ${runtime_arg}${x_libraries}" else LD_SWITCH_X_SITE="-L${x_libraries}" @@ -2991,7 +2999,7 @@ case "${arg}" in -L*) if test -f `echo "${arg}/libtt.a" | sed 's/^\-L//'` ; then dash_r='' - if [ "${add_runtime_flag}" = "yes" ]; then + if test "${add_runtime_flag}" = "yes" ; then dash_r=`echo ${arg} | sed "s/^-L */${runtime_arg}/"` fi LD_SWITCH_X_SITE="${LD_SWITCH_X_SITE} ${arg} ${dash_r}" @@ -3180,6 +3188,9 @@ IF_YES_AC_DEFINE(debug, DEBUG_XEMACS) IF_YES_AC_DEFINE(quantify, QUANTIFY) IF_YES_AC_DEFINE(memory_usage_stats, MEMORY_USAGE_STATS) +IF_YES_AC_DEFINE(with_pop, MAIL_USE_POP) +IF_YES_AC_DEFINE(with_kerberos, KERBEROS) +IF_YES_AC_DEFINE(with_hesiod, HESIOD) IF_YES_AC_DEFINE(error_check_extents, ERROR_CHECK_EXTENTS) IF_YES_AC_DEFINE(error_check_typecheck, ERROR_CHECK_TYPECHECK) @@ -3203,7 +3214,11 @@ dnl # Report on what we decided to do # dnl ############################################################################ -echo "$0 $configure_args" >> Installation +( +echo "uname -a: `uname -a`" +echo "" +echo "$0 $configure_args" +) >> Installation # Start stdout redirection to '| tee -a Installation' ( echo " @@ -3232,7 +3247,7 @@ elif test -n "$site_runtime_libraries"; then echo " Additional libraries: ${site_runtime_libraries}" fi -if test "$with_wnn"; then +if test "$with_wnn" = yes ; then echo " Finding WNN includes with: ${wnn_includes}" echo " Loading WNN libs with: ${wnn_libraries}" fi @@ -3264,7 +3279,7 @@ test "$with_database_dbm" = yes && echo " Compiling in support for DBM." test "$with_database_gnudbm" = yes && echo " Compiling in support for GNU DBM." -test "$with_ncurses" = yes && echo " Compiling in support for ncurses." +test "$have_ncurses" = yes && echo " Compiling in support for ncurses." test "$with_socks" = yes && echo " Compiling in support for SOCKS." test "$with_mule" = yes && echo " Compiling in Mule (multi-lingual) support." @@ -3296,14 +3311,19 @@ test "$with_dialogs" = motif && echo " Using the Motif dialog boxes." test "$with_dialogs" = athena && echo " Using the Athena dialog boxes." test "$with_dialogs" = athena3d && echo " Using the Athena-3d dialog boxes." +test "$with_pop" = yes && "Using POP for mail access" +test "$with_kerberos" = yes && "Using Kerberos for POP authentication" +test "$with_hesiod" = yes && "Using Hesiod to get POP server host" test "${use_union_type}" = yes && echo " Using the union type for Lisp_Objects." test "${debug}" = yes && echo " Compiling in extra code for debugging." test "${memory_usage_stats}" = yes && echo " Compiling in code for checking XEmacs memory usage." test "$usage_tracking" = yes && echo " Compiling with usage tracking active (Sun internal)." +echo "" ) | tee -a Installation -echo " | tee -a Installation -" +echo 'The above configure report is appended to "Installation" file.' +echo "" + dnl ############################################################################ dnl # Now generate! # dnl ############################################################################ diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/amsart.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/amsart.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,10 @@ +;;; amsart.el --- AMS article style hook. + +;;; Code: + +(TeX-add-style-hook "amsart" + (function + (lambda () + (TeX-run-style-hooks "amstex")))) + +;;; amsart.el ends here. diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/amsbook.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/amsbook.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,10 @@ +;;; amsbook.el --- AMS book style hook. + +;;; Code: + +(TeX-add-style-hook "amsbook" + (function + (lambda () + (TeX-run-style-hooks "amstex")))) + +;;; amsbook.el ends here. diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/amstex.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/amstex.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,11 @@ +;;; amstex.el --- AMS LaTeX support. + +;;; Code: + +(TeX-add-style-hook "amstex" + (function + (lambda () + (TeX-add-symbols + '("eqref" TeX-arg-label))))) + +;;; amstex.el ends here. diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/article.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/article.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,11 @@ +;;; article.el - Special code for article style. + +;; $Id: article.el,v 1.1 1997/04/05 17:56:45 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "article" + (function (lambda () + (setq LaTeX-largest-level (LaTeX-section-level "section"))))) + +;;; article.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/book.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/book.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,11 @@ +;;; book.el - Special code for book style. + +;; $Id: book.el,v 1.1 1997/04/05 17:56:45 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "book" + (function (lambda () + (setq LaTeX-largest-level (LaTeX-section-level "chapter"))))) + +;;; book.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/dinbrief.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/dinbrief.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,163 @@ +;;; dinbrief.el - Special code for LaTeX-Style dinbrief. + +;; Contributed by Werner Fink +;; Please direct comments to him. + +;;; Commentary: + +;; LaTeX-Style: dinbrief.sty +;; Server: rusinfo.rus.uni-stuttgart.de +;; Directory: /pub/soft/tex/macros/latex/contrib/letters + +;;; Code: + +(TeX-add-style-hook "dinbrief" + (function + (lambda () + (LaTeX-add-environments + '("letter" LaTeX-recipient-hook)) + (TeX-add-symbols + '("Absender" "Absender: ") + '("Postvermerk" "Postvermerk: ") + '("Datum" "Datum: ") + '("Betreff" "Betreff: ") + '("Behandlungsvermerk" "Behandlungsvermerk: ") + '("Verteiler" "Verteiler: ") + "makelabel" "Retourlabel" + '("Anlagen" "Anlagen: ") + '("Fenster" "Fenster \(ja/nein\): ") + '("Retouradresse" "Retouradresse: ") + '("signature" "Unterschrift: ") + '("opening" "Anrede: ") + '("closing" "Schlu\"s: "))))) + +(defun LaTeX-recipient-hook (environment) + "Insert ENVIRONMENT and prompt for recipient and address." + (let ((sender (read-input "Absender: " (user-full-name))) + (recipient (read-input "Empf\"anger: ")) + (address (read-input "Anschrift: ")) + (postvermerk (read-input "Postvermerk: ")) + (date (read-input "Datum: " (LaTeX-today))) + (betreff (read-input "Betreff: ")) + (vermerk (read-input "Behandlungsvermerk: ")) + (verteil (read-input "Verteiler: ")) + (anlage (read-input "Anlagen: ")) + (opening (read-input "Anrede: ")) + (closing (read-input "Schlu\"s: ")) + (fenster (read-input "Fenster \(ja/nein\): ")) + (signature (read-input "Unterschrift: ")) + ) + + (if (not (zerop (length sender))) + (progn + (insert TeX-esc "Absender" TeX-grop sender TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length postvermerk))) + (progn + (insert TeX-esc "Postvermerk" TeX-grop postvermerk TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length betreff))) + (progn + (insert TeX-esc "Betreff" TeX-grop betreff TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length vermerk))) + (progn + (insert TeX-esc "Behandlungsvermerk" TeX-grop vermerk TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length verteil))) + (progn + (insert TeX-esc "Verteiler" TeX-grop verteil TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length anlage))) + (progn + (insert TeX-esc "Anlagen" TeX-grop anlage TeX-grcl) + (newline-and-indent))) + (if (string= fenster "ja") + (progn + (insert TeX-esc "Fenster") + (let ((retouradr (read-input "Retouradresse: " (user-full-name)))) + (newline-and-indent) + (if (not (zerop (length retouradr))) + (progn + (insert TeX-esc "Retouradresse" TeX-grop retouradr TeX-grcl) + (newline-and-indent)))))) + (if (not (zerop (length signature))) + (progn + (insert TeX-esc "signature" TeX-grop signature TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length date))) + (progn + (insert TeX-esc "Datum" TeX-grop date TeX-grcl) + (newline-and-indent))) + (newline-and-indent) + + (let ((indentation (current-column))) + (LaTeX-insert-environment + environment + (concat TeX-grop recipient + (if (not (zerop (length address))) + (concat + (if (not (zerop (length recipient))) + (concat " " TeX-esc TeX-esc " ")) + address)) + TeX-grcl)) + (save-excursion ; Fix indentation of address + (if (search-backward TeX-grcl nil 'move) + (let ((addr-end (point-marker))) + (if (search-backward TeX-grop nil 'move) + (let ((addr-column (current-column))) + (while (search-forward + (concat TeX-esc TeX-esc) + (marker-position addr-end) 'move) + (progn + (newline) + (indent-to addr-column)))))))) + (insert "\n") + (indent-to indentation)) + (insert TeX-esc "opening" + TeX-grop + (if (zerop (length opening)) + (concat TeX-esc " ") + opening) + TeX-grcl "\n") + + (indent-relative-maybe) + (save-excursion + (insert "\n" TeX-esc "closing" + TeX-grop + (if (zerop (length closing)) + (concat TeX-esc " ") + closing) + TeX-grcl "\n") + (indent-relative-maybe)))) + +(defun LaTeX-today nil + "Return a string representing todays date according to flavor." + (interactive) + (let ((ctime-string (current-time-string)) + (month-alist '(("Jan" . "Januar") + ("Feb" . "Februar") + ("Mar" . "M\\\"arz") + ("Apr" . "April") + ("May" . "Mai") + ("Jun" . "Juni") + ("Jul" . "Juli") + ("Aug" . "August") + ("Sep" . "September") + ("Oct" . "Oktober") + ("Nov" . "November") + ("Dec" . "Dezember")))) + (string-match + "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)" + ctime-string) + (let ((year (substring ctime-string (match-beginning 3) (match-end 3))) + (month (substring ctime-string (match-beginning 1) (match-end 1))) + (day (substring ctime-string (match-beginning 2) (match-end 2)))) + (if (assoc month month-alist) + (progn + (setq month (cdr (assoc month month-alist))) + (if (> 2 (length day)) + (setq day (concat "0" day))))) + (format "Stuttgart, den %s. %s %s" day month year)))) + +;;; dinbrief.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/dk.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/dk.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,11 @@ +;;; dk.el - Setup AUC TeX for editing Danish text. + +;; $Id: dk.el,v 1.1 1997/04/05 17:56:45 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "dk" + (function (lambda () + (run-hooks 'TeX-language-dk-hook)))) + +;;; dk.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/dutch.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/dutch.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,11 @@ +;;; dutch.el - Setup AUC TeX for editing Dutch text. + +;; $Id: dutch.el,v 1.1 1997/04/05 17:56:45 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "dutch" + (function (lambda () + (run-hooks 'TeX-language-nl-hook)))) + +;;; dutch.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/epsf.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/epsf.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,96 @@ +;;; epsf.el - Support for the epsf style option. + +;; Contributed by Marc Gemis + +;;; Code: + +(TeX-add-style-hook "epsf" + (function + (lambda () + (TeX-add-symbols + '("epsfsize" TeX-arg-epsfsize) + '("epsffile" TeX-arg-file) + '("epsfbox" TeX-arg-file) + "epsflly" "epsfury" "testit" "epsfgetlitbb" + "epsfnormal" "epsfgetbb" "other" "epsfsetgraph" + "PsFragSpecialArgs" "epsfaux" "testit" "epsfgrab" + "epsfllx" "epsflly" "epsfury" "epsfverbosetrue" + ) + (LaTeX-add-environments + '("epsffig" LaTeX-env-epsffigure) + ) + + ))) + + +(defun LaTeX-env-epsffigure (environment) + "Create a `figure'-environment with \\label and \\caption and \\epsfbox +commands. Eventually a `psfrags'-environment is inserted round the \\epsfbox." + + (let ((float (read-input "Float to: " LaTeX-float)) + (caption (read-input "Caption: ")) + (label (read-input "Label: " LaTeX-figure-label)) + ; gf: ask if there is an psfrag environment needed + (psfrag (y-or-n-p "PS fragments: ")) + (psfile (read-file-name "EPS-file: " "" "" nil)) + ) + + (setq LaTeX-float (if (zerop (length float)) + LaTeX-float + float)) + + (LaTeX-insert-environment "figure" + (concat LaTeX-optop LaTeX-float LaTeX-optcl)) + (LaTeX-insert-environment "center") + (if psfrag + (progn + (LaTeX-insert-environment "psfrags") + (newline-and-indent) + )) + (if (or (zerop (length label)) + (and (string= "figure" environment) + (equal LaTeX-figure-label label)) + ) + () + (newline-and-indent) + (insert TeX-esc "label" TeX-grop label TeX-grcl) + (end-of-line 0) + (LaTeX-indent-line)) + + + (newline-and-indent) + (insert TeX-esc "leavevmode") + (newline-and-indent) + (insert TeX-esc "epsfbox" TeX-grop psfile TeX-grcl) + (if (zerop (length caption)) + () + (newline-and-indent) + (insert TeX-esc "caption" TeX-grop caption TeX-grcl)) + (newline) + (forward-line 4) + (newline) + +)) + +(defun TeX-arg-epsfsize (optional &optional prompt definition) + "Create a line that print epsf figures at a certain percentage" + (interactive) + (let ((scale (read-input "Scale (%): ")) + ) + (setq scalestr (if (zerop (length scale)) + "75" + (format "%s" scale) + )) + (save-excursion + ; append #1#{scale#1} + (insert "#1#2" TeX-grop "0." scale "#1" TeX-grcl) + ; insert \def before \epsfsize + (beginning-of-line 1) + (newline) + (insert TeX-esc "def") + (forward-line -1) + (insert "% From now on print figures at " scale "% of original size") + ) + (end-of-line))) + +;;; epsf.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/foils.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/foils.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,47 @@ +;;; foils.el - Special code for FoilTeX. + +;; $Id: foils.el,v 1.1 1997/04/05 17:56:45 steve Exp $ + +;;; Code: + +(require 'latex) + +(TeX-add-style-hook "foils" + (function + (lambda () + (add-hook 'LaTeX-document-style-hook 'LaTeX-style-foils) + (setq LaTeX-default-style "foils") + (setq LaTeX-default-options '("landscape")) + (TeX-add-symbols + '("foilhead" [ "Rubric-body separation" ] "Foil rubric"))))) + +(defun LaTeX-style-foils nil + "Prompt for and insert foiltex options." + (require 'timezone) + (let* ((date (timezone-parse-date (current-time-string))) + (year (string-to-int (aref date 0))) + (month (string-to-int (aref date 1))) + (day (string-to-int (aref date 2))) + (title (read-input "Title: "))) + (save-excursion + (goto-char (point-max)) + (re-search-backward ".begin.document.") + (insert TeX-esc "title" + TeX-grop title TeX-grcl "\n") + (insert TeX-esc "author" + TeX-grop (user-full-name) TeX-grcl "\n") + (insert TeX-esc "date" TeX-grop + (format "%d-%02d-%02d" year month day) + TeX-grcl "\n") + (insert "" TeX-esc "\nMyLogo" TeX-grop TeX-grcl "\n") + (insert "%" TeX-esc "Restriction" TeX-grop TeX-grcl "\n") + (insert "%" TeX-esc "rightfooter" TeX-grop TeX-grcl "\n") + (insert "%" TeX-esc "leftheader" TeX-grop TeX-grcl "\n") + (insert "%" TeX-esc "rightheader" TeX-grop TeX-grcl "\n\n") + (re-search-forward ".begin.document.") + (end-of-line) + (newline-and-indent) + (insert "" TeX-esc "maketitle\n\n")) + (forward-line -1))) + +;;; foils.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/german.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/german.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,28 @@ +;;; german.el - Setup AUC TeX for editing German text. + +;; $Id: german.el,v 1.1 1997/04/05 17:56:46 steve Exp $ + +;;; Commentary: +;; +;; `german.sty' use `"' to give next character an umlaut. + +;;; Code: + +(defvar LaTeX-german-mode-syntax-table + (copy-syntax-table LaTeX-mode-syntax-table) + "Syntax table used in LaTeX mode when using `german.sty'.") + +(modify-syntax-entry ?\" "w" LaTeX-german-mode-syntax-table) + +(TeX-add-style-hook "german" + (function (lambda () + (set-syntax-table LaTeX-german-mode-syntax-table) + (make-local-variable 'TeX-open-quote) + (make-local-variable 'TeX-close-quote) + (make-local-variable 'TeX-quote-after-quote) + (setq TeX-quote-after-quote t) + (setq TeX-open-quote "\"`") + (setq TeX-close-quote "\"'") + (run-hooks 'TeX-language-de-hook)))) + +;;; german.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/harvard.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/harvard.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,97 @@ +;; harvard.el --- Support for Harvard Citation style package for AUC-TeX + +;; Copyright (C) 1994 Berwin Turlach + +;; Version: $Id: harvard.el,v 1.1 1997/04/05 17:56:46 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 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 this program; if not, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Commentary: + +;; Harvard citation style is from Peter Williams available on the CTAN +;; servers + +;;; Code: + +(require 'latex) + +(TeX-add-style-hook "harvard" + (function + (lambda () + + (LaTeX-add-environments + '("thebibliography" LaTeX-env-harvardbib ignore)) + + (TeX-add-symbols + "harvardand" + '("citeasnoun" + (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) + TeX-arg-cite) + '("possessivecite" + (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) + TeX-arg-cite) + '("citeaffixed" + (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) + TeX-arg-cite "Affix") + '("citeyear" + (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) + TeX-arg-cite) + '("citename" + (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) + TeX-arg-cite) + '("citationstyle" + (TeX-arg-eval completing-read "Citation style: " '(("agsm") ("dcu")))) + '("citationmode" + (TeX-arg-eval completing-read "Citation mode: " + '(("full") ("abbr") ("default")))) + '("harvardparenthesis" + (TeX-arg-eval completing-read "Harvardparenthesis: " + '(("round") ("curly") ("angle") ("square")))) + '("bibliographystyle" + (TeX-arg-eval + completing-read "Bibliography style: " + '(("agsm") ("dcu") ("jmr") ("jphysicsB") ("kluwer") ("nederlands"))) + ignore) + '("harvarditem" [ "Short citation" ] + "Complete citation" "Year" TeX-arg-define-cite)) + + (setq TeX-complete-list + (append '(("\\\\citeasnoun{\\([^{}\n\m\\%]*\\)" + 1 LaTeX-bibitem-list "}") + ("\\\\citeyear{\\([^{}\n\m\\%]*\\)" + 1 LaTeX-bibitem-list "}") + ("\\\\citename{\\([^{}\n\m\\%]*\\)" + 1 LaTeX-bibitem-list "}")) + TeX-complete-list)) + + (setq LaTeX-item-list + (cons '("thebibliography" . LaTeX-item-harvardbib) + LaTeX-item-list))))) + +(defun LaTeX-env-harvardbib (environment &optional ignore) + "Insert ENVIRONMENT with label for harvarditem." + (LaTeX-insert-environment environment + (concat TeX-grop "xx" TeX-grcl)) + (end-of-line 0) + (delete-char 1) + (delete-horizontal-space) + (LaTeX-insert-item)) + +;; Analog to LaTeX-item-bib from latex.el +(defun LaTeX-item-harvardbib () + "Insert a new harvarditem." + (TeX-insert-macro "harvarditem")) + +;; harvard.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/j-article.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/j-article.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,11 @@ +;;; j-article.el - Special code for j-article style. + +;; $Id: j-article.el,v 1.1 1997/04/05 17:56:46 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "j-article" + (function (lambda () + (setq LaTeX-largest-level (LaTeX-section-level "section"))))) + +;;; j-article.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/j-book.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/j-book.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,11 @@ +;;; j-book.el - Special code for j-book style. + +;; $Id: j-book.el,v 1.1 1997/04/05 17:56:46 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "j-book" + (function (lambda () (setq LaTeX-largest-level + (LaTeX-section-level "chapter"))))) + +;;; j-book.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/j-report.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/j-report.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,11 @@ +;;; j-report.el - Special code for j-report style. + +;; $Id: j-report.el,v 1.1 1997/04/05 17:56:46 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "j-report" + (function (lambda () (setq LaTeX-largest-level + (LaTeX-section-level "chapter"))))) + +;;; j-report.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/jarticle.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/jarticle.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,10 @@ +;;; jarticle.el - Special code for jarticle style. + +;; $Id: jarticle.el,v 1.1 1997/04/05 17:56:46 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "jarticle" + (function (lambda () (setq LaTeX-largest-level 2)))) + +;;; jarticle.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/jbook.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/jbook.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,11 @@ +;;; jbook.el - Special code for jbook style. + +;; $Id: jbook.el,v 1.1 1997/04/05 17:56:46 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "jbook" + (function (lambda () (setq LaTeX-largest-level + (LaTeX-section-level "chapter"))))) + +;;; jbook.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/jreport.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/jreport.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,12 @@ +;;; jreport.el - Special code for jreport style. + +;; $Id: jreport.el,v 1.1 1997/04/05 17:56:47 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "jreport" + (function (lambda () (setq LaTeX-largest-level + (LaTeX-section-level "chapter"))))) + + +;;; jreport.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/latexinfo.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/latexinfo.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,183 @@ +;;; latexinfo.el - Support for LaTeXinfo files. + +;; Copyright (C) 1993 Marc Gemis + +;; Author: Marc Gemis +;; Version: $Id: latexinfo.el,v 1.1 1997/04/05 17:56:47 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, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Code: + +(require 'latex) + +;;; LaTeXinfo mode + +(defvar TeX-latexinfo-node-regexp + '("\\\\node[ \t]+\\([^,\n\r%]+\\)" 1 TeX-auto-label) + "Matches LaTeXinfo \\node commands, only current node will be found. +We ignore next, previous and up fields.") + +(defvar LaTeXinfo-mode nil + "Non-nil means LaTeXinfo minor mode is active.") + (make-variable-buffer-local 'LaTeXinfo-mode) + +(defvar LaTeXinfo-mode-map nil + "Keymap containing LaTeXinfo commands.") + +(if LaTeXinfo-mode-map + () + (setq LaTeXinfo-mode-map (make-sparse-keymap)) + (define-key LaTeXinfo-mode-map "\C-c\C-u\C-b" 'latexinfo-format-buffer) + (define-key LaTeXinfo-mode-map "\C-c\C-u\C-r" 'latexinfo-format-region) + (define-key LaTeXinfo-mode-map "\C-c\C-u\C-s" 'latexinfo-show-structure) + (define-key LaTeXinfo-mode-map "\C-c\C-ud" 'makke:latexinfo-delete-structure) + (define-key LaTeXinfo-mode-map "\C-c\C-ug" 'latexinfo-goto-node) + (define-key LaTeXinfo-mode-map "\C-c\C-ui" 'makke:latexinfo-structure)) + +(or (assq 'LaTeXinfo-mode minor-mode-map-alist) + (setq minor-mode-map-alist + (cons (cons 'LaTeXinfo-mode LaTeXinfo-mode-map) + minor-mode-map-alist))) + +(defun TeX-arg-latexinfo-index (optional &optional prompt) + "Prompt for a LaTeXinfo index type with completion." + (TeX-argument-insert + (completing-read (TeX-argument-prompt optional prompt "Index") + '(("cp") ("vr") ("fn") ("tp") ("pg") ("ky")) + nil t) + optional)) + +(defun LaTeX-item-latexinfo-menu () + "Insert a new menu item" + (insert "* ::") + (backward-char 2)) + +(defun latexinfo-goto-node () ; temporarily here, later in latexinfo-upd.el ?? + "Place pointer on the node given by the user, read node with completion +This fails when the user types in the label of something else" + (interactive) + (let ((node-name (completing-read "Goto Node: " (LaTeX-label-list)))) + (goto-char (point-min)) + (if (re-search-forward + (concat + TeX-esc "node[ \\t]+" node-name "," + "\\|" + TeX-esc "label{" LaTeX-section-label node-name + "\\|" + TeX-esc "label{" node-name + ) + (point-max) t) + (beginning-of-line 1) + (error "No such node")))) + +;;; Hook + +(TeX-add-style-hook "latexinfo" + (function + (lambda () + (require 'latexinfo) + (require 'latexinfo-structure) + + (require 'min-map) + (setq LaTeXinfo-mode t) + + (TeX-auto-add-regexp TeX-latexinfo-node-regexp) + + (TeX-add-symbols + '("node" + (TeX-arg-literal " ") + (TeX-arg-free TeX-arg-define-label "Node name") + (TeX-arg-literal ", ") + (TeX-arg-free TeX-arg-label "Next node") + (TeX-arg-literal ", ") + (TeX-arg-free TeX-arg-label "Previous node") + (TeX-arg-literal ", ") + (TeX-arg-free TeX-arg-label "Up node")) + '("setfilename" TeX-arg-file) + + '("var" t) + '("dfn" t) + '("emph" t) + '("kbd" t) + '("code" t) + '("samp" t) + '("key" t) + '("ctrl" t) + '("file" t) + + '("comment" + (TeX-arg-literal " ") + (TeX-arg-free "Comment")) + '("c" + (TeX-arg-literal " ") + (TeX-arg-free "Comment")) + + '("cindex" t) + '("cpsubindex" 2) + '("cpindexbold" t) + + '("newindex" TeX-arg-latexinfo-index) + + '("br" nil) + '("w" "Text") + '("dots" nil) + '("refill" nil) + '("bullet" nil) + '("copyright" nil) + '("sp" nil) + + '("xref" TeX-arg-label) + '("pxref" TeX-arg-label) + '("inforef" + (TeX-arg-literal "{") + (TeX-arg-free "Name of node") + (TeX-arg-literal ", ") + (TeX-arg-free "Name for note") + (TeX-arg-literal ", ") + (TeX-arg-free TeX-arg-file "Info file") + (TeX-arg-literal "}"))) + + (LaTeX-add-environments "menu" "tex" "ignore" "ifinfo" "iftex" + "example" "same" "display" "format") + + ; Menu's have a special kind of items + (make-local-variable 'LaTeX-item-list) + (setq LaTeX-item-list (cons '("menu" . LaTeX-item-latexinfo-menu) + LaTeX-item-list)) + + (make-local-variable 'TeX-font-list) + (setq TeX-font-list + (list (list ?\C-b (concat TeX-esc "b{") "}") + (list ?\C-c (concat TeX-esc "sc{") "}") + (list ?\C-e (concat TeX-esc "emph{") "}") + (list ?\C-i (concat TeX-esc "i{") "}") + (list ?\C-r (concat TeX-esc "r{") "}") + (list ?\C-s (concat TeX-esc "samp{") "}") + (list ?\C-t (concat TeX-esc "t{") "}") + (list ?s (concat TeX-esc "strong{") "}") + (list ?\C-f (concat TeX-esc "file{") "}") + (list ?\C-d (concat TeX-esc "dfn{") "}") + (list ?\C-v (concat TeX-esc "var{") "}") + (list ?k (concat TeX-esc "key{") "}") + (list ?\C-k (concat TeX-esc "kbd{") "}") + (list ?c (concat TeX-esc "code{") "}") + (list ?C (concat TeX-esc "cite{") "}"))) + + ;; need the following stuff to let xref and pxref work + (make-local-variable 'LaTeX-section-label) + (setq LaTeX-section-label "")))) + +;;; latexinfo.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/letter.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/letter.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,122 @@ +;;; letter.el - Special code for letter style. + +;; $Id: letter.el,v 1.1 1997/04/05 17:56:47 steve Exp $ + +;;; Code: + +;; You may want to define this in tex-site.el to contain your +;; organizations address. +(defvar LaTeX-letter-sender-address "" + "Initial value when prompting for a sender address in the letter style.") + +(TeX-add-style-hook "letter" + (function + (lambda () + (LaTeX-add-environments + '("letter" LaTeX-env-recipient)) + (TeX-add-symbols + '("name" "Sender: ") + '("address" "Sender address: ") + '("signature" "Signature: ") + '("opening" "Opening: ") + '("closing" "Closing: "))))) + +(defun LaTeX-env-recipient (environment) + "Insert ENVIRONMENT and prompt for recipient and address." + (let ((sender (read-input "Sender: " (user-full-name))) + (sender-address (read-input "Sender address: " + LaTeX-letter-sender-address)) + (recipient (read-input "Recipient: ")) + (address (read-input "Recipient address: ")) + (signature (read-input "Signature: ")) + (opening (read-input "Opening: ")) + (closing (read-input "Closing: ")) + (date (read-input "Date: " (LaTeX-today)))) + + (insert TeX-esc "name" TeX-grop sender TeX-grcl) + (newline-and-indent) + (if (not (zerop (length sender-address))) + (progn + (setq LaTeX-letter-sender-address sender-address) + (insert TeX-esc "address" TeX-grop sender-address TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length signature))) + (progn + (insert TeX-esc "signature" TeX-grop signature TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length date))) + (progn + (insert TeX-esc "def" TeX-esc "today" TeX-grop date TeX-grcl) + (newline-and-indent))) + (newline-and-indent) + + (let ((indentation (current-column))) + (LaTeX-insert-environment + environment + (concat TeX-grop recipient + (if (not (zerop (length address))) + (concat + (if (not (zerop (length recipient))) + (concat " " TeX-esc TeX-esc " ")) + address)) + TeX-grcl)) + (save-excursion ; Fix indentation of address + (if (search-backward TeX-grcl nil 'move) + (let ((addr-end (point-marker))) + (if (search-backward TeX-grop nil 'move) + (let ((addr-column (current-column))) + (while (search-forward + (concat TeX-esc TeX-esc) + (marker-position addr-end) 'move) + (progn + (newline) + (indent-to addr-column)))))))) + (insert "\n") + (indent-to indentation)) + (insert TeX-esc "opening" + TeX-grop + (if (zerop (length opening)) + (concat TeX-esc " ") + opening) + TeX-grcl "\n") + + (indent-relative-maybe) + (save-excursion + (insert "\n" TeX-esc "closing" + TeX-grop + (if (zerop (length closing)) + (concat TeX-esc " ") + closing) + TeX-grcl "\n") + (indent-relative-maybe)))) + +(defun LaTeX-today nil + "Return a string representing todays date according to flavor." + (interactive) + (let ((ctime-string (current-time-string)) + (month-alist '(("Jan". "01") + ("Feb" . "02") + ("Mar" . "03") + ("Apr" . "04") + ("May" . "05") + ("Jun" . "06") + ("Jul" . "07") + ("Aug" . "08") + ("Sep" . "09") + ("Oct" . "10") + ("Nov" . "11") + ("Dec" . "12")))) + (string-match + "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)" + ctime-string) + (let ((year (substring ctime-string (match-beginning 3) (match-end 3))) + (month (substring ctime-string (match-beginning 1) (match-end 1))) + (day (substring ctime-string (match-beginning 2) (match-end 2)))) + (if (assoc month month-alist) + (progn + (setq month (cdr (assoc month month-alist))) + (if (> 2 (length day)) + (setq day (concat "0" day))))) + (format "%s-%s-%s" year month day)))) + +;;; letter.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/plfonts.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/plfonts.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,31 @@ +;;; plfonts.el - Setup AUC TeX for editing Polish text with plfonts.sty + +;; $Id: plfonts.el,v 1.1 1997/04/05 17:56:47 steve Exp $ + +;;; Commentary: +;; +;; `plfonts.sty' use `"' to make next character Polish. +;; `plfonts.sty' L. Holenderski, IIUW, lhol@mimuw.edu.pl + +;;; Code: + +(defvar LaTeX-plfonts-mode-syntax-table + (copy-syntax-table LaTeX-mode-syntax-table) + "Syntax table used in LaTeX mode when using `plfonts.sty'.") + +(modify-syntax-entry ?\" "w" LaTeX-plfonts-mode-syntax-table) + +(TeX-add-style-hook "plfonts" + (function (lambda () + (set-syntax-table LaTeX-plfonts-mode-syntax-table) + (make-local-variable 'TeX-open-quote) + (make-local-variable 'TeX-close-quote) + (make-local-variable 'TeX-quote-after-quote) + (make-local-variable 'TeX-command-default) + (setq TeX-open-quote "\"<") + (setq TeX-close-quote "\">") + (setq TeX-quote-after-quote t) + (setq TeX-command-default "plLaTeX") + (run-hooks 'TeX-language-pl-hook)))) + +;;; plfonts.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/plhb.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/plhb.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,31 @@ +;;; plhb.el - Setup AUC TeX for editing Polish text with plhb.sty + +;; $Id: plhb.el,v 1.1 1997/04/05 17:56:47 steve Exp $ + +;;; Commentary: +;; +;; `plhb.sty' use `"' to make next character Polish. +;; `plhb.sty' J. S. Bie\'n, IIUW, jsbien@mimuw.edu.pl + +;;; Code: + +(defvar LaTeX-plhb-mode-syntax-table + (copy-syntax-table LaTeX-mode-syntax-table) + "Syntax table used in LaTeX mode when using `plhb.sty'.") + +(modify-syntax-entry ?\" "w" LaTeX-plhb-mode-syntax-table) + +(TeX-add-style-hook "plhb" + (function (lambda () + (set-syntax-table LaTeX-plhb-mode-syntax-table) + (make-local-variable 'TeX-open-quote) + (make-local-variable 'TeX-close-quote) + (make-local-variable 'TeX-command-default) + (make-local-variable 'TeX-quote-after-quote) + (setq TeX-open-quote "\"<") + (setq TeX-close-quote "\">") + (setq TeX-quote-after-quote t) + (setq TeX-command-default "plLaTeX") + (run-hooks 'TeX-language-pl-hook)))) + +;;; plhb.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/psfig.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/psfig.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,79 @@ +;;; psfig.el - Support for the psfig style option. + +;; Contributed by Marc Gemis +;; Please direct comments to him. + +;;; Code: + +(TeX-add-style-hook "psfig" + (function + (lambda () + ;; probable some of the following symbols may be removed + (TeX-add-symbols "protect" "figurepath" "fbox" + "other" "letter" "other" "then" "Sine" "Cosine" + "psdraft" "psfull" "psscalefirst" "psrotatefirst" + "psnodraftbox" "psdraftbox" "pssilent" "psnoisy" + "minmaxtest" + '("psfig" TeX-arg-psfig) + '("psfigurepath" t) + ) + (LaTeX-add-environments + '("psfigure" LaTeX-env-psfigure) + ) + ))) + +(defun TeX-arg-psfig (optional) + "Ask for file, width and length. Insert psfig macro" + (let ((psfile (read-file-name "PS-file: " "" "" nil)) + (figwidth (read-input "Figure width: ")) + (figheight (read-input "Figure height: ")) + ) + + (insert TeX-grop "figure=" psfile) + (if (not (zerop (length figwidth))) + (insert ",width=" figwidth)) + (if (not (zerop (length figheight))) + (insert ",height=" figheight)) + (insert TeX-grcl) + ) + ) + + +(defun LaTeX-env-psfigure (environment) + "Create with \\label and \\caption and \\psfig commands." + (let ((float (read-input "Float to: " LaTeX-float)) + (caption (read-input "Caption: ")) + (label (read-input "Label: " LaTeX-figure-label)) + ; gf: ask if this should be centered + (psfile (read-file-name "PS-file: " "" "" nil)) + (figwidth (read-input "Figure width: ")) + (figheight (read-input "Figure height: ")) + ) + + (setq LaTeX-float (if (zerop (length float)) + LaTeX-float + float)) + + (LaTeX-insert-environment "figure" + (concat LaTeX-optop LaTeX-float LaTeX-optcl)) + + (insert TeX-esc "centerline" TeX-grop TeX-esc "psfig" TeX-grop + "figure=" psfile) + (if (not (zerop (length figwidth))) + (insert ",width=" figwidth)) + (if (not (zerop (length figheight))) + (insert ",height=" figheight)) + (insert TeX-grcl TeX-grcl) + (if (zerop (length caption)) + () + (newline-and-indent) + (insert TeX-esc "caption" TeX-grop caption TeX-grcl)) + (if (or (zerop (length label)) + (equal LaTeX-figure-label label)) + () + (newline-and-indent) + (insert TeX-esc "label" TeX-grop label TeX-grcl)) + + (forward-line 2))) + +;;; psfig.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/report.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/report.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,11 @@ +;;; report.el - Special code for report style. + +;; $Id: report.el,v 1.1 1997/04/05 17:56:47 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "report" + (function (lambda () + (setq LaTeX-largest-level (LaTeX-section-level "chapter"))))) + +;;; report.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/slides.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/slides.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,52 @@ +;;; slides.el - Special code for slitex. +;; +;; $Id: slides.el,v 1.1 1997/04/05 17:56:47 steve Exp $ + +(require 'latex) + +;;; Code: + +(TeX-add-style-hook "slides" + (function + (lambda () + (setq LaTeX-default-style "slides") + (add-hook 'LaTeX-document-style-hook 'LaTeX-style-slides) + (LaTeX-add-environments '("slide" LaTeX-env-slide) + '("overlay" LaTeX-env-slide)) + (TeX-run-style-hooks "SLITEX")))) + +(defvar LaTeX-slide-color "" + "*Default slide color.") + + (make-variable-buffer-local 'LaTeX-slide-color) + +(defun LaTeX-style-slides () + "Prompt for and insert SliTeX options." + (let ((slide-file (read-input "Slide file: ")) + (slide-colors (read-input "Slide colors (comma separetade list): " + "black"))) + (save-excursion + (goto-char (point-min)) ; insert before \end{document} + (if (re-search-forward ".end.document." (point-max) t) + (beginning-of-line 1)) + (open-line 2) + (indent-relative-maybe) + (if (equal slide-colors "black") + (insert TeX-esc "blackandwhite" + TeX-grop slide-file TeX-grcl) + (progn + (insert TeX-esc "colors" + TeX-grop slide-colors TeX-grcl) + (newline-and-indent) + (insert TeX-esc "colorslides" + TeX-grop slide-file TeX-grcl)))))) + +(defun LaTeX-env-slide (environment) + "Insert ENVIRONMENT and prompt for slide colors." + (setq LaTeX-slide-color + (read-input "Slide colors: " LaTeX-slide-color)) + (LaTeX-insert-environment environment + (concat TeX-grop LaTeX-slide-color TeX-grcl))) + + +;;; slides.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/swedish.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/swedish.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,13 @@ +;;; swedish.el - Setup AUC TeX for editing Swedish text. + +;; $Id: swedish.el,v 1.1 1997/04/05 17:56:48 steve Exp $ + +;;; Commentary: +;; +;; Apparently the Swedes use ''this style'' quotations. + +(TeX-add-style-hook "swedish" + (function (lambda () + (make-local-variable 'TeX-open-quote) + (setq TeX-open-quote "''") + (run-hooks 'TeX-language-sv-hook)))) diff -r 578fd4947a72 -r 7d55a9ba150c etc/auctex/style/virtex.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/auctex/style/virtex.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,83 @@ +;;; virtex.el - Common code for all TeX formats. + +;; $Id: virtex.el,v 1.1 1997/04/05 17:56:48 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "virtex" + (function + (lambda () + (TeX-add-symbols "/" "above" "abovedisplayshortskip" + "abovedisplayskip" "abovewithdelims" "accent" + "adjdemerits" "advance" "afterassignment" + "aftergroup" "atop" "atopwithdelims" "badness" + "baselineskip" "batchmode" "begingroup" + "belowdisplayshortskip" "belowdisplayskip" + "binoppenalty" "botmark" "box" "boxmaxdepth" + "brokenpenalty" "catcode" "char" "chardef" + "cleaders" "closein" "closeout" "clubpenalty" + "copy" "count" "countdef" "cr" "crcr" "csname" + "day" "deadcycles" "def" "defaulthyphenchar" + "defaultskewchar" "delcode" "delimiter" + "delimiterfactor" "delimitershortfall" "dimen" + "dimendef" "discretionary" "displayindent" + "displaylimits" "displaystyle" + "displaywidowpenalty" "displaywidth" "divide" + "doublehyphendemerits" "dp" "dump" "edef" "else" + "emergencystretch" "end" "endcsname" "endgroup" + "endinput" "endlinechar" "eqno" "errhelp" + "errmessage" "errorcontextlines" "errorstopmode" + "escapechar" "everycr" "everydisplay" + "everyhbox" "everyjob" "everymath" "everypar" + "everyvbox" "exhyphenpenalty" "expandafter" + "fam" "fi" "finalhyphendemerits" "firstmark" + "floatingpenalty" "font" "fontdimen" "fontname" + "futurelet" "gdef" "global" "globaldefs" + "halign" "hangafter" "hangindent" "hbadness" + "hbox" "hfil" "hfill" "hfilneg" "hfuzz" + "hoffset" "holdinginserts" "hrule" "hsize" + "hskip" "hss" "ht" "hyphenpenation" "hyphenchar" + "hyphenpenalty" "if" "ifcase" "ifcat" "ifdim" + "ifeof" "iffalse" "ifhbox" "ifinner" "ifhmode" + "ifmmode" "ifnum" "ifodd" "iftrue" "ifvbox" + "ifvoid" "ifx" "ignorespaces" "immediate" + "indent" "input" "inputlineno" "insert" + "insertpenalties" "interlinepenalty" "jobname" + "kern" "language" "lastbox" "lastkern" + "lastpenalty" "lastskip" "lccode" "leaders" + "left" "lefthyphenmin" "leftskip" "leqno" "let" + "limits" "linepenalty" "lineskip" + "lineskiplimit" "long" "looseness" "lower" + "lowercase" "mag" "markaccent" "mathbin" + "mathchar" "mathchardef" "mathchoise" + "mathclose" "mathcode" "mathinner" "mathhop" + "mathopen" "mathord" "mathpunct" "mathrel" + "mathsurround" "maxdeadcycles" "maxdepth" + "meaning" "medmuskip" "message" "mkern" "month" + "moveleft" "moveright" "mskip" "multiply" + "muskip" "muskipdef" "newlinechar" "noalign" + "noboundary" "noexpand" "noindent" "nolimits" + "nonscript" "nonstopmode" "nulldelimiterspace" + "nullfont" "number" "omit" "openin" "openout" + "or" "outer" "output" "outputpenalty" + "overfullrule" "parfillskip" "parindent" + "parskip" "pausing" "postdisplaypenalty" + "predisplaypenalty" "predisplaysize" + "pretolerance" "relpenalty" "rightskip" + "scriptspace" "showboxbreadth" "showboxdepth" + "smallskipamount" "spaceskip" "splitmaxdepth" + "splittopskip" "tabskip" "thickmuskip" + "thinmuskip" "time" "tolerance" "topskip" + "tracingcommands" "tracinglostchars" + "tracingmacros" "tracingonline" "tracingoutput" + "tracingpages" "tracingparagraphs" + "tracingrestores" "tracingstats" "uccode" + "uchyph" "underline" "unhbox" "unhcopy" "unkern" + "unpenalty" "unskip" "unvbox" "unvcopy" + "uppercase" "vadjust" "valign" "vbadness" "vbox" + "vcenter" "vfil" "vfill" "vfilneg" "vfuzz" + "voffset" "vrule" "vsize" "vskip" "vss" "vtop" + "wd" "widowpenalty" "write" "xdef" "xleaders" + "xspaceskip" "year")))) + +;;; virtex.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c etc/dmoore.xpm.Z Binary file etc/dmoore.xpm.Z has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/dmoorem.xpm.Z Binary file etc/dmoorem.xpm.Z has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/frame-icon/tree.xbm --- a/etc/frame-icon/tree.xbm Mon Aug 13 09:23:08 2007 +0200 +++ b/etc/frame-icon/tree.xbm Mon Aug 13 09:24:17 2007 +0200 @@ -1,6 +1,6 @@ #define tree_width 64 #define tree_height 64 -static char tree.bits[] = { +static char tree_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff -r 578fd4947a72 -r 7d55a9ba150c etc/gnats/xemacs.org --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/gnats/xemacs.org Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,14 @@ +pending +auxillary +configuration +documentation +frames +i18n +lisp +menubars +misc +performance +redisplay +scrollbars +tooblbars +test diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/1_16_flat_sel.gif Binary file etc/mine/1_16_flat_sel.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/2_16_flat_sel.gif Binary file etc/mine/2_16_flat_sel.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/3_16_flat_sel.gif Binary file etc/mine/3_16_flat_sel.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/4_16_flat_sel.gif Binary file etc/mine/4_16_flat_sel.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/5_16_flat_sel.gif Binary file etc/mine/5_16_flat_sel.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/6_16_flat_sel.gif Binary file etc/mine/6_16_flat_sel.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/7_16_flat_sel.gif Binary file etc/mine/7_16_flat_sel.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/8_16_flat_sel.gif Binary file etc/mine/8_16_flat_sel.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/empty_16_flat_sel.gif Binary file etc/mine/empty_16_flat_sel.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/empty_16_up.gif Binary file etc/mine/empty_16_up.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/empty_16_up_sel.gif Binary file etc/mine/empty_16_up_sel.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/flagged_16_up.gif Binary file etc/mine/flagged_16_up.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/flagged_16_up_sel.gif Binary file etc/mine/flagged_16_up_sel.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/new_down.gif Binary file etc/mine/new_down.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/new_up.gif Binary file etc/mine/new_up.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/quit_down.gif Binary file etc/mine/quit_down.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/mine/quit_up.gif Binary file etc/mine/quit_up.gif has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/spook.lines Binary file etc/spook.lines has changed diff -r 578fd4947a72 -r 7d55a9ba150c etc/vm/document-colorful.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/document-colorful.xpm Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,69 @@ +/* XPM */ +static char *document2[] = { +/* width height num_colors chars_per_pixel */ +" 24 30 32 1", +/* colors */ +". c #000000", +"# c #a4a5a4", +"a c #9f9f9f", +"b c #999999", +"c c #919191", +"d c #818181", +"e c #6d6d6d", +"f c #5d5d5d", +"g c #494949", +"h c #eaeaea", +"i c #373737", +"j c #e3e4e3", +"k c #d4d4d4", +"l c #c8c8c8", +"m c #0d0d0d", +"n c #b4b4b4", +"o c #b0aeb0", +"p c #aeaeae", +"q c #aaaaaa s background", +"r c #888888", +"s c #767676", +"t c #646464", +"u c #545454", +"v c #ffffff", +"w c #f6f7f6", +"x c #efefef", +"y c #dfdfdf", +"z c #dad9da", +"A c #242424", +"B c #cfcfcf", +"C c #bfbfbf", +"D c #b9b9b9", +/* pixels */ +"qqqqqaetr#qqqqqqqqqqqqqq", +"qqqq#errefd#qqqqqqqqqqqq", +"qqq#rzklCqcdsdra#qqqqqqq", +"qqqrkvvxzkkln#rtfdaqqqqq", +"qq#dvvvvvvxxzklCqcrdsr#q", +"qq#rresr#lxvvvvxhzl#tisq", +"qqqqqdsefgieCxvvvvxiAiiq", +"qqqqqrCttffuuuernkagtiiq", +"qqqq#nxvxxcsuetsuigrsitq", +"qqqqczhzxhzzlC#seffscifq", +"qqqqrvlyxxzlCCzxxkCaCmrq", +"qqqq#vvlzqhzvvvklalvciaq", +"qqqckhlkzzhlCCkhhxvvguqq", +"qqqrvvxvklalxxxlq#xvmd#q", +"qqqcvxklkvxvxllkhxvlArqq", +"qq#Cvvvvvvvvvvvvhxvtgqqq", +"qqrxxvvvvvvvvvvvvvvAeqqq", +"qqrvkzhzhxxvvvvvvvkmrqqq", +"qqqlhvvlCrnkhvvvvvci#qqq", +"qckxxxhxxkzzllllvvguqqqq", +"qrvklklxxxhlnlzxvhmrqqqq", +"qahzvvhCcCnxvxlhvqicqqqq", +"clxkkqlzhkkklCzvvfg#qqqq", +"txvvvvxlrzlzvvkvvAeqqqqq", +"dtalvvvvvvxknzhvlArqqqqq", +"rgimmgdqhvvvvvvvei#qqqqq", +"qq#rtiA..i#xvvvvitqqqqqq", +"qqqqqarsgimmis#Cmrqqqqqq", +"qqqqqqqqq#ceiA..icqqqqqq", +"qqqqqqqqqqqq#rdfeqqqqqqq" +}; diff -r 578fd4947a72 -r 7d55a9ba150c etc/vm/document-simple.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/document-simple.xpm Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,45 @@ +/* XPM */ +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"24 30 8 1", +/* colors */ +"` c #000000", +"a c #818181", +"b c #EAEAEA", +"c c #D4D4D4", +"d c #AAAAAA s background", +"e c #545454", +"f c #FFFFFF", +"g c #242424", +/* pixels */ +"ddddddaeaddddddddddddddd", +"dddddaaaaeaddddddddddddd", +"ddddacccddaaaaaddddddddd", +"dddacffbccccddaeeadddddd", +"dddaffffffbbcccddaaaaadd", +"dddaaaaadcbffffbbccdegad", +"dddddaaaeegadbffffbggggd", +"dddddadeeeeeeeaadcdeeggd", +"ddddddbfbbaaeaeaegeaaged", +"ddddacbcbbcccddaaeeaaged", +"ddddafccbbccddcbbcddd`ad", +"dddddffccdbcfffccdcfagdd", +"dddacbccccbcddcbbbffeedd", +"dddaffbfccdcbbbcddbf`add", +"dddafbcccfbfbcccbbfcgadd", +"ddddffffffffffffbbfeeddd", +"ddabbffffffffffffffgaddd", +"ddafccbcbbbfffffffc`addd", +"dddcbffcdadcbfffffagdddd", +"dacbbbbbbcccccccffeedddd", +"dafccccbbbbcdccbfb`adddd", +"ddbcffbdaddbfbcbfdgadddd", +"acbccdccbccccdcffeeddddd", +"ebffffbcacccffcffgaddddd", +"aedcffffffbcdcbfcgaddddd", +"aeg``eadbfffffffagdddddd", +"dddaegg``gdbffffgedddddd", +"ddddddaaeg``gadd`adddddd", +"ddddddddddaagg``gadddddd", +"dddddddddddddaaeaddddddd" +}; diff -r 578fd4947a72 -r 7d55a9ba150c etc/vm/film-colorful.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/film-colorful.xpm Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,69 @@ +/* XPM */ +static char *film[] = { +/* width height num_colors chars_per_pixel */ +" 24 30 32 1", +/* colors */ +". c #000000", +"# c #799fa1", +"a c #060919", +"b c #411707", +"c c #8fc7ff", +"d c #3f4040", +"e c #873d06", +"f c #62b1e6", +"g c #392e26", +"h c #292a2a", +"i c #9a9e9f", +"j c #284367", +"k c #646666", +"l c #aacae6", +"m c #238fc1", +"n c #182a50", +"o c #93673e", +"p c #7f7f80", +"q c #131516", +"r c #aaaaaa s background", +"s c #ddf2fd", +"t c #6991ac", +"u c #1c0804", +"v c #494b4a", +"w c #948b79", +"x c #733006", +"y c #151c34", +"z c #592009", +"A c #9f4c05", +"B c #54585d", +"C c #376389", +"D c #231305", +/* pixels */ +"rrrrrrrrwirrrrrrrrrrrrrr", +"rrrrpddv..prrrrrrrrrrrrr", +"rrrpjdkyajjprriiiwiiwirr", +"rrrnf.pfu.tgri.q....agir", +"rrktC.dlC.hCpiivqCCjjhBr", +"rrdcv..lca.tjrrddoBoogdr", +"rptcj.ulcj.djrrvdAAAAzBr", +"rBtcj..lcCuapprvgxxxxbdr", +"rvcfB.alkr..#BrBdDDDDuBr", +"rdjkt.kB.#..#vrBgnnnhadr", +"rjq.lCla.kq.BvrBgttmtjhr", +"rn..llc..Bh.BvrkvAAAAbBr", +"rh..rjl..Bh.kvrkgAAAAzdr", +"rn..#tla.pa.pdrBgxxxxbdr", +"rv..rccq.py.pBrvgzbzbqkr", +"rjhhlniC.ra.rdrvha.auhBr", +"rv#lt.Bctc..fBrdgCmCChkr", +"rvcct.qlc#.utkrhztCtpnBr", +"rBflC..lcC.nCiidxAAAxdkr", +"rptcB..lcj.Cvrphbeeezhpr", +"rrdcC.qlfuutkrkhDbzbqhrr", +"rrktt.Bcv.Cnrrkq....ddrr", +"rrihtnrtaaBkrrhnCCCnhBrr", +"rrrdq#t..avrrpBepppDqwrr", +"rrrp..BipwrrrvDeeexqdrrr", +"rrrrh.krrrrrkqDbDbDhkrrr", +"rrrrp.qrrrrphynnyaudrrrr", +"rrrrrd.hkpBqhoBkjqdprrrr", +"rrrrrrv......u.qhhprrrrr", +"rrrrrrrpvqu..uadpirrrrrr" +}; diff -r 578fd4947a72 -r 7d55a9ba150c etc/vm/film-simple.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/film-simple.xpm Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,45 @@ +/* XPM */ +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"24 30 8 1", +/* colors */ +"` c #000000", +"a c #8FC7FF", +"b c #284367", +"c c #238FC1", +"d c #7F7F80", +"e c #AAAAAA s background", +"f c #592009", +"g c #9F4C05", +/* pixels */ +"eeeeeeeedeeeeeeeeeeeeeee", +"eeeedbbb``deeeeeeeeeeeee", +"eeedbbd``bbdeeeeedeedeee", +"eeeba`da``dfee```````fee", +"eeddb`bab`fbdeeb`bbbbfbe", +"eebab``aa``dbeebbgbggfbe", +"eddab``aab`bbeebbggggfbe", +"ebdab``aab``ddebffffffbe", +"ebaab``ade``dbebb`````be", +"ebbdd`db`d``dbebfbbbf`be", +"eb``aba``d``bbebfddcdbfe", +"eb``aaa``bf`bbedbggggfbe", +"ef``eba``bf`dbedfggggfbe", +"eb``dda``d``dbebffffffbe", +"eb``eaa``d``dbebfffff`de", +"ebffabeb`e``ebebf````fbe", +"ebdad`bada``abebfbcbbfde", +"ebaad``aad``ddeffdbddbbe", +"ebaab``aab`bbeebfgggfbde", +"eddab``aab`bbedffgggffde", +"eebab``aa``ddedf`fff`fee", +"eeddd`bab`bbeed`````bbee", +"eeefdbed``bdeefbbbbbfbee", +"eeeb`dd```beedbgddd``dee", +"eeed``beddeeeb`gggf`beee", +"eeeef`deeeeed``f`f`fdeee", +"eeeed``eeeedf`bb```beeee", +"eeeeeb`fddb`fgbdb`bdeeee", +"eeeeeeb`````````ffdeeeee", +"eeeeeeedb``````bdeeeeeee" +}; diff -r 578fd4947a72 -r 7d55a9ba150c etc/vm/gear-colorful.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/gear-colorful.xpm Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,279 @@ +/* XPM */ +static char *gear[] = { +/* width height num_colors chars_per_pixel */ +" 24 30 242 2", +/* colors */ +".. c #aaaaaa s background", +"zz c #aaaaaa", +".# c #8e8e8e", +".a c #4d4d4d", +".b c #9f9f9f", +".c c #888888", +".d c #848484", +".e c #838383", +".f c #828282", +".g c #484848", +".h c #303030", +".i c #131313", +".j c #141414", +".k c #707070", +".l c #777777", +".m c #2b2b2b", +".n c #1d1d1d", +".o c #121212", +".p c #393939", +".q c #727272", +".r c #a0a0a0", +".s c #8b8b8b", +".t c #3e3e3e", +".u c #878787", +".v c #151515", +".w c #2d2d2d", +".x c #8a8a8a", +".y c #171717", +".z c #202020", +".A c #0c0c0c", +".B c #191919", +".C c #222222", +".D c #333333", +".E c #2f2f2f", +".F c #353535", +".G c #cacaca", +".H c #e9e9e9", +".I c #5c5c5c", +".J c #c5c5c5", +".K c #323232", +".L c #d9d9d9", +".M c #f9f9f9", +".N c #ffffff", +".O c #fbfbfb", +".P c #c7c7c7", +".Q c #1e1e1e", +".R c #6c6c6c", +".S c #a7a7a7", +".T c #242424", +".U c #1a1a1a", +".V c #6e6e6e", +".W c #bababa", +".X c #efefef", +".Y c #fefefe", +".Z c #f6f6f6", +".0 c #eaeaea", +".1 c #e8e8e8", +".2 c #454545", +".3 c #d3d3d3", +".4 c #e0e0e0", +".5 c #f7f7f7", +".6 c #4f4f4f", +".7 c #232323", +".8 c #e4e4e4", +".9 c #f0f0f0", +"#. c #e7e7e7", +"## c #e5e5e5", +"#a c #bfbfbf", +"#b c #fcfcfc", +"#c c #d1d1d1", +"#d c #d2d2d2", +"#e c #ececec", +"#f c #f5f5f5", +"#g c #111111", +"#h c #363636", +"#i c #7f7f7f", +"#j c #e6e6e6", +"#k c #e2e2e2", +"#l c #e1e1e1", +"#m c #f4f4f4", +"#n c #cfcfcf", +"#o c #cdcdcd", +"#p c #d5d5d5", +"#q c #1c1c1c", +"#r c #101010", +"#s c #919191", +"#t c #666666", +"#u c #dfdfdf", +"#v c #dddddd", +"#w c #2e2e2e", +"#x c #dbdbdb", +"#y c #cecece", +"#z c #cccccc", +"#A c #c8c8c8", +"#B c #c6c6c6", +"#C c #c3c3c3", +"#D c #a3a3a3", +"#E c #1f1f1f", +"#F c #212121", +"#G c #a1a1a1", +"#H c #272727", +"#I c #565656", +"#J c #4e4e4e", +"#K c #b2b2b2", +"#L c #dedede", +"#M c #5d5d5d", +"#N c #6a6a6a", +"#O c #dadada", +"#P c #d0d0d0", +"#Q c #cbcbcb", +"#R c #c9c9c9", +"#S c #c4c4c4", +"#T c #c2c2c2", +"#U c #c1c1c1", +"#V c #373737", +"#W c #0f0f0f", +"#X c #969696", +"#Y c #d7d7d7", +"#Z c #d8d8d8", +"#0 c #d6d6d6", +"#1 c #d4d4d4", +"#2 c #bdbdbd", +"#3 c #494949", +"#4 c #181818", +"#5 c #343434", +"#6 c #dcdcdc", +"#7 c #bebebe", +"#8 c #bcbcbc", +"#9 c #0e0e0e", +"a. c #c0c0c0", +"a# c #bbbbbb", +"aa c #b8b8b8", +"ab c #414141", +"ac c #b6b6b6", +"ad c #f8f8f8", +"ae c #b9b9b9", +"af c #b7b7b7", +"ag c #b5b5b5", +"ah c #3d3d3d", +"ai c #404040", +"aj c #7b7b7b", +"ak c #b4b4b4", +"al c #afafaf", +"am c #444444", +"an c #161616", +"ao c #4b4b4b", +"ap c #b3b3b3", +"aq c #b1b1b1", +"ar c #adadad", +"as c #ababab", +"at c #8f8f8f", +"au c #b0b0b0", +"av c #aeaeae", +"aw c #acacac", +"ax c #a9a9a9", +"ay c #a6a6a6", +"az c #a4a4a4", +"aA c #9d9d9d", +"aB c #9b9b9b", +"aC c #a8a8a8", +"aD c #a5a5a5", +"aE c #9e9e9e", +"aF c #9c9c9c", +"aG c #9a9a9a", +"aH c #989898", +"aI c #383838", +"aJ c #8c8c8c", +"aK c #959595", +"aL c #939393", +"aM c #6d6d6d", +"aN c #a2a2a2", +"aO c #999999", +"aP c #979797", +"aQ c #949494", +"aR c #929292", +"aS c #909090", +"aT c #8d8d8d", +"aU c #292929", +"aV c #858585", +"aW c #3f3f3f", +"aX c #474747", +"aY c #868686", +"aZ c #525252", +"a0 c #2c2c2c", +"a1 c #7a7a7a", +"a2 c #4c4c4c", +"a3 c #585858", +"a4 c #686868", +"a5 c #7e7e7e", +"a6 c #898989", +"a7 c #717171", +"a8 c #3a3a3a", +"a9 c #515151", +"b. c #5a5a5a", +"b# c #424242", +"ba c #818181", +"bb c #050505", +"bc c #797979", +"bd c #505050", +"be c #747474", +"bf c #808080", +"bg c #7c7c7c", +"bh c #2a2a2a", +"bi c #4a4a4a", +"bj c #fafafa", +"bk c #1b1b1b", +"bl c #767676", +"bm c #737373", +"bn c #262626", +"bo c #f1f1f1", +"bp c #0d0d0d", +"bq c #0b0b0b", +"br c #787878", +"bs c #757575", +"bt c #6f6f6f", +"bu c #434343", +"bv c #3b3b3b", +"bw c #5e5e5e", +"bx c #696969", +"by c #252525", +"bz c #5f5f5f", +"bA c #575757", +"bB c #282828", +"bC c #010101", +"bD c #6b6b6b", +"bE c #676767", +"bF c #646464", +"bG c #636363", +"bH c #616161", +"bI c #000000", +"bJ c #5b5b5b", +"bK c #464646", +"bL c #656565", +"bM c #595959", +"bN c #3c3c3c", +"bO c #606060", +"bP c #555555", +"bQ c #545454", +"bR c #626262", +"bS c #535353", +"bT c #7d7d7d", +"bU c #313131", +/* pixels */ +"................................................", +"..................aB.I.l.#.a.a.IaB..............", +".................l.n.i.m.n.i.i.i.i#t............", +"...............p.i.i#N.i.i.i.i.n.n.a............", +"...........H.0.z.iab.M.Gab.i.n.i.i#t............", +".......W.M.0.H.l.i#N.H.3.0#N.i.i.i.m.r...r......", +"......#K#X.H.4...p...3.G.J.I.i.i.i.i.6ab.z.r....", +"......#N.m.4.3.3.G.G.J.J.W.z.i.i.i.n.i.i.i.I....", +".....J.6.r.4.3.G.G.J.W.W#K#X.n.6#t.i.i.i.i.n.#..", +"..#K.0.0.0.3.G.J.J.W.W#Kzzzz.#.H.#.n.i.i.i.i#t..", +"...G.H.3.3.G.J.J.W.W#Kzzzz.r.raB#X.6.i.i.i.aaB..", +"...4.3.G.G.J.J.W#K#Kzzzz.r.raB#X#X#i.n.i.n#i....", +"..#X.r.G.J.J#K.W#K.raB.r.raB#X.#.#.c.a.n.i.6....", +"..aB.p.r.J.W#K#KaB.p.m#NaB#X.#.#.c.l.z.i.i.m....", +"....aBaB.W#K#Kzz#t.n.i.h.#.#.#.c#iab.i.i.i.i#g.I", +"....#K#K#Kzzzz.r.a.z.a.i#X.c.c#i.l.a.i.i.i.i.i.6", +"...W.Hzzzz.r.raB.a.I.m.i.l.##i.l.l.I.i.i.i.n.h#t", +"...J.Gzz.r.raB#X#tab#t.i.Izz.l#N#N#N.a.p.n.h.6#t", +".....3.r.raB#X#X#N.p.p#g.m#K.l#N#N#t.I.I.h.6ab.l", +".....3aBaB#X#X.#.c.c.i.i#t.r#N#t#t.I.6.6ababab..", +".....3.#.c.#.c.c.czz.l.p.J.l#t.I.I.I.6.6.pab....", +"....#X.a.p#N.c#i#i#i#K.G.c#t.I.I.6.6abab.n.p....", +"..........#t#i#i.l#N#N#t.I.I.I.6.6ab.m.z.i.naB..", +"...........J.l#N#N#N#t.I.I.6.6.a.a.h.i.i.i#i....", +"........#K.r.l#N#N#t.I.I.6.6.aabab.h.i.i.a......", +"..........#N#t#t#t.I.I.6.6.aabab.p.p.z.p.r......", +"...........rab.6.m.p.6.6.aab.p.p.h.h.p.r........", +".............r.I.c.c.p.aab.h.n.n.h.h#X..........", +"..................aB.mab.p.p.i.i.z.#............", +"...................r.z.m.m.mab#N................" +}; diff -r 578fd4947a72 -r 7d55a9ba150c etc/vm/gear-simple.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/gear-simple.xpm Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,46 @@ +/* XPM */ +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"24 30 9 1", +/* colors */ +"` c #7F7F7F", +"a c #393939", +"b c #111111", +"c c #AAAAAA s background", +"C c #AAAAAA", +"d c #969696", +"e c #5C5C5C", +"f c #F9F9F9", +"g c #D3D3D3", +/* pixels */ +"cccccccccccccccccccccccc", +"cccccccccde`deeedccccccc", +"cccccccc`bbabbbbbecccccc", +"cccccccabbebbbbbbecccccc", +"cccccffbbafgabbbbecccccc", +"ccccfff`befgfebbbacccccc", +"ccccdfgCaCgggebbbbeabccc", +"ccceagggggggCbbbbbbbbecc", +"ccgeCgggggCCCdbeebbbbbdc", +"ccfffggggCCCCCdfdbbbbbec", +"cgfgggggCCCCCCCddebbbedc", +"cggggggCCCCCCCddd`bbb`cc", +"cdCgggCCCCdCCdddd`ebbecc", +"cdaCgCCCdaaedddd``bbbacc", +"ccddCCCCebbaddd``abbbbbe", +"ccCCCCCCebebd````ebbbbbe", +"ccfCCCCdeeab`d```ebbbbae", +"cggCCCddeaebec`eeeeabaee", +"ccgCCdddeaabac`eeeeeaea`", +"ccgddddd``bbeCeeeeeeaaac", +"ccgd`d```C`ag`eeeeeeaacc", +"ccdeae````Cg`eeeeeaabacc", +"ccccce```eeeeeeeeaabbbdc", +"cccccg`eeeeeeeeeeabbb`cc", +"cccccc`eeeeeeeeaaabbeccc", +"ccccceeeeeeeeeaaaabacccc", +"ccccccaeaaeeeaaaaaaccccc", +"ccccccce``aeaabbaadccccc", +"cccccccccdaaaabbbdcccccc", +"ccccccccccbaaaaecccccccc" +}; diff -r 578fd4947a72 -r 7d55a9ba150c etc/vm/message-colorful.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/message-colorful.xpm Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,62 @@ +/* XPM */ +static char *message[] = { +/* width height num_colors chars_per_pixel */ +" 24 30 25 1", +/* colors */ +". c #000000", +"# c #a4a579", +"a c #9f9c66", +"b c #918e5d", +"c c #817f53", +"d c #6d6b46", +"e c #5d5b3c", +"f c #49482f", +"g c #eae696", +"h c #373623", +"i c #d4d088", +"j c #c8c480", +"k c #0d0d08", +"l c #b4b173", +"m c #aaa76d s background", +"n c #888657", +"o c #76744c", +"p c #646240", +"q c #545236", +"r c #fffaa3", +"s c #efeb99", +"t c #dfdb8f", +"u c #bac384", +"v c #242317", +"w c #bfbc7a", +/* pixels */ +"mmmmmadpn#mmmmmmmmmmmmmm", +"mmmm#dnndec#mmmmmmmmmmmm", +"mmm#nuijwmbcocna#mmmmmmm", +"mmmnirrsuiijl#npecammmmm", +"mm#crrrrrrssuijwmbncon#m", +"mm#nndon#jsrrrrsguj#phom", +"mmmmmcodefhdwsrrrrshvhhm", +"mmmmmnwppeeqqqdnliafphhm", +"mmmm#lsrssboqdpoqhfnohpm", +"mmmmbugusguujw#odeeobhem", +"mmmmnrjtssujwwussiwawknm", +"mmmm#rrjumgurrrijajrbham", +"mmmbigjiuugjwwiggsrrfqmm", +"mmmnrrsrijajsssjm#srkc#m", +"mmmbrsijirsrsjjigsrjvnmm", +"mm#wrrrrrrrrrrrrgsrpfmmm", +"mmnssrrrrrrrrrrrrrrvdmmm", +"mmnriugugssrrrrrrriknmmm", +"mmmjgrrjwnligrrrrrbh#mmm", +"mbisssgssiuujjjjrrfqmmmm", +"mnrijijsssgjljusrgknmmmm", +"magurrgwbwlsrsjgrmhbmmmm", +"bjsiimjugiiijwurref#mmmm", +"psrrrrsjnujurrirrvdmmmmm", +"cpajrrrrrrsilugrjvnmmmmm", +"nfhkkfcmgrrrrrrrdh#mmmmm", +"mm#nphv..h#srrrrhpmmmmmm", +"mmmmmanofhkkho#wknmmmmmm", +"mmmmmmmmm#bdhv..hbmmmmmm", +"mmmmmmmmmmmm#ncedmmmmmmm" +}; diff -r 578fd4947a72 -r 7d55a9ba150c etc/vm/message-simple.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/message-simple.xpm Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,45 @@ +/* XPM */ +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"24 30 8 1", +/* colors */ +"` c #000000", +"a c #817F53", +"b c #FFFAA3", +"c c #545236", +"d c #BFBC7A", +"e c #AAA76D s background", +"f c #242317", +"g c #D4D088", +/* pixels */ +"eeeeeeacaeeeeeeeeeeeeeee", +"eeeeeaaaacaeeeeeeeeeeeee", +"eeeeadgddeaaaaaeeeeeeeee", +"eeeagbbbdggdeeaccaeeeeee", +"eeeabbbbbbbbdgddeaaaaaee", +"eeeaaaaaedbbbbbbbddecfae", +"eeeeeaaaccfadbbbbbbffffe", +"eeeeeadcccccccaaegeccffe", +"eeeeeebbbbaacacacfcaafce", +"eeeeadbdbbddddeaaccaafce", +"eeeeabdgbbdddddbbgded`ae", +"eeeeebbddebdbbbgdedbafee", +"eeeagbdgddbdddgbbbbbccee", +"eeeabbbbgdedbbbdeebb`aee", +"eeeabbgdgbbbbddgbbbdfaee", +"eeedbbbbbbbbbbbbbbbcceee", +"eeabbbbbbbbbbbbbbbbfaeee", +"eeabgdbdbbbbbbbbbbg`aeee", +"eeedbbbddaegbbbbbbafeeee", +"eagbbbbbbgddddddbbcceeee", +"eabgdgdbbbbdeddbbb`aeeee", +"eebdbbbdadebbbdbbefaeeee", +"adbggeddbgggdddbbcceeeee", +"cbbbbbbdadddbbgbbfaeeeee", +"acedbbbbbbbgedbbdfaeeeee", +"acf``caebbbbbbbbafeeeeee", +"eeeacff``febbbbbfceeeeee", +"eeeeeeaacf``faed`aeeeeee", +"eeeeeeeeeeaaff``faeeeeee", +"eeeeeeeeeeeeeaacaeeeeeee" +}; diff -r 578fd4947a72 -r 7d55a9ba150c etc/vm/stuffed_box-colorful.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/stuffed_box-colorful.xpm Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,291 @@ +/* XPM */ +static char *stuffed_box[] = { +/* width height num_colors chars_per_pixel */ +" 24 30 254 2", +/* colors */ +".. c #000000", +".# c #b1b1b1", +".a c #242120", +".b c #505955", +".c c #491909", +".d c #3e1608", +".e c #a9a9a9 s background", +".f c #eeeef0", +".g c #a7a7a7", +".h c #a3411c", +".i c #663622", +".j c #5c210b", +".k c #a83e17", +".l c #2f2824", +".m c #9f7b71", +".n c #d38141", +".o c #a3a3a3", +".p c #d27f40", +".q c #a1a1a1", +".r c #511c0a", +".s c #ccc1be", +".t c #9d9d9d", +".u c #cd773b", +".v c #903a13", +".w c #592a15", +".x c #1e1d1d", +".y c #cdcccc", +".z c #959595", +".A c #939393", +".B c #e8ac69", +".C c #919191", +".D c #8f8f8f", +".E c #8d8d8d", +".F c #240e05", +".G c #652810", +".H c #a55f3b", +".I c #878787", +".J c #f2f1f0", +".K c #a0491f", +".L c #8a4a27", +".M c #0c0401", +".N c #efbf80", +".O c #7d7d7d", +".P c #3d3531", +".Q c #2a0b04", +".R c #7b7b7b", +".S c #81401e", +".T c #797979", +".U c #adacac", +".V c #904d26", +".W c #eab071", +".X c #11132a", +".Y c #737373", +".Z c #999695", +".0 c #ab4119", +".1 c #d16d31", +".2 c #b3b8b5", +".3 c #030305", +".4 c #212129", +".5 c #b74c1e", +".6 c #ca7b41", +".7 c #696969", +".8 c #404644", +".9 c #2d1e17", +"#. c #656565", +"## c #8b3417", +"#a c #dfae7d", +"#b c #f5eeef", +"#c c #5e260f", +"#d c #d58445", +"#e c #5f5f5f", +"#f c #763416", +"#g c #5a200b", +"#h c #301006", +"#i c #7a2f10", +"#j c #edb87a", +"#k c #4e1b09", +"#l c #da8e4d", +"#m c #8b8a8a", +"#n c #d97435", +"#o c #d58648", +"#p c #32160b", +"#q c #fefefe", +"#r c #e8ad6b", +"#s c #020000", +"#t c #474747", +"#u c #bfbfc0", +"#v c #4f505c", +"#w c #6b280e", +"#x c #fcdf9c", +"#y c #e39e5c", +"#z c #160803", +"#A c #3f3f3f", +"#B c #61230e", +"#C c #140601", +"#D c #3c0e04", +"#E c #7e3010", +"#F c #eaeaea", +"#G c #a4a3a2", +"#H c #bb5121", +"#I c #cd642c", +"#J c #b94f1f", +"#K c #cb622a", +"#L c #333333", +"#M c #d88747", +"#N c #110601", +"#O c #d58344", +"#P c #070301", +"#Q c #511e0b", +"#R c #bf9f84", +"#S c #d2d2d2", +"#T c #6f290e", +"#U c #eed6b2", +"#V c #c55c27", +"#W c #441708", +"#X c #bab8b7", +"#Y c #e9ae6b", +"#Z c #823110", +"#0 c #171717", +"#1 c #eccba6", +"#2 c #51200e", +"#3 c #a33c16", +"#4 c #983915", +"#5 c #7f6352", +"#6 c #eab26f", +"#7 c #361207", +"#8 c #bd5222", +"#9 c #d0672e", +"a. c #a35326", +"a# c #da8f52", +"aa c #aaaaaa", +"ab c #a8a8a8", +"ac c #a6a6a6", +"ad c #a4a4a4", +"ae c #d38041", +"af c #303246", +"ag c #a2a2a2", +"ah c #b85020", +"ai c #d17e3f", +"aj c #521d0b", +"ak c #a0a0a0", +"al c #e6a764", +"am c #d07c3e", +"an c #cf7a3d", +"ao c #9e9e9e", +"ap c #9c9c9c", +"aq c #c75d28", +"ar c #1b0a03", +"as c #d88a49", +"at c #433f3e", +"au c #989898", +"av c #65250d", +"aw c #969696", +"ax c #0a0806", +"ay c #949494", +"az c #581e0a", +"aA c #c6c5c5", +"aB c #909090", +"aC c #d67d3d", +"aD c #9ea0a1", +"aE c #121211", +"aF c #db7838", +"aG c #414249", +"aH c #8a8a8a", +"aI c #d88c4c", +"aJ c #b0461b", +"aK c #28322d", +"aL c #4f5150", +"aM c #833613", +"aN c #848484", +"aO c #361306", +"aP c #808080", +"aQ c #551e0a", +"aR c #762d10", +"aS c #837b79", +"aT c #17110f", +"aU c #cfcfd4", +"aV c #943413", +"aW c #767676", +"aX c #98534f", +"aY c #ad461b", +"aZ c #727272", +"a0 c #1c1917", +"a1 c #c06a34", +"a2 c #6c6c6c", +"a3 c #722b0f", +"a4 c #c96029", +"a5 c #9a9999", +"a6 c #60616a", +"a7 c #67240e", +"a8 c #764a37", +"a9 c #3b1407", +"b. c #504e4d", +"b# c #100601", +"ba c #e7aa67", +"bb c #f4e0b9", +"bc c #d4d6d5", +"bd c #423028", +"be c #545454", +"bf c #d66f32", +"bg c #c05623", +"bh c #d36b2f", +"bi c #d2692e", +"bj c #4a4a4a", +"bk c #762e0f", +"bl c #461d0e", +"bm c #56150a", +"bn c #6c290f", +"bo c #ecb472", +"bp c #c58859", +"bq c #404040", +"br c #5f220c", +"bs c #3a3a3a", +"bt c #cd652c", +"bu c #363636", +"bv c #e7e7e7", +"bw c #732c0f", +"bx c #fee4a1", +"by c #68270e", +"bz c #dfdfdf", +"bA c #7a3819", +"bB c #2c2c2c", +"bC c #dbdbdb", +"bD c #f0ece9", +"bE c #d48243", +"bF c #282828", +"bG c #4e4b4a", +"bH c #5c5b5b", +"bI c #988f8c", +"bJ c #de7c39", +"bK c #b54c1e", +"bL c #b44a1d", +"bM c #b3481c", +"bN c #342f2d", +"bO c #220701", +"bP c #c45b26", +"bQ c #190802", +"bR c #c35925", +"bS c #d56c30", +"bT c #3f3d3b", +"bU c #e0803e", +"bV c #fbfafa", +"bW c #dd9252", +"bX c #afb0b6", +"bY c #772b0f", +"bZ c #f7f6f6", +"b0 c #220b04", +"b1 c #0e0e0e", +"b2 c #cb763d", +"b3 c #dd9b5f", +"b4 c #ad4219", +"b5 c #fadb99", +"b6 c #67756f", +"b7 c #e9e8e8", +/* pixels */ +".e.e.e.e.e.e.e.e.e.e.e.e.o.e.e.e.e.e.e.e.e.e.e.e", +".e.e.e.e.e.e.e.e.e.e.e.o.2.Z.m.o.e.e.e.e.o.o.e.e", +".e.e.e.e.e.e.e.e.e.e.obcbZ.6bp.H.m.o.e.e.e.s.o.o", +".e.e.e.e.e.e.e.e.e.e.fbZbZbbbc.Nbp.H.map.2.mbZbz", +".e.e.e.e.e.e.e.e.e.e#RbIbc#b.qbp.W.Bbpa.a8.YaA.7", +".e.e.e.e.e.e.e.ebIa8.y.sbD#S.Ibe.L.B#rbob3.Lbl.o", +".e.e.e.e.e.e.o#5a1#abe.y.o.qb.#e.q#U.Nbobob5.w.e", +".e.e.e.e.ebI.H.n#RbI.q#eaPbdb..o.I#X.N.W.N#lbl.e", +".e.e.e.oaXa1.nai.Vblb.#..9.x.Rbc#S.i#a.N#daF.d.e", +".e.e.e.ia1bU.uai.n.6bdbs.3#z.dbI#jal.N#n#n.SaLaA", +".e.e.e#W#c.Hai.u.6a#.m.3a8aI.H.Hal.N#n.1.Sat#XbI", +".e.e.e#W.v.j.V.uai.n#l.6bpas#lal#1#n#I.S.vbnaTaN", +".e.e.e.Q.v.v#w.Ga1.u#d#das#lbW.N#I#I.S#Z.1#Ibl.e", +".e.e.e.9bO#T.v#Z.j.H.u.n.na#.N.u#V.v.F#Ra#.1.9.U", +".e.e.e.P#haE.G.v.v.jbA.ua#.N.ubg.haTb.#b#obfbl.e", +".e.e.A.o#SbHbF#p#T.v#E.Gbpa4#HbnaTaLbIbp#Va.bT.U", +".e.e.e.IbcaubH#7#7.j.v#i.v.5#E##bY.v.h#V#Hbdak.e", +".e.e.eb.a8#S.9.G#ibl.d#T##.vaY#H.5.5bgbgblaN.q.e", +".e.e.eb..Ga8.i#ZbYbY.j.Q.jaY.5.5#H#H.m.w.7.o.e.e", +".e.e.ebGbYbn#w#i#T#T#T.j#ZaJ.5.5.5.S.y#u.A.o.e.e", +".e.e.oaL.d#Tbn#T#T#T#w.G#ZaY.5.h.i.Dbz.fbV.y#u.o", +".e.eapbHaxbObTa2#T#w.G.j#iaYaYb..2aua6.Obzbz#q.2", +".e.e.o.RaL.a.q.Ube#w.j.jaR.k#4#h#A.o.Dbzau#qbcap", +".e.eapaN#Aa2.ybv#Xa8#g#g#T.k#Z.PbG#L.o.2.2bZ.A.o", +".o.I.Aak.fbZbXaZbz#.#gbl#T##bd.IaNbH#L.Obz.2.z.e", +".Aa2.Rbz.eaAaDaNaU.lax.d.j.9aP.q.e.AbHbsa2aN.o.e", +"ap.Y#AaA#S.o.DbZ.obebBb1aTaS.o.e.e.o.Ia2.Yap.e.e", +".o.AbHbeaAaU.faA.I.I.7be.Rak.e.e.e.e.eap.o.e.e.e", +".e.o.Ibe#A#u.e.R.o.oap.A.o.e.e.e.e.e.e.e.e.e.e.e", +".e.e.oaNbHbe.R.o.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e" +}; diff -r 578fd4947a72 -r 7d55a9ba150c etc/vm/stuffed_box-simple.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/stuffed_box-simple.xpm Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,46 @@ +/* XPM */ +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"24 30 9 1", +/* colors */ +"` c #A9A9A9 s background", +"- c #A9A9A9", +"a c #A83E17", +"b c #030305", +"c c #DA8E4D", +"d c #FEFEFE", +"e c #60616A", +"f c #423028", +"g c #FADB99", +/* pixels */ +"````````````````````````", +"``````````````e`````````", +"```````````ddccae```````", +"``````````dddgdgcae``edd", +"`````````---dd-ccccafe`e", +"`````````f--dg-eaccccaf`", +"```````ecce---ee-ggccgf`", +"``````ac---eefe---gcgcf`", +"````acccafeeffedgfcgccf`", +"```fccccccffbbf-gcgccae`", +"```ffaccccebfcaacgccaf-`", +"```fafacccccccccgccaafbe", +"```baaffcccccccgccaaccf`", +"```fbfaafaccccgcaab-ccf`", +"```fbbfaafaccgcaabedccf`", +"```-gefffaafcaafbe-caaf`", +"```-d-efffaaaaaaaaaaaf``", +"```efgffafffaaaaaaaafe``", +"```efffaaafbfaaaaaefe```", +"```eaffaffffaaaaaa--````", +"```effffffffaaaaf-ddd```", +"```ebbfeffffaaae--eeddd`", +"```eef--efffaaabf--d-dd`", +"```efe-d-ffffaafef---d``", +"```-dd-edefffaf`eefed```", +"`eed---e-fbfffe```efee``", +"`ef-g--d-efbbe`````ee```", +"``ee--d---eee```````````", +"```ef--e````````````````", +"```eeee`````````````````" +}; diff -r 578fd4947a72 -r 7d55a9ba150c etc/w3/stylesheet --- a/etc/w3/stylesheet Mon Aug 13 09:23:08 2007 +0200 +++ b/etc/w3/stylesheet Mon Aug 13 09:24:17 2007 +0200 @@ -30,6 +30,8 @@ ** ** emacs - only include this chunk if you are using Emacs 19 ** xemacs - only include this chunk if you are using XEmacs +** light - only include this chunk if you are using a light background +** dark - only include this chunk if you are using a dark background ******************************************************************************/ /* @@ -70,10 +72,13 @@ @media emacs { h1,h2,h3, -h4,h5,h6 { - text-decoration: underline; - color: blue; - } +h4,h5,h6 { text-decoration: underline; } + h1 { color: rgb(0,255,255); } // cyan + h2 { color: rgb(70,130,180); } // steelblue + h3 { color: rgb(106,90,205); } // slateblue + h4 { color: rgb(135,206,235); } // skyblue + h5 { color: rgb(0,0,128); } // navy + h6 { color: rgb(173,216,230); } // lightblue strong,em { color: red } dfn { font-style: italic } diff -r 578fd4947a72 -r 7d55a9ba150c lib-src/ChangeLog --- a/lib-src/ChangeLog Mon Aug 13 09:23:08 2007 +0200 +++ b/lib-src/ChangeLog Mon Aug 13 09:24:17 2007 +0200 @@ -1,3 +1,13 @@ +Tue Apr 1 12:26:53 1997 Steven L Baur + + * Makefile.in.in: Added stuff for updated movemail.c. + +Sat Mar 29 16:57:01 1997 Steven L Baur + + * send-pr (GNATS_ADDR): Use xemacs.org as submission address. + (DATADIR): Allow for DATADIR to be passed in as an environment + variable. + Sun Mar 23 15:57:19 1997 Steven L Baur * update-elc.sh (make_special_commands): Use target of x20 for efs. diff -r 578fd4947a72 -r 7d55a9ba150c lib-src/Makefile.in.in --- a/lib-src/Makefile.in.in Mon Aug 13 09:23:08 2007 +0200 +++ b/lib-src/Makefile.in.in Mon Aug 13 09:24:17 2007 +0200 @@ -122,6 +122,30 @@ SOURCES = COPYING ChangeLog Makefile.in.in README aixcc.lex emacs.csh \ makedoc.com *.[chy] $(SCRIPTS) +# Additional -D flags for movemail (add to MOVE_FLAGS if desired): +# MAIL_USE_POP Support mail retrieval from a POP mailbox. +# MAIL_USE_MMDF Support MMDF mailboxes. +# MAIL_USE_FLOCK Use flock for file locking (see the comments +# about locking in movemail.c) +# MAIL_UNLINK_SPOOL Unlink the user spool mailbox after reading +# it (instead of just emptying it). +# KERBEROS Support Kerberized POP. +# KRB5 Support Kerberos Version 5 pop instead of +# Version 4 (define this in addition to +# KERBEROS). +# HESIOD Support Hesiod lookups of user mailboxes. +# MAILHOST A string, the host name of the default POP +# mail host for the site. +MOVE_FLAGS= + +# Additional libraries for movemail: +# For KERBEROS +# MOVE_LIBS= -lkrb -ldes -lcom_err +# For KERBEROS + KRB5 +# MOVE_LIBS= -lkrb5 -lcrypto -lisode -lcom_err +# Add "-lhesiod" if HESIOD is defined. +MOVE_LIBS= + /* ========================== start of cpp stuff ======================= */ /* From here on, comments must be done in C syntax. (see comment above @@ -411,8 +435,8 @@ b2m: ${srcdir}/b2m.c ../src/config.h $(CC) ${ALL_CFLAGS} ${srcdir}/b2m.c $(LOADLIBES) -o b2m -movemail: ${srcdir}/movemail.c ../src/config.h - $(CC) ${ALL_CFLAGS} ${srcdir}/movemail.c $(LOADLIBES) -o movemail +movemail: ${srcdir}/movemail.c ${srcdir}/pop.c ${srcdir}/pop.h ../src/config.h + $(CC) ${ALL_CFLAGS} ${MOVE_FLAGS} ${srcdir}/movemail.c ${srcdir}/pop.c $(LOADLIBES) ${MOVE_LIBS} -o movemail cvtmail: ${srcdir}/cvtmail.c $(CC) ${ALL_CFLAGS} ${srcdir}/cvtmail.c $(LOADLIBES) -o cvtmail diff -r 578fd4947a72 -r 7d55a9ba150c lib-src/movemail.c --- a/lib-src/movemail.c Mon Aug 13 09:23:08 2007 +0200 +++ b/lib-src/movemail.c Mon Aug 13 09:24:17 2007 +0200 @@ -1,6 +1,6 @@ /* movemail foo bar -- move file foo to file bar, locking file foo the way /bin/mail respects. - Copyright (C) 1986, 1992, 1993, 1994 Free Software Foundation, Inc. + Copyright (C) 1986, 1992, 1993, 1994, 1996 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -16,11 +16,9 @@ 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 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* Synched up with: FSF 19.28. */ - /* Important notice: defining MAIL_USE_FLOCK or MAIL_USE_LOCKF *will cause loss of mail* if you do it on a system that does not normally use flock as its way of interlocking access to inbox files. The @@ -36,7 +34,7 @@ /* * Modified January, 1986 by Michael R. Gretzinger (Project Athena) * - * Added POP (Post Office Protocol) service. When compiled -DPOP + * Added POP (Post Office Protocol) service. When compiled -DMAIL_USE_POP * movemail will accept input filename arguments of the form * "po:username". This will cause movemail to open a connection to * a pop server running on $MAILHOST (environment variable). Movemail @@ -49,32 +47,52 @@ * New routines in movemail.c: * get_errmsg - return pointer to system error message * + * Modified August, 1993 by Jonathan Kamens (OpenVision Technologies) + * + * Move all of the POP code into a separate file, "pop.c". + * Use strerror instead of get_errmsg. + * */ #define NO_SHORTNAMES /* Tell config not to load remap.h */ #include <../src/config.h> -#include -#include -#include /* for time() */ -#include /* for printf() */ -#include /* strcpy() */ - #include #include #include +#include #include #include <../src/syswait.h> +#ifdef MAIL_USE_POP +#include "pop.h" +#endif #ifdef MSDOS #undef access #endif /* MSDOS */ +#ifndef DIRECTORY_SEP +#define DIRECTORY_SEP '/' +#endif +#ifndef IS_DIRECTORY_SEP +#define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP) +#endif + +#ifdef WINDOWSNT +#undef access +#undef unlink +#define fork() 0 +#define sys_wait(var) (*(var) = 0) +/* Unfortunately, Samba doesn't seem to properly lock Unix files even + though the locking call succeeds (and indeed blocks local access from + other NT programs). If you have direct file access using an NFS + client or something other than Samba, the locking call might work + properly - make sure it does before you enable this! */ +#define DISABLE_DIRECT_ACCESS +#endif /* WINDOWSNT */ + #ifdef USG #include #include -#if defined (sun) -#include -#endif /* sun */ #ifndef F_OK #define F_OK 0 #define X_OK 1 @@ -87,7 +105,7 @@ #include #endif -#ifdef XENIX +#if defined (XENIX) || defined (WINDOWSNT) #include #endif @@ -109,25 +127,27 @@ #undef write #undef close -static char *concat (CONST char *s1, CONST char *s2, CONST char *s3); -static void *xmalloc (unsigned int size); #ifndef errno extern int errno; #endif +char *strerror (); -static void error (CONST char *s1, CONST char *s2, CONST char *s3); -static void fatal (CONST char *s1, CONST char *s2); -static void pfatal_with_name (CONST char *name); -static void pfatal_and_delete (CONST char *name); - -#ifndef HAVE_STRERROR -char *strerror (int); -#endif +void fatal (); +void error (); +void pfatal_with_name (); +void pfatal_and_delete (); +char *concat (); +long *xmalloc (); +int popmail (); +int pop_retr (); +int mbx_write (); +int mbx_delimit_begin (); +int mbx_delimit_end (); /* Nonzero means this is name of a lock file to delete on fatal error. */ char *delete_lockname; -void +int main (argc, argv) int argc; char **argv; @@ -149,7 +169,10 @@ delete_lockname = 0; if (argc < 3) - fatal ("two arguments required", ""); + { + fprintf (stderr, "Usage: movemail inbox destfile [POP-password]\n"); + exit(1); + } inname = argv[1]; outname = argv[2]; @@ -158,17 +181,20 @@ mmdf_init (argv[0]); #endif + if (*outname == 0) + fatal ("Destination file name is empty", 0); + /* Check access to output file. */ if (access (outname, F_OK) == 0 && access (outname, W_OK) != 0) pfatal_with_name (outname); - /* Also check that outname's directory is writeable to the real uid. */ + /* Also check that outname's directory is writable to the real uid. */ { char *buf = (char *) xmalloc (strlen (outname) + 1); char *p; strcpy (buf, outname); p = buf + strlen (buf); - while (p > buf && p[-1] != '/') + while (p > buf && !IS_DIRECTORY_SEP (p[-1])) *--p = 0; if (p == buf) *p++ = '.'; @@ -178,28 +204,26 @@ } #ifdef MAIL_USE_POP - if (!memcmp (inname, "po:", 3)) + if (!strncmp (inname, "po:", 3)) { - int status; char *user; + int status; - for (user = &inname[strlen (inname) - 1]; user >= inname; user--) - if (*user == ':') - break; - - status = popmail (user, outname); + status = popmail (inname + 3, outname, argc > 3 ? argv[3] : NULL); exit (status); } setuid (getuid ()); #endif /* MAIL_USE_POP */ +#ifndef DISABLE_DIRECT_ACCESS + /* Check access to input file. */ if (access (inname, R_OK | W_OK) != 0) pfatal_with_name (inname); #ifndef MAIL_USE_MMDF #ifndef MAIL_USE_SYSTEM_LOCK - /* Use a lock file named /usr/spool/mail/$USER.lock: + /* Use a lock file named after our first argument with .lock appended: If it exists, the mail file is locked. */ /* Note: this locking mechanism is *required* by the mailer (on systems which use it) to prevent loss of mail. @@ -208,7 +232,7 @@ WILL occasionally cause loss of mail due to timing errors! So, if creation of the lock file fails - due to access permission on /usr/spool/mail, + due to access permission on the mail spool directory, you simply MUST change the permission and/or make movemail a setgid program so it can create lock files properly. @@ -226,7 +250,7 @@ tempname = (char *) xmalloc (strlen (inname) + strlen ("EXXXXXX") + 1); strcpy (tempname, inname); p = tempname + strlen (tempname); - while (p != tempname && p[-1] != '/') + while (p != tempname && !IS_DIRECTORY_SEP (p[-1])) p--; *p = 0; strcpy (p, "EXXXXXX"); @@ -239,7 +263,12 @@ /* Give up if cannot do that. */ desc = open (tempname, O_WRONLY | O_CREAT | O_EXCL, 0666); if (desc < 0) - pfatal_with_name ("lock file--see source file lib-src/movemail.c"); + { + char *message = (char *) xmalloc (strlen (tempname) + 50); + sprintf (message, "%s--see source file lib-src/movemail.c", + tempname); + pfatal_with_name (message); + } close (desc); tem = link (tempname, lockname); @@ -248,12 +277,15 @@ break; sleep (1); - /* If lock file is a minute old, unlock it. */ + /* If lock file is five minutes old, unlock it. + Five minutes should be good enough to cope with crashes + and wedgitude, and long enough to avoid being fooled + by time differences between machines. */ if (stat (lockname, &st) >= 0) { now = time (0); - if (st.st_ctime < now - 60) - unlink (lockname); + if (st.st_ctime < now - 300) + unlink (lockname); } } @@ -295,8 +327,12 @@ #ifdef XENIX if (locking (indesc, LK_RLCK, 0L) < 0) pfatal_with_name (inname); #else +#ifdef WINDOWSNT + if (locking (indesc, LK_RLCK, -1L) < 0) pfatal_with_name (inname); +#else if (flock (indesc, LOCK_EX) < 0) pfatal_with_name (inname); #endif +#endif #endif /* not MAIL_USE_LOCKF */ #endif /* MAIL_USE_SYSTEM_LOCK */ @@ -328,7 +364,7 @@ pfatal_and_delete (outname); #ifdef MAIL_USE_SYSTEM_LOCK -#if defined (STRIDE) || defined (XENIX) +#if defined (STRIDE) || defined (XENIX) || defined (WINDOWSNT) /* Stride, xenix have file locking, but no ftruncate. This mess will do. */ close (open (inname, O_CREAT | O_TRUNC | O_RDWR, 0666)); #else @@ -365,58 +401,57 @@ #if !defined (MAIL_USE_MMDF) && !defined (MAIL_USE_SYSTEM_LOCK) unlink (lockname); #endif /* not MAIL_USE_MMDF and not MAIL_USE_SYSTEM_LOCK */ - exit (0); + +#endif /* ! DISABLE_DIRECT_ACCESS */ + + return 0; } /* Print error message and exit. */ -static void +void fatal (s1, s2) - CONST char *s1, *s2; + char *s1, *s2; { if (delete_lockname) - error (s1, s2, ""); unlink (delete_lockname); + error (s1, s2); exit (1); } /* Print error message. `s1' is printf control string, `s2' is arg for it. */ -static void +void error (s1, s2, s3) - CONST char *s1, *s2, *s3; + char *s1, *s2, *s3; { - printf ("movemail: "); - printf (s1, s2, s3); - printf ("\n"); + fprintf (stderr, "movemail: "); + fprintf (stderr, s1, s2, s3); + fprintf (stderr, "\n"); } -static void +void pfatal_with_name (name) - CONST char *name; + char *name; { - char *s; - - s = concat ("", strerror (errno), " for %s"); + char *s = concat ("", strerror (errno), " for %s"); fatal (s, name); } -static void +void pfatal_and_delete (name) - CONST char *name; + char *name; { - char *s; - - s = concat ("", strerror (errno), " for %s"); + char *s = concat ("", strerror (errno), " for %s"); unlink (name); fatal (s, name); } /* Return a newly-allocated string whose contents concatenate those of s1, s2, s3. */ -static char * +char * concat (s1, s2, s3) - CONST char *s1, *s2, *s3; + char *s1, *s2, *s3; { int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3); char *result = (char *) xmalloc (len1 + len2 + len3 + 1); @@ -431,13 +466,13 @@ /* Like malloc but get fatal error if memory is exhausted. */ -static void * +long * xmalloc (size) - unsigned int size; + unsigned size; { - void *result = (void *) malloc (size); + long *result = (long *) malloc (size); if (!result) - fatal ("virtual memory exhausted", (char *) 0); + fatal ("virtual memory exhausted", 0); return result; } @@ -445,9 +480,14 @@ #ifdef MAIL_USE_POP +#ifndef WINDOWSNT #include #include #include +#else +#undef _WINSOCKAPI_ +#include +#endif #include #include @@ -467,344 +507,197 @@ char *progname; FILE *sfi; FILE *sfo; +char ibuffer[BUFSIZ]; +char obuffer[BUFSIZ]; char Errmsg[80]; -static int debug = 0; - -char *get_errmsg (); -char *getenv (); -int mbx_write (); - -int -popmail (user, outfile) +popmail (user, outfile, password) char *user; char *outfile; + char *password; { - char *host; int nmsgs, nbytes; - char response[128]; register int i; int mbfi; FILE *mbf; - struct passwd *pw = (struct passwd *) getpwuid (getuid ()); - if (pw == NULL) - fatal ("cannot determine user name"); + char *getenv (); + int mbx_write (); + popserver server; + extern char *strerror (); - host = getenv ("MAILHOST"); - if (host == NULL) + server = pop_open (0, user, password, POP_NO_GETPASS); + if (! server) { - fatal ("no MAILHOST defined"); - } - - if (pop_init (host) == NOTOK) - { - fatal (Errmsg); + error (pop_error); + return (1); } - if (getline (response, sizeof response, sfi) != OK) - { - fatal (response); - } - - if (pop_command ("USER %s", user) == NOTOK - || pop_command ("RPOP %s", pw->pw_name) == NOTOK) + if (pop_stat (server, &nmsgs, &nbytes)) { - pop_command ("QUIT"); - fatal (Errmsg); - } - - if (pop_stat (&nmsgs, &nbytes) == NOTOK) - { - pop_command ("QUIT"); - fatal (Errmsg); + error (pop_error); + return (1); } if (!nmsgs) - { - pop_command ("QUIT"); - return 0; - } + { + pop_close (server); + return (0); + } mbfi = open (outfile, O_WRONLY | O_CREAT | O_EXCL, 0666); if (mbfi < 0) - { - pop_command ("QUIT"); - pfatal_and_delete (outfile); - } + { + pop_close (server); + error ("Error in open: %s, %s", strerror (errno), outfile); + return (1); + } fchown (mbfi, getuid (), -1); - if ((mbf = fdopen (mbfi, "w")) == NULL) + if ((mbf = fdopen (mbfi, "wb")) == NULL) { - pop_command ("QUIT"); - pfatal_and_delete (outfile); + pop_close (server); + error ("Error in fdopen: %s", strerror (errno)); + close (mbfi); + unlink (outfile); + return (1); } - for (i = 1; i <= nmsgs; i++) + for (i = 1; i <= nmsgs; i++) { mbx_delimit_begin (mbf); - if (pop_retr (i, mbx_write, mbf) != OK) - { - pop_command ("QUIT"); - close (mbfi); - unlink (outfile); - fatal (Errmsg); - } + if (pop_retr (server, i, mbx_write, mbf) != OK) + { + error (Errmsg); + close (mbfi); + return (1); + } mbx_delimit_end (mbf); fflush (mbf); + if (ferror (mbf)) + { + error ("Error in fflush: %s", strerror (errno)); + pop_close (server); + close (mbfi); + return (1); + } } + /* On AFS, a call to write only modifies the file in the local + * workstation's AFS cache. The changes are not written to the server + * until a call to fsync or close is made. Users with AFS home + * directories have lost mail when over quota because these checks were + * not made in previous versions of movemail. */ + +#ifdef BSD if (fsync (mbfi) < 0) { - pop_command ("QUIT"); - pfatal_and_delete (outfile); + error ("Error in fsync: %s", strerror (errno)); + return (1); } +#endif if (close (mbfi) == -1) { - pop_command ("QUIT"); - pfatal_and_delete (outfile); + error ("Error in close: %s", strerror (errno)); + return (1); } - for (i = 1; i <= nmsgs; i++) + for (i = 1; i <= nmsgs; i++) { - if (pop_command ("DELE %d", i) == NOTOK) - { - /* Better to ignore this failure. */ - } + if (pop_delete (server, i)) + { + error (pop_error); + pop_close (server); + return (1); + } } - pop_command ("QUIT"); + if (pop_quit (server)) + { + error (pop_error); + return (1); + } + return (0); } -int -pop_init (host) - char *host; +pop_retr (server, msgno, action, arg) + popserver server; + int (*action)(); { - register struct hostent *hp; - register struct servent *sp; - int lport = IPPORT_RESERVED - 1; - struct sockaddr_in sin; - register int s; - - hp = gethostbyname (host); - if (hp == NULL) - { - sprintf (Errmsg, "MAILHOST unknown: %s", host); - return NOTOK; - } + extern char *strerror (); + char *line; + int ret; - sp = getservbyname ("pop", "tcp"); - if (sp == 0) - { - strcpy (Errmsg, "tcp/pop: unknown service"); - return NOTOK; - } - - sin.sin_family = hp->h_addrtype; - memcpy ((char *)&sin.sin_addr, hp->h_addr, hp->h_length); - sin.sin_port = sp->s_port; - s = rresvport (&lport); - if (s < 0) - { - sprintf (Errmsg, "error creating socket: %s", get_errmsg ()); - return NOTOK; - } - - if (connect (s, (char *)&sin, sizeof sin) < 0) - { - sprintf (Errmsg, "error during connect: %s", get_errmsg ()); - close (s); - return NOTOK; - } - - sfi = fdopen (s, "r"); - sfo = fdopen (s, "w"); - if (sfi == NULL || sfo == NULL) + if (pop_retrieve_first (server, msgno, &line)) { - sprintf (Errmsg, "error in fdopen: %s", get_errmsg ()); - close (s); - return NOTOK; - } - - return OK; -} - -int -pop_command (fmt, a, b, c, d) - char *fmt; -{ - char buf[128]; - char errmsg[64]; - - sprintf (buf, fmt, a, b, c, d); - - if (debug) fprintf (stderr, "---> %s\n", buf); - if (putline (buf, Errmsg, sfo) == NOTOK) return NOTOK; - - if (getline (buf, sizeof buf, sfi) != OK) - { - strcpy (Errmsg, buf); - return NOTOK; - } - - if (debug) fprintf (stderr, "<--- %s\n", buf); - if (*buf != '+') - { - strcpy (Errmsg, buf); - return NOTOK; - } - else - { - return OK; - } -} - - -pop_stat (nmsgs, nbytes) - int *nmsgs, *nbytes; -{ - char buf[128]; - - if (debug) fprintf (stderr, "---> STAT\n"); - if (putline ("STAT", Errmsg, sfo) == NOTOK) - return NOTOK; - - if (getline (buf, sizeof buf, sfi) != OK) - { - strcpy (Errmsg, buf); - return NOTOK; + strncpy (Errmsg, pop_error, sizeof (Errmsg)); + Errmsg[sizeof (Errmsg)-1] = '\0'; + return (NOTOK); } - if (debug) fprintf (stderr, "<--- %s\n", buf); - if (*buf != '+') + while (! (ret = pop_retrieve_next (server, &line))) { - strcpy (Errmsg, buf); - return NOTOK; - } - else - { - sscanf (buf, "+OK %d %d", nmsgs, nbytes); - return OK; - } -} + if (! line) + break; -pop_retr (msgno, action, arg) - int (*action)(); -{ - char buf[128]; - - sprintf (buf, "RETR %d", msgno); - if (debug) fprintf (stderr, "%s\n", buf); - if (putline (buf, Errmsg, sfo) == NOTOK) return NOTOK; - - if (getline (buf, sizeof buf, sfi) != OK) - { - strcpy (Errmsg, buf); - return NOTOK; + if ((*action)(line, arg) != OK) + { + strcpy (Errmsg, strerror (errno)); + pop_close (server); + return (NOTOK); + } } - while (1) + if (ret) { - switch (multiline (buf, sizeof buf, sfi)) - { - case OK: - (*action)(buf, arg); - break; - case DONE: - return OK; - case NOTOK: - strcpy (Errmsg, buf); - return NOTOK; - } + strncpy (Errmsg, pop_error, sizeof (Errmsg)); + Errmsg[sizeof (Errmsg)-1] = '\0'; + return (NOTOK); } + + return (OK); } -getline (buf, n, f) - char *buf; - register int n; - FILE *f; -{ - register char *p; - int c; - - p = buf; - while (--n > 0 && (c = fgetc (f)) != EOF) - if ((*p++ = c) == '\n') break; - - if (ferror (f)) - { - strcpy (buf, "error on connection"); - return NOTOK; - } - - if (c == EOF && p == buf) - { - strcpy (buf, "connection closed by foreign host"); - return DONE; - } - - *p = NULL; - if (*--p == '\n') *p = NULL; - if (*--p == '\r') *p = NULL; - return OK; -} +/* Do this as a macro instead of using strcmp to save on execution time. */ +#define IS_FROM_LINE(a) ((a[0] == 'F') \ + && (a[1] == 'r') \ + && (a[2] == 'o') \ + && (a[3] == 'm') \ + && (a[4] == ' ')) -multiline (buf, n, f) - char *buf; - register int n; - FILE *f; -{ - if (getline (buf, n, f) != OK) return NOTOK; - if (*buf == '.') - { - if (*(buf+1) == NULL) - return DONE; - else - strcpy (buf, buf+1); - } - return OK; -} - -char * -get_errmsg () -{ - return strerror (errno); -} - -putline (buf, err, f) - char *buf; - char *err; - FILE *f; -{ - fprintf (f, "%s\r\n", buf); - fflush (f); - if (ferror (f)) - { - strcpy (err, "lost connection"); - return NOTOK; - } - return OK; -} - +int mbx_write (line, mbf) char *line; FILE *mbf; { - fputs (line, mbf); - fputc (0x0a, mbf); + if (IS_FROM_LINE (line)) + { + if (fputc ('>', mbf) == EOF) + return (NOTOK); + } + if (fputs (line, mbf) == EOF) + return (NOTOK); + if (fputc (0x0a, mbf) == EOF) + return (NOTOK); + return (OK); } +int mbx_delimit_begin (mbf) FILE *mbf; { - fputs ("\f\n0, unseen,,\n", mbf); + if (fputs ("\f\n0, unseen,,\n", mbf) == EOF) + return (NOTOK); + return (OK); } mbx_delimit_end (mbf) FILE *mbf; { - putc ('\037', mbf); + if (putc ('\037', mbf) == EOF) + return (NOTOK); + return (OK); } #endif /* MAIL_USE_POP */ diff -r 578fd4947a72 -r 7d55a9ba150c lib-src/pop.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib-src/pop.c Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,1547 @@ +/* pop.c: client routines for talking to a POP3-protocol post-office server + Copyright (c) 1991, 1993, 1996 Free Software Foundation, Inc. + Written by Jonathan Kamens, jik@security.ov.com. + +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, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +#define NO_SHORTNAMES /* Tell config not to load remap.h */ +#include <../src/config.h> +#else +#define MAIL_USE_POP +#endif + +#ifdef MAIL_USE_POP + +#ifdef HAVE_CONFIG_H +/* Cancel these substitutions made in config.h */ +#undef open +#undef read +#undef write +#undef close +#endif + +#include +#ifdef WINDOWSNT +#include "ntlib.h" +#include +#undef SOCKET_ERROR +#define RECV(s,buf,len,flags) recv(s,buf,len,flags) +#define SEND(s,buf,len,flags) send(s,buf,len,flags) +#define CLOSESOCKET(s) closesocket(s) +#else +#include +#include +#define RECV(s,buf,len,flags) read(s,buf,len) +#define SEND(s,buf,len,flags) write(s,buf,len) +#define CLOSESOCKET(s) close(s) +#endif +#include + +#ifdef sun +#include +#endif /* sun */ + +#ifdef HESIOD +#include +/* + * It really shouldn't be necessary to put this declaration here, but + * the version of hesiod.h that Athena has installed in release 7.2 + * doesn't declare this function; I don't know if the 7.3 version of + * hesiod.h does. + */ +extern struct servent *hes_getservbyname (/* char *, char * */); +#endif + +#include +#include +#include +#include + +#ifdef KERBEROS +#ifndef KRB5 +#include +#include +#else /* KRB5 */ +#include +#include +#include +#endif /* KRB5 */ +#endif /* KERBEROS */ + +extern char *getenv (/* char * */); +extern char *getlogin (/* void */); +extern char *getpass (/* char * */); +extern char *strerror (/* int */); +extern char *index (); + +#ifdef KERBEROS +#ifndef KRB5 +extern int krb_sendauth (/* long, int, KTEXT, char *, char *, char *, + u_long, MSG_DAT *, CREDENTIALS *, Key_schedule, + struct sockaddr_in *, struct sockaddr_in *, + char * */); +extern char *krb_realmofhost (/* char * */); +#endif /* ! KRB5 */ +#endif /* KERBEROS */ + +#ifndef WINDOWSNT +#if !defined(HAVE_H_ERRNO) || !defined(HAVE_CONFIG_H) +extern int h_errno; +#endif +#endif + +static int socket_connection (/* char *, int */); +static char *getline (/* popserver */); +static int sendline (/* popserver, char * */); +static int fullwrite (/* int, char *, int */); +static int getok (/* popserver */); +#if 0 +static int gettermination (/* popserver */); +#endif +static void pop_trash (/* popserver */); +static char *find_crlf (/* char * */); + +#define ERROR_MAX 80 /* a pretty arbitrary size */ +#define POP_PORT 110 +#define KPOP_PORT 1109 +#ifdef WINDOWSNT +#define POP_SERVICE "pop3" /* we don't want the POP2 port! */ +#else +#define POP_SERVICE "pop" +#endif +#ifdef KERBEROS +#ifdef KRB5 +#define KPOP_SERVICE "k5pop"; +#else +#define KPOP_SERVICE "kpop" +#endif +#endif + +char pop_error[ERROR_MAX]; +int pop_debug = 0; + +#ifndef min +#define min(a,b) (((a) < (b)) ? (a) : (b)) +#endif + +/* + * Function: pop_open (char *host, char *username, char *password, + * int flags) + * + * Purpose: Establishes a connection with a post-office server, and + * completes the authorization portion of the session. + * + * Arguments: + * host The server host with which the connection should be + * established. Optional. If omitted, internal + * heuristics will be used to determine the server host, + * if possible. + * username + * The username of the mail-drop to access. Optional. + * If omitted, internal heuristics will be used to + * determine the username, if possible. + * password + * The password to use for authorization. If omitted, + * internal heuristics will be used to determine the + * password, if possible. + * flags A bit mask containing flags controlling certain + * functions of the routine. Valid flags are defined in + * the file pop.h + * + * Return value: Upon successful establishment of a connection, a + * non-null popserver will be returned. Otherwise, null will be + * returned, and the string variable pop_error will contain an + * explanation of the error. + */ +popserver +pop_open (host, username, password, flags) + char *host; + char *username; + char *password; + int flags; +{ + int sock; + popserver server; + + /* Determine the user name */ + if (! username) + { + username = getenv ("USER"); + if (! (username && *username)) + { + username = getlogin (); + if (! (username && *username)) + { + struct passwd *passwd; + passwd = getpwuid (getuid ()); + if (passwd && passwd->pw_name && *passwd->pw_name) + { + username = passwd->pw_name; + } + else + { + strcpy (pop_error, "Could not determine username"); + return (0); + } + } + } + } + + /* + * Determine the mail host. + */ + + if (! host) + { + host = getenv ("MAILHOST"); + } + +#ifdef HESIOD + if ((! host) && (! (flags & POP_NO_HESIOD))) + { + struct hes_postoffice *office; + office = hes_getmailhost (username); + if (office && office->po_type && (! strcmp (office->po_type, "POP")) + && office->po_name && *office->po_name && office->po_host + && *office->po_host) + { + host = office->po_host; + username = office->po_name; + } + } +#endif + +#ifdef MAILHOST + if (! host) + { + host = MAILHOST; + } +#endif + + if (! host) + { + strcpy (pop_error, "Could not determine POP server"); + return (0); + } + + /* Determine the password */ +#ifdef KERBEROS +#define DONT_NEED_PASSWORD (! (flags & POP_NO_KERBEROS)) +#else +#define DONT_NEED_PASSWORD 0 +#endif + + if ((! password) && (! DONT_NEED_PASSWORD)) + { + if (! (flags & POP_NO_GETPASS)) + { + password = getpass ("Enter POP password:"); + } + if (! password) + { + strcpy (pop_error, "Could not determine POP password"); + return (0); + } + } + if (password) + flags |= POP_NO_KERBEROS; + else + password = username; + + sock = socket_connection (host, flags); + if (sock == -1) + return (0); + + server = (popserver) malloc (sizeof (struct _popserver)); + if (! server) + { + strcpy (pop_error, "Out of memory in pop_open"); + return (0); + } + server->buffer = (char *) malloc (GETLINE_MIN); + if (! server->buffer) + { + strcpy (pop_error, "Out of memory in pop_open"); + free ((char *) server); + return (0); + } + + server->file = sock; + server->data = 0; + server->buffer_index = 0; + server->buffer_size = GETLINE_MIN; + server->in_multi = 0; + server->trash_started = 0; + + if (getok (server)) + return (0); + + /* + * I really shouldn't use the pop_error variable like this, but.... + */ + if (strlen (username) > ERROR_MAX - 6) + { + pop_close (server); + strcpy (pop_error, + "Username too long; recompile pop.c with larger ERROR_MAX"); + return (0); + } + sprintf (pop_error, "USER %s", username); + + if (sendline (server, pop_error) || getok (server)) + { + return (0); + } + + if (strlen (password) > ERROR_MAX - 6) + { + pop_close (server); + strcpy (pop_error, + "Password too long; recompile pop.c with larger ERROR_MAX"); + return (0); + } + sprintf (pop_error, "PASS %s", password); + + if (sendline (server, pop_error) || getok (server)) + { + return (0); + } + + return (server); +} + +/* + * Function: pop_stat + * + * Purpose: Issue the STAT command to the server and return (in the + * value parameters) the number of messages in the maildrop and + * the total size of the maildrop. + * + * Return value: 0 on success, or non-zero with an error in pop_error + * in failure. + * + * Side effects: On failure, may make further operations on the + * connection impossible. + */ +int +pop_stat (server, count, size) + popserver server; + int *count; + int *size; +{ + char *fromserver; + + if (server->in_multi) + { + strcpy (pop_error, "In multi-line query in pop_stat"); + return (-1); + } + + if (sendline (server, "STAT") || (! (fromserver = getline (server)))) + return (-1); + + if (strncmp (fromserver, "+OK ", 4)) + { + if (0 == strncmp (fromserver, "-ERR", 4)) + { + strncpy (pop_error, fromserver, ERROR_MAX); + } + else + { + strcpy (pop_error, + "Unexpected response from POP server in pop_stat"); + pop_trash (server); + } + return (-1); + } + + *count = atoi (&fromserver[4]); + + fromserver = index (&fromserver[4], ' '); + if (! fromserver) + { + strcpy (pop_error, + "Badly formatted response from server in pop_stat"); + pop_trash (server); + return (-1); + } + + *size = atoi (fromserver + 1); + + return (0); +} + +/* + * Function: pop_list + * + * Purpose: Performs the POP "list" command and returns (in value + * parameters) two malloc'd zero-terminated arrays -- one of + * message IDs, and a parallel one of sizes. + * + * Arguments: + * server The pop connection to talk to. + * message The number of the one message about which to get + * information, or 0 to get information about all + * messages. + * + * Return value: 0 on success, non-zero with error in pop_error on + * failure. + * + * Side effects: On failure, may make further operations on the + * connection impossible. + */ +int +pop_list (server, message, IDs, sizes) + popserver server; + int message; + int **IDs; + int **sizes; +{ + int how_many, i; + char *fromserver; + + if (server->in_multi) + { + strcpy (pop_error, "In multi-line query in pop_list"); + return (-1); + } + + if (message) + how_many = 1; + else + { + int count, size; + if (pop_stat (server, &count, &size)) + return (-1); + how_many = count; + } + + *IDs = (int *) malloc ((how_many + 1) * sizeof (int)); + *sizes = (int *) malloc ((how_many + 1) * sizeof (int)); + if (! (*IDs && *sizes)) + { + strcpy (pop_error, "Out of memory in pop_list"); + return (-1); + } + + if (message) + { + sprintf (pop_error, "LIST %d", message); + if (sendline (server, pop_error)) + { + free ((char *) *IDs); + free ((char *) *sizes); + return (-1); + } + if (! (fromserver = getline (server))) + { + free ((char *) *IDs); + free ((char *) *sizes); + return (-1); + } + if (strncmp (fromserver, "+OK ", 4)) + { + if (! strncmp (fromserver, "-ERR", 4)) + strncpy (pop_error, fromserver, ERROR_MAX); + else + { + strcpy (pop_error, + "Unexpected response from server in pop_list"); + pop_trash (server); + } + free ((char *) *IDs); + free ((char *) *sizes); + return (-1); + } + (*IDs)[0] = atoi (&fromserver[4]); + fromserver = index (&fromserver[4], ' '); + if (! fromserver) + { + strcpy (pop_error, + "Badly formatted response from server in pop_list"); + pop_trash (server); + free ((char *) *IDs); + free ((char *) *sizes); + return (-1); + } + (*sizes)[0] = atoi (fromserver); + (*IDs)[1] = (*sizes)[1] = 0; + return (0); + } + else + { + if (pop_multi_first (server, "LIST", &fromserver)) + { + free ((char *) *IDs); + free ((char *) *sizes); + return (-1); + } + for (i = 0; i < how_many; i++) + { + if (pop_multi_next (server, &fromserver)) + { + free ((char *) *IDs); + free ((char *) *sizes); + return (-1); + } + (*IDs)[i] = atoi (fromserver); + fromserver = index (fromserver, ' '); + if (! fromserver) + { + strcpy (pop_error, + "Badly formatted response from server in pop_list"); + free ((char *) *IDs); + free ((char *) *sizes); + pop_trash (server); + return (-1); + } + (*sizes)[i] = atoi (fromserver); + } + if (pop_multi_next (server, &fromserver)) + { + free ((char *) *IDs); + free ((char *) *sizes); + return (-1); + } + else if (fromserver) + { + strcpy (pop_error, + "Too many response lines from server in pop_list"); + free ((char *) *IDs); + free ((char *) *sizes); + return (-1); + } + (*IDs)[i] = (*sizes)[i] = 0; + return (0); + } +} + +/* + * Function: pop_retrieve + * + * Purpose: Retrieve a specified message from the maildrop. + * + * Arguments: + * server The server to retrieve from. + * message The message number to retrieve. + * markfrom + * If true, then mark the string "From " at the beginning + * of lines with '>'. + * + * Return value: A string pointing to the message, if successful, or + * null with pop_error set if not. + * + * Side effects: May kill connection on error. + */ +char * +pop_retrieve (server, message, markfrom) + popserver server; + int message; + int markfrom; +{ + int *IDs, *sizes, bufsize, fromcount = 0, cp = 0; + char *ptr, *fromserver; + int ret; + + if (server->in_multi) + { + strcpy (pop_error, "In multi-line query in pop_retrieve"); + return (0); + } + + if (pop_list (server, message, &IDs, &sizes)) + return (0); + + if (pop_retrieve_first (server, message, &fromserver)) + { + return (0); + } + + /* + * The "5" below is an arbitrary constant -- I assume that if + * there are "From" lines in the text to be marked, there + * probably won't be more than 5 of them. If there are, I + * allocate more space for them below. + */ + bufsize = sizes[0] + (markfrom ? 5 : 0); + ptr = (char *)malloc (bufsize); + free ((char *) IDs); + free ((char *) sizes); + + if (! ptr) + { + strcpy (pop_error, "Out of memory in pop_retrieve"); + pop_retrieve_flush (server); + return (0); + } + + while (! (ret = pop_retrieve_next (server, &fromserver))) + { + int linesize; + + if (! fromserver) + { + ptr[cp] = '\0'; + return (ptr); + } + if (markfrom && fromserver[0] == 'F' && fromserver[1] == 'r' && + fromserver[2] == 'o' && fromserver[3] == 'm' && + fromserver[4] == ' ') + { + if (++fromcount == 5) + { + bufsize += 5; + ptr = (char *)realloc (ptr, bufsize); + if (! ptr) + { + strcpy (pop_error, "Out of memory in pop_retrieve"); + pop_retrieve_flush (server); + return (0); + } + fromcount = 0; + } + ptr[cp++] = '>'; + } + linesize = strlen (fromserver); + bcopy (fromserver, &ptr[cp], linesize); + cp += linesize; + ptr[cp++] = '\n'; + } + + if (ret) + { + free (ptr); + return (0); + } +} + +int +pop_retrieve_first (server, message, response) + popserver server; + int message; + char **response; +{ + sprintf (pop_error, "RETR %d", message); + return (pop_multi_first (server, pop_error, response)); +} + +int +pop_retrieve_next (server, line) + popserver server; + char **line; +{ + return (pop_multi_next (server, line)); +} + +int +pop_retrieve_flush (server) + popserver server; +{ + return (pop_multi_flush (server)); +} + +int +pop_top_first (server, message, lines, response) + popserver server; + int message, lines; + char **response; +{ + sprintf (pop_error, "TOP %d %d", message, lines); + return (pop_multi_first (server, pop_error, response)); +} + +int +pop_top_next (server, line) + popserver server; + char **line; +{ + return (pop_multi_next (server, line)); +} + +int +pop_top_flush (server) + popserver server; +{ + return (pop_multi_flush (server)); +} + +int +pop_multi_first (server, command, response) + popserver server; + char *command; + char **response; +{ + if (server->in_multi) + { + strcpy (pop_error, + "Already in multi-line query in pop_multi_first"); + return (-1); + } + + if (sendline (server, command) || (! (*response = getline (server)))) + { + return (-1); + } + + if (0 == strncmp (*response, "-ERR", 4)) + { + strncpy (pop_error, *response, ERROR_MAX); + return (-1); + } + else if (0 == strncmp (*response, "+OK", 3)) + { + for (*response += 3; **response == ' '; (*response)++) /* empty */; + server->in_multi = 1; + return (0); + } + else + { + strcpy (pop_error, + "Unexpected response from server in pop_multi_first"); + return (-1); + } +} + +int +pop_multi_next (server, line) + popserver server; + char **line; +{ + char *fromserver; + + if (! server->in_multi) + { + strcpy (pop_error, "Not in multi-line query in pop_multi_next"); + return (-1); + } + + fromserver = getline (server); + if (! fromserver) + { + return (-1); + } + + if (fromserver[0] == '.') + { + if (! fromserver[1]) + { + *line = 0; + server->in_multi = 0; + return (0); + } + else + { + *line = fromserver + 1; + return (0); + } + } + else + { + *line = fromserver; + return (0); + } +} + +int +pop_multi_flush (server) + popserver server; +{ + char *line; + + if (! server->in_multi) + { + return (0); + } + + while (! pop_multi_next (server, &line)) + { + if (! line) + { + return (0); + } + } + + return (-1); +} + +/* Function: pop_delete + * + * Purpose: Delete a specified message. + * + * Arguments: + * server Server from which to delete the message. + * message Message to delete. + * + * Return value: 0 on success, non-zero with error in pop_error + * otherwise. + */ +int +pop_delete (server, message) + popserver server; + int message; +{ + if (server->in_multi) + { + strcpy (pop_error, "In multi-line query in pop_delete"); + return (-1); + } + + sprintf (pop_error, "DELE %d", message); + + if (sendline (server, pop_error) || getok (server)) + return (-1); + + return (0); +} + +/* + * Function: pop_noop + * + * Purpose: Send a noop command to the server. + * + * Argument: + * server The server to send to. + * + * Return value: 0 on success, non-zero with error in pop_error + * otherwise. + * + * Side effects: Closes connection on error. + */ +int +pop_noop (server) + popserver server; +{ + if (server->in_multi) + { + strcpy (pop_error, "In multi-line query in pop_noop"); + return (-1); + } + + if (sendline (server, "NOOP") || getok (server)) + return (-1); + + return (0); +} + +/* + * Function: pop_last + * + * Purpose: Find out the highest seen message from the server. + * + * Arguments: + * server The server. + * + * Return value: If successful, the highest seen message, which is + * greater than or equal to 0. Otherwise, a negative number with + * the error explained in pop_error. + * + * Side effects: Closes the connection on error. + */ +int +pop_last (server) + popserver server; +{ + char *fromserver; + + if (server->in_multi) + { + strcpy (pop_error, "In multi-line query in pop_last"); + return (-1); + } + + if (sendline (server, "LAST")) + return (-1); + + if (! (fromserver = getline (server))) + return (-1); + + if (! strncmp (fromserver, "-ERR", 4)) + { + strncpy (pop_error, fromserver, ERROR_MAX); + return (-1); + } + else if (strncmp (fromserver, "+OK ", 4)) + { + strcpy (pop_error, "Unexpected response from server in pop_last"); + pop_trash (server); + return (-1); + } + else + { + return (atoi (&fromserver[4])); + } +} + +/* + * Function: pop_reset + * + * Purpose: Reset the server to its initial connect state + * + * Arguments: + * server The server. + * + * Return value: 0 for success, non-0 with error in pop_error + * otherwise. + * + * Side effects: Closes the connection on error. + */ +int +pop_reset (server) + popserver server; +{ + if (pop_retrieve_flush (server)) + { + return (-1); + } + + if (sendline (server, "RSET") || getok (server)) + return (-1); + + return (0); +} + +/* + * Function: pop_quit + * + * Purpose: Quit the connection to the server, + * + * Arguments: + * server The server to quit. + * + * Return value: 0 for success, non-zero otherwise with error in + * pop_error. + * + * Side Effects: The popserver passed in is unusable after this + * function is called, even if an error occurs. + */ +int +pop_quit (server) + popserver server; +{ + int ret = 0; + + if (server->file >= 0) + { + if (pop_retrieve_flush (server)) + { + ret = -1; + } + + if (sendline (server, "QUIT") || getok (server)) + { + ret = -1; + } + + close (server->file); + } + + if (server->buffer) + free (server->buffer); + free ((char *) server); + + return (ret); +} + +#ifdef WINDOWSNT +static int have_winsock = 0; +#endif + +/* + * Function: socket_connection + * + * Purpose: Opens the network connection with the mail host, without + * doing any sort of I/O with it or anything. + * + * Arguments: + * host The host to which to connect. + * flags Option flags. + * + * Return value: A file descriptor indicating the connection, or -1 + * indicating failure, in which case an error has been copied + * into pop_error. + */ +static int +socket_connection (host, flags) + char *host; + int flags; +{ + struct hostent *hostent; + struct servent *servent; + struct sockaddr_in addr; + char found_port = 0; + char *service; + int sock; +#ifdef KERBEROS +#ifdef KRB5 + krb5_error_code rem; + krb5_ccache ccdef; + krb5_principal client, server; + krb5_error *err_ret; + register char *cp; +#else + KTEXT ticket; + MSG_DAT msg_data; + CREDENTIALS cred; + Key_schedule schedule; + int rem; +#endif /* KRB5 */ +#endif /* KERBEROS */ + + int try_count = 0; + +#ifdef WINDOWSNT + { + WSADATA winsockData; + if (WSAStartup (0x101, &winsockData) == 0) + have_winsock = 1; + } +#endif + + do + { + hostent = gethostbyname (host); + try_count++; + if ((! hostent) && ((h_errno != TRY_AGAIN) || (try_count == 5))) + { + strcpy (pop_error, "Could not determine POP server's address"); + return (-1); + } + } while (! hostent); + + bzero ((char *) &addr, sizeof (addr)); + addr.sin_family = AF_INET; + +#ifdef KERBEROS + service = (flags & POP_NO_KERBEROS) ? POP_SERVICE : KPOP_SERVICE; +#else + service = POP_SERVICE; +#endif + +#ifdef HESIOD + if (! (flags & POP_NO_HESIOD)) + { + servent = hes_getservbyname (service, "tcp"); + if (servent) + { + addr.sin_port = servent->s_port; + found_port = 1; + } + } +#endif + if (! found_port) + { + servent = getservbyname (service, "tcp"); + if (servent) + { + addr.sin_port = servent->s_port; + } + else + { +#ifdef KERBEROS + addr.sin_port = htons ((flags & POP_NO_KERBEROS) ? + POP_PORT : KPOP_PORT); +#else + addr.sin_port = htons (POP_PORT); +#endif + } + } + +#define SOCKET_ERROR "Could not create socket for POP connection: " + + sock = socket (PF_INET, SOCK_STREAM, 0); + if (sock < 0) + { + strcpy (pop_error, SOCKET_ERROR); + strncat (pop_error, strerror (errno), + ERROR_MAX - sizeof (SOCKET_ERROR)); + return (-1); + + } + + while (*hostent->h_addr_list) + { + bcopy (*hostent->h_addr_list, (char *) &addr.sin_addr, + hostent->h_length); + if (! connect (sock, (struct sockaddr *) &addr, sizeof (addr))) + break; + hostent->h_addr_list++; + } + +#define CONNECT_ERROR "Could not connect to POP server: " + + if (! *hostent->h_addr_list) + { + CLOSESOCKET (sock); + strcpy (pop_error, CONNECT_ERROR); + strncat (pop_error, strerror (errno), + ERROR_MAX - sizeof (CONNECT_ERROR)); + return (-1); + + } + +#ifdef KERBEROS +#define KRB_ERROR "Kerberos error connecting to POP server: " + if (! (flags & POP_NO_KERBEROS)) + { +#ifdef KRB5 + krb5_init_ets (); + + if (rem = krb5_cc_default (&ccdef)) + { + krb5error: + strcpy (pop_error, KRB_ERROR); + strncat (pop_error, error_message (rem), + ERROR_MAX - sizeof(KRB_ERROR)); + CLOSESOCKET (sock); + return (-1); + } + + if (rem = krb5_cc_get_principal (ccdef, &client)) + { + goto krb5error; + } + + for (cp = hostent->h_name; *cp; cp++) + { + if (isupper (*cp)) + { + *cp = tolower (*cp); + } + } + + if (rem = krb5_sname_to_principal (hostent->h_name, POP_SERVICE, + FALSE, &server)) + { + goto krb5error; + } + + rem = krb5_sendauth ((krb5_pointer) &sock, "KPOPV1.0", client, server, + AP_OPTS_MUTUAL_REQUIRED, + 0, /* no checksum */ + 0, /* no creds, use ccache instead */ + ccdef, + 0, /* don't need seq # */ + 0, /* don't need subsession key */ + &err_ret, + 0); /* don't need reply */ + krb5_free_principal (server); + if (rem) + { + if (err_ret && err_ret->text.length) + { + strcpy (pop_error, KRB_ERROR); + strncat (pop_error, error_message (rem), + ERROR_MAX - sizeof (KRB_ERROR)); + strncat (pop_error, " [server says '", + ERROR_MAX - strlen (pop_error) - 1); + strncat (pop_error, err_ret->text.data, + min (ERROR_MAX - strlen (pop_error) - 1, + err_ret->text.length)); + strncat (pop_error, "']", + ERROR_MAX - strlen (pop_error) - 1); + } + else + { + strcpy (pop_error, KRB_ERROR); + strncat (pop_error, error_message (rem), + ERROR_MAX - sizeof (KRB_ERROR)); + } + if (err_ret) + krb5_free_error (err_ret); + + CLOSESOCKET (sock); + return (-1); + } +#else /* ! KRB5 */ + ticket = (KTEXT) malloc (sizeof (KTEXT_ST)); + rem = krb_sendauth (0L, sock, ticket, "pop", hostent->h_name, + (char *) krb_realmofhost (hostent->h_name), + (unsigned long) 0, &msg_data, &cred, schedule, + (struct sockaddr_in *) 0, + (struct sockaddr_in *) 0, + "KPOPV0.1"); + free ((char *) ticket); + if (rem != KSUCCESS) + { + strcpy (pop_error, KRB_ERROR); + strncat (pop_error, krb_err_txt[rem], + ERROR_MAX - sizeof (KRB_ERROR)); + CLOSESOCKET (sock); + return (-1); + } +#endif /* KRB5 */ + } +#endif /* KERBEROS */ + + return (sock); +} /* socket_connection */ + +/* + * Function: getline + * + * Purpose: Get a line of text from the connection and return a + * pointer to it. The carriage return and linefeed at the end of + * the line are stripped, but periods at the beginnings of lines + * are NOT dealt with in any special way. + * + * Arguments: + * server The server from which to get the line of text. + * + * Returns: A non-null pointer if successful, or a null pointer on any + * error, with an error message copied into pop_error. + * + * Notes: The line returned is overwritten with each call to getline. + * + * Side effects: Closes the connection on error. + */ +static char * +getline (server) + popserver server; +{ +#define GETLINE_ERROR "Error reading from server: " + + int ret; + int search_offset = 0; + + if (server->data) + { + char *cp = find_crlf (server->buffer + server->buffer_index); + if (cp) + { + int found; + int data_used; + + found = server->buffer_index; + data_used = (cp + 2) - server->buffer - found; + + *cp = '\0'; /* terminate the string to be returned */ + server->data -= data_used; + server->buffer_index += data_used; + + if (pop_debug) + fprintf (stderr, "<<< %s\n", server->buffer + found); + return (server->buffer + found); + } + else + { + bcopy (server->buffer + server->buffer_index, + server->buffer, server->data); + /* Record the fact that we've searched the data already in + the buffer for a CRLF, so that when we search below, we + don't have to search the same data twice. There's a "- + 1" here to account for the fact that the last character + of the data we have may be the CR of a CRLF pair, of + which we haven't read the second half yet, so we may have + to search it again when we read more data. */ + search_offset = server->data - 1; + server->buffer_index = 0; + } + } + else + { + server->buffer_index = 0; + } + + while (1) + { + /* There's a "- 1" here to leave room for the null that we put + at the end of the read data below. We put the null there so + that find_crlf knows where to stop when we call it. */ + if (server->data == server->buffer_size - 1) + { + server->buffer_size += GETLINE_INCR; + server->buffer = (char *)realloc (server->buffer, server->buffer_size); + if (! server->buffer) + { + strcpy (pop_error, "Out of memory in getline"); + pop_trash (server); + return (0); + } + } + ret = RECV (server->file, server->buffer + server->data, + server->buffer_size - server->data - 1, 0); + if (ret < 0) + { + strcpy (pop_error, GETLINE_ERROR); + strncat (pop_error, strerror (errno), + ERROR_MAX - sizeof (GETLINE_ERROR)); + pop_trash (server); + return (0); + } + else if (ret == 0) + { + strcpy (pop_error, "Unexpected EOF from server in getline"); + pop_trash (server); + return (0); + } + else + { + char *cp; + server->data += ret; + server->buffer[server->data] = '\0'; + + cp = find_crlf (server->buffer + search_offset); + if (cp) + { + int data_used = (cp + 2) - server->buffer; + *cp = '\0'; + server->data -= data_used; + server->buffer_index = data_used; + + if (pop_debug) + fprintf (stderr, "<<< %s\n", server->buffer); + return (server->buffer); + } + search_offset += ret; + } + } + + /* NOTREACHED */ +} + +/* + * Function: sendline + * + * Purpose: Sends a line of text to the POP server. The line of text + * passed into this function should NOT have the carriage return + * and linefeed on the end of it. Periods at beginnings of lines + * will NOT be treated specially by this function. + * + * Arguments: + * server The server to which to send the text. + * line The line of text to send. + * + * Return value: Upon successful completion, a value of 0 will be + * returned. Otherwise, a non-zero value will be returned, and + * an error will be copied into pop_error. + * + * Side effects: Closes the connection on error. + */ +static int +sendline (server, line) + popserver server; + char *line; +{ +#define SENDLINE_ERROR "Error writing to POP server: " + int ret; + + ret = fullwrite (server->file, line, strlen (line)); + if (ret >= 0) + { /* 0 indicates that a blank line was written */ + ret = fullwrite (server->file, "\r\n", 2); + } + + if (ret < 0) + { + pop_trash (server); + strcpy (pop_error, SENDLINE_ERROR); + strncat (pop_error, strerror (errno), + ERROR_MAX - sizeof (SENDLINE_ERROR)); + return (ret); + } + + if (pop_debug) + fprintf (stderr, ">>> %s\n", line); + + return (0); +} + +/* + * Procedure: fullwrite + * + * Purpose: Just like write, but keeps trying until the entire string + * has been written. + * + * Return value: Same as write. Pop_error is not set. + */ +static int +fullwrite (fd, buf, nbytes) + int fd; + char *buf; + int nbytes; +{ + char *cp; + int ret; + + cp = buf; + while ((ret = SEND (fd, cp, nbytes, 0)) > 0) + { + cp += ret; + nbytes -= ret; + } + + return (ret); +} + +/* + * Procedure getok + * + * Purpose: Reads a line from the server. If the return indicator is + * positive, return with a zero exit status. If not, return with + * a negative exit status. + * + * Arguments: + * server The server to read from. + * + * Returns: 0 for success, else for failure and puts error in pop_error. + * + * Side effects: On failure, may make the connection unusable. + */ +static int +getok (server) + popserver server; +{ + char *fromline; + + if (! (fromline = getline (server))) + { + return (-1); + } + + if (! strncmp (fromline, "+OK", 3)) + return (0); + else if (! strncmp (fromline, "-ERR", 4)) + { + strncpy (pop_error, fromline, ERROR_MAX); + pop_error[ERROR_MAX-1] = '\0'; + return (-1); + } + else + { + strcpy (pop_error, + "Unexpected response from server; expecting +OK or -ERR"); + pop_trash (server); + return (-1); + } +} + +#if 0 +/* + * Function: gettermination + * + * Purpose: Gets the next line and verifies that it is a termination + * line (nothing but a dot). + * + * Return value: 0 on success, non-zero with pop_error set on error. + * + * Side effects: Closes the connection on error. + */ +static int +gettermination (server) + popserver server; +{ + char *fromserver; + + fromserver = getline (server); + if (! fromserver) + return (-1); + + if (strcmp (fromserver, ".")) + { + strcpy (pop_error, + "Unexpected response from server in gettermination"); + pop_trash (server); + return (-1); + } + + return (0); +} +#endif + +/* + * Function pop_close + * + * Purpose: Close a pop connection, sending a "RSET" command to try to + * preserve any changes that were made and a "QUIT" command to + * try to get the server to quit, but ignoring any responses that + * are received. + * + * Side effects: The server is unusable after this function returns. + * Changes made to the maildrop since the session was started (or + * since the last pop_reset) may be lost. + */ +void +pop_close (server) + popserver server; +{ + pop_trash (server); + free ((char *) server); + + return; +} + +/* + * Function: pop_trash + * + * Purpose: Like pop_close or pop_quit, but doesn't deallocate the + * memory associated with the server. It is legal to call + * pop_close or pop_quit after this function has been called. + */ +static void +pop_trash (server) + popserver server; +{ + if (server->file >= 0) + { + /* avoid recursion; sendline can call pop_trash */ + if (server->trash_started) + return; + server->trash_started = 1; + + sendline (server, "RSET"); + sendline (server, "QUIT"); + + CLOSESOCKET (server->file); + server->file = -1; + if (server->buffer) + { + free (server->buffer); + server->buffer = 0; + } + } + +#ifdef WINDOWSNT + if (have_winsock) + WSACleanup (); +#endif +} + +/* Return a pointer to the first CRLF in IN_STRING, + or 0 if it does not contain one. */ + +static char * +find_crlf (in_string) + char *in_string; +{ + while (1) + { + if (! *in_string) + return (0); + else if (*in_string == '\r') + { + if (*++in_string == '\n') + return (in_string - 1); + } + else + in_string++; + } + /* NOTREACHED */ +} + +#endif /* MAIL_USE_POP */ diff -r 578fd4947a72 -r 7d55a9ba150c lib-src/pop.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib-src/pop.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,82 @@ +/* pop.h: Header file for the "pop.c" client POP3 protocol. + Copyright (c) 1991,1993 Free Software Foundation, Inc. + Written by Jonathan Kamens, jik@security.ov.com. + +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, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#include + +#define GETLINE_MIN 1024 /* the getline buffer starts out this */ + /* size */ +#define GETLINE_INCR 1024 /* the getline buffer is grown by this */ + /* size when it needs to grow */ + +extern char pop_error[]; +extern int pop_debug; + +struct _popserver +{ + int file, data; + char *buffer; + int buffer_size, buffer_index; + int in_multi; + int trash_started; +}; + +typedef struct _popserver *popserver; + +/* + * Valid flags for the pop_open function. + */ + +#define POP_NO_KERBEROS (1<<0) +#define POP_NO_HESIOD (1<<1) +#define POP_NO_GETPASS (1<<2) + +#ifdef __STDC__ +#define _ARGS(a) a +#else +#define _ARGS(a) () +#endif + +extern popserver pop_open _ARGS((char *host, char *username, char *password, + int flags)); +extern int pop_stat _ARGS((popserver server, int *count, int *size)); +extern int pop_list _ARGS((popserver server, int message, int **IDs, + int **size)); +extern char *pop_retrieve _ARGS((popserver server, int message, int markfrom)); +extern int pop_retrieve_first _ARGS((popserver server, int message, + char **response)); +extern int pop_retrieve_next _ARGS((popserver server, char **line)); +extern int pop_retrieve_flush _ARGS((popserver server)); +extern int pop_top_first _ARGS((popserver server, int message, int lines, + char **response)); +extern int pop_top_next _ARGS((popserver server, char **line)); +extern int pop_top_flush _ARGS((popserver server)); +extern int pop_multi_first _ARGS((popserver server, char *command, + char **response)); +extern int pop_multi_next _ARGS((popserver server, char **line)); +extern int pop_multi_flush _ARGS((popserver server)); +extern int pop_delete _ARGS((popserver server, int message)); +extern int pop_noop _ARGS((popserver server)); +extern int pop_last _ARGS((popserver server)); +extern int pop_reset _ARGS((popserver server)); +extern int pop_quit _ARGS((popserver server)); +extern void pop_close _ARGS((popserver)); + +#undef _ARGS diff -r 578fd4947a72 -r 7d55a9ba150c lib-src/send-pr --- a/lib-src/send-pr Mon Aug 13 09:23:08 2007 +0200 +++ b/lib-src/send-pr Mon Aug 13 09:24:17 2007 +0200 @@ -24,16 +24,17 @@ VERSION=3.101 # The submitter-id for your site. -SUBMITTER=unknown +SUBMITTER=net # Where the GNATS directory lives, if at all. [ -z "$GNATS_ROOT" ] && GNATS_ROOT=/usr/lib/gnats/gnats-db # The default mail address for PR submissions. -GNATS_ADDR=bugs@altair.xemacs.org +GNATS_ADDR=bugs@xemacs.org # Where the gnats category tree lives. +[ -z "$DATADIR" ] && DATADIR=/usr/share # If we've been moved around, try using GCC_EXEC_PREFIX. @@ -48,7 +49,7 @@ DEFAULT_ORGANIZATION="XEmacs Users" # The default site to look for. -GNATS_SITE=altair.xemacs.org +GNATS_SITE=xemacs.org # Newer config information? [ -f ${GNATS_ROOT}/gnats-adm/config ] && . ${GNATS_ROOT}/gnats-adm/config diff -r 578fd4947a72 -r 7d55a9ba150c lisp/ChangeLog --- a/lisp/ChangeLog Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/ChangeLog Mon Aug 13 09:24:17 2007 +0200 @@ -1,3 +1,38 @@ +Sat Apr 5 09:32:43 1997 Steven L Baur + + * utils/finder-inf.el: Regenerated. + + * utils/finder.el (finder-known-keywords): Add mule keyword. + +Tue Apr 1 14:08:04 1997 Steven L Baur + + * prim/winnt.el: New file. Derived from Emacs 19.34, adapted by + Marc Paquette. + + * prim/faces.el (set-face-stipple): Allow usage of a pixmap + (suggested by Per Abrahamsen). + + * mule/canna.el (running-xemacs): Move to the top. + + * prim/cmdloop.el (y-or-n-p-minibuf): Add protection in case user + hits something that can't be bound to a key. + +Tue Apr 1 11:25:33 1997 Martin Buchholz + + * bytecomp/bytecomp.el (char-after): Correct coding of calling + sequence. + +Mon Mar 31 21:36:47 1997 Kyle Jones + + * prim/faces.el (set-face-stipple): New function. + +Sat Mar 29 14:52:02 1997 Steven L Baur + + * gnats/send-pr.el (send-pr:submit-pr): Pass send-pr:datadir in + the environment to send-pr. + (send-pr::insert-template): Ditto. + (send-pr:default-site): Default submission address is at xemacs.org. + Fri Jul 19 12:01:51 1996 Christoph Wedler * packages/info.el (Info-elisp-ref): Look first in lispref, then diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/ChangeLog --- a/lisp/auctex/ChangeLog Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/auctex/ChangeLog Mon Aug 13 09:24:17 2007 +0200 @@ -1,3 +1,9 @@ +Sat Apr 5 09:40:23 1997 Steven L Baur + + * Makefile (STYLESRC): Move style/*.el files to etc/auctex/style. + + * tex.el (TeX-lisp-directory): Restore previous setting. + Tue Mar 04 11:29:23 1997 Per Abrahamsen * Version 9.7l released. diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/Makefile --- a/lisp/auctex/Makefile Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/auctex/Makefile Mon Aug 13 09:24:17 2007 +0200 @@ -72,22 +72,22 @@ MINMAPSRC = auc-menu.el maniac.el outln-18.el all.el multi-prompt.el CONTRIB = bib-cite.el tex-jp.el font-latex.el -CONTRIBELC = bib-cite.elc font-latex.elc +CONTRIBELC = bib-cite.elc tex-jp.elc font-latex.elc AUCSRC = auc-old.el tex.el tex-buf.el latex.el tex-info.el multi-prompt.el AUCELC = auc-old.elc tex.elc tex-buf.elc latex.elc tex-info.elc \ multi-prompt.elc -STYLESRC = style/slides.el style/foils.el style/amstex.el \ - style/article.el style/book.el style/letter.el \ - style/report.el style/amsart.el style/amsbook.el \ - style/epsf.el style/psfig.el style/latexinfo.el \ - style/dutch.el style/german.el style/dk.el \ - style/j-article.el style/j-book.el style/j-report.el \ - style/jarticle.el style/jbook.el style/jreport.el \ - style/dinbrief.el style/virtex.el style/plfonts.el \ - style/plhb.el style/harvard.el style/swedish.el +STYLESRC = ../../etc/auctex/style/slides.el ../../etc/auctex/style/foils.el ../../etc/auctex/style/amstex.el \ + ../../etc/auctex/style/article.el ../../etc/auctex/style/book.el ../../etc/auctex/style/letter.el \ + ../../etc/auctex/style/report.el ../../etc/auctex/style/amsart.el ../../etc/auctex/style/amsbook.el \ + ../../etc/auctex/style/epsf.el ../../etc/auctex/style/psfig.el ../../etc/auctex/style/latexinfo.el \ + ../../etc/auctex/style/dutch.el ../../etc/auctex/style/german.el ../../etc/auctex/style/dk.el \ + ../../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 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 @@ -100,7 +100,7 @@ lisp: $(ELC) $(AUCSRC) $(STYLESRC) $(CONTRIB) -some: $(AUCELC) $(STYLESRC:.el=.elc) +some: $(AUCELC) $(CONTRIBELC) $(STYLESRC:.el=.elc) install: install-lisp diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/amsart.el --- a/lisp/auctex/style/amsart.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -;;; amsart.el --- AMS article style hook. - -;;; Code: - -(TeX-add-style-hook "amsart" - (function - (lambda () - (TeX-run-style-hooks "amstex")))) - -;;; amsart.el ends here. diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/amsbook.el --- a/lisp/auctex/style/amsbook.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -;;; amsbook.el --- AMS book style hook. - -;;; Code: - -(TeX-add-style-hook "amsbook" - (function - (lambda () - (TeX-run-style-hooks "amstex")))) - -;;; amsbook.el ends here. diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/amstex.el --- a/lisp/auctex/style/amstex.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -;;; amstex.el --- AMS LaTeX support. - -;;; Code: - -(TeX-add-style-hook "amstex" - (function - (lambda () - (TeX-add-symbols - '("eqref" TeX-arg-label))))) - -;;; amstex.el ends here. diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/article.el --- a/lisp/auctex/style/article.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -;;; article.el - Special code for article style. - -;; $Id: article.el,v 1.1 1997/02/20 02:15:41 steve Exp $ - -;;; Code: - -(TeX-add-style-hook "article" - (function (lambda () - (setq LaTeX-largest-level (LaTeX-section-level "section"))))) - -;;; article.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/book.el --- a/lisp/auctex/style/book.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -;;; book.el - Special code for book style. - -;; $Id: book.el,v 1.1 1997/02/20 02:15:41 steve Exp $ - -;;; Code: - -(TeX-add-style-hook "book" - (function (lambda () - (setq LaTeX-largest-level (LaTeX-section-level "chapter"))))) - -;;; book.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/dinbrief.el --- a/lisp/auctex/style/dinbrief.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,163 +0,0 @@ -;;; dinbrief.el - Special code for LaTeX-Style dinbrief. - -;; Contributed by Werner Fink -;; Please direct comments to him. - -;;; Commentary: - -;; LaTeX-Style: dinbrief.sty -;; Server: rusinfo.rus.uni-stuttgart.de -;; Directory: /pub/soft/tex/macros/latex/contrib/letters - -;;; Code: - -(TeX-add-style-hook "dinbrief" - (function - (lambda () - (LaTeX-add-environments - '("letter" LaTeX-recipient-hook)) - (TeX-add-symbols - '("Absender" "Absender: ") - '("Postvermerk" "Postvermerk: ") - '("Datum" "Datum: ") - '("Betreff" "Betreff: ") - '("Behandlungsvermerk" "Behandlungsvermerk: ") - '("Verteiler" "Verteiler: ") - "makelabel" "Retourlabel" - '("Anlagen" "Anlagen: ") - '("Fenster" "Fenster \(ja/nein\): ") - '("Retouradresse" "Retouradresse: ") - '("signature" "Unterschrift: ") - '("opening" "Anrede: ") - '("closing" "Schlu\"s: "))))) - -(defun LaTeX-recipient-hook (environment) - "Insert ENVIRONMENT and prompt for recipient and address." - (let ((sender (read-input "Absender: " (user-full-name))) - (recipient (read-input "Empf\"anger: ")) - (address (read-input "Anschrift: ")) - (postvermerk (read-input "Postvermerk: ")) - (date (read-input "Datum: " (LaTeX-today))) - (betreff (read-input "Betreff: ")) - (vermerk (read-input "Behandlungsvermerk: ")) - (verteil (read-input "Verteiler: ")) - (anlage (read-input "Anlagen: ")) - (opening (read-input "Anrede: ")) - (closing (read-input "Schlu\"s: ")) - (fenster (read-input "Fenster \(ja/nein\): ")) - (signature (read-input "Unterschrift: ")) - ) - - (if (not (zerop (length sender))) - (progn - (insert TeX-esc "Absender" TeX-grop sender TeX-grcl) - (newline-and-indent))) - (if (not (zerop (length postvermerk))) - (progn - (insert TeX-esc "Postvermerk" TeX-grop postvermerk TeX-grcl) - (newline-and-indent))) - (if (not (zerop (length betreff))) - (progn - (insert TeX-esc "Betreff" TeX-grop betreff TeX-grcl) - (newline-and-indent))) - (if (not (zerop (length vermerk))) - (progn - (insert TeX-esc "Behandlungsvermerk" TeX-grop vermerk TeX-grcl) - (newline-and-indent))) - (if (not (zerop (length verteil))) - (progn - (insert TeX-esc "Verteiler" TeX-grop verteil TeX-grcl) - (newline-and-indent))) - (if (not (zerop (length anlage))) - (progn - (insert TeX-esc "Anlagen" TeX-grop anlage TeX-grcl) - (newline-and-indent))) - (if (string= fenster "ja") - (progn - (insert TeX-esc "Fenster") - (let ((retouradr (read-input "Retouradresse: " (user-full-name)))) - (newline-and-indent) - (if (not (zerop (length retouradr))) - (progn - (insert TeX-esc "Retouradresse" TeX-grop retouradr TeX-grcl) - (newline-and-indent)))))) - (if (not (zerop (length signature))) - (progn - (insert TeX-esc "signature" TeX-grop signature TeX-grcl) - (newline-and-indent))) - (if (not (zerop (length date))) - (progn - (insert TeX-esc "Datum" TeX-grop date TeX-grcl) - (newline-and-indent))) - (newline-and-indent) - - (let ((indentation (current-column))) - (LaTeX-insert-environment - environment - (concat TeX-grop recipient - (if (not (zerop (length address))) - (concat - (if (not (zerop (length recipient))) - (concat " " TeX-esc TeX-esc " ")) - address)) - TeX-grcl)) - (save-excursion ; Fix indentation of address - (if (search-backward TeX-grcl nil 'move) - (let ((addr-end (point-marker))) - (if (search-backward TeX-grop nil 'move) - (let ((addr-column (current-column))) - (while (search-forward - (concat TeX-esc TeX-esc) - (marker-position addr-end) 'move) - (progn - (newline) - (indent-to addr-column)))))))) - (insert "\n") - (indent-to indentation)) - (insert TeX-esc "opening" - TeX-grop - (if (zerop (length opening)) - (concat TeX-esc " ") - opening) - TeX-grcl "\n") - - (indent-relative-maybe) - (save-excursion - (insert "\n" TeX-esc "closing" - TeX-grop - (if (zerop (length closing)) - (concat TeX-esc " ") - closing) - TeX-grcl "\n") - (indent-relative-maybe)))) - -(defun LaTeX-today nil - "Return a string representing todays date according to flavor." - (interactive) - (let ((ctime-string (current-time-string)) - (month-alist '(("Jan" . "Januar") - ("Feb" . "Februar") - ("Mar" . "M\\\"arz") - ("Apr" . "April") - ("May" . "Mai") - ("Jun" . "Juni") - ("Jul" . "Juli") - ("Aug" . "August") - ("Sep" . "September") - ("Oct" . "Oktober") - ("Nov" . "November") - ("Dec" . "Dezember")))) - (string-match - "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)" - ctime-string) - (let ((year (substring ctime-string (match-beginning 3) (match-end 3))) - (month (substring ctime-string (match-beginning 1) (match-end 1))) - (day (substring ctime-string (match-beginning 2) (match-end 2)))) - (if (assoc month month-alist) - (progn - (setq month (cdr (assoc month month-alist))) - (if (> 2 (length day)) - (setq day (concat "0" day))))) - (format "Stuttgart, den %s. %s %s" day month year)))) - -;;; dinbrief.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/dk.el --- a/lisp/auctex/style/dk.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -;;; dk.el - Setup AUC TeX for editing Danish text. - -;; $Id: dk.el,v 1.1 1997/02/20 02:15:42 steve Exp $ - -;;; Code: - -(TeX-add-style-hook "dk" - (function (lambda () - (run-hooks 'TeX-language-dk-hook)))) - -;;; dk.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/dutch.el --- a/lisp/auctex/style/dutch.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -;;; dutch.el - Setup AUC TeX for editing Dutch text. - -;; $Id: dutch.el,v 1.1 1997/02/20 02:15:42 steve Exp $ - -;;; Code: - -(TeX-add-style-hook "dutch" - (function (lambda () - (run-hooks 'TeX-language-nl-hook)))) - -;;; dutch.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/epsf.el --- a/lisp/auctex/style/epsf.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,96 +0,0 @@ -;;; epsf.el - Support for the epsf style option. - -;; Contributed by Marc Gemis - -;;; Code: - -(TeX-add-style-hook "epsf" - (function - (lambda () - (TeX-add-symbols - '("epsfsize" TeX-arg-epsfsize) - '("epsffile" TeX-arg-file) - '("epsfbox" TeX-arg-file) - "epsflly" "epsfury" "testit" "epsfgetlitbb" - "epsfnormal" "epsfgetbb" "other" "epsfsetgraph" - "PsFragSpecialArgs" "epsfaux" "testit" "epsfgrab" - "epsfllx" "epsflly" "epsfury" "epsfverbosetrue" - ) - (LaTeX-add-environments - '("epsffig" LaTeX-env-epsffigure) - ) - - ))) - - -(defun LaTeX-env-epsffigure (environment) - "Create a `figure'-environment with \\label and \\caption and \\epsfbox -commands. Eventually a `psfrags'-environment is inserted round the \\epsfbox." - - (let ((float (read-input "Float to: " LaTeX-float)) - (caption (read-input "Caption: ")) - (label (read-input "Label: " LaTeX-figure-label)) - ; gf: ask if there is an psfrag environment needed - (psfrag (y-or-n-p "PS fragments: ")) - (psfile (read-file-name "EPS-file: " "" "" nil)) - ) - - (setq LaTeX-float (if (zerop (length float)) - LaTeX-float - float)) - - (LaTeX-insert-environment "figure" - (concat LaTeX-optop LaTeX-float LaTeX-optcl)) - (LaTeX-insert-environment "center") - (if psfrag - (progn - (LaTeX-insert-environment "psfrags") - (newline-and-indent) - )) - (if (or (zerop (length label)) - (and (string= "figure" environment) - (equal LaTeX-figure-label label)) - ) - () - (newline-and-indent) - (insert TeX-esc "label" TeX-grop label TeX-grcl) - (end-of-line 0) - (LaTeX-indent-line)) - - - (newline-and-indent) - (insert TeX-esc "leavevmode") - (newline-and-indent) - (insert TeX-esc "epsfbox" TeX-grop psfile TeX-grcl) - (if (zerop (length caption)) - () - (newline-and-indent) - (insert TeX-esc "caption" TeX-grop caption TeX-grcl)) - (newline) - (forward-line 4) - (newline) - -)) - -(defun TeX-arg-epsfsize (optional &optional prompt definition) - "Create a line that print epsf figures at a certain percentage" - (interactive) - (let ((scale (read-input "Scale (%): ")) - ) - (setq scalestr (if (zerop (length scale)) - "75" - (format "%s" scale) - )) - (save-excursion - ; append #1#{scale#1} - (insert "#1#2" TeX-grop "0." scale "#1" TeX-grcl) - ; insert \def before \epsfsize - (beginning-of-line 1) - (newline) - (insert TeX-esc "def") - (forward-line -1) - (insert "% From now on print figures at " scale "% of original size") - ) - (end-of-line))) - -;;; epsf.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/foils.el --- a/lisp/auctex/style/foils.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -;;; foils.el - Special code for FoilTeX. - -;; $Id: foils.el,v 1.1 1997/02/20 02:15:42 steve Exp $ - -;;; Code: - -(require 'latex) - -(TeX-add-style-hook "foils" - (function - (lambda () - (add-hook 'LaTeX-document-style-hook 'LaTeX-style-foils) - (setq LaTeX-default-style "foils") - (setq LaTeX-default-options '("landscape")) - (TeX-add-symbols - '("foilhead" [ "Rubric-body separation" ] "Foil rubric"))))) - -(defun LaTeX-style-foils nil - "Prompt for and insert foiltex options." - (require 'timezone) - (let* ((date (timezone-parse-date (current-time-string))) - (year (string-to-int (aref date 0))) - (month (string-to-int (aref date 1))) - (day (string-to-int (aref date 2))) - (title (read-input "Title: "))) - (save-excursion - (goto-char (point-max)) - (re-search-backward ".begin.document.") - (insert TeX-esc "title" - TeX-grop title TeX-grcl "\n") - (insert TeX-esc "author" - TeX-grop (user-full-name) TeX-grcl "\n") - (insert TeX-esc "date" TeX-grop - (format "%d-%02d-%02d" year month day) - TeX-grcl "\n") - (insert "" TeX-esc "\nMyLogo" TeX-grop TeX-grcl "\n") - (insert "%" TeX-esc "Restriction" TeX-grop TeX-grcl "\n") - (insert "%" TeX-esc "rightfooter" TeX-grop TeX-grcl "\n") - (insert "%" TeX-esc "leftheader" TeX-grop TeX-grcl "\n") - (insert "%" TeX-esc "rightheader" TeX-grop TeX-grcl "\n\n") - (re-search-forward ".begin.document.") - (end-of-line) - (newline-and-indent) - (insert "" TeX-esc "maketitle\n\n")) - (forward-line -1))) - -;;; foils.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/german.el --- a/lisp/auctex/style/german.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -;;; german.el - Setup AUC TeX for editing German text. - -;; $Id: german.el,v 1.1 1997/02/20 02:15:42 steve Exp $ - -;;; Commentary: -;; -;; `german.sty' use `"' to give next character an umlaut. - -;;; Code: - -(defvar LaTeX-german-mode-syntax-table - (copy-syntax-table LaTeX-mode-syntax-table) - "Syntax table used in LaTeX mode when using `german.sty'.") - -(modify-syntax-entry ?\" "w" LaTeX-german-mode-syntax-table) - -(TeX-add-style-hook "german" - (function (lambda () - (set-syntax-table LaTeX-german-mode-syntax-table) - (make-local-variable 'TeX-open-quote) - (make-local-variable 'TeX-close-quote) - (make-local-variable 'TeX-quote-after-quote) - (setq TeX-quote-after-quote t) - (setq TeX-open-quote "\"`") - (setq TeX-close-quote "\"'") - (run-hooks 'TeX-language-de-hook)))) - -;;; german.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/harvard.el --- a/lisp/auctex/style/harvard.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -;; harvard.el --- Support for Harvard Citation style package for AUC-TeX - -;; Copyright (C) 1994 Berwin Turlach - -;; Version: $Id: harvard.el,v 1.1 1997/02/20 02:15:42 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 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 this program; if not, write to the Free Software -;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -;;; Commentary: - -;; Harvard citation style is from Peter Williams available on the CTAN -;; servers - -;;; Code: - -(require 'latex) - -(TeX-add-style-hook "harvard" - (function - (lambda () - - (LaTeX-add-environments - '("thebibliography" LaTeX-env-harvardbib ignore)) - - (TeX-add-symbols - "harvardand" - '("citeasnoun" - (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) - TeX-arg-cite) - '("possessivecite" - (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) - TeX-arg-cite) - '("citeaffixed" - (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) - TeX-arg-cite "Affix") - '("citeyear" - (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) - TeX-arg-cite) - '("citename" - (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) - TeX-arg-cite) - '("citationstyle" - (TeX-arg-eval completing-read "Citation style: " '(("agsm") ("dcu")))) - '("citationmode" - (TeX-arg-eval completing-read "Citation mode: " - '(("full") ("abbr") ("default")))) - '("harvardparenthesis" - (TeX-arg-eval completing-read "Harvardparenthesis: " - '(("round") ("curly") ("angle") ("square")))) - '("bibliographystyle" - (TeX-arg-eval - completing-read "Bibliography style: " - '(("agsm") ("dcu") ("jmr") ("jphysicsB") ("kluwer") ("nederlands"))) - ignore) - '("harvarditem" [ "Short citation" ] - "Complete citation" "Year" TeX-arg-define-cite)) - - (setq TeX-complete-list - (append '(("\\\\citeasnoun{\\([^{}\n\m\\%]*\\)" - 1 LaTeX-bibitem-list "}") - ("\\\\citeyear{\\([^{}\n\m\\%]*\\)" - 1 LaTeX-bibitem-list "}") - ("\\\\citename{\\([^{}\n\m\\%]*\\)" - 1 LaTeX-bibitem-list "}")) - TeX-complete-list)) - - (setq LaTeX-item-list - (cons '("thebibliography" . LaTeX-item-harvardbib) - LaTeX-item-list))))) - -(defun LaTeX-env-harvardbib (environment &optional ignore) - "Insert ENVIRONMENT with label for harvarditem." - (LaTeX-insert-environment environment - (concat TeX-grop "xx" TeX-grcl)) - (end-of-line 0) - (delete-char 1) - (delete-horizontal-space) - (LaTeX-insert-item)) - -;; Analog to LaTeX-item-bib from latex.el -(defun LaTeX-item-harvardbib () - "Insert a new harvarditem." - (TeX-insert-macro "harvarditem")) - -;; harvard.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/j-article.el --- a/lisp/auctex/style/j-article.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -;;; j-article.el - Special code for j-article style. - -;; $Id: j-article.el,v 1.1 1997/02/20 02:15:42 steve Exp $ - -;;; Code: - -(TeX-add-style-hook "j-article" - (function (lambda () - (setq LaTeX-largest-level (LaTeX-section-level "section"))))) - -;;; j-article.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/j-book.el --- a/lisp/auctex/style/j-book.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -;;; j-book.el - Special code for j-book style. - -;; $Id: j-book.el,v 1.1 1997/02/20 02:15:42 steve Exp $ - -;;; Code: - -(TeX-add-style-hook "j-book" - (function (lambda () (setq LaTeX-largest-level - (LaTeX-section-level "chapter"))))) - -;;; j-book.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/j-report.el --- a/lisp/auctex/style/j-report.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -;;; j-report.el - Special code for j-report style. - -;; $Id: j-report.el,v 1.1 1997/02/20 02:15:42 steve Exp $ - -;;; Code: - -(TeX-add-style-hook "j-report" - (function (lambda () (setq LaTeX-largest-level - (LaTeX-section-level "chapter"))))) - -;;; j-report.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/jarticle.el --- a/lisp/auctex/style/jarticle.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -;;; jarticle.el - Special code for jarticle style. - -;; $Id: jarticle.el,v 1.1 1997/02/20 02:15:43 steve Exp $ - -;;; Code: - -(TeX-add-style-hook "jarticle" - (function (lambda () (setq LaTeX-largest-level 2)))) - -;;; jarticle.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/jbook.el --- a/lisp/auctex/style/jbook.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -;;; jbook.el - Special code for jbook style. - -;; $Id: jbook.el,v 1.1 1997/02/20 02:15:43 steve Exp $ - -;;; Code: - -(TeX-add-style-hook "jbook" - (function (lambda () (setq LaTeX-largest-level - (LaTeX-section-level "chapter"))))) - -;;; jbook.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/jreport.el --- a/lisp/auctex/style/jreport.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -;;; jreport.el - Special code for jreport style. - -;; $Id: jreport.el,v 1.1 1997/02/20 02:15:43 steve Exp $ - -;;; Code: - -(TeX-add-style-hook "jreport" - (function (lambda () (setq LaTeX-largest-level - (LaTeX-section-level "chapter"))))) - - -;;; jreport.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/latexinfo.el --- a/lisp/auctex/style/latexinfo.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,183 +0,0 @@ -;;; latexinfo.el - Support for LaTeXinfo files. - -;; Copyright (C) 1993 Marc Gemis - -;; Author: Marc Gemis -;; Version: $Id: latexinfo.el,v 1.1 1997/02/20 02:15:43 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, write to the Free Software -;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -;;; Code: - -(require 'latex) - -;;; LaTeXinfo mode - -(defvar TeX-latexinfo-node-regexp - '("\\\\node[ \t]+\\([^,\n\r%]+\\)" 1 TeX-auto-label) - "Matches LaTeXinfo \\node commands, only current node will be found. -We ignore next, previous and up fields.") - -(defvar LaTeXinfo-mode nil - "Non-nil means LaTeXinfo minor mode is active.") - (make-variable-buffer-local 'LaTeXinfo-mode) - -(defvar LaTeXinfo-mode-map nil - "Keymap containing LaTeXinfo commands.") - -(if LaTeXinfo-mode-map - () - (setq LaTeXinfo-mode-map (make-sparse-keymap)) - (define-key LaTeXinfo-mode-map "\C-c\C-u\C-b" 'latexinfo-format-buffer) - (define-key LaTeXinfo-mode-map "\C-c\C-u\C-r" 'latexinfo-format-region) - (define-key LaTeXinfo-mode-map "\C-c\C-u\C-s" 'latexinfo-show-structure) - (define-key LaTeXinfo-mode-map "\C-c\C-ud" 'makke:latexinfo-delete-structure) - (define-key LaTeXinfo-mode-map "\C-c\C-ug" 'latexinfo-goto-node) - (define-key LaTeXinfo-mode-map "\C-c\C-ui" 'makke:latexinfo-structure)) - -(or (assq 'LaTeXinfo-mode minor-mode-map-alist) - (setq minor-mode-map-alist - (cons (cons 'LaTeXinfo-mode LaTeXinfo-mode-map) - minor-mode-map-alist))) - -(defun TeX-arg-latexinfo-index (optional &optional prompt) - "Prompt for a LaTeXinfo index type with completion." - (TeX-argument-insert - (completing-read (TeX-argument-prompt optional prompt "Index") - '(("cp") ("vr") ("fn") ("tp") ("pg") ("ky")) - nil t) - optional)) - -(defun LaTeX-item-latexinfo-menu () - "Insert a new menu item" - (insert "* ::") - (backward-char 2)) - -(defun latexinfo-goto-node () ; temporarily here, later in latexinfo-upd.el ?? - "Place pointer on the node given by the user, read node with completion -This fails when the user types in the label of something else" - (interactive) - (let ((node-name (completing-read "Goto Node: " (LaTeX-label-list)))) - (goto-char (point-min)) - (if (re-search-forward - (concat - TeX-esc "node[ \\t]+" node-name "," - "\\|" - TeX-esc "label{" LaTeX-section-label node-name - "\\|" - TeX-esc "label{" node-name - ) - (point-max) t) - (beginning-of-line 1) - (error "No such node")))) - -;;; Hook - -(TeX-add-style-hook "latexinfo" - (function - (lambda () - (require 'latexinfo) - (require 'latexinfo-structure) - - (require 'min-map) - (setq LaTeXinfo-mode t) - - (TeX-auto-add-regexp TeX-latexinfo-node-regexp) - - (TeX-add-symbols - '("node" - (TeX-arg-literal " ") - (TeX-arg-free TeX-arg-define-label "Node name") - (TeX-arg-literal ", ") - (TeX-arg-free TeX-arg-label "Next node") - (TeX-arg-literal ", ") - (TeX-arg-free TeX-arg-label "Previous node") - (TeX-arg-literal ", ") - (TeX-arg-free TeX-arg-label "Up node")) - '("setfilename" TeX-arg-file) - - '("var" t) - '("dfn" t) - '("emph" t) - '("kbd" t) - '("code" t) - '("samp" t) - '("key" t) - '("ctrl" t) - '("file" t) - - '("comment" - (TeX-arg-literal " ") - (TeX-arg-free "Comment")) - '("c" - (TeX-arg-literal " ") - (TeX-arg-free "Comment")) - - '("cindex" t) - '("cpsubindex" 2) - '("cpindexbold" t) - - '("newindex" TeX-arg-latexinfo-index) - - '("br" nil) - '("w" "Text") - '("dots" nil) - '("refill" nil) - '("bullet" nil) - '("copyright" nil) - '("sp" nil) - - '("xref" TeX-arg-label) - '("pxref" TeX-arg-label) - '("inforef" - (TeX-arg-literal "{") - (TeX-arg-free "Name of node") - (TeX-arg-literal ", ") - (TeX-arg-free "Name for note") - (TeX-arg-literal ", ") - (TeX-arg-free TeX-arg-file "Info file") - (TeX-arg-literal "}"))) - - (LaTeX-add-environments "menu" "tex" "ignore" "ifinfo" "iftex" - "example" "same" "display" "format") - - ; Menu's have a special kind of items - (make-local-variable 'LaTeX-item-list) - (setq LaTeX-item-list (cons '("menu" . LaTeX-item-latexinfo-menu) - LaTeX-item-list)) - - (make-local-variable 'TeX-font-list) - (setq TeX-font-list - (list (list ?\C-b (concat TeX-esc "b{") "}") - (list ?\C-c (concat TeX-esc "sc{") "}") - (list ?\C-e (concat TeX-esc "emph{") "}") - (list ?\C-i (concat TeX-esc "i{") "}") - (list ?\C-r (concat TeX-esc "r{") "}") - (list ?\C-s (concat TeX-esc "samp{") "}") - (list ?\C-t (concat TeX-esc "t{") "}") - (list ?s (concat TeX-esc "strong{") "}") - (list ?\C-f (concat TeX-esc "file{") "}") - (list ?\C-d (concat TeX-esc "dfn{") "}") - (list ?\C-v (concat TeX-esc "var{") "}") - (list ?k (concat TeX-esc "key{") "}") - (list ?\C-k (concat TeX-esc "kbd{") "}") - (list ?c (concat TeX-esc "code{") "}") - (list ?C (concat TeX-esc "cite{") "}"))) - - ;; need the following stuff to let xref and pxref work - (make-local-variable 'LaTeX-section-label) - (setq LaTeX-section-label "")))) - -;;; latexinfo.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/letter.el --- a/lisp/auctex/style/letter.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -;;; letter.el - Special code for letter style. - -;; $Id: letter.el,v 1.1 1997/02/20 02:15:43 steve Exp $ - -;;; Code: - -;; You may want to define this in tex-site.el to contain your -;; organizations address. -(defvar LaTeX-letter-sender-address "" - "Initial value when prompting for a sender address in the letter style.") - -(TeX-add-style-hook "letter" - (function - (lambda () - (LaTeX-add-environments - '("letter" LaTeX-env-recipient)) - (TeX-add-symbols - '("name" "Sender: ") - '("address" "Sender address: ") - '("signature" "Signature: ") - '("opening" "Opening: ") - '("closing" "Closing: "))))) - -(defun LaTeX-env-recipient (environment) - "Insert ENVIRONMENT and prompt for recipient and address." - (let ((sender (read-input "Sender: " (user-full-name))) - (sender-address (read-input "Sender address: " - LaTeX-letter-sender-address)) - (recipient (read-input "Recipient: ")) - (address (read-input "Recipient address: ")) - (signature (read-input "Signature: ")) - (opening (read-input "Opening: ")) - (closing (read-input "Closing: ")) - (date (read-input "Date: " (LaTeX-today)))) - - (insert TeX-esc "name" TeX-grop sender TeX-grcl) - (newline-and-indent) - (if (not (zerop (length sender-address))) - (progn - (setq LaTeX-letter-sender-address sender-address) - (insert TeX-esc "address" TeX-grop sender-address TeX-grcl) - (newline-and-indent))) - (if (not (zerop (length signature))) - (progn - (insert TeX-esc "signature" TeX-grop signature TeX-grcl) - (newline-and-indent))) - (if (not (zerop (length date))) - (progn - (insert TeX-esc "def" TeX-esc "today" TeX-grop date TeX-grcl) - (newline-and-indent))) - (newline-and-indent) - - (let ((indentation (current-column))) - (LaTeX-insert-environment - environment - (concat TeX-grop recipient - (if (not (zerop (length address))) - (concat - (if (not (zerop (length recipient))) - (concat " " TeX-esc TeX-esc " ")) - address)) - TeX-grcl)) - (save-excursion ; Fix indentation of address - (if (search-backward TeX-grcl nil 'move) - (let ((addr-end (point-marker))) - (if (search-backward TeX-grop nil 'move) - (let ((addr-column (current-column))) - (while (search-forward - (concat TeX-esc TeX-esc) - (marker-position addr-end) 'move) - (progn - (newline) - (indent-to addr-column)))))))) - (insert "\n") - (indent-to indentation)) - (insert TeX-esc "opening" - TeX-grop - (if (zerop (length opening)) - (concat TeX-esc " ") - opening) - TeX-grcl "\n") - - (indent-relative-maybe) - (save-excursion - (insert "\n" TeX-esc "closing" - TeX-grop - (if (zerop (length closing)) - (concat TeX-esc " ") - closing) - TeX-grcl "\n") - (indent-relative-maybe)))) - -(defun LaTeX-today nil - "Return a string representing todays date according to flavor." - (interactive) - (let ((ctime-string (current-time-string)) - (month-alist '(("Jan". "01") - ("Feb" . "02") - ("Mar" . "03") - ("Apr" . "04") - ("May" . "05") - ("Jun" . "06") - ("Jul" . "07") - ("Aug" . "08") - ("Sep" . "09") - ("Oct" . "10") - ("Nov" . "11") - ("Dec" . "12")))) - (string-match - "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)" - ctime-string) - (let ((year (substring ctime-string (match-beginning 3) (match-end 3))) - (month (substring ctime-string (match-beginning 1) (match-end 1))) - (day (substring ctime-string (match-beginning 2) (match-end 2)))) - (if (assoc month month-alist) - (progn - (setq month (cdr (assoc month month-alist))) - (if (> 2 (length day)) - (setq day (concat "0" day))))) - (format "%s-%s-%s" year month day)))) - -;;; letter.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/plfonts.el --- a/lisp/auctex/style/plfonts.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -;;; plfonts.el - Setup AUC TeX for editing Polish text with plfonts.sty - -;; $Id: plfonts.el,v 1.1 1997/02/20 02:15:43 steve Exp $ - -;;; Commentary: -;; -;; `plfonts.sty' use `"' to make next character Polish. -;; `plfonts.sty' L. Holenderski, IIUW, lhol@mimuw.edu.pl - -;;; Code: - -(defvar LaTeX-plfonts-mode-syntax-table - (copy-syntax-table LaTeX-mode-syntax-table) - "Syntax table used in LaTeX mode when using `plfonts.sty'.") - -(modify-syntax-entry ?\" "w" LaTeX-plfonts-mode-syntax-table) - -(TeX-add-style-hook "plfonts" - (function (lambda () - (set-syntax-table LaTeX-plfonts-mode-syntax-table) - (make-local-variable 'TeX-open-quote) - (make-local-variable 'TeX-close-quote) - (make-local-variable 'TeX-quote-after-quote) - (make-local-variable 'TeX-command-default) - (setq TeX-open-quote "\"<") - (setq TeX-close-quote "\">") - (setq TeX-quote-after-quote t) - (setq TeX-command-default "plLaTeX") - (run-hooks 'TeX-language-pl-hook)))) - -;;; plfonts.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/plhb.el --- a/lisp/auctex/style/plhb.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -;;; plhb.el - Setup AUC TeX for editing Polish text with plhb.sty - -;; $Id: plhb.el,v 1.1 1997/02/20 02:15:43 steve Exp $ - -;;; Commentary: -;; -;; `plhb.sty' use `"' to make next character Polish. -;; `plhb.sty' J. S. Bie\'n, IIUW, jsbien@mimuw.edu.pl - -;;; Code: - -(defvar LaTeX-plhb-mode-syntax-table - (copy-syntax-table LaTeX-mode-syntax-table) - "Syntax table used in LaTeX mode when using `plhb.sty'.") - -(modify-syntax-entry ?\" "w" LaTeX-plhb-mode-syntax-table) - -(TeX-add-style-hook "plhb" - (function (lambda () - (set-syntax-table LaTeX-plhb-mode-syntax-table) - (make-local-variable 'TeX-open-quote) - (make-local-variable 'TeX-close-quote) - (make-local-variable 'TeX-command-default) - (make-local-variable 'TeX-quote-after-quote) - (setq TeX-open-quote "\"<") - (setq TeX-close-quote "\">") - (setq TeX-quote-after-quote t) - (setq TeX-command-default "plLaTeX") - (run-hooks 'TeX-language-pl-hook)))) - -;;; plhb.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/psfig.el --- a/lisp/auctex/style/psfig.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -;;; psfig.el - Support for the psfig style option. - -;; Contributed by Marc Gemis -;; Please direct comments to him. - -;;; Code: - -(TeX-add-style-hook "psfig" - (function - (lambda () - ;; probable some of the following symbols may be removed - (TeX-add-symbols "protect" "figurepath" "fbox" - "other" "letter" "other" "then" "Sine" "Cosine" - "psdraft" "psfull" "psscalefirst" "psrotatefirst" - "psnodraftbox" "psdraftbox" "pssilent" "psnoisy" - "minmaxtest" - '("psfig" TeX-arg-psfig) - '("psfigurepath" t) - ) - (LaTeX-add-environments - '("psfigure" LaTeX-env-psfigure) - ) - ))) - -(defun TeX-arg-psfig (optional) - "Ask for file, width and length. Insert psfig macro" - (let ((psfile (read-file-name "PS-file: " "" "" nil)) - (figwidth (read-input "Figure width: ")) - (figheight (read-input "Figure height: ")) - ) - - (insert TeX-grop "figure=" psfile) - (if (not (zerop (length figwidth))) - (insert ",width=" figwidth)) - (if (not (zerop (length figheight))) - (insert ",height=" figheight)) - (insert TeX-grcl) - ) - ) - - -(defun LaTeX-env-psfigure (environment) - "Create with \\label and \\caption and \\psfig commands." - (let ((float (read-input "Float to: " LaTeX-float)) - (caption (read-input "Caption: ")) - (label (read-input "Label: " LaTeX-figure-label)) - ; gf: ask if this should be centered - (psfile (read-file-name "PS-file: " "" "" nil)) - (figwidth (read-input "Figure width: ")) - (figheight (read-input "Figure height: ")) - ) - - (setq LaTeX-float (if (zerop (length float)) - LaTeX-float - float)) - - (LaTeX-insert-environment "figure" - (concat LaTeX-optop LaTeX-float LaTeX-optcl)) - - (insert TeX-esc "centerline" TeX-grop TeX-esc "psfig" TeX-grop - "figure=" psfile) - (if (not (zerop (length figwidth))) - (insert ",width=" figwidth)) - (if (not (zerop (length figheight))) - (insert ",height=" figheight)) - (insert TeX-grcl TeX-grcl) - (if (zerop (length caption)) - () - (newline-and-indent) - (insert TeX-esc "caption" TeX-grop caption TeX-grcl)) - (if (or (zerop (length label)) - (equal LaTeX-figure-label label)) - () - (newline-and-indent) - (insert TeX-esc "label" TeX-grop label TeX-grcl)) - - (forward-line 2))) - -;;; psfig.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/report.el --- a/lisp/auctex/style/report.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -;;; report.el - Special code for report style. - -;; $Id: report.el,v 1.1 1997/02/20 02:15:43 steve Exp $ - -;;; Code: - -(TeX-add-style-hook "report" - (function (lambda () - (setq LaTeX-largest-level (LaTeX-section-level "chapter"))))) - -;;; report.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/slides.el --- a/lisp/auctex/style/slides.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -;;; slides.el - Special code for slitex. -;; -;; $Id: slides.el,v 1.1 1997/02/20 02:15:43 steve Exp $ - -(require 'latex) - -;;; Code: - -(TeX-add-style-hook "slides" - (function - (lambda () - (setq LaTeX-default-style "slides") - (add-hook 'LaTeX-document-style-hook 'LaTeX-style-slides) - (LaTeX-add-environments '("slide" LaTeX-env-slide) - '("overlay" LaTeX-env-slide)) - (TeX-run-style-hooks "SLITEX")))) - -(defvar LaTeX-slide-color "" - "*Default slide color.") - - (make-variable-buffer-local 'LaTeX-slide-color) - -(defun LaTeX-style-slides () - "Prompt for and insert SliTeX options." - (let ((slide-file (read-input "Slide file: ")) - (slide-colors (read-input "Slide colors (comma separetade list): " - "black"))) - (save-excursion - (goto-char (point-min)) ; insert before \end{document} - (if (re-search-forward ".end.document." (point-max) t) - (beginning-of-line 1)) - (open-line 2) - (indent-relative-maybe) - (if (equal slide-colors "black") - (insert TeX-esc "blackandwhite" - TeX-grop slide-file TeX-grcl) - (progn - (insert TeX-esc "colors" - TeX-grop slide-colors TeX-grcl) - (newline-and-indent) - (insert TeX-esc "colorslides" - TeX-grop slide-file TeX-grcl)))))) - -(defun LaTeX-env-slide (environment) - "Insert ENVIRONMENT and prompt for slide colors." - (setq LaTeX-slide-color - (read-input "Slide colors: " LaTeX-slide-color)) - (LaTeX-insert-environment environment - (concat TeX-grop LaTeX-slide-color TeX-grcl))) - - -;;; slides.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/swedish.el --- a/lisp/auctex/style/swedish.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -;;; swedish.el - Setup AUC TeX for editing Swedish text. - -;; $Id: swedish.el,v 1.1 1997/02/20 02:15:44 steve Exp $ - -;;; Commentary: -;; -;; Apparently the Swedes use ''this style'' quotations. - -(TeX-add-style-hook "swedish" - (function (lambda () - (make-local-variable 'TeX-open-quote) - (setq TeX-open-quote "''") - (run-hooks 'TeX-language-sv-hook)))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/style/virtex.el --- a/lisp/auctex/style/virtex.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ -;;; virtex.el - Common code for all TeX formats. - -;; $Id: virtex.el,v 1.1 1997/02/20 02:15:44 steve Exp $ - -;;; Code: - -(TeX-add-style-hook "virtex" - (function - (lambda () - (TeX-add-symbols "/" "above" "abovedisplayshortskip" - "abovedisplayskip" "abovewithdelims" "accent" - "adjdemerits" "advance" "afterassignment" - "aftergroup" "atop" "atopwithdelims" "badness" - "baselineskip" "batchmode" "begingroup" - "belowdisplayshortskip" "belowdisplayskip" - "binoppenalty" "botmark" "box" "boxmaxdepth" - "brokenpenalty" "catcode" "char" "chardef" - "cleaders" "closein" "closeout" "clubpenalty" - "copy" "count" "countdef" "cr" "crcr" "csname" - "day" "deadcycles" "def" "defaulthyphenchar" - "defaultskewchar" "delcode" "delimiter" - "delimiterfactor" "delimitershortfall" "dimen" - "dimendef" "discretionary" "displayindent" - "displaylimits" "displaystyle" - "displaywidowpenalty" "displaywidth" "divide" - "doublehyphendemerits" "dp" "dump" "edef" "else" - "emergencystretch" "end" "endcsname" "endgroup" - "endinput" "endlinechar" "eqno" "errhelp" - "errmessage" "errorcontextlines" "errorstopmode" - "escapechar" "everycr" "everydisplay" - "everyhbox" "everyjob" "everymath" "everypar" - "everyvbox" "exhyphenpenalty" "expandafter" - "fam" "fi" "finalhyphendemerits" "firstmark" - "floatingpenalty" "font" "fontdimen" "fontname" - "futurelet" "gdef" "global" "globaldefs" - "halign" "hangafter" "hangindent" "hbadness" - "hbox" "hfil" "hfill" "hfilneg" "hfuzz" - "hoffset" "holdinginserts" "hrule" "hsize" - "hskip" "hss" "ht" "hyphenpenation" "hyphenchar" - "hyphenpenalty" "if" "ifcase" "ifcat" "ifdim" - "ifeof" "iffalse" "ifhbox" "ifinner" "ifhmode" - "ifmmode" "ifnum" "ifodd" "iftrue" "ifvbox" - "ifvoid" "ifx" "ignorespaces" "immediate" - "indent" "input" "inputlineno" "insert" - "insertpenalties" "interlinepenalty" "jobname" - "kern" "language" "lastbox" "lastkern" - "lastpenalty" "lastskip" "lccode" "leaders" - "left" "lefthyphenmin" "leftskip" "leqno" "let" - "limits" "linepenalty" "lineskip" - "lineskiplimit" "long" "looseness" "lower" - "lowercase" "mag" "markaccent" "mathbin" - "mathchar" "mathchardef" "mathchoise" - "mathclose" "mathcode" "mathinner" "mathhop" - "mathopen" "mathord" "mathpunct" "mathrel" - "mathsurround" "maxdeadcycles" "maxdepth" - "meaning" "medmuskip" "message" "mkern" "month" - "moveleft" "moveright" "mskip" "multiply" - "muskip" "muskipdef" "newlinechar" "noalign" - "noboundary" "noexpand" "noindent" "nolimits" - "nonscript" "nonstopmode" "nulldelimiterspace" - "nullfont" "number" "omit" "openin" "openout" - "or" "outer" "output" "outputpenalty" - "overfullrule" "parfillskip" "parindent" - "parskip" "pausing" "postdisplaypenalty" - "predisplaypenalty" "predisplaysize" - "pretolerance" "relpenalty" "rightskip" - "scriptspace" "showboxbreadth" "showboxdepth" - "smallskipamount" "spaceskip" "splitmaxdepth" - "splittopskip" "tabskip" "thickmuskip" - "thinmuskip" "time" "tolerance" "topskip" - "tracingcommands" "tracinglostchars" - "tracingmacros" "tracingonline" "tracingoutput" - "tracingpages" "tracingparagraphs" - "tracingrestores" "tracingstats" "uccode" - "uchyph" "underline" "unhbox" "unhcopy" "unkern" - "unpenalty" "unskip" "unvbox" "unvcopy" - "uppercase" "vadjust" "valign" "vbadness" "vbox" - "vcenter" "vfil" "vfill" "vfilneg" "vfuzz" - "voffset" "vrule" "vsize" "vskip" "vss" "vtop" - "wd" "widowpenalty" "write" "xdef" "xleaders" - "xspaceskip" "year")))) - -;;; virtex.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/auctex/tex.el --- a/lisp/auctex/tex.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/auctex/tex.el Mon Aug 13 09:24:17 2007 +0200 @@ -33,7 +33,7 @@ ;; file, but instead copy those definitions you need to change to ;; `tex-site.el'. -(defvar TeX-lisp-directory "auctex/" +(defvar TeX-lisp-directory (concat data-directory "auctex/") "*The directory where the AUC TeX lisp files are located.") ;; Change this to point to the place where the TeX macros are stored diff -r 578fd4947a72 -r 7d55a9ba150c lisp/bytecomp/bytecomp.el --- a/lisp/bytecomp/bytecomp.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/bytecomp/bytecomp.el Mon Aug 13 09:24:17 2007 +0200 @@ -468,7 +468,7 @@ (defvar byte-compile-maxdepth 0 "Maximum depth of execution stack.") -;;; The byte codes; this information is duplicated in bytecomp.c +;;; The byte codes; this information is duplicated in bytecode.c (defconst byte-code-vector nil "An array containing byte-code names indexed by byte-code values.") @@ -2822,7 +2822,7 @@ (byte-defop-compiler (1+ byte-add1) 1) (byte-defop-compiler (1- byte-sub1) 1) (byte-defop-compiler goto-char 1+1) -(byte-defop-compiler char-after 1+1) +(byte-defop-compiler char-after 0-1+1) (byte-defop-compiler set-buffer 1) ;;(byte-defop-compiler set-mark 1) ;; obsolete (byte-defop-compiler forward-word 1+1) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/calendar/appt.el --- a/lisp/calendar/appt.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/calendar/appt.el Mon Aug 13 09:24:17 2007 +0200 @@ -688,40 +688,41 @@ ;;; Patching in to existing time code to install our hook. -(defvar display-time-hook nil - "*List of functions to be called when the time is updated on the mode line.") - -(setq display-time-hook 'appt-check) (defvar display-time-hook-installed nil) (defun install-display-time-hook () - (if display-time-hook-installed ;; only do this stuff once! - nil - (let ((old-fn (if (or (featurep 'reportmail) - ;; old reportmail without a provide statement - (and (fboundp 'display-time-filter-18-55) - (fboundp 'display-time-filter-18-57))) - (if (and (featurep 'itimer) ; XEmacs reportmail.el - (fboundp 'display-time-timer-function)) - 'display-time-timer-function - ;; older reportmail, or no timer.el. - (if (string-match "18\\.5[0-5]" (emacs-version)) - 'display-time-filter-18-55 - 'display-time-filter-18-57)) - ;; othewise, time.el - (if (and (featurep 'itimer) - (fboundp 'display-time-function)) ; XEmacs - 'display-time-function - 'display-time-filter)))) + (unless display-time-hook-installed ; only do this stuff once! + (unless (boundp 'display-time-hook) ; Need to wrapper it. + (defvar display-time-hook nil + "*List of functions to be called when the time is updated on the mode line.") + (let ((old-fn (if (or (featurep 'reportmail) + ;; old reportmail without a provide statement + (and (fboundp 'display-time-filter-18-55) + (fboundp 'display-time-filter-18-57))) + (if (and (featurep 'itimer) ; XEmacs reportmail.el + (fboundp 'display-time-timer-function)) + 'display-time-timer-function + ;; older reportmail, or no timer.el. + (if (string-match "18\\.5[0-5]" (emacs-version)) + 'display-time-filter-18-55 + 'display-time-filter-18-57)) + ;; othewise, time.el + (if (and (featurep 'itimer) + (fboundp 'display-time-function)) ; XEmacs + 'display-time-function + 'display-time-filter)))) ;; we're about to redefine it... - (fset 'old-display-time-filter (symbol-function old-fn)) - (fset old-fn - (function (lambda (&rest args) ;; ...here's the revised definition - "Revised version of the original function: this version calls a hook." - (apply 'old-display-time-filter args) - (run-hooks 'display-time-hook))))) - (setq display-time-hook-installed t) - )) + (fset 'old-display-time-filter (symbol-function old-fn)) + (fset old-fn + '(lambda (&rest args) ;; ...here's the revised definition + "Revised version of the original function: this version calls a hook." + (apply 'old-display-time-filter args) + (run-hooks 'display-time-hook))))) + (setq display-time-hook-installed t) + (if (fboundp 'add-hook) + (add-hook 'display-time-hook 'appt-check) + (setq display-time-hook (cons appt-check display-time-hook))) + )) (provide 'appt) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/custom/ChangeLog --- a/lisp/custom/ChangeLog Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/custom/ChangeLog Mon Aug 13 09:24:17 2007 +0200 @@ -1,3 +1,34 @@ +Tue Apr 01 20:08:10 1997 Per Abrahamsen + + * Version 1.69 released. + +Tue Apr 1 17:29:16 1997 Per Abrahamsen + + * Makefile (TEXT): Added x-overlay.el for use with old XEmacsen. + + * cus-face.el (custom-face-attributes): Add 4'th GET argument in + some attributes. + (custom-face-background): New function. + (custom-background-mode): Use it. + (custom-face-foreground): New function. + (custom-face-attributes-get): New function. + * cus-edit.el (custom-face-value-create): Use it. + + * wid-edit.el (widget-apply): Added ;;;###autoload. + * widget.el (widget-apply): Added autoload. + +Sun Mar 30 11:41:50 1997 Per Abrahamsen + + * cus-face.el (set-face-stipple): Added for XEmacs. + Written by Kyle Jones. + +Fri Mar 28 12:17:02 1997 Per Abrahamsen + + * wid-edit.el (widget-glyph-insert): Doc fix. + * custom.el (defface): Ditto. + (custom-add-to-group): Ditto. + * cus-face.el (custom-initialize-frame): Ditto. + Thu Mar 27 19:31:40 1997 Per Abrahamsen * Version 1.68 released. diff -r 578fd4947a72 -r 7d55a9ba150c lisp/custom/cus-edit.el --- a/lisp/custom/cus-edit.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/custom/cus-edit.el Mon Aug 13 09:24:17 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces -;; Version: 1.68 +;; Version: 1.69 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -1348,7 +1348,10 @@ widget 'editable-list :entry-format "%i %d %v" :value (or (get symbol 'saved-face) - (get symbol 'factory-face)) + (get symbol 'factory-face) + ;; Attempt to construct it. + (list (list t (custom-face-attributes-get + symbol (selected-frame))))) :insert-button-args '(:help-echo "\ Insert new display specification here.") :append-button-args '(:help-echo "\ @@ -1538,12 +1541,12 @@ :group 'customize) (defface custom-group-tag-face-1 '((((class color) - (background dark)) - (:foreground "pink" :underline t)) - (((class color) - (background light)) - (:foreground "red" :underline t)) - (t (:underline t))) + (background dark)) + (:foreground "pink" :underline t)) + (((class color) + (background light)) + (:foreground "red" :underline t)) + (t (:underline t))) "Face used for group tags.") (defface custom-group-tag-face '((((class color) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/custom/cus-face.el --- a/lisp/custom/cus-face.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/custom/cus-face.el Mon Aug 13 09:24:17 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces -;; Version: 1.68 +;; Version: 1.69 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -19,6 +19,20 @@ ;;; Compatibility. +(if (string-match "XEmacs" emacs-version) + (defun custom-face-background (face &optional frame) + ;; Specifiers suck! + "Return the background color name of face FACE, or nil if unspecified." + (color-instance-name (specifier-instance (face-background face) frame))) + (defalias 'custom-face-background 'face-background)) + +(if (string-match "XEmacs" emacs-version) + (defun custom-face-foreground (face &optional frame) + ;; Specifiers suck! + "Return the background color name of face FACE, or nil if unspecified." + (color-instance-name (specifier-instance (face-foreground face) frame))) + (defalias 'custom-face-foreground 'face-foreground)) + (eval-and-compile (unless (fboundp 'frame-property) ;; XEmacs function missing in Emacs 19.34. @@ -37,7 +51,38 @@ ;; XEmacs function missing in Emacs. (defun set-face-doc-string (face string) "Set the documentation string for FACE to STRING." - (put face 'face-doc-string string)))) + (put face 'face-doc-string string))) + + (when (and (not (fboundp 'set-face-stipple)) + (fboundp 'set-face-background-pixmap)) + ;; Emacs function missing in XEmacs 19.15. + (defun set-face-stipple (face pixmap &optional frame) + ;; Written by Kyle Jones. + "Change the stipple pixmap of face FACE to PIXMAP. +PIXMAP should be a string, the name of a file of pixmap data. +The directories listed in the `x-bitmap-file-path' variable are searched. + +Alternatively, PIXMAP may be a list of the form (WIDTH HEIGHT DATA) +where WIDTH and HEIGHT are the size in pixels, +and DATA is a string, containing the raw bits of the bitmap. + +If the optional FRAME argument is provided, change only +in that frame; otherwise change each frame." + (while (not (find-face face)) + (setq face (signal 'wrong-type-argument (list 'facep face)))) + (while (cond ((stringp pixmap) + (unless (file-readable-p pixmap) + (setq pixmap (vector 'xbm ':file pixmap))) + nil) + ((and (consp pixmap) (= (length pixmap) 3)) + (setq pixmap (vector 'xbm ':data pixmap)) + nil) + (t t)) + (setq pixmap (signal 'wrong-type-argument + (list 'stipple-pixmap-p pixmap)))) + (while (and frame (not (framep frame))) + (setq frame (signal 'wrong-type-argument (list 'framep frame)))) + (set-face-background-pixmap face pixmap frame)))) (unless (fboundp 'x-color-values) ;; Emacs function missing in XEmacs 19.14. @@ -162,9 +207,8 @@ (or (frame-property frame 'background-color) - (color-instance-name - (specifier-instance - (face-background 'default)))) + (custom-face-background + 'default)) (error nil))) (or (string-match "XEmacs" emacs-version) window-system) @@ -240,15 +284,18 @@ (:underline (toggle :format "Underline: %[%v%]\n" :help-echo "\ Control whether the text should be underlined.") - set-face-underline-p) + set-face-underline-p + face-underline-p) (:foreground (color :tag "Foreground" :value "black" :help-echo "Set foreground color.") - set-face-foreground) + set-face-foreground + custom-face-foreground) (:background (color :tag "Background" :value "white" :help-echo "Set background color.") - set-face-background) + set-face-background + custom-face-background) ;; (:invert (const :format "Invert Face\n" ;; :sibling-args (:help-echo " ;;Reverse the foreground and background color. @@ -262,13 +309,16 @@ set-face-stipple)) "Alist of face attributes. -The elements are of the form (KEY TYPE SET) where KEY is a symbol +The elements are of the form (KEY TYPE SET GET) where KEY is a symbol identifying the attribute, TYPE is a widget type for editing the -attibute, SET is a function for setting the attribute value. +attibute, SET is a function for setting the attribute value, and GET is a function for getiing the attribute value. The SET function should take three arguments, the face to modify, the value of the attribute, and optionally the frame where the face should -be changed.") +be changed. + +The GET function should take two arguments, the face to examine, and +optonally the frame where the face should be examined.") (defun custom-face-attributes-set (face frame &rest atts) "For FACE on FRAME set the attributes [KEYWORD VALUE].... @@ -284,6 +334,24 @@ (funcall fun face value frame) (error nil))))) +(defun custom-face-attributes-get (face frame) + "For FACE on FRAME get the attributes [KEYWORD VALUE].... +Each keyword should be listed in `custom-face-attributes'. + +If FRAME is nil, use the default face." + (let ((atts custom-face-attributes) + att result get) + (while atts + (setq att (car atts) + atts (cdr atts) + get (nth 3 att)) + (when get + (let ((answer (funcall get face frame))) + (unless (equal answer (funcall get 'default frame)) + (when (widget-apply (nth 1 att) :match answer) + (setq result (cons (nth 0 att) (cons answer result)))))))) + result)) + (defun custom-set-face-bold (face value &optional frame) "Set the bold property of FACE to VALUE." (if value @@ -427,7 +495,7 @@ (defun custom-initialize-frame (&optional frame) "Initialize local faces for FRAME if necessary. -If FRAME is missing or nil, the first member (frame-list) is used." +If FRAME is missing or nil, the first member of (frame-list) is used." (unless frame (setq frame (car (frame-list)))) (unless (equal (custom-get-frame-properties) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/custom/custom.el --- a/lisp/custom/custom.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/custom/custom.el Mon Aug 13 09:24:17 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces -;; Version: 1.68 +;; Version: 1.69 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -129,13 +129,13 @@ 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 -symbol `t', which will match all frames, or an alist of the form +symbol t, which will match all frames, or an alist of the form \((REQ ITEM...)...) For the DISPLAY to match a FRAME, the REQ property of the frame must match one of the ITEM. The following REQ are defined: -`type' (the value of (window-system)) +`type' (the value of `window-system') Should be one of `x' or `tty'. `class' (the frame's color support) @@ -198,7 +198,7 @@ `(custom-declare-group (quote ,symbol) ,members ,doc ,@args)) (defun custom-add-to-group (group option widget) - "To existing GROUP add a new OPTION of type WIDGET, + "To existing GROUP add a new OPTION of type WIDGET. If there already is an entry for that option, overwrite it." (let* ((members (get group 'custom-group)) (old (assq option members))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/custom/wid-browse.el --- a/lisp/custom/wid-browse.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/custom/wid-browse.el Mon Aug 13 09:24:17 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: extensions -;; Version: 1.68 +;; Version: 1.69 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: diff -r 578fd4947a72 -r 7d55a9ba150c lisp/custom/wid-edit.el --- a/lisp/custom/wid-edit.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/custom/wid-edit.el Mon Aug 13 09:24:17 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: extensions -;; Version: 1.68 +;; Version: 1.69 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -25,7 +25,9 @@ (autoload 'Info-goto-node "info") (when (string-match "XEmacs" emacs-version) - (require 'overlay)) + (condition-case nil + (require 'overlay) + (error (load-library "x-overlay")))) (if (string-match "XEmacs" emacs-version) ;; XEmacs spell `intangible' as `atomic'. @@ -453,6 +455,7 @@ (widget-member (get (car widget) 'widget-type) property)) (t nil))) +;;;###autoload (defun widget-apply (widget property &rest args) "Apply the value of WIDGET's PROPERTY to the widget itself. ARGS are passed as extra arguments to the function." @@ -503,9 +506,10 @@ IMAGE should either be a glyph, or a name sans extension of an xpm or xbm file located in `widget-glyph-directory'. -WARNING: If you call this with a glyph, and you want theuser to be +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 -same glyph for multiple widgets, " +same glyph for multiple widgets, activating any of the glyphs will +cause the last created widget to be activated." (cond ((not (and (string-match "XEmacs" emacs-version) widget-glyph-enable (fboundp 'make-glyph) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/custom/widget-example.el --- a/lisp/custom/widget-example.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/custom/widget-example.el Mon Aug 13 09:24:17 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, extensions, faces, hypermedia -;; Version: 1.68 +;; Version: 1.69 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ (require 'widget) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/custom/widget.el --- a/lisp/custom/widget.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/custom/widget.el Mon Aug 13 09:24:17 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, extensions, faces, hypermedia -;; Version: 1.68 +;; Version: 1.69 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -46,6 +46,7 @@ ;; These autoloads should be deleted when the file is added to Emacs. (unless (fboundp 'load-gc) + (autoload 'widget-apply "wid-edit") (autoload 'widget-create "wid-edit") (autoload 'widget-insert "wid-edit") (autoload 'widget-browse "wid-browse" nil t) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/efs/Makefile --- a/lisp/efs/Makefile Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/efs/Makefile Mon Aug 13 09:24:17 2007 +0200 @@ -2,7 +2,7 @@ # # File: Makefile # Release: $efs release: 1.15 $ -# Version: $Revision: 1.5 $ +# Version: $Revision: 1.6 $ # RCS: # Description: Makefile for byte-compiling efs and dired. # Author: Andy Norman, HPLabs, Bristol, UK. @@ -145,7 +145,7 @@ .el.elc: BDIR=$(BDIR) CWD=$(CWD) VMDIR=$(VMDIR) \ - $(EMACS) -batch -l $(CWD)/fixup -f batch-byte-compile $(CWD)/$< + $(EMACS) -batch -no-site-file -l $(CWD)/fixup -f batch-byte-compile $(CWD)/$< .texi.info: $(EMACS) -batch -f batch-texinfo-format $(CWD)/$< diff -r 578fd4947a72 -r 7d55a9ba150c lisp/efs/default-dir.el --- a/lisp/efs/default-dir.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/efs/default-dir.el Mon Aug 13 09:24:17 2007 +0200 @@ -340,22 +340,23 @@ 'default-dir-view-file-other-frame))) -(defun default-dir-shell-command (command &optional insert) +(defun default-dir-shell-command (command &optional output-buffer) "Documented as original" (interactive (list (let ((prompt (format "Shell command in %s: " (default-directory)))) (cond - ((memq default-dir-emacs-variant '(fsf-19 xemacs)) - (read-from-minibuffer prompt nil nil nil - 'shell-command-history)) + ((eq default-dir-emacs-variant 'xemacs) + (read-shell-command "Shell command: ")) + ((eq default-dir-emacs-variant 'fsf-19) + (read-from-minibuffer prompt nil nil nil 'shell-command-history)) ((featurep 'gmhist) (let ((minibuffer-history-symbol 'shell-command-history)) (read-string prompt))) (t (read-string prompt)))) current-prefix-arg)) (let ((default-directory (expand-file-name (default-directory)))) - (default-dir-real-shell-command command insert))) + (default-dir-real-shell-command command output-buffer))) (efs-overwrite-fn "default-dir" 'shell-command 'default-dir-shell-command) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/efs/dired.el --- a/lisp/efs/dired.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/efs/dired.el Mon Aug 13 09:24:17 2007 +0200 @@ -377,6 +377,10 @@ "*If non-nil dired will revert dired buffers for modified subdirectories. See also dired-no-confirm .") +;;;###autoload +(defvar dired-refresh-automatically t + "*If non-nil, refresh dired buffers automatically after file operations.") + ;;; File name regular expressions and extensions. (defvar dired-trivial-filenames "^\\.\\.?$\\|^#" @@ -6188,11 +6192,12 @@ (defun dired-check-file-name-handler-alist () ;; Verify that dired is installed as the first item in the alist - (or (eq (cdr (car file-name-handler-alist)) 'dired-handler-fn) - (setq file-name-handler-alist - (cons - '("." . dired-handler-fn) - (dired-remove-from-file-name-handler-alist))))) + (and dired-refresh-automatically + (or (eq (cdr (car file-name-handler-alist)) 'dired-handler-fn) + (setq file-name-handler-alist + (cons + '("." . dired-handler-fn) + (dired-remove-from-file-name-handler-alist)))))) (defun dired-handler-fn (op &rest args) ;; Function to update dired buffers after I/O. diff -r 578fd4947a72 -r 7d55a9ba150c lisp/efs/efs-auto.el --- a/lisp/efs/efs-auto.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/efs/efs-auto.el Mon Aug 13 09:24:17 2007 +0200 @@ -3,12 +3,11 @@ ;; ;; File: efs-auto.el ;; Release: $efs release: 1.15 $ -;; Version: #Revision: 1.7 $ +;; Version: #Revision: 1.8 $ ;; RCS: ;; Description: Simple way of autoloading efs ;; Author: Andy Norman, Dawn ;; Created: Thu Sep 24 09:50:08 1992 -;; Modified: Sun Nov 27 11:45:28 1994 by sandy on gandalf ;; Language: Emacs-Lisp ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -37,7 +36,7 @@ (defconst efs-auto-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "#Revision: 1.7 $" 11 -2))) + (substring "#Revision: 1.8 $" 11 -2))) ;;; Interactive functions that should be accessible from here. @@ -47,5 +46,12 @@ "For a given HOST and USER, set or change the associated PASSWORD." t) (autoload 'efs-nslookup-host "efs" "Attempt to resolve a hostname using nslookup if possible." t) +(autoload 'efs-display-ftp-activity "efs" + "Displays the number of active background ftp sessions in the modeline. +Uses the variable `efs-mode-line-format' to determine how this will be +displayed." t) +(autoload 'efs-ftp-path "efs-cu" + "Parse PATH according to efs-path-regexp. +Returns a list (HOST USER PATH), or nil if PATH does not match the format.") ;;; end of efs-auto.el diff -r 578fd4947a72 -r 7d55a9ba150c lisp/efs/efs-dired.el --- a/lisp/efs/efs-dired.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/efs/efs-dired.el Mon Aug 13 09:24:17 2007 +0200 @@ -3,14 +3,13 @@ ;; ;; File: efs-dired.el ;; Release: $efs release: 1.15 $ -;; Version: #Revision: 1.31 $ +;; Version: #Revision: 1.32 $ ;; RCS: ;; Description: Extends much of Dired to work under efs. ;; Authors: Sebastian Kremer , ;; Andy Norman , ;; Sandy Rutherford ;; Created: Throughout the ages. -;; Modified: Sun Nov 27 12:19:46 1994 by sandy on gandalf ;; Language: Emacs-Lisp ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -25,7 +24,7 @@ (defconst efs-dired-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "#Revision: 1.31 $" 11 -2))) + (substring "#Revision: 1.32 $" 11 -2))) ;;;; ---------------------------------------------------------------- ;;;; User Configuration Variables @@ -37,18 +36,6 @@ (defvar efs-dired-verify-anonymous-modtime nil "If non-nil, dired modtimes are checked for anonymous logins.") -(defvar efs-remote-shell-file-name - (if (memq system-type '(hpux usg-unix-v)) ; hope that's right - "remsh" - "rsh") - "Remote shell used by efs.") - -(defvar efs-remote-shell-takes-user - (null (null (memq system-type '(aix-v3 hpux silicon-graphics-unix - berkeley-unix)))) - ;; Complete? Doubt it. - "Set to non-nil if your remote shell command takes \"-l USER\".") - ;;; Internal Variables (make-variable-buffer-local 'dired-ls-F-marks-symlinks) @@ -1530,14 +1517,17 @@ (efs-host-type host user) (nth 2 parsed))) (abbr (efs-relativize-filename file)) (result (efs-send-cmd host user - (list 'quote 'site 'chmod - mode path) - (format "doing chmod %s" - abbr)))) - (efs-del-from-ls-cache file t) + (list 'quote 'site 'chmod + mode path) + (format "doing chmod %s" + abbr)))) + (if (car result) - (efs-error host user (format "chmod: %s: \"%s\"" file - (nth 1 result))))) + (efs-dired-shell-call-process + (concat "chmod " mode " " (file-name-nondirectory file)) + (file-name-directory file))) + + (efs-del-from-ls-cache file t)) (error (setq bombed t))))))) (cdr args)) (if bombed 1 0))) ; return code diff -r 578fd4947a72 -r 7d55a9ba150c lisp/efs/efs-dump.el --- a/lisp/efs/efs-dump.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/efs/efs-dump.el Mon Aug 13 09:24:17 2007 +0200 @@ -19,11 +19,6 @@ (substring "#Revision: 1.1 $" 11 -2))) ;;;###autoload -(defvar allow-remote-paths t - "*Set this to nil if you don't want remote paths to access -remote files.") - -;;;###autoload (or (assoc efs-path-root-regexp file-name-handler-alist) (setq file-name-handler-alist (cons @@ -41,3 +36,5 @@ inhibit-file-name-handlers))) (inhibit-file-name-operation operation)) (apply operation args)))) + +;;; end of efs-dump.el diff -r 578fd4947a72 -r 7d55a9ba150c lisp/efs/efs-fnh.el --- a/lisp/efs/efs-fnh.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/efs/efs-fnh.el Mon Aug 13 09:24:17 2007 +0200 @@ -22,6 +22,11 @@ "/" (substring "#Revision: 1.3 $" 11 -2))) +;;;###autoload +(defvar allow-remote-paths t + "*Set this to nil if you don't want remote paths to access +remote files.") + ;;;; ---------------------------------------------------------------- ;;;; Loading emacs version files ;;;; ---------------------------------------------------------------- diff -r 578fd4947a72 -r 7d55a9ba150c lisp/efs/efs.el --- a/lisp/efs/efs.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/efs/efs.el Mon Aug 13 09:24:17 2007 +0200 @@ -6,7 +6,7 @@ ;; Version: #Revision: 1.56 $ ;; RCS: ;; Description: Transparent FTP support for the original GNU Emacs -;; from FSF and Lucid Emacs +;; from FSF and XEmacs ;; Authors: Andy Norman , ;; Sandy Rutherford ;; Created: Thu Oct 12 14:00:05 1989 (as ange-ftp) @@ -902,7 +902,7 @@ ;;; efs|Andy Norman and Sandy Rutherford ;;; |ange@hplb.hpl.hp.com and sandy@ibm550.sissa.it ;;; |transparent FTP Support for GNU Emacs -;;; |$Date: 1997/03/28 02:28:27 $|$efs release: 1.15 beta $| +;;; |$Date: 1997/04/05 18:07:24 $|$efs release: 1.15 beta $| ;;; Host and listing type notation: ;;; @@ -1388,6 +1388,18 @@ If you set this to nil, efs will wait an arbitrary amount of time to get output.") +(defvar efs-remote-shell-file-name + (if (memq system-type '(hpux usg-unix-v)) ; hope that's right + "remsh" + "rsh") + "Remote shell used by efs.") + +(defvar efs-remote-shell-takes-user + (null (null (memq system-type '(aix aix-v3 hpux silicon-graphics-unix + berkeley-unix)))) + ;; Complete? Doubt it. + "Set to non-nil if your remote shell command takes \"-l USER\".") + (defvar efs-make-backup-files efs-unix-host-types "*A list of operating systems for which efs will make Emacs backup files. The backup files are made on the remote host. @@ -8089,6 +8101,37 @@ (efs-build-mode-string-element group-int sgid nil) (efs-build-mode-string-element other-int nil sticky)))) +(defun efs-shell-call-process (command dir &optional in-background) + ;; Runs shell process on remote hosts. + (let* ((parsed (efs-ftp-path dir)) + (host (car parsed)) + (user (nth 1 parsed)) + (rdir (nth 2 parsed)) + (file-name-handler-alist nil)) + (or (string-equal (efs-internal-directory-file-name dir) + (efs-expand-tilde "~" (efs-host-type host) host user)) + (string-match "^cd " command) + (setq command (concat "cd " rdir "; " command))) + (setq command + (format "%s %s%s \"%s\"" ; remsh -l USER does not work well + ; on a hp-ux machine I tried + efs-remote-shell-file-name host + (if efs-remote-shell-takes-user + (concat " -l " user) + "") + command)) + (message "Doing shell command on %s..." host) + ;; do it + (let ((process-connection-type ; don't waste pty's + (null (null in-background)))) + (setq default-directory (file-name-directory efs-tmp-name-template)) + (if in-background + (progn + (setq mode-line-process '(": %s")) + (start-process "Shell" (current-buffer) + shell-file-name "-c" command)) + (call-process shell-file-name nil t nil "-c" command))))) + (defun efs-set-file-modes (file mode) ;; set-file-modes for remote files. ;; For remote files, if mode is nil, does nothing. @@ -8111,11 +8154,16 @@ nil nil (efs-cont (result line cont-lines) (host file r-file omode) (if result - (progn - (efs-set-host-property host 'chmod-failed t) - (message "CHMOD %s failed for %s on %s." omode r-file host) - (if efs-ding-on-chmod-failure - (progn (ding) (sit-for 1)))) + (let ((exit-code + (efs-shell-call-process + (concat "chmod " mode " " (file-name-nondirectory file)) + (file-name-directory file)))) + (if (not (equal 0 exit-code)) + (progn + (efs-set-host-property host 'chmod-failed t) + (message "CHMOD %s failed for %s on %s." omode r-file host) + (if efs-ding-on-chmod-failure + (progn (ding) (sit-for 1)))))) (let ((ent (efs-get-file-entry file))) (if ent (let* ((type @@ -8861,7 +8909,7 @@ (format efs-path-format-without-user host path) (format efs-path-format-string user host path)))) -(efs-define-fun efs-abbreviate-file-name (filename) +(efs-define-fun efs-abbreviate-file-name (filename &optional ignored-for-now) ;; Version of abbreviate-file-name for remote files. (efs-save-match-data (let ((tail directory-abbrev-alist)) @@ -10761,10 +10809,14 @@ ;; Yes, this is what it looks like. I'm defining the handler to run our ;; version whenever there is an environment variable. -(nconc file-name-handler-alist - (list - (cons "\\(^\\|[^$]\\)\\(\\$\\$\\)*\\$[{a-zA-Z0-9]" - 'efs-sifn-handler-function))) +(defvar efs-path-sifn-regexp "\\(^\\|[^$]\\)\\(\\$\\$\\)*\\$[{a-zA-Z0-9]" + "Regexp to match environment variables in file names.") + +(or (assoc efs-path-sifn-regexp file-name-handler-alist) + (nconc file-name-handler-alist + (list + (cons efs-path-sifn-regexp + 'efs-sifn-handler-function)))) ;;;; ------------------------------------------------------------ ;;;; Necessary overloads. diff -r 578fd4947a72 -r 7d55a9ba150c lisp/egg/egg-kinsoku.el --- a/lisp/egg/egg-kinsoku.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,310 +0,0 @@ -;; Kinsoku shori for Egg -;; Copyright (C) 1992 Free Software Foundation, Inc. -;; This file is part of Mule (MULtilingual Enhancement of GNU Emacs). -;; This file contains Japanese characters. - -;; Mule is free software distributed in the form of patches to GNU Emacs. -;; 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. - -;; Mule 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. - -;; Coded by S.Tomura, Electrotechnical Lab. (tomura@etl.go.jp) - -;;; 93.5.4 modified for Mule Ver.0.9.8 by K.Handa -;;; and K.Mugitani -;;; Kinsoku for GB and BIG5 added. - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Change Log before Ver.0.9.7 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Modified for Mule 0.9.4 by K.Handa 92-May-2 -;;; Since syntax of multi-byte char is defined now, -;;; check of English word is modified. -;;; Modified for Mule 0.9.0 by K.Handa 92-Mar-3 -;;; Nemacs 3.2 created by S. Tomura 89-Nov-15 -;;; Ver. 3.2 3.2 $BBP1~$KJQ99(B -;;; Nemacs 3.0 created by S. Tomura 89-Mar-17 -;;; Ver. 2.1a modified by S. Tomura 88-Nov-17 -;;; word$B$NESCf$GJ,3d$7$J$$$h$&$K=$@5$7$?!#(B -;;; Ver. 2.1 modified by S. Tomura 88-Jun-24 -;;; kinsoku-shori moves the point <= fill-column + kinsoku-nobashi -;;; Nemacs V.2.1 -;;; Ver. 1.1 modified by S. Tomura 88-Feb-29 -;;; Bug fix: regexp-quote is used. -;;; Ver. 1.0 Created by S. Tomura -;;; $B6XB'=hM}5!G=$rDs6!$9$k!#(B -;;; - -(defvar japanese-kinsoku-version "3.21") -;;; Last modified date: Wed Nov 15 11:59:00 1989 - -;;; The followings must be merged into kanji.el -;;; patched by S.Tomura 87-Dec-7 -;;; JIS code$B$NFC!?(B" -;;;; "$B!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O(B" -;;;; "$B!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_(B" -;;;; "$B!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o(B" -;;;; "$B!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~(B" -;;;; "$B"!"""#"$"%"&"'"(")"*"+","-".(B " -;;;; "$B&!&"&#&$&%&&&'&(&)&*&+&,&-&.&/(B" -;;;; "$B&0&1&2&3&4&5&6&7&8(B" -;;;; "$B&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O(B" -;;;; "$B&P&Q&R&S&T&U&V&W&X(B" -;;;; "$B'!'"'#'$'%'&'''(')'*'+','-'.'/(B" -;;;; "$B'0'1'2'3'4'5'6'7'8'9':';'<'='>'?(B" -;;;; "$B'@'A(B" -;;;; "$B'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_!I(B -;;;; "$B'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o(B" -;;;; "$B'p'q(B" -;;;; $B#0#1#2#3#4#5#6#7#8#9#A#B#C#D#E#F(B -;;;; "$B$!$#$%$'$)$C$c$e$g$n(B" -;;;; "$B%!%#%%%'%)%C%c%e%g%n%u%v(B" - -;;; Special characters for GB -;;; -;;; $A!!!"!#!$!%!&!'!(!)!*!+!,!-!.!/(B -;;;$A!0!1!2!3!4!5!6!7!8!9!:!;!!?(B -;;;$A!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O(B -;;;$A!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_(B -;;;$A!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o(B -;;;$A!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~(B -;;; $A"1"2"3"4"5"6"7"8"9":";"<"=">"?(B -;;;$A"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O(B -;;;$A"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_(B -;;;$A"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o(B -;;;$A"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~(B -;;; $A#!#"###$#%#&#'#(#)#*#+#,#-#.#/(B -;;;$A#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?(B -;;;$A#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O(B -;;;$A#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_(B -;;;$A#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o(B -;;;$A#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~(B -;;; $A$!$"$#$$$%$&$'$($)$*$+$,$-$.$/(B -;;;$A$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?(B -;;;$A$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B -;;;$A$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_(B -;;;$A$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o(B -;;;$A$p$q$r$s$t$u$v$w$x$y$z${$|$}$~(B -;;; $A%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/(B -;;;$A%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?(B -;;;$A%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B -;;;$A%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_(B -;;;$A%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o(B -;;;$A%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~(B -;;; $A&!&"&#&$&%&&&'&(&)&*&+&,&-&.&/(B -;;;$A&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?(B -;;;$A&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O(B -;;;$A&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_(B -;;;$A&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o(B -;;;$A&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~(B -;;; $A'!'"'#'$'%'&'''(')'*'+','-'.'/(B -;;;$A'0'1'2'3'4'5'6'7'8'9':';'<'='>'?(B -;;;$A'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O(B -;;;$A'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_(B -;;;$A'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o(B -;;;$A'p'q'r's't'u'v'w'x'y'z'{'|'}'~(B -;;; $A(!("(#($(%(&('((()(*(+(,(-(.(/(B -;;;$A(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(B -;;;$A(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(B -;;;$A(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(B -;;;$A(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(B - -;;; Special characters for BIG5 -;;; -;;; $(0!!!"!#!$!%!&!'!(!)!*!+!,!-!.!/(B -;;;$(0!0!1!2!3!4!5!6!7!8!9!:!;!!?(B -;;;$(0!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O(B -;;;$(0!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_(B -;;;$(0!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o(B -;;;$(0!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~(B -;;; $(0"!"""#"$"%"&"'"(")"*"+","-"."/(B -;;;$(0"0"1"2"3"4"5"6"7"8"9":";"<"=">"?(B -;;;$(0"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O(B -;;;$(0"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_(B -;;;$(0"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o(B -;;;$(0"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~(B -;;; $(0#!#"###$#%#&#'#(#)#*#+#,#-#.#/(B -;;;$(0#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?(B -;;;$(0#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O(B -;;;$(0#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_(B -;;;$(0#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o(B -;;;$(0#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~(B -;;; $(0$!$"$#$$$%$&$'$($)$*$+$,$-$.$/(B -;;;$(0$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?(B -;;;$(0$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B -;;;$(0$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_(B -;;;$(0$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o(B -;;;$(0$p$q$r$s$t$u$v$w$x$y$z${$|$}$~(B -;;; $(0%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/(B -;;;$(0%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?(B - -;;;###autoload -(defvar kinsoku-ascii t "Do kinsoku-shori for ASCII.") -;;;###autoload -(defvar kinsoku-jis t "Do kinsoku-shori for JISX0208.") -;;;###autoload -(defvar kinsoku-gb t "Do kinsoku-shori for GB2312.") -;;;###autoload -(defvar kinsoku-big5 t "Do kinsoku-shori for Big5..") - -(defvar kinsoku-ascii-bol "!)-_~}]:;',.?" "BOL kinsoku for ASCII.") -(defvar kinsoku-ascii-eol "({[" "EOL kinsoku for ASCII.") -(defvar kinsoku-jis-bol - (concat "$B!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!(B" - "$B!?!@!A!B!C!D!E!G!I!K!M!O!Q!S!U!W!Y![!k!l!m!n(B" - "$B$!$#$%$'$)$C$c$e$g$n%!%#%%%'%)%C%c%e%g%n%u%v(B") - "BOL kinsoku for JISX0208.") -(defvar kinsoku-jis-eol - "$B!F!H!J!L!N!P!R!T!V!X!Z!k!l!m!n!w!x(B" - "EOL kinsoku for JISX0208.") -(defvar kinsoku-gb-bol - (concat "$A!"!##.#,!$!%!&!'!(!)!*!+!,!-!/!1#)!3!5!7!9!;!=(B" - "$A!?#;#:#?#!!@!A!B!C!c!d!e!f#/#\#"#_#~#|(e(B") - "BOL kinsoku for GB2312.") -(defvar kinsoku-gb-eol - (concat "$A!.!0#"#(!2!4!6!8!:!!c!d!e#@!f!l(B" - "$A(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(h(B") - "EOL kinsoku for GB2312.") -(defvar kinsoku-big5-bol - (concat "$(0!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2(B" - "$(0!3!4!5!6!7!8!9!:!;!!@!B!D!F!H!J!L!N!P!R!T!V!X!Z!\!^!`!b(B" - "$(0!d!f!h!j!k!q!p"i"j"k"n"x$u$v$w$x$y$z${(B" - "$(0$|$}$~%!%"%#%$%%%&%'%(%)%*%+%:(B") - "EOL kinsoku for BIG5.") - -(defvar kinsoku-bol-chars - (concat - (if kinsoku-ascii kinsoku-ascii-bol "") - (if kinsoku-jis kinsoku-jis-bol "") - (if kinsoku-gb kinsoku-gb-bol "") - (if kinsoku-big5 kinsoku-big5-bol "")) - "$B9TF,6XB'$r9T$J$&J8;z$r$9$Y$F4^$`J8;zNs$r;XDj$9$k!#(B -A string consisting of such characters that can't be beginning of line.") - -(defvar kinsoku-eol-chars - (concat - (if kinsoku-ascii kinsoku-ascii-eol "") - (if kinsoku-jis kinsoku-jis-eol "") - (if kinsoku-gb kinsoku-gb-eol "") - (if kinsoku-big5 kinsoku-big5-eol "")) - "$B9TKv6XB'$r9T$J$&J8;z$r$9$Y$F4^$`J8;zNs$r;XDj$9$k!#(B -A string consisting of such characters that can't be end of line.") - -;;; -;;; Buffers for kinsoku-shori -;;; -(defconst $kinsoku-buff1$ " " "$B6XB'=hM}$N$?$a$N(B ASCII $BJ8;zMQ:n6HNN0h(B") -(defconst $kinsoku-buff2$ " " "$B6XB'=hM}$N$?$a$N(B 1BYTE $BJ8;zMQ:n6HNN0h(B") -(defconst $kinsoku-buff3$ " " "$B6XB'=hM}$N$?$a$N(B 2BYTE $BJ8;zMQ:n6HNN0h(B") - -(defun kinsoku-buff (ch) - "Set CHAR to appropriate kinsoku-buffer and return the buffer." - (let ((bytes (char-bytes ch))) - (cond ((= bytes 1) - (aset $kinsoku-buff1$ 0 ch) - (regexp-quote $kinsoku-buff1$)) - ((= bytes 2) - (aset $kinsoku-buff2$ 0 (char-component ch 0)) - (aset $kinsoku-buff2$ 1 (char-component ch 1)) - $kinsoku-buff2$) - (t - (aset $kinsoku-buff3$ 0 (char-component ch 0)) - (aset $kinsoku-buff3$ 1 (char-component ch 1)) - (aset $kinsoku-buff3$ 2 (char-component ch 2)) - $kinsoku-buff3$)))) - - -(defun kinsoku-bol-p () - "point$B$G2~9T$9$k$H9TF,6XB'$K?($l$k$+$I$&$+$r$+$($9!#(B -$B9TF,6XB'J8;z$O(Bkinsoku-bol-chars$B$G;XDj$9$k!#(B" - (string-match "" "") ;;;$B$3$l$O(Bregex comp$B$N%j%;%C%H$G$9!#(B - (string-match (kinsoku-buff (following-char)) - kinsoku-bol-chars)) - -(defun kinsoku-eol-p () - "point$B$G2~9T$9$k$H9TKv6XB'$K?($l$k$+$I$&$+$r$+$($9!#(B -$B9TKv6XB'J8;z$O(Bkinsoku-eol-chars$B$G;XDj$9$k!#(B" - (string-match "" "") ;;;$B$3$l$O(Bregex comp$B$N%j%;%C%H$G$9!#(B - (let ((ch (preceding-char))) - (string-match (kinsoku-buff ch) - kinsoku-eol-chars))) - -(defvar kinsoku-nobashi-limit nil - "$B6XB'=hM}$G9T$r?-$P$7$FNI$$H>3QJ8;z?t$r;XDj$9$k!#(B -$BHsIi@0?t0J30$N>l9g$OL58BBg$r0UL#$9$k!#(B") - -;;;###autoload -(defun kinsoku-shori () - "$B6XB'$K?($l$J$$E@$X0\F0$9$k!#(B -point$B$,9TF,6XB'$K?($l$k>l9g$O9T$r?-$P$7$F!"6XB'$K?($l$J$$E@$rC5$9!#(B -point$B$,9TKv6XB'$K?($l$k>l9g$O9T$r=L$a$F!"6XB'$K?($l$J$$E@$rC5$9!#(B -$B$?$@$7!"9T?-$P$7H>3QJ8;z?t$,(Bkinsoku-nobashi-limit$B$r1[$($k$H!"(B -$B9T$r=L$a$F6XB'$K?($l$J$$E@$rC5$9!#(B" - - (let ((bol-kin nil) (eol-kin nil)) - (if (and (not (bolp)) - (not (eolp)) - (or (setq bol-kin (kinsoku-bol-p)) - (setq eol-kin (kinsoku-eol-p)))) - (cond(bol-kin (kinsoku-shori-nobashi)) - (eol-kin (kinsoku-shori-chizime)))))) - -;;;###autoload -(defun kinsoku-shori-nobashi () - "$B9T$r?-$P$7$F6XB'$K?($l$J$$E@$X0\F0$9$k!#(B" - (let ((max-column (+ fill-column - (if (and (numberp kinsoku-nobashi-limit) - (>= kinsoku-nobashi-limit 0)) - kinsoku-nobashi-limit - 10000))) ;;; 10000$B$OL58BBg$N$D$b$j$G$9!#(B - ch1 ch2) ; 92.5.2 by K.Handa - (while (and (<= (+ (current-column) - (char-width (setq ch1 (following-char)))) - max-column) - (not (bolp)) - (not (eolp)) - (or (kinsoku-eol-p) - (kinsoku-bol-p) - ;;; English word $B$NESCf$G$OJ,3d$7$J$$!#(B - (and (< ch1 127) ; 92.5.2 by K.Handa - (< (setq ch2 (preceding-char)) 127) - (= ?w (char-syntax ch2)) - (= ?w (char-syntax ch1))))) - (forward-char)) - (if (or (kinsoku-eol-p) (kinsoku-bol-p)) - (kinsoku-shori-chizime)))) - -;;;###autoload -(defun kinsoku-shori-chizime () - "$B9T$r=L$a$F6XB'$K?($l$J$$E@$X0\F0$9$k!#(B" - (let (ch1 ch2) ; 92.5.2 by K.Handa - (while (and (not (bolp)) - (not (eolp)) - (or (kinsoku-bol-p) - (kinsoku-eol-p) - ;;; English word $B$NESCf$G$OJ,3d$7$J$$!#(B - (and ; 92.5.2 by K.Handa - (< (setq ch1 (following-char)) 127) - (< (setq ch2 (preceding-char)) 127) - (= ?w (char-syntax ch2)) - (= ?w (char-syntax ch1))))) - (backward-char)))) - - diff -r 578fd4947a72 -r 7d55a9ba150c lisp/egg/egg-wnn-client.el --- a/lisp/egg/egg-wnn-client.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1203 +0,0 @@ -;; Wnn3 server interface for Egg -;; Coded by S.Tomura, Electrotechnical Lab. (tomura@etl.go.jp) - -;; This file is part of Egg on Mule (Multilingual Environment) - -;; Egg is distributed in the forms of patches to GNU -;; Emacs under the terms of the GNU EMACS GENERAL PUBLIC -;; LICENSE which is distributed along with GNU Emacs by the -;; Free Software Foundation. - -;; Egg 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 EMACS GENERAL PUBLIC LICENSE for -;; more details. - -;; You should have received a copy of the GNU EMACS GENERAL -;; PUBLIC LICENSE along with Nemacs; see the file COPYING. -;; If not, write to the Free Software Foundation, 675 Mass -;; Ave, Cambridge, MA 02139, USA. - -;;; -;;; Nemacs - Wnn V3 server interface in elisp -;;; - -;;; 93.4.6 modified for Mule Ver.0.9.7.1 -;;; by T.Saneto -;;; Bug in wnn-bunsetu-yomi-equal fixed. - -(provide 'wnn-client) - -;;; -;;; Wnn deamon command constants -;;; - -(defconst JD_OPEN_IN 9 "$BJQ49(B") ;;; V3.0 -(defconst JD_OPEN 1 "$BMxMQpJs(B") ;;; 0x26 -(defconst JD_DICSTAT 39 "") ;;; 0x27 V3.0 - -(defconst JD_WDEL 49 "$BC18l:o=|(B") ;;; 0x31 -(defconst JD_WSCH 50 "$BC18l8!:w(B") ;;; 0x32 -(defconst JD_WREG 51 "$BC18lEPO?(B") ;;; 0x33 -(defconst JD_WHDEL 52 "") ;;; 0x34 - -(defconst JD_SETEVF 65 "$BJQ49J}<0JQ99(B") ;;; 0x41 -(defconst JD_GETEVF 66 "$BJQ49J}<0>pJs(B") ;;; 0x42 - -(defconst JD_MKDIR 81 "") ;;; 0x51 V3.0 -(defconst JD_ACCESS 82 "") ;;; 0x52 V3.0 -(defconst JD_WHO 83 "$BMxMQpJs!&<-=q>pJs$rB`Hr$7$^$7$?!#(B") (sit-for 0) - (wnn-server-close))) - (si:kill-emacs arg)) - -(or (fboundp 'si:do-auto-save) - (fset 'si:do-auto-save (symbol-function 'do-auto-save))) - -(defvar *wnn-do-auto-save-dict* nil) - -(defun do-auto-save (&optional nomsg) - (interactive) - (if (and *wnn-do-auto-save-dict* - (wnn-server-dict-save)) - (progn - (wnn-serve-dict-save) - (message "Wnn$B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$^$7$?!#(B") - (sit-for 1))) - (si:do-auto-save nomsg)) - -;;; Wnn Result Buffer's layout: -;;; -;;; { length:4 kana 0 kouhoSuu:4 kouhoNo:4 -;;; {jihoNo:4 serialNo:4 jirituGo 0 fuzokuGo 0 } ... -;;; } -;;; 0 0 0 0 - -(defun wnn-skip-length () - (goto-char (+ (point) 4))) - -(defun wnn-skip-4byte () - (goto-char (+ (point) 4))) - -(defun wnn-skip-yomi () - (skip-chars-forward "^\0") (forward-char 1)) - -(defun wnn-skip-kouho () - (goto-char (+ (point) 8)) - (skip-chars-forward "^\0") (forward-char 1) - (skip-chars-forward "^\0") (forward-char 1) - ) - -(defun wnn-forward-char (n) - (let ((i 1)) - (while (<= i n) - (if (<= 128 (following-char)) - (forward-char 2) - (forward-char 1)) - (setq i (1+ i))))) - -;;; -;;; entry function -;;; -(defun wnn-server-henkan-begin (henkan-string) - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (setq wnn-henkan-string henkan-string) - (set-buffer wnn-result-buffer) - (erase-buffer) - (setq wnn-bunsetu-suu 0) - (goto-char (point-min)) - (wnn-command-start JD_BEGIN) - (wnn-put-string* henkan-string) - (wnn-command-end) - (wnn-get-result) - (wnn-henkan-recieve))))) - -;;; -;;; entry function -;;; -(defun wnn-server-henkan-quit () t) - -;;; -;;; entry function -;;; -(defun wnn-server-henkan-end (bunsetu-no) - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (let (length jisho-no serial-no kouho-no p0) - (wnn-command-start JD_END) - (set-buffer wnn-result-buffer) - (goto-char (point-min)) - (let ((max (if (and (integerp bunsetu-no) - (<= 0 bunsetu-no) - (<= bunsetu-no wnn-bunsetu-suu)) - bunsetu-no - wnn-bunsetu-suu)) - (i 0)) - (while (< i max) - (setq length (wnn-get-4byte)) - (setq p0 (point)) - (wnn-skip-yomi) - (wnn-skip-4byte) ;;; kouho suu - (setq kouho-no (wnn-get-4byte)) - (let ((j 0)) - (while (< j kouho-no) - (wnn-skip-kouho) - (setq j (1+ j)))) - (setq jisho-no (wnn-get-4byte)) - (setq serial-no (wnn-get-4byte)) - (goto-char (+ p0 length)) - (set-buffer wnn-command-buffer) - (insert 0 ) - (wnn-put-4byte jisho-no) - (wnn-put-4byte serial-no) - (set-buffer wnn-result-buffer) - (setq i (1+ i))))) - (set-buffer wnn-command-buffer) - (insert 255) - (wnn-command-end) - (wnn-get-result) - (wnn-get-return-code))))) - -(defun wnn-result-goto-bunsetu (bunsetu-no) - (goto-char (point-min)) - (let (length (i 0)) - (while (< i bunsetu-no) - (setq length (wnn-get-4byte)) - (goto-char (+ (point) length)) - (setq i (1+ i))))) - -;;; -;;; entry function -;;; -(defun wnn-server-henkan-kakutei (bunsetu-no jikouho-no) - (cond((not (wnn-server-active-p)) (wnn-connection-error)) - ((or (< bunsetu-no 0) (<= wnn-bunsetu-suu bunsetu-no)) - nil) - (t - (let ((inhibit-quit t)) - (save-excursion - (set-buffer wnn-result-buffer) - (let (kouho-suu) - (wnn-result-goto-bunsetu bunsetu-no) - (wnn-skip-length) - (wnn-skip-yomi) - (setq kouho-suu (wnn-get-4byte)) - (if (or (< jikouho-no 0) (<= kouho-suu jikouho-no)) nil - (delete-char 4) (wnn-put-4byte jikouho-no) - t))))))) - -;;; -;;; entry function -;;; -(defun wnn-server-henkan-next (bunsetu-no) - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (let (p0 p1 kouho-suu length yomi0 yomi1) - (set-buffer wnn-result-buffer) - (wnn-result-goto-bunsetu bunsetu-no) - (setq length (wnn-get-4byte)) - (setq p0 (point)) - (setq p1 (+ p0 length)) - (setq yomi0 (point)) - (wnn-skip-yomi) - (setq yomi1 (point)) - (setq kouho-suu (wnn-peek-4byte)) - (cond((< 1 kouho-suu) t) - (t - (wnn-command-start JD_NEXT) - (wnn-put-4byte bunsetu-no) - (wnn-command-end) - (wnn-get-result) - (wnn-get-return-code) - (if (= wnn-return-code -1) wnn-return-code - (let (jl jisho-no serial-no kanji) - (set-buffer wnn-result-buffer) - (delete-region (point) p1) - (wnn-put-4byte wnn-return-code) - (wnn-put-4byte 0) ;;; current jikouho number - (set-buffer wnn-server-buffer) - (while (not (= (setq jl (wnn-get-4byte)) -1)) - (setq jisho-no (wnn-get-4byte) - serial-no (wnn-get-4byte) - kanji (wnn-get-string*)) - (set-buffer wnn-result-buffer) - (wnn-put-4byte jisho-no) - (wnn-put-4byte serial-no) - (insert kanji 0) - (let ((p1 (point)) fuzoku) - (goto-char yomi0) - (wnn-forward-char jl) - (setq fuzoku (point)) - (goto-char p1) - (insert-buffer-substring wnn-result-buffer fuzoku yomi1)) - (set-buffer wnn-server-buffer)) - (set-buffer wnn-result-buffer) - (setq length (- (point) p0)) - (goto-char p0) (delete-char -4) - (wnn-put-4byte length)) - t)))))))) - -(defun jd_reconv (bunsetu-no new-kana) - (if (not (wnn-server-active-p)) (wnn-connection-error) - (if (= bunsetu-no 0) (jd_begin kana) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_RECONV) - (wnn-put-4byte bunsetu-no) - (wnn-put-string* new-kana) - (wnn-command-end) - (wnn-get-result) - (wnn-henkan-recieve bunsetu-no)))))) - -;;; -;;; entry function -;;; -(defun wnn-server-bunsetu-henkou (bunsetu-no bunsetu-length) - (cond((not (wnn-server-active-p)) (wnn-connection-error)) - ((or (< bunsetu-no 0) (<= wnn-bunsetu-suu bunsetu-no)) - nil) - (t - (let ((inhibit-quit t)) - (save-excursion - (set-buffer wnn-result-buffer) - (wnn-result-goto-bunsetu bunsetu-no) - (wnn-command-start JD_TANCONV) - (wnn-put-4byte bunsetu-no) - (wnn-put-4byte bunsetu-length) - (wnn-command-end) - (wnn-get-result) - (setq wnn-bunsetu-suu bunsetu-no) - (wnn-henkan-recieve)))))) - -(defun wnn-henkan-recieve () - (wnn-get-return-code) - (if (= wnn-return-code -1) nil - (let (p0 p1 length s-ichi jl fl jisho-no serial-no kanji fuzokugo) - (setq wnn-bunsetu-suu (+ wnn-bunsetu-suu wnn-return-code)) - (if (zerop wnn-return-code) nil - (setq s-ichi (wnn-peek-4byte)) - (set-buffer wnn-result-buffer) - (delete-region (point) (point-max)) - (setq p0 (point)) - (insert wnn-henkan-string 0 0 0 0) - (goto-char p0) - (wnn-forward-char s-ichi) - (delete-region p0 (point)) - (set-buffer wnn-server-buffer) - (while (not (= (setq s-ichi (wnn-get-4byte)) -1)) - (setq jl (wnn-get-4byte) - fl (wnn-get-4byte) - jisho-no (wnn-get-4byte) - serial-no (wnn-get-4byte) - kanji (wnn-get-string*)) - (set-buffer wnn-result-buffer) - (setq p0 (point)) - (wnn-forward-char jl) - (setq p1 (point)) - (wnn-forward-char fl) - (setq fuzokugo (buffer-substring p1 (point))) - (insert 0) ;;; yomi - (wnn-put-4byte 1) ;;; kouho suu - (wnn-put-4byte 0) ;;; current kouho number - (wnn-put-4byte jisho-no) - (wnn-put-4byte serial-no) - (insert kanji 0 fuzokugo 0) - (setq length (- (point) p0)) - (goto-char p0) (wnn-put-4byte length) - (goto-char (+ (point) length)) - (set-buffer wnn-server-buffer))))) - wnn-return-code) - -(defun wnn-bunsetu-suu () wnn-bunsetu-suu) - -(defun wnn-bunsetu-kanji (bunsetu-no &optional buffer) - (let ((savebuffer (current-buffer))) - (unwind-protect - (progn - (set-buffer wnn-result-buffer) - (if (or (< bunsetu-no 0) - (<= wnn-bunsetu-suu bunsetu-no)) - nil - (wnn-result-goto-bunsetu bunsetu-no) - (wnn-skip-length) - (wnn-skip-yomi) - - (wnn-skip-4byte) ;;; kouho-suu - (let ((i 0) (max (wnn-get-4byte))) - (while (< i max) - (wnn-skip-kouho) - (setq i (1+ i)))) - - (let ( p1 p2 p3 ) - (goto-char (+ (point) 4 4)) - (setq p1 (point)) - (skip-chars-forward "^\0") (setq p2 (point)) - (forward-char 1) (skip-chars-forward "^\0") - (setq p3 (point)) - (if (null buffer) - (concat (buffer-substring p1 p2) (buffer-substring (1+ p2) p3)) - (set-buffer buffer) - (insert-buffer-substring wnn-result-buffer p1 p2) - (insert-buffer-substring wnn-result-buffer (1+ p2) p3) - nil)))) - (set-buffer savebuffer)))) - -(defun wnn-bunsetu-kanji-length (bunsetu-no) - (save-excursion - (set-buffer wnn-result-buffer) - (if (or (< bunsetu-no 0) - (<= wnn-bunsetu-suu bunsetu-no)) - nil - (wnn-result-goto-bunsetu bunsetu-no) - (wnn-skip-length) - (wnn-skip-yomi) - - (wnn-skip-4byte) ;;; kouho-suu - (let ((i 0) (max (wnn-get-4byte))) - (while (< i max) - (wnn-skip-kouho) - (setq i (1+ i)))) - - (let ( p1 p3 ) - (goto-char (+ (point) 4 4)) - (setq p1 (point)) - (skip-chars-forward "^\0")(forward-char 1) (skip-chars-forward "^\0") - (setq p3 (point)) - (- p3 p1 1))))) - -(defun wnn-bunsetu-yomi-moji-suu (bunsetu-no) - (save-excursion - (set-buffer wnn-result-buffer) - (if (or (< bunsetu-no 0) - (<= wnn-bunsetu-suu bunsetu-no)) - nil - (wnn-result-goto-bunsetu bunsetu-no) - (wnn-skip-length) - (let ((c 0) ch) - (while (not (zerop (setq ch (following-char)))) - (if (<= 128 ch) (forward-char 2) - (forward-char 1)) - (setq c (1+ c))) - c)))) - -(defun wnn-bunsetu-yomi (bunsetu-no &optional buffer) - (let ((savebuff (current-buffer))) - (unwind-protect - (progn - (set-buffer wnn-result-buffer) - (if (or (< bunsetu-no 0) - (<= wnn-bunsetu-suu bunsetu-no)) - nil - (wnn-result-goto-bunsetu bunsetu-no) - (wnn-skip-length) - (let (p1 p2 ) - (setq p1 (point)) - (skip-chars-forward "^\0") - (if (null buffer ) (buffer-substring p1 (point)) - (setq p2 (point)) - (set-buffer buffer) - (insert-buffer-substring wnn-result-buffer p1 p2) - t)))) - (set-buffer savebuff)))) - -(defun wnn-bunsetu-yomi-equal (bunsetu-no yomi) - (save-excursion - (set-buffer wnn-result-buffer) - (if (or (< bunsetu-no 0) - (<= wnn-bunsetu-suu bunsetu-no)) - nil - (wnn-result-goto-bunsetu bunsetu-no) - (wnn-skip-length) - (looking-at yomi)))) ; 93.4.6 by T.Saneto - -(defun wnn-bunsetu-kouho-suu (bunsetu-no) - (save-excursion - (set-buffer wnn-result-buffer) - (if (or (< bunsetu-no 0) - (<= wnn-bunsetu-suu bunsetu-no)) - nil - (wnn-result-goto-bunsetu bunsetu-no) - (wnn-skip-length) - (wnn-skip-yomi) - (wnn-get-4byte)))) - -(defun wnn-bunsetu-kouho-list (bunsetu-no) - (save-excursion - (set-buffer wnn-result-buffer) - (if (or (< bunsetu-no 0) - (<= wnn-bunsetu-suu bunsetu-no)) - nil - (wnn-result-goto-bunsetu bunsetu-no) - (wnn-skip-length) - (wnn-skip-yomi) - (let ((max (wnn-get-4byte)) (i 0) (result nil) p0 p1) - (wnn-skip-4byte) ;;; current kouhou number - (while (< i max) - (wnn-skip-4byte) (wnn-skip-4byte) - (setq p0 (point)) - (skip-chars-forward "^\0") - (setq p1 (point)) - (forward-char 1) - (skip-chars-forward "^\0") - (setq result - (cons (concat (buffer-substring p0 p1) - (buffer-substring (1+ p1) (point))) - result)) - (forward-char 1) - (setq i (1+ i))) - (nreverse result))))) - -(defun wnn-bunsetu-kouho-number (bunsetu-no) - (save-excursion - (set-buffer wnn-result-buffer) - (if (or (< bunsetu-no 0) - (<= wnn-bunsetu-suu bunsetu-no)) - nil - (wnn-result-goto-bunsetu bunsetu-no) - (wnn-skip-length) - (wnn-skip-yomi) - (wnn-skip-4byte) - (wnn-get-4byte))) - ) - -(defun wnn-bunsetu-kouho-kanji (bunsetu-no kouho-no) - (save-excursion - (set-buffer wnn-result-buffer) - (if (or (< bunsetu-no 0) - (<= wnn-bunsetu-suu bunsetu-no)) - nil - (wnn-result-goto-bunsetu bunsetu-no) - (wnn-skip-length) (wnn-skip-yomi) - (let ((kouho-suu (wnn-get-4byte))) - (if (or (< kouho-no 0) (<= kouho-suu kouho-no)) - nil - (wnn-skip-4byte) ;;; current kouho number - (let ((i 0)) - (while (< i kouho-no) - (wnn-skip-kouho) - (setq i (1+ i)))) - (let ( p1 p2 p3 ) - (goto-char (+ (point) 4 4)) - (setq p1 (point)) - (skip-chars-forward "^\0") (setq p2 (point)) - (forward-char 1) (skip-chars-forward "^\0") - (setq p3 (point)) - (concat (buffer-substring p1 p2) (buffer-substring (1+ p2) p3)))))))) - -(defun wnn-bunsetu-kouho-inspect (bunsetu-no kouho-no) - (save-excursion - (set-buffer wnn-result-buffer) - (if (or (< bunsetu-no 0) - (<= wnn-bunsetu-suu bunsetu-no)) - nil - (let (p0 p1 kouho-suu jiritugo fuzokugo yomi jishono serial ) - (wnn-result-goto-bunsetu bunsetu-no) - (wnn-skip-length) - (setq p0 (point)) - (wnn-skip-yomi) - (setq p1 (1- (point))) - (setq kouho-suu (wnn-get-4byte)) - (if (or (< kouho-no 0) (<= kouho-suu kouho-no)) - nil - (wnn-skip-4byte) ;;; current kouho number - (let ((i 0)) - (while (< i kouho-no) - (wnn-skip-kouho) - (setq i (1+ i)))) - (setq jishono (wnn-get-4byte)) - (setq serial (wnn-get-4byte)) - (setq jiritugo (wnn-get-string)) - (setq fuzokugo (wnn-get-string)) - (goto-char p1) - (if (not (equal "" fuzokugo)) (search-backward fuzokugo p0)) - (setq yomi (buffer-substring p0 (point))) - (list jiritugo fuzokugo yomi jishono serial)))))) - -(defun wnn-simple-command (op arg) - (if (wnn-server-active-p) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start op) - (wnn-put-4byte arg) - (wnn-command-end) - (wnn-get-result) - (wnn-get-return-code))) - (wnn-connection-error))) - -(defun jd_udp (dict-no) - (wnn-simpale-command JD_UDP dict-no)) - -(defun wnn-server-set-current-dict (dict-no) - (wnn-simple-command JD_UDCHG dict-no)) - -(defun wnn-server-dict-save () - (wnn-zero-arg-command JD_FREQSV)) - -(defun wnn-server-use-dict (dict-file-name hindo-file-name priority readonly-flag) - (if (not (wnn-server-active-p))(wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_DICADD) - (wnn-put-string dict-file-name) - (wnn-put-string hindo-file-name) - (wnn-put-4byte priority) - (wnn-put-4byte (if readonly-flag 1 0)) - (wnn-command-end) - (wnn-get-result) - (wnn-get-return-code))))) - -(defun jd_dicdel (dict-no) - (wnn-simple-command JD_DICDEL dict-no)) - -(defun jd_dicinfo () - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_DICINFO) - (wnn-command-end) - (wnn-get-result) - (let ((dic-no 0) (result nil)) - (while (not (= (setq dic-no (wnn-get-4byte)) -1)) - (setq result - (cons (list - dic-no - (wnn-get-4byte) ;;; ttl_hindo - (wnn-get-4byte) ;;; dic_type - (wnn-get-4byte) ;;; udp - (wnn-get-4byte) ;;; dic_size - (wnn-get-4byte) ;;; prioritry - (wnn-get-4byte) ;;; readonly no:0 yes:1 - (wnn-get-string) ;;; dic_name - (wnn-get-string) ;;; hindo_name - ) - result)) - (nreverse result))))))) - -(defun jd_dicstat (file-name) - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_DICSTAT) - (wnn-put-string file-name) - (wnn-command-end) - (wnn-get-result) - (wnn-get-return-code))))) - -(defun wnn-server-dict-delete (serial-no yomi) - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_WDEL) - (wnn-put-4byte serial-no) - (wnn-put-string* yomi) - (wnn-command-end) - (wnn-get-result) - (wnn-get-return-code))))) - -(defun wnn-server-dict-info (yomi) - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_WSCH) - (wnn-put-string* yomi) - (wnn-command-end) - (wnn-get-result) - (wnn-get-return-code) - (if (= wnn-return-code -1) nil - (let ((hindo 0) bunpo jisho serial kanji (result nil)) - (while (not (= (setq hindo (wnn-get-4byte)) -1)) - (setq bunpo (wnn-get-bit-positions)) - (setq jisho (wnn-get-4byte)) - (setq serial (wnn-get-4byte)) - (setq kanji (wnn-get-string*)) - (setq result - (if (integerp bunpo) - (cons (list kanji bunpo hindo jisho serial) - result) - (append - (mapcar (function (lambda (x) - (list kanji x hindo jisho serial))) - bunpo) - result)))) - (nreverse result))))))) - -(defun wnn-server-dict-add (kanji yomi bunpo) - (if (not (wnn-server-active-p))(wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_WREG) - (wnn-put-bit-position bunpo) - (wnn-put-4byte 129) ;;; 0x81 hindo always 1 with imatukattayo bit.(jl.c) - (wnn-put-string* kanji) - (wnn-put-string* yomi) - (wnn-command-end) - (wnn-get-result) - (wnn-get-return-code))))) - -(defun jd_whdel (serial-no yomi bunpo) - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_WHDEL) - (wnn-put-4byte serial-no) - (wnn-put-string* yomi) - (wnn-put-4byte bunpo) - (wnn-command-end) - (wnn-get-result) - (wnn-get-return-code))))) - -(defun jd_setevf (bunsetu-su p1 p2 p3 p4 p5) - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_SETEVF) - (wnn-put-4byte bunsetu-su) - (wnn-put-4byte p1) - (wnn-put-4byte p2) - (wnn-put-4byte p3) - (wnn-put-4byte p4) - (wnn-put-4byte p5) - (wnn-put-4byte 0);; p6 - (wnn-put-4byte 0);; p7 - (wnn-put-4byte 0);; p8 - (wnn-put-4byte 0);; p9 - (wnn-put-4byte 0);; p10 - (wnn-command-end) - (wnn-get-result) - (wnn-get-return-code))))) - -(defun jd_getevf () - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_GETEVF) - (wnn-command-end) - (wnn-get-result) - (prog1 - (list - (wnn-get-4byte) ;;; bunsetu-su - (wnn-get-4byte) ;;; p1 - (wnn-get-4byte) ;;; p2 - (wnn-get-4byte) ;;; p3 - (wnn-get-4byte) ;;; p4 - (wnn-get-4byte) ;;; p5 - ) - (wnn-get-4byte);; p6 - (wnn-get-4byte);; p7 - (wnn-get-4byte);; p8 - (wnn-get-4byte);; p9 - (wnn-get-4byte);; p10 - ))))) - -(defun wnn-server-make-directory (dir-name) - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_MKDIR) - (wnn-put-string dir-name) - (wnn-command-end) - (wnn-get-result) - (wnn-get-return-code))))) - -(defun wnn-server-file-access (file-name access-mode) - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_ACCESS) - (wnn-put-4byte access-mode) - (wnn-put-string file-name) - (wnn-command-end) - (wnn-get-result) - (setq wnn-return-code (wnn-get-4byte)) - (setq wnn-error-code nil) - wnn-return-code)))) - -(defun jd_who () - (if (not (wnn-server-active-p)) (wnn-connection-error) - (let ((inhibit-quit t)) - (save-excursion - (wnn-command-start JD_WHO) - (wnn-command-end) - (wnn-get-result) - (let ( number user host result) - (while (not (= (setq number (wnn-get-4byte)) -1)) - (setq result - (cons - (list number (wnn-get-string) (wnn-get-string)) - result))) - (nreverse result)))))) - -(defun jd_version () - (wnn-zero-arg-command JD_VERSION)) - -(defconst *wnn-error-alist* - '( - (1 :WNN_NO_EXIST - "$B%U%!%$%k$,B8:_$7$^$;$s!#(B") - (2 :WNN_NOT_USERDICT - "$B@5$7$$%f!<%6!<<-=q$G$O$"$j$^$;$s!#(B") - (3 :WNN_MALLOC_ERR - "$B%a%b%j(Balloc$B$G<:GT$7$^$7$?!#(B") - (4 :WNN_NOT_SYSTEM - "$B@5$7$$%7%9%F%`<-=q$G$O$"$j$^$;$s!#(B") - (5 :WNN_NOT_A_DICT - "$B@5$7$$<-=q$G$O$"$j$^$;$s!#(B") - (6 :WNN_FILE_NO_SPECIFIED - "$B%U%!%$%kL>$,;XDj$5$l$F$$$^$;$s!#(B") - (8 :WNN_HINDO_FILE_NOT_SPECIFIED - "$B%7%9%F%`<-=q$KBP$7$F!"IQEY%U%!%$%k$N;XDj$,$"$j$^$;$s!#(B") - (9 :WNN_JISHOTABLE_FULL - "$B<-=q%F!<%V%k$,0lGU$G$9!#(B") - (10 :WNN_HINDO_NO_MATCH - "$BIQEY%U%!%$%k$,!";XDj$5$l$?<-=q$NIQEY%U%!%$%k$G$O$"$j$^$;$s!#(B") - (11 :WNN_PARAMR - "$B%U%!%$%k$NFI$_9~$_8"8B$,$"$j$^$;$s!#(B") - (12 :WNN_HJT_FULL - "$B%0%m!<%P%kIQEY%F!<%V%k$,0lGU$G$9!#(B") - (13 :WNN_JT_FULL - "$B%0%m!<%P%k<-=q%F!<%V%k$,0lGU$G$9!#(B") - (15 :WNN_PARAMW - "$B%U%!%$%k$KBP$9$k=q$-9~$_8"8B$,$"$j$^$;$s!#(B") - (16 :WNN_OPENF_ERR - "$B%U%!%$%k$,%*!<%W%s$G$-$^$;$s!#(B") -;;; $B<-=q:o=|4X78$N%(%i!<(B - (20 :WNN_DICT_NOT_USED - "$B$=$NHV9f$N<-=q$O!";H$o$l$F$$$^$;$s!#(B") -;;; $B%f!<%6!<<-=qJQ994X78$N%(%i!<(B -;;; -;;;WNN_DICT_NOT_USED -;;; - (21 :WNN_NOT_A_USERDICT - "$B;XDj$5$l$F<-=q$O!"%f!<%6!<<-=q$G$O$"$j$^$;$s!#(B") - (22 :WNN_READONLY - "$B%j!<%I%*%s%j!<$N<-=q$O!"%+%l%s%H%f!<%6!<<-=q$K$O$G$-$^$;$s!#(B") -;;; $B<-=q%;!<%V4X78$N%(%i!<(B -;;; -;;; WNN_PARAMW -;;; WNN_OPENF_ERR -;;; $BJQ49;~$N%(%i!<(B -;;; jishobiki.c - (30 :WNN_JMT_FULL - "$B<-=q%F!<%V%k$,$"$U$l$F$$$^$9!#(B ") - - (31 :WNN_LONG_MOJIRETSU - "$BJQ49$7$h$&$H$9$kJ8;zNs$,D92a$.$^$9!#(B") - (32 :WNN_WKAREA_FULL - "$BIUB08l2r@ONN0h$,ITB-$7$F$$$^$9!#(B") - (33 :WNN_KAREA_FULL - "$B2r@ONN0h$,ITB-$7$F$$$^$9!#(B") - -;;; $BC18lEPO?;~$N%(%i!<(B - (40 :WNN_YOMI_LONG - "$BFI$_$,D92a$.$^$9!#(B") - (41 :WNN_KANJI_LONG - "$B4A;z$,D92a$.$^$9!#(B") - (42 :WNN_BAD_YOMI - "$BFI$_$KITE,Ev$JJ8;z$,4^$^$l$F$$$^$9!#(B") - (43 :WNN_NO_YOMI - "$BFI$_$ND9$5$,(B0$B$G$9!#(B") - (44 :WNN_NO_CURRENT - "$B%+%l%s%H<-=q$,B8:_$7$^$;$s!#(B") - (45 :WNN_RDONLY - "$B%j!<%I%*%s%j!<$N<-=q$KEPO?$7$h$&$H$7$^$7$?!#(B") - -;;; $BC18l:o=|;~!"IJ;l:o=|;~$N%(%i!<(B -;;; -;;;WNN_NO_CURRENT -;;;WNN_RDONLY -;;; - (50 :WNN_WORD_NO_EXIST - "$B;XDj$5$l$?C18l$,B8:_$7$^$;$s!#(B") - -;;; $B$,$J$$(B ") - (82 :WNN_BAD_HOST - " $B%[%9%HL>$,$J$$(B ") - )) - -(defun wnn-error-symbol (code) - (let ((pair (assoc code *wnn-error-alist*))) - (if (null pair) - (list ':wnn-unknown-error-code code) - (car (cdr pair))))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/games/xmine.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/games/xmine.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,735 @@ +;;; xmine.el --- Mine game for XEmacs + +;; Author: Jens Lautenbacher +;; Keywords: games +;; Version: 1.2 + +(defconst xmine-version-number "1.2" "XEmacs Mine version number.") +(defconst xmine-version (format "XEmacs Mine v%s by Jens Lautenbacher © 1997" + xmine-version-number) + "Full XEmacs Mine version number.") + +;; 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. + +;; Commentary: This is a complete reimplementation of the classical +;; mine searching game known from various OS/GUIs under names like +;; xmine, minesweeper etc. + +;; The idea to implement this in elisp is from +;; Jacques Duthen , +;; the author of the original mine game for GNU Emacs. This version +;; has to the best of my knowledge no code in common with his version, +;; but cudos go to him for first starting this... +;; +;; I mainly wrote this as an example how graphics handling in XEmacs +;; is possible. I think I did it the right way, using an extension to +;; the annotation mechanism and via extensive use of `slots' (realized +;; as properties of extents) to hold the data in the object itself. +;; (Of course this is not true. The keyboard handling is controlled from +;; the "outside" of the objects. But at one time during development +;; before hacking the keyboard controls the code really _was_ nice... +;; now it's a bad messing with slots and controls from the outside) +;; +;; Code: +;; +;;; First of all we'll define the needed varibles. + +(defgroup xmine nil + "The well known mine searching game." + :group 'games) + +(defcustom xmine-width 25 + "The width of the mine field" + :group 'xmine + :type 'integer) + +(defcustom xmine-height 20 + "The height of the mine field" + :group 'xmine + :type 'integer) + +(defcustom xmine-glyph-dir (concat data-directory "mine/") + "The directory where the mine glyphs reside" + :group 'xmine + :type 'directory) + +(defface xmine-hidden-face + '((t + (:background "blue"))) + "The face used for hidden tiles on ttys" + :group 'xmine) + +(defface xmine-flagged-face + '((t + (:background "red"))) + "The face used for flagged tiles on ttys" + :group 'xmine) + +(defface xmine-number-face + '((t + (:background "green"))) + "The face used for unhidden, numbered tiles on ttys" + :group 'xmine) + + +(defvar xmine-pad-glyph + (make-glyph + (if (and (eq window-system 'x) (featurep 'xpm)) + (concat xmine-glyph-dir "pad.xpm") + " "))) + +(defvar xmine-title-glyph + (make-glyph + (if (and (eq window-system 'x) (featurep 'xpm)) + (concat xmine-glyph-dir "splash.xpm") + "------------------ XEmacs XMine ------------------"))) + +(defvar xmine-glyph-production-list + '(("xmine-new-up" "new_up.gif" "new" nil ) + ("xmine-new-down" "new_down.gif" "NEW" nil ) + ("xmine-quit-up" "quit_up.gif" "quit" nil ) + ("xmine-quit-down" "quit_down.gif" "QUIT" nil ) + ("xmine-up-glyph" "empty_16_up.gif" "@ " xmine-hidden-face ) + ("xmine-up-sel-glyph" "empty_16_up_sel.gif" "@<" xmine-hidden-face ) + ("xmine-down-glyph" "empty_16_down.gif" "? " nil ) + ("xmine-flagged-glyph" "flagged_16_up.gif" "! " xmine-flagged-face) + ("xmine-flagged-sel-glyph" "flagged_16_up_sel.gif" "!<" xmine-flagged-face) + ("xmine-mine-glyph" "bomb_16_flat.gif" "* " nil ) + ("xmine-mine-sel-glyph" "bomb_16_flat.gif" "*<" nil ) + ("xmine-trapped-glyph" "bomb_trapped_16_flat.gif" "X " nil ) + ("xmine-0-glyph" "empty_16_flat.gif" ". " nil ) + ("xmine-0-sel-glyph" "empty_16_flat_sel.gif" ".<" nil ) + ("xmine-1-glyph" "1_16_flat.gif" "1 " xmine-number-face ) + ("xmine-1-sel-glyph" "1_16_flat_sel.gif" "1<" xmine-number-face ) + ("xmine-2-glyph" "2_16_flat.gif" "2 " xmine-number-face ) + ("xmine-2-sel-glyph" "2_16_flat_sel.gif" "2<" xmine-number-face ) + ("xmine-3-glyph" "3_16_flat.gif" "3 " xmine-number-face ) + ("xmine-3-sel-glyph" "3_16_flat_sel.gif" "3<" xmine-number-face ) + ("xmine-4-glyph" "4_16_flat.gif" "4 " xmine-number-face ) + ("xmine-4-sel-glyph" "4_16_flat_sel.gif" "4<" xmine-number-face ) + ("xmine-5-glyph" "5_16_flat.gif" "5 " xmine-number-face ) + ("xmine-5-sel-glyph" "5_16_flat_sel.gif" "5<" xmine-number-face ) + ("xmine-6-glyph" "6_16_flat.gif" "6 " xmine-number-face ) + ("xmine-6-sel-glyph" "6_16_flat_sel.gif" "6<" xmine-number-face ) + ("xmine-7-glyph" "7_16_flat.gif" "7 " xmine-number-face ) + ("xmine-7-sel-glyph" "7_16_flat_sel.gif" "7<" xmine-number-face ) + ("xmine-8-glyph" "8_16_flat.gif" "8 " xmine-number-face ) + ("xmine-8-sel-glyph" "8_16_flat_sel.gif" "8<" xmine-number-face ))) + +(defun xmine-generate-glyphs () + (let ((list xmine-glyph-production-list) + elem var gif text face) + (while (setq elem (pop list)) + (setq var (car elem) + gif (cadr elem) + text (caddr elem) + face (cadddr elem)) + (set (intern var) + (make-glyph (if (eq window-system 'x) + (concat xmine-glyph-dir gif) + text))) + (if face + (set-glyph-face (eval (intern-soft var)) face))))) + +(xmine-generate-glyphs) + +(defvar xmine-key-sel-button nil) + +(defun xmine-up-glyph (ext) + (if (equal ext xmine-key-sel-button) + (progn + (set-extent-property ext 'xmine-non-selected-glyph xmine-up-glyph) + xmine-up-sel-glyph) + xmine-up-glyph)) + +(defun xmine-flagged-glyph (ext) + (if (equal ext xmine-key-sel-button) + (progn + (set-extent-property ext 'xmine-non-selected-glyph xmine-flagged-glyph) + xmine-flagged-sel-glyph) + xmine-flagged-glyph)) + +(defcustom xmine-%-of-mines 12 + "The percentage of tiles that should be mines." + :group 'xmine + :type 'integer) + +(defcustom xmine-balloon-list (list "What are you waiting for?" + "Push me!" + "Come on. Don't sleep." + "Are you sure?" + "Are you sleeping?" + "Yes! Do it!" + "I'm getting bored." + "You will NEVER beat me.") + "(Random) texts for the balloon-help property of the tiles" + :group 'xmine + :type '(repeat (string))) + +(defcustom xmine-background "white" + "The background color of XMine's buffer. +Many colors will not blend nicely with the logo. Shades of light grey are +preferred if you don't want to use white." + :group 'xmine + :type 'color) + +(defvar xmine-keymap nil) + +(if xmine-keymap () + (setq xmine-keymap (make-sparse-keymap)) + (suppress-keymap xmine-keymap) + (define-key xmine-keymap [up] 'xmine-key-up) + (define-key xmine-keymap [down] 'xmine-key-down) + (define-key xmine-keymap [right] 'xmine-key-right) + (define-key xmine-keymap [left] 'xmine-key-left) + (define-key xmine-keymap "e" 'xmine-key-up) + (define-key xmine-keymap "c" 'xmine-key-down) + (define-key xmine-keymap "f" 'xmine-key-right) + (define-key xmine-keymap "s" 'xmine-key-left) + (define-key xmine-keymap "w" 'xmine-key-up-left) + (define-key xmine-keymap "x" 'xmine-key-down-left) + (define-key xmine-keymap "r" 'xmine-key-up-right) + (define-key xmine-keymap "v" 'xmine-key-down-right) + (define-key xmine-keymap [return] 'xmine-key-action3) + (define-key xmine-keymap "d" 'xmine-key-action3) + (define-key xmine-keymap [(shift space)] 'xmine-key-action2) + (define-key xmine-keymap "a" 'xmine-key-action2) + (define-key xmine-keymap [space] 'xmine-key-action1) + (define-key xmine-keymap [Q] 'xmine-key-quit) + (define-key xmine-keymap [N] 'xmine-key-new)) + +(defvar xmine-number-of-flagged 0) + +(defvar xmine-number-of-opened 0) + +(defvar xmine-number-of-mines 0) + +(defvar xmine-field nil) + +(defvar xmine-buffer nil) + +(defvar xmine-quit-ann nil) + +(defvar xmine-new-ann nil) + +(defvar xmine-count-ann nil) + +(defvar xmine-count-glyph (make-glyph "Mines: 00")) + +(defvar xmine-mode-hook nil + "*Hook called by `xmine-mode-hook'.") + +;; the next function is more or less stolen from annotation.el and +;; modified to fit in our scheme were all three buttons should trigger +;; actions + +(defun xmine-activate-function-button (event) + (interactive "e") + (let* ((extent (event-glyph-extent event)) + (button (event-button event)) + (action (intern (concat "action" (number-to-string button)))) + (mouse-down t) + (up-glyph nil)) + ;; make the glyph look pressed + (cond ((annotation-down-glyph extent) + (setq up-glyph (annotation-glyph extent)) + (set-annotation-glyph extent (annotation-down-glyph extent)))) + (while mouse-down + (setq event (next-event event)) + (if (button-release-event-p event) + (setq mouse-down nil))) + ;; make the glyph look released + (cond ((annotation-down-glyph extent) + (set-annotation-glyph extent up-glyph))) + (if (eq extent (event-glyph-extent event)) + (if (extent-property extent action) + (funcall (extent-property extent action) extent))))) + +;;; Here we define the button object's constructor function + +(defun xmine-button-create (x y type) + (let ((ext (make-annotation + xmine-up-glyph nil 'text nil nil xmine-down-glyph nil))) + (set-extent-property ext 'action1 'xmine-action1) + (set-extent-property ext 'action2 'xmine-beep) + (set-extent-property ext 'action3 'xmine-action3) + (set-extent-property ext 'xmine-glyph (xmine-type-to-glyph type)) + (set-extent-property ext 'xmine-sel-glyph (xmine-type-to-sel-glyph type)) + (set-extent-property ext 'xmine-type type) + (set-extent-property ext 'xmine-x x) + (set-extent-property ext 'xmine-y y) + (set-extent-property ext 'xmine-flagged nil) + (set-extent-property ext 'xmine-hidden t) + (set-extent-property ext 'end-open t) + (set-extent-property ext 'balloon-help (xmine-balloon-text)) + (aset xmine-field (+ (* (1- y) xmine-width) (1- x)) ext))) + +;;; ...and this is the second global function to change a +;;; button object. It is only needed during creation of the board. + +(defun xmine-button-change-type (ext type) + (set-extent-property ext 'xmine-glyph (xmine-type-to-glyph type)) + (set-extent-property ext 'xmine-sel-glyph (xmine-type-to-sel-glyph type)) + (set-extent-property ext 'xmine-type type)) + +;;; some needed predicates. + +(defun xmine-flat-button-p (ext) + (and ext + (not (extent-property ext 'xmine-hidden)) + (equal "0" (extent-property ext 'xmine-type)))) + +(defun xmine-mine-button-p (ext) + (and ext + (equal "mine" (extent-property ext 'xmine-type)))) + +;;; the next three functions are helper functions used inside a button +;;; object. + +(defun xmine-balloon-text () + (nth (random (length xmine-balloon-list)) xmine-balloon-list)) + +(defun xmine-beep (&rest forget) + (beep)) + +(defun xmine-type-to-glyph (type) + (eval (intern-soft (concat "xmine-" type "-glyph")))) + +(defun xmine-type-to-sel-glyph (type) + (eval (intern-soft (concat "xmine-" type "-sel-glyph")))) + +;;; the next three functions are the main functions that are used +;;; inside the button objects and which are bound to the 'action1, +;;; 'action2 and 'action3 slots respectively + +(defun xmine-action1 (ext &optional no-repaint force) + "This unhides a hidden button" + (if (or force + (not (extent-property ext 'xmine-flagged))) + (progn + (if (and (not force) + (extent-property ext 'xmine-hidden)) + (setq xmine-number-of-opened (1+ xmine-number-of-opened))) + (set-extent-property ext 'xmine-hidden nil) + (set-annotation-glyph ext (if (equal ext xmine-key-sel-button) + (progn + (set-extent-property + ext 'xmine-non-selected-glyph + (extent-property ext 'xmine-glyph)) + (extent-property ext 'xmine-sel-glyph)) + (extent-property ext 'xmine-glyph))) + (set-extent-property ext 'action3 nil) + (set-extent-property ext 'action1 nil) + (set-extent-property ext 'balloon-help nil) + (set-extent-property ext 'action2 'xmine-action2) + (if (not no-repaint) + (progn + (xmine-field-repaint ext) + (if (xmine-game-solved-p) (xmine-end-game))))))) + +(defun xmine-action2 (ext) + "This unhides all hidden neighbours of a button. +It is meant as convenience function you can use if you're sure that +you've marked all mines around the button correctly (or you're sure +there isn't one)" + (let ((list (xmine-get-neighbours ext)) + next) + (while (setq next (pop list)) + (if (not (xmine-flat-button-p next)) (xmine-action1 next))))) + +(defun xmine-action3 (ext) + "This toggles the flagged status of a button. +You flag a button if you know - or think - that there's a mine under it" +(if (extent-property ext 'xmine-flagged) + (progn + (set-annotation-glyph ext (xmine-up-glyph ext)) + (set-extent-property ext 'action1 'xmine-action1) + (set-extent-property ext 'xmine-flagged nil) + (setq xmine-number-of-flagged (1- xmine-number-of-flagged)) + (set-annotation-glyph xmine-count-ann + (make-glyph + (format "Mines: %2d" + (- xmine-number-of-mines + xmine-number-of-flagged))))) + (if (= xmine-number-of-flagged xmine-number-of-mines) + (progn + (beep) + (message + "Impossible. You seem to have marked too many tiles as mines?")) + (set-annotation-glyph ext (xmine-flagged-glyph ext)) + (set-extent-property ext 'action1 nil) + (set-extent-property ext 'xmine-flagged t) + (setq xmine-number-of-flagged (1+ xmine-number-of-flagged)) + (if (xmine-game-solved-p) (xmine-end-game) + (set-annotation-glyph xmine-count-ann + (make-glyph + (format "Mines: %2d" + (- xmine-number-of-mines + xmine-number-of-flagged)))))))) + + +;;; what to do after a button is unhidden: We (maybe) have to repaint +;;; parts of the board. This is done here recursively. + +(defun xmine-field-repaint (ext) + (let* ((flatp (xmine-flat-button-p ext)) + (minep (xmine-mine-button-p ext)) + (neighbours (xmine-get-neighbours ext)) + (max-lisp-eval-depth (* 8 xmine-width xmine-height)) + next-ext ext-list) + (cond (flatp + (while (setq next-ext (pop neighbours)) + (if (extent-property next-ext 'xmine-hidden) + (progn + (xmine-action1 next-ext 'no-repaint) + (and (equal "0" (extent-property next-ext 'xmine-type)) + (push next-ext ext-list))))) + (while ext-list + (setq next-ext (pop ext-list)) + (xmine-field-repaint next-ext))) + (minep + (set-extent-property ext 'xmine-glyph xmine-trapped-glyph) + (set-extent-property ext 'xmine-sel-glyph xmine-trapped-glyph) + (xmine-show-all) + (xmine-end-game-trapped))))) + + +(defun xmine-get-neighbours (ext) + "This gives back a list of all neighbours of a button, correctly + handling buttons at the side or corner of course" +(let* ((x (extent-property ext 'xmine-x)) + (y (extent-property ext 'xmine-y)) + next-coord next list + (neighbours (list (list (1- x) (1+ y)) + (list x (1+ y)) + (list (1+ x) (1+ y)) + (list (1- x) (1- y)) + (list x (1- y)) + (list (1+ x) (1- y)) + (list (1+ x) y) + (list (1- x) y)))) + (while (setq next-coord (pop neighbours)) + (if (setq next (xmine-field-button-at (car next-coord) + (cadr next-coord))) + (push next list))) + list)) + + +;;; the next four functions are used to know if we're at the end of +;;; the game (either successfully or exploded) and do the approbate +;;; action + +(defun xmine-game-solved-p () + "You have solved the game successfully if the number of flagged +mines plus the number of unhidden buttons equals width*height of the field" + (equal (+ xmine-number-of-flagged xmine-number-of-opened) + (* xmine-width xmine-height))) + +(defun xmine-end-game () + (beep) + (set-annotation-glyph xmine-count-ann + (make-glyph " Solved. "))) + +(defun xmine-end-game-trapped () + (beep) + (set-annotation-glyph xmine-count-ann + (make-glyph "++ RIP ++"))) + +(defun xmine-show-all () + (let ((list (append xmine-field nil)) + next) + (while (setq next (pop list)) + (xmine-action1 next 'no-repaint 'force)))) + + +(defun xmine-field-button-at (x y) + "This function gives back the button at a given coordinate pair (x y) +It is only used during creation of the board and when getting the +neighbours of a button (and for keyboard handling...), as we don't +want to use coordinates in the main loop, only the button object +itself should be referenced. Of course the use of this function could +be avoided in xmine-get-neighbours by storing the neighbour buttons +directly in the button, but this seems to be a bit oversized for this +little game." + (if (or (> x xmine-width) (< x 1) + (> y xmine-height) (< y 1)) nil + (aref xmine-field (+ (* (1- y) xmine-width) (1- x))))) + +(defun xmine-mode () +"A mode for playing the well known mine searching game. + + `\\\\[xmine-activate-function-button1]' or `\\\\[xmine-key-action1]' unhides a tile, + `\\\\[xmine-activate-function-button2]' or `\\\\[xmine-key-action2]' unhides all neighbours of a tile, + `\\\\[xmine-activate-function-button3]' or `\\\\[xmine-key-action3]' (un)flagges a tile to hold a mine. + + `\\[xmine-key-new]' starts a new game. + `\\[xmine-key-quit]' ends a game. + +All keybindings (with alternatives) currently in effect: + \\{xmine-keymap} + +The rules are quite easy: You start by unhiding (random) tiles. An unhidden +tile showing a number tells you something about the number of mines in it's +neighborhood, where the neighborhood are all 8 tiles (or less if it's +at a border) around the tile. + +E.g. a \"1\" shows you that there is only one mine in the neighborhood of +this tile. Empty tiles have no mines around them, and empty tiles in +the neighborhood of another empty tile are all automatically unhidden +if you unhide one of them. You need to find a strategy to use the +information you have from the numbers to \"flag\" the tiles with mines +under them and unhide all other tiles. If you correctly made this +without accidently unhiding a mine, you've won. + +If you are sure you have correctly flagged all mines around a unhidden tile, +you can use Button-2 or \\[xmine-key-action2] on it to unhide all it's +neighbors. But beware: If you made a mistake by flagging the wrong mines, +you'll blow up! + +Have Fun." + (interactive) + (xmine-field-create)) + +(fset 'xmine 'xmine-mode) + +(defun xmine-field-create () + "We create the playing board here." + (let ((width 1) + (height 1) + (pop-up-windows nil) + total) + (xmine-buffer-init) + (pop-to-buffer xmine-buffer) + (setq total (* xmine-height xmine-width)) + (setq xmine-field (make-vector total nil)) + (xmine-init-mines + (setq xmine-number-of-mines + (min 99 (round (* (/ (float xmine-%-of-mines) 100) total))))) + (insert "\n ") + (set-extent-end-glyph (make-extent (point) (point)) xmine-title-glyph) + (insert "\n\n") + (while (<= height xmine-height) + (insert " ") + (while (<= width xmine-width) + (if (xmine-field-button-at width height) + (xmine-button-create width height "mine") + (xmine-button-create width height "0")) + (setq width (+ width 1))) + (insert " \n") + (setq width 1) + (setq height (+ height 1))) + (insert "\n ") + (set-extent-begin-glyph (make-extent (point) (point)) xmine-pad-glyph) + (setq xmine-new-ann + (make-annotation xmine-new-up nil + 'text nil nil xmine-new-down nil)) + (set-extent-property xmine-new-ann 'action1 '(lambda (&rest egal) + (xmine-field-create))) + (set-extent-property xmine-new-ann 'action2 nil) + (set-extent-property xmine-new-ann 'action3 nil) + (set-extent-property xmine-new-ann 'end-open t) + (set-extent-begin-glyph (make-extent (point) (point)) xmine-pad-glyph) + (setq xmine-count-ann + (make-annotation xmine-count-glyph nil + 'text nil nil nil nil)) + (set-extent-begin-glyph (make-extent (point) (point)) xmine-pad-glyph) + (setq xmine-quit-ann + (make-annotation xmine-quit-up nil + 'text nil nil xmine-quit-down nil)) + (set-extent-property xmine-quit-ann 'action1 + '(lambda (&rest egal) + (kill-buffer (current-buffer)))) + (set-extent-property xmine-quit-ann 'action2 nil) + (set-extent-property xmine-quit-ann 'action3 nil) + (set-extent-property xmine-quit-ann 'end-open t) + (xmine-attach-numbers) + (setq xmine-number-of-flagged 0) + (setq xmine-number-of-opened 0) + (set-annotation-glyph xmine-count-ann + (make-glyph + (format "Mines: %2d" xmine-number-of-mines))) + (goto-char (point-min)) + (setq buffer-read-only 't) + (if (eq window-system 'x) + (set-specifier (face-background 'default) + xmine-background xmine-buffer)) + (set-specifier (face-background 'text-cursor) + xmine-background xmine-buffer) + (setq xmine-key-sel-button nil) + (xmine-select-button (xmine-field-button-at (/ xmine-width 2) + (/ xmine-height 2))))) + + +(defun xmine-init-mines (num) + "A subroutine for xmine-field create. +We randomly set a part of the nil-filled board vector with t to +indicate the places where mines should reside." + (let (x y elem) + (random t) + (while (> num 0) + (setq x (1+ (random xmine-width))) + (setq y (1+ (random xmine-height))) + (setq elem (xmine-field-button-at x y)) + (if (not elem) + (progn + (aset xmine-field (+ (* (1- y) xmine-width) (1- x)) t) + (setq num (1- num))))))) + +(defun xmine-attach-numbers () + "A subroutine for xmine-field-create. +The board is populated by now with empty buttons and mines. Here we +change the correct empty buttons to \"numbered\" buttons" + (let + ((buttons (append xmine-field nil)) + ext) + (while (setq ext (pop buttons)) + (let ((num 0) + (minep (xmine-mine-button-p ext)) + (neighbours (xmine-get-neighbours ext)) + next) + (if (not minep) + (progn + (while (setq next (pop neighbours)) + (if (xmine-mine-button-p next) (setq num (1+ num)))) + (if (> num 0) + (xmine-button-change-type ext (number-to-string num))))))))) + + +(defun xmine-buffer-init () + "A subroutine for xmine-create-field. +We set up the XMine buffer, set up the keymap and so on." + (if xmine-buffer (kill-buffer xmine-buffer)) + (setq xmine-buffer (get-buffer-create "XEmacs Mine")) + (save-excursion + (set-buffer xmine-buffer) + (kill-all-local-variables) + (make-local-variable 'annotation-local-map-default) + (setq truncate-lines 't) + (setq major-mode 'xmine-mode) + (setq mode-name "XMine") + (put 'xmine-mode 'mode-class 'special) + (use-local-map xmine-keymap) + (buffer-disable-undo (current-buffer)) + (setq annotation-local-map-default + (let ((map (make-sparse-keymap))) + (set-keymap-name map 'annotation-local-map) + (define-key map 'button1 'xmine-activate-function-button) + (define-key map 'button2 'xmine-activate-function-button) + (define-key map 'button3 'xmine-activate-function-button) + map)) + (run-hooks 'xmine-mode-hook))) + +;;; The keyboard navigation. + +(defun xmine-select-button (ext) + (let ((flagged (extent-property ext 'xmine-flagged)) + (hidden (extent-property ext 'xmine-hidden)) + sel-glyph) + (setq sel-glyph (if hidden + (if flagged xmine-flagged-sel-glyph + xmine-up-sel-glyph) + (extent-property ext 'xmine-sel-glyph))) + (if xmine-key-sel-button + (set-annotation-glyph xmine-key-sel-button + (extent-property xmine-key-sel-button + 'xmine-non-selected-glyph))) + (set-extent-property ext 'xmine-non-selected-glyph + (annotation-glyph ext)) + (set-annotation-glyph ext sel-glyph) + (setq xmine-key-sel-button ext))) + +(defun xmine-key-action1 () + (interactive) + (let ((action (extent-property xmine-key-sel-button 'action1))) + (if action + (funcall action xmine-key-sel-button)))) + +(defun xmine-key-action2 () + (interactive) + (let ((action (extent-property xmine-key-sel-button 'action2))) + (if action + (funcall action xmine-key-sel-button)))) + +(defun xmine-key-action3 () + (interactive) + (let ((action (extent-property xmine-key-sel-button 'action3))) + (if action + (funcall action xmine-key-sel-button)))) + +(defun xmine-key-quit () + (interactive) + (kill-buffer (current-buffer))) + +(defun xmine-key-new () + (interactive) + (xmine-field-create)) + +(defun xmine-key-down-right () + (interactive) + (xmine-key-down) + (xmine-key-right)) + +(defun xmine-key-down-left () + (interactive) + (xmine-key-down) + (xmine-key-left)) + +(defun xmine-key-up-right () + (interactive) + (xmine-key-up) + (xmine-key-right)) + +(defun xmine-key-up-left () + (interactive) + (xmine-key-up) + (xmine-key-left)) + +(defun xmine-key-down () + (interactive) + (let* ((x (extent-property xmine-key-sel-button 'xmine-x)) + (y (extent-property xmine-key-sel-button 'xmine-y)) + (ext (xmine-field-button-at x (1+ y)))) + (if ext (xmine-select-button ext) + (xmine-select-button (xmine-field-button-at x 1))))) + +(defun xmine-key-up () + (interactive) + (let* ((x (extent-property xmine-key-sel-button 'xmine-x)) + (y (extent-property xmine-key-sel-button 'xmine-y)) + (ext (xmine-field-button-at x (1- y)))) + (if ext (xmine-select-button ext) + (xmine-select-button (xmine-field-button-at x xmine-height))))) + +(defun xmine-key-right () + (interactive) + (let* ((x (extent-property xmine-key-sel-button 'xmine-x)) + (y (extent-property xmine-key-sel-button 'xmine-y)) + (ext (xmine-field-button-at (1+ x) y))) + (if ext (xmine-select-button ext) + (xmine-select-button (xmine-field-button-at 1 y))))) + +(defun xmine-key-left () + (interactive) + (let* ((x (extent-property xmine-key-sel-button 'xmine-x)) + (y (extent-property xmine-key-sel-button 'xmine-y)) + (ext (xmine-field-button-at (1- x) y))) + (if ext (xmine-select-button ext) + (xmine-select-button (xmine-field-button-at xmine-width y))))) + +(provide 'xmine) + diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnats/send-pr.el --- a/lisp/gnats/send-pr.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnats/send-pr.el Mon Aug 13 09:24:17 2007 +0200 @@ -129,13 +129,14 @@ ret)) ;; const because it must match the script's value -(defconst send-pr:datadir (or (gnats::get-config "DATADIR") "/usr/share") +;; XEmacs, former value was (or (gnats::get-config "DATADIR") "/usr/share") +(defconst send-pr:datadir data-directory "*Where the `gnats' subdirectory containing category lists lives.") (defvar send-pr::sites nil "List of GNATS support sites; computed at runtime.") (defvar send-pr:default-site - (or (gnats::get-config "GNATS_SITE") "altair.xemacs.org") + (or (gnats::get-config "GNATS_SITE") "xemacs.org") "Default site to send bugs to.") (defvar send-pr:::site send-pr:default-site "The site to which a problem report is currently being submitted, or NIL @@ -213,7 +214,7 @@ (not (file-readable-p file)) (gnats::push (list (file-name-nondirectory file)) send-pr::sites)))) - (directory-files (format "%s/gnats" send-pr:datadir) t)) + (directory-files (format "%sgnats" send-pr:datadir) t)) (setq send-pr::sites (reverse send-pr::sites))))) (defconst send-pr::pr-buffer-name "*send-pr*" @@ -305,6 +306,7 @@ (let ((elt (assoc site send-pr::template-alist))) (if elt (save-excursion (insert (cdr elt))) + (setenv "DATADIR" send-pr:datadir) (call-process "send-pr" nil t nil "-P" site) (save-excursion (setq send-pr::template-alist @@ -335,6 +337,7 @@ (message "running send-pr...") (let ((oldpr (getenv "GNATS_ROOT"))) (setenv "GNATS_ROOT" gnats:root) + (setenv "DATADIR" send-pr:datadir) (call-process-region (point-min) (point-max) "send-pr" nil err-buffer nil send-pr:::site "-b" "-f" "-") diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/ChangeLog Mon Aug 13 09:24:17 2007 +0200 @@ -1,3 +1,122 @@ +Wed Apr 2 12:39:15 1997 Steven L Baur + + * gnus-util.el (gnus-kill-all-overlays): Force Gnus to use extents + even when overlays are available. (From a patch by MORIOKA + Tomohiko). + +Wed Apr 2 14:12:45 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.40 is released. + +Wed Apr 2 13:17:16 1997 Lars Magne Ingebrigtsen + + * gnus-start.el (gnus-check-bogus-newsgroups): Supply a help + param. + + * message.el (message-bounce): Remove the right portion of + "simple" bounces. + + * gnus-art.el (gnus-read-save-file-name): Would bug out when + saving multiple articles. + + * gnus-sum.el (gnus-summary-update-article-line): Insert the + correct subject. + +Tue Apr 1 11:21:48 1997 Lars Magne Ingebrigtsen + + * gnus-score.el (gnus-score-find-hierarchical): Translate file + chars. + + * gnus-topic.el (gnus-topic-goto-missing-topic): Bugola. + (gnus-topic-forward-topic): New function. + (gnus-topic-goto-missing-topic): Use it. + + * nnmh.el (nnmh-active-number): Make sure the directory exist. + (nnmh-request-accept-article): Bizarre problem. + + * gnus-topic.el (gnus-topic-goto-missing-group): Don't double + topics. + +Mon Mar 31 17:30:10 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.39 is released. + +Mon Mar 31 17:29:13 1997 Lars Magne Ingebrigtsen + + * nntp.el (nntp-connection-alist): Ooize. + +Mon Mar 31 16:34:37 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.38 is released. + +Mon Mar 31 16:12:31 1997 Hrvoje Niksic + + * message.el (message-add-header): New function. + + * gnus-art.el (gnus-sorted-header-list): List `Followup-To' after + `Newsgroups'. + + * gnus-undo.el (gnus-undo-mode-map): Bind `gnus-undo' to `C-_', + `C-x u' and `C-/'. + +Mon Mar 31 16:02:47 1997 Toby Speight + + * gnus-art.el (gnus-article-add-buttons): Eval the right element. + +Mon Mar 31 15:57:17 1997 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-add-to-list): New variable. + (gnus-post-news): Use it. + +Mon Mar 31 15:46:34 1997 Francois Felix Ingrand + + * gnus-start.el (gnus-slave-save-newsrc): Get modes right. + +Mon Mar 31 15:43:29 1997 Michael Sperber + + * message.el (message-functionp): Recognize compiled functions. + +Mon Mar 31 15:43:57 1997 Lars Magne Ingebrigtsen + + * gnus-util.el (gnus-functionp): Ditto. + +Mon Mar 31 15:18:11 1997 Katsumi Yamaoka + + * gnus-ems.el (gnus-ems-redefine): Don't change display table. + +Mon Mar 24 11:33:59 1997 Michael Welsh Duggan + + * message.el (message-insert-to): Use mail-copies-to. + +Mon Mar 31 12:35:12 1997 Lars Magne Ingebrigtsen + + * gnus-topic.el (gnus-topic-goto-missing-topic): New function. + (gnus-topic-goto-missing-group): Use it. + + * gnus-msg.el (gnus-debug): Scan gnus-topic.el. + + * message.el (message-reply): Don't insert extra , when not to + header. + + * nntp.el (nntp-connection-alist): Un-voo. + +Sun Mar 30 09:48:41 1997 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-mode-syntax-table): Make <> paren + chars. + (gnus-emphasis-alist): Use it. + + * gnus.el (gnus-maintainer): Changed. + + * nnfolder.el (nnfolder-request-accept-article): Ask before + junking. + (nnfolder-save-mail): Make buffer read/write. + + * nnmh.el (nnmh-request-accept-article): Ditto. + * nnbabyl.el (nnbabyl-request-accept-article): Ditto. + * nnmbox.el (nnmbox-request-accept-article): Ditto. + * nnml.el (nnml-request-accept-article): Ditto. + Mon Mar 24 16:57:26 1997 Lars Magne Ingebrigtsen * gnus.el: Gnus v5.4.37 is released. diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/gnus-art.el --- a/lisp/gnus/gnus-art.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/gnus-art.el Mon Aug 13 09:24:17 2007 +0200 @@ -115,8 +115,8 @@ :group 'gnus-article-hiding) (defcustom gnus-sorted-header-list - '("^From:" "^Subject:" "^Summary:" "^Keywords:" "^Newsgroups:" "^To:" - "^Cc:" "^Date:" "^Organization:") + '("^From:" "^Subject:" "^Summary:" "^Keywords:" "^Newsgroups:" + "^Followup-To:" "^To:" "^Cc:" "^Date:" "^Organization:") "This variable is a list of regular expressions. If it is non-nil, headers that match the regular expressions will be placed first in the article buffer in the sequence specified by @@ -174,7 +174,7 @@ (defcustom gnus-emphasis-alist (let ((format - "\\(\\s-\\|^\\|[-\"\(]\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*[.,]?\\)%s\\)\\(\\s-\\|[-?!.,;:\"\)]\\)") + "\\(\\s-\\|^\\|[-\"]\\|\\s(\\|\\s)\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*[.,]?\\)%s\\)\\(\\s-\\|[-?!.,;:\"]\\|\\s(\\|\\s)\\)") (types '(("_" "_" underline) ("/" "/" italic) @@ -512,6 +512,8 @@ (defvar gnus-article-mode-syntax-table (let ((table (copy-syntax-table text-mode-syntax-table))) (modify-syntax-entry ?- "w" table) + (modify-syntax-entry ?> ")" table) + (modify-syntax-entry ?< "(" table) table) "Syntax table used in article mode buffers. Initialized from `text-mode-syntax-table.") @@ -1396,14 +1398,16 @@ (defun gnus-read-save-file-name (prompt &optional filename function group headers variable) - (let ((default-name (funcall function group headers - (symbol-value variable))) + (let ((default-name + (funcall function group headers (symbol-value variable))) result) (setq result (cond ((eq filename 'default) default-name) + ((eq filename t) + default-name) (filename filename) (t (let* ((split-name (gnus-get-split-value gnus-split-methods)) @@ -2759,8 +2763,8 @@ (let* ((start (and entry (match-beginning (nth 1 entry)))) (end (and entry (match-end (nth 1 entry)))) (from (match-beginning 0))) - (when (and (or (eq t (nth 1 entry)) - (eval (nth 1 entry))) + (when (and (or (eq t (nth 2 entry)) + (eval (nth 2 entry))) (not (gnus-button-in-region-p start end 'gnus-callback))) ;; That optional form returned non-nil, so we add the diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/gnus-ems.el --- a/lisp/gnus/gnus-ems.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/gnus-ems.el Mon Aug 13 09:24:17 2007 +0200 @@ -170,6 +170,7 @@ "Display table used in summary mode buffers.") (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face) (fset 'gnus-max-width-function 'gnus-mule-max-width-function) + (fset 'gnus-summary-set-display-table 'ignore) (when (boundp 'gnus-check-before-posting) (setq gnus-check-before-posting diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/gnus-group.el --- a/lisp/gnus/gnus-group.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/gnus-group.el Mon Aug 13 09:24:17 2007 +0200 @@ -2063,7 +2063,7 @@ (list 'nndir-directory (if all gnus-group-archive-directory gnus-group-recent-archive-directory)))) - (gnus-group-add-parameter group (cons 'to-address "ding@ifi.uio.no")))) + (gnus-group-add-parameter group (cons 'to-address "ding@gnus.org")))) (defun gnus-group-make-directory-group (dir) "Create an nndir group. diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/gnus-msg.el --- a/lisp/gnus/gnus-msg.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/gnus-msg.el Mon Aug 13 09:24:17 2007 +0200 @@ -61,6 +61,9 @@ gatewayed to a newsgroup, and you want to followup to an article in the group.") +(defvar gnus-add-to-list nil + "*If non-nil, add a `to-list' parameter automatically.") + (defvar gnus-sent-message-ids-file (nnheader-concat gnus-directory "Sent-Message-IDs") "File where Gnus saves a cache of sent message ids.") @@ -367,7 +370,8 @@ force-news) (when article-buffer (gnus-copy-article-buffer)) - (let ((gnus-article-reply article-buffer)) + (let ((gnus-article-reply article-buffer) + (add-to-list gnus-add-to-list)) (gnus-setup-message (cond (yank 'reply-yank) (article-buffer 'reply) (t 'message)) @@ -406,7 +410,8 @@ ;; Arrange for mail groups that have no `to-address' to ;; get that when the user sends off the mail. (when (and (not to-list) - (not to-address)) + (not to-address) + add-to-list) (push (list 'gnus-inews-add-to-address pgroup) message-send-actions))) (set-buffer gnus-article-copy) @@ -818,7 +823,7 @@ (interactive) (let ((files '("gnus.el" "gnus-sum.el" "gnus-group.el" "gnus-art.el" "gnus-start.el" "gnus-async.el" - "gnus-msg.el" "gnus-score.el" "gnus-win.el" + "gnus-msg.el" "gnus-score.el" "gnus-win.el" "gnus-topic.el" "nnmail.el" "message.el")) file expr olist sym) (gnus-message 4 "Please wait while we snoop your variables...") diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/gnus-score.el --- a/lisp/gnus/gnus-score.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/gnus-score.el Mon Aug 13 09:24:17 2007 +0200 @@ -37,11 +37,11 @@ by itself what score files are applicable to which group. Say you want to use the single score file -\"/ftp.ifi.uio.no@ftp:/pub/larsi/ding/score/soc.motss.SCORE\" and all +\"/ftp.gnus.org@ftp:/pub/larsi/ding/score/soc.motss.SCORE\" and all score files in the \"/ftp.some-where:/pub/score\" directory. (setq gnus-global-score-files - '(\"/ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE\" + '(\"/ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE\" \"/ftp.some-where:/pub/score\"))" :group 'gnus-score-files :type '(repeat file)) @@ -2502,8 +2502,9 @@ all (mapcar (lambda (file) - (concat (file-name-directory file) prefix - (file-name-nondirectory file))) + (nnheader-translate-file-chars + (concat (file-name-directory file) prefix + (file-name-nondirectory file)))) all)))) (defun gnus-score-file-rank (file) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/gnus-start.el --- a/lisp/gnus/gnus-start.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/gnus-start.el Mon Aug 13 09:24:17 2007 +0200 @@ -1243,7 +1243,7 @@ (when (setq entry (gnus-gethash group gnus-newsrc-hashtb)) (gnus-group-change-level entry gnus-level-killed) (setq gnus-killed-list (delete group gnus-killed-list)))) - bogus) + bogus '("group" "groups" "remove")) (while (setq group (pop bogus)) ;; Remove all bogus subscribed groups by first killing them, and ;; then removing them from the list of killed groups. @@ -2302,9 +2302,12 @@ (save-excursion (set-buffer gnus-dribble-buffer) (let ((slave-name - (make-temp-name (concat gnus-current-startup-file "-slave-")))) + (make-temp-name (concat gnus-current-startup-file "-slave-"))) + (modes (ignore-errors + (file-modes (concat gnus-current-startup-file ".eld"))))) (gnus-write-buffer slave-name) - (set-file-modes slave-name (file-modes gnus-current-startup-file))))) + (when modes + (set-file-modes slave-name modes))))) (defun gnus-master-read-slave-newsrc () (let ((slave-files diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/gnus-sum.el --- a/lisp/gnus/gnus-sum.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/gnus-sum.el Mon Aug 13 09:24:17 2007 +0200 @@ -2193,8 +2193,8 @@ ;; We start from the standard display table, if any. (let ((table (or (copy-sequence standard-display-table) (make-display-table))) - ;; Nix out all the control chars... (i 32)) + ;; Nix out all the control chars... (while (>= (setq i (1- i)) 0) (aset table i [??])) ;; ... but not newline and cr, of course. (cr is necessary for the @@ -2205,8 +2205,8 @@ (let ((i 256)) (while (>= (setq i (1- i)) 127) ;; Only modify if the entry is nil. - (or (aref table i) - (aset table i [??])))) + (unless (aref table i) + (aset table i [??])))) (setq buffer-display-table table))) (defun gnus-summary-setup-buffer (group) @@ -2948,7 +2948,8 @@ (gnus-data-find-list article (gnus-data-list t))))) - (error "")) + ;; Error on the side of excessive subjects. + (error (mail-header-subject header))) (mail-header-subject header)) (mail-header-subject header) "") diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/gnus-topic.el --- a/lisp/gnus/gnus-topic.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/gnus-topic.el Mon Aug 13 09:24:17 2007 +0200 @@ -254,6 +254,20 @@ prev (caaadr parentt)))) +(defun gnus-topic-forward-topic (num) + "Go to the next topic on the same level as the current one." + (let* ((topic (gnus-current-topic)) + (way (if (< num 0) 'gnus-topic-previous-topic + 'gnus-topic-next-topic)) + (num (abs num))) + (while (and (not (zerop num)) + (setq topic (funcall way topic))) + (when (gnus-topic-goto-topic topic) + (decf num))) + (unless (zerop num) + (goto-char (point-max))) + num)) + (defun gnus-topic-find-topology (topic &optional topology level remove) "Return the topology of TOPIC." (unless topology @@ -557,9 +571,28 @@ (when (gnus-group-goto-group (pop g) t) (forward-line 1) (setq unfound nil))) - (when unfound - (gnus-topic-goto-topic topic) - (forward-line 1))))) + (when (and unfound + (not (gnus-topic-goto-missing-topic topic))) + (gnus-topic-insert-topic-line + topic t t (car (gnus-topic-find-topology topic)) nil 0))))) + +(defun gnus-topic-goto-missing-topic (topic) + (if (gnus-topic-goto-topic topic) + (forward-line 1) + ;; Topic not displayed. + (let* ((top (gnus-topic-find-topology + (gnus-topic-parent-topic topic))) + (tp (reverse (cddr top)))) + (while (not (equal (caaar tp) topic)) + (setq tp (cdr tp))) + (pop tp) + (while (and tp + (not (gnus-topic-goto-topic (caaar tp)))) + (pop tp)) + (if tp + (gnus-topic-forward-topic 1) + (gnus-topic-goto-missing-topic (caadr top)))) + nil)) (defun gnus-topic-update-topic-line (topic-name &optional reads) (let* ((top (gnus-topic-find-topology topic-name)) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/gnus-undo.el --- a/lisp/gnus/gnus-undo.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/gnus-undo.el Mon Aug 13 09:24:17 2007 +0200 @@ -68,7 +68,12 @@ (setq gnus-undo-mode-map (make-sparse-keymap)) (gnus-define-keys gnus-undo-mode-map - "\M-\C-_" gnus-undo)) + "\M-\C-_" gnus-undo + "\C-_" gnus-undo + "\C-xu" gnus-undo + [(control /)] gnus-undo ; many people are used to type `C-/' on + ; X terminals and get `C-_'. + )) (defun gnus-undo-make-menu-bar () (when nil diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/gnus-util.el --- a/lisp/gnus/gnus-util.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/gnus-util.el Mon Aug 13 09:24:17 2007 +0200 @@ -89,7 +89,8 @@ (defsubst gnus-functionp (form) "Return non-nil if FORM is funcallable." (or (and (symbolp form) (fboundp form)) - (and (listp form) (eq (car form) 'lambda)))) + (and (listp form) (eq (car form) 'lambda)) + (compiled-function-p form))) (defsubst gnus-goto-char (point) (and point (goto-char point))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/gnus-xmas.el --- a/lisp/gnus/gnus-xmas.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/gnus-xmas.el Mon Aug 13 09:24:17 2007 +0200 @@ -185,8 +185,8 @@ ;; Setup the display table -- like gnus-summary-setup-display-table, ;; but done in an XEmacsish way. (let ((table (make-display-table)) - ;; Nix out all the control chars... (i 32)) + ;; Nix out all the control chars... (while (>= (setq i (1- i)) 0) (aset table i [??])) ;; ... but not newline and cr, of course. (cr is necessary for the @@ -197,8 +197,8 @@ (let ((i 256)) (while (>= (setq i (1- i)) 127) ;; Only modify if the entry is nil. - (or (aref table i) - (aset table i [??])))) + (unless (aref table i) + (aset table i [??])))) (add-spec-to-specifier current-display-table table (current-buffer) nil))) (defun gnus-xmas-add-hook (hook function &optional append local) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/gnus.el --- a/lisp/gnus/gnus.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/gnus.el Mon Aug 13 09:24:17 2007 +0200 @@ -226,7 +226,7 @@ :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "5.4.37" +(defconst gnus-version-number "5.4.40" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) @@ -1431,7 +1431,7 @@ (defvar gnus-have-read-active-file nil) (defconst gnus-maintainer - "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" + "bugs@gnus.org (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") (defvar gnus-info-nodes diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/message.el --- a/lisp/gnus/message.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/message.el Mon Aug 13 09:24:17 2007 +0200 @@ -928,6 +928,19 @@ (when value (nnheader-replace-chars-in-string value ?\n ? )))) +(defun message-add-header (&rest headers) + "Add the HEADERS to the message header, skipping those already present." + (while headers + (let (hclean) + (unless (string-match "^\\([^:]+\\):[ \t]*[^ \t]" (car headers)) + (error "Invalid header `%s'" (car headers))) + (setq hclean (match-string 1 (car headers))) + (save-restriction + (message-narrow-to-headers) + (unless (re-search-forward (concat "^" (regexp-quote hclean) ":") nil t) + (insert (car headers) ?\n)))) + (setq headers (cdr headers)))) + (defun message-fetch-reply-field (header) "Fetch FIELD from the message we're replying to." (when (and message-reply-buffer @@ -948,7 +961,8 @@ (defun message-functionp (form) "Return non-nil if FORM is funcallable." (or (and (symbolp form) (fboundp form)) - (and (listp form) (eq (car form) 'lambda)))) + (and (listp form) (eq (car form) 'lambda)) + (compiled-function-p form))) (defun message-strip-subject-re (subject) "Remove \"Re:\" from subject lines." @@ -1316,7 +1330,7 @@ (defun message-insert-to () "Insert a To header that points to the author of the article being replied to." (interactive) - (let ((co (message-fetch-field "courtesy-copies-to"))) + (let ((co (message-fetch-field "mail-copies-to"))) (when (and co (equal (downcase co) "never")) (error "The user has requested not to have copies sent via mail"))) @@ -3005,7 +3019,7 @@ (message-set-work-buffer) (unless never-mct (insert (or reply-to from ""))) - (insert (if (bolp) "" ", ") (or to "")) + (insert (if to (concat (if (bolp) "" ", ") to "") "")) (insert (if mct (concat (if (bolp) "" ", ") mct) "")) (insert (if cc (concat (if (bolp) "" ", ") cc) "")) (goto-char (point-min)) @@ -3378,8 +3392,7 @@ (forward-line 2)) (and (re-search-forward message-unsent-separator nil t) (forward-line 1)) - (and (search-forward "\n\n" nil t) - (re-search-forward "^Return-Path:.*\n" nil t))) + (re-search-forward "^Return-Path:.*\n" nil t)) ;; We remove everything before the bounced mail. (delete-region (point-min) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/nnbabyl.el --- a/lisp/gnus/nnbabyl.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/nnbabyl.el Mon Aug 13 09:24:17 2007 +0200 @@ -339,7 +339,8 @@ (if (stringp group) (list (cons group (nnbabyl-active-number group))) (nnmail-article-group 'nnbabyl-active-number))) - (if (null result) + (if (and (null result) + (yes-or-no-p "Moved to `junk' group; delete article? ")) (setq result 'junk) (setq result (car (nnbabyl-save-mail result)))) (set-buffer nnbabyl-mbox-buffer) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/nnfolder.el --- a/lisp/gnus/nnfolder.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/nnfolder.el Mon Aug 13 09:24:17 2007 +0200 @@ -381,7 +381,8 @@ (list (cons group (nnfolder-active-number group))) (setq art-group (nnmail-article-group 'nnfolder-active-number)))) - (if (null result) + (if (and (null result) + (yes-or-no-p "Moved to `junk' group; delete article? ")) (setq result 'junk) (setq result (car (nnfolder-save-mail result))))) @@ -578,12 +579,13 @@ (end (point-max)) (obuf (current-buffer))) (nnfolder-possibly-change-folder (car group-art)) - (goto-char (point-max)) - (unless (eolp) - (insert "\n")) - (unless (bobp) - (insert "\n")) - (insert-buffer-substring obuf beg end)))) + (let ((buffer-read-only nil)) + (goto-char (point-max)) + (unless (eolp) + (insert "\n")) + (unless (bobp) + (insert "\n")) + (insert-buffer-substring obuf beg end))))) ;; Did we save it anywhere? save-list)) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/nnmbox.el --- a/lisp/gnus/nnmbox.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/nnmbox.el Mon Aug 13 09:24:17 2007 +0200 @@ -309,7 +309,8 @@ (setq result (if (stringp group) (list (cons group (nnmbox-active-number group))) (nnmail-article-group 'nnmbox-active-number))) - (if (null result) + (if (and (null result) + (yes-or-no-p "Moved to `junk' group; delete article? ")) (setq result 'junk) (setq result (car (nnmbox-save-mail result))))) (save-excursion diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/nnmh.el --- a/lisp/gnus/nnmh.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/nnmh.el Mon Aug 13 09:24:17 2007 +0200 @@ -301,10 +301,11 @@ noinsert))) (and (nnmail-activate 'nnmh) - (let ((resu|t (nnmail-article-group 'nnmh-active-number))) - (if (not result) + (let ((res (nnmail-article-group 'nnmh-active-number))) + (if (and (null res) + (yes-or-no-p "Moved to `junk' group; delete article? ")) 'junk - (car (nnmh-save-mail result noinsert)))))) + (car (nnmh-save-mail res noinsert)))))) (when (and last nnmail-cache-accepted-message-ids) (nnmail-cache-close)))) @@ -442,21 +443,22 @@ (defun nnmh-active-number (group) "Compute the next article number in GROUP." - (let ((active (cadr (assoc group nnmh-group-alist)))) + (let ((active (cadr (assoc group nnmh-group-alist))) + (dir (nnmail-group-pathname group nnmh-directory))) (unless active ;; The group wasn't known to nnmh, so we just create an active ;; entry for it. (setq active (cons 1 0)) (push (list group active) nnmh-group-alist) + (unless (file-exists-p dir) + (make-directory dir)) ;; Find the highest number in the group. (let ((files (sort (mapcar (lambda (f) (string-to-int f)) - (directory-files - (nnmail-group-pathname group nnmh-directory) - nil "^[0-9]+$")) - '>))) + (directory-files dir nil "^[0-9]+$")) + '>))) (when files (setcdr active (car files))))) (setcdr active (1+ (cdr active))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/gnus/nnml.el --- a/lisp/gnus/nnml.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/gnus/nnml.el Mon Aug 13 09:24:17 2007 +0200 @@ -325,7 +325,8 @@ (and last (nnml-save-nov)))) (and (nnmail-activate 'nnml) - (if (not (setq result (nnmail-article-group 'nnml-active-number))) + (if (and (not (setq result (nnmail-article-group 'nnml-active-number))) + (yes-or-no-p "Moved to `junk' group; delete article? ")) (setq result 'junk) (setq result (car (nnml-save-mail result)))) (when last diff -r 578fd4947a72 -r 7d55a9ba150c lisp/modes/cc-mode.el --- a/lisp/modes/cc-mode.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/modes/cc-mode.el Mon Aug 13 09:24:17 2007 +0200 @@ -6,8 +6,8 @@ ;; 1987 Dave Detlefs and Stewart Clamen ;; 1985 Richard M. Stallman ;; Created: a long, long, time ago. adapted from the original c-mode.el -;; Version: 4.388 -;; Last Modified: 1997/03/25 03:19:17 +;; Version: 4.390 +;; Last Modified: 1997/04/02 15:46:35 ;; Keywords: c languages oop ;; NOTE: Read the commentary below for the right way to submit bug reports! @@ -2448,6 +2448,7 @@ (c-set-style-1 vars))) (c-keep-region-active)) +;;;###autoload (defun c-add-style (style descrip &optional set-p) "Adds a style to `c-style-alist', or updates an existing one. STYLE is a string identifying the style to add or update. DESCRIP is @@ -4141,8 +4142,10 @@ (setq done t)) ) (setq cont t))) - injava-inher)) - ) + injava-inher) + (not (c-crosses-statement-barrier-p (cdr injava-inher) + (point))) + )) (cond ;; CASE 5C.1: non-hanging colon on an inher intro ((= char-after-ip ?:) @@ -5203,7 +5206,7 @@ ;; defuns for submitting bug reports -(defconst c-version "4.388" +(defconst c-version "4.390" "CC Mode version number.") (defconst c-mode-help-address "bug-gnu-emacs@prep.ai.mit.edu, cc-mode-help@python.org" diff -r 578fd4947a72 -r 7d55a9ba150c lisp/mule/canna.el --- a/lisp/mule/canna.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/mule/canna.el Mon Aug 13 09:24:17 2007 +0200 @@ -29,6 +29,11 @@ ;; #### This is far from working in XEmacs. +;; added by MORIOKA Tomohiko , 1996/6/18 +(defvar running-xemacs (string-match "XEmacs" emacs-version)) + +(if running-xemacs (require 'overlay)) + ;; added by MORIOKA Tomohiko , 1996/6/7 (or (fboundp 'minibuffer-prompt-width) (defun minibuffer-prompt-width () @@ -42,14 +47,6 @@ (char-after (1- (point))) ) ) -(or (fboundp 'overlayp) - (defalias 'overlayp 'extentp) - ) - -;; added by MORIOKA Tomohiko , 1996/6/18 -(defvar running-xemacs (string-match "XEmacs" emacs-version)) - -(if running-xemacs (require 'overlay)) (if running-xemacs (progn diff -r 578fd4947a72 -r 7d55a9ba150c lisp/mule/kinsoku.el --- a/lisp/mule/kinsoku.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/mule/kinsoku.el Mon Aug 13 09:24:17 2007 +0200 @@ -195,12 +195,13 @@ Uses category \'s\' to check. point$B$G2~9T$9$k$H9TF,6XB'$K?($l$k$+$I$&$+$r$+$($9!#(B $B9TF,6XB'J8;z$O(B\'s\'$B$N(Bcategory$B$G;XDj$9$k!#(B" - (let ((ch (following-char))) - (if (or - (and kinsoku-ascii (char-in-category-p ch ?a)) - (and kinsoku-jis (char-in-category-p ch ?j)) - (and kinsoku-gb (char-in-category-p ch ?c)) - (and kinsoku-big5 (char-in-category-p ch ?t))) + (let ((ch (char-after))) + (if (and ch + (or + (and kinsoku-ascii (char-in-category-p ch ?a)) + (and kinsoku-jis (char-in-category-p ch ?j)) + (and kinsoku-gb (char-in-category-p ch ?c)) + (and kinsoku-big5 (char-in-category-p ch ?t)))) (char-in-category-p ch ?s) nil))) @@ -209,12 +210,13 @@ Uses category \'e\' to check. point$B$G2~9T$9$k$H9TKv6XB'$K?($l$k$+$I$&$+$r$+$($9!#(B $B9TKv6XB'J8;z$O(B\'s\'$B$N(Bcategory$B$G;XDj$9$k!#(B" - (let ((ch (preceding-char))) - (if (or - (and kinsoku-ascii (char-in-category-p ch ?a)) - (and kinsoku-jis (char-in-category-p ch ?j)) - (and kinsoku-gb (char-in-category-p ch ?c)) - (and kinsoku-big5 (char-in-category-p ch ?t))) + (let ((ch (char-before))) + (if (and ch + (or + (and kinsoku-ascii (char-in-category-p ch ?a)) + (and kinsoku-jis (char-in-category-p ch ?j)) + (and kinsoku-gb (char-in-category-p ch ?c)) + (and kinsoku-big5 (char-in-category-p ch ?t)))) (char-in-category-p ch ?e) nil))) @@ -248,8 +250,9 @@ kinsoku-extend-limit 10000))) ;;; 10000 is deliberatly unreasonably large ch1 ch2) - (while (and (<= (+ (current-column) - (char-width (setq ch1 (following-char)))) + (while (and (setq ch1 (char-after)) + (<= (+ (current-column) + (char-width ch1 )) max-column) (not (bolp)) (not (eolp)) @@ -257,7 +260,8 @@ (kinsoku-bol-p) ;;; don't break in the middle of an English word (and (char-in-category-p ch1 ?a) - (char-in-category-p (setq ch2 (preceding-char)) ?a) + (setq ch2 (char-before)) + (char-in-category-p ch2 ?a) (= ?w (char-syntax ch2)) (= ?w (char-syntax ch1))))) (forward-char)) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/packages/supercite.el --- a/lisp/packages/supercite.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/packages/supercite.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,13 +1,13 @@ ;;; supercite.el --- minor mode for citing mail and news replies -;; Author: 1993 Barry A. Warsaw, Century Computing, Inc. -;; Maintainer: supercite-help@anthem.nlm.nih.gov +;; Author: 1993 Barry A. Warsaw, Century Computing, Inc. +;; Maintainer: supercite-help@python.org ;; Created: February 1993 ;; Version: 3.1 ;; Last Modified: 1993/09/22 18:58:46 ;; Keywords: citation attribution mail news article reply followup -;; supercite.el revision: 3.54 +;; supercite.el revision: 3.55 ;; Copyright (C) 1993 Barry A. Warsaw @@ -35,6 +35,10 @@ ;; |Mail and news reply citation package ;; |1993/09/22 18:58:46|3.1| +;; sb 1997/Apr/02: Added attribution function sc-header-author-email-writes +;; which gives attribution in the form - +;; Steve Baur writes: + ;; Code: @@ -340,6 +344,7 @@ (sc-header-author-writes) (sc-header-verbose) (sc-no-blank-line-or-header) + (sc-header-author-email-writes) ) "*List of reference header rewrite functions. The variable `sc-preferred-header-style' controls which function in @@ -1507,6 +1512,19 @@ " for more details)\n") )))) +;; Added by Ateve Baur Apr-02-1997. +(defun sc-header-author-email-writes () + "sc-author writes:" + (let ((sc-mumble "") + (whofrom (sc-whofrom))) + (if whofrom + (insert sc-reference-tag-string + (sc-hdr "" (sc-mail-field "sc-author") " ") + (or (sc-hdr "<" (sc-mail-field "sc-from-address") ">" t) + (sc-hdr "<" (sc-mail-field "sc-reply-address") ">" t) + "") + " writes:\n")))) + ;; ====================================================================== ;; header rewrites diff -r 578fd4947a72 -r 7d55a9ba150c lisp/packages/time.el --- a/lisp/packages/time.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/packages/time.el Mon Aug 13 09:24:17 2007 +0200 @@ -2,9 +2,10 @@ ;; Copyright (C) 1985, 86, 87, 93, 94, 1996 Free Software Foundation, Inc. -;; Maintainer: FSF, XEmacs add-ons (C) by Jens T. Lautenbacher -;; mail -;; for comments/fixes about the enhancements. +;; Maintainer: FSF for the original version. +;; XEmacs add-ons and rewrite (C) by Jens Lautenbacher +;; mail +;; for comments/fixes about the enhancements. ;; This file is part of XEmacs. @@ -23,7 +24,7 @@ ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. -;;; Version: 1.10 (I choose the version number starting at 1.1 +;;; Version: 1.13 (I choose the version number starting at 1.1 ;;; to indicate that 1.0 was the old version ;;; before I hacked away on it -jtl) @@ -56,11 +57,22 @@ (require 'itimer) +(defconst display-time-version-number "1.13" "Version number of time.el") +(defconst display-time-version (format "Time.el version %s for XEmacs" + display-time-version-number) + "The full version string for time.el") + (defgroup display-time nil "Facilities to display the current time/date/load and a new-mail indicator in the XEmacs mode line or echo area." :group 'applications) +(defgroup display-time-balloon nil + "Fancy add-ons to display-time for using the `balloon-help' feature. +balloon-help must be loaded before these settings take effect." + :group 'display-time) + + (defcustom display-time-mail-file nil "*File name of mail inbox file, for indicating existence of new mail. Non-nil and not a string means don't check for mail. nil means use @@ -204,7 +216,7 @@ "What to use to generate the ballon frame of the \"mail\" glyph if balloon-help is loaded. This can be the function display-time-mail-balloon, nil or a string." - :group 'display-time + :group 'display-time-balloon :type '(choice (const display-time-mail-balloon) (const nil) (string))) @@ -212,7 +224,7 @@ (defcustom display-time-no-mail-balloon "No mail is good mail." "The string used in the ballon frame of the \"no mail\" glyph if balloon-help is loaded. This can also be nil" - :group 'display-time + :group 'display-time-balloon :type '(choice (const nil) (string))) @@ -222,36 +234,36 @@ nnmail-split-methods to split your incoming mail into different groups. Look at the documentation for gnus. If you don't know what we're talking about, don't care and leave this set to nil" - :group 'display-time + :group 'display-time-balloon :type 'boolean) (defface display-time-mail-balloon-enhance-face '((t (:background "orange"))) "Face used for entries in the mail balloon which match the regexp display-time-mail-balloon-enhance" - :group 'display-time) + :group 'display-time-balloon) (defface display-time-mail-balloon-gnus-group-face '((t (:foreground "blue"))) "Face used for the gnus group entry in the mail balloon if display-time-mail-balloon-show-gnus-group is t (see the documentation there before you set it to t)" - :group 'display-time) + :group 'display-time-balloon) (defcustom display-time-mail-balloon-max-displayed 10 "The maximum number of messaged which are displayed in the mail balloon. You need to have balloon-help loaded to use this." - :group 'display-time + :group 'display-time-balloon :type 'number) (defcustom display-time-mail-balloon-from-width 20 "The width of the `From:' part of the mail balloon. You need to have ballon-help loaded to use this" - :group 'display-time + :group 'display-time-balloon :type 'number) (defcustom display-time-mail-balloon-subject-width 25 "The width of the `Subject:' part of the mail balloon. You need to have ballon-help loaded to use this" - :group 'display-time + :group 'display-time-balloon :type 'number) (defcustom display-time-mail-balloon-gnus-split-width 10 @@ -260,14 +272,14 @@ For getting this information, it consults the relevant variables from gnus (nnmail-split-methods). You need to have ballon-help loaded to use this" - :group 'display-time + :group 'display-time-balloon :type 'number) (defcustom display-time-mail-balloon-enhance nil "A list of regular expressions describing which messages should be highlighted in the mail balloon. The regexp will be matched against the complete header block of an email. You need to load balloon-help to use this" - :group 'display-time + :group 'display-time-balloon :type '(repeat (string :tag "Regexp"))) (defcustom display-time-mail-balloon-suppress nil @@ -276,7 +288,7 @@ of an email. It will only take effect if the message is not matched already by display-time-mail-balloon-enhance. You need to load balloon-help to use this" - :group 'display-time + :group 'display-time-balloon :type '(repeat (string :tag "Regexp"))) (defcustom display-time-mail-balloon-enhance-gnus-group nil @@ -287,7 +299,7 @@ This requires display-time-mail-balloon-show-gnus-group to be t and balloon-help to be loaded" - :group 'display-time + :group 'display-time-balloon :type '(repeat (string :tag "Regexp"))) (defcustom display-time-mail-balloon-suppress-gnus-group nil @@ -298,7 +310,7 @@ This requires display-time-mail-balloon-show-gnus-group to be t and balloon-help to be loaded" - :group 'display-time + :group 'display-time-balloon :type '(repeat (string :tag "Regexp"))) (defvar display-time-spool-file-modification nil) @@ -439,7 +451,33 @@ display-time-display-time-background) )))) - (if (featurep 'xpm) +(defun display-time-init-glyphs () + "This is a hack to have all glyphs be displayed one time at startup. +It helps avoiding problems with the background color of the glyphs if a +balloon-help frame is open and a not yet displayed glyph is going to be +displayed." + (let ((i 0) + (list '("am" "pm" ":")) + elem mlist) + (while (< i 10) + (push (eval (intern-soft (concat "display-time-" + (number-to-string i) + "-glyph"))) mlist) + (setq i (1+ i))) + (setq i 0.0) + (while (<= i 3.0) + (push (eval (intern-soft (concat "display-time-load-" + (number-to-string i) + "-glyph"))) mlist) + (setq i (+ i 0.5))) + (while (setq elem (pop list)) + (push (eval (intern-soft (concat "display-time-" + elem "-glyph"))) mlist)) + (let ((global-mode-string mlist)) + (redisplay-frame)) + )) + +(if (featurep 'xpm) (progn (defvar display-time-mail-sign (cons (make-extent nil nil) @@ -473,8 +511,10 @@ (defvar display-time-load-3.0-glyph nil) (display-time-generate-time-glyphs 'force) (display-time-generate-load-glyphs 'force) + (display-time-init-glyphs) )) + (defun display-time-can-do-graphical-display (&optional textual) (and display-time-show-icons-maybe (not textual) @@ -541,7 +581,7 @@ (or (featurep 'nnmail) (require 'nnmail)))) (display-time-mail-balloon-gnus-split-width (if (not show-split) 0 - (+ 3 display-time-mail-balloon-gnus-split-width))) ; [...] -> +3 + (+ 3 display-time-mail-balloon-gnus-split-width))) ; ->... = +3 (mod (nth 5 (file-attributes mail-spool-file))) header header-ext) (setq header "You have mail:") @@ -612,7 +652,7 @@ (re-search-forward enhance-reg nil t)))) (if show-split (save-excursion - (setq point (point-min)) + (goto-char (point-min)) (nnmail-article-group '(lambda (name) (setq gnus-group name))))) (if enhance () ; this takes prejudice over everything else @@ -626,7 +666,8 @@ (if (and show-split gnus-group display-time-mail-balloon-enhance-gnus-group) (string-match gnus-enhance-reg gnus-group)))) - (setq suppress ;; if we didn't enhance then maybe we have to suppress it? + (setq suppress ;; if we didn't enhance then maybe we have to + ;; suppress it? (save-excursion (if (and show-split gnus-group display-time-mail-balloon-suppress-gnus-group) @@ -686,12 +727,13 @@ (set-extent-property line-ext 'duplicable t) (set-extent-property line-ext 'end-open t))) (push line mail-headers-list)) - (setq point (point-max)) + (goto-char (point-max)) (setq suppress nil gnus-group nil enhance nil) (widen) ))) + (kill-buffer display-time-temp-buffer) (if (> (length mail-headers-list) display-time-mail-balloon-max-displayed) (setq not-displayed (- (length mail-headers-list) display-time-mail-balloon-max-displayed))) @@ -903,7 +945,7 @@ (if display-time-24hr-format "" am-pm)) load (if mail " Mail" "")) - "*THIS IS OBSOLETE! It will only be used if display-time-compatible is t. + "*It will only be used if display-time-compatible is t. A list of expressions governing display of the time in the mode line. This expression is a list of expressions that can involve the keywords `load', `day', `month', and `year', `12-hours', `24-hours', `minutes', @@ -918,6 +960,10 @@ would give mode line times like `94/12/30 21:07:48 (UTC)'.") +(make-obsolete-variable 'display-time-string-forms + "You should use the new facilities for `display-time'. +Look at display-time-form-list.") + (defun display-time-function () (let* ((now (current-time)) (time (current-time-string now)) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/packages/webster-ucb.el --- a/lisp/packages/webster-ucb.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1452 +0,0 @@ -;;; -*- Mode:Emacs-Lisp -*- - -;;; Synched up with: Not in FSF. - -;;; Yet Another Webster Protocol. -;;; This one is for talking to the kind of Webster server of which -;;; pasteur.Berkeley.EDU port 1964 is an instance (the "edjames" protocol). -;;; -;;; The interface and much of the process-handling code in this file were -;;; lifted from the Webster client by Jason Glasgow that talks to the kind -;;; of Webster server of which mintaka.lcs.mit.edu port 103 is an instance. -;;; -;;; 13 nov 90 Jamie Zawinski created -;;; 14 sep 91 Jamie Zawinski hacked on some more -;;; 19 feb 91 Jamie Zawinski added Lucid Emacs font support -;;; 15 apr 92 Jamie Zawinski added mouse support -;;; 29 aug 92 Jamie Zawinski added 8-bit output -;;; 6 nov 92 Jamie Zawinski hack hack -;;; 31 dec 92 Jamie Zawinski made it guess the root word -;;; 17 mar 93 Jamie Zawinski more hacking, more gnashing -;;; 31 jul 93 Jamie Zawinski variable height fonts in 19.8 - -;; TODO: -;; -;; vinculum has a "3 character overbar" code. Really need to figure out -;; some way to hack overbars... Background pixmap? Need to know line -;; height in pixels to do that. -;; -;; I don't event know what half of these special characters are supposed -;; to look like. Like the "s," in the Turkish root of "chouse"... -;; -;; We could fake some of these chars (like upside-down-e) by including bitmaps -;; in this file, and using extent-begin-glpyhs. Except that right now glyphs -;; have to come from files, not from '(w h "string") form, so that'll have to -;; be fixed first. We could also just create an X font... -;; -;; note that googol says "10100" instead of "10(\bI100)\bI - -(defvar webster-host "westerhost" "*The host with the webster server") -(defvar webster-port "webster" "*The port on which the webster server listens") - -(defvar webster-running nil "Used to determine when connection is established") -(defvar webster-state "closed" "for the modeline") -(defvar webster-process nil "The current webster process") -(defvar webster-process-name "webster" "The current webster process") -(defvar webster-buffer nil "The current webster process") - -(defvar webster-start-mark nil) - -(defvar webster-fontify (string-match "XEmacs" emacs-version) - "*Set to t to use the XEmacs/Lucid Emacs font-change mechanism.") - -(defvar webster-iso8859/1 (string-match "XEmacs" emacs-version) - "*Set to t to print certain special characters using ISO-8859/1 codes.") - -(defconst webster-completion-table (make-vector 511 0)) - -(cond ((fboundp 'make-face) - (or (find-face 'webster) - (face-differs-from-default-p (make-face 'webster)) - (copy-face 'default 'webster)) - (or (find-face 'webster-bold) - (face-differs-from-default-p (make-face 'webster-bold)) - (progn - (copy-face 'webster 'webster-bold) - (make-face-bold 'webster-bold))) - (or (find-face 'webster-italic) - (face-differs-from-default-p (make-face 'webster-italic)) - (progn - (copy-face 'webster 'webster-italic) - (make-face-italic 'webster-italic))) - (or (find-face 'webster-bold-italic) - (face-differs-from-default-p (make-face 'webster-bold-italic)) - (progn - (copy-face 'webster 'webster-bold-italic) - (make-face-bold-italic 'webster-bold-italic))) - (or (find-face 'webster-underline) - (face-differs-from-default-p (make-face 'webster-underline)) - (progn - (copy-face 'webster 'webster-underline) - (set-face-underline-p 'webster-underline t))) - (or (find-face 'webster-small) - (face-differs-from-default-p (make-face 'webster-small)) - (progn - (copy-face 'webster-bold 'webster-small) - (and (fboundp 'make-face-smaller) ; XEmacs 19.8+ - (make-face-smaller 'webster-small)))) - (or (find-face 'webster-subscript) - (face-differs-from-default-p (make-face 'webster-subscript)) - (progn - (copy-face 'webster-italic 'webster-subscript) - (if (fboundp 'make-face-smaller) ; XEmacs 19.8+ - (and (make-face-smaller 'webster-subscript) - (make-face-smaller 'webster-subscript)) - (set-face-underline-p 'webster-subscript t)))) - (or (find-face 'webster-superscript) - (face-differs-from-default-p (make-face 'webster-superscript)) - ;; #### need some way to raise baseline... - (copy-face 'webster-subscript 'webster-superscript)) - )) - -(defun webster-fontify (start end face &optional highlight) - (let ((os start) - (count 0) - e) - (save-excursion - (goto-char start) - ;; this mess is so we don't fontify the spaces between the words, so that - ;; when the lines are wrapped, the stuff at the beginning of the line - ;; doesn't go in the font of the split word. Kludge kludge. - (while (prog1 - (/= (point) end) - (skip-chars-forward " \t") - (setq start (point)) - (re-search-forward "[ \t]" (1+ end) 'go) - (forward-char -1)) - (setq e (make-extent start (point) (current-buffer))) - (set-extent-face e face) - (setq count (1+ count)))) - (if highlight - (set-extent-property - ;; use the same extent if we didn't have to split it. - (if (= count 1) e (make-extent os end (current-buffer))) - 'highlight t)) - )) - -(defconst webster-umlauts - '((?A . ?\304) (?E . ?\313) (?I . ?\317) (?O . ?\326) (?U . ?\334) - (?a . ?\344) (?e . ?\353) (?i . ?\357) (?o . ?\366) (?u . ?\374) - (?y . ?\377))) - -(defconst webster-graves - '((?A . ?\300) (?E . ?\310) (?I . ?\314) (?O . ?\322) (?U . ?\331) - (?a . ?\340) (?e . ?\350) (?i . ?\354) (?o . ?\362) (?u . ?\371))) - -(defconst webster-acutes - '((?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332) - (?Y . ?\335) (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363) - (?u . ?\372) (?y . ?\375))) - -;;; -;;; Initial filter for ignoring information until successfully connected -;;; -(defun webster-initial-filter (proc string) - (let ((this-buffer (current-buffer))) - ;; don't use save-excursion so that point moves in webster-buffer - (set-buffer webster-buffer) - (goto-char (point-max)) - (setq webster-state "closed") - (cond ((not (eq (process-status webster-process) 'run)) - (setq webster-running t) - (message "Webster died")) - ((string-match "No such host" string) - (setq webster-running t) - (kill-buffer (process-buffer proc)) - (error "No such host.")) - ((string-match "]" string) - (setq webster-running t) - (setq webster-state "opening") - (set-process-filter proc 'webster-filter))) - (set-buffer this-buffer))) - - -(defun webster-filter (proc string) - (let ((this-buffer (current-buffer)) - (endp nil)) - (set-buffer webster-buffer) - (widen) - (goto-char (point-max)) - (cond ((not (eq (process-status webster-process) 'run)) - (setq webster-state (format "%s" (process-status webster-process))) - (set-marker webster-start-mark (point-max)) - (message "Webster died")) - ((string-match "Connection closed" string) - (message "Closing webster connection...") - (kill-process proc) - (setq webster-state "closed") - (replace-regexp "Process webster killed" "" nil) - (set-marker webster-start-mark (point-max)) - (message "Closing webster connection...Done.")) - ((let ((end-def-message (string-match "\n\\.\r?\n" string))) - (if end-def-message - (progn - (webster-filter - proc - (concat (substring string 0 (- end-def-message 1)) "\n\n")) - (setq endp t) - (setq webster-state "ready") - t)))) - (t - (setq webster-state "working") - (if (string-match "^[45][0-9][0-9]" string) - (setq webster-state "ready" - endp t)) - (widen) - (let ((now (point))) - (goto-char (point-max)) - (insert string) - (save-excursion - (goto-char now) - (while (search-forward "\r" nil t) - (delete-char -1)))) - (if (process-mark proc) - (set-marker (process-mark proc) (point))) - (narrow-to-region (point-min) webster-start-mark) - )) - (if endp - ;; if the *webster* window is visible, move the last line to the - ;; bottom of that window - (let ((webster-window (get-buffer-window webster-buffer)) - (window (selected-window)) - error p) - (set-buffer webster-buffer) - (widen) - (goto-char (point-min)) - (narrow-to-region webster-start-mark (point-max)) - (let ((buffer-undo-list t)) - (if (looking-at "WORD \"\\([^\"\n]*\\)\"\\(\n403 [^\n]+\\)\n") - (progn - (downcase-word 1) - (setq error - (buffer-substring (match-beginning 1) (match-end 1))) - (goto-char (match-beginning 2)) - (delete-region (match-beginning 2) (match-end 2)) - (insert " not found") - (setq error (webster-guess-root error)) - (if error - (insert "; trying \"" error "\"...") - (insert ".")) - ) - (webster-convert))) - (widen) - (setq p (marker-position webster-start-mark)) - (goto-char (point-max)) - (or (bobp) - (save-excursion (forward-line -1) (looking-at "-")) - (insert "\n--------------------\n")) - (set-marker webster-start-mark (point-max)) - (goto-char p) - (if webster-window - (progn - (select-window webster-window) - (goto-char p) - (recenter 3) - (select-window window))) - (if error (webster error)))))) - -(defun webster-guess-root (word) - (let ((case-fold-search t)) - (cond ((null word) nil) - ((string-match "[ \t\n]" word) - nil) - ((string-match "[^aeiou]ing\\'" word) - (concat (substring word 0 (+ 1 (match-beginning 0))) "e")) - ((string-match "[a-z]ing\\'" word) - (substring word 0 (+ 1 (match-beginning 0)))) - ((string-match "ies\\'" word) - (concat (substring word 0 (match-beginning 0)) "y")) - ((string-match "ied\\'" word) - (concat (substring word 0 (match-beginning 0)) "y")) - ((and (string-match "[^aeiouy][^aeiouy]ed\\'" word) - (= (aref word (match-beginning 0)) - (aref word (1+ (match-beginning 0))))) - (substring word 0 (+ 1 (match-beginning 0)))) - ((string-match "[a-z]ed\\'" word) - (substring word 0 (+ 2 (match-beginning 0)))) - ((string-match "[aeiouy]lly\\'" word) - (substring word 0 (+ 2 (match-beginning 0)))) - ((string-match "[^l]ly\\'" word) - (substring word 0 (+ 1 (match-beginning 0)))) -; ((string-match "es\\'" word) -; (substring word 0 (match-beginning 0))) -; ((string-match "[^e]s\\'" word) -; (substring word 0 (+ 1 (match-beginning 0)))) - ((string-match "s\\'" word) - (substring word 0 (match-beginning 0))) - ((string-match "...ed\\'" word) - (substring word (1- (match-end 0)))) - (t nil)))) - - -;;;###don't autoload -(defun webster (arg) - "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*." - (interactive (list - (let ((prompt (concat "Look up word in webster (" - (current-word) "): ")) - (completion-ignore-case t)) - (downcase - (completing-read prompt webster-completion-table - nil nil))))) - (if (equal "" arg) (setq arg (current-word))) - (message "looking up %s..." (upcase arg)) - (webster-send-request "WORD" (prin1-to-string arg))) - -;;;###don't autoload -(defun webster-endings (arg) - "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*." - (interactive (list - (read-string - (concat - "Find endings for word in webster (" (current-word) "): ")))) - (if (equal "" arg) (setq arg (current-word))) - (webster-send-request "PREFIX" arg) - (webster-send-request "LIST" "")) - -;;;###don't autoload -(defun webster-spell (arg) - "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*." - (interactive (list - (read-string - (concat - "Try to spell word in webster (" (current-word) "): ")))) - (if (equal "" arg) (setq arg (current-word))) - (webster-send-request "EXACT" arg) - (webster-send-request "LIST" arg)) - - -(defun webster-send-request (kind word) - (require 'shell) - (let ((webster-command (concat "open " webster-host " " webster-port "\n"))) - (if (or (not webster-buffer) - (not (buffer-name webster-buffer)) - (not webster-process) - (not (eq (process-status webster-process) 'run))) - (progn - (message - (concat "Attempting to connect to server " webster-host "...")) - (setq webster-buffer - (if (not (fboundp 'make-shell)) ;emacs19 - (make-comint webster-process-name "telnet") - (make-shell webster-process-name "telnet"))) - (set-buffer webster-buffer) - (webster-mode) - (setq webster-process (get-process webster-process-name)) - (process-kill-without-query webster-process) - (set-process-filter webster-process 'webster-initial-filter) - (process-send-string webster-process webster-command) - (setq webster-running nil) - (while (not webster-running) ; wait for feedback - (accept-process-output webster-process)) - (message - (concat "Attempting to connect to server " webster-host - "... Connected.")) - )) - (display-buffer webster-buffer nil) - (process-send-string webster-process (concat kind " " word "\n")))) - -(defun webster-quit () - "Close connection and quit webster-mode. Buffer is not deleted." - (interactive) - (message "Closing connection to %s..." webster-host) - (kill-process webster-process) - (message "Closing connection to %s...done" webster-host) - (setq webster-state "closed") - (if (eq (current-buffer) webster-buffer) - (bury-buffer))) - - -(defun webster-xref-data (event &optional selection-only) - (let* ((buffer (event-buffer event)) - (extent (if buffer (extent-at (event-point event) buffer 'highlight))) - text) - (cond ((and extent (not selection-only)) - (setq text (save-excursion - (set-buffer buffer) - (buffer-substring - (extent-start-position extent) - (extent-end-position extent))))) - ((x-selection-owner-p) ; the selection is in this emacs process. - (setq text (x-get-selection)) - (if (string-match "[\n\r]" text) - (setq text nil)))) - (if (null text) - nil - (while (string-match "\\." text) - (setq text (concat (substring text 0 (match-beginning 0)) - (substring text (match-end 0))))) - (webster-unISO text) - text))) - -(defun webster-xref-word (event) - "Define the highlighted word under the mouse. -Words which are known to have definitions are highlighted when the mouse -moves over them. You may define any word by selecting it with the left -mouse button and then clicking middle." - (interactive "e") - (webster (or (webster-xref-data event) - (error "click on a highlighted word to define")))) - -(defvar webster-menu - '("Webster" - ["Define Word..." webster t] - ["List Words Beginning With..." webster-endings t] - ["Check Spelling Of..." webster-spell t] - "----" - ["Quit Webster" webster-quit t] - )) - -(defun webster-menu (event) - (interactive "e") - (let ((text1 (webster-xref-data event nil)) - (text2 (webster-xref-data event t))) - (if (equal text1 text2) (setq text2 nil)) - (let ((popup-menu-titles t)) - (popup-menu - (nconc (list (car webster-menu)) - (if text1 (list (vector (format "Define %s" (upcase text1)) - (list 'webster text1) t))) - (if text2 (list (vector (format "Define %s" (upcase text2)) - (list 'webster text2) t))) - (cdr webster-menu)))))) - - -(defvar webster-mode-map nil) -(if webster-mode-map - nil - (setq webster-mode-map (make-sparse-keymap)) - (define-key webster-mode-map "?" 'describe-mode) - (define-key webster-mode-map "d" 'webster) - (define-key webster-mode-map "e" 'webster-endings) - (define-key webster-mode-map "q" 'webster-quit) - (define-key webster-mode-map "s" 'webster-spell) - (cond ((string-match "XEmacs" emacs-version) - (define-key webster-mode-map 'button2 'webster-xref-word) - (define-key webster-mode-map 'button3 'webster-menu))) - ) - -(defun webster-mode () - "Major mode for interacting with on-line Webster's dictionary. -\\{webster-mode-map} -Use webster-mode-hook for customization." - (interactive) - (kill-all-local-variables) - (setq major-mode 'webster-mode) - (setq mode-name "Webster") - (use-local-map webster-mode-map) - (setq mode-line-process '(" " webster-state)) - (make-local-variable 'kill-buffer-hook) - (if (not (string= (buffer-name (current-buffer)) "*webster*")) - (setq kill-buffer-hook '(lambda () - (if (get-buffer "*webster*") - (kill-buffer "*webster*"))))) - (set (make-local-variable 'webster-start-mark) - (set-marker (make-marker) (point-max))) - (set (make-local-variable 'page-delimiter) "^-") - (if webster-iso8859/1 (setq ctl-arrow 'iso-8859/1)) - (run-hooks 'webster-mode-hook)) - -;; now in simple.el -;(defun current-word () -; "Word cursor is over, as a string." -; (save-excursion -; (let (beg end) -; (re-search-backward "\\w" nil 2) -; (re-search-backward "\\b" nil 2) -; (setq beg (point)) -; (re-search-forward "\\w*\\b" nil 2) -; (setq end (point)) -; (buffer-substring beg end)))) - -(defun webster-intern (string) - (intern (webster-strip-crud (webster-unISO (downcase string))) - webster-completion-table)) - -(defun webster-unISO (text) - ;; turn the ISO chars into the closest ASCII equiv (how they are indexed) - (while (string-match "\347" text) (aset text (match-beginning 0) ?c)) - (while (string-match "\307" text) (aset text (match-beginning 0) ?C)) - (while (string-match "\335" text) (aset text (match-beginning 0) ?Y)) - (while (string-match "[\375\377]" text) (aset text (match-beginning 0) ?y)) - (while (string-match "[\300-\305]" text) (aset text (match-beginning 0) ?A)) - (while (string-match "[\310-\313]" text) (aset text (match-beginning 0) ?E)) - (while (string-match "[\314-\317]" text) (aset text (match-beginning 0) ?I)) - (while (string-match "[\322-\326]" text) (aset text (match-beginning 0) ?O)) - (while (string-match "[\331-\334]" text) (aset text (match-beginning 0) ?U)) - (while (string-match "[\340-\345]" text) (aset text (match-beginning 0) ?a)) - (while (string-match "[\350-\353]" text) (aset text (match-beginning 0) ?e)) - (while (string-match "[\354-\357]" text) (aset text (match-beginning 0) ?i)) - (while (string-match "[\362-\366]" text) (aset text (match-beginning 0) ?o)) - (while (string-match "[\371-\374]" text) (aset text (match-beginning 0) ?u)) - text) - -(defun webster-strip-crud (text) - (while (string-match ".\b" text) - (setq text (concat (substring text 0 (match-beginning 0)) - (substring text (match-end 0))))) - text) - - -(defun webster-textify-region (start end &optional nointern) - (save-excursion - (goto-char (1- end)) - (if (looking-at "[^\n]\n") (setq end (1+ end))) - (save-restriction - (let ((case-fold-search nil)) - (narrow-to-region start end) - ;; translate silly "special character" codes into something we can use. - ;; we need to do this before nuking the recursive backspace codes. - ;; - ;; Note that mostly these are used as modifiers, like "h(\bQsub-dot)\bQ" - ;; meaning h with a dot under it. We don't handle any of that... - ;; - (goto-char (point-min)) - (while (re-search-forward "(\bQ[-a-z0-9*$ ]+)\bQ" nil t) - (goto-char (match-beginning 0)) - (let ((s (point)) - (e (match-end 0))) - (forward-char 3) - (if (cond - ((looking-at "circumflex") (insert ?^) t) - ((looking-at "brace") (insert ?\{) t) - ((looking-at "tilda") (insert ?\~) t) - ((looking-at "prime") (insert ?\') t) - ((looking-at "accent grave") (insert ?\`) t) - ((looking-at "accent acute") (insert ?\264) t) - ((looking-at "sub-diaeresis") (insert ?\250) t) - ((looking-at "macron") (insert ?\257) t) - ((looking-at "a-e") (insert ?\346) t) - ((looking-at "curly-N") (insert ?\361) t) - ((looking-at "sub-macron") (insert ?\367) t) - ((looking-at "slash-o") (insert ?\370) t) - ((looking-at "cidilla") (insert ?\371) t) - ((looking-at "sup-circle") (insert ?\372) t) - ((looking-at "macron-tilda") (insert ?\373) t) - ((looking-at "hachek") (insert ?\374) t) - ((looking-at "sub-breve") (insert ?\375) t) - ((looking-at "breve") (insert ?\376) t) - ((looking-at "sub-dot") (insert ?\377) t) - ((looking-at "double-bar-\\$") (insert ?$) t) - ;; talk about your special-purpose characters... - ((looking-at "10\\*10\\*100") - (delete-region s e) - (insert "10^10^100") - nil) - ((looking-at "plus squareroot -1") - (delete-region s e) - (insert "sqrt(-1)") - nil) - ;; We don't handle these yet: - ;; aleph ayin beth breve c-bar check daleth double-arrows - ;; double-half-arrows double-hyphen edh fermata-up fermata-down - ;; fist flat-sign g-sub-macron gimel hachek he heth kaph lamed - ;; mem natural-sign nun parallel pe presa prime qoph radical - ;; radical-sign resh sadhe samekh shin sin slur-down spade - ;; stacked-commas tau teth thorn triple-bond waw yod yogh - ;; zayin "* * *" sadhe(final) "3 character overbar" - (t nil)) - (progn - (delete-region s (+ s 3)) - (delete-region (+ s 1) (- e 2)))))) - - ;; nuke silly recursive backspace codes - (goto-char (point-min)) - (while (search-forward "|\bB" nil t) - (goto-char (point-min)) - (save-excursion - (while (search-forward "|\bB" nil t) - (delete-char -3) - (insert "\b")))) - ;; convert @ to ~ - (goto-char (point-min)) - (while (search-forward "@" nil t) - (delete-char -1) (insert "~") - (if webster-fontify - (webster-fontify (- (point) 1) (point) 'webster-bold-italic))) - ;; now convert lots of other magic codes... - (goto-char (point-min)) - (while (search-forward "\b" nil t) - (delete-char -1) - (forward-char -1) - (cond - - ((looking-at "([MXYAIJ]") - ;; start smallcaps/italic/bold/super/sub/subitalic - (looking-at "([MXYAIJ]\\([^\)]*\\))") - (let ((start (match-beginning 1)) - (end (match-end 1))) - (and (not nointern) (looking-at "(M") - (webster-intern (buffer-substring start end))) - (if webster-fontify - (let ((c (char-after (1- start)))) - (webster-fontify start end - (cond ((= ?M c) 'webster-small) - ((= ?X c) 'webster-italic) - ((= ?Y c) 'webster-bold) - ((= ?A c) 'webster-superscript) - ((= ?I c) 'webster-subscript) - ((= ?J c) 'webster-subscript) - ) - (= ?M c)))))) - - ;; #### dubious - ((looking-at "([BGR]") ; start greek/APL/symbol - (and webster-fontify - (looking-at "(\\(.\\)[^\)]*)\^H\\1") - (let ((c (char-after (1- (match-beginning 1))))) - (webster-fontify - (match-beginning 0) (match-end 0) 'webster-small)))) - - ((looking-at ")[ABGIJMRXY]") ; end font-shift - nil) - - ((looking-at "<(\\|(<") - (insert (if webster-iso8859/1 ?\253 "<<")) - (if webster-fontify - (let ((p (point)) - (e (and (save-excursion (search-forward ")\b>" nil t)) - (match-beginning 0)))) - (if e - (webster-fontify p e 'webster-italic))))) - - ((looking-at ")>\\|>)") - (insert (if webster-iso8859/1 ?\273 ">>"))) - - ;; #### dubious - ((looking-at "[a-z\346][-._]") ; lineover,dotover/under,over/underbar - (insert (following-char)) - (if webster-fontify - (webster-fontify (- (point) 1) (point) 'webster-underline))) - - ((looking-at "[a-zA-Z]:") ; umlaut - (let (c) - (if (and webster-iso8859/1 - (setq c (cdr (assq (following-char) webster-umlauts)))) - (insert c) - (insert (following-char)) - (insert (if webster-iso8859/1 ?\250 ?:))))) - - ((looking-at "[\"~][a-zA-Z]") ; umlaut - (let (c) - (delete-char 1) - (if (and webster-iso8859/1 - (setq c (cdr (assq (following-char) webster-umlauts)))) - (insert c) - (insert (following-char)) - (insert (if webster-iso8859/1 ?\250 ?:))) - (insert " ") - (forward-char -1))) - - ((looking-at "[a-zA-Z]\)") ; grave - (let (c) - (if (and webster-iso8859/1 - (setq c (cdr (assq (following-char) webster-graves)))) - (insert c) - (insert (following-char)) - (insert "`")))) - - ((looking-at ">[a-zA-Z]") ; grave - (let (c) - (delete-char 1) - (if (and webster-iso8859/1 - (setq c (cdr (assq (following-char) webster-graves)))) - (insert c) - (insert (following-char)) - (insert "`")) - (insert " ") - (forward-char -1))) - - ((looking-at "[a-zES]\(") ; acute - (let (c) - (if (and webster-iso8859/1 - (setq c (cdr (assq (following-char) webster-acutes)))) - (insert c) - (insert (following-char)) - (insert (if webster-iso8859/1 ?\264 ?\'))))) - - ((looking-at "<[a-zA-Z]") ; acute - (let (c) - (delete-char 1) - (if (and webster-iso8859/1 - (setq c (cdr (assq (following-char) webster-acutes)))) - (insert c) - (insert (following-char)) - (insert (if webster-iso8859/1 ?\264 ?\'))) - (insert " ") - (forward-char -1))) - - ((looking-at ";[Cc]") ; ccedilla - (delete-char 1) - (if webster-iso8859/1 - (progn - (insert (if (= (following-char) ?C) ?\307 ?\347)) - (insert ? ) (forward-char -1)) - (forward-char 1) - (insert ?\,))) - - ((looking-at "|S") ; section - (insert (if webster-iso8859/1 ?\247 "SS"))) - - ((looking-at "|q") ; paragraph - (insert (if webster-iso8859/1 ?\266 "PP"))) - - ((looking-at "*o") ; centerdot - (insert (if webster-iso8859/1 ?\267 ?\*))) - - ((looking-at "+=") ; plusminus - (insert (if webster-iso8859/1 ?\261 "+/-"))) - - ((looking-at "-:") ; division - (insert (if webster-iso8859/1 ?\367 "+/-"))) - - ((looking-at "-[xX]") ; multiplication - (insert (if webster-iso8859/1 ?\327 "+/-"))) - - ((looking-at "-m") (insert "--")) - ((looking-at "-n") (insert "-")) - ((looking-at "-/") (insert "\\")) - ((looking-at ")|") (insert ?\[)) - ((looking-at "|)") (insert ?\])) - ((looking-at "-3") (insert "...")) - ((looking-at "=\\\\") (insert "$")) - - ((looking-at "'o") ; degree - (insert (if webster-iso8859/1 ?\260 ?\*))) - - ((or (looking-at "nj") ; nj symbol - (looking-at "|-") ; dagger - (looking-at "|=") ; doubledagger - (looking-at "|o") ; lowerphi - (looking-at "'b") ; stroke - ) - (if webster-fontify - (webster-fontify (point) (+ (point) 2) 'webster-bold)) - (insert " ") - (forward-char -2)) - - ((looking-at "[cC]\371") ; (\bQcidilla)\bQ - (if webster-iso8859/1 - (insert (if (= (following-char) ?C) ?\307 ?\347)) - (forward-char 1) - (insert ?\,))) - -; ((or (looking-at "[a-zA-Z]\250") ; (\bQsub-diaeresis)\bQ -; (looking-at "[a-zA-Z]\346") ; (\bQa-e)\bQ -; (looking-at "[a-zA-Z]\361") ; (\bQcurly-N)\bQ -; (looking-at "[a-zA-Z]\367") ; (\bQsub-macron)\bQ -; (looking-at "[a-zA-Z]\370") ; (\bQslash-o)\bQ -; (looking-at "[a-zA-Z]\371") ; (\bQcidilla)\bQ -; (looking-at "[a-zA-Z]\372") ; (\bQsup-circle)\bQ -; (looking-at "[a-zA-Z]\373") ; (\bQmacron-tilda)\bQ -; (looking-at "[a-zA-Z]\374") ; (\bQhachek)\bQ -; (looking-at "[a-zA-Z]\375") ; (\bQsub-breve)\bQ -; (looking-at "[a-zA-Z]\376") ; (\bQbreve)\bQ -; (looking-at "[a-zA-Z]\377") ; (\bQsub-dot)\bQ -; ) -; (forward-char 1) (insert " ") (forward-char -1) -; (webster-fontify (1- (point)) (point) 'webster-underline)) - - ((looking-at "/[a-zA-Z]") ; greek - (forward-char 1) - (insert " <") - (forward-char 1) - (insert ?\>) - (forward-char -5)) - - ;; overstrike - ((looking-at (format "[%c][%c]" (following-char) (following-char))) - (insert (following-char)) - (if webster-fontify - (webster-fontify (- (point) 1) (point) 'webster-bold))) - - (t ; ## debug - (insert (following-char)) - (insert "\b") - (insert (buffer-substring (+ 1 (point)) (+ 2 (point)))) - )) - (delete-char 2)) - - (goto-char (point-min)) - (setq start (point) - end (point-max)) - (widen) - (beginning-of-line) - (narrow-to-region (point) end) - (goto-char start) - ;; (fill-region-as-paragraph (point-min) (point-max)) - (while (not (eobp)) - (setq start (point)) - (skip-chars-forward "^ \n\t") - (if (>= (current-column) fill-column) - (progn - (goto-char start) - (delete-horizontal-space) - (insert "\n" (or fill-prefix ""))) - (skip-chars-forward " \n\t"))) - )))) - - -(defun webster-pos (start end) - (save-excursion - (goto-char start) - (cond ((and (= start (1- end)) (looking-at "n")) "noun") - ((or (not webster-fontify) (/= start (- end 2))) - (buffer-substring start end)) - ((looking-at "ac") "adjective combinational form") - ((looking-at "aj") "adjective") - ((looking-at "as") "adjective suffix") - ((looking-at "av") "adverb") - ((looking-at "ca") "adjective combinational form") - ((looking-at "cf") "combinational form") - ((looking-at "cj") "conjunction") - ((looking-at "da") "definite article") - ((looking-at "ia") "indefinite article") - ((looking-at "ij") "interjection") - ((looking-at "is") "interjection suffix") - ((looking-at "js") "adjective suffix") - ((looking-at "nc") "noun combinational form") - ((looking-at "np") "noun plural suffix") - ((looking-at "ns") "noun suffix") - ((looking-at "pf") "prefix") - ((looking-at "pn") "pronoun") - ((looking-at "pp") "preposition") - ((looking-at "sf") "verb suffix") - ((looking-at "tm") "trademark") - ((looking-at "va") "verbal auxilliary") - ((looking-at "vb") "verb") - ((looking-at "vc") "verb combinational form") - ((looking-at "vi") "verb intransitive") - ((looking-at "vm") "verb impersonal") - ((looking-at "vp") "verb imperfect") - ((looking-at "vs") "verb suffix") - ((looking-at "vt") "verb transitive") - (t (buffer-substring start end))))) - - -(defun webster-convert () - (goto-char (point-min)) - ;; nuke the continuation lines - (save-excursion - (while (re-search-forward "^C:" nil t) - (forward-char -2) - (while (looking-at "^C:") - (forward-line 1)) - (forward-line -1) - (while (looking-at "^C:") - (forward-char -1) - (let ((n (- (point) (save-excursion (beginning-of-line) (point))))) - (delete-char 3) - ;; What a stupid format! (example: "fat") - (if (= n 79) (insert " ")) - (beginning-of-line))))) - (goto-char (point-min)) - (let ((last-type nil) - (this-type nil) - (last-part nil)) - (while (not (eobp)) - (setq this-type (following-char)) - (cond - ((looking-at "^WORD ") - (let ((p (point))) - (end-of-line) - (delete-region p (point)))) - - ((looking-at "^21[12] ") ; reply to a LIST command; one line. - (delete-char 4)) - ((looking-at "^220 ") ; reply to a LIST command; intern the results. - (let ((p (point))) - (if (eq (preceding-char) ?\n) (setq p (1- p))) - (end-of-line) - (delete-region p (point))) - (insert "\n") - (while (not (or (eobp) (looking-at "\n\n"))) - (forward-line 1) - (insert " ") - (let (s e) - (while (looking-at "[^\n;]+;") - (webster-intern (buffer-substring (setq s (match-beginning 0)) - (setq e (1- (match-end 0))))) - (goto-char (match-end 0)) - (insert " ") - (if webster-fontify - (webster-fontify s e 'webster-bold t))) - (if (looking-at "\n") - nil - (webster-intern - (buffer-substring (setq s (point)) - (progn (end-of-line) (setq e (point))))) - (if webster-fontify - (webster-fontify s e 'webster-bold t))) - ))) - - ((looking-at "^\n") - (delete-char 1)) - - ((looking-at "^\\(200\\|221\\|PREFIX\\|LIST\\|EXACT\\)[- ]") - ;; just toss these. - (let ((p (point))) - (if (eq (preceding-char) ?\n) (setq p (1- p))) - (end-of-line) - (delete-region p (point)))) - - ((looking-at "^F:") - ;; First record: F:entname;homono;prefsuf;dots;accents;pos;posjoin;pos2 - (delete-char 2) - (search-forward ";") - (let ((p (1- (point))) - homonym prefix dots pos posj pos2) - (if (looking-at "[0-9]+") - (setq homonym (buffer-substring (point) (match-end 0)))) - (search-forward ";") - (if (looking-at "[^;]+") - (setq prefix (buffer-substring (point) (match-end 0)))) - (search-forward ";") - (if (looking-at "[0-9]+") - (setq dots (append (buffer-substring (point) (match-end 0)) - nil))) - (search-forward ";") - ;; ignore accents - (search-forward ";") - (if (looking-at "[a-z]+") - (setq pos (webster-pos (point) (match-end 0)))) - (search-forward ";") - (if (looking-at "[a-z]+") - (setq posj (webster-pos (point) (match-end 0)))) - (if (looking-at "[a-z]+") - (setq pos2 (webster-pos (point) (match-end 0)))) - (end-of-line) - (delete-region p (point)) - (beginning-of-line) - (insert " ") - (let ((e (save-excursion (end-of-line) (point)))) - (webster-intern (buffer-substring (point) e)) - (if webster-fontify - (webster-fontify (point) e 'webster-bold t))) - (beginning-of-line) - (if (not homonym) - (insert " ") - (let ((p (point))) - (insert homonym) - (if webster-fontify - (webster-fontify p (point) 'webster-bold-italic)))) - (forward-char 1) - (while dots - (forward-char (- (car dots) ?0)) - (insert ".") - (setq dots (cdr dots))) - (end-of-line) - (let ((p (point))) - (if pos (insert " " pos)) - (if posj (insert " " posj)) - (if pos2 (insert " " pos2)) - (if (and webster-fontify (or pos posj pos2)) - (webster-fontify p (point) 'webster-italic))) - (insert " ") - ;; prefix/suffix is "p" or "s"; I don't know what it's for. - (setq last-part pos))) - - ((looking-at "^P:") - ;; Pronunciation: P:text - (delete-char 2) (delete-char -1) - (insert " \\") - (let ((p (point)) - (fill-prefix " ")) - (end-of-line) - (insert " ") - (if webster-fontify - (progn - (webster-fontify (1- p) (1- (point)) 'webster-italic) - (forward-char -1))) - (webster-textify-region p (point)) - (insert "\\"))) - - ((looking-at "E:") - ;; Etymology: E:text - (delete-char 2) (insert " [") - (let ((fill-prefix " ")) - (webster-textify-region (point) (progn (end-of-line) (point)))) - (insert "]")) - - ((looking-at "S:") - ;; Synonym: S:text - (delete-char 2) (insert " ") - (let ((fill-prefix " ")) - (webster-textify-region (point) (progn (end-of-line) (point))))) - - ((looking-at "X:") - ;; Cross Reference: X:word;wrdsuper;wrdsubs;type;word2 - (setq last-part nil) - (let (p word super sub type word2) - (delete-char 2) - (setq p (point)) - (if (looking-at "[^;]+") - (setq word (upcase (buffer-substring (point) (match-end 0))))) - (search-forward ";") - (if (looking-at "[^;]+") - (setq super (buffer-substring (point) (match-end 0)))) - (search-forward ";") - (if (looking-at "[^;]+") - (setq sub (buffer-substring (point) (match-end 0)))) - (search-forward ";") - (if (looking-at "[0-9]+") - (setq type (string-to-int - (buffer-substring (point) (match-end 0))))) - (search-forward ";") - (if (looking-at "[^;]+") - (setq word2 (upcase (buffer-substring (point) (match-end 0))))) - (delete-region p (point)) - (insert " ") - (cond ((eq type 0) (insert "see (\bM" word ")\bM")) - ((eq type 1) (insert "see (\bM" word ")\bM table")) - ((eq type 2) (insert "### ILLEGAL XREF CODE 2")) - ((eq type 3) (insert "see (\bM" word2 ")\bM at (\bM" word - ")\bM table")) - ((eq type 4) (insert "compare (\bM" word ")\bM")) - ((eq type 5) (insert "compare (\bM" word ")\bM table")) - ((eq type 6) (insert "called also (\bM" word ")\bM")) - ((eq type 7) (insert "### ILLEGAL XREF CODE 7")) - ((eq type 8) (insert "(\bYsyn)\bY see in addition (\bM" word - ")\bM")) - ((eq type 9) (insert "(\bYsyn)\bY see (\bM" word ")\bM")) - (t (insert "#### ILLEGAL XREF CODE " (or type "nil")))) - (let ((fill-prefix " ")) - (webster-textify-region p (point))))) - - ((looking-at "D:") - ;; Definition: D:snsnumber;snsletter;snssubno;pos;text - (let (p n sub1 sub2 part) - (setq p (point)) - (forward-char 2) - (if (looking-at "[0-9]+") - (setq n (buffer-substring (point) (match-end 0)))) - (search-forward ";") - (if (looking-at "[a-z]+") - (setq sub1 (buffer-substring (point) (match-end 0)))) - (search-forward ";") - (if (looking-at "[0-9]+") - (setq sub2 (buffer-substring (point) (match-end 0)))) - (search-forward ";") - (if (looking-at "[a-z]+") - (setq part (webster-pos (point) (match-end 0)))) - (search-forward ";") - (delete-region p (point)) - (if (and sub2 (not (equal sub2 "1"))) - (setq sub1 " ")) - (if (and sub1 (not (equal sub1 "a"))) - (setq n " ")) - ;; If a Definition appears after a Label, don't print numbers - ;; as the label has done that already. - (if (eq last-type ?L) - (setq n (and n " ") sub1 (and sub1 " ") sub2 (and sub2 " "))) - (if (and part (not (equal part last-part))) - (let ((p (point))) - (insert " " part "\n") - (if webster-fontify - (webster-fontify p (1- (point)) 'webster-italic)) - (setq last-part part))) - (indent-to (- 6 (length n))) - (setq p (point)) - (if (and n (not (equal n "0"))) - (insert n " ")) - (if sub1 (insert " " sub1 " ")) - (if sub2 (insert " (" sub2 ") ")) - (insert ": ") - (if webster-fontify - (webster-fontify p (point) 'webster-bold-italic)) - (setq p (point)) - (end-of-line) - (let ((fill-prefix (make-string (if sub2 17 (if sub1 12 9)) ? ))) - (webster-textify-region p (point))))) - - ((looking-at "R:") - ;; Run-on: R:name;dots;accents;pos1;posjoin;pos2 - (delete-char 2) - (insert " ") - (search-forward ";") (delete-char -1) - (let ((beg (save-excursion (beginning-of-line) (+ (point) 2)))) - (webster-intern (buffer-substring beg (point))) - (if webster-fontify - (webster-fontify beg (point) 'webster-bold t))) - (if (looking-at "[0-9]+") - (let* ((dots (append (buffer-substring (point) (match-end 0)) - nil))) - (delete-region (point) (match-end 0)) - (beginning-of-line) - (forward-char 2) - (while dots - (forward-char (- (car dots) ?0)) - (insert ".") - (setq dots (cdr dots))))) - (search-forward ";") (delete-char -1) - ;; throw away the accents - (let ((p (point))) - (search-forward ";") - (delete-region p (point))) - (insert " ") - (if (looking-at "[a-z][a-z]?;") - (let* ((start (point)) - (end (1- (match-end 0))) - (pos (webster-pos start end))) - (delete-region start end) - (insert pos) - (if webster-fontify - (webster-fontify start (point) 'webster-italic)))) - (cond ((search-forward ";" nil t) (delete-char -1) (insert " "))) - (cond ((search-forward ";" nil t) (delete-char -1) (insert " ")))) - - ((looking-at "L:") - ;; Label: L:snsnumber;snsletter;snssubno;text - (let (p n sub1 sub2) - (setq p (point)) - (forward-char 2) - (if (looking-at "[0-9]+") - (setq n (buffer-substring (point) (match-end 0)))) - (search-forward ";") - (if (looking-at "[a-z]+") - (setq sub1 (buffer-substring (point) (match-end 0)))) - (search-forward ";") - (if (looking-at "[0-9]+") - (setq sub2 (buffer-substring (point) (match-end 0)))) - (search-forward ";") - (delete-region p (point)) - (if (and sub2 (not (equal sub2 "1"))) - (setq sub1 " ")) - (if (and sub1 (not (equal sub1 "a"))) - (setq n " ")) - (indent-to (- 6 (length n))) - (setq p (point)) - (if (not (equal n "0")) - (insert (or n " ") " ")) - (if sub1 (insert " " sub1)) - (if sub2 (insert " (" sub2 ")")) - (insert " ") - (if webster-fontify - (webster-fontify p (point) 'webster-bold-italic)) - (setq p (point)) - (end-of-line) - (let ((fill-prefix (make-string (if sub2 17 (if sub1 12 9)) ? ))) - (webster-textify-region p (point))))) - - ((looking-at "V:") - ;; Variant: V:name;dots;accents;level1()level2 - (delete-char 2) - (let ((p (point)) - beg) - (search-forward ";") (delete-char -1) - (webster-intern (buffer-substring - (save-excursion (beginning-of-line) - (setq beg (point))) - (point))) - (if webster-fontify - (webster-fontify beg (point) 'webster-bold t)) - (if (looking-at "[0-9]+") - (let* ((dots (append (buffer-substring (point) (match-end 0)) - nil))) - (delete-region (point) (match-end 0)) - (beginning-of-line) - (while dots - (forward-char (- (car dots) ?0)) - (insert ".") - (setq dots (cdr dots))))) - (search-forward ";") ; skip accents - (delete-region (1- (point)) - (save-excursion (end-of-line) (point))) - (let ((fill-prefix " ")) - (webster-textify-region p (point) t))) - (save-excursion - (beginning-of-line) - (cond ((eq last-type ?F) (delete-char -1)) - ((eq last-type ?V) (delete-char -1) (insert "; ")) - (t (insert " "))))) - - ((looking-at ".\n") - (delete-char 1)) - ((looking-at "22[0-9] ") - (delete-region (point) (save-excursion (end-of-line) (point)))) - ((looking-at "\n") - nil) - (t - (insert "* "))) - (setq last-type this-type) - (forward-line 1) - (while (save-excursion - (and (not (bobp)) - (progn (forward-line -1) (looking-at "\n")))) - (delete-char -1)) - )) - (goto-char (point-min)) - (cond ((search-forward "\^H" nil t) - (goto-char (point-min)) - (insert - "\n****\tThis definition contains unrecognized font-change codes." - "\n****\tPlease tell jwz.\n\n") - (goto-char (point-min)))) - - ;; lay down the default font; don't put it over the spaces and tabs on - ;; the beginning of the line so that those space as if it was a fixed - ;; width font. There must be a better way than - (if webster-fontify - (save-excursion - (let (e) - (goto-char (point-min)) - (while (not (eobp)) - (skip-chars-forward " \t") - ;; avoid extent overlaps; should be able to use extent priorities - ;; to obviate this, but it's late. - (while (setq e (extent-at (point))) - (goto-char (1+ (extent-end-position e)))) - (setq e (make-extent (point) (progn (forward-line 1) (point)))) - (set-extent-face e 'webster))))) - ) - - -;; Codes: -;; -;; (A start superscript catalan -;; (B start unknown mixed number -;; (G start greek alpha -;; (I start subscript alcohol -;; (J start subitalic mixed number -;; (M start small mitten -;; (Q start special mitzvah -;; (R start APL mixed -;; (X start italic everywhere... -;; (Y start bold everywhere... -;; )A end superscript catalan -;; )B end unknown mixed number -;; )G end greek alpha -;; )I end subscript alcohol -;; )J end subitalic mixed number -;; )M end small mitten -;; )Q end special mitzvah -;; )R end APL mixed -;; )X end italic everywhere... -;; )Y end bold everywhere... -;; "a a-umlaut acetoacetic acid -;; "e e-umlaut agio -;; "i i-umlaut alcaic -;; "o o-umlaut ale -;; "u u-umlaut alpenglow -;; a: a-umlaut aardvark -;; n: n-umlaut pogy -;; o: o-umlaut coccyx -;; s: s-umlaut centrifugation -;; u: u-umlaut accouter -;; w: w-umlaut bourgeois -;; I: I-umlaut natural -;; ~a a-umlaut alcove -;; ~e e-umlaut Boxer -;; ~i i-umlaut Cistercian -;; ~o o-umlaut alcove -;; ~u u-umlaut Boxer -;; ~E E-umlaut arris -;; ~O O-umlaut prix fixe -;; >e e-grave arriere-pensee -;; >a a-grave pompano -;; >u u-grave coca -;; >E E-grave -;; u) u-grave -;; o) o-grave -;; i) i-grave -;; s) s-grave -;; ;C C-cedilla compendia -;; ;c c-cedilla babassu -;; guillemotright everywhere... -;; <( guillemotleft everywhere... -;; (< guillemotleft (?) come -;; -m longdash pi -;; n_ nj babbling -;; 'o degree -;; |) ] -;; |- dagger -;; |= doubledagger -;; |S section -;; |o lower-phi -;; |q paragraph paragraph -;; =\ "$" -;; (< "<" -;; (| "[" -;; 'b stroke -;; *o centerdot -;; += plusminus -;; -/ \ -;; -3 "..." -;; -: division -;; -X multiplication -;; -n "-" -;; -x multiplication -;; '' ' overstrike -;; :: : overstrike -;; ;; ; overstrike -;; MM M overstrike -;; a- a-lineover -;; e- e-lineover -;; i- i-lineover -;; o- o-lineover -;; u- u-lineover -;; y- y-lineover -;; A- A-lineover -;; E- E-lineover -;; I- I-lineover -;; O- O-lineover -;; U- U-lineover -;; Q- Q-lineover2 -;; a. a-dotover -;; e. e-dotover -;; m. m-dotover -;; n. n-dotover -;; o. o-dotover -;; r. r-dotover -;; u. u-dotover -;; e_ e-lineunder -;; h_ h-lineunder -;; k_ k-lineunder -;; r- r-lineunder -;; r_ r-lineunder -;; t_ t-lineunder -;; u_ u-lineunder -;; k- k-dotunder - -;; t(\bQsub-dot)\bQ t-dotunder -;; s(\bQsub-dot)\bQ s-dotunder -;; h(\bQsub-dot)\bQ h-dotunder aceldama -;; n(\bQsub-dot)\bQ n-dotunder -;; r(\bQsub-dot)\bQ r-dotunder -;; d(\bQsub-dot)\bQ d-dotunder -;; z(\bQsub-dot)\bQ z-dotunder -;; l(\bQsub-dot)\bQ l-dotunder -;; S(\bQsub-dot)\bQ S-dotunder -;; H(\bQsub-dot)\bQ H-dotunder -;; o(\bQsub-dot)\bQ o-dotunder -;; a(\bQsub-dot)\bQ a-dotunder -;; e(\bQbreve)\bQ e-breve -;; u(\bQbreve)\bQ u-breve -;; i(\bQbreve)\bQ i-breve -;; a(\bQbreve)\bQ a-breve -;; A(\bQbreve)\bQ A-breve -;; s(\bQbreve)\bQ s-breve -;; n(\bQbreve)\bQ n-breve -;; E(\bQbreve)\bQ E-breve -;; y(\bQbreve)\bQ y-breve -;; o(\bQbreve)\bQ o-breve -;; h(\bQsub-breve)\bQ h-breve -;; e(\bQhachek)\bQ e-hachek -;; s(\bQhachek)\bQ s-hachek -;; z(\bQhachek)\bQ z-hachek -;; c(\bQhachek)\bQ c-hachek -;; j(\bQhachek)\bQ j-hachek -;; i(\bQhachek)\bQ i-hachek -;; u(\bQhachek)\bQ u-hachek -;; g(\bQhachek)\bQ g-hachek -;; r(\bQhachek)\bQ r-hachek -;; a(\bQhachek)\bQ a-hachek -;; C(\bQhachek)\bQ C-hachek -;; a(\bQmacron-tilda)\bQ a-macrontilda -;; i(\bQmacron-tilda)\bQ i-macrontilda -;; e(\bQmacron-tilda)\bQ e-macrontilda -;; a(\bQsup-circle)\bQ a-circleover -;; A(\bQsup-circle)\bQ A-circleover -;; e(\bQcidilla)\bQ e-cedilla -;; o(\bQcidilla)\bQ o-cedilla -;; a(\bQcidilla)\bQ a-cedilla -;; z(\bQsub-diaeresis)\bQ z-umlautunder -;; r(\bQsub-diaeresis)\bQ r-umlautunder -;; t(\bQsub-macron)\bQ t-lineunder -;; B(\bQ3 character overbar)\bQ B-lineover3 - -;; (\bQa-e)\bQ- ae-overbar (?) herring - -;; "U unknown -;; '- unknown -;; 'a unknown -;; (j unknown -;; )o unknown -;; - unknown -;; -0 unknown -;; -> unknown -;; -M unknown -;; -N unknown -;; -O unknown -;; -s unknown -;; ;( unknown -;; <' unknown -;; ' unknown -;; B unknown -;; G< unknown -;; G> unknown -;; I' unknown -;; O' unknown -;; S unknown -;; c| unknown -;; e@ unknown -;; eg unknown -;; en unknown -;; er unknown -;; et unknown -;; i" unknown -;; l- unknown -;; m- unknown -;; n, unknown -;; nB unknown -;; o@ unknown -;; os unknown -;; ot unknown -;; s, unknown chouse -;; u@ unknown -;; | unknown - -;; /a unknown alpha -;; /b unknown -;; /c unknown -;; /d unknown -;; /e unknown -;; /g unknown -;; /h unknown -;; /i unknown -;; /k unknown -;; /l unknown -;; /m unknown -;; /n unknown -;; /p unknown -;; /r unknown -;; /s unknown -;; /t unknown -;; /u unknown -;; /v unknown -;; /w unknown -;; /x unknown -;; /z unknown - -;; /C unknown -;; /D unknown -;; /F unknown -;; /G unknown -;; /I unknown -;; /L unknown -;; /N unknown -;; /O unknown -;; /P unknown -;; /S unknown -;; /U unknown -;; /V unknown -;; /W unknown -;; /X unknown diff -r 578fd4947a72 -r 7d55a9ba150c lisp/packages/webster-www.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/packages/webster-www.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,50 @@ +;;; webster-www.el --- Look up a word in WWW Merriam-Webster dictionary + +;; Copyright (c) 1997 by Tomasz J. Cholewo + +;; Created: 1997/03/10 +;; Version: 1.0 +;; Keywords: comm, hypermedia + +;; 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. + +;;; Code: + +(defvar webster-url "http://www.m-w.com/cgi-bin/mweb?book=Dictionary&va=" + "URL to reference for Webster's dictionary.") + +;;;###autoload +(defun webster-www (arg) +"Look up a word in the Webster's dictionary at http://www.m-w.com using WWW." + (interactive (list + (let ((prompt (concat "Look up word in webster (" + (current-word) "): "))) + (read-string prompt)))) + (require 'url) + (require 'w3-forms) + (if (equal "" arg) (setq arg (current-word))) + (funcall browse-url-browser-function + (concat + webster-url + (w3-form-encode-xwfu arg)))) + +(provide 'webster-www) + +;;; webster-www.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/packages/webster.el --- a/lisp/packages/webster.el Mon Aug 13 09:23:08 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,511 +0,0 @@ -;; Copyright (C) 1989 Free Software Foundation - -;; 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. - -;; Author Jason R. Glasgow (glasgow@cs.yale.edu) -;; Modified from telnet.el by William F. Schelter -;; But almost entirely different. -;; -;; Modified by Dirk Grunwald to maintain an open connection. -;; -;; 3/18/89 Ashwin Ram -;; Added webster-mode. -;; Fixed documentation. -;; -;; 3/20/89 Dirk Grunwald -;; Merged Rams changes with new additions: smarter window placement, -;; correctly handles un-exposed webster windows, minor cleanups. -;; Also, ``webster-word'', akin to ``spell-word''. -;; -;; To use this, you might want to add this line to your .emacs file: -;; -;; (autoload 'webster "webster" "look up a word in Webster's 7th edition" t) -;; -;; Then just hit M-x webster to look up a word. -;; -;; 3/21/89 Dave Sill -;; Removed webster-word and webster-define, adding default of current word to -;; webster, webster-spell, and webster-endings instead. -;; -;; 1/21/91 Jamie Zawinski -;; Added webster-reformat to produce better looking output. Made it notice -;; references to other words in the definitions (all upper-case) and do -;; completion on them in the string read by meta-x webster. -;; -;; 9/14/91 Jamie Zawinski -;; Improved the above. -;; -;; 4/15/92 Jamie Zawinski -;; Improved formatting some more, and added Lucid GNU Emacs font and mouse -;; support (mostly cannibalized from webster-ucb.el.) - -(defvar webster-host "agate.berkeley.edu" ;"129.79.254.192" - "The host to use as a webster server.") - -(defvar webster-port "2627" - "The port to connect to. Either 103 or 2627") - -(defvar webster-process nil - "The current webster process") - -(defvar webster-process-name "webster" - "The current webster process") - -(defvar webster-buffer nil - "The current webster process") - -(defvar webster-running nil - "Used to determine when connection is established") - -;;; -;;; Initial filter for ignoring information until successfully connected -;;; -(defun webster-initial-filter (proc string) - (let ((this-buffer (current-buffer))) - (set-buffer webster-buffer) - (goto-char (point-max)) - (cond ((not (eq (process-status webster-process) 'run)) - (setq webster-running t) - (message "Webster died")) - ((string-match "No such host" string) - (setq webster-running t) - (kill-buffer (process-buffer proc)) - (error "No such host.")) - ((string-match "]" string) - (setq webster-running t) - (set-process-filter proc 'webster-filter))) - (set-buffer this-buffer))) - -(defvar webster-reformat t - "*Set this to t if you want the webster output to be prettied up, and -for the \\[webster] prompt to do completion across the set of words known -to be in the dictionary (words you've looked up, or which appeared in -definitions as crossreferences.)") - -(defun webster-filter (proc string) - (let ((this-buffer (current-buffer)) - (endp nil)) - (set-buffer webster-buffer) - (cond ((not (eq (process-status webster-process) 'run)) - (message "Webster died")) - ((string-match "Connection closed" string) - (message "Closing webster connection...") - (kill-process proc) - (replace-regexp "Process webster killed" "" nil) - (goto-char 1) - (message "Closing webster connection...Done.")) - ((string-match "SPELLING 0" string) - (insert "...Word not found in webster\n")) - ((string-match "SPELLING 1" string) - (insert "...Spelled correctly\n")) - ((let ((end-def-message (or (string-match "\200" string) - (string-match "\0" string)))) - (if end-def-message - (progn - (webster-filter - proc - (concat (substring string 0 (- end-def-message 1)) "\n\n")) - (setq endp t) - (goto-char (point-max)) - t)))) - (t - (goto-char (point-max)) - (let ((now (point))) - (insert string) - (delete-char-in-region now (point) "\^M" " ")) - (if (process-mark proc) - (set-marker (process-mark proc) (point))))) - (if endp - ;; if the webster window is visible, move the last line to the - ;; bottom of that window - (let ((webster-window (get-buffer-window webster-buffer)) - (window (selected-window))) - (if webster-reformat (webster-reformat (process-mark proc))) - (if webster-window - (progn - (select-window webster-window) - (goto-char (point-max)) - (recenter (1- (window-height webster-window))) - (select-window window))))))) - -(defconst webster-completion-table (make-vector 511 0)) - -(defun webster-intern (string) - (while (string-match "\\." string) - (setq string (concat (substring string 0 (match-beginning 0)) - (substring string (match-end 0))))) - (intern (downcase string) webster-completion-table)) - -(defvar webster-fontify (string-match "XEmacs" emacs-version) - "*Set to t to use the XEmacs/Lucid Emacs font-change mechanism.") - -(cond ((fboundp 'make-face) - (or (find-face 'webster) - (face-differs-from-default-p (make-face 'webster)) - (copy-face 'default 'webster)) - (or (find-face 'webster-bold) - (face-differs-from-default-p (make-face 'webster-bold)) - (copy-face 'bold 'webster-bold)) - (or (find-face 'webster-italic) - (face-differs-from-default-p (make-face 'webster-italic)) - (copy-face 'italic 'webster-italic)) - (or (find-face 'webster-bold-italic) - (face-differs-from-default-p (make-face 'webster-bold-italic)) - (copy-face 'bold-italic 'webster-bold-italic)) - (or (find-face 'webster-small) - (face-differs-from-default-p (make-face 'webster-small)) - (copy-face 'webster-bold 'webster-small)) - )) - -(defun webster-fontify (start end face &optional highlight) - (let ((e (make-extent start end (current-buffer)))) - (set-extent-face e face) - (if highlight (set-extent-property e 'highlight t)))) - - -(defun webster-reformat (end) - "Clean up the output of the webster server, and gather words for the -completion table." - (if (not webster-reformat) nil - (goto-char end) - (let ((case-fold-search nil)) - (re-search-backward "^[A-Z]+" nil t) - (if webster-fontify - (save-excursion - (previous-line 1) - (if (looking-at "^DEFINE \\([^ \n]+\\)") - (webster-fontify (match-beginning 1) (match-end 1) - 'webster-bold t)))) - (cond - ((or (looking-at "^DEFINITION [0-9]") - (looking-at "^SPELLING")) - (forward-line 1) - (let ((p (point)) - (indent 2)) - (search-forward "\n\n" nil 0) - (narrow-to-region p (point)) - (goto-char p) - (while (search-forward "\n" nil t) - (delete-char -1) - (just-one-space)) - (goto-char p) - (while (not (eobp)) - (if (looking-at " *\n") - (delete-region (match-beginning 0) (match-end 0))) - (cond ((looking-at "^[0-9]+ ") - (if webster-fontify - (webster-fontify (point) (match-end 0) - 'webster-bold-italic)) - (goto-char (match-end 0)) - (if (looking-at "[^\n0-9]+ [0-9]") - (save-excursion - (goto-char (1- (match-end 0))) - (insert "\n"))) - (if (looking-at "[a-z]+\\( [a-z]+\\)*[ \n]") - (webster-intern - (buffer-substring (point) (1- (match-end 0))))) - (if webster-fontify - (webster-fontify (point) (1- (match-end 0)) - 'webster-bold t)) - (goto-char (1- (match-end 0))) - (if (looking-at " *\n") (forward-line 1))) - ((looking-at " *[0-9]+\\. ") - (setq indent 5) - (delete-horizontal-space) - (insert (if (= (preceding-char) ?\n) " " "\n ")) - (skip-chars-forward "0-9. ") - (if webster-fontify - (webster-fontify - (save-excursion (beginning-of-line) (point)) - (point) - 'webster-bold-italic))) - ((looking-at " *\\([0-9]+\\): *") - (let ((n (buffer-substring (match-beginning 1) - (match-end 1)))) - (delete-region (match-beginning 0) (match-end 0)) - (insert "\n") - (indent-to (- 6 (length n))) - (insert n " : ") - (setq indent 9) - (if webster-fontify - (webster-fontify - (save-excursion (beginning-of-line) (point)) - (point) - 'webster-bold-italic)))) - ((looking-at " *\\([0-9]+\\)\\([a-z]+\\): *") - (let ((n (buffer-substring (match-beginning 1) - (match-end 1))) - (m (buffer-substring (match-beginning 2) - (match-end 2)))) - (if (not (equal m "a")) (setq n " ")) - (delete-region (match-beginning 0) (match-end 0)) - (insert "\n") - (indent-to (- 6 (length n))) - (insert n " ") - (insert m " : ") - (setq indent 12) - (if webster-fontify - (webster-fontify - (save-excursion (beginning-of-line) (point)) - (point) - 'webster-bold-italic)))) - ((looking-at " *\\([0-9]+\\)\\([a-z]+\\)\\([0-9]+\\): *") - (let ((n (buffer-substring (match-beginning 1) - (match-end 1))) - (m (buffer-substring (match-beginning 2) - (match-end 2))) - (o (buffer-substring (match-beginning 3) - (match-end 3)))) - (if (not (equal o "1")) (setq m " ")) - (if (not (equal m "a")) (setq n " ")) - (delete-region (match-beginning 0) (match-end 0)) - (insert "\n") - (indent-to (- 6 (length n))) - (insert n " ") - (insert m " ") - (insert "(" o ") : ") - (setq indent 17) - (if webster-fontify - (webster-fontify - (save-excursion (beginning-of-line) (point)) - (point) - 'webster-bold-italic)))) - ((looking-at " *\\\\") - (setq indent 5) - (setq p (point)) - (goto-char (match-end 0)) - (search-forward "\\") - (if (> (current-column) fill-column) - (progn - (goto-char p) - (insert "\n") - (indent-to 18) - (search-forward "\\"))) - (if webster-fontify - (webster-fontify p (point) 'webster-italic))) - ((looking-at " *\\[") - (setq indent 6) - (delete-horizontal-space) - (insert "\n") - (indent-to 5) - (forward-char 1)) - ((and (= (preceding-char) ?\]) - (looking-at " *:")) - (delete-horizontal-space) - (setq indent 5) - (insert "\n ")) - ((looking-at " *SYN *") - (delete-region (point) (match-end 0)) - (insert "\n") - (delete-horizontal-space) - (insert " ") - (setq indent 6) - (if (looking-at "syn ") - (progn - (if webster-fontify - (webster-fontify (point) (+ (point) 3) - 'webster-bold)) - (goto-char (match-end 0)) - (insert "see ")))) - (t - (setq p (point)) - (skip-chars-forward " ,:;-") - (if (or (looking-at - "\\([A-Z][-A-Z]+[A-Z]\\)\\( [A-Z][-A-Z]*[A-Z]\\)*") - (looking-at "[a-z][-a-z]*\\(\\.[a-z][-a-z]*\\)+")) - (let ((s (buffer-substring (point) (match-end 0)))) - (if webster-fontify - (webster-fontify (point) (match-end 0) - 'webster-bold t)) - (while (string-match "\\." s) - (setq s (concat (substring s 0 (match-beginning 0)) - (substring s (match-end 0))))) - (webster-intern s))) - (skip-chars-forward "^ \\") - (if (> (current-column) fill-column) - (progn - (goto-char p) - (insert "\n") - (delete-horizontal-space) - (indent-to indent) - (skip-chars-forward " ") - (skip-chars-forward "^ \\") - ))) - ))) - (goto-char (point-min)) - (while (looking-at "\n") (delete-char 1)) - (goto-char (point-max)) - (insert "\n\n") - (widen)))))) - -;; " \\(\\(slang\\|cap\\|pl\\|aj\\|av\\|n\\|v\\|vt\\|vi\\)\\(,[ \n]+\\)?\\)+\n" - -;;; -;;; delete char1 and char2 if it precedes char1 -;;; used to get rid of -(defun delete-char-in-region (start end char1 char2) - (goto-char start) - (setq char2 (aref char2 0)) - (while (search-forward char1 end t) - (delete-char -1) - (if (= (char-after (- (point) 1)) char2) - (delete-char -1)))) - -;;;###autoload -(defun webster (arg) -"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*." - (interactive (list - (let ((prompt (concat "Look up word in webster (" - (current-word) "): ")) - (completion-ignore-case t)) - (downcase - (if webster-reformat - (completing-read prompt webster-completion-table - nil nil) - (read-string prompt)))))) - (if (equal "" arg) (setq arg (current-word))) - (webster-send-request "DEFINE" arg)) - -;;;###autoload -(defun webster-endings (arg) -"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*." - (interactive (list - (read-string - (concat - "Find endings for word in webster (" (current-word) "): ")))) - (if (equal "" arg) (setq arg (current-word))) - (webster-send-request "ENDINGS" arg)) - -;;;###autoload -(defun webster-spell (arg) -"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*." - (interactive (list - (read-string - (concat - "Try to spell word in webster (" (current-word) "): ")))) - (if (equal "" arg) (setq arg (current-word))) - (webster-send-request "SPELL" arg)) - -(defun webster-send-request (kind word) - (require 'shell) - (let - ((webster-command (concat "open " webster-host " " webster-port "\n"))) - - (if (or - (not webster-buffer) - (not webster-process) - (not (eq (process-status webster-process) 'run))) - (progn - (message - (concat "Attempting to connect to server " webster-host "...")) - (setq webster-buffer - (if (not (fboundp 'make-shell)) ;emacs19 - (make-comint webster-process-name "telnet") - (make-shell webster-process-name "telnet"))) - (let - ((this-buffer (current-buffer))) - (set-buffer webster-buffer) - (webster-mode) - (set-buffer this-buffer)) - - (setq webster-process (get-process webster-process-name)) - (set-process-filter webster-process 'webster-initial-filter) - (process-send-string webster-process webster-command) - (setq webster-running nil); - (while (not webster-running) ; wait for feedback - (accept-process-output)))) ; - (display-buffer webster-buffer nil) - (process-send-string webster-process (concat kind " " word "\n")))) - -(defun webster-quit () - "Close connection and quit webster-mode. Buffer is not deleted." - (interactive) - (message "Closing connection to %s..." webster-host) - (kill-process webster-process) - (message "Closing connection to %s...done" webster-host) - (bury-buffer)) - -(defvar webster-mode-map nil) - -(defun webster-mode () - "Major mode for interacting with on-line Webster's dictionary. -\\{webster-mode-map} -Use webster-mode-hook for customization." - (interactive) - (kill-all-local-variables) - (setq major-mode 'webster-mode) - (setq mode-name "Webster") - (use-local-map webster-mode-map) - (run-hooks 'webster-mode-hook)) - -(if webster-mode-map - nil - (setq webster-mode-map (make-sparse-keymap)) - (define-key webster-mode-map "?" 'describe-mode) - (define-key webster-mode-map "d" 'webster) - (define-key webster-mode-map "e" 'webster-endings) - (define-key webster-mode-map "q" 'webster-quit) - (define-key webster-mode-map "s" 'webster-spell) - (if (string-match "XEmacs" emacs-version) - (define-key webster-mode-map 'button2 'webster-xref-word))) - -;; now in simple.el -;(defun current-word () -; "Word cursor is over, as a string." -; (save-excursion -; (let (beg end) -; (re-search-backward "\\w" nil 2) -; (re-search-backward "\\b" nil 2) -; (setq beg (point)) -; (re-search-forward "\\w*\\b" nil 2) -; (setq end (point)) -; (buffer-substring beg end)))) - -(defun webster-xref-word (event) - "Define the highlighted word under the mouse. -Words which are known to have definitions are highlighted when the mouse -moves over them. You may define any word by selecting it with the left -mouse button and then clicking middle." - (interactive "e") - (let* ((buffer (event-buffer event)) - (extent (extent-at (event-point event) buffer 'highlight)) - text) - (cond (extent - (setq text (save-excursion - (set-buffer buffer) - (buffer-substring - (extent-start-position extent) - (extent-end-position extent))))) - ((x-selection-owner-p) ; the selection is in this emacs process. - (setq text (x-get-selection))) - (t - (error "click on a highlighted word to define"))) - (while (string-match "\\." text) - (setq text (concat (substring text 0 (match-beginning 0)) - (substring text (match-end 0))))) - (message "looking up %s..." (upcase text)) - (goto-char (point-max)) - (webster text))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/prim/about.el --- a/lisp/prim/about.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/prim/about.el Mon Aug 13 09:24:17 2007 +0200 @@ -1049,6 +1049,7 @@ Philip Johnson J. Kean Johnston Andreas Kaempf + Amir Katz Doug Keller Hunter Kelly Gregor Kennedy diff -r 578fd4947a72 -r 7d55a9ba150c lisp/prim/auto-autoloads.el --- a/lisp/prim/auto-autoloads.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/prim/auto-autoloads.el Mon Aug 13 09:24:17 2007 +0200 @@ -1062,7 +1062,11 @@ ;;;*** -;;;### (autoloads (widget-delete widget-create) "wid-edit" "custom/wid-edit.el") +;;;### (autoloads (widget-delete widget-create widget-apply) "wid-edit" "custom/wid-edit.el") + +(autoload 'widget-apply "wid-edit" "\ +Apply the value of WIDGET's PROPERTY to the widget itself. +ARGS are passed as extra arguments to the function." nil nil) (autoload 'widget-create "wid-edit" "\ Create widget of TYPE. @@ -1414,6 +1418,9 @@ *Mail reader used by dired for dired-read-mail (\\[dired-read-mail]). The symbols 'rmail and 'vm are the only two allowed values.") +(defvar dired-refresh-automatically t "\ +*If non-nil, refresh dired buffers automatically after file operations.") + (define-key ctl-x-map "d" 'dired) (autoload 'dired "dired" "\ @@ -1478,10 +1485,6 @@ ;;;### (autoloads (remote-path-file-handler-function) "efs-dump" "efs/efs-dump.el") -(defvar allow-remote-paths t "\ -*Set this to nil if you don't want remote paths to access -remote files.") - (or (assoc efs-path-root-regexp file-name-handler-alist) (setq file-name-handler-alist (cons (cons efs-path-root-regexp 'remote-path-file-handler-function) file-name-handler-alist))) (autoload 'remote-path-file-handler-function "efs-dump" "\ @@ -1489,6 +1492,14 @@ ;;;*** +;;;### (autoloads nil "efs-fnh" "efs/efs-fnh.el") + +(defvar allow-remote-paths t "\ +*Set this to nil if you don't want remote paths to access +remote files.") + +;;;*** + ;;;### (autoloads (efs-root-file-name-completion efs-root-file-name-all-completions efs-set-passwd) "efs-netrc" "efs/efs-netrc.el") (autoload 'efs-set-passwd "efs-netrc" "\ @@ -3380,7 +3391,7 @@ ;;;*** -;;;### (autoloads (c-set-style java-mode objc-mode c++-mode c-mode) "cc-mode" "modes/cc-mode.el") +;;;### (autoloads (c-add-style c-set-style java-mode objc-mode c++-mode c-mode) "cc-mode" "modes/cc-mode.el") (autoload 'c-mode "cc-mode" "\ Major mode for editing K&R and ANSI C code. @@ -3460,6 +3471,17 @@ The variable `c-indentation-style' always contains the buffer's current style name." t nil) +(autoload 'c-add-style "cc-mode" "\ +Adds a style to `c-style-alist', or updates an existing one. +STYLE is a string identifying the style to add or update. DESCRIP is +an association list describing the style and must be of the form: + + ((VARIABLE . VALUE) [(VARIABLE . VALUE) ...]) + +See the variable `c-style-alist' for the semantics of VARIABLE and +VALUE. This function also sets the current style to STYLE using +`c-set-style' if the optional SET-P flag is non-nil." t nil) + (fset 'set-c-style 'c-set-style) ;;;*** @@ -3902,7 +3924,7 @@ ;;;### (autoloads (ksh-mode) "ksh-mode" "modes/ksh-mode.el") (autoload 'ksh-mode "ksh-mode" "\ -ksh-mode $Revision: 1.18 $ - Major mode for editing (Bourne, Korn or Bourne again) +ksh-mode $Revision: 1.19 $ - Major mode for editing (Bourne, Korn or Bourne again) shell scripts. Special key bindings and commands: \\{ksh-mode-map} @@ -5257,7 +5279,7 @@ (autoload 'vhdl-mode "vhdl-mode" "\ Major mode for editing VHDL code. -vhdl-mode $Revision: 1.18 $ +vhdl-mode $Revision: 1.19 $ 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 @@ -7910,22 +7932,10 @@ ;;;*** -;;;### (autoloads (webster-spell webster-endings webster) "webster" "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 (webster-www) "webster-www" "packages/webster-www.el") + +(autoload 'webster-www "webster-www" "\ +Look up a word in the Webster's dictionary at http://www.m-w.com using WWW." t nil) ;;;*** @@ -9093,7 +9103,7 @@ ;;;*** -;;;### (autoloads (insert-kbd-macro format-kbd-macro read-kbd-macro edit-named-kbd-macro edit-last-kbd-macro edit-kbd-macro) "edmacro" "utils/edmacro.el") +;;;### (autoloads (insert-kbd-macro format-kbd-macro kbd read-kbd-macro edit-named-kbd-macro edit-last-kbd-macro edit-kbd-macro) "edmacro" "utils/edmacro.el") (define-key ctl-x-map "\C-k" 'edit-kbd-macro) @@ -9127,6 +9137,9 @@ The result will be a string if possible, otherwise an event vector. Second argument NEED-VECTOR means to return an event vector always." t nil) +(autoload 'kbd "edmacro" "\ +Convert KEYS to the internal Emacs key representation." nil 'macro) + (autoload 'format-kbd-macro "edmacro" "\ Return the keyboard macro MACRO as a human-readable string. This string is suitable for passing to `read-kbd-macro'. @@ -9903,7 +9916,7 @@ ;;;*** -;;;### (autoloads (x-font-build-cache font-default-size-for-device font-default-family-for-device font-default-object-for-device font-default-font-for-device font-create-object) "font" "w3/font.el") +;;;### (autoloads (x-font-build-cache font-default-size-for-device font-default-encoding-for-device font-default-registry-for-device font-default-family-for-device font-default-object-for-device font-default-font-for-device font-create-object) "font" "w3/font.el") (autoload 'font-create-object "font" nil nil nil) @@ -9913,6 +9926,10 @@ (autoload 'font-default-family-for-device "font" nil nil nil) +(autoload 'font-default-registry-for-device "font" nil nil nil) + +(autoload 'font-default-encoding-for-device "font" nil nil nil) + (autoload 'font-default-size-for-device "font" nil nil nil) (autoload 'x-font-build-cache "font" nil nil nil) @@ -9935,6 +9952,13 @@ ;;;*** +;;;### (autoloads (url-gateway-nslookup-host) "url-gw" "w3/url-gw.el") + +(autoload 'url-gateway-nslookup-host "url-gw" "\ +Attempt to resolve the given HOSTNAME using nslookup if possible." t nil) + +;;;*** + ;;;### (autoloads (url-retrieve url-popup-info url-get-url-at-point url-buffer-visiting url-normalize-url url-file-attributes) "url" "w3/url.el") (autoload 'url-file-attributes "url" "\ diff -r 578fd4947a72 -r 7d55a9ba150c lisp/prim/cmdloop.el --- a/lisp/prim/cmdloop.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/prim/cmdloop.el Mon Aug 13 09:24:17 2007 +0200 @@ -341,9 +341,11 @@ (inhibit-quit t)) (message "%s%s%s" pre prompt yn) (setq event (next-command-event event)) - (prog1 - (or quit-flag (eq 'keyboard-quit (key-binding event))) - (setq quit-flag nil))) + (condition-case nil + (prog1 + (or quit-flag (eq 'keyboard-quit (key-binding event))) + (setq quit-flag nil)) + (wrong-type-argument t))) (progn (message "%s%s%s%s" pre prompt yn (single-key-description event)) (setq quit-flag nil) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/prim/custom-load.el --- a/lisp/prim/custom-load.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/prim/custom-load.el Mon Aug 13 09:24:17 2007 +0200 @@ -28,6 +28,7 @@ (put 'gnus-summary 'custom-loads '("gnus-sum" "gnus")) (put 'message-headers 'custom-loads '("message")) (put 'gnus-group-select 'custom-loads '("gnus-sum")) +(put 'display-time-balloon 'custom-loads '("time")) (put 'display-time 'custom-loads '("time")) (put 'hypermedia 'custom-loads '("wid-edit" "w3-cus")) (put 'w3-advanced 'custom-loads '("w3-cus")) @@ -48,6 +49,7 @@ (put 'w3-files 'custom-loads '("w3-cus")) (put 'widget-browse 'custom-loads '("wid-browse")) (put 'gnus-article 'custom-loads '("gnus-art" "gnus-cite")) +(put 'comm 'custom-loads '("ssl")) (put 'gnus 'custom-loads '("gnus-art" "gnus-async" "gnus-cache" "gnus-demon" "gnus-dup" "gnus-eform" "gnus-uu" "gnus-win" "gnus" "nnmail")) (put 'gnus-treading 'custom-loads '("gnus-sum")) (put 'nnmail 'custom-loads '("nnmail")) @@ -72,6 +74,7 @@ (put 'gnus-visual 'custom-loads '("earcon" "gnus-art" "gnus-picon" "gnus" "smiley")) (put 'message-forwarding 'custom-loads '("message")) (put 'message-news 'custom-loads '("message")) +(put 'games 'custom-loads '("xmine")) (put 'gnus-edit-form 'custom-loads '("gnus-eform")) (put 'external 'custom-loads '("cus-edit")) (put 'gnus-files 'custom-loads '("gnus" "nnmail")) @@ -89,8 +92,9 @@ (put 'gnus-extract-post 'custom-loads '("gnus-uu")) (put 'faces 'custom-loads '("cus-edit" "wid-edit" "gnus" "message" "highlight-headers")) (put 'gnus-various 'custom-loads '("gnus-sum")) +(put 'xmine 'custom-loads '("xmine")) (put 'gnus-article-highlight 'custom-loads '("gnus-art")) -(put 'emacs 'custom-loads '("cus-edit" "dired-faces" "ssl")) +(put 'emacs 'custom-loads '("cus-edit" "dired-faces")) (put 'processes 'custom-loads '("comint-xemacs")) (put 'news 'custom-loads '("gnus" "message" "highlight-headers")) (put 'w3-hooks 'custom-loads '("w3-cus")) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/prim/faces.el --- a/lisp/prim/faces.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/prim/faces.el Mon Aug 13 09:24:17 2007 +0200 @@ -1391,6 +1391,39 @@ nil nil 'append) ) +;; New function with 20.1, suggested by Per Abrahamsen, coded by Kyle Jones. +(defun set-face-stipple (face pixmap &optional frame) + "Change the stipple pixmap of face FACE to PIXMAP. +This is an Emacs compatibility function; consider using +set-face-background-pixmap instead. + +PIXMAP should be a string, the name of a file of pixmap data. +The directories listed in the `x-bitmap-file-path' variable are searched. +Any kind of image file for which XEmacs has builtin support can be used. + +Alternatively, PIXMAP may be a list of the form (WIDTH HEIGHT +DATA) where WIDTH and HEIGHT are the size in pixels, and DATA is +a string, containing the raw bits of the bitmap. XBM data is +expected in this case, other types of image data will not work. + +If the optional FRAME argument is provided, change only +in that frame; otherwise change each frame." + (while (not (find-face face)) + (setq face (signal 'wrong-type-argument (list 'facep face)))) + (while (cond ((stringp pixmap) + (unless (file-readable-p pixmap) + (setq pixmap (vector 'xbm ':file pixmap))) + nil) + ((and (consp pixmap) (= (length pixmap) 3)) + (setq pixmap (vector 'xbm ':data pixmap)) + nil) + (t t)) + (setq pixmap (signal 'wrong-type-argument + (list 'stipple-pixmap-p pixmap)))) + (while (and frame (not (framep frame))) + (setq frame (signal 'wrong-type-argument (list 'framep frame)))) + (set-face-background-pixmap face pixmap frame)) + ;; Create the remaining standard faces now. This way, packages that we dump ;; can reference these faces as parents. @@ -1436,3 +1469,5 @@ (set-face-reverse-p 'list-mode-item-selected t 'global 'tty) (set-face-reverse-p 'isearch t 'global 'tty) ) + +;;; faces.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/prim/help.el --- a/lisp/prim/help.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/prim/help.el Mon Aug 13 09:24:17 2007 +0200 @@ -938,7 +938,8 @@ (if (not (and obsolete aliases)) (progn (princ doc stream) - (or (eq ?\n (aref doc (1- (length doc)))) + (or (equal doc "") + (eq ?\n (aref doc (1- (length doc)))) (terpri stream))))))))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/prim/process.el --- a/lisp/prim/process.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/prim/process.el Mon Aug 13 09:24:17 2007 +0200 @@ -160,7 +160,7 @@ (progn (require 'background) ; whizzy comint background code (background (substring command 0 (match-beginning 0)))) - (shell-command-on-region (point) (point) command nil))))) + (shell-command-on-region (point) (point) command output-buffer))))) ;; We have a sentinel to prevent insertion of a termination message ;; in the buffer itself. diff -r 578fd4947a72 -r 7d55a9ba150c lisp/prim/winnt.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/prim/winnt.el Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,206 @@ +;;; winnt.el --- Lisp routines for Windows NT. + +;; Copyright (C) 1994 Free Software Foundation, Inc. + +;; Author: Geoff Voelker (voelker@cs.washington.edu) + +;; 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, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; (August 12, 1993) +;; Created. + +;; (November 21, 1994) +;; [C-M-backspace] defined. +;; mode-line-format defined to show buffer file type. +;; audio bell initialized. +;; +;; (March 18, 1997) +;; Ported to XEmacs by Marc Paquette +;; + +;;; Code: + +;; Map delete and backspace +;; Not sure this is really needed in XEmacs... --marcpa +(define-key global-map [(backspace)] 'backward-delete-char) +(define-key global-map [(delete)] 'delete-char) +(define-key global-map [(meta backspace)] 'backward-kill-word) +(define-key global-map [(control meta backspace)] 'backward-kill-sexp) + +;; Show file type (text or binary) on modeline +(setq-default mode-line-format + (list (purecopy "") + 'mode-line-modified + 'mode-line-buffer-identification + (purecopy " ") + 'global-mode-string + (purecopy " %[(") + (purecopy "%t:") + 'mode-name 'mode-line-process 'minor-mode-alist + (purecopy "%n") + (purecopy ")%]--") + (purecopy '(line-number-mode "L%l--")) + (purecopy '(column-number-mode "C%c--")) + (purecopy '(-3 . "%p")) + (purecopy "-%-"))) + +;; Ignore case on file-name completion +(setq completion-ignore-case t) + +;; The cmd.exe shell uses the "/c" switch instead of the "-c" switch +;; for executing its command line argument (from simple.el). +(setq shell-command-switch "/c") + +;; For appending suffixes to directories and files in shell completions. +(add-hook 'shell-mode-hook + '(lambda () (setq comint-completion-addsuffix '("\\" . " ")))) + +;; Use ";" instead of ":" as a path separator (from files.el). +(setq path-separator ";") + +;; Set the null device (for compile.el). +(setq grep-null-device "NUL") + +;; Set the grep regexp to match entries with drive letters. +(setq grep-regexp-alist + '(("^\\(\\([a-zA-Z]:\\)?[^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]" 1 3))) + +;; Taken from dos-fn.el ... don't want all that's in the file, maybe +;; separate it out someday. + +(defvar file-name-buffer-file-type-alist + '( + ("[:/].*config.sys$" . nil) ; config.sys text + ("\\.elc$" . t) ; emacs stuff + ("\\.\\(obj\\|exe\\|com\\|lib\\|sys\\|chk\\|out\\|bin\\|ico\\|pif\\)$" . t) + ; MS-Dos stuff + ("\\.\\(arc\\|zip\\|pak\\|lzh\\|zoo\\)$" . t) + ; Packers + ("\\.\\(a\\|o\\|tar\\|z\\|gz\\|taz\\)$" . t) + ; Unix stuff + ("\\.tp[ulpw]$" . t) + ; Borland Pascal stuff + ) + "*Alist for distinguishing text files from binary files. +Each element has the form (REGEXP . TYPE), where REGEXP is matched +against the file name, and TYPE is nil for text, t for binary.") + +(defun find-buffer-file-type (filename) + (let ((alist file-name-buffer-file-type-alist) + (found nil) + (code nil)) + (let ((case-fold-search t)) + (setq filename (file-name-sans-versions filename)) + (while (and (not found) alist) + (if (string-match (car (car alist)) filename) + (setq code (cdr (car alist)) + found t)) + (setq alist (cdr alist)))) + (if found + (cond((memq code '(nil t)) code) + ((and (symbolp code) (fboundp code)) + (funcall code filename))) + default-buffer-file-type))) + +(defun find-file-binary (filename) + "Visit file FILENAME and treat it as binary." + (interactive "FFind file binary: ") + (let ((file-name-buffer-file-type-alist '(("" . t)))) + (find-file filename))) + +(defun find-file-text (filename) + "Visit file FILENAME and treat it as a text file." + (interactive "FFind file text: ") + (let ((file-name-buffer-file-type-alist '(("" . nil)))) + (find-file filename))) + +(defun find-file-not-found-set-buffer-file-type () + (save-excursion + (set-buffer (current-buffer)) + (setq buffer-file-type (find-buffer-file-type (buffer-file-name)))) + nil) + +;;; To set the default file type on new files. +(add-hook 'find-file-not-found-hooks 'find-file-not-found-set-buffer-file-type) + +;;; For using attached Unix filesystems. +(defun save-to-unix-hook () + (save-excursion + (setq buffer-file-type t)) + nil) + +(defun revert-from-unix-hook () + (save-excursion + (setq buffer-file-type (find-buffer-file-type (buffer-file-name)))) + nil) + +;; Really should provide this capability at the drive letter granularity. +(defun using-unix-filesystems (flag) + "Read and write files without CR/LF translation, if FLAG is non-nil. +This is in effect assuming the files are on a remote Unix file system. +If FLAG is nil, resume using CR/LF translation as usual." + (if flag + (progn + (add-hook 'write-file-hooks 'save-to-unix-hook) + (add-hook 'after-save-hook 'revert-from-unix-hook)) + (progn + (remove-hook 'write-file-hooks 'save-to-unix-hook) + (remove-hook 'after-save-hook 'revert-from-unix-hook)))) + +;;; Avoid creating auto-save file names containing invalid characters +;;; (primarily "*", eg. for the *mail* buffer). +(fset 'original-make-auto-save-file-name + (symbol-function 'make-auto-save-file-name)) + +(defun make-auto-save-file-name () + "Return file name to use for auto-saves of current buffer. +Does not consider `auto-save-visited-file-name' as that variable is checked +before calling this function. You can redefine this for customization. +See also `auto-save-file-name-p'." + (let ((name (original-make-auto-save-file-name)) + (start 0)) + ;; destructively replace occurences of * or ? with $ + (while (string-match "[?*]" name start) + (aset name (match-beginning 0) ?$) + (setq start (1+ (match-end 0)))) + name)) + +;; ### FIX ME: need to look at XEmacs xmouse.el versus FSF mouse.el +;; and adjust accordingly: I think 'x-selections is an FSFism. +;; --marcpa +;;; Fix interface to (X-specific) mouse.el +(defun x-set-selection (type data) + (or type (setq type 'PRIMARY)) + (put 'x-selections type data)) + +(defun x-get-selection (&optional type data-type) + (or type (setq type 'PRIMARY)) + (get 'x-selections type)) + +;; FSFisms +;(fmakunbound 'font-menu-add-default) +;(global-unset-key [C-down-mouse-1]) +;(global-unset-key [C-down-mouse-2]) +;(global-unset-key [C-down-mouse-3]) + +;;; Set to a system sound if you want a fancy bell. +;(set-message-beep nil) + +;;; winnt.el ends here diff -r 578fd4947a72 -r 7d55a9ba150c lisp/tl/tl-num.el --- a/lisp/tl/tl-num.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/tl/tl-num.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,5 +1,5 @@ ;;; -;;; $Id: tl-num.el,v 1.2 1996/12/28 21:03:10 steve Exp $ +;;; $Id: tl-num.el,v 1.3 1997/04/05 19:32:20 steve Exp $ ;;; ;;; by MORIOKA Tomohiko , 1993/10/4 ;;; @@ -11,14 +11,14 @@ ;;; @ n base ;;; -(defun char-to-int (chr) +(defun n-char-to-int (chr) "Convert n base character CHR to integer (n <= 36). [tl-num]" (cond ((and (<= ?0 chr)(<= chr ?9)) (- chr ?0)) ((and (<= ?A chr)(<= chr ?Z)) (+ (- chr ?A) 10)) ((and (<= ?a chr)(<= chr ?z)) (+ (- chr ?a) 10)) )) -(defun int-to-char (n) +(defun int-to-n-char (n) "Convert integer N to n base character (n <= 36). [tl-num]" (if (< n 10) (+ ?0 n) @@ -37,7 +37,7 @@ "Convert n base char sequence SEQ to number. [tl-num]" (foldl (function (lambda (n chr) - (+ (* n base)(char-to-int chr)) + (+ (* n base)(n-char-to-int chr)) )) 0 seq)) @@ -52,7 +52,7 @@ ((and (<= ?a chr)(<= chr ?f)) (+ (- chr ?a) 10)) )) -(defalias 'number-to-hex-char 'int-to-char) +(defalias 'number-to-hex-char 'int-to-n-char) (defun hex-seq-to-int (seq) "Convert hex number sequence SEQ to integer. [tl-num]" diff -r 578fd4947a72 -r 7d55a9ba150c lisp/utils/edmacro.el --- a/lisp/utils/edmacro.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/utils/edmacro.el Mon Aug 13 09:24:17 2007 +0200 @@ -5,7 +5,7 @@ ;; Author: Dave Gillespie ;; Hrvoje Niksic -- XEmacs port ;; Maintainer: Hrvoje Niksic -;; Version: 3.05 +;; Version: 3.07 ;; Keywords: abbrev ;; This file is part of XEmacs. @@ -54,6 +54,15 @@ ;; This and `format-kbd-macro' can also be called directly as ;; Lisp functions. +;; The `kbd' macro calls `read-kbd-macro', but it is evaluated at +;; compile-time. It is good to use in your programs and +;; initializations, as you needn't know the internal keysym +;; representation. For example: +;; +;; (define-key foo-mode-map (kbd "C-c ") 'foo-up) +;; is the equivalent of +;; (define-key foo-mode-map [(control ?c) up] 'foo-up) + ;; Type `C-h m', or see the documentation for `edmacro-mode' below, ;; for information about the format of written keyboard macros. @@ -208,6 +217,12 @@ (setq last-kbd-macro (edmacro-parse-keys (buffer-substring start end))))) ;;;###autoload +(defmacro kbd (keys) + "Convert KEYS to the internal Emacs key representation." + `(eval-when-compile + (read-kbd-macro ,keys))) + +;;;###autoload (defun format-kbd-macro (&optional macro verbose) "Return the keyboard macro MACRO as a human-readable string. This string is suitable for passing to `read-kbd-macro'. @@ -423,6 +438,13 @@ (?\e . "ESC") (?\ . "SPC") (?\C-? . "DEL"))) + (modifier-prefix-alist '(("C" . control) + ("M" . meta) + ("S" . shift) + ("Sh" . shift) + ("A" . alt) + ("H" . hyper) + ("s" . super))) ;; string-to-symbol-or-char converter (conv #'(lambda (arg) (if (= (length arg) 1) @@ -484,26 +506,21 @@ (if (/= (length word) 2) (error "^ must be followed by one character")) (setq add (list 'control (aref word 0)))) - ((string-match "^[MCSsAH]-" word) - ;; Parse C-* + ((string-match "^\\([MCSsAH]\\|Sh\\)-" word) + ;; Parse C-* and stuff (setq add (list (let ((pos1 0) (r1 nil) - follow) - (while (string-match "^[MCSsAH]-" (substring word pos1)) - (setq r1 (nconc - r1 - (list - (cdr (assq (aref word pos1) - '((?C . control) - (?M . meta) - (?S . shift) - (?A . alt) - (?H . hyper) - (?s . super))))))) - (setq pos1 (+ pos1 2))) + follow curpart prefix) + (while (progn (setq curpart (substring word pos1)) + (string-match "^\\([MCSsAH]\\|Sh\\)-" + curpart)) + (setq prefix (assoc (match-string 1 curpart) + modifier-prefix-alist)) + (setq r1 (nconc r1 (list (cdr prefix)))) + (callf + pos1 (1+ (length (car prefix))))) (setq follow (substring word pos1)) (if (equal follow "") (error "%s must precede a string" diff -r 578fd4947a72 -r 7d55a9ba150c lisp/utils/finder-inf.el --- a/lisp/utils/finder-inf.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/utils/finder-inf.el Mon Aug 13 09:24:17 2007 +0200 @@ -10,6 +10,34 @@ "define pathnames for use by various Emacs commands." (internal) "lisp/") + ("site-load.el" + "Template file for site-wide XEmacs customization" + (internal) + "lisp/") + ("font-latex.el" + "LaTeX fontification for Font Lock mode." + (latex faces) + "lisp/auctex/") + ("latex.el" + "Support for LaTeX documents." + (wp) + "lisp/auctex/") + ("multi-prompt.el" + "completing read of multiple strings." + (extensions) + "lisp/auctex/") + ("tex.el" + "Support for TeX documents." + (wp) + "lisp/auctex/") + ("byte-optimize.el" + "the optimization passes of the emacs-lisp byte compiler." + (internal) + "lisp/bytecomp/") + ("bytecomp-runtime.el" + "byte-compiler support for inlining" + (internal) + "lisp/bytecomp/") ("bytecomp.el" "compilation of Lisp code into byte code." (internal) @@ -43,7 +71,7 @@ (calendar) "lisp/calendar/") ("calendar.el" - "Calendar functions." + "Calendar functions. -*-byte-compile-dynamic: t;-*-" (calendar) "lisp/calendar/") ("diary-ins.el" @@ -66,10 +94,38 @@ "calendar functions for solar events." (calendar) "lisp/calendar/") + ("cl-autoload.el" + "Generate the autoload file cl-defs.el." + (extensions lisp) + "lisp/cl/") + ("cl-compat.el" + "Common Lisp extensions for GNU Emacs Lisp (compatibility)" + (extensions) + "lisp/cl/") + ("cl-extra.el" + "Common Lisp extensions for GNU Emacs Lisp (part two)" + (extensions) + "lisp/cl/") + ("cl-macs.el" + "Common Lisp extensions for GNU Emacs Lisp (part four)" + (extensions) + "lisp/cl/") + ("cl-seq.el" + "Common Lisp extensions for GNU Emacs Lisp (part three)" + (extensions) + "lisp/cl/") + ("cl.el" + "Common Lisp extensions for GNU Emacs Lisp" + (extensions lisp) + "lisp/cl/") ("background.el" "fun with background jobs" (processes) "lisp/comint/") + ("comint-xemacs.el" + "Face customizations for comint" + (help faces) + "lisp/comint/") ("comint.el" "general command interpreter in a window stuff" (processes) @@ -82,17 +138,25 @@ "run gdb under Emacs" (c unix tools debugging) "lisp/comint/") + ("gdbsrc.el" + "Source-based (as opposed to comint-based) debugger" + (c unix tools debugging) + "lisp/comint/") ("gud.el" "Grand Unified Debugger mode for gdb, sdb, dbx, or xdb" (c unix tools debugging) "lisp/comint/") + ("history.el" + "Generic history stuff" + nil + "lisp/comint/") ("inf-lisp.el" "an inferior-lisp mode" (processes lisp) "lisp/comint/") ("kermit.el" "additions to shell mode for use with kermit, etc." - (comm processes) + (comm) "lisp/comint/") ("rlogin.el" "remote login interface" @@ -106,34 +170,62 @@ "run a telnet session from within an Emacs buffer" (comm unix) "lisp/comint/") - ("ange-ftp.el" - "transparent FTP support for GNU Emacs" - (comm) - "lisp/dired/") - ("dired-link.el" - "Properly resolves UNIX (and Apollo variant) links under dired." - nil - "lisp/dired/") - ("dired-x.el" - "Sebastian Kremer's Extra DIRED hacked up for GNU Emacs19" - (dired extensions) - "lisp/dired/") - ("dired.el" - "directory-browsing commands" - (dired extensions) - "lisp/dired/") + ("cus-edit.el" + "Tools for customization Emacs." + (help faces) + "lisp/custom/") + ("cus-face.el" + "XEmacs specific custom support." + (help faces) + "lisp/custom/") + ("custom.el" + "Tools for declaring and initializing options." + (help faces) + "lisp/custom/") + ("wid-browse.el" + "Functions for browsing widgets." + (extensions) + "lisp/custom/") + ("wid-edit.el" + "Functions for creating and using widgets." + (extensions) + "lisp/custom/") + ("widget-example.el" + "example of using the widget library" + (help extensions faces hypermedia) + "lisp/custom/") + ("widget.el" + "a library of user interface components." + (help extensions faces hypermedia) + "lisp/custom/") + ("advise-eval-region.el" + "Wrap advice around eval-region" + (extensions lisp) + "lisp/edebug/") ("cust-print.el" "handles print-level and print-circle." (extensions) "lisp/edebug/") + ("edebug-cl-read.el" + "Edebug reader macros for use with cl-read." + (lisp tools maint) + "lisp/edebug/") ("edebug.el" "a source-level debugger for Emacs Lisp" - (lisp tools debugging) + (lisp tools maint) + "lisp/edebug/") + ("eval-reg.el" + "Redefine eval-region, and subrs that use it, in Lisp" + (lisp) "lisp/edebug/") ("ediff-diff.el" "diff-related utilities" nil "lisp/ediff/") + ("ediff-help.el" + "Code related to the contents of Ediff help buffers" + nil + "lisp/ediff/") ("ediff-hook.el" "setup for Ediff's menus and autoloads" nil @@ -146,14 +238,26 @@ "merging utilities" nil "lisp/ediff/") - ("ediff-meta.el" + ("ediff-mult.el" "support for multi-file/multi-buffer processing in Ediff" nil "lisp/ediff/") + ("ediff-ptch.el" + "Ediff's patch support" + nil + "lisp/ediff/") + ("ediff-tbar.el" + "A toolbar for Ediff control buffer" + nil + "lisp/ediff/") ("ediff-util.el" "the core commands and utilities of ediff" nil "lisp/ediff/") + ("ediff-vers.el" + "version control interface to Ediff" + nil + "lisp/ediff/") ("ediff-wind.el" "window manipulation utilities" nil @@ -162,13 +266,17 @@ "a comprehensive visual interface to diff & patch" (comparing merging patching version control.) "lisp/ediff/") + ("egg-wnn.el" + "a inputting method communicating with [jck]server" + (inputting method) + "lisp/egg/") ("ebuff-menu.el" "electric-buffer-list mode" - nil + (frames) "lisp/electric/") ("echistory.el" "Electric Command History Mode" - nil + (extensions) "lisp/electric/") ("ehelp.el" "bindings for electric-help mode" @@ -182,12 +290,28 @@ "utility help package supporting help in electric modes" (help) "lisp/electric/") - ("edt.el" - "EDT emulation in Emacs" + ("crisp.el" + "Crisp/Brief Emacs emulator" + (emulations brief crisp) + "lisp/emulators/") + ("edt-lk201.el" + "Enhanced EDT Keypad Mode Emulation for LK-201 Keyboards" (emulations) "lisp/emulators/") - ("gosmacs.el" - "rebindings to imitate Gosmacs." + ("edt-mapper.el" + "Create an EDT LK-201 Map File for X-Windows Emacs" + (emulations) + "lisp/emulators/") + ("edt-pc.el" + "Enhanced EDT Keypad Mode Emulation for PC 101 Keyboards" + (emulations) + "lisp/emulators/") + ("edt-vt100.el" + "Enhanced EDT Keypad Mode Emulation for VT Series Terminals" + (emulations) + "lisp/emulators/") + ("edt.el" + "Enhanced EDT Keypad Mode Emulation for GNU Emacs 19" (emulations) "lisp/emulators/") ("mlconvert.el" @@ -198,9 +322,13 @@ "run-time support for mocklisp code." (extensions) "lisp/emulators/") + ("scroll-lock.el" + "scroll-locking minor mode" + (scroll crisp brief lock) + "lisp/emulators/") ("teco.el" "Teco interpreter for Gnu Emacs, version 1." - nil + (emulators) "lisp/emulators/") ("tpu-doc.el" "Documentation for TPU-edt" @@ -214,9 +342,13 @@ "Scroll margins and free cursor mode for TPU-edt" (emulations) "lisp/emulators/") + ("tpu-mapper.el" + "Create a TPU-edt X-windows keymap file" + (emulations) + "lisp/emulators/") ("ws-mode.el" "WordStar emulation mode for GNU Emacs" - nil + (emulations) "lisp/emulators/") ("eos.el" "Intereactively loads the XEmacs/SPARCworks interface" @@ -262,18 +394,34 @@ "Intereactively loads the XEmacs/SPARCworks interface" (sparcworks eos era on sparcworks load) "lisp/eos/") + ("term.el" + "general command interpreter in a window stuff" + nil + "lisp/eterm/") ("tshell.el" "specialized term.el for running the shell." (processes) "lisp/eterm/") + ("NeXTify.el" + "Character insertion variation" + (games) + "lisp/games/") ("blackbox.el" "blackbox game in Emacs Lisp" (games) "lisp/games/") + ("conx.el" + "Yet another dissociater" + (games) + "lisp/games/") ("cookie1.el" "retrieve random phrases from fortune cookie files" (games) "lisp/games/") + ("decipher.el" + "Cryptanalyze monoalphabetic substitution ciphers" + (games) + "lisp/games/") ("dissociate.el" "scramble text amusingly for Emacs." (games) @@ -286,6 +434,10 @@ "Text adventure for Emacs" (games) "lisp/games/") + ("flame.el" + "Automated insults" + (games) + "lisp/games/") ("gomoku.el" "Gomoku game between you and Emacs" (games) @@ -298,8 +450,12 @@ "John Horton Conway's `Life' game for GNU Emacs" (games) "lisp/games/") + ("mine.el" + "Mine game for GNU Emacs" + (games) + "lisp/games/") ("mpuz.el" - "multiplication puzzle for GNU Emacs" + "multiplication puzzle for XEmacs" (games) "lisp/games/") ("spook.el" @@ -310,322 +466,326 @@ "StudlyCaps (tm)(r)(c)(xxx)" (games) "lisp/games/") + ("xmine.el" + "Mine game for XEmacs" + (games) + "lisp/games/") ("yow.el" "quote random zippyisms" (games) "lisp/games/") - ("chat.el" - "a method for talking to asynchronous processes." + ("dgnushack.el" + "a hack to set the load path for byte-compiling" + (news path) + "lisp/gnus/") + ("earcon.el" + "Sound effects for messages" + (news fun sound) + "lisp/gnus/") + ("gnus-art.el" + "article mode commands for Gnus" + (news) + "lisp/gnus/") + ("gnus-async.el" + "asynchronous support for Gnus" + (news) + "lisp/gnus/") + ("gnus-audio.el" + "Sound effects for Gnus" + (news) + "lisp/gnus/") + ("gnus-bcklg.el" + "backlog functions for Gnus" + (news) + "lisp/gnus/") + ("gnus-cache.el" + "cache interface for Gnus" + (news) + "lisp/gnus/") + ("gnus-cite.el" + "parse citations in articles for Gnus" + (news mail) + "lisp/gnus/") + ("gnus-cus.el" + "customization commands for Gnus" + (news) + "lisp/gnus/") + ("gnus-demon.el" + "daemonic Gnus behaviour" + (news) + "lisp/gnus/") + ("gnus-dup.el" + "suppression of duplicate articles in Gnus" + (news) + "lisp/gnus/") + ("gnus-eform.el" + "a mode for editing forms for Gnus" + (news) + "lisp/gnus/") + ("gnus-ems.el" + "functions for making Gnus work under different Emacsen" + (news) + "lisp/gnus/") + ("gnus-gl.el" + "an interface to GroupLens for Gnus" + (news score) + "lisp/gnus/") + ("gnus-group.el" + "group mode commands for Gnus" + (news) + "lisp/gnus/") + ("gnus-int.el" + "backend interface functions for Gnus" + (news) + "lisp/gnus/") + ("gnus-kill.el" + "kill commands for Gnus" + (news) + "lisp/gnus/") + ("gnus-load.el" + "automatically extracted custom dependencies" nil "lisp/gnus/") - ("gnus-virt.el" - "framework for \"virtual\" newsgroups" + ("gnus-logic.el" + "advanced scoring code for Gnus" + (news) + "lisp/gnus/") + ("gnus-mh.el" + "mh-e interface for Gnus" + (news) + "lisp/gnus/") + ("gnus-move.el" + "commands for moving Gnus from one server to another" + (news) + "lisp/gnus/") + ("gnus-msg.el" + "mail and post interface for Gnus" + (news) + "lisp/gnus/") + ("gnus-nocem.el" + "NoCeM pseudo-cancellation treatment" + (news) + "lisp/gnus/") + ("gnus-picon.el" + "displaying pretty icons in Gnus" + (news xpm annotation glyph faces) + "lisp/gnus/") + ("gnus-range.el" + "range and sequence functions for Gnus" + (news) + "lisp/gnus/") + ("gnus-salt.el" + "alternate summary mode interfaces for Gnus" nil "lisp/gnus/") - ("gnusmail.el" - "mail reply commands for GNUS newsreader" + ("gnus-score.el" + "scoring code for Gnus" + (news) + "lisp/gnus/") + ("gnus-setup.el" + "Initialization & Setup for Gnus 5" + (news) + "lisp/gnus/") + ("gnus-soup.el" + "SOUP packet writing support for Gnus" + (news mail) + "lisp/gnus/") + ("gnus-spec.el" + "format spec functions for Gnus" + (news) + "lisp/gnus/") + ("gnus-srvr.el" + "virtual server support for Gnus" (news) "lisp/gnus/") - ("gnusmisc.el" - "miscellaneous commands for GNUS newsreader" + ("gnus-start.el" + "startup functions for Gnus" + (news) + "lisp/gnus/") + ("gnus-sum.el" + "summary mode commands for Gnus" + (news) + "lisp/gnus/") + ("gnus-topic.el" + "a folding minor mode for Gnus group buffers" + (news) + "lisp/gnus/") + ("gnus-undo.el" + "minor mode for undoing in Gnus" + (news) + "lisp/gnus/") + ("gnus-util.el" + "utility functions for Gnus" + (news) + "lisp/gnus/") + ("gnus-uu.el" + "extract (uu)encoded files in Gnus" + nil + "lisp/gnus/") + ("gnus-vm.el" + "vm interface for Gnus" + (news mail) + "lisp/gnus/") + ("gnus-win.el" + "window configuration functions for Gnus" + (news) + "lisp/gnus/") + ("gnus-xmas.el" + "Gnus functions for XEmacs" (news) "lisp/gnus/") - ("gnuspost.el" - "post news commands for GNUS newsreader" + ("gnus.el" + "a newsreader for GNU Emacs" + (news mail) + "lisp/gnus/") + ("mailheader.el" + "Mail header parsing, merging, formatting" + (tools mail news) + "lisp/gnus/") + ("md5.el" + "MD5 Message Digest Algorithm" + nil + "lisp/gnus/") + ("message.el" + "composing mail and news messages" + (mail news) + "lisp/gnus/") + ("messagexmas.el" + "XEmacs extensions to message" + (mail news) + "lisp/gnus/") + ("messcompat.el" + "making message mode compatible with mail mode" + (mail news) + "lisp/gnus/") + ("nnbabyl.el" + "rmail mbox access for Gnus" + (news mail) + "lisp/gnus/") + ("nndb.el" + "nndb access for Gnus" + (news) + "lisp/gnus/") + ("nndir.el" + "single directory newsgroup access for Gnus" + (news) + "lisp/gnus/") + ("nndoc.el" + "single file access for Gnus" + (news) + "lisp/gnus/") + ("nndraft.el" + "draft article access for Gnus" (news) "lisp/gnus/") - ("mhspool.el" - "MH folder access using NNTP for GNU Emacs" - (mail news) + ("nneething.el" + "random file access for Gnus" + (news mail) + "lisp/gnus/") + ("nnfolder.el" + "mail folder access for Gnus" + (mail) + "lisp/gnus/") + ("nngateway.el" + "posting news via mail gateways" + (news mail) + "lisp/gnus/") + ("nnheader.el" + "header access macros for Gnus and its backends" + (news) + "lisp/gnus/") + ("nnheaderxm.el" + "making Gnus backends work under XEmacs" + (news) + "lisp/gnus/") + ("nnkiboze.el" + "select virtual news access for Gnus" + (news) + "lisp/gnus/") + ("nnmail.el" + "mail support functions for the Gnus mail backends" + (news mail) + "lisp/gnus/") + ("nnmbox.el" + "mail mbox access for Gnus" + (news mail) + "lisp/gnus/") + ("nnmh.el" + "mhspool access for Gnus" + (news mail) + "lisp/gnus/") + ("nnml.el" + "mail spool access for Gnus" + (news mail) + "lisp/gnus/") + ("nnoo.el" + "OO Gnus Backends" + (news) + "lisp/gnus/") + ("nnsoup.el" + "SOUP access for Gnus" + (news mail) "lisp/gnus/") ("nnspool.el" - "spool access using NNTP for GNU Emacs" + "spool access for GNU Emacs" (news) "lisp/gnus/") ("nntp.el" - "GNUS interface to NNTP servers" - nil + "nntp access for Gnus" + (news) "lisp/gnus/") - ("old-nntp.el" - "NNTP (RFC977) Interface for GNU Emacs" + ("nnvirtual.el" + "virtual newsgroups access for Gnus" + (news) + "lisp/gnus/") + ("nnweb.el" + "retrieving articles via web search engines" (news) "lisp/gnus/") - ("html-mode.el" - "Major mode for editing HTML hypertext documents for the WWW" + ("parse-time.el" + "Parsing time strings" + (util) + "lisp/gnus/") + ("pop3.el" + "Post Office Protocol (RFC 1460) interface" + (mail pop3) + "lisp/gnus/") + ("score-mode.el" + "mode for editing Gnus score files" + (news mail) + "lisp/gnus/") + ("smiley.el" + "displaying smiley faces" + (fun) + "lisp/gnus/") + ("hm--html-menu.el" + "A menu for the hm--html-mode." + nil + "lisp/hm--html-menus/") + ("hm--html-mode.el" + "Major mode for editing HTML documents for the WWW" (hypermedia languages help docs wp) "lisp/hm--html-menus/") ("html-view.el" "routines for communicating with a NCSA Mosaic process" - nil + (comm unix wp help) "lisp/hm--html-menus/") ("tmpl-minor-mode.el" "Template Minor Mode" - nil + (data tools) "lisp/hm--html-menus/") - ("hact.el" - "Hyperbole button action handling." - (hypermedia) - "lisp/hyperbole/") - ("hactypes.el" - "Default action types for Hyperbole." - (extensions hypermedia) - "lisp/hyperbole/") - ("hargs.el" - "Obtains user input through Emacs for Hyperbole" - (extensions hypermedia) - "lisp/hyperbole/") - ("hbdata.el" - "Hyperbole button attribute accessor methods." - (hypermedia) - "lisp/hyperbole/") - ("hbmap.el" - "Hyperbole button map maintenance for queries and lookups." - (hypermedia matching) - "lisp/hyperbole/") - ("hbut.el" - "Hyperbole button constructs." - (extensions hypermedia) - "lisp/hyperbole/") - ("hgnus.el" - "Support Hyperbole buttons in news reader/poster: GNUS." - (hypermedia news) - "lisp/hyperbole/") - ("hhist.el" - "Maintains history of Hyperbole buttons selected." - (hypermedia) - "lisp/hyperbole/") - ("hib-doc-id.el" - "Implicit button type for document id index entries." - (docs extensions hypermedia) - "lisp/hyperbole/") - ("hib-kbd.el" - "Implicit button type for key sequences delimited with {}." - (extensions hypermedia) - "lisp/hyperbole/") - ("hibtypes.el" - "Hyperbole System Implicit Button Types." - (extensions hypermedia) - "lisp/hyperbole/") - ("hinit.el" - "Standard initializations for Hyperbole hypertext system." - (hypermedia) - "lisp/hyperbole/") - ("hlvar.el" - "Permits use of Hyperbole variables in local variable lists." - (extensions hypermedia) - "lisp/hyperbole/") - ("hmail.el" - "Support for Hyperbole buttons embedded in e-mail messages." - (hypermedia mail) - "lisp/hyperbole/") - ("hmh.el" - "Support for Hyperbole buttons in mail reader: Mh." - (hypermedia mail) - "lisp/hyperbole/") - ("hmoccur.el" - "Multi-buffer or multi-file regexp occurrence location." - (hypermedia matching) - "lisp/hyperbole/") - ("hmous-info.el" - "Walks through Info networks using one key." - (docs help hypermedia mouse) - "lisp/hyperbole/") - ("hmouse-drv.el" - "Smart Key/Mouse driver functions." - (hypermedia mouse) - "lisp/hyperbole/") - ("hmouse-key.el" - "Load \"hmouse-sh.el\" or \"hmouse-reg.el\" for Smart Key bindings." - (hypermedia mouse) - "lisp/hyperbole/") - ("hmouse-mod.el" - "Action Key acts as CONTROL modifier and Assist Key as META modifier." - (hypermedia mouse) - "lisp/hyperbole/") - ("hmouse-reg.el" - "System-dependent Smart Mouse Key bindings (no shift key)." - (hypermedia mouse) - "lisp/hyperbole/") - ("hmouse-sh.el" - "System-dependent Smart Mouse Key bindings (using shift key)." - (hypermedia mouse) - "lisp/hyperbole/") - ("hmouse-tag.el" - "Smart Key support of programming language tags location." - (c hypermedia mouse oop tools) - "lisp/hyperbole/") - ("hpath.el" - "Hyperbole support routines for handling UNIX paths. " - (comm hypermedia unix) - "lisp/hyperbole/") - ("hrmail.el" - "Support for Hyperbole buttons in mail reader: Rmail." - (hypermedia mail) - "lisp/hyperbole/") - ("hsite-ex.el" - "Site-specific setup for Hyperbole" - (hypermedia local) - "lisp/hyperbole/") - ("hsite.el" - "Site-specific setup for Hyperbole" - (hypermedia local) - "lisp/hyperbole/") - ("hsmail.el" - "Support for Hyperbole buttons in mail composer: mail and mh-letter." - (hypermedia mail) - "lisp/hyperbole/") - ("hsys-hbase.el" - "Hyperbole support for the Hyperbase system." - (comm hypermedia) - "lisp/hyperbole/") - ("hsys-w3.el" - "Hyperbole support for Emacs W3 World-Wide Web (WWW) browsing." - (comm help hypermedia) - "lisp/hyperbole/") - ("hsys-wais.el" - "Hyperbole support for WAIS browsing." - (comm help hypermedia) - "lisp/hyperbole/") - ("hsys-www.el" - "Hyperbole support for old CERN command line WWW browsing." - (comm help hypermedia) - "lisp/hyperbole/") - ("htz.el" - "Timezone-based time and date support for Hyperbole." - (calendar hypermedia) - "lisp/hyperbole/") - ("hui-em19-b.el" - "GNU Emacs V19 button highlighting and flashing support." - (faces hypermedia) - "lisp/hyperbole/") - ("hui-ep-but.el" - "Support for highlighting/flashing buttons under Epoch." - (faces hypermedia) - "lisp/hyperbole/") - ("hui-epV4-b.el" - "Support color and flashing of hyper-buttons under Epoch V4" - (faces hypermedia) - "lisp/hyperbole/") - ("hui-menu.el" - "InfoDock/Emacs menubar menu of Hyperbole commands." - (hypermedia mouse) - "lisp/hyperbole/") - ("hui-menus.el" - "One line command menus for Hyperbole" - (hypermedia mouse) - "lisp/hyperbole/") - ("hui-mouse.el" - "Use key or mouse key for many functions, e.g. Hypb menus." - (hypermedia mouse) - "lisp/hyperbole/") - ("hui-window.el" - "Smart Mouse Key window and modeline depress/release actions." - (hypermedia mouse) - "lisp/hyperbole/") - ("hui-xe-but.el" - "XEmacs button highlighting and flashing support." - (faces hypermedia) - "lisp/hyperbole/") - ("hui.el" - "GNU Emacs User Interface to Hyperbole" - (hypermedia) - "lisp/hyperbole/") - ("hvar.el" - "Variable manipulation routines for Hyperbole." - (extensions hypermedia) - "lisp/hyperbole/") - ("hversion.el" - "Hyperbole version, system and load path information." - (hypermedia) - "lisp/hyperbole/") - ("hvm.el" - "Support Hyperbole buttons in mail reader: Vm." - (hypermedia mail) - "lisp/hyperbole/") - ("hypb.el" - "Miscellaneous Hyperbole support features." - (extensions hypermedia) - "lisp/hyperbole/") - ("hyperbole.el" - "Sets up Hyperbole for autoloading and use." - (hypermedia) - "lisp/hyperbole/") - ("set.el" - "Provide general mathematical operators on unordered sets." - (extensions tools) - "lisp/hyperbole/") - ("wconfig.el" - "Saves and yanks from save ring of window configurations." - (frames hypermedia) - "lisp/hyperbole/") - ("wrolo-logic.el" - "Performs logical retrievals on rolodex files" - (hypermedia matching) - "lisp/hyperbole/") - ("wrolo-menu.el" - "Pulldown and popup menus of Hyperbole rolodex commands." - (hypermedia matching mouse) - "lisp/hyperbole/") - ("wrolo.el" - "Hierarchical, multi-file, easy to use rolodex system" - (hypermedia matching) - "lisp/hyperbole/") - ("kfile.el" - "Save and restore kotls from files." - (outlines wp) - "lisp/hyperbole/kotl/") - ("kfill.el" - "Fill and justify koutline cells (adapted from Kyle Jones' filladapt)." - (outlines wp) - "lisp/hyperbole/kotl/") - ("kimport.el" - "Convert and insert other outline file formats into koutlines." - (data outlines wp) - "lisp/hyperbole/kotl/") - ("klabel.el" - "Display label handling for koutlines." - (outlines wp) - "lisp/hyperbole/kotl/") - ("klink.el" - "Implicit reference to a kcell action type, for use in koutlines." - (extensions hypermedia outlines wp) - "lisp/hyperbole/kotl/") - ("kmenu.el" - "Pulldown and popup menus for kotl-mode, the Hyperbole Outliner." - (mouse outlines wp) - "lisp/hyperbole/kotl/") - ("knode.el" - "Generic nodes for use as elements in data structures." - (extensions hypermedia outlines) - "lisp/hyperbole/kotl/") - ("kotl-mode.el" - "Major mode for editing koutlines and associated commands." - (data hypermedia outlines wp) - "lisp/hyperbole/kotl/") - ("kotl.el" - "Internal representation of outline kcells used by kviews." - (outlines wp) - "lisp/hyperbole/kotl/") - ("kprop-em19.el" - "Koutline text property handling under Emacs 19." - (outlines wp) - "lisp/hyperbole/kotl/") - ("kprop-xe.el" - "Koutline text property handling under XEmacs." - (outlines wp) - "lisp/hyperbole/kotl/") - ("kproperty.el" - "Wrapper for koutline text property implementations." - (outlines wp) - "lisp/hyperbole/kotl/") - ("kview.el" - "Display handling of koutlines." - (outlines wp) - "lisp/hyperbole/kotl/") + ("iso-acc.el" + "minor mode providing electric accent keys" + (i18n) + "lisp/iso/") ("iso-ascii.el" "set up char tables for ISO 8859/1 on ASCII terminals." (i18n) "lisp/iso/") + ("iso-cvt.el" + "translate to ISO 8859-1 from/to net/TeX conventions" + (tex iso latin i18n) + "lisp/iso/") ("iso-insert.el" "insert functions for ISO 8859/1." (i18n) @@ -642,6 +802,10 @@ "miscellaneous functions for dealing with Swedish." (i18n) "lisp/iso/") + ("mc-remail.el" + "Remailer support for Mailcrypt" + nil + "lisp/mailcrypt/") ("mh-comp.el" "mh-e functions for composing messages" nil @@ -672,11 +836,11 @@ "lisp/mh-e/") ("abbrev.el" "abbrev mode commands for Emacs" - (internal abbrev) + (abbrev) "lisp/modes/") - ("ada.el" - "Ada editing support package in GNUlisp. v1.0" - (languages) + ("ada-mode.el" + "An Emacs major-mode for editing Ada source." + nil "lisp/modes/") ("arc-mode.el" "simple editing of archives" @@ -686,13 +850,17 @@ "mode for editing assembler code" (tools languages) "lisp/modes/") + ("auto-show.el" + "perform automatic horizontal scrolling as point moves" + (scroll display minor-mode) + "lisp/modes/") ("awk-mode.el" "AWK code editing commands for Emacs" (unix languages) "lisp/modes/") ("bib-mode.el" "bib-mode, major mode for editing bib files." - (bib wp) + (bib) "lisp/modes/") ("bibtex.el" "BibTeX mode for GNU Emacs" @@ -702,6 +870,10 @@ "edit C comments" (c) "lisp/modes/") + ("c-style.el" + "sets c-style control variables." + nil + "lisp/modes/") ("cc-compat.el" "cc-mode compatibility with c-mode.el confusion" (c languages oop) @@ -715,13 +887,33 @@ (c languages oop) "lisp/modes/") ("cc-mode.el" - "major mode for editing C, C++, and Objective-C code" + "major mode for editing C, C++, Objective-C, and Java code" (c languages oop) "lisp/modes/") + ("cl-indent.el" + "enhanced lisp-indent mode" + (lisp tools) + "lisp/modes/") ("cmacexp.el" "expand C macros in a region" (c) "lisp/modes/") + ("enriched.el" + "read and save files in text/enriched format" + (wp faces) + "lisp/modes/") + ("executable.el" + "base functionality for executable interpreter scripts" + (languages unix) + "lisp/modes/") + ("f90.el" + "Fortran-90 mode (free format)" + (fortran f90 languages) + "lisp/modes/") + ("follow.el" + "Minor mode, Synchronize windows showing the same buffer." + (display window minor-mode) + "lisp/modes/") ("fortran-misc.el" "Routines than can be used with fortran mode." (languages) @@ -732,16 +924,24 @@ "lisp/modes/") ("hideif.el" "hides selected code within ifdef." - (c) + (c outlines) "lisp/modes/") ("hideshow.el" "minor mode cmds to selectively display blocks of code" - nil + (c c++ lisp tools editing) "lisp/modes/") ("icon.el" "mode for editing Icon code" (languages) "lisp/modes/") + ("imenu.el" + "Framework for mode-specific buffer indexes." + (tools) + "lisp/modes/") + ("ksh-mode.el" + "sh (ksh, bash) script editing mode for GNU Emacs." + (shell korn bourne sh ksh bash) + "lisp/modes/") ("lisp-mnt.el" "minor mode for Emacs Lisp maintainers" (docs) @@ -750,18 +950,14 @@ "Lisp mode, and its idiosyncratic commands." (lisp languages) "lisp/modes/") - ("makefile.el" + ("m4-mode.el" + "m4 code editing commands for Emacs" + (languages faces) + "lisp/modes/") + ("make-mode.el" "makefile editing commands for Emacs" (unix tools) "lisp/modes/") - ("mim-mode.el" - "Mim (MDL in MDL) mode." - (languages) - "lisp/modes/") - ("mim-syntax.el" - "syntax checker for Mim (MDL)." - (languages) - "lisp/modes/") ("modula2.el" "Modula-2 editing support package" (languages) @@ -802,13 +998,17 @@ "major mode for editing and running Prolog under Emacs" (languages) "lisp/modes/") + ("python-mode.el" + "Major mode for editing Python programs" + (python languages oop) + "lisp/modes/") ("rexx-mode.el" "major mode for editing REXX program files" (languages) "lisp/modes/") ("rsz-minibuf.el" "dynamically resize minibuffer to display entire contents" - nil + (minibuffer window frames display) "lisp/modes/") ("scheme.el" "Scheme mode, and its idiosyncratic commands." @@ -822,18 +1022,26 @@ "mail sending commands for Emacs." (mail) "lisp/modes/") - ("sgml-mode.el" - "SGML-editing mode" - (wp) + ("sh-script.el" + "shell-script editing commands for Emacs" + (languages unix) "lisp/modes/") ("simula.el" "SIMULA 87 code editing commands for Emacs" (languages) "lisp/modes/") + ("tcl.el" + "Tcl code editing commands for Emacs" + (languages tcl modes) + "lisp/modes/") ("tex-mode.el" "TeX, LaTeX, and SliTeX mode commands." nil "lisp/modes/") + ("texinfo.el" + "major mode for editing Texinfo files" + (tex wp) + "lisp/modes/") ("text-mode.el" "text mode, and its idiosyncratic commands." nil @@ -842,170 +1050,214 @@ "minor mode for editing of two-column text" nil "lisp/modes/") + ("verilog-mode.el" + "major mode for editing verilog source in Emacs" + (languages) + "lisp/modes/") + ("vhdl-mode.el" + "major mode for editing VHDL code" + (languages vhdl) + "lisp/modes/") ("view-less.el" "Minor mode for browsing files with keybindings like `less'" - nil + (wp unix) "lisp/modes/") ("view.el" "peruse file or buffer without editing." (wp unix) "lisp/modes/") - ("br-c++-ft.el" - "C++ OO-Browser class and member functions." - (c oop tools) - "lisp/oobr/") - ("br-c++.el" - "Support routines for C++ inheritance browsing." - (c oop tools) - "lisp/oobr/") - ("br-c-ft.el" - "OO-Browser C construct handling." - (c tools) - "lisp/oobr/") - ("br-clos-ft.el" - "CLOS OO-Browser class and element functions." - (lisp oop tools) - "lisp/oobr/") - ("br-clos.el" - "Support routines for CLOS inheritance browsing." - (lisp oop tools) - "lisp/oobr/") - ("br-compl.el" - "Most functions for performing completion on OO constructs." - (matching oop tools) - "lisp/oobr/") - ("br-eif-ft.el" - "Eiffel OO-Browser class and feature functions." - (oop tools) - "lisp/oobr/") - ("br-eif.el" - "Support routines for Eiffel inheritance browsing and error parsing." - (oop tools) - "lisp/oobr/") - ("br-env.el" - "OO-Browser Environment support functions." - (oop tools) - "lisp/oobr/") - ("br-ftr.el" - "OO-Browser feature browsing support." - (oop tools) - "lisp/oobr/") - ("br-info.el" - "Support routines for Info file hierarchy browsing." - (docs help hypermedia) - "lisp/oobr/") - ("br-init.el" - "OO-Browser per Emacs session initialization." - (oop tools) - "lisp/oobr/") - ("br-lib.el" - "OO-Browser support functions." - (oop tools) - "lisp/oobr/") - ("br-menu.el" - "Pulldown and popup menus for the OO-Browser." - (mouse oop tools) - "lisp/oobr/") - ("br-objc-ft.el" - "Objective-C OO-Browser class and feature functions." - (c oop tools) - "lisp/oobr/") - ("br-objc.el" - "Support routines for Objective-C inheritance browsing." - (c oop tools) - "lisp/oobr/") - ("br-site.el" - "Site OO-Browser per Emacs session initialization." - (local oop tools) - "lisp/oobr/") - ("br-smt.el" - "Support routines for Smalltalk inheritance browsing and error parsing." - (oop tools) - "lisp/oobr/") - ("br-start.el" - "Select language and invoke OO-Browser." - (oop tools) - "lisp/oobr/") - ("br-tree.el" - "Interface between textual and graphical OO-Browsers." - (mouse oop tools) - "lisp/oobr/") - ("br-vers.el" - "OO-Browser revision number as 'br-version' variable." - (oop tools) - "lisp/oobr/") - ("br.el" - "Browse object-oriented code." - (matching oop tools) - "lisp/oobr/") - ("c++-browse.el" - "C++ source code browser." - (c oop tools) - "lisp/oobr/") - ("clos-brows.el" - "Common Lisp/CLOS source code browser." - (lisp oop tools) - "lisp/oobr/") - ("eif-browse.el" - "Eiffel source code browser." - (oop tools) - "lisp/oobr/") - ("eif-calls.el" - "Produce first level static call tree for Eiffel class." - (oop tools) - "lisp/oobr/") - ("eif-ise-er.el" - "Parses ISE's Eiffel error messages; compiles Eiffel classes." - (oop tools) - "lisp/oobr/") - ("hash-test.el" - "Interactively test functions from hasht.el." - (extensions maint tools) - "lisp/oobr/") - ("hasht.el" - "Create hash tables from lists and operate on them." - (extensions tools) - "lisp/oobr/") - ("hmouse-br.el" - "Hyperbole Key control for the OO-Browser." - (mouse oop tools) - "lisp/oobr/") - ("info-brows.el" - "Support routines for Info inheritance browsing and error parsing." - (docs help hypermedia) - "lisp/oobr/") - ("objc-brows.el" - "Objective-C source code browser." - (c oop tools) - "lisp/oobr/") - ("smt-browse.el" - "Smalltalk source code browser." - (oop tools) - "lisp/oobr/") + ("vrml-mode.el" + "major mode for editing VRML (.wrl) files" + (languages vrml modes) + "lisp/modes/") + ("whitespace-mode.el" + "minor mode for making whitespace visible" + (modes extensions) + "lisp/modes/") + ("winmgr-mode.el" + "generic window manager mode" + (languages) + "lisp/modes/") + ("xpm-mode.el" + "minor mode for editing XPM files" + (data tools) + "lisp/modes/") + ("xrdb-mode.el" + "mode for editing X resource database files" + (data languages) + "lisp/modes/") + ("latex-math-symbol.el" + "LaTeX math symbol decoder" + (latex math mule) + "lisp/mu/") + ("mu-bbdb.el" + "`attribution' function for mu-cite with BBDB." + nil + "lisp/mu/") + ("mu-cite.el" + "yet another citation tool for GNU Emacs" + (mail news citation) + "lisp/mu/") + ("std11-parse.el" + "STD 11 parser for GNU Emacs" + (mail news rfc 822 std 11) + "lisp/mu/") + ("std11.el" + "STD 11 functions for GNU Emacs" + (mail news rfc 822 std 11) + "lisp/mu/") + ("arabic-hooks.el" + "pre-loaded support for Arabic." + nil + "lisp/mule/") + ("arabic.el" + "minor mode for editing Arabic." + nil + "lisp/mule/") + ("canna.el" + "Interface to the Canna input method." + nil + "lisp/mule/") + ("chinese-hooks.el" + "pre-loaded support for Chinese." + nil + "lisp/mule/") + ("chinese.el" + "Chinese specific setup for XEmacs/Mule (not pre-loaded)." + nil + "lisp/mule/") + ("cyrillic-hooks.el" + "pre-loaded support for Cyrillic." + nil + "lisp/mule/") + ("ethiopic-hooks.el" + "pre-loaded support for Ethiopic." + nil + "lisp/mule/") + ("european-hooks.el" + "pre-loaded support for European languages." + nil + "lisp/mule/") + ("greek-hooks.el" + "pre-loaded support for Greek." + nil + "lisp/mule/") + ("hebrew-hooks.el" + "pre-loaded support for Hebrew." + nil + "lisp/mule/") + ("ipa-hooks.el" + "pre-loaded support for other languages." + nil + "lisp/mule/") + ("isearch-mule.el" + "incremental search with front-end inputting method" + (search) + "lisp/mule/") + ("japanese-hooks.el" + "pre-loaded support for Japanese." + nil + "lisp/mule/") + ("kinsoku.el" + "Kinsoku (line wrap) processing for XEmacs/Mule" + nil + "lisp/mule/") + ("korean-hooks.el" + "pre-loaded support for Korean." + nil + "lisp/mule/") + ("mule-category.el" + "category functions for XEmacs/Mule." + nil + "lisp/mule/") + ("mule-ccl.el" + "Code Conversion Language functions." + nil + "lisp/mule/") + ("mule-charset.el" + "Charset functions for Mule." + nil + "lisp/mule/") + ("mule-cne.el" + "interface between input methods Canna and EGG." + nil + "lisp/mule/") + ("mule-coding.el" + "Coding-system functions for Mule." + nil + "lisp/mule/") + ("mule-debug.el" + "debugging functions for Mule." + nil + "lisp/mule/") + ("mule-files.el" + "File I/O functions for XEmacs/Mule." + nil + "lisp/mule/") + ("mule-keyboard.el" + "Direct input of multilingual chars from keyboard." + nil + "lisp/mule/") + ("mule-load.el" + "Load up all pre-loaded Mule Lisp files." + nil + "lisp/mule/") + ("mule-misc.el" + "Miscellaneous Mule functions." + nil + "lisp/mule/") + ("mule-process.el" + "Process functions for XEmacs/Mule." + nil + "lisp/mule/") + ("mule-x-init.el" + "initialization code for X Windows under MULE" + (mule x11) + "lisp/mule/") + ("thai-hooks.el" + "pre-loaded support for Thai." + nil + "lisp/mule/") + ("vietnamese-hooks-1.el" + "pre-loaded support for Vietnamese, part 1." + nil + "lisp/mule/") + ("vietnamese-hooks-2.el" + "pre-loaded support for Vietnamese, part 2." + nil + "lisp/mule/") + ("visual-mode.el" + "cursor motion, insertion, deletion, etc. in visual order" + nil + "lisp/mule/") ("add-log.el" "change log maintenance commands for Emacs" (maint) "lisp/packages/") ("apropos.el" - "faster apropos commands." + "apropos commands for users and programmers." (help) "lisp/packages/") ("array.el" "array editing commands for XEmacs" (extensions) "lisp/packages/") - ("auto-save.el" - "safer auto saving with support for ange-ftp and /tmp" - nil - "lisp/packages/") ("autoinsert.el" "automatic mode-dependent insertion of text into new files" nil "lisp/packages/") ("avoid.el" - "make mouse pointer stay out of the way of editing." + "make mouse pointer stay out of the way of editing" (mouse) "lisp/packages/") + ("big-menubar.el" + "an alternate menubar" + (mouse menubar) + "lisp/packages/") + ("blink-cursor.el" + "Blink the cursor on or off" + (display) + "lisp/packages/") ("blink-paren.el" "blink the matching paren, just like Zmacs" (faces) @@ -1016,7 +1268,7 @@ "lisp/packages/") ("buff-menu.el" "buffer menu main function and support functions." - nil + (extensions) "lisp/packages/") ("chistory.el" "list command history" @@ -1026,10 +1278,6 @@ "Scheme process in a buffer. Adapted from tea.el." (processes lisp) "lisp/packages/") - ("column.el" - "display line and column in the mode line" - nil - "lisp/packages/") ("compare-w.el" "compare text between windows for Emacs." nil @@ -1046,6 +1294,10 @@ "code for handling all sorts of compressed and encrypted files" (extensions) "lisp/packages/") + ("cu-edit-faces.el" + "interactive face editing mode" + nil + "lisp/packages/") ("dabbrev.el" "dynamic abbreviation package" (abbrev expand completion) @@ -1058,14 +1310,14 @@ "remove Texinfo commands from a Texinfo source file" (tex docs) "lisp/packages/") - ("diff.el" - "Run `diff' in compilation-mode." - (unix tools) - "lisp/packages/") ("doctex.el" "grind GNU Emacs DOC file into LaTeX input" (tex docs) "lisp/packages/") + ("edit-faces.el" + "interactive face editing mode" + nil + "lisp/packages/") ("emacsbug.el" "command to report Emacs bugs to appropriate mailing list." (maint) @@ -1090,14 +1342,18 @@ "treat a section of a buffer as a separate file" (extensions tools) "lisp/packages/") - ("filladapt.el" - "adaptive fill; replacement for fill commands" - (wp) - "lisp/packages/") ("font-lock.el" "decorating source files with fonts/colors based on syntax" (languages faces) "lisp/packages/") + ("fontl-hooks.el" + "pre-loaded stuff for font-lock." + nil + "lisp/packages/") + ("func-menu.el" + "Jump to a function within a buffer." + (tools c lisp) + "lisp/packages/") ("generic-sc.el" "generic interface to source control systems" (tools unix) @@ -1116,6 +1372,10 @@ "lisp/packages/") ("icomplete.el" "minibuffer completion with incremental feedback" + (help abbrev) + "lisp/packages/") + ("igrep.el" + "An improved interface to `grep`." nil "lisp/packages/") ("info.el" @@ -1126,8 +1386,16 @@ "info support functions package for Emacs" (help) "lisp/packages/") + ("ispell.el" + "spell checking using Ispell" + nil + "lisp/packages/") + ("jka-compr.el" + "reading/writing/loading compressed files" + (data) + "lisp/packages/") ("lazy-lock.el" - "Lazy demand-driven fontification for fast font-lock mode." + "Lazy demand-driven fontification for fast Font Lock mode." (faces files) "lisp/packages/") ("ledit.el" @@ -1142,6 +1410,10 @@ "print Emacs buffer on line printer." (unix) "lisp/packages/") + ("makeinfo.el" + "run makeinfo conveniently" + nil + "lisp/packages/") ("makesum.el" "generate key binding summary for Emacs" (help) @@ -1150,14 +1422,14 @@ "browse UNIX manual pages" (help) "lisp/packages/") - ("medit.el" - "front-end to the MEDIT package for editing MDL" - (languages) - "lisp/packages/") ("metamail.el" "Metamail interface for GNU Emacs" (mail news mime multimedia) "lisp/packages/") + ("mic-paren.el" + "highlight matching parenthesises." + (languages faces) + "lisp/packages/") ("mime-compose.el" "mime-compose.el ---" nil @@ -1174,10 +1446,18 @@ "highlight (un)matching parens and whole expressions" (languages faces) "lisp/packages/") + ("pending-del.el" + "Making insertions replace any selected text." + nil + "lisp/packages/") ("ps-print.el" "Jim's Pretty-Good PostScript Generator for Emacs 19." (print postscript) "lisp/packages/") + ("rcompile.el" + "run a compilation on a remote machine" + (tools processes) + "lisp/packages/") ("recent-files.el" "Maintain menu of recently opened files." (menu file) @@ -1190,18 +1470,14 @@ "process command line args from within a suspended Emacs job" (processes) "lisp/packages/") - ("rnews.el" - "USENET news reader for gnu emacs" - (news) - "lisp/packages/") - ("rnewspost.el" - "USENET news poster/mailer for GNU Emacs" - (mail news) - "lisp/packages/") ("saveplace.el" "automatically save place in files." (bookmarks placeholders) "lisp/packages/") + ("sccs.el" + "easy-to-use SCCS control from within Emacs" + nil + "lisp/packages/") ("server.el" "Lisp code for GNU Emacs running as server process." (processes) @@ -1222,13 +1498,21 @@ "terminal emulator for GNU Emacs." (comm terminals) "lisp/packages/") + ("texinfmt.el" + "format Texinfo files into Info files." + nil + "lisp/packages/") + ("texnfo-upd.el" + "utilities for updating nodes and menus in Texinfo files" + (maint tex docs) + "lisp/packages/") ("time-stamp.el" "Maintain last change time stamps in files edited by Emacs" (tools) "lisp/packages/") ("time.el" "display time and load in mode line of Emacs." - (extensions) + nil "lisp/packages/") ("uncompress.el" "auto-decompression hook for visiting .Z files" @@ -1250,26 +1534,54 @@ "drive a version-control system from within Emacs" nil "lisp/packages/") + ("webjump.el" + "programmable Web hotlist" + (webjump web www browse-url) + "lisp/packages/") + ("webster-www.el" + "Look up a word in WWW Merriam-Webster dictionary" + (comm hypermedia) + "lisp/packages/") ("xscheme.el" "run Scheme under Emacs" (languages lisp) "lisp/packages/") + ("dll-debug.el" + "A slow implementation of dll for debugging." + (extensions lisp) + "lisp/pcl-cvs/") ("about.el" "the About The Authors page (shameless self promotion)." nil "lisp/prim/") + ("advocacy.el" + "blatant XEmacs self promotion" + nil + "lisp/prim/") ("backquote.el" "Full backquote support for elisp. Reverse compatible too." (extensions) "lisp/prim/") + ("buffer.el" + "buffer routines taken from C" + nil + "lisp/prim/") ("case-table.el" "code to extend the character set and support case tables." (i18n) "lisp/prim/") + ("cleantree.el" + "Remove out of date .elcs in lisp directories" + (internal) + "lisp/prim/") ("cmdloop.el" "support functions for the top-level command loop." nil "lisp/prim/") + ("console.el" + "miscellaneous console functions not written in C" + (internal) + "lisp/prim/") ("debug.el" "debuggers and related commands for XEmacs" nil @@ -1286,6 +1598,10 @@ "functions to manipulate environment variables." (processes unix) "lisp/prim/") + ("events.el" + "event functions." + (internal) + "lisp/prim/") ("extents.el" "miscellaneous extent functions not written in C" (internal) @@ -1294,6 +1610,10 @@ "Lisp interface to the C \"face\" structure" (faces internal) "lisp/prim/") + ("files-nomule.el" + "file I/O stubs when not under Mule." + nil + "lisp/prim/") ("files.el" "file input and output commands for XEmacs." nil @@ -1306,6 +1626,10 @@ "detect absence of floating-point support in XEmacs runtime" (internal) "lisp/prim/") + ("format.el" + "read and save files in multiple formats" + (extensions) + "lisp/prim/") ("frame.el" "multi-frame management independent of window systems." (internal) @@ -1314,9 +1638,13 @@ "Lisp interface to C glyphs" (glyphs internal) "lisp/prim/") + ("gui.el" + "Basic GUI functions for XEmacs." + nil + "lisp/prim/") ("help.el" "help commands for XEmacs." - nil + (help internal) "lisp/prim/") ("inc-vers.el" "load this to increment the recorded XEmacs version number." @@ -1326,6 +1654,10 @@ "indentation commands for XEmacs" (lisp languages tools) "lisp/prim/") + ("itimer-autosave.el" + "Autosave functions with itimers" + nil + "lisp/prim/") ("lisp.el" "Lisp editing commands for XEmacs" (lisp languages) @@ -1346,6 +1678,10 @@ "miscellaneous functions for XEmacs" nil "lisp/prim/") + ("modeline.el" + "modeline hackery." + nil + "lisp/prim/") ("mouse.el" "window system-independent mouse support." (hardware) @@ -1366,6 +1702,10 @@ "edit Options command for XEmacs." nil "lisp/prim/") + ("overlay.el" + "overlay support." + (internal) + "lisp/prim/") ("page.el" "page motion commands for emacs." nil @@ -1378,6 +1718,10 @@ "commands for subprocesses; split out of simple.el" nil "lisp/prim/") + ("profile.el" + "basic profiling commands for XEmacs" + nil + "lisp/prim/") ("rect.el" "rectangle functions for XEmacs." (internal) @@ -1418,10 +1762,18 @@ "basic lisp subroutines for XEmacs" nil "lisp/prim/") + ("symbols.el" + "functions for working with symbols and symbol values" + nil + "lisp/prim/") ("tabify.el" "tab conversion commands for XEmacs" nil "lisp/prim/") + ("undo-stack.el" + "An \"undoable stack\" object." + (extensions) + "lisp/prim/") ("userlock.el" "handle file access contention between multiple users" (internal) @@ -1430,6 +1782,74 @@ "XEmacs window commands aside from those written in C." (extensions) "lisp/prim/") + ("winnt.el" + "Lisp routines for Windows NT." + nil + "lisp/prim/") + ("iso-sgml.el" + "display SGML entity references as ISO 8859-1 characters" + (sgml html iso latin i18n) + "lisp/psgml/") + ("psgml-api.el" + "Extra API functions for PSGML" + nil + "lisp/psgml/") + ("psgml-dtd.el" + "DTD parser for SGML-editing mode with parsing support" + nil + "lisp/psgml/") + ("psgml-edit.el" + "Editing commands for SGML-mode with parsing support" + nil + "lisp/psgml/") + ("psgml-fs.el" + "Format a SGML-file according to a style file" + nil + "lisp/psgml/") + ("psgml-html.el" + "HTML mode in conjunction with PSGML" + nil + "lisp/psgml/") + ("psgml-other.el" + "Part of SGML-editing mode with parsing support" + nil + "lisp/psgml/") + ("psgml-parse.el" + "Parser for SGML-editing mode with parsing support" + nil + "lisp/psgml/") + ("psgml-xemacs.el" + "Part of SGML-editing mode with parsing support" + nil + "lisp/psgml/") + ("psgml.el" + "SGML-editing mode with parsing support" + (languages) + "lisp/psgml/") + ("tempo.el" + "Flexible template insertion" + (extensions languages tools) + "lisp/psgml/") + ("quail-hanja-ksc.el" + "Quail-package for hanja (KSC5601) inputting" + nil + "lisp/quail/") + ("quail-ltn.el" + "European language input methods for quick typists" + nil + "lisp/quail/") + ("quail.el" + "Simple inputting method" + nil + "lisp/quail/") + ("rmail-kill.el" + "Mail filtering for rmail" + (mail) + "lisp/rmail/") + ("rmail-xemacs.el" + "Mouse and font support for RMAIL running on XEmacs" + (mail) + "lisp/rmail/") ("rmail.el" "main code of \"RMAIL\" mail reader for Emacs." (mail) @@ -1478,33 +1898,61 @@ "support SPARCworks manager ToolTalk messages" (sparcworks tooltalk messages) "lisp/sunpro/") - ("generic-win.el" - "generic window function initializtion" + ("AT386.el" + "terminal support package for IBM AT keyboards" (terminals) "lisp/term/") - ("ns-win.el" - "runtime initialization for the NeXTstep window system" + ("bg-mouse.el" + "GNU Emacs code for BBN Bitgraph mouse." + (hardware) + "lisp/term/") + ("internal.el" + "setup support for PC keyboards and screens, internal terminal" + nil + "lisp/term/") + ("keyswap.el" + "swap BS and DEL keys" (terminals) "lisp/term/") - ("post-tty-win.el" - "second phase of runtime initialization for tty's" + ("linux.el" + "define function key sequences for the Linux console" + (terminals) + "lisp/term/") + ("lk201.el" + "basic editing commands for XEmacs" nil "lisp/term/") - ("post-x-win.el" - "second phase of runtime initialization for X windows" + ("news.el" + "keypad and function key bindings for the Sony NEWS keyboard" (terminals) "lisp/term/") - ("pre-tty-win.el" - "first phase of runtime initialization for tty's" + ("pc-win.el" + "setup support for `PC windows' (whatever that is)." + nil + "lisp/term/") + ("scoansi.el" + "set up key names for SCO ansi console" nil "lisp/term/") - ("pre-x-win.el" - "first phase of runtime initialization for X windows" + ("sun-mouse.el" + "mouse handling for Sun windows" + (hardware) + "lisp/term/") + ("sun.el" + "keybinding for standard default sunterm keys" (terminals) "lisp/term/") - ("tty-win.el" - "runtime initialization for tty's if initial window system" - nil + ("sup-mouse.el" + "supdup mouse support for lisp machines" + (hardware) + "lisp/term/") + ("tty-init.el" + "initialization code for tty's" + (terminals) + "lisp/term/") + ("tvi970.el" + "terminal support for the Televideo 970" + (terminals) "lisp/term/") ("vt-control.el" "Common VTxxx control functions" @@ -1514,18 +1962,210 @@ "functions for LED control on VT-100 terminals & clones." (hardware) "lisp/term/") - ("x-win-sun.el" - "runtime initialization for Sun X servers and keyboards" + ("vt100.el" + "define VT100 function key sequences in function-key-map" + (terminals) + "lisp/term/") + ("win32-win.el" + "parse switches controlling interface with win32" + (terminals) + "lisp/term/") + ("wyse50.el" + "terminal support code for Wyse 50" + (terminals) + "lisp/term/") + ("xterm.el" + "define function key sequences for xterm" (terminals) "lisp/term/") - ("x-win-xfree86.el" - "runtime initialization for XFree86 servers" - (terminals) - "lisp/term/") - ("x-win.el" - "runtime initialization for X windows if initial window system" - (terminals) - "lisp/term/") + ("char-table.el" + "display table of charset" + (character emacs/mule) + "lisp/tl/") + ("char-util.el" + "character utility" + (character emacs/mule) + "lisp/tl/") + ("cless.el" + "Common lisp and Emacs Lisp source sharing" + (common lisp) + "lisp/tl/") + ("emu-e19.el" + "emu module for Emacs 19 and XEmacs 19" + (emulation compatibility mule latin-1) + "lisp/tl/") + ("emu-x20.el" + "emu API implementation for XEmacs 20 with mule" + (emulation compatibility mule xemacs) + "lisp/tl/") + ("emu-xemacs.el" + "emu API implementation for XEmacs" + (emulation compatibility xemacs) + "lisp/tl/") + ("emu.el" + "Emulation module for each Emacs variants" + (emulation compatibility nemacs mule emacs/mule xemacs) + "lisp/tl/") + ("file-detect.el" + "Emacs Lisp file detection utility" + (install module) + "lisp/tl/") + ("filename.el" + "file name filter" + (string file name) + "lisp/tl/") + ("range.el" + "range functions" + (range) + "lisp/tl/") + ("richtext.el" + "read and save files in text/richtext format" + (wp faces mime multimedia) + "lisp/tl/") + ("texi-util.el" + "Texinfo utility" + (texinfo) + "lisp/tl/") + ("tl-atype.el" + "atype functions" + (atype) + "lisp/tl/") + ("tl-list.el" + "utility functions about list" + (list) + "lisp/tl/") + ("tl-misc.el" + "miscellaneous utility of tl." + (load-path module structure) + "lisp/tl/") + ("tl-seq.el" + "sequence functions" + (sequence) + "lisp/tl/") + ("tl-str.el" + "Emacs Lisp Library module about string" + (string) + "lisp/tl/") + ("tu-comment.el" + "a comment out utility for Lisp programs." + (comment lisp) + "lisp/tl/") + ("tu-replace.el" + "a replacing utility for GNU Emacs" + (replace) + "lisp/tl/") + ("gnus-art-mime.el" + "MIME extension for article mode of Gnus" + (news mime multimedia multilingual encoded-word) + "lisp/tm/") + ("gnus-charset.el" + "MIME charset extension for Gnus" + (news mime multimedia multilingual encoded-word) + "lisp/tm/") + ("gnus-mime-old.el" + "MIME extensions for Gnus 5.[01] and 5.[23]" + (news mime multimedia multilingual encoded-word) + "lisp/tm/") + ("gnus-mime.el" + "MIME extensions for Gnus" + (news mime multimedia multilingual encoded-word) + "lisp/tm/") + ("gnus-sum-mime.el" + "MIME extension for summary mode of Gnus" + (news mime multimedia multilingual encoded-word) + "lisp/tm/") + ("message-mime.el" + "MIME extensions for message.el" + (news mime multimedia multilingual encoded-word) + "lisp/tm/") + ("mime-setup.el" + "setup file for tm viewer and composer." + (mail news mime multimedia multilingual encoded-word) + "lisp/tm/") + ("signature.el" + "a signature utility for GNU Emacs" + (mail news signature) + "lisp/tm/") + ("tm-bbdb.el" + "tm shared module for BBDB" + (mail news mime multimedia multilingual bbdb) + "lisp/tm/") + ("tm-def.el" + "definition module for tm" + (mail news mime multimedia definition) + "lisp/tm/") + ("tm-edit-mc.el" + "Mailcrypt interface for tm-edit" + (mail news mime multimedia multilingual security pgp) + "lisp/tm/") + ("tm-edit.el" + "Simple MIME Composer for GNU Emacs" + (mail news mime multimedia multilingual) + "lisp/tm/") + ("tm-ew-d.el" + "RFC 2047 based encoded-word decoder for GNU Emacs" + (encoded-word mime multilingual header mail news) + "lisp/tm/") + ("tm-ew-e.el" + "RFC 2047 based encoded-word encoder for GNU Emacs" + (encoded-word mime multilingual header mail news) + "lisp/tm/") + ("tm-file.el" + "tm-view internal method for file extraction" + (mail news mime multimedia file extract) + "lisp/tm/") + ("tm-ftp.el" + "tm-view internal method for anonymous ftp" + (anonymous ftp mime multimedia mail news) + "lisp/tm/") + ("tm-image.el" + "tm-view filter to display images in XEmacs or MULE buffers" + (image picture x-face mime multimedia mail news) + "lisp/tm/") + ("tm-mail.el" + "mail-mode extension." + (mail mime multimedia) + "lisp/tm/") + ("tm-mh-e.el" + "MIME extension for mh-e" + (mail mh mime multimedia encoded-word multilingual) + "lisp/tm/") + ("tm-parse.el" + "MIME message parser" + (mail news mime multimedia) + "lisp/tm/") + ("tm-partial.el" + "Grabbing all MIME \"message/partial\"s." + (mail news mime multimedia message/partial) + "lisp/tm/") + ("tm-pgp.el" + "tm-view internal methods for PGP." + (mail news mime multimedia pgp security) + "lisp/tm/") + ("tm-play.el" + "decoder for tm-view.el" + (mail news mime multimedia) + "lisp/tm/") + ("tm-rmail.el" + "MIME extension for RMAIL" + (mail mime multimedia multilingual encoded-word) + "lisp/tm/") + ("tm-setup.el" + "setup file for tm viewer." + (mail news mime multimedia multilingual encoded-word) + "lisp/tm/") + ("tm-view.el" + "interactive MIME viewer for GNU Emacs" + (mail news mime multimedia) + "lisp/tm/") + ("tm-vm.el" + "tm-MUA (MIME Extension module) for VM" + (mail mime multimedia multilingual encoded-word) + "lisp/tm/") + ("tmh-comp.el" + "tm-mh-e functions for composing messages" + (mail mh mime multimedia encoded-word multilingual) + "lisp/tm/") ("abbrevlist.el" "list one abbrev table alphabetically ordered." (abbrev) @@ -1550,29 +2190,17 @@ "maintain autoloads in loaddefs.el." (maint) "lisp/utils/") + ("bench.el" + "benchmarking utility for emacsen" + (internal maint) + "lisp/utils/") ("blessmail.el" "Decide whether movemail needs special privileges." (internal) "lisp/utils/") - ("cl-compat.el" - "Common Lisp extensions for GNU Emacs Lisp (compatibility)" - (extensions) - "lisp/utils/") - ("cl-extra.el" - "Common Lisp extensions for GNU Emacs Lisp (part two)" - (extensions) - "lisp/utils/") - ("cl-macs.el" - "Common Lisp extensions for GNU Emacs Lisp (part four)" - (extensions) - "lisp/utils/") - ("cl-seq.el" - "Common Lisp extensions for GNU Emacs Lisp (part three)" - (extensions) - "lisp/utils/") - ("cl.el" - "Common Lisp extensions for GNU Emacs Lisp" - (extensions lisp) + ("browse-url.el" + "ask a WWW browser to load a URL" + (hypertext) "lisp/utils/") ("delbackspace.el" "rebind backspace and delete to be correct" @@ -1580,12 +2208,32 @@ "lisp/utils/") ("derived.el" "allow inheritance of major modes." + nil + "lisp/utils/") + ("detached-minibuf.el" + "Support a detached minibuffer for XEmacs." + (extensions) + "lisp/utils/") + ("docref.el" + "Simple cross references for Elisp documentation strings" + (docs help lisp) + "lisp/utils/") + ("edmacro.el" + "keyboard macro editor" + (abbrev) + "lisp/utils/") + ("eldoc.el" + "show function arglist or variable docstring in echo area" (extensions) "lisp/utils/") ("elp.el" "Emacs Lisp Profiler" (debugging lisp tools) "lisp/utils/") + ("facemenu.el" + "create a face menu for interactively adding fonts to text" + (faces) + "lisp/utils/") ("find-gc.el" "detect functions that call the garbage collector" (maint) @@ -1598,30 +2246,38 @@ "topic & keyword-based code finder" (help) "lisp/utils/") + ("floating-toolbar.el" + "popup toolbar support for XEmacs." + (lisp) + "lisp/utils/") ("flow-ctrl.el" "help for lusers on cu(1) or ttys with wired-in ^S/^Q flow control" (hardware) "lisp/utils/") ("foldout.el" "Folding extensions for outline-mode and outline-minor-mode." - (outlining) + (folding outline) "lisp/utils/") ("forms-d2.el" "demo forms-mode" - (extensions) + nil "lisp/utils/") ("forms-pass.el" - "demo for forms-mode" - (extensions) + "passwd file demo for forms-mode" + nil "lisp/utils/") ("forms.el" - "Forms mode: edit a file as a form to fill in." + "Forms mode: edit a file as a form to fill in" (extensions) "lisp/utils/") ("highlight-headers.el" "highlighting message headers." (mail news) "lisp/utils/") + ("live-icon.el" + "make frame icons represent the current frame contents" + nil + "lisp/utils/") ("loadhist.el" "lisp functions for working with feature groups" (internal) @@ -1631,8 +2287,8 @@ (mail) "lisp/utils/") ("mail-utils.el" - "Utility functions used both by rmail and rnews" - (mail news internal) + "utility functions used both by rmail and rnews" + (mail news) "lisp/utils/") ("mailpost.el" "RMAIL coupler to /usr/uci/post mailer" @@ -1640,7 +2296,7 @@ "lisp/utils/") ("map-ynp.el" "General-purpose boolean question-asker" - (extensions) + (lisp extensions) "lisp/utils/") ("meese.el" "protect the impressionable young minds of America" @@ -1650,13 +2306,21 @@ "Prompting for passwords semi-securely" (comm extensions) "lisp/utils/") + ("pp.el" + "pretty printer for Emacs Lisp" + (lisp tools language extensions) + "lisp/utils/") + ("redo.el" + "Redo/undo system for XEmacs" + (lisp extensions) + "lisp/utils/") ("regi.el" "REGular expression Interpreting engine" - (extensions matching wp) + (extensions matching) "lisp/utils/") ("reporter.el" "customizable bug reporting of lisp programs" - (mail lisp) + (maint mail tools) "lisp/utils/") ("rfc822.el" "hairy rfc822 parser for mail and news and suchlike" @@ -1666,6 +2330,18 @@ "handle rings of items" (extensions) "lisp/utils/") + ("shadowfile.el" + "automatic file copying for Emacs 19" + (comm) + "lisp/utils/") + ("skeleton.el" + "Lisp language extension for writing statement skeletons" + (extensions abbrev languages tools) + "lisp/utils/") + ("soundex.el" + "implement Soundex algorithm" + (matching) + "lisp/utils/") ("symbol-syntax.el" "find chars with symbol syntax" (matching) @@ -1683,8 +2359,8 @@ (extensions languages) "lisp/utils/") ("timezone.el" - "timezone package for GNU Emacs" - (internal extensions news) + "time zone package for GNU Emacs" + (news) "lisp/utils/") ("tq.el" "utility to maintain a transaction queue" @@ -1692,111 +2368,215 @@ "lisp/utils/") ("trace.el" "tracing facility for Emacs Lisp functions" - (lisp tools debugging) + (tools lisp) + "lisp/utils/") + ("uniquify.el" + "unique buffer names dependent on file name" + nil "lisp/utils/") - ("with-timeout.el" - "timeout hackery" - (extensions) - "lisp/utils/") + ("viper-ex.el" + "functions implementing the Ex commands for Viper" + nil + "lisp/viper/") + ("viper-init.el" + "some common definitions for Viper" + nil + "lisp/viper/") + ("viper-keym.el" + "Viper keymaps" + nil + "lisp/viper/") + ("viper-macs.el" + "functions implementing keyboard macros for Viper" + nil + "lisp/viper/") + ("viper-mous.el" + "mouse support for Viper" + nil + "lisp/viper/") ("viper-util.el" "Utilities used by viper.el" nil "lisp/viper/") ("viper.el" "A full-featured Vi emulator for GNU Emacs 19 and XEmacs 19," - nil + (emulations) "lisp/viper/") ("vm-easymenu.el" "support the easymenu interface for defining a menu." (emulations) "lisp/vm/") - ("vms-patch.el" - "override parts of files.el for VMS." - (vms) - "lisp/vms/") - ("vmsproc.el" - "run asynchronous VMS subprocesses under Emacs" - (vms) - "lisp/vms/") - ("vmsx.el" - "run asynchronous VMS subprocesses under Emacs" - (vms) - "lisp/vms/") ("base64.el" "Base64 encoding functions" (extensions) "lisp/w3/") - ("md5.el" - "MD5 functionality for emacsen without it builtin" - (mail news tools hypermedia) + ("css.el" + "Cascading Style Sheet parser" + nil + "lisp/w3/") + ("dsssl.el" + "DSSSL parser" + nil + "lisp/w3/") + ("font.el" + "New font model" + (faces) + "lisp/w3/") + ("images.el" + "Automatic image converters" + (images) "lisp/w3/") ("mm.el" "Mailcap parsing routines, and MIME handling" (mail news hypermedia) "lisp/w3/") + ("mule-sysdp.el" + "consolidate MULE-version dependencies in one file." + (lisp tools) + "lisp/w3/") + ("socks.el" + "A Socks v5 Client for Emacs" + (comm firewalls) + "lisp/w3/") ("ssl.el" "ssl functions for emacsen without them builtin" (comm) "lisp/w3/") + ("url-auth.el" + "Uniform Resource Locator authorization modules" + (comm data processes hypermedia) + "lisp/w3/") + ("url-cache.el" + "Uniform Resource Locator retrieval tool" + (comm data processes hypermedia) + "lisp/w3/") + ("url-cookie.el" + "Netscape Cookie support" + (comm data processes hypermedia) + "lisp/w3/") + ("url-file.el" + "File retrieval code" + (comm data processes) + "lisp/w3/") + ("url-gopher.el" + "Gopher Uniform Resource Locator retrieval code" + (comm data processes) + "lisp/w3/") + ("url-gw.el" + "Gateway munging for URL loading" + (comm data processes) + "lisp/w3/") + ("url-http.el" + "HTTP Uniform Resource Locator retrieval code" + (comm data processes) + "lisp/w3/") + ("url-irc.el" + "IRC URL interface" + (comm data processes) + "lisp/w3/") + ("url-mail.el" + "Mail Uniform Resource Locator retrieval code" + (comm data processes) + "lisp/w3/") + ("url-misc.el" + "Misc Uniform Resource Locator retrieval code" + (comm data processes) + "lisp/w3/") + ("url-news.el" + "News Uniform Resource Locator retrieval code" + (comm data processes) + "lisp/w3/") + ("url-nfs.el" + "NFS URL interface" + (comm data processes) + "lisp/w3/") + ("url-ns.el" + "Various netscape-ish functions for proxy definitions" + (comm data processes hypermedia) + "lisp/w3/") + ("url-parse.el" + "Uniform Resource Locator parser" + (comm data processes) + "lisp/w3/") + ("url-vars.el" + "Variables for Uniform Resource Locator tool" + (comm data processes hypermedia) + "lisp/w3/") ("url.el" "Uniform Resource Locator retrieval tool" (comm data processes hypermedia) "lisp/w3/") - ("urlauth.el" - "Uniform Resource Locator authorization modules" - (comm data processes hypermedia) - "lisp/w3/") - ("w3-10646.el" - "ISO 10646 Entities for Emacs-w3" - (i18n) - "lisp/w3/") ("w3-about.el" "About pages for emacs-w3" (hypermedia) "lisp/w3/") - ("w3-beta.el" - "Misc functions for emacs-w3's new display engine" - (help hypermedia comm) + ("w3-cus.el" + "Customization support for Emacs-W3" + (comm help hypermedia) "lisp/w3/") - ("w3-draw.el" - "Emacs-W3 drawing functions for new display engine" + ("w3-display.el" + "display engine v99999" (faces help hypermedia) "lisp/w3/") ("w3-e19.el" "Emacs 19.xx specific functions for emacs-w3" (faces help mouse hypermedia) "lisp/w3/") - ("w3-emacs.el" - "Emacs 18.xx specific functions for emacs-w3" - (faces help mouse hypermedia) + ("w3-elisp.el" + "Scripting support for emacs-lisp" + (hypermedia scripting) + "lisp/w3/") + ("w3-emulate.el" + "All variable definitions for emacs-w3" + (comm help hypermedia) "lisp/w3/") - ("w3-epoch.el" - "Epoch 4.x specific functions for emacs-w3" - (faces help mouse hypermedia) + ("w3-forms.el" + "Emacs-w3 forms parsing code for new display engine" + (faces help comm data languages) "lisp/w3/") - ("w3-mac.el" - "Macintosh specific functions for emacs-w3" - (faces help mouse hypermedia) + ("w3-hot.el" + "Main functions for emacs-w3 on all platforms/versions" + (faces help comm news mail processes mouse hypermedia) + "lisp/w3/") + ("w3-imap.el" + "Imagemap functions" + (hypermedia) "lisp/w3/") - ("w3-mule.el" - "MULE 18/19 specific functions for emacs-w3" - (faces help i18n mouse hypermedia) + ("w3-jscript.el" + "Scripting support for javascript" + (hypermedia scripting) + "lisp/w3/") + ("w3-keyword.el" + "Emacs-W3 binding style sheet mechanism" + (hypermedia) + "lisp/w3/") + ("w3-latex.el" + "Emacs-W3 printing via LaTeX" + (hypermedia printing typesetting) "lisp/w3/") - ("w3-next.el" - "NeXTStep specific functions for emacs-w3" - (faces help mouse hypermedia) + ("w3-menu.el" + "Menu functions for emacs-w3" + (menu hypermedia) "lisp/w3/") - ("w3-parse.el" - "Generalized html/sgml parsing support for emacs-w3" - (faces help hypermedia) + ("w3-mouse.el" + "Mouse specific functions for emacs-w3" + (mouse hypermedia) + "lisp/w3/") + ("w3-prefs.el" + "Preferences panels for Emacs-W3" + (hypermedia preferences) "lisp/w3/") ("w3-print.el" "Printing support for emacs-w3" (faces help printing hypermedia) "lisp/w3/") - ("w3-srch.el" - "Searching functions for emacs-w3" - (matching help comm hypermedia) + ("w3-script.el" + "Scripting support" + (hypermedia scripting) + "lisp/w3/") + ("w3-speak.el" + "Emacs-W3 speech interface" + (hypermedia speech) "lisp/w3/") ("w3-style.el" "Emacs-W3 binding style sheet mechanism" @@ -1806,13 +2586,17 @@ "consolidate Emacs-version dependencies in one file." (lisp tools) "lisp/w3/") + ("w3-toolbar.el" + "Toolbar functions for emacs-w3" + (mouse toolbar) + "lisp/w3/") ("w3-vars.el" "All variable definitions for emacs-w3" (comm help hypermedia) "lisp/w3/") - ("w3-wemac.el" - "WinEmacs specific functions for emacs-w3" - (faces help hypermedia mouse) + ("w3-widget.el" + "An image widget" + (faces images) "lisp/w3/") ("w3-xemac.el" "XEmacs specific functions for emacs-w3" @@ -1822,10 +2606,22 @@ "Main functions for emacs-w3 on all platforms/versions" (faces help comm news mail processes mouse hypermedia) "lisp/w3/") + ("x-overlay.el" + "overlay support." + (internal) + "lisp/w3/") ("x-faces.el" "X-specific face frobnication, aka black magic." nil "lisp/x11/") + ("x-font-menu.el" + "Managing menus of X fonts." + nil + "lisp/x11/") + ("x-init.el" + "initialization code for X windows" + (terminals) + "lisp/x11/") ("x-menubar.el" "Menubar and popup-menu support for X." nil @@ -1838,6 +2634,18 @@ "scrollbar resourcing and such." nil "lisp/x11/") + ("x-select.el" + "Elisp interface to X Selections." + nil + "lisp/x11/") + ("x-win-sun.el" + "runtime initialization for Sun X servers and keyboards" + (terminals) + "lisp/x11/") + ("x-win-xfree86.el" + "runtime initialization for XFree86 servers" + (terminals) + "lisp/x11/") )) (provide 'finder-inf) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/utils/finder.el --- a/lisp/utils/finder.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/utils/finder.el Mon Aug 13 09:24:17 2007 +0200 @@ -98,6 +98,7 @@ (mail . "modes for electronic-mail handling") (matching . "various sorts of searching and matching") (mouse . "mouse support") + (mule . "multi-language extensions") (news . "support for netnews reading and posting") (oop . "support for object-oriented programming") (outlines . "support for hierarchical outlining") diff -r 578fd4947a72 -r 7d55a9ba150c lisp/version.el --- a/lisp/version.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/version.el Mon Aug 13 09:24:17 2007 +0200 @@ -25,7 +25,7 @@ (defconst emacs-version "20.1" "Version numbers of this version of Emacs.") -(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (beta10)"))) +(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (beta11)"))) (defconst emacs-major-version (progn (or (string-match "^[0-9]+" emacs-version) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/Makefile --- a/lisp/vm/Makefile Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/Makefile Mon Aug 13 09:24:17 2007 +0200 @@ -72,7 +72,7 @@ vm: vm.elc -vm.elc: noautoload +vm.elc: autoload noautoload: $(OBJECTS) tapestry.elc @echo "building vm.elc (with all modules included)..." diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-autoload.el --- a/lisp/vm/vm-autoload.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-autoload.el Mon Aug 13 09:24:17 2007 +0200 @@ -597,6 +597,8 @@ (autoload (quote vm-start-itimers-if-needed) "vm-folder" nil nil nil) +(autoload (quote vm-timer-using) "vm-folder" nil nil nil) + (autoload (quote vm-check-mail-itimer-function) "vm-folder" nil nil nil) (autoload (quote vm-get-mail-itimer-function) "vm-folder" nil nil nil) @@ -803,6 +805,8 @@ (autoload (quote vm-menu-popup-url-browser-menu) "vm-menu" nil t nil) +(autoload (quote vm-menu-popup-mailto-url-browser-menu) "vm-menu" nil t nil) + (autoload (quote vm-menu-popup-mime-dispose-menu) "vm-menu" nil t nil) (autoload (quote vm-menu-popup-content-disposition-menu) "vm-menu" nil t nil) @@ -1179,8 +1183,6 @@ (autoload (quote vm-reencode-mime-encoded-words-in-string) "vm-mime" nil nil nil) -(autoload (quote vm-mime-parse-content-header) "vm-mime" nil nil nil) - (autoload (quote vm-mime-get-header-contents) "vm-mime" nil nil nil) (autoload (quote vm-mime-parse-entity) "vm-mime" nil nil nil) @@ -1273,6 +1275,8 @@ (autoload (quote vm-mime-display-internal-multipart/digest) "vm-mime" nil nil nil) +(autoload (quote vm-mime-display-button-message/rfc822) "vm-mime" nil nil nil) + (autoload (quote vm-mime-display-internal-message/rfc822) "vm-mime" nil nil nil) (autoload (quote vm-mime-display-internal-message/partial) "vm-mime" nil nil nil) @@ -1394,10 +1398,14 @@ (autoload (quote vm-mime-transfer-encode-layout) "vm-mime" nil nil nil) -(autoload (quote vm-mime-encode-composition) "vm-mime" "MIME encode the current buffer. +(autoload (quote vm-mime-encode-composition) "vm-mime" "MIME encode the current mail composition buffer. Attachment tags added to the buffer with vm-mime-attach-file are expanded and the approriate content-type and boundary markup information is added." t nil) +(autoload (quote vm-mime-xemacs-encode-composition) "vm-mime" nil nil nil) + +(autoload (quote vm-mime-fsfemacs-encode-composition) "vm-mime" nil nil nil) + (autoload (quote vm-mime-fragment-composition) "vm-mime" nil nil nil) (autoload (quote vm-mime-preview-composition) "vm-mime" "Show how the current composition buffer might be displayed @@ -1473,6 +1481,8 @@ (autoload (quote vm-parse-addresses) "vm-misc" nil nil nil) +(autoload (quote vm-parse-structured-header) "vm-misc" nil nil nil) + (autoload (quote vm-write-string) "vm-misc" nil nil nil) (autoload (quote vm-marker) "vm-misc" nil nil t) @@ -2192,7 +2202,7 @@ (autoload (quote vm-mode) "vm-startup" "Major mode for reading mail. -This is VM 6.22. +This is VM 6.23. Commands: h - summarize folder contents diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-digest.el --- a/lisp/vm/vm-digest.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-digest.el Mon Aug 13 09:24:17 2007 +0200 @@ -411,12 +411,7 @@ folder-type after-prev-sep (match-beginning 0)) - (store-match-data md))) - ;; eat preceding newlines - (while (= (preceding-char) ?\n) - (delete-char -1)) - ;; put one back - (insert ?\n))) + (store-match-data md))))) ;; there should be at least one valid header at ;; the beginning of an encapsulated message. If ;; there isn't a valid header, then assume that @@ -432,12 +427,17 @@ nil t)))))) (setq prev-sep (point) after-prev-sep (point)) + ;; eat preceding newlines + (while (= (preceding-char) ?\n) + (delete-char -1)) + ;; put one back + (insert ?\n) + ;; delete the digest separator ;; insert a trailing message separator - ;; delete the digest separator ;; insert the leading separator (if prev-sep (progn - (delete-region (match-beginning 0) (match-end 0)) + (delete-region (match-beginning 0) (point)) (insert (vm-trailing-message-separator folder-type)))) (setq prev-sep (point)) (insert (vm-leading-message-separator folder-type)) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-folder.el --- a/lisp/vm/vm-folder.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-folder.el Mon Aug 13 09:24:17 2007 +0200 @@ -2173,17 +2173,20 @@ (error nil)) (let (timer) (and (natnump vm-flush-interval) + (not (vm-timer-using 'vm-flush-itimer-function)) (setq timer (run-at-time vm-flush-interval vm-flush-interval 'vm-flush-itimer-function nil)) (timer-set-function timer 'vm-flush-itimer-function (list timer))) (and (natnump vm-mail-check-interval) + (not (vm-timer-using 'vm-check-mail-itimer-function)) (setq timer (run-at-time vm-mail-check-interval vm-mail-check-interval 'vm-check-mail-itimer-function nil)) (timer-set-function timer 'vm-check-mail-itimer-function (list timer))) (and (natnump vm-auto-get-new-mail) + (not (vm-timer-using 'vm-get-mail-itimer-function)) (setq timer (run-at-time vm-auto-get-new-mail vm-auto-get-new-mail 'vm-get-mail-itimer-function nil)) @@ -2193,6 +2196,15 @@ (setq vm-flush-interval t vm-auto-get-new-mail t)))) +(defun vm-timer-using (fun) + (let ((p timer-list) + (done nil)) + (while (and p (not done)) + (if (eq (aref (car p) 5) fun) + (setq done t) + (setq p (cdr p)))) + p )) + ;; support for vm-mail-check-interval ;; if timer argument is present, this means we're using the Emacs ;; 'timer package rather than the 'itimer package. diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-menu.el --- a/lisp/vm/vm-menu.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-menu.el Mon Aug 13 09:24:17 2007 +0200 @@ -431,6 +431,17 @@ 'vm-mouse-send-url-to-netscape) t])))) +(defconst vm-menu-mailto-url-browser-menu + (let ((title (if (vm-menu-fsfemacs-menus-p) + (list "Send Mail using ..." + "Send Mail using ..." + "---" + "---") + (list "Send Mail using ...")))) + (append + title + (list ["VM" (vm-mouse-send-url-at-position (point) 'ignore) t])))) + (defconst vm-menu-subject-menu (let ((title (if (vm-menu-fsfemacs-menus-p) (list "Take Action on Subject..." @@ -665,6 +676,10 @@ ;; url browser menu (vm-easy-menu-define vm-menu-fsfemacs-url-browser-menu (list dummy) nil vm-menu-url-browser-menu) + ;; mailto url browser menu + (vm-easy-menu-define vm-menu-fsfemacs-mailto-url-browser-menu + (list dummy) nil + vm-menu-url-browser-menu) ;; mime dispose menu (vm-easy-menu-define vm-menu-fsfemacs-mime-dispose-menu (list dummy) nil @@ -802,6 +817,7 @@ ;; to quiet the byte-compiler (defvar vm-menu-fsfemacs-url-browser-menu) +(defvar vm-menu-fsfemacs-mailto-url-browser-menu) (defvar vm-menu-fsfemacs-mime-dispose-menu) (defun vm-menu-goto-event (event) @@ -825,6 +841,15 @@ (vm-menu-popup-fsfemacs-menu event vm-menu-fsfemacs-url-browser-menu)))) +(defun vm-menu-popup-mailto-url-browser-menu (event) + (interactive "e") + (vm-menu-goto-event event) + (cond ((and (vm-menu-xemacs-menus-p) vm-use-menus) + (popup-menu vm-menu-mailto-url-browser-menu)) + ((and (vm-menu-fsfemacs-menus-p) vm-use-menus) + (vm-menu-popup-fsfemacs-menu + event vm-menu-fsfemacs-mailto-url-browser-menu)))) + (defun vm-menu-popup-mime-dispose-menu (event) (interactive "e") (vm-menu-goto-event event) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-mime.el --- a/lisp/vm/vm-mime.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-mime.el Mon Aug 13 09:24:17 2007 +0200 @@ -344,7 +344,7 @@ ((looking-at "\n") ; soft line break (forward-char)) ((looking-at "\r") - ;; assume the user's goatfucking + ;; assume the user's goatloving ;; delivery software didn't convert ;; from Internet's CRLF newline ;; convention to the local LF @@ -526,85 +526,7 @@ (vm-with-string-as-temp-buffer string 'vm-reencode-mime-encoded-words) string )) -(defun vm-mime-parse-content-header (string &optional sepchar keep-quotes) - (if (null string) - () - (let ((work-buffer nil)) - (save-excursion - (unwind-protect - (let ((list nil) - (nonspecials "^\"\\( \t\n\r\f") - start s char sp+sepchar) - (if sepchar - (setq nonspecials (concat nonspecials (list sepchar)) - sp+sepchar (concat "\t\f\n\r " (list sepchar)))) - (setq work-buffer (generate-new-buffer "*vm-work*")) - (buffer-disable-undo work-buffer) - (set-buffer work-buffer) - (insert string) - (goto-char (point-min)) - (skip-chars-forward "\t\f\n\r ") - (setq start (point)) - (while (not (eobp)) - (skip-chars-forward nonspecials) - (setq char (following-char)) - (cond ((looking-at "[ \t\n\r\f]") - (delete-char 1)) - ((= char ?\\) - (forward-char 1) - (if (not (eobp)) - (forward-char 1))) - ((and sepchar (= char sepchar)) - (setq s (buffer-substring start (point))) - (if (or (null (string-match "^[\t\f\n\r ]+$" s)) - (not (string= s ""))) - (setq list (cons s list))) - (skip-chars-forward sp+sepchar) - (setq start (point))) - ((looking-at " \t\n\r\f") - (skip-chars-forward " \t\n\r\f")) - ((= char ?\") - (let ((done nil)) - (if keep-quotes - (forward-char 1) - (delete-char 1)) - (while (not done) - (if (null (re-search-forward "[\\\"]" nil t)) - (setq done t) - (setq char (char-after (1- (point)))) - (cond ((char-equal char ?\\) - (delete-char -1) - (if (eobp) - (setq done t) - (forward-char 1))) - (t (if (not keep-quotes) - (delete-char -1)) - (setq done t))))))) - ((= char ?\() - (let ((done nil) - (pos (point)) - (parens 1)) - (forward-char 1) - (while (not done) - (if (null (re-search-forward "[\\()]" nil t)) - (setq done t) - (setq char (char-after (1- (point)))) - (cond ((char-equal char ?\\) - (if (eobp) - (setq done t) - (forward-char 1))) - ((char-equal char ?\() - (setq parens (1+ parens))) - (t - (setq parens (1- parens) - done (zerop parens)))))) - (delete-region pos (point)))))) - (setq s (buffer-substring start (point))) - (if (and (null (string-match "^[\t\f\n\r ]+$" s)) - (not (string= s ""))) - (setq list (cons s list))) - (nreverse list)) - (and work-buffer (kill-buffer work-buffer))))))) +(fset 'vm-mime-parse-content-header 'vm-parse-structured-header) (defun vm-mime-get-header-contents (header-name-regexp) (let ((contents nil) @@ -1587,20 +1509,25 @@ (fset 'vm-mime-display-button-multipart/digest 'vm-mime-display-internal-multipart/digest) +(defun vm-mime-display-button-message/rfc822 (layout) + (let ((buffer-read-only nil)) + (vm-mime-insert-button + (format "%-35.35s [%s to display]" + (vm-mime-layout-description layout) + (if (vm-mouse-support-possible-p) + "Click mouse-2" + "Press RETURN")) + (function + (lambda (layout) + (save-excursion + (vm-mime-display-internal-message/rfc822 layout)))) + layout nil))) +(fset 'vm-mime-display-button-message/news + 'vm-mime-display-button-message/rfc822) + (defun vm-mime-display-internal-message/rfc822 (layout) (if (vectorp layout) - (let ((buffer-read-only nil)) - (vm-mime-insert-button - (format "%-35.35s [%s to display]" - (vm-mime-layout-description layout) - (if (vm-mouse-support-possible-p) - "Click mouse-2" - "Press RETURN")) - (function - (lambda (layout) - (save-excursion - (vm-mime-display-internal-message/rfc822 layout)))) - layout nil)) + (vm-mime-display-internal-text/plain layout) (goto-char (vm-extent-start-position layout)) (setq layout (vm-extent-property layout 'vm-mime-layout)) (set-buffer (generate-new-buffer @@ -1619,8 +1546,6 @@ (vm-display (or vm-presentation-buffer (current-buffer)) t (list this-command) '(vm-mode startup))) t ) -(fset 'vm-mime-display-button-message/rfc822 - 'vm-mime-display-internal-message/rfc822) (fset 'vm-mime-display-internal-message/news 'vm-mime-display-internal-message/rfc822) @@ -1877,40 +1802,34 @@ (defun vm-mime-set-extent-glyph-for-layout (e layout) (if (and (vm-xemacs-p) (fboundp 'make-glyph) - (eq (device-type) 'x) (> (device-bitplanes) 15)) + (eq (device-type) 'x) (> (device-bitplanes) 7)) (let ((type (car (vm-mm-layout-type layout))) (dir vm-image-directory) - glyph) - (setq glyph - (cond ((vm-mime-types-match "text" type) - (make-glyph (vector - 'xpm ':file - (expand-file-name "document.xpm" dir)))) - ((vm-mime-types-match "image" type) - (make-glyph (vector - 'gif ':file - (expand-file-name "mona_stamp.gif" dir)))) - ((vm-mime-types-match "audio" type) - (make-glyph (vector - 'xpm ':file - (expand-file-name "audio_stamp.xpm" dir)))) - ((vm-mime-types-match "video" type) - (make-glyph (vector - 'xpm ':file - (expand-file-name "film.xpm" dir)))) - ((vm-mime-types-match "message" type) - (make-glyph (vector - 'xpm ':file - (expand-file-name "message.xpm" dir)))) - ((vm-mime-types-match "application" type) - (make-glyph (vector - 'xpm ':file - (expand-file-name "gear.xpm" dir)))) - ((vm-mime-types-match "multipart" type) - (make-glyph (vector - 'xpm ':file - (expand-file-name "stuffed_box.xpm" dir)))) - (t nil))) + (colorful (> (device-bitplanes) 15)) + (tuples + '(("text" "document-simple.xpm" "document-colorful.xpm") + ("image" "mona_stamp-simple.xpm" "mona_stamp-colorful.xpm") + ("audio" "audio_stamp-simple.xpm" "audio_stamp-colorful.xpm") + ("video" "film-simple.xpm" "film-colorful.xpm") + ("message" "message-simple.xpm" "message-colorful.xpm") + ("application" "gear-simple.xpm" "gear-colorful.xpm") + ("multipart" "stuffed_box-simple.xpm" + "stuffed_box-colorful.xpm"))) + glyph file sym p) + (setq file (catch 'done + (while tuples + (if (vm-mime-types-match (car (car tuples)) type) + (throw 'done (car tuples)) + (setq tuples (cdr tuples)))) + nil) + file (and file (if colorful (nth 1 file) (nth 2 file))) + sym (and file (intern file vm-image-obarray)) + glyph (and sym (boundp sym) (symbol-value sym)) + glyph (or glyph (not file) + (make-glyph + (vector 'autodetect + ':data (expand-file-name file dir))))) + (and sym (not (boundp sym)) (set sym glyph)) (and glyph (set-extent-begin-glyph e glyph))))) (defun vm-mime-insert-button (caption action layout disposable) @@ -2350,19 +2269,19 @@ (setq e (make-extent start end)) (set-extent-property e 'start-open t) (set-extent-property e 'face vm-mime-button-face) - (vm-set-extent-property e 'duplicable t) + (set-extent-property e 'duplicable t) (let ((keymap (make-sparse-keymap))) (if vm-popup-menu-on-mouse-3 (define-key keymap 'button3 'vm-menu-popup-content-disposition-menu)) - (vm-set-extent-property e 'keymap keymap) + (set-extent-property e 'keymap keymap) (set-extent-property e 'balloon-help 'vm-mouse-3-help)) - (vm-set-extent-property e 'vm-mime-type type) - (vm-set-extent-property e 'vm-mime-object object) - (vm-set-extent-property e 'vm-mime-parameters params) - (vm-set-extent-property e 'vm-mime-description description) - (vm-set-extent-property e 'vm-mime-disposition disposition) - (vm-set-extent-property e 'vm-mime-encoded mimed))))) + (set-extent-property e 'vm-mime-type type) + (set-extent-property e 'vm-mime-object object) + (set-extent-property e 'vm-mime-parameters params) + (set-extent-property e 'vm-mime-description description) + (set-extent-property e 'vm-mime-disposition disposition) + (set-extent-property e 'vm-mime-encoded mimed))))) (defun vm-mime-attachment-disposition-at-point () (cond ((vm-fsfemacs-19-p) @@ -2477,10 +2396,21 @@ nil))) (defun vm-mime-encode-composition () - "MIME encode the current buffer. + "MIME encode the current mail composition buffer. Attachment tags added to the buffer with vm-mime-attach-file are expanded and the approriate content-type and boundary markup information is added." (interactive) + (cond ((vm-xemacs-mule-p) + (vm-mime-xemacs-encode-composition)) + ((vm-xemacs-p) + (vm-mime-xemacs-encode-composition)) + ((vm-fsfemacs-19-p) + (vm-mime-fsfemacs-encode-composition)) + (t + (error "don't know how to MIME encode composition for %s" + (emacs-version))))) + +(defun vm-mime-xemacs-encode-composition () (save-restriction (widen) (if (not (eq major-mode 'mail-mode)) @@ -2494,17 +2424,15 @@ type encoding charset params description disposition object opoint-min) (mail-text) - (setq e-list (if (fboundp 'extent-list) - (extent-list nil (point) (point-max)) - (vm-mime-fake-attachment-overlays (point) (point-max))) + (setq e-list (extent-list nil (point) (point-max)) e-list (vm-delete (function (lambda (e) - (vm-extent-property e 'vm-mime-object))) + (extent-property e 'vm-mime-object))) e-list t) e-list (sort e-list (function (lambda (e1 e2) - (< (vm-extent-end-position e1) - (vm-extent-end-position e2)))))) + (< (extent-end-position e1) + (extent-end-position e2)))))) ;; If there's just one attachment and no other readable ;; text in the buffer then make the message type just be ;; the attachment type rather than sending a multipart @@ -2512,9 +2440,9 @@ (setq just-one (and (= (length e-list) 1) (looking-at "[ \t\n]*") (= (match-end 0) - (vm-extent-start-position (car e-list))) + (extent-start-position (car e-list))) (save-excursion - (goto-char (vm-extent-end-position (car e-list))) + (goto-char (extent-end-position (car e-list))) (looking-at "[ \t\n]*\\'")))) (if (null e-list) (progn @@ -2542,9 +2470,9 @@ (vm-add-mail-mode-header-separator)) (while e-list (setq e (car e-list)) - (if (or just-one (= (point) (vm-extent-start-position e))) + (if (or just-one (= (point) (extent-start-position e))) nil - (narrow-to-region (point) (vm-extent-start-position e)) + (narrow-to-region (point) (extent-start-position e)) (setq charset (vm-determine-proper-charset (point-min) (point-max))) (setq encoding (vm-determine-proper-content-transfer-encoding @@ -2558,58 +2486,40 @@ (insert "Content-Type: text/plain; charset=" charset "\n") (insert "Content-Transfer-Encoding: " encoding "\n\n") (widen)) - (goto-char (vm-extent-start-position e)) + (goto-char (extent-start-position e)) (narrow-to-region (point) (point)) - (setq object (vm-extent-property e 'vm-mime-object)) + (setq object (extent-property e 'vm-mime-object)) ;; insert the object (cond ((bufferp object) - (if (vm-xemacs-p) - (insert-buffer-substring object) - ;; as of FSF Emacs 19.34, even with the hooks - ;; we've attached to the attachment overlays, - ;; text STILL can be inserted into them when - ;; font-lock is enabled. Explaining why is - ;; beyond the scope of this comment and I - ;; don't know the answer anyway. This works - ;; to prevent it. - (insert-before-markers " ") - (forward-char -1) - (insert-buffer-substring object) - (delete-char 1))) + (insert-buffer-substring object)) ((stringp object) (let ((coding-system-for-read 'no-conversion)) - (if (vm-xemacs-p) - (insert-file-contents-literally object) - (insert-before-markers " ") - (forward-char -1) - (insert-file-contents-literally object) - (goto-char (point-max)) - (delete-char -1))))) + (insert-file-contents-literally object)))) ;; gather information about the object from the extent. - (if (setq already-mimed (vm-extent-property e 'vm-mime-encoded)) + (if (setq already-mimed (extent-property e 'vm-mime-encoded)) (setq layout (vm-mime-parse-entity nil (list "text/plain" "charset=us-ascii") "7bit") - type (or (vm-extent-property e 'vm-mime-type) + type (or (extent-property e 'vm-mime-type) (car (vm-mm-layout-type layout))) - params (or (vm-extent-property e 'vm-mime-parameters) + params (or (extent-property e 'vm-mime-parameters) (cdr (vm-mm-layout-qtype layout))) - description (vm-extent-property e 'vm-mime-description) + description (extent-property e 'vm-mime-description) disposition (if (not (equal - (car (vm-extent-property e 'vm-mime-disposition)) + (car (extent-property e 'vm-mime-disposition)) "unspecified")) - (vm-extent-property e 'vm-mime-disposition) + (extent-property e 'vm-mime-disposition) (vm-mm-layout-qdisposition layout))) - (setq type (vm-extent-property e 'vm-mime-type) - params (vm-extent-property e 'vm-mime-parameters) - description (vm-extent-property e 'vm-mime-description) + (setq type (extent-property e 'vm-mime-type) + params (extent-property e 'vm-mime-parameters) + description (extent-property e 'vm-mime-description) disposition (if (not (equal - (car (vm-extent-property e 'vm-mime-disposition)) + (car (extent-property e 'vm-mime-disposition)) "unspecified")) - (vm-extent-property e 'vm-mime-disposition) + (extent-property e 'vm-mime-disposition) nil))) (cond ((vm-mime-types-match "text" type) (setq encoding @@ -2709,11 +2619,11 @@ (goto-char (point-max)) (widen) (save-excursion - (goto-char (vm-extent-start-position e)) + (goto-char (extent-start-position e)) (vm-assert (looking-at "\\[ATTACHMENT"))) - (delete-region (vm-extent-start-position e) - (vm-extent-end-position e)) - (vm-detach-extent e) + (delete-region (extent-start-position e) + (extent-end-position e)) + (detach-extent e) (if (looking-at "\n") (delete-char 1)) (setq e-list (cdr e-list))) @@ -2802,6 +2712,321 @@ (insert "Content-Transfer-Encoding: 8bit\n") (insert "Content-Transfer-Encoding: 7bit\n"))))))) +(defun vm-mime-fsfemacs-encode-composition () + (save-restriction + (widen) + (if (not (eq major-mode 'mail-mode)) + (error "Command must be used in a VM Mail mode buffer.")) + (or (null (vm-mail-mode-get-header-contents "MIME-Version:")) + (error "Message is already MIME encoded.")) + (let ((8bit nil) + (just-one nil) + (boundary-positions nil) + already-mimed layout o o-list boundary + type encoding charset params description disposition object + opoint-min) + (mail-text) + (setq o-list (vm-mime-fake-attachment-overlays (point) (point-max)) + o-list (vm-delete (function + (lambda (o) + (overlay-get o 'vm-mime-object))) + o-list t) + o-list (sort o-list (function + (lambda (e1 e2) + (< (overlay-end e1) + (overlay-end e2)))))) + ;; If there's just one attachment and no other readable + ;; text in the buffer then make the message type just be + ;; the attachment type rather than sending a multipart + ;; message with one attachment + (setq just-one (and (= (length o-list) 1) + (looking-at "[ \t\n]*") + (= (match-end 0) + (overlay-start (car o-list))) + (save-excursion + (goto-char (overlay-end (car o-list))) + (looking-at "[ \t\n]*\\'")))) + (if (null o-list) + (progn + (narrow-to-region (point) (point-max)) + (setq charset (vm-determine-proper-charset (point-min) + (point-max))) + (if (vm-xemacs-mule-p) + (encode-coding-region (point-min) (point-max) + file-coding-system)) + (setq encoding (vm-determine-proper-content-transfer-encoding + (point-min) + (point-max)) + encoding (vm-mime-transfer-encode-region encoding + (point-min) + (point-max) + t)) + (widen) + (vm-remove-mail-mode-header-separator) + (goto-char (point-min)) + (vm-reorder-message-headers + nil nil "\\(Content-Type:\\|Content-Transfer-Encoding\\|MIME-Version:\\)") + (insert "MIME-Version: 1.0\n") + (insert "Content-Type: text/plain; charset=" charset "\n") + (insert "Content-Transfer-Encoding: " encoding "\n") + (vm-add-mail-mode-header-separator)) + (while o-list + (setq o (car o-list)) + (if (or just-one (= (point) (overlay-start o))) + nil + (narrow-to-region (point) (overlay-start o)) + (setq charset (vm-determine-proper-charset (point-min) + (point-max))) + (setq encoding (vm-determine-proper-content-transfer-encoding + (point-min) + (point-max)) + encoding (vm-mime-transfer-encode-region encoding + (point-min) + (point-max) + t)) + (setq boundary-positions (cons (point-marker) boundary-positions)) + (insert "Content-Type: text/plain; charset=" charset "\n") + (insert "Content-Transfer-Encoding: " encoding "\n\n") + (widen)) + (goto-char (overlay-start o)) + (narrow-to-region (point) (point)) + (setq object (overlay-get o 'vm-mime-object)) + ;; insert the object + (cond ((bufferp object) + ;; as of FSF Emacs 19.34, even with the hooks + ;; we've attached to the attachment overlays, + ;; text STILL can be inserted into them when + ;; font-lock is enabled. Explaining why is + ;; beyond the scope of this comment and I + ;; don't know the answer anyway. This works + ;; to prevent it. + (insert-before-markers " ") + (forward-char -1) + (insert-buffer-substring object) + (delete-char 1)) + ((stringp object) + (insert-before-markers " ") + (forward-char -1) + (insert-file-contents object) + (goto-char (point-max)) + (delete-char -1))) + ;; gather information about the object from the extent. + (if (setq already-mimed (overlay-get o 'vm-mime-encoded)) + (setq layout (vm-mime-parse-entity + nil (list "text/plain" "charset=us-ascii") + "7bit") + type (or (overlay-get o 'vm-mime-type) + (car (vm-mm-layout-type layout))) + params (or (overlay-get o 'vm-mime-parameters) + (cdr (vm-mm-layout-qtype layout))) + description (overlay-get o 'vm-mime-description) + disposition + (if (not + (equal + (car (overlay-get o 'vm-mime-disposition)) + "unspecified")) + (overlay-get o 'vm-mime-disposition) + (vm-mm-layout-qdisposition layout))) + (setq type (overlay-get o 'vm-mime-type) + params (overlay-get o 'vm-mime-parameters) + description (overlay-get o 'vm-mime-description) + disposition + (if (not (equal + (car (overlay-get o 'vm-mime-disposition)) + "unspecified")) + (overlay-get o 'vm-mime-disposition) + nil))) + (cond ((vm-mime-types-match "text" type) + (setq encoding + (vm-determine-proper-content-transfer-encoding + (if already-mimed + (vm-mm-layout-body-start layout) + (point-min)) + (point-max)) + encoding (vm-mime-transfer-encode-region + encoding + (if already-mimed + (vm-mm-layout-body-start layout) + (point-min)) + (point-max) + t)) + (setq 8bit (or 8bit (equal encoding "8bit")))) + ((or (vm-mime-types-match "message/rfc822" type) + (vm-mime-types-match "message/news" type) + (vm-mime-types-match "multipart" type)) + (setq opoint-min (point-min)) + (if (not already-mimed) + (setq layout (vm-mime-parse-entity + nil (list "text/plain" "charset=us-ascii") + "7bit"))) + ;; MIME messages of type "message" and + ;; "multipart" are required to have a non-opaque + ;; content transfer encoding. This means that + ;; if the user only wants to send out 7bit data, + ;; then any subpart that contains 8bit data must + ;; have an opaque (qp or base64) 8->7bit + ;; conversion performed on it so that the + ;; enclosing entity can use an non-opqaue + ;; encoding. + ;; + ;; message/partial requires a "7bit" encoding so + ;; force 8->7 conversion in that case. + (let ((vm-mime-8bit-text-transfer-encoding + (if (vm-mime-types-match "message/partial" type) + 'quoted-printable + vm-mime-8bit-text-transfer-encoding))) + (vm-mime-map-atomic-layouts 'vm-mime-transfer-encode-layout + (vm-mm-layout-parts layout))) + ;; now figure out a proper content trasnfer + ;; encoding value for the enclosing entity. + (re-search-forward "^\n" nil t) + (save-restriction + (narrow-to-region (point) (point-max)) + (setq encoding + (vm-determine-proper-content-transfer-encoding + (point-min) + (point-max)))) + (setq 8bit (or 8bit (equal encoding "8bit"))) + (goto-char (point-max)) + (widen) + (narrow-to-region opoint-min (point))) + (t + (vm-mime-base64-encode-region + (if already-mimed + (vm-mm-layout-body-start layout) + (point-min)) + (point-max)) + (setq encoding "base64"))) + (if just-one + nil + (goto-char (point-min)) + (setq boundary-positions (cons (point-marker) boundary-positions)) + (if (not already-mimed) + nil + ;; trim headers + (vm-reorder-message-headers + nil (nconc (list "Content-Disposition:" "Content-ID:") + (if description + (list "Content-Description:") + nil)) + nil) + ;; remove header/text separator + (goto-char (1- (vm-mm-layout-body-start layout))) + (if (looking-at "\n") + (delete-char 1))) + (insert "Content-Type: " type) + (if params + (if vm-mime-avoid-folding-content-type + (insert "; " (mapconcat 'identity params "; ") "\n") + (insert ";\n\t" (mapconcat 'identity params ";\n\t") "\n")) + (insert "\n")) + (and description + (insert "Content-Description: " description "\n")) + (if disposition + (progn + (insert "Content-Disposition: " (car disposition)) + (if (cdr disposition) + (insert ";\n\t" (mapconcat 'identity + (cdr disposition) + ";\n\t"))) + (insert "\n"))) + (insert "Content-Transfer-Encoding: " encoding "\n\n")) + (goto-char (point-max)) + (widen) + (save-excursion + (goto-char (overlay-start o)) + (vm-assert (looking-at "\\[ATTACHMENT"))) + (delete-region (overlay-start o) + (overlay-end o)) + (delete-overlay o) + (if (looking-at "\n") + (delete-char 1)) + (setq o-list (cdr o-list))) + ;; handle the remaining chunk of text after the last + ;; extent, if any. + (if (or just-one (= (point) (point-max))) + nil + (setq charset (vm-determine-proper-charset (point) + (point-max))) + (if (vm-xemacs-mule-p) + (encode-coding-region (point-min) (point-max) + file-coding-system)) + (setq encoding (vm-determine-proper-content-transfer-encoding + (point) + (point-max)) + encoding (vm-mime-transfer-encode-region encoding + (point) + (point-max) + t)) + (setq 8bit (or 8bit (equal encoding "8bit"))) + (setq boundary-positions (cons (point-marker) boundary-positions)) + (insert "Content-Type: text/plain; charset=" charset "\n") + (insert "Content-Transfer-Encoding: " encoding "\n\n") + (goto-char (point-max))) + (setq boundary (vm-mime-make-multipart-boundary)) + (mail-text) + (while (re-search-forward (concat "^--" + (regexp-quote boundary) + "\\(--\\)?$") + nil t) + (setq boundary (vm-mime-make-multipart-boundary)) + (mail-text)) + (goto-char (point-max)) + (or just-one (insert "\n--" boundary "--\n")) + (while boundary-positions + (goto-char (car boundary-positions)) + (insert "\n--" boundary "\n") + (setq boundary-positions (cdr boundary-positions))) + (if (and just-one already-mimed) + (progn + (goto-char (vm-mm-layout-header-start layout)) + ;; trim headers + (vm-reorder-message-headers + nil '("Content-Description:" "Content-ID:") nil) + ;; remove header/text separator + (goto-char (1- (vm-mm-layout-body-start layout))) + (if (looking-at "\n") + (delete-char 1)) + ;; copy remainder to enclosing entity's header section + (insert-buffer-substring (current-buffer) + (vm-mm-layout-header-start layout) + (vm-mm-layout-body-start layout)) + (delete-region (vm-mm-layout-header-start layout) + (vm-mm-layout-body-start layout)))) + (goto-char (point-min)) + (vm-remove-mail-mode-header-separator) + (vm-reorder-message-headers + nil nil "\\(Content-Type:\\|MIME-Version:\\|Content-Transfer-Encoding\\)") + (vm-add-mail-mode-header-separator) + (insert "MIME-Version: 1.0\n") + (if (not just-one) + (insert (if vm-mime-avoid-folding-content-type + "Content-Type: multipart/mixed; boundary=\"" + "Content-Type: multipart/mixed;\n\tboundary=\"") + boundary "\"\n") + (insert "Content-Type: " type) + (if params + (if vm-mime-avoid-folding-content-type + (insert "; " (mapconcat 'identity params "; ") "\n") + (insert ";\n\t" (mapconcat 'identity params ";\n\t")))) + (insert "\n")) + (if just-one + (and description + (insert "Content-Description: " description "\n"))) + (if (and just-one disposition) + (progn + (insert "Content-Disposition: " (car disposition)) + (if (cdr disposition) + (insert ";\n\t" (mapconcat 'identity + (cdr disposition) + ";\n\t"))) + (insert "\n"))) + (if just-one + (insert "Content-Transfer-Encoding: " encoding "\n") + (if 8bit + (insert "Content-Transfer-Encoding: 8bit\n") + (insert "Content-Transfer-Encoding: 7bit\n"))))))) + (defun vm-mime-fragment-composition (size) (save-restriction (widen) @@ -2816,7 +3041,7 @@ ;; encoding, so verify that everything has been encoded for ;; 7bit transmission. (let ((vm-mime-8bit-text-transfer-encoding - (if (eq vm-mime-8bit-text-transfer-encoding 'send) + (if (eq vm-mime-8bit-text-transfer-encoding '8bit) 'quoted-printable vm-mime-8bit-text-transfer-encoding))) (vm-mime-map-atomic-layouts @@ -2865,6 +3090,7 @@ (vm-increment n) (set-buffer master-buffer) (setq start (point))) + (vm-add-mail-mode-header-separator) (message "Fragmenting message... done") (nreverse buffers)))) @@ -2887,6 +3113,7 @@ ;; so vm-mime-encode-composition won't complain (setq major-mode 'mail-mode) (vm-insert-region-from-buffer mail-buffer) + (vm-remove-mail-mode-header-separator) (goto-char (point-min)) (or (vm-mail-mode-get-header-contents "From") (insert "From: " (user-login-name) "\n")) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-misc.el --- a/lisp/vm/vm-misc.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-misc.el Mon Aug 13 09:24:17 2007 +0200 @@ -92,6 +92,86 @@ (nreverse list)) ; jwz: fixed order (and work-buffer (kill-buffer work-buffer))))))) +(defun vm-parse-structured-header (string &optional sepchar keep-quotes) + (if (null string) + () + (let ((work-buffer nil)) + (save-excursion + (unwind-protect + (let ((list nil) + (nonspecials "^\"\\( \t\n\r\f") + start s char sp+sepchar) + (if sepchar + (setq nonspecials (concat nonspecials (list sepchar)) + sp+sepchar (concat "\t\f\n\r " (list sepchar)))) + (setq work-buffer (generate-new-buffer "*vm-work*")) + (buffer-disable-undo work-buffer) + (set-buffer work-buffer) + (insert string) + (goto-char (point-min)) + (skip-chars-forward "\t\f\n\r ") + (setq start (point)) + (while (not (eobp)) + (skip-chars-forward nonspecials) + (setq char (following-char)) + (cond ((looking-at "[ \t\n\r\f]") + (delete-char 1)) + ((= char ?\\) + (forward-char 1) + (if (not (eobp)) + (forward-char 1))) + ((and sepchar (= char sepchar)) + (setq s (buffer-substring start (point))) + (if (or (null (string-match "^[\t\f\n\r ]+$" s)) + (not (string= s ""))) + (setq list (cons s list))) + (skip-chars-forward sp+sepchar) + (setq start (point))) + ((looking-at " \t\n\r\f") + (skip-chars-forward " \t\n\r\f")) + ((= char ?\") + (let ((done nil)) + (if keep-quotes + (forward-char 1) + (delete-char 1)) + (while (not done) + (if (null (re-search-forward "[\\\"]" nil t)) + (setq done t) + (setq char (char-after (1- (point)))) + (cond ((char-equal char ?\\) + (delete-char -1) + (if (eobp) + (setq done t) + (forward-char 1))) + (t (if (not keep-quotes) + (delete-char -1)) + (setq done t))))))) + ((= char ?\() + (let ((done nil) + (pos (point)) + (parens 1)) + (forward-char 1) + (while (not done) + (if (null (re-search-forward "[\\()]" nil t)) + (setq done t) + (setq char (char-after (1- (point)))) + (cond ((char-equal char ?\\) + (if (eobp) + (setq done t) + (forward-char 1))) + ((char-equal char ?\() + (setq parens (1+ parens))) + (t + (setq parens (1- parens) + done (zerop parens)))))) + (delete-region pos (point)))))) + (setq s (buffer-substring start (point))) + (if (and (null (string-match "^[\t\f\n\r ]+$" s)) + (not (string= s ""))) + (setq list (cons s list))) + (nreverse list)) + (and work-buffer (kill-buffer work-buffer))))))) + (defun vm-write-string (where string) (if (bufferp where) (vm-save-buffer-excursion @@ -435,13 +515,15 @@ ;; save this work so we won't have to do it again (setq vm-sortable-date-alist (cons (cons string - (timezone-make-date-sortable - (format "%s %s %s %s %s" - (aref vect 1) - (aref vect 2) - (aref vect 3) - (aref vect 4) - (aref vect 5)))) + (condition-case nil + (timezone-make-date-sortable + (format "%s %s %s %s %s" + (aref vect 1) + (aref vect 2) + (aref vect 3) + (aref vect 4) + (aref vect 5))) + (error "1970010100:00:00"))) vm-sortable-date-alist)) ;; return result (cdr (car vm-sortable-date-alist))))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-page.el --- a/lisp/vm/vm-page.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-page.el Mon Aug 13 09:24:17 2007 +0200 @@ -282,10 +282,16 @@ (if vm-highlight-url-face (set-extent-property e 'face vm-highlight-url-face)) (if vm-url-browser - (let ((keymap (make-sparse-keymap))) + (let ((keymap (make-sparse-keymap)) + (popup-function + (if (save-excursion + (goto-char (match-beginning n)) + (looking-at "mailto:")) + 'vm-menu-popup-mailto-url-browser-menu + 'vm-menu-popup-url-browser-menu))) (define-key keymap 'button2 'vm-mouse-send-url-at-event) (if vm-popup-menu-on-mouse-3 - (define-key keymap 'button3 'vm-menu-popup-url-browser-menu)) + (define-key keymap 'button3 popup-function)) (define-key keymap "\r" (function (lambda () (interactive) (vm-mouse-send-url-at-position (point))))) @@ -318,9 +324,17 @@ (if vm-highlight-url-face (overlay-put o 'face vm-highlight-url-face)) (if vm-url-browser - (let ((keymap (make-sparse-keymap))) + (let ((keymap (make-sparse-keymap)) + (popup-function + (if (save-excursion + (goto-char (match-beginning n)) + (looking-at "mailto:")) + 'vm-menu-popup-mailto-url-browser-menu + 'vm-menu-popup-url-browser-menu))) (overlay-put o 'mouse-face 'highlight) (setq keymap (nconc keymap (current-local-map))) + (if vm-popup-menu-on-mouse-3 + (define-key keymap [mouse-3] popup-function)) (define-key keymap "\r" (function (lambda () (interactive) (vm-mouse-send-url-at-position (point))))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-sort.el --- a/lisp/vm/vm-sort.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-sort.el Mon Aug 13 09:24:17 2007 +0200 @@ -212,11 +212,13 @@ (progn (vm-set-sortable-datestring-of m - (timezone-make-date-sortable - (or (vm-get-header-contents m "Date:") - (vm-grok-From_-date m) - "Thu, 1 Jan 1970 00:00:00 GMT") - "GMT" "GMT")) + (condition-case nil + (timezone-make-date-sortable + (or (vm-get-header-contents m "Date:") + (vm-grok-From_-date m) + "Thu, 1 Jan 1970 00:00:00 GMT") + "GMT" "GMT") + (error "1970010100:00:00"))) (vm-sortable-datestring-of m)))) (defun vm-so-sortable-subject (m) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-startup.el --- a/lisp/vm/vm-startup.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-startup.el Mon Aug 13 09:24:17 2007 +0200 @@ -275,7 +275,7 @@ (defun vm-mode (&optional read-only) "Major mode for reading mail. -This is VM 6.22. +This is VM 6.23. Commands: h - summarize folder contents diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-summary.el --- a/lisp/vm/vm-summary.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-summary.el Mon Aug 13 09:24:17 2007 +0200 @@ -930,7 +930,8 @@ (or (vm-message-id-of m) (vm-set-message-id-of m - (or (vm-get-header-contents m "Message-Id:") + (or (let ((id (vm-get-header-contents m "Message-Id:"))) + (and id (car (vm-parse id "[^<]*\\(<[^>]+>\\)")))) ;; try running md5 on the message body to produce an ID ;; better than nothing. (save-excursion diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-toolbar.el --- a/lisp/vm/vm-toolbar.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-toolbar.el Mon Aug 13 09:24:17 2007 +0200 @@ -25,7 +25,7 @@ (vm-toolbar-any-messages-p) "Go to the next message.\n The command `vm-toolbar-next-command' is run, which is normally -bound to `vm-next-message'. +fbound to `vm-next-message'. You can make this button run some other command by using a Lisp s-expression like this one in your .vm file: (fset 'vm-toolbar-next-command 'some-other-command)"]) @@ -39,7 +39,7 @@ (vm-toolbar-any-messages-p) "Go to the previous message.\n The command `vm-toolbar-previous-command' is run, which is normally -bound to `vm-previous-message'. +fbound to `vm-previous-message'. You can make this button run some other command by using a Lisp s-expression like this one in your .vm file: (fset 'vm-toolbar-previous-command 'some-other-command)"]) @@ -58,7 +58,7 @@ [vm-toolbar-file-icon vm-toolbar-file-command (vm-toolbar-any-messages-p) "Save the current message to a folder.\n The command `vm-toolbar-file-command' is run, which is normally -bound to `vm-save-message'. +fbound to `vm-save-message'. You can make this button run some other command by using a Lisp s-expression like this one in your .vm file: (fset 'vm-toolbar-file-command 'some-other-command)"]) @@ -71,7 +71,7 @@ (vm-toolbar-mail-waiting-p) "Retrieve spooled mail for the current folder.\n The command `vm-toolbar-getmail-command' is run, which is normally -bound to `vm-get-new-mail'. +fbound to `vm-get-new-mail'. You can make this button run some other command by using a Lisp s-expression like this one in your .vm file: (fset 'vm-toolbar-getmail-command 'some-other-command)"]) @@ -85,7 +85,7 @@ (vm-toolbar-any-messages-p) "Print the current message.\n The command `vm-toolbar-print-command' is run, which is normally -bound to `vm-print-message'. +fbound to `vm-print-message'. You can make this button run some other command by using a Lisp s-expression like this one in your .vm file: (fset 'vm-toolbar-print-command 'some-other-command)"]) @@ -97,7 +97,7 @@ [vm-toolbar-visit-icon vm-toolbar-visit-command t "Visit a different folder.\n The command `vm-toolbar-visit-command' is run, which is normally -bound to `vm-visit-folder'. +fbound to `vm-visit-folder'. You can make this button run some other command by using a Lisp s-expression like this one in your .vm file: (fset 'vm-toolbar-visit-command 'some-other-command)"]) @@ -111,7 +111,7 @@ (vm-toolbar-any-messages-p) "Reply to the current message.\n The command `vm-toolbar-reply-command' is run, which is normally -bound to `vm-followup-include-text'. +fbound to `vm-followup-include-text'. You can make this button run some other command by using a Lisp s-expression like this one in your .vm file: (fset 'vm-toolbar-reply-command 'some-other-command)"]) @@ -123,7 +123,7 @@ [vm-toolbar-compose-icon vm-toolbar-compose-command t "Compose a new message.\n The command `vm-toolbar-compose-command' is run, which is normally -bound to `vm-mail'. +fbound to `vm-mail'. You can make this button run some other command by using a Lisp s-expression like this one in your .vm file: (fset 'vm-toolbar-compose-command 'some-other-command)"]) @@ -141,7 +141,7 @@ and vm-mime-external-content-types-alist to see how to control whether you see buttons or objects.\n The command `vm-toolbar-decode-mime-command' is run, which is normally -bound to `vm-decode-mime-messages'. +fbound to `vm-decode-mime-messages'. You can make this button run some other command by using a Lisp s-expression like this one in your .vm file: (fset 'vm-toolbar-decode-mime-command 'some-other-command)"]) @@ -190,7 +190,7 @@ (vm-toolbar-can-quit-p) "Quit visiting this folder.\n The command `vm-toolbar-quit-command' is run, which is normally -bound to `vm-quit'. +fbound to `vm-quit'. You can make this button run some other command by using a Lisp s-expression like this one in your .vm file: (fset 'vm-toolbar-quit-command 'some-other-command)"]) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-vars.el --- a/lisp/vm/vm-vars.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-vars.el Mon Aug 13 09:24:17 2007 +0200 @@ -415,7 +415,7 @@ A nil value means VM will not offer any support for composing MIME messages.") -(defvar vm-honor-mime-content-disposition nil +(defvar vm-honor-mime-content-disposition t "*Non-nil value means use information from the Content-Disposition header to display MIME messages. The Content-Disposition header specifies whether a MIME object should be displayed inline or @@ -450,11 +450,11 @@ Note that some types are processed specially, and this variable does not apply to them. - Multipart/Digest and Message/RFC822 messages are always - displayed as a button to avoid visiting a new folder while the - user is moving around in the current folder. - - Message/Partial messages are always displayed as a button, + multipart/digest, message/news and message/rfc822 messages are + always displayed as a button to avoid automatically visiting a + new folder while you are moving around in the current folder. + + message/partial messages are always displayed as a button, because there always needs to be a way to trigger the assembly of the parts into a full message. @@ -594,7 +594,7 @@ e.g. X windows. So this variable will have no effect if you're running Emacs on a tty. -Note that under FSF Emacs any fonts you use must be the same size +Note that under FSF Emacs any fonts you use must be the same height as your default font. XEmacs does not have this limitation.") (defvar vm-mime-button-face 'gui-button-face @@ -610,7 +610,7 @@ This variable is unused in XEmacs/MULE. Since multiple character sets can be displayed in a single buffer under MULE, VM will map the file coding system of the buffer to a single MIME character -that can display all the buffer's characters.") +set that can display all the buffer's characters.") (defvar vm-mime-8bit-text-transfer-encoding 'quoted-printable "*Symbol specifying what kind of transfer encoding to use on 8bit @@ -2307,7 +2307,10 @@ (defvar vm-mosaic-program-switches nil "*List of command line switches to pass to Mosaic.") -(defvar vm-temp-file-directory "/tmp" +(defvar vm-temp-file-directory + (or (and (file-directory-p "/tmp") "/tmp") + (and (file-directory-p "C:\\") "C:\\") + "/tmp") "*Name of a directory where VM can put temporary files. This name must not end with a slash.") @@ -2433,6 +2436,17 @@ (define-key map "8" 'digit-argument) (define-key map "9" 'digit-argument) (define-key map "-" 'negative-argument) + (cond ((fboundp 'set-keymap-name) + (set-keymap-name map 'vm-mode-map) + (set-keymap-name (lookup-key map "l") + "VM mode message labels map") + (set-keymap-name (lookup-key map "V") + "VM mode virtual folders map") + (set-keymap-name (lookup-key map "M") + "VM mode message marks map") + (set-keymap-name (lookup-key map "W") + "VM mode window configuration map"))) + map ) "Keymap for VM mode.") @@ -2449,8 +2463,11 @@ (define-key map "\C-c\C-y" 'vm-yank-message) (define-key map "\C-c\C-s" 'vm-mail-send) (define-key map "\C-c\C-c" 'vm-mail-send-and-exit) + (cond ((fboundp 'set-keymap-name) + (set-keymap-name map 'vm-mail-mode-map))) map ) - "Keymap for VM Mail mode buffers.") + "Keymap for VM Mail mode buffers. +Its parent keymap is mail-mode-map.") (defvar vm-edit-message-map (let ((map (make-sparse-keymap))) @@ -2458,6 +2475,8 @@ (define-key map "\C-c\e" 'vm-edit-message-end) (define-key map "\C-c\C-c" 'vm-edit-message-end) (define-key map "\C-c\C-]" 'vm-edit-message-abort) + (cond ((fboundp 'set-keymap-name) + (set-keymap-name map 'vm-edit-message-map))) map ) "Keymap for the buffers created by VM's vm-edit-message command.") @@ -2913,6 +2932,7 @@ (make-variable-buffer-local 'vm-summary-overlay) (defvar vm-thread-loop-obarray (make-vector 29 0)) (defvar vm-delete-duplicates-obarray (make-vector 29 0)) +(defvar vm-image-obarray (make-vector 29 0)) (defvar vm-mail-mode-map-parented nil) (defvar vm-xface-cache (make-vector 29 0)) (defconst vm-mime-base64-alphabet diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-version.el --- a/lisp/vm/vm-version.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-version.el Mon Aug 13 09:24:17 2007 +0200 @@ -2,7 +2,7 @@ (provide 'vm-version) -(defconst vm-version "6.22" +(defconst vm-version "6.23" "Version number of VM.") (defun vm-version () diff -r 578fd4947a72 -r 7d55a9ba150c lisp/vm/vm-window.el --- a/lisp/vm/vm-window.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/vm/vm-window.el Mon Aug 13 09:24:17 2007 +0200 @@ -644,12 +644,15 @@ ;; absent under Emacs 19.34. So vm-frame-per-summary won't work ;; quite right under these Emacs versions. XEmacs 19.15 should ;; have a working version of this function. -(if (and (fboundp 'frame-totally-visible-p) - (vm-xemacs-p) - (or (>= emacs-major-version 20) - (>= emacs-minor-version 15))) - (fset 'vm-frame-totally-visible-p 'frame-totally-visible-p) - (fset 'vm-frame-totally-visible-p 'vm-frame-visible-p)) +;; 2 April 1997, frame-totallyt-visible-p apparently still broken +;; under 19.15. I give it up for now. +;;(if (and (fboundp 'frame-totally-visible-p) +;; (vm-xemacs-p) +;; (or (>= emacs-major-version 20) +;; (>= emacs-minor-version 15))) +;; (fset 'vm-frame-totally-visible-p 'frame-totally-visible-p) +;; (fset 'vm-frame-totally-visible-p 'vm-frame-visible-p)) +(fset 'vm-frame-totally-visible-p 'vm-frame-visible-p) (fset 'vm-window-frame (symbol-function diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/ChangeLog --- a/lisp/w3/ChangeLog Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/ChangeLog Mon Aug 13 09:24:17 2007 +0200 @@ -2,11 +2,134 @@ * Makefile (xemacs-w3): Special target for XEmacs Build. +Thu Apr 3 07:22:27 1997 William M. Perry + +* w3-parse.el: Put in

as part of the content-model of

    so that +

    at the front of a list doesn't cause a bogus list item to be shown. + +* url-http.el (url-parse-mime-headers): Make proxy authentication sort of + work again. + +* w3-display.el (w3-setup-terminal-chars): Check to see whether face is + actually different before trying to set its font to a terminal one. + +* url.el (url-buffer-visiting): Better matching of URLs - it was taking + the target into account - bad bad bad. + +Wed Apr 2 18:05:11 1997 William M. Perry + +* w3-forms.el (w3-form-add-element): New way to do hidden form + fields that retains the order information - damned idiots out there rely + on ordering. !#%!@ + +* w3.el (w3-fetch): Put some of the logic about _blank/_top frame targets + into w3-fetch + +* w3-display.el (w3-get-all-face-info): Added in support for the 'face' + attribute to specify font-family + +Wed Apr 2 13:08:36 1997 Frederic Lepied + +* w3-print.el (w3-print-this-url): Need to run LaTeX to get the indices + right. + +Tue Apr 1 11:20:54 1997 William M. Perry + +* Emacs/W3 3.0.78 released + +* css.el (css-color-light-p): New function + (css-active-device-types): Use it to add a 'dark' or 'light' property to + the active device types as necessary + +Mon Mar 31 09:07:13 1997 William M. Perry + +* w3-parse.el: More error transitions for tables (push tr before td/th + just after a table) + +* w3-display.el (w3-display-node): Use it for body/html attribute handling + (w3-fix-color): New function to make sure we don't pass hex values without + "#" in front of them. + +Sun Mar 30 15:00:59 1997 William M. Perry + +* w3-display.el (w3-display-node): Now honors alink/vlink/link attributes + on the body tag. + (w3-fixup-eol-faces): Fixed nuking of faces at end of line to deal with + bad underlining behaviour of Emacs 19. + +Sun Mar 30 14:28:32 1997 Greg Stark + +* w3-e19.el (w3-mode-version-specifics): Fixed buffer read-only errors + when trying to set a background face. + +Fri Mar 28 10:41:43 1997 William M. Perry + +* Emacs/W3 3.0.77 released + +* w3-display.el (w3-display-table): Face properties specified on the + 'table' element now propogate to table cells correctly. + +Fri Mar 28 07:53:48 1997 Greg Stark + +* w3-forms.el: Make sure we set the button-face on all widgets + +Fri Mar 28 07:53:48 1997 William M. Perry + +* w3-display.el (w3-frames): Use make-frame, not make-frame-command, so it + will work on XEmacs. + +* w3-e19.el (w3-mode-version-specifics): Now honors background/foreground + color requests in Emacs19 by coloring in the whole buffer. Oh how I + wish Emacs 19 had buffer-local faces. + +* w3-display.el (w3-display-table): Tables now look better under Emacs 19 + +Thu Mar 27 08:05:34 1997 William M. Perry + +* font.el (font-x-registry-and-encoding-regexp): got rid of compile + warning under Emacs 19 + +* w3-display.el (w3-display-handle-list-type): manually remove faces on + bullet/list items + (w3-display-node): We were being a bit rude to inhibit-read-only - + sometimes would leave it 't', which is bad bad bad, some might even say + pure evil. + +* Emacs-W3 3.0.76 released + +* Synch'd up to Widget 1.68 + +* w3-display.el (w3-display-node): Handles 'text' attribute correctly now + to set the default foreground when requested. + +* mm.el (mm-play-sound-file): Fixed it for new mule stuff + +* url-gw.el (url-gateway-nslookup-host): Added autoload for + gateway-nslookup-host + +* w3-display.el (w3-display-table): Expand each line of a table cell out + to the border, so that we get nicely colors backgrounds for table cells + now. + +* font.el (font-x-registry-and-encoding-regexp): New variable to match the + registry and encoding of a font name under X + (x-font-create-object): Use it to set the default registry and encoding + for font objects we create from font names. + (x-font-create-name): Grab the registry and encoding from the default + object for this device before defaulting back to '*' + +* w3-display.el (w3-setup-terminal-chars): Explicitly specify wildcard + registry and encoding for the table-hack-x-face, to deal with changes in + the font library. + Wed Mar 26 06:23:51 1997 William M. Perry +* custom-check: Should work better now, and spit out better instructions + for rebuilding correctly. + * Emacs-W3 3.0.75 released -* url.el (url-clean-text): Better matchine of bogus process exited +* url.el (url-clean-text): Better matching of bogus process exited messages. * font.el (font-rgb-color-p): No longer match "^#xxyyzz" as an rgb-color, @@ -24,7 +147,7 @@ * Emacs-W3 3.0.74 released -Tue Mar 25 15:31:56 1997 Greg Stark +Tue Mar 25 15:31:56 1997 Greg Stark * url-cookie.el (url-cookie-handle-set-cookie): don't deal with #!%@ed microsoft web site cookies - they break good, clean, wholesome sites diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/FAQ --- a/lisp/w3/FAQ Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/FAQ Mon Aug 13 09:24:17 2007 +0200 @@ -1,8 +1,12 @@ Q: Options menu is ugly under Emacs 19 A: Wait for 19.35 - this is because of a 'feature lack' in easymenu.el +Q: Animated GIFs cause XEmacs 19.14 or 20.0 to crash +A: There was a bug in the GIF decoding routines in XEmacs 19.14 - please + upgrade to XEmacs 19.15 or later. + Q: I get an error when starting up: - Symbol's value as variable is void: widget-mouse-face + Symbol's function definition is void: custom-declare-group A: This usually means you compiled W3 in an emacs that could not find the 'custom' package (or found an old version), but are running W3 in an emacs that find the new one. This is usually the case if you @@ -11,3 +15,119 @@ Make sure that you can load the custom library when compiling emacs. Set the environment variable WIDGETDIR to where your custom library lives (ie: ~/lisp/gnus/lisp) + +Courtesy of greg stark +Q: How do i get Shift-Tab to go backwards on a text terminal or XTerm? +aka: I hate the new text widgets, I can't go through the links with n and b + I can go forward using TAB but how do i go backward on a terminal? + +A: Not all terminals can distinguish between a shifted tab and an unshifted +tab at all. Tab is indicated on a text terminal by a control-i. There is no +such thing as capital control characters, so if the terminal is going to +indicate a shift-tab somehow it has to be completely differently. The most +appropriate thing to use is probably "backtab" which on old text terminals was +sometimes a separate key and Emacs is already set up to recognize +automatically if it exists. + +Making "backtab" work involves several steps. First you have to make sure your +console generates some character sequence to indicate the key you want to +generate a "backtab". Then you have to configure termcap or terminfo to +recognize that key sequence. Then you may have to make your programs do useful +things when they get a "backtab", Emacs for example will recognize it +automatically but except for the Widget and W3 commands nothing is ever bound +it it. + +Step 1 On An XTerm: XTerm obeys standard X Toolkit translations which you can +use to specify what character sequence Shift-Tab generates. The following X +Resources will cause Shift-Tab and Meta-Shift-Tab to generate reasonable +character sequences. You can either put this in your .Xresources or .Xdefaults +file, or you can put it in /usr/lib/X11/app-defaults/XTerm to make it a +site-wide default. (On Debian systems you should put it in +/etc/X11/Xresources, not the app-defaults files): + +XTerm*VT100.translations: #override \ + ~Meta ShiftTab: string(\033[Z) \n\ + Meta ShiftTab: string(\033\033[Z) \n + +I recommend these sequences, they are based on what seems to be a more or less +standard sequence ^[[Z for backtab. + +Step 1 On Rxvt: By default Rxvt sends ^[[Z for Shift-Tab. +However, if Shift-Tab generates another keysym, like for example in XFree86 +3.2 where it's bound to ISO_Left_Tab then Rxvt will just ignore it. You would +need to defeat this feature to make rxvt work again by doing something like: + +xmodmap -e 'keysym Tab = Tab' + +or adding that command to some global X configuration file (On Debian systems +adding ``Keysym Tab = Tab'' to /etc/X11/Xmodmap or ~/.Xmodmap is sufficient) + +Step 1 On A Linux Virtual Console: on a Linux virtual console you can +configure what character sequences are generated by which keys using the +loadkeys command. Many systems are set up to run loadkeys automatically on +startup with some keymap file. On Debian systems this is true, the keymap file +is specified in /etc/kbd/config and usually lives in the +/usr/lib/kbd/keytables directory. You want to put something like the following +in your keytable file: + +keycode 15 = Tab F91 + alt keycode 15 = Meta_Tab + shift alt keycode 15 = F92 + +where keycode 15 is Tab on my keyboard (and probably any keyboard). This +defines Tab and Alt-Tab normally, and also defines Shift-Tab to be F91 and +Shift-Alt-Tab to be F92. + +Then put something like this: +# backtab and M-backtab +string F91 = "\033[Z" +string F92 = "\033\033[Z" + +later in the file. This defines what character sequence F91 (Shift-Tab) and +F92 (Alt-Shift-Tab) should generate. I recommend these sequences, they are +based on what seems to be a more or less standard sequence ^[[Z for backtab. + +Step 2 On A Termcap System: + +The termcap capability is kB, i'm not familiar with termcap tools, i think you +just need to add it to the /etc/termcap file for the terminal you're concerned +with as kB=\E[Z. + +Step 2 On A Terminfo System: + +The terminfo capability is kcbt (the long name is key_btab). You want to run +infocmp to generate an edittable copy of the terminal info. Add the +capability, then use tic to compile that information. Something like this: + +infocmp $TERM > info +emacs info & # add kcbt=\E[Z, to the file +tic info + +If you do this as root it should add the new definition to the system wide +terminfo database. If you do it as a normal user it should create a +~/.terminfo database with a local terminfo info definition for that terminal. + +Step 3 On Emacs: + +The standard terminal initialization should recognize the backtab capability +automatically. To test it try C-h c Shift-Tab and see what it calls the key. +To bind commands to it just use [backtab] in local-set-key or global-set-key +as in: + +(local-set-key [backtab] 'hippie-expand) +or +(global-set-key [backtab] 'hippie-expand) + +In the interest of maintaining a single consistent set of key bindings between +X and tty emacsen you may want to make equivalent X keystroke generate +"backtab" as well, you can do this by doing this: + +(define-key function-key-map [S-tab] [backtab]) +or +(define-key function-key-map [iso-lefttab] [backtab]) + +To make S-tab or whatever keystroke you made generate backtab on a terminal +be recognized as backtab under X11 as well. You can check how Emacs recognizes +this keystroke currently by doing C-h c . + + diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/Makefile --- a/lisp/w3/Makefile Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/Makefile Mon Aug 13 09:24:17 2007 +0200 @@ -17,7 +17,7 @@ # Change this to be how to convert texinfo files into info files # examples: -# $(EMACS) -batch -q -f batch-texinfo-format +# $(EMACS) -batch -q -l texinfmt -f batch-texinfo-format # makeinfo MAKEINFO = makeinfo diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/css.el --- a/lisp/w3/css.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/css.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; css.el -- Cascading Style Sheet parser ;; Author: wmperry -;; Created: 1997/03/25 03:35:09 -;; Version: 1.33 +;; Created: 1997/04/01 19:21:41 +;; Version: 1.34 ;; Keywords: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -714,8 +714,62 @@ (css-replace-regexp "[ \t\r]+$" "") ; Nuke whitespace at end of line (goto-char (point-min))) +(if css-running-xemacs + (defun css-color-light-p (color-or-face) + (let (face color) + (cond + ((or (facep color-or-face) + (and (symbolp color-or-face) + (find-face color-or-face))) + (setq color (specifier-instance (face-background color-or-face)))) + ((color-instance-p color-or-face) + (setq color color-or-face)) + ((color-specifier-p color-or-face) + (setq color (specifier-instance color-or-face))) + ((stringp color-or-face) + (setq color (make-color-instance color-or-face))) + (t (signal 'wrong-type-argument 'color-or-face-p))) + (if color + (not (< (apply '+ (color-instance-rgb-components color)) + (/ (apply '+ (color-instance-rgb-components + (make-color-instance "white"))) 3))) + t))) + (defun css-color-values (color) + (cond + ((eq window-system 'x) + (x-color-values color)) + ((eq window-system 'pm) + (pm-color-values color)) + ((eq window-system 'ns) + (ns-color-values color)) + (t nil))) + (defun css-color-light-p (color-or-face) + (let (colors) + (cond + ((null window-system) + nil) + ((facep color-or-face) + (setq color-or-face (face-background color-or-face)) + (if (null color-or-face) + (setq color-or-face (cdr-safe + (assq 'background-color (frame-parameters))))) + (setq colors (css-color-values color-or-face))) + ((stringp color-or-face) + (setq colors (css-color-values color-or-face))) + ((font-rgb-color-p color-or-face) + (setq colors (list (font-rgb-color-red color-or-face) + (font-rgb-color-green color-or-face) + (font-rgb-color-blue color-or-face)))) + (t + (signal 'wrong-type-argument 'color-or-face-p))) + (not (< (apply '+ colors) + (/ (apply '+ (css-color-values "white")) 3))))) + ) + (defun css-active-device-types (&optional device) - (let ((types (list 'all (if css-running-xemacs 'xemacs 'emacs))) + (let ((types (list 'all + (if css-running-xemacs 'xemacs 'emacs) + (if (css-color-light-p 'default) 'light 'dark))) (type (device-type device))) (cond ((featurep 'emacspeak) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/custom-check --- a/lisp/w3/custom-check Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/custom-check Mon Aug 13 09:24:17 2007 +0200 @@ -1,5 +1,10 @@ #!/bin/sh EMACS=${1:-emacs} + +if [ -n "$WIDGETDIR" ]; then + exit 0 +fi + if [ -z "$HOME" ]; then HOME=`(cd ; pwd)` fi @@ -8,18 +13,25 @@ DOTEMACS="-l ${HOME}/.emacs" fi -WITH=` ${EMACS} -batch ${DOTEMACS} -eval '(princ (file-truename (locate-library "custom")))'` -WITHOUT=`${EMACS} -batch -q -no-site-file -eval '(princ (file-truename (locate-library "custom")))'` +WITH=` ${EMACS} -batch ${DOTEMACS} -eval '(princ (file-truename (locate-library "custom")))' 2> /dev/null` +WITHOUT=`${EMACS} -batch -q -no-site-file -eval '(princ (file-truename (locate-library "custom")))' 2>/dev/null` + +# For some reason XEmacs sometimes ends up with a newline at the beginning +# of the output... this will hopefully strip it out. +WITH=`echo $WITH | tr '\010\013' ' '` +WITHOUT=`echo $WITHOUT | tr '\013\010' ' '` if [ "${WITH}" = "${WITHOUT}" ]; then exit 0 else + DIRECTORY=`dirname ${WITH}` + echo "WARNING -- WARNING -- WARNING" echo "Found custom in different places with and without ${HOME}/.emacs" echo echo "This could cause potential problems. Please recompile with" echo "the environment variable WIDGETDIR set correctly. Try this" echo "command:" - echo "make WIDGETDIR=${WITH}" + echo "make WIDGETDIR=${DIRECTORY}" exit 1 fi diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/font.el --- a/lisp/w3/font.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/font.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; font.el --- New font model ;; Author: wmperry -;; Created: 1997/03/26 20:08:55 -;; Version: 1.40 +;; Created: 1997/03/28 20:23:52 +;; Version: 1.43 ;; Keywords: faces ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -75,7 +75,7 @@ (:light . "light") (:demi-light . "demilight") (:medium . "medium") - (:normal . "normal") + (:normal . "medium") (:demi-bold . "demibold") (:bold . "bold") (:extra-bold . "extrabold")) @@ -89,7 +89,7 @@ (:demi . "demi") (:book . "book") (:medium . "medium") - (:normal . "normal") + (:normal . "medium") (:demi-bold . "demibold") (:bold . "bold") (:extra-bold . "extrabold")) @@ -474,6 +474,15 @@ registry - encoding "\\'" )))) +(defvar font-x-registry-and-encoding-regexp + (or (and font-running-xemacs + (boundp 'x-font-regexp-registry-and-encoding) + (symbol-value 'x-font-regexp-registry-and-encoding)) + (let ((- "[-?]") + (registry "[^-]*") + (encoding "[^-]+")) + (concat - "\\(" registry "\\)" - "\\(" encoding "\\)\\'")))) + (defun x-font-create-object (fontname &optional device) (let ((case-fold-search t)) (if (or (not (stringp fontname)) @@ -515,6 +524,10 @@ (set-font-italic-p retval t)) ((member slant '("o" "O")) (set-font-oblique-p retval t))) + (if (string-match font-x-registry-and-encoding-regexp fontname) + (progn + (set-font-registry retval (match-string 1 fontname)) + (set-font-encoding retval (match-string 2 fontname)))) retval)))) (defun x-font-families-for-device (&optional device no-resetp) @@ -566,6 +579,16 @@ (font-family (font-default-object-for-device device))) ;;;###autoload +(defun font-default-registry-for-device (&optional device) + (or device (setq device (selected-device))) + (font-registry (font-default-object-for-device device))) + +;;;###autoload +(defun font-default-encoding-for-device (&optional device) + (or device (setq device (selected-device))) + (font-encoding (font-default-object-for-device device))) + +;;;###autoload (defun font-default-size-for-device (&optional device) (or device (setq device (selected-device))) ;; face-height isn't the right thing (always 1 pixel too high?) @@ -582,16 +605,21 @@ (= (font-style fontobj) 0)) (face-font 'default) (or device (setq device (selected-device))) - (let ((family (or (font-family fontobj) - (font-default-family-for-device device) - (x-font-families-for-device device))) - (weight (or (font-weight fontobj) :medium)) - (style (font-style fontobj)) - (size (or (if font-running-xemacs - (font-size fontobj)) - (font-default-size-for-device device))) - (registry (or (font-registry fontobj) "*")) - (encoding (or (font-encoding fontobj) "*"))) + (let* ((default (font-default-object-for-device device)) + (family (or (font-family fontobj) + (font-family default) + (x-font-families-for-device device))) + (weight (or (font-weight fontobj) :medium)) + (style (font-style fontobj)) + (size (or (if font-running-xemacs + (font-size fontobj)) + (font-size default))) + (registry (or (font-registry fontobj) + (font-registry default) + "*")) + (encoding (or (font-encoding fontobj) + (font-encoding default) + "*"))) (if (stringp family) (setq family (list family))) (setq weight (font-higher-weight weight diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/mm.el --- a/lisp/w3/mm.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/mm.el Mon Aug 13 09:24:17 2007 +0200 @@ -184,7 +184,7 @@ ("x-mpeg" . (("viewer" . "maplay %s") ("type" . "audio/x-mpeg"))) (".*" . (("viewer" . mm-play-sound-file) - ("test" . (or (featurep 'nas-sound) + ("test" . (or (featurep 'nas-sound) (featurep 'native-sound))) ("type" . "audio/*"))) (".*" . (("viewer" . "showaudio") @@ -1082,7 +1082,7 @@ (setq buff (or buff (current-buffer))) (let ((fname (mm-generate-unique-filename "%s.au")) (synchronous-sounds t)) ; Play synchronously - (mm-write-region-no-coding-system (point-min) (point-max) fname) + (mule-write-region-no-coding-system (point-min) (point-max) fname) (kill-buffer (current-buffer)) (play-sound-file fname) (condition-case () diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/ssl.el --- a/lisp/w3/ssl.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/ssl.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; ssl.el,v --- ssl functions for emacsen without them builtin ;; Author: wmperry -;; Created: 1997/03/26 00:04:40 -;; Version: 1.13 +;; Created: 1997/03/31 16:22:42 +;; Version: 1.14 ;; Keywords: comm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -43,7 +43,7 @@ (defgroup ssl nil "Support for `Secure Sockets Layer' encryption." - :group 'emacs) + :group 'comm) (defcustom ssl-certificate-directory "~/.w3/certs/" "*Directory to store CA certificates in" @@ -74,10 +74,13 @@ :group 'ssl :type '(choice (const :tag "SSLeay" :value ssleay))) -(defcustom ssl-certificate-verification-depth 0 +(defcustom ssl-certificate-verification-policy 0 "*How far up the certificate chain we should verify." :group 'ssl - :type 'integer) + :type '(choice (const :tag "No verification" :value 0) + (const :tag "Verification required" :value 1) + (const :tag "Reject connection if verification fails" :value 3) + (const :tag "SSL_VERIFY_CLIENT_ONCE" :value 5))) (defcustom ssl-program-name "s_client" "*The program to run in a subprocess to open an SSL connection." @@ -88,7 +91,7 @@ '(;;"-quiet" "-host" host "-port" service - "-verify" (int-to-string ssl-certificate-verification-depth) + "-verify" (int-to-string ssl-certificate-verification-policy) "-CApath" ssl-certificate-directory ) "*Arguments that should be passed to the program `ssl-program-name'. diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/url-cache.el --- a/lisp/w3/url-cache.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/url-cache.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-cache.el --- Uniform Resource Locator retrieval tool ;; Author: wmperry -;; Created: 1997/03/09 21:09:36 -;; Version: 1.10 +;; Created: 1997/04/03 21:04:08 +;; Version: 1.11 ;; Keywords: comm, data, processes, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -150,9 +150,9 @@ (cons (user-real-login-name) (cons (or protocol "file") - (split-string (or hostname "localhost") - (eval-when-compile - (regexp-quote ".")))))) + (reverse (split-string (or hostname "localhost") + (eval-when-compile + (regexp-quote "."))))))) (fname (url-filename urlobj))) (if (and fname (/= (length fname) 0) (= (aref fname 0) ?/)) (setq fname (substring fname 1 nil))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/url-gw.el --- a/lisp/w3/url-gw.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/url-gw.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-gw.el --- Gateway munging for URL loading ;; Author: wmperry -;; Created: 1997/03/26 14:32:29 -;; Version: 1.7 +;; Created: 1997/03/27 21:29:24 +;; Version: 1.8 ;; Keywords: comm, data, processes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -72,6 +72,7 @@ "*If non-NIL then a string naming nslookup program." ) ;; Stolen from ange-ftp +;;;###autoload (defun url-gateway-nslookup-host (host) "Attempt to resolve the given HOSTNAME using nslookup if possible." (interactive "sHost: ") diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/url-http.el --- a/lisp/w3/url-http.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/url-http.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-http.el --- HTTP Uniform Resource Locator retrieval code ;; Author: wmperry -;; Created: 1997/03/03 15:13:11 -;; Version: 1.16 +;; Created: 1997/04/03 20:34:59 +;; Version: 1.17 ;; Keywords: comm, data, processes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -442,7 +442,10 @@ ((= status 407) ; Proxy authentication required (let* ((y (or (cdr (assoc "proxy-authenticate" result)) "basic")) (url (url-view-url t)) + (urlobj (url-generic-parse-url url)) (url-basic-auth-storage url-proxy-basic-authentication) + (url-using-proxy (url-find-proxy-for-url urlobj + (url-host urlobj))) (type (downcase (if (string-match "[ \t]" y) (substring y 0 (match-beginning 0)) y)))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/url-vars.el --- a/lisp/w3/url-vars.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/url-vars.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-vars.el --- Variables for Uniform Resource Locator tool ;; Author: wmperry -;; Created: 1997/03/26 20:12:27 -;; Version: 1.43 +;; Created: 1997/04/03 21:42:29 +;; Version: 1.47 ;; Keywords: comm, data, processes, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -26,7 +26,7 @@ ;;; Boston, MA 02111-1307, USA. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defconst url-version (let ((x "p3.0.75")) +(defconst url-version (let ((x "p3.0.79")) (if (string-match "State: \\([^ \t\n]+\\)" x) (substring x (match-beginning 1) (match-end 1)) x)) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/url.el --- a/lisp/w3/url.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/url.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,13 +1,13 @@ ;;; url.el --- Uniform Resource Locator retrieval tool ;; Author: wmperry -;; Created: 1997/03/26 20:11:33 -;; Version: 1.69 +;; Created: 1997/04/03 15:23:07 +;; Version: 1.70 ;; Keywords: comm, data, processes, hypermedia ;;; LCD Archive Entry: ;;; url|William M. Perry|wmperry@cs.indiana.edu| ;;; Functions for retrieving/manipulating URLs| -;;; 1997/03/26 20:11:33|1.69|Location Undetermined +;;; 1997/04/03 15:23:07|1.70|Location Undetermined ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -668,6 +668,7 @@ type (url-type data)) (if (member type '("www" "about" "mailto" "mailserver" "info")) (setq retval url) + (url-set-target data nil) (setq retval (url-recreate-url data))) retval)) @@ -677,17 +678,14 @@ (setq url (url-normalize-url url)) (let ((bufs (buffer-list)) (found nil)) - (if (condition-case () - (string-match "\\(.*\\)#" url) - (error nil)) - (setq url (url-match url 1))) (while (and bufs (not found)) (save-excursion (set-buffer (car bufs)) (setq found (if (and (not (string-match " \\*URL-?[0-9]*\\*" (buffer-name (car bufs)))) (memq major-mode '(url-mode w3-mode)) - (equal (url-view-url t) url)) (car bufs) nil) + (equal (url-normalize-url (url-view-url t)) url)) + (car bufs) nil) bufs (cdr bufs)))) found)) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/w3-auto.el --- a/lisp/w3/w3-auto.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/w3-auto.el Mon Aug 13 09:24:17 2007 +0200 @@ -45,6 +45,9 @@ (autoload 'widget-backward "wid-edit") (autoload 'widget-at "wid-edit") +;; URL stuff +(autoload 'url-gateway-nslookup-host "url-gw") + ;; Preferences (autoload 'w3-preferences-edit "w3-prefs" nil t) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/w3-display.el --- a/lisp/w3/w3-display.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/w3-display.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-display.el --- display engine v99999 ;; Author: wmperry -;; Created: 1997/03/26 15:24:53 -;; Version: 1.157 +;; Created: 1997/04/03 16:32:31 +;; Version: 1.171 ;; Keywords: faces, help, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -70,6 +70,7 @@ (w3-d-s-var-def w3-face-descr) (w3-d-s-var-def w3-face-pixmap) (w3-d-s-var-def w3-display-css-properties) +(w3-d-s-var-def w3-display-background-properties) (eval-when-compile (defmacro w3-get-attribute (attr) @@ -91,6 +92,13 @@ (` (progn (w3-get-face-info font-family) + ;; This is to handle the 'face' attribute on arbitrary elements + (if (cdr-safe (assq 'face (nth 1 node))) + (setf (car w3-face-font-family) + (append (car w3-face-font-family) + (split-string (cdr-safe + (assq 'face (nth 1 node))) + " *, *")))) (w3-get-face-info font-style) (w3-get-face-info font-weight) (w3-get-face-info font-variant) @@ -311,7 +319,7 @@ (if (>= (setq width (current-column)) fill-column) nil ; already justified, or error (beginning-of-line) - (insert-char ? (- fill-column width)) + (insert-char ? (- fill-column width) t) (end-of-line) (if (eobp) (throw 'fill-exit t)) @@ -363,9 +371,10 @@ (add-text-properties w3-scratch-start-point (point) (list 'face w3-active-faces 'html-stack w3-display-open-element-stack - 'start-open t - 'end-open t - 'rear-nonsticky t + 'start-open nil + 'end-open nil + 'front-sticky t + 'rear-nonsticky nil 'duplicable t)) (if (car w3-active-voices) (add-text-properties w3-scratch-start-point (point) @@ -450,51 +459,57 @@ (defmacro w3-display-handle-list-type () (` - (case (car break-style) - (list-item - (let ((list-style (w3-get-style-info 'list-style-type node)) - (list-num (if (car w3-display-list-stack) - (incf (car w3-display-list-stack)) - 1)) - (margin (1- (car left-margin-stack))) - (indent (w3-get-style-info 'text-indent node 0))) - (if (> indent 0) - (setq margin (+ margin indent)) - (setq margin (max 0 (- margin indent)))) - (beginning-of-line) - (case list-style - ((disc circle square) - (insert (format (format "%%%dc" margin) - (or (cdr-safe (assq list-style w3-bullets)) - ?o)))) - ((decimal lower-roman upper-roman lower-alpha upper-alpha) - (let ((x (case list-style - (lower-roman - (w3-decimal-to-roman list-num)) - (upper-roman - (upcase - (w3-decimal-to-roman list-num))) - (lower-alpha - (w3-decimal-to-alpha list-num)) - (upper-alpha - (upcase - (w3-decimal-to-alpha list-num))) - (otherwise - (int-to-string list-num))))) - (insert (format (format "%%%ds." margin) x)) + (add-text-properties + (point) + (progn + (case (car break-style) + (list-item + (let ((list-style (w3-get-style-info 'list-style-type node)) + (list-num (if (car w3-display-list-stack) + (incf (car w3-display-list-stack)) + 1)) + (margin (1- (car left-margin-stack))) + (indent (w3-get-style-info 'text-indent node 0))) + (if (> indent 0) + (setq margin (+ margin indent)) + (setq margin (max 0 (- margin indent)))) + (beginning-of-line) + (case list-style + ((disc circle square) + (insert (format (format "%%%dc" margin) + (or (cdr-safe (assq list-style w3-bullets)) + ?o)))) + ((decimal lower-roman upper-roman lower-alpha upper-alpha) + (let ((x (case list-style + (lower-roman + (w3-decimal-to-roman list-num)) + (upper-roman + (upcase + (w3-decimal-to-roman list-num))) + (lower-alpha + (w3-decimal-to-alpha list-num)) + (upper-alpha + (upcase + (w3-decimal-to-alpha list-num))) + (otherwise + (int-to-string list-num))))) + (insert (format (format "%%%ds." margin) x)) + ) + ) + (otherwise + (insert (w3-get-pad-string margin))) ) ) - (otherwise - (insert (w3-get-pad-string margin))) - ) + ) + (otherwise + (insert (w3-get-pad-string (+ (car left-margin-stack) + (w3-get-style-info 'text-indent node 0))))) ) - ) - (otherwise - (insert (w3-get-pad-string (+ (car left-margin-stack) - (w3-get-style-info 'text-indent node 0))))) - ) - ) - ) + (point)) + (list 'start-open t + 'end-open t + 'rear-nonsticky nil + 'face 'nil)))) (defmacro w3-display-set-margins () (` @@ -810,10 +825,16 @@ (cond ((and w3-use-terminal-characters (eq (device-type) 'x)) - (if (find-face 'w3-table-hack-x-face) nil + (if (and (find-face 'w3-table-hack-x-face) + (face-differs-from-default-p 'w3-table-hack-x-face)) + nil (make-face 'w3-table-hack-x-face) - (font-set-face-font 'w3-table-hack-x-face - (make-font :family "terminal"))) + (if (not (face-differs-from-default-p 'w3-table-hack-x-face)) + (font-set-face-font 'w3-table-hack-x-face + (make-font :family "terminal" + :registry "*" + :encoding "*" + )))) (cond ((not (face-differs-from-default-p 'w3-table-hack-x-face)) nil) @@ -1210,6 +1231,7 @@ (rows nil) (row 0) (this-rectangle nil) + (inhibit-read-only t) (i 0) ) @@ -1249,14 +1271,27 @@ (save-restriction (narrow-to-region (point) (point)) (setq fill-column avgwidth - inhibit-read-only t w3-last-fill-pos (point-min) i 0) ;; skip over columns that have leftover content (while (and (< i num-cols) (/= 0 (aref table-rowspans i))) (setq i (+ i (max 1 (aref table-colspans i))))) + ;; Need to push the properties for the table onto the stack + (setq w3-display-css-properties (css-get + tag + args + w3-current-stylesheet + w3-display-open-element-stack)) + (push (w3-face-for-element (list tag args nil)) w3-active-faces) + (push (w3-voice-for-element (list tag args nil)) w3-active-voices) + (push (cons tag args) w3-display-open-element-stack) (while cols + ;; And need to push these bogus placeholders on there + ;; so that w3-display-node doesn't pop off the real face + ;; or voice we just put in above. + (push nil w3-active-faces) + (push nil w3-active-voices) (let* ((node (car cols)) (attributes (nth 1 node)) (colspan (string-to-int @@ -1302,7 +1337,15 @@ (skip-chars-backward " \t\n\r") (delete-region (point) (point-max)) (if (>= fill-column (current-column)) - (insert-char ? (- fill-column (current-column)))) + (insert-char ? (- fill-column (current-column)) t)) + (goto-char (point-min)) + ;; This gets our text properties out to the + ;; end of lines for table rows/cells with backgrounds + (while (not (eobp)) + (re-search-forward "$" nil t) + (if (>= fill-column (current-column)) + (insert-char ? (- fill-column (current-column)) t)) + (or (eobp) (forward-char 1))) (aset formatted-cols i (extract-rectangle (point-min) (point-max))) (delete-region (point-min) (point-max)) (let ((j (1- colspan))) @@ -1315,7 +1358,10 @@ (/= 0 (aref table-rowspans i))) (setq i (+ i (max 1 (aref table-colspans i))))) )) - + (pop w3-display-open-element-stack) + (pop w3-active-faces) + (pop w3-active-voices) + (w3-pop-all-face-info) ;; finish off the columns (while (< i num-cols) (aset table-colwidth i (aref column-dimensions i)) @@ -1388,7 +1434,7 @@ (setq i (+ i (max (aref table-colspans i) (aref prev-colspans i) 1)))) (t - (insert-char ? (aref table-colwidth i)) + (insert-char ? (aref table-colwidth i) t) (setq lflag nil) (setq i (+ i (max (aref table-colspans i) (aref prev-colspans i) 1)))))) @@ -1411,7 +1457,7 @@ (while (< i num-cols) (if (car (aref formatted-cols i)) (insert (pop (aref formatted-cols i))) - (insert-char ? (aref table-colwidth i))) + (insert-char ? (aref table-colwidth i) t)) (w3-insert-terminal-char (w3-table-lookup-char nil t nil t)) (setq i (+ i (max (aref table-colspans i) 1)))) (insert "\n") @@ -1428,7 +1474,6 @@ (setq prev-colspans (copy-seq table-colspans)) (and w3-do-incremental-display (w3-pause)) - ) (caption (let ((left (length fill-prefix)) @@ -1494,6 +1539,12 @@ (push (list 'tr nil (pop rows)) items)) items)) +(defun w3-fix-color (color) + (if (and color + (string-match "^[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]$" color)) + (concat "#" color) + color)) + (defun w3-display-normalize-form-info (args) (let* ((plist (alist-to-plist args)) (type (intern (downcase @@ -1617,7 +1668,7 @@ (nth 1 node)))) (setf (nth 1 node) (cons (cons 'id unique-id) (nth 1 node))) (w3-handle-style (list 'data sheet - 'notation "css")))) + 'notation "text/css")))) (setq w3-display-css-properties (css-get (nth 0 node) (nth 1 node) @@ -1827,11 +1878,32 @@ ((html body) (let ((fore (car (delq nil (copy-list w3-face-color)))) (back (car (delq nil (copy-list w3-face-background-color)))) + (alink (w3-get-attribute 'alink)) + (vlink (w3-get-attribute 'vlink)) + (link (w3-get-attribute 'link)) + (sheet "") ) - (if (and fore font-running-xemacs) - (font-set-face-foreground 'default fore (current-buffer))) - (if (and back font-running-xemacs) - (font-set-face-background 'default back (current-buffer))) + (if link + (setq sheet (format "%sa:link { color: %s }\n" sheet + (w3-fix-color link)))) + (if vlink + (setq sheet (format "%sa:visited { color: %s }\n" sheet + (w3-fix-color vlink)))) + (if alink + (setq sheet (format "%sa:active { color: %s }\n" sheet + (w3-fix-color alink)))) + (if (/= (length sheet) 0) + (w3-handle-style (list 'data sheet + 'notation "text/css"))) + (if (and (w3-get-attribute 'text) (not fore)) + (setf (car w3-face-color) (w3-fix-color + (w3-get-attribute 'text)))) + (if (not font-running-xemacs) + (setq w3-display-background-properties (cons fore back)) + (if fore + (font-set-face-foreground 'default fore (current-buffer))) + (if back + (font-set-face-background 'default back (current-buffer)))) (w3-handle-content node))) (*document (let ((info (mapcar (lambda (x) (cons x (symbol-value x))) @@ -1860,7 +1932,7 @@ w3-user-stylesheet) w3-last-fill-pos (point) fill-prefix "") - (set (make-local-variable 'inhibit-read-only) t)) + ) (w3-handle-content node) ) (*invisible @@ -2076,7 +2148,7 @@ (let ((inhibit-read-only t)) (save-excursion (goto-char (point-min)) - (while (search-forward "[ \t]*\n[ \t]*" nil t) + (while (re-search-forward "[ \t]*\n[ \t]*" nil t) (remove-text-properties (match-beginning 0) (match-end 0) '(face nil mouse-face nil) nil))))) @@ -2098,8 +2170,6 @@ (and (not w3-running-xemacs) (not (eq (device-type) 'tty)) (w3-fixup-eol-faces)) - (let ((inhibit-read-only t)) - (remove-text-properties (point-min) (point-max) '(read-only) nil)) (message "Drawing... done")) (defun w3-region (st nd) @@ -2173,7 +2243,7 @@ (let* ((old-asynch url-be-asynchronous) (structure (reverse w3-frameset-structure))) (if new-frame - (select-frame (make-frame-command))) + (select-frame (make-frame))) (setq-default url-be-asynchronous nil) ;; set up frames (while structure @@ -2300,5 +2370,4 @@ ;; push + push => in order dimensions)))))) - (provide 'w3-display) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/w3-e19.el --- a/lisp/w3/w3-e19.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/w3-e19.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-e19.el --- Emacs 19.xx specific functions for emacs-w3 ;; Author: wmperry -;; Created: 1997/03/12 20:07:18 -;; Version: 1.19 +;; Created: 1997/04/01 19:23:18 +;; Version: 1.22 ;; Keywords: faces, help, mouse, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -104,9 +104,21 @@ (defun w3-mode-version-specifics () ;; Emacs 19 specific stuff for w3-mode + (declare (special w3-face-index w3-display-background-properties)) (make-local-variable 'track-mouse) (set (make-local-variable 'buffer-access-fontify-functions) 'w3-e19-no-read-only) - (if w3-track-mouse (setq track-mouse t))) + (if w3-track-mouse (setq track-mouse t)) + (if w3-display-background-properties + (let ((face (w3-make-face (intern + (format "w3-style-face-%05d" w3-face-index)) + "An Emacs-W3 face... don't edit by hand." t)) + (fore (car w3-display-background-properties)) + (inhibit-read-only t) + (back (cdr w3-display-background-properties))) + (setq w3-face-index (1+ w3-face-index)) + (if fore (font-set-face-foreground face fore)) + (if back (font-set-face-background face back)) + (fillin-text-property (point-min) (point-max) 'face 'face face)))) (defun w3-mouse-handler (e) "Function to message the url under the mouse cursor" @@ -122,39 +134,6 @@ (if (assq 'onmouseover mouse-events) (w3-script-evaluate-form (cdr (assq 'onmouseover mouse-events))))))) -(defun w3-color-values (color) - (cond - ((eq window-system 'x) - (x-color-values color)) - ((eq window-system 'pm) - (pm-color-values color)) - ((eq window-system 'ns) - (ns-color-values color)) - (t nil))) - -(defun w3-color-light-p (color-or-face) - (let (colors) - (cond - ((null window-system) - nil) - ((facep color-or-face) - (setq color-or-face (face-background color-or-face)) - (if (null color-or-face) - (setq color-or-face (cdr-safe - (assq 'background-color (frame-parameters))))) - (setq colors (w3-color-values color-or-face))) - ((stringp color-or-face) - (setq colors (w3-color-values color-or-face))) - ((font-rgb-color-p color-or-face) - (setq colors (list (font-rgb-color-red color-or-face) - (font-rgb-color-green color-or-face) - (font-rgb-color-blue color-or-face)))) - (t - (signal 'wrong-type-argument 'color-or-face-p))) - (not (< (apply '+ colors) - (/ (apply '+ (w3-color-values "white")) 3))))) - - (provide 'w3-emacs19) (provide 'w3-e19) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/w3-forms.el --- a/lisp/w3/w3-forms.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/w3-forms.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-forms.el --- Emacs-w3 forms parsing code for new display engine ;; Author: wmperry -;; Created: 1997/03/25 23:33:51 -;; Version: 1.81 +;; Created: 1997/04/03 14:23:37 +;; Version: 1.84 ;; Keywords: faces, help, comm, data, languages ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -159,12 +159,11 @@ plist)) (size (w3-form-determine-size el (plist-get plist 'size))) (node (assoc action w3-form-elements))) - (if (and (eq (plist-get plist 'type) 'hidden) - (not (assq '*table-autolayout w3-display-open-element-stack))) - (if node - (setcdr node (cons el (cdr node))) - (setq w3-form-elements (cons (cons action (list el)) - w3-form-elements)))) + (if (not (assq '*table-autolayout w3-display-open-element-stack)) + (if node + (setcdr node (cons el (cdr node))) + (setq w3-form-elements (cons (cons action (list el)) + w3-form-elements)))) (if size (set-text-properties (point) (progn (insert-char ?T size) (point)) @@ -191,10 +190,6 @@ (delete-region st nd) (if (not (w3-form-element-size info)) (w3-form-element-set-size info 20)) - (if node - (setcdr node (cons info (cdr node))) - (setq w3-form-elements (cons (cons action (list info)) - w3-form-elements))) (w3-form-add-element-internal info face) (setq st (next-single-property-change st 'w3-form-info))) (setq st (next-single-property-change st 'w3-form-info)))))) @@ -304,6 +299,7 @@ (setq widget (w3-form-element-widget formobj)) (widget-radio-add-item widget (list 'item + :button-face face :format "%t" :tag "" :value (w3-form-element-value el))) @@ -319,6 +315,7 @@ :value (w3-form-element-value el) :action 'w3-form-radio-button-update (list 'item + :button-face face :format "%t" :tag "" :value (w3-form-element-value el))) @@ -341,6 +338,8 @@ (defun w3-form-create-image (el face) (widget-create 'push-button + :button-face face + :value-face face :notify 'w3-form-submit/reset-callback :value (or (plist-get (w3-form-element-plist el) 'alt) @@ -371,11 +370,15 @@ (options (mapcar (function (lambda (pair) (list 'choice-item :format "%[%t%]" + :tab-order -1 + :button-face face + :value-face face :menu-tag-get `(lambda (zed) ,(car pair)) :tag (mule-truncate-string (car pair) size ? ) :value (cdr pair)))) w3-form-valid-key-sizes))) (apply 'widget-create 'menu-choice + :emacspeak-help 'w3-form-summarize-field :value 1024 :ignore-case t :tag "Key Length" @@ -413,6 +416,7 @@ (defun w3-form-create-multiline (el face) (widget-create 'push-button + :button-face face :notify 'w3-do-text-entry "Multiline text area")) @@ -615,8 +619,8 @@ "[nothing]")))) (defun w3-form-summarize-keygen-list (data widget) - ) - + (format "Submitting this form will generate a %d bit key (not)" + (widget-value (w3-form-element-widget data)))) (defun w3-form-maybe-submit-by-keypress () (interactive) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/w3-parse.el --- a/lisp/w3/w3-parse.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/w3-parse.el Mon Aug 13 09:24:17 2007 +0200 @@ -1289,12 +1289,17 @@ nil (((li) *include *next)) (*retry *next)) + ((p) + nil + nil + (*retry *next)) ((li) nil ;; Push

  • before data characters or block ;; elements. ;; Non-SGML. - (((%text %block) li *same error)) + (;; ((p) b *same nil) + ((%text %block) li *same error)) nil)])) ((lh) (content-model . [((%text) @@ -1506,6 +1511,7 @@ ((tbody) nil (((tr) tbody *same) + ((td th) tr *same) ;; error handling ((%body.content) tbody *same error)) nil)])) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/w3-print.el --- a/lisp/w3/w3-print.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/w3-print.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-print.el --- Printing support for emacs-w3 ;; Author: wmperry -;; Created: 1997/02/07 01:05:01 -;; Version: 1.7 +;; Created: 1997/04/02 21:09:14 +;; Version: 1.8 ;; Keywords: faces, help, printing, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -69,7 +69,7 @@ w3-temporary-directory) nil 5) (shell-command (format - "cd %s ; latex w3-tmp.latex ; %s w3-tmp.dvi ; rm -f w3-tmp*" + "cd %s ; latex w3-tmp.latex ; latex w3-tmp.latex ; %s w3-tmp.dvi ; rm -f w3-tmp*" w3-temporary-directory w3-print-command)) (kill-buffer "*Shell Command Output*"))))))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/w3-vars.el --- a/lisp/w3/w3-vars.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/w3-vars.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-vars.el,v --- All variable definitions for emacs-w3 ;; Author: wmperry -;; Created: 1997/03/26 20:12:26 -;; Version: 1.116 +;; Created: 1997/04/03 21:42:29 +;; Version: 1.120 ;; Keywords: comm, help, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -33,7 +33,7 @@ (require 'w3-cus) ; Grab everything that is customized (defconst w3-version-number - (let ((x "p3.0.75")) + (let ((x "p3.0.79")) (if (string-match "State:[ \t\n]+.\\([^ \t\n]+\\)" x) (setq x (substring x (match-beginning 1) (match-end 1))) (setq x (substring x 1))) @@ -41,7 +41,7 @@ (function (lambda (x) (if (= x ?-) "." (char-to-string x)))) x "")) "Version # of w3-mode.") -(defconst w3-version-date (let ((x "1997/03/26 20:12:26")) +(defconst w3-version-date (let ((x "1997/04/03 21:42:29")) (if (string-match "Date: \\([^ \t\n]+\\)" x) (substring x (match-beginning 1) (match-end 1)) x)) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/w3-xemac.el --- a/lisp/w3/w3-xemac.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/w3-xemac.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-xemac.el --- XEmacs specific functions for emacs-w3 ;; Author: wmperry -;; Created: 1997/03/09 01:59:33 -;; Version: 1.16 +;; Created: 1997/04/01 19:23:21 +;; Version: 1.17 ;; Keywords: faces, help, mouse, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -100,26 +100,6 @@ ) (t nil))) -(defun w3-color-light-p (color-or-face) - (let (face color) - (cond - ((or (facep color-or-face) - (and (symbolp color-or-face) - (find-face color-or-face))) - (setq color (specifier-instance (face-background color-or-face)))) - ((color-instance-p color-or-face) - (setq color color-or-face)) - ((color-specifier-p color-or-face) - (setq color (specifier-instance color-or-face))) - ((stringp color-or-face) - (setq color (make-color-instance color-or-face))) - (t (signal 'wrong-type-argument 'color-or-face-p))) - (if color - (not (< (apply '+ (color-instance-rgb-components color)) - (/ (apply '+ (color-instance-rgb-components - (make-color-instance "white"))) 3))) - t))) - (defun w3-mode-motion-hook (e) (let* ((glyph (event-glyph e)) (x (and glyph (event-glyph-x-pixel e))) diff -r 578fd4947a72 -r 7d55a9ba150c lisp/w3/w3.el --- a/lisp/w3/w3.el Mon Aug 13 09:23:08 2007 +0200 +++ b/lisp/w3/w3.el Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions ;; Author: wmperry -;; Created: 1997/03/26 00:02:30 -;; Version: 1.103 +;; Created: 1997/04/03 02:06:01 +;; Version: 1.105 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -421,7 +421,13 @@ (let ((window-distance (cdr-safe (assq target w3-target-window-distances)))) (if (numberp window-distance) (other-window window-distance) - (error "target %S not found." target)))) + (case target + ((_blank external) + (w3-fetch-other-frame url)) + (_top + (delete-other-windows)) + (otherwise + (message "target %S not found." target)))))) (cond ((= (string-to-char url) ?#) (w3-relative-link url)) @@ -1890,7 +1896,7 @@ (defun w3-find-default-stylesheets () (setq w3-loaded-stylesheets nil) - (let* ((lightp (w3-color-light-p 'default)) + (let* ((lightp (css-color-light-p 'default)) (longname (if lightp "stylesheet-light" "stylesheet-dark")) (shortname (if lightp "light.css" "dark.css")) (directories (list diff -r 578fd4947a72 -r 7d55a9ba150c lwlib/lwlib.c --- a/lwlib/lwlib.c Mon Aug 13 09:23:08 2007 +0200 +++ b/lwlib/lwlib.c Mon Aug 13 09:24:17 2007 +0200 @@ -36,10 +36,16 @@ #define alloca __builtin_alloca #endif -#if ((!__GNUC__) && !defined(__hpux)) && !defined(_AIX) && !defined (_SCO_DS) && !defined (__USLC__) && !defined(sinix) +#if ((!__GNUC__) && !defined(__hpux)) && !defined(_AIX) && !defined (_SCO_DS) && !defined (__USLC__) && !defined(sinix) && !defined(WINDOWSNT) #include #endif +#ifdef WINDOWSNT +/* NT has an _alloca function prototyped in malloc.h --marcpa */ +#include +#endif + + #ifdef __SUNPRO_C void *__builtin_alloca (unsigned int); #endif @@ -476,11 +482,13 @@ return (s1 && s2) ? strcmp (s1, s2) : s1 ? False : !!s2; } +#ifndef WINDOWSNT static change_type max (change_type i1, change_type i2) { return (int)i1 > (int)i2 ? i1 : i2; } +#endif #if 0 diff -r 578fd4947a72 -r 7d55a9ba150c man/Makefile --- a/man/Makefile Mon Aug 13 09:23:08 2007 +0200 +++ b/man/Makefile Mon Aug 13 09:24:17 2007 +0200 @@ -26,10 +26,9 @@ EMACS = xemacs EMACSFLAGS = -batch -q -no-site-file -# Implies makeinfo-1.64 +# NOTE: You *must* have a patched makeinfo-1.67 or later to rebuild the +# info tree. MAKEINFO = makeinfo -# Implies makeinfo-1.67 -NEWMAKEINFO = makeinfo-1.67 .SUFFIXES: .info .texi .dvi @@ -69,10 +68,10 @@ FORCE : ../info/w3.info : w3.texi - -$(NEWMAKEINFO) w3.texi -o ../info/w3.info + -$(MAKEINFO) w3.texi -o ../info/w3.info ../info/texinfo.info : texinfo.texi - -$(NEWMAKEINFO) texinfo.texi -o ../info/texinfo.info + -$(MAKEINFO) texinfo.texi -o ../info/texinfo.info ../info/vm.info : vm.texi diff -r 578fd4947a72 -r 7d55a9ba150c man/custom.texi --- a/man/custom.texi Mon Aug 13 09:23:08 2007 +0200 +++ b/man/custom.texi Mon Aug 13 09:24:17 2007 +0200 @@ -13,7 +13,7 @@ @comment node-name, next, previous, up @top The Customization Library -Version: 1.68 +Version: 1.69 @menu * Introduction:: diff -r 578fd4947a72 -r 7d55a9ba150c man/gnus.texi --- a/man/gnus.texi Mon Aug 13 09:23:08 2007 +0200 +++ b/man/gnus.texi Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename gnus -@settitle Gnus 5.4.37 Manual +@settitle Gnus 5.4.40 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -287,7 +287,7 @@ @tex @titlepage -@title Gnus 5.4.37 Manual +@title Gnus 5.4.40 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.37. +This manual corresponds to Gnus 5.4.40. @end ifinfo @@ -641,8 +641,10 @@ What Gnus does when it encounters a new group is determined by the @code{gnus-subscribe-newsgroup-method} variable. -This variable should contain a function. Some handy pre-fab values -are: +This variable should contain a function. This function will be called +with the name of the new group as the only parameter. + +Some handy pre-fab functions are: @table @code @@ -2013,7 +2015,7 @@ Here's an example group parameter list: @example -((to-address . "ding@@ifi.uio.no") +((to-address . "ding@@gnus.org") (auto-expiry . t)) @end example @@ -4727,7 +4729,7 @@ (setq gnus-thread-sort-functions '(gnus-thread-sort-by-number gnus-thread-sort-by-subject - gnus-thread-sort-by-score)) + gnus-thread-sort-by-total-score)) @end lisp The threads that have highest score will be displayed first in the @@ -7518,6 +7520,11 @@ List of regexps to match headers included in digested messages. The headers will be included in the sequence they are matched. +@item gnus-add-to-list +@vindex gnus-add-to-list +If non-@code{nil}, add a @code{to-list} group parameter to mail groups +that have none when you do a @kbd{a}. + @end table @@ -11577,12 +11584,12 @@ files are applicable to which group. Say you want to use the score file -@file{/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE} and +@file{/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE} and all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory: @lisp (setq gnus-global-score-files - '("/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE" + '("/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE" "/ftp@@ftp.some-where:/pub/score/")) @end lisp @@ -13302,7 +13309,7 @@ If you are a moderator, you can use the @file{gnus-mdrtn.el} package. It is not included in the standard Gnus package. Write a mail to -@samp{larsi@@ifi.uio.no} and state what group you moderate, and you'll +@samp{larsi@@gnus.org} and state what group you moderate, and you'll get a copy. The moderation package is implemented as a minor mode for summary @@ -13432,7 +13439,7 @@ false pretenses. I press @kbd{g} and Gnus merrily informs me that I have 10 new emails. I say ``Golly gee! Happy is me!'' and selects the mail group, only to find two pyramid schemes, seven advertisements -``New! Miracle tonic for growing full, lustrouos hair on your toes!'' +(``New! Miracle tonic for growing full, lustrouos hair on your toes!'') and one mail asking me to repent and find some god. This is annoying. @@ -13468,6 +13475,20 @@ header, it's probably ok. All the rest goes to the @samp{spam} group. (This idea probably comes from Tim Pierce.) +In addition, many mail spammers talk directly to your @code{smtp} server +and do not include your email address explicitly in the @code{To} +header. Why they do this is unknown---perhaps it's to thwart this +twarting scheme? In any case, this is trivial to deal with---you just +put anything not addressed to you in the @samp{spam} group by ending +your fancy split rule in this way: + +@lisp +( + ... + (to "larsi" "misc") + "spam") +@end lisp + In my experience, this will sort virtually everything into the right group. You still have to check the @samp{spam} group from time to time to check for legitimate mail, though. If you feel like being a good net @@ -13964,6 +13985,7 @@ Ulrik Dickow, Dave Disser, Joev Dubach, +Michael Welsh Duggan, Paul Eggert, Michael Ernst, Luc Van Eycken, @@ -14016,6 +14038,7 @@ Colin Rafferty, Bart Robinson, Jason Rumney, +Dewey M. Sasser, Loren Schall, Dan Schmidt, Ralph Schleicher, @@ -14024,6 +14047,7 @@ Danny Siu, Paul D. Smith, Jeff Sparkes, +Toby Speight, Michael Sperber, Richard Stallman, Greg Stark, @@ -15010,8 +15034,8 @@ @cindex gnu.emacs.gnus @cindex ding mailing list -You can also ask on the ding mailing list---@samp{ding@@ifi.uio.no}. -Write to @samp{ding-request@@ifi.uio.no} to subscribe. +You can also ask on the ding mailing list---@samp{ding@@gnus.org}. +Write to @samp{ding-request@@gnus.org} to subscribe. @node A Programmers Guide to Gnus @@ -15030,6 +15054,7 @@ and general method of operations. @menu +* Gnus Utility Functions:: Common functions and variable to use. * Backend Interface:: How Gnus communicates with the servers. * Score File Syntax:: A BNF definition of the score file standard. * Headers:: How Gnus stores headers internally. @@ -15040,6 +15065,114 @@ @end menu +@node Gnus Utility Functions +@subsection Gnus Utility Functions +@cindex Gnus utility functions +@cindex utility functions +@cindex functions +@cindex internal variables + +When writing small functions to be run from hooks (and stuff), it's +vital to have access to the Gnus internal functions and variables. +Below is a list of the most common ones. + +@table @code + +@item gnus-newsgroup-name +@vindex gnus-newsgroup-name +This variable holds the name of the current newsgroup. + +@item gnus-find-method-for-group +@findex gnus-find-method-for-group +A function that returns the select method for @var{group}. + +@item gnus-group-real-name +@findex gnus-group-real-name +Takes a full (prefixed) Gnus group name, and returns the unprefixed +name. + +@item gnus-group-prefixed-name +@findex gnus-group-prefixed-name +Takes an unprefixed group name and a select method, and returns the full +(prefixed) Gnus group name. + +@item gnus-get-info +@findex gnus-get-info +Return the group info list for @var{group}. + +@item gnus-add-current-to-buffer-list +@findex gnus-add-current-to-buffer-list +Add the current buffer to the list of buffers to be killed on Gnus +exit. + +@item gnus-continuum-version +@findex gnus-continuum-version +Take a Gnus version string as a parameter and returns a floating point +number. Earlier versions will always get a lower number than later +versions. + +@item gnus-group-read-only-p +@findex gnus-group-read-only-p +Say whether @var{group} is read-only or not. + +@item gnus-news-group-p +@findex gnus-news-group-p +Say whether @var{group} came from a news backend. + +@item gnus-ephemeral-group-p +@findex gnus-ephemeral-group-p +Say whether @var{group} is ephemeral or not. + +@item gnus-server-to-method +@findex gnus-server-to-method +Return the select method corresponding to @var{server}. + +@item gnus-server-equal +@findex gnus-server-equal +Say whether two virtual servers are equal. + +@item gnus-group-native-p +@findex gnus-group-native-p +Say whether @var{group} is native or not. + +@item gnus-group-secondary-p +@findex gnus-group-secondary-p +Say whether @var{group} is secondary or not. + +@item gnus-group-foreign-p +@findex gnus-group-foreign-p +Say whether @var{group} is foreign or not. + +@item group-group-find-parameter +@findex group-group-find-parameter +Return the parameter list of @var{group}. If given a second parameter, +return the value of that parameter for @var{group}. + +@item gnus-group-set-parameter +@findex gnus-group-set-parameter +Takes three parameters; @var{group}, @var{parameter} and @var{value}. + +@item gnus-narrow-to-body +@findex gnus-narrow-to-body +Narrow the current buffer to the body of the article. + +@item gnus-check-backend-function +@findex gnus-check-backend-function +Takes two parameters, @var{function} and @var{group}. If the backend +@var{group} comes from supports @var{function}, return non-@code{nil}. + +@lisp +(gnus-check-backend-function "request-scan" "nnml:misc") +=> t +@end lisp + +@item gnus-read-method +@findex gnus-read-method +Prompt the user for a select method. + +@end table + + @node Backend Interface @subsection Backend Interface @@ -16003,7 +16136,7 @@ ("nnml:my.mail" 3 ((1 . 5) 9 (20 . 55)) ((tick (15 . 19)) (replied 3 6 (19 . 3))) (nnml "") - (auto-expire (to-address "ding@@ifi.uio.no"))) + (auto-expire (to-address "ding@@gnus.org"))) @end example The first element is the @dfn{group name}---as Gnus knows the group, @@ -16037,6 +16170,67 @@ @samp{} consed on to a @samp{range}, but that's a bitch to say in pseudo-BNF. +If you have a Gnus info and want to access the elements, Gnus offers a +series of macros for getting/setting these elements. + +@table @code +@item gnus-info-group +@itemx gnus-info-set-group +@findex gnus-info-group +@findex gnus-info-set-group +Get/set the group name. + +@item gnus-info-rank +@itemx gnus-info-set-rank +@findex gnus-info-rank +@findex gnus-info-set-rank +Get/set the group rank. + +@item gnus-info-level +@itemx gnus-info-set-level +@findex gnus-info-level +@findex gnus-info-set-level +Get/set the group level. + +@item gnus-info-score +@itemx gnus-info-set-score +@findex gnus-info-score +@findex gnus-info-set-score +Get/set the group score. + +@item gnus-info-read +@itemx gnus-info-set-read +@findex gnus-info-read +@findex gnus-info-set-read +Get/set the ranges of read articles. + +@item gnus-info-marks +@itemx gnus-info-set-marks +@findex gnus-info-marks +@findex gnus-info-set-marks +Get/set the lists of ranges of marked articles. + +@item gnus-info-method +@itemx gnus-info-set-method +@findex gnus-info-method +@findex gnus-info-set-method +Get/set the group select method. + +@item gnus-info-params +@itemx gnus-info-set-params +@findex gnus-info-params +@findex gnus-info-set-params +Get/set the group parameters. +@end table + +All the getter functions take one parameter---the info list. The setter +functions take two parameters---the info list and the new value. + +The last three elements in the group info aren't mandatory, so it may be +necessary to extend the group info before setting the element. If this +is necessary, you can just pass on a non-@code{nil} third parameter to +the three final setter functions to have this happen automatically. + @node Emacs/XEmacs Code @subsection Emacs/XEmacs Code diff -r 578fd4947a72 -r 7d55a9ba150c man/internals/Makefile --- a/man/internals/Makefile Mon Aug 13 09:23:08 2007 +0200 +++ b/man/internals/Makefile Mon Aug 13 09:24:17 2007 +0200 @@ -32,7 +32,7 @@ info : ../../info/$(NAME).info ../../info/$(NAME).info: $(srcs) index.texi - makeinfo $(NAME).texi + $(MAKEINFO) $(NAME).texi dvi : $(NAME).dvi diff -r 578fd4947a72 -r 7d55a9ba150c man/message.texi --- a/man/message.texi Mon Aug 13 09:23:08 2007 +0200 +++ b/man/message.texi Mon Aug 13 09:24:17 2007 +0200 @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message -@settitle Message 5.4.37 Manual +@settitle Message 5.4.40 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -39,7 +39,7 @@ @tex @titlepage -@title Message 5.4.37 Manual +@title Message 5.4.40 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.37. Message is distributed with +This manual corresponds to Message 5.4.40. Message is distributed with the Gnus distribution bearing the same version number as this manual has. @@ -948,6 +948,21 @@ @vindex message-send-hook Hook run before sending messages. +If you want to add certain headers before sending, you can use the +@code{message-add-header} function in this hook. For instance: +@findex message-add-header + +@lisp +(add-hook 'message-send-hook 'my-message-add-content) +(defun my-message-add-content () + (message-add-header + "Mime-Version: 1.0" + "Content-Type: text/plain" + "Content-Transfer-Encoding: 7bit")) +@end lisp + +This function won't add the header if the header is already present. + @item message-send-mail-hook @vindex message-send-mail-hook Hook run before sending mail messages. diff -r 578fd4947a72 -r 7d55a9ba150c man/w3.texi --- a/man/w3.texi Mon Aug 13 09:23:08 2007 +0200 +++ b/man/w3.texi Mon Aug 13 09:24:17 2007 +0200 @@ -55,7 +55,7 @@ @sp 4 @center Third Edition, Emacs/W3 Version 3.0 @sp 1 -@center February 1997 +@center March 1997 @sp 5 @center William M. Perry @center @i{wmperry@@cs.indiana.edu} @@ -2199,12 +2199,16 @@ For braille tactile feedback devices. @item Speech Aural presentation. +@item Light +The stylesheet will only be applied if the user is using a light background. +@item Dark +The stylesheet will only be applied if the user is using a dark background. @item Emacs The stylesheet will only be applied if the user is running in Emacs 19. @item XEmacs The stylesheet will only be applied if the user is running in XEmacs 19. @item All -The default value, the style sheet applies to all output devices +The default value, the style sheet applies to all output devices. @end table @node Speech Properties, , Media Selection, Properties diff -r 578fd4947a72 -r 7d55a9ba150c man/widget.texi --- a/man/widget.texi Mon Aug 13 09:23:08 2007 +0200 +++ b/man/widget.texi Mon Aug 13 09:24:17 2007 +0200 @@ -1,6 +1,6 @@ \input texinfo.tex -@c $Id: widget.texi,v 1.10 1997/03/28 02:29:31 steve Exp $ +@c $Id: widget.texi,v 1.11 1997/04/05 18:08:23 steve Exp $ @c %**start of header @setfilename widget @@ -15,7 +15,7 @@ @comment node-name, next, previous, up @top The Emacs Widget Library -Version: 1.68 +Version: 1.69 @menu * Introduction:: diff -r 578fd4947a72 -r 7d55a9ba150c nt/ChangeLog --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nt/ChangeLog Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,60 @@ +Thu Mar 27 20:56:21 1997 marcpa (marcpa at MARCPA) + + * Synced with 20.1b9. + +Sun Mar 16 00:32:15 1997 marcpa (marcpa at MARCPA) + + * lisp/eterm/README.term is truncated: is it just me (because + I'm on NT) or everyone else sees this ? + Answer: it is because it contains a ^Z embedded in it, therefore + it needs to be inserted in binary mode in CVS. + +Thu Mar 13 00:19:25 1997 marcpa (marcpa at MARCPA) + + * At end of compilation, there are some unresolved symbols: + +link.exe @C:\TEMP\nma00115. +sysdep.obj : error LNK2001: unresolved external symbol _vfork +../src/temacs.exe : warning LNK4088: image being generated due to /FORCE +option; image may not run + + +Wed Mar 12 23:18:53 1997 marcpa (marcpa at MARCPA) + + * Need to copy the nt/inc directory David originally submitted or + NT code won't compile. + + * Need to copy nt/{config.h,paths.h,ad2c.sed,xemacs.mak} in src. + + * Had to modify XEmacs sources here and there : see the diffs + between NT_FIRST_COMPILE and V20_1_beta9. + + * Needed to patch X11R6.3 sources: (include/x11/Xmd.h:155) BOOL is + already defined by Windows and is a long, while X wants it to be + an unsigned char. + +--- Xmd.h~ Thu Jun 08 23:20:40 1995 ++++ Xmd.h Sun Mar 16 13:09:10 1997 +@@ -150,8 +150,9 @@ + typedef CARD16 BITS16; + typedef CARD8 BYTE; + ++#ifndef WIN32 + typedef CARD8 BOOL; +- ++#endif + + * cpp.exe not used: cl.exe from VC++4.2 seems to handle everything + properly. + +NOTES: + +Compilation with nmake -f xemacs.mak. + +Using X11R6.3 for NT. + +Work started with 20.1b2. + +Local Variables: +mode: change-log +End: diff -r 578fd4947a72 -r 7d55a9ba150c nt/config.h --- a/nt/config.h Mon Aug 13 09:23:08 2007 +0200 +++ b/nt/config.h Mon Aug 13 09:24:17 2007 +0200 @@ -79,10 +79,10 @@ the user's full name. If neither this nor any other field contains the right thing, use pw_name, giving the user's login name, since that is better than nothing. */ +#define USER_FULL_NAME pw->pw_gecos #if 0 -#define USER_FULL_NAME pw->pw_gecos +#define USER_FULL_NAME unknown #endif -#define USER_FULL_NAME unknown /* Define AMPERSAND_FULL_NAME if you use the convention that & in the full name stands for the login id. */ diff -r 578fd4947a72 -r 7d55a9ba150c nt/inc/arpa/inet.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nt/inc/arpa/inet.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,1 @@ +/* null version of - has everything */ diff -r 578fd4947a72 -r 7d55a9ba150c nt/inc/netdb.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nt/inc/netdb.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,1 @@ +/* null version of - has everything */ diff -r 578fd4947a72 -r 7d55a9ba150c nt/inc/netinet/in.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nt/inc/netinet/in.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,1 @@ +/* null version of - has everything */ diff -r 578fd4947a72 -r 7d55a9ba150c nt/inc/pwd.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nt/inc/pwd.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,18 @@ +#ifndef _PWD_H_ +#define _PWD_H_ +/* + * pwd.h doesn't exist on NT, so we put together our own. + */ + +struct passwd { + char *pw_name; + char *pw_passwd; + int pw_uid; + int pw_gid; + int pw_quota; + char *pw_gecos; + char *pw_dir; + char *pw_shell; +}; + +#endif /* _PWD_H_ */ diff -r 578fd4947a72 -r 7d55a9ba150c nt/inc/sys/dir.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nt/inc/sys/dir.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,77 @@ +/* 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. */ + +/* + -- definitions for 4.2BSD-compatible directory access + + last edit: 09-Jul-1983 D A Gwyn +*/ + +#ifdef VMS +#ifndef FAB$C_BID +#include +#endif +#ifndef NAM$C_BID +#include +#endif +#ifndef RMS$_SUC +#include +#endif +#include "vms-dir.h" +#endif /* VMS */ + +#define DIRBLKSIZ 512 /* size of directory block */ +#ifdef VMS +#define MAXNAMLEN (DIR$S_NAME + 7) /* 80 plus room for version #. */ +#define MAXFULLSPEC NAM$C_MAXRSS /* Maximum full spec */ +#else +#ifdef WINDOWSNT +#define MAXNAMLEN 255 +#else /* not WINDOWSNT */ +#define MAXNAMLEN 15 /* maximum filename length */ +#endif /* not WINDOWSNT */ +#endif /* VMS */ + /* NOTE: MAXNAMLEN must be one less than a multiple of 4 */ + +struct direct /* data from readdir() */ + { + long d_ino; /* inode number of entry */ + unsigned short d_reclen; /* length of this record */ + unsigned short d_namlen; /* length of string in d_name */ + char d_name[MAXNAMLEN+1]; /* name of file */ + }; + +typedef struct + { + int dd_fd; /* file descriptor */ + int dd_loc; /* offset in block */ + int dd_size; /* amount of valid data */ + char dd_buf[DIRBLKSIZ]; /* directory block */ + } DIR; /* stream data from opendir() */ + +#ifndef WINDOWSNT +extern DIR *opendir (CONST char *filename); +extern int closedir (DIR *dirp); +extern struct direct *readdir (DIR *dirp); +extern struct direct *readdirver (DIR *dirp); +extern long telldir (DIR *dirp); +extern void seekdir (DIR *dirp, long loc); + +#define rewinddir( dirp ) seekdir( dirp, 0L ) +#endif diff -r 578fd4947a72 -r 7d55a9ba150c nt/inc/sys/file.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nt/inc/sys/file.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,8 @@ +/* + * sys\file.h doesn't exist on NT - only needed for these constants + */ + +#define F_OK 0 +#define X_OK 1 +#define W_OK 2 +#define R_OK 4 diff -r 578fd4947a72 -r 7d55a9ba150c nt/inc/sys/ioctl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nt/inc/sys/ioctl.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,5 @@ +/* + * sys\ioctl.h doesn't exist on NT...rather than including it conditionally + * in many of the source files, we just extend the include path so that the + * compiler will pick this up empty header instead. + */ diff -r 578fd4947a72 -r 7d55a9ba150c nt/inc/sys/param.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nt/inc/sys/param.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,10 @@ +#ifndef _PARAM_H_ +#define _PARAM_H_ + +/* + * sys\param.h doesn't exist on NT, so we'll make one. + */ + +#define NBPG 4096 + +#endif /* _PARAM_H_ */ diff -r 578fd4947a72 -r 7d55a9ba150c nt/inc/sys/socket.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nt/inc/sys/socket.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,119 @@ +/* Workable version of based on winsock.h */ + +#ifndef _SOCKET_H_ +#define _SOCKET_H_ + +/* defeat the multiple include protection */ +#ifdef _WINSOCKAPI_ +#undef _WINSOCKAPI_ +#endif + +/* avoid confusion with our version of select */ +#ifdef select +#undef select +#define MUST_REDEF_SELECT +#endif + +/* avoid clashing with our version of FD_SET if already defined */ +#ifdef FD_SET +#undef FD_SET +#undef FD_CLR +#undef FD_ISSET +#undef FD_ZERO +#endif + +/* allow us to provide our own version of fd_set */ +#define fd_set ws_fd_set + +/* avoid duplicate definition of timeval */ +#ifdef HAVE_TIMEVAL +#define timeval ws_timeval +#endif + +#include + +/* redefine select to reference our version */ +#ifdef MUST_REDEF_SELECT +#define select sys_select +#undef MUST_REDEF_SELECT +#endif + +/* revert to our version of FD_SET */ +#undef FD_SET +#undef FD_CLR +#undef FD_ISSET +#undef FD_ZERO +#undef fd_set +#include "nt.h" + +#ifdef HAVE_TIMEVAL +#undef timeval +#endif + +/* shadow functions where we provide our own wrapper */ +#define socket sys_socket +#define bind sys_bind +#define connect sys_connect +#define htons sys_htons +#define ntohs sys_ntohs +#define inet_addr sys_inet_addr +#define gethostname sys_gethostname +#define gethostbyname sys_gethostbyname +#define getservbyname sys_getservbyname + +int sys_socket(int af, int type, int protocol); +int sys_bind (int s, const struct sockaddr *addr, int namelen); +int sys_connect (int s, const struct sockaddr *addr, int namelen); +u_short sys_htons (u_short hostshort); +u_short sys_ntohs (u_short netshort); +unsigned long sys_inet_addr (const char * cp); +int sys_gethostname (char * name, int namelen); +struct hostent * sys_gethostbyname(const char * name); +struct servent * sys_getservbyname(const char * name, const char * proto); + +/* we are providing a real h_errno variable */ +#undef h_errno +extern int h_errno; + +/* map winsock error codes to standard names */ +#define EWOULDBLOCK WSAEWOULDBLOCK +#define EINPROGRESS WSAEINPROGRESS +#define EALREADY WSAEALREADY +#define ENOTSOCK WSAENOTSOCK +#define EDESTADDRREQ WSAEDESTADDRREQ +#define EMSGSIZE WSAEMSGSIZE +#define EPROTOTYPE WSAEPROTOTYPE +#define ENOPROTOOPT WSAENOPROTOOPT +#define EPROTONOSUPPORT WSAEPROTONOSUPPORT +#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT +#define EOPNOTSUPP WSAEOPNOTSUPP +#define EPFNOSUPPORT WSAEPFNOSUPPORT +#define EAFNOSUPPORT WSAEAFNOSUPPORT +#define EADDRINUSE WSAEADDRINUSE +#define EADDRNOTAVAIL WSAEADDRNOTAVAIL +#define ENETDOWN WSAENETDOWN +#define ENETUNREACH WSAENETUNREACH +#define ENETRESET WSAENETRESET +#define ECONNABORTED WSAECONNABORTED +#define ECONNRESET WSAECONNRESET +#define ENOBUFS WSAENOBUFS +#define EISCONN WSAEISCONN +#define ENOTCONN WSAENOTCONN +#define ESHUTDOWN WSAESHUTDOWN +#define ETOOMANYREFS WSAETOOMANYREFS +#define ETIMEDOUT WSAETIMEDOUT +#define ECONNREFUSED WSAECONNREFUSED +#define ELOOP WSAELOOP +/* #define ENAMETOOLONG WSAENAMETOOLONG */ +#define EHOSTDOWN WSAEHOSTDOWN +#define EHOSTUNREACH WSAEHOSTUNREACH +/* #define ENOTEMPTY WSAENOTEMPTY */ +#define EPROCLIM WSAEPROCLIM +#define EUSERS WSAEUSERS +#define EDQUOT WSAEDQUOT +#define ESTALE WSAESTALE +#define EREMOTE WSAEREMOTE + +#endif /* _SOCKET_H_ */ + +/* end of socket.h */ diff -r 578fd4947a72 -r 7d55a9ba150c nt/inc/sys/time.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nt/inc/sys/time.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,24 @@ +/* + * sys/time.h doesn't exist on NT + */ + +#include + +struct timeval + { + long tv_sec; /* seconds */ + long tv_usec; /* microseconds */ + }; + +struct timezone + { + int tz_minuteswest; /* minutes west of Greenwich */ + int tz_dsttime; /* type of dst correction */ + }; + +#ifndef HAVE_X_WINDOWS +/* X11R6 on NT provides the single parameter version of this command */ +void gettimeofday (struct timeval *, struct timezone *); +#endif + +/* end of sys/time.h */ diff -r 578fd4947a72 -r 7d55a9ba150c nt/inc/unistd.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nt/inc/unistd.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,1 @@ +/* Fake unistd.h: config.h already provides most of the relevant things. */ diff -r 578fd4947a72 -r 7d55a9ba150c nt/xemacs.mak --- a/nt/xemacs.mak Mon Aug 13 09:23:08 2007 +0200 +++ b/nt/xemacs.mak Mon Aug 13 09:24:17 2007 +0200 @@ -1,1000 +1,1010 @@ -MSDEV=F:/msdev -X11R6=F:/utils/X11R6 -XEMACS=.. -LISP=$(XEMACS)/lisp - -#------------------------------------------------------------------------------ - -# Generic variables - -INCLUDES=-I$(X11R6)/include -I$(XEMACS)/nt/inc -I$(XEMACS)/src\ - -I$(XEMACS)/lwlib -I$(MSDEV)/include -LIBRARIES= - -OUTDIR=obj - -#------------------------------------------------------------------------------ - -# LASTFILE Library - -LASTFILE=$(OUTDIR)/lastfile.lib -LASTFILE_SRC=$(XEMACS)/src -LASTFILE_FLAGS=-nologo -w -Od $(INCLUDES) -Fo$@ -c -LASTFILE_OBJS= \ - $(OUTDIR)/lastfile.obj - -$(LASTFILE): $(LASTFILE_OBJS) - link.exe -lib /nologo /out:$@ $(LASTFILE_OBJS) - -$(OUTDIR)/lastfile.obj: $(LASTFILE_SRC)/lastfile.c - $(CC) $(LASTFILE_FLAGS) $** - -#------------------------------------------------------------------------------ - -# LWLIB Library - -LWLIB=$(OUTDIR)/lwlib.lib -LWLIB_SRC=$(XEMACS)/lwlib -LWLIB_FLAGS=/nologo /w /Od /Yd /Zd $(INCLUDES) /D "WIN32" /D "_DEBUG" \ - /D "_WINDOWS" /D "MENUBARS_LUCID" /D "SCROLLBARS_LUCID" /D "DIALOGS_ATHENA" \ - /D "WINDOWSNT" /Fo$@ /c -LWLIB_OBJS= \ - $(OUTDIR)/lwlib-config.obj \ - $(OUTDIR)/lwlib-utils.obj \ - $(OUTDIR)/lwlib-Xaw.obj \ - $(OUTDIR)/lwlib-Xlw.obj \ - $(OUTDIR)/lwlib.obj \ - $(OUTDIR)/xlwmenu.obj \ - $(OUTDIR)/xlwscrollbar.obj - -$(LWLIB): $(LWLIB_OBJS) - link.exe -lib -nologo -debug -debugtype:both -out:$@ $(LWLIB_OBJS) - -$(OUTDIR)/lwlib-config.obj: $(LWLIB_SRC)/lwlib-config.c - $(CC) $(LWLIB_FLAGS) $** - -$(OUTDIR)/lwlib-utils.obj: $(LWLIB_SRC)/lwlib-utils.c - $(CC) $(LWLIB_FLAGS) $** - -$(OUTDIR)/lwlib-Xaw.obj: $(LWLIB_SRC)/lwlib-Xaw.c - $(CC) $(LWLIB_FLAGS) $** - -$(OUTDIR)/lwlib-Xlw.obj: $(LWLIB_SRC)/lwlib-Xlw.c - $(CC) $(LWLIB_FLAGS) $** - -$(OUTDIR)/lwlib.obj: $(LWLIB_SRC)/lwlib.c - $(CC) $(LWLIB_FLAGS) $** - -$(OUTDIR)/xlwmenu.obj: $(LWLIB_SRC)/xlwmenu.c - $(CC) $(LWLIB_FLAGS) $** - -$(OUTDIR)/xlwscrollbar.obj: $(LWLIB_SRC)/xlwscrollbar.c - $(CC) $(LWLIB_FLAGS) $** - -#------------------------------------------------------------------------------ - -# lib-src programs - -LIB_SRC=$(XEMACS)/lib-src -LIB_SRC_FLAGS=$(INCLUDES) -D_DEBUG -DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN \ - -D_NTSDK -D_M_IX86 -D_DLL -D_MT -D_X86_ -Demacs -DHAVE_CONFIG_H -D_MSC_VER=999 -LIB_SRC_LIBS= kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ - advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib \ - odbccp32.lib msvcrt.lib -LIB_SRC_LFLAGS=/nologo $(LIB_SRC_LIBS) /base:0x1000000\ - /subsystem:console /pdb:none /debugtype:both /machine:I386\ - /nodefaultlib /out:$@ /debug:full - -DOC=$(LIB_SRC)/DOC -DOC_SRCS_1=\ - $(XEMACS)/src/abbrev.c \ - $(XEMACS)/src/alloc.c \ - $(XEMACS)/src/alloca.c \ - $(XEMACS)/src/blocktype.c \ - $(XEMACS)/src/buffer.c \ - $(XEMACS)/src/bytecode.c \ - $(XEMACS)/src/callint.c \ - $(XEMACS)/src/callproc.c \ - $(XEMACS)/src/casefiddle.c \ - $(XEMACS)/src/casetab.c \ - $(XEMACS)/src/chartab.c \ - $(XEMACS)/src/cmdloop.c \ - $(XEMACS)/src/cmds.c \ - $(XEMACS)/src/console-stream.c \ - $(XEMACS)/src/console-x.c \ - $(XEMACS)/src/console.c \ - $(XEMACS)/src/data.c \ - $(XEMACS)/src/database.c \ - $(XEMACS)/src/debug.c \ - $(XEMACS)/src/device-x.c \ - $(XEMACS)/src/device.c \ - $(XEMACS)/src/dgif_lib.c \ - $(XEMACS)/src/dialog-x.c \ - $(XEMACS)/src/dialog.c \ - $(XEMACS)/src/dired.c \ - $(XEMACS)/src/doc.c \ - $(XEMACS)/src/doprnt.c \ - $(XEMACS)/src/dynarr.c \ - $(XEMACS)/src/editfns.c \ - $(XEMACS)/src/elhash.c \ - $(XEMACS)/src/emacs.c \ - $(XEMACS)/src/EmacsFrame.c \ - $(XEMACS)/src/EmacsManager.c \ - $(XEMACS)/src/EmacsShell-sub.c\ - $(XEMACS)/src/EmacsShell.c \ - $(XEMACS)/src/energize.c \ - $(XEMACS)/src/eval.c \ - $(XEMACS)/src/event-stream.c \ - $(XEMACS)/src/event-unixoid.c \ - $(XEMACS)/src/event-Xt.c \ - $(XEMACS)/src/events.c \ - $(XEMACS)/src/extents.c \ - $(XEMACS)/src/faces.c \ - $(XEMACS)/src/fileio.c \ - $(XEMACS)/src/filelock.c \ - $(XEMACS)/src/filemode.c \ - $(XEMACS)/src/floatfns.c \ - $(XEMACS)/src/fns.c \ - $(XEMACS)/src/font-lock.c \ - $(XEMACS)/src/frame-x.c \ - $(XEMACS)/src/frame.c \ - $(XEMACS)/src/free-hook.c \ - $(XEMACS)/src/general.c \ - $(XEMACS)/src/gif_err.c \ - $(XEMACS)/src/gifalloc.c \ - $(XEMACS)/src/glyphs-x.c \ - $(XEMACS)/src/glyphs.c \ - $(XEMACS)/src/gmalloc.c \ - $(XEMACS)/src/gui-x.c \ - $(XEMACS)/src/gui.c \ - $(XEMACS)/src/hash.c \ - $(XEMACS)/src/indent.c \ - $(XEMACS)/src/inline.c \ - $(XEMACS)/src/insdel.c \ - $(XEMACS)/src/intl.c \ - $(XEMACS)/src/keymap.c \ - $(XEMACS)/src/lread.c \ - $(XEMACS)/src/lstream.c \ - $(XEMACS)/src/macros.c \ - $(XEMACS)/src/marker.c \ - $(XEMACS)/src/md5.c \ - $(XEMACS)/src/menubar-x.c \ - $(XEMACS)/src/menubar.c \ - $(XEMACS)/src/minibuf.c \ - $(XEMACS)/src/mocklisp.c \ - $(XEMACS)/src/nt.c \ - $(XEMACS)/src/ntheap.c \ - $(XEMACS)/src/ntproc.c \ - $(XEMACS)/src/objects-x.c \ - $(XEMACS)/src/objects.c \ - $(XEMACS)/src/opaque.c \ - $(XEMACS)/src/print.c \ - $(XEMACS)/src/process.c \ - $(XEMACS)/src/pure.c \ - $(XEMACS)/src/rangetab.c \ - $(XEMACS)/src/realpath.c \ - $(XEMACS)/src/redisplay-output.c \ - $(XEMACS)/src/redisplay-x.c \ - $(XEMACS)/src/redisplay.c \ - $(XEMACS)/src/regex.c \ - $(XEMACS)/src/scrollbar-x.c \ - $(XEMACS)/src/scrollbar.c \ - $(XEMACS)/src/search.c \ - $(XEMACS)/src/signal.c \ - $(XEMACS)/src/sound.c \ - $(XEMACS)/src/specifier.c \ - $(XEMACS)/src/strftime.c \ - $(XEMACS)/src/symbols.c \ - $(XEMACS)/src/syntax.c \ - $(XEMACS)/src/sysdep.c \ - $(XEMACS)/src/termcap.c \ - $(XEMACS)/src/tparam.c \ - $(XEMACS)/src/undo.c \ - $(XEMACS)/src/unexnt.c \ - $(XEMACS)/src/vm-limit.c \ - $(XEMACS)/src/window.c \ - $(XEMACS)/src/xgccache.c \ - $(XEMACS)/src/xmu.c \ - $(XEMACS)/src/xselect.c -DOC_SRCS_2=\ - $(LISP)/version.el \ - $(LISP)/paths.el \ - $(LISP)/prim/loaddefs.elc \ - $(LISP)/prim/auto-autoloads.elc \ - $(LISP)/prim/loadup.el \ - $(LISP)/prim/subr.elc \ - $(LISP)/prim/cmdloop.elc \ - $(LISP)/utils/text-props.elc \ - $(LISP)/prim/gui.elc \ - $(LISP)/prim/mouse.elc \ - $(LISP)/prim/mode-motion.elc \ - $(LISP)/prim/keymap.elc \ - $(LISP)/prim/syntax.elc \ - $(LISP)/prim/minibuf.elc \ - $(LISP)/prim/faces.elc \ - $(LISP)/prim/objects.elc \ - $(LISP)/prim/process.elc \ - $(LISP)/prim/keydefs.elc \ - $(LISP)/prim/device.elc \ - $(LISP)/prim/obsolete.elc \ - $(LISP)/prim/glyphs.elc \ - $(LISP)/prim/extents.elc \ - $(LISP)/prim/backquote.elc \ - $(LISP)/prim/events.elc \ - $(LISP)/prim/console.elc \ - $(LISP)/utils/map-ynp.elc \ - $(LISP)/prim/modeline.elc \ - $(LISP)/prim/profile.elc \ - $(LISP)/modes/list-mode.elc \ - $(LISP)/utils/derived.elc \ - $(LISP)/cl/cl.elc \ - $(LISP)/cl/cl-defs.elc \ - $(LISP)/prim/undo-stack.elc \ - $(LISP)/prim/simple.elc \ - $(LISP)/prim/help.elc \ - $(LISP)/prim/files.elc \ - $(LISP)/utils/lib-complete.elc \ - $(LISP)/prim/indent.elc \ - $(LISP)/prim/frame.elc \ - $(LISP)/prim/format.elc \ - $(LISP)/prim/window.elc \ - $(LISP)/prim/startup.elc \ - $(LISP)/prim/lisp.elc \ - $(LISP)/prim/page.elc \ - $(LISP)/prim/register.elc \ - $(LISP)/iso/iso8859-1.elc \ - $(LISP)/prim/paragraphs.elc \ - $(LISP)/modes/lisp-mode.elc \ - $(LISP)/modes/text-mode.elc \ - $(LISP)/prim/fill.elc \ - $(LISP)/prim/isearch-mode.elc \ - $(LISP)/prim/misc.elc \ - $(LISP)/packages/vc-hooks.elc \ - $(LISP)/prim/replace.elc \ - $(LISP)/prim/specifier.elc \ - $(LISP)/modes/auto-show.elc \ - $(LISP)/bytecomp/bytecomp-runtime.elc \ - $(LISP)/prim/float-sup.elc \ - $(LISP)/prim/itimer.elc \ - $(LISP)/ediff/ediff-hook.elc \ - $(LISP)/packages/fontl-hooks.elc \ - $(LISP)/prim/scrollbar.elc \ - $(LISP)/prim/buffer.elc \ - $(LISP)/prim/menubar.elc \ - $(LISP)/packages/buff-menu.elc \ - $(LISP)/modes/abbrev.elc -# X11_LISP NS_LISP ENERGIZE_LISP TOOLTALK_LISP DIALOG_LISP MULE_LISP NOMULE_LISP - -MAKE_DOCFILE=$(OUTDIR)\make-docfile.exe -SUPPORT_PROGS=$(MAKE_DOCFILE) - -$(MAKE_DOCFILE): $(OUTDIR)\make-docfile.obj - link.exe $(LIB_SRC_LFLAGS) $** $(LIB_SRC_LIBS) - -$(OUTDIR)/make-docfile.obj: $(LIB_SRC)\make-docfile.c - $(CC) $(LIB_SRC_FLAGS) $** /Fo$@ - -$(DOC): $(OUTDIR)/make-docfile.exe - !$(MAKE_DOCFILE) -o $@ $(DOC_SRCS_1) - !$(MAKE_DOCFILE) -a $@ $(DOC_SRCS_2) - -#------------------------------------------------------------------------------ - -# TEMACS Executable - -TEMACS_DIR=$(XEMACS)/src -TEMACS=$(TEMACS_DIR)/temacs.exe -TEMACS_SRC=$(XEMACS)/src -TEMACS_LIBS=$(LASTFILE) $(LWLIB) Xaw.lib Xmu.lib Xt.lib SM.lib ICE.lib \ - Xext.lib X11.lib kernel32.lib user32.lib gdi32.lib \ - winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \ - uuid.lib odbc32.lib odbccp32.lib wsock32.lib msvcrt.lib -TEMACS_LFLAGS=/nologo $(LIBRARIES) /base:0x1000000\ - /stack:0x800000 /entry:_start /subsystem:console /pdb:none\ - /map:$(TEMACS_DIR)/temacs.map /debug:full /debugtype:both /machine:I386\ - /nodefaultlib /force /out:$@\ - /heap:0x00100000 - -TEMACS_CPP=$(XEMACS)/nt/cpp/cpp.exe -TEMACS_CPP_FLAGS= $(INCLUDES) -D_DEBUG -DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN \ - -D_NTSDK -D_M_IX86 -D_DLL -D_MT -D_X86_ -Demacs -DHAVE_CONFIG_H -D_MSC_VER=999 -TEMACS_FLAGS=-nologo -w -Od -Yd -Zd -c $(TEMACS_CPP_FLAGS) - -TEMACS_OBJS= \ - $(OUTDIR)/abbrev.obj \ - $(OUTDIR)/alloc.obj \ - $(OUTDIR)/alloca.obj \ - $(OUTDIR)/blocktype.obj \ - $(OUTDIR)/buffer.obj \ - $(OUTDIR)/bytecode.obj \ - $(OUTDIR)/callint.obj \ - $(OUTDIR)/callproc.obj \ - $(OUTDIR)/casefiddle.obj \ - $(OUTDIR)/casetab.obj \ - $(OUTDIR)/chartab.obj \ - $(OUTDIR)/cmdloop.obj \ - $(OUTDIR)/cmds.obj \ - $(OUTDIR)/console-stream.obj \ - $(OUTDIR)/console-x.obj \ - $(OUTDIR)/console.obj \ - $(OUTDIR)/data.obj \ - $(OUTDIR)/database.obj \ - $(OUTDIR)/debug.obj \ - $(OUTDIR)/device-x.obj \ - $(OUTDIR)/device.obj \ - $(OUTDIR)/dgif_lib.obj \ - $(OUTDIR)/dialog-x.obj \ - $(OUTDIR)/dialog.obj \ - $(OUTDIR)/dired.obj \ - $(OUTDIR)/doc.obj \ - $(OUTDIR)/doprnt.obj \ - $(OUTDIR)/dynarr.obj \ - $(OUTDIR)/editfns.obj \ - $(OUTDIR)/elhash.obj \ - $(OUTDIR)/emacs.obj \ - $(OUTDIR)/EmacsFrame.obj \ - $(OUTDIR)/EmacsManager.obj \ - $(OUTDIR)/TopLevelEmacsShell.obj\ - $(OUTDIR)/TransientEmacsShell.obj\ - $(OUTDIR)/EmacsShell.obj \ - $(OUTDIR)/energize.obj \ - $(OUTDIR)/eval.obj \ - $(OUTDIR)/event-stream.obj \ - $(OUTDIR)/event-unixoid.obj \ - $(OUTDIR)/event-Xt.obj \ - $(OUTDIR)/events.obj \ - $(OUTDIR)/extents.obj \ - $(OUTDIR)/faces.obj \ - $(OUTDIR)/fileio.obj \ - $(OUTDIR)/filelock.obj \ - $(OUTDIR)/filemode.obj \ - $(OUTDIR)/floatfns.obj \ - $(OUTDIR)/fns.obj \ - $(OUTDIR)/font-lock.obj \ - $(OUTDIR)/frame-x.obj \ - $(OUTDIR)/frame.obj \ - $(OUTDIR)/free-hook.obj \ - $(OUTDIR)/general.obj \ - $(OUTDIR)/gif_err.obj \ - $(OUTDIR)/gifalloc.obj \ - $(OUTDIR)/glyphs-x.obj \ - $(OUTDIR)/glyphs.obj \ - $(OUTDIR)/gmalloc.obj \ - $(OUTDIR)/gui-x.obj \ - $(OUTDIR)/gui.obj \ - $(OUTDIR)/hash.obj \ - $(OUTDIR)/indent.obj \ - $(OUTDIR)/inline.obj \ - $(OUTDIR)/insdel.obj \ - $(OUTDIR)/intl.obj \ - $(OUTDIR)/keymap.obj \ - $(OUTDIR)/lread.obj \ - $(OUTDIR)/lstream.obj \ - $(OUTDIR)/macros.obj \ - $(OUTDIR)/marker.obj \ - $(OUTDIR)/md5.obj \ - $(OUTDIR)/menubar-x.obj \ - $(OUTDIR)/menubar.obj \ - $(OUTDIR)/minibuf.obj \ - $(OUTDIR)/mocklisp.obj \ - $(OUTDIR)/nt.obj \ - $(OUTDIR)/ntheap.obj \ - $(OUTDIR)/ntproc.obj \ - $(OUTDIR)/objects-x.obj \ - $(OUTDIR)/objects.obj \ - $(OUTDIR)/opaque.obj \ - $(OUTDIR)/print.obj \ - $(OUTDIR)/process.obj \ - $(OUTDIR)/pure.obj \ - $(OUTDIR)/rangetab.obj \ - $(OUTDIR)/realpath.obj \ - $(OUTDIR)/redisplay-output.obj \ - $(OUTDIR)/redisplay-x.obj \ - $(OUTDIR)/redisplay.obj \ - $(OUTDIR)/regex.obj \ - $(OUTDIR)/scrollbar-x.obj \ - $(OUTDIR)/scrollbar.obj \ - $(OUTDIR)/search.obj \ - $(OUTDIR)/signal.obj \ - $(OUTDIR)/sound.obj \ - $(OUTDIR)/specifier.obj \ - $(OUTDIR)/strftime.obj \ - $(OUTDIR)/symbols.obj \ - $(OUTDIR)/syntax.obj \ - $(OUTDIR)/sysdep.obj \ - $(OUTDIR)/termcap.obj \ - $(OUTDIR)/tparam.obj \ - $(OUTDIR)/undo.obj \ - $(OUTDIR)/unexnt.obj \ - $(OUTDIR)/vm-limit.obj \ - $(OUTDIR)/window.obj \ - $(OUTDIR)/xgccache.obj \ - $(OUTDIR)/xmu.obj \ - $(OUTDIR)/xselect.obj - -#$(TEMACS): $(TEMACS_SRC)/Emacs.ad.h $(TEMACS_SRC)/paths.h $(TEMACS_OBJS) -# link.exe $(TEMACS_LFLAGS) $(TEMACS_OBJS) $(TEMACS_LIBS) - -$(TEMACS): $(TEMACS_SRC)/Emacs.ad.h $(TEMACS_SRC)/paths.h $(TEMACS_OBJS) - link.exe @<< - $(TEMACS_LFLAGS) $(TEMACS_OBJS) $(TEMACS_LIBS) -<< - -$(OUTDIR)/abbrev.obj: $(TEMACS_SRC)/abbrev.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/alloc.obj: $(TEMACS_SRC)/alloc.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/alloca.obj: $(TEMACS_SRC)/alloca.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/blocktype.obj: $(TEMACS_SRC)/blocktype.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/buffer.obj: $(TEMACS_SRC)/buffer.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/bytecode.obj: $(TEMACS_SRC)/bytecode.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/callint.obj: $(TEMACS_SRC)/callint.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/callproc.obj: $(TEMACS_SRC)/callproc.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/casefiddle.obj: $(TEMACS_SRC)/casefiddle.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/casetab.obj: $(TEMACS_SRC)/casetab.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/chartab.obj: $(TEMACS_SRC)/chartab.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/cmdloop.obj: $(TEMACS_SRC)/cmdloop.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/cmds.obj: $(TEMACS_SRC)/cmds.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/console-stream.obj: $(TEMACS_SRC)/console-stream.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/console-x.obj: $(TEMACS_SRC)/console-x.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/console.obj: $(TEMACS_SRC)/console.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/data.obj: $(TEMACS_SRC)/data.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/database.obj: $(TEMACS_SRC)/database.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/debug.obj: $(TEMACS_SRC)/debug.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/device-x.obj: $(TEMACS_SRC)/device-x.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/device.obj: $(TEMACS_SRC)/device.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/dgif_lib.obj: $(TEMACS_SRC)/dgif_lib.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/dialog-x.obj: $(TEMACS_SRC)/dialog-x.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/dialog.obj: $(TEMACS_SRC)/dialog.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/dired.obj: $(TEMACS_SRC)/dired.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/doc.obj: $(TEMACS_SRC)/doc.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/doprnt.obj: $(TEMACS_SRC)/doprnt.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/dynarr.obj: $(TEMACS_SRC)/dynarr.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/editfns.obj: $(TEMACS_SRC)/editfns.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/elhash.obj: $(TEMACS_SRC)/elhash.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/emacs.obj: $(TEMACS_SRC)/emacs.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/EmacsFrame.obj: $(TEMACS_SRC)/EmacsFrame.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/EmacsManager.obj: $(TEMACS_SRC)/EmacsManager.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/TopLevelEmacsShell.obj: $(TEMACS_SRC)/EmacsShell-sub.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) -DDEFINE_TOP_LEVEL_EMACS_SHELL $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/TransientEmacsShell.obj: $(TEMACS_SRC)/EmacsShell-sub.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) -DDEFINE_TRANSIENT_EMACS_SHELL $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/EmacsShell.obj: $(TEMACS_SRC)/EmacsShell.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/energize.obj: $(TEMACS_SRC)/energize.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/eval.obj: $(TEMACS_SRC)/eval.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/event-stream.obj: $(TEMACS_SRC)/event-stream.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/event-unixoid.obj: $(TEMACS_SRC)/event-unixoid.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/event-Xt.obj: $(TEMACS_SRC)/event-Xt.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/events.obj: $(TEMACS_SRC)/events.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/extents.obj: $(TEMACS_SRC)/extents.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/faces.obj: $(TEMACS_SRC)/faces.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/fileio.obj: $(TEMACS_SRC)/fileio.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/filelock.obj: $(TEMACS_SRC)/filelock.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/filemode.obj: $(TEMACS_SRC)/filemode.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/floatfns.obj: $(TEMACS_SRC)/floatfns.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/fns.obj: $(TEMACS_SRC)/fns.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/font-lock.obj: $(TEMACS_SRC)/font-lock.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/frame-x.obj: $(TEMACS_SRC)/frame-x.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/frame.obj: $(TEMACS_SRC)/frame.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/free-hook.obj: $(TEMACS_SRC)/free-hook.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/general.obj: $(TEMACS_SRC)/general.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/gif_err.obj: $(TEMACS_SRC)/gif_err.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/gifalloc.obj: $(TEMACS_SRC)/gifalloc.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/glyphs-x.obj: $(TEMACS_SRC)/glyphs-x.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/glyphs.obj: $(TEMACS_SRC)/glyphs.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/gmalloc.obj: $(TEMACS_SRC)/gmalloc.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/gui-x.obj: $(TEMACS_SRC)/gui-x.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/gui.obj: $(TEMACS_SRC)/gui.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/hash.obj: $(TEMACS_SRC)/hash.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/indent.obj: $(TEMACS_SRC)/indent.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/inline.obj: $(TEMACS_SRC)/inline.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/insdel.obj: $(TEMACS_SRC)/insdel.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/intl.obj: $(TEMACS_SRC)/intl.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/keymap.obj: $(TEMACS_SRC)/keymap.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/lread.obj: $(TEMACS_SRC)/lread.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/lstream.obj: $(TEMACS_SRC)/lstream.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/macros.obj: $(TEMACS_SRC)/macros.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/marker.obj: $(TEMACS_SRC)/marker.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/md5.obj: $(TEMACS_SRC)/md5.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/menubar-x.obj: $(TEMACS_SRC)/menubar-x.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/menubar.obj: $(TEMACS_SRC)/menubar.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/minibuf.obj: $(TEMACS_SRC)/minibuf.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/mocklisp.obj: $(TEMACS_SRC)/mocklisp.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/msdos.obj: $(TEMACS_SRC)/msdos.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/nt.obj: $(TEMACS_SRC)/nt.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/ntheap.obj: $(TEMACS_SRC)/ntheap.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/ntproc.obj: $(TEMACS_SRC)/ntproc.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/objects-x.obj: $(TEMACS_SRC)/objects-x.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/objects.obj: $(TEMACS_SRC)/objects.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/opaque.obj: $(TEMACS_SRC)/opaque.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/print.obj: $(TEMACS_SRC)/print.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/process.obj: $(TEMACS_SRC)/process.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/pure.obj: $(TEMACS_SRC)/pure.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/rangetab.obj: $(TEMACS_SRC)/rangetab.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/realpath.obj: $(TEMACS_SRC)/realpath.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/redisplay-output.obj: $(TEMACS_SRC)/redisplay-output.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/redisplay-x.obj: $(TEMACS_SRC)/redisplay-x.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/redisplay.obj: $(TEMACS_SRC)/redisplay.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/regex.obj: $(TEMACS_SRC)/regex.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/scrollbar-x.obj: $(TEMACS_SRC)/scrollbar-x.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/scrollbar.obj: $(TEMACS_SRC)/scrollbar.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/search.obj: $(TEMACS_SRC)/search.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/signal.obj: $(TEMACS_SRC)/signal.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/sound.obj: $(TEMACS_SRC)/sound.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/specifier.obj: $(TEMACS_SRC)/specifier.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/strftime.obj: $(TEMACS_SRC)/strftime.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/symbols.obj: $(TEMACS_SRC)/symbols.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/syntax.obj: $(TEMACS_SRC)/syntax.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/sysdep.obj: $(TEMACS_SRC)/sysdep.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/termcap.obj: $(TEMACS_SRC)/termcap.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/tparam.obj: $(TEMACS_SRC)/tparam.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/undo.obj: $(TEMACS_SRC)/undo.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/unexnt.obj: $(TEMACS_SRC)/unexnt.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/vm-limit.obj: $(TEMACS_SRC)/vm-limit.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/window.obj: $(TEMACS_SRC)/window.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/xgccache.obj: $(TEMACS_SRC)/xgccache.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/xmu.obj: $(TEMACS_SRC)/xmu.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(OUTDIR)/xselect.obj: $(TEMACS_SRC)/xselect.c - !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" - $(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@ - !"del $(OUTDIR)\\foo.c" - -$(TEMACS_SRC)/Emacs.ad.h: $(XEMACS)/etc/Emacs.ad - !"sed -f ad2c.sed < $(XEMACS)/etc/Emacs.ad > $(TEMACS_SRC)/Emacs.ad.h" - -$(TEMACS_SRC)/paths.h: $(TEMACS_SRC)/paths.h.in - !"cd $(TEMACS_SRC); cp paths.h.in paths.h" - -#------------------------------------------------------------------------------ - -# LISP bits 'n bobs - -dump-elcs: $(TEMACS) - $(LOADPATH) $(TEMACS) -batch -l ../prim/update-elc.el $(LISP) - -dump-xemacs: $(TEMACS) - $(TEMACS) -batch -l loadup.el dump - -#------------------------------------------------------------------------------ - -# use this rule to build the complete system -all: $(LASTFILE) $(LWLIB) $(TEMACS) $(SUPPORT_PROGS) $(DOC) - -# use this rule to install the system -install: +MSDEV=F:/msdev +X11R6=F:/utils/X11R6 +XEMACS=.. +LISP=$(XEMACS)/lisp + +#------------------------------------------------------------------------------ + +# Generic variables + +INCLUDES=-I$(X11R6)/include -I$(XEMACS)/nt/inc -I$(XEMACS)/src\ + -I$(XEMACS)/lwlib -I$(MSDEV)/include +#INCLUDES=-I$(X11R6)/include -I$(XEMACS)/src\ +# -I$(XEMACS)/lwlib -I$(MSDEV)/include +LIBRARIES= + +OUTDIR=obj + +#------------------------------------------------------------------------------ + +default: objdir all + +objdir: + @echo "Ignore error message if $(OUTDIR) subdirectory already exists." + -@mkdir $(OUTDIR) + +# LASTFILE Library + +LASTFILE=$(OUTDIR)/lastfile.lib +LASTFILE_SRC=$(XEMACS)/src +LASTFILE_FLAGS=-nologo -w -Od $(INCLUDES) -Fo$@ -c +LASTFILE_OBJS= \ + $(OUTDIR)/lastfile.obj + +$(LASTFILE): $(LASTFILE_OBJS) + link.exe -lib /nologo /out:$@ $(LASTFILE_OBJS) + +$(OUTDIR)/lastfile.obj: $(LASTFILE_SRC)/lastfile.c + $(CC) $(LASTFILE_FLAGS) $** + +#------------------------------------------------------------------------------ + +# LWLIB Library + +LWLIB=$(OUTDIR)/lwlib.lib +LWLIB_SRC=$(XEMACS)/lwlib +LWLIB_FLAGS=/nologo /w /Od /Zi $(INCLUDES) /D "WIN32" /D "_DEBUG" \ + /D "NEED_ATHENA" /D "NEED_LUCID" \ + /D "_WINDOWS" /D "MENUBARS_LUCID" /D "SCROLLBARS_LUCID" /D "DIALOGS_ATHENA" \ + /D "WINDOWSNT" /Fo$@ /c +LWLIB_OBJS= \ + $(OUTDIR)/lwlib-config.obj \ + $(OUTDIR)/lwlib-utils.obj \ + $(OUTDIR)/lwlib-Xaw.obj \ + $(OUTDIR)/lwlib-Xlw.obj \ + $(OUTDIR)/lwlib.obj \ + $(OUTDIR)/xlwmenu.obj \ + $(OUTDIR)/xlwscrollbar.obj + +$(LWLIB): $(LWLIB_OBJS) + link.exe -lib -nologo -debug -debugtype:both -out:$@ $(LWLIB_OBJS) + +$(OUTDIR)/lwlib-config.obj: $(LWLIB_SRC)/lwlib-config.c + $(CC) $(LWLIB_FLAGS) $** + +$(OUTDIR)/lwlib-utils.obj: $(LWLIB_SRC)/lwlib-utils.c + $(CC) $(LWLIB_FLAGS) $** + +$(OUTDIR)/lwlib-Xaw.obj: $(LWLIB_SRC)/lwlib-Xaw.c + $(CC) $(LWLIB_FLAGS) $** + +$(OUTDIR)/lwlib-Xlw.obj: $(LWLIB_SRC)/lwlib-Xlw.c + $(CC) $(LWLIB_FLAGS) $** + +$(OUTDIR)/lwlib.obj: $(LWLIB_SRC)/lwlib.c + $(CC) $(LWLIB_FLAGS) $** + +$(OUTDIR)/xlwmenu.obj: $(LWLIB_SRC)/xlwmenu.c + $(CC) $(LWLIB_FLAGS) $** + +$(OUTDIR)/xlwscrollbar.obj: $(LWLIB_SRC)/xlwscrollbar.c + $(CC) $(LWLIB_FLAGS) $** + +#------------------------------------------------------------------------------ + +# lib-src programs + +LIB_SRC=$(XEMACS)/lib-src +LIB_SRC_FLAGS=$(INCLUDES) -D_DEBUG -DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN \ + -D_NTSDK -D_M_IX86 -ML -D_X86_ -Demacs -DHAVE_CONFIG_H -D_MSC_VER=999 +LIB_SRC_LIBS= kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ + advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib \ + odbccp32.lib libc.lib +LIB_SRC_LFLAGS=/nologo $(LIB_SRC_LIBS) /base:0x1000000\ + /subsystem:console /pdb:none /debugtype:both /machine:I386\ + /nodefaultlib /out:$@ /debug:full + +DOC=$(LIB_SRC)/DOC +DOC_SRCS_1=\ + $(XEMACS)/src/abbrev.c \ + $(XEMACS)/src/alloc.c \ + $(XEMACS)/src/alloca.c \ + $(XEMACS)/src/blocktype.c \ + $(XEMACS)/src/buffer.c \ + $(XEMACS)/src/bytecode.c \ + $(XEMACS)/src/callint.c \ + $(XEMACS)/src/callproc.c \ + $(XEMACS)/src/casefiddle.c \ + $(XEMACS)/src/casetab.c \ + $(XEMACS)/src/chartab.c \ + $(XEMACS)/src/cmdloop.c \ + $(XEMACS)/src/cmds.c \ + $(XEMACS)/src/console-stream.c \ + $(XEMACS)/src/console-x.c \ + $(XEMACS)/src/console.c \ + $(XEMACS)/src/data.c \ + $(XEMACS)/src/database.c \ + $(XEMACS)/src/debug.c \ + $(XEMACS)/src/device-x.c \ + $(XEMACS)/src/device.c \ + $(XEMACS)/src/dgif_lib.c \ + $(XEMACS)/src/dialog-x.c \ + $(XEMACS)/src/dialog.c \ + $(XEMACS)/src/dired.c \ + $(XEMACS)/src/doc.c \ + $(XEMACS)/src/doprnt.c \ + $(XEMACS)/src/dynarr.c \ + $(XEMACS)/src/editfns.c \ + $(XEMACS)/src/elhash.c \ + $(XEMACS)/src/emacs.c \ + $(XEMACS)/src/EmacsFrame.c \ + $(XEMACS)/src/EmacsManager.c \ + $(XEMACS)/src/EmacsShell-sub.c\ + $(XEMACS)/src/EmacsShell.c \ + $(XEMACS)/src/energize.c \ + $(XEMACS)/src/eval.c \ + $(XEMACS)/src/event-stream.c \ + $(XEMACS)/src/event-unixoid.c \ + $(XEMACS)/src/event-Xt.c \ + $(XEMACS)/src/events.c \ + $(XEMACS)/src/extents.c \ + $(XEMACS)/src/faces.c \ + $(XEMACS)/src/fileio.c \ + $(XEMACS)/src/filelock.c \ + $(XEMACS)/src/filemode.c \ + $(XEMACS)/src/floatfns.c \ + $(XEMACS)/src/fns.c \ + $(XEMACS)/src/font-lock.c \ + $(XEMACS)/src/frame-x.c \ + $(XEMACS)/src/frame.c \ + $(XEMACS)/src/free-hook.c \ + $(XEMACS)/src/general.c \ + $(XEMACS)/src/gif_err.c \ + $(XEMACS)/src/gifalloc.c \ + $(XEMACS)/src/glyphs-x.c \ + $(XEMACS)/src/glyphs.c \ + $(XEMACS)/src/gmalloc.c \ + $(XEMACS)/src/gui-x.c \ + $(XEMACS)/src/gui.c \ + $(XEMACS)/src/hash.c \ + $(XEMACS)/src/indent.c \ + $(XEMACS)/src/inline.c \ + $(XEMACS)/src/insdel.c \ + $(XEMACS)/src/intl.c \ + $(XEMACS)/src/keymap.c \ + $(XEMACS)/src/lread.c \ + $(XEMACS)/src/lstream.c \ + $(XEMACS)/src/macros.c \ + $(XEMACS)/src/marker.c \ + $(XEMACS)/src/md5.c \ + $(XEMACS)/src/menubar-x.c \ + $(XEMACS)/src/menubar.c \ + $(XEMACS)/src/minibuf.c \ + $(XEMACS)/src/mocklisp.c \ + $(XEMACS)/src/nt.c \ + $(XEMACS)/src/ntheap.c \ + $(XEMACS)/src/ntproc.c \ + $(XEMACS)/src/objects-x.c \ + $(XEMACS)/src/objects.c \ + $(XEMACS)/src/opaque.c \ + $(XEMACS)/src/print.c \ + $(XEMACS)/src/process.c \ + $(XEMACS)/src/pure.c \ + $(XEMACS)/src/rangetab.c \ + $(XEMACS)/src/realpath.c \ + $(XEMACS)/src/redisplay-output.c \ + $(XEMACS)/src/redisplay-x.c \ + $(XEMACS)/src/redisplay.c \ + $(XEMACS)/src/regex.c \ + $(XEMACS)/src/scrollbar-x.c \ + $(XEMACS)/src/scrollbar.c \ + $(XEMACS)/src/search.c \ + $(XEMACS)/src/signal.c \ + $(XEMACS)/src/sound.c \ + $(XEMACS)/src/specifier.c \ + $(XEMACS)/src/strftime.c \ + $(XEMACS)/src/symbols.c \ + $(XEMACS)/src/syntax.c \ + $(XEMACS)/src/sysdep.c \ + $(XEMACS)/src/termcap.c \ + $(XEMACS)/src/tparam.c \ + $(XEMACS)/src/undo.c \ + $(XEMACS)/src/unexnt.c \ + $(XEMACS)/src/vm-limit.c \ + $(XEMACS)/src/window.c \ + $(XEMACS)/src/xgccache.c \ + $(XEMACS)/src/xmu.c \ + $(XEMACS)/src/xselect.c +DOC_SRCS_2=\ + $(LISP)/version.el \ + $(LISP)/paths.el \ + $(LISP)/prim/loaddefs.elc \ + $(LISP)/prim/auto-autoloads.elc \ + $(LISP)/prim/loadup.el \ + $(LISP)/prim/subr.elc \ + $(LISP)/prim/cmdloop.elc \ + $(LISP)/utils/text-props.elc \ + $(LISP)/prim/gui.elc \ + $(LISP)/prim/mouse.elc \ + $(LISP)/prim/mode-motion.elc \ + $(LISP)/prim/keymap.elc \ + $(LISP)/prim/syntax.elc \ + $(LISP)/prim/minibuf.elc \ + $(LISP)/prim/faces.elc \ + $(LISP)/prim/objects.elc \ + $(LISP)/prim/process.elc \ + $(LISP)/prim/keydefs.elc \ + $(LISP)/prim/device.elc \ + $(LISP)/prim/obsolete.elc \ + $(LISP)/prim/glyphs.elc \ + $(LISP)/prim/extents.elc \ + $(LISP)/prim/backquote.elc \ + $(LISP)/prim/events.elc \ + $(LISP)/prim/console.elc \ + $(LISP)/utils/map-ynp.elc \ + $(LISP)/prim/modeline.elc \ + $(LISP)/prim/profile.elc \ + $(LISP)/modes/list-mode.elc \ + $(LISP)/utils/derived.elc \ + $(LISP)/cl/cl.elc \ + $(LISP)/cl/cl-defs.elc \ + $(LISP)/prim/undo-stack.elc \ + $(LISP)/prim/simple.elc \ + $(LISP)/prim/help.elc \ + $(LISP)/prim/files.elc \ + $(LISP)/utils/lib-complete.elc \ + $(LISP)/prim/indent.elc \ + $(LISP)/prim/frame.elc \ + $(LISP)/prim/format.elc \ + $(LISP)/prim/window.elc \ + $(LISP)/prim/startup.elc \ + $(LISP)/prim/lisp.elc \ + $(LISP)/prim/page.elc \ + $(LISP)/prim/register.elc \ + $(LISP)/iso/iso8859-1.elc \ + $(LISP)/prim/paragraphs.elc \ + $(LISP)/modes/lisp-mode.elc \ + $(LISP)/modes/text-mode.elc \ + $(LISP)/prim/fill.elc \ + $(LISP)/prim/isearch-mode.elc \ + $(LISP)/prim/misc.elc \ + $(LISP)/packages/vc-hooks.elc \ + $(LISP)/prim/replace.elc \ + $(LISP)/prim/specifier.elc \ + $(LISP)/modes/auto-show.elc \ + $(LISP)/bytecomp/bytecomp-runtime.elc \ + $(LISP)/prim/float-sup.elc \ + $(LISP)/prim/itimer.elc \ + $(LISP)/ediff/ediff-hook.elc \ + $(LISP)/packages/fontl-hooks.elc \ + $(LISP)/prim/scrollbar.elc \ + $(LISP)/prim/buffer.elc \ + $(LISP)/prim/menubar.elc \ + $(LISP)/packages/buff-menu.elc \ + $(LISP)/modes/abbrev.elc +# X11_LISP NS_LISP ENERGIZE_LISP TOOLTALK_LISP DIALOG_LISP MULE_LISP NOMULE_LISP + +MAKE_DOCFILE=$(OUTDIR)\make-docfile.exe +SUPPORT_PROGS=$(MAKE_DOCFILE) + +$(MAKE_DOCFILE): $(OUTDIR)\make-docfile.obj + link.exe $(LIB_SRC_LFLAGS) $** $(LIB_SRC_LIBS) + +$(OUTDIR)/make-docfile.obj: $(LIB_SRC)\make-docfile.c + $(CC) $(LIB_SRC_FLAGS) $** /Fo$@ + +$(DOC): $(OUTDIR)/make-docfile.exe + !$(MAKE_DOCFILE) -o $@ $(DOC_SRCS_1) + !$(MAKE_DOCFILE) -a $@ $(DOC_SRCS_2) + +#------------------------------------------------------------------------------ + +# TEMACS Executable + +TEMACS_DIR=$(XEMACS)/src +TEMACS=$(TEMACS_DIR)/temacs.exe +TEMACS_SRC=$(XEMACS)/src +TEMACS_LIBS=$(LASTFILE) $(LWLIB) Xaw.lib Xmu.lib Xt.lib SM.lib ICE.lib \ + Xext.lib X11.lib kernel32.lib user32.lib gdi32.lib \ + winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \ + uuid.lib odbc32.lib odbccp32.lib wsock32.lib libc.lib +TEMACS_LFLAGS=/nologo $(LIBRARIES) /base:0x1000000\ + /stack:0x800000 /entry:_start /subsystem:console /pdb:none\ + /map:$(TEMACS_DIR)/temacs.map /debug:full /debugtype:both /machine:I386\ + /nodefaultlib /force /out:$@\ + /heap:0x00100000 + +#TEMACS_CPP=$(XEMACS)/nt/cpp/cpp.exe +TEMACS_CPP=c:/usr/local/bin/cpp.exe +TEMACS_CPP_FLAGS= $(INCLUDES) -D_DEBUG -DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN \ + -D_NTSDK -D_M_IX86 -D_X86_ -Demacs -DHAVE_CONFIG_H -D_MSC_VER=999 +TEMACS_FLAGS=-nologo -ML -w -Od -Zi -c $(TEMACS_CPP_FLAGS) + +TEMACS_OBJS= \ + $(OUTDIR)/abbrev.obj \ + $(OUTDIR)/alloc.obj \ + $(OUTDIR)/alloca.obj \ + $(OUTDIR)/blocktype.obj \ + $(OUTDIR)/buffer.obj \ + $(OUTDIR)/bytecode.obj \ + $(OUTDIR)/callint.obj \ + $(OUTDIR)/callproc.obj \ + $(OUTDIR)/casefiddle.obj \ + $(OUTDIR)/casetab.obj \ + $(OUTDIR)/chartab.obj \ + $(OUTDIR)/cmdloop.obj \ + $(OUTDIR)/cmds.obj \ + $(OUTDIR)/console-stream.obj \ + $(OUTDIR)/console-x.obj \ + $(OUTDIR)/console.obj \ + $(OUTDIR)/data.obj \ + $(OUTDIR)/database.obj \ + $(OUTDIR)/debug.obj \ + $(OUTDIR)/device-x.obj \ + $(OUTDIR)/device.obj \ + $(OUTDIR)/dgif_lib.obj \ + $(OUTDIR)/dialog-x.obj \ + $(OUTDIR)/dialog.obj \ + $(OUTDIR)/dired.obj \ + $(OUTDIR)/doc.obj \ + $(OUTDIR)/doprnt.obj \ + $(OUTDIR)/dynarr.obj \ + $(OUTDIR)/editfns.obj \ + $(OUTDIR)/elhash.obj \ + $(OUTDIR)/emacs.obj \ + $(OUTDIR)/EmacsFrame.obj \ + $(OUTDIR)/EmacsManager.obj \ + $(OUTDIR)/TopLevelEmacsShell.obj\ + $(OUTDIR)/TransientEmacsShell.obj\ + $(OUTDIR)/EmacsShell.obj \ + $(OUTDIR)/energize.obj \ + $(OUTDIR)/eval.obj \ + $(OUTDIR)/event-stream.obj \ + $(OUTDIR)/event-unixoid.obj \ + $(OUTDIR)/event-Xt.obj \ + $(OUTDIR)/events.obj \ + $(OUTDIR)/extents.obj \ + $(OUTDIR)/faces.obj \ + $(OUTDIR)/fileio.obj \ + $(OUTDIR)/filelock.obj \ + $(OUTDIR)/filemode.obj \ + $(OUTDIR)/floatfns.obj \ + $(OUTDIR)/fns.obj \ + $(OUTDIR)/font-lock.obj \ + $(OUTDIR)/frame-x.obj \ + $(OUTDIR)/frame.obj \ + $(OUTDIR)/free-hook.obj \ + $(OUTDIR)/general.obj \ + $(OUTDIR)/gif_err.obj \ + $(OUTDIR)/gifalloc.obj \ + $(OUTDIR)/glyphs-x.obj \ + $(OUTDIR)/glyphs.obj \ + $(OUTDIR)/gmalloc.obj \ + $(OUTDIR)/gui-x.obj \ + $(OUTDIR)/gui.obj \ + $(OUTDIR)/hash.obj \ + $(OUTDIR)/indent.obj \ + $(OUTDIR)/inline.obj \ + $(OUTDIR)/insdel.obj \ + $(OUTDIR)/intl.obj \ + $(OUTDIR)/keymap.obj \ + $(OUTDIR)/lread.obj \ + $(OUTDIR)/lstream.obj \ + $(OUTDIR)/macros.obj \ + $(OUTDIR)/marker.obj \ + $(OUTDIR)/md5.obj \ + $(OUTDIR)/menubar-x.obj \ + $(OUTDIR)/menubar.obj \ + $(OUTDIR)/minibuf.obj \ + $(OUTDIR)/mocklisp.obj \ + $(OUTDIR)/nt.obj \ + $(OUTDIR)/ntheap.obj \ + $(OUTDIR)/ntproc.obj \ + $(OUTDIR)/objects-x.obj \ + $(OUTDIR)/objects.obj \ + $(OUTDIR)/opaque.obj \ + $(OUTDIR)/print.obj \ + $(OUTDIR)/process.obj \ + $(OUTDIR)/pure.obj \ + $(OUTDIR)/rangetab.obj \ + $(OUTDIR)/realpath.obj \ + $(OUTDIR)/redisplay-output.obj \ + $(OUTDIR)/redisplay-x.obj \ + $(OUTDIR)/redisplay.obj \ + $(OUTDIR)/regex.obj \ + $(OUTDIR)/scrollbar-x.obj \ + $(OUTDIR)/scrollbar.obj \ + $(OUTDIR)/search.obj \ + $(OUTDIR)/signal.obj \ + $(OUTDIR)/sound.obj \ + $(OUTDIR)/specifier.obj \ + $(OUTDIR)/strftime.obj \ + $(OUTDIR)/symbols.obj \ + $(OUTDIR)/syntax.obj \ + $(OUTDIR)/sysdep.obj \ + $(OUTDIR)/termcap.obj \ + $(OUTDIR)/tparam.obj \ + $(OUTDIR)/undo.obj \ + $(OUTDIR)/unexnt.obj \ + $(OUTDIR)/vm-limit.obj \ + $(OUTDIR)/window.obj \ + $(OUTDIR)/xgccache.obj \ + $(OUTDIR)/xmu.obj \ + $(OUTDIR)/xselect.obj + +#$(TEMACS): $(TEMACS_SRC)/Emacs.ad.h $(TEMACS_SRC)/paths.h $(TEMACS_OBJS) +# link.exe $(TEMACS_LFLAGS) $(TEMACS_OBJS) $(TEMACS_LIBS) + +$(TEMACS): $(TEMACS_SRC)/Emacs.ad.h $(TEMACS_SRC)/paths.h $(TEMACS_OBJS) + link.exe @<< + $(TEMACS_LFLAGS) $(TEMACS_OBJS) $(TEMACS_LIBS) +<< + +$(OUTDIR)/abbrev.obj: $(TEMACS_SRC)/abbrev.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/alloc.obj: $(TEMACS_SRC)/alloc.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/alloca.obj: $(TEMACS_SRC)/alloca.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/blocktype.obj: $(TEMACS_SRC)/blocktype.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/buffer.obj: $(TEMACS_SRC)/buffer.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/bytecode.obj: $(TEMACS_SRC)/bytecode.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/callint.obj: $(TEMACS_SRC)/callint.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/callproc.obj: $(TEMACS_SRC)/callproc.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/casefiddle.obj: $(TEMACS_SRC)/casefiddle.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/casetab.obj: $(TEMACS_SRC)/casetab.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/chartab.obj: $(TEMACS_SRC)/chartab.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/cmdloop.obj: $(TEMACS_SRC)/cmdloop.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/cmds.obj: $(TEMACS_SRC)/cmds.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/console-stream.obj: $(TEMACS_SRC)/console-stream.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/console-x.obj: $(TEMACS_SRC)/console-x.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/console.obj: $(TEMACS_SRC)/console.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/data.obj: $(TEMACS_SRC)/data.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/database.obj: $(TEMACS_SRC)/database.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/debug.obj: $(TEMACS_SRC)/debug.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/device-x.obj: $(TEMACS_SRC)/device-x.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/device.obj: $(TEMACS_SRC)/device.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/dgif_lib.obj: $(TEMACS_SRC)/dgif_lib.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/dialog-x.obj: $(TEMACS_SRC)/dialog-x.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/dialog.obj: $(TEMACS_SRC)/dialog.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/dired.obj: $(TEMACS_SRC)/dired.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/doc.obj: $(TEMACS_SRC)/doc.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/doprnt.obj: $(TEMACS_SRC)/doprnt.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/dynarr.obj: $(TEMACS_SRC)/dynarr.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/editfns.obj: $(TEMACS_SRC)/editfns.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/elhash.obj: $(TEMACS_SRC)/elhash.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/emacs.obj: $(TEMACS_SRC)/emacs.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/EmacsFrame.obj: $(TEMACS_SRC)/EmacsFrame.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/EmacsManager.obj: $(TEMACS_SRC)/EmacsManager.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/TopLevelEmacsShell.obj: $(TEMACS_SRC)/EmacsShell-sub.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) -DDEFINE_TOP_LEVEL_EMACS_SHELL $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) -DDEFINE_TOP_LEVEL_EMACS_SHELL $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/TransientEmacsShell.obj: $(TEMACS_SRC)/EmacsShell-sub.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) -DDEFINE_TRANSIENT_EMACS_SHELL $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) -DDEFINE_TRANSIENT_EMACS_SHELL $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/EmacsShell.obj: $(TEMACS_SRC)/EmacsShell.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/energize.obj: $(TEMACS_SRC)/energize.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/eval.obj: $(TEMACS_SRC)/eval.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/event-stream.obj: $(TEMACS_SRC)/event-stream.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/event-unixoid.obj: $(TEMACS_SRC)/event-unixoid.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/event-Xt.obj: $(TEMACS_SRC)/event-Xt.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/events.obj: $(TEMACS_SRC)/events.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/extents.obj: $(TEMACS_SRC)/extents.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/faces.obj: $(TEMACS_SRC)/faces.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/fileio.obj: $(TEMACS_SRC)/fileio.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/filelock.obj: $(TEMACS_SRC)/filelock.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/filemode.obj: $(TEMACS_SRC)/filemode.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/floatfns.obj: $(TEMACS_SRC)/floatfns.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/fns.obj: $(TEMACS_SRC)/fns.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/font-lock.obj: $(TEMACS_SRC)/font-lock.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/frame-x.obj: $(TEMACS_SRC)/frame-x.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/frame.obj: $(TEMACS_SRC)/frame.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/free-hook.obj: $(TEMACS_SRC)/free-hook.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/general.obj: $(TEMACS_SRC)/general.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/gif_err.obj: $(TEMACS_SRC)/gif_err.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/gifalloc.obj: $(TEMACS_SRC)/gifalloc.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/glyphs-x.obj: $(TEMACS_SRC)/glyphs-x.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/glyphs.obj: $(TEMACS_SRC)/glyphs.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/gmalloc.obj: $(TEMACS_SRC)/gmalloc.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/gui-x.obj: $(TEMACS_SRC)/gui-x.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/gui.obj: $(TEMACS_SRC)/gui.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/hash.obj: $(TEMACS_SRC)/hash.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/indent.obj: $(TEMACS_SRC)/indent.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/inline.obj: $(TEMACS_SRC)/inline.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/insdel.obj: $(TEMACS_SRC)/insdel.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/intl.obj: $(TEMACS_SRC)/intl.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/keymap.obj: $(TEMACS_SRC)/keymap.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/lread.obj: $(TEMACS_SRC)/lread.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/lstream.obj: $(TEMACS_SRC)/lstream.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/macros.obj: $(TEMACS_SRC)/macros.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/marker.obj: $(TEMACS_SRC)/marker.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/md5.obj: $(TEMACS_SRC)/md5.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/menubar-x.obj: $(TEMACS_SRC)/menubar-x.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/menubar.obj: $(TEMACS_SRC)/menubar.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/minibuf.obj: $(TEMACS_SRC)/minibuf.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/mocklisp.obj: $(TEMACS_SRC)/mocklisp.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/msdos.obj: $(TEMACS_SRC)/msdos.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/nt.obj: $(TEMACS_SRC)/nt.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/ntheap.obj: $(TEMACS_SRC)/ntheap.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/ntproc.obj: $(TEMACS_SRC)/ntproc.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/objects-x.obj: $(TEMACS_SRC)/objects-x.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/objects.obj: $(TEMACS_SRC)/objects.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/opaque.obj: $(TEMACS_SRC)/opaque.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/print.obj: $(TEMACS_SRC)/print.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/process.obj: $(TEMACS_SRC)/process.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/pure.obj: $(TEMACS_SRC)/pure.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/rangetab.obj: $(TEMACS_SRC)/rangetab.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/realpath.obj: $(TEMACS_SRC)/realpath.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/redisplay-output.obj: $(TEMACS_SRC)/redisplay-output.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/redisplay-x.obj: $(TEMACS_SRC)/redisplay-x.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/redisplay.obj: $(TEMACS_SRC)/redisplay.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/regex.obj: $(TEMACS_SRC)/regex.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/scrollbar-x.obj: $(TEMACS_SRC)/scrollbar-x.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/scrollbar.obj: $(TEMACS_SRC)/scrollbar.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/search.obj: $(TEMACS_SRC)/search.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/signal.obj: $(TEMACS_SRC)/signal.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/sound.obj: $(TEMACS_SRC)/sound.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/specifier.obj: $(TEMACS_SRC)/specifier.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/strftime.obj: $(TEMACS_SRC)/strftime.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/symbols.obj: $(TEMACS_SRC)/symbols.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/syntax.obj: $(TEMACS_SRC)/syntax.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/sysdep.obj: $(TEMACS_SRC)/sysdep.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/termcap.obj: $(TEMACS_SRC)/termcap.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/tparam.obj: $(TEMACS_SRC)/tparam.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/undo.obj: $(TEMACS_SRC)/undo.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/unexnt.obj: $(TEMACS_SRC)/unexnt.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/vm-limit.obj: $(TEMACS_SRC)/vm-limit.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/window.obj: $(TEMACS_SRC)/window.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/xgccache.obj: $(TEMACS_SRC)/xgccache.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/xmu.obj: $(TEMACS_SRC)/xmu.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(OUTDIR)/xselect.obj: $(TEMACS_SRC)/xselect.c +# !"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c" + $(CC) $(TEMACS_FLAGS) $** /Fo$@ +# !"del $(OUTDIR)\\foo.c" + +$(TEMACS_SRC)/Emacs.ad.h: $(XEMACS)/etc/Emacs.ad + !"sed -f ad2c.sed < $(XEMACS)/etc/Emacs.ad > $(TEMACS_SRC)/Emacs.ad.h" + +$(TEMACS_SRC)/paths.h: $(TEMACS_SRC)/paths.h.in + !"cd $(TEMACS_SRC); cp paths.h.in paths.h" + +#------------------------------------------------------------------------------ + +# LISP bits 'n bobs + +dump-elcs: $(TEMACS) + $(LOADPATH) $(TEMACS) -batch -l ../prim/update-elc.el $(LISP) + +dump-xemacs: $(TEMACS) + $(TEMACS) -batch -l loadup.el dump + +#------------------------------------------------------------------------------ + +# use this rule to build the complete system +all: $(LASTFILE) $(LWLIB) $(TEMACS) $(SUPPORT_PROGS) $(DOC) + +# use this rule to install the system +install: diff -r 578fd4947a72 -r 7d55a9ba150c src/ChangeLog --- a/src/ChangeLog Mon Aug 13 09:23:08 2007 +0200 +++ b/src/ChangeLog Mon Aug 13 09:24:17 2007 +0200 @@ -1,3 +1,19 @@ +Thu Apr 3 08:01:50 1997 Steve Carney + + * s/decosf4.0-static.h: New file. + +Tue Apr 1 12:22:32 1997 Steven L Baur + + * config.h.in: MAIL_USE_POP, KERBEROS, HESIOD -- new parameters to + deal with upgraded movemail.c. + +Fri Mar 28 19:25:22 1997 Steven L Baur + + * inline.c: Restore this blasphemous file. + + * Makefile.in.in (inline.o): Restore the bletcherous + inline.c. + Tue Mar 25 11:36:08 1997 David Moore * fileio.c (barf_or_query_if_file_exists): GC fixes. diff -r 578fd4947a72 -r 7d55a9ba150c src/Makefile.in.in --- a/src/Makefile.in.in Mon Aug 13 09:23:08 2007 +0200 +++ b/src/Makefile.in.in Mon Aug 13 09:24:17 2007 +0200 @@ -911,7 +911,7 @@ frame.o \ general.o getloadavg.o GIF_OBJS glyphs.o GUI_OBJS \ hash.o \ - indent.o insdel.o intl.o \ + indent.o inline.o insdel.o intl.o \ keymap.o $(RTC_PATCH_O) \ lread.o lstream.o \ macros.o marker.o md5.o MENUBAR_OBJS minibuf.o MOCKLISPOBJS \ @@ -1937,6 +1937,8 @@ glyphs.o: mule-charset.h gui-x.o: mule-charset.h indent.o: mule-charset.h +inline.o: mule-charset.h +inline.o: mule-coding.h input-method-xlib.o: mule-charset.h input-method-xlib.o: mule-coding.h insdel.o: mule-charset.h @@ -2944,6 +2946,40 @@ indent.o: specifier.h indent.o: toolbar.h indent.o: window.h +inline.o: $(LWLIBSRCDIR)/lwlib.h +inline.o: blocktype.h +inline.o: buffer.h +inline.o: bufslots.h +inline.o: bytecode.h +inline.o: chartab.h +inline.o: config.h +inline.o: conslots.h +inline.o: console-x.h +inline.o: console.h +inline.o: device.h +inline.o: dynarr.h +inline.o: elhash.h +inline.o: events.h +inline.o: extents.h +inline.o: faces.h +inline.o: frame.h +inline.o: frameslots.h +inline.o: glyphs-x.h +inline.o: glyphs.h +inline.o: gui-x.h +inline.o: keymap.h +inline.o: lstream.h +inline.o: objects.h +inline.o: opaque.h +inline.o: process.h +inline.o: redisplay.h +inline.o: scrollbar.h +inline.o: specifier.h +inline.o: syntax.h +inline.o: systime.h +inline.o: toolbar.h +inline.o: window.h +inline.o: xintrinsic.h input-method-xlib.o: EmacsFrame.h input-method-xlib.o: blocktype.h input-method-xlib.o: buffer.h diff -r 578fd4947a72 -r 7d55a9ba150c src/alloc.c --- a/src/alloc.c Mon Aug 13 09:23:08 2007 +0200 +++ b/src/alloc.c Mon Aug 13 09:24:17 2007 +0200 @@ -2739,7 +2739,12 @@ if (rc < 0) { (void)unlink("SATISFIED"); + /* Current build process on NT does */ + /* not know how to restart itself. */ + /* --marcpa */ +#ifndef WINDOWSNT fatal ("Pure size adjusted, will restart `make'"); +#endif } else if (pure_lossage && die_if_pure_storage_exceeded) { fatal ("Pure storage exhausted"); } diff -r 578fd4947a72 -r 7d55a9ba150c src/alloca.c --- a/src/alloca.c Mon Aug 13 09:23:08 2007 +0200 +++ b/src/alloca.c Mon Aug 13 09:24:17 2007 +0200 @@ -86,7 +86,9 @@ # endif #endif +#ifndef WINDOWSNT #define NULL 0 +#endif /* Different portions of Emacs need to call different versions of malloc. The Emacs executable needs alloca to call xmalloc, because @@ -101,7 +103,11 @@ #ifndef emacs #define malloc xmalloc #endif +#ifndef WINDOWSNT extern pointer malloc (); +#else +extern void *malloc(); +#endif /* Define STACK_DIRECTION if you know the direction of stack growth for your system; otherwise it will be automatically diff -r 578fd4947a72 -r 7d55a9ba150c src/config.h.in --- a/src/config.h.in Mon Aug 13 09:23:08 2007 +0200 +++ b/src/config.h.in Mon Aug 13 09:24:17 2007 +0200 @@ -712,4 +712,12 @@ # define JMP_BUF jmp_buf #endif +/* movemail options */ +/* define to POP3 for mail access */ +#undef MAIL_USE_POP +/* define to use kerberos for POP authentication */ +#undef KERBEROS +/* define to use hesiod for getting POP server host */ +#undef HESIOD + #endif /* _CONFIG_H_ */ diff -r 578fd4947a72 -r 7d55a9ba150c src/dired.c --- a/src/dired.c Mon Aug 13 09:23:08 2007 +0200 +++ b/src/dired.c Mon Aug 13 09:24:17 2007 +0200 @@ -256,10 +256,14 @@ { /* This function can GC */ Lisp_Object handler; + struct gcpro gcpro1; + GCPRO1 (dirname); + dirname = Fexpand_file_name (dirname, Qnil); /* If the file name has special constructs in it, call the corresponding file handler. */ handler = Ffind_file_name_handler (dirname, Qfile_name_all_completions); + UNGCPRO; if (!NILP (handler)) return call3 (handler, Qfile_name_all_completions, file, dirname); diff -r 578fd4947a72 -r 7d55a9ba150c src/fns.c --- a/src/fns.c Mon Aug 13 09:23:08 2007 +0200 +++ b/src/fns.c Mon Aug 13 09:24:17 2007 +0200 @@ -3296,8 +3296,8 @@ If the 5-minute or 15-minute load averages are not available, return a shortened list, containing only those averages which are available. -On most systems, this won't work unless the emacs executable is installed -as setgid kmem (assuming that /dev/kmem is in the group kmem). +On some systems, this won't work due to permissions on /dev/kmem in +which case you can't use this. */ ()) { diff -r 578fd4947a72 -r 7d55a9ba150c src/inline.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/inline.c Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,78 @@ +/* Repository for inline functions + Copyright (C) 1995 Sun Microsystems, 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: Not in FSF. */ + +/* The purpose of this file is so that there is at least one actual + definition of each inline function. This is needed under GCC. The + reason is that under GCC we declare our inline functions `extern + inline', which causes the inlined version to get used only for + inlining, and in other cases to generate an external reference to + the function. This is more efficient that declaring out inline + functions `static inline', which (in many cases) would cause a separate + version of the function to get inserted into every source file that + included the corresponding header file. + + Some compilers that recognize `inline' may not do the same + `extern inline' business, so on those we just do `static inline'. + */ + +#define DONT_EXTERN_INLINE_FUNCTIONS + +#include +#include "lisp.h" +#include "buffer.h" +#include "bytecode.h" +#include "console.h" +#include "device.h" +#include "events.h" +#include "elhash.h" +#include "extents.h" +#include "faces.h" +#include "frame.h" +#include "glyphs.h" +#include "keymap.h" +#include "lstream.h" +#include "objects.h" +#include "opaque.h" +#include "process.h" +#include "specifier.h" +#include "syntax.h" +#include "toolbar.h" +#include "window.h" + +#ifdef HAVE_DATABASE +#include "database.h" +#endif + +#ifdef HAVE_X_WINDOWS +#include "console-x.h" +#include "glyphs-x.h" +#include "gui-x.h" +#endif + +#ifdef MULE +#include "mule-coding.h" +#endif + +#ifdef TOOLTALK +#include +#include "tooltalk.h" +#endif diff -r 578fd4947a72 -r 7d55a9ba150c src/lread.c --- a/src/lread.c Mon Aug 13 09:23:08 2007 +0200 +++ b/src/lread.c Mon Aug 13 09:24:17 2007 +0200 @@ -560,6 +560,7 @@ #ifdef DOS_NT int dosmode = O_TEXT; #endif /* DOS_NT */ + struct stat s1, s2; GCPRO3 (file, newer, found); CHECK_STRING (file); @@ -628,7 +629,7 @@ else if (load_warn_when_source_newer && !memcmp (".elc", foundstr + foundlen - 4, 4)) { - struct stat s1, s2; +/* struct stat s1, s2;*/ if (! fstat (fd, &s1)) /* can't fail, right? */ { int result; @@ -662,15 +663,15 @@ if (!memcmp (".elc", foundstr + foundlen - 4, 4)) reading_elc = 1; - } #ifdef DOS_NT /* The file was opened as binary, because that's what we'll encounter most of the time. If we're loading a .el, we need to reopen it in text mode. */ - if (!reading_elc) - fd = open (foundstr, O_RDONLY | O_TEXT); + if (!reading_elc) + fd = open (foundstr, O_RDONLY | O_TEXT); #endif /* DOS_NT */ + } #define PRINT_LOADING_MESSAGE(done) do { \ if (load_ignore_elc_files) \ @@ -954,11 +955,16 @@ *storeptr = build_string (fn); UNGCPRO; +/* XXX FIX ME + Not sure about this on NT yet. Do nothing for now. + --marcpa */ +#ifndef DOS_NT /* If we actually opened the file, set close-on-exec flag on the new descriptor so that subprocesses can't whack at it. */ if (mode < 0) (void) fcntl (fd, F_SETFD, FD_CLOEXEC); +#endif return fd; } diff -r 578fd4947a72 -r 7d55a9ba150c src/md5.c --- a/src/md5.c Mon Aug 13 09:23:08 2007 +0200 +++ b/src/md5.c Mon Aug 13 09:24:17 2007 +0200 @@ -34,7 +34,7 @@ typedef unsigned char *POINTER;/* POINTER defines a generic pointer type */ typedef unsigned short int UINT2;/* UINT2 defines a two byte word */ -typedef unsigned long int UINT4;/* UINT4 defines a four byte word */ +typedef unsigned int UINT4;/* UINT4 defines a four byte word */ #define PROTO_LIST(list) list #define MD_CTX MD5_CTX diff -r 578fd4947a72 -r 7d55a9ba150c src/puresize.h --- a/src/puresize.h Mon Aug 13 09:23:08 2007 +0200 +++ b/src/puresize.h Mon Aug 13 09:24:17 2007 +0200 @@ -172,7 +172,13 @@ #endif /* !RAW_PURESIZE */ -#include +/* Current build process on NT does not generate a puresize_adjust.h */ +/* file. --marcpa */ +#ifdef WINDOWSNT +# define PURESIZE_ADJUSTMENT 1000000 +#else +# include +#endif #define PURESIZE ((RAW_PURESIZE) + (PURESIZE_ADJUSTMENT)) diff -r 578fd4947a72 -r 7d55a9ba150c src/s/decosf4.0-static.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/s/decosf4.0-static.h Mon Aug 13 09:24:17 2007 +0200 @@ -0,0 +1,13 @@ +/* Synched up with: Not in FSF. */ + +#include "decosf4-0.h" + +#ifdef NOT_C_CODE +/* This is to get rid of the definition that selects dynamic linking. */ +#undef LD_SWITCH_CALL_SHARED +#ifdef USE_GCC +#define LD_SWITCH_CALL_SHARED -static -Xlinker -non_shared +#else +#define LD_SWITCH_CALL_SHARED -non_shared +#endif /* USE_GCC */ +#endif /* NOT_C_CODE */