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