Mercurial > hg > xemacs-beta
changeset 298:70ad99077275 r21-0b47
Import from CVS: tag r21-0b47
line wrap: on
line diff
--- a/CHANGES-beta Mon Aug 13 10:38:47 2007 +0200 +++ b/CHANGES-beta Mon Aug 13 10:39:40 2007 +0200 @@ -1,4 +1,23 @@ -*- indented-text -*- +to 21.0 pre4 "Uzbek Black" +-- Miscellaneous documentation cleanup from Altrasoft +-- Updates for using emacsbug.el as primary bug report interface from + Hrvoje Niksic +-- Russian TUTORIAL courtesy of Vladimir Bormotov +-- Build and dump fixes for MS Windows from Jonathan Harris +-- Modeline/Toolbar background color fix from Andy Piper +-- Hook fix redux from Kyle Jones +-- Patch for EFS for MS Windows NT native from Jonathan Harris +-- various patches and manual changes from Adrian Aichner +-- Miscellaneous hook patches from Kyle Jones +-- Calendar manual updates from Jeff Miller +-- various fixes from Martin Buchholz, Olivier Galibert, Michael Sperber +-- Documentation cleanup by Michael Sperber +-- Fix for customize breakage in MS Windows from Andy Piper +-- Line-number mode tuning from Hrvoje Niksic +-- Romanian Tutorial translation courtesy of Tudor Hulubei +-- Romanian Tutorial integration from Altrasoft + to 21.0 pre3 "Toggenburg" -- Configure changes to handle Berkeley DB 2 from Kazuyuki IENAGA and Martin Buchholz @@ -7,6 +26,7 @@ -- Cygwin font lossage fix from Andy Piper to 21.0 pre2 "Thuringian" +-- MS Windows font fixes from Jonathan Harris -- MS Windows native build fixes from Fabrice POPINEAU -- Miscellaneous bug fixes -- Documentation updates
--- a/ChangeLog Mon Aug 13 10:38:47 2007 +0200 +++ b/ChangeLog Mon Aug 13 10:39:40 2007 +0200 @@ -1,3 +1,45 @@ +1998-07-09 SL Baur <steve@altair.xemacs.org> + + * XEmacs 21.0-pre4 is released. + + * configure.in: Fix test for InfoDock sources. + + * etc/BETA (writing): Update patch creation instructions. + + * etc/FTP: Update FTP mirror list. + + * etc/DISTRIB: Remove duplicated FTP mirror list. + * etc/xemacs.1 (ftp): Ditto. + +1998-07-09 Oliver Graf <ograf@fga.de> + + * configure.usage: added warning to --with-offix + +1998-06-29 SL Baur <steve@altair.xemacs.org> + + * etc/gnuserv.1 (this): Email address for Ben Wing is ben@xemacs.org. + * etc/gnuserv.README (README): Ditto. + * etc/xemacs-ja.1: Ditto. + +1998-06-28 SL Baur <steve@altair.xemacs.org> + + * configure.in: Berkeley DB autodetection fixes + From Martin Buchholz <martin@xemacs.org> + + * etc/BABYL: Moved to rmail package + + * etc/enriched.doc: Moved to xemacs-base package + + * etc/MSDOS: + * etc/GNUS-NEWS: deleted + +1998-06-21 Michael Sperber [Mr. Preprocessor] <sperber@informatik.uni-tuebingen.de> + + * etc/NEWS: Added references to documentation about packages and + path setup. + + * etc/README: Synched. + 1998-06-19 SL Baur <steve@altair.xemacs.org> * XEmacs 21.0-pre3 is released.
--- a/configure Mon Aug 13 10:38:47 2007 +0200 +++ b/configure Mon Aug 13 10:39:40 2007 +0200 @@ -873,7 +873,7 @@ if test "$with_infodock" = "yes"; then - if test ! -f ../InfoDock.rules; then + if test ! -f ../ID-INSTALL; then echo "Cannot build InfoDock without InfoDock sources" with_infodock=no fi @@ -10776,111 +10776,127 @@ fi if test "$with_database_berkdb" != "no"; then - echo $ac_n "checking for dbopen""... $ac_c" 1>&6 -echo "configure:10781: checking for dbopen" >&5 - -cat > conftest.$ac_ext <<EOF + echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6 +echo "configure:10781: checking for Berkeley db.h" >&5 + for path in "db/db.h" "db.h"; do + cat > conftest.$ac_ext <<EOF #line 10784 "configure" #include "confdefs.h" +#ifdef HAVE_INTTYPES_H +#define __BIT_TYPES_DEFINED__ +#include <inttypes.h> +typedef uint8_t u_int8_t; +typedef uint16_t u_int16_t; +typedef uint32_t u_int32_t; +#ifdef WE_DONT_NEED_QUADS +typedef uint64_t u_int64_t; +#endif +#endif +#include <$path> + +int main() { + +; return 0; } +EOF +if { (eval echo configure:10802: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + db_h_path="$path"; break +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* + done + if test -z "$db_h_path" + then echo "$ac_t""no" 1>&6; with_database_berkdb=no + else echo "$ac_t""$db_h_path" 1>&6 + fi + + if test "$with_database_berkdb" != "no"; then + echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6 +echo "configure:10818: checking for Berkeley DB version" >&5 + cat > conftest.$ac_ext <<EOF +#line 10820 "configure" +#include "confdefs.h" +#include <$db_h_path> +#if DB_VERSION_MAJOR > 1 +yes +#endif + +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + echo "$ac_t""2" 1>&6; dbfunc=db_open +else + rm -rf conftest* + echo "$ac_t""1" 1>&6; dbfunc=dbopen +fi +rm -f conftest* + + echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6 +echo "configure:10839: checking for $dbfunc" >&5 + +cat > conftest.$ac_ext <<EOF +#line 10842 "configure" +#include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dbopen(); below. */ + which can conflict with char $dbfunc(); below. */ #include <assert.h> /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char dbopen(); +char $dbfunc(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_dbopen) || defined (__stub___dbopen) +#if defined (__stub_$dbfunc) || defined (__stub___$dbfunc) choke me #else -dbopen(); +$dbfunc(); #endif ; return 0; } EOF -if { (eval echo configure:10807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_dbopen=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_dbopen=no" -fi -rm -f conftest* - -if eval "test \"`echo '$ac_cv_func_'dbopen`\" = yes"; then +if { (eval echo configure:10865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$dbfunc=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$dbfunc=no" +fi +rm -f conftest* + +if eval "test \"`echo '$ac_cv_func_'$dbfunc`\" = yes"; then echo "$ac_t""yes" 1>&6 with_database_berkdb=yes need_libdb=no else echo "$ac_t""no" 1>&6 -echo $ac_n "checking for db_open""... $ac_c" 1>&6 -echo "configure:10824: checking for db_open" >&5 - -cat > conftest.$ac_ext <<EOF -#line 10827 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char db_open(); below. */ -#include <assert.h> -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char db_open(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_db_open) || defined (__stub___db_open) -choke me -#else -db_open(); -#endif - -; return 0; } -EOF -if { (eval echo configure:10850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_db_open=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_db_open=no" -fi -rm -f conftest* - -if eval "test \"`echo '$ac_cv_func_'db_open`\" = yes"; then - echo "$ac_t""yes" 1>&6 - with_database_berkdb=yes need_libdb=no -else - echo "$ac_t""no" 1>&6 - -echo $ac_n "checking for dbopen in -ldb""... $ac_c" 1>&6 -echo "configure:10868: checking for dbopen in -ldb" >&5 -ac_lib_var=`echo db'_'dbopen | sed 'y%./+-%__p_%'` + + +echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6 +echo "configure:10884: checking for $dbfunc in -ldb" >&5 +ac_lib_var=`echo db'_'$dbfunc | sed 'y%./+-%__p_%'` xe_check_libs=" -ldb " cat > conftest.$ac_ext <<EOF -#line 10873 "configure" +#line 10889 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char dbopen(); - -int main() { -dbopen() -; return 0; } -EOF -if { (eval echo configure:10884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +char $dbfunc(); + +int main() { +$dbfunc() +; return 0; } +EOF +if { (eval echo configure:10900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10897,83 +10913,13 @@ with_database_berkdb=yes need_libdb=yes else echo "$ac_t""no" 1>&6 -echo $ac_n "checking for db_open in -ldb""... $ac_c" 1>&6 -echo "configure:10902: checking for db_open in -ldb" >&5 -ac_lib_var=`echo db'_'db_open | sed 'y%./+-%__p_%'` - -xe_check_libs=" -ldb " -cat > conftest.$ac_ext <<EOF -#line 10907 "configure" -#include "confdefs.h" -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char db_open(); - -int main() { -db_open() -; return 0; } -EOF -if { (eval echo configure:10918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -xe_check_libs="" - -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then - echo "$ac_t""yes" 1>&6 - with_database_berkdb=yes need_libdb=yes -else - echo "$ac_t""no" 1>&6 -fi - - -fi - - -fi - -fi - - - if test "$with_database_berkdb" = "yes"; then - for path in "db/db.h" "db.h"; do -cat > conftest.$ac_ext <<EOF -#line 10949 "configure" -#include "confdefs.h" -#ifdef HAVE_INTTYPES_H -#define __BIT_TYPES_DEFINED__ -#include <inttypes.h> -typedef uint8_t u_int8_t; -typedef uint16_t u_int16_t; -typedef uint32_t u_int32_t; -#ifdef WE_DONT_NEED_QUADS -typedef uint64_t u_int64_t; -#endif -#endif -#include <$path> - -int main() { - -; return 0; } -EOF -if { (eval echo configure:10967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - db_h_path="$path"; break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* - done - test -z "$db_h_path" && with_database_berkdb=no - fi +fi + + +fi + + fi + if test "$with_database_berkdb" = "yes"; then { test "$extra_verbose" = "yes" && cat << EOF Defining DB_H_PATH = "$db_h_path" @@ -11014,12 +10960,12 @@ if test "$with_socks" = "yes"; then echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:11018: checking for SOCKSinit in -lsocks" >&5 +echo "configure:10964: checking for SOCKSinit in -lsocks" >&5 ac_lib_var=`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'` xe_check_libs=" -lsocks " cat > conftest.$ac_ext <<EOF -#line 11023 "configure" +#line 10969 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -11030,7 +10976,7 @@ SOCKSinit() ; return 0; } EOF -if { (eval echo configure:11034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:10980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11087,15 +11033,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11091: checking for $ac_hdr" >&5 - -cat > conftest.$ac_ext <<EOF -#line 11094 "configure" +echo "configure:11037: checking for $ac_hdr" >&5 + +cat > conftest.$ac_ext <<EOF +#line 11040 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11045: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -11126,12 +11072,12 @@ test -z "$with_shlib" && test ! -z "$have_dlfcn" && { echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:11130: checking for dlopen in -ldl" >&5 +echo "configure:11076: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` xe_check_libs=" -ldl " cat > conftest.$ac_ext <<EOF -#line 11135 "configure" +#line 11081 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -11142,7 +11088,7 @@ dlopen() ; return 0; } EOF -if { (eval echo configure:11146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:11092: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11171,12 +11117,12 @@ } test -z "$with_shlib" && test ! -z "$have_dlfcn" && { echo $ac_n "checking for _dlopen in -lc""... $ac_c" 1>&6 -echo "configure:11175: checking for _dlopen in -lc" >&5 +echo "configure:11121: checking for _dlopen in -lc" >&5 ac_lib_var=`echo c'_'_dlopen | sed 'y%./+-%__p_%'` xe_check_libs=" -lc " cat > conftest.$ac_ext <<EOF -#line 11180 "configure" +#line 11126 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -11187,7 +11133,7 @@ _dlopen() ; return 0; } EOF -if { (eval echo configure:11191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:11137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11216,12 +11162,12 @@ } test -z "$with_shlib" && test ! -z "$have_dlfcn" && { echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6 -echo "configure:11220: checking for dlopen in -lc" >&5 +echo "configure:11166: checking for dlopen in -lc" >&5 ac_lib_var=`echo c'_'dlopen | sed 'y%./+-%__p_%'` xe_check_libs=" -lc " cat > conftest.$ac_ext <<EOF -#line 11225 "configure" +#line 11171 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -11232,7 +11178,7 @@ dlopen() ; return 0; } EOF -if { (eval echo configure:11236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:11182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11261,12 +11207,12 @@ } test -z "$with_shlib" && { echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:11265: checking for shl_load in -ldld" >&5 +echo "configure:11211: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` xe_check_libs=" -ldld " cat > conftest.$ac_ext <<EOF -#line 11270 "configure" +#line 11216 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -11277,7 +11223,7 @@ shl_load() ; return 0; } EOF -if { (eval echo configure:11281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:11227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11306,12 +11252,12 @@ } test -z "$with_shlib" && { echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:11310: checking for dld_init in -ldld" >&5 +echo "configure:11256: checking for dld_init in -ldld" >&5 ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'` xe_check_libs=" -ldld " cat > conftest.$ac_ext <<EOF -#line 11315 "configure" +#line 11261 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -11322,7 +11268,7 @@ dld_init() ; return 0; } EOF -if { (eval echo configure:11326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:11272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11372,7 +11318,7 @@ dll_oflags="-o " echo $ac_n "checking how to build a shared library""... $ac_c" 1>&6 -echo "configure:11376: checking how to build a shared library" >&5 +echo "configure:11322: checking how to build a shared library" >&5 case `uname -rs` in UNIX_SV*|UNIX_System_V*) dll_lflags="-G" @@ -11463,10 +11409,10 @@ for ac_func in dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11467: checking for $ac_func" >&5 - -cat > conftest.$ac_ext <<EOF -#line 11470 "configure" +echo "configure:11413: checking for $ac_func" >&5 + +cat > conftest.$ac_ext <<EOF +#line 11416 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -11489,7 +11435,7 @@ ; return 0; } EOF -if { (eval echo configure:11493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:11439: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -11525,11 +11471,11 @@ fi cat > conftest.$ac_ext <<EOF -#line 11529 "configure" +#line 11475 "configure" #include "confdefs.h" int main(int c,char *v[]){return 0;} EOF -if { (eval echo configure:11533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:11479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 then : else
--- a/configure.in Mon Aug 13 10:38:47 2007 +0200 +++ b/configure.in Mon Aug 13 10:39:40 2007 +0200 @@ -936,7 +936,7 @@ AC_DEFINE_UNQUOTED(EMACS_VERSION, "$version") if test "$with_infodock" = "yes"; then - if test ! -f ../InfoDock.rules; then + if test ! -f ../ID-INSTALL; then echo "Cannot build InfoDock without InfoDock sources" with_infodock=no fi @@ -3450,14 +3450,9 @@ fi if test "$with_database_berkdb" != "no"; then - AC_CHECK_FUNC(dbopen, with_database_berkdb=yes need_libdb=no, - AC_CHECK_FUNC(db_open, with_database_berkdb=yes need_libdb=no, - AC_CHECK_LIB(db, dbopen, with_database_berkdb=yes need_libdb=yes, - AC_CHECK_LIB(db, db_open, with_database_berkdb=yes need_libdb=yes)))) - - if test "$with_database_berkdb" = "yes"; then - for path in "db/db.h" "db.h"; do -AC_TRY_COMPILE([#ifdef HAVE_INTTYPES_H + AC_MSG_CHECKING(for Berkeley db.h) + for path in "db/db.h" "db.h"; do + AC_TRY_COMPILE([#ifdef HAVE_INTTYPES_H #define __BIT_TYPES_DEFINED__ #include <inttypes.h> typedef uint8_t u_int8_t; @@ -3469,9 +3464,24 @@ #endif #include <$path> ],[], db_h_path="$path"; break) - done - test -z "$db_h_path" && with_database_berkdb=no + done + if test -z "$db_h_path" + then AC_MSG_RESULT(no); with_database_berkdb=no + else AC_MSG_RESULT($db_h_path) fi + + if test "$with_database_berkdb" != "no"; then + AC_MSG_CHECKING(for Berkeley DB version) + AC_EGREP_CPP(yes, +[#include <$db_h_path> +#if DB_VERSION_MAJOR > 1 +yes +#endif +], [AC_MSG_RESULT(2); dbfunc=db_open], [AC_MSG_RESULT(1); dbfunc=dbopen]) + AC_CHECK_FUNC($dbfunc, with_database_berkdb=yes need_libdb=no, [ + AC_CHECK_LIB(db, $dbfunc, with_database_berkdb=yes need_libdb=yes)]) + fi + if test "$with_database_berkdb" = "yes"; then AC_DEFINE_UNQUOTED(DB_H_PATH, "$db_h_path") AC_DEFINE(HAVE_BERKELEY_DB)
--- a/configure.usage Mon Aug 13 10:38:47 2007 +0200 +++ b/configure.usage Mon Aug 13 10:39:40 2007 +0200 @@ -83,6 +83,11 @@ and is considered experimental. --with-cde (*) Compile in support for CDE drag and drop. --with-offix (*) Compile in support for OffiX drag and drop. + *WARNING* If you compile in OffiX, you may not be + able to use multiple X displays success- + fully. If the two servers are from + different vendors, the results may be + unpredictable. --without-xmu (*) For those unfortunates whose vendors don't ship Xmu. --external-widget Compile with external widget support. --with-xpm (*) Compile with support for XPM files.
--- a/etc/BABYL Mon Aug 13 10:38:47 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -Format of Version 5 Babyl Files: - -Warning: - - This was written Tuesday, 12 April 1983 (by Eugene Ciccarelli), -based on looking at a particular Babyl file and recalling various -issues. Therefore it is not guaranteed to be complete, but it is a -start, and I will try to point the reader to various Babyl functions -that will serve to clarify certain format questions. - - Also note that this file will not contain control-characters, -but instead have two-character sequences starting with Uparrow. -Unless otherwise stated, an Uparrow <character> is to be read as -Control-<character>, e.g. ^L is a Control-L. - -Versions: - - First, note that each Babyl file contains in its BABYL OPTIONS -section the version for the Babyl file format. In principle, the -format can be changed in any way as long as we increment the format -version number; then programs can support both old and new formats. - - In practice, version 5 is the only format version used, and the -previous versions have been obsolete for so long that Emacs does not -support them. - - -Overall Babyl File Structure: - - A Babyl file consists of a BABYL OPTIONS section followed by -0 or more message sections. The BABYL OPTIONS section starts -with the line "BABYL OPTIONS:". Message sections start with -Control-Underscore Control-L Newline. Each section ends -with a Control-Underscore. (That is also the first character -of the starter for the next section, if any.) Thus, a three -message Babyl file looks like: - -BABYL OPTIONS: -...the stuff within the Babyl Options section... -^_^L -...the stuff within the 1st message section... -^_^L -...the stuff within the 2nd message section... -^_^L -...the stuff within the last message section... -^_ - - Babyl is tolerant about some whitespace at the end of the -file -- the file may end with the final ^_ or it may have some -whitespace, e.g. a newline, after it. - - -The BABYL OPTIONS Section: - - Each Babyl option is specified on one line (thus restricting -string values these options can currently have). Values are -either numbers or strings. The format is name, colon, and the -value, with whitespace after the colon ignored, e.g.: - -Mail: ~/special-inbox - - Unrecognized options are ignored. - - Here are those options and the kind of values currently expected: - - MAIL Filename, the input mail file for this - Babyl file. You may also use several file names - separated by commas. - Version Number. This should always be 5. - Labels String, list of labels, separated by commas. - - -Message Sections: - - A message section contains one message and information -associated with it. The first line is the "status line", which -contains a bit (0 or 1 character) saying whether the message has -been reformed yet, and a list of the labels attached to this -message. Certain labels, called basic labels, are built into -Babyl in a fundamental way, and are separated in the status line -for convenience of operation. For example, consider the status -line: - -1, answered,, zval, bug, - - The 1 means this message has been reformed. This message is -labeled "answered", "zval", and "bug". The first, "answered", is -a basic label, and the other two are user labels. The basic -labels come before the double-comma in the line. Each label is -preceded by ", " and followed by ",". (The last basic label is -in fact followed by ",,".) If this message had no labels at all, -it would look like: - -1,, - - Or, if it had two basic labels, "answered" and "deleted", it -would look like: - -1, answered, deleted,, zval, bug, - - The & Label Babyl Message knows which are the basic labels. -Currently they are: deleted, unseen, recent, and answered. - - After the status line comes the original header if any. -Following that is the EOOH line, which contains exactly the -characters "*** EOOH ***" (which stands for "end of original -header"). Note that the original header, if a network format -header, includes the trailing newline. And finally, following the -EOOH line is the visible message, header and text. For example, -here is a complete message section, starting with the message -starter, and ending with the terminator: - -^_^L -1,, wordab, eccmacs, -Date: 11 May 1982 21:40-EDT -From: Eugene C. Ciccarelli <ECC at MIT-AI> -Subject: notes -To: ECC at MIT-AI - -*** EOOH *** -Date: Tuesday, 11 May 1982 21:40-EDT -From: Eugene C. Ciccarelli <ECC> -To: ECC -Re: notes - -Remember to pickup check at cashier's office, and deposit it -soon. Pay rent. -^_ - -;;; Babyl File BNF: - -;;; Overall Babyl file structure: - - -Babyl-File ::= Babyl-Options-Section (Message-Section)* - - -;;; Babyl Options section: - - -Babyl-Options-Section - ::= "BABYL OPTIONS:" newline (Babyl-Option)* Terminator - -Babyl-Option ::= Option-Name ":" Horiz-Whitespace BOptValue newline - -BOptValue ::= Number | 1-Line-String - - - -;;; Message section: - - -Message-Section ::= Message-Starter Status-Line Orig-Header - EOOH-Line Message Terminator - -Message-Starter ::= "^L" newline - -Status-Line ::= Bit-Char "," (Basic-Label)* "," (User-Label)* newline - -Basic-Label ::= Space BLabel-Name "," - -User-Label ::= Space ULabel-Name "," - -EOOH-Line ::= "*** EOOH ***" newline - -Message ::= Visible-Header Message-Text - - -;;; Utilities: - -Terminator ::= "^_" - -Horiz-Whitespace - ::= (Space | Tab)* - -Bit-Char ::= "0" | "1"
--- a/etc/BETA Mon Aug 13 10:38:47 2007 +0200 +++ b/etc/BETA Mon Aug 13 10:39:40 2007 +0200 @@ -224,6 +224,9 @@ Each patch will be reviewed by the patches review board, and will be acked and added to the distribution, or rejected with an explanation. +Emailed patches should preferably be sent in MIME format and quoted +printable encoding (if necessary). + When making patches, please use the `-u' option, or if your diff doesn't support it, `-c'. Using ordinary (context-free) diffs are notoriously prone to error, since line numbers tend to change when @@ -255,6 +258,17 @@ M-x cd to the appropriate directory, and issue the command `C-u M-!' from within XEmacs. +Guidelines for writing ChangeLog entries is governed by the GNU coding +standards. Please see + http://www.gnu.org/prep/standards_toc.html [Change Logs section] +for details. + +Patches should be as single-minded as possible. Mammoth patches can +be very difficult to place into the right slot. They are much easier +to deal with when broken down into functional or conceptual chunks. +The patches submitted by Kyle Jones and Hrvoje Niksic are stellar +examples of how to Do The Right Thing. + ** Packages directory on the FTP Site =====================================
--- a/etc/DISTRIB Mon Aug 13 10:38:47 2007 +0200 +++ b/etc/DISTRIB Mon Aug 13 10:39:40 2007 +0200 @@ -6,24 +6,7 @@ in the directory /pub/xemacs/. ftp.xemacs.org is the primary distribution point, but you may find -copies of it at other sites as well. Some sites to try include: - - ftp://ftp2.xemacs.org/pub/xemacs/ - ftp://ftp.uu.net/systems/gnu/xemacs/ - ftp://ftp.sunet.se/pub/gnu/xemacs/ - ftp://ftp.cenatls.cena.dgac.fr/pub/Emacs/xemacs/ - ftp://ftp.th-darmstadt.de/pub/editors/xemacs/ - ftp://sunsite.doc.ic.ac.uk/gnu/xemacs/ - ftp://ftp.ibp.fr/pub/emacs/xemacs/ - ftp://uiarchive.cso.uiuc.edu/pub/packages/xemacs/ - ftp://ftp.technion.ac.il/pub/unsupported/gnu/xemacs/ - ftp://thphys.irb.hr/pub/xemacs/ - ftp://sunsite.cnlab-switch.ch/mirror/xemacs/ - ftp://ftp.unicamp.br/pub/xemacs/ - ftp://ftp.usyd.edu.au/pub/Xemacs/ - ftp://ftp.lab.kdd.co.jp/xemacs/ - ftp://SunSITE.sut.ac.jp/pub/archives/packages/xemacs/ - ftp://sunsite.icm.edu.pl/pub/unix/xemacs +copies of it at other sites as well. Please see the file FTP for mirrors. The most up-to-date list of distribution sites can always be found on the XEmacs WWW page, http://www.xemacs.org/. Try to pick a site
--- a/etc/FTP Mon Aug 13 10:38:47 2007 +0200 +++ b/etc/FTP Mon Aug 13 10:39:40 2007 +0200 @@ -1,6 +1,6 @@ -*- text -*- - XEmacs availability information. Last Modified: 19-Jun-1998. + XEmacs availability information. Last Modified: 9-Jul-1998. XEmacs is available via anonymous FTP from ftp.xemacs.org (207.96.122.8) in the directory /pub/xemacs/. @@ -9,6 +9,8 @@ copies of it at other sites as well. Some sites to try include: ftp://ftp.jaist.ac.jp/pub/GNU/xemacs/ + ftp://ring.aist.go.jp/pub/text/xemacs/ + ftp://ring.asahi-net.or.jp/pub/text/xemacs/ ftp://ftp.uu.net/systems/gnu/xemacs/ ftp://ftp.sunet.se/pub/gnu/xemacs/ ftp://ftp.cenatls.cena.dgac.fr/pub/Emacs/xemacs/
--- a/etc/GNUS-NEWS Mon Aug 13 10:38:47 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -** Gnus changes. - -*** nntp.el has been totally rewritten in an asynchronous fashion. - -*** Article prefetching functionality has been moved up into -Gnus. - -*** Scoring can now be performed with logical operators like -`and', `or', `not', and parent redirection. - -*** Article washing status can be displayed in the -article mode line. - -*** gnus.el has been split into many smaller files. - -*** Suppression of duplicate articles based on Message-ID. - -(setq gnus-suppress-duplicates t) - -*** New variables for specifying what score and adapt files -are to be considered home score and adapt files. See -`gnus-home-score-file' and `gnus-home-adapt-files'. - -*** Groups can inherit group parameters from parent topics. - -*** Article editing has been revamped and is now usable. - -*** Signatures can be recognized in more intelligent fashions. -See `gnus-signature-separator' and `gnus-signature-limit'. - -*** Summary pick mode has been made to look more nn-like. -Line numbers are displayed and the `.' command can be -used to pick articles. - -*** Commands for moving the .newsrc.eld from one server to -another have been added. - - `M-x gnus-change-server' - -*** A way to specify that "uninteresting" fields be suppressed when -generating lines in buffers. - -*** Several commands in the group buffer can be undone with -`M-C-_'. - -*** Scoring can be done on words using the new score type `w'. - -*** Adaptive scoring can be done on a Subject word-by-word basis: - - (setq gnus-use-adaptive-scoring '(word)) - -*** Scores can be decayed. - - (setq gnus-decay-scores t) - -*** Scoring can be performed using a regexp on the Date header. The -Date is normalized to compact ISO 8601 format first. - -*** A new command has been added to remove all data on articles from -the native server. - - `M-x gnus-group-clear-data-on-native-groups' - -*** A new command for reading collections of documents -(nndoc with nnvirtual on top) has been added -- `M-C-d'. - -*** Process mark sets can be pushed and popped. - -*** A new mail-to-news backend makes it possible to post -even when the NNTP server doesn't allow posting. - -*** A new backend for reading searches from Web search engines -(DejaNews, Alta Vista, InReference) has been added. - - Use the `G w' command in the group buffer to create such - a group. - -*** Groups inside topics can now be sorted using the standard -sorting functions, and each topic can be sorted independently. - - See the commands under the `T S' submap. - -*** Subsets of the groups can be sorted independently. - - See the commands under the `G P' submap. - -*** Cached articles can be pulled into the groups. - - Use the `Y c' command. - -*** Score files are now applied in a more reliable order. - -*** Reports on where mail messages end up can be generated. - - `M-x nnmail-split-history' - -*** More hooks and functions have been added to remove junk -from incoming mail before saving the mail. - - See `nnmail-prepare-incoming-header-hook'. - -*** The nnml mail backend now understands compressed article files. -
--- a/etc/MSDOS Mon Aug 13 10:38:47 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -XEmacs does not work under MSDOS. If you would be interested in porting -XEmacs to MSDOS, please contact Steve Baur <steve@altair.xemacs.org>. - -As of 20.1 the old Emacs files have been removed from the XEmacs -distribution. Interested parties should probably grab updated versions -from a current Emacs distribution.
--- a/etc/NEWS Mon Aug 13 10:38:47 2007 +0200 +++ b/etc/NEWS Mon Aug 13 10:39:40 2007 +0200 @@ -34,8 +34,9 @@ ======================== ** XEmacs has been unbundled into constituent installable packages. -See the file `etc/PACKAGES' in the distribution for a full -description. +See the Info documentation under "Packages" for more information. +See the file `etc/PACKAGES' in the distribution for a partial list of +packages available at the time of the 21.0 release. ** XEmacs is now supported under Microsoft Windows 95/98 and Windows NT operating systems. For starters, look at the XEmacs on Windows FAQ @@ -64,8 +65,6 @@ ** The `imenu' package has been ported to XEmacs and is available as a package. -** Horizontally split windows are now draggable. - ** `echo-keystrokes' can now be a floating-point number, so that you can set it to intervals shorter than one second. @@ -123,9 +122,10 @@ ** The `C-h c' command, when given a prefix argument, will now insert the message into the current buffer. -** Horizontally split windows may now be dragged using the mouse. The -draggable vertical dividers may be turned off using the -`vertical-divider-draggable-p' specifier. +** Horizontally split windows may now be dragged using the mouse. +Because of this, the dividers between vertical windows are always +visible. To turn it off, set `vertical-divider-always-visible-p' to +nil. ** XEmacs/Mule (internationalization) changes. @@ -200,6 +200,98 @@ If you want spaces at the beginning of a line to start a paragraph, use the new mode, Paragraph Indent Text mode. +** Changes to Gnus, the XEmacs newsreader. + +*** New functionality for using Gnus as an offline newsreader has been +added. A plethora of new commands and modes have been added. See the +Gnus manual for the full story. + +*** The nndraft backend has returned, but works differently than +before. All Message buffers are now also articles in the nndraft +group, which is created automatically. + +*** `gnus-alter-header-function' can now be used to alter header +values. + +*** `gnus-summary-goto-article' now accept Message-ID's. + +*** A new Message command for deleting text in the body of a message +outside the region: `C-c C-v'. + +*** You can now post to component group in nnvirtual groups with +`C-u C-c C-c'. + +*** `nntp-rlogin-program' -- new variable to ease customization. + +*** `C-u C-c C-c' in `gnus-article-edit-mode' will now inhibit +re-highlighting of the article buffer. + +*** New element in `gnus-boring-article-headers' -- `long-to'. + +*** `M-i' symbolic prefix command. See the section "Symbolic +Prefixes" in the Gnus manual for details. + +*** `L' and `I' in the summary buffer now take the symbolic prefix +`a' to add the score rule to the "all.SCORE" file. + +*** `gnus-simplify-subject-functions' variable to allow greater +control over simplification. + +*** `A T' -- new command for fetching the current thread. + +*** `/ T' -- new command for including the current thread in the +limit. + +*** `M-RET' is a new Message command for breaking cited text. + +*** \\1-expressions are now valid in `nnmail-split-methods'. + +*** The `custom-face-lookup' function has been removed. +If you used this function in your initialization files, you must +rewrite them to use `face-spec-set' instead. + +*** Cancelling now uses the current select method. Symbolic prefix +`a' forces normal posting method. + +*** New command to translate M******** sm*rtq**t*s into proper text +-- `W d'. + +*** For easier debugging of nntp, you can set `nntp-record-commands' +to a non-nil value. + +*** nntp now uses ~/.authinfo, a .netrc-like file, for controlling +where and how to send AUTHINFO to NNTP servers. + +*** A command for editing group parameters from the summary buffer +has been added. + +*** A history of where mails have been split is available. + +*** A new article date command has been added -- `article-date-iso8601'. + +*** Subjects can be simplified when threading by setting +`gnus-score-thread-simplify'. + +*** A new function for citing in Message has been added -- +`message-cite-original-without-signature'. + +*** `article-strip-all-blank-lines' -- new article command. + +*** A new Message command to kill to the end of the article has +been added. + +*** A minimum adaptive score can be specified by using the +`gnus-adaptive-word-minimum' variable. + +*** The "lapsed date" article header can be kept continually +updated by the `gnus-start-date-timer' command. + +*** Web listserv archives can be read with the nnlistserv backend. + +*** Old dejanews archives can now be read by nnweb. + +*** Byte-compilation of user-specs now works under XEmacs. + ** The `dir' files are no longer essential for functioning of the Info subsystem. If the `dir' file does not exist in an Info directory, the relevant information will be generated on-the-fly. @@ -239,9 +331,9 @@ use of X resources. *** The new draggable vertical dividers between windows may be turned -off using the `vertical-divider-draggable-p' specifier. When this is -set to nil, the vertical dividers between windows are shown only when -needed, and they are not draggable. +off using the `vertical-divider-always-visible-p' specifier. When +this is set to nil, the vertical dividers between windows are shown +only when needed, and they are not draggable. Other properties of the vertical dividers may be controlled using `vertical-divider-shadow-thickness', `vertical-divider-line-width' and @@ -398,6 +490,8 @@ ** The code XEmacs uses to assemble its various paths into the directory hierarchy has been rewritten to support the package system. +Look under "Startup Paths" in the Info documentation for more +information. *** site-lisp is now longer part of the load-path by default. Its use is deprecated, but you can specify --with-site-lisp=yes at the
--- a/etc/README Mon Aug 13 10:38:47 2007 +0200 +++ b/etc/README Mon Aug 13 10:39:40 2007 +0200 @@ -3,8 +3,10 @@ of interest to XEmacs users, some programs used by or with XEmacs, and the file of on-line documentation for XEmacs. -BABYL A description of BABYL file format +BETA Information about Beta versions +CHARSETS Character set descriptions CODING-STANDARDS XEmacs C & Lisp coding standards +CODINGS Character set codings COOKIES Urban Legend, or True Story? :-) COPYING GNU Public License COPYING.LIB Library GNU Public License @@ -13,82 +15,66 @@ Emacs.ad Sample Resource file FTP XEmacs FTP Mirrors GNU GNU Manifesto -GNUS-NEWS New features in Gnus-5.4 +GOATS Complete XEmacs internals documentation +InstallGuide Fast track to installation LPF Information about the League for Programming Freedom MACHINES List of known machines configurations (OLD) MAILINGLISTS List of available Mailing lists -MH-E-NEWS List of changes to MH-E to version 5.0. MORE.STUFF List of useful unbundled packages -MSDOS Status of MSDOS port -NEWS XEmacs 20.3 release information +NEWS XEmacs 21.0 release information ORDERS ORDERS.EUROPE -ORDERS.JAPAN -OTHER.EMACSES Order forms for GNU software +ORDERS.JAPAN Order forms for GNU software +PACKAGES List of packages available for 21.0 release README This file +README.HYPERBOLE +README.OO-BROWSER How to obtain Hyperbole and the OO-Browser SERVICE How to obtain paid support for free software TERMS Information about termcap entries -TUTORIAL Tutorial for first time users +TUTORIAL Tutorial for first time users (English version) +TUTORIAL.* Tutorials in non-English languages XKeysymDB X Keysym Database with Motif bindings -app-defaults/ Localization resource files (Japanese only) -auctex/ AUC TeX style files -*.Z Various pictures of XEmacs developers -categories XEmacs GNATS bug report categories +aliases.sh Useful shell aliases +cbx.png "Created by XEmacs" logo +check_cygwin_setup.sh Script to check for presence of Cygwin ctags.1 Ctags man page custom/ Images used in Custom mode -e/ Emacs terminal types -edt-user.doc Information about EDT mode +editclient.sh Either start up XEmacs or connect to a running one emacskeys.sco emacsstrs.sco Special files for running on an SCO console -enriched.doc Information about Enriched mode eos/ Images for EOS support (GUD) etags.1 Etags man page -frame-icon/ Images for frame-icon.el -gnats/ XEmacs GNATS bug report support files gnu.xbm gnu.xpm Image of a Gnu. gnuattach.1 Gnuattach man page gnuclient.1 Gnuclient man page gnudoit.1 Gnudoit man page -gnus/ Images for the Gnus News & Mail reader -gnus-refcard.tex Gnus reference card (refcard.tex in Gnus distribution) -gnus-tut.txt Gnus tutorial gnuserv.1 Gnuserv man page gnuserv.README Original README file from gnuserv gnusref.tex Gnus reference card gray1.xbm Gray bitmap -hypb-mouse.txt Hyperbole mouse reference -ida-logo.xpm InfoDock Associates logo -ledit.l Ledit lisp file? -message/ Images for Message mode -mine/ Images for Xmine game ms-kermit ms-kermit-7bit Files for running XEmacs through kermit -mule/ MULE documentation (OLD) +photos/*.Z Various pictures of XEmacs developers recycle.xpm recycle2.xpm Two versions of oversized Recycle cursor -refcard.ps Postscript version of XEmacs reference card +refcard.ps.gz Postscript version of XEmacs reference card refcard.tex XEmacs reference card sample.Xdefaults Example ~/.Xdefaults file sample.emacs Example ~/.emacs file -sgml/ SGML catalog, DTDs, etc. sink.xbm A Gnu icon -smilies/ Smiley images for smiley.el -sounds/ Sound files for sound support sparcworks/ Support files for Sparcworks -spook.lines Keywords that might trip TLA wiretaps tests/ Testcases for external widget time/ Image files for display-time toolbar/ Image files for the toolbar trash.xpm Garbage can icon -viperCard.tex Viper reference card -vm/ Image files for VM mail reader -w3/ Image files for W3 browser +xemacs-beta.xpm XEmacs Beta logo +xemacs-fe.sh XEmacs frontend driver xemacs-icon.xpm xemacs-icon2.xbm xemacs-icon2.xpm xemacs-icon3.xpm Various versions of an XEmacs WM icon +xemacs-ja.1 Japanese XEmacs man page xemacs.1 XEmacs man page xemacs.xbm xemacs.xpm XEmacs logo used on the splash screen -yow.lines Database used by yow.el
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/TUTORIAL.ro Mon Aug 13 10:39:40 2007 +0200 @@ -0,0 +1,1205 @@ +Copyright (c) 1998 Tudor Hulubei <tudor@gnu.org> +Mul�umiri Aidei Hulubei <aida@chang.pub.ro> pentru corecturi �i sugestii. + +A se citi sf�r�itul pentru condi�ii. + +Aceast� versiune a fost produs� plec�nd de la versiunea �n limba +englez�, care este +Copyright (c) 1985, 1996 Free Software Foundation, Inc. + +Citi�i acum versiunea rom�neasc� a tutorialului de Emacs. + +Comenzile Emacs folosesc �n general tasta CONTROL (uneori denumit� +CTRL sau CTL) sau tasta META. Pe unele tastaturi, tasta META este +etichetat� ALT, EDIT sau �n alt fel (de exemplu, pe tastaturile Sun, +tasta META este etichetat� cu un diamant �i se g�se�te la st�nga +tastei spa�iu). Dac� nu ave�i o tast� META, pute�i folosi ESC �n loc. +�n loc s� scriem META sau CONTROL de fiecare dat� c�nd vrem s� +prefix�m un caracter, vom folosi urm�toarele prescurt�ri: + + C-<chr> �nseamn� c� �ine�i ap�sat� tasta CONTROL �n timp ce tasta�i + caracterul <chr>. Astfel, C-f �nseamn�: �ine�i ap�sat� tasta + CONTROL �i tasta�i f. + + M-<chr> �nseamn� c� �ine�i ap�sat� tasta META �n timp ce tasta�i + <chr>. Dac� nu exist� tasta META, tasta�i <ESC>, ridica�i �i + apoi tasta�i caracterul <chr>. + +Observa�ie important�: pentru a termina sesiunea Emacs, tasta�i C-x +C-c. (Dou� caractere.) Caracterele ">>" la marginea din st�nga +reprezint� instruc�iuni pentru a �ncerca o comand�. De exemplu: +<<Mijlocul paginii e gol din ra�iuni didactice. Textul continu� dedesubt.>> +>> Acum tasta�i C-v (citirea urm�torului ecran) pentru a v� muta la + urm�torul ecran. (Executa�i aceast� comand� acum, tin�nd ap�sat� + tasta CONTROL �n timp ce tasta�i v). De acum �nainte face�i acest + lucru din nou, de fiecare dat� c�nd termina�i de citit ecranul. + +De remarcat c� exist� o zon� de suprapunere de dou� linii c�nd v� +muta�i de la un ecran la altul; ave�i astfel o oarecare continuitate +�n citirea textului. + +Primul lucru pe care trebuie s�-l sti�i este cum s� v� deplasa�i din +loc �n loc �n text. �ti�i deja cum s� v� muta�i la urm�torul ecran cu +C-v. Pentru a v� deplasa �napoi un ecran, tasta�i M-v (�ine�i ap�sat� +tasta META �i tasta�i v, sau <ESC>v dac� nu ave�i o tast� META, EDIT, +sau ALT). + +>> �ncerca�i s� tasta�i M-v �i apoi C-v de c�teva ori. + + +* SUMAR +------- + +Urm�toarele comenzi sunt utile pentru a vedea ecrane: + + C-v avanseaz� un ecran + M-v �napoi un ecran + C-l �terge ecranul �i reafi�eaz� totul pozi�ion�nd textul + de l�ng� cursor �n centrul ecranului. (Este C-L, nu + C-1.) + +>> G�si�i cursorul �i �ine�i minte ce text este �n jurul lui. + Apoi tasta�i C-l. G�si�i cursorul din nou �i observa�i c� textul + de l�ng� cursor este acela�i. + + +* COMENZI DE BAZ� PENTRU CONTROLUL CURSORULUI +--------------------------------------------- + +Mutatul ecran cu ecran este util, dar cum v� muta�i la o anumit� +pozi�ie �n textul de pe ecran? + +Sunt mai multe modalita�i �n care pute�i face acest lucru. Cel mai +simplu este s� folosi�i comenzile C-p, C-b, C-f �i C-n. Fiecare din +aceste comenzi mut� cursorul o linie sau coloan� �ntr-o anumit� +direc�ie pe ecran. Diagrama urm�toare prezint� aceste patru comenzi +�i arat� direc�iile �n care ele mut� cursorul. + + Linia precedent�, C-p + : + : + �napoi, C-b .... Pozi�ia curent� a cursorului .... �nainte, C-f + : + : + Linia urm�toare, C-n + +>> Muta�i cursorul la linia din mijlocul diagramei folosind C-n sau + C-p. Tasta�i apoi C-l pentru a vedea �ntreaga diagram� centrat� pe + ecran. + +Vi se va p�rea probabil mai simplu s� v� aminti�i aceste comenzi +g�ndindu-v� la semnifica�ia lor �n limba englez�: P pentru previous, N +pentru next, B pentru backward �i F pentru forward. Acestea sunt +comenzile de baz� pentru pozi�ionarea cursorului �i le ve�i folosi tot +timpul, deci ar fi foarte util s� le �nv��a�i acum. + +>> Tasta�i c�teva C-n-uri pentru a aduce cursorul la aceast� linie. + +>> Muta�i-v� �n interiorul liniei cu C-f-uri �i apoi �n sus cu + C-p-uri. Urm�ri�i ce face C-p atunci c�nd cursorul este �n + mijlocul liniei. + +Fiecare linie se termin� cu un caracter NEWLINE care o separ� de linia +urm�toare. Ultima linie �n fi�ierele dumneavoastr� ar trebui s� aib� +un asemenea caracter la sf�r�it (de�i Emacs-ul nu-l necesit�). + +>> �ncerca�i s� tasta�i C-b la �nceputul unei linii. Cursorul ar + trebui s� se mute la sf�r�itul liniei precedente, din cauza + trecerii peste caracterul NEWLINE. + +C-f poate s� treac� peste un caracter NEWLINE, la fel ca �i C-b. + +>> Tasta�i c�teva C-b-uri, pentru a v� familiariza cu pozi�ia + cursorului. Tasta�i apoi c�teva C-f-uri pentru a v� �ntoarce la + sf�r�itul liniei. �nc� un C-f �i v� ve�i muta la linia urm�toare. + +C�nd ajunge�i s� trece�i peste �nceputul sau sf�r�itul ecranului, +textul aflat dincolo de margine intr� �n ecran, permi��ndu-i +Emacs-ului s� mute cursorul la pozi�ia specificat�, f�r� a ie�i din +zona vizibil� (ecran). Aceast� opera�iune se numeste �n limba englez� +"scrolling". + +>> �ncerca�i s� muta�i cursorul �n afara p�r�ii de jos a ecranului cu + C-n �i observa�i ce se �ntampl�. + +Dac� mutatul caracter cu caracter este lent, pute�i muta cursorul +cuv�nt cu cuv�nt. M-f (META-f) avanseaz� cursorul cu un cuv�nt, iar +M-b mut� cursorul un cuv�nt �napoi. + +>> Tasta�i c�teva M-f-uri �i apoi c�teva M-b-uri. + +C�nd cursorul este �n mijlocul unui cuv�nt, M-f �l mut� la sf�r�itul +cuv�ntului. C�nd cursorul este �n spa�iul dintre cuvinte, M-f �l mut� +la sf�r�itul cuv�ntului urm�tor. M-b ac�ioneaz� similar, dar �n +direc�ia opus�. + +>> Tasta�i M-f �i M-b de c�teva ori, intercalate cu C-f-uri �i + C-b-uri, pentru a observa efectul comenzilor M-f �i M-b din diverse + pozi�ii �n interiorul cuvintelor �i �ntre ele. + +Observa�i paralela �ntre C-f �i C-b pe de o parte, �i M-f �i M-b pe de +cealalt� parte. De multe ori, caracterele META sunt folosite pentru +opera�ii referitoare la unit��ile definite de limbaj (cuvinte, fraze, +paragrafe), �n timp ce caracterele CONTROL opereaz� pe unit��i de +baz�, care sunt independente de tipul textului editat (caractere, +linii, etc). + +Aceast� paralel� se aplic� �i �ntre linii �i fraze: C-a �i C-e mut� +cursorul la �nceputul �i, respectiv sf�r�itul unei linii, �n timp ce +M-a �i M-e �l mut� la �nceputul �i, respectiv sf�r�itul unei fraze. + +>> �ncerca�i c�teva C-a-uri, apoi c�teva C-e-uri. + �ncerca�i c�teva M-a-uri, apoi c�teva M-e-uri. + +Remarca�i cum repetarea tast�rii lui C-a nu schimb� nimic, �n timp ce +repetarea tast�rii lui M-a mut� cursorul la fraza urm�toare. De�i +aceste opera�ii nu sunt tocmai analoage, fiecare pare natural�. + +Pozi�ia cursorului �n text mai este numit� �i "punct" ("point" �n +limba englez�). Cursorul arat� pe ecran pozi�ia punctului �n text. + +Opera�iile ce mut� cursorul (inclusiv comenzile ce mut� cursorul +cuv�nt cu cuv�nt sau fraz� cu fraz�) sunt prezentate �n sumarul +urm�tor: + + C-f avanseaz� un caracter + C-b �napoi un caracter + + M-f avanseaz� un cuv�nt + M-b �napoi un cuv�nt + + C-n avanseaz� o linie + C-p �napoi o linie + + C-a �napoi la �nceputul liniei + C-e avanseaz� la sf�r�itul liniei + + M-a �napoi la �nceputul frazei + M-e avanseaz� la sf�r�itul frazei + +>> Exersa�i toate aceste comenzi acum, sunt comenzile cele mai des + folosite. + +Dou� alte comenzi importante legate de mutatul cursorului sunt M-< +(META Mai-mic), care mut� cursorul la �nceputul textului, �i M-> (META +Mai-mare), care mut� cursorul la sf�r�itul textului. + +Pe majoritatea terminalelor "<" este deasupra virgulei �i deci este +necesar s� ap�sa�i tasta SHIFT �n acela�i timp. Pe aceste terminale +este nevoie s� ap�sa�i SHIFT �i c�nd tasta�i M-<; f�r� tasta SHIFT, +a�i ap�sa M-virgul�. + +>> �ncerca�i M-< acum, pentru a v� muta la �nceputul tutorialului. + Folosi�i apoi C-v �n mod repetat pentru a ajunge �napoi aici. + +>> �ncerca�i M-> acum, pentru a v� muta la sf�r�itul tutorialului. + Folosi�i apoi M-v repetat pentru a ajunge �napoi aici. + +Pute�i de asemenea s� muta�i cursorul cu tastele s�ge�i, dac� +terminalul are asemenea taste. Se recomand� �ns� acomodarea cu C-b, +C-f, C-n �i C-p din trei motive. �n primul r�nd, aceste taste +func�ioneaz� pe toate tipurile de terminale. �n al doilea r�nd, odat� +ce v� obi�nui�i cu Emacs-ul, ve�i remarca faptul c� tastarea lor este +mai rapid� dec�t cea a tastelor s�ge�i (pentru c� nu trebuie s� v� +schimba�i pozi�ia m�inilor pe tastatur�). �n al treilea r�nd, odat� +format obiceiul de a folosi aceste comenzi bazate pe CONTROL, +comenzile avansate de mutat cursorul se �nva�� foarte u�or. + +Majoritatea comenzilor Emacs accept� un argument numeric; pentru +majoritatea comenzilor, acest argument reprezint� un contor de +repeti�ie. Contorul de repeti�ie se introduce tast�nd C-u, cifrele ce +alc�tuiesc contorul �i apoi comanda. Dac� ave�i tasta META (EDIT sau +ALT), exist� �i o alt� alternativ� pentru a introduce un argument +numeric: tasta�i cifrele �n timp ce �ine�i tasta META ap�sat�. Se +recomand� �ns� folosirea metodei cu C-u, deoarece func�ioneaz� pe +orice terminal. + +De exemplu, C-u 8 C-f avanseaz� cursorul cu opt caractere. + +>> �ncerca�i s� folosi�i C-n sau C-p cu un argument numeric pentru a + muta cursorul dintr-o singur� comand� pe o linie apropiat� de + aceasta. + +Majoritatea comenzilor utilizeaz� argumentul numeric ca un contor de +repetitie. Anumite comenzi speciale �l folosesc �nsa �n mod diferit. +C-v si M-v sunt printre aceste excep�ii. C�nd li se d� un argument +numeric, ele mut� ecranul mai sus sau mai jos cu numarul specificat de +linii, nu de ecrane. De exemplu, C-u 4 C-v mut� ecranul cu 4 linii. + +>> �ncerca�i s� tasta�i C-u 8 C-v acum. + +Aceast� comand� trebuie s� mute ecranul �n sus cu 8 linii. Dac� +doriti s� �l muta�i �napoi, pute�i s�-i da�i lui M-v un argument +numeric. + +Dac� folosi�i sistemul X Window, exist� probabil o zon� rectangular� +numita "scroll bar" la dreapta ferestrei Emacs-ului. Pute�i deplasa +textul manipul�nd "scroll bar"-ul cu mouse-ul. + +>> �ncerca�i s� ap�sa�i butonul din mijloc al mouse-ului la mijlocul + butonului din scroll bar. Aceasta ar trebui s� mute textul la o + pozi�ie determinat� de c�t de sus sau de jos a�i ap�sat pe scroll + bar. + +>> Muta�i mouse-ul �ntr-un punct �n scroll bar la aproximativ trei + linii de �nceput �i ap�sa�i butonul din st�nga de c�teva ori. + + +* CONTROLUL CURSORULUI �NTR-UN TERMINAL X +----------------------------------------- + +Dac� ave�i un terminal X, vi se va p�rea probabil mai u�or s� folosi�i +tastele de pe keypad pentru a controla cursorul. S�ge�ile st�nga, +dreapta, sus �i jos mut� cursorul �n direc�ia specificat�; +func�ioneaza exact ca �i C-b, C-f, C-p �i C-n, dar sunt mai u�or de +tastat �i re�inut. Pute�i folosi de asemenea C-st�nga �i C-dreapta +pentru a v� deplasa cuv�nt cu cuv�nt, �i C-sus �i C-jos, pentru a v� +deplasa bloc cu bloc (de ex. paragraf cu paragraf, dac� edita�i text). +Dac� tastatura are taste etichetate HOME (sau BEGIN) �i END, acestea +v� vor muta la �nceputul, respectiv sf�r�itul liniei, iar C-home �i +C-end v� vor muta la �nceputul, respectiv sf�r�itul fi�ierului. Dac� +tastatura are taste etichetate PgUp �i PgDn, acestea v� vor muta ecran +cu ecran, exact ca M-v �i C-v. + +Toate aceste comenzi accept� argument numeric, a�a cum am explicat mai +sus. Pute�i folosi o modalitate mai simpl� de a-l introduce: �ine�i +ap�sat� tasta CONTROL sau tasta META �i tasta�i num�rul. De exemplu, +pentru a v� muta 12 cuvinte la dreapta, tasta�i C-1 C-2 C-dreapta. De +remarcat faptul c� este foarte u�or s� tasta�i, pentru c� nu trebuie +s� ridica�i tasta CONTROL. + + +* C�ND EMACS-ul ESTE BLOCAT +--------------------------- + +Dac� Emacs-ul �nceteaz� s� v� raspund� la comenzi, �l pute�i opri, +f�r� s� pierde�i modific�rile f�cute p�n� atunci, tast�nd C-g. Pute�i +folosi C-g pentru a opri o comand� care dureaz� prea mult. + +Pute�i de asemenea folosi C-g pentru a opri introducerea unui argument +numeric sau �nceputul unei comenzi pe care nu dori�i s� o continua�i. + +>> Tasta�i C-u 100 pentru a introduce 100 ca un argument numeric, apoi + tasta�i C-g. Tasta�i apoi C-f. Cursorul ar trebui s� se mute un + singur caracter, pentru c� a�i oprit introducerea argumentului + numeric cu C-g. + +Dac� a�i tastat un <ESC> din gre�eal�, pute�i s�-l anula�i cu un C-g. + + +* COMENZI DEZAFECTATE +--------------------- + +Anumite comenzi sunt dezafectate �n Emacs, �n a�a fel �nc�t +utilizatorii s� nu le poat� folosi din neaten�ie. + +Dac� tasta�i una din comenzile dezafectate, Emacs-ul va afi�a un mesaj +spun�nd ce comand� a�i tastat �i �ntreb�ndu-v� dac� dori�i s� +continua�i. + +Dac� �ntr-adev�r dori�i s� �ncerca�i comanda respectiv�, tasta�i +SPA�IU. �n mod normal, dac� nu dori�i s� executa�i comanda +dezafectat�, r�spunde�i cu "n". + +>> Tasta�i `C-x n p' (care este o comand� dezafectat�), apoi tasta�i n + ca r�spuns la �ntrebarea pus� de Emacs. + + +* FERESTRE +---------- + +Emacs-ul poate avea mai multe ferestre, fiecare afi��nd propriul s�u +text. De remarcat c� "fereastr�" �n sensul folosit de Emacs nu se +refer� la ferestrele ce se pot suprapune �ntr-un sistem bazat pe +ferestre (cum ar fi X Window System), ci la sec�iuni separate �ntr-o +singur� fereastr� X. (Emacs-ul poate avea multiple ferestre X - +"frame"-uri �n terminologia Emacs. Acestea vor fi descrise mai +t�rziu.) + +�n acest moment este mai bine s� nu detaliem tehnicile de folosire a +ferestrelor multiple, dar trebuie s� �ti�i cum s� �nchide�i ferestrele +care ar putea apare ca rezultat al afi��rii unor documenta�ii sau +rezultate specifice anumitor comenzi. Este simplu: + + C-x 1 o singur� fereastr� (adic� �nchide toate celelalte + ferestre). + +Asta �nseamn� CONTROL-x urmat de cifra 1. C-x 1 m�re�te fereastra +care con�ine cursorul p�n� c�nd ocup� �ntregul ecran. Toate celelalte +ferestre sunt distruse. + +>> Muta�i cursorul la aceast� linie �i tasta�i C-u 0 C-l. + +(Dup� cum v� aminti�i, C-l redeseneaz� ecranul. Un argument numeric +�nseamn� "redeseneaz� ecranul �i pune linia curent� la o distan�� (�n +num�r de linii) de partea de sus a ecranului egal� cu argumentul +numeric". �n concluzie, C-u 0 C-l �nseamn� "redeseneaz� ecranul, +pozi�ion�nd linia curent� la �nceput.") + +>> Tasta�i C-x 2. Observa�i cum aceast� fereastr� se mic�oreaz�, �n + timp ce o nou� fereastr� apare, afi��nd acela�i text. + +>> Tasta�i C-x 1 �i observa�i cum noua fereastr� dispare. + + +* INTRODUCEREA �I �TERGEREA +--------------------------- + +Dac� vre�i s� introduce�i text, pur �i simplu tasta�i textul dorit. +Caracterele pe care le pute�i vedea, cum ar fi A, 7, *, etc. sunt +interpretate de Emacs ca text �i introduse imediat. Tasta�i <Return> +(tasta mai este etichetat� <Enter> uneori) pentru a introduce un +caracter NEWLINE. + +Pute�i �terge ultimul caracter pe care l-a�i introdus tast�nd +<Delete>. <Delete> este o tast� pe tastatur� etichetat� "Del" sau +"Delete". �n unele cazuri tasta "Backspace" poate ac�iona ca +<Delete>, dar nu �ntotdeauna! + +Mai general, <Delete> �terge caracterul dinaintea pozi�iei curente a +cursorului. + +>> Executa�i urm�toarele opera�ii acum - tasta�i c�teva caractere, + apoi �terge�i-le tast�nd <Delete> de c�teva ori. Nu v� teme�i c� + ve�i schimba acest fi�ier; nu ve�i altera versiunea principal� a + tutorialului. Aceasta este copia dumneavoastr� personal�. + +C�nd o linie de text devine prea mare pentru a putea fi reprezentat� +pe o linie de ecran, linia de text este continuat� pe urm�toarea linie +de pe ecran. Un caracter backslash ("\") la marginea din dreapta +indic� o linie care a fost continuat�. + +>> Introduce�i text p�n� c�nd dep�i�i cu c�teva caractere marginea + din dreapta a ecranului. Ve�i observa apari�ia liniei de + continuare. + +>> Folosi�i <Delete>-uri pentru a �terge textul p�n� c�nd linia �ncape + din nou pe o linie de ecran. Linia de continuare va disp�rea. + +Pute�i �terge un caracter NEWLINE ca pe orice alt caracter. �tergerea +unui NEWLINE dintre dou� linii concateneaza cele dou� linii. Dac� +linia rezultat� este prea lung� pentru a fi afi�at� pe ecran, va fi +afi�at� cu o linie de continuare. + +>> Muta�i cursorul la �nceputul unei linii �i tasta�i <Delete>. + Aceasta concateneaz� linia curent� cu cea precedent�. + +>> Tasta�i <Return> pentru a reintroduce caracterul NEWLINE �ters. + +A�a cum v� reaminti�i, majoritatea comenzilor Emacs pot primi un +argument numeric ce ac�ioneaz� ca un contor de repeti�ie; introducerea +caracterelor ascult� acelea�i reguli. Un argument numeric dat unui +caracter duce la introducerea caracterului respectiv de num�rul +specificat de ori. + +>> �ncerca�i asta acum - tasta�i C-u 8 * pentru a introduce ********. + +A�i �nv��at acum metodele elementare de tastat �i corectat erori �n +Emacs. Pute�i de asemenea �terge cuvinte sau linii. Acesta este un +sumar al opera�iilor de �tergere. + + <Delete> �terge caracterul de dinaintea cursorului + C-d �terge caracterul de dup� cursor + + M-<Delete> �terge cuv�ntul de dinaintea cursorului + M-d �terge cuv�ntul de dup� cursor + + C-k �terge de la pozi�ia curent� p�n� la sf�r�itul + liniei + M-k �terge de la pozi�ia curent� p�n� la sf�r�itul + frazei + +De remarcat c� <Delete> �i C-d versus M-<Delete> �i M-d extind +paralela �nceput� de C-f �i M-f (<Delete> nu este cu adev�rat un +caracter bazat pe CONTROL, dar nu o s� ne ocup�m de asta acum). C-k +�i M-k sunt ca C-e �i M-e, �ntr-un fel, dac� facem o paralel� �ntre +linii �i fraze. + +C�nd �terge�i mai mult de un caracter la un moment dat, Emacs-ul +p�streaz� intern textul distrus �n a�a fel �nc�t �l pute�i restaura. +Termenul folosit de Emacs pentru opera�iunea de restaurare a textului +distrus este "yanking". Pute�i restaura textul distrus fie �n acela�i +loc, fie �n alt loc �n fi�ier. Pute�i de asemenea restaura textul de +mai multe ori pentru a face mai multe copii. Comanda de restaurare +este C-y. + +Diferen�a dintre "distrugerea" �i "�tergerea" unei por�iuni din text +este aceea ca por�iunile de text "distruse" pot fi restaurate, �n timp +ce por�iunile de text "�terse", nu. �n general, comenzile care +distrug por�iuni semnificative din text, p�streaz� intern textul +respectiv, �n timp ce comenzile care �terg doar un caracter, linii +goale sau spa�ii, nu fac acest lucru. + +>> Muta�i cursorul la �nceputul unei linii care nu este goal�. + Tasta�i apoi C-k pentru a distruge textul de pe linia respectiv�. +>> Tasta�i C-k o a doua oar�. Ve�i observa distrugerea caracterului + NEWLINE de la sf�r�itul liniei. + +Dup� cum vede�i, un singur C-k distruge con�inutul liniei, iar un al +doilea C-k distruge linia �ns�i, fac�nd toate celelalte linii s� se +mute �n sus. C-k trateaz� un argument numeric �n mod special: +distruge num�rul specificat de linii �i con�inutul lor. Aceast� +comportare nu este doar o simpl� repeti�ie. C-u 2 C-k distruge dou� +linii �i NEWLINE-urile de dup� ele; tast�nd C-k de dou� ori nu +ob�ine�i acela�i rezultat. + +Pentru a extrage ultimul text distrus �i a-l plasa la pozi�ia curent� +a cursorului, tasta�i C-y. + +>> Tasta�i C-y pentru a restaura textul distrus anterior. + +G�nditi-v� la C-y ca �i cum a�i recupera ceva ce v-a fost luat. +Observa�i c� dac� executa�i mai multe C-k-uri la r�nd, tot textul +distrus este stocat �ntr-o singur� bucat�, �n a�a fel �nc�t un singur +C-y va restaura toate liniile. + +>> Tasta�i acum C-k de c�teva ori. + +Acum �ncerca�i s� restaura�i textul distrus: + +>> Tasta�i C-y. Muta�i apoi cursorul c�teva linii mai jos �i tasta�i + C-y din nou. Ve�i vedea cum se copiaz� por�iuni de text. + +Ce face�i dac� ave�i por�iuni de text pe care vre�i s� le restaura�i, +dar �ntre timp distruge�i o alt� por�iune de text? C-y va restaura +por�iunea de text care a fost distrus� cel mai recent. Cu toate +acestea, textul distrus anterior nu este pierdut. Pute�i s�-l +restaura�i folosind comanda M-y. Dup� ce a�i executat C-y pentru a +ob�ine textul cel mai recent distrus, tast�nd M-y ve�i �nlocui textul +ce tocmai a fost restaurat cu textul distrus �naintea lui. Tast�nd +M-y de mai multe ori pute�i ob�ine por�iuni de text distrus din ce �n +ce mai vechi. Odat� ajun�i la textul care v� intereseaz�, pute�i s� +continua�i editarea f�r� s� mai face�i nimic special, las�nd textul +restaurat �n pozi�ia �n care se g�se�te. + +Dac� tasta�i M-y de suficient de multe ori, ve�i ajunge �n cele din +urm� la punctul de plecare (textul distrus cel mai de cur�nd). + +>> Distruge�i o linie, muta�i-v� pu�in �n jurul ei, distruge�i o alt� + linie. Executa�i apoi C-y pentru a ob�ine �napoi cea de-a doua + linie distrus�. Executa�i apoi M-y �i ve�i constata c� este + �nlocuit� de prima linie distrus�. Executa�i mai multe M-y-uri �i + observa�i ce ob�ine�i. Continua�i s� le executa�i p�n� c�nd a doua + linie apare din nou, etc. Dac� dori�i, pute�i �ncerca s�-i da�i + comenzii M-y argumente numerice pozitive �i negative. + + +* ANULARE +--------- + +Dac� face�i o schimbare �n text, �i apoi constata�i c� a�i gre�it, +pute�i anula schimbarea cu comanda de anulare, C-x u. + +�n mod normal, C-x u anuleaz� schimb�rile f�cute de o comand�; dac� +repeta�i C-x u de c�teva ori la r�nd, fiecare nou� repeti�ie anuleaz� +�nc� o comand�. + +Exist� �ns� dou� excep�ii: comenzile care nu schimb� textul nu sunt +luate �n considerare (acestea includ comenzile de mutat cursorul �i +cele de "scrolling"), iar caracterele introduse individual sunt +tratate �n grupuri de maxim 20. (Motiva�ia din spatele acestei +abord�ri este aceea de a reduce num�rul de C-x u-uri pe care trebuie +s� le tasta�i pentru anularea inser�rilor de text). + +>> Distruge�i linia aceasta cu C-k, apoi tasta�i C-x u; linia ar + trebui s� reapar�. + +C-_ este o alt� comand� de anulare; func�ioneaz� exact ca �i C-x u, +dar este mai u�or de tastat de mai multe ori la r�nd. Dezavantajul +lui C-_ este c� pe anumite tastaturi nu este clar cum trebuie tastat. +Din acest motiv exist� C-x u. Pe unele terminale se poate s� tasta�i +C-_ tast�nd "/" �n timp ce �ine�i ap�sat� tasta CONTROL. + +Un argument numeric la C-_ sau C-x u ac�ioneaz� ca un contor de +repeti�ie. + + +* FI�IERE +--------- + +Pentru a face permanente modific�rile din textul pe care �l edita�i, +trebuie s�-l stoca�i (salva�i) �ntr-un fi�ier. Altminteri, +modific�rile se vor pierde �n momentul p�r�sirii Emacs-ului. Pune�i +textul �ntr-un fi�ier "deschiz�nd" (sau "vizit�nd") fi�ierul. + +Deschiderea unui fi�ier �nseamn� c� pute�i vedea con�inutul fi�ierului +�n Emacs. Este ca �i cum a�i edita chiar fi�ierul, singura diferen�� +fiind aceea c� schimb�rile nu devin permanente p�n� c�nd nu �l +"salva�i" ("save" �n limba englez�). Se evit� astfel existen�a �n +sistem a unor fi�iere incomplet modificate atunci c�nd nu dori�i acest +lucru. Chiar �i c�nd salva�i fi�ierul, Emacs-ul p�streaz� fi�ierul +ini�ial (cu un nume schimbat) �n a�a fel �nc�t s�-l pute�i recupera �n +cazul �n care decide�i c� modific�rile efectuate au fost gre�ite. + +Aproape de marginea de jos a ecranului ve�i observa o linie care +�ncepe �i se termin� cu minusuri, �i con�ine �irul "Emacs: +TUTORIAL.ro". Aceast� parte a ecranului arat� �ntotdeauna numele +fi�ierului pe care �l vizita�i. Acum vizita�i fi�ierul "TUTORIAL.ro" +care este copia dumneavoastr� de �ncerc�ri a tutorialului �n limba +rom�n�. Orice fi�ier a�i edita, numele acelui fi�ier va ap�rea �n +pozi�ia respectiv�. + +Comenzile pentru g�sirea �i salvarea fi�ierelor sunt diferite de +celelalte comenzi pe care le-a�i �nv��at, �n sensul c� sunt compuse +din dou� caractere. Am�ndou� �ncep cu caracterul C-x. Exist� o +�ntreag� serie de comenzi care �ncep cu C-x; multe dintre ele sunt +legate de fi�iere, buffere �i alte lucruri �nrudite. Aceste comenzi +sunt compuse din dou�, trei sau patru caractere. + +Comenzii de deschidere a unui fi�ier trebuie s� �i spune�i numele +fi�ierului dorit. Spunem despre comand� ca "cite�te un argument de la +terminal" (�n acest caz, argumentul este numele fi�ierului). Dup� ce +tasta�i comanda + + C-x C-f (deschide un fi�ier) + +Emacs-ul v� va cere s� introduce�i numele fi�ierului. Numele pe care +�l tasta�i apare pe ultima linie a ecranului. Aceast� linie se +numeste "minibuffer" c�nd este folosit� pentru acest tip de +introducere. Comenzile normale de editare �n Emacs pot fi folosite �i +pentru editarea numelui fi�ierului. + +�n timp ce introduce�i numele fi�ierului (sau orice alt tip de +introducere de date �n minibuffer), pute�i anula comanda cu C-g. + +>> Tasta�i C-x C-f, apoi tasta�i C-g. Aceasta anuleaz� minibuffer-ul, + �i, de asemenea, anuleaz� comanda C-x C-f care �l folosea. �n + concluzie, nu ve�i mai deschide nici un fi�ier. + +C�nd a�i terminat de introdus numele fi�ierului, tasta�i <Return> +pentru a-l �ncheia. Dup� aceasta, comanda C-x C-f �ncepe s� lucreze +�i deschide fi�ierul pe care l-a�i ales. Minibuffer-ul dispare c�nd +comanda C-x C-f se termin�. + +Dup� c�teva momente, con�inutul fi�ierului apare pe ecran �i �l pute�i +edita. C�nd doriti s� face�i schimb�rile permanente, tasta�i comanda + + C-x C-s (salveaz� fi�ierul) + +Aceasta copiaz� textul din Emacs �ntr-un fi�ier. Prima oar� c�nd +face�i acest lucru, Emacs-ul redenume�te fi�ierul ini�ial �n a�a fel +�nc�t s� nu se piard�. Noul nume este creat prin ad�ugarea +caracterului "~" la numele ini�ial. + +C�nd opera�iunea de salvare este terminat�, Emacs-ul afi�eaz� numele +fi�ierului salvat. Se recomand� salvarea la intervale relativ mici, +pentru a nu pierde prea mult� munc� �n cazul unei eventuale bloc�ri a +sistemului. + +>> Tasta�i C-x C-s, pentru a salva copia tutorialului. + Aceasta ar trebui s� afi�eze "Wrote ...TUTORIAL.ro" la marginea de + jos a ecranului. + +OBSERVA�IE: �n unele sisteme, tastarea comenzii C-x C-s va bloca +ecranul �i nu ve�i mai primi nici un de r�spuns din partea Emacs-ului. +Aceasta indic� faptul c� o facilitate a sistemului de operare numit� +"controlul fluxului" ("flow control" �n limba englez�) intercepteaz� +C-s, nelas�ndu-l s� ajung� la Emacs. Pentru deblocarea ecranului, +tasta�i C-q. Pute�i g�si detalii referitoare la aceast� a�a-numit� +"facilitate" �n sec�iunea "Spontaneous Entry to Incremental Search" +din manualul Emacs-ului. + +Pute�i deschide un fi�ier existent, pentru a-l vedea sau edita. +Pute�i de asemenea deschide un fi�ier care nu exist�. Aceasta este +modalitatea �n care crea�i noi fi�iere cu Emacs-ul: deschide�i +fi�ierul (care va fi gol ini�ial), apoi �ncepe�i s� introduce�i text +�n el. C�nd �i ve�i cere s� "salveze" fi�ierul, Emacs-ul va crea +fi�ierul cu textul pe care l-a�i introdus. De acum �nainte pute�i +considera c� edita�i un fi�ier existent. + + +* BUFFERE +--------- + +Dac� deschide�i un al doilea fi�ier cu C-x C-f, primul va continua s� +existe �n Emacs. Pute�i s� v� muta�i �napoi la el deschiz�ndu-l din +nou cu C-x C-f. �n acest fel pute�i avea un num�r destul de mare de +fi�iere deschise �n Emacs. + +>> Crea�i un fi�ier numit "foo" tast�nd C-x C-f foo <Return>. + Introduce�i un text oarecare, edita�i-l, apoi salva�i "foo" tast�nd + C-x C-s. �n cele din urm�, tasta�i C-x C-f TUTORIAL.ro <Return> + pentru a v� �ntoarce la tutorial. + +Emacs-ul stocheaz� textul fiec�rui fi�ier �ntr-un obiect numit +"buffer". Deschiderea unui fi�ier creeaz� un nou buffer �n Emacs. +Pentru a vedea o list� a bufferelor existente �n Emacs, tasta�i + + C-x C-b (lista de buffere) + +>> �ncerca�i C-x C-b acum. + +Observa�i cum fiecare buffer are un nume �i, uneori, un nume de fi�ier +corespunz�tor fi�ierului al c�rui con�inut este men�inut �n buffer-ul +respectiv. Unele buffere nu corespund nici unui fi�ier. De exemplu, +buffer-ul numit "*Buffer List*" nu are nici un fi�ier asociat. Este +buffer-ul care con�ine lista de buffere �i a fost creat de comanda C-x +C-b. Orice text pe care �l vede�i �ntr-o fereastr� a Emacs-ului este +�ntotdeauna parte dintr-un buffer. + +>> Tasta�i C-x 1 pentru a sc�pa de lista de buffere. + +Dac� face�i schimb�ri �n textul unui fi�ier, apoi deschide�i un alt +fi�ier, primul fi�ier nu este salvat. Schimb�rile efectuate r�m�n �n +Emacs, �n buffer-ul asociat acelui fi�ier. Crearea sau editarea +buffer-ului celui de-al doilea fi�ier nu are nici un efect asupra +buffer-ului primului fi�ier. Acest lucru este foarte util, dar +�nseamn� c� ave�i nevoie de o modalitate convenabil� de a salva +buffer-ul primului fi�ier. Ar fi obositor s� fie necesar s� v� muta�i +�napoi la el cu C-x C-f pentru a-l putea salva cu C-x C-s. Din acest +motiv exist� comanda: + + C-x s salveaz� ni�te buffere + +C-x s v� �ntreab� despre fiecare buffer care con�ine modific�ri (�i +care nu a fost salvat) dac� dori�i s�-l salva�i. + +>> Introduce�i o linie de text, apoi tasta�i C-x s. + Ar trebui s� v� �ntrebe dac� s� salveze buffer-ul TUTORIAL.ro. + Raspunde�i "da" la �ntrebare tast�nd "y". + + +* FOLOSIREA MENIULUI +-------------------- + +Dac� sunte�i la consola unui terminal X, ve�i observa o bar� de +meniuri ("menubar" �n limba englez�) la marginea de sus a ferestrei +Emacs-ului. Pute�i folosi acest menubar pentru a accesa toate +comenzile uzuale ale Emacs-ului, cum ar fi "deschide fi�ier". +Probabil c� vi se va p�rea mai u�or la �nceput, pentru c� nu este +nevoie s� v� aminti�i tastele necesare acces�rii comenzilor. Odat� +acomoda�i cu Emacs-ul, va fi u�or s� �ncepe�i s� folosi�i tastatura, +deoarece fiecare element din meniu, care are o comand� asociat�, +afi�eaz� �i tastele cu care acea comand� poate fi accesat�. + +Exist� multe elemente �n meniu care nu au nici un echivalent �ntr-o +secven�� de taste. De exemplu, meniul Buffers listeaz� toate +buffer-ele existente �n ordinea celei mai recente folosiri. Pute�i s� +v� muta�i la orice buffer g�sindu-i �i select�ndu-i numele �n meniul +Buffers. + + +* FOLOSIREA MOUSE-ului +---------------------- + +C�nd ruleaz� sub X, Emacs-ul ofer� suport integrat pentru mouse. +Pute�i pozi�iona cursorul �n text ap�s�nd butonul st�ng deasupra +pozi�iei dorite; pute�i selecta text tr�g�nd mouse-ul peste por�iunea +dorit�, �n timp ce butonul st�ng este ap�sat. O metod� alternativ� +este s� ap�sa�i butonul st�ng al mouse-ului deasupra uneia dintre +extremit��ile por�iunii de text dorite, apoi s� v� muta�i la cealalt� +extremitate �i s� ap�sa�i butonul st�ng, �in�nd tasta SHIFT ap�sat� +pentru a selecta textul. + +Ca s� distruge�i textul selectat, pute�i folosi C-w sau "Cut" �n meniu +de editare ("Edit"). Exist� �ns� o diferen�� �ntre cele dou� +modalit��i. C-w nu face dec�t s� distrug� textul (p�str�nd o copie +intern�), �n timp ce "Cut" face acela�i lucru, dar pune textul �i �n +clipboard-ul X-ului, de unde poate fi accesat de c�tre alte aplica�ii. + +Dac� vre�i s� extrage�i textul din clipboard-ul X-ului, folosi�i +"Paste" in meniul "Edit". + +Butonul din mijloc al mouse-ului este folosit pentru a alege elemente +care sunt vizibile pe ecran. De exemplu, dac� intra�i �n Info +(documenta�ia Emacs-ului) folosind C-h i sau meniul "Help", pute�i +selecta o legatur� pus� �n eviden�� ap�s�nd butonul din mijloc al +mouse-ului deasupra ei. �n mod analog, dac� introduce�i un nume de +fi�ier (de exemplu c�nd deschide�i un fi�ier cu "Find File") �i +tasta�i TAB pentru a ob�ine complet�rile posibile, pute�i ap�sa +butonul din mijloc al mouse-ului pe una din complet�ri, pentru a o +selecta. + +Butonul din dreapta al mouse-ului invoc� un meniu popup. Con�inutul +acestui meniu variaz� �n func�ie de modul de editare curent �i, �n mod +normal, con�ine c�teva comenzi uzuale, pentru a le face mai u�or +accesibile. + +>> Ap�sa�i butonul din dreapta al mouse-ului acum. + +Va trebui s� �ine�i butonul ap�sat pentru a men�ine meniul vizibil. + + +* EXTINDEREA SETULUI DE COMENZI +------------------------------- + +Exist� mult mai multe comenzi Emacs dec�t combina�ii de taste bazate +pe CONTROL �i META. Solu�ia �n Emacs este folosirea comenzilor +eXtinse. Acestea sunt de dou� feluri: + + C-x eXtinde un caracter; urmat� de un caracter + M-x eXtinde un nume; urmat� de un nume lung + +Acestea sunt comenzi care sunt utile �n general, dar folosite mai rar +dec�t comenzile despre care a�i �nv��at p�n� acum. A�i v�zut deja +dou� dintre ele: comanda de deschis fi�iere (C-x C-f) �i comanda de +salvat fi�iere (C-x C-s). Un alt exemplu este comanda de p�r�sit +Emacs-ul: C-x C-c. (Nu v� teme�i c� ve�i pierde schimb�ri f�cute �n +fi�iere; �nainte de a termina sesiunea curent� Emacs, C-x C-c v� va +�ntreba dac� dori�i s� salva�i fi�ierele modificate.) + +C-z este comanda cu care pute�i ie�i din Emacs *temporar* - astfel +�nc�t s� pute�i s� v� �ntoarce�i la aceea�i sesiune Emacs mai t�rziu. + +Pe sistemele unde este posibil, C-z "suspend�" Emacs-ul; asta �nseamn� +c�, de�i v� ve�i �ntoarce la prompt-ul shell-ului, Emacs-ul nu a fost +distrus. �n shell-urile (interpretoarele de comenzi Unix) cele mai +uzuale pute�i reactiva Emacs-ul cu comanda `fg' sau `%emacs'. + +Pe sistemele care nu implementeaz� mecanismele de suspendare, C-z +creeaz� un subshell care ruleaz� sub Emacs pentru a v� oferi +posibilitatea de a rula alte programe �i de a v� �ntoarce la Emacs mai +t�rziu; pe aceste sisteme C-z nu iese cu adev�rat din Emacs - comanda +`exit' la promptul subshell-ului este modalitatea uzual� de a v� +�ntoarce �n Emacs. + +�n general C-x C-c se folose�te �nainte de p�r�sirea sistemului. +Pute�i folosi aceast� comand� �i pentru a ie�i din instan�e de Emacs +lansate de programe de citit mail sau alte utilitare, deoarece acestea +s-ar putea s� nu fie capabile s� foloseasc� facilita�ile de suspendare +ale Emacs-ului. �n mod normal �ns�, dac� nu sunte�i pe cale s� +p�r�si�i sistemul, este mai bine s� suspenda�i Emacs-ul cu C-z dec�t +s� ie�i�i complet cu C-x C-c. + +Emacs-ul are multe comenzi prefixate cu C-x. Aceasta este lista celor +pe care le-a�i �nv��at p�n� acum: + + C-x C-f deschide un fi�ier + C-x C-s salveaz� fi�ierul + C-x C-b listeaz� bufferele + C-x C-c p�r�se�te Emacs-ul + C-x u anuleaz� + +Comenzile eXtinse cu nume sunt comenzile care sunt folosite �i mai rar +sau comenzile care sunt folosite numai �n anumite moduri. Un exemplu +este comanda replace-string (�nlocuie�te-�ir) care �nlocuie�te global +toate apari�iile unui �ir de caractere cu alt �ir de caractere. C�nd +tasta�i M-x, Emacs-ul afi�eaz� pe ultima linie de pe ecran "M-x" �i +pute�i introduce numele comenzii - �n cazul nostru "replace-string". +Pute�i s� tasta�i doar "repl s<TAB>" �i Emacs-ul va completa numele. +Termina�i comanda cu <Return>. + +Comanda replace-string necesit� dou� argumente - �irul ce va fi +�nlocuit �i �irul �nlocuitor. La sf�r�itul introducerii fiec�rui +argument trebuie s� tasta�i <Return>. + +>> Muta�i cursorul pe linia goal� care se g�seste dou� linii mai jos. + Tasta�i apoi M-x repl s<Return>modificat<Return>alterat<Return>. + + Observa�i modul �n care aceast� linie s-a modificat: a�i �nlocuit + toate apari�iile cuv�ntului s-c-h-i-m-b-a-t cu "alterat", dup� + pozi�ia ini�ial� a cursorului. + + +* SALVARE AUTOMAT� +------------------ + +Dac� a�i facut schimb�ri �ntr-un fi�ier, dar nu le-a�i salvat, aceste +schimb�ri se pot pierde �n cazul �n care sistemul se blocheaz�. +Pentru a v� proteja munca, Emacs-ul salveaz� periodic un fi�ier de +"autosalvare" pentru fiecare fi�ier pe care �l edita�i. Acest fi�ier +are un "#" la �nceput �i unul la sf�r�it; de exemplu, dac� fi�ierul +dumneavoastr� se numeste "hello.c", fi�ierul de autosalvare +corespunz�tor se va numi "#hello.c#". C�nd salva�i fi�ierul �n mod +normal, Emacs-ul �terge fi�ierul de autosalvare. + +�n cazul unei c�deri a sistemului, pute�i s� v� recupera�i fi�ierul de +autosalvare deschiz�nd fi�ierul �n mod normal (fi�ierul pe care �l +edita�i, nu pe cel de autosalvare) �i tast�nd dup� aceea M-x recover +file<Return>. C�nd vi se cere confirmarea, tasta�i yes<Return> pentru +a continua �i a recupera fi�ierul. + + +* ZONA DE ECOU +-------------- + +Dac� Emacs-ul observ� c� tasta�i comenzile �ncet, vi le va ar�ta la +marginea de jos a ecranului �ntr-o zona numit� "zona de ecou". Zona +de ecou con�ine cea mai de jos linie a ecranului. + + +* LINIA DE MOD +-------------- + +Linia de deasupra zonei de ecou se nume�te "linia de mod" ("modeline" +�n limba englez�). Linia de mod con�ine ceva de genul: + +--**-XEmacs: TUTORIAL (Fundamental)--L670--58%---------------- + +Aceast� linie prezint� informa�ii utile despre starea Emacs-ului �i +despre textul pe care �l edita�i. + +Sti�i deja ce �nseamn� numele fi�ierului - este fi�ierul pe care l-a�i +deschis. -NN%-- indic� pozi�ia curent� a cursorului �n text - NN la +sut� din text este deasupra primei linii de pe ecran. Dac� �nceputul +fi�ierului este vizibil pe ecran, ve�i vedea --Top-- �n loc de +--00%--. Dac� sf�r�itul fi�ierului este vizibil pe ecran, ve�i vedea +--Bot-- (de la "bottom" �n limba englez�). Dac� fi�ierul este at�t de +mic, �nc�t �ncape �n �ntregime pe ecran, pe linia de mod ve�i vedea +--All--. + +Stelele de la �nceputul liniei de mod semnalizeaz� existen�a unor +modific�ri nesalvate �n text. Imediat dup� deschiderea fi�ierului, +por�iunea respectiv� din linia de mod nu con�ine nici o stea, doar +minusuri. + +Por�iunea din�untrul parantezelor v� spune modul de editare curent. +Modul implicit este "Fundamental", modul pe care �l folosi�i chiar +acum. Este un exemplu de "mod major". + +Emacs-ul are multe moduri majore. Unele dintre ele sunt destinate +edit�rii diferitelor limbaje �i/sau tipuri de text, cum ar fi modul +Lisp, modul Text, etc. Numai un mod major poate fi activ la un moment +dat �i numele s�u va fi �ntotdeauna acolo unde este "Fundamental" +acum. + +Fiecare mod major schimb� comportamentul unor comenzi. De exemplu +exist� comenzi pentru crearea comentariilor �ntr-un program, dar, cum +fiecare limbaj de programare are o idee diferit� despre felul cum ar +trebui s� arate un comentariu, fiecare mod major trebuie s� le +introduc� �ntr-un alt fel. Exist� c�te o comand� asociat� fiec�rui +mod major - aceasta este modalitatea de a schimba modul major. De +exemplu, M-x fundamental-mode este comanda cu care poate fi ales modul +"Fundamental". + +Dac� edita�i text �n limba rom�n�, cum ar fi de exemplu acest fi�ier, +ar trebui probabil s� folosi�i modul Text. + +>> Tasta�i M-x text-mode<Return>. + +Nu v� temeti, nici una din comenzile pe care le-a�i �nv��at p�n� acum +nu schimb� Emacs-ul prea mult. Pute�i observa acum c� M-f �i M-b +trateaz� apostrofurile ca parte din cuvinte. �nainte, �n modul +Fundamental, M-f �i M-b tratau apostrofurile ca separatoare de +cuvinte. + +Modurile majore opereaz� schimb�ri subtile, ca cea descris� mai sus. +Majoritatea comenzilor execut� aceea�i opera�ie �n fiecare mod major, +dar func�ioneaz� pu�in diferit. + +Pentru a vedea documenta�ia referitoare la modul major curent, tasta�i +C-h m. + +>> Folosi�i C-u C-v o dat� sau de mai multe ori pentru a aduce aceast� + linie aproape de �nceputul ecranului. Tasta�i C-h m ca s� afla�i + diferen�ele dintre modul Text �i modul Fundamental. Tasta�i q + pentru a �terge documenta�ia de pe ecran. + +Modurile majore se numesc "majore" pentru c� exist� �i moduri minore. +Modurile minore sunt ajust�ri minore ale modurilor majore. Fiecare +mod minor poate fi activat sau dezactivat separat, independent de +celelalte moduri minore �i independent de modul major curent. Pute�i +s� nu folosi�i nici un mod minor, un mod minor sau orice combina�ie de +moduri minore. + +Un mod minor care este foarte util, �n mod special c�nd edita�i text, +este modul "Auto Fill". C�nd acest mod este activat, Emacs-ul sparge +automat liniile la spa�iul dintre cuvinte de fiecare dat� c�nd +introduc�nd text crea�i o linie care este prea lung�. + +Pute�i activa modul "Auto Fill" execut�nd M-x auto-fill-mode<Return>. +C�nd acest mod este activat, �l pute�i dezactiva execut�nd aceea�i +comand�. Dac� modul este dezactivat, aceast� comand� �l activeaz�, +c�nd este activat, comanda �l dezactiveaz�. Se spune c� aceast� +comand� inverseaz� modul. + +>> Tasta�i M-x auto-fill-mode<Return> acum. Introduce�i apoi o linie + con�in�nd "asdf " de mai multe ori, p�n� c�nd linia se sparge �n + dou�. Trebuie s� pune�i spa�ii �ntre cuvinte pentru c� Auto Fill + sparge linia numai la spa�ii. + +Marginea este stabilit� �n mod normal la 70 de caractere, dar pute�i +schimba aceast� valoare cu comanda C-x f. Introduce�i valoarea dorit� +ca argument numeric pentru C-x f. + +>> Tasta�i C-x f cu 20 ca argument numeric. (C-u 2 0 C-x f). + Introduce�i apoi un text oarecare �i observa�i cum Emacs-ul umple + linii de maximum 20 de caractere. Restaura�i marginea la 70 de + caractere folosind din nou C-x f. + +Dac� face�i schimb�ri �n mijlocul unui paragraf, modul Auto Fill nu +rearanjeaz� paragraful. Pentru a face acest lucru, trebuie s� tasta�i +M-q (META-q) cu cursorul pozi�ionat �n�untrul paragrafului. + +>> Muta�i cursorul �n paragraful precedent �i tasta�i M-q. + + +* C�UTARE +--------- + +Emacs-ul poate caut� �iruri (grupuri continue de caractere sau +cuvinte) fie �nainte, fie �napoi (fa�� de pozi�ia curent� a cursorului +�n text). C�utarea unui �ir este o opera�ie ce mut� cursorul; +cursorul este mutat �n pozi�ia corespunz�toare urm�toarei apari�ii a +�irului �n text. + +C�utarea este diferit� �n Emacs fa�� de majoritatea editoarelor, +deoarece este "incremental�". Asta �nseamn� c� execu�ia opera�iunii +de c�utare se face �n timp ce tasta�i �irul de c�utat. + +Comanda ce ini�iaz� c�utarea este C-s pentru c�utare �nainte �i C-r +pentru c�utare �napoi. A�TEPTA�I! Nu le �ncerca�i acum. + +C�nd tasta�i C-s ve�i remarca faptul c� �irul "I-search" apare ca +prompt �n zona de ecou. Aceasta v� spune c� Emacs-ul este �n modul de +c�utare incremental�, a�tept�nd ca dumneavoastr� s� introduce�i �irul +pe care dori�i s�-l c�uta�i. C�utarea poate fi terminat� cu <Return>. + +>> Tasta�i acum C-s pentru a porni o c�utare. �NCET, c�te o singur� + liter� la un moment dat, tasta�i cuv�ntul "cursor", f�c�nd o pauz� + dup� fiecare caracter tastat ca s� observa�i ce se �ntampl� cu + cursorul. Acum a�i terminat de c�utat prima apari�ie a cuv�ntului + "cursor". +>> Tasta�i C-s din nou, pentru a c�uta urm�toarea apari�ie a + cuv�ntului "cursor". +>> Tasta�i acum <Delete> de patru ori �i observa�i mi�carea + cursorului. +>> Tasta�i <Return> pentru a termina c�utarea. + +A�i observat ce s-a �ntamplat? �n timpul unei c�ut�ri incrementale +Emacs-ul �ncearc� s� se pozi�ioneze pe prima apari�ie a �irului pe +care l-a�i introdus p�n� �n momentul respectiv, pun�ndu-o �n eviden�� +pentru ca s� o pute�i identifica mai u�or. Dac� vre�i s� v� +pozi�iona�i pe urm�toarea apari�ie a cuv�ntului "cursor", nu trebuie +dec�t s� tasta�i C-s �nc� o dat�. Dac� nu mai exist� o alt� apari�ie, +Emacs-ul va emite un sunet �i v� va anun�a c� opera�iunea de c�utare a +e�uat ("failing" �n limba englez�). C-g este o alt� metod� de a +termina c�utarea. + +OBSERVA�IE: Pe unele sisteme, C-s va bloca ecranul �i nu ve�i mai +primi nici un r�spuns de la Emacs. Aceasta indic� faptul c� o +"facilitate" a sistemului de operare numit� "controlul fluxului" +("flow control" �n limba englez�) intercepteaz� caracterul C-s �i +acesta nu mai ajunge la Emacs. Pentru deblocarea ecranului, ap�sa�i +C-q. Pute�i g�si detalii referitoare la aceast� a�a-numit� +"facilitate" �n sec�iunea "Spontaneous Entry to Incremental Search" +din manualul Emacs-ului. + +Dac� sunte�i �n mijlocul unei c�ut�ri incrementale �i tasta�i +<Delete>, ve�i observa c� ultimul caracter �n c�utarea incremental� +este �ters �i c�utarea se �ntoarce la pozi�ia anterioar�. De exemplu, +s� presupunem c� a�i tastat "c", pentru a c�uta prima apari�ie a lui +"c". Dac� tasta�i "u", cursorul se va muta la prima apari�ie a lui +"cu". Tasta�i acum <Delete>. Aceasta va �terge "u"-ul din �irul de +c�utare �i cursorul se va muta �napoi la prima apari�ie a lui "c". + +C�utarea incremental� poate fi terminat� prin tastarea unui caracter +bazat pe CONTROL sau META (cu c�teva excep�ii - caracterele care sunt +specifice c�ut�rii, cum ar fi C-s �i C-r). + +C-s �ncepe o c�utare care inspecteaz� textul de DUP� pozi�ia curent� a +cursorului. Dac� dori�i s� c�uta�i �n textul dinaintea pozi�iei +curente a cursorului, folosi�i C-r. Toat� discu�ia referitoare la C-s +se aplic� �i comenzii C-r, cu men�iunea c� direc�ia de c�utare este +invers�. + + +* FERESTRE MULTIPLE +------------------- + +Una dintre facilit��ile importante ale Emacs-ului este aceea de a +afi�a pe ecran mai multe ferestre simultan. + +>> Muta�i cursorul pe aceast� linie �i tasta�i C-u 0 C-l. + +>> Tasta�i acum C-x 2 pentru a �mp�r�i ecranul �n dou� ferestre. + Am�ndou� ferestrele vor afi�a acest tutorial. Cursorul va r�mane + �n fereastra din partea de sus a ecranului. + +>> Tasta�i C-M-v pentru a mi�ca textul din fereastra de jos. + (Dac� nu ave�i o tast� META, tasta�i ESC C-v.) + +>> Tasta�i C-x o ("o" de la "other" - "cealalt�" �n limba + englez�) pentru a muta cursorul �n fereastra de jos. + +>> Tasta�i C-v �i M-v �n fereastra de jos pentru a muta textul. + Continua�i s� citi�i aceste instruc�iuni �n fereastra de sus. + +>> Tasta�i C-x o din nou pentru a muta cursorul �napoi �n fereastra de + sus. Cursorul va fi plasat �n locul unde a fost anterior. + +Pute�i continua s� folosi�i C-x o pentru a v� muta �ntre ferestre. +Fiecare fereastr� are propria ei pozi�ie a cursorului, dar numai o +fereastr� arat� cursorul la un moment dat. Toate opera�iile normale +de editare au efect �n fereastra �n care se g�se�te cursorul - +fereastra respectiv� se nume�te "fereastra selectat�". + +Comanda C-M-v este foarte util� c�nd edita�i text �ntr-o fereastr� �i +folosi�i cealalt� fereastr� pentru a citi documenta�ii. Pute�i �ine +�ntotdeauna cursorul �n fereastra �n care edita�i, �n timp ce avansa�i +textul din cealalt� fereastr� cu C-M-v. + +C-M-v este un exemplu de caracter CONTROL-META. Dac� ave�i o tast� +META, pute�i tasta C-M-v �in�nd ap�sate �i CONTROL �i META c�nd +tasta�i v. Nu conteaz� care dintre CONTROL sau META este ap�sat� mai +�nt�i, pentru c� am�ndou� ac�ioneaz� prin modificarea caracterului pe +care �l tasta�i. + +Dac� nu ave�i o tast� META �i folosi�i ESC �n loc, ordinea este +important�: trebuie s� tasta�i ESC urmat de CONTROL-v; CONTROL-ESC v +nu va func�iona, din cauza faptului c� ESC este un caracter de sine +st�t�tor, nu un modificator. + +>> Tasta�i C-x 1 (�n fereastra de sus) ca s� renun�a�i la fereastra + de jos. + +(Dac� a�i tastat C-x 1 �n fereastra de jos, aceast� comand� va �nchide +fereastra de sus. G�ndi�i-v� la ea a�a "P�streaz� doar o fereastr� - +cea �n care sunt acum.") + +Nu este nevoie s� afisa�i acela�i buffer �n ambele ferestre. Dac� +folosi�i C-x C-f pentru a deschide un fi�ier �ntr-o fereastr�, +cealalt� fereastr� nu se schimb�. Pute�i deschide un fi�ier diferit +�n fiecare fereastr�. + +O alt� modalitate de a folosi dou� ferestre ca s� afi�a�i lucruri +diferite: + +>> Tasta�i C-x 4 C-f apoi numele unui fi�ier. Termina�i comanda + cu <Return> Observa�i c� fi�ierul specificat apare �n fereastra de + jos. Cursorul la fel. + +>> Tasta�i C-x o pentru a v� muta �n fereastra de sus, apoi tasta�i + C-x 1 pentru a �terge fereastra de jos. + + +* NIVELURI DE EDITARE RECURSIV� +------------------------------- + +Uneori ve�i intra �n ceea ce se numeste un "nivel de editare +recursiv�". Acesta este indicat de prezen�a unor paranteze drepte �n +linia de mod �n jurul numelui modului major. De exemplu, s-ar putea +s� vede�i [(Fundamental)] �n loc de (Fundamental). + +Pentru a ie�i din nivelul de editare recursiv�, tasta�i ESC ESC ESC. +Aceasta este o comand� de ie�ire de uz general. O pute�i folosi �i ca +s� ie�i�i din minibuffer sau ca s� elimina�i ferestrele �n plus. + +>> Tasta�i M-x pentru a intra �n minibuffer; tasta�i apoi ESC ESC ESC + ca s� ie�i�i. + +Nu pute�i folosi C-g pentru a ie�i dintr-un nivel de editare recursiv� +deoarece comanda C-g este folosit� pentru a anula comenzi �i argumente +�n�untrul unui nivel de editare recursiv�. + + +* CUM PUTE�I OB�INE MAI MULTE INFORMA�II +---------------------------------------- + +�n acest tutorial am �ncercat s� furniz�m suficiente informa�ii pentru +a face primii pa�i �n Emacs. Exist� at�t de multe comenzi �n Emacs +�nc�t ar fi imposibil s� le explic�m pe toate aici. S-ar putea �ns� +s� dori�i s� �nva�a�i mai multe despre Emacs, deoarece ofer� foarte +multe facilita�i interesante. Exist� comenzi pentru a citi +documenta�ia despre comenzile Emacs-ului. Aceste comenzi ajut�toare +sunt prefixate cu caracterul C-h, denumit �i "caracterul de ajutor". + +Pentru a folosi aceste facilit��i de ajutor, tasta�i caracterul C-h, +apoi un caracter ce specific� tipul de ajutor de care ave�i nevoie. +�n cazul �n care sunte�i nel�murit, tasta�i C-h ? �i Emacs-ul v� va +spune ce fel de ajutor v� poate oferi. Dac� a�i tastat C-h �i v� +r�zg�ndi�i (nu mai dori�i ajutor) pute�i tasta C-g pentru a anula +comanda. + +(Anumite site-uri remapeaz� caracterul C-h. Nu ar trebui s� fac� asta +orbe�te pentru to�i utilizatorii - ave�i motiv s� v� pl�nge�i +administratorului de sistem. �ntre timp, dac� C-h nu afi�eaz� un +mesaj despre ajutor la marginea de jos a ecranului, �ncerca�i M-x +help<Return> �n loc.) + +Comanda elementar� de ajutor este C-h c. Tasta�i C-h, apoi caracterul +c �i o comand� alc�tuit� dintr-un caracter sau secven�� de caractere +�i Emacs-ul va afi�a o scurt� descriere a comenzii. + +>> Tasta�i C-h c C-p. + +Mesajul ar trebui s� fie ceva de genul + + C-p runs the command previous-line + +Aceasta v� spune "numele func�iei". Numele de func�ii sunt folosite +�n principal pentru a adapta �i extinde Emacs-ul, dar, cum numele +func�iilor sunt alese �n a�a fel �nc�t s� indice actiunea comenzii +respective, ele pot servi ca o documenta�ie foarte scurt�, suficient� +ca s� v� aminteasc� de comenzi pe care le-a�i �nv��at deja. + +Comenzile formate din mai multe caractere (cum ar fi C-x C-s) �i (dac� +nu ave�i o tasta META, EDIT sau ALT) <ESC> v sunt de asemenea permise +dup� C-h c. + +Pentru a ob�ine mai multe informa�ii despre o comand�, folosi�i C-h k +�n loc de C-h c. + +>> Tasta�i C-h k C-p. + +Aceast� comand� afi�eaz� documenta�ia �i numele func�iei �ntr-o +fereastr� separat�. C�nd termina�i de citit, tasta�i q pentru a +o elimina. + +C�teva comenzi C-h utile: + + C-h f descrie o func�ie al c�rei nume trebuie s�-l + introduce�i + +>> �ncerca�i s� tasta�i C-h f previous-line<Return>. + Aceasta afi�eaz� toat� informa�ia pe care o are Emacs-ul despre + func�ia ce implementeaz� comanda C-p. + + C-h a Hyper Apropos. Tasta�i un cuv�nt cheie �i Emacs-ul va + lista toate func�iile �i variabilele ale c�ror nume + con�in acel cuv�nt cheie. La st�nga comenzilor care + pot fi invocate cu M-x va fi afi�at� o stelu��. + +>> Tasta�i C-h a newline<Return>. + +Aceasta afi�eaz� lista tuturor func�iilor �i variabilelor al c�ror +nume con�ine "newline". Tasta�i <Return> sau ap�sa�i butonul din +mijloc al mouse-ului, pentru a afla mai multe despre o func�ie sau +variabil�. Tasta�i q ca s� ie�i�i din hyper-apropos. + + +* CONCLUZII +----------- + +�ine�i minte, pentru a ie�i permanent din Emacs, folosi�i C-x C-c. +Pentru a ie�i temporar �ntr-un shell (�n a�a fel �nc�t s� v� pute�i +�ntoarce la Emacs mai t�rziu) folosi�i C-z. (sub X, aceast� comand� +minimizeaza frame-ul curent al Emacs-ului.) + +Acest tutorial a fost organizat �n a�a fel �nc�t s� fie pe �n�elesul +noilor utilizatori - nu v� sfii�i s� v� pl�nge�i autorilor dac� gasi�i +ceva neclar! + + +COPIERE +------- + +Acest tutorial este rezultatul prelucr�rii unei serii lungi de +tutoriale pentru Emacs derivate din cel scris de Stuart Cracraft +pentru versiunea ini�ial� de Emacs. Ben Wing a adaptat tutorialul +pentru X Windows. Martin Buchholz �i Hrvoje Niksic au ad�ugat +corec�ii pentru XEmacs. + +Cu scopul evit�rii oric�ror confuzii datorate traducerii, las �n +continuare no�ita de copyright original� �n limba englez�. + +This version of the tutorial, like GNU Emacs, is copyrighted, and +comes with permission to distribute copies on certain conditions: + +Copyright (c) 1985, 1996 Free Software Foundation + + Permission is granted to anyone to make or distribute verbatim copies + of this document as received, in any medium, provided that the + copyright notice and permission notice are preserved, + and that the distributor grants the recipient permission + for further redistribution as permitted by this notice. + + Permission is granted to distribute modified versions + of this document, or of portions of it, + under the above conditions, provided also that they + carry prominent notices stating who last altered them. + +Condi�iile de copiere a Emacs-ului sunt mai complexe, dar �n acela�i +spirit. Citi�i fi�ierul COPYING �i apoi distribui�i prietenilor copii +ale Emacs-ului. Contribui�i la eliminarea obstruc�ionismului software +folosind, scriind �i distribuind free software!
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/TUTORIAL.ru Mon Aug 13 10:39:40 2007 +0200 @@ -0,0 +1,1082 @@ +Copyright (c) 1985, 1996 Free Software Foundation, Inc. See end for conditions. + +�� ������� ������� Emacs. + +��� ���������� Emacs ������ ������������ ������� CONTROL (������ ���������� ��� +CTRL ��� CTL) ��� ������� META. �� ��������� �����������, ������� META +�������� ALT ��� EDIT ��� ���-������ ��� (��������, �� ����������� Sun, +"the diamond key" ����� �� ������� � ���� META). ���� � ��� ��� ������� +META, �� ������ ������������ ESC ������ ���. ����� ������ META ��� +CONTROL ������ ��� �� ����� ������������ ���������� ������ � ��������� +�����������: + + C-<chr> ������� ���������� ������� CONTROL ���� ���������� ������ <chr> + ���, C-f ������ ��������: ������ ������� CONTROL � f. + M-<chr> ������� ���������� ������� META ���� ���������� ������ <chr>. + ���� ������� ���, ������� <ESC>, ��������� ��, ����� ������ <chr>. + +������ ���������: ��� ���������� ������ Emacs, �������� C-x C-c. (��� +�������). ������� ">>" � ����� ������� ���������, ��� ��� ����� ������, +���� ��������� �������. ��������: + +>> ������ ������� C-v (�������� ���������� ������) ��� ����������� �� + ��������� �����. (����� ������, ��������� ������� Control ������� v). + ������ �� ������ ��� ������� ��� ���, ����� ��������� ������ �����. + +�������� �������� �� ��, ���, ���� �� ��������� � ������ �� �����, +������������� ��� �������; ��� ������������ ��������� �������������, ����� +������� �� ������ ���������� ������ �����. + +������ ��� ��� ���������� ����� - ��� ������������� �� ������ �� ������ ����� +� ������. �� ��� ������, ��� ����������� ������ ���� �����, ��������� C-v. +��� ����������� ����� ������ ������, ������� M-v (����������� ������� META +� �������� v, ��� ������� <ESC>v ���� � ��� ��� ������� META, EDIT, ��� ALT). + +>> ���������� ������� M-v � ����� C-v, ��������� ���. + + +* ������ +--------- + +��������� ������� ������������ ��� ���������: + + C-v ������� �� ���� ����� ������ + M-v ������� �� ���� ����� ����� + C-l �������� ����� � ���������� ��� ������, ��������� + �����, ����������� ����� �������, � ������ ������. + (��� control-L, �� control-1.) + +>> ������� ������, � ��������� ����� ����� ����. + ����� ������� C-l. + ������� ������ ����� � ���������, ��� ����� ���� ��� ��� �� �����. + + +* ������� ���������� �������� +----------------------------- + +�������� �� ������ � ������ ������, �� ��� ������������� � +������������ ����� �� ������ �� ������? + +���� ��������� �����, ����� ������� ���. �������� ���� - ������������ ������� +C-p, C-b, C-f, � C-n. ������ �� ���� ������ ����������� ������ �� ���� +������ ��� ������� �� ������ � ������������ �����������. ��� ������� +���������� ������ ������� � ������ ����������� ��������: + + ���������� ������, C-p + : + : + �����, C-b .... ������� ������� ������� .... ������, C-f + : + : + ��������� ������, C-n + +>> ����������� ������ �� ������ ����� � ����������, ��������� C-n ��� C-p. + �����, ������� C-l � ���������� ��� ��������� ����������� � ������ ������. + +��� ����� �������� ��������� �� ������ (// ���, ���� ���������� - ������ +����� ) : P-���������� (previous), N-��������� (next), B-����� (backward) � +F-������ (forward). ��� �������� ������� ���������������� �������, �������� �� +������ ������������ ������, ��� ��� ����� ������� �� �������. + +>> ������� ��������� ��� C-n ���� �������� ������ ���� �� ��� ������. + +>> ������������� �� ������, ��������� C-f � ����� ����������� ����� � ������� + C-p. ����������, ��� ���������� ��������� ������� ��� ������� �-�, ���� �� + ��������� � �������� ������. + +������ ������ ������ ����������� �������� ����������� (Newline character), +������� �������� �� �� ��������� ������. ��������� ������ � ����� ����� +������ �� ���� ����������� �������� ����������� (�� Emacs �� ������� �����). + +>> ���������� ������������ C-b � ������ ������. ������ ������ ������������� �� + ����� ���������� ������. ��� ���������� ������, ��� �� �������� ����� ����� + ������ �����������. + +C-f ����� ���������� ������ ����� ����������� ��� ��, ��� � C-b. + +>> ���������� ��������� ��� ��������� C-b, ��� ����� �� �������, ��� �������� + ������. + ����� ����������� C-f ����� ��������� �� ����� ������. + ������� C-f ��� ���, ����� ������� � ������ ��������� ������. + +����� �� ������������� �� ������� ��� ������ ���� ������, �����, ����������� +�� �������, ���������� ������ ������. ��� ���������� "���������". ��������� +��������� Emacs`� ���������� ������ � ������ ����� ������ ��� ����������� +��� �� ������� ������. + +>> ���������� ����������� ������ �� ������ ������� ������, ��������� C-n, + � ����������, ��� ���������. + +���� ������������ ����������� ������� ��������, �� ������ ��������� �� +������. M-f (Meta-f) ���������� ������ �� �����, � M-b ����� �� �����. + +>> ������� ��������� ��� M-f � M-b. + +���� ������ ���. � �������� �����, M-f ���������� ��� � ����� �����. +���� ������ ���. ����� �������, M-f ���������� ��� � ����� +���������� �����. M-b �������� ����� ��� �� � ��������������� �����������. + +>> ������� M-f � M-b ��������� ���, ��������� � C-f � C-b - ��� �� ������� + �������� �������� M-f � M-b �� ������ ������� � ������ � ����� ����. + +�������� ��������� ����� C-f � C-b � ����� �������, � M-f � M-b � ������. +����� ����� Meta-������� ������������ ��� ��������������� �������� ��� +���������, ������������� � ����� (�����, �����������, ������), ����� +Control-������� ��������� ��������� ���������, ���������� �� ����, ��� +�� ������������ (�������, ������, � �.�.). + +��� ��������� ���������� ����� �������� � �������������: C-a � C-e ���������� +������ � ������ � ����� ������, � M-a � M-e ���������� ������ � ������ � +����� �����������. + +>> ���������� ������ ���� ��� C-a, � ����� ���� ��� C-e. + ���������� ���� ��� ������ M-a, ����� ����� ���� ��� ������ M-e. + +����������, ��� ������ C-a ������ �� ��������, � ������ M-a ���������� �������� +������� � ���������� �����������. ��� �� ��������� ��������, �� �������� +�����������. + +��������� ������� � ������ ����� �������� "�����". ������ �����: ������ +���������� ����� �� ������ � ����� ����� ����� ���������� �������� �����. + +����� ������� ������� ������� ����������� �������, ������� �������� �� ������ +� ������������: + + C-f �� ������ ������ + C-b �� ������ ����� + + M-f �� ����� ������ + M-b �� ����� ����� + + C-n �� ��������� ������ + C-p �� ���������� ������ + + C-a � ������ ������ + C-e � ����� ������ + + M-a �����, � ������ ����������� + M-e ������, � ����� ����������� + +>> ���������� ������ �� �������� ��������� ��������� ��� ��� ��� �������. + ��� �������� ������������ �������. + +��� ������ ������ ������� �������� ������� M-< (Meta Less-then {������-���}), +������� ���������� ������ � ������ ������, � M-> (Meta Greater-than {������-���}), +������� ���������� ������ � ����� ������. + +�� ����������� ���������� ������ "<" ��������� ��� ������, � �� ������ +������������ ������� Shift ���� ������� ���. �� ���� ���������� �� ��� �� +������ ������������ Shift ���� ������� M-<; ��� ��������� ������� Shift �� +�������� M-�����. + +>> ������ ���������� M-<, ���� ������������� � ������ ��������. + ����� ����������� C-v ���� ��������� �����. + +>> ������ ���������� M->, ��� ������������� � ����� ��������. + ����������� M-v ���� ��������� �����. + +������ ����� ���������� �����������, ���� ��� �������� ����� ��. +�� ����������� ������� C-b, C-f, C-n � C-p �� ���� ��������. ������, ��� +�������� �� ����� ����������. ������, ������� ������� �������� ������������� +Emacs, �� �������, ��� ������������ CTRL-������� ������� � �������, ��� ������ +�� ����������� (������ ��� �� �� �������� ���� � �������� �� ��������� ��� +������). ������, ��� ������ �� ���������� ������������ CTRL-�������, �� +������� ��� �� ����� ������� � ������������ ������, ����� ����������� +������� ����������� �������. + +����������� ������ Emacs`� ��������� �������� ��������; ��� ����������� +������, ��� ������ ��������� ����������. ���� ������ ������� ���������� ��� +�������, ������� C-u, ����� ����� ����������, ������� �������. ���� � +��� ���� ������� META (��� EDIT ��� ALT), ���� ������ ������ ������ �������� +��������: �������� �����, ��������� ������ META. �� ����������� ������� +������������� C-u, �.� ��� ������������������ ������ �������� �� ����� ���������. + +��������, C-u 8 C-f ���������� ������ �� ������ �������� ������. + +>> ���������� ������������ C-n ��� C-p � �������� ����������, ����� ����������� + ������ �� ������ ����� � ���� ��������. + +������ ������� ���������� �������� �������� ��� ������� ����������. �� ���� +����������. ����� ���������� - C-v � M-v . +��� ��������� ��������� ���������, ��� ����������� ����� ����� ��� ���� +�� ��������� ����� �����, ������ ������ �� ����� �������. ��������, C-u 4 C-v +��������� ����� �� 4 ������. + +>> ������ ���������� ���������� C-u 8 C-v. + +��� ������� ������ ���������� ����� �� 8 ����� �����. ���� �� ������ +���������� ��� ����, ������ ������ �������� ��� M-v. + +���� �� ����������� X Window, �������� ���� ������������� ��������� ������ +��������� (scroll bar) � ������� ������� ���� Emacs. �� ������ ������������� +�����, ����������� �����. + +>> ���������� ������ ������� ������ ����� ������ ������������ ������� + ������ ������ ���������. ����� ������ ������������ �� �������, + ������������ ���, ��� ������ ��� ����� �� �������. + +>> ���������� ����� � ����� ������ ��������� ����� ������ ������ ������ + � ������� ����� ������ ���� ���. + + +* ���������� �������� �� X-��������� +------------------------------------ + +���� � ��� X-��������, ���, ��������, ��������� ����� ������ ������������ ������� +�� keypad`� ��� ���������� ��������. ������� �����, ������, ����� � ���� +����������� ������ � ��������� �����������; ��� ������������� ����� ��� C-b, +C-f, C-p, � C-n, �� ����� � ������ � �����������. �� ��� �� ������ +������������ C-left � C-right ��� ������������ �� ������, � C-up � C-down ��� +������������ �� ������ (�.�. ����������, ���� �� ������������ �����). ���� � +��� ���� ������ ���������� HOME (��� BEGIN) � END, �� ��� ����� ���������� +������ � ������ � ����� ������, ��������������, � C-home � C-end ����� +���������� � ������ � ����� �����. ���� �� ����� ���������� ���� ������ PgUp +� PgDn, �� ������ �� ������������ ��� ����������� ����� � ���� ���������, ��� +M-v � C-v. + +��� ��� ������� ����� �������� �������� ��������, ��� ���������� ����. +�� ������ ������������ shortcut ��� ����� ����� ���������: ������ ������� +CONTROL ��� META � �������� �����. ��������, ��� ����������� �� 12 ���� +������, �������� C-1 C-2 C-right. ��������� ��� ��� ����� ����� ��������, +������ ��� �� �� ���������� ������ CONTROL ����� ���������. + + +* ���� EMACS ����� +------------------ + +���� Emacs �������� ����������� �� ���� �������, �� ������ ���������� ��� +������ ����� C-g. �� ������ ������������ C-g ���� ���������� ������� ������� +������� ����� �����������. + +�� ��� �� ������ ������������ C-g ��� ������ ��������� ��������� ��� ������� +������� ������� �� �� ������ ���������. + +>> �������� C-u 100 ��� ������� ��������� 100, ����� ������� C-g. + ������ ������� C-f. ������ ������ ������������� ����� �� ���� ������, + ������ ��� �� �������� �������� �������� C-g. + +���� �� ������ <ESC> �� ������, �� ��� �� ������ ���������� �� ����� �������� +C-g. + + +* ����������� ������� (DISABLED COMMANDS) +----------------------------------------- + +��������� ������� Emacs "���������" ��� ��� ���������� ������������ ����� �� +������������ ��������. + +���� �� ������� ���� �� ����������� ������, Emacs ������� ��������� ��������� +����� ������� ����������, � �������, ������ �� �� ���������� � ��������� +�������. + +���� �� ������������� ������ ����������� �������, ������� ������ (Space) � +����� �� ���� ������. ������, ���� �� �� ������ ��������� ����������� +�������, ��������� �� ������ "n". + +>> ������� `C-x n p' (����������� �������), ����� �������� "n" �� ������. + + +* ���� +------ + +Emacs ����� ����� ��������� ����, ������ ���������� ���� �����. +��������, "����" ������������ Emacs`�� ��� �� ��������� ��������������� +���� � ������� �������, ��� ��������� ������� � ����� ���� X window. +(Emacs ��� �� ����� ����� ��������� ���� X windows, ��� "������" ("frames") +� ������������ Emacs. ��� ����� ������� �����.) + +�� ���� ������ ����� �� ����������� � ���������� ������������� ��������� +����. �� ��� ����� �����, ��� ����������� �� ������ ����, ������� ����� +���������� ���� ���������� ������, ��� ����� ������������ ������. ��� +������: + + C-x 1 ���� ����. (������� ��� ������ ����). + +��� Control-x �� ��������� ������ 1. C-x 1 ��������� ���� ������� �������� +������, ���, ���� ��� ������ ���� �����. ��� ������ ��� ������ ����. + +>> ����������� ������ �� ��� ������ � ������� C-u 0 C-l. + +(��������� ��� C-l �������������� �����. ���� �� ������� �������� +�������� ��� ���� �������, ��� ������ "������������ ����� � ��������� +������� ������ �� �������-�� ����� �� ������ ������." ��� C-u 0 C-l +�������� "������������ �����, ��������� ������� ������ � ������.") + +>> �������� Control-x 2 + ����������, ��� ������� ���� ��������, ����� ����� �������� � + ��������� ���������� ����� ������. + +>> �������� C-x 1 � ���������� ��� ���� ��������. + + +* ������� � �������� +-------------------- + +���� �� ������ �������� �����, ������ �������� �����. �������, ������� �� +������ ������, ����� ��� A, 7, *, � ��. ���������� Emacs`�� ��� ����� � +����������� ����������. ������� <Return> (������ �������� �������) ��� +������� ������� �����������. + +�� ������ ������� ��������� ��������� ������ ������� <Delete>. +������� <Delete> �� ���������� ����� ���� ���������� ��� "Del". +� ��������� �������, ������� "Backspace" �������� ��� <Delete>, +�� �� ������! + +� ��������, <Delete> ������� ������ ��������������� ����� ������� �������� +�������. + +>> ���������� ��� ������ -- �������� ��������� ��������, ����� ������� �� + ������� <Delete> ��������� ���. �� ���������� � ���������� ����� �����; + �� �� ��������� ������� �������. ��� ���� ������ ����� ��������. + +����� ������ ������ ���������� ������� ������� ��� ������ ������, ������ +������ "������������" �� ��������� ������ ������. ������ "�������� �������" +("\") � ������ ������� ����������, ��� ������ ����� ����������. + +>> ���������� �����, ���� �� ���������� ������ �������, � ����������� �������. + �� �������, ��� �������� ������ ����������� ������. + +>> ����������� <Delete> ��� �������� ������, ���� ������ �� ���������� � + ����� �����. ������ ����������� ������ ��������. + +����� ������� ������ ����������� ��� ��, ��� � ����� ������. �������� ������� +����������� ����� ����� �������� �������� � ������� �� � ����. ���� +�������������� ������ ������� �������, ����� ���������� � �����, ��� ����� +���������� ��� ������������ ������. + +>> ����������� ������ � ������ ������ � ������� <Delete>. ��� �������� + ������� ������ � ����������. + +>> ������� <Return> ��� ������� ������� ����������� �����, ������ + ���������� ����. + +�������, ��� ������ ������� Emacs ����� �������� ������� ����������; +������� ������� �� ����������. ��������� ������� ������� �������� +�� �� ��������� �� ���� ���. + +>> ���������� ��� -- �������� C-u 8 * ��� ������� ********. + +������ �� ��������� ��������� ������� ������� ���-������ � Emacs � +���������� ������. ��� �� �� ������ ������� ����� � ������. +����� ������� �������� ��������: + + <Delete> ������� ������ ����� �������� + C-d ������� ������ ��������� �� (���) �������� + + M-<Delete> ����� ������ ��������������� ����� �������� + M-d ����� ����� ��������� �� �������� + + C-k ����� ��� �� ������� �� ����� ������ + M-k ����� ��� �� ����� ����������� + +��������, ��� <Delete> � C-d ������ M-<Delete> � M-d ��������� ��������� +�������, C-f � M-f (��, <Delete> ��� �� �������� control-������, �� +�� ����� ����������� �� ����). C-k � M-k ��� � C-e � M-e, �������� +��������� ����� �������� � �������������. + +����� �� �������� ����� ��� ���� ������ �����, Emacs ��������� ��������� +�����, ����� �� ����� ������� ��� �������. ������� ������, ���������� �����, +�������� "��������������" ("yanking"). �� ������ ������������ ��������� +����� � ��� �� �����, ��� � ����� ������. �� ������ ������������ +����� ��������� ��� � �������� ����� �����. ������� "������������" - C-y. + +��������, ��� ���� ������� ����� "�������" � "�����" ���-������. "������" +����� ���� ������������� �����, � ��������� - ���. ������, �������, ������� +����� ������� ����� ������, ��������� ���, � �������, ��������� ���� ������ +��� ������ ������ ������, �� ��������� ���������. + +>> ����������� ������ �� ������ �������� ������. + ������ ������� C-k ���� ����� ����� � ���� ������. + +>> ������� C-k ��� ���. �� ������, ��� ��� ����� ������ ����������� + ��������� �� ���� �������. + +�������� ��� ������ C-k ������� ���������� ������, � ������ C-k ������� +���� ������ � ��������� ������ ������ �����. C-k ������������ �������� +�������� ����������� �������: ������� ����� ����� _�_ �� ����������. +��� �� ������ ����������. C-u 2 C-k ��`�� ��� ����� � ����������� �� +������� �����������; ���� C-k ������ �� ������� �����. + +��� ���� ���� ������� ��������� ������ ����� � ����� ������������ ������� +�������� C-y. + +>> ���������� ���; �������� C-y ���� ������� ����� �����. + +������� � C-y ��� � ������� ������� ���-�� �����, ��� �� ��������. +�������, ���� �� ������������ ��������� C-k' � ������, ��� ������ ������ +����� ��������� ������, ���, ��� C-y ����������� �� ������. + +>> ���������� ��� ������, ������� C-k ��������� ���. + +������ ������ ���� ������ �����: + +>> ������� C-y. ������ ����������� ������ �� ��������� ����� ����, � ����� + ������� C-y. ������ �� ������ ��� ����� ����������� ��������� �����. + +��� ������ ���� ���� ��������� �����, ������� �� ������ ������� ����� � +����� ����� ���-�� ���? C-y ������ �� ����� ��� ��������� ��������� �����. +�� ���������� ����� �� ����� �������. �� ������� ��� ������� ����� ��������� +������� M-y. ����� ���� ��� �� ������� ��������� ��������� �����, ������� +M-y, � �������� ���� ��������������� ����� ���, ������� ��� ���� �����. +������� M-y ����� � ����� ����� ���������� ��� ����� � ����� ������ �����. +����� �� ���������� �������� ������, ��� �� ����� ������ ������ ����� ���� +��������� ���. ������ ����������� ��������������, ������� ��������������� +����� ���, ��� �� ����. + +������� M-y ����������� ����� ���, �� ������ ��������� � ��������� ����� +(�������� ������ ��������). + +>> ������ ������, ����������� �������� ������, ����� ������� ��� ���� ������. + ����� ����������� C-y ��� �������������� ������ ������ ������. + ����� ����������� M-y � ��� ����� �������� ������ ������ �������. + ������� ��� ��������� ��� M-y ���� ������� ��� ���������. ����������� + ������ ��� ���� ������ ������ ������ �� ��������, � ��� ����-����. + ���� ��� �������, �� ������ �������� ��� M-y ������������� � ������������ + ���������. + + +* ������ (UNDO) +--------------- + +���� �� ������� ��������� � ������, � ������, ��� ��������, ������ +�������� ��������� �������� "������", C-x u. + +������, C-x u �������� ���������, ��������� ����� ��������; ���� ��������� C-x +u ��������� ��� ������, ������ ��� ����� ���������� ��� ���� �������. + +�� ���� ��� ����������: ������� ������� �� �������� ����� �� ����������� (��� +�������� ������� ����������� ������� � ���������), � ����������������� +(self-inserting) ������� �������������� �������� �� 20. (��� ��������� ����� +C-x u ������� �� ������ ������� ��� ������ ����� ������.) + +>> ������ ��� ������ ��������� C-k, ����� �������� C-x u + � ��� ������ ��������� �����. + +C-_ �������������� ������� ������; ��� �������� ����� ��� � C-x u, �� ����� � +������������� ��������� ��� ������. ��������� ��������� C-_ � �� ��������� +����������� ������ ����������� ������ �� ������. ������� �� ���������� C-x u +� �������������. �� ��������� ����������, �� ������ �������� C-_ ������� / � +��������� ������� CTRL. + +�������� �������� ��� C-_ ��� C-x u �������� ��� ������� ����������. + + +* ����� +------- + +����� ��������� ����� ����� ���� ������������� �����, �� ������ ��� +��������� � ����. �����, �� �������� ����� �� ������� �� Emacs. �� ��������� +��� ����� � ���� "��������" ����. (��� ��� �������� "������" � ����.) +(// � ��������� ������� "finding", � "visiting") + +������� ���� �������� ���������� ��� ���������� ��������� Emacs. �� ������ +�������, ��� ���������� ����� �� ������������ ���� ����. ������ ���� +���������, ��������� � �������������� Emacs �� ����� �������������, ���� �� �� +"���������" ("save") ����. ��� �� ������ �� ��������� �������������� ���� � +�������, ���� �� �� ������ �����. ���� ����� �� ���������� ����, Emacs +��������� ������������ ���� � ���������� ������, ���� �� ����� ����� ������ +��� ���� ��������� ���� ��������. + +���� ���������� � ������ ����� ������, �� ������� ������ ������� ���������� � +���� � �������� ������ "Emacs: TUTORIAL.ru". ��� ����� ������ ������ +���������� ��� ����� ������� �� �������. ����, ������ �� ������� ���� � +������ "TUTORIAL.ru" ������� �������� ����� ������������ ������ �������� +Emacs. ����� ���� ������� �� ��������, ��� ��� ����� � ����������� ��������� +���������. (Whatever file you find, that file's name will appear in that +precise spot.) + +������� ��� �������� � ���������� ����� � ������� �� ������ ������, ������� �� +��� �������, ������� ���� ��������. ��� ��� ���������� � ������� Control-x. +������� ����� ������ ���������� � ������� Control-x; ������ �� ��� �������� � +�������, �������� � �������� ������. ��� ������� � ���, ��� ��� ������ +������� ������. + +���������, ��� ��� ����� ����� � ������� �������� ����� - ��� ��, ��� �� +������ ������ ��� �����, ������� ����� ������. �� ��� �������� ������� "�������� +�������� � ���������" (� ���� ������, �������� ��� ��� �����). ����� ����� +������� + + C-x C-f ������� (�����) ���� + +Emacs �������� ��� ������ ��� �����. ��� ����� �� �������� � ������ ������ +������. ������ ������ ���������� ���������, �� ������������ ��� ��������� +�����. �� ������ ������������ ������� ������� �������������� Emacs ��� +�������������� �����. + +����� �� ������� ��� ����� (��� ����� ���������� � ���������), �� ������ +�������� ������� ����� C-g. + +>> ������� C-x C-f, ����� ������� C-g. ��� ������� ���������, � ������� + C-x C-f ������� ������������ ���������. � �����, �� �� ������� �� ������ + �����. + +����� �� ��������� ���� ����� �����, ������� <Return>. ����� ��������� +������� C-x C-f, � ������� ���� ��������� ����. ��������� �������� ����� +������ C-x C-f ����������. + +� ���������� ����� ���������� ����� �������� �� ������, � �� ������� ��� +�������������. ����� �� ��������� ��������������, ����� ��������� ��������� +�������� ������� + + C-x C-s ��������� ���� + +��� ��������� ���� �� Emacs � ����. � ������ ���, ����� �� ��� ��������, +Emacs ����������� ������������ ���� � ����� ������, ����� �� �� ���������. +����� ��� ���������� ����������� ������� "~" � ������������� ����� �����. + +����� ���������� ����������, Emacs ���������� ��� ����������� �����. +�� ������ ��������� ��������� ���������� �����, ��� ����� �� �������� +����� ������ ���� ����� ������� ��������. + +>> �������� C-x C-s, ��������� ���� ����� ��������. + ������ ��������� ������� "Wrote ...TUTORIAL.ru" � ������ ������ ������. + +���������: �� ��������� ��������, ���� C-x C-s ��������� ����� � �� �� +������� ������������ ������ Emacs`�. ��� �������� ��� ������������ ������� +����� "�����������" ��������� "flow control" ��������������� C-s � �� +������������ ���� ������ � Emacs`�. ��� ���������� ������, ������� C-q. +�������� ������ "Spontaneous Entry to Incremental Search" ����������� Emacs +����� ������ ��� �������� � ���� "������������". + +�� ������ ������� ������������ ���� ��� ��������� ��� ��������������. �� +���-�� ������ ����� ����, ������� ��� �� ����������. ������� ������� - +������� ���� � ������� Emacs: ����� ����, ������� �����, � ������ ������� +�����. ����� �� ������� "�������" ����, Emacs ������� �������� ���� � +��������� ���� �������. �����, ��� �� ������, �� ������ ������������� ��� +������������ ����. + + +* ������ +-------- + +���� �� �������� ������ ���� � �������������� C-x C-f, ������ �������� ������ +Emacs. �� ������ ������������� ����� ����� ��� ����� C-x C-f. ��� ������ +��������� ��������� ������ � Emacs. + +>> �������� ���� � ������ "foo" ������� C-x C-f foo <Return>. + �������� �����-������ �����, �������������� ���, � ��������� "foo" + ������ C-x C-s. + �������, �������� C-x C-f TUTORIAL.ru <Return> + ����� ��������� ����� � ��������. + +Emacs ��������� ����� ������� ����� ������ � ������� ��������� "�����" +("buffer"). �������� ����� ������� ����� ����� ������ Emacs. ����� ������� +������ ������� ��������� � ������� Emacs �������� + + C-x C-b ������ ������� + +>> ���������� C-x C-b ������. + +�� ����� ��� ������ ����� ����� ���, � ����� ����� ��� �����, ���������� +�������� � ��� ��������. ��������� ������ �� ������������� ������. ��������, +����� ��������� "*Buffer List*" �� �������� �������� �����. � ���� ������ +���������� ������ �������, ������� ��� ������ �������� C-x C-b. ����� ����� +������� �� ������ � ���� Emacs ������ �������� ������ ������-���� ������. + +>> �������� C-x 1 ����� ���������� �� ������ �������. + +���� �� ��������� ����� ������ �����, ����� ���������� ������, �� ������ +�������� �� �����������. ��������� ��������� ������ Emacs, � �������� ������. +�������� ��� �������������� ���������� ��������� ������ �� ����������� �� +������ ������. ��� ����� ������, �� ������ � ���� ��� ��� ����� ����� ������� +������ ��������� ������ �������� �����. ���� �� ��������� ������ ��� +������������ ����� � ������� C-x C-f � ����� ������������ C-x C-s. +������� ���������� + + C-x s ��������� ��������� ������. (Save some buffers) + +C-x s ���������� ��� � ������ ������ ������� �������� �� ����������� +���������. ��� ������� ������ ������ � ��� ���������� ��������� ��� �� +��������� ���������. + +>> �������� ������ ������, ����� �������� C-x s. + � ��� ������ �������� ��������� �� ����� � ������ TUTORIAL.ru. + �������� �� ������ �� ������ "y". + +* ������������� ���� +-------------------- + +���� � ��� X-��������, �� �������� ������ ���� ������ ������ Emacs. �� +������ ������������ ��� ���� ��� ������� �� ���� �������� ����� �������� +Emacs, ����� ��� "������� ����" ("find file"). �� ����� ������� ��� ��� +������, ������ ��� ��� �� ����� ���������� ��������� ������ ����������� ��� +������� � ������ �������. ����� �� ���������� � Emacs, ��� ������ ����� +������������ ������������ �������, ������ ��� ������ ������ ����, � �������� +��������� ��������� ������, �������� ��� ���������. + +������� ��� ����� ������� ���� �� �������� ������������ �����������. +��������, ������ ���� �� ����� ���������� ��������. �� ������ ����������� � +����� ����� ������ ����� ��� ��� � ���� ������� (Buffers menu) � ������ ���. + + +* ������������� ���� +-------------------- + +����������� � X, Emacs ��������� ������������ � �����. �� ������ +��������������� ������ �������� ����� ������ � �������� �����, �� ������ +�������� ����� ������� ����� � ������� ����� ������� ����� �� �����, ������� +������ ��������. (��� �������� ����� ������� ����� � ����� ����� ������, +����� ������������� � ������, � �������� ��� ���, ��������� Shift ����� +�������� �����.) + +����� ����� ��������� ���������� �����, �� ������ ������������ C-w ��� ������� +����� ���� "��������" ("Cut") �� ���� "�������������" ("Edit"). ��������, ��� +��� *��* ���� � �� ��: C-w ��������� ����� ������ ������ Emacs (���������� C-k +���������� �����), "��������" ("Cut") ������ ��� ��, � �������� ����� � ����� +������ X (X clipboard), ��� �� ����� ���� �������� ������ ����������. + +����� �������� ����� �� ������ ������ X, ����������� ������� "��������" +("Insert") �� ���� "�������������" ("Edit"). + +������� ������ ���� ������ ������������ ��� ������ ������� (items), ������� �� +������. ��������, ���� �� ����� � Info (on-line ������������ Emacs) ��������� +C-h i ��� ���� ������ (Help), �� ������ ��������� ������������ ������� +������� �������� ������� ������ �� ���. ����������, ���� �� ������� ��� ����� +(�������� � ����������� "������� ����") � �� ��������� TAB ����� ������� +��������� �������� (completions), �� ������ �������� ������� ������ ���� �� +����� �� ���������, ����� ������� ���. + +������ ������ ���� �������� ����������� ���� (popup menu). ���������� ����� +���� ���������� � ����������� ��� ���� ��� �� ����������, � ������ �������� +��������� ����� ������������ ������ ��� ����� �������� ������� � ���. + +>> ������� ������ ������ ���� ������. + +��� ����� ���������� ������ �������, ����� ��������� ���� ��������. +(// You will have to hold the button down in order to keep the menu up.) + + +* ����������� ����� ������ +-------------------------- + +� Emacs ����� ����� ������, ��� ����� ���� ��������� �� ��� control- � meta- +�������. Emacs ������� ���, ��������� X-������� (eXtend). ���� ��� +�����������: + + C-x ������ ���������� (Character eXtend). + �� ��� ������� ���� ������. + M-x ����������� ����������� ������� (Named command eXtend). + �� ��� ������� ��� �������. + +��� ������� ������� ������ ������������, �� �� ��� ������� ��������� �� ���. +�� ��� ������: ������� ������ � ������� C-x C-f - �������, � C-x C-s +���������. ������ ������ - ���������� ������ � Emacs -- ��� ������� C-x C-c. +(�� ���������� � ���, ��� �� ��������� ��������� ���������, C-x C-c +���������� ��������� ��������� ����� ��� ��� ������ ����� Emacs.) + +C-z ��� ������� *����������* ������ �� Emacs -- �� ������ ��������� � ���� +������ Emacs �����. + +�� ��������, ������� ��������� �����, C-z "����������������" ("suspends") +Emacs; ���������� � �������� (shell), �� �� ��������� Emacs. � ����������� +�������� �� ������ ���������� ������ � Emacs ��������� ������� `fg' ��� +`%emacs'. + +� �������� �� �������������� ����������, C-z ������� ����� �������� (subshell), +���������� ��-��� Emacs ����� ���� ��� ����������� ��������� ������ ���������, +� ����� ��������� � Emacs; ��� �� ��������� ����� �� Emacs. � ���� ������, +������� `exit' ������ ��� � Emacs �� ��������. + +����������� C-x C-c ���� �� ������ ����� (log out) �� �������. ��� ����� +������������ ����� ����� �� Emacs ���������� �� �������� ���������, ��� ������ +�������, ������� ����� �� ����� ��� ���������� � ���������������� Emacs. +������, ���� ���� �� �� �������� �� �������, ����� ������������� Emacs +��������� C-z ������ ������ �� ����. + +����� ����� C-x ������. ��� �� ��� �������: + + C-x C-f ������� ����. + C-x C-s ��������� ����. + C-x C-b ������ �������. + C-x C-c ����� �� Emacs. + C-x u ������. + +����������� ����������� ������� ������������ ������� ����, ��� ������������ +������ � ������������ �������. � �������� ������� ������� ������ ������, +������� �������� ���� ������ �� ������ �� ���� ������. ����� �� �������� M-x, +Emacs ��������� ��� ������ ��� ������� � ������ ������ ������; � ����� ������, +"replace-string". ������ �������� "repl s<TAB>" � Emacs �������� +���. ��������� ��� ������ <Return>. + +������� ������ ������ (replace-string) ������� ��� ��������� -- ������ +������� ����� ��������, � ������ �� ������� ����� ��������. �� ������ +��������� ������ �������� ������ <Return>. + +>> ����������� ������ �� ��� ������ ������ ���� ����. + �������� M-x repl s<Return>changed<Return>altered<Return>. + + �������� ��� ��� ������ ���������: �� �������� ����� c-h-a-n-g-e-d + ������ "altered" �����, ��� ��� ����������, ���� ������� �������. + + +* �������������� +---------------- + +����� �� ������������� ����, �� �� ���������� ���, �� ������ �������� +���������� � ������ ����� �������. ����� �������� ��� �� �����, Emacs +������������ ���������� ������ ����, ������� �� ������������. �������������� +���������� � ����, ��� �������� ����� ��, �� ���������� � ������������� +�������� "#"; ��������, ���� ��� ���� ���������� "hello.c", �� +��������������� ���� ����� ���������� "#hello.c#". ����� �� ��������� ���� +������� ��������. Emacs ������ ��������������� ����. + +���� ������� ���������, �� ������ ������������ ���� ��������� ������� ���� +��������� �������������, ����� �������� ����������� ����� (����� ������� �� +�������������, �� ����������������) � ����� ������� M-x recover file<return>. +����� � ��� ������� �������������, �������� yes<return> ����� ������������ +��������������� ������. + + +* ������� ��� (ECHO AREA) +------------------------- + +���� Emacs ����� ��� �� �������� ��������� �������, �� ���������� �� ��� +����� ������, � ������� ���������� "������� ���". ������� ��� ��� ������ +������ ������. + + +* ������ ��������� +------------------ + +������ ����� ��� �������� ��� ���������� "������ ���������". +�������� ��� ������ �������� ���: + +--**-XEmacs: TUTORIAL.ru (Fundamental)--L670--66%---------------- + +��� ������ �������� �������� ���������� � ��������� Emacs � ������, ������� +�� ������������. + +�� ��� ������ ��� �������� ��� ����� - ��� ����, ������� �� �������. -NN%-- +���������� ������� ������� ������� � ������; ��� �������� ��� NN ��������� +������ ���� ��� ������ ������. ���� ������ ������ ��������� � ������ ������ +������, �� ��� ������� --Top-- ������ --00%--. ���� ��������� ������ +������������ �� ������, ��� ����� --Bot--. ���� ����� ��������� ���, ��� ���� +��������� � �����, ������ ��������� ������� --All--. + +��������� � ������ ������ �������� ��� �� �������� �����. ��� ������ �� +������� ��� ��������� ����, ��� ����� ������ ����� ��������� �� ���������, � +����. + +����� ������ ������� ������ �������� �������� ��� ����� ��������������, +������� �� �����������. ����������� ����� - Fundamental, ��� �� ����������� +� ������. ��� ������ "��������� ������" ("major mode"). + +Emacs ����� ����� ��������� �������� �������. ��������� �� ������� ��������, +��� �� ������������ ����� �� ��������� ����� �/��� ��������� ���� ������, +����� ��� Lisp-�����, Text-����� � ��. � ����� ����� ������ ���� �������� +����� �����������, � ��� �������� �� ������ ����� � ���������, ��� ������ +��������� ����� "Fundamental" (�������). + +������ �������� ����� ����� ��������� ������������� ������. ��������, ������� +�������� ����������� � ���������, � ��������� � ������ ����� ���������������� +����������� ������������ ��-������, ������ �������� ����� ��������� �� +��-�������. ������ �������� ����� ����� ����������� �������, ������� �������� +���. ��������, M-x fundamental-mode - �������, ������� ����������� � ������� +(Fundamental) �����. + +���� �� ������������ ���������� �����, �������� ��� ���� (//������� �� ������ +����, � TUTORIAL) ����, �� �������� ������ ������������� � Text-�����. + +>> �������� M-x text-mode<Return>. + +�� ����������, �� ���� �� ��������� ���� ������ Emacs �� ����������. �� �� +������ ��������, ��� M-f � M-b ������ ��������� ��������� ��� ����� �����. +�����, � ������� ������ (Fundamental mode), M-f � M-b �������� ��������� +��� ����������� ����. + +�������� ����� ������ ������ ��������� ���������, ����� ���: ����������� +������ ������ "���� ������" � ������ �� �������, �� �� ������ ���������� +�����-������ �������. + +��� ��������� ������������ � ����� ������� �������� ������, ������� C-h m. + +>> ����������� C-u C-v ���� ��� ��� �����, ����� ����������� ��� ������ ����� + � ����� ������. +>> �������� C-h m, ��� ���������� ������� Text-������ �� ��������. +>> �������� q ����� ������ ������������ � ���� ����� :) + +�������� ����� ���������� �������� ������, ��� ���� ��������� �������������� +(minor) �������. �������������� ������ �� ������������ � ��������, ��� ������ +����-���� ������������ ��. ������ �������������� ����� ����������/����������� +���������� �� ������ �������������� �������, � ���������� �� ������ ��������� +������. �� ������ ������������ �������� ����� ��� ��������������, ��� � ����� +�� �����������. + +���� �� �������������� ������� ����� �������, �������� ��� �������������� +����������� ������ - ��� ����� �������������� (Auto Fill mode). ����� ���� +����� �������, Emacs ��������� ������ ����� ������� �������������, ����� �� +���������� ����� � ������� ������ ������� ��������. + +�� ������ �������� ����� �������������� ������ M-x auto-fill-mode<Return>. +����� ���� ����� �������, ��� ����� ��������� - M-x auto-fill-mode<Return>. +���� ����� ������� - ������� ��� ��������, ���� �������� - �������. �� +�������� ��� ������� "������������ ������". + +>> �������� M-x auto-fill-mode<Return>. ����� ���������� ������ + �� "���� " ���� �� ������� ��� ��� ���������� �� ��� ������. + �� ������ �������� ������� ����� �������, ������ ��� ����� �������������� + ��������� ������ ������ �� ��������. + +������� ������ ���������� �� 70-�� ��������, �� �� ������ �������� �� +��������� ������� C-x f. �� ������ ������ ������� � ���� ��������� ��������� +��� ���� �������. + +>> ������� C-x f � ���������� 20. (C-u 2 0 C-x f). + ����� ������� �����-������ �����, � �������� ��� Emacs ��������� ����� + �� 20 �������� � ������. ������� �������� ������� 70 �����, ��������� + C-x f �����. + +���� �� ������� ��������� � �������� ���������, �������������� �� ���������� +����� ��� ���. ����� ����������� ��������, �������� M-q (Meta-q) � �� �����, +����� ������ ����� ������ ���������. + +>> ����������� ������ � ���������� ��������, � ������� M-q. + + +* ����� +------- + +Emacs ����� ������ ������ (��� ����������� ������ �������� ��� �����) ������ +�� ������, ��� �����. ����� ������ ��� ������� ����������� �������; ��� +���������� ������ � ��������� �����, ��� ������� ������� ������. + +������� ������ Emacs ���������� �� ����������� ������ ����������� ������ +���������� ���, ��� ��� ���������������. ��� �������� ��� ����� ���������� �� +���� ���� ��� �� ��������� ������� ������. + +�������, ���������� ����� ������ - C-s, � C-r ���� �����. +���������! �� ����� ��������� ��� ����� ������. + +����� �� ������� C-s �� ������� ������ "I-search", ����������� � ������� ���. +��� ���������� ��� Emacs ���� ����� �����, ������� �� ������ �����. +<Return> ��������� �����. + +>> ������, ������� C-s ��� ������ ������. ��������, ���� ����� �� ���� ���, + ��������� �����, '������', �������������� ����� ������ ��������� �����, + ������� ��� ���������� � ��������. + ������ �� ����� ������ ��������� ����� "������". +>> ������� C-s �����, ����� ����� ��������� ��������� ����� "������". +>> ������ ������� <Delete> ������ ���� � ���������� �� ������������� �������. +>> ������� <RET> ��� ���������� ������. + +�� ������ ��� �����������? Emacs, � ������ ���������������� ������, ������� +���������� � ������� ����������� � ���������� ����, ����������� �� ��� ���. +����� ������� � ���������� ��������� ����� '������' ������ ������� C-s �����. +���� ������ ��� ���������, Emacs ������ �������� ������, � ������ ��� ��� +����� �� ������ ("failing"), C-g �� �� ������ �������� �����. + +���������: �� ��������� ��������, ���� C-x C-s ��������� ����� � �� �� ������� +������������ ������ Emacs`�. ��� �������� ��� ������������ ������� ����� +"�����������" ��������� "flow control" ��������������� C-s � �� ������������ +���� ������ � Emacs`�. ��� ���������� ������, ������� C-q. �������� ������ +"Spontaneous Entry to Incremental Search" ����������� Emacs ����� ������ ��� +�������� � ���� "������������". + +���� �� �� ����� ���������������� ������ ������� <Delete>, �� ������ �������� +��� ��������� ������ � ������� ������ ��������, � ����� �������� � ����������� +���������� �����. ��������, ����������� �� ������� "c", ����� �������� � +������� ��������� ������� "c". ������ ���� �� �������� "u", ������ �������� � +������� ��������� "cu". ������� <Delete> ������ ������ "u" �� ������ ������, � +������ �������� � ������� ��������� "c". + +���� �� �� ����� ������ ������� control- ��� meta- ������ (�� ���������� +������������ -- ������� ���������� �����, � ������ C-s � C-r), ����� +�����������. + +C-s �������� ����� � ������� �� ����� ��������� ������� ������ ����� ������� +������� �������. ���� �� ������ ����� ���-�� ����� � ������, ������� C-r. ��� +��� �� �������� � C-s ��������� � � C-r, �� ����������� ���������������� +����������� ������. + + +* ����� ���� (MULTIPLE WINDOWS) +------------------------------- + +���� �� �������� ������������ Emacs ��� ��, ��� �� ������ ���������� ����� ��� +���� ���� �� ������ ������������. + +>> ����������� ������ �� ��� �����, � �������� C-u 0 C-l. + +>> ������, �������� C-x 2, ��� �������� ����� �� ��� ����. + ��� ���� ���������� �������. ������ ������� � ������� ����. + +>> ������� C-M-v ��� ��������� ������� ����. + (���� � ��� ��� ��������� ������ Meta (Alt), ������� ESC C-v.) + +>> ������� C-x o ("o" �� ����� "other" - ������) ��� ����������� ������� � + ������ ����. +>> ����������� C-v � M-v � ������ ���� ��� ������������ ���. + ���������� ������ ���� ���������� � ������� ����. + +>> ������� C-x o ����� ����� ����������� ������ ����� � ������� ����. + ������ � ������� ���� ��� ��, ��� � ��� �� ����. + +�� ������ ���������� ������������� ����� ������, ��������� C-x o. ������ ���� +������ ���� ������� �������, �� ������ ���� ���������� ������. ��� ������� +������� �������� ����������� � ����, � ������� ������������ ������. +�� �������� ��� "��������� ����" ("selected window"). + +������� C-M-v ����� ������, ����� �� ������������ ����� � ����� ����, � +����������� ������ � �������� �����������. �� ������ ������ ��������� ������ +� ���� �������������� � ��������������� ������������ �� ������, ��������� +C-M-v. + +C-M-v ������ CONTROL-META �������. ���� � ��� ���� ��������� ������ META +(Alt), �� ������ ������� C-M-v ����� ������������ CTRL � META � �� �������� +������ v. � �� ����� ��� ����� ����� ������, CTRL ��� META, ������ ��� ��� +������ ������������ ��� �������. + +���� � ��� ��� ��������� ������ META, � �� ����������� ESC ������ ���, +������� ������ ���� ���������: �� ������ ������ ESC � ������ CTRL-v; +CTRL-ESC v �� ����� ��������. ������, ��� ESC ����� ���� ����������� ������, +��� �� �������������� ������. + +>> ������� C-x 1 (� ������� ����) ����� ���������� �� �������. + +(���� �� ������ C-x 1 � ������ ����, �� �� ���������� �� ��������. ��������� +��� ������� ��� "�������� ������ ���� ����, �� � ������� � ������ ��������"). + +��� �� ����� ���������� ���� � ��� �� ����� � ����� �����. ���� �� ����������� +C-x C-f ����� ������� ���� � ����� ����, ������ ��������� ��� ���������. �� +������ ��������� ����� � ������ ���� ����������. + +���� ������ ���� ������������ ��� ���� ������������ ������ �����: + +>> �������� C-x 4 C-f ����� ��� ������ � ����� ������. ��������� <Return>. + ���������� ��� ��������� ���� �������� � ������ ����. ������ ������� + ���� ��. + +>> �������� C-x o ����� ��������� � ������� ����, � C-x 1 ����� ������� ������ + ����. + + +* ����������� ������ �������������� (RECURSIVE EDITING LEVELS) +-------------------------------------------------------------- + +������ �� ������ �������� ��� ���������� "����������� ������ ��������������". +�� ��� ��������� ������������� �������� � ������ ���������, ���������� ������� +������ ������ ����� ��������� ������. �������� �� ������ ������� +[(Fundamental)] ������ (Fundamental). + +����� ����� �� ����������� ������� ��������������, ������� ESC ESC ESC. +��� ������������ ������� "�����". �� ��� �� ������ ������������ �� ��� +����������� ������ ����, � ������ �� ����������. + +>> ������� M-x ����� ������� � ���������; ����� ������� ESC ESC ESC + ��� �����. + +�� �� ������ ������������ C-g ����� ���� �� ����������� ������� ��������������. +������ ��� C-g ������������ ��� ������ ������� � ���������� ��� ����������� +������� ��������������. + + +* ��� �������� ������ (GETTING MORE HELP) +----------------------------------------- + +� ���� �������� �� ���������� �������� ��� ������ ��� �����������, ������� +������� ������ ������������ Emacs. ����� ����� ���������� �������� � +Emacs, � ���������� ��� �� ����������� �����. ������, �� ������ +������� ������ ������������ Emacs, ������ ������ �������� �����������. Emacs +������������� ������� ��� ������ ������������ � �������� Emacs. ��� ������� +"������" ("help") ��� ���������� � ������� Control-h, ������� �������� +"�������� ������". + +����� ������������ ����������� ������, ������� C-h, � ����� ������, ������� +��������� ����� ������ ��� ������ �� ������ ��������. ���� �� ������������� +�����������, �������� C-h ? � Emacs ��������� ��� ����� ������ �� ����� ��� +������������. ���� �� ������ C-h � ���������� ���������� � ������, ������ +������� C-g ����� �������� ��� �������. + +(���-��� ������������� ������ C-h. �������� ������������� � ���� ���, +�������� � ��� ���������� ��������������. ��� ��������, ���� C-h �� +�������� ��������� ������ ����� ������, ���������� ������� M-x help RET +������ �����.) + +����� �������� ����������� ������ - C-h c. ������� C-h, ����� c, � ������ +������� ��� ������������������, � Emacs ��������� ����� ������� �������� +�������. + +>> ������� C-h c Control-p. + ��������� ������ ��������� �������� ��� + + C-p runs the command previous-line + (C-p ��������� ������� previous-line {����������-�����}) + +��� �������� "��� �������". ����� ������� ������������ � �������� ��� +��������� � ���������� Emacs. ����� ������� ������� ���, ����� �������� ��� +������ ������� ������, ��� �� ��� ��������� � ������� ���� ������� ���������� +����� ��������� ��� ��������� �������. + +��������������� �������, ����� ��� C-x C-s � (���� � ��� ��� ������ META ��� +EDIT ��� ALT) <ESC>v ��� �� ����� �������� ����� C-h c. + +�������� ������ ���������� � ������� ��������� C-h k ������ C-h c. + +>> �������� C-h k Control-p. + +�� ������� �������� �������, � ����� �� ��� � ��������� ���� Emacs. ����� �� +��������� ������, ������� q ����� ���������� �� ������ ������. + +���� ��� ��������� �������� ����� C-h: + + C-h f ��������� �������. ��� ���������� ������� ��� �������. + +>> ���������� ������� C-h f previous-line<Return>. + ��� ����������� ���������� Emacs � ���� �������, ������� ����������� + �������� C-p. + + C-h a Hyper Apropos. ������� �������� ����� � Emacs ������� ��� + ������ ���� ������� � ����������, ����� ������� �������� ��� + �����. �������, ������� ����� ���� ������� ����� Meta-x, + ����� �������� ���������� �����. + +>> �������� C-h a newline<Return>. + +��� ��������� ������ ������ ������� � ���������� ����� ������� ���������� � +"newline". ������� <Return> ��� �������� ������� ������� ����� ����� �������� +������ � ������� ��� ����������. ������� `q' ��� ����� �� hyper-apropos. + + +* ���������� +------------ + +���������, ����� ����� �� Emacs �������� ����������� C-x C-c. ����� �������� +����� � �������� (shell) � ����� ��������� �������, ����������� C-z. +(� X, ��� ������� ������� ���� Emacs � ������.) + +���� ������� ������ ���� ������� ���� ����� �������������, ���� �� ������� +���-������ �������, �� ����� ������ � �������� ���� - ���������! + + +COPYING +------- + +���� ������� ��������� �� ������� ����� ��������� Emacs, ������� � ������� +����������� by Stuart Cracraft ��� ������������� Emacs. Ben Wing ��������� +������� ��� X Windows. Martin Buchholz � Hrvoje Niksic �������� ����� +����������� ��� XEmacs. + +��� ������ ��������, ��� � GNU Emacs, �������� ������� ����������� +(copyrighted), � �������� � ������������� ��������������� ����� �� +���������� ������������: + +Copyright (c) 1985, 1996 Free Software Foundation + + Permission is granted to anyone to make or distribute verbatim copies + of this document as received, in any medium, provided that the + copyright notice and permission notice are preserved, + and that the distributor grants the recipient permission + for further redistribution as permitted by this notice. + + Permission is granted to distribute modified versions + of this document, or of portions of it, + under the above conditions, provided also that they + carry prominent notices stating who last altered them. + +������� ����������� ������ Emacs ����� �������, �� � ��� �� ����. +����������, �������� ���� COPYING � ����� ����� ����� GNU Emacs ���� +�������. Help stamp out software obstructionism ("ownership") by using, +writing, and sharing free software! + +// ���������, ����������� ������ � ����������� ��� �� ������ bor@vb.dn.ua +// Vladimir Bormotov. \ No newline at end of file
--- a/etc/enriched.doc Mon Aug 13 10:38:47 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,263 +0,0 @@ -Content-Type: text/enriched -Text-Width: 70 - -<center><x-bg-color><param>blue</param><x-color><param>white</param><bold><fixed>enriched.el:</fixed></bold></x-color></x-bg-color> - -<x-bg-color><param>blue</param><x-color><param>white</param><bold>WYSIWYG rich text editing for GNU Emacs</bold></x-color></x-bg-color> - - -</center><bold><x-bg-color><param>blue</param><x-color><param>white</param>INTRODUCTION - -</x-color></x-bg-color> - -</bold><indent>Emacs now has the ability to edit <italic>enriched text</italic>, which is text -containing faces, colors, indentation, and other properties. -This document is a quick introduction to some of the new features, -and is also an example file in the <italic>text/enriched </italic>format. - - -</indent><x-bg-color><param>blue</param><x-color><param>white</param><bold>INSTALLATION and STARTUP - -</bold></x-color></x-bg-color> - -<indent>Most of the time, you need not do anything to get these features -to work. If you visit a file that has been written out in -<italic>text/enriched</italic> format, it will automatically be decoded, Emacs will -enter `enriched-mode' while visiting it, and whenever you save it -it will be saved in the same format it was read in. - - -If you wish to create a new file, however, you will need to turn -on enriched-mode yourself: - - -<fixed><indent>M-x enriched-mode RET</indent></fixed> - - -Or, if you get a <italic>text/enriched </italic>file that Emacs does not -automatically recognize and decode, you can tell Emacs to decode -it (which also turns on enriched-mode automatically): - - - <fixed>M-x format-decode-buffer RET text/enriched RET</fixed> - - - -</indent><x-bg-color><param>blue</param><x-color><param>white</param><bold><flushleft>WHAT IS ENCODED - -</flushleft></bold></x-color></x-bg-color><flushleft> - -</flushleft><indent>Here is the current list of text-properties that are saved; they -are discussed in more detail below. -Most of these can be added or changed with the "Text Properties" -menu, available under the "Edit" item in the menu-bar, or on -C-mouse-2 (Control + the middle mouse button). - -<bold>Faces:</bold> default, <bold>bold</bold>, <italic>italic</italic>, <underline>underline</underline>, <fixed>fixed</fixed>, etc. - -<bold>Colors:</bold> <x-color><param>red</param><x-bg-color><param>DarkSlateGray</param>any</x-bg-color></x-color><x-bg-color><param>DarkSlateGray</param><x-color><param>orange</param>thing</x-color> <x-color><param>yellow</param>your</x-color><x-color><param>green</param> screen</x-color><x-color><param>blue</param> </x-color><x-color><param>light blue</param>can</x-color><x-color><param>violet</param> display...</x-color></x-bg-color> - -<bold>Newlines:</bold> <indent>Which ones are real ("hard") newlines, and which can be -changed to fit lines into the ma</indent>rgins. - -<bold>Margins:</bold> can be indented on the left or right. - -<bold>Justification </bold><indent>(whether lines should be flush with the left margin, -the right margin, fully justified, centered, or left alo</indent>ne). - -<bold>Excerpts: "</bold><excerpt>For quoted material."</excerpt> - -<bold>Read-only</bold> regions. - - -</indent><x-bg-color><param>blue</param><x-color><param>white</param><bold>FACES and COLORS - -</bold></x-color></x-bg-color><bold> - -</bold><indent>You can add faces either with the menu or with <fixed>M-g.</fixed> The face is -applied to the current region. If you are using -`transient-mark-mode' and the region is not active, then the face -applies to whatever you type next. Any face can have colors, but -faces have no other attributes are put on the color submenus of -the "Text Properties" menu. - - -</indent><x-bg-color><param>blue</param><x-color><param>white</param><bold>NEWLINES and PARAGRAPHS - -</bold></x-color></x-bg-color><bold> - -</bold><indent><italic>Text/enriched</italic> format distinguishes between <underline>hard</underline> and <underline>soft</underline> newlines. -Hard newlines are used to separate paragraphs, or items in a list, -or anywhere that must be a line break no matter what the margins -are. Soft newlines are the ones inserted in order to fit text -between the margins. The fill and auto-fill functions insert soft -newlines as necessary, but hard newlines are only inserted by -direct request, such as using the return key or the <fixed>C-o -(open-line)</fixed> function. - - -</indent><x-bg-color><param>blue</param><x-color><param>white</param><bold>INDENTATION - -</bold></x-color></x-bg-color><bold> - -</bold><indent><indentright>The fill functions also understand margins, which can be set -for any region of a document. In addition to the menu items, -which increase or decrease the margins, there are two commands -for setting the margins absolutely: <fixed>C-c l (set-left-margin)</fixed> -and <fixed>C-c r (set-right-margin)</fixed>. -<flushleft> - -</flushleft></indentright><flushleft>You <indent>can change indentation at any point in a</indent></flushleft></indent> <indent><indent><flushleft>paragraph, which -makes it possible to do interesting things like</flushleft> -<flushleft>hanging-indents: this paragraph was indented by selecting the -region from the second word to the end of the paragraph, and -indenting only that part.<indent> - -</indent></flushleft></indent></indent><flushleft> - -<x-bg-color><param>blue</param><x-color><param>white</param><bold>JUSTIFICATION<indent> - -</indent></bold></x-color></x-bg-color><bold><indent> - -</indent></bold></flushleft><indent><nofill>Several styles of justification are possible, the simplest being <italic>unfilled. -</italic>This means that your lines will be left as you write them. -This paragraph is unfilled. - -The most common (for English) style is <italic>FlushLeft. </italic>This means -lines are aligned at the left margin but left uneven at the -right. - - - </nofill><italic><flushright>FlushRight</flushright></italic><flushright> makes each line flush with the right margin instead. - - - -</flushright><italic><flushboth>FlushBoth </flushboth></italic><flushboth>regions, which are sometimes called "fully justified" -are aligned evenly on both edges, so that the text on the page has -a smooth appearance as in a book or newspaper article. -Unfortunately this does not look as nice with a fixed-width font -as it does in a proportionally-spaced printed document; the extra -spaces that are needed on the screen can make it hard to read. <indentright><indentright><indentright><indentright> - - - </indentright></indentright></indentright></indentright></flushboth><bold><center>Center - - </center></bold><center>Finally, there is <italic>center </italic>justification. - The normal center-paragraph key, M-S, can be used to turn on - center justification in enriched-mode. - - M-j or the "Text Properties" menu also can be used to change - justification. - - - -</center><flushboth>Note that justification can only change at hard newlines, because -that is the unit over which filling gets done. - - -</flushboth></indent><x-bg-color><param>blue</param><x-color><param>white</param><bold>EXCERPTS - -</bold></x-color></x-bg-color> - -<excerpt><indent>This is an example of an excerpt. You can use them for quoted -parts of other people's email messages and the like. It is just a -face, which is the same as the `italic' face by default. - </indent></excerpt> - -<x-bg-color><param>blue</param><x-color><param>white</param><bold>THE FILE FORMAT<indent> - -</indent></bold></x-color></x-bg-color><indent> - -Enriched-mode documents are saved in an extended version of a -format called <italic>text/enriched</italic>, which is defined as part of the MIME -standard. This means that your documents are transportable (even -through email) to many</indent> <indent>other systems. In the future other file -formats may be supported as well. - - -Since Emacs adds some non-standard features to the format (colors - -and read-only regions), not all systems will be able to recreate -all of the features of your document, but they will get as close -as possible. - - -The MIME standard is defined in internet RFC 1521; text/enriched -is defined in RFC 1563. Details on obtaining these documents via -FTP or email may be obtained by sending an email message to -<fixed>rfc-info@isi.edu</fixed> with the message body: - -<fixed><indent>help: ways_to_get_rfcs - - -</indent></fixed>See also the newsgroup comp.mail.mime. - - -</indent><x-bg-color><param>blue</param><x-color><param>white</param><bold>CUSTOMIZATION - -</bold></x-color></x-bg-color><bold> - -</bold><indent>-<indent> The <fixed>fixed </fixed>and <excerpt>excerpt </excerpt>faces should be set to your liking.</indent> - -- <indent>User-preference variables: <fixed>default-justification, enriched-verbose. -</fixed></indent>- <indent>You can add annotations for your own text properties by making -additions to <fixed>enriched-annotation-alist</fixed>. Note that the -standard requires you to name your annotation starting<italic> "x-" -</italic>(as in <italic>"x-read-only"</italic>). Please send me any such additions that -you think might be of general interest so that I can include -them in the distribution. - - -</indent></indent><x-bg-color><param>blue</param><x-color><param>white</param><bold>TO-DO LIST - -</bold></x-color></x-bg-color><bold> - -</bold><indent><italic>[Feel free to work on these and send me the results!]</italic> - -- Be smarter about fixing malformed files. - -- Make the indentation work more seamlessly and robustly: - -<indent>+ Create<indent> an aggressive auto-fill function that will keep the -paragraph properly filled all the time, without slowing -down editing too much.</indent> - -+ Refill after yank. - -+ <indent>Make deleting a newline also delete the indentation -following it.</indent> - -+ Never let point enter indentation?? - -</indent>- Notice and re-fill when window changes widths (optionally). - -- Deal with the `category' text-property in a smart way. - -- Interface w/ GNUS, VM, RMAIL. Maybe Info too? - --<indent> Support more formats: RTF, HTML... - - -</indent></indent><x-bg-color><param>blue</param><x-color><param>white</param><bold>Final Notes: - -</bold></x-color></x-bg-color><bold> - -</bold><indent>This code and documentation is under development. - </indent>Comments and bug reports are welcome. - - -<bold><x-color><param>white</param><x-bg-color><param>blue</param>Boris Goldowsky</x-bg-color></x-color><x-color><param>light blue</param> </x-color></bold><x-color><param>light blue</param><fixed><<boris@gnu.ai.mit.edu></fixed></x-color><x-color><param>blue</param> - -</x-color><x-bg-color><param>blue</param><x-color><param>white</param> April 1995 </x-color></x-bg-color><x-color><param>blue</param> - - - - - - - - - - - -</x-color>
--- a/etc/gnuserv.1 Mon Aug 13 10:38:47 2007 +0200 +++ b/etc/gnuserv.1 Mon Aug 13 10:39:40 2007 +0200 @@ -291,4 +291,4 @@ etc/emacsclient.c, etc/server.c and lisp/server.el from the GNU Emacs 18.52 distribution. Various modifications from Bob Weiner (weiner@mot.com), Darrell Kindred (dkindred@cmu.edu), Arup Mukherjee (arup@cmu.edu), Ben -Wing (wing@666.com) and Hrvoje Niksic (hniksic@srce.hr). +Wing (ben@xemacs.org) and Hrvoje Niksic (hniksic@srce.hr).
--- a/etc/gnuserv.README Mon Aug 13 10:38:47 2007 +0200 +++ b/etc/gnuserv.README Mon Aug 13 10:39:40 2007 +0200 @@ -50,7 +50,7 @@ This version of gnuserv has been enhanced by a number of people, including Bob Weiner <weiner@mot.com>, Darrell Kindred <dkindred@cmu.edu>, -Arup Mukherjee <arup@cmu.edu>, and Ben Wing <wing@666.com>. The +Arup Mukherjee <arup@cmu.edu>, and Ben Wing <ben@xemacs.org>. The modifications are basically as follows: Bob Weiner:
--- a/etc/xemacs-ja.1 Mon Aug 13 10:38:47 2007 +0200 +++ b/etc/xemacs-ja.1 Mon Aug 13 10:39:40 2007 +0200 @@ -679,7 +679,7 @@ .SH "����" .PP .B XEmacs -�ϡ�Chuck Thompson <cthomp@xemacs.org>��Ben Wing <wing@666.com>�� +�ϡ�Chuck Thompson <cthomp@xemacs.org>��Ben Wing <ben@xemacs.org>�� Jamie Zawinski <jwz@netscape.com>��Richard Mlynarik <mly@adoc.xerox.com>�� Martin Buchholz <mrb@eng.sun.com> ¾���ˤ�äƽ񤫤�ޤ����� Free Software Foundation �� Richard Stallman �ν񤤤�
--- a/etc/xemacs.1 Mon Aug 13 10:38:47 2007 +0200 +++ b/etc/xemacs.1 Mon Aug 13 10:39:40 2007 +0200 @@ -786,31 +786,6 @@ .PP ftp://ftp.xemacs.org/pub/xemacs/ .PP -or from a mirror site near you. Here is an approximate (possibly -out-of-date) list of mirror sites: -.PP -ftp://ftp.ai.mit.edu/pub/xemacs/ -.br -ftp://ftp.uu.net/systems/gnu/xemacs/ -.br -ftp://ftp.sunet.se/pub/gnu/xemacs/ -.br -ftp://ftp.cenatls.cena.dgac.fr/pub/Emacs/xemacs/ -.br -ftp://liasun3.epfl.ch/pub/gnu/xemacs/ -.br -ftp://ftp.th-darmstadt.de/pub/editors/xemacs/ -.br -ftp://audrey.levels.unisa.edu.au/xemacs/ -.br -ftp://sunsite.doc.ic.ac.uk/gnu/xemacs/ -.br -ftp://ftp.ibp.fr/pub/emacs/xemacs/ -.br -ftp://uiarchive.cso.uiuc.edu/pub/packages/xemacs/ -.br -ftp://ftp.technion.ac.il/pub/unsupported/gnu/xemacs/ -.br -ftp://thphys.irb.hr/pub/xemacs/ -.PP -See the Web site for an up-to-date list of mirror sites. +or from a mirror site near you. Mirror sites are listed in the file +etc/FTP in the XEmacs distribution or see the Web site for an up-to-date +list of mirror sites.
--- a/lib-src/ChangeLog Mon Aug 13 10:38:47 2007 +0200 +++ b/lib-src/ChangeLog Mon Aug 13 10:39:40 2007 +0200 @@ -1,3 +1,7 @@ +1998-07-09 SL Baur <steve@altair.xemacs.org> + + * XEmacs 21.0-pre4 is released. + 1998-06-16 Jan Vroonhof <vroonhof@math.ethz.ch> * gnuclient.c (main): Use disconnect_from_server to read & echo
--- a/lisp/ChangeLog Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/ChangeLog Mon Aug 13 10:39:40 2007 +0200 @@ -1,3 +1,132 @@ +1998-07-09 SL Baur <steve@altair.xemacs.org> + + * XEmacs 21.0-pre4 is released. + +1998-06-28 Hrvoje Niksic <hniksic@srce.hr> + + * menubar-items.el (default-menubar): Use `report-emacs-bug' for + reporting bugs. + (maybe-add-init-button): Fix semantics under Windows. Use + `expand-file-name' rather than `concat'. + + * help.el (print-messages): New function. + +1998-07-05 Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch> + + * ldap.el (ldap-host-parameters-alist): Docstring fixes + +1998-07-04 Jonathan Harris <jhar@tardis.ed.ac.uk> + + * about.el: Tweaked my entry in about-hackers. + + * find-paths.el (paths-emacs-root-p): + Relaxed emacs-root checking of an in-place installation to + also accomodate the flat layout used on MS Windows. + +1998-06-29 John Jones <jj@asu.edu> + + * package-get.el: calls to package-get-update-all will only + update packages which are already installed. + +1998-07-05 Andy Piper <andyp@parallax.co.uk> + + * faces.el (xpm-color-symbols): remove hardcoded defaults these + are handled by the gui-element face fallbacks now. + + * x-faces.el: default gui-element face to "background" as well as + the default face. + + * msw-faces.el (mswindows-init-device-faces): remove gui-element + and default face settings since these are set as fallbacks now in + the appropriate domain. + +1998-07-02 SL Baur <steve@altair.xemacs.org> + + * text-mode.el (text-mode): Reorder regexp so the OR part + corresponding to `page-delim' goes first and the hack in + `forward-paragraph' will work. + With bug analysis from Bob Weiner <weiner@altrasoft.com> + +1998-06-29 Kyle Jones <kyle_jones@wonderworks.com> + + * subr.el (remove-hook): When checking the hook value + with functionp, don't apply car to it. + +1998-06-24 Jonathan Harris <jhar@tardis.ed.ac.uk> + + * package-get.el (package-get-remote-filename): + Don't use file-name-as-directory because the local directory + separator conventions might not be the same as ftp's. + +1998-06-27 Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch> + + * ldap.el (ldap-host-parameters-alist): New name of + `ldap-host-parameters-plist' + +1998-06-26 Adrian Aichner <aichner@ecf.teradyne.com> + + * package-get.el: Using (require 'package-get-base), now that it + provides itself. Consequently removed all instances of (load + "package-get-base.el"). + +1998-06-29 Kyle Jones <kyle_jones@wonderworks.com> + + * subr.el (remove-hook): Don't treat the hook value as a + list unless it is both consp and not functionp. + +1998-06-29 SL Baur <steve@altair.xemacs.org> + + * about.el: Email address for Ben Wing is ben@xemacs.org. + * auto-show.el: Ditto. + * bytecomp.el: Ditto. + * faces.el: Ditto. + * x-scrollbar.el: Ditto. + * x-misc.el: Ditto. + * tty-init.el: Ditto. + * toolbar-items.el: Ditto. + * symbol-syntax.el: Ditto. + * specifier.el: Ditto. + * objects.el: Ditto. + * hyper-apropos.el: Ditto. + * glyphs.el: Ditto. + +1998-06-27 Hrvoje Niksic <hniksic@srce.hr> + + * mouse.el (drag-window-divider): vertical-divider-draggable-p -> + vertical-divider-always-visible-p. + (default-mouse-motion-handler): Ditto. + +1998-06-21 Hrvoje Niksic <hniksic@srce.hr> + + * scrollbar.el (scrollbars-visible-p): Simplify. Always set the + global value. + +1998-06-21 Oliver Graf <ograf@fga.de> + + * build-reports.el: changed receiver to xemacs-build-reports list + +1998-06-19 Jonathan Harris <jhar@tardis.ed.ac.uk> + + * font.el: Split font-family-mappings into X and + mswindows-specific versions. + mswindows-font-create-[object|name]: Treat supplied size + as a pointsize. Added underline and strikethru handling. + + * msw-faces.el: changed default mswindows charset to western. + + * msw-glyphs.el: removed space in border-glyph font string that + was inserted to get round bugs in the mswindows C font code. + +1998-06-27 SL Baur <steve@altair.xemacs.org> + + * about.el (about-hackers): Credits update. + + * help-nomule.el (tutorial-supported-languages): Add Romanian + TUTORIAL. + + * code-files.el (file-coding-system-alist): Hardwire TUTORIAL.ro + to ISO-8859-2. + 1998-06-19 Jonathan Harris <jhar@tardis.ed.ac.uk> * font.el: Split font-family-mappings into X and
--- a/lisp/about.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/about.el Mon Aug 13 10:39:40 2007 +0200 @@ -26,7 +26,7 @@ ;;; Synched up with: Not in FSF. ;; Original code: Jamie Zawinski <jwz@netscape.com> -;; Text: Ben Wing <wing@666.com>, Jamie Zawinski <jwz@netscape.com> +;; Text: Ben Wing <ben@xemacs.org>, Jamie Zawinski <jwz@netscape.com> ;; Hard: Amiga 1000, Progressive Peripherals Frame Grabber. ;; Soft: FG 2.0, DigiPaint 3.0, pbmplus (dec 91), xv 3.0. ;; Modified for 19.11 by Eduardo Pelegri-Llopart <pelegri@eng.sun.com> @@ -66,6 +66,7 @@ (jareth "Jareth Hein" "jareth@camelot.co.jp") (jason "Jason Mastaler" "jason@mastaler.com") (jens "Jens Lautenbacher" "jens@lemcbed.lem.uni-karlsruhe.de") + (jmiller "Jeff Miller" "jmiller@smart.net") (juhp "Jens-Ulrik Holger Petersen" "petersen@kurims.kyoto-u.ac.jp") (jwz "Jamie Zawinski" "jwz@netscape.com") (kazz "IENAGA Kazuyuki" "ienaga@jsys.co.jp") @@ -88,7 +89,7 @@ (stigb "Stig Bjorlykke" "stigb@tihlde.hist.no") (thiessel "Marcus Thiessel" "thiessel@rhrk.uni-kl.de") (vladimir "Vladimir Ivanovic" "vladimir@mri.com") - (wing "Ben Wing" "wing@xemacs.org") + (wing "Ben Wing" "ben@xemacs.org") (wmperry "William Perry" "wmperry@aventail.com")) "Alist of XEmacs hackers.") @@ -986,6 +987,16 @@ See: ") (about-url-link 'jason "Visit Jason's homepage") (widget-insert ".\n")) + (jmiller + (widget-inset "\ +Jeff grew up in Indiana and is a country boy at heart. He currently lives +in, of all places, Millersville Maryland. He spends a lot of his free +time tinkering with Linux and hacking on XEmacs and loves it when he finds +new cool features in either. When he's not doing that, he enjoys downhill +skiing, puzzles, and sci-fi. Jeff is also really interested in classical +Roman history and enjoys making trips to Italy, where he was born, and +seeing the sights") + (widget-insert ".\n")) )) ;; Setup the buffer for a maintainer. @@ -1193,6 +1204,8 @@ (about-show-linked-info 'jason "\ Beta tester and manager of the various XEmacs mailing lists. Originator and maintainer of the gnus.org domain.\n") + (about-show-linked-info 'jmiller "\ +Beta tester and last hacker of calendar.\n") (flet ((print-short (name addr &optional shortinfo) (concat (about-with-face name 'italic) (about-tabs name) @@ -1235,6 +1248,10 @@ will get to finish it sometime sooner rather than later. I do vaguely remember University where it seems like I had more spare time that I can believe now. Oh well, such is life.\n") + (print-short "Jonathan Harris" "jhar@tardis.ed.ac.uk" "\ +Manages the team responsible for the EPOC kernel at Symbian Ltd. Started +the mswindows native-GUI port of XEmacs because he felt lost using +Microsoft Windows without a real editor.\n") (print-short "Michael R. Cook" "mcook@cognex.com" "\ Author of the \"shy groups\" and minimal matching regular expression extensions.\n") @@ -1330,7 +1347,6 @@ (print-short "ChangGil Han" "cghan@phys401.phys.pusan.ac.kr") (print-short "Derek Harding" "dharding@lssec.bt.co.uk") (print-short "Michael Harnois" "mharnois@sbt.net") - (print-short "Jonathan Harris" "jhar@tardis.ed.ac.uk") (print-short "John Haxby" "J.Haxby@isode.com") (print-short "Karl M. Hegbloom" "karlheg@inetarena.com") (print-short "Benedikt Heinen" "beh@icemark.thenet.ch") @@ -1342,6 +1358,7 @@ (print-short "Chris Holt" "xris@migraine.stanford.edu") (print-short "Tetsuya HOYANO" "hoyano@ari.bekkoame.or.jp") (print-short "David Hughes" "djh@harston.cv.com") + (print-short "Tudor Hulubei" "tudor@cs.unh.edu") (print-short "Tatsuya Ichikawa" "ichikawa@hv.epson.co.jp") (print-short "Andrew Innes" "andrewi@harlequin.co.uk") (print-short "Andreas Jaeger" "aj@arthur.rhein-neckar.de")
--- a/lisp/auto-show.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/auto-show.el Mon Aug 13 10:39:40 2007 +0200 @@ -30,7 +30,7 @@ ;; This file is dumped with XEmacs. -;; Modified by: Ben Wing <wing@666.com> +;; Modified by: Ben Wing <ben@xemacs.org> ;; This file provides functions that ;; automatically scroll the window horizontally when the point moves
--- a/lisp/build-report.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/build-report.el Mon Aug 13 10:39:40 2007 +0200 @@ -61,7 +61,7 @@ :group 'build) (defcustom build-report-destination - "xemacs-beta@xemacs.org" + "xemacs-build-reports@xemacs.org" "The mail address XEmacs Build Reports should go to." :type 'string :group 'build-report)
--- a/lisp/bytecomp.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/bytecomp.el Mon Aug 13 10:39:40 2007 +0200 @@ -3003,7 +3003,7 @@ ((= len 4) (byte-compile-three-args form)) (t (byte-compile-subr-wrong-args form "2-3"))))) -;; from Ben Wing <wing@666.com>: some inlined functions have extra +;; from Ben Wing <ben@xemacs.org>: some inlined functions have extra ;; optional args added to them in XEmacs 19.12. Changing the byte ;; interpreter to deal with these args would be wrong and cause ;; incompatibility, so we generate non-inlined calls for those cases.
--- a/lisp/code-files.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/code-files.el Mon Aug 13 10:39:40 2007 +0200 @@ -67,6 +67,7 @@ ("\\.\\(jpeg\\|jpg\\)$" . (binary . binary)) ("TUTORIAL\\.hr$" . iso-8859-2) ("TUTORIAL\\.pl$" . iso-8859-2) + ("TUTORIAL\\.ro$" . iso-8859-2) ;; ("\\.\\(el\\|emacs\\|info\\(-[0-9]+\\)?\\|texi\\)$" . iso-2022-8) ;; ("\\(ChangeLog\\|CHANGES-beta\\)$" . iso-2022-8) ("\\.\\(gz\\|Z\\)$" . binary)
--- a/lisp/faces.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/faces.el Mon Aug 13 10:39:40 2007 +0200 @@ -4,7 +4,7 @@ ;; Copyright (C) 1995 Board of Trustees, University of Illinois ;; Copyright (C) 1995, 1996 Ben Wing -;; Author: Ben Wing <wing@666.com> +;; Author: Ben Wing <ben@xemacs.org> ;; Keywords: faces, internal, dumped ;; This file is part of XEmacs. @@ -1674,16 +1674,14 @@ (x-get-resource "backgroundToolBarColor" "BackgroundToolBarColor" 'string)) - (face-background 'toolbar) - "Gray80"))) + (face-background 'toolbar)))) (purecopy '("foregroundToolBarColor" (or (and (featurep 'x) (x-get-resource "foregroundToolBarColor" "ForegroundToolBarColor" 'string)) - (face-foreground 'toolbar) - "Black"))) + (face-foreground 'toolbar)))) ))) (when (featurep 'tty)
--- a/lisp/find-paths.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/find-paths.el Mon Aug 13 10:39:40 2007 +0200 @@ -100,11 +100,10 @@ (file-directory-p (paths-construct-path (list directory "lib" emacs-program-name))) - ;; in-place + ;; in-place or windows-nt (and - (file-directory-p (paths-construct-path (list directory "lib-src"))) (file-directory-p (paths-construct-path (list directory "lisp"))) - (file-directory-p (paths-construct-path (list directory "src")))))) + (file-directory-p (paths-construct-path (list directory "etc")))))) (defun paths-chase-symlink (file-name) "Chase a symlink until the bitter end."
--- a/lisp/glyphs.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/glyphs.el Mon Aug 13 10:39:40 2007 +0200 @@ -3,7 +3,7 @@ ;; Copyright (C) 1994, 1997 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996 Ben Wing. -;; Author: Chuck Thompson <cthomp@cs.uiuc.edu>, Ben Wing <wing@666.com> +;; Author: Chuck Thompson <cthomp@cs.uiuc.edu>, Ben Wing <ben@xemacs.org> ;; Maintainer: XEmacs Development Team ;; Keywords: extensions, internal, dumped
--- a/lisp/help-nomule.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/help-nomule.el Mon Aug 13 10:39:40 2007 +0200 @@ -35,7 +35,8 @@ ("German" de iso-8859-1) ("Norwegian" no iso-8859-1) ("Croatian" hr iso-8859-2) - ("Polish" pl iso-8859-2)) + ("Polish" pl iso-8859-2) + ("Romanian" ro iso-8859-2)) "Alist of supported languages in TUTORIAL files. Add languages here, as more are translated.")
--- a/lisp/help.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/help.el Mon Aug 13 10:39:40 2007 +0200 @@ -762,6 +762,26 @@ :type 'integer :group 'help) +(defun print-recent-messages (n) + "Print N most recent messages to standard-output, most recent first. +If N is nil, all messages will be printed." + (save-excursion + (let ((buffer (get-buffer-create " *Message-Log*")) + oldpoint extent) + (goto-char (point-max buffer) buffer) + (set-buffer standard-output) + (while (and (not (bobp buffer)) + (or (null n) (>= (decf n) 0))) + (setq oldpoint (point buffer)) + (setq extent (extent-at oldpoint buffer + 'message-multiline nil 'before)) + ;; If the message was multiline, move all the way to the + ;; beginning. + (if extent + (goto-char (extent-start-position extent) buffer) + (forward-line -1 buffer)) + (insert-buffer-substring buffer (point buffer) oldpoint))))) + (defun view-lossage () "Display recent input keystrokes and recent minibuffer messages. The number of keys shown is controlled by `view-lossage-key-count'. @@ -781,24 +801,7 @@ ;; reversing their order and handling multiline messages ;; correctly. (princ "\n\n\nRecent minibuffer messages (most recent first):\n\n") - (save-excursion - (let ((buffer (get-buffer-create " *Message-Log*")) - (count 0) - oldpoint extent) - (goto-char (point-max buffer) buffer) - (set-buffer standard-output) - (while (and (not (bobp buffer)) - (< count view-lossage-message-count)) - (setq oldpoint (point buffer)) - (setq extent (extent-at oldpoint buffer - 'message-multiline nil 'before)) - ;; If the message was multiline, move all the way to the - ;; beginning. - (if extent - (goto-char (extent-start-position extent) buffer) - (forward-line -1 buffer)) - (insert-buffer-substring buffer (point buffer) oldpoint) - (incf count))))) + (print-recent-messages view-lossage-message-count)) "lossage")) (define-function 'help 'help-for-help)
--- a/lisp/hyper-apropos.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/hyper-apropos.el Mon Aug 13 10:39:40 2007 +0200 @@ -52,7 +52,7 @@ ;; ;; Mouse bindings and menus are provided for XEmacs. ;; -;; additions by Ben Wing <wing@666.com> July 1995: +;; additions by Ben Wing <ben@xemacs.org> July 1995: ;; added support for function aliases, made programmer's apropos be the ;; default, various other hacking. ;; Massive changes by Christoph Wedler <wedler@fmi.uni-passau.de>
--- a/lisp/ldap.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/ldap.el Mon Aug 13 10:39:40 2007 +0200 @@ -5,7 +5,7 @@ ;; Author: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch> ;; Maintainer: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch> ;; Created: Jan 1998 -;; Version: $Revision: 1.5 $ +;; Version: $Revision: 1.7 $ ;; Keywords: help comm ;; This file is part of XEmacs @@ -41,8 +41,8 @@ (defvar ldap-default-host nil "*Default LDAP server.") -(defvar ldap-host-parameters-plist nil - "*A property list of per host options for LDAP transactions +(defvar ldap-host-parameters-alist nil + "*An alist of per host options for LDAP transactions The list elements look like (HOST PROP1 VAL1 PROP2 VAL2 ...) HOST is the name of an LDAP server. PROPn and VALn are property/value pairs describing parameters for the server. Valid properties: @@ -67,7 +67,7 @@ ATTRSONLY if non nil retrieves the attributes only without the associated values. Additional search parameters can be specified through -`ldap-host-parameters-plist' which see." +`ldap-host-parameters-alist' which see." (interactive "sFilter:") (let (host-plist res ldap) (if (null host) @@ -75,7 +75,7 @@ (if (null host) (error "No LDAP host specified")) (setq host-plist - (cdr (assoc host ldap-host-parameters-plist))) + (cdr (assoc host ldap-host-parameters-alist))) (message "Opening LDAP connection to %s..." host) (setq ldap (ldap-open host host-plist)) (message "Searching with LDAP on %s..." host)
--- a/lisp/menubar-items.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/menubar-items.el Mon Aug 13 10:39:40 2007 +0200 @@ -576,6 +576,11 @@ :style toggle :selected scrollbars-visible-p])) ;; I don't think this is of any interest. - dverna apr. 98 + ;; #### I beg to differ! Many FSFmacs converts hate the 3D + ;; modeline, and it was perfectly fine to be able to turn them + ;; off through the Options menu. I would have uncommented this + ;; source, but the code for saving options would not save the + ;; modeline 3D-ness. Grrr. --hniksic ;; ["3D Modeline" ;; (progn ;; (if (zerop (specifier-instance modeline-shadow-thickness)) @@ -927,8 +932,7 @@ ["No Warranty" describe-no-warranty] ["XEmacs License" describe-copying] ["The Latest Version" describe-distribution]) - ["Submit Bug Report" send-pr - :active (fboundp 'send-pr)])))) + ["Send Bug Report..." report-emacs-bug])))) (defun maybe-add-init-button () @@ -937,13 +941,7 @@ ;; by Stig@hackvan.com (cond (init-file-user nil) - ((file-exists-p (cond - ((eq system-type 'ms-dos) - (concat "~" (user-login-name) "/_emacs")) - ((eq system-type 'vax-vms) - "sys$login:.emacs") - (t - (concat "~" (user-login-name) "/.emacs")))) + ((file-exists-p (expand-file-name ".emacs" "~")) (add-menu-button nil ["Load .emacs" (progn (delete-menu-item '("Load .emacs"))
--- a/lisp/mouse.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/mouse.el Mon Aug 13 10:39:40 2007 +0200 @@ -1340,7 +1340,9 @@ '(modeline-pointer-glyph nontext-pointer-glyph text-pointer-glyph)) ((and (event-over-vertical-divider-p event) - (specifier-instance vertical-divider-draggable-p + ;; #### I disagree with the check below. + ;; Discuss it with Kirill for 21.1. --hniksic + (specifier-instance vertical-divider-always-visible-p (event-window event))) '(divider-pointer-glyph nontext-pointer-glyph text-pointer-glyph)) @@ -1416,9 +1418,11 @@ window-divider-map. You would not call it, but you may bind it to other mouse buttons." (interactive "e") - (if (not (specifier-instance vertical-divider-draggable-p + ;; #### I disagree with the check below. + ;; Discuss it with Kirill for 21.1. --hniksic + (if (not (specifier-instance vertical-divider-always-visible-p (event-window event))) - (error "Not over a window!")) + (error "Not over a window")) (let-specifier ((vertical-divider-shadow-thickness (- (specifier-instance vertical-divider-shadow-thickness (event-window event)))
--- a/lisp/msw-faces.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/msw-faces.el Mon Aug 13 10:39:40 2007 +0200 @@ -34,11 +34,6 @@ (defun mswindows-init-device-faces (device) (set-face-font 'default '((mswindows default) . "Courier New:Regular:10") 'global) - ;; gui elements - (set-face-foreground 'gui-element '((mswindows default) . "Black") 'global) - (set-face-background 'gui-element '((mswindows default) . "Gray75") 'global) - (set-face-foreground 'default '((mswindows default) . "black") 'global) - (set-face-background 'default '((mswindows default) . "white") 'global) )
--- a/lisp/objects.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/objects.el Mon Aug 13 10:39:40 2007 +0200 @@ -4,7 +4,7 @@ ;; Copyright (C) 1995 Ben Wing ;; Author: Chuck Thompson <cthomp@xemacs.org> -;; Author: Ben Wing <wing@666.com> +;; Author: Ben Wing <ben@xemacs.org> ;; Maintainer: XEmacs Development Team ;; Keywords: faces, internal, dumped
--- a/lisp/package-get-base.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/package-get-base.el Mon Aug 13 10:39:40 2007 +0200 @@ -1,19 +1,19 @@ (setq package-get-base '((eudc (standards-version 1.0 - version "1.08" - author-version "1.08" - date "1998-06-07" - build-date "1998-06-14" + version "1.09" + author-version "1.09" + date "1998-06-30" + build-date "1998-06-30" maintainer "Oscar Figueiredo <Oscar.Figueiredo@epfl.ch>" distribution stable priority low category "comm" dump nil description "Emacs Unified Directory Client (LDAP, PH)." - filename "eudc-1.08-pkg.tar.gz" - md5sum "bc03e55ae76a0bb9770ec86e8ee19737" - size 40854 + filename "eudc-1.09-pkg.tar.gz" + md5sum "517bfd3112700fd3dcfc59e02bbb0b12" + size 40867 provides (eudc eudc-ldap eudc-ph) requires (fsf-compat xemacs-base) type regular @@ -58,19 +58,19 @@ )) (gnus (standards-version 1.0 - version "1.16" - author-version "5.6.10" - date "1998-06-01" - build-date "1998-06-01" + version "1.21" + author-version "5.6.23" + date "1998-07-06" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority medium category "comm" dump nil description "The Gnus Newsreader and Mailreader." - filename "gnus-1.16-pkg.tar.gz" - md5sum "e78088ca22f5566ba7d9b7075ed70cff" - size 1658207 + filename "gnus-1.21-pkg.tar.gz" + md5sum "6d58f34293ec00bbd297a6abb98fe2e9" + size 1693384 provides (gnus message) requires (gnus w3 mh-e mailcrypt rmail mail-lib xemacs-base) type regular @@ -94,6 +94,25 @@ requires (gnus vm mail-lib xemacs-base) type regular )) +(mew + (standards-version 1.0 + version "1.0" + author-version "1.93b38" + date "1998-06-21" + build-date "1998-06-21" + maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" + distribution contrib + priority low + category "comm" + dump nil + description "Messaging in an Emacs World." + filename "mew-1.0-pkg.tar.gz" + md5sum "be366b8dd9495ecb7b3b6a7a46563faa" + size 441775 + provides (mew) + requires (mew) + type regular +)) (mh-e (standards-version 1.0 version "1.05" @@ -115,38 +134,38 @@ )) (net-utils (standards-version 1.0 - version "1.06" - author-version "21.0b42" - date "1998-05-18" - build-date "1998-06-01" + version "1.08" + author-version "21.0" + date "1998-07-01" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority low category "comm" dump nil description "Miscellaneous Networking Utilities." - filename "net-utils-1.06-pkg.tar.gz" - md5sum "fe144ff7f6ef3582ed7dd9bd64d316c2" - size 83496 + filename "net-utils-1.08-pkg.tar.gz" + md5sum "2591eca88f5ea04272012e479ea8665c" + size 107983 provides (ilisp-browse-cltl2 emacsbug feedmail metamail net-utils rcompile shadowfile webjump webster-www) requires (w3 efs mail-lib xemacs-base) type single )) (rmail (standards-version 1.0 - version "1.03" + version "1.04" author-version "21.0" - date "1998-01-24" - build-date "1998-06-14" + date "1998-06-28" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution contrib priority low category "comm" dump nil description "An obsolete Emacs mailer." - filename "rmail-1.03-pkg.tar.gz" - md5sum "74f7b559857c74432470ead395e6b1c3" - size 83667 + filename "rmail-1.04-pkg.tar.gz" + md5sum "5a4fc73565cb0e9ea62d6b0665ccb013" + size 85711 provides (rmail rmailsum) requires (tm apel mail-lib xemacs-base) type regular @@ -172,39 +191,38 @@ )) (tm (standards-version 1.0 - version "1.08" + version "1.09" author-version "21.0" - date "function, -" - build-date "1998-06-14" + date "1998-06-09" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority low category "comm" dump nil description "Emacs MIME support." - filename "tm-1.08-pkg.tar.gz" - md5sum "e64a641be99298eb1edfd0539ba4559c" - size 253280 + filename "tm-1.09-pkg.tar.gz" + md5sum "a5697117fc719a9c5a74a62f6b812101" + size 253269 provides (tm tm-edit tm-view mime-setup) requires (gnus mh-e rmail vm mailcrypt mail-lib apel xemacs-base) type regular )) (vm (standards-version 1.0 - version "1.08" - author-version "6.50" - date "1998-02-17" - build-date "1998-06-14" + version "1.09" + author-version "6.53" + date "1998-06-26" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority medium category "comm" dump t description "An Emacs mailer." - filename "vm-1.08-pkg.tar.gz" - md5sum "17b14c101cc930d367032d7620d5a381" - size 513332 + filename "vm-1.09-pkg.tar.gz" + md5sum "a3dd4a14155abf835275120c62ca82fd" + size 514307 provides (vm) requires (mail-lib xemacs-base) type regular @@ -249,19 +267,19 @@ )) (games (standards-version 1.0 - version "1.04" - author-version "1.02" - date "1998-04-07" - build-date "1998-06-01" - maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" + version "1.05" + author-version "1.04" + date "1998-06-04" + build-date "1998-07-09" + maintainer "Glynn Clements <glynn@sensei.co.uk>" distribution stable priority low category "games" dump nil description "Tetris, Sokoban, and Snake." - filename "games-1.04-pkg.tar.gz" - md5sum "05d820825de83a3b717cca756a12fd8c" - size 31208 + filename "games-1.05-pkg.tar.gz" + md5sum "2b856bc25a05ad32400bdd947fec6231" + size 32000 provides (gamegrid snake tetris sokoban) requires (xemacs-base) type regular @@ -439,38 +457,38 @@ )) (sounds-au (standards-version 1.0 - version "1.01" + version "1.02" author-version "21.0" - date "1998-06-19" - build-date "1998-06-19" + date "1998-06-30" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority high category "libs" dump nil description "XEmacs Sun sound files." - filename "sounds-au-1.01-pkg.tar.gz" - md5sum "878bde0798d5479ec3c2e1b4da8d5ee5" - size 125689 + filename "sounds-au-1.02-pkg.tar.gz" + md5sum "061ab67267c7cdfe37472141130d19ff" + size 125736 provides () requires () type regular )) (sounds-wav (standards-version 1.0 - version "1.01" + version "1.02" author-version "21.0" - date "1998-06-19" - build-date "1998-06-19" + date "1998-06-30" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority high category "libs" dump nil description "XEmacs Microsoft sound files." - filename "sounds-wav-1.01-pkg.tar.gz" - md5sum "cec8161f3c0ef188d416bb81bd2472c9" - size 148571 + filename "sounds-wav-1.02-pkg.tar.gz" + md5sum "c970808088c408bfd780dc8466a848b3" + size 148621 provides () requires () type regular @@ -496,19 +514,19 @@ )) (xemacs-base (standards-version 1.0 - version "1.20" - author-version "21.0b40" - date "1998-05-15" - build-date "1998-05-15" + version "1.21" + author-version "21.0" + date "1998-07-02" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution mule priority high category "libs" dump nil description "Fundamental XEmacs support, you almost certainly need this." - filename "xemacs-base-1.20-pkg.tar.gz" - md5sum "4329fd1b5649e5b6b184377985444cae" - size 454236 + filename "xemacs-base-1.21-pkg.tar.gz" + md5sum "1807f3591bc644c52d41bf472cd30bfc" + size 458268 provides (add-log advice annotations assoc case-table chistory comint-xemacs comint compile debug ebuff-menu echistory edmacro ehelp electric enriched env facemenu ffap helper imenu iso-syntax macros novice outline overlay passwd pp regi ring shell skeleton sort thing time-stamp timezone xbm-button xpm-button) requires () type regular @@ -534,39 +552,39 @@ )) (edict (standards-version 1.0 - version "1.02" + version "1.03" author-version "0.9.8" - date "1998-06-01" - build-date "1998-06-01" + date "1998-06-29" + build-date "1998-07-09" maintainer "Stephen J. Turnbull <turnbull@sk.tsukuba.ac.jp>" distribution mule priority high category "mule" - dump t + dump nil description "Lisp Interface to EDICT, Kanji Dictionary" - filename "edict-1.02-pkg.tar.gz" - md5sum "0169ee34db577ac5555765b90f09ac4c" - size 94768 - provides () + filename "edict-1.03-pkg.tar.gz" + md5sum "0f317174ab3e163780f26c6fcfe0eccb" + size 94823 + provides (dui-registry dui edict-edit edict-english edict-japanese edict-morphology edict-test edict ts-mode) requires (mule-base xemacs-base) type regular )) (egg-its (standards-version 1.0 - version "1.04" - author-version "21.0b35" - date "1998-01-24" - build-date "1998-04-04" + version "1.05" + author-version "21.0" + date "1998-06-20" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution mule priority high category "mule" dump t description "Wnn (4.2 and 6) support. SJ3 support." - filename "egg-its-1.04-pkg.tar.gz" - md5sum "a5bccad96425d89d9a590580c14fddee" - size 259362 - provides () + filename "egg-its-1.05-pkg.tar.gz" + md5sum "ef131233410ea57fad940b40cb3c786c" + size 259670 + provides (egg-cnpinyin egg-cnzhuyin egg-cwnn-leim egg-jisx0201 egg-jsymbol egg-kwnn-leim egg-leim egg-sj3-client egg-sj3-leim egg-sj3 egg-wnn egg) requires (leim mule-base xemacs-base) type regular )) @@ -610,19 +628,19 @@ )) (mule-base (standards-version 1.0 - version "1.17" - author-version "21.0b40" - date "1998-05-10" - build-date "1998-05-15" + version "1.19" + author-version "21.0" + date "1998-07-09" + build-date "1998-07-09" maintainer "SL Baur <steve@altair.xemacs.org>" distribution mule priority high category "mule" dump t description "Basic Mule support, required for building with Mule." - filename "mule-base-1.17-pkg.tar.gz" - md5sum "bce5a73395ef4167ed5c3bf94e2f70de" - size 489829 + filename "mule-base-1.19-pkg.tar.gz" + md5sum "ac5ed26ee38de23d3591c37a283bc7b5" + size 488988 provides (canna-leim canna char-table china-util cyril-util isearch-ext japan-util ccl can-n-egg mule-help) requires (fsf-compat xemacs-base) type regular @@ -667,19 +685,19 @@ )) (calendar (standards-version 1.0 - version "1.03" - author-version "21.0b35" - date "1998-01-25" - build-date "1998-04-04" + version "1.04" + author-version "21.0" + date "1998-06-19" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority low category "oa" dump nil description "Calendar and diary support." - filename "calendar-1.03-pkg.tar.gz" - md5sum "6d36eec11379155801304020b0c3ccf3" - size 168747 + filename "calendar-1.04-pkg.tar.gz" + md5sum "c0955508d51af1524ca8ef6687b362f1" + size 239851 provides (appt cal-dst cal-french cal-mayan cal-x cal-xemacs calendar diary-ins diary-lib holidays lunar solar) requires (xemacs-base) type regular @@ -800,19 +818,19 @@ )) (psgml (standards-version 1.0 - version "1.07" + version "1.08" author-version "1.01" - date "1998-03-20" - build-date "1998-05-02" + date "1998-07-06" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority medium category "oa" dump nil description "Validated HTML/SGML editing." - filename "psgml-1.07-pkg.tar.gz" - md5sum "957f026375a4e4bd4c2d8952eb1bbeba" - size 418672 + filename "psgml-1.08-pkg.tar.gz" + md5sum "757842225e4d3e9841bf6de1d3fdbbc4" + size 419252 provides (psgml sgml) requires (edit-utils) type regular @@ -895,19 +913,19 @@ )) (text-modes (standards-version 1.0 - version "1.07" - author-version "21.0b35" - date "1998-03-25" - build-date "1998-04-04" + version "1.08" + author-version "21.0" + date "1998-07-03" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority high category "oa" dump nil description "Miscellaneous support for editing text files." - filename "text-modes-1.07-pkg.tar.gz" - md5sum "a9a674d12ba0aebc83fb6a0ea998fff8" - size 171607 + filename "text-modes-1.08-pkg.tar.gz" + md5sum "7334a90ddbcedec459caecf8e0314bad" + size 171811 provides (autoinsert crontab-edit filladapt fold-isearch folding image-mode iso-acc iso-ascii iso-cvt iso-insert iso-swed swedish tabify whitespace-mode winmgr-mode xpm-mode xrdb-mode) requires (fsf-compat xemacs-base) type regular @@ -933,19 +951,19 @@ )) (eterm (standards-version 1.0 - version "1.04" - author-version "21.0b37" - date "1998-04-19" - build-date "1998-04-22" + version "1.05" + author-version "21.0" + date "1998-06-28" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority medium category "os" dump nil description "Terminal emulation." - filename "eterm-1.04-pkg.tar.gz" - md5sum "e8a818c8596b4965899f12db0d305b8d" - size 105512 + filename "eterm-1.05-pkg.tar.gz" + md5sum "0c1660a9a8426077534caf84762e7ec1" + size 144233 provides (eterm) requires (xemacs-base) type regular @@ -1085,20 +1103,20 @@ )) (debug (standards-version 1.0 - version "1.03" - author-version "21.0b42" - date "1998-06-01" - build-date "1998-06-01" + version "1.04" + author-version "21.0" + date "1998-07-09" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution contrib priority low category "prog" dump nil description "GUD, gdb, dbx debugging support." - filename "debug-1.03-pkg.tar.gz" - md5sum "8714c8ed2dd221501b2ec9818c773d29" - size 90336 - provides () + filename "debug-1.04-pkg.tar.gz" + md5sum "f881ca1a0593d218ca6a0e19dd10d8a0" + size 90350 + provides (dbx gdb-highlight gdb gdbsrc gud history) requires (xemacs-base) type regular )) @@ -1142,57 +1160,57 @@ )) (jde (standards-version 1.0 - version "1.01" - author-version "2.01" - date "1998-04-19" - build-date "1998-06-01" + version "1.04" + author-version "2.05" + date "1998-07-09" + build-date "1998-07-09" maintainer "Andy Piper <andyp@parallax.co.uk>" distribution stable priority medium category "prog" dump nil description "Java language and development support." - filename "jde-1.01-pkg.tar.gz" - md5sum "e8c52579687f2fcafc045937f9f01781" - size 115790 + filename "jde-1.04-pkg.tar.gz" + md5sum "97b90e88928033f405005a9441b7e141" + size 126784 provides (jde) requires (cc-mode debug speedbar edit-utils mail-lib xemacs-base) type regular )) (pcl-cvs (standards-version 1.0 - version "1.09" - author-version "21.0b40" - date "1998-05-15" - build-date "1998-05-15" + version "1.11" + author-version "21.0" + date "1998-06-18" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority low category "prog" dump nil description "CVS frontend." - filename "pcl-cvs-1.09-pkg.tar.gz" - md5sum "b1722c8b42e14b17111cba9163e7e9bb" - size 172405 + filename "pcl-cvs-1.11-pkg.tar.gz" + md5sum "7592786d2734d87778915e50561c472d" + size 141698 provides (pcl-cvs dll elib-node generic-sc) requires (xemacs-base) type regular )) (prog-modes (standards-version 1.0 - version "1.05" - author-version "21.0b38" - date "1998-04-29" - build-date "1998-05-01" + version "1.06" + author-version "21.0" + date "1998-05-04" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority medium category "prog" dump nil description "Support for various programming languages." - filename "prog-modes-1.05-pkg.tar.gz" - md5sum "94622c06c1c7416bc4bf69e64ec7acb9" - size 539786 + filename "prog-modes-1.06-pkg.tar.gz" + md5sum "38d494e334b846fe735f45d573759ed9" + size 539915 provides (autoconf-mode cperl-mode eiffel3 f90 fortran ksh-mode m4-mode makefile perl-mode postscript python-mode rexx-mode simula-mode tcl teco verilog-mod) requires (mail-lib xemacs-base) type regular @@ -1237,19 +1255,19 @@ )) (vc-cc (standards-version 1.0 - version "1.03" - author-version "21.0b35" - date "1998-01-24" - build-date "1998-04-04" + version "1.04" + author-version "21.0" + date "1998-06-30" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution contrib priority low category "prog" dump t description "Version Control for ClearCase (UnFree) systems." - filename "vc-cc-1.03-pkg.tar.gz" - md5sum "fbdd450eb5db37a1fd76829b9b93ebc2" - size 96065 + filename "vc-cc-1.04-pkg.tar.gz" + md5sum "07557cc75c0b2aafc5966cca1c0a22e2" + size 96262 provides (vc) requires (dired xemacs-base) type regular @@ -1313,19 +1331,19 @@ )) (crisp (standards-version 1.0 - version "1.03" - author-version "1.31" + version "1.04" + author-version "1.33" date "1998-01-24" - build-date "1998-04-04" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority low category "wp" dump nil description "Crisp/Brief emulation." - filename "crisp-1.03-pkg.tar.gz" - md5sum "422b7bcbb0b0097a0f3688e0f475e3b5" - size 9059 + filename "crisp-1.04-pkg.tar.gz" + md5sum "2a51917984d7556019b1b20ff85a9feb" + size 10189 provides (crisp scroll-lock) requires () type regular @@ -1370,19 +1388,19 @@ )) (texinfo (standards-version 1.0 - version "1.08" + version "1.09" author-version "21.0" - date "1998-06-10" - build-date "1998-06-14" + date "1998-07-01" + build-date "1998-07-09" maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>" distribution stable priority high category "wp" dump nil description "XEmacs TeXinfo support." - filename "texinfo-1.08-pkg.tar.gz" - md5sum "a97bf24a5bde1832a354d6005a688baf" - size 126611 + filename "texinfo-1.09-pkg.tar.gz" + md5sum "7ab1fa9774456869027cfc0846d8f3fc" + size 127683 provides (makeinfo tex-mode texinfmt texinfo texnfo-tex texnfo-upd) requires (xemacs-base) type regular
--- a/lisp/package-get.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/package-get.el Mon Aug 13 10:39:40 2007 +0200 @@ -97,6 +97,7 @@ ;;; Code: (require 'package-admin) +(require 'package-get-base) (defvar package-get-base nil "List of packages that are installed at this site. @@ -165,7 +166,6 @@ "Fetch and install the latest versions of all currently installed packages." (interactive) ;; Load a fresh copy - (load "package-get-base.el") (mapcar (lambda (pkg) (package-get-all (car pkg) nil)) @@ -179,7 +179,6 @@ latest version. Optional argument FETCHED-PACKAGES is used to keep track of packages already fetched." (interactive "sPackage: \nsVersion: ") - (load "package-get-base.el") (let* ((the-package (package-get-info-find-package package-get-base package)) (this-package (package-get-info-version @@ -230,7 +229,6 @@ sum does not match that stored in `package-get-base' for this version of the package, an error is signalled." (interactive "xPackage List: ") - (load "package-get-base.el") (let* ((this-package (package-get-info-version (package-get-info-find-package package-get-base @@ -362,10 +360,13 @@ " (if (efs-ftp-path filename) filename - (concat "/" - (car search) ":" - (file-name-as-directory (cadr search)) - filename))) + (let ((dir (cadr search))) + (concat "/" + (car search) ":" + (if (string-match "/$" dir) + dir + (concat dir "/")) + filename)))) (defun package-get-installedp (package version) @@ -385,7 +386,6 @@ consp, then it must match a corresponding (provide (SYM VERSION)) from the package." (interactive "SSymbol: ") - (load "package-get-base.el") (let ((packages package-get-base) (done nil) (found nil)) @@ -418,7 +418,6 @@ "Fetch and install the latest versions of all customized packages." (interactive) ;; Load a fresh copy - (load "package-get-base.el") (load "package-get-custom.el") (mapcar (lambda (pkg) (if (eval (intern (concat (symbol-name (car pkg)) "-package"))) @@ -456,7 +455,6 @@ Entries in the customization file are retrieved from package-get-base.el." (interactive) ;; Load a fresh copy - (load "package-get-base.el") (let ((custom-buffer (find-file-noselect (or (package-get-file-installed-p "package-get-custom.el")
--- a/lisp/scrollbar.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/scrollbar.el Mon Aug 13 10:39:40 2007 +0200 @@ -30,21 +30,16 @@ ;;; Code: -(defcustom scrollbars-visible-p ;; added for the options menu - dverna - (specifier-instance vertical-scrollbar-visible-p (selected-device)) - "Whether the scrollbars are globally visible. This variable can be -customized through the options menu." - :group 'display +;; added for the options menu - dverna +(defcustom scrollbars-visible-p t + "Whether the scrollbars are globally visible. +This variable can be customized through the options menu." :type 'boolean - :set '(lambda (var val) - (if val - (progn - (remove-specifier vertical-scrollbar-visible-p 'global) - (remove-specifier horizontal-scrollbar-visible-p 'global)) - (set-specifier vertical-scrollbar-visible-p nil 'global) - (set-specifier horizontal-scrollbar-visible-p nil 'global)) - (setq scrollbars-visible-p val)) - ) + :set (lambda (var val) + (set-specifier vertical-scrollbar-visible-p val) + (set-specifier horizontal-scrollbar-visible-p val) + (setq-default scrollbars-visible-p val)) + :group 'display) (defun init-scrollbar-from-resources (locale) (when (and (featurep 'x)
--- a/lisp/specifier.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/specifier.el Mon Aug 13 10:39:40 2007 +0200 @@ -3,7 +3,7 @@ ;; Copyright (C) 1997 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996 Ben Wing. -;; Author: Ben Wing <wing@666.com> +;; Author: Ben Wing <ben@xemacs.org> ;; Keywords: internal, dumped ;;; Synched up with: Not in FSF.
--- a/lisp/subr.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/subr.el Mon Aug 13 10:39:40 2007 +0200 @@ -194,14 +194,14 @@ (and (local-variable-p hook (current-buffer)) (not (memq t (symbol-value hook))))) (let ((hook-value (symbol-value hook))) - (if (consp hook-value) + (if (and (consp hook-value) (not (functionp hook-value))) (if (member function hook-value) (setq hook-value (delete function (copy-sequence hook-value)))) (if (equal hook-value function) (setq hook-value nil))) (set hook hook-value)) (let ((hook-value (default-value hook))) - (if (consp hook-value) + (if (and (consp hook-value) (not (functionp hook-value))) (if (member function hook-value) (setq hook-value (delete function (copy-sequence hook-value)))) (if (equal hook-value function)
--- a/lisp/symbol-syntax.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/symbol-syntax.el Mon Aug 13 10:39:40 2007 +0200 @@ -29,7 +29,7 @@ ;;; Commentary: -;; Last modified by: Ben Wing, wing@666.com +;; Last modified by: Ben Wing, ben@xemacs.org ;; Last modified on: Mon Oct 2 02:32:05 GMT 1995 ;;; Code:
--- a/lisp/text-mode.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/text-mode.el Mon Aug 13 10:39:40 2007 +0200 @@ -82,7 +82,7 @@ (setq local-abbrev-table text-mode-abbrev-table) (set-syntax-table text-mode-syntax-table) (make-local-variable 'paragraph-start) - (setq paragraph-start (concat "[ \t]*$\\|" page-delimiter)) + (setq paragraph-start (concat page-delimiter "\\|[ \t]*$")) (make-local-variable 'paragraph-separate) (setq paragraph-separate paragraph-start) (setq mode-name "Text")
--- a/lisp/toolbar-items.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/toolbar-items.el Mon Aug 13 10:39:40 2007 +0200 @@ -3,7 +3,7 @@ ;; Copyright (C) 1997 Free Software Foundation, Inc. ;; Copyright (C) 1994 Andy Piper <andyp@parallax.demon.co.uk> ;; Copyright (C) 1995 Board of Trustees, University of Illinois -;; Copyright (C) 1996 Ben Wing <wing@666.com> +;; Copyright (C) 1996 Ben Wing <ben@xemacs.org> ;; Maintainer: XEmacs development team ;; Keywords: frames, dumped
--- a/lisp/tty-init.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/tty-init.el Mon Aug 13 10:39:40 2007 +0200 @@ -1,7 +1,7 @@ ;;; tty-init.el --- initialization code for tty's ;; Copyright (C) 1994, 1997 Free Software Foundation, Inc. -;; Copyright (C) 1996 Ben Wing <wing@666.com>. +;; Copyright (C) 1996 Ben Wing <ben@xemacs.org>. ;; Maintainer: XEmacs Development Team ;; Keywords: terminals, dumped
--- a/lisp/x-faces.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/x-faces.el Mon Aug 13 10:39:40 2007 +0200 @@ -473,7 +473,8 @@ ;; frames or devices because then, common resource specs like ;; "*Foreground: black" will have unwanted effects. ;; - (if (and (eq (face-name face) 'default) + (if (and (or (eq (face-name face) 'default) + (eq (face-name face) 'gui-element)) (or (null locale) (eq locale 'global))) (progn (or fn (setq fn (x-get-resource
--- a/lisp/x-misc.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/x-misc.el Mon Aug 13 10:39:40 2007 +0200 @@ -4,7 +4,7 @@ ;; Copyright (C) 1995 Sun Microsystems. ;; Copyright (C) 1995, 1996 Ben Wing. -;; Author: Ben Wing <wing@666.com> +;; Author: Ben Wing <ben@xemacs.org> ;; Maintainer: XEmacs Development Team ;; Keywords: extensions, dumped
--- a/lisp/x-scrollbar.el Mon Aug 13 10:38:47 2007 +0200 +++ b/lisp/x-scrollbar.el Mon Aug 13 10:39:40 2007 +0200 @@ -4,7 +4,7 @@ ;; Copyright (C) 1995 Sun Microsystems. ;; Copyright (C) 1995, 1996 Ben Wing. -;; Author: Ben Wing <wing@666.com> +;; Author: Ben Wing <ben@xemacs.org> ;; Maintainer: XEmacs Development Team ;; Keywords: extensions, dumped
--- a/man/ChangeLog Mon Aug 13 10:38:47 2007 +0200 +++ b/man/ChangeLog Mon Aug 13 10:39:40 2007 +0200 @@ -1,3 +1,57 @@ +1998-07-09 SL Baur <steve@altair.xemacs.org> + + * XEmacs 21.0-pre4 is released. + +1998-07-09 Oliver Graf <ograf@fga.de> + + * lispref/dragndrop.texi: added warning to OffiX Protocol section + +1998-07-09 SL Baur <steve@altair.xemacs.org> + + * lispref/ldap.texi (Syntax of Search Filters): Fix QP encoding + damage in transit. + +1998-07-05 Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch> + + * lispref/tooltalk.texi: Fixed NEXT to @node LDAP + + * lispref/internationalization.texi: Fixed PREV to @node LDAP + + * lispref/lispref.texi: Added LDAP chapter from ldap.texi + + * lispref/Makefile: Added ldap.texi to srcs + +1998-06-29 SL Baur <steve@altair.xemacs.org> + + * standards.texi (Preface): Revert previous change to @node + because it doesn't pass makeinfo. + +1998-06-27 Adrian Aichner <aichner@ecf.teradyne.com> + + * cl.texi: See ALL. + * info-stnd.texi: Fixed @setfilename. + * info.texi: Fixed @setfilename and a typo. + * standards.texi: Added NEXT to @node Preface. See ALL. + * texinfo.texi: Fixed section names, quoted usage of @TeX{}, + changed some occurences of `:' to `colon'. + * xemacs-faq.texi: See ALL. + * internals/internals.texi: See ALL. + * lispref/back.texi: Fixed @setfilename. + * lispref/compile.texi: See ALL. + * lispref/debugging.texi: See ALL. + * lispref/edebug-inc.texi: Added NEXT and UP to @node Edebug. + * lispref/eval.texi: See ALL. + * lispref/extents.texi: See ALL. + * lispref/loading.texi: See ALL. + * lispref/searching.texi: Escaped `(' in + @cindex @samp{(?:} in regex + * lispref/variables.texi: See ALL. + +1998-06-28 SL Baur <steve@altair.xemacs.org> + + * xemacs/calendar.texi: Massive update. + From Jeff Miller <jmiller@smart.net> + 1998-06-20 Michael Sperber [Mr. Preprocessor] <sperber@informatik.uni-tuebingen.de> * xemacs/abbrevs.texi:
--- a/man/cl.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/cl.texi Mon Aug 13 10:39:40 2007 +0200 @@ -3221,7 +3221,7 @@ (defsubst foo (...) ...) ; instead of defun; Emacs 19 only @end example -@strong{Note:} This declaration remains in effect after the +@strong{Please note:} This declaration remains in effect after the containing source file is done. It is correct to use it to request that a function you have defined should be inlined, but it is impolite to use it to request inlining of an external
--- a/man/info-stnd.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/info-stnd.texi Mon Aug 13 10:39:40 2007 +0200 @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @comment %**start of header -@setfilename info-stnd.info +@setfilename ../info/info-stnd.info @settitle GNU Info @set InfoProgVer 2.11 @paragraphindent none @@ -9,7 +9,7 @@ @synindex fn cp @synindex ky cp @comment %**end of header -@comment $Id: info-stnd.texi,v 1.2 1997/07/19 22:11:47 steve Exp $ +@comment $Id: info-stnd.texi,v 1.3 1998/06/30 06:35:28 steve Exp $ @dircategory Texinfo documentation system @direntry
--- a/man/info.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/info.texi Mon Aug 13 10:39:40 2007 +0200 @@ -1,9 +1,9 @@ \input texinfo @c -*-texinfo-*- @comment %**start of header -@setfilename info.info +@setfilename ../info/info.info @settitle Info 1.0 @comment %**end of header -@comment $Id: info.texi,v 1.3 1997/07/19 22:11:48 steve Exp $ +@comment $Id: info.texi,v 1.4 1998/06/30 06:35:28 steve Exp $ @dircategory Texinfo documentation system @direntry @@ -397,7 +397,7 @@ screen. There is one more line beneath that one, but usually it is blank. If it is empty, Info is ready for a command, such as @kbd{n} or @kbd{b} or Space or @kbd{m}. If that line contains text ending -in a colon, it mean Info is trying to read the @dfn{argument} to a +in a colon, it means Info is trying to read the @dfn{argument} to a command. At such times, commands do not work, because Info tries to use them as the argument. You must either type the argument and finish the command you started, or type @kbd{Control-g} to cancel the
--- a/man/internals/internals.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/internals/internals.texi Mon Aug 13 10:39:40 2007 +0200 @@ -1695,11 +1695,12 @@ the @file{temacs} phase. @cindex copy-on-write - @strong{Note:} This kludge only works on a few systems nowadays, and is -rapidly becoming irrelevant because most modern operating systems provide -@dfn{copy-on-write} semantics. All data is initially shared between -processes, and a private copy is automatically made (on a page-by-page -basis) when a process first attempts to write to a page of memory. + @strong{Please note:} This kludge only works on a few systems +nowadays, and is rapidly becoming irrelevant because most modern +operating systems provide @dfn{copy-on-write} semantics. All data is +initially shared between processes, and a private copy is automatically +made (on a page-by-page basis) when a process first attempts to write to +a page of memory. Formerly, there was a requirement that static variables not be declared inside of functions. This had to do with another hack along @@ -1984,15 +1985,15 @@ @code{obarray} to a different value [although this is likely to make XEmacs crash!].) - @strong{Note:} It is potentially deadly if you declare a @samp{Q...} -variable in two different modules. The two calls to @code{defsymbol()} -are no problem, but some linkers will complain about multiply-defined -symbols. The most insidious aspect of this is that often the link will -succeed anyway, but then the resulting executable will sometimes crash -in obscure ways during certain operations! To avoid this problem, -declare any symbols with common names (such as @code{text}) that are not -obviously associated with this particular module in the module -@file{general.c}. + @strong{Please note:} It is potentially deadly if you declare a +@samp{Q...} variable in two different modules. The two calls to +@code{defsymbol()} are no problem, but some linkers will complain about +multiply-defined symbols. The most insidious aspect of this is that +often the link will succeed anyway, but then the resulting executable +will sometimes crash in obscure ways during certain operations! To +avoid this problem, declare any symbols with common names (such as +@code{text}) that are not obviously associated with this particular +module in the module @file{general.c}. Global variables whose names begin with @samp{V} are variables that contain Lisp objects. The convention here is that all global variables @@ -2048,7 +2049,7 @@ To get started debugging XEmacs, take a look at the @file{gdbinit} and @file{dbxrc} files in the @file{src} directory. -@xref{Q2.1.15: How to Debug an XEmacs problem with a debugger,,, +@xref{Q2.1.15 - How to Debug an XEmacs problem with a debugger,,, xemacs-faq, XEmacs FAQ}. @@ -4326,9 +4327,9 @@ consequently should be the most heavily nested sub-object, such as a long list.) -@strong{Note}: When the mark method is called, garbage collection -is in progress, and special precautions need to be taken -when accessing objects; see section (B) above. +@strong{Please note:} When the mark method is called, garbage collection +is in progress, and special precautions need to be taken when accessing +objects; see section (B) above. If your mark method does not need to do anything, it can be @code{NULL}.
--- a/man/lispref/Makefile Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/Makefile Mon Aug 13 10:39:40 2007 +0200 @@ -35,13 +35,13 @@ edebug.texi errors.texi eval.texi extents.texi faces.texi files.texi \ frames.texi functions.texi glyphs.texi hash-tables.texi help.texi \ hooks.texi index.texi internationalization.texi intro.texi \ - keymaps.texi lispref.texi lists.texi loading.texi locals.texi macros.texi \ - maps.texi markers.texi menus.texi minibuf.texi modes.texi mouse.texi \ - mule.texi numbers.texi objects.texi os.texi positions.texi processes.texi \ - range-tables.texi scrollbars.texi searching.texi sequences.texi \ - specifiers.texi streams.texi strings.texi symbols.texi syntax.texi \ - text.texi tips.texi toolbar.texi tooltalk.texi variables.texi windows.texi \ - x-windows.texi index.unperm index.perm + keymaps.texi ldap.texi lispref.texi lists.texi loading.texi locals.texi \ + macros.texi maps.texi markers.texi menus.texi minibuf.texi modes.texi \ + mouse.texi mule.texi numbers.texi objects.texi os.texi positions.texi \ + processes.texi range-tables.texi scrollbars.texi searching.texi \ + sequences.texi specifiers.texi streams.texi strings.texi symbols.texi \ + syntax.texi text.texi tips.texi toolbar.texi tooltalk.texi variables.texi \ + windows.texi x-windows.texi index.unperm index.perm all : info info : ../../info/$(NAME).info
--- a/man/lispref/back.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/back.texi Mon Aug 13 10:39:40 2007 +0200 @@ -1,6 +1,6 @@ \input /home/gd/gnu/doc/texinfo.tex @c -*-texinfo-*- @c %**start of header -@setfilename back-cover +@setfilename ../../info/back-cover @settitle XEmacs Lisp Reference Manual @c %**end of header .
--- a/man/lispref/compile.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/compile.texi Mon Aug 13 10:39:40 2007 +0200 @@ -483,7 +483,7 @@ This function constructs and returns a compiled-function object with @var{elements} as its elements. -@emph{NOTE:} Unlike all other Emacs-lisp functions, calling this with +@emph{Please note:} Unlike all other Emacs-lisp functions, calling this with five arguments is @emph{not} the same as calling it with six arguments, the last of which is @code{nil}. If the @var{interactive} arg is specified as @code{nil}, then that means that this function was defined
--- a/man/lispref/debugging.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/debugging.texi Mon Aug 13 10:39:40 2007 +0200 @@ -190,7 +190,7 @@ If the function is already set up to invoke the debugger on entry, @code{debug-on-entry} does nothing. - @strong{Note:} if you redefine a function after using + @strong{Please note:} if you redefine a function after using @code{debug-on-entry} on it, the code to enter the debugger is lost. @code{debug-on-entry} returns @var{function-name}.
--- a/man/lispref/dragndrop.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/dragndrop.texi Mon Aug 13 10:39:40 2007 +0200 @@ -45,6 +45,10 @@ @subsection OffiX DND @cindex OffiX DND +@emph{WARNING}: If you compile in OffiX, you may not be able to use +multiple X displays successfully. If the two servers are from +different vendors, the results may be unpredictable. + The OffiX Drag'n'Drop protocol is part of a X API/Widget library created by Cesar Crusius. It is based on X-Atoms and ClientMessage events, and works with any X platform supporting them.
--- a/man/lispref/edebug-inc.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/edebug-inc.texi Mon Aug 13 10:39:40 2007 +0200 @@ -1,6 +1,6 @@ @comment -*-texinfo-*- -@node Edebug +@node Edebug, , Compilation Errors, Top @section Edebug @cindex Edebug mode
--- a/man/lispref/eval.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/eval.texi Mon Aug 13 10:39:40 2007 +0200 @@ -109,7 +109,7 @@ after reading a form from text being edited or getting one from a property list. On these occasions, use the @code{eval} function. - @strong{Note:} it is generally cleaner and more flexible to call + @strong{Please note:} it is generally cleaner and more flexible to call functions that are stored in data structures, rather than to evaluate expressions stored in data structures. Using functions provides the ability to pass information to them as arguments.
--- a/man/lispref/extents.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/extents.texi Mon Aug 13 10:39:40 2007 +0200 @@ -45,7 +45,7 @@ are invisible to functions that merely examine the text of a buffer or string. - @emph{NOTE}: An alternative way to add properties to a buffer or + @emph{Please note:} An alternative way to add properties to a buffer or string is to use text properties. @xref{Text Properties}. An extent is logically a Lisp object consisting of a start position,
--- a/man/lispref/internationalization.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/internationalization.texi Mon Aug 13 10:39:40 2007 +0200 @@ -3,7 +3,7 @@ @c Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc. @c See the file lispref.texi for copying conditions. @setfilename ../../info/internationalization.info -@node Internationalization, MULE, ToolTalk Support, top +@node Internationalization, MULE, LDAP Support, top @chapter Internationalization @menu
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/man/lispref/ldap.texi Mon Aug 13 10:39:40 2007 +0200 @@ -0,0 +1,299 @@ +@c -*-texinfo-*- +@c This is part of the XEmacs Lisp Reference Manual. +@c Copyright (C) 1998 Free Software Foundation, Inc. +@c See the file lispref.texi for copying conditions. +@setfilename ../../info/ldap.info +@node LDAP Support, Internationalization, ToolTalk Support, top +@chapter LDAP Support +@cindex LDAP + +XEmacs can be linked with a LDAP client library to provide Elisp primitives +to access directory servers using the Lightweight Directory Access Protocol. + +@menu +* Building XEmacs with LDAP support:: How to add LDAP support to XEmacs +* XEmacs LDAP API:: Lisp access to LDAP functions +* Syntax of Search Filters:: A brief summary of RFC 1558 +@end menu + +@node Building XEmacs with LDAP support, XEmacs LDAP API, LDAP Support, LDAP Support +@comment node-name, next, previous, up +@section Building XEmacs with LDAP support + +LDAP support must be added to XEmacs at build time since it requires +linking to an external LDAP client library. As of 21.0, XEmacs has been +successfully built and tested with + +@itemize @bullet +@item University of Michigan's LDAP 3.3 (@url{http://www.umich.edu/~dirsvcs/ldap/}) +@item LDAP SDK 1.0 from Netscape Corp. (@url{http://developer.netscape.com/}) +@end itemize + +Other libraries conforming to RFC 1823 will probably work also but may +require some minor tweaking at C level. + +The standard XEmacs configure script autodetects an installed LDAP +library provided the library itself and the corresponding header files +can be found in the library and include paths. A successful detection +will be signalled in the final output of the configure script. + + + +@node XEmacs LDAP API, Syntax of Search Filters, Building XEmacs with LDAP support, LDAP Support +@comment node-name, next, previous, up +@section XEmacs LDAP API + +XEmacs LDAP API consists of two layers: a low-level layer which tries +to stay as close as possible to the C API (where practical) and a +higher-level layer which provides more convenient primitives to +effectively use LDAP. + +As of XEmacs 21.0, only interfaces to basic LDAP search functions are +provided, broader support is planned in future versions. + +@menu +* LDAP Variables:: Lisp variables related to LDAP +* The High-Level LDAP API:: High-level LDAP lisp functions +* The Low-Level LDAP API:: Low-level LDAP lisp primitives +@end menu + + +@node LDAP Variables, The High-Level LDAP API, XEmacs LDAP API, XEmacs LDAP API +@comment node-name, next, previous, up +@subsection LDAP Variables + +@defvar ldap-default-host +The default LDAP server +@end defvar + +@defvar ldap-default-port +Default TCP port for LDAP connections. +Initialized from the LDAP library. Default value is 389. +@end defvar + +@defvar ldap-default-base +Default base for LDAP searches. +This is a string using the syntax of RFC 1779. +For instance, "o�ME, c�" limits the search to the +Acme organization in the United States. +@end defvar + +@defvar ldap-host-parameters-alist +An alist of per host options for LDAP transactions. +The list elements look like @code{(HOST PROP1 VAL1 PROP2 VAL2 ...)} +@var{host} is the name of an LDAP server. @var{propn} and @var{valn} are +property/value pairs describing parameters for the server. Valid +properties: +@table @code +@item binddn +The distinguished name of the user to bind as. This may look like +@samp{c�, o�me, cn�nny Bugs}, see RFC 1779 for details. +@item passwd +The password to use for authentication. +@item auth +The authentication method to use, possible values depend on the LDAP +library XEmacs was compiled with, they may include @code{simple}, +@code{krbv41} and @code{krbv42}. +@item base +The base for the search. This may look like @samp{c�, o�me}, see +RFC 1779 for syntax details. +@item scope +One of the symbols @code{base}, @code{onelevel} or @code{subtree} +indicating the scope of the search limited to a base +object, to a single level or to the whole subtree. +@item deref +The dereference policy is one of the symbols @code{never}, +@code{always}, @code{search} or @code{find} and defines how aliases are +dereferenced. +@table @code +@item never +Aliases are never dereferenced +@item always +Aliases are always dereferenced +@item search +Aliases are dereferenced when searching +@item find +Aliases are dereferenced when locating the base object for the search +@end table +@item timelimit +The timeout limit for the connection in seconds. +@item sizelimit +The maximum number of matches to return for searches performed on this connection. +@end table +@end defvar + + + +@node The High-Level LDAP API, The Low-Level LDAP API, LDAP Variables, XEmacs LDAP API +@comment node-name, next, previous, up +@subsection The High-Level LDAP API + +As of this writing the high-level Lisp LDAP API only provides for LDAP +searches. Further support is planned in the future. + +The @code{ldap-search} function provides the most convenient interface +to perform LDAP searches. It opens a connection to a host, performs the +query and cleanly closes the connection thus insulating the user from +all the details of the low-level interface such as LDAP Lisp objects +@pxref{The Low-Level LDAP API} + +@defun ldap-search filter &optional host attributes attrsonly +Perform an LDAP search. +@var{filter} is the search filter @pxref{Syntax of Search Filters} +@var{host} is the LDAP host on which to perform the search +@var{attributes} is the specific attributes to retrieve, @code{nil} means +retrieve all +@var{attrsonly} if non-@code{nil} retrieves the attributes only without +their associated values. +Additional search parameters can be specified through +@code{ldap-host-parameters-alist}. +@end defun + +@node The Low-Level LDAP API, , The High-Level LDAP API, XEmacs LDAP API +@comment node-name, next, previous, up +@subsection The Low-Level LDAP API + +@menu +* The LDAP Lisp Object:: +* Opening and Closing a LDAP Connection:: +* Searching on a LDAP Server (Low-level):: +@end menu + +@node The LDAP Lisp Object, Opening and Closing a LDAP Connection, The Low-Level LDAP API, The Low-Level LDAP API +@comment node-name, next, previous, up +@subsubsection The LDAP Lisp Object + +An internal built-in @code{ldap} lisp object represents a LDAP +connection. + +@defun ldapp object +This function returns non-@code{nil} if @var{object} is a @code{ldap} object. +@end defun + +@defun ldap-host ldap +Return the server host of the connection represented by @var{ldap} +@end defun + +@defun ldap-live-p ldap +Return non-@code{nil} if @var{ldap} is an active LDAP connection +@end defun + + +@node Opening and Closing a LDAP Connection, Searching on a LDAP Server (Low-level), The LDAP Lisp Object, The Low-Level LDAP API +@comment node-name, next, previous, up +@subsubsection Opening and Closing a LDAP Connection + +@defun ldap-open host &optional plist +Open a LDAP connection to @var{host}. +@var{plist} is a property list containing additional parameters for the connection. +Valid keys in that list are: +@table @code +@item port +The TCP port to use for the connection if different from +@code{ldap-default-port} or the library builtin value +@item auth +The authentication method to use, possible values depend on the LDAP +library XEmacs was compiled with, they may include @code{simple}, +@code{krbv41} and @code{krbv42}. +@item binddn +The distinguished name of the user to bind as. This may look like +@samp{c�, o�me, cn�nny Bugs}, see RFC 1779 for details. +@item passwd +The password to use for authentication. +@item deref +The dereference policy is one of the symbols @code{never}, +@code{always}, @code{search} or @code{find} and defines how aliases are +dereferenced. +@table @code +@item never +Aliases are never dereferenced +@item always +Aliases are always dereferenced +@item search +Aliases are dereferenced when searching +@item find +Aliases are dereferenced when locating the base object for the search +@end table +The default is @code{never}. +@item timelimit +The timeout limit for the connection in seconds. +@item sizelimit +The maximum number of matches to return for searches performed on this connection. +@end table +@end defun + +@defun ldap-close ldap +Close the connection represented by @var{ldap} +@end defun + + +@node Searching on a LDAP Server (Low-level), , Opening and Closing a LDAP Connection, The Low-Level LDAP API +@comment node-name, next, previous, up +@subsubsection Searching on a LDAP Server (Low-level) + +@code{ldap-search-internal} is the low-level primitive to perform a +search on a LDAP server. It works directly on an open LDAP connection +thus requiring a preliminary call to @code{ldap-open}. Multiple +searches can be made on the same connection, then the session must be +closed with @code{ldap-close}. + + +@defun ldap-search-internal ldap filter base scope attrs attrsonly +Perform a search on an open connection @var{ldap} created with @code{ldap-open}. +@var{filter} is a filter string for the search @pxref{Syntax of Search Filters} +@var{base} is the distinguished name at which to start the search. +@var{scope} is one of the symbols @code{base}, @code{onelevel} or +@code{subtree} indicating the scope of the search limited to a base +object, to a single level or to the whole subtree. The default is +@code{subtree}. +@code{attrs} is a list of strings indicating which attributes to retrieve +for each matching entry. If @code{nil} all available attributes are returned. +If @code{attrsonly} is non-@code{nil} then only the attributes are retrieved, not +their associated values +The function returns a list of matching entries. Each entry being itself +an alist of attribute/values. +@end defun + + + + + +@node Syntax of Search Filters, , XEmacs LDAP API, LDAP Support +@comment node-name, next, previous, up +@section Syntax of Search Filters + +LDAP search functions use RFC1558 syntax to describe the search filter. +In that syntax simple filters have the form: + +@example +(<attr> <filtertype> <value>) +@end example + +@code{<attr>} is an attribute name such as @code{cn} for Common Name, +@code{o} for Organization, etc... + +@code{<value>} is the corresponding value. This is generally an exact +string but may also contain @code{*} characters as wildcards + +@code{filtertype} is one @code{=} @code{~=}, @code{<=}, @code{>=} which +respectively describe equality, approximate equality, inferiority and +superiority. + +Thus @code{(cn=John Smith)} matches all records having a canonical name +equal to John Smith. + +A special case is the presence filter @code{(<attr>=*} which matches +records containing a particular attribute. For instance @code{(mail=*)} +matches all records containing a @code{mail} attribute. + +Simple filters can be connected together with the logical operators +@code{&}, @code{|} and @code{!} which stand for the usual and, or and +not operators. + +@code{(&(objectClass=Person)(mail=*)(|(sn=Smith)(givenname=John)))} +matches records of class @code{Person} containing a @code{mail} +attribute and corresponding to people whose last name is @code{Smith} or +whose first name is @code{John}. + + +
--- a/man/lispref/lispref.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/lispref.texi Mon Aug 13 10:39:40 2007 +0200 @@ -196,6 +196,8 @@ variables, and other such things. * X-Windows:: Functions specific to the X Window System. * ToolTalk Support:: Interfacing with the ToolTalk message service. +* LDAP Support:: Interfacing with the Lightweight Directory + Access Protocol. * Internationalization:: How Emacs supports different languages and cultural conventions. * MULE:: Specifics of the Asian-language support. @@ -1076,6 +1078,24 @@ * Sending Messages:: * Receiving Messages:: +LDAP Support + +* Building XEmacs with LDAP support:: How to add LDAP support to XEmacs +* XEmacs LDAP API:: Lisp access to LDAP functions +* Syntax of Search Filters:: A brief summary of RFC 1558 + +XEmacs LDAP API + +* LDAP Variables:: Lisp variables related to LDAP +* The High-Level LDAP API:: High-level LDAP lisp functions +* The Low-Level LDAP API:: Low-level LDAP lisp primitives + +The Low-Level LDAP API + +* The LDAP Lisp Object:: +* Opening and Closing a LDAP Connection:: +* Searching on a LDAP Server (Low-level):: + Internationalization * I18N Levels 1 and 2:: Support for different time, date, and currency formats. @@ -1171,6 +1191,7 @@ @include os.texi @include x-windows.texi @include tooltalk.texi +@include ldap.texi @include internationalization.texi @include mule.texi
--- a/man/lispref/loading.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/loading.texi Mon Aug 13 10:39:40 2007 +0200 @@ -647,7 +647,7 @@ ; @r{FSF Emacs 19.34 and later.} @end example -@strong{NOTE}: The advanced arguments of this function (anything other than a +@strong{Please note:} The advanced arguments of this function (anything other than a symbol) are not yet supported by FSF Emacs. If you feel they are useful for supporting multiple Emacs variants, lobby Richard Stallman at @samp{<bug-gnu-emacs@@prep.ai.mit.edu>}.
--- a/man/lispref/searching.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/searching.texi Mon Aug 13 10:39:40 2007 +0200 @@ -455,7 +455,7 @@ the same exact text. @item \(?: @dots{} \) -@cindex @samp{(?:} in regex +@cindex @samp{\(?:} in regexp @cindex regexp grouping is called a @dfn{shy} grouping operator, and it is used just like @samp{\( @dots{} \)}, except that it does not cause the matched
--- a/man/lispref/tooltalk.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/tooltalk.texi Mon Aug 13 10:39:40 2007 +0200 @@ -3,7 +3,7 @@ @c Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc. @c See the file lispref.texi for copying conditions. @setfilename ../../info/tooltalk.info -@node ToolTalk Support, Internationalization, X-Windows, top +@node ToolTalk Support, LDAP Support, X-Windows, top @chapter ToolTalk Support @cindex ToolTalk
--- a/man/lispref/variables.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/lispref/variables.texi Mon Aug 13 10:39:40 2007 +0200 @@ -1087,7 +1087,7 @@ between different kinds of bindings; it knows only which variable the binding was made for. -@strong{Note:} do not use @code{make-local-variable} for a hook +@strong{Please note:} do not use @code{make-local-variable} for a hook variable. Instead, use @code{make-local-hook}. @xref{Hooks}. @end deffn
--- a/man/standards.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/standards.texi Mon Aug 13 10:39:40 2007 +0200 @@ -1337,9 +1337,9 @@ @samp{-q} in Make. @item quiet -Used in many programs to inhibit the usual output. @strong{Note:} every -program accepting @samp{--quiet} should accept @samp{--silent} as a -synonym. +Used in many programs to inhibit the usual output. @strong{Please +note:} every program accepting @samp{--quiet} should accept +@samp{--silent} as a synonym. @item quiet-unshar @samp{-Q} in @code{shar} @@ -1452,7 +1452,7 @@ @item silent Used in many programs to inhibit the usual output. -@strong{Note:} every program accepting +@strong{Please note:} every program accepting @samp{--silent} should accept @samp{--quiet} as a synonym. @item size
--- a/man/texinfo.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/texinfo.texi Mon Aug 13 10:39:40 2007 +0200 @@ -1,5 +1,5 @@ \input texinfo.tex @c -*-texinfo-*- -@c $Id: texinfo.texi,v 1.7 1998/06/20 00:58:34 steve Exp $ +@c $Id: texinfo.texi,v 1.8 1998/06/30 06:35:31 steve Exp $ @c %**start of header @c All text is ignored before the setfilename. @@ -9173,7 +9173,7 @@ @node pounds, minus, TeX and copyright, Insertions -@section @code{@@pounds}@{@} (@pounds{}): Pounds Sterling +@section @code{@@pounds@{@}} (@pounds{}): Pounds Sterling @findex pounds Use the @code{@@pounds@{@}} command to generate `@pounds{}'. In a @@ -9213,7 +9213,7 @@ @node math, Glyphs, minus, Insertions -@section @code{@@math}: Inserting Mathematical Expressions +@section @code{@@math} - Inserting Mathematical Expressions @findex math @cindex Mathematical expressions @@ -12310,7 +12310,7 @@ @example \input texinfo -@@setfilename @var{arg-not-used-by-@TeX{}} +@@setfilename @var{arg-not-used-by-@@TeX@{@}} @end example @noindent @@ -13383,7 +13383,7 @@ @code{INFOPATH} environment variable to initialize the value of Emacs's own @code{Info-directory-list} variable. -@cindex @samp{:} @r{last in @code{INFOPATH}} +@cindex colon @r{last in @code{INFOPATH}} However you set @code{INFOPATH}, if its last character is a colon, this is replaced by the default (compiled-in) path. This gives you a way to augment the default path with new directories without having to list all @@ -13922,7 +13922,7 @@ @item @@dots@{@} Insert an ellipsis: @samp{@dots{}}. -@xref{dots, , @code{@@dots}}.@refill +@xref{dots, , @code{@@dots@{@}}}.@refill @item @@email@{@var{address}[, @var{displayed-text}]@} Indicate an electronic mail address. @@ -14188,7 +14188,7 @@ @item @@math@{@var{mathematical-expression}@} Format a mathematical expression. -@xref{math, , @code{@@math}: Inserting Mathematical Expressions}. +@xref{math, , @code{@@math} - Inserting Mathematical Expressions}. @item @@menu Mark the beginning of a menu of nodes in Info. No effect in a printed @@ -17209,7 +17209,7 @@ see @ref{Footnotes},@* see @ref{dmn, , Format a Dimension},@* see @ref{Raise/lower sections, , @code{@@raisesections} and @code{@@lowersections}},@* -see @ref{math, , @code{@@math}: Inserting Mathematical Expressions}.@* +see @ref{math, , @code{@@math} - Inserting Mathematical Expressions}.@* see @ref{minus, , Inserting a Minus Sign},@* see @ref{paragraphindent, , Paragraph Indenting},@* see @ref{Cross Reference Commands},@*
--- a/man/xemacs-faq.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/xemacs-faq.texi Mon Aug 13 10:39:40 2007 +0200 @@ -7,7 +7,7 @@ @finalout @titlepage @title XEmacs FAQ -@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 1998/06/13 04:28:18 $ +@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 1998/06/30 06:35:33 $ @sp 1 @author Tony Rossini <arossini@@stat.sc.edu> @author Ben Wing <wing@@666.com> @@ -2796,7 +2796,7 @@ (frame-notice-user-settings) @end lisp -@strong{NOTE:} The single minibuffer frame may not be to everyone's +@strong{Please note:} The single minibuffer frame may not be to everyone's taste, and there any number of other XEmacs options settings that may make it difficult or inconvenient to use.
--- a/man/xemacs/calendar.texi Mon Aug 13 10:38:47 2007 +0200 +++ b/man/xemacs/calendar.texi Mon Aug 13 10:39:40 2007 +0200 @@ -3,24 +3,27 @@ @cindex calendar @findex calendar - Emacs provides the functions of a desk calendar, with a diary of past -or planned events. Display the calendar by typing @kbd{M-x calendar}. -This command creates a window containing a three-month calendar centered -on the current month, with point on the current date. Or, provide a -prefix argument by typing @kbd{C-u M-x calendar}; then you are prompted -for the month and year to be the center of the three-month calendar. In -either case, you are now in Calendar mode. + Emacs provides the functions of a desk calendar, with a diary of +planned or past events. To enter the calendar, type @kbd{M-x calendar}; +this displays a three-month calendar centered on the current month, with +point on the current date. With a numeric argument, as in @kbd{C-u M-x +calendar}, it prompts you for the month and year to be the center of the +three-month calendar. The calendar uses its own buffer, whose major +mode is Calendar mode. - Calendar mode makes it easy to look at the holidays or diary entries -associated with various dates, and to change the diary entries. You can move -freely between the Calendar window and other windows. To exit the calendar, -type @kbd{q}. - + @kbd{Button2} in the calendar brings up a menu of operations on a +particular date; @kbd{Buttons3} brings up a menu of commonly used +calendar features that are independent of any particular date. To exit +the calendar, type @kbd{q}. @xref{Calendar, Customizing the Calendar +and Diary,, elisp, The Emacs Lisp Reference Manual}, for customization +information about the calendar and diary. + @menu * Calendar Motion:: Moving through the calendar; selecting a date. * Scroll Calendar:: Bringing earlier or later months onto the screen. * Mark and Region:: Remembering dates, the mark ring. -* General Calendar:: Conveniences for moving about. +* General Calendar:: Exiting or recomputing the calendar. +* LaTeX Calendar:: Print a calendar using LaTeX. * Holidays:: Displaying dates of holidays. * Sunrise/Sunset:: Displaying local times of sunrise and sunset. * Lunar Phases:: Displaying phases of the moon. @@ -32,16 +35,20 @@ @node Calendar Motion, Scroll Calendar, Calendar/Diary, Calendar/Diary @subsection Movement in the Calendar - Calendar mode lets you move in logical units of time such as days, -weeks, months, and years. Sometimes you need to move to a specific date -in order to enter commands affecting its display or the associated diary -entries. If you move outside the three months originally displayed, the -calendar display scrolls automatically through time. +@cindex moving inside the calendar + Calendar mode lets you move through the calendar in logical units of +time such as days, weeks, months, and years. If you move outside the +three months originally displayed, the calendar display ``scrolls'' +automatically through time to make the selected date visible. Moving to +a date lets you view its holidays or diary entries, or convert it to other +calendars; moving longer time periods is also useful simply to scroll the +calendar. @menu * Calendar Unit Motion:: Moving by days, weeks, months, and years. * Move to Beginning or End:: Moving to start/end of weeks, months, and years. -* Specified Dates:: Moving to the current date or another specific date. +* Specified Dates:: Moving to the current date or another + specific date. @end menu @node Calendar Unit Motion, Move to Beginning or End, Calendar Motion, Calendar Motion @@ -67,16 +74,16 @@ @item C-x ] Move point one year forward (@code{calendar-forward-year}). @item C-x [ -Move point one year backward (@code{calendar-forward-year}). +Move point one year backward (@code{calendar-backward-year}). @end table -@kindex C-f (Calendar mode) +@kindex C-f @r{(Calendar mode)} @findex calendar-forward-day -@kindex C-b (Calendar mode) +@kindex C-b @r{(Calendar mode)} @findex calendar-backward-day -@kindex C-n (Calendar mode) +@kindex C-n @r{(Calendar mode)} @findex calendar-forward-week -@kindex C-p (Calendar mode) +@kindex C-p @r{(Calendar mode)} @findex calendar-backward-week The day and week commands are natural analogues of the usual Emacs commands for moving by characters and by lines. Just as @kbd{C-n} @@ -84,18 +91,21 @@ mode it moves to the same day in the following week. And @kbd{C-p} moves to the same day in the previous week. -@kindex M-@} (Calendar mode) + The arrow keys are equivalent to @kbd{C-f}, @kbd{C-b}, @kbd{C-n} and +@kbd{C-p}, just as they normally are in other modes. + +@kindex M-@} @r{(Calendar mode)} @findex calendar-forward-month -@kindex M-@{ (Calendar mode) +@kindex M-@{ @r{(Calendar mode)} @findex calendar-backward-month -@kindex C-x ] (Calendar mode) +@kindex C-x ] @r{(Calendar mode)} @findex calendar-forward-year -@kindex C-x [ (Calendar mode) +@kindex C-x [ @r{(Calendar mode)} @findex calendar-forward-year The commands for motion by months and years work like those for weeks, but move a larger distance. The month commands @kbd{M-@}} and @kbd{M-@{} move forward or backward by an entire month's time. The -year commands @kbd{C-x ]} and @kbd{C-x [} move forward or backward a +year commands @kbd{C-x ]} and @w{@kbd{C-x [}} move forward or backward a whole year. The easiest way to remember these commands is to consider months and @@ -105,41 +115,41 @@ and year commands move by an entire month or an entire year, which usually involves skipping across the end of a month or year. - Each of these commands accepts a numeric argument as a repeat count. For -convenience, the digit keys and the minus sign are bound in Calendar mode so -that it is unnecessary to type the @kbd{M-} prefix. For example, @kbd{100 -C-f} moves point 100 days forward from its present location. + All these commands accept a numeric argument as a repeat count. +For convenience, the digit keys and the minus sign specify numeric +arguments in Calendar mode even without the Meta modifier. For example, +@kbd{100 C-f} moves point 100 days forward from its present location. @node Move to Beginning or End, Specified Dates, Calendar Unit Motion, Calendar Motion @subsubsection Beginning or End of Week, Month or Year - A week (or month, or year) is not just a quantity of days; we think -of new weeks (months, years) as starting on particular days. So -Calendar mode provides commands to move to the beginning or end of the -week, month or year: - + A week (or month, or year) is not just a quantity of days; we think of +weeks (months, years) as starting on particular dates. So Calendar mode +provides commands to move to the beginning or end of a week, month or +year: + @table @kbd -@kindex C-a (Calendar mode) +@kindex C-a @r{(Calendar mode)} @findex calendar-beginning-of-week @item C-a -Move point to beginning of week (@code{calendar-beginning-of-week}). -@kindex C-e (Calendar mode) +Move point to start of week (@code{calendar-beginning-of-week}). +@kindex C-e @r{(Calendar mode)} @findex calendar-end-of-week @item C-e Move point to end of week (@code{calendar-end-of-week}). -@kindex M-a (Calendar mode) +@kindex M-a @r{(Calendar mode)} @findex calendar-beginning-of-month @item M-a -Move point to beginning of month (@code{calendar-beginning-of-month}). -@kindex M-e (Calendar mode) +Move point to start of month (@code{calendar-beginning-of-month}). +@kindex M-e @r{(Calendar mode)} @findex calendar-end-of-month @item M-e Move point to end of month (@code{calendar-end-of-month}). -@kindex M-< (Calendar mode) +@kindex M-< @r{(Calendar mode)} @findex calendar-beginning-of-year @item M-< -Move point to beginning of year (@code{calendar-beginning-of-year}). -@kindex M-> (Calendar mode) +Move point to start of year (@code{calendar-beginning-of-year}). +@kindex M-> @r{(Calendar mode)} @findex calendar-end-of-year @item M-> Move point to end of year (@code{calendar-end-of-year}). @@ -149,11 +159,17 @@ repeat count indicating how many weeks, months, or years to move backward or forward. +@vindex calendar-week-start-day +@cindex weeks, which day they start on +@cindex calendar, first day of week + By default, weeks begin on Sunday. To make them begin on Monday +instead, set the variable @code{calendar-week-start-day} to 1. + @node Specified Dates,,Move to Beginning or End, Calendar Motion @subsubsection Particular Dates - Calendar mode provides some commands for getting to a particular date -quickly. + Calendar mode provides commands for moving to a particular date +specified in various ways. @table @kbd @item g d @@ -161,29 +177,30 @@ @item o Center calendar around specified month (@code{calendar-other-month}). @item . -Move point to today's date (@code{calendar-current-month}). +Move point to today's date (@code{calendar-goto-today}). @end table -@kindex g d (Calendar mode) +@kindex g d @r{(Calendar mode)} @findex calendar-goto-date @kbd{g d} (@code{calendar-goto-date}) prompts for a year, a month, and a day -of the month, and then goes to that date. Because the calendar includes all +of the month, and then moves to that date. Because the calendar includes all dates from the beginning of the current era, you must type the year in its entirety; that is, type @samp{1990}, not @samp{90}. -@kindex o (Calendar mode) +@kindex o @r{(Calendar mode)} @findex calendar-other-month @kbd{o} (@code{calendar-other-month}) prompts for a month and year, then centers the three-month calendar around that month. -@kindex . (Calendar mode) -@findex calendar-current-month - You can return to the current date with @kbd{.} -(@code{calendar-current-month}). +@kindex . @r{(Calendar mode)} +@findex calendar-goto-today + You can return to today's date with @kbd{.} +(@code{calendar-goto-today}). @node Scroll Calendar, Mark and Region, Calendar Motion, Calendar/Diary @subsection Scrolling the Calendar through Time +@cindex scrolling in the calendar The calendar display scrolls automatically through time when you move out of the visible portion. You can also scroll it manually. Imagine that the calendar window contains a long strip of paper with the months on it. @@ -196,16 +213,18 @@ @item C-x > Scroll calendar one month backward (@code{scroll-calendar-right}). @item C-v +@itemx @key{NEXT} Scroll calendar three months forward (@code{scroll-calendar-left-three-months}). @item M-v +@itemx @key{PRIOR} Scroll calendar three months backward (@code{scroll-calendar-right-three-months}). @end table -@kindex C-x < (Calendar mode) +@kindex C-x < @r{(Calendar mode)} @findex scroll-calendar-left -@kindex C-x > (Calendar mode) +@kindex C-x > @r{(Calendar mode)} @findex scroll-calendar-right The most basic calendar scroll commands scroll by one month at a time. This means that there are two months of overlap between the @@ -214,20 +233,21 @@ display forward in time. @kbd{C-x >} scrolls the contents to the right, which moves backwards in time. -@kindex C-v (Calendar mode) +@kindex C-v @r{(Calendar mode)} @findex scroll-calendar-left-three-months -@kindex M-v (Calendar mode) +@kindex M-v @r{(Calendar mode)} @findex scroll-calendar-right-three-months The commands @kbd{C-v} and @kbd{M-v} scroll the calendar by an entire -``screenful''---three months---in analogy with the usual meaning of these -commands. @kbd{C-v} makes later dates visible and @kbd{M-v} makes earlier -dates visible. These commands also take a numeric argument as a repeat -count; in particular, since @kbd{C-u} (@code{universal-argument}) multiplies -the next command by four, typing @kbd{C-u C-v} scrolls the calendar forward by -a year and typing @kbd{C-u M-v} scrolls the calendar backward by a year. +``screenful''---three months---in analogy with the usual meaning of +these commands. @kbd{C-v} makes later dates visible and @kbd{M-v} makes +earlier dates visible. These commands take a numeric argument as a +repeat count; in particular, since @kbd{C-u} multiplies the next command +by four, typing @kbd{C-u C-v} scrolls the calendar forward by a year and +typing @kbd{C-u M-v} scrolls the calendar backward by a year. - Any of the special Calendar mode commands scrolls the calendar automatically -as necessary to ensure that the date you have moved to is visible. + The function keys @key{NEXT} and @key{PRIOR} are equivalent to +@kbd{C-v} and @kbd{M-v}, just as they are in other modes. + @node Mark and Region, General Calendar, Scroll Calendar, Calendar/Diary @subsection The Mark and the Region @@ -249,10 +269,10 @@ (@code{calendar-count-days-region}). @end table -@kindex C-@@ (Calendar mode) -@kindex C-SPC (Calendar mode) +@kindex C-@@ @r{(Calendar mode)} +@kindex C-SPC @r{(Calendar mode)} @findex calendar-set-mark -@kindex C-x C-x (Calendar mode) +@kindex C-x C-x @r{(Calendar mode)} @findex calendar-exchange-point-and-mark You set the mark in the calendar, as in any other buffer, by using @kbd{C-@@} or @kbd{C-SPC} (@code{calendar-set-mark}). You return to the marked date @@ -261,11 +281,12 @@ is scrolled as necessary, if the marked date was not visible on the screen. This does not change the extent of the region. -@kindex M-= (Calendar mode) +@kindex M-= @r{(Calendar mode)} @findex calendar-count-days-region To determine the number of days in the region, type @kbd{M-=} (@code{calendar-count-days-region}). The numbers of days printed is -@emph{inclusive}, that is, includes the days specified by mark and point. +@emph{inclusive}; that is, it includes the days specified by mark and +point. @cindex mark ring The main use of the mark in the calendar is to remember dates that you may @@ -278,7 +299,7 @@ the mark ring. So, repeated use of this command moves point through all the old marks on the ring, one by one. -@node General Calendar, Holidays, Mark and Region, Calendar/Diary +@node General Calendar, LaTeX Calendar, Mark and Region, Calendar/Diary @subsection Miscellaneous Calendar Commands @table @kbd @@ -286,15 +307,15 @@ Display day-in-year (@code{calendar-print-day-of-year}). @item ? Briefly describe calendar commands (@code{describe-calendar-mode}). +@item C-c C-l +Regenerate the calendar window (@code{redraw-calendar}). @item SPC Scroll the next window (@code{scroll-other-window}). -@item C-c C-l -Regenerate the calendar window (@code{redraw-calendar}). @item q Exit from calendar (@code{exit-calendar}). @end table -@kindex p d (Calendar mode) +@kindex p d @r{(Calendar mode)} @cindex day of year @findex calendar-print-day-of-year If you want to know how many days have elapsed since the start of @@ -302,38 +323,107 @@ command (@code{calendar-print-day-of-year}). This displays both of those numbers in the echo area. -@kindex ? (Calendar mode) +@kindex ? @r{(Calendar mode)} @findex describe-calendar-mode To display a brief description of the calendar commands, type @kbd{?} (@code{describe-calendar-mode}). For a fuller description, type @kbd{C-h m}. -@kindex SPC (Calendar mode) +@kindex SPC @r{(Calendar mode)} @findex scroll-other-window You can use @kbd{SPC} (@code{scroll-other-window}) to scroll the other window. This is handy when you display a list of holidays or diary entries in another window. -@kindex C-c C-l (Calendar mode) +@kindex C-c C-l @r{(Calendar mode)} @findex redraw-calendar - If the calendar window gets corrupted, type @kbd{C-c C-l} -(@code{redraw-calendar}) to redraw it. + If the calendar window text gets corrupted, type @kbd{C-c C-l} +(@code{redraw-calendar}) to redraw it. (This can only happen if you use +non-Calendar-mode editing commands.) -@kindex q (Calendar mode) +@kindex SPC @r{(Calendar mode)} + In Calendar mode, you can use @kbd{SPC} (@code{scroll-other-window}) +to scroll the other window. This is handy when you display a list of +holidays or diary entries in another window. + +@kindex q @r{(Calendar mode)} @findex exit-calendar To exit from the calendar, type @kbd{q} (@code{exit-calendar}). This -buries all buffers related to the calendar and returns the window display -to what it was when you entered the calendar. +buries all buffers related to the calendar, selecting other buffers. +(If a frame contains a dedicated calendar window, exiting from the +calendar iconifies that frame.) + +@node LaTeX Calendar, Holidays, General Calendar, Calendar/Diary +@section LaTeX Calendar +@cindex calendar and La@TeX{} + + The Calendar La@TeX{} commands produce a buffer of La@TeX{} code that +prints as a calendar. Depending on the command you use, the printed +calendar covers the day, week, month or year that point is in. -@node Holidays, Sunrise/Sunset, General Calendar, Calendar/Diary +@kindex t @r{(Calendar mode)} +@table @kbd +@item t m +Generate a one-month calendar (@code{cal-tex-cursor-month}). +@item t M +Generate a sideways-printing one-month calendar +(@code{cal-tex-cursor-month-landscape}). +@item t d +Generate a one-day calendar +(@code{cal-tex-cursor-day}). +@item t w 1 +Generate a one-page calendar for one week +(@code{cal-tex-cursor-week}). +@item t w 2 +Generate a two-page calendar for one week +(@code{cal-tex-cursor-week2}). +@item t w 3 +Generate an ISO-style calendar for one week +(@code{cal-tex-cursor-week-iso}). +@item t w 4 +Generate a calendar for one Monday-starting week +(@code{cal-tex-cursor-week-monday}). +@item t f w +Generate a Filofax-style two-weeks-at-a-glance calendar +(@code{cal-tex-cursor-filofax-2week}). +@item t f W +Generate a Filofax-style one-week-at-a-glance calendar +(@code{cal-tex-cursor-filofax-week}). +@item t y +Generate a calendar for one year +(@code{cal-tex-cursor-year}). +@item t Y +Generate a sideways-printing calendar for one year +(@code{cal-tex-cursor-landscape-year}). +@item t f y +Generate a Filofax-style calendar for one year +(@code{cal-tex-cursor-filofax-year}). +@end table + + Some of these commands print the calendar sideways (in ``landscape +mode''), so it can be wider than it is long. Some of them use Filofax +paper size (3.75in x 6.75in). All of these commands accept a prefix +argument which specifies how many days, weeks, months or years to print +(starting always with the selected one). + + If the variable @code{cal-tex-holidays} is non-@code{nil} (the +default), then the printed calendars show the holidays in +@code{calendar-holidays}. If the variable @code{cal-tex-diary} is +non-@code{nil} (the default is @code{nil}), diary entries are included +also (in weekly and monthly calendars only). + +@node Holidays, Sunrise/Sunset, LaTeX Calendar, Calendar/Diary @subsection Holidays @cindex holidays - The Emacs calendar knows about all major and many minor holidays. + The Emacs calendar knows about all major and many minor holidays, +and can display them. @table @kbd @item h -Display holidays for the date indicated by point +Display holidays for the selected date (@code{calendar-cursor-holidays}). +@item Button2 Holidays +Display any holidays for the date you click on. @item x Mark holidays in the calendar window (@code{mark-calendar-holidays}). @item u @@ -344,79 +434,104 @@ @item M-x holidays List all holidays for three months around today's date in another window. +@item M-x list-holidays +List holidays in another window for a specified range of years. @end table -@kindex h (Calendar mode) +@kindex h @r{(Calendar mode)} @findex calendar-cursor-holidays To see if any holidays fall on a given date, position point on that -date in the calendar window and use the @kbd{h} command. The holidays -are usually listed in the echo area, but if there are too many to fit in -one line, then they are displayed in a separate window. +date in the calendar window and use the @kbd{h} command. Alternatively, +click on that date with @kbd{Button2} and then choose @kbd{Holidays} +from the menu that appears. Either way, this displays the holidays for +that date, in the echo area if they fit there, otherwise in a separate +window. -@kindex x (Calendar mode) +@kindex x @r{(Calendar mode)} @findex mark-calendar-holidays -@kindex u (Calendar mode) +@kindex u @r{(Calendar mode)} @findex calendar-unmark - To find the distribution of holidays for a wider period, you can use the -@kbd{x} command. This places a @samp{*} next to every date on which a holiday -falls. The command applies both to the currently visible dates and to new -dates that become visible by scrolling. To turn marking off and erase the -current marks, type @kbd{u}, which also erases any diary marks (@pxref{Diary}). + To view the distribution of holidays for all the dates shown in the +calendar, use the @kbd{x} command. This displays the dates that are +holidays in a different face (or places a @samp{*} after these dates, if +display with multiple faces is not available). The command applies both +to the currently visible months and to other months that subsequently +become visible by scrolling. To turn marking off and erase the current +marks, type @kbd{u}, which also erases any diary marks (@pxref{Diary}). -@kindex a (Calendar mode) +@kindex a @r{(Calendar mode)} @findex list-calendar-holidays To get even more detailed information, use the @kbd{a} command, which displays a separate buffer containing a list of all holidays in the -current three-month range. +current three-month range. You can use @key{SPC} in the calendar window +to scroll that list. @findex holidays - You can display the list of holidays for the current month and the -preceding and succeeding months even if you don't have a calendar -window. Use the command @kbd{M-x holidays}. If you want the list of -holidays centered around a different month, use @kbd{C-u M-x holidays} -and type the month and year. + The command @kbd{M-x holidays} displays the list of holidays for the +current month and the preceding and succeeding months; this works even +if you don't have a calendar window. If you want the list of holidays +centered around a different month, use @kbd{C-u M-x holidays}, which +prompts for the month and year. + + The holidays known to Emacs include United States holidays and the +major Christian, Jewish, and Islamic holidays; also the solstices and +equinoxes. - The holidays known to Emacs include American holidays and the major -Christian, Jewish, and Islamic holidays; when floating point is available, -Emacs also knows about solstices and equinoxes. The dates used by Emacs -for holidays are based on @emph{current practice}, not historical fact. -Historically, for instance, the start of daylight savings time and even -its existence have varied from year to year. However present American -law mandates that daylight savings time begins on the first Sunday in -April; this is the definition that Emacs uses, even though it is wrong -for some prior years. +@findex list-holidays + The command @kbd{M-x list-holidays} displays the list of holidays for +a range of years. This function asks you for the starting and stopping +years, and allows you to chose all the holidays or one of several +categories of holidays. You can use this command even if you don't have +a calendar window. + + The dates used by Emacs for holidays are based on @emph{current +practice}, not historical fact. Historically, for instance, the start +of daylight savings time and even its existence have varied from year to +year, but present United States law mandates that daylight savings time +begins on the first Sunday in April. When the daylight savings rules +are set up for the United States, Emacs always uses the present +definition, even though it is wrong for some prior years. @node Sunrise/Sunset, Lunar Phases, Holidays, Calendar/Diary @subsection Times of Sunrise and Sunset -@cindex sunrise -@cindex sunset +@cindex sunrise and sunset - Emacs can tell you, to within a minute or two, the times of sunrise and -sunset for any date, if floating point is available. + Special calendar commands can tell you, to within a minute or two, the +times of sunrise and sunset for any date. @table @kbd @item S -Display times of sunrise and sunset for the date indicated by point +Display times of sunrise and sunset for the selected date (@code{calendar-sunrise-sunset}). +@item Button2 Sunrise/Sunset +Display times of sunrise and sunset for the date you click on. @item M-x sunrise-sunset Display times of sunrise and sunset for today's date. +@item C-u M-x sunrise-sunset +Display times of sunrise and sunset for a specified date. @end table -@kindex S (Calendar mode) +@kindex S @r{(Calendar mode)} @findex calendar-sunrise-sunset @findex sunrise-sunset - Move point to the date you want, and type @kbd{S}, to display the -@emph{local times} of sunrise and sunset in the echo area. + Within the calendar, to display the @emph{local times} of sunrise and +sunset in the echo area, move point to the date you want, and type +@kbd{S}. Alternatively, click @kbd{Button2} on the date, then choose +@kbd{Sunrise/Sunset} from the menu that appears. The command @kbd{M-x +sunrise-sunset} is available outside the calendar to display this +information for today's date or a specified date. To specify a date +other than today, use @kbd{C-u M-x sunrise-sunset}, which prompts for +the year, month, and day. - You can display the times of sunrise and sunset for the current date -even if you don't have a calendar window. Use the command @kbd{M-x -sunrise-sunset}. If you want the times of sunrise and sunset for a -different date, use @kbd{C-u M-x sunrise-sunset} and type the year, -month, and day. + You can display the times of sunrise and sunset for any location and +any date with @kbd{C-u C-u M-x sunrise-sunset}. This asks you for a +longitude, latitude, number of minutes difference from Coordinated +Universal Time, and date, and then tells you the times of sunrise and +sunset for that location on that date. Because the times of sunrise and sunset depend on the location on earth, you need to tell Emacs your latitude, longitude, and location -name. Here is an example of what to set: +name before using these commands. Here is an example of what to set: @vindex calendar-location-name @vindex calendar-longitude @@ -432,9 +547,9 @@ @code{calendar-longitude}. Your time zone also affects the local time of sunrise and sunset. -Emacs usually gets this information from the operating system, but if -these values are not what you want (or if the operating system does not -supply them), you'll need to set them yourself, like this: +Emacs usually gets time zone information from the operating system, but +if these values are not what you want (or if the operating system does +not supply them), you must set them yourself. Here is an example: @vindex calendar-time-zone @vindex calendar-standard-time-zone-name @@ -447,64 +562,59 @@ @noindent The value of @code{calendar-time-zone} is the number of minutes -difference between your local standard time and Universal Time -(Greenwich time). The values of @code{calendar-standard-time-zone-name} -and @code{calendar-daylight-time-zone-name} are the abbreviations used -in your time zone. +difference between your local standard time and Coordinated Universal +Time (Greenwich time). The values of +@code{calendar-standard-time-zone-name} and +@code{calendar-daylight-time-zone-name} are the abbreviations used in +your time zone. Emacs displays the times of sunrise and sunset +@emph{corrected for daylight savings time}. @xref{Daylight Savings}, +for how daylight savings time is determined. - Emacs displays the times of sunrise and sunset @emph{corrected for -daylight savings time} (this convenience is unusual; most tables of -sunrise and sunset use standard time). The default rule for the -starting and stopping dates of daylight savings time is the American -rule. @xref{Daylight Savings} - - You can display the times of sunrise and sunset for any location and -any date with @kbd{C-u C-u M-x sunrise-sunset}. Emacs asks you for a -longitude, latitude, number of minutes difference from Universal time, -and date, and then tells you the times of sunrise and sunset for that -location on that date. The times are usually given in the echo area, -but if the message is too long fit in one line, they are displayed in a -separate window. + As a user, you might find it convenient to set the calendar location +variables for your usual physical location in your @file{.emacs} file. +And when you install Emacs on a machine, you can create a +@file{default.el} file which sets them properly for the typical location +of most users of that machine. @xref{Init File}. @node Lunar Phases, Other Calendars, Sunrise/Sunset, Calendar/Diary @subsection Phases of the Moon @cindex phases of the moon @cindex moon, phases of - Emacs can tell you the dates and times of the phases of the moon (new -moon, first quarter, full moon, last quarter), if floating point is available. + These calendar commands display the dates and times of the phases of +the moon (new moon, first quarter, full moon, last quarter). This +feature is useful for debugging problems that ``depend on the phase of +the moon.'' @table @kbd @item M -List, in another window, the dates and times for all the quarters of the -moon for the three-month period shown in the calendar window -(@code{calendar-phases-of-moon}). +Display the dates and times for all the quarters of the moon for the +three-month period shown (@code{calendar-phases-of-moon}). @item M-x phases-of-moon -List dates and times of the quarters of the moon for three months around -today's date in another window. +Display dates and times of the quarters of the moon for three months around +today's date. @end table -@kindex M (Calendar mode) +@kindex M @r{(Calendar mode)} @findex calendar-phases-of-moon - Use the @kbd{M} command to display a separate buffer of the phases of -the moon for the current three-month range. The dates and times listed -are accurate to within a few minutes. + Within the calendar, use the @kbd{M} command to display a separate +buffer of the phases of the moon for the current three-month range. The +dates and times listed are accurate to within a few minutes. @findex phases-of-moon - You can display the list of the phases of the moon for the current -month and the preceding and succeeding months even if you don't have a -calendar window. Use the command @kbd{M-x phases-of-moon}. If you want -the phases of the moon centered around a different month, use @kbd{C-u -M-x phases-of-moon} and type the month and year. - -@vindex calendar-time-zone + Outside the calendar, use the command @kbd{M-x phases-of-moon} to +display the list of the phases of the moon for the current month and the +preceding and succeeding months. For information about a different +month, use @kbd{C-u M-x phases-of-moon}, which prompts for the month and +year. + The dates and times given for the phases of the moon are given in local time (corrected for daylight savings, when appropriate); but if -the variable @code{calendar-time-zone} is void, Universal Time (the -Greenwich time zone) is used. @xref{Daylight Savings} +the variable @code{calendar-time-zone} is void, Coordinated Universal +Time (the Greenwich time zone) is used. @xref{Daylight Savings}. -@node Other Calendars, Diary, Lunar Phases, Calendar/Diary -@subsection Our Calendar and Other Calendars +@node Other Calendars, Calendar Systems, Lunar Phases, Calendar/Diary +@subsection Conversion To and From Other Calendars @cindex Gregorian calendar The Emacs calendar displayed is @emph{always} the Gregorian calendar, @@ -512,80 +622,58 @@ the world today. However, this calendar did not exist before the sixteenth century and was not widely used before the eighteenth century; it did not fully displace the Julian calendar and gain universal -acceptance until the early twentieth century. This poses a problem for -the Emacs calendar: you can ask for the calendar of any month starting -with January, year 1 of the current era, but the calendar displayed is -the Gregorian, even for a date at which the Gregorian calendar did not -exist! +acceptance until the early twentieth century. The Emacs calendar can +display any month since January, year 1 of the current era, but the +calendar displayed is the Gregorian, even for a date at which the +Gregorian calendar did not exist. - Emacs knows about several different calendars, though, not just the -Gregorian calendar. The following commands describe the date indicated -by point in various calendar notations: + While Emacs cannot display other calendars, it can convert dates to +and from several other calendars. -@table @kbd -@item p c -Display ISO commercial calendar equivalent for selected day -(@code{calendar-print-iso-date}). -@item p j -Display Julian date for selected day (@code{calendar-print-julian-date}). -@item p a -Display astronomical (Julian) day number for selected day -(@code{calendar-print-astro-day-number}). -@item p h -Display Hebrew date for selected day (@code{calendar-print-hebrew-date}). -@item p i -Display Islamic date for selected day (@code{calendar-print-islamic-date}). -@item p f -Display French Revolutionary date for selected day -(@code{calendar-print-french-date}). -@item p m -Display Mayan date for selected day (@code{calendar-print-mayan-date}). -@end table +@menu +* Calendar Systems:: The calendars Emacs understands + (aside from Gregorian). +* To Other Calendar:: Converting the selected date to various calendars. +* From Other Calendar:: Moving to a date specified in another calendar. +* Mayan Calendar:: Moving to a date specified in a Mayan calendar. +@end menu If you are interested in these calendars, you can convert dates one at a time. Put point on the desired date of the Gregorian calendar and press the appropriate keys. The @kbd{p} is a mnemonic for ``print'' since Emacs ``prints' the equivalent date in the echo area. +@node Calendar Systems, To Other Calendar, Other Calendars, Other Calendars +@section Supported Calendar Systems -@kindex p c (Calendar mode) -@findex calendar-print-iso-date @cindex ISO commercial calendar The ISO commercial calendar is used largely in Europe. -@kindex p j (Calendar mode) -@findex calendar-print-julian-date @cindex Julian calendar The Julian calendar, named after Julius Caesar, was the one used in Europe throughout medieval times, and in many countries up until the nineteenth century. -@kindex p a (Calendar mode) -@findex calendar-print-astro-day-number @cindex Julian day numbers @cindex astronomical day numbers Astronomers use a simple counting of days elapsed since noon, Monday, January 1, 4713 B.C. on the Julian calendar. The number of days elapsed is called the @emph{Julian day number} or the @emph{Astronomical day number}. -@kindex p h (Calendar mode) -@findex calendar-print-hebrew-date @cindex Hebrew calendar - The Hebrew calendar is the one used to determine the dates of Jewish -holidays. Hebrew calendar dates begin and end at sunset. + The Hebrew calendar is used by tradition in the Jewish religion. The +Emacs calendar program uses the Hebrew calendar to determine the dates +of Jewish holidays. Hebrew calendar dates begin and end at sunset. -@kindex p i (Calendar mode) -@findex calendar-print-islamic-date @cindex Islamic calendar - The Islamic (Moslem) calendar is the one used to determine the dates -of Moslem holidays. There is no universal agreement in the Islamic -world about the calendar; Emacs uses a widely accepted version, but the -precise dates of Islamic holidays often depend on proclamation by -religious authorities, not on calculations. As a consequence, the -actual dates of occurrence can vary slightly from the dates computed by -Emacs. Islamic calendar dates begin and end at sunset. + The Islamic calendar is used in many predominantly Islamic countries. +Emacs uses it to determine the dates of Islamic holidays. There is no +universal agreement in the Islamic world about the calendar; Emacs uses +a widely accepted version, but the precise dates of Islamic holidays +often depend on proclamation by religious authorities, not on +calculations. As a consequence, the actual dates of observance can vary +slightly from the dates computed by Emacs. Islamic calendar dates begin +and end at sunset. -@kindex p f (Calendar mode) -@findex calendar-print-french-date @cindex French Revolutionary calendar The French Revolutionary calendar was created by the Jacobins after the 1789 revolution, to represent a more secular and nature-based view of the annual @@ -593,8 +681,6 @@ the metric system. The French government officially abandoned this calendar at the end of 1805. -@kindex p m (Calendar mode) -@findex calendar-print-mayan-date @cindex Mayan calendar The Maya of Central America used three separate, overlapping calendar systems, the @emph{long count}, the @emph{tzolkin}, and the @emph{haab}. @@ -602,40 +688,142 @@ exact correlation between the Mayan calendar and our calendar; Emacs uses the Goodman-Martinez-Thompson correlation in its calculations. - You can move to dates that you specify on the Commercial, Julian, -astronomical, Hebrew, Islamic, or French calendars: +@cindex Coptic calendar +@cindex Ethiopic calendar + The Copts use a calendar based on the ancient Egyptian solar calendar. +Their calendar consists of twelve 30-day months followed by an extra +five-day period. Once every fourth year they add a leap day to this +extra period to make it six days. The Ethiopic calendar is identical in +structure, but has different year numbers and month names. + +@cindex Persian calendar + The Persians use a solar calendar based on a design of Omar Khayyam. +Their calendar consists of twelve months of which the first six have 31 +days, the next five have 30 days, and the last has 29 in ordinary years +and 30 in leap years. Leap years occur in a complicated pattern every +four or five years. + +@cindex Chinese calendar + The Chinese calendar is a complicated system of lunar months arranged +into solar years. The years go in cycles of sixty, each year containing +either twelve months in an ordinary year or thirteen months in a leap +year; each month has either 29 or 30 days. Years, ordinary months, and +days are named by combining one of ten ``celestial stems'' with one of +twelve ``terrestrial branches'' for a total of sixty names that are +repeated in a cycle of sixty. + +@node To Other Calendar, From Other Calendar, Calendar Systems, Other Calendars +@section Converting To Other Calendars + + The following commands describe the selected date (the date at point) +in various other calendar systems: -@kindex g c (Calendar mode) +@table @kbd +@item Button2 Other Calendars +Display the date that you click on, expressed in various other calendars. +@kindex p @r{(Calendar mode)} +@findex calendar-print-iso-date +@item p c +Display ISO commercial calendar equivalent for selected day +(@code{calendar-print-iso-date}). +@findex calendar-print-julian-date +@item p j +Display Julian date for selected day (@code{calendar-print-julian-date}). +@findex calendar-print-astro-day-number +@item p a +Display astronomical (Julian) day number for selected day +(@code{calendar-print-astro-day-number}). +@findex calendar-print-hebrew-date +@item p h +Display Hebrew date for selected day (@code{calendar-print-hebrew-date}). +@findex calendar-print-islamic-date +@item p i +Display Islamic date for selected day (@code{calendar-print-islamic-date}). +@findex calendar-print-french-date +@item p f +Display French Revolutionary date for selected day +(@code{calendar-print-french-date}). +@findex calendar-print-chinese-date +@item p C +Display Chinese date for selected day +(@code{calendar-print-chinese-date}). +@findex calendar-print-coptic-date +@item p k +Display Coptic date for selected day +(@code{calendar-print-coptic-date}). +@findex calendar-print-ethiopic-date +@item p e +Display Ethiopic date for selected day +(@code{calendar-print-ethiopic-date}). +@findex calendar-print-persian-date +@item p p +Display Persian date for selected day +(@code{calendar-print-persian-date}). +@findex calendar-print-mayan-date +@item p m +Display Mayan date for selected day (@code{calendar-print-mayan-date}). +@end table + + If you are using X, the easiest way to translate a date into other +calendars is to click on it with @kbd{Button2}, then choose @kbd{Other +Calendars} from the menu that appears. This displays the equivalent +forms of the date in all the calendars Emacs understands, in the form of +a menu. (Choosing an alternative from this menu doesn't actually do +anything---the menu is used only for display.) + + Put point on the desired date of the Gregorian calendar, then type the +appropriate keys. The @kbd{p} is a mnemonic for ``print'' since Emacs +``prints'' the equivalent date in the echo area. + +@node From Other Calendar, Mayan Calendar, To Other Calendar, Other Calendars +@section Converting From Other Calendars + + You can use the other supported calendars to specify a date to move +to. This section describes the commands for doing this using calendars +other than Mayan; for the Mayan calendar, see the following section. + +@kindex g @var{char} @r{(Calendar mode)} @findex calendar-goto-iso-date -@kindex g j (Calendar mode) @findex calendar-goto-julian-date -@kindex g a (Calendar mode) @findex calendar-goto-astro-day-number -@kindex g h (Calendar mode) @findex calendar-goto-hebrew-date -@kindex g i (Calendar mode) @findex calendar-goto-islamic-date -@kindex g f (Calendar mode) @findex calendar-goto-french-date +@findex calendar-goto-chinese-date +@findex calendar-goto-persian-date +@findex calendar-goto-coptic-date +@findex calendar-goto-ethiopic-date @table @kbd @item g c -Move point to a date specified by the ISO commercial calendar +Move to a date specified in the ISO commercial calendar (@code{calendar-goto-iso-date}). @item g j -Move point to a date specified by the Julian calendar +Move to a date specified in the Julian calendar (@code{calendar-goto-julian-date}). @item g a -Move point to a date specified by astronomical (Julian) day number +Move to a date specified in astronomical (Julian) day number (@code{calendar-goto-astro-day-number}). @item g h -Move point to a date specified by the Hebrew calendar +Move to a date specified in the Hebrew calendar (@code{calendar-goto-hebrew-date}). @item g i -Move point to a date specified by the Islamic calendar +Move to a date specified in the Islamic calendar (@code{calendar-goto-islamic-date}). @item g f -Move point to a date specified by the French Revolutionary calendar +Move to a date specified in the French Revolutionary calendar (@code{calendar-goto-french-date}). +@item g C +Move to a date specified in the Chinese calendar +(@code{calendar-goto-chinese-date}). +@item g p +Move to a date specified in the Persian calendar +(@code{calendar-goto-persian-date}). +@item g k +Move to a date specified in the Coptic calendar +(@code{calendar-goto-coptic-date}). +@item g e +Move to a date specified in the Ethiopic calendar +(@code{calendar-goto-ethiopic-date}). @end table These commands ask you for a date on the other calendar, move point to @@ -655,50 +843,45 @@ this command first asks you for the date of death and the range of years, and then displays the list of yahrzeit dates. - Emacs also has many commands for movement on the Mayan calendars. +@node Mayan Calendar, Diary ,From Other Calendar ,Other Calendars +@subsection Converting from the Mayan Calendar + + Here are the commands to select dates based on the Mayan calendar: @table @kbd @item g m l -Move point to a date specified by the Mayan long count calendar +Move to a date specified by the long count calendar (@code{calendar-goto-mayan-long-count-date}). +@item g m n t +Move to the next occurrence of a place in the +tzolkin calendar (@code{calendar-next-tzolkin-date}). @item g m p t -Move point to the previous occurrence of a date specified by the Mayan +Move to the previous occurrence of a place in the tzolkin calendar (@code{calendar-previous-tzolkin-date}). -@item g m n t -Move point to the next occurrence of a date specified by the Mayan -tzolkin calendar (@code{calendar-next-tzolkin-date}). +@item g m n h +Move to the next occurrence of a place in the +haab calendar (@code{calendar-next-haab-date}). @item g m p h -Move point to the previous occurrence of a date specified by the Mayan +Move to the previous occurrence of a place in the haab calendar (@code{calendar-previous-haab-date}). -@item g m n h -Move point to the next occurrence of a date specified by the Mayan -haab calendar (@code{calendar-next-haab-date}). +@item g m n c +Move to the next occurrence of a place in the +calendar round (@code{calendar-next-calendar-round-date}). @item g m p c -Move point to the previous occurrence of a date specified by the Mayan +Move to the previous occurrence of a place in the calendar round (@code{calendar-previous-calendar-round-date}). -@item g m n c -Move point to the next occurrence of a date specified by the Mayan -calendar round (@code{calendar-next-calendar-round-date}). @end table @cindex Mayan long count To understand these commands, you need to understand the Mayan calendars. -The long count is a counting of days with units +The @dfn{long count} is a counting of days with these units: + +@display +1 kin = 1 day@ @ @ 1 uinal = 20 kin@ @ @ 1 tun = 18 uinal +1 katun = 20 tun@ @ @ 1 baktun = 20 katun +@end display -@table @asis -@item 1 kin -= 1 day -@item 1 uinal -= 20 kin -@item 1 tun -= 18 uinal -@item 1 katun -= 20 tun -@item 1 baktun -= 20 katun -@end table - -@kindex g m l (Calendar mode) +@kindex g m l @r{(Calendar mode)} @findex calendar-goto-mayan-long-count-date @noindent Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11 @@ -707,61 +890,58 @@ @kbd{g m l} command, type the Mayan long count date with the baktun, katun, tun, uinal, and kin separated by periods. -@kindex g m p t (Calendar mode) @findex calendar-previous-tzolkin-date -@kindex g m n t (Calendar mode) @findex calendar-next-tzolkin-date @cindex Mayan tzolkin calendar The Mayan tzolkin calendar is a cycle of 260 days formed by a pair of -independent cycles of 13 and 20 days. Like the haab cycle, this cycle -repeats endlessly, and you can go backward and forward to the previous -or next (respectively) point in the cycle. When you type @kbd{g m p t}, -Emacs asks you for a tzolkin date and moves point to the -previous occurrence of that date; type @kbd{g m n t} to go to the next -occurrence. +independent cycles of 13 and 20 days. Since this cycle repeats +endlessly, Emacs provides commands to move backward and forward to the +previous or next point in the cycle. Type @kbd{g m p t} to go to the +previous tzolkin date; Emacs asks you for a tzolkin date and moves point +to the previous occurrence of that date. Similarly, type @kbd{g m n t} +to go to the next occurrence of a tzolkin date. -@kindex g m p h (Calendar mode) @findex calendar-previous-haab-date -@kindex g m n h (Calendar mode) @findex calendar-next-haab-date @cindex Mayan haab calendar The Mayan haab calendar is a cycle of 365 days arranged as 18 months -of 20 days each, followed a 5-day monthless period. Since this cycle -repeats endlessly, Emacs lets you go backward and forward to the -previous or next (respectively) point in the cycle. Type @kbd{g m p h} -to go to the previous haab date; Emacs asks you for a haab date and -moves point to the previous occurrence of that date. Similarly, -type @kbd{g m n h} to go to the next haab date. +of 20 days each, followed a 5-day monthless period. Like the tzolkin +cycle, this cycle repeats endlessly, and there are commands to move +backward and forward to the previous or next point in the cycle. Type +@kbd{g m p h} to go to the previous haab date; Emacs asks you for a haab +date and moves point to the previous occurrence of that date. +Similarly, type @kbd{g m n h} to go to the next occurrence of a haab +date. -@kindex g m p c (Calendar mode) -@findex calendar-previous-calendar-round-date -@kindex g m n c (Calendar mode) +@c This is omitted because it is too long for smallbook format. +@c @findex calendar-previous-calendar-round-date @findex calendar-next-calendar-round-date @cindex Mayan calendar round The Maya also used the combination of the tzolkin date and the haab date. This combination is a cycle of about 52 years called a @emph{calendar round}. If you type @kbd{g m p c}, Emacs asks you for both a haab and a tzolkin date and then moves point to the previous -occurrence of that combination. Use @kbd{g m p c} to move point to the -next occurrence. Emacs signals an error if the haab/tzolkin date you -have typed cannot occur. +occurrence of that combination. Use @kbd{g m n c} to move point to the +next occurrence of a combination. These commands signal an error if the +haab/tzolkin date combination you have typed is impossible. - Emacs uses strict completion (@pxref{Completion}) whenever it asks you -to type a Mayan name, so you don't have to worry about spelling. + Emacs uses strict completion (@pxref{Completion}) whenever it +asks you to type a Mayan name, so you don't have to worry about +spelling. -@node Diary, Calendar Customization, Other Calendars, Calendar/Diary +@node Diary, Calendar Customization, Mayan Calendar, Calendar/Diary @subsection The Diary @cindex diary - Associated with the Emacs calendar is a diary that keeps track of -appointments or other events on a daily basis. To use the diary -feature, you must first create a @dfn{diary file} containing a list of -events and their dates. Then Emacs can automatically pick out and -display the events for today, for the immediate future, or for any -specified date.@refill + The Emacs diary keeps track of appointments or other events on a daily +basis, in conjunction with the calendar. To use the diary feature, you +must first create a @dfn{diary file} containing a list of events and +their dates. Then Emacs can automatically pick out and display the +events for today, for the immediate future, or for any specified +date. - By default, Emacs expects your diary file to be named @file{~/diary}. -It uses the same format as the @code{calendar} utility. A sample + By default, Emacs uses @file{~/diary} as the diary file. This is the +same file that the @code{calendar} utility uses. A sample @file{~/diary} file is: @example @@ -778,6 +958,10 @@ &* 15 time cards due. @end example +@noindent +This example uses extra spaces to align the event descriptions of most +of the entries. Such formatting is purely a matter of taste. + Although you probably will start by creating a diary manually, Emacs provides a number of commands to let you view, add, and change diary entries. You can also share diary entries with other users @@ -786,75 +970,75 @@ @menu * Diary Commands:: Viewing diary entries and associated calendar dates. * Format of Diary File:: Entering events in your diary. +* Date Formats:: Various ways you can specify dates. +* Adding to Diary:: Commands to create diary entries. * Special Diary Entries:: Anniversaries, blocks of dates, cyclic entries, etc. @end menu @node Diary Commands, Format of Diary File, Diary, Diary @subsection Commands Displaying Diary Entries - Once you have created a @file{~/diary} file, you can view it within -Calendar mode. You can also view today's events independently of -Calendar mode. + Once you have created a @file{~/diary} file, you can use the calendar +to view it. You can also view today's events outside of Calendar mode. @table @kbd @item d -Display any diary entries for the selected date +Display all diary entries for the selected date (@code{view-diary-entries}). +@item Button2 Diary +Display all diary entries for the date you click on. @item s -Display entire diary file (@code{show-all-diary-entries}). +Display the entire diary file (@code{show-all-diary-entries}). @item m Mark all visible dates that have diary entries (@code{mark-diary-entries}). @item u -Unmark calendar window (@code{calendar-unmark}). +Unmark the calendar window (@code{calendar-unmark}). @item M-x print-diary-entries -Print a hard copy of the diary display as it appears. +Print hard copy of the diary display as it appears. @item M-x diary -Display any diary entries for today's date. +Display all diary entries for today's date. @end table -@kindex d (Calendar mode) +@kindex d @r{(Calendar mode)} @findex view-diary-entries - Displaying the diary entries with @kbd{d} shows in a separate window the -diary entries for the date indicated by point in the calendar window. The -mode line of the new window shows the date of the diary entries and any -holidays that fall on that date. + Displaying the diary entries with @kbd{d} shows in a separate window +the diary entries for the selected date in the calendar. The mode line +of the new window shows the date of the diary entries and any holidays +that fall on that date. If you specify a numeric argument with @kbd{d}, +it shows all the diary entries for that many successive days. Thus, +@kbd{2 d} displays all the entries for the selected date and for the +following day. - If you specify a numeric argument with @kbd{d}, then all the diary -entries for that many successive days are shown. Thus, @kbd{2 d} -displays all the entries for the selected date and for the following -day. + Another way to display the diary entries for a date is to click +@kbd{Button2} on the date, and then choose @kbd{Diary} from the menu +that appears. -@kindex m (Calendar mode) +@kindex m @r{(Calendar mode)} @findex mark-diary-entries -@kindex u (Calendar mode) +@kindex u @r{(Calendar mode)} @findex calendar-unmark - To get a broader overview of which days are mentioned in the diary, use -the @kbd{m} command to mark those days in the calendar window. The marks -appear next to the dates to which they apply. The @kbd{m} command affects -the dates currently visible and, if you scroll the calendar, newly visible -dates as well. The @kbd{u} command deletes all diary marks (and all -holiday marks too; @pxref{Holidays}), not only in the dates currently -visible, but dates that become visible when you scroll the calendar. + To get a broader view of which days are mentioned in the diary, use +the @kbd{m} command. This displays the dates that have diary entries +in a different face (or places a @samp{+} after these dates, if +display with multiple faces is not available). The command applies both +to the currently visible months and to other months that subsequently +become visible by scrolling. To turn marking off and erase the current +marks, type @kbd{u}, which also turns off holiday marks +(@pxref{Holidays}). -@kindex s (Calendar mode) +@kindex s @r{(Calendar mode)} @findex show-all-diary-entries - For more detailed information, use the @kbd{s} command, which displays -the entire diary file. + To see the full diary file, rather than just some of the entries, use +the @kbd{s} command. - Display of selected diary entries uses the selective display feature, -the same feature that Outline mode uses to show part of an outline -(@pxref{Outline Mode}). This involves hiding the diary entries that are -not relevant, by changing the preceding newline into an ASCII control-m -(code 015). The hidden lines are part of the buffer's text, but they -are invisible; they don't appear on the screen. When you save the diary -file, the control-m characters are saved as newlines; thus, the -invisible lines become ordinary lines in the file. + Display of selected diary entries uses the selective display feature +to hide entries that don't apply. @findex print-diary-entries - Because the diary buffer as you see it is an illusion, simply printing -the contents does not print what you see on your screen. So there is a -special command to print a hard copy of the buffer @emph{as it appears}; + The diary buffer as you see it is an illusion, so simply printing the +buffer does not print what you see on your screen. There is a special +command to print hard copy of the diary buffer @emph{as it appears}; this command is @kbd{M-x print-diary-entries}. It sends the data directly to the printer. You can customize it like @code{lpr-region} (@pxref{Hardcopy}). @@ -865,92 +1049,31 @@ few days as well; the variable @code{number-of-diary-entries} specifies how many days to include (@pxref{Customization}). - If you put in your @file{.emacs} file: - -@example -(diary) -@end example + If you put @code{(diary)} in your @file{.emacs} file, this +automatically displays a window with the day's diary entries, when you +enter Emacs. The mode line of the displayed window shows the date and +any holidays that fall on that date. -@noindent -it automatically displays a window with the day's diary entries, when -you enter Emacs. The mode line of the displayed window shows the date -and any holidays that fall on that date. - -@node Format of Diary File, Special Diary Entries, Diary Commands, Diary +@node Format of Diary File, Date Formats, Diary Commands, Diary @subsection The Diary File @cindex diary file @vindex diary-file Your @dfn{diary file} is a file that records events associated with -particular dates. The name of the diary file is specified by the variable -@code{diary-file}; @file{~/diary} is the default. You can use the same file -for the @code{calendar} utility program, since its formats are a subset of the -ones allowed by the Emacs Calendar. - - Each entry in the file describes one event and consists of one or more -lines. It always begins with a date specification at the left margin. -The rest of the entry is simply text to describe the event. If the -entry has more than one line, then the lines after the first must begin -with whitespace to indicate they continue a previous entry. - - Here are some sample diary entries, illustrating different ways of -formatting a date. The examples all show dates in American order (month, day, -year), but Calendar mode offers (day, month, year) ordering too. - -@example -4/20/93 Switch-over to new tabulation system -apr. 25 Start tabulating annual results -4/30 Results for April are due -*/25 Monthly cycle finishes -Friday Don't leave without backing up files -@end example - - The first entry appears only once, on April 20, 1993. The second and -third appear every year on the specified dates, and the fourth uses a -wildcard (asterisk) for the month, so it appears on the 25th of every -month. The final entry appears every week on Friday. +particular dates. The name of the diary file is specified by the +variable @code{diary-file}; @file{~/diary} is the default. The +@code{calendar} utility program supports a subset of the format allowed +by the Emacs diary facilities, so you can use that utility to view the +diary file, with reasonable results aside from the entries it cannot +understand. - You can also use just numbers to express a date, as in -@samp{@var{month}/@var{day}} or -@samp{@var{month}/@var{day}/@var{year}}. This must be followed by a -nondigit. In the date itself, @var{month} and @var{day} are numbers of -one or two digits. @var{year} is a number and may be abbreviated to the -last two digits; that is, you can use @samp{11/12/1989} or -@samp{11/12/89}. - - A date may be @dfn{generic}, or partially unspecified. Then the entry -applies to all dates that match the specification. If the date does -not contain a year, it is generic and applies to any year. -Alternatively, @var{month}, @var{day}, or @var{year} can be a @samp{*}; -this matches any month, day, or year, respectively. Thus, a diary entry -@samp{3/*/*} matches any day in March of any year.@refill - - Dates can also have the form @samp{@var{monthname} @var{day}} or -@samp{@var{monthname} @var{day}, @var{year}}, where the month's name can -be spelled in full or abbreviated to three characters (with or without a -period). Case is not significant. If the date does not contain a year, -it is generic and applies to any year. Also, @var{monthname}, -@var{day}, or @var{year} can be a @samp{*} which matches any month, day, -or year, respectively.@refill - -@vindex european-calendar-style -@findex european-calendar - If you prefer the European style of writing dates---in which the day -comes before the month---type @kbd{M-x european-calendar} while in the -calendar, or set the variable @code{european-calendar-style} to @code{t} -in your @file{.emacs} file @emph{before} the calendar or diary command. -This mode interprets all dates in the diary in the European manner, and -also uses European style for displaying diary dates. (Note that there -is no comma after the @var{monthname} in the European style.)@refill - -@findex american-calendar - To revert to the (default) American style of writing dates, type @kbd{M-x -american-calendar}. - - You can use the name of a day of the week as a generic date which -applies to any date falling on that day of the week. You can abbreviate -the day of the week to three letters (with or without a period) or spell -it in full; it need not be capitalized. + Each entry in the diary file describes one event and consists of one +or more lines. An entry always begins with a date specification at the +left margin. The rest of the entry is simply text to describe the +event. If the entry has more than one line, then the lines after the +first must begin with whitespace to indicate they continue a previous +entry. Lines that do not begin with valid dates and do not continue a +preceding entry are ignored. You can inhibit the marking of certain diary entries in the calendar window; to do this, insert an ampersand (@samp{&}) at the beginning of @@ -959,13 +1082,10 @@ window. Nonmarking entries are especially useful for generic entries that would otherwise mark many different dates. - Lines that do not begin with valid dates and do not continue a preceding -entry are ignored. - If the first line of a diary entry consists only of the date or day name with no following blanks or punctuation, then the diary window display doesn't include that line; only the continuation lines appear. -For example: +For example, this entry: @example 02/11/1989 @@ -988,16 +1108,78 @@ diary file, with portions of it concealed from view. This means, for instance, that the @kbd{C-f} (@code{forward-char}) command can put point at what appears to be the end of the line, but what is in reality the -middle of some concealed line. @emph{Be careful when editing the diary -entries!} Inserting additional lines or adding/deleting characters in the -middle of a visible line cannot cause problems. Watch out for @kbd{C-e} -(@code{end-of-line}), however; it may put you at the end of a concealed -line far from where point appears to be! Before editing the diary, it -is best to display the entire file with @kbd{s} -(@code{show-all-diary-entries}).@refill +middle of some concealed line. + + @emph{Be careful when editing the diary entries!} Inserting +additional lines or adding/deleting characters in the middle of a +visible line cannot cause problems, but editing at the end of a line may +not do what you expect. Deleting a line may delete other invisible +entries that follow it. Before editing the diary, it is best to display +the entire file with @kbd{s} (@code{show-all-diary-entries}). + +@node Date Formats,Adding to Diary ,Format of Diary File, Diary +@subsection Date Formats + + Here are some sample diary entries, illustrating different ways of +formatting a date. The examples all show dates in American order +(month, day, year), but Calendar mode supports European order (day, +month, year) as an option. + +@example +4/20/93 Switch-over to new tabulation system +apr. 25 Start tabulating annual results +4/30 Results for April are due +*/25 Monthly cycle finishes +Friday Don't leave without backing up files +@end example + + The first entry appears only once, on April 20, 1993. The second and +third appear every year on the specified dates, and the fourth uses a +wildcard (asterisk) for the month, so it appears on the 25th of every +month. The final entry appears every week on Friday. - While in the calendar, there are several commands to help you in making -entries to your diary. + You can use just numbers to express a date, as in +@samp{@var{month}/@var{day}} or @samp{@var{month}/@var{day}/@var{year}}. +This must be followed by a nondigit. In the date itself, @var{month} +and @var{day} are numbers of one or two digits. The optional @var{year} +is also a number, and may be abbreviated to the last two digits; that +is, you can use @samp{11/12/1989} or @samp{11/12/89}. + + Dates can also have the form @samp{@var{monthname} @var{day}} or +@samp{@var{monthname} @var{day}, @var{year}}, where the month's name can +be spelled in full or abbreviated to three characters (with or without a +period). Case is not significant. + + A date may be @dfn{generic}; that is, partially unspecified. Then the +entry applies to all dates that match the specification. If the date +does not contain a year, it is generic and applies to any year. +Alternatively, @var{month}, @var{day}, or @var{year} can be a @samp{*}; +this matches any month, day, or year, respectively. Thus, a diary entry +@samp{3/*/*} matches any day in March of any year; so does @samp{march +*}. + +@vindex european-calendar-style +@findex european-calendar +@findex american-calendar + If you prefer the European style of writing dates---in which the day +comes before the month---type @kbd{M-x european-calendar} while in the +calendar, or set the variable @code{european-calendar-style} to @code{t} +@emph{before} using any calendar or diary command. This mode interprets +all dates in the diary in the European manner, and also uses European +style for displaying diary dates. (Note that there is no comma after +the @var{monthname} in the European style.) To go back to the (default) +American style of writing dates, type @kbd{M-x american-calendar}. + + You can use the name of a day of the week as a generic date which +applies to any date falling on that day of the week. You can abbreviate +the day of the week to three letters (with or without a period) or spell +it in full; case is not significant. + +@node Adding to Diary, Special Diary Entries, Date Formats, Diary +@subsection Commands to Add to the Diary + + While in the calendar, there are several commands to create diary +entries: @table @kbd @item i d @@ -1010,63 +1192,71 @@ Add a diary entry for the selected day of the year (@code{insert-yearly-diary-entry}). @end table -@kindex i d (Calendar mode) +@kindex i d @r{(Calendar mode)} @findex insert-diary-entry - You can make a diary entry for a specific date by moving point to that -date in the calendar window and using the @kbd{i d} command. This -command displays the end of your diary file in another window and -inserts the date; you can then type the rest of the diary entry. + You can make a diary entry for a specific date by selecting that date +in the calendar window and typing the @kbd{i d} command. This command +displays the end of your diary file in another window and inserts the +date; you can then type the rest of the diary entry. -@kindex i w (Calendar mode) +@kindex i w @r{(Calendar mode)} @findex insert-weekly-diary-entry +@kindex i m @r{(Calendar mode)} +@findex insert-monthly-diary-entry +@kindex i y @r{(Calendar mode)} +@findex insert-yearly-diary-entry If you want to make a diary entry that applies to a specific day of -the week, move point to that day of the week (any occurrence will do) -and use the @kbd{i w} command. This displays the end of your diary file -in another window and inserts the day-of-week as a generic date; you can -then type the rest of the diary entry. +the week, select that day of the week (any occurrence will do) and type +@kbd{i w}. This inserts the day-of-week as a generic date; you can then +type the rest of the diary entry. You can make a monthly diary entry in +the same fashion. Select the day of the month, use the @kbd{i m} +command, and type rest of the entry. Similarly, you can insert a yearly +diary entry with the @kbd{i y} command. -@kindex i m (Calendar mode) -@findex insert-monthly-diary-entry -@kindex i y (Calendar mode) -@findex insert-yearly-diary-entry - You make a monthly diary entry in the same fashion. Move point to the -day of the month, use the @kbd{i m} command, and type the diary entry. -Similarly, you make a yearly diary entry with the @kbd{i y} command. - + All of the above commands make marking diary entries by default. To +make a nonmarking diary entry, give a numeric argument to the command. +For example, @kbd{C-u i w} makes a nonmarking weekly diary entry. + All of the above commands make marking diary entries. If you want the diary entry to be nonmarking, give a prefix argument to the command. For example, @kbd{C-u i w} makes a nonmarking, weekly diary entry. - If you modify the diary, be sure to write the file before exiting from the -calendar. - -@node Special Diary Entries,, Format of Diary File, Diary + When you modify the diary file, be sure to save the file before +exiting Emacs. + +@node Special Diary Entries,, Adding to Diary, Diary @subsection Special Diary Entries - In addition to entries based on calendar dates, your diary file can contain -entries for regularly occurring events such as anniversaries. These entries -are based on expressions (sexps) that Emacs evaluates as it scans the diary -file. Such an entry is indicated by @samp{%%} at the beginning (preceded by -@samp{&} for a nonmarking entry), followed by a sexp in parentheses. Calendar -mode offers commands to make it easier to put some of these special entries in -your diary. + In addition to entries based on calendar dates, the diary file can +contain @dfn{sexp entries} for regular events such as anniversaries. +These entries are based on Lisp expressions (sexps) that Emacs evaluates +as it scans the diary file. Instead of a date, a sexp entry contains +@samp{%%} followed by a Lisp expression which must begin and end with +parentheses. The Lisp expression determines which dates the entry +applies to. + + Calendar mode provides commands to insert certain commonly used +sexp entries: @table @kbd @item i a -Add an anniversary diary entry for the selected date (@code{insert-anniversary-diary-entry}). +Add an anniversary diary entry for the selected date +(@code{insert-anniversary-diary-entry}). @item i b -Add a block diary entry for the current region (@code{insert-block-diary-entry}). +Add a block diary entry for the current region +(@code{insert-block-diary-entry}). @item i c -Add a cyclic diary entry starting at the date (@code{insert-cyclic-diary-entry}). +Add a cyclic diary entry starting at the date +(@code{insert-cyclic-diary-entry}). @end table -@kindex i a (Calendar mode) +@kindex i a @r{(Calendar mode)} @findex insert-anniversary-diary-entry If you want to make a diary entry that applies to the anniversary of a specific date, move point to that date and use the @kbd{i a} command. This displays the end of your diary file in another window and inserts the anniversary description; you can then type the rest of the diary -entry. +entry. The entry looks like this: @findex diary-anniversary The effect of @kbd{i a} is to add a @code{diary-anniversary} sexp to your @@ -1077,24 +1267,17 @@ @end example @noindent -This entry applies to October 31 in any year after 1948; @samp{10 31 1948} -specifies the date. (If you are using the European calendar style, the month -and day are interchanged.) The reason this sexp requires a beginning -year is that advanced diary functions can use it to calculate the number of -elapsed years (@pxref{Sexp Diary Entries}).@refill +This entry applies to October 31 in any year after 1948; @samp{10 31 +1948} specifies the date. (If you are using the European calendar +style, the month and day are interchanged.) The reason this expression +requires a beginning year is that advanced diary functions can use it to +calculate the number of elapsed years. -@kindex i b (Calendar mode) -@findex insert-block-diary-entry - You can make a diary entry for a block of dates by setting the mark -at the date at one end of the block, moving point to the date at the other -end of the block, and using the @kbd{i b} command. This command -causes the end of your diary file to be displayed in another window and the -block description to be inserted; you can then type the diary entry. + A @dfn{block} diary entry applies to a specified range of consecutive +dates. Here is a block diary entry that applies to all dates from June +24, 1990 through July 10, 1990: @findex diary-block - Here is such a diary entry that applies to all dates from June 24, 1990 -through July 10, 1990: - @example %%(diary-block 6 24 1990 7 10 1990) Vacation @end example @@ -1104,16 +1287,19 @@ indicates the stopping date. (Again, if you are using the European calendar style, the month and day are interchanged.) -@kindex i c (Calendar mode) +@kindex i b @r{(Calendar mode)} +@findex insert-block-diary-entry + To insert a block entry, place point and the mark on the two +dates that begin and end the range, and type @kbd{i b}. This command +displays the end of your diary file in another window and inserts the +block description; you can then type the diary entry. + +@kindex i c @r{(Calendar mode)} @findex insert-cyclic-diary-entry - You can specify cyclic diary entries that repeat after a fixed -interval of days. Move point to the starting date and use the @kbd{i c} -command. After you specify the length of interval, this command -displays the end of your diary file in another window and inserts the -cyclic event description; you can then type the rest of the diary -entry. - - The sexp corresponding to the @kbd{i c} command looks like: + @dfn{Cyclic} diary entries repeat after a fixed interval of days. To +create one, select the starting date and use the @kbd{i c} command. The +command prompts for the length of interval, then inserts the entry, +which looks like this: @findex diary-cyclic @example @@ -1121,28 +1307,25 @@ @end example @noindent -which applies to March 1, 1990 and every 50th day following; @samp{3 1 1990} -specifies the starting date. (If you are using the European calendar style, -the month and day are interchanged.) +This entry applies to March 1, 1990 and every 50th day following; +@samp{3 1 1990} specifies the starting date. (If you are using the +European calendar style, the month and day are interchanged.) - All three of the these commands make marking diary entries. If you want the -diary entry to be nonmarking, give a numeric argument to the command. For -example, @kbd{C-u i a} makes a nonmarking anniversary diary -entry. + All three of these commands make marking diary entries. To insert a +nonmarking entry, give a numeric argument to the command. For example, +@kbd{C-u i a} makes a nonmarking anniversary diary entry. Marking sexp diary entries in the calendar is @emph{extremely} time-consuming, since every date visible in the calendar window must be individually checked. So it's a good idea to make sexp diary entries -nonmarking with @samp{&}. +nonmarking (with @samp{&}) when possible. - One sophisticated kind of sexp, a floating diary entry, has no corresponding -command. The floating diary entry specifies a regularly-occurring event -by offsets specified in days, weeks, and months. It is comparable to a -crontab entry interpreted by the @code{cron} utility on Unix systems.@refill - - Here is a nonmarking, floating diary entry that applies to the last -Thursday in November: - + Another sophisticated kind of sexp entry, a @dfn{floating} diary entry, +specifies a regularly occurring event by offsets specified in days, +weeks, and months. It is comparable to a crontab entry interpreted by +the @code{cron} utility. Here is a nonmarking, floating diary entry +that applies to the last Thursday in November: + @findex diary-float @example &%%(diary-float 11 4 -1) American Thanksgiving @@ -1186,7 +1369,7 @@ entry does @emph{not} apply to that date. -@node Calendar Customization,, Diary, Calendar/Diary +@node Calendar Customization,,Diary, Calendar/Diary @subsection Customizing the Calendar and Diary There are many customizations that you can use to make the calendar and @@ -1222,68 +1405,84 @@ @end example @noindent -they display both the calendar and diary windows whenever you start Emacs. +this displays both the calendar and diary windows whenever you start Emacs. @vindex view-calendar-holidays-initially Similarly, if you set the variable @code{view-calendar-holidays-initially} to @code{t}, entering the -calendar automatically displays a list of holidays for the current three -month period. The holiday list appears in a separate window.@refill - +calendar automatically displays a list of holidays for the current +three-month period. The holiday list appears in a separate +window. + @vindex mark-diary-entries-in-calendar - You can set the variable @code{mark-diary-entries-in-calendar} to @code{t} -in order to place a plus sign (@samp{+}) beside any dates with diary entries. -Whenever the calendar window is displayed or redisplayed, the diary entries -are automatically marked for holidays. + You can set the variable @code{mark-diary-entries-in-calendar} to +@code{t} in order to mark any dates with diary entries. This takes +effect whenever the calendar window contents are recomputed. There are +two ways of marking these dates: by changing the face (@pxref{Faces}), +if the display supports that, or by placing a plus sign (@samp{+}) +beside the date otherwise. @vindex mark-holidays-in-calendar Similarly, setting the variable @code{mark-holidays-in-calendar} to -@code{t} places an asterisk (@samp{*}) after all holiday dates visible -in the calendar window. +@code{t} marks holiday dates, either with a change of face or with an +asterisk (@samp{*}). + +@vindex calendar-holiday-marker +@vindex diary-entry-marker + The variable @code{calendar-holiday-marker} specifies how to mark a +date as being a holiday. Its value may be a character to insert next to +the date, or a face name to use for displaying the date. Likewise, the +variable @code{diary-entry-marker} specifies how to mark a date that has +diary entries. The calendar creates faces named @code{holiday-face} and +@code{diary-face} for these purposes; those symbols are the default +values of these variables, when Emacs supports multiple faces on your +terminal. @vindex calendar-load-hook - There are many customizations that you can make with the hooks -provided. For example, the variable @code{calendar-load-hook}, whose -default value is @code{nil}, is a normal hook run when the calendar -package is first loaded (before actually starting to display the -calendar). + The variable @code{calendar-load-hook} is a normal hook run when the +calendar package is first loaded (before actually starting to display +the calendar). @vindex initial-calendar-window-hook - The variable @code{initial-calendar-window-hook}, whose default value -is @code{nil}, is a normal hook run the first time the calendar window -is displayed. The function is invoked only when you first enter -Calendar mode, not when you redisplay an existing Calendar window. But -if you leave the calendar with the @kbd{q} command and reenter it, the -hook runs again.@refill + Starting the calendar runs the normal hook +@code{initial-calendar-window-hook}. Recomputation of the calendar +display does not run this hook. But if you leave the calendar with the +@kbd{q} command and reenter it, the hook runs again.@refill @vindex today-visible-calendar-hook - The variable @code{today-visible-calendar-hook}, whose default value -is @code{nil}, is a normal hook run after the calendar buffer has been -prepared with the calendar when the current date is visible in the -window. One use of this hook is to replace today's date with asterisks; -a function @code{calendar-star-date} is included for this purpose. In -your @file{.emacs} file, put:@refill + The variable @code{today-visible-calendar-hook} is a normal hook run +after the calendar buffer has been prepared with the calendar when the +current date is visible in the window. One use of this hook is to +replace today's date with asterisks; to do that, use the hook function +@code{calendar-star-date}. @findex calendar-star-date @example -(setq today-visible-calendar-hook 'calendar-star-date) +(add-hook 'today-visible-calendar-hook 'calendar-star-date) @end example @noindent -Another standard hook function adds asterisks around the current date. -Here's how to use it: +Another standard hook function marks the current date, either by +changing its face or by adding an asterisk. Here's how to use it: @findex calendar-mark-today @example -(setq today-visible-calendar-hook 'calendar-mark-today) +(add-hook 'today-visible-calendar-hook 'calendar-mark-today) @end example +@noindent +@vindex calendar-today-marker +The variable @code{calendar-today-marker} specifies how to mark today's +date. Its value should be a character to insert next to the date or a +face name to use for displaying the date. A face named +@code{calendar-today-face} is provided for this purpose; that symbol is +the default for this variable when Emacs supports multiple faces on your +terminal. + @vindex today-invisible-calendar-hook @noindent - A corresponding variable, @code{today-invisible-calendar-hook}, whose -default value is @code{nil}, is a normal hook run after the calendar -buffer text has been prepared, if the current date is @emph{not} visible -in the window.@refill + A similar normal hook, @code{today-invisible-calendar-hook} is run if +the current date is @emph{not} visible in the window. @node Holiday Customizing @subsubsection Customizing the Holidays @@ -1293,13 +1492,13 @@ @vindex hebrew-holidays @vindex islamic-holidays Emacs knows about holidays defined by entries on one of several lists. -You can customize theses lists of holidays to your own needs, adding -holidays or deleting lists of holidays. The lists of holidays that -Emacs uses are for general holidays (@code{general-holidays}), local -holidays (@code{local-holidays}), Christian holidays -(@code{christian-holidays}), Hebrew (Jewish) holidays -(@code{hebrew-holidays}), Islamic (Moslem) holidays -(@code{islamic-holidays}), and other holidays (@code{other-holidays}). +You can customize these lists of holidays to your own needs, adding or +deleting holidays. The lists of holidays that Emacs uses are for +general holidays (@code{general-holidays}), local holidays +(@code{local-holidays}), Christian holidays (@code{christian-holidays}), +Hebrew (Jewish) holidays (@code{hebrew-holidays}), Islamic (Moslem) +holidays (@code{islamic-holidays}), and other holidays +(@code{other-holidays}). @vindex general-holidays The general holidays are, by default, holidays common throughout the @@ -1314,10 +1513,10 @@ @vindex all-christian-calendar-holidays @vindex all-hebrew-calendar-holidays @vindex all-islamic-calendar-holidays - By default, Emacs does not consider all the holidays of these -religions, only those commonly found in secular calendars. For a more -extensive collection of religious holidays, you can set any (or all) of -the variables @code{all-christian-calendar-holidays}, + By default, Emacs does not include all the holidays of the religions +that it knows, only those commonly found in secular calendars. For a +more extensive collection of religious holidays, you can set any (or +all) of the variables @code{all-christian-calendar-holidays}, @code{all-hebrew-calendar-holidays}, or @code{all-islamic-calendar-holidays} to @code{t}. If you want to eliminate the religious holidays, set any or all of the corresponding @@ -1326,15 +1525,19 @@ @vindex other-holidays You can set the variable @code{other-holidays} to any list of -holidays. This list, normally empty, is intended for your use. +holidays. This list, normally empty, is intended for individual use. @cindex holiday forms Each of the lists (@code{general-holidays}, @code{local-holidays}, @code{christian-holidays}, @code{hebrew-holidays}, @code{islamic-holidays}, and @code{other-holidays}) is a list of @dfn{holiday forms}, each holiday form describing a holiday (or -sometimes a list of holidays). Holiday forms may have the following -formats: +sometimes a list of holidays). + + Here is a table of the possible kinds of holiday form. Day numbers +and month numbers count starting from 1, but ``dayname'' numbers +count Sunday as 0. The element @var{string} is always the +name of the holiday, as a string. @table @code @item (holiday-fixed @var{month} @var{day} @var{string}) @@ -1359,18 +1562,19 @@ numbers, @var{string} is the name of the holiday. @item (holiday-sexp @var{sexp} @var{string}) -@var{sexp} is a Lisp expression that should use the variable @code{year} -to compute the date of a holiday, or @code{nil} if the holiday doesn't -happen this year. The value represents the date as a list of the form +A date calculated by the Lisp expression @var{sexp}. The expression +should use the variable @code{year} to compute and return the date of a +holiday, or @code{nil} if the holiday doesn't happen this year. The +value of @var{sexp} must represent the date as a list of the form @code{(@var{month} @var{day} @var{year})}. @var{string} is the name of the holiday. -@item (if @var{boolean} @var{holiday-form} &optional @var{holiday-form}) -A choice between two holidays based on the value of @var{boolean}. +@item (if @var{condition} @var{holiday-form} &optional @var{holiday-form}) +A holiday that happens only if @var{condition} is true. -@item (@var{function} &optional @var{args}) -Dates requiring special computation; @var{args}, if any, are passed in -a list to the function @code{calendar-holiday-function-@var{function}}. +@item (@var{function} @r{[}@var{args}@r{]}) +A list of dates calculated by the function @var{function}, called with +arguments @var{args}. @end table For example, suppose you want to add Bastille Day, celebrated in @@ -1417,10 +1621,10 @@ Muharram), and Thomas Jefferson's birthday, which is 2 April 1743 on the Julian calendar. - To include a holiday conditionally, use either the @samp{if} or the -@samp{sexp} form. For example, American presidential elections occur on -the first Tuesday after the first Monday in November of years divisible -by 4: + To include a holiday conditionally, use either Emacs Lisp's @code{if} or the +@code{holiday-sexp} form. For example, American presidential elections +occur on the first Tuesday after the first Monday in November of years +divisible by 4: @smallexample (holiday-sexp (if (= 0 (% year 4)) @@ -1447,13 +1651,11 @@ Some holidays just don't fit into any of these forms because special calculations are involved in their determination. In such cases you -must write a Lisp function to do the calculation. To include -eclipses of the sun, for example, add @code{(eclipses)} to -@code{other-holidays} and write an Emacs Lisp function -@code{eclipses} that returns a (possibly -empty) list of the relevant Gregorian dates among the -range visible in the calendar window, with descriptive strings, like -this: +must write a Lisp function to do the calculation. To include eclipses, +for example, add @code{(eclipses)} to @code{other-holidays} +and write an Emacs Lisp function @code{eclipses} that returns a +(possibly empty) list of the relevant Gregorian dates among the range +visible in the calendar window, with descriptive strings, like this: @smallexample (((6 27 1991) "Lunar Eclipse") ((7 11 1991) "Solar Eclipse") ... ) @@ -1463,13 +1665,13 @@ @subsubsection Date Display Format @vindex calendar-date-display-form - You can customize the manner of displaying dates in the diary, -in mode lines, and in messages by setting -@code{calendar-date-display-form}. This variable is a list of -expressions that can involve the variables @code{month}, @code{day}, and -@code{year}, all numbers in string form, and @code{monthname} and -@code{dayname}, both alphabetic strings. In the American style, the -default value of this list is as follows: + You can customize the manner of displaying dates in the diary, in mode +lines, and in messages by setting @code{calendar-date-display-form}. +This variable holds a list of expressions that can involve the variables +@code{month}, @code{day}, and @code{year}, which are all numbers in +string form, and @code{monthname} and @code{dayname}, which are both +alphabetic strings. In the American style, the default value of this +list is as follows: @smallexample ((if dayname (concat dayname ", ")) monthname " " day ", " year) @@ -1482,6 +1684,7 @@ ((if dayname (concat dayname ", ")) day " " monthname " " year) @end smallexample ++@noindent The ISO standard date representation is this: @smallexample @@ -1499,23 +1702,24 @@ @subsubsection Time Display Format @vindex calendar-time-display-form - In the calendar, diary, and related buffers, Emacs displays times of -day in the conventional American style with the hours from 1 through 12, -minutes, and either @samp{am} or @samp{pm}. If you prefer the -``military'' (European) style of writing times---in which the hours go -from 00 to 23---you can alter the variable -@code{calendar-time-display-form}. This variable is a list of -expressions that can involve the variables @code{12-hours}, -@code{24-hours}, and @code{minutes}, all numbers in string form, and -@code{am-pm} and @code{time-zone}, both alphabetic strings. The default -definition of @code{calendar-time-display-form} is as follows: + The calendar and diary by default display times of day in the +conventional American style with the hours from 1 through 12, minutes, +and either @samp{am} or @samp{pm}. If you prefer the European style, +also known in the US as military, in which the hours go from 00 to 23, +you can alter the variable @code{calendar-time-display-form}. This +variable is a list of expressions that can involve the variables +@code{12-hours}, @code{24-hours}, and @code{minutes}, which are all +numbers in string form, and @code{am-pm} and @code{time-zone}, which are +both alphabetic strings. The default value of +@code{calendar-time-display-form} is as follows: @smallexample (12-hours ":" minutes am-pm (if time-zone " (") time-zone (if time-zone ")")) @end smallexample - Setting @code{calendar-time-display-form} to +@noindent +Here is a value that provides European style times: @smallexample (24-hours ":" minutes @@ -1541,13 +1745,14 @@ where you are; on these systems, Emacs gets the information it needs from the system automatically. If some or all of this information is missing, Emacs fills in the gaps with the rules currently used in -Cambridge, Massachusetts. If the default choice of rules is not -appropriate for your location, you can tell Emacs the rules to use by -setting certain variables. +Cambridge, Massachusetts. If the resulting rules are not what you want, +you can tell Emacs the rules to use by setting certain variables. @vindex calendar-daylight-savings-starts @vindex calendar-daylight-savings-ends - These variables are @code{calendar-daylight-savings-starts} and + If the default choice of rules is not appropriate for your location, +you can tell Emacs the rules to use by setting the variables +@code{calendar-daylight-savings-starts} and @code{calendar-daylight-savings-ends}. Their values should be Lisp expressions that refer to the variable @code{year}, and evaluate to the Gregorian date on which daylight savings time starts or (respectively) @@ -1555,10 +1760,10 @@ The values should be @code{nil} if your area does not use daylight savings time. - Emacs uses these expressions to determine the starting date of -daylight savings time for the holiday list and for correcting times of -day in the solar and lunar calculations. - + Emacs uses these expressions to determine the start and end dates of +daylight savings time as holidays and for correcting times of day in the +solar and lunar calculations. + The values for Cambridge, Massachusetts are as follows: @example @@ -1569,7 +1774,7 @@ @end example @noindent -i.e. the first 0th day (Sunday) of the fourth month (April) in +i.e., the first 0th day (Sunday) of the fourth month (April) in the year specified by @code{year}, and the last Sunday of the tenth month (October) of that year. If daylight savings time were changed to start on October 1, you would set @@ -1580,8 +1785,8 @@ @end example For a more complex example, suppose daylight savings time begins on -the first of Nisan on the Hebrew calendar. You would set -@code{calendar-daylight-savings-starts} as follows: +the first of Nisan on the Hebrew calendar. You should set +@code{calendar-daylight-savings-starts} to this value: @example (calendar-gregorian-from-absolute @@ -1598,15 +1803,18 @@ and @code{calendar-daylight-savings-ends} to @code{nil}. @vindex calendar-daylight-time-offset - This variable specifies the difference between daylight savings time and -standard time, measured in minutes. The value for Cambridge is 60. + The variable @code{calendar-daylight-time-offset} specifies the +difference between daylight savings time and standard time, measured in +minutes. The value for Cambridge, Massachusetts is 60. -@vindex calendar-daylight-savings-starts-time +@c @vindex calendar-daylight-savings-starts-time too long! @vindex calendar-daylight-savings-ends-time - These variables specify is the number of minutes after midnight local time -when the transition to and from daylight savings time should occur. For -Cambridge, both variables' values are 120. - + The variable @code{calendar-daylight-savings-starts-time} and the +variable @code{calendar-daylight-savings-ends-time} specify the number +of minutes after midnight local time when the transition to and from +daylight savings time should occur. For Cambridge, both variables' +values are 120. + @node Diary Customizing @subsubsection Customizing the Diary @@ -1626,11 +1834,11 @@ well as the command @kbd{M-x diary}. For example, the default value is 1, which says to display only the current day's diary entries. If the value is 2, both the current day's and the next day's entries are -displayed. The value can also be a vector of seven elements: if the -value is @code{[0 2 2 2 2 4 1]} then no diary entries appear on Sunday, -the current date's and the next day's diary entries appear Monday -through Thursday, Friday through Monday's entries appear on Friday, -while on Saturday only that day's entries appear. +displayed. The value can also be a vector of seven elements: for +example, if the value is @code{[0 2 2 2 2 4 1]} then no diary entries +appear on Sunday, the current date's and the next day's diary entries +appear Monday through Thursday, Friday through Monday's entries appear +on Friday, while on Saturday only that day's entries appear. @vindex print-diary-entries-hook @findex print-diary-entries @@ -1647,18 +1855,29 @@ @vindex diary-date-forms You can customize the form of dates in your diary file, if neither the standard American nor European styles suits your needs, by setting the -variable @code{diary-date-forms}. This variable is a list of forms of -dates recognized in the diary file. Each form is a list of regular -expressions (@pxref{Regexps}) and the variables @code{month}, -@code{day}, @code{year}, @code{monthname}, and @code{dayname}. The -variable @code{monthname} matches the name of the month, capitalized or -not, or its three-letter abbreviation, followed by a period or not; it -matches @samp{*}. Similarly, @code{dayname} matches the name of the -day, capitalized or not, or its three-letter abbreviation, followed by a -period or not. The variables @code{month}, @code{day}, and @code{year} -match those numerical values, preceded by arbitrarily many zeros; they -also match @samp{*}. The default value of @code{diary-date-forms} in -the American style is +variable @code{diary-date-forms}. This variable is a list of patterns +for recognizing a date. Each date pattern is a list whose elements may +be regular expressions (@pxref{Regexps}) or the symbols +@code{month}, @code{day}, @code{year}, @code{monthname}, and +@code{dayname}. All these elements serve as patterns that match certain +kinds of text in the diary file. In order for the date pattern, as a +whole, to match, all of its elements must match consecutively. + + A regular expression in a date pattern matches in its usual fashion, +using the standard syntax table altered so that @samp{*} is a word +constituent. + + The symbols @code{month}, @code{day}, @code{year}, @code{monthname}, +and @code{dayname} match the month number, day number, year number, +month name, and day name of the date being considered. The symbols that +match numbers allow leading zeros; those that match names allow +three-letter abbreviations and capitalization. All the symbols can +match @samp{*}; since @samp{*} in a diary entry means ``any day'', ``any +month'', and so on, it should match regardless of the date being +considered. + + The default value of @code{diary-date-forms} in the American style is +this: @example ((month "/" day "[^/0-9]") @@ -1674,14 +1893,16 @@ (@pxref{Syntax Tables,,,lispref,XEmacs Lisp Reference Manual}), but with the @samp{*} changed so that it is a word constituent.@refill - The forms on the list must be @emph{mutually exclusive} and must not -match any portion of the diary entry itself, just the date. If, to be -mutually exclusive, the pattern must match a portion of the diary entry -itself, the first element of the form @emph{must} be @code{backup}. -This causes the date recognizer to back up to the beginning of the -current word of the diary entry. Even if you use @code{backup}, the -form must absolutely not match more than a portion of the first word of -the diary entry. The default value of @code{diary-date-forms} in the + The date patterns in the list must be @emph{mutually exclusive} and +must not match any portion of the diary entry itself, just the date and +one character of whitespace. If, to be mutually exclusive, the pattern +must match a portion of the diary entry text---beyond the whitespace +that ends the date---then the first element of the date pattern +@emph{must} be @code{backup}. This causes the date recognizer to back +up to the beginning of the current word of the diary entry, after +finishing the match. Even if you use @code{backup}, the date pattern +must absolutely not match more than a portion of the first word of the +diary entry. The default value of @code{diary-date-forms} in the European style is this list: @example @@ -1693,56 +1914,45 @@ @end example @noindent -Notice the use of @code{backup} in the middle form because part of the -diary entry must be matched to distinguish this form from the following one. - +Notice the use of @code{backup} in the third pattern, because it needs +to match part of a word beyond the date itself to distinguish it from +the fourth pattern. + @node Hebrew/Islamic Entries @subsubsection Hebrew- and Islamic-Date Diary Entries Your diary file can have entries based on Hebrew or Islamic dates, as -well as entries based on our usual Gregorian calendar. However, because -the processing of such entries is time-consuming and most people don't -need them, you must customize the processing of your diary file to -specify that you want such entries recognized. If you want Hebrew-date -diary entries, for example, you must include these lines in your -@file{.emacs} file: - +well as entries based on the world-standard Gregorian calendar. +However, because recognition of such entries is time-consuming and most +people don't use them, you must explicitly enable their use. If you +want the diary to recognize Hebrew-date diary entries, for example, +you must do this: + @vindex nongregorian-diary-listing-hook @vindex nongregorian-diary-marking-hook @findex list-hebrew-diary-entries @findex mark-hebrew-diary-entries @smallexample -(setq nongregorian-diary-listing-hook 'list-hebrew-diary-entries) -(setq nongregorian-diary-marking-hook 'mark-hebrew-diary-entries) +(add-hook 'nongregorian-diary-listing-hook 'list-hebrew-diary-entries) +(add-hook 'nongregorian-diary-marking-hook 'mark-hebrew-diary-entries) @end smallexample @noindent -If you want Islamic-date entries, include these lines in your -@file{.emacs} file: +If you want Islamic-date entries, do this: @findex list-islamic-diary-entries @findex mark-islamic-diary-entries @smallexample -(setq nongregorian-diary-listing-hook 'list-islamic-diary-entries) -(setq nongregorian-diary-marking-hook 'mark-islamic-diary-entries) -@end smallexample - -@noindent -If you want both Hebrew- and Islamic-date entries, include these lines: - -@smallexample -(setq nongregorian-diary-listing-hook - '(list-hebrew-diary-entries list-islamic-diary-entries)) -(setq nongregorian-diary-marking-hook - '(mark-hebrew-diary-entries mark-islamic-diary-entries)) +(add-hook 'nongregorian-diary-listing-hook 'list-islamic-diary-entries) +(add-hook 'nongregorian-diary-marking-hook 'mark-islamic-diary-entries) @end smallexample Hebrew- and Islamic-date diary entries have the same formats as -Gregorian-date diary entries, except that the date must be preceded with -an @samp{H} for Hebrew dates and an @samp{I} for Islamic dates. -Moreover, because the Hebrew and Islamic month names are not uniquely -specified by the first three letters, you may not abbreviate them. For -example, a diary entry for the Hebrew date Heshvan 25 could look like +Gregorian-date diary entries, except that @samp{H} precedes a Hebrew +date and @samp{I} precedes an Islamic date. Moreover, because the +Hebrew and Islamic month names are not uniquely specified by the first +three letters, you may not abbreviate them. For example, a diary entry +for the Hebrew date Heshvan 25 could look like this: @smallexample HHeshvan 25 Happy Hebrew birthday! @@ -1750,7 +1960,8 @@ @noindent and would appear in the diary for any date that corresponds to Heshvan 25 -on the Hebrew calendar. Similarly, an Islamic-date diary entry might be +on the Hebrew calendar. And here is Islamic-date diary entry that matches +Dhu al-Qada 25: @smallexample IDhu al-Qada 25 Happy Islamic birthday! @@ -1763,19 +1974,24 @@ As with Gregorian-date diary entries, Hebrew- and Islamic-date entries are nonmarking if they are preceded with an ampersand (@samp{&}). - There are commands to help you in making Hebrew- and Islamic-date -entries to your diary: - + Here is a table of commands used in the calendar to create diary entries +that match the selected date and other dates that are similar in the Hebrew +or Islamic calendar: + @table @kbd @item i h d Add a diary entry for the Hebrew date corresponding to the selected date (@code{insert-hebrew-diary-entry}). @item i h m Add a diary entry for the day of the Hebrew month corresponding to the -selected date (@code{insert-monthly-hebrew-diary-entry}). +selected date (@code{insert-monthly-hebrew-diary-entry}). This diary +entry matches any date that has the same Hebrew day-within-month as the +selected date. @item i h y Add a diary entry for the day of the Hebrew year corresponding to the -selected date (@code{insert-yearly-hebrew-diary-entry}). +selected date (@code{insert-yearly-hebrew-diary-entry}). This diary +entry matches any date which has the same Hebrew month and day-within-month +as the selected date. @item i i d Add a diary entry for the Islamic date corresponding to the selected date (@code{insert-islamic-diary-entry}). @@ -1793,24 +2009,22 @@ @findex insert-islamic-diary-entry @findex insert-monthly-islamic-diary-entry @findex insert-yearly-islamic-diary-entry - These commands work exactly like the corresponding commands for ordinary -diary entries: Move point to a date in the calendar window and the above -commands insert the Hebrew or Islamic date (corresponding to the date -indicated by point) at the end of your diary file and you can then type the -diary entry. If you want the diary entry to be nonmarking, give a numeric -argument to the command. - + These commands work much like the corresponding commands for ordinary +diary entries: they apply to the date that point is on in the calendar +window, and what they do is insert just the date portion of a diary entry +at the end of your diary file. You must then insert the rest of the +diary entry. + @node Fancy Diary Display @subsubsection Fancy Diary Display @vindex diary-display-hook @findex simple-diary-display Diary display works by preparing the diary buffer and then running the -hook @code{diary-display-hook}. The default value of this hook hides -the irrelevant diary entries and then displays the buffer -(@code{simple-diary-display}). However, if you specify the hook as -follows, - +hook @code{diary-display-hook}. The default value of this hook +(@code{simple-diary-display}) hides the irrelevant diary entries and +then displays the buffer. However, if you specify the hook as follows, + @cindex diary buffer @findex fancy-diary-display @example @@ -1818,10 +2032,11 @@ @end example @noindent -then fancy mode displays diary entries and holidays by copying them into -a special buffer that exists only for display. Copying provides an -opportunity to change the displayed text to make it prettier---for -example, to sort the entries by the dates they apply to. +this enables fancy diary display. It displays diary entries and +holidays by copying them into a special buffer that exists only for the +sake of display. Copying to a separate buffer provides an opportunity +to change the displayed text to make it prettier---for example, to sort +the entries by the dates they apply to. As with simple diary display, you can print a hard copy of the buffer with @code{print-diary-entries}. To print a hard copy of a day-by-day @@ -1844,7 +2059,7 @@ @findex sort-diary-entries @example -(add-hook 'list-diary-entries-hook 'sort-diary-entries) +(add-hook 'list-diary-entries-hook 'sort-diary-entries t) @end example @noindent @@ -1855,24 +2070,20 @@ @node Included Diary Files @subsubsection Included Diary Files - If you use the fancy diary display, you can have diary entries from other -files included with your own by an ``include'' mechanism. This facility makes -possible the sharing of common diary files among groups of users. Lines in -the diary file of this form: - + Fancy diary display also has the ability to process included diary +files. This permits a group of people to share a diary file for events +that apply to all of them. Lines in the diary file of this form: + @smallexample #include "@var{filename}" @end smallexample @noindent includes the diary entries from the file @var{filename} in the fancy -diary buffer (because the ordinary diary buffer is just the buffer -associated with your diary file, you cannot use the include mechanism -unless you use the fancy diary buffer). The include mechanism is -recursive, by the way, so that included files can include other files, -and so on; you must be careful not to have a cycle of inclusions, of -course. To enable the include facility, add lines as follows to your -@file{.emacs} file: +diary buffer. The include mechanism is recursive, so that included files +can include other files, and so on; you must be careful not to have a +cycle of inclusions, of course. Here is how to enable the include +facility: @vindex list-diary-entries-hook @vindex mark-diary-entries-hook @@ -1883,6 +2094,9 @@ (add-hook 'mark-diary-entries-hook 'mark-included-diary-files) @end smallexample +The include mechanism works only with the fancy diary display, because +ordinary diary display shows the entries directly from your diary file. + @node Sexp Diary Entries @subsubsection Sexp Entries and the Fancy Diary Display @cindex sexp diary entries @@ -1940,9 +2154,16 @@ in the fancy diary display on September 8, 1990. The generality of sexp diary entries lets you specify any diary entry -that you can describe algorithmically. Suppose you get paid on the 21st -of the month if it is a weekday, and to the Friday before if the 21st is -on a weekend. The diary entry +that you can describe algorithmically. A sexp diary entry contains an +expression that computes whether the entry applies to any given date. +If its value is non-@code{nil}, the entry applies to that date; +otherwise, it does not. The expression can use the variable @code{date} +to find the date being considered; its value is a list (@var{month} +@var{day} @var{year}) that refers to the Gregorian calendar. + + Suppose you get paid on the 21st of the month if it is a weekday, and +on the Friday before if the 21st is on a weekend. Here is how to write +a sexp diary entry that matches those dates: @smallexample &%%(let ((dayname (calendar-day-of-week date)) @@ -1961,7 +2182,7 @@ @code{nil}, the entry does @emph{not} apply to that date. The following sexp diary entries take advantage of the ability (in the fancy -diary display) to concoct diary entries based on the date: +diary display) to concoct diary entries whose text varies based on the date: @findex diary-sunrise-sunset @findex diary-phases-of-moon @@ -2011,9 +2232,9 @@ diary display, the line @samp{&%%(diary-hebrew-date)} appears in the diary for any date, but does nothing particularly useful.) - There are a number of other available sexp diary entries that are important -to those who follow the Hebrew calendar: - + These functions can be used to construct sexp diary entries based on +the Hebrew calendar in certain standard ways: + @cindex rosh hodesh @findex diary-rosh-hodesh @cindex parasha, weekly @@ -2046,9 +2267,8 @@ @node Appt Customizing @subsubsection Customizing Appointment Reminders - You can specify exactly how Emacs reminds you of an appointment and -how far in advance it begins doing so. Here are the variables that you -can set: + You can specify exactly how Emacs reminds you of an appointment, and +how far in advance it begins doing so, by setting these variables: @vindex appt-message-warning-time @vindex appt-audible
--- a/nt/ChangeLog Mon Aug 13 10:38:47 2007 +0200 +++ b/nt/ChangeLog Mon Aug 13 10:39:40 2007 +0200 @@ -1,3 +1,34 @@ +1998-07-09 SL Baur <steve@altair.xemacs.org> + + * XEmacs 21.0-pre4 is released. + +1998-07-04 Jonathan Harris <jhar@tardis.ed.ac.uk> + + * README: Documented the changed PACKAGEPATH option and the new + INSTALL_DIR option, install target and runemacs executable. + Added more debugging documentation. + + * config.h: Don't undef EMACS_CONFIGURATION because it's now + set in the makefile. + + * xemacs.mak: Added an INSTALL_DIR option and install target. + Renamed the default package location option to PACKAGEPATH + and made it cope with paths with spaces in them. + Made non-debug build the default; DEBUG_XEMACS defaults to 0. + System configuration (EMACS_CONFIGURATION) now correctly + determined at build-time by this makefile. + Compiles the runemacs executable as part of the all target. + +1998-06-29 SL Baur <steve@altair.xemacs.org> + + * config.h: + * xemacs.mak: NT native sound fixes + From Fabrice POPINEAU via Adrian Aichner <aichner@ecf.teradyne.com> + +1998-06-21 Martin Buchholz <martin@xemacs.org> + + * xemacs.mak: It's XEmacs, not Xemacs! + 1998-06-19 Jonathan Harris <jhar@tardis.ed.ac.uk> * file.ico, lisp.ico:
--- a/nt/README Mon Aug 13 10:38:47 2007 +0200 +++ b/nt/README Mon Aug 13 10:39:40 2007 +0200 @@ -4,8 +4,6 @@ Marc Paquette Jonathan Harris -Currently XEmacs for Win32 is in an early stage of development. - The port was made much easier by the groundbreaking work of Geoff Voelker and others who worked on the GNU Emacs port to NT. Their version is available from http://www.cs.washington.edu/homes/voelker/ntemacs.html @@ -17,48 +15,80 @@ Note that Visual C++ assumes a couple of environment variables INCLUDE and LIB to be set which specify the location of the includes and libraries. At this point you can select X or Win32 native support. -2. Grab the latest XEmacs beta from ftp.xemacs.org if necessary. All Win32 - support is in the nt/ subdirectory. You'll also need the xemacs-base - package from the binary-packages subdirectory and you'll probably alsi + +2. Grab the latest XEmacs source from ftp.xemacs.org if necessary. All Win32 + support is in the nt\ subdirectory. You'll also need the xemacs-base + package from the binary-packages subdirectory and you'll probably also want at least the edit-utils, text-utils, cc-mode and prog-utils packages. - Unpack the packages into, say, c:\src\xemacs\packages. + Unpack the packages into, say, "c:\Program Files\XEmacs\packages". + If you want to build for native GUI: 1. If you want XPM and toolbar support grab the latest version of the xpm - sources (xpm-3.4k.tar.gz at time of writing) and unpack it. - Copy nt/xpm.mak from the xemacs distribution to the lib subdirectory of - the xpm distribution, cd to that directory and build xpm with - `nmake -f xpm.mak`. + sources (xpm-3.4k.tar.gz at time of writing) and unpack them somewhere. + Copy nt\xpm.mak from the xemacs sources to the lib subdirectory of the + xpm sources, cd to that directory and build xpm with `nmake -f xpm.mak`. + 2. cd to the nt subdirectory of the xemacs distribution and build xemacs: - `nmake -f xemacs.mak HAVE_MSW=1 PATH_PACKAGEPATH="c:/src/xemacs/packages"`, - replacing "c:/src/xemacs/packages" with the location of your packages. Note - the double quotes and *forward* slashes in that path. - If you're building with XPM support, add this to the nmake command line: - `HAVE_XPM=1 XPM_DIR=x:\location\of\your\xpm\source\tree`. - Nmake will build temacs, the DOC file, update the elc's and dump xemacs. -3. The build process creates debugging and "Source Browser" information for - use with MS DevStudio. To use this create a new "console" project and - under Project/Settings set: + `nmake install -f xemacs.mak`, but read on before hitting Enter. + +3. If you're building with XPM support, add this to the nmake command line: + HAVE_XPM=1 XPM_DIR="x:\location\of\your\xpm\source\tree" + +4. By default, XEmacs will look for packages in + "c:\Program Files\XEmacs\packages". If you want it to look elsewhere, + add this to the nmake command line: + PACKAGEPATH="x:\\location\\of\\your\\packages" + Note the doubled-up backslashes in that path. If you want to change the + package path after you've already built XEmacs, delete the file + .\obj\emacs.obj and rebuild with the new value of PACKAGEPATH. + +5. By default, XEmacs will be installed in directories under the directory + "c:\Program Files\XEmacs\XEmacs-21.0". If you want to install it + elsewhere, add this to the nmake command line: + INSTALL_DIR="x:\your\installation\directory" + +6. Now you can press Enter. nmake will build temacs, the DOC file, update the + elc's, dump xemacs and install the relevant files in the directories under + the installation directory. Unless you set INSTALL_DIR in step 5 above, the + file that you should run to start XEmacs will be installed as + "c:\Program Files\XEmacs\XEmacs-21.0\i386-pc-win32\runemacs.exe". You may + want to create a shortcut to that file from your Desktop or Start Menu. + +7. The build process always creates debugging and "Source Browser" information + in the source tree for use with MS DevStudio. If you actually want to debug + XEmacs you should run XEmacs from the source directory instead of from the + installation directory. You should probably also build a debug version of + XEmacs; to do this start with a clean source tree and add DEBUG_XEMACS=1 to + the nmake command line. You probably don't want to install your debug build + so you should tell nmake to build the 'all' target instead of the 'install' + target. + + To make use of the debugging and "Source Browser" information, create a new + "console" project in MS DevStudio and, under Project/Settings, set: Debug: executable name = full path of src\xemacs.exe Link: output file name = full path of src\temacs.exe Browse Info: browse info file name = full path of src\temacs.bsc Remember to close the Source Browser file in DevStudio before rebuilding. + If you want support for X you will need: 1. An X server. MI/X is available on the Internet for free; It is available from: http://www.microimages.com/www/html/freestuf/mixdlfrm.htm + 2. The MIT X11R6.3 libraries available from: ftp.x.org + 3. You'll need to compile the MIT libraries without multi-thread support. To do this, there is an example Win32.cf and site.def provided which set the relevant flags. You will also need to apply the patch in nt/X11.patch in the xc/lib/X11 directory which will fix the DLL definition file. Once compiled and installed, you will need to apply the following patch to Xmd.h. This is messy and better solutions would be appreciated. -4. Goto 2 under 'native GUI' above and also supply: - `HAVE_X=1 X11_DIR=x:\root\directory\of\your\X11\installation' - to the nmake command line. + +4. Goto 2 under 'native GUI' above and add this to the nmake command line: + HAVE_X=1 X11_DIR=x:\root\directory\of\your\X11\installation --- Xmd.h~ Thu Jun 08 23:20:40 1995 +++ Xmd.h Sun Mar 16 13:09:10 1997
--- a/nt/config.h Mon Aug 13 10:38:47 2007 +0200 +++ b/nt/config.h Mon Aug 13 10:39:40 2007 +0200 @@ -31,7 +31,7 @@ /* Use this to add code in a structured way to FSF-maintained source files so as to make it obvious where XEmacs changes are. */ -#define XEMACS +#define XEMACS 1 /* Allow s&m files to differentiate OS versions without having multiple files to maintain. */ @@ -39,7 +39,7 @@ /* The configuration name. This is used as the install directory name for the lib-src programs. */ -#undef EMACS_CONFIGURATION +/* #undef EMACS_CONFIGURATION -- defined in xemacs.mak */ /* The configuration options. This is exported to Lisp. */ #undef EMACS_CONFIG_OPTIONS @@ -486,7 +486,7 @@ and Solaris systems; on Solaris, you may need to install the "SUNWaudmo" package.) */ -#undef HAVE_NATIVE_SOUND +/* #undef HAVE_NATIVE_SOUND */ /* If you wish to compile with support for the Network Audio System system define HAVE_NAS_SOUND.
--- a/nt/xemacs.mak Mon Aug 13 10:38:47 2007 +0200 +++ b/nt/xemacs.mak Mon Aug 13 10:39:40 2007 +0200 @@ -27,11 +27,47 @@ XEMACS=.. LISP=$(XEMACS)\lisp +# Program name and version + +!include "..\version.sh" + +!if !defined(INFODOCK) +INFODOCK=0 +!endif + +!if $(INFODOCK) +INFODOCK_VERSION_STRING=$(infodock_major_version).$(infodock_minor_version).$(infodock_build_version) +PROGRAM_DEFINES=-DINFODOCK \ + -DPATH_VERSION=\"$(INFODOCK_VERSION_STRING)\" \ + -DPATH_PROGNAME=\"infodock\" \ + -DINFODOCK_MAJOR_VERSION=$(infodock_major_version) \ + -DINFODOCK_MINOR_VERSION=$(infodock_minor_version) \ + -DINFODOCK_BUILD_VERSION=$(infodock_build_version) +!else +!if "$(emacs_beta_version)" != "" +XEMACS_VERSION_STRING=$(emacs_major_version).$(emacs_minor_version)-b$(emacs_beta_version) +!else +XEMACS_VERSION_STRING=$(emacs_major_version).$(emacs_minor_version) +!endif +PROGRAM_DEFINES= \ + -DPATH_VERSION=\"$(XEMACS_VERSION_STRING)\" \ + -DPATH_PROGNAME=\"xemacs\" +!endif + # # Command line options defaults # -!if !defined(PATH_PACKAGEPATH) -PATH_PACKAGEPATH="~/.xemacs" +!if !defined(INSTALL_DIR) +! if $(INFODOCK) +INSTALL_DIR=c:\Program Files\Infodock\Infodock-$(INFODOCK_VERSION_STRING) +! else +INSTALL_DIR=c:\Program Files\XEmacs\XEmacs-$(XEMACS_VERSION_STRING) +! endif +!endif +!if !defined(PACKAGEPATH) +PATH_PACKAGEPATH="c:\\Program Files\\XEmacs\\packages" +!else +PATH_PACKAGEPATH="$(PACKAGEPATH)" !endif !if !defined(HAVE_MSW) HAVE_MSW=1 @@ -54,8 +90,11 @@ !if !defined(HAVE_MSW_C_DIRED) HAVE_MSW_C_DIRED=1 !endif +!if !defined(HAVE_NATIVE_SOUND) +HAVE_NATIVE_SOUND=1 +!endif !if !defined(DEBUG_XEMACS) -DEBUG_XEMACS=1 +DEBUG_XEMACS=0 !endif !if !defined(USE_UNION_TYPE) USE_UNION_TYPE=0 @@ -66,8 +105,22 @@ !if !defined(USE_INDEXED_LRECORD_IMPLEMENTATION) USE_INDEXED_LRECORD_IMPLEMENTATION=0 !endif -!if !defined(INFODOCK) -INFODOCK=0 + +# +# System configuration +# +!if !defined(PROCESSOR_ARCHITECTURE) && "$(OS)" != "Windows_NT" +EMACS_CONFIGURATION=i386-pc-win32 +!else if "$(PROCESSOR_ARCHITECTURE)" == "x86" +EMACS_CONFIGURATION=i386-pc-win32 +!else if "$(PROCESSOR_ARCHITECTURE)" == "MIPS" +EMACS_CONFIGURATION=mips-pc-win32 +!else if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA" +EMACS_CONFIGURATION=alpha-pc-win32 +!else if "$(PROCESSOR_ARCHITECTURE)" == "PPC" +EMACS_CONFIGURATION=ppc-pc-win32 +!else +! error Unknown processor architecture type $(PROCESSOR_ARCHITECTURE) !endif # @@ -121,6 +174,11 @@ !if [set CONF_REPORT_ALREADY_PRINTED=1] !endif !message ------------------------------------------------ +!message Configured for "$(EMACS_CONFIGURATION)". +!message +!message Installation directory is "$(INSTALL_DIR)". +!message Package path is $(PATH_PACKAGEPATH). +!message !if $(INFODOCK) !message Building InfoDock. !endif @@ -142,8 +200,11 @@ !if $(HAVE_DIALOGS) !message Compiling in support for dialogs. !endif +!if $(HAVE_NATIVE_SOUND) +!message Compiling in support for native sounds. +!endif !if $(HAVE_MSW_C_DIRED) -# Define HAVE_MSW_C_DIRED to be non-zero if you want Xemacs to use C +# Define HAVE_MSW_C_DIRED to be non-zero if you want XEmacs to use C # primitives to significantly speed up dired, at the expense of an # additional ~4KB of code. !message Compiling in fast dired implementation. @@ -215,6 +276,9 @@ MSW_DIALOG_SRC=$(XEMACS)\src\dialog.c $(XEMACS)\src\dialog-msw.c MSW_DIALOG_OBJ=$(OUTDIR)\dialog.obj $(OUTDIR)\dialog-msw.obj !endif +!if $(HAVE_NATIVE_SOUND) +MSW_DEFINES=$(MSW_DEFINES) -DHAVE_NATIVE_SOUND +!endif !endif !if $(HAVE_MULE) @@ -236,8 +300,6 @@ UNION_DEFINES=-DUSE_UNION_TYPE !endif -!include "..\version.sh" - # Hard-coded paths !if $(INFODOCK) @@ -248,27 +310,6 @@ PATH_DEFINES=-DPATH_PREFIX=\"$(PATH_PREFIX)\" -# Program name and version - -!if $(INFODOCK) -INFODOCK_VERSION_STRING=$(infodock_major_version).$(infodock_minor_version).$(infodock_build_version) -PROGRAM_DEFINES=-DINFODOCK \ - -DPATH_VERSION=\"$(INFODOCK_VERSION_STRING)\" \ - -DPATH_PROGNAME=\"infodock\" \ - -DINFODOCK_MAJOR_VERSION=$(infodock_major_version) \ - -DINFODOCK_MINOR_VERSION=$(infodock_minor_version) \ - -DINFODOCK_BUILD_VERSION=$(infodock_build_version) -!else -!if "$(emacs_beta_version)" != "" -XEMACS_VERSION_STRING=$(emacs_major_version).$(emacs_minor_version)-b$(emacs_beta_version) -!else -XEMACS_VERSION_STRING=$(emacs_major_version).$(emacs_minor_version) -!endif -PROGRAM_DEFINES= \ - -DPATH_VERSION=\"$(XEMACS_VERSION_STRING)\" \ - -DPATH_PROGNAME=\"xemacs\" -!endif - # Generic variables INCLUDES=$(X_INCLUDES) $(MSW_INCLUDES) -I$(XEMACS)\nt\inc -I$(XEMACS)\src -I$(XEMACS)\lwlib @@ -332,10 +373,20 @@ $(LIB_SRC)/wakeup.exe \ $(LIB_SRC)/etags.exe -# LASTFILE Library +#------------------------------------------------------------------------------ + +# runemacs proglet + +NT = $(XEMACS)\nt +RUNEMACS = $(XEMACS)\src\runemacs.exe + +$(RUNEMACS): $(NT)\runemacs.c $(NT)\xemacs.res + $(CCV) -I. -I$(XEMACS)/src -I$(XEMACS)/nt/inc -O2 -W3 -Fe$@ $** kernel32.lib user32.lib #------------------------------------------------------------------------------ +# LASTFILE Library + LASTFILE=$(OUTDIR)\lastfile.lib LASTFILE_SRC=$(XEMACS)\src LASTFILE_FLAGS=$(WARN_CPP_FLAGS) $(OPT) $(INCLUDES) -Fo$@ -c @@ -461,6 +512,7 @@ $(XEMACS)\src\minibuf.c \ $(XEMACS)\src\nt.c \ $(XEMACS)\src\ntheap.c \ + $(XEMACS)\src\ntplay.c \ $(XEMACS)\src\ntproc.c \ $(XEMACS)\src\objects.c \ $(XEMACS)\src\opaque.c \ @@ -574,6 +626,7 @@ -DEMACS_MINOR_VERSION=$(emacs_minor_version) \ $(EMACS_BETA_VERSION) \ -DXEMACS_CODENAME=\"$(xemacs_codename)\" \ + -DEMACS_CONFIGURATION=\"$(EMACS_CONFIGURATION)\" \ -DPATH_PACKAGEPATH=\"$(PATH_PACKAGEPATH)\" TEMACS_FLAGS=-ML $(WARN_CPP_FALGS) $(OPT) -c $(TEMACS_CPP_FLAGS) @@ -701,6 +754,7 @@ $(OUTDIR)\minibuf.obj \ $(OUTDIR)\nt.obj \ $(OUTDIR)\ntheap.obj \ + $(OUTDIR)\ntplay.obj \ $(OUTDIR)\ntproc.obj \ $(OUTDIR)\objects.obj \ $(OUTDIR)\opaque.obj \ @@ -807,14 +861,26 @@ #------------------------------------------------------------------------------ # use this rule to build the complete system -all: $(OUTDIR)\nul $(LASTFILE) $(LWLIB) $(LIB_SRC_TOOLS) \ +all: $(OUTDIR)\nul $(LASTFILE) $(LWLIB) $(LIB_SRC_TOOLS) $(RUNEMACS) \ $(TEMACS) $(TEMACS_BROWSE) update-elc $(DOC) dump-xemacs temacs: $(TEMACS) # use this rule to install the system -install: - echo Not yet implemented. +install: all "$(INSTALL_DIR)\nul" "$(INSTALL_DIR)\lock\nul" + @xcopy /q $(LIB_SRC)\*.exe "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)\" + @copy $(LIB_SRC)\DOC "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)\" + @copy $(XEMACS)\src\xemacs.exe "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)\" + @copy $(RUNEMACS) "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)\" + @xcopy /e /q $(XEMACS)\etc "$(INSTALL_DIR)\etc\" + @xcopy /e /q $(XEMACS)\info "$(INSTALL_DIR)\info\" + @xcopy /e /q $(XEMACS)\lisp "$(INSTALL_DIR)\lisp\" + +"$(INSTALL_DIR)\nul": + -@mkdir "$(INSTALL_DIR)" + +"$(INSTALL_DIR)\lock\nul": "$(INSTALL_DIR)\nul" + -@mkdir "$(INSTALL_DIR)\lock" distclean: del *.bak
--- a/src/ChangeLog Mon Aug 13 10:38:47 2007 +0200 +++ b/src/ChangeLog Mon Aug 13 10:39:40 2007 +0200 @@ -1,3 +1,196 @@ +1998-07-09 SL Baur <steve@altair.xemacs.org> + + * XEmacs 21.0-pre4 is released. + +1998-07-01 James N. Potts <jnpotts@plutonium.net> + + * fileio.c: (expand_file_name): under win32: Don't treat names + as UNC names if a drive letter has been specified. If a drive + has been specified, strip out extra directory-seperators that + reportedly cause problems under Win95. + +1998-07-09 Jonathan Harris <jhar@tardis.ed.ac.uk> + + * windowsnt.h: Define DUMP_SEPARATE_SECTION when building with + MSVC >= 5.0. Put emacs init and zero-init data in a special + section of the executable when this is defined. + + * unexnt.c, ntheap.h: + Removed unused find_section() and get_section_size(). + + * unexnt.c: + Fix up the executable's checksum after dumping otherwise the + profiler complains. + When DUMP_SEPARATE_SECTION is defined, don't need to dump + zero-init data separately from init data. Dump emacs data + into a special section of the executable. + When DUMP_SEPARATE_SECTION not defined, dump .bss up to + my_ebss instead of up to the end of bss. + +1998-07-09 Jonathan Harris <jhar@tardis.ed.ac.uk> + + * filelock.c: Removed Vconfigure_lock_directory - already + defined in emacs.c. + + * frame-msw.c: Removed Qinitially_unmapped and Qpopup - already + defined in frame.c and general.c respectively. + + * glyphs-msw.c: Removed Qresource - already defined in + general.c. + +1998-07-05 Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch> + + * eldap.c (Fldap_search_internal): Docstring fixes + +1998-07-04 Jonathan Harris <jhar@tardis.ed.ac.uk> + + * nt.c (init_environment): Removed unused PRELOAD_WINSOCK, + EMACSDOC and TERM variables. Added EMACSDEBUGPATHS, + EMACSPACKAGEPATH and INFOPATH variables. + Removed unused get_emacs_configuration function. + + * s/windowsnt.h: Don't define EMACS_CONFIGURATION here because + it is now defined at build-time by the makefile. + +1998-07-01 James N. Potts <jnpotts@plutonium.net> + + * fileio.c: (expand_file_name): under win32: Don't treat names as + UNC names if a drive letter has been specified. If a drive has + been specified, strip out extra directory-seperators that + reportedly cause problems under Win95. + +1998-07-05 Andy Piper <andyp@parallax.co.uk> + + * faces.c (complex_vars_of_faces): for the gui-element face don't + fallback to the default face, instead provide reasonable default + fallbacks that were previously hardcoded elsewhere. + +1998-07-06 Olivier Galibert <galibert@pobox.com> + + * glyphs-x.c (convert_EImage_to_XImage): Fix pixel writing problem + when the X server endianness is different than the client's one. + +1998-06-29 Kyle Jones <kyle_jones@wonderworks.com> + + * eval.c (run_hook_with_args_in_buffer): Check + default (non-buffer-local) value of hook for + nil before treating it as a function. Don't initialize + the `globals' variable twice. + +1998-06-24 Jonathan Harris <jhar@tardis.ed.ac.uk> + + * fileio.c: Don't do directory seperator canonicalisation in + substitute-in-file-name because we don't know that the + filename refers to a local file. + +1998-06-24 Adrian Aichner <aichner@ecf.teradyne.com> + + * process-nt.c (nt_create_process): Try appending the standard + executable file extensions to the filename if none supplied. + +1998-06-29 SL Baur <steve@altair.xemacs.org> + + * fileio.c (Fsubstitute_in_file_name): Enable double slash notation + for cygwin32. + From Keisuke Mori <ksk@ntts.com> + +1998-06-24 Andy Piper <andyp@parallax.co.uk> + + * toolbar-msw.c (mswindows_output_toolbar): only enable masked + images if we have masks. This handles the xbm case (have masks) + and avoids overuse of resources in the xpm case (generally no masks). + Don't output small toolbars. + +1998-06-29 Kyle Jones <kyle_jones@wonderworks.com> + + * eval.c (run_hook_with_args_in_buffer): Don't treat + the default value of a buffer local hook as a list of + hooks unless it is both a cons and the car of that cons + is not Qlambda. + +1998-06-29 SL Baur <steve@altair.xemacs.org> + + * extents.c: Email address for Ben Wing is ben@xemacs.org. + * process-unix.c: Ditto. + * mule-coding.h: Ditto. + * mule-coding.c: Ditto. + * mule-charset.c: Ditto. + * mule-charset.h: Ditto. + * file-coding.c: Ditto. + * file-coding.h: Ditto. + +1998-06-22 Jonathan Harris <jhar@tardis.ed.ac.uk> + + * event-msw.c: Guard against recursion when freeing + FRAME_MSWINDOWS_TARGET_RECT struture in WM_SIZE processing. + + * frame-msw.c: Don't set WS_VISIBLE attribute on first frame. + Call ShowWindow twice in init_frame_3 to get round runemacs + weirdness. + +1998-06-27 Hrvoje Niksic <hniksic@srce.hr> + + * scrollbar.c (vertical_scrollbar_changed_in_window): Ditto. + + * winslots.h: Rename. + + * window.c (specifier_vars_of_window): Renamed + vertical-divider-draggable-p to vertical-divider-always-visible-p, + as suggested by Ben Wing. + (specifier_vars_of_window): Fix docstrings. + +1998-06-22 Michael Sperber [Mr. Preprocessor] <sperber@informatik.uni-tuebingen.de> + + * unexaix.c: Line number information works correctly again. + +1998-06-22 Olivier Galibert <galibert@pobox.com> + + * emacs.c (__sti__iflPNGFile_c___): Added. See comment. Cry. + +1998-06-21 Martin Buchholz <martin@xemacs.org> + + * editfns.c (get_home_directory): ANSIfy. + XEmacs is compilable under C *and* C++. + It's XEmacs, not Xemacs! + +1998-06-19 Jonathan Harris <jhar@tardis.ed.ac.uk> + + * console-msw.h: added a list of fonts to device data. + + * device-msw.c: enumerate list of available fonts in + mswindows_init_device. Free list in mswindows_delete_device. + + * objects-msw.c: Added helper function match_font used by + mswindows_initialize_font_instance and mswindows_list_fonts. + Allow a charset to be specified in a font string, even if + previous fields havn't been specified. + +1998-06-23 Greg Klanderman <greg@alphatech.com> + + * indent.c (column_at_point): column cache bugfix. + Set last_known_column_point to the buffer position for + which the column was requested, not buffer's point. + + * redisplay.c (decode_mode_spec): for current-column, show + window's point's column, not buffer's point's column. + +1998-06-23 Andy Piper <andyp@parallax.co.uk> + + * menubar-msw.c (mswindows_handle_wm_command): use + enqueue_misc_user event rather than + mswindows_enqueue_msic_user_event to fix customize problems. Add some + checks that X does. + + * console-msw.h: declare mswindows_enqueue_magic_event. + + * event-msw.c (mswindows_enqueue_magic_event): make global. + +1998-06-24 Hrvoje Niksic <hniksic@srce.hr> + + * line-number.c (LINE_NUMBER_FAR): Reverted to 16384. + (buffer_line_number): Use EMACS_INT_MAX instead of random LOTS. + (add_position_to_cache): Use EMACS_INT instead of int. + 1998-06-21 Olivier Galibert <galibert@pobox.com> * lisp-disunion.h (XMARKBIT): Have XMARKBIT return something
--- a/src/console-msw.h Mon Aug 13 10:38:47 2007 +0200 +++ b/src/console-msw.h Mon Aug 13 10:39:40 2007 +0200 @@ -223,6 +223,7 @@ void mswindows_redraw_exposed_area (struct frame *f, int x, int y, int width, int height); void mswindows_size_frame_internal (struct frame* f, XEMACS_RECT_WH* dest); +void mswindows_enqueue_magic_event (HWND hwnd, UINT message); /* win32 DDE management library */ #define MSWINDOWS_DDE_ITEM_OPEN "Open"
--- a/src/editfns.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/editfns.c Mon Aug 13 10:39:40 2007 +0200 @@ -660,12 +660,11 @@ character string representation of the user_login_name is needed but a Lisp Object is not. The UID is passed by reference. If UID == NULL, then the USER name - for the user running Xemacs will be returned. This + for the user running XEmacs will be returned. This corresponds to a nil argument to Fuser_login_name. */ char* -user_login_name (uid) - int *uid; +user_login_name (int *uid) { struct passwd *pw = NULL; @@ -880,7 +879,7 @@ if (initialized && output_home_warning) { warn_when_safe(Quser_files_and_directories, Qwarning, "\n" -" Xemacs was unable to determine a good value for the user's $HOME\n" +" XEmacs was unable to determine a good value for the user's $HOME\n" " directory, and will be using the value:\n" " %s\n" " This is probably incorrect.",
--- a/src/eldap.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/eldap.c Mon Aug 13 10:39:40 2007 +0200 @@ -375,15 +375,14 @@ DEFUN ("ldap-search-internal", Fldap_search_internal, 2, 6, 0, /* Perform a search on an open LDAP connection. LDAP is an LDAP connection object created with `ldap-open'. -FILTER is a filter string for the search as described in RFC 1558 -BASE is the distinguished name at which to start the search -SCOPE is an integer or a symbol indicating the scope of the search - Possible values are `ldap-scope-base', `ldap-scope-onelevel' or - `ldap-scope-subtree' +FILTER is a filter string for the search as described in RFC 1558. +BASE is the distinguished name at which to start the search. +SCOPE is one of the symbols `base', `onelevel' or `subtree' indicating +the scope of the search. ATTRS is a list of strings indicating which attributes to retrieve for each matching entry. If nil return all available attributes. If ATTRSONLY is non-nil then only the attributes are retrieved, not -the associated values +the associated values. The function returns a list of matching entries. Each entry is itself an alist of attribute/values. */
--- a/src/emacs.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/emacs.c Mon Aug 13 10:39:40 2007 +0200 @@ -3040,3 +3040,16 @@ Vconfigure_info_path = Qnil; #endif } + +#ifdef __sgi +/* This is so tremendously ugly I'd puke. But then, it works. + * The target is to override the static constructor from the + * libiflPNG.so library which is maskerading as libz, and + * cores on us when re-started from the dumped executable. + * This will have to go for 21.1 -- OG. + */ +void __sti__iflPNGFile_c___() +{ +} + +#endif
--- a/src/eval.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/eval.c Mon Aug 13 10:39:40 2007 +0200 @@ -3726,20 +3726,29 @@ { /* t indicates this hook has a local binding; it means to run the global binding too. */ - Lisp_Object globals; - - for (globals = Fdefault_value (sym); - CONSP (globals) && ((cond == RUN_HOOKS_TO_COMPLETION) - || (cond == RUN_HOOKS_UNTIL_SUCCESS - ? NILP (ret) - : !NILP (ret))); - globals = XCDR (globals)) + Lisp_Object globals = Fdefault_value (sym); + + if ((! CONSP (globals) || EQ (XCAR (globals), Qlambda)) && + ! NILP (globals)) + { + args[0] = globals; + ret = Ffuncall (nargs, args); + } + else { - args[0] = XCAR (globals); - /* In a global value, t should not occur. If it does, we - must ignore it to avoid an endless loop. */ - if (!EQ (args[0], Qt)) - ret = Ffuncall (nargs, args); + for (; + CONSP (globals) && ((cond == RUN_HOOKS_TO_COMPLETION) + || (cond == RUN_HOOKS_UNTIL_SUCCESS + ? NILP (ret) + : !NILP (ret))); + globals = XCDR (globals)) + { + args[0] = XCAR (globals); + /* In a global value, t should not occur. If it does, we + must ignore it to avoid an endless loop. */ + if (!EQ (args[0], Qt)) + ret = Ffuncall (nargs, args); + } } } else
--- a/src/event-msw.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/event-msw.c Mon Aug 13 10:39:40 2007 +0200 @@ -881,7 +881,7 @@ mswindows_enqueue_dispatch_event (event); } -static void +void mswindows_enqueue_magic_event (HWND hwnd, UINT message) { Lisp_Object emacs_event = Fmake_event (Qnil, Qnil); @@ -1917,9 +1917,13 @@ mswindows_size_frame_internal ( frame, FRAME_MSWINDOWS_TARGET_RECT (frame)); - /* Reset to we do not get here again */ - xfree (FRAME_MSWINDOWS_TARGET_RECT (frame)); - FRAME_MSWINDOWS_TARGET_RECT (frame) = 0; + /* Reset so we do not get here again. The SetWindowPos call in + * mswindows_size_frame_internal can cause recursion here. */ + if (FRAME_MSWINDOWS_TARGET_RECT (frame)) + { + xfree (FRAME_MSWINDOWS_TARGET_RECT (frame)); + FRAME_MSWINDOWS_TARGET_RECT (frame) = 0; + } } else {
--- a/src/extents.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/extents.c Mon Aug 13 10:39:40 2007 +0200 @@ -23,7 +23,7 @@ /* This file has been Mule-ized. */ -/* Written by Ben Wing <wing@666.com>. +/* Written by Ben Wing <ben@xemacs.org>. [Originally written by some people at Lucid. Hacked on by jwz.
--- a/src/faces.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/faces.c Mon Aug 13 10:39:40 2007 +0200 @@ -1944,6 +1944,27 @@ build_string ("gui element face"), Qnil); + /* Provide some last-resort fallbacks for gui-element face which + mustn't default to default. */ + { + Lisp_Object fg_fb = Qnil, bg_fb = Qnil; + +#ifdef HAVE_X_WINDOWS + fg_fb = acons (list1 (Qx), build_string ("black"), fg_fb); + bg_fb = acons (list1 (Qx), build_string ("Gray80"), bg_fb); +#endif +#ifdef HAVE_TTY + fg_fb = acons (list1 (Qtty), Fvector (0, 0), fg_fb); + bg_fb = acons (list1 (Qtty), Fvector (0, 0), bg_fb); +#endif +#ifdef HAVE_MS_WINDOWS + fg_fb = acons (list1 (Qmswindows), build_string ("black"), fg_fb); + bg_fb = acons (list1 (Qmswindows), build_string ("Gray75"), bg_fb); +#endif + set_specifier_fallback (Fget (Vgui_element_face, Qforeground, Qnil), fg_fb); + set_specifier_fallback (Fget (Vgui_element_face, Qbackground, Qnil), bg_fb); + } + /* Now create the other faces that redisplay needs to refer to directly. We could create them in Lisp but it's simpler this way since we need to get them anyway. */
--- a/src/file-coding.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/file-coding.c Mon Aug 13 10:39:40 2007 +0200 @@ -21,7 +21,7 @@ /* Synched up with: Mule 2.3. Not in FSF. */ -/* Rewritten by Ben Wing <wing@666.com>. */ +/* Rewritten by Ben Wing <ben@xemacs.org>. */ #include <config.h> #include "lisp.h"
--- a/src/file-coding.h Mon Aug 13 10:38:47 2007 +0200 +++ b/src/file-coding.h Mon Aug 13 10:39:40 2007 +0200 @@ -22,7 +22,7 @@ /* Synched up with: Mule 2.3. Not in FSF. */ /* 91.10.09 written by K.Handa <handa@etl.go.jp> */ -/* Rewritten by Ben Wing <wing@666.com>. */ +/* Rewritten by Ben Wing <ben@xemacs.org>. */ #ifndef _XEMACS_MULE_CODING_H_ #define _XEMACS_MULE_CODING_H_
--- a/src/fileio.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/fileio.c Mon Aug 13 10:39:40 2007 +0200 @@ -898,12 +898,6 @@ "//somedir". */ if (drive && IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1])) nm++; - - /* Discard any previous drive specifier if nm is now in UNC format. */ - if (IS_DIRECTORY_SEP (nm[0]) && IS_DIRECTORY_SEP (nm[1])) - { - drive = 0; - } #endif /* WINDOWSNT */ /* If nm is absolute, look for /./ or /../ sequences; if none are @@ -1104,6 +1098,8 @@ && IS_DEVICE_SEP (newdir[1]) && IS_DIRECTORY_SEP (newdir[2])) /* Detect Windows file names in UNC format. */ && ! (IS_DIRECTORY_SEP (newdir[0]) && IS_DIRECTORY_SEP (newdir[1])) + /* Detect drive spec by itself */ + && ! (IS_DEVICE_SEP (newdir[1]) && newdir[2] == 0) ) { /* Effectively, let newdir be (expand-file-name newdir cwd). @@ -1239,6 +1235,13 @@ ++o; p += 3; } +#ifdef WINDOWSNT + /* if drive is set, we're not dealing with an UNC, so + multiple dir-seps are redundant (and reportedly cause trouble + under win95) */ + else if (drive && IS_DIRECTORY_SEP (p[0]) && IS_DIRECTORY_SEP (p[1])) + ++p; +#endif else { *o++ = *p++; @@ -1247,13 +1250,17 @@ #ifdef WINDOWSNT /* At last, set drive name, except for network file name. */ - if (!(IS_DIRECTORY_SEP (target[0]) && IS_DIRECTORY_SEP (target[1]))) + if (drive) { - if (!drive) abort (); target -= 2; target[0] = DRIVE_LETTER (drive); target[1] = ':'; } + else + { + if (!(IS_DIRECTORY_SEP (target[0]) && IS_DIRECTORY_SEP (target[1]))) + abort (); + } CORRECT_DIR_SEPS (target); #endif /* WINDOWSNT */ @@ -1414,11 +1421,6 @@ string); nm = XSTRING_DATA (string); -#ifdef WINDOWSNT - nm = strcpy (alloca (strlen (nm) + 1), nm); - CORRECT_DIR_SEPS (nm); - substituted = (strcmp (nm, XSTRING_DATA (string)) != 0); -#endif endp = nm + XSTRING_LENGTH (string); /* If /~ or // appears, discard everything through first slash. */ @@ -1426,13 +1428,13 @@ for (p = nm; p != endp; p++) { if ((p[0] == '~' -#if defined (APOLLO) || defined (WINDOWSNT) +#if defined (APOLLO) || defined (WINDOWSNT) || defined (__CYGWIN32__) /* // at start of file name is meaningful in Apollo and WindowsNT systems */ || (IS_DIRECTORY_SEP (p[0]) && p - 1 != nm) -#else /* not (APOLLO || WINDOWSNT) */ +#else /* not (APOLLO || WINDOWSNT || __CYGWIN32__) */ || IS_DIRECTORY_SEP (p[0]) -#endif /* not (APOLLO || WINDOWSNT) */ +#endif /* not (APOLLO || WINDOWSNT || __CYGWIN32__) */ ) && p != nm && (IS_DIRECTORY_SEP (p[-1])))
--- a/src/filelock.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/filelock.c Mon Aug 13 10:39:40 2007 +0200 @@ -40,7 +40,7 @@ /* The name of the directory in which we keep lock files, with a '/' appended. */ -Lisp_Object Vlock_directory, Vconfigure_lock_directory; +Lisp_Object Vlock_directory; #if 0 /* FSFmacs */ /* Look in startup.el */ @@ -533,16 +533,6 @@ void complex_vars_of_filelock (void) { - DEFVAR_LISP ("configure-lock-directory", &Vconfigure_lock_directory /* -For internal use by the build procedure only. -configure's idea of what LOCK-DIRECTORY will be. -*/ ); -#ifdef PATH_LOCK - Vconfigure_lock_directory = - Ffile_name_as_directory (build_string (PATH_LOCK)); -#else - Vconfigure_lock_directory = Qnil; -#endif DEFVAR_LISP ("configure-superlock-file", &Vconfigure_superlock_file /* For internal use by the build procedure only. configure's idea of what SUPERLOCK-FILE will be.
--- a/src/frame-msw.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/frame-msw.c Mon Aug 13 10:39:40 2007 +0200 @@ -69,9 +69,6 @@ Lisp_Object Vdefault_mswindows_frame_plist; Lisp_Object Vmswindows_use_system_frame_size_defaults; -/* Lisp_Object Qname, Qheight, Qwidth, Qinitially_unmapped, Qpopup, Qtop, Qleft; */ -Lisp_Object Qinitially_unmapped, Qpopup; - /* This does not need to be GC protected, as it holds a frame Lisp_Object already protected by Fmake_frame */ Lisp_Object Vmswindows_frame_being_created; @@ -86,7 +83,6 @@ XEMACS_RECT_WH rect_default; DWORD style, exstyle; HWND hwnd, hwnd_parent; - static BOOL first_frame = 1; /* Pick up relevant properties */ initially_unmapped = Fplist_get (props, Qinitially_unmapped, Qnil); @@ -148,12 +144,6 @@ exstyle = MSWINDOWS_FRAME_EXSTYLE; hwnd_parent = NULL; - if (first_frame) - { - style |= WS_VISIBLE; - first_frame = 0; - } - rect_default.left = rect_default.top = CW_USEDEFAULT; rect_default.width = rect_default.height = CW_USEDEFAULT; } @@ -224,7 +214,12 @@ static void mswindows_init_frame_3 (struct frame *f) { - /* Don't do this earlier or we get a WM_PAINT before the frame is ready */ + /* Don't do this earlier or we get a WM_PAINT before the frame is ready. + * The SW_x parameter in the first call that an app makes to ShowWindow is + * ignored, and the parameter specified in the caller's STARTUPINFO is + * substituted instead. That parameter is SW_HIDE if we were started by + * runemacs, so call this twice. #### runemacs is evil */ + ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_SHOWNORMAL); ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_SHOWNORMAL); SetForegroundWindow (FRAME_MSWINDOWS_HANDLE(f)); DragAcceptFiles (FRAME_MSWINDOWS_HANDLE(f), TRUE);
--- a/src/glyphs-msw.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/glyphs-msw.c Mon Aug 13 10:39:40 2007 +0200 @@ -53,7 +53,6 @@ static COLORREF transparent_color = RGB (1,1,1); DEFINE_IMAGE_INSTANTIATOR_FORMAT (resource); -Lisp_Object Qresource; Lisp_Object Q_resource_type, Q_resource_id; static void
--- a/src/glyphs-x.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/glyphs-x.c Mon Aug 13 10:39:40 2007 +0200 @@ -198,11 +198,10 @@ gr = *ip++; bl = *ip++; conv.val = pixarray[QUANT_GET_COLOR(qtable,rd,gr,bl)]; -#ifdef WORDS_BIGENDIAN - for (q = 4-byte_cnt; q < 4; q++) *dp++ = conv.cp[q]; -#else - for (q = 0; q < byte_cnt; q++) *dp++ = conv.cp[q]; -#endif + if (outimg->byte_order == MSBFirst) + for (q = 4-byte_cnt; q < 4; q++) *dp++ = conv.cp[q]; + else + for (q = 0; q < byte_cnt; q++) *dp++ = conv.cp[q]; } } xfree(qtable); @@ -267,11 +266,10 @@ bl = *ip++ >> (8 - bbits); conv.val = (rd << rshift) | (gr << gshift) | (bl << bshift); -#ifdef WORDS_BIGENDIAN - for (q = 4-byte_cnt; q < 4; q++) *dp++ = conv.cp[q]; -#else - for (q = 0; q < byte_cnt; q++) *dp++ = conv.cp[q]; -#endif + if (outimg->byte_order == MSBFirst) + for (q = 4-byte_cnt; q < 4; q++) *dp++ = conv.cp[q]; + else + for (q = 0; q < byte_cnt; q++) *dp++ = conv.cp[q]; } } }
--- a/src/indent.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/indent.c Mon Aug 13 10:39:40 2007 +0200 @@ -185,7 +185,7 @@ { last_known_column_buffer = buf; last_known_column = col; - last_known_column_point = BUF_PT (buf); + last_known_column_point = init_pos; last_known_column_modified = BUF_MODIFF (buf); }
--- a/src/line-number.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/line-number.c Mon Aug 13 10:39:40 2007 +0200 @@ -67,7 +67,7 @@ /* How much traversal has to be exceeded for two points to be considered "far" from each other. When two points are far, cache will be used. */ -#define LINE_NUMBER_FAR 32768 +#define LINE_NUMBER_FAR 16384 /* How large a string has to be to give up searching it for newlines, before change. */ @@ -195,7 +195,6 @@ invalidate_line_number_cache (b, from); } } - /* Get the nearest known position we know the line number of (i.e. BUF_BEGV, and cached positions). The return position will be @@ -234,7 +233,7 @@ /* Add a (POS . LINE) pair to the ring, and rotate it. */ static void -add_position_to_cache (struct buffer *b, Bufpos pos, int line) +add_position_to_cache (struct buffer *b, Bufpos pos, EMACS_INT line) { Lisp_Object *ring = XVECTOR_DATA (LINE_NUMBER_RING (b)); int i = LINE_NUMBER_RING_SIZE - 1; @@ -295,12 +294,10 @@ get_nearest_line_number (b, &beg, pos, &cached_lines); } - /* An EMACS_MAXINT would be cool to have. */ -#define LOTS 999999999 + scan_buffer (b, '\n', beg, pos, pos > beg ? EMACS_INT_MAX : -EMACS_INT_MAX, + &shortage, 0); - scan_buffer (b, '\n', beg, pos, pos > beg ? LOTS : -LOTS, &shortage, 0); - - line = LOTS - shortage; + line = EMACS_INT_MAX - shortage; if (beg > pos) line = -line; line += cached_lines;
--- a/src/menubar-msw.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/menubar-msw.c Mon Aug 13 10:39:40 2007 +0200 @@ -633,7 +633,12 @@ /* Ok, this is our one. Enqueue it. */ get_gui_callback (data, &fn, &arg); XSETFRAME (frame, f); - mswindows_enqueue_misc_user_event (frame, fn, arg); + /* this used to call mswindows_enqueue_misc_user_event but that + breaks customize because the misc_event gets eval'ed in some + cicumstances. Don't change it back unless you can fix the + customize problem also.*/ + enqueue_misc_user_event (frame, fn, arg); + mswindows_enqueue_magic_event (NULL, XM_BUMPQUEUE); UNGCPRO; /* data */ return Qt; @@ -736,6 +741,8 @@ if (SYMBOLP (menu_desc)) menu_desc = Fsymbol_value (menu_desc); + CHECK_CONS (menu_desc); + CHECK_STRING (XCAR (menu_desc)); current_menudesc = menu_desc; current_hashtable = Fmake_hashtable (make_int(10), Qequal); @@ -743,6 +750,10 @@ Fputhash (hmenu_to_lisp_object (menu), Qnil, current_hashtable); top_level_menu = menu; + /* see comments in menubar-x.c */ + if (zmacs_regions) + zmacs_region_stays = 1; + ok = TrackPopupMenu (menu, TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, 0,
--- a/src/mule-charset.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/mule-charset.c Mon Aug 13 10:39:40 2007 +0200 @@ -21,7 +21,7 @@ /* Synched up with: Mule 2.3. Not in FSF. */ -/* Rewritten by Ben Wing <wing@666.com>. */ +/* Rewritten by Ben Wing <ben@xemacs.org>. */ #include <config.h> #include "lisp.h"
--- a/src/mule-charset.h Mon Aug 13 10:38:47 2007 +0200 +++ b/src/mule-charset.h Mon Aug 13 10:39:40 2007 +0200 @@ -21,7 +21,7 @@ /* Synched up with: Mule 2.3. Not in FSF. */ -/* Rewritten by Ben Wing <wing@666.com>. */ +/* Rewritten by Ben Wing <ben@xemacs.org>. */ #ifndef _XEMACS_MULE_CHARSET_H #define _XEMACS_MULE_CHARSET_H
--- a/src/mule-coding.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/mule-coding.c Mon Aug 13 10:39:40 2007 +0200 @@ -21,7 +21,7 @@ /* Synched up with: Mule 2.3. Not in FSF. */ -/* Rewritten by Ben Wing <wing@666.com>. */ +/* Rewritten by Ben Wing <ben@xemacs.org>. */ #if 0 /* while file-coding not split up */
--- a/src/mule-coding.h Mon Aug 13 10:38:47 2007 +0200 +++ b/src/mule-coding.h Mon Aug 13 10:39:40 2007 +0200 @@ -22,7 +22,7 @@ /* Synched up with: Mule 2.3. Not in FSF. */ /* 91.10.09 written by K.Handa <handa@etl.go.jp> */ -/* Rewritten by Ben Wing <wing@666.com>. */ +/* Rewritten by Ben Wing <ben@xemacs.org>. */ #ifndef _XEMACS_MULE_CODING_H_ #define _XEMACS_MULE_CODING_H_
--- a/src/nt.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/nt.c Mon Aug 13 10:39:40 2007 +0200 @@ -585,19 +585,16 @@ static char * env_vars[] = { "HOME", - "PRELOAD_WINSOCK", "emacs_dir", "EMACSLOADPATH", + "EMACSDEBUGPATHS", "SHELL", "CMDPROXY", "EMACSDATA", "EMACSPATH", + "EMACSPACKAGEPATH", "EMACSLOCKDIR", - /* We no longer set INFOPATH because Info-default-directory-list - is then ignored. We use a hook in winnt.el instead. */ - /* "INFOPATH", */ - "EMACSDOC", - "TERM", + "INFOPATH" }; for (i = 0; i < countof (env_vars); i++) @@ -668,65 +665,6 @@ init_user_info (); } -/* We don't have scripts to automatically determine the system configuration - for Emacs before it's compiled, and we don't want to have to make the - user enter it, so we define EMACS_CONFIGURATION to invoke this runtime - routine. */ - -static char configuration_buffer[32]; - -const char * -get_emacs_configuration (void) -{ - char *arch, *oem, *os; - - /* Determine the processor type. */ - switch (get_processor_type ()) - { - -#ifdef PROCESSOR_INTEL_386 - case PROCESSOR_INTEL_386: - case PROCESSOR_INTEL_486: - case PROCESSOR_INTEL_PENTIUM: - arch = "i386"; - break; -#endif - -#ifdef PROCESSOR_INTEL_860 - case PROCESSOR_INTEL_860: - arch = "i860"; - break; -#endif - -#ifdef PROCESSOR_MIPS_R2000 - case PROCESSOR_MIPS_R2000: - case PROCESSOR_MIPS_R3000: - case PROCESSOR_MIPS_R4000: - arch = "mips"; - break; -#endif - -#ifdef PROCESSOR_ALPHA_21064 - case PROCESSOR_ALPHA_21064: - arch = "alpha"; - break; -#endif - - default: - arch = "unknown"; - break; - } - - /* Let oem be "*" until we figure out how to decode the OEM field. */ - oem = "*"; - - os = (GetVersion () & 0x80000000) ? "win95" : "nt"; - - sprintf (configuration_buffer, "%s-%s-%s%d.%d", arch, oem, os, - get_nt_major_version (), get_nt_minor_version ()); - return configuration_buffer; -} - #ifndef HAVE_X_WINDOWS /* X11R6 on NT provides the single parameter version of this command. */
--- a/src/ntheap.h Mon Aug 13 10:38:47 2007 +0200 +++ b/src/ntheap.h Mon Aug 13 10:39:40 2007 +0200 @@ -107,11 +107,6 @@ int open_output_file (file_data *p_file, char *name, unsigned long size); void close_file_data (file_data *p_file); -unsigned long get_section_size (PIMAGE_SECTION_HEADER p_section); - -/* Return pointer to section header for named section. */ -IMAGE_SECTION_HEADER * find_section (char * name, IMAGE_NT_HEADERS * nt_header); - /* Return pointer to section header for section containing the given relative virtual address. */ IMAGE_SECTION_HEADER * rva_to_section (DWORD rva, IMAGE_NT_HEADERS * nt_header);
--- a/src/process-nt.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/process-nt.c Mon Aug 13 10:39:40 2007 +0200 @@ -438,8 +438,23 @@ { /* SHGetFileInfo tends to return ERROR_FILE_NOT_FOUND on most errors. This leads to bogus error message. */ - DWORD image_type = SHGetFileInfo ((char *)XSTRING_DATA (program), 0,NULL, - 0, SHGFI_EXETYPE); + DWORD image_type; + char *p = strrchr ((char *)XSTRING_DATA (program), '.'); + if (p != NULL && + (stricmp (p, ".exe") == 0 || + stricmp (p, ".com") == 0 || + stricmp (p, ".bat") == 0 || + stricmp (p, ".cmd") == 0)) + { + image_type = SHGetFileInfo ((char *)XSTRING_DATA (program), 0,NULL, + 0, SHGFI_EXETYPE); + } + else + { + char progname[MAX_PATH]; + sprintf (progname, "%s.exe", (char *)XSTRING_DATA (program)); + image_type = SHGetFileInfo (progname, 0, NULL, 0, SHGFI_EXETYPE); + } if (image_type == 0) signal_cannot_launch (program, (GetLastError () == ERROR_FILE_NOT_FOUND ? ERROR_BAD_FORMAT : GetLastError ()));
--- a/src/process-unix.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/process-unix.c Mon Aug 13 10:39:40 2007 +0200 @@ -718,7 +718,7 @@ Lisp_Object *argv, int nargv, Lisp_Object program, Lisp_Object cur_dir) { - /* This function rewritten by wing@666.com. */ + /* This function rewritten by ben@xemacs.org. */ int pid, inchannel, outchannel; /* Use volatile to protect variables from being clobbered by longjmp. */
--- a/src/redisplay.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/redisplay.c Mon Aug 13 10:39:40 2007 +0200 @@ -5756,7 +5756,10 @@ /* print the current column */ case 'c': { - int col = current_column (b) + !!column_number_start_at_one; + Bufpos pt = (w == XWINDOW (Fselected_window (Qnil))) + ? BUF_PT (b) + : marker_position (w->pointm[type]); + int col = column_at_point (b, pt, 1) + !!column_number_start_at_one; char buf[32]; long_to_string (buf, col);
--- a/src/s/windowsnt.h Mon Aug 13 10:38:47 2007 +0200 +++ b/src/s/windowsnt.h Mon Aug 13 10:39:40 2007 +0200 @@ -328,10 +328,6 @@ #define getdisk() (_getdrive () - 1) #define getdefdir(_drv, _buf) _getdcwd (_drv, _buf, MAXPATHLEN) -#define EMACS_CONFIGURATION get_emacs_configuration () -const char *get_emacs_configuration (void); -#define EMACS_CONFIG_OPTIONS "NT" /* Not very meaningful yet. */ - #if 0 /* they do. -kkm */ /* Define this so that winsock.h definitions don't get included when windows.h is... I don't know if they do the right thing for emacs. For this to @@ -365,3 +361,12 @@ #define SYSTEM_PURESIZE_EXTRA 15000 /* ============================================================ */ + +/* See unexnt.c */ +#if (_MSC_VER >= 1100) +#define DUMP_SEPARATE_SECTION +#endif +#ifdef DUMP_SEPARATE_SECTION +#pragma data_seg("xdata") +#pragma bss_seg("xdata") +#endif
--- a/src/scrollbar.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/scrollbar.c Mon Aug 13 10:39:40 2007 +0200 @@ -603,7 +603,7 @@ completely at either window edge, we do this always, as users usually do not reposition scrollbars 200 times a second or so. Do you? */ - if (NILP (w->vertical_divider_draggable_p)) + if (NILP (w->vertical_divider_always_visible_p)) MARK_FRAME_WINDOWS_STRUCTURE_CHANGED (XFRAME (WINDOW_FRAME (w))); else MARK_WINDOWS_CHANGED (w);
--- a/src/toolbar-msw.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/toolbar-msw.c Mon Aug 13 10:39:40 2007 +0200 @@ -57,6 +57,7 @@ #endif #define MSWINDOWS_BUTTON_SHADOW_THICKNESS 2 #define MSWINDOWS_BLANK_SIZE 5 +#define MSWINDOWS_MINIMUM_TOOLBAR_SIZE 8 #define SET_TOOLBAR_WAS_VISIBLE_FLAG(frame, pos, flag) \ do { \ @@ -153,6 +154,16 @@ get_toolbar_coords (f, pos, &x, &y, &bar_width, &bar_height, &vert, 0); + /* ediff bogusly sets the height to 2 for some obscure X-specific + reason. This ensures that we only try and output a toolbar for + sensible sizes */ + if (bar_width < MSWINDOWS_MINIMUM_TOOLBAR_SIZE + || + bar_height < MSWINDOWS_MINIMUM_TOOLBAR_SIZE) + { + return; + } + if (x==1) x=0; @@ -300,7 +311,8 @@ /* need to build an image list for the bitmaps */ if (!ilist && !(ilist = ImageList_Create ( bmwidth, bmheight, - ILC_MASK | ILC_COLOR24, + (IMAGE_INSTANCE_MSWINDOWS_MASK (p) + ? ILC_MASK : 0) | ILC_COLOR24, nbuttons, nbuttons * 2 ))) { xfree (button_tbl);
--- a/src/unexaix.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/unexaix.c Mon Aug 13 10:39:40 2007 +0200 @@ -558,7 +558,7 @@ write (new, &symentry, SYMESZ); } - for (naux = symentry.n_numaux; naux != 0; --naux) + for (naux = symentry.n_numaux; naux-- != 0; ) { read (new, &auxentry, AUXESZ); nsyms++;
--- a/src/unexnt.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/unexnt.c Mon Aug 13 10:39:40 2007 +0200 @@ -22,11 +22,51 @@ /* Adapted for XEmacs by David Hobley <david@spook-le0.cia.com.au> */ +/* The linkers that come with MSVC >= 4.0 merge .bss into .data and reorder + * uninitialised data so that the .data section looks like: + * + * crt0 initialised data + * emacs initialised data + * <my_edata> + * library initialised data + * <start of bss part of .data> + * emacs static uninitialised data + * library static uninitialised data + * emacs global uninitialised data + * <my_ebss> + * library global uninitialised data + * + * This means that we can't use the normal my_ebss in lastfile.c trick to + * differentiate between unitialised data that belongs to emacs and + * uninitialised data that belongs to system libraries. This is bad because + * we do want to initialise the emacs data, but we don't want to initialise + * the system library data. + * + * To solve this problem using MSVC >= 5.0 we use a pragma directive to tell + * the compiler to put emacs's data (both initialised and uninitialised) in + * a separate section in the executable, and we only dump that section. This + * means that all files that define initialized data must include config.h + * to pick up the pragma. We don't try to make any part of that section + * read-only. + * + * This pragma directive isn't supported by the MSVC 4.x compiler. Instead, + * we dump crt0 initialised data and library static uninitialised data in + * addition to the emacs data. This is wrong, but we appear to be able to + * get away with it. A proper fix might involve the introduction of a static + * version of my_ebss in lastfile.c and a new firstfile.c file. jhar */ + +#include <config.h> #include <stdlib.h> /* _fmode */ #include <stdio.h> #include <fcntl.h> #include <windows.h> +/* From IMAGEHLP.H which is not installed by default by MSVC < 5 */ +/* The IMAGEHLP.DLL library is not distributed by default with Windows95 */ +PIMAGE_NT_HEADERS +(__stdcall * pfnCheckSumMappedFile) (LPVOID BaseAddress, DWORD FileLength, + LPDWORD HeaderSum, LPDWORD CheckSum); + #if 0 extern BOOL ctrl_c_handler (unsigned long type); #endif @@ -57,8 +97,10 @@ DWORD data_size = UNINIT_LONG; /* Cached info about the .bss section in the executable. */ -PUCHAR bss_start = UNINIT_PTR; -DWORD bss_size = UNINIT_LONG; +#ifndef DUMP_SEPARATE_SECTION +PUCHAR bss_start = 0; +DWORD bss_size = 0; +#endif #ifdef HAVE_NTGUI HINSTANCE hinst = NULL; @@ -74,6 +116,7 @@ void _start (void) { + char * p; extern void mainCRTStartup (void); /* Cache system info, e.g., the NT page size. */ @@ -92,6 +135,12 @@ { exit (1); } + + /* To allow profiling, make sure executable_path names the .exe + file, not the file created by the profiler */ + p = strrchr (executable_path, '\\'); + strcpy (p+1, PATH_PROGNAME ".exe"); + recreate_heap (executable_path); heap_state = HEAP_LOADED; } @@ -126,6 +175,7 @@ char out_filename[MAX_PATH], in_filename[MAX_PATH]; unsigned long size; char *ptr; + HANDLE hImagehelp; /* Make sure that the input and output filenames have the ".exe" extension...patch them up if they don't. */ @@ -174,6 +224,36 @@ copy_executable_and_dump_data_section (&in_file, &out_file); dump_bss_and_heap (&in_file, &out_file); + /* Patch up header fields; profiler is picky about this. */ + hImagehelp = LoadLibrary ("imagehlp.dll"); + if (hImagehelp) + { + PIMAGE_DOS_HEADER dos_header; + PIMAGE_NT_HEADERS nt_header; + DWORD headersum; + DWORD checksum; + + dos_header = (PIMAGE_DOS_HEADER) out_file.file_base; + nt_header = (PIMAGE_NT_HEADERS) ((char *) dos_header + dos_header->e_lfanew); + + nt_header->OptionalHeader.CheckSum = 0; +// nt_header->FileHeader.TimeDateStamp = time (NULL); +// dos_header->e_cp = size / 512; +// nt_header->OptionalHeader.SizeOfImage = size; + + pfnCheckSumMappedFile = (void *) GetProcAddress (hImagehelp, "CheckSumMappedFile"); + if (pfnCheckSumMappedFile) + { +// nt_header->FileHeader.TimeDateStamp = time (NULL); + pfnCheckSumMappedFile (out_file.file_base, + out_file.size, + &headersum, + &checksum); + nt_header->OptionalHeader.CheckSum = checksum; + } + FreeLibrary (hImagehelp); + } + close_file_data (&in_file); close_file_data (&out_file); } @@ -225,7 +305,7 @@ CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if (file == INVALID_HANDLE_VALUE) return FALSE; - + file_mapping = CreateFileMapping (file, NULL, PAGE_READWRITE, 0, size, NULL); if (!file_mapping) @@ -256,6 +336,7 @@ /* Routines to manipulate NT executable file sections. */ +#ifndef DUMP_SEPARATE_SECTION static void get_bss_info_from_map_file (file_data *p_infile, PUCHAR *p_bss_start, DWORD *p_bss_size) @@ -294,24 +375,7 @@ *p_bss_start = (PUCHAR) start; *p_bss_size = (DWORD) len; } - -/* Return pointer to section header for named section. */ -IMAGE_SECTION_HEADER * -find_section (char * name, IMAGE_NT_HEADERS * nt_header) -{ - PIMAGE_SECTION_HEADER section; - int i; - - section = IMAGE_FIRST_SECTION (nt_header); - - for (i = 0; i < nt_header->FileHeader.NumberOfSections; i++) - { - if (strcmp (section->Name, name) == 0) - return section; - section++; - } - return NULL; -} +#endif /* Return pointer to section header for section containing the given relative virtual address. */ @@ -325,26 +389,14 @@ for (i = 0; i < nt_header->FileHeader.NumberOfSections; i++) { - if (rva >= section->VirtualAddress && - rva < section->VirtualAddress + section->SizeOfRawData) + if (rva >= section->VirtualAddress + && rva < section->VirtualAddress + section->SizeOfRawData) return section; section++; } return NULL; } -static unsigned long -get_section_size (PIMAGE_SECTION_HEADER p_section) -{ - /* The section size is in different locations in the different versions. */ - switch (get_nt_minor_version ()) - { - case 10: - return p_section->SizeOfRawData; - default: - return p_section->Misc.VirtualSize; - } -} /* Flip through the executable and cache the info necessary for dumping. */ static void @@ -382,18 +434,23 @@ section = (PIMAGE_SECTION_HEADER) IMAGE_FIRST_SECTION (nt_header); for (i = 0; i < nt_header->FileHeader.NumberOfSections; i++) { +#ifndef DUMP_SEPARATE_SECTION if (!strcmp (section->Name, ".bss")) { - /* The .bss section. */ + extern int my_ebss; /* From lastfile.c */ + ptr = (char *) nt_header->OptionalHeader.ImageBase + section->VirtualAddress; bss_start = ptr; - bss_size = get_section_size (section); + bss_size = (char*)&my_ebss - (char*)bss_start; } + if (!strcmp (section->Name, ".data")) +#else + if (!strcmp (section->Name, "xdata")) +#endif { - /* From lastfile.c */ - extern char my_edata[]; + extern char my_edata[]; /* From lastfile.c */ /* The .data section. */ data_section = section; @@ -402,16 +459,27 @@ data_start_va = ptr; data_start_file = section->PointerToRawData; - /* We want to only write Emacs data back to the executable, - not any of the library data (if library data is included, - then a dumped Emacs won't run on system versions other - than the one Emacs was dumped on). */ +#ifndef DUMP_SEPARATE_SECTION + /* Write only the part of the section that contains emacs data. */ data_size = my_edata - data_start_va; +#else + /* Write back the full section. */ + data_size = section->SizeOfRawData; + + /* This code doesn't know how to grow the raw size of a section. */ + if (section->SizeOfRawData < section->Misc.VirtualSize) + { + printf ("The emacs data section is smaller than expected" + "...bailing.\n"); + exit (1); + } +#endif } section++; } - if (bss_start == UNINIT_PTR && bss_size == UNINIT_LONG) +#ifndef DUMP_SEPARATE_SECTION + if (!bss_start) { /* Starting with MSVC 4.0, the .bss section has been eliminated and appended virtually to the end of the .data section. Our @@ -421,10 +489,14 @@ is a rounded number and is typically rounded just beyond the start of the .bss section. To find the start and size of the .bss section exactly, we have to peek into the map file. */ + extern int my_ebss; + get_bss_info_from_map_file (p_infile, &ptr, &bss_size); bss_start = ptr + nt_header->OptionalHeader.ImageBase + data_section->VirtualAddress; + bss_size = (char*)&my_ebss - (char*)bss_start; } +#endif } @@ -457,7 +529,7 @@ memcpy (p_outfile->file_base, p_infile->file_base, size); size = data_size; - DUMP_MSG (("Dumping .data section...\n")); + DUMP_MSG (("Dumping data section...\n")); DUMP_MSG (("\t0x%08x Address in process.\n", data_va)); DUMP_MSG (("\t0x%08x Offset in output file.\n", data_file - p_outfile->file_base)); @@ -480,7 +552,7 @@ unsigned char *heap_data, *bss_data; unsigned long size, index; - DUMP_MSG (("Dumping heap into executable...\n")); + DUMP_MSG (("Dumping heap onto end of executable...\n")); index = heap_index_in_executable; size = get_committed_heap_size (); @@ -492,7 +564,8 @@ memcpy ((PUCHAR) p_outfile->file_base + index, heap_data, size); - DUMP_MSG (("Dumping .bss into executable...\n")); +#ifndef DUMP_SEPARATE_SECTION + printf ("Dumping bss onto end of executable...\n"); index += size; size = bss_size; @@ -502,6 +575,7 @@ DUMP_MSG (("\t0x%08x BSS offset in executable.\n", index)); DUMP_MSG (("\t0x%08x BSS size in bytes.\n", size)); memcpy ((char *) p_outfile->file_base + index, bss_data, size); +#endif } #undef DUMP_MSG @@ -510,9 +584,11 @@ /* Load the dumped .bss section into the .bss area of our address space. */ +/* Already done if the .bss was part of a separate emacs data section */ void read_in_bss (char *filename) { +#ifndef DUMP_SEPARATE_SECTION HANDLE file; unsigned long index, n_read; @@ -532,6 +608,7 @@ abort (); CloseHandle (file); +#endif } /* Map the heap dumped into the executable file into our address space. */
--- a/src/window.c Mon Aug 13 10:38:47 2007 +0200 +++ b/src/window.c Mon Aug 13 10:39:40 2007 +0200 @@ -69,7 +69,7 @@ Lisp_Object Vmodeline_shadow_thickness; /* Whether vertical dividers are draggable and displayed */ -Lisp_Object Vvertical_divider_draggable_p; +Lisp_Object Vvertical_divider_always_visible_p; /* Whether a modeline should be displayed. */ Lisp_Object Vhas_modeline_p; @@ -742,7 +742,7 @@ return 0; /* Always if draggable */ - if (!NILP (w->vertical_divider_draggable_p)) + if (!NILP (w->vertical_divider_always_visible_p)) return 1; #ifdef HAVE_SCROLLBARS @@ -5618,24 +5618,27 @@ some_window_value_changed, 0, 0); - DEFVAR_SPECIFIER ("vertical-divider-draggable-p", &Vvertical_divider_draggable_p /* -*Should XEmacs allow resizing windows by dragging vertical dividers. -When t, vertical dividers are always shown, and are draggable. -When nil, vertical dividers are shown only when there are no scrollbars -in between windows, and not draggable. + DEFVAR_SPECIFIER ("vertical-divider-always-visible-p", + &Vvertical_divider_always_visible_p /* +*Should XEmacs always display vertical dividers between windows. + +When this is non-nil, vertical dividers are always shown, and are +draggable. When it is nil, vertical dividers are shown only when +there are no scrollbars in between windows, and are not draggable. + This is a specifier; use `set-specifier' to change it. */ ); - Vvertical_divider_draggable_p = Fmake_specifier (Qboolean); - set_specifier_fallback (Vvertical_divider_draggable_p, + Vvertical_divider_always_visible_p = Fmake_specifier (Qboolean); + set_specifier_fallback (Vvertical_divider_always_visible_p, list1 (Fcons (Qnil, Qt))); - set_specifier_caching (Vvertical_divider_draggable_p, + set_specifier_caching (Vvertical_divider_always_visible_p, slot_offset (struct window, - vertical_divider_draggable_p), + vertical_divider_always_visible_p), vertical_divider_changed_in_window, 0, 0); DEFVAR_SPECIFIER ("vertical-divider-shadow-thickness", &Vvertical_divider_shadow_thickness /* -*How thick to draw shadows around the vertical dividers. +*How thick to draw 3D shadows around vertical dividers. This is a specifier; use `set-specifier' to change it. */ ); Vvertical_divider_shadow_thickness = Fmake_specifier (Qinteger); @@ -5651,9 +5654,9 @@ DEFVAR_SPECIFIER ("vertical-divider-line-width", &Vvertical_divider_line_width /* *The width of the vertical dividers, not including shadows. -For TTY windows, divider line is always one character wide. When +For TTY windows, divider line is always one character wide. When instance of this specifier is zero in a TTY window, no divider is -drawn at all between windows. When non-zero, one character wide +drawn at all between windows. When non-zero, a one character wide divider is displayed. This is a specifier; use `set-specifier' to change it.
--- a/src/winslots.h Mon Aug 13 10:38:47 2007 +0200 +++ b/src/winslots.h Mon Aug 13 10:39:40 2007 +0200 @@ -59,8 +59,8 @@ WINDOW_SLOT (vertical_divider_line_width, EQ); /* Spacing between outer egde of divider border and window edge */ WINDOW_SLOT (vertical_divider_spacing, EQ); - /* Whether vertical dividers are draggable and displayed */ - WINDOW_SLOT (vertical_divider_draggable_p, EQ); + /* Whether vertical dividers are always displayed */ + WINDOW_SLOT (vertical_divider_always_visible_p, EQ); #ifdef HAVE_SCROLLBARS /* Width of vertical scrollbars. */
--- a/version.sh Mon Aug 13 10:38:47 2007 +0200 +++ b/version.sh Mon Aug 13 10:39:40 2007 +0200 @@ -2,7 +2,7 @@ emacs_major_version=21 emacs_minor_version=0 emacs_beta_version= -xemacs_codename="Toggenburg" -infodock_major_version=3 -infodock_minor_version=90 -infodock_build_version=10 +xemacs_codename="Uzbek Black" +infodock_major_version=4 +infodock_minor_version=0 +infodock_build_version=1