From 6883ee56ec887c2c48abe5b06b5e66aa74031910 Mon Sep 17 00:00:00 2001 From: tomo Date: Mon, 17 May 1999 09:41:31 +0000 Subject: [PATCH] XEmacs 21.2-b1 --- BUGS | 25 + COPYING | 341 + GETTING.GNU.SOFTWARE | 120 + INSTALL | 766 ++ PROBLEMS | 1475 +++ README | 63 + aclocal.m4 | 99 + config.guess | 893 ++ config.sub | 915 ++ configure.usage | 249 + dynodump/Makefile.in.in | 86 + dynodump/README | 101 + dynodump/_dynodump.h | 65 + dynodump/dynodump.c | 560 + dynodump/i386/_relocate.c | 118 + dynodump/i386/machdep.h | 93 + dynodump/i386/uninit.c | 44 + dynodump/ppc/_relocate.c | 269 + dynodump/ppc/machdep.h | 88 + dynodump/ppc/uninit.c | 55 + dynodump/sparc/_relocate.c | 294 + dynodump/sparc/machdep.h | 91 + dynodump/sparc/uninit.c | 45 + dynodump/syms.c | 73 + etc/BETA | 366 + etc/CHARSETS | 57 + etc/CODING-STANDARDS | 81 + etc/CODINGS | 74 + etc/COPYING | 341 + etc/COPYING.LIB | 483 + etc/DEBUG | 143 + etc/DISTRIB | 136 + etc/Emacs.ad | 284 + etc/FTP | 282 + etc/GNU | 532 + etc/HELLO | 38 + etc/InstallGuide | 112 + etc/LPF | 122 + etc/MACHINES | 1261 +++ etc/MAILINGLISTS | 1206 ++ etc/MORE.STUFF | 52 + etc/MOTIVATION | 176 + etc/NEWS | 506 + etc/OONEWS | 5526 +++++++++ etc/ORDERS | 4343 ++++++++ etc/ORDERS.EUROPE | 6 + etc/ORDERS.JAPAN | 246 + etc/PACKAGES | 324 + etc/README | 80 + etc/README.HYPERBOLE | 6 + etc/README.OO-BROWSER | 6 + etc/SERVICE | 935 ++ etc/TERMS | 229 + etc/TUTORIAL | 1114 ++ etc/TUTORIAL.de | 1159 ++ etc/TUTORIAL.fr | 1085 ++ etc/TUTORIAL.hr | 1128 ++ etc/TUTORIAL.ja | 741 ++ etc/TUTORIAL.ko | 776 ++ etc/TUTORIAL.no | 1125 ++ etc/TUTORIAL.pl | 1170 ++ etc/TUTORIAL.ro | 1205 ++ etc/TUTORIAL.ru | 1082 ++ etc/TUTORIAL.th | 696 ++ etc/XKeysymDB | 204 + etc/aliases.ksh | 60 + etc/cbx.png | Bin 0 -> 3412 bytes etc/check_cygwin_setup.sh | 188 + etc/ctags.1 | 1 + etc/custom/check0.xpm | 17 + etc/custom/check1.xpm | 17 + etc/custom/choose-down.png | Bin 0 -> 497 bytes etc/custom/choose-up.png | Bin 0 -> 497 bytes etc/custom/done-down.png | Bin 0 -> 418 bytes etc/custom/done-up.png | Bin 0 -> 418 bytes etc/custom/down-pushed.xpm | 18 + etc/custom/down.xpm | 18 + etc/custom/face.xpm | 28 + etc/custom/folder.xpm | 28 + etc/custom/open-down.png | Bin 0 -> 440 bytes etc/custom/open-up.png | Bin 0 -> 440 bytes etc/custom/option.xpm | 28 + etc/custom/radio0.xpm | 18 + etc/custom/radio1.xpm | 18 + etc/custom/reset-down.png | Bin 0 -> 489 bytes etc/custom/reset-up.png | Bin 0 -> 489 bytes etc/custom/right-pushed.xpm | 18 + etc/custom/right.xpm | 18 + etc/custom/save-down.png | Bin 0 -> 429 bytes etc/custom/save-up.png | Bin 0 -> 429 bytes etc/custom/set-down.png | Bin 0 -> 398 bytes etc/custom/set-up.png | Bin 0 -> 398 bytes etc/custom/state-down.png | Bin 0 -> 449 bytes etc/custom/state-up.png | Bin 0 -> 449 bytes etc/custom/toggle-off-down.png | Bin 0 -> 508 bytes etc/custom/toggle-off-up.png | Bin 0 -> 507 bytes etc/custom/toggle-on-down.png | Bin 0 -> 494 bytes etc/custom/toggle-on-up.png | Bin 0 -> 493 bytes etc/editclient.sh | 13 + etc/emacskeys.sco | 220 + etc/emacsstrs.sco | 97 + etc/eos/eos-build.xbm | 11 + etc/eos/eos-clear-at.xbm | 11 + etc/eos/eos-cont.xbm | 11 + etc/eos/eos-dismiss.xbm | 11 + etc/eos/eos-down.xbm | 11 + etc/eos/eos-evaluate-star.xbm | 11 + etc/eos/eos-evaluate.xbm | 11 + etc/eos/eos-fix.xbm | 11 + etc/eos/eos-intro.xbm | 11 + etc/eos/eos-introB.xbm | 11 + etc/eos/eos-introD.xbm | 11 + etc/eos/eos-introDB.xbm | 11 + etc/eos/eos-run.xbm | 11 + etc/eos/eos-run2.xbm | 11 + etc/eos/eos-step-into.xbm | 11 + etc/eos/eos-step-over.xbm | 11 + etc/eos/eos-stop-in.xbm | 11 + etc/eos/eos-stop.xbm | 11 + etc/eos/eos-type.xbm | 11 + etc/eos/eos-up.xbm | 11 + etc/etags.1 | 227 + etc/gnu.xbm | 33 + etc/gnu.xpm | 67 + etc/gnuattach.1 | 1 + etc/gnuclient.1 | 1 + etc/gnudoit.1 | 1 + etc/gnuserv.1 | 294 + etc/gnuserv.README | 103 + etc/gray1.xbm | 6 + etc/idd/drop | 8 + etc/idd/dropmsk | 8 + etc/ms-kermit | 167 + etc/ms-kermit-7bit | 312 + etc/recycle.xpm | 66 + etc/recycle2.xpm | 42 + etc/refcard.ps.gz | Bin 0 -> 22139 bytes etc/refcard.tex | 653 ++ etc/sample.Xdefaults | 288 + etc/sink.xbm | 33 + etc/sparcworks/SW.Editor.xpm | 88 + etc/sparcworks/sunpro-mailcap | 1 + etc/tests/external-widget/Makefile | 30 + etc/tests/external-widget/test-ew-motif.c | 145 + etc/tests/external-widget/test-ew-xlib.c | 361 + etc/toolbar/compile-cap-up.xpm | 43 + etc/toolbar/compile-cap-xx.xpm | 42 + etc/toolbar/compile-dn.xbm | 11 + etc/toolbar/compile-up.xbm | 11 + etc/toolbar/compile-up.xpm | 37 + etc/toolbar/compile-xx.xbm | 11 + etc/toolbar/compile-xx.xpm | 37 + etc/toolbar/copy-cap-up.xpm | 41 + etc/toolbar/copy-cap-xx.xpm | 40 + etc/toolbar/copy-dn.xbm | 11 + etc/toolbar/copy-up.xbm | 11 + etc/toolbar/copy-up.xpm | 35 + etc/toolbar/copy-xx.xbm | 11 + etc/toolbar/copy-xx.xpm | 35 + etc/toolbar/cut-cap-up.xpm | 40 + etc/toolbar/cut-cap-xx.xpm | 40 + etc/toolbar/cut-dn.xbm | 11 + etc/toolbar/cut-up.xbm | 11 + etc/toolbar/cut-up.xpm | 35 + etc/toolbar/cut-xx.xbm | 11 + etc/toolbar/cut-xx.xpm | 35 + etc/toolbar/debug-cap-up.xpm | 43 + etc/toolbar/debug-cap-xx.xpm | 42 + etc/toolbar/debug-dn.xbm | 11 + etc/toolbar/debug-up.xbm | 11 + etc/toolbar/debug-up.xpm | 37 + etc/toolbar/debug-xx.xbm | 11 + etc/toolbar/debug-xx.xpm | 37 + etc/toolbar/disk-cap-up.xpm | 42 + etc/toolbar/disk-cap-xx.xpm | 41 + etc/toolbar/disk-dn.xbm | 11 + etc/toolbar/disk-up.xbm | 11 + etc/toolbar/disk-up.xpm | 36 + etc/toolbar/disk-xx.xbm | 11 + etc/toolbar/disk-xx.xpm | 36 + etc/toolbar/file-cap-up.xpm | 41 + etc/toolbar/file-cap-xx.xpm | 40 + etc/toolbar/file-dn.xbm | 11 + etc/toolbar/file-up.xbm | 11 + etc/toolbar/file-up.xpm | 35 + etc/toolbar/file-xx.xbm | 11 + etc/toolbar/file-xx.xpm | 35 + etc/toolbar/folder-cap-up.xpm | 41 + etc/toolbar/folder-cap-xx.xpm | 40 + etc/toolbar/folder-dn.xbm | 11 + etc/toolbar/folder-up.xbm | 11 + etc/toolbar/folder-up.xpm | 35 + etc/toolbar/folder-xx.xbm | 11 + etc/toolbar/folder-xx.xpm | 35 + etc/toolbar/info-def-cap-up.xpm | 38 + etc/toolbar/info-def-cap-xx.xpm | 38 + etc/toolbar/info-def-dn.xbm | 11 + etc/toolbar/info-def-up.xbm | 11 + etc/toolbar/info-def-up.xpm | 33 + etc/toolbar/info-def-xx.xbm | 11 + etc/toolbar/info-def-xx.xpm | 33 + etc/toolbar/info-exit-cap-up.xpm | 43 + etc/toolbar/info-exit-cap-xx.xpm | 43 + etc/toolbar/info-exit-dn.xbm | 12 + etc/toolbar/info-exit-up.xbm | 12 + etc/toolbar/info-exit-up.xpm | 43 + etc/toolbar/info-exit-xx.xbm | 12 + etc/toolbar/info-exit-xx.xpm | 43 + etc/toolbar/info-exit.xbm | 12 + etc/toolbar/info-exit.xpm | 43 + etc/toolbar/info-next-cap-up.xpm | 38 + etc/toolbar/info-next-cap-xx.xpm | 38 + etc/toolbar/info-next-dn.xbm | 11 + etc/toolbar/info-next-up.xbm | 11 + etc/toolbar/info-next-up.xpm | 38 + etc/toolbar/info-next-xx.xbm | 11 + etc/toolbar/info-next-xx.xpm | 38 + etc/toolbar/info-next.xbm | 11 + etc/toolbar/info-next.xpm | 38 + etc/toolbar/info-prev-cap-up.xpm | 36 + etc/toolbar/info-prev-cap-xx.xpm | 36 + etc/toolbar/info-prev-dn.xbm | 11 + etc/toolbar/info-prev-up.xbm | 11 + etc/toolbar/info-prev-up.xpm | 36 + etc/toolbar/info-prev-xx.xbm | 11 + etc/toolbar/info-prev-xx.xpm | 36 + etc/toolbar/info-prev.xbm | 11 + etc/toolbar/info-prev.xpm | 36 + etc/toolbar/info-up-cap-up.xpm | 36 + etc/toolbar/info-up-cap-xx.xpm | 36 + etc/toolbar/info-up-dn.xbm | 11 + etc/toolbar/info-up-up.xbm | 11 + etc/toolbar/info-up-up.xpm | 36 + etc/toolbar/info-up-xx.xbm | 11 + etc/toolbar/info-up-xx.xpm | 36 + etc/toolbar/info-up.xbm | 11 + etc/toolbar/info-up.xpm | 36 + etc/toolbar/last-win-cap-up.xpm | 41 + etc/toolbar/last-win-cap-xx.xpm | 41 + etc/toolbar/last-win-dn.xbm | 11 + etc/toolbar/last-win-up.xbm | 11 + etc/toolbar/last-win-up.xpm | 36 + etc/toolbar/last-win-xx.xbm | 11 + etc/toolbar/last-win-xx.xpm | 36 + etc/toolbar/mail-cap-up.xpm | 42 + etc/toolbar/mail-cap-xx.xpm | 41 + etc/toolbar/mail-dn.xbm | 11 + etc/toolbar/mail-up.xbm | 11 + etc/toolbar/mail-up.xpm | 36 + etc/toolbar/mail-xx.xbm | 11 + etc/toolbar/mail-xx.xpm | 36 + etc/toolbar/news-cap-up.xpm | 42 + etc/toolbar/news-cap-xx.xpm | 41 + etc/toolbar/news-dn.xbm | 11 + etc/toolbar/news-up.xbm | 11 + etc/toolbar/news-up.xpm | 36 + etc/toolbar/news-xx.xbm | 11 + etc/toolbar/news-xx.xpm | 36 + etc/toolbar/next-win-cap-up.xpm | 41 + etc/toolbar/next-win-cap-xx.xpm | 41 + etc/toolbar/next-win-dn.xbm | 11 + etc/toolbar/next-win-up.xbm | 11 + etc/toolbar/next-win-up.xpm | 38 + etc/toolbar/next-win-xx.xbm | 11 + etc/toolbar/next-win-xx.xpm | 38 + etc/toolbar/paste-cap-up.xpm | 42 + etc/toolbar/paste-cap-xx.xpm | 41 + etc/toolbar/paste-dn.xbm | 11 + etc/toolbar/paste-up.xbm | 11 + etc/toolbar/paste-up.xpm | 36 + etc/toolbar/paste-xx.xbm | 11 + etc/toolbar/paste-xx.xpm | 36 + etc/toolbar/printer-cap-up.xpm | 43 + etc/toolbar/printer-cap-xx.xpm | 42 + etc/toolbar/printer-dn.xbm | 11 + etc/toolbar/printer-up.xbm | 11 + etc/toolbar/printer-up.xpm | 37 + etc/toolbar/printer-xx.xbm | 11 + etc/toolbar/printer-xx.xpm | 37 + etc/toolbar/replace-cap-up.xpm | 38 + etc/toolbar/replace-cap-xx.xpm | 38 + etc/toolbar/replace-dn.xbm | 11 + etc/toolbar/replace-up.xbm | 11 + etc/toolbar/replace-up.xpm | 33 + etc/toolbar/replace-xx.xbm | 11 + etc/toolbar/replace-xx.xpm | 33 + etc/toolbar/spell-cap-up.xpm | 43 + etc/toolbar/spell-cap-xx.xpm | 42 + etc/toolbar/spell-dn.xbm | 11 + etc/toolbar/spell-up.xbm | 11 + etc/toolbar/spell-up.xpm | 37 + etc/toolbar/spell-xx.xbm | 11 + etc/toolbar/spell-xx.xpm | 37 + etc/toolbar/undo-cap-up.xpm | 42 + etc/toolbar/undo-cap-xx.xpm | 41 + etc/toolbar/undo-dn.xbm | 11 + etc/toolbar/undo-up.xbm | 11 + etc/toolbar/undo-up.xpm | 36 + etc/toolbar/undo-xx.xbm | 11 + etc/toolbar/undo-xx.xpm | 36 + etc/toolbar/workshop-cap-up.xpm | 45 + etc/toolbar/workshop-cap-xx.xpm | 44 + etc/toolbar/workshop-up.xpm | 39 + etc/toolbar/workshop-xx.xpm | 39 + etc/trash.xpm | 58 + etc/xemacs-beta.xpm | 170 + etc/xemacs-fe.sh | 316 + etc/xemacs-icon.xpm | 67 + etc/xemacs-icon2.xbm | 27 + etc/xemacs-icon2.xpm | 62 + etc/xemacs-icon3.xpm | 65 + etc/xemacs-ja.1 | 776 ++ etc/xemacs.1 | 791 ++ etc/xemacs.xbm | 142 + etc/xemacs.xpm | 177 + info/dir | 60 + install.sh | 236 + lib-src/ChangeLog | 524 + lib-src/Makefile.in.in | 363 + lib-src/README | 3 + lib-src/ad2c | 39 + lib-src/add-big-package.sh | 64 + lib-src/b2m.c | 263 + lib-src/config.values.in | 125 + lib-src/config.values.sh | 76 + lib-src/cvtmail.c | 165 + lib-src/digest-doc.c | 52 + lib-src/emacs.csh | 25 + lib-src/etags.c | 5084 +++++++++ lib-src/fakemail.c | 680 ++ lib-src/getopt.c | 1032 ++ lib-src/getopt.h | 133 + lib-src/getopt1.c | 171 + lib-src/gnuattach | 23 + lib-src/gnuclient.c | 659 ++ lib-src/gnudepend.pl | 46 + lib-src/gnudoit | 36 + lib-src/gnuserv.c | 915 ++ lib-src/gnuserv.h | 225 + lib-src/gnuslib.c | 456 + lib-src/gzip-el.sh | 37 + lib-src/hexl.c | 252 + lib-src/installexe.sh | 21 + lib-src/leditcfns.c | 20 + lib-src/make-docfile.c | 1063 ++ lib-src/make-msgfile.c | 480 + lib-src/make-msgfile.lex | 681 ++ lib-src/make-path.c | 91 + lib-src/make-po.c | 301 + lib-src/mmencode.c | 522 + lib-src/movemail.c | 696 ++ lib-src/ootags.c | 5432 +++++++++ lib-src/pop.c | 1504 +++ lib-src/pop.h | 82 + lib-src/profile.c | 96 + lib-src/qsort.c | 237 + lib-src/rcs-checkin | 98 + lib-src/rcs2log | 650 ++ lib-src/sorted-doc.c | 270 + lib-src/tcp.c | 236 + lib-src/update-autoloads.sh | 127 + lib-src/update-custom.sh | 100 + lib-src/vcdiff | 106 + lib-src/wakeup.c | 63 + lib-src/yow.c | 178 + lisp/ChangeLog.1 | 8056 ++++++++++++++ lisp/README | 52 + lisp/abbrev.el | 544 + lisp/about.el | 1519 +++ lisp/alist.el | 101 + lisp/apropos.el | 690 ++ lisp/auto-save.el | 547 + lisp/auto-show.el | 203 + lisp/autoload.el | 564 + lisp/backquote.el | 304 + lisp/blessmail.el | 71 + lisp/buff-menu.el | 639 ++ lisp/buffer.el | 112 + lisp/build-report.el | 294 + lisp/byte-optimize.el | 1969 ++++ lisp/bytecomp-runtime.el | 241 + lisp/callers-of-rpt.el | 119 + lisp/check-features.el | 58 + lisp/cl-compat.el | 194 + lisp/cl-extra.el | 944 ++ lisp/cl-macs.el | 2813 +++++ lisp/cl-seq.el | 938 ++ lisp/cl.el | 761 ++ lisp/cmdloop.el | 570 + lisp/code-files.el | 564 + lisp/code-process.el | 258 + lisp/coding.el | 214 + lisp/config.el | 70 + lisp/console.el | 49 + lisp/cus-dep.el | 180 + lisp/cus-edit.el | 3268 ++++++ lisp/cus-face.el | 255 + lisp/cus-load.el | 63 + lisp/cus-start.el | 194 + lisp/custom.el | 405 + lisp/derived.el | 363 + lisp/device.el | 113 + lisp/dialog.el | 157 + lisp/disass.el | 272 + lisp/disp-table.el | 208 + lisp/dragdrop.el | 424 + lisp/easymenu.el | 217 + lisp/etags.el | 1205 ++ lisp/events.el | 160 + lisp/extents.el | 102 + lisp/faces.el | 1702 +++ lisp/files-nomule.el | 96 + lisp/fill.el | 1077 ++ lisp/find-paths.el | 298 + lisp/finder.el | 406 + lisp/float-sup.el | 67 + lisp/font-lock.el | 2583 +++++ lisp/font.el | 1402 +++ lisp/fontl-hooks.el | 87 + lisp/frame.el | 1290 +++ lisp/glyphs.el | 695 ++ lisp/gnuserv.el | 784 ++ lisp/gui.el | 122 + lisp/help-macro.el | 174 + lisp/help-nomule.el | 106 + lisp/help.el | 1419 +++ lisp/hyper-apropos.el | 1311 +++ lisp/indent.el | 480 + lisp/info.el | 3106 ++++++ lisp/isearch-mode.el | 1624 +++ lisp/itimer-autosave.el | 114 + lisp/itimer.el | 873 ++ lisp/keydefs.el | 637 ++ lisp/keymap.el | 493 + lisp/ldap.el | 93 + lisp/lib-complete.el | 339 + lisp/lisp-mnt.el | 575 + lisp/lisp-mode.el | 1029 ++ lisp/lisp.el | 357 + lisp/list-mode.el | 593 + lisp/loaddefs.el | 182 + lisp/loadhist.el | 159 + lisp/loadup-el.el | 25 + lisp/loadup.el | 217 + lisp/make-docfile.el | 197 + lisp/map-ynp.el | 292 + lisp/menubar-items.el | 1486 +++ lisp/menubar.el | 537 + lisp/minibuf.el | 2133 ++++ lisp/misc.el | 68 + lisp/mode-motion.el | 147 + lisp/modeline.el | 622 ++ lisp/mouse.el | 1516 +++ lisp/msw-faces.el | 173 + lisp/msw-glyphs.el | 90 + lisp/msw-init.el | 73 + lisp/msw-mouse.el | 48 + lisp/msw-select.el | 107 + lisp/multicast.el | 81 + lisp/mwheel.el | 117 + lisp/objects.el | 149 + lisp/package-admin.el | 80 + lisp/package-get.el | 511 + lisp/package-info.el | 128 + lisp/packages.el | 514 + lisp/page.el | 157 + lisp/paragraphs.el | 411 + lisp/paths.el | 269 + lisp/picture.el | 664 ++ lisp/process.el | 352 + lisp/rect.el | 256 + lisp/register.el | 289 + lisp/replace.el | 854 ++ lisp/scrollbar.el | 138 + lisp/select.el | 294 + lisp/shadow.el | 237 + lisp/simple.el | 4049 +++++++ lisp/site-load.el | 62 + lisp/sound.el | 191 + lisp/specifier.el | 524 + lisp/subr.el | 672 ++ lisp/symbol-syntax.el | 129 + lisp/symbols.el | 177 + lisp/syntax.el | 418 + lisp/term/AT386.el | 61 + lisp/term/README | 214 + lisp/term/apollo.el | 732 ++ lisp/term/bg-mouse.el | 312 + lisp/term/bobcat.el | 2 + lisp/term/internal.el | 81 + lisp/term/keyswap.el | 33 + lisp/term/linux.el | 81 + lisp/term/lk201.el | 95 + lisp/term/news.el | 73 + lisp/term/pc-win.el | 204 + lisp/term/scoansi.el | 148 + lisp/term/sun-mouse.el | 673 ++ lisp/term/sun.el | 279 + lisp/term/sup-mouse.el | 207 + lisp/term/tvi970.el | 126 + lisp/term/vt-control.el | 106 + lisp/term/vt100-led.el | 67 + lisp/term/vt100.el | 54 + lisp/term/vt102.el | 1 + lisp/term/vt125.el | 1 + lisp/term/vt200.el | 6 + lisp/term/vt201.el | 7 + lisp/term/vt220.el | 7 + lisp/term/vt240.el | 6 + lisp/term/vt300.el | 4 + lisp/term/vt320.el | 4 + lisp/term/vt400.el | 4 + lisp/term/vt420.el | 4 + lisp/term/win32-win.el | 610 + lisp/term/wyse50.el | 150 + lisp/term/xterm.el | 118 + lisp/text-mode.el | 192 + lisp/text-props.el | 401 + lisp/toolbar-items.el | 598 + lisp/toolbar.el | 201 + lisp/tty-init.el | 107 + lisp/undo-stack.el | 269 + lisp/userlock.el | 235 + lisp/very-early-lisp.el | 74 + lisp/view-less.el | 403 + lisp/wid-browse.el | 300 + lisp/wid-edit.el | 3714 +++++++ lisp/widget.el | 77 + lisp/window-xemacs.el | 613 + lisp/window.el | 357 + lisp/x-compose.el | 847 ++ lisp/x-faces.el | 742 ++ lisp/x-font-menu.el | 564 + lisp/x-init.el | 380 + lisp/x-iso8859-1.el | 273 + lisp/x-misc.el | 86 + lisp/x-mouse.el | 182 + lisp/x-scrollbar.el | 104 + lisp/x-select.el | 502 + lisp/x-win-sun.el | 258 + lisp/x-win-xfree86.el | 64 + lwlib/Makefile.in.in | 105 + lwlib/config.h.in | 32 + lwlib/lwlib-Xaw.c | 625 ++ lwlib/lwlib-Xaw.h | 31 + lwlib/lwlib-Xlw.c | 407 + lwlib/lwlib-Xlw.h | 29 + lwlib/lwlib-Xm.c | 1943 ++++ lwlib/lwlib-Xm.h | 36 + lwlib/lwlib-config.c | 90 + lwlib/lwlib-internal.h | 59 + lwlib/lwlib-utils.c | 166 + lwlib/lwlib-utils.h | 23 + lwlib/lwlib.c | 1302 +++ lwlib/lwlib.h | 208 + lwlib/xlwmenu.c | 3607 ++++++ lwlib/xlwmenu.h | 93 + lwlib/xlwmenuP.h | 120 + lwlib/xlwscrollbar.c | 1902 ++++ lwlib/xlwscrollbar.h | 143 + lwlib/xlwscrollbarP.h | 136 + man/ChangeLog | 670 ++ man/Makefile | 156 + man/README | 15 + man/cl.texi | 5755 ++++++++++ man/custom.texi | 423 + man/external-widget.texi | 123 + man/info.texi | 911 ++ man/internals/internals.texi | 7332 ++++++++++++ man/lispref/abbrevs.texi | 340 + man/lispref/annotations.texi | 340 + man/lispref/back.texi | 33 + man/lispref/backups.texi | 648 ++ man/lispref/buffers.texi | 929 ++ man/lispref/building.texi | 492 + man/lispref/commands.texi | 2422 ++++ man/lispref/compile.texi | 813 ++ man/lispref/consoles-devices.texi | 272 + man/lispref/control.texi | 1148 ++ man/lispref/databases.texi | 92 + man/lispref/debugging.texi | 753 ++ man/lispref/dialog.texi | 67 + man/lispref/display.texi | 1193 ++ man/lispref/dragndrop.texi | 128 + man/lispref/edebug-inc.texi | 1699 +++ man/lispref/edebug.texi | 310 + man/lispref/errors.texi | 196 + man/lispref/eval.texi | 709 ++ man/lispref/extents.texi | 933 ++ man/lispref/faces.texi | 686 ++ man/lispref/files.texi | 2321 ++++ man/lispref/frames.texi | 946 ++ man/lispref/functions.texi | 1142 ++ man/lispref/glyphs.texi | 1054 ++ man/lispref/hash-tables.texi | 151 + man/lispref/help.texi | 734 ++ man/lispref/hooks.texi | 281 + man/lispref/internationalization.texi | 197 + man/lispref/intro.texi | 876 ++ man/lispref/keymaps.texi | 1577 +++ man/lispref/ldap.texi | 299 + man/lispref/lispref.texi | 1223 ++ man/lispref/lists.texi | 1819 +++ man/lispref/loading.texi | 779 ++ man/lispref/locals.texi | 153 + man/lispref/macros.texi | 579 + man/lispref/maps.texi | 183 + man/lispref/markers.texi | 784 ++ man/lispref/menus.texi | 754 ++ man/lispref/minibuf.texi | 1479 +++ man/lispref/modes.texi | 1431 +++ man/lispref/mouse.texi | 107 + man/lispref/mule.texi | 1198 ++ man/lispref/numbers.texi | 1086 ++ man/lispref/objects.texi | 2362 ++++ man/lispref/os.texi | 1705 +++ man/lispref/positions.texi | 965 ++ man/lispref/processes.texi | 1265 +++ man/lispref/range-tables.texi | 72 + man/lispref/scrollbars.texi | 10 + man/lispref/searching.texi | 1465 +++ man/lispref/sequences.texi | 673 ++ man/lispref/specifiers.texi | 1103 ++ man/lispref/streams.texi | 799 ++ man/lispref/strings.texi | 1247 +++ man/lispref/symbols.texi | 555 + man/lispref/syntax.texi | 750 ++ man/lispref/text.texi | 2670 +++++ man/lispref/tips.texi | 658 ++ man/lispref/toolbar.texi | 363 + man/lispref/tooltalk.texi | 366 + man/lispref/variables.texi | 1346 +++ man/lispref/windows.texi | 1881 ++++ man/lispref/x-windows.texi | 370 + man/make-stds.texi | 722 ++ man/new-users-guide/custom1.texi | 330 + man/new-users-guide/custom2.texi | 441 + man/new-users-guide/edit.texi | 301 + man/new-users-guide/enter.texi | 252 + man/new-users-guide/files.texi | 254 + man/new-users-guide/help.texi | 187 + man/new-users-guide/modes.texi | 250 + man/new-users-guide/new-users-guide.texi | 284 + man/new-users-guide/region.texi | 258 + man/new-users-guide/search.texi | 118 + man/new-users-guide/xmenu.texi | 472 + man/standards.texi | 2802 +++++ man/term.texi | 395 + man/termcap.texi | 3412 ++++++ man/texinfo.tex | 4977 +++++++++ man/texinfo.texi |17293 +++++++++++++++++++++++++++++ man/widget.texi | 1622 +++ man/xemacs-faq.texi | 6225 +++++++++++ man/xemacs/abbrevs.texi | 306 + man/xemacs/basic.texi | 550 + man/xemacs/buffers.texi | 311 + man/xemacs/building.texi | 613 + man/xemacs/calendar.texi | 2298 ++++ man/xemacs/cmdargs.texi | 278 + man/xemacs/custom.texi | 2506 +++++ man/xemacs/display.texi | 263 + man/xemacs/entering.texi | 100 + man/xemacs/files.texi | 1757 +++ man/xemacs/fixit.texi | 183 + man/xemacs/frame.texi | 345 + man/xemacs/glossary.texi | 765 ++ man/xemacs/gnu.texi | 478 + man/xemacs/help.texi | 265 + man/xemacs/indent.texi | 187 + man/xemacs/keystrokes.texi | 516 + man/xemacs/killing.texi | 753 ++ man/xemacs/m-x.texi | 145 + man/xemacs/major.texi | 113 + man/xemacs/mark.texi | 240 + man/xemacs/menus.texi | 549 + man/xemacs/mini.texi | 383 + man/xemacs/misc.texi | 784 ++ man/xemacs/mouse.texi | 166 + man/xemacs/mule.texi | 540 + man/xemacs/new.texi | 367 + man/xemacs/packages.texi | 103 + man/xemacs/picture.texi | 251 + man/xemacs/programs.texi | 1940 ++++ man/xemacs/reading.texi | 32 + man/xemacs/regs.texi | 110 + man/xemacs/search.texi | 883 ++ man/xemacs/sending.texi | 350 + man/xemacs/startup.texi | 201 + man/xemacs/text.texi | 1126 ++ man/xemacs/trouble.texi | 406 + man/xemacs/undo.texi | 66 + man/xemacs/windows.texi | 287 + man/xemacs/xemacs.texi | 1117 ++ modules/base64/base64.c | 429 + modules/ldap/eldap.c | 462 + modules/ldap/eldap.h | 39 + modules/zlib/zlib.c | 71 + move-if-change | 15 + nt/ChangeLog | 454 + nt/Emacs.ad.h | 83 + nt/Installation.el | 2 + nt/README | 119 + nt/Win32.cf | 131 + nt/ad2c.sed | 22 + nt/config.h | 630 ++ nt/file.ico | Bin 0 -> 1078 bytes nt/lisp.ico | Bin 0 -> 1078 bytes nt/paths.h | 49 + nt/site.def | 123 + nt/x11.patch | 27 + nt/xemacs.ico | Bin 0 -> 4846 bytes nt/xemacs.mak | 920 ++ nt/xemacs.rc | 3 + nt/xpm.mak | 47 + src/ChangeLog.1 | 8315 ++++++++++++++ src/EmacsFrame.c | 643 ++ src/EmacsFrame.h | 350 + src/EmacsFrameP.h | 114 + src/EmacsManager.c | 249 + src/EmacsManager.h | 62 + src/EmacsManagerP.h | 68 + src/EmacsShell-sub.c | 381 + src/EmacsShell.c | 169 + src/EmacsShell.h | 71 + src/EmacsShellP.h | 102 + src/ExternalClient-Xlib.c | 147 + src/ExternalClient.c | 617 + src/ExternalClient.h | 74 + src/ExternalClientP.h | 66 + src/ExternalShell.c | 717 ++ src/ExternalShell.h | 57 + src/ExternalShellP.h | 59 + src/Makefile.in.in | 702 ++ src/README | 93 + src/alloca.c | 513 + src/alloca.s | 355 + src/backtrace.h | 152 + src/balloon-x.c | 163 + src/balloon_help.c | 615 + src/balloon_help.h | 36 + src/bitmaps.h | 167 + src/blocktype.c | 107 + src/blocktype.h | 45 + src/broken-sun.h | 167 + src/bytecode.c | 1223 ++ src/bytecode.h | 112 + src/callint.c | 1044 ++ src/callproc.c | 948 ++ src/cm.c | 494 + src/cm.h | 184 + src/cmdloop.c | 654 ++ src/commands.h | 128 + src/conslots.h | 96 + src/console-msw.c | 132 + src/console-msw.h | 254 + src/console-stream.h | 49 + src/console-tty.c | 374 + src/console-tty.h | 301 + src/console-x.c | 282 + src/console.c | 1378 +++ src/debug.c | 216 + src/debug.h | 81 + src/device-msw.c | 414 + src/device-tty.c | 228 + src/device-x.c | 1762 +++ src/device.c | 1323 +++ src/device.h | 404 + src/dialog-msw.c | 421 + src/dialog-x.c | 276 + src/dialog.c | 92 + src/dired-msw.c | 665 ++ src/dired.c | 706 ++ src/doc.c | 1006 ++ src/dragdrop.c | 142 + src/dragdrop.h | 40 + src/dynarr.c | 236 + src/ecrt0.c | 667 ++ src/editfns.c | 2421 ++++ src/eldap.c | 589 + src/eldap.h | 74 + src/elhash.c | 1280 +++ src/elhash.h | 78 + src/eval.c | 5255 +++++++++ src/event-Xt.c | 3002 +++++ src/event-msw.c | 2790 +++++ src/event-stream.c | 5538 +++++++++ src/event-tty.c | 268 + src/event-unixoid.c | 364 + src/events-mod.h | 8 + src/events.c | 2234 ++++ src/events.h | 641 ++ src/extents.c | 6742 +++++++++++ src/extents.h | 398 + src/extw-Xlib.c | 85 + src/extw-Xlib.h | 51 + src/extw-Xt.c | 243 + src/extw-Xt.h | 44 + src/fileio.c | 4332 ++++++++ src/filelock.c | 546 + src/filemode.c | 183 + src/floatfns.c | 1062 ++ src/frame-msw.c | 753 ++ src/frame-tty.c | 256 + src/frame-x.c | 2849 +++++ src/frame.h | 710 ++ src/frameslots.h | 151 + src/free-hook.c | 706 ++ src/general.c | 338 + src/getloadavg.c | 1008 ++ src/getpagesize.h | 66 + src/glyphs-msw.c | 1993 ++++ src/glyphs-msw.h | 79 + src/glyphs-x.c | 2422 ++++ src/glyphs-x.h | 106 + src/glyphs.h | 575 + src/gmalloc.c | 1389 +++ src/gpmevent.c | 114 + src/gpmevent.h | 7 + src/gui-x.c | 628 ++ src/gui-x.h | 82 + src/gui.c | 358 + src/gui.h | 86 + src/hash.c | 494 + src/hash.h | 99 + src/hftctl.c | 342 + src/hpplay.c | 294 + src/imgproc.c | 564 + src/imgproc.h | 62 + src/inline.c | 89 + src/input-method-motif.c | 184 + src/input-method-xlib.c | 938 ++ src/insdel.h | 162 + src/intl.c | 333 + src/iso-wide.h | 49 + src/keymap.c | 4362 ++++++++ src/keymap.h | 62 + src/lastfile.c | 43 + src/libsst.c | 509 + src/libsst.h | 48 + src/libst.h | 67 + src/line-number.c | 316 + src/line-number.h | 27 + src/linuxplay.c | 1095 ++ src/lisp-union.h | 181 + src/lstream.c | 1685 +++ src/m/7300.h | 85 + src/m/README | 28 + src/m/acorn.h | 175 + src/m/alliant-2800.h | 120 + src/m/alliant.h | 119 + src/m/alliant1.h | 11 + src/m/alliant4.h | 26 + src/m/alpha.h | 36 + src/m/altos.h | 55 + src/m/amdahl.h | 143 + src/m/apollo.h | 91 + src/m/att3b.h | 145 + src/m/aviion.h | 114 + src/m/celerity.h | 51 + src/m/clipper.h | 90 + src/m/cnvrgnt.h | 93 + src/m/convex.h | 165 + src/m/cydra5.h | 111 + src/m/delta.h | 173 + src/m/delta88k.h | 141 + src/m/dpx2.h | 189 + src/m/dual.h | 62 + src/m/elxsi.h | 126 + src/m/ews4800r.h | 101 + src/m/gec63.h | 64 + src/m/gould-np1.h | 86 + src/m/gould.h | 174 + src/m/hp300bsd.h | 44 + src/m/hp800.h | 149 + src/m/hp9000s300.h | 177 + src/m/i860.h | 93 + src/m/ibm370aix.h | 31 + src/m/ibmps2-aix.h | 184 + src/m/ibmrs6000.h | 138 + src/m/ibmrt-aix.h | 142 + src/m/ibmrt.h | 124 + src/m/intel386.h | 199 + src/m/iris4d.h | 153 + src/m/iris5d.h | 159 + src/m/irist.h | 128 + src/m/is386.h | 29 + src/m/isi-ov.h | 85 + src/m/luna88k.h | 95 + src/m/m68k.h | 75 + src/m/masscomp.h | 116 + src/m/mega68.h | 41 + src/m/mg1.h | 99 + src/m/mips-siemens.h | 149 + src/m/mips.h | 170 + src/m/mips4.h | 59 + src/m/ncr386.h | 10 + src/m/news-risc.h | 52 + src/m/news.h | 58 + src/m/next.h | 100 + src/m/nh3000.h | 107 + src/m/nh4000.h | 110 + src/m/ns16000.h | 76 + src/m/ns32000.h | 97 + src/m/nu.h | 59 + src/m/orion.h | 57 + src/m/orion105.h | 51 + src/m/paragon.h | 12 + src/m/pfa50.h | 80 + src/m/plexus.h | 101 + src/m/pmax.h | 99 + src/m/powerpc.h | 134 + src/m/pyramid.h | 48 + src/m/pyrmips.h | 11 + src/m/sequent-ptx.h | 134 + src/m/sequent.h | 161 + src/m/sgi-challenge.h | 173 + src/m/sgi3000.h | 3 + src/m/sparc.h | 74 + src/m/sps7.h | 92 + src/m/stride.h | 93 + src/m/sun1.h | 68 + src/m/sun2.h | 89 + src/m/sun3-68881.h | 30 + src/m/sun3-fpa.h | 30 + src/m/sun3-soft.h | 31 + src/m/sun3.h | 52 + src/m/sun386.h | 90 + src/m/symmetry.h | 103 + src/m/tad68k.h | 102 + src/m/tahoe.h | 64 + src/m/tandem-s2.h | 23 + src/m/targon31.h | 90 + src/m/tek4300.h | 88 + src/m/tekxd88.h | 106 + src/m/template.h | 107 + src/m/tower32.h | 107 + src/m/tower32v3.h | 105 + src/m/ustation.h | 123 + src/m/vax.h | 101 + src/m/wicat.h | 128 + src/m/windowsnt.h | 126 + src/m/xps100.h | 91 + src/macros.c | 332 + src/macros.h | 38 + src/make-src-depend | 137 + src/malloc.c | 827 ++ src/marker.c | 543 + src/md5.c | 621 ++ src/mem-limits.h | 228 + src/menubar-msw.c | 800 ++ src/menubar-msw.h | 43 + src/menubar-x.c | 815 ++ src/menubar.c | 595 + src/menubar.h | 40 + src/minibuf.c | 981 ++ src/mule-ccl.h | 53 + src/nas.c | 740 ++ src/ndir.h | 57 + src/nsselect.m | 23 + src/nt.c | 1931 ++++ src/nt.h | 150 + src/ntheap.c | 329 + src/ntheap.h | 114 + src/ntplay.c | 107 + src/ntproc.c | 1347 +++ src/objects-msw.h | 51 + src/objects-tty.h | 52 + src/objects-x.c | 1035 ++ src/objects-x.h | 67 + src/objects.c | 1091 ++ src/objects.h | 189 + src/offix-cursors.h | 346 + src/offix-types.h | 34 + src/offix.c | 451 + src/offix.h | 68 + src/opaque.c | 249 + src/opaque.h | 94 + src/paths.h.in | 94 + src/ppc.ldscript | 149 + src/pre-crt0.c | 28 + src/print.c | 1838 +++ src/process-nt.c | 967 ++ src/process-unix.c | 1769 +++ src/process.c | 2086 ++++ src/process.h | 137 + src/procimpl.h | 188 + src/profile.c | 356 + src/ralloc.c | 2073 ++++ src/rangetab.c | 704 ++ src/rangetab.h | 56 + src/realpath.c | 249 + src/regex.h | 485 + src/s/3700.h | 2 + src/s/386-ix.h | 7 + src/s/386bsd.h | 21 + src/s/README | 82 + src/s/aix3-1.h | 144 + src/s/aix3-2-5.h | 20 + src/s/aix3-2.h | 58 + src/s/aix4-1.h | 29 + src/s/aix4-2.h | 4 + src/s/aix4.h | 13 + src/s/alliant-2800.h | 2 + src/s/alliant.h | 2 + src/s/altos.h | 2 + src/s/amdahl.h | 2 + src/s/bsd386.h | 31 + src/s/bsd4-1.h | 84 + src/s/bsd4-2.h | 75 + src/s/bsd4-3.h | 50 + src/s/bsdos2-1.h | 1 + src/s/bsdos2.h | 15 + src/s/bsdos3.h | 6 + src/s/cxux.h | 126 + src/s/cxux7.h | 9 + src/s/cygwin32.h | 286 + src/s/decosf1-2.h | 31 + src/s/decosf1-3.h | 23 + src/s/decosf3-1.h | 29 + src/s/decosf3-2.h | 3 + src/s/decosf4-0.h | 37 + src/s/dgux.h | 253 + src/s/dgux5-4r2.h | 35 + src/s/dgux5-4r3.h | 53 + src/s/dgux5-4r4.h | 37 + src/s/domain.h | 6 + src/s/esix.h | 23 + src/s/esix5r4.h | 18 + src/s/ewsux5r4.h | 24 + src/s/freebsd.h | 92 + src/s/gnu.h | 52 + src/s/hpux.h | 169 + src/s/hpux10-shr.h | 29 + src/s/hpux10.h | 23 + src/s/hpux11-shr.h | 29 + src/s/hpux11.h | 24 + src/s/hpux8-shr.h | 19 + src/s/hpux8.h | 82 + src/s/hpux9-shr.h | 35 + src/s/hpux9-x11r4.h | 1 + src/s/hpux9.h | 53 + src/s/hpux9shxr4.h | 1 + src/s/iris3-5.h | 98 + src/s/iris3-6.h | 98 + src/s/irix3-3.h | 103 + src/s/irix4-0.h | 53 + src/s/irix5-0.h | 91 + src/s/irix5-1.h | 32 + src/s/irix5-2.h | 17 + src/s/irix5-3.h | 12 + src/s/irix6-0.h | 6 + src/s/isc2-2.h | 71 + src/s/isc3-0.h | 29 + src/s/isc4-0.h | 8 + src/s/isc4-1.h | 31 + src/s/linux.h | 196 + src/s/mach-bsd4-3.h | 37 + src/s/netbsd.h | 71 + src/s/newsos5.h | 47 + src/s/nextstep.h | 130 + src/s/openbsd.h | 12 + src/s/osf1.h | 22 + src/s/ptx.h | 135 + src/s/riscix1-1.h | 26 + src/s/riscix1-2.h | 26 + src/s/riscos5.h | 11 + src/s/rtu.h | 93 + src/s/sco4.h | 110 + src/s/sco5-shr.h | 21 + src/s/sco5.h | 138 + src/s/sol2.h | 154 + src/s/sunos4-0-shr.h | 59 + src/s/sunos4-0.h | 115 + src/s/sunos4-1-1.h | 10 + src/s/sunos4-1-2-shr.h | 11 + src/s/sunos4-1-2.h | 4 + src/s/sunos4-1-3-shr.h | 11 + src/s/sunos4-1-3.h | 28 + src/s/sunos4-1-4-shr.h | 11 + src/s/sunos4-1-4.h | 34 + src/s/sunos4-1-shr.h | 11 + src/s/sunos4-1.h | 50 + src/s/template.h | 90 + src/s/ultrix.h | 32 + src/s/ultrix4-3.h | 21 + src/s/umax.h | 108 + src/s/umips.h | 55 + src/s/unipl5-0.h | 96 + src/s/unipl5-2.h | 95 + src/s/usg5-0.h | 98 + src/s/usg5-2-2.h | 23 + src/s/usg5-2.h | 29 + src/s/usg5-3.h | 51 + src/s/usg5-4-2.h | 17 + src/s/usg5-4.h | 161 + src/s/windowsnt.h | 372 + src/s/xenix.h | 128 + src/scrollbar-msw.c | 307 + src/scrollbar-msw.h | 62 + src/scrollbar-x.c | 760 ++ src/scrollbar-x.h | 75 + src/scrollbar.c | 1058 ++ src/scrollbar.h | 84 + src/select-msw.c | 180 + src/sgiplay.c | 730 ++ src/sheap.c | 122 + src/signal.c | 802 ++ src/sound.c | 609 + src/specifier.c | 3137 ++++++ src/specifier.h | 467 + src/src-headers | 236 + src/strcat.c | 61 + src/strcmp.c | 151 + src/strcpy.c | 89 + src/strftime.c | 461 + src/sunOS-fix.c | 65 + src/sunplay.c | 329 + src/sunpro.c | 105 + src/symeval.h | 338 + src/sysdep.c | 3969 +++++++ src/sysdep.h | 181 + src/sysdir.h | 131 + src/sysdll.c | 289 + src/sysdll.h | 53 + src/sysfile.h | 458 + src/sysfloat.h | 88 + src/sysproc.h | 110 + src/syspwd.h | 23 + src/syssignal.h | 247 + src/systime.h | 245 + src/systty.h | 451 + src/syswait.h | 54 + src/termcap.c | 672 ++ src/terminfo.c | 89 + src/toolbar-msw.c | 639 ++ src/toolbar.c | 1914 ++++ src/toolbar.h | 114 + src/tooltalk.c | 1481 +++ src/tooltalk.doc | 330 + src/tooltalk.h | 64 + src/tparam.c | 293 + src/undo.c | 555 + src/unexaix.c | 675 ++ src/unexalpha.c | 450 + src/unexapollo.c | 296 + src/unexconvex.c | 596 + src/unexcw.c | 501 + src/unexec.c | 1268 +++ src/unexelf.c | 937 ++ src/unexelfsgi.c | 1014 ++ src/unexencap.c | 118 + src/unexenix.c | 255 + src/unexfreebsd.c | 719 ++ src/unexfx2800.c | 35 + src/unexhp9k3.c | 525 + src/unexhp9k800.c | 355 + src/unexmips.c | 356 + src/unexnext.c | 303 + src/unexnt.c | 663 ++ src/unexsni.c | 837 ++ src/unexsol2-6.c | 41 + src/unexsol2.c | 60 + src/unexsunos4.c | 657 ++ src/universe.h | 28 + src/vm-limit.c | 135 + src/widget.c | 119 + src/window.c | 5715 ++++++++++ src/window.h | 411 + src/winslots.h | 116 + src/xgccache.c | 330 + src/xgccache.h | 34 + src/xintrinsic.h | 26 + src/xintrinsicp.h | 32 + src/xmmanagerp.h | 31 + src/xmprimitivep.h | 31 + src/xmu.c | 551 + src/xmu.h | 31 + tests/DLL/dltest.c | 40 + tests/Dnd/README | 46 + tests/Dnd/droptest.el | 176 + tests/Dnd/droptest.sh | 102 + tests/auc-tex-test | 21 + tests/frame.el | 27 + tests/mule/match.el | 52 + tests/reproduce-bugs.el | 194 + tests/tooltalk/Makefile | 25 + tests/tooltalk/beeps.el | 5 + tests/tooltalk/emacs-eval.c | 95 + tests/tooltalk/load-file.c | 95 + tests/tooltalk/make-client-frame.c | 97 + tests/tooltalk/simple.el | 38 + version.sh | 8 + 1192 files changed, 491552 insertions(+) create mode 100644 BUGS create mode 100644 COPYING create mode 100644 GETTING.GNU.SOFTWARE create mode 100644 INSTALL create mode 100644 PROBLEMS create mode 100644 README create mode 100644 aclocal.m4 create mode 100755 config.guess create mode 100755 config.sub create mode 100644 configure.usage create mode 100644 dynodump/Makefile.in.in create mode 100644 dynodump/README create mode 100644 dynodump/_dynodump.h create mode 100644 dynodump/dynodump.c create mode 100644 dynodump/i386/_relocate.c create mode 100644 dynodump/i386/machdep.h create mode 100644 dynodump/i386/uninit.c create mode 100644 dynodump/ppc/_relocate.c create mode 100644 dynodump/ppc/machdep.h create mode 100644 dynodump/ppc/uninit.c create mode 100644 dynodump/sparc/_relocate.c create mode 100644 dynodump/sparc/machdep.h create mode 100644 dynodump/sparc/uninit.c create mode 100644 dynodump/syms.c create mode 100644 etc/BETA create mode 100644 etc/CHARSETS create mode 100644 etc/CODING-STANDARDS create mode 100644 etc/CODINGS create mode 100644 etc/COPYING create mode 100644 etc/COPYING.LIB create mode 100644 etc/DEBUG create mode 100644 etc/DISTRIB create mode 100644 etc/Emacs.ad create mode 100644 etc/FTP create mode 100644 etc/GNU create mode 100644 etc/HELLO create mode 100644 etc/InstallGuide create mode 100644 etc/LPF create mode 100644 etc/MACHINES create mode 100644 etc/MAILINGLISTS create mode 100644 etc/MORE.STUFF create mode 100644 etc/MOTIVATION create mode 100644 etc/NEWS create mode 100644 etc/OONEWS create mode 100644 etc/ORDERS create mode 100644 etc/ORDERS.EUROPE create mode 100644 etc/ORDERS.JAPAN create mode 100644 etc/PACKAGES create mode 100644 etc/README create mode 100644 etc/README.HYPERBOLE create mode 100644 etc/README.OO-BROWSER create mode 100644 etc/SERVICE create mode 100644 etc/TERMS create mode 100644 etc/TUTORIAL create mode 100644 etc/TUTORIAL.de create mode 100644 etc/TUTORIAL.fr create mode 100644 etc/TUTORIAL.hr create mode 100644 etc/TUTORIAL.ja create mode 100644 etc/TUTORIAL.ko create mode 100644 etc/TUTORIAL.no create mode 100644 etc/TUTORIAL.pl create mode 100644 etc/TUTORIAL.ro create mode 100644 etc/TUTORIAL.ru create mode 100644 etc/TUTORIAL.th create mode 100644 etc/XKeysymDB create mode 100755 etc/aliases.ksh create mode 100644 etc/cbx.png create mode 100644 etc/check_cygwin_setup.sh create mode 100644 etc/ctags.1 create mode 100644 etc/custom/check0.xpm create mode 100644 etc/custom/check1.xpm create mode 100644 etc/custom/choose-down.png create mode 100644 etc/custom/choose-up.png create mode 100644 etc/custom/done-down.png create mode 100644 etc/custom/done-up.png create mode 100644 etc/custom/down-pushed.xpm create mode 100644 etc/custom/down.xpm create mode 100644 etc/custom/face.xpm create mode 100644 etc/custom/folder.xpm create mode 100644 etc/custom/open-down.png create mode 100644 etc/custom/open-up.png create mode 100644 etc/custom/option.xpm create mode 100644 etc/custom/radio0.xpm create mode 100644 etc/custom/radio1.xpm create mode 100644 etc/custom/reset-down.png create mode 100644 etc/custom/reset-up.png create mode 100644 etc/custom/right-pushed.xpm create mode 100644 etc/custom/right.xpm create mode 100644 etc/custom/save-down.png create mode 100644 etc/custom/save-up.png create mode 100644 etc/custom/set-down.png create mode 100644 etc/custom/set-up.png create mode 100644 etc/custom/state-down.png create mode 100644 etc/custom/state-up.png create mode 100644 etc/custom/toggle-off-down.png create mode 100644 etc/custom/toggle-off-up.png create mode 100644 etc/custom/toggle-on-down.png create mode 100644 etc/custom/toggle-on-up.png create mode 100644 etc/editclient.sh create mode 100644 etc/emacskeys.sco create mode 100644 etc/emacsstrs.sco create mode 100644 etc/eos/eos-build.xbm create mode 100644 etc/eos/eos-clear-at.xbm create mode 100644 etc/eos/eos-cont.xbm create mode 100644 etc/eos/eos-dismiss.xbm create mode 100644 etc/eos/eos-down.xbm create mode 100644 etc/eos/eos-evaluate-star.xbm create mode 100644 etc/eos/eos-evaluate.xbm create mode 100644 etc/eos/eos-fix.xbm create mode 100644 etc/eos/eos-intro.xbm create mode 100644 etc/eos/eos-introB.xbm create mode 100644 etc/eos/eos-introD.xbm create mode 100644 etc/eos/eos-introDB.xbm create mode 100644 etc/eos/eos-run.xbm create mode 100644 etc/eos/eos-run2.xbm create mode 100644 etc/eos/eos-step-into.xbm create mode 100644 etc/eos/eos-step-over.xbm create mode 100644 etc/eos/eos-stop-in.xbm create mode 100644 etc/eos/eos-stop.xbm create mode 100644 etc/eos/eos-type.xbm create mode 100644 etc/eos/eos-up.xbm create mode 100644 etc/etags.1 create mode 100644 etc/gnu.xbm create mode 100644 etc/gnu.xpm create mode 100644 etc/gnuattach.1 create mode 100644 etc/gnuclient.1 create mode 100644 etc/gnudoit.1 create mode 100644 etc/gnuserv.1 create mode 100644 etc/gnuserv.README create mode 100644 etc/gray1.xbm create mode 100644 etc/idd/drop create mode 100644 etc/idd/dropmsk create mode 100644 etc/ms-kermit create mode 100644 etc/ms-kermit-7bit create mode 100644 etc/recycle.xpm create mode 100644 etc/recycle2.xpm create mode 100644 etc/refcard.ps.gz create mode 100644 etc/refcard.tex create mode 100644 etc/sample.Xdefaults create mode 100644 etc/sink.xbm create mode 100644 etc/sparcworks/SW.Editor.xpm create mode 100644 etc/sparcworks/sunpro-mailcap create mode 100644 etc/tests/external-widget/Makefile create mode 100644 etc/tests/external-widget/test-ew-motif.c create mode 100644 etc/tests/external-widget/test-ew-xlib.c create mode 100644 etc/toolbar/compile-cap-up.xpm create mode 100644 etc/toolbar/compile-cap-xx.xpm create mode 100644 etc/toolbar/compile-dn.xbm create mode 100644 etc/toolbar/compile-up.xbm create mode 100644 etc/toolbar/compile-up.xpm create mode 100644 etc/toolbar/compile-xx.xbm create mode 100644 etc/toolbar/compile-xx.xpm create mode 100644 etc/toolbar/copy-cap-up.xpm create mode 100644 etc/toolbar/copy-cap-xx.xpm create mode 100644 etc/toolbar/copy-dn.xbm create mode 100644 etc/toolbar/copy-up.xbm create mode 100644 etc/toolbar/copy-up.xpm create mode 100644 etc/toolbar/copy-xx.xbm create mode 100644 etc/toolbar/copy-xx.xpm create mode 100644 etc/toolbar/cut-cap-up.xpm create mode 100644 etc/toolbar/cut-cap-xx.xpm create mode 100644 etc/toolbar/cut-dn.xbm create mode 100644 etc/toolbar/cut-up.xbm create mode 100644 etc/toolbar/cut-up.xpm create mode 100644 etc/toolbar/cut-xx.xbm create mode 100644 etc/toolbar/cut-xx.xpm create mode 100644 etc/toolbar/debug-cap-up.xpm create mode 100644 etc/toolbar/debug-cap-xx.xpm create mode 100644 etc/toolbar/debug-dn.xbm create mode 100644 etc/toolbar/debug-up.xbm create mode 100644 etc/toolbar/debug-up.xpm create mode 100644 etc/toolbar/debug-xx.xbm create mode 100644 etc/toolbar/debug-xx.xpm create mode 100644 etc/toolbar/disk-cap-up.xpm create mode 100644 etc/toolbar/disk-cap-xx.xpm create mode 100644 etc/toolbar/disk-dn.xbm create mode 100644 etc/toolbar/disk-up.xbm create mode 100644 etc/toolbar/disk-up.xpm create mode 100644 etc/toolbar/disk-xx.xbm create mode 100644 etc/toolbar/disk-xx.xpm create mode 100644 etc/toolbar/file-cap-up.xpm create mode 100644 etc/toolbar/file-cap-xx.xpm create mode 100644 etc/toolbar/file-dn.xbm create mode 100644 etc/toolbar/file-up.xbm create mode 100644 etc/toolbar/file-up.xpm create mode 100644 etc/toolbar/file-xx.xbm create mode 100644 etc/toolbar/file-xx.xpm create mode 100644 etc/toolbar/folder-cap-up.xpm create mode 100644 etc/toolbar/folder-cap-xx.xpm create mode 100644 etc/toolbar/folder-dn.xbm create mode 100644 etc/toolbar/folder-up.xbm create mode 100644 etc/toolbar/folder-up.xpm create mode 100644 etc/toolbar/folder-xx.xbm create mode 100644 etc/toolbar/folder-xx.xpm create mode 100644 etc/toolbar/info-def-cap-up.xpm create mode 100644 etc/toolbar/info-def-cap-xx.xpm create mode 100644 etc/toolbar/info-def-dn.xbm create mode 100644 etc/toolbar/info-def-up.xbm create mode 100644 etc/toolbar/info-def-up.xpm create mode 100644 etc/toolbar/info-def-xx.xbm create mode 100644 etc/toolbar/info-def-xx.xpm create mode 100644 etc/toolbar/info-exit-cap-up.xpm create mode 100644 etc/toolbar/info-exit-cap-xx.xpm create mode 100644 etc/toolbar/info-exit-dn.xbm create mode 100644 etc/toolbar/info-exit-up.xbm create mode 100644 etc/toolbar/info-exit-up.xpm create mode 100644 etc/toolbar/info-exit-xx.xbm create mode 100644 etc/toolbar/info-exit-xx.xpm create mode 100644 etc/toolbar/info-exit.xbm create mode 100644 etc/toolbar/info-exit.xpm create mode 100644 etc/toolbar/info-next-cap-up.xpm create mode 100644 etc/toolbar/info-next-cap-xx.xpm create mode 100644 etc/toolbar/info-next-dn.xbm create mode 100644 etc/toolbar/info-next-up.xbm create mode 100644 etc/toolbar/info-next-up.xpm create mode 100644 etc/toolbar/info-next-xx.xbm create mode 100644 etc/toolbar/info-next-xx.xpm create mode 100644 etc/toolbar/info-next.xbm create mode 100644 etc/toolbar/info-next.xpm create mode 100644 etc/toolbar/info-prev-cap-up.xpm create mode 100644 etc/toolbar/info-prev-cap-xx.xpm create mode 100644 etc/toolbar/info-prev-dn.xbm create mode 100644 etc/toolbar/info-prev-up.xbm create mode 100644 etc/toolbar/info-prev-up.xpm create mode 100644 etc/toolbar/info-prev-xx.xbm create mode 100644 etc/toolbar/info-prev-xx.xpm create mode 100644 etc/toolbar/info-prev.xbm create mode 100644 etc/toolbar/info-prev.xpm create mode 100644 etc/toolbar/info-up-cap-up.xpm create mode 100644 etc/toolbar/info-up-cap-xx.xpm create mode 100644 etc/toolbar/info-up-dn.xbm create mode 100644 etc/toolbar/info-up-up.xbm create mode 100644 etc/toolbar/info-up-up.xpm create mode 100644 etc/toolbar/info-up-xx.xbm create mode 100644 etc/toolbar/info-up-xx.xpm create mode 100644 etc/toolbar/info-up.xbm create mode 100644 etc/toolbar/info-up.xpm create mode 100644 etc/toolbar/last-win-cap-up.xpm create mode 100644 etc/toolbar/last-win-cap-xx.xpm create mode 100644 etc/toolbar/last-win-dn.xbm create mode 100644 etc/toolbar/last-win-up.xbm create mode 100644 etc/toolbar/last-win-up.xpm create mode 100644 etc/toolbar/last-win-xx.xbm create mode 100644 etc/toolbar/last-win-xx.xpm create mode 100644 etc/toolbar/mail-cap-up.xpm create mode 100644 etc/toolbar/mail-cap-xx.xpm create mode 100644 etc/toolbar/mail-dn.xbm create mode 100644 etc/toolbar/mail-up.xbm create mode 100644 etc/toolbar/mail-up.xpm create mode 100644 etc/toolbar/mail-xx.xbm create mode 100644 etc/toolbar/mail-xx.xpm create mode 100644 etc/toolbar/news-cap-up.xpm create mode 100644 etc/toolbar/news-cap-xx.xpm create mode 100644 etc/toolbar/news-dn.xbm create mode 100644 etc/toolbar/news-up.xbm create mode 100644 etc/toolbar/news-up.xpm create mode 100644 etc/toolbar/news-xx.xbm create mode 100644 etc/toolbar/news-xx.xpm create mode 100644 etc/toolbar/next-win-cap-up.xpm create mode 100644 etc/toolbar/next-win-cap-xx.xpm create mode 100644 etc/toolbar/next-win-dn.xbm create mode 100644 etc/toolbar/next-win-up.xbm create mode 100644 etc/toolbar/next-win-up.xpm create mode 100644 etc/toolbar/next-win-xx.xbm create mode 100644 etc/toolbar/next-win-xx.xpm create mode 100644 etc/toolbar/paste-cap-up.xpm create mode 100644 etc/toolbar/paste-cap-xx.xpm create mode 100644 etc/toolbar/paste-dn.xbm create mode 100644 etc/toolbar/paste-up.xbm create mode 100644 etc/toolbar/paste-up.xpm create mode 100644 etc/toolbar/paste-xx.xbm create mode 100644 etc/toolbar/paste-xx.xpm create mode 100644 etc/toolbar/printer-cap-up.xpm create mode 100644 etc/toolbar/printer-cap-xx.xpm create mode 100644 etc/toolbar/printer-dn.xbm create mode 100644 etc/toolbar/printer-up.xbm create mode 100644 etc/toolbar/printer-up.xpm create mode 100644 etc/toolbar/printer-xx.xbm create mode 100644 etc/toolbar/printer-xx.xpm create mode 100644 etc/toolbar/replace-cap-up.xpm create mode 100644 etc/toolbar/replace-cap-xx.xpm create mode 100644 etc/toolbar/replace-dn.xbm create mode 100644 etc/toolbar/replace-up.xbm create mode 100644 etc/toolbar/replace-up.xpm create mode 100644 etc/toolbar/replace-xx.xbm create mode 100644 etc/toolbar/replace-xx.xpm create mode 100644 etc/toolbar/spell-cap-up.xpm create mode 100644 etc/toolbar/spell-cap-xx.xpm create mode 100644 etc/toolbar/spell-dn.xbm create mode 100644 etc/toolbar/spell-up.xbm create mode 100644 etc/toolbar/spell-up.xpm create mode 100644 etc/toolbar/spell-xx.xbm create mode 100644 etc/toolbar/spell-xx.xpm create mode 100644 etc/toolbar/undo-cap-up.xpm create mode 100644 etc/toolbar/undo-cap-xx.xpm create mode 100644 etc/toolbar/undo-dn.xbm create mode 100644 etc/toolbar/undo-up.xbm create mode 100644 etc/toolbar/undo-up.xpm create mode 100644 etc/toolbar/undo-xx.xbm create mode 100644 etc/toolbar/undo-xx.xpm create mode 100644 etc/toolbar/workshop-cap-up.xpm create mode 100644 etc/toolbar/workshop-cap-xx.xpm create mode 100644 etc/toolbar/workshop-up.xpm create mode 100644 etc/toolbar/workshop-xx.xpm create mode 100644 etc/trash.xpm create mode 100644 etc/xemacs-beta.xpm create mode 100755 etc/xemacs-fe.sh create mode 100644 etc/xemacs-icon.xpm create mode 100644 etc/xemacs-icon2.xbm create mode 100644 etc/xemacs-icon2.xpm create mode 100644 etc/xemacs-icon3.xpm create mode 100644 etc/xemacs-ja.1 create mode 100644 etc/xemacs.1 create mode 100644 etc/xemacs.xbm create mode 100644 etc/xemacs.xpm create mode 100644 info/dir create mode 100755 install.sh create mode 100644 lib-src/ChangeLog create mode 100644 lib-src/Makefile.in.in create mode 100644 lib-src/README create mode 100755 lib-src/ad2c create mode 100755 lib-src/add-big-package.sh create mode 100644 lib-src/b2m.c create mode 100644 lib-src/config.values.in create mode 100644 lib-src/config.values.sh create mode 100644 lib-src/cvtmail.c create mode 100644 lib-src/digest-doc.c create mode 100644 lib-src/emacs.csh create mode 100644 lib-src/etags.c create mode 100644 lib-src/fakemail.c create mode 100644 lib-src/getopt.c create mode 100644 lib-src/getopt.h create mode 100644 lib-src/getopt1.c create mode 100755 lib-src/gnuattach create mode 100644 lib-src/gnuclient.c create mode 100755 lib-src/gnudepend.pl create mode 100755 lib-src/gnudoit create mode 100644 lib-src/gnuserv.c create mode 100644 lib-src/gnuserv.h create mode 100644 lib-src/gnuslib.c create mode 100755 lib-src/gzip-el.sh create mode 100644 lib-src/hexl.c create mode 100644 lib-src/installexe.sh create mode 100644 lib-src/leditcfns.c create mode 100644 lib-src/make-docfile.c create mode 100644 lib-src/make-msgfile.c create mode 100644 lib-src/make-msgfile.lex create mode 100644 lib-src/make-path.c create mode 100644 lib-src/make-po.c create mode 100644 lib-src/mmencode.c create mode 100644 lib-src/movemail.c create mode 100644 lib-src/ootags.c create mode 100644 lib-src/pop.c create mode 100644 lib-src/pop.h create mode 100644 lib-src/profile.c create mode 100644 lib-src/qsort.c create mode 100755 lib-src/rcs-checkin create mode 100755 lib-src/rcs2log create mode 100644 lib-src/sorted-doc.c create mode 100644 lib-src/srcdir-symlink.stamp create mode 100644 lib-src/tcp.c create mode 100644 lib-src/update-autoloads.sh create mode 100755 lib-src/update-custom.sh create mode 100755 lib-src/vcdiff create mode 100644 lib-src/wakeup.c create mode 100644 lib-src/yow.c create mode 100644 lisp/ChangeLog.1 create mode 100644 lisp/README create mode 100644 lisp/abbrev.el create mode 100644 lisp/about.el create mode 100644 lisp/alist.el create mode 100644 lisp/apropos.el create mode 100644 lisp/auto-save.el create mode 100644 lisp/auto-show.el create mode 100644 lisp/autoload.el create mode 100644 lisp/backquote.el create mode 100644 lisp/blessmail.el create mode 100644 lisp/buff-menu.el create mode 100644 lisp/buffer.el create mode 100644 lisp/build-report.el create mode 100644 lisp/byte-optimize.el create mode 100644 lisp/bytecomp-runtime.el create mode 100644 lisp/callers-of-rpt.el create mode 100644 lisp/check-features.el create mode 100644 lisp/cl-compat.el create mode 100644 lisp/cl-extra.el create mode 100644 lisp/cl-macs.el create mode 100644 lisp/cl-seq.el create mode 100644 lisp/cl.el create mode 100644 lisp/cmdloop.el create mode 100644 lisp/code-files.el create mode 100644 lisp/code-process.el create mode 100644 lisp/coding.el create mode 100644 lisp/config.el create mode 100644 lisp/console.el create mode 100644 lisp/cus-dep.el create mode 100644 lisp/cus-edit.el create mode 100644 lisp/cus-face.el create mode 100644 lisp/cus-load.el create mode 100644 lisp/cus-start.el create mode 100644 lisp/custom.el create mode 100644 lisp/derived.el create mode 100644 lisp/device.el create mode 100644 lisp/dialog.el create mode 100644 lisp/disass.el create mode 100644 lisp/disp-table.el create mode 100644 lisp/dragdrop.el create mode 100644 lisp/easymenu.el create mode 100644 lisp/etags.el create mode 100644 lisp/events.el create mode 100644 lisp/extents.el create mode 100644 lisp/faces.el create mode 100644 lisp/files-nomule.el create mode 100644 lisp/fill.el create mode 100644 lisp/find-paths.el create mode 100644 lisp/finder.el create mode 100644 lisp/float-sup.el create mode 100644 lisp/font-lock.el create mode 100644 lisp/font.el create mode 100644 lisp/fontl-hooks.el create mode 100644 lisp/frame.el create mode 100644 lisp/glyphs.el create mode 100644 lisp/gnuserv.el create mode 100644 lisp/gui.el create mode 100644 lisp/help-macro.el create mode 100644 lisp/help-nomule.el create mode 100644 lisp/help.el create mode 100644 lisp/hyper-apropos.el create mode 100644 lisp/indent.el create mode 100644 lisp/info.el create mode 100644 lisp/isearch-mode.el create mode 100644 lisp/itimer-autosave.el create mode 100644 lisp/itimer.el create mode 100644 lisp/keydefs.el create mode 100644 lisp/keymap.el create mode 100644 lisp/ldap.el create mode 100644 lisp/lib-complete.el create mode 100644 lisp/lisp-mnt.el create mode 100644 lisp/lisp-mode.el create mode 100644 lisp/lisp.el create mode 100644 lisp/list-mode.el create mode 100644 lisp/loaddefs.el create mode 100644 lisp/loadhist.el create mode 100644 lisp/loadup-el.el create mode 100644 lisp/loadup.el create mode 100644 lisp/make-docfile.el create mode 100644 lisp/map-ynp.el create mode 100644 lisp/menubar-items.el create mode 100644 lisp/menubar.el create mode 100644 lisp/minibuf.el create mode 100644 lisp/misc.el create mode 100644 lisp/mode-motion.el create mode 100644 lisp/modeline.el create mode 100644 lisp/mouse.el create mode 100644 lisp/msw-faces.el create mode 100644 lisp/msw-glyphs.el create mode 100644 lisp/msw-init.el create mode 100644 lisp/msw-mouse.el create mode 100644 lisp/msw-select.el create mode 100644 lisp/multicast.el create mode 100644 lisp/mwheel.el create mode 100644 lisp/objects.el create mode 100644 lisp/package-admin.el create mode 100644 lisp/package-get.el create mode 100644 lisp/package-info.el create mode 100644 lisp/packages.el create mode 100644 lisp/page.el create mode 100644 lisp/paragraphs.el create mode 100644 lisp/paths.el create mode 100644 lisp/picture.el create mode 100644 lisp/process.el create mode 100644 lisp/rect.el create mode 100644 lisp/register.el create mode 100644 lisp/replace.el create mode 100644 lisp/scrollbar.el create mode 100644 lisp/select.el create mode 100644 lisp/shadow.el create mode 100644 lisp/simple.el create mode 100644 lisp/site-load.el create mode 100644 lisp/sound.el create mode 100644 lisp/specifier.el create mode 100644 lisp/subr.el create mode 100644 lisp/symbol-syntax.el create mode 100644 lisp/symbols.el create mode 100644 lisp/syntax.el create mode 100644 lisp/term/AT386.el create mode 100644 lisp/term/README create mode 100644 lisp/term/apollo.el create mode 100644 lisp/term/bg-mouse.el create mode 100644 lisp/term/bobcat.el create mode 100644 lisp/term/internal.el create mode 100644 lisp/term/keyswap.el create mode 100644 lisp/term/linux.el create mode 100644 lisp/term/lk201.el create mode 100644 lisp/term/news.el create mode 100644 lisp/term/pc-win.el create mode 100644 lisp/term/scoansi.el create mode 100644 lisp/term/sun-mouse.el create mode 100644 lisp/term/sun.el create mode 100644 lisp/term/sup-mouse.el create mode 100644 lisp/term/tvi970.el create mode 100644 lisp/term/vt-control.el create mode 100644 lisp/term/vt100-led.el create mode 100644 lisp/term/vt100.el create mode 100644 lisp/term/vt102.el create mode 100644 lisp/term/vt125.el create mode 100644 lisp/term/vt200.el create mode 100644 lisp/term/vt201.el create mode 100644 lisp/term/vt220.el create mode 100644 lisp/term/vt240.el create mode 100644 lisp/term/vt300.el create mode 100644 lisp/term/vt320.el create mode 100644 lisp/term/vt400.el create mode 100644 lisp/term/vt420.el create mode 100644 lisp/term/win32-win.el create mode 100644 lisp/term/wyse50.el create mode 100644 lisp/term/xterm.el create mode 100644 lisp/text-mode.el create mode 100644 lisp/text-props.el create mode 100644 lisp/toolbar-items.el create mode 100644 lisp/toolbar.el create mode 100644 lisp/tty-init.el create mode 100644 lisp/undo-stack.el create mode 100644 lisp/userlock.el create mode 100644 lisp/very-early-lisp.el create mode 100644 lisp/view-less.el create mode 100644 lisp/wid-browse.el create mode 100644 lisp/wid-edit.el create mode 100644 lisp/widget.el create mode 100644 lisp/window-xemacs.el create mode 100644 lisp/window.el create mode 100644 lisp/x-compose.el create mode 100644 lisp/x-faces.el create mode 100644 lisp/x-font-menu.el create mode 100644 lisp/x-init.el create mode 100644 lisp/x-iso8859-1.el create mode 100644 lisp/x-misc.el create mode 100644 lisp/x-mouse.el create mode 100644 lisp/x-scrollbar.el create mode 100644 lisp/x-select.el create mode 100644 lisp/x-win-sun.el create mode 100644 lisp/x-win-xfree86.el create mode 100644 lwlib/Makefile.in.in create mode 100644 lwlib/config.h.in create mode 100644 lwlib/lwlib-Xaw.c create mode 100644 lwlib/lwlib-Xaw.h create mode 100644 lwlib/lwlib-Xlw.c create mode 100644 lwlib/lwlib-Xlw.h create mode 100644 lwlib/lwlib-Xm.c create mode 100644 lwlib/lwlib-Xm.h create mode 100644 lwlib/lwlib-config.c create mode 100644 lwlib/lwlib-internal.h create mode 100644 lwlib/lwlib-utils.c create mode 100644 lwlib/lwlib-utils.h create mode 100644 lwlib/lwlib.c create mode 100644 lwlib/lwlib.h create mode 100644 lwlib/xlwmenu.c create mode 100644 lwlib/xlwmenu.h create mode 100644 lwlib/xlwmenuP.h create mode 100644 lwlib/xlwscrollbar.c create mode 100644 lwlib/xlwscrollbar.h create mode 100644 lwlib/xlwscrollbarP.h create mode 100644 man/ChangeLog create mode 100644 man/Makefile create mode 100644 man/README create mode 100644 man/cl.texi create mode 100644 man/custom.texi create mode 100644 man/external-widget.texi create mode 100644 man/info.texi create mode 100644 man/internals/internals.texi create mode 100644 man/lispref/abbrevs.texi create mode 100644 man/lispref/annotations.texi create mode 100644 man/lispref/back.texi create mode 100644 man/lispref/backups.texi create mode 100644 man/lispref/buffers.texi create mode 100644 man/lispref/building.texi create mode 100644 man/lispref/commands.texi create mode 100644 man/lispref/compile.texi create mode 100644 man/lispref/consoles-devices.texi create mode 100644 man/lispref/control.texi create mode 100644 man/lispref/databases.texi create mode 100644 man/lispref/debugging.texi create mode 100644 man/lispref/dialog.texi create mode 100644 man/lispref/display.texi create mode 100644 man/lispref/dragndrop.texi create mode 100644 man/lispref/edebug-inc.texi create mode 100644 man/lispref/edebug.texi create mode 100644 man/lispref/errors.texi create mode 100644 man/lispref/eval.texi create mode 100644 man/lispref/extents.texi create mode 100644 man/lispref/faces.texi create mode 100644 man/lispref/files.texi create mode 100644 man/lispref/frames.texi create mode 100644 man/lispref/functions.texi create mode 100644 man/lispref/glyphs.texi create mode 100644 man/lispref/hash-tables.texi create mode 100644 man/lispref/help.texi create mode 100644 man/lispref/hooks.texi create mode 100644 man/lispref/internationalization.texi create mode 100644 man/lispref/intro.texi create mode 100644 man/lispref/keymaps.texi create mode 100644 man/lispref/ldap.texi create mode 100644 man/lispref/lispref.texi create mode 100644 man/lispref/lists.texi create mode 100644 man/lispref/loading.texi create mode 100644 man/lispref/locals.texi create mode 100644 man/lispref/macros.texi create mode 100644 man/lispref/maps.texi create mode 100644 man/lispref/markers.texi create mode 100644 man/lispref/menus.texi create mode 100644 man/lispref/minibuf.texi create mode 100644 man/lispref/modes.texi create mode 100644 man/lispref/mouse.texi create mode 100644 man/lispref/mule.texi create mode 100644 man/lispref/numbers.texi create mode 100644 man/lispref/objects.texi create mode 100644 man/lispref/os.texi create mode 100644 man/lispref/positions.texi create mode 100644 man/lispref/processes.texi create mode 100644 man/lispref/range-tables.texi create mode 100644 man/lispref/scrollbars.texi create mode 100644 man/lispref/searching.texi create mode 100644 man/lispref/sequences.texi create mode 100644 man/lispref/specifiers.texi create mode 100644 man/lispref/streams.texi create mode 100644 man/lispref/strings.texi create mode 100644 man/lispref/symbols.texi create mode 100644 man/lispref/syntax.texi create mode 100644 man/lispref/text.texi create mode 100644 man/lispref/tips.texi create mode 100644 man/lispref/toolbar.texi create mode 100644 man/lispref/tooltalk.texi create mode 100644 man/lispref/variables.texi create mode 100644 man/lispref/windows.texi create mode 100644 man/lispref/x-windows.texi create mode 100644 man/make-stds.texi create mode 100644 man/new-users-guide/custom1.texi create mode 100644 man/new-users-guide/custom2.texi create mode 100644 man/new-users-guide/edit.texi create mode 100644 man/new-users-guide/enter.texi create mode 100644 man/new-users-guide/files.texi create mode 100644 man/new-users-guide/help.texi create mode 100644 man/new-users-guide/modes.texi create mode 100644 man/new-users-guide/new-users-guide.texi create mode 100644 man/new-users-guide/region.texi create mode 100644 man/new-users-guide/search.texi create mode 100644 man/new-users-guide/xmenu.texi create mode 100644 man/standards.texi create mode 100644 man/term.texi create mode 100644 man/termcap.texi create mode 100644 man/texinfo.tex create mode 100644 man/texinfo.texi create mode 100644 man/widget.texi create mode 100644 man/xemacs-faq.texi create mode 100644 man/xemacs/abbrevs.texi create mode 100644 man/xemacs/basic.texi create mode 100644 man/xemacs/buffers.texi create mode 100644 man/xemacs/building.texi create mode 100644 man/xemacs/calendar.texi create mode 100644 man/xemacs/cmdargs.texi create mode 100644 man/xemacs/custom.texi create mode 100644 man/xemacs/display.texi create mode 100644 man/xemacs/entering.texi create mode 100644 man/xemacs/files.texi create mode 100644 man/xemacs/fixit.texi create mode 100644 man/xemacs/frame.texi create mode 100644 man/xemacs/glossary.texi create mode 100644 man/xemacs/gnu.texi create mode 100644 man/xemacs/help.texi create mode 100644 man/xemacs/indent.texi create mode 100644 man/xemacs/keystrokes.texi create mode 100644 man/xemacs/killing.texi create mode 100644 man/xemacs/m-x.texi create mode 100644 man/xemacs/major.texi create mode 100644 man/xemacs/mark.texi create mode 100644 man/xemacs/menus.texi create mode 100644 man/xemacs/mini.texi create mode 100644 man/xemacs/misc.texi create mode 100644 man/xemacs/mouse.texi create mode 100644 man/xemacs/mule.texi create mode 100644 man/xemacs/new.texi create mode 100644 man/xemacs/packages.texi create mode 100644 man/xemacs/picture.texi create mode 100644 man/xemacs/programs.texi create mode 100644 man/xemacs/reading.texi create mode 100644 man/xemacs/regs.texi create mode 100644 man/xemacs/search.texi create mode 100644 man/xemacs/sending.texi create mode 100644 man/xemacs/startup.texi create mode 100644 man/xemacs/text.texi create mode 100644 man/xemacs/trouble.texi create mode 100644 man/xemacs/undo.texi create mode 100644 man/xemacs/windows.texi create mode 100644 man/xemacs/xemacs.texi create mode 100644 modules/base64/base64.c create mode 100644 modules/ldap/eldap.c create mode 100644 modules/ldap/eldap.h create mode 100644 modules/zlib/zlib.c create mode 100755 move-if-change create mode 100644 nt/ChangeLog create mode 100644 nt/Emacs.ad.h create mode 100644 nt/Installation.el create mode 100644 nt/README create mode 100644 nt/Win32.cf create mode 100644 nt/ad2c.sed create mode 100644 nt/config.h create mode 100644 nt/file.ico create mode 100644 nt/lisp.ico create mode 100644 nt/paths.h create mode 100644 nt/site.def create mode 100644 nt/x11.patch create mode 100644 nt/xemacs.ico create mode 100644 nt/xemacs.mak create mode 100644 nt/xemacs.rc create mode 100644 nt/xpm.mak create mode 100644 src/ChangeLog.1 create mode 100644 src/EmacsFrame.c create mode 100644 src/EmacsFrame.h create mode 100644 src/EmacsFrameP.h create mode 100644 src/EmacsManager.c create mode 100644 src/EmacsManager.h create mode 100644 src/EmacsManagerP.h create mode 100644 src/EmacsShell-sub.c create mode 100644 src/EmacsShell.c create mode 100644 src/EmacsShell.h create mode 100644 src/EmacsShellP.h create mode 100644 src/ExternalClient-Xlib.c create mode 100644 src/ExternalClient.c create mode 100644 src/ExternalClient.h create mode 100644 src/ExternalClientP.h create mode 100644 src/ExternalShell.c create mode 100644 src/ExternalShell.h create mode 100644 src/ExternalShellP.h create mode 100644 src/Makefile.in.in create mode 100644 src/README create mode 100644 src/alloca.c create mode 100644 src/alloca.s create mode 100644 src/backtrace.h create mode 100644 src/balloon-x.c create mode 100644 src/balloon_help.c create mode 100644 src/balloon_help.h create mode 100644 src/bitmaps.h create mode 100644 src/blocktype.c create mode 100644 src/blocktype.h create mode 100644 src/broken-sun.h create mode 100644 src/bytecode.c create mode 100644 src/bytecode.h create mode 100644 src/callint.c create mode 100644 src/callproc.c create mode 100644 src/cm.c create mode 100644 src/cm.h create mode 100644 src/cmdloop.c create mode 100644 src/commands.h create mode 100644 src/conslots.h create mode 100644 src/console-msw.c create mode 100644 src/console-msw.h create mode 100644 src/console-stream.h create mode 100644 src/console-tty.c create mode 100644 src/console-tty.h create mode 100644 src/console-x.c create mode 100644 src/console.c create mode 100644 src/debug.c create mode 100644 src/debug.h create mode 100644 src/device-msw.c create mode 100644 src/device-tty.c create mode 100644 src/device-x.c create mode 100644 src/device.c create mode 100644 src/device.h create mode 100644 src/dialog-msw.c create mode 100644 src/dialog-x.c create mode 100644 src/dialog.c create mode 100644 src/dired-msw.c create mode 100644 src/dired.c create mode 100644 src/doc.c create mode 100644 src/dragdrop.c create mode 100644 src/dragdrop.h create mode 100644 src/dynarr.c create mode 100644 src/ecrt0.c create mode 100644 src/editfns.c create mode 100644 src/eldap.c create mode 100644 src/eldap.h create mode 100644 src/elhash.c create mode 100644 src/elhash.h create mode 100644 src/eval.c create mode 100644 src/event-Xt.c create mode 100644 src/event-msw.c create mode 100644 src/event-stream.c create mode 100644 src/event-tty.c create mode 100644 src/event-unixoid.c create mode 100644 src/events-mod.h create mode 100644 src/events.c create mode 100644 src/events.h create mode 100644 src/extents.c create mode 100644 src/extents.h create mode 100644 src/extw-Xlib.c create mode 100644 src/extw-Xlib.h create mode 100644 src/extw-Xt.c create mode 100644 src/extw-Xt.h create mode 100644 src/fileio.c create mode 100644 src/filelock.c create mode 100644 src/filemode.c create mode 100644 src/floatfns.c create mode 100644 src/frame-msw.c create mode 100644 src/frame-tty.c create mode 100644 src/frame-x.c create mode 100644 src/frame.h create mode 100644 src/frameslots.h create mode 100644 src/free-hook.c create mode 100644 src/general.c create mode 100644 src/getloadavg.c create mode 100644 src/getpagesize.h create mode 100644 src/glyphs-msw.c create mode 100644 src/glyphs-msw.h create mode 100644 src/glyphs-x.c create mode 100644 src/glyphs-x.h create mode 100644 src/glyphs.h create mode 100644 src/gmalloc.c create mode 100644 src/gpmevent.c create mode 100644 src/gpmevent.h create mode 100644 src/gui-x.c create mode 100644 src/gui-x.h create mode 100644 src/gui.c create mode 100644 src/gui.h create mode 100644 src/hash.c create mode 100644 src/hash.h create mode 100644 src/hftctl.c create mode 100644 src/hpplay.c create mode 100644 src/imgproc.c create mode 100644 src/imgproc.h create mode 100644 src/inline.c create mode 100644 src/input-method-motif.c create mode 100644 src/input-method-xlib.c create mode 100644 src/insdel.h create mode 100644 src/intl.c create mode 100644 src/iso-wide.h create mode 100644 src/keymap.c create mode 100644 src/keymap.h create mode 100644 src/lastfile.c create mode 100644 src/libsst.c create mode 100644 src/libsst.h create mode 100644 src/libst.h create mode 100644 src/line-number.c create mode 100644 src/line-number.h create mode 100644 src/linuxplay.c create mode 100644 src/lisp-union.h create mode 100644 src/lstream.c create mode 100644 src/m/7300.h create mode 100644 src/m/README create mode 100644 src/m/acorn.h create mode 100644 src/m/alliant-2800.h create mode 100644 src/m/alliant.h create mode 100644 src/m/alliant1.h create mode 100644 src/m/alliant4.h create mode 100644 src/m/alpha.h create mode 100644 src/m/altos.h create mode 100644 src/m/amdahl.h create mode 100644 src/m/apollo.h create mode 100644 src/m/att3b.h create mode 100644 src/m/aviion.h create mode 100644 src/m/celerity.h create mode 100644 src/m/clipper.h create mode 100644 src/m/cnvrgnt.h create mode 100644 src/m/convex.h create mode 100644 src/m/cydra5.h create mode 100644 src/m/delta.h create mode 100644 src/m/delta88k.h create mode 100644 src/m/dpx2.h create mode 100644 src/m/dual.h create mode 100644 src/m/elxsi.h create mode 100644 src/m/ews4800r.h create mode 100644 src/m/gec63.h create mode 100644 src/m/gould-np1.h create mode 100644 src/m/gould.h create mode 100644 src/m/hp300bsd.h create mode 100644 src/m/hp800.h create mode 100644 src/m/hp9000s300.h create mode 100644 src/m/i860.h create mode 100644 src/m/ibm370aix.h create mode 100644 src/m/ibmps2-aix.h create mode 100644 src/m/ibmrs6000.h create mode 100644 src/m/ibmrt-aix.h create mode 100644 src/m/ibmrt.h create mode 100644 src/m/intel386.h create mode 100644 src/m/iris4d.h create mode 100644 src/m/iris5d.h create mode 100644 src/m/irist.h create mode 100644 src/m/is386.h create mode 100644 src/m/isi-ov.h create mode 100644 src/m/luna88k.h create mode 100644 src/m/m68k.h create mode 100644 src/m/masscomp.h create mode 100644 src/m/mega68.h create mode 100644 src/m/mg1.h create mode 100644 src/m/mips-siemens.h create mode 100644 src/m/mips.h create mode 100644 src/m/mips4.h create mode 100644 src/m/ncr386.h create mode 100644 src/m/news-risc.h create mode 100644 src/m/news.h create mode 100644 src/m/next.h create mode 100644 src/m/nh3000.h create mode 100644 src/m/nh4000.h create mode 100644 src/m/ns16000.h create mode 100644 src/m/ns32000.h create mode 100644 src/m/nu.h create mode 100644 src/m/orion.h create mode 100644 src/m/orion105.h create mode 100644 src/m/paragon.h create mode 100644 src/m/pfa50.h create mode 100644 src/m/plexus.h create mode 100644 src/m/pmax.h create mode 100644 src/m/powerpc.h create mode 100644 src/m/pyramid.h create mode 100644 src/m/pyrmips.h create mode 100644 src/m/sequent-ptx.h create mode 100644 src/m/sequent.h create mode 100644 src/m/sgi-challenge.h create mode 100644 src/m/sgi3000.h create mode 100644 src/m/sparc.h create mode 100644 src/m/sps7.h create mode 100644 src/m/stride.h create mode 100644 src/m/sun1.h create mode 100644 src/m/sun2.h create mode 100644 src/m/sun3-68881.h create mode 100644 src/m/sun3-fpa.h create mode 100644 src/m/sun3-soft.h create mode 100644 src/m/sun3.h create mode 100644 src/m/sun386.h create mode 100644 src/m/symmetry.h create mode 100644 src/m/tad68k.h create mode 100644 src/m/tahoe.h create mode 100644 src/m/tandem-s2.h create mode 100644 src/m/targon31.h create mode 100644 src/m/tek4300.h create mode 100644 src/m/tekxd88.h create mode 100644 src/m/template.h create mode 100644 src/m/tower32.h create mode 100644 src/m/tower32v3.h create mode 100644 src/m/ustation.h create mode 100644 src/m/vax.h create mode 100644 src/m/wicat.h create mode 100644 src/m/windowsnt.h create mode 100644 src/m/xps100.h create mode 100644 src/macros.c create mode 100644 src/macros.h create mode 100644 src/make-src-depend create mode 100644 src/malloc.c create mode 100644 src/marker.c create mode 100644 src/md5.c create mode 100644 src/mem-limits.h create mode 100644 src/menubar-msw.c create mode 100644 src/menubar-msw.h create mode 100644 src/menubar-x.c create mode 100644 src/menubar.c create mode 100644 src/menubar.h create mode 100644 src/minibuf.c create mode 100644 src/mule-ccl.h create mode 100644 src/nas.c create mode 100644 src/ndir.h create mode 100644 src/nsselect.m create mode 100644 src/nt.c create mode 100644 src/nt.h create mode 100644 src/ntheap.c create mode 100644 src/ntheap.h create mode 100644 src/ntplay.c create mode 100644 src/ntproc.c create mode 100644 src/objects-msw.h create mode 100644 src/objects-tty.h create mode 100644 src/objects-x.c create mode 100644 src/objects-x.h create mode 100644 src/objects.c create mode 100644 src/objects.h create mode 100644 src/offix-cursors.h create mode 100644 src/offix-types.h create mode 100644 src/offix.c create mode 100644 src/offix.h create mode 100644 src/opaque.c create mode 100644 src/opaque.h create mode 100644 src/paths.h.in create mode 100644 src/ppc.ldscript create mode 100644 src/pre-crt0.c create mode 100644 src/print.c create mode 100644 src/process-nt.c create mode 100644 src/process-unix.c create mode 100644 src/process.c create mode 100644 src/process.h create mode 100644 src/procimpl.h create mode 100644 src/profile.c create mode 100644 src/ralloc.c create mode 100644 src/rangetab.c create mode 100644 src/rangetab.h create mode 100644 src/realpath.c create mode 100644 src/regex.h create mode 100644 src/s/3700.h create mode 100644 src/s/386-ix.h create mode 100644 src/s/386bsd.h create mode 100644 src/s/README create mode 100644 src/s/aix3-1.h create mode 100644 src/s/aix3-2-5.h create mode 100644 src/s/aix3-2.h create mode 100644 src/s/aix4-1.h create mode 100644 src/s/aix4-2.h create mode 100644 src/s/aix4.h create mode 100644 src/s/alliant-2800.h create mode 100644 src/s/alliant.h create mode 100644 src/s/altos.h create mode 100644 src/s/amdahl.h create mode 100644 src/s/bsd386.h create mode 100644 src/s/bsd4-1.h create mode 100644 src/s/bsd4-2.h create mode 100644 src/s/bsd4-3.h create mode 100644 src/s/bsdos2-1.h create mode 100644 src/s/bsdos2.h create mode 100644 src/s/bsdos3.h create mode 100644 src/s/cxux.h create mode 100644 src/s/cxux7.h create mode 100644 src/s/cygwin32.h create mode 100644 src/s/decosf1-2.h create mode 100644 src/s/decosf1-3.h create mode 100644 src/s/decosf3-1.h create mode 100644 src/s/decosf3-2.h create mode 100644 src/s/decosf4-0.h create mode 100644 src/s/dgux.h create mode 100644 src/s/dgux5-4r2.h create mode 100644 src/s/dgux5-4r3.h create mode 100644 src/s/dgux5-4r4.h create mode 100644 src/s/domain.h create mode 100644 src/s/esix.h create mode 100644 src/s/esix5r4.h create mode 100644 src/s/ewsux5r4.h create mode 100644 src/s/freebsd.h create mode 100644 src/s/gnu.h create mode 100644 src/s/hpux.h create mode 100644 src/s/hpux10-shr.h create mode 100644 src/s/hpux10.h create mode 100644 src/s/hpux11-shr.h create mode 100644 src/s/hpux11.h create mode 100644 src/s/hpux8-shr.h create mode 100644 src/s/hpux8.h create mode 100644 src/s/hpux9-shr.h create mode 100644 src/s/hpux9-x11r4.h create mode 100644 src/s/hpux9.h create mode 100644 src/s/hpux9shxr4.h create mode 100644 src/s/iris3-5.h create mode 100644 src/s/iris3-6.h create mode 100644 src/s/irix3-3.h create mode 100644 src/s/irix4-0.h create mode 100644 src/s/irix5-0.h create mode 100644 src/s/irix5-1.h create mode 100644 src/s/irix5-2.h create mode 100644 src/s/irix5-3.h create mode 100644 src/s/irix6-0.h create mode 100644 src/s/isc2-2.h create mode 100644 src/s/isc3-0.h create mode 100644 src/s/isc4-0.h create mode 100644 src/s/isc4-1.h create mode 100644 src/s/linux.h create mode 100644 src/s/mach-bsd4-3.h create mode 100644 src/s/netbsd.h create mode 100644 src/s/newsos5.h create mode 100644 src/s/nextstep.h create mode 100644 src/s/openbsd.h create mode 100644 src/s/osf1.h create mode 100644 src/s/ptx.h create mode 100644 src/s/riscix1-1.h create mode 100644 src/s/riscix1-2.h create mode 100644 src/s/riscos5.h create mode 100644 src/s/rtu.h create mode 100644 src/s/sco4.h create mode 100644 src/s/sco5-shr.h create mode 100644 src/s/sco5.h create mode 100644 src/s/sol2.h create mode 100644 src/s/sunos4-0-shr.h create mode 100644 src/s/sunos4-0.h create mode 100644 src/s/sunos4-1-1.h create mode 100644 src/s/sunos4-1-2-shr.h create mode 100644 src/s/sunos4-1-2.h create mode 100644 src/s/sunos4-1-3-shr.h create mode 100644 src/s/sunos4-1-3.h create mode 100644 src/s/sunos4-1-4-shr.h create mode 100644 src/s/sunos4-1-4.h create mode 100644 src/s/sunos4-1-shr.h create mode 100644 src/s/sunos4-1.h create mode 100644 src/s/template.h create mode 100644 src/s/ultrix.h create mode 100644 src/s/ultrix4-3.h create mode 100644 src/s/umax.h create mode 100644 src/s/umips.h create mode 100644 src/s/unipl5-0.h create mode 100644 src/s/unipl5-2.h create mode 100644 src/s/usg5-0.h create mode 100644 src/s/usg5-2-2.h create mode 100644 src/s/usg5-2.h create mode 100644 src/s/usg5-3.h create mode 100644 src/s/usg5-4-2.h create mode 100644 src/s/usg5-4.h create mode 100644 src/s/windowsnt.h create mode 100644 src/s/xenix.h create mode 100644 src/scrollbar-msw.c create mode 100644 src/scrollbar-msw.h create mode 100644 src/scrollbar-x.c create mode 100644 src/scrollbar-x.h create mode 100644 src/scrollbar.c create mode 100644 src/scrollbar.h create mode 100644 src/select-msw.c create mode 100644 src/sgiplay.c create mode 100644 src/sheap.c create mode 100644 src/signal.c create mode 100644 src/sound.c create mode 100644 src/specifier.c create mode 100644 src/specifier.h create mode 100644 src/src-headers create mode 100644 src/strcat.c create mode 100644 src/strcmp.c create mode 100644 src/strcpy.c create mode 100644 src/strftime.c create mode 100644 src/sunOS-fix.c create mode 100644 src/sunplay.c create mode 100644 src/sunpro.c create mode 100644 src/symeval.h create mode 100644 src/sysdep.c create mode 100644 src/sysdep.h create mode 100644 src/sysdir.h create mode 100644 src/sysdll.c create mode 100644 src/sysdll.h create mode 100644 src/sysfile.h create mode 100644 src/sysfloat.h create mode 100644 src/sysproc.h create mode 100644 src/syspwd.h create mode 100644 src/syssignal.h create mode 100644 src/systime.h create mode 100644 src/systty.h create mode 100644 src/syswait.h create mode 100644 src/termcap.c create mode 100644 src/terminfo.c create mode 100644 src/toolbar-msw.c create mode 100644 src/toolbar.c create mode 100644 src/toolbar.h create mode 100644 src/tooltalk.c create mode 100644 src/tooltalk.doc create mode 100644 src/tooltalk.h create mode 100644 src/tparam.c create mode 100644 src/undo.c create mode 100644 src/unexaix.c create mode 100644 src/unexalpha.c create mode 100644 src/unexapollo.c create mode 100644 src/unexconvex.c create mode 100644 src/unexcw.c create mode 100644 src/unexec.c create mode 100644 src/unexelf.c create mode 100644 src/unexelfsgi.c create mode 100644 src/unexencap.c create mode 100644 src/unexenix.c create mode 100644 src/unexfreebsd.c create mode 100644 src/unexfx2800.c create mode 100644 src/unexhp9k3.c create mode 100644 src/unexhp9k800.c create mode 100644 src/unexmips.c create mode 100644 src/unexnext.c create mode 100644 src/unexnt.c create mode 100644 src/unexsni.c create mode 100644 src/unexsol2-6.c create mode 100644 src/unexsol2.c create mode 100644 src/unexsunos4.c create mode 100644 src/universe.h create mode 100644 src/vm-limit.c create mode 100644 src/widget.c create mode 100644 src/window.c create mode 100644 src/window.h create mode 100644 src/winslots.h create mode 100644 src/xgccache.c create mode 100644 src/xgccache.h create mode 100644 src/xintrinsic.h create mode 100644 src/xintrinsicp.h create mode 100644 src/xmmanagerp.h create mode 100644 src/xmprimitivep.h create mode 100644 src/xmu.c create mode 100644 src/xmu.h create mode 100644 tests/DLL/dltest.c create mode 100644 tests/Dnd/README create mode 100644 tests/Dnd/README.OffiX create mode 100644 tests/Dnd/dragtest.el create mode 100644 tests/Dnd/droptest.el create mode 100644 tests/Dnd/droptest.sh create mode 100644 tests/auc-tex-test create mode 100644 tests/frame.el create mode 100644 tests/mule/match.el create mode 100644 tests/reproduce-bugs.el create mode 100644 tests/tooltalk/Makefile create mode 100644 tests/tooltalk/beeps.el create mode 100644 tests/tooltalk/emacs-eval.c create mode 100644 tests/tooltalk/load-file.c create mode 100644 tests/tooltalk/make-client-frame.c create mode 100644 tests/tooltalk/simple.el create mode 100644 version.sh diff --git a/BUGS b/BUGS new file mode 100644 index 0000000..5ec5508 --- /dev/null +++ b/BUGS @@ -0,0 +1,25 @@ +If you think you may have found a bug in XEmacs, please +read the Bugs section of the XEmacs manual for advice on +(1) how to tell when to report a bug, and +(2) how to write a useful bug report and what information +it needs to have. + +There are three ways to read the Bugs section. + +(1) In a printed copy of the XEmacs manual. + +(2) With Info. Start XEmacs, do C-h i to enter Info, +then m XEmacs RET to get to the Emacs manual, then m Bugs RET +to get to the section on bugs. Or use standalone Info in +a like manner. (Standalone Info is part of the Texinfo distribution, +not part of the XEmacs distribution.) + +(3) By hand. Do + cat info/xemacs* | more "+/^File: xemacs.info, Node: Bugs," + + +Part II of the XEmacs FAQ, available in a manner similar to the above, +or via the world wide web, contains extensive information on how to +track down and report bugs. + + http://www.xemacs.org/faq/ diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..1942c43 --- /dev/null +++ b/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/GETTING.GNU.SOFTWARE b/GETTING.GNU.SOFTWARE new file mode 100644 index 0000000..27b5ca3 --- /dev/null +++ b/GETTING.GNU.SOFTWARE @@ -0,0 +1,120 @@ +-*- text -*- + +For information on getting XEmacs, see the files DISTRIB and +MAILINGLISTS in the .../etc/ directory of the XEmacs distribution. + + + Getting GNU Software, 14 May 94 +Copyright (C) 1986, 1987, 1988, 1989, 1990, 1992, 1993, 1994 Free Software Foundation, Inc. + + + Permission is granted to anyone to make or distribute verbatim + copies of this document provided that the copyright notice and + this permission notice are preserved, and that the distributor + grants the recipient permission for further redistribution as + permitted by this notice. + + +* GNU and the Free Software Foundation + +Project GNU is organized as part of the Free Software Foundation, Inc. +The Free Software Foundation has the following goals: 1) to create GNU +as a full development/operating system. 2) to distribute GNU and +other useful software with source code and permission to copy and +redistribute. + +Further information on the rationale for GNU is in file +`/pub/gnu/GNUinfo/GNU' (all files referred to are on the Internet host +prep.ai.mit.edu). + +Information on GNU Internet mailing lists and gnUSENET newsgroups can +be found in `/pub/gnu/GNUinfo/MAILINGLISTS'. + +* How To Get The Software + +The easiest way to get a copy of the distribution is from someone else +who has it. You need not ask for permission to do so, or tell any one +else; just copy it. The second easiest is to ftp it over the +Internet. The third easiest way is to uucp it. Ftp and uucp +information is in `/pub/gnu/GNUinfo/FTP'. + +If you cannot get a copy any of these ways, or if you would feel more +confident getting copies straight from us, or if you would like to get +some funds to us to help in our efforts, you can order one from the +Free Software Foundation. See `/pub/gnu/GNUinfo/DISTRIB' and +`/pub/gnu/GNUinfo/ORDERS'. + +* What format are the *.gz files in? + +Because the unix `compress' utility is patented (by two separate +patents, in fact), we cannot use it; it's not free software. + +Therefore, the GNU Project has chosen a new compression utility, +`gzip', which is free of any known software patents and which tends to +compress better anyway. As of March 1993, all compressed files in the +GNU anonymous FTP area, `prep.ai.mit.edu:/pub/gnu', have been +converted to the new format. Files compressed with this new +compression program end in `.gz' (as opposed to `compress'-compressed +files, which end in `.Z'). + +Gzip can uncompress `compress'-compressed files and `pack'-compressed +files (which end in `.z'). This is possible because the various +decompression algorithms are not patented---only compression is. + +The gzip program is available from any GNU mirror site (see +`/pub/gnu/GNUinfo/FTP' for a list of mirror sites) in shar, tar, or +gzipped tar format (for those who already have a prior version of gzip +and want faster data transmission). It works on virtually every unix +system, MSDOS, OS/2, and VMS. + +* Available Software + +** GNU Emacs + +The GNU Emacs distribution includes: + - manual source in TeX format. + - an enhanced regex (regular expression) library. + +See files `/pub/gnu/GNUinfo/MACHINES*' for the status of porting Emacs +to various machines and operating systems. + +** C Scheme - a block structured dialect of LISP. + +The Free Software Foundation distributes C Scheme for the MIT Scheme +Project on its Scheme tapes. The full ftp distribution can be gotten +via anonymous FTP from altdorf.ai.mit.edu in directory /archive. + +Problems with the C Scheme distribution and its ftp distribution +should be referred to: . There are +two general mailing lists: and +. Send requests to join either list to: + or +. + +** Other GNU Software + +A full list of available software are in `/pub/gnu/GNUinfo/ORDERS' and +`/pub/gnu/DESCRIPTIONS'. + +* No Warranties + +We distribute software in the hope that it will be useful, but without +any warranty. No author or distributor of this software accepts +responsibility to anyone for the consequences of using it or for +whether it serves any particular purpose or works at all, unless he +says so in writing. + +* If You Like The Software + +If you like the software developed and distributed by the Free +Software Foundation, please express your satisfaction with a donation. +Your donations will help to support the foundation and make our future +efforts successful, including a complete development and operating +system, called GNU (Gnu's Not Un*x), which will run Un*x user +programs. Please note that donations and funds raised by selling +tapes, CD-ROMs, and floppy diskettes are the major source of funding +for our work. + +For more information on GNU and the Foundation, contact us at Internet +address or the foundation's US Mail address +found in file `/pub/gnu/GNUinfo/ORDERS'. diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..50fba0b --- /dev/null +++ b/INSTALL @@ -0,0 +1,766 @@ +XEmacs Installation Guide +Copyright (c) 1994, 1995, 1996 Board of Trustees, University of Illinois +Copyright (c) 1994 Free Software Foundation, Inc. + +Synched up with: FSF 19.30. + + 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 changed them, + and that any new or changed statements about the activities + of the Free Software Foundation are approved by the Foundation. + + +BUILDING AND INSTALLATION (Unix and Cygwin, see the file nt/README +for instructions on building under Microsoft Windows): + +1) Make sure your system has enough swapping space allocated to handle + a program whose pure code is 900k bytes and whose data area is at + least 400k and can reach 8Mb or more. If the swapping space is + insufficient, you will get an error in the command `temacs -batch + -l loadup dump', found in `./src/Makefile.in.in', or possibly when + running the final dumped XEmacs. + +Building XEmacs requires about 41 Mb of disk space (including the +XEmacs sources). Once installed, XEmacs occupies about 16 Mb in the +file system where it is installed; this includes the executable files, +Lisp libraries, miscellaneous data files, and on-line documentation. +The amount of storage of the Lisp directories may be reduced by +compressing the .el files. If the building and installation take place +in different directories, then the installation procedure temporarily +requires 41+16 Mb. Adjust this value upwards depending upon what +additional Lisp support is installed. + +XEmacs requires an ANSI C compiler, such as GCC. If you wish to build +the documentation yourself, you will need at least version 1.68 of +makeinfo (GNU texinfo-3.11). + + +2) Decide on what other software packages you would like to use with +XEmacs, but are not yet available on your system. On some systems, +Motif and CDE are optional additions. On Solaris, the SUNWaudmo +package enables native sound support. There are also a number of free +software packages that XEmacs can use. If these are not yet available +on your system, obtain, build and install those external packages +before building XEmacs. The packages XEmacs can use are: + + Xaw3d, XPM, JPEG, compface, PNG, zlib, GNU DBM, Berkeley DB, socks, + term, NAS, Canna, Kinput2, SJ3, Wnn. + +You can get (most of) them from the XEmacs ftp site at +ftp://ftp.xemacs.org/pub/xemacs/aux + +If you want users on other systems to be able to use the XEmacs you +have built, try to build those packages so that the generated +libraries are statically linked. + +Use the --site-includes and --site-libraries options when building +XEmacs to allow configure to find the external software packages. +If you link with dynamic (``.so'') external package libraries, which +is not recommended, you will also need to add the library directories +to the --site-runtime-libraries option. + + +3) Decide what Initial Lisp you need with XEmacs. XEmacs is +distributed separately from most of its runtime environment. This is +done to make it easier for administrators to tune an installation for +what the local users need. See the file etc/PACKAGES for an overview +of what is available and which packages need to be installed prior to +building XEmacs. At this point you only need a minimum to get started +at which point you may install what you wish without further changes +to the XEmacs binary. A sample minimum configuration for a Linux +system using Mule and Wnn6 from OMRON corporation would be the +packages `mule-base' and `egg-its'. By default, packages will be +searched for in the path + +~/.xemacs::$prefix/lib/xemacs-${version}/mule-packages:$prefix/lib/xemacs/mule-packages:$prefix/lib/xemacs-${version}/packages:$prefix/lib/xemacs/packages + +This may be changed by specifying a different value with the +--package-path configuration option. + +4) In the top level directory of the XEmacs distribution, run the + program `configure' as follows: + + ./configure [CONFIGURATION-NAME] [--OPTION[=VALUE]] ... + +Almost always, you should let `configure' (actually the shell script +`config.guess') guess your host type, by omitting the +CONFIGURATION-NAME argument. If you like to experiment, specify a +configuration name in the form MACHINE-VENDOR-OPSYS, for example: + +sparc-sun-solaris2.6 + +See config.guess and configure.in for valid values for MACHINE, +VENDOR, and OPSYS. Also check `./etc/MACHINES' for advice on building +on particular machines. + +If you don't want X support, specify `--without-x'. If you omit this +option, `configure' will try to autodetect whether your system has X, +and arrange to use it if present. + +The `--x-includes=DIR' and `--x-libraries=DIR' options tell the build +process where the compiler should look for the include files and +object libraries used with the X Window System. Normally, `configure' +is able to find them; these options are necessary if you have your X +Window System files installed in unusual places. + +The `--site-includes=DIR' and `--site-libraries=DIR' options allow you +to specify additional places the compiler should look for include +files and object libraries. You may specify multiple DIR's by +enclosing the list in quotes. All the external packages you want to +use with XEmacs (e.g. xpm, wnn, ...) described later should have their +include and library directories defined using these options. + +The `--site-runtime-libraries=DIR' option specifies directories to +search for shared libraries at run time. This may be necessary if you +link with dynamic libraries that are installed in non-standard +directories, or if you expect some of the libraries used to build +XEmacs to be in a different directory at run time than at build time. +Usually this will add a `-R' to each directory specified and use that +when linking XEmacs. If you use this option, you must specify ALL of +the directories containing shared libraries at run time, including +system directories. + +Rationale: Some people think that directories in --site-libraries +should be automatically used to update --site-runtime-libraries. +Here's a real-life scenario that explains why this is not done: You +build binaries for your company using static libs in +/net/toy/hack/lib. XEmacs adds /net/toy/hack/lib to the runpath of +the executable you've built. Since there are only static libs there, +the system runtime loader will look in this dir, and ignore it, +causing only a .01 second delay in starting XEmacs. You leave the +company for a job at a small Silicon Valley startup. Time passes. +The next guy who inherits your machine objects to working on a machine +named `toy', and gets the sysadmin to rename the machine `godzilla'. +The SA forgets to remove the old entry for `toy' from the hosts file. +Now the system loader will still try to access /net/toy/, and the +automounter will hang trying to access /net/toy. XEmacs suddenly +takes 30 seconds longer to start up, no one can figure out why, and +everyone at your old company curses your name, thinking that you've +put a time bomb into XEmacs. And they're right! + +The `--with-gcc' option specifies that the build process should +compile XEmacs using GCC. The `--compiler' option allows you to +specify some other compiler to be used to compile XEmacs. If neither +option is specified, the environment variable CC is used instead. +Otherwise the compiler will then default to 'cc'. + +The `--cflags' option specifies the CFLAGS the build process should +use when compiling XEmacs. Otherwise the value of the environment +variable CFLAGS is consulted. If that is also undefined, CFLAGS +defaults to "-g -O" for gcc and "-g" for all other compilers. + +The `--with-gnu-make' option specifies that Makefiles should be +written to take advantage of special features of GNU Make. GNU Make +works fine on Makefiles even without this option. This flag just +allows for simultaneous in-place and --srcdir building. + +The `--dynamic' option specifies that configure should try to link +emacs dynamically rather than statically. + +The `--const-is-losing' option is for use if you have trouble +compiling due to the `const' storage class in C. This is defined by +default. Most users should have no need to change this. + +You can build XEmacs for several different machine types from a single +source directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. Make separate +build directories for the different configuration types, and in each +one, run the XEmacs `configure' script. `configure' looks for the +Emacs source code in the directory that `configure' is in. + +The `--prefix=PREFIXDIR' option specifies where the installation process +should put XEmacs and its data files. This defaults to `/usr/local'. +- XEmacs (and the other utilities users run) go in PREFIXDIR/bin + (unless the `--exec-prefix' option says otherwise). +- The architecture-independent files go in PREFIXDIR/lib/xemacs-VERSION + (where VERSION is the version number of XEmacs, like `21.0'). +- The architecture-dependent files go in + PREFIXDIR/lib/xemacs-VERSION/CONFIGURATION-NAME + (where CONFIGURATION-NAME is the host type, like mips-dec-ultrix4.2), + unless the `--exec-prefix' option says otherwise. + +The `--exec-prefix=EXECDIR' option allows you to specify a separate +portion of the directory tree for installing architecture-specific +files, like executables and utility programs. If specified, +- XEmacs (and the other utilities users run) go in EXECDIR/bin, and +- The architecture-dependent files go in + EXECDIR/lib/xemacs-VERSION/CONFIGURATION-NAME. +EXECDIR/bin should be a directory that is normally in users' PATHs. + +For example, the command + + ./configure mips-dec-ultrix --with-x11=yes + +configures XEmacs to build for a DECstation running Ultrix, with +support for the X11 window system. + +The `--with-menubars=TYPE' option allows you to specify which X +toolkit you wish to use for the menubar. The valid options are +`lucid', `motif' and `no'. The default is `lucid' which is a +Motif-lookalike menubar. We highly recommend its usage over the real +Motif menubar. (In fact, the Motif menubar is currently broken.) If +`no' is specified then support for menubars will not be compiled in. + +The `--with-scrollbars=TYPE' option allows you to specify which X +toolkit you wish to use for the scrollbars. The valid options are +`lucid', `motif', `athena', `athena3d', and `no'. The default is +`lucid' which is a Motif-lookalike scrollbar. If `no' is specified +then support for scrollbars will not be compiled in. + +The `--with-dialogs=TYPE' option allows you to specify which X toolkit +you wish to use for the dialog boxes. The valid options are `athena', +`athena3d', `motif, and `no. The `lucid' option is accepted and will +result in the `athena' toolkit being used. If the Motif toolkit can be +found the default is `motif'. Otherwise, the default is `athena'. If +`no' is specified then support for dialog boxes will not be compiled +in. + +The `--with-toolbars' option allows you to enable or disable toolbar +support. The default is `yes' as long as support for a windowing +system is included. + +The `--with-xpm' option specifies that XEmacs should support X11 +Pixmaps. `configure' will attempt to detect if you have the Xpm +libraries and define `--with-xpm' for you. + +The `--with-xface' option specifies that XEmacs should support +X-Faces. `configure' will attempt to detect if you have the compface +library and define `--with-xface' for you. + +The `--with-database' option specifies that XEmacs should be built +with additional database support. The valid options are `no' or a +comma-separated list of one or more of `dbm', `gnudbm' or `berkdb'. +`configure' will attempt to detect the necessary libraries and header +files and define `--with-database' for you. + +The `--with-socks' option specifies that XEmacs should be built with +SOCKS support. This requires the libsocks library. + +The `--with-tooltalk' option specifies that XEmacs should be built +with ToolTalk support for interconnecting with other applications. +ToolTalk is not yet supported on all architectures. If you use this +option, you should have the tooltalk package (see etc/PACKAGES) +installed prior to building XEmacs. + +The `--with-sparcworks' option specifies that XEmacs should be built +with support for Sun Sparcworks 3.0.1 and up (including Sun WorkShop). +This functionality is only of use on SunOS 4.1.x and Solaris 2.x +systems. If you use this option, you should have the Sun package (see +etc/PACKAGES) installed prior to building XEmacs. + +The `--with-cde' option allows you to enable or disable CDE drag and +drop support. `configure' will attempt to detect this option and +define `--with-cde' for you. + +The `--with-offix' option allows you to enable or disable OffiX drag +and drop support. This requires no external library support, so if +X11 support is available, then this option defaults to `yes'. OffiX +support can be explicitly disabled via the `--with-offix=no' option. + +The `--external-widget' option specifies that XEmacs should be built +with support for being used as a widget by other X11 applications. +This functionality should be considered beta. + +The `--without-xmu' option can be used if your vendor doesn't ship +the Xmu library. + +The `--puresize' option can be used to change the amount of purespace +allocated for the dumped XEmacs. As of XEmacs 20.1 usage of this +parameter is deprecated and will be ignored. + +The `--with-sound=TYPE' option specifies that XEmacs should be built +with sound support. Native (`--with-sound=native') sound support is +currently available only on Sun SparcStations, SGI's, HP9000s, and +systems (such as Linux) with soundcard.h. Network Audio Support (NAS) +(`--with-sound=nas' or `--with-sound=both') is an extension to X that +you may or may not have for your system. For NAS, you will probably +need to provide the paths to the nas include and library directories +to configure. If `--with-sound' is not specified, `configure' will +attempt to determine if your configuration supports native sound and +define --with-sound for you. If your native sound library is not in a +standard location you can specify it with the `--native-sound-lib=LIB' +flag. For Linux, `/dev/audio' is required for SunAudio files and +`/dev/dsp' is required for raw data and WAVE format files. + +The `--rel-alloc' option can be used to either enable or disable use +of the relocating allocator. Turning on --rel-alloc will allow XEmacs +to return unused memory to the operating system, thereby reducing its +memory footprint. However, it may make XEmacs runs more slowly, +especially if your system's `mmap' implemntation is missing or +inefficient. Generally, it's best to go with the default +configuration for your system. You can tweak this based on how you +use XEmacs, and the memory and cpu resources available on your system. + +The `--use-system-malloc' option can be use to either enable or +disable use of the system malloc. Generally, it's best to go with the +default configuration for your system. Note that on many systems +using the system malloc disables the use of the relocating allocator. + +The `--use-debug-malloc' option can be used to link a special debugging +version of malloc. Debug Malloc is not included with XEmacs, is +intended for use only by the developers and may be obtained from +. + +The `--debug' and `--error-checking' options are intended for use only +by the developers. `--debug' adds code to be compiled in for +performing various tests. `--error-checking' adds additional tests to +many of the commonly used macros. + +The `--verbose' and `--extra-verbose' options are intended for use +only by the developers. `--verbose' causes the results of all +configure tests to be displayed. `--extra-verbose' displays +additional information, useful for debugging. Another help for +determining configure failures is the file `config.log', which +contains the results of the compile and link tests used by configure. + +The `--with-mule' option enables (MUlti-Lingual Emacs) support, needed +to suport non-Latin-1 (including Asian) languages. The Mule support +is not yet as stable or efficient as the `Latin1' support. Enabling +Mule support requires the mule-base package installed prior to +building XEmacs. The following options require Mule support: + +The `--with-xim' option enables use of the X11 XIM mechanism to allow +an input method to input text into XEmacs. The input method is shared +among all the X applications sharing an X display and using the same +language. The XIM support comes in two flavors: `motif' and `xlib'. +The Motif support (the XmIm* functions) is preferred when available. +The xlib XIM support works reasonably well so long as the X11 libraries +are recent enough. It has been fairly well tested on Linux with glibc +2.0.5 and 2.0.6 and Kinput2 as an XIM server. In this configuration +X11 must be recompiled with X_LOCALE defined because glibc is lacking +localization for Japanese. The XIM support defaults to `no' except +when Motif is detected where it is stable with OSF libraries. The XIM +support in Lesstif (a Free Motif replacement) does not work as of +v0.82. If you enable this option, you will probably wish to install +the `locale' package which contains localized Splash screens and +Menubars. + +The `--with-xfs' option enables use of a multilingual Menubar. At the +present time, only Japanese and French locales are supported. In +order to use a multilingual Menubar you must have the `locale' package +installed. The `locale' package does not have to be installed when +building XEmacs. + +The `--with-canna' option enables the use of the Canna Japanese input +method. This is stable code and fairly well tested. In order to use +it, you will have to have the Canna server installed and running. +Canna versions 3.2pl2 and 3.5b2 are known to work. Version 3.2pl2 is +considered most stable than version 3.5b2. If Canna is already +installed, configure will autodetect it, so you never need to +explicitly use this option unless your Canna libraries are somewhere +strange. Canna run time support is currently bundled with the +`mule-base' package so there is nothing additional to install in order +to use it. + +The `--with-wnn' and `--with-wnn6' options are for compiling with the Wnn +multi-language input method. `--with-wnn' is for compiling with Wnn-4.2, +the Free version of WNN. `--with-wnn6' is for compiling against WNN6, +the commercial version of WNN available from OMRON Corporation. This is +stable code and fairly well tested. In order to build with this +option, you will need to have the `egg-its' lisp package already +installed. + +Please note that it is safe to build with as many of the options +`--with-xim', `--with-canna' and `--with-wnn' as your system +supports. + +`configure' doesn't do any compilation or installation itself. It +just creates the files that influence those things: `./src/config.h', +and all the Makefile's in the build tree. + +The `--with-pop', `--with-hesiod', and `--with-kerberos' options are used +in conjunction with movemail. As of XEmacs 20.1, movemail is identical +to the one used in Emacs. + +When it is done, `configure' prints a description of what it did and +creates a shell script `config.status' which, when run, recreates the +same configuration. If `configure' exits with an error after +disturbing the status quo, it removes `config.status'. + +4) Look at `./lisp/paths.el'; if some of those values are not right +for your system, set up the file `./lisp/site-init.el' with XEmacs +Lisp code to override them; it is not a good idea to edit paths.el +itself. YOU MUST USE THE LISP FUNCTION `setq' TO ASSIGN VALUES, +rather than `defvar', as used by `./lisp/paths.el'. For example, + + (setq news-inews-program "/usr/bin/inews") + +is how you would override the default value of the variable +news-inews-program (which is "/usr/local/inews"). + +Before you override a variable this way, *look at the value* that the +variable gets by default! Make sure you know what kind of value the +variable should have. If you don't pay attention to what you are +doing, you'll make a mistake. + +Things may malfunction if the variable `directory-abbrev-alist' is not set +up to translate "temporary" automounter mount points into the canonical +form. The default value of this variable contains the translation + + ("^/tmp_mnt/" . "/") + +meaning translate "/tmp_mnt/net/FOO" into "/net/FOO", which is appropriate +for the default configuration of the Sun automounter, but which may be +inappropriate for different vendor's automounters, or if you have customized +your mount-point names. + +5) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs +Lisp code you want XEmacs to load before it is dumped out. Use +site-load.el for additional libraries if you arrange for their +documentation strings to be in the lib-src/DOC file (see +src/Makefile.in.in if you wish to figure out how to do that). For all +else, use site-init.el. + +If you set load-path to a different value in site-init.el or +site-load.el, XEmacs will use *precisely* that value when it starts up +again. If you do this, you are on your own! + +Note that, on some systems, the code you place in site-init.el must +not use expand-file-name or any other function which may look +something up in the system's password and user information database. +See `./PROBLEMS' for more details on which systems this affects. + +The `site-*.el' files are nonexistent in the distribution. You do not +need to create them if you have nothing to put in them. + +6) Refer to the file `./etc/TERMS' for information on fields you may +wish to add to various termcap entries. The files `./etc/termcap.ucb' +and `./etc/termcap.dat' may already contain appropriately-modified +entries. + +7) Run `make' in the top directory of the XEmacs distribution to finish +building XEmacs in the standard way. The final executable file is +named `src/emacs'. You can execute this file "in place" without +copying it, if you wish; then it automatically uses the sibling +directories ../lisp, ../lib-src, ../info. + +Or you can "install" the executable and the other XEmacs into their +installed locations, with `make install'. By default, XEmacs's files +are installed in the following directories: + +By default, XEmacs installs its files in the following directories: + +`/usr/local/bin' holds the executable programs users normally run - + `xemacs', `etags', `ctags', `b2m', `emacsclient', + `gnuclient', `gnudoit', `gnuattach', and `rcs-checkin'. + +`/usr/local/lib/xemacs-VERSION/lisp' holds the Emacs Lisp libraries; + `VERSION' stands for the number of the XEmacs version + you are installing, like `18.59' or `19.14'. Since + the lisp libraries change from one version of XEmacs to + another, including the version number in the path + allows you to have several versions of XEmacs installed + at the same time; this means that you don't have to + make XEmacs unavailable while installing a new version. + + XEmacs searches for its lisp files in these + directories, and then in + `/usr/local/lib/xemacs/site-lisp/*'. + +`/usr/local/lib/xemacs-VERSION/etc' holds the XEmacs tutorial, the + `yow' database, and other architecture-independent + files XEmacs might need while running. VERSION is as + specified for `.../lisp'. + +`/usr/local/lib/xemacs/lock' contains files indicating who is + editing what, so XEmacs can detect editing clashes + between users. + +`/usr/local/lib/xemacs-VERSION/CONFIGURATION-NAME' contains executable + programs used by XEmacs that users are not expected to + run themselves, and the DOC file. `VERSION' is the + number of the XEmacs version you are installing, and + `CONFIGURATION-NAME' is the host type of your system. + Since these files are specific to the version of + XEmacs, operating system, and architecture in use, + including the configuration name in the path allows + you to have several versions of XEmacs for any mix of + machines and operating systems installed at the same + time; this is useful for sites at which different + kinds of machines share the file system XEmacs is + installed on. + +`/usr/local/lib/xemacs-VERSION/info' holds the on-line documentation + for XEmacs, known as "info files". + +`/usr/local/man/man1' holds the man pages for the programs installed + in `/usr/local/bin'. + +If these directories are not what you want, you can specify where to +install XEmacs's libraries and data files or where XEmacs should search +for its lisp files by giving values for `make' variables as part of +the command. See the section below called `MAKE VARIABLES' for more +information on this. + +8) If your system uses lock files to interlock access to mailer inbox files, +then you might need to make the movemail program setuid or setgid +to enable it to write the lock files. We believe this is safe. +The setuid/setgid bits need not be set on any other XEmacs-related +executables. + +9) You are done with the hard part! You can remove executables and +object files from the build directory by typing `make clean'. To also +remove the files that `configure' created (so you can compile XEmacs +for a different configuration), type `make distclean'. + +10) You should now go to the XEmacs web page at http://www.xemacs.org/ +and decide what additional Lisp support you wish to have. + +MAKE VARIABLES + +You can change where the build process installs XEmacs and its data +files by specifying values for `make' variables as part of the `make' +command line. For example, if you type + + make install bindir=/usr/local/gnubin + +the `bindir=/usr/local/gnubin' argument indicates that the XEmacs +executable files should go in `/usr/local/gnubin', not +`/usr/local/bin'. + +Here is a complete list of the variables you may want to set. + +`bindir' indicates where to put executable programs that users can + run. This defaults to /usr/local/bin. + +`datadir' indicates where to put the architecture-independent + read-only data files that XEmacs refers to while it runs; it + defaults to /usr/local/lib. We create the following + subdirectories under `datadir': + - `xemacs-VERSION/lisp', containing the XEmacs lisp libraries, and + + - `xemacs-VERSION/etc', containing the XEmacs tutorial and the + `yow' database. + `VERSION' is the number of the XEmacs version you are installing, + like `18.59' or `19.14'. Since these files vary from one version + of XEmacs to another, including the version number in the path + allows you to have several versions of XEmacs installed at the + same time; this means that you don't have to make XEmacs + unavailable while installing a new version. + +`statedir' indicates where to put architecture-independent data files + that XEmacs modifies while it runs; it defaults to + /usr/local/lib as well. We create the following + subdirectories under `statedir': + - `xemacs/lock', containing files indicating who is editing + what, so XEmacs can detect editing clashes between + users. + +`libdir' indicates where to put architecture-specific data files that + XEmacs refers to as it runs; it too defaults to `/usr/local/lib'. + We create the following subdirectories under `libdir': + - `xemacs-VERSION/CONFIGURATION-NAME', containing executable + programs used by XEmacs that users are not expected to run + themselves and the DOC file. + `VERSION' is the number of the XEmacs version you are installing, + and `CONFIGURATION-NAME' is the host type of your system. + Since these files are specific to the version of XEmacs, + operating system, and architecture in use, including the + configuration name in the path allows you to have several + versions of XEmacs for any mix of machines and operating + systems installed at the same time; this is useful for sites + at which different kinds of machines share the file system + XEmacs is installed on. + +`infodir' indicates where to put the info files distributed with + XEmacs; it defaults to `/usr/local/lib/xemacs-VERSION/info'. + +`mandir' indicates where to put the man pages for XEmacs and its + utilities (like `etags'); it defaults to + `/usr/local/man/man1'. + +`prefix' doesn't give a path for any specific part of XEmacs; instead, + its value is used to determine the defaults for all the + architecture-independent path variables - `datadir', + `statedir', `infodir', and `mandir'. Its default value is + `/usr/local'; the other variables add on `lib' or `man' to it + by default. + + For example, suppose your site generally places GNU software + under `/usr/users/software/gnusoft' instead of `/usr/local'. + By including + `prefix=/usr/users/software/gnusoft' + in the arguments to `make', you can instruct the build process + to place all of the XEmacs data files in the appropriate + directories under that path. + +`exec_prefix' serves the same purpose as `prefix', but instead + determines the default values for the architecture-dependent + path variables - `bindir' and `libdir'. + +The above variables serve analogous purposes in the makefiles for all +GNU software; here are some variables specific to XEmacs. + +`lispdir' indicates where XEmacs installs and expects its lisp + libraries. Its default value, based on `datadir' (see above), + is `/usr/local/lib/xemacs-VERSION/lisp' (where `VERSION' is as + described above). + +`sitelispdir' indicates where XEmacs should search for lisp libraries + specific to your site. XEmacs checks them in order before + checking `lispdir'. Its default value, based on `datadir' + (see above), is `/usr/local/lib/xemacs/site-lisp'. + +`etcdir' indicates where XEmacs should install and expect the rest of + its architecture-independent data, like the tutorial and yow + database. Its default value, based on `datadir' + (see above), is `/usr/local/lib/xemacs-VERSION/etc' (where + `VERSION' is as described above). + +`lockdir' indicates the directory where XEmacs keeps track of its + locking information. Its default value, based on `statedir' + (see above), is `/usr/local/lib/xemacs/lock'. + +`archlibdir' indicates where XEmacs installs and expects the + executable files and other architecture-dependent data it uses + while running. Its default value, based on `libdir' (see + above), is `/usr/local/lib/xemacs-VERSION/CONFIGURATION-NAME' + (where VERSION and CONFIGURATION-NAME are as described above). + +Remember that you must specify any variable values you need each time +you run `make' in the top directory. If you run `make' once to build +xemacs, test it, and then run `make' again to install the files, you +must provide the same variable settings each time. To make the +settings persist, you can edit them into the `Makefile' in the top +directory, but be aware that running the `configure' program erases +`Makefile' and rebuilds it from `Makefile.in'. + +The top-level Makefile stores the variable settings it used in the +Makefiles for the subdirectories, so you don't have to specify them +when running make in the subdirectories. + + +CONFIGURATION BY HAND + +Instead of running the `configure' program, you have to perform the +following steps. + +1) Copy `./src/config.h.in' to `./src/config.h'. + +2) Consult `./etc/MACHINES' to see what configuration name you should +use for your system. Look at the code of the `configure' script to +see which operating system and architecture description files from +`src/s' and `src/m' should be used for that configuration name. Edit +`src/config.h', and change the two `#include' directives to include +the appropriate system and architecture description files. + +2) Edit `./src/config.h' to set the right options for your system. If +you need to override any of the definitions in the s/*.h and m/*.h +files for your system and machine, do so by editing config.h, not by +changing the s/*.h and m/*.h files. Occasionally you may need to +redefine parameters used in `./lib-src/movemail.c'. + +3) If you're going to use the make utility to build XEmacs, you will +still need to run `configure' first, giving the appropriate values for +the variables in the sections entitled "Things `configure' Might Edit" +and "Where To Install Things." Note that you may only need to change +the variables `prefix' and `exec_prefix', since the rest of the +variables have reasonable defaults based on them. For each Makefile +variable of this type, there is a corresponding configure option; for +example, to change the location of the lock directory, you might use + + ./configure --lockdir=/nfs/xemacslock + +The `configure' script is built from `configure.in' by the `autoconf' +program. However, since XEmacs has configuration requirements that +autoconf can't meet, `configure.in' uses a marriage of custom-baked +configuration code and autoconf macros. New versions of autoconf +could very well break this arrangement, so it may be wise to avoid +rebuilding `configure' from `configure.in' when possible. + + +BUILDING XEMACS BY HAND + +Once XEmacs is configured, running `make' in the top directory performs +the following steps. + +1) Run `make src/paths.h' in the top directory. This produces +`./src/paths.h' from the template file `./src/paths.h.in', changing +the paths to the values specified in `./Makefile'. + +2) Cd to `./lib-src' and run `make'. This creates executables named +`ctags' and `etags' and `wakeup' and `make-docfile' and `digest-doc' +and `test-distrib'. And others. + +3) Cd to `./src' and Run `make'. This refers to files in the `./lisp' +and `./lib-src' subdirectories using names `../lisp' and +`../lib-src'. + +This creates a file `./src/xemacs' which is the runnable XEmacs, +assigning it a new build version number by incrementing the build +version stored in `./lisp/version.el'. + +It also creates a file in `./lib-src' whose name is `DOC' followed by +the current XEmacs version. This file contains documentation strings +for all the functions in XEmacs. Each time you run make to make a new +xemacs, a new DOC file with a new name is made. You must keep the DOC +file for an XEmacs version as long as you keep using that XEmacs +version. + + +INSTALLATION BY HAND + +The steps below are done by running `make install' in the main +directory of the XEmacs distribution. + +1) Copy `./lisp' and its subdirectories, `./etc', and the executables +in `./lib-src' to their final destinations, as selected in `./src/paths.h'. + +Strictly speaking, not all of the executables in `./lib-src' need be copied. +- The programs `cvtmail', `emacsserver', `env', `fakemail', `hexl', + `movemail', `timer', `vcdiff', `wakeup', and `yow' are used by + XEmacs; they do need to be copied. +- The programs `etags', `ctags', `emacsclient', `b2m', `rcs2log', + `gnuclient', `gnudoit', and `gnuattach' are intended to be run + by users; they are handled below. +- The programs `make-docfile' and `test-distrib' were + used in building XEmacs, and are not needed any more. +- The programs `digest-doc' and `sorted-doc' convert a `DOC' file into + a file for users to read. There is no important reason to move them. + +2) Copy the files in `./info' to the place specified in +`./lisp/site-init.el' or `./lisp/paths.el'. Note that if the +destination directory already contains a file named `dir', you +probably don't want to replace it with the `dir' file in the XEmacs +distribution. Instead, you should make sure that the existing `dir' +file contains an appropriate menu entry for the XEmacs info. + +3) Create a directory for XEmacs to use for clash detection, named as +indicated by the PATH_LOCK macro in `./src/paths.h'. + +4) Copy `./src/xemacs' to `/usr/local/bin', or to some other directory +in users' search paths. `./src/xemacs' has an alternate name +`./src/emacs-EMACSVERSION'; you may wish to make a symbolic link named +`/usr/local/bin/xemacs' pointing to that alternate name, as an easy way +of installing different versions. + +You can delete `./src/temacs'. + +5) Copy the programs `b2m', `emacsclient', `ctags', `etags', `rcs2log', +`gnuclient', `gnudoit', and `gnuattach' from `./lib-src' to +`/usr/local/bin'. These programs are intended for users to run. + +6) Copy the man pages in `./etc' for xemacs, ctags, etags, and gnuserv +into the appropriate man directories. + +7) The files in the `./src' subdirectory, except for `xemacs', are not +used by XEmacs once it is built. The source would be handy for +debugging. + + +PROBLEMS + +See the file PROBLEMS in this directory for a list of various +problems sometimes encountered, and what to do about them. + + +If all else fails, please see etc/InstallGuide courtesy +of Jonathan Seth Hayward. diff --git a/PROBLEMS b/PROBLEMS new file mode 100644 index 0000000..072fc72 --- /dev/null +++ b/PROBLEMS @@ -0,0 +1,1475 @@ + -*- mode:outline -*- + +This file describes various problems that have been encountered +in compiling, installing and running XEmacs. It has been updated for +XEmacs 21.2. + +This file is rather large, but we have tried to sort the entries by +their respective relevance for XEmacs, but may have not succeeded +completely in that task. The file is divided into four parts: + + - Problems with building XEmacs + - Problems with running XEmacs + - Compatibility problems + - Mule issues + +Use `C-c C-f' to move to the next equal level of outline, and +`C-c C-b' to move to previous equal level. `C-h m' will give more +info about the Outline mode. + +Also, Try finding the things you need using one of the search commands +XEmacs provides (e.g. `C-s'). + +A general advice: + WATCH OUT for .emacs file! ~/.emacs is your Emacs init file. If + you observe strange problems, invoke XEmacs with the `-q' option + and see if you can repeat the problem. + + +* Problems with building XEmacs +=============================== + +** Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using +`-fno-strength-reduce'. + +gcc will generate incorrect code otherwise. This bug is present in at +least 2.6.x and 2.7.[0-2]. This bug has been fixed in GCC 2.7.2.1 and +later. This bug is O/S independent, but is limited to x86 architectures. + +This problem is known to be fixed in egcs (or pgcc) 1.0 or later. + +** Don't use -O2 with gcc 2.7.2 under Intel architectures without also +using `-fno-caller-saves'. + +gcc will generate incorrect code otherwise. This bug is still +present in gcc 2.7.2.3. There have been no reports to indicate the +bug is present in egcs 1.0 (or pgcc 1.0) or later. This bug is O/S +independent, but limited to x86 architectures. + +This problem is known to be fixed in egcs (or pgcc) 1.0 or later. + +** Excessive optimization with pgcc can break XEmacs + +It has been reported on some systems that compiling with -O6 can lead +to XEmacs failures. The workaround is to use a lower optimization +level. -O2 and -O4 have been tested extensively. + +All of this depends heavily on the version of pgcc and the version +of libc. Snapshots near the release of pgcc-1.0 have been tested +extensively and no sign of breakage has been seen on systems using +glibc-2. + +** `compress' and `uncompress' not found and XFree86 + +XFree86 installs a very old version of libz.a by default ahead of where +more modern version of libz might be installed. This will cause problems +when attempting to link against libMagick. The fix is to remove the old +libz.a in the X11 binary directory. + +** Excessive optimization on AIX 4.2 can lead to compiler failure. + +Valdis.Kletnieks@vt.edu writes: + At least at the b34 level, and the latest-and-greatest IBM xlc + (3.1.4.4), there are problems with -O3. I haven't investigated + further. + +** Sed problems on Solaris 2.5 + +There have been reports of Sun sed truncating very lines in the +Makefile during configuration. The workaround is to use GNU sed or, +even better, think of a better way to generate Makefile, and send us a +patch. :-) + +** test-distrib says that the distribution has been clobbered +or, temacs prints "Command key out of range 0-127" +or, temacs runs and dumps xemacs, but xemacs totally fails to work. +or, temacs gets errors dumping xemacs + +This can be because the .elc files have been garbled. Do not be +fooled by the fact that most of a .elc file is text: these are binary +files and can contain all 256 byte values. + +In particular `shar' cannot be used for transmitting GNU Emacs. It +typically truncates "lines". (this does not apply to GNU shar, which +uses uuencode to encode binary files.) + +If you have a copy of Emacs that has been damaged in its nonprinting +characters, you can fix them by running: + + make all-elc + +This will rebuild all the needed .elc files. + +** `Error: No ExtNode to pop!' on Linux systems with Lesstif. + +This error message has been observed with lesstif-0.75a. It does not +appear to cause any harm. + +** Linking with -rpath on IRIX. + +Darrell Kindred writes: +There are a couple of problems [with use of -rpath with Irix ld], though: + + 1. The ld in IRIX 5.3 ignores all but the last -rpath + spec, so the patched configure spits out a warning + if --x-libraries or --site-runtime-libraries are + specified under irix 5.x, and it only adds -rpath + entries for the --site-runtime-libraries. This bug was + fixed sometime between 5.3 and 6.2. + + 2. IRIX gcc 2.7.2 doesn't accept -rpath directly, so + it would have to be prefixed by -Xlinker or "-Wl,". + This would be fine, except that configure compiles with + ${CC-cc} $CFLAGS $LDFLAGS ... + rather than quoting $LDFLAGS with prefix-args, like + src/Makefile does. So if you specify --x-libraries + or --site-runtime-libraries, you must use --use-gcc=no, + or configure will fail. + +** On Irix 6.3, the SGI ld quits with segmentation fault when linking temacs + +This occurs if you use the SGI linker version 7.1. Installing the +patch SG0001872 fixes this problem. + +** xemacs: can't resolve symbol '__malloc_hook' + +This is a Linux problem where you've compiled the XEmacs binary on a libc +5.4 with version higher than 5.4.19 and attempted to run the binary against +an earlier version. The solution is to upgrade your old library. + +** Compilation errors on VMS. + +Sorry, XEmacs does not work under VMS. You might consider working on +the port if you really want to have XEmacs work under VMS. + +** On Solaris 2 I get undefined symbols from libcurses.a. + +You probably have /usr/ucblib/ on your LD_LIBRARY_PATH. Do the link with +LD_LIBRARY_PATH unset. Generally, avoid using any ucb* stuff when +building XEmacs. + +** On Solaris 2 I cannot make alloc.o, glyphs.o or process.o. + +The SparcWorks C compiler may have difficulty building those modules +with optimization level -xO4. Try using only "-fast" optimization +for just those modules. (Or use gcc). + +** On Digital UNIX, the DEC C compiler might have a problem compiling +some files. + +In particular, src/extents.c and src/faces.c might cause the DEC C +compiler to abort. When this happens: cd src, compile the files by +hand, cd .., and redo the "make" command. When recompiling the files by +hand, use the old C compiler for the following versions of Digital UNIX: + - V3.n: Remove "-migrate" from the compile command. + - V4.n: Add "-oldc" to the compile command. + +A related compiler bug has been fixed by the DEC compiler team. The +new versions of the compiler should run fine. + +** On HPUX, the HP C compiler might have a problem compiling some files +with optimization. + +Richard Cognot writes: + + Had to drop once again to level 2 optimization, at least to + compile lstream.c. Otherwise, I get a "variable is void: \if" + problem while dumping (this is a problem I already reported + with vanilla hpux 10.01 and 9.07, which went away after + applying patches for the C compiler). Trouble is I still + haven't found the same patch for hpux 10.10, and I don't + remember the patch numbers. I think potential XEmacs builders + on HP should be warned about this. + +** I don't have `xmkmf' and `imake' on my HP. + + You can get these standard X tools by anonymous FTP to + hpcvaaz.cv.hp.com. Essentially all X programs need these. + +** On HP-UX, problems with make + +Marcus Thiessel + + Some releases of XEmacs (e.g. 20.4) require GNU make to build + successfully. You don't need GNU make when building 21.x. + +** On HP-UX 9.05 XEmacs won't compile or coredump during the build. + +Marcus Thiessel + + This might be a sed problem. For your own safety make sure to use + GNU sed while dumping XEmacs. + +** On HP-UX 11.0 XEmacs causes excessive X11 errors when running. + +Marcus Thiessel + + Unfortunately, XEmacs releases don't work with Motif2.1. It + will compile but you will get excessive X11 errors like + + xemacs: X Error of failed request: BadGC (invalid GC parameter) + + and finally XEmacs gets killed. A workaround is to use the + Motif1.2_R6 libraries. You can the following line to your call to + configure: + + --x-libraries="/usr/lib/Motif1.2_R6 -L/usr/lib/X11R6" + + Make sure /usr/lib/Motif1.2_R6/libXm.sl is a link to + /usr/lib/Motif1.2_R6/libXm.3. + +** Solaris 2.3 /bin/sh coredumps during configuration. + +This only occurs if you have LANG != C. This is a known bug with +/bin/sh fixed by installing Patch-ID# 101613-01. Or, you can use +bash, as a workaround. + +** On Irix 6.0, make tries (and fails) to build a program named unexelfsgi + +A compiler bug inserts spaces into the string "unexelfsgi . o" +in src/Makefile. Edit src/Makefile, after configure is run, +find that string, and take out the spaces. + +Compiler fixes in Irix 6.0.1 should eliminate this problem. + +** Coredumping in Irix 6.2 + +Pete Forman writes: +A problem noted by myself and others (I've lost the references) was +that XEmacs coredumped when the cut or copy toolbar buttons were +pressed. This has been fixed by loading the SGI patchset (Feb 98) +without having to recompile XEmacs. + +My versions are XEmacs 20.3 (problem first noted in 19.15) and IRIX +6.2, compiled using -n32. I'd guess that the relevant individual +patch was "SG0002580: multiple fixes for X libraries". SGI recommends +that the complete patch set be installed rather than parts of it. + +** Native cc on SCO OpenServer 5 is now OK. Icc may still throw you +a curve. Here is what Robert Lipe says: + +Unlike XEmacs 19.13, building with the native cc on SCO OpenServer 5 +now produces a functional binary. I will typically build this +configuration for COFF with: + + /path_to_xemacs_source/configure --with-gcc=no \ + --site-includes=/usr/local/include --site-libraries=/usr/local/lib \ + --with-xpm --with-xface --with-sound=nas + +This version now supports ELF builds. I highly recommend this to +reduce the in-core footprint of XEmacs. This is now how I compile +all my test releases. Build it like this: + + /path_to_XEmacs_source/configure --with-gcc=no \ + --site-includes=/usr/local/include --site-libraries=/usr/local/lib \ + --with-xpm --with-xface --with-sound=nas --dynamic + +The compiler known as icc [ supplied with the OpenServer 5 Development +System ] generates a working binary, but it takes forever to generate +XEmacs. ICC also whines more about the code than /bin/cc does. I do +believe all its whining is legitimate, however. Note that you do +have to 'cd src ; make LD=icc' to avoid linker errors. + +The way I handle the build procedure is: + + /path_to_XEmacs_source/configure --with-gcc=no \ + --site-includes=/usr/local/include --site-libraries=/usr/local/lib \ + --with-xpm --with-xface --with-sound=nas --dynamic --compiler="icc" + +NOTE I have the xpm, xface, and audio libraries and includes in + /usr/local/lib, /usr/local/include. If you don't have these, + don't include the "--with-*" arguments in any of my examples. + +In previous versions of XEmacs, you had to override the defaults while +compiling font-lock.o and extents.o when building with icc. This seems +to no longer be true, but I'm including this old information in case it +resurfaces. The process I used was: + + make -k + [ procure pizza, beer, repeat ] + cd src + make CC="icc -W0,-mP1COPT_max_tree_size=3000" font-lock.o extents.o + make LD=icc + +If you want sound support, get the tls566 supplement from +ftp.sco.com:/TLS or any of its mirrors. It works just groovy +with XEmacs. + +The M-x manual-entry is known not to work. If you know Lisp and would +like help in making it work, e-mail me at . +(UNCHECKED for 19.15 -- it might work). + +In earlier releases, gnuserv/gnuclient/gnudoit would open a frame +just fine, but the client would lock up and the server would +terminate when you used C-x # to close the frame. This is now +fixed in XEmacs. + +In etc/ there are two files of note. emacskeys.sco and emacsstrs.sco. +The comments at the top of emacskeys.sco describe its function, and +the emacstrs.sco is a suitable candidate for /usr/lib/keyboard/strings +to take advantage of the keyboard map in emacskeys.sco. + +Note: Much of the above entry is probably not valid for XEmacs 21.2 +and later. + +** Under some versions of OSF XEmacs runs fine if built without +optimization but will crash randomly if built with optimization. + +Using 'cc -g' is not sufficient to eliminate all optimization. Try +'cc -g -O0' instead. + +** On SunOS, you get linker errors + ld: Undefined symbol + _get_wmShellWidgetClass + _get_applicationShellWidgetClass + +The fix to this is to install patch 100573 for OpenWindows 3.0 +or link libXmu statically. + +** On Sunos 4, you get the error ld: Undefined symbol __lib_version. + +This is the result of using cc or gcc with the shared library meant +for acc (the Sunpro compiler). Check your LD_LIBRARY_PATH and delete +/usr/lang/SC2.0.1 or some similar directory. + +** On AIX 4.1.2, linker error messages such as + ld: 0711-212 SEVERE ERROR: Symbol .__quous, found in the global symbol table + of archive /usr/lib/libIM.a, was not defined in archive member shr.o. + +This is a problem in libIM.a. You can work around it by executing +these shell commands in the src subdirectory of the directory where +you build Emacs: + + cp /usr/lib/libIM.a . + chmod 664 libIM.a + ranlib libIM.a + +Then change -lIM to ./libIM.a in the command to link temacs (in +Makefile). + +** On Irix 5.2, unexelfsgi.c can't find cmplrs/stsupport.h. + +The file cmplrs/stsupport.h was included in the wrong file set in the +Irix 5.2 distribution. You can find it in the optional fileset +compiler_dev, or copy it from some other Irix 5.2 system. A kludgy +workaround is to change unexelfsgi.c to include sym.h instead of +syms.h. + +** Link failure when using acc on a Sun. + +To use acc, you need additional options just before the libraries, such as + + /usr/lang/SC2.0.1/values-Xt.o -L/usr/lang/SC2.0.1/cg87 -L/usr/lang/SC2.0.1 + +and you need to add -lansi just before -lc. + +The precise file names depend on the compiler version, so we +cannot easily arrange to supply them. + +** Link failure on IBM AIX 1.3 ptf 0013. + +There is a real duplicate definition of the function `_slibc_free' in +the library /lib/libc_s.a (just do nm on it to verify). The +workaround/fix is: + + cd /lib + ar xv libc_s.a NLtmtime.o + ar dv libc_s.a NLtmtime.o + +** Undefined symbols when linking on Sunos 4.1. + +If you get the undefined symbols _atowc _wcslen, _iswprint, _iswspace, +_iswcntrl, _wcscpy, and _wcsncpy, then you need to add -lXwchar after +-lXaw in the command that links temacs. + +This problem seems to arise only when the international language +extensions to X11R5 are installed. + +** src/Makefile and lib-src/Makefile are truncated--most of the file missing. + +This can happen if configure uses GNU sed version 2.03. That version +had a bug. GNU sed version 2.05 works properly. + +** On AIX, you get this compiler error message: + + Processing include file ./XMenuInt.h + 1501-106: (S) Include file X11/Xlib.h not found. + +This means your system was installed with only the X11 runtime i.d +libraries. You have to find your sipo (bootable tape) and install +X11Dev... with smit. + +** C-z just refreshes the screen instead of suspending Emacs. + +You are probably using a shell that doesn't support job control, even +though the system itself is capable of it. Try using a different +shell. + +** On a Sun running SunOS 4.1.1, you get this error message from GNU ld: + + /lib/libc.a(_Q_sub.o): Undefined symbol __Q_get_rp_rd referenced from text segment + +The problem is in the Sun shared C library, not in GNU ld. + +The solution is to install Patch-ID# 100267-03 from Sun. + +** SunOS 4.1.2: undefined symbol _get_wmShellWidgetClass + + Apparently the version of libXmu.so.a that Sun ships is hosed: it's missing + some stuff that is in libXmu.a (the static version). Sun has a patch for + this, but a workaround is to use the static version of libXmu, by changing + the link command from "-lXmu" to "-Bstatic -lXmu -Bdynamic". If you have + OpenWindows 3.0, ask Sun for these patches: + 100512-02 4.1.x OpenWindows 3.0 libXt Jumbo patch + 100573-03 4.1.x OpenWindows 3.0 undefined symbols with shared libXmu + +** Random other SunOS 4.1.[12] link errors. + + The X headers and libraries that Sun ships in /usr/{include,lib}/X11 are + broken. Use the ones in /usr/openwin/{include,lib} instead. + +** When using gcc, you get the error message "undefined symbol __fixunsdfsi". +When using gcc, you get the error message "undefined symbol __main". + +This means that you need to link with the gcc library. It may be called +"gcc-gnulib" or "libgcc.a"; figure out where it is, and define LIB_GCC in +config.h to point to it. + +It may also work to use the GCC version of `ld' instead of the standard one. + +** When compiling with X11, you get "undefined symbol _XtStrings". + +This means that you are trying to link emacs against the X11r4 version of +libXt.a, but you have compiled either Emacs or the code in the lwlib +subdirectory with the X11r5 header files. That doesn't work. + +Remember, you can't compile lwlib for r4 and emacs for r5, or vice versa. +They must be in sync. + +** Problems finding X11 libraries on Solaris with Openwindows + +Some users have reported problems in this area. The reported solution +is to define the environment variable OPENWINHOME, even if you must set +it to `/usr/openwin'. + +** Under Linux, you get "too many arguments to function `getpgrp'". + +You have probably installed LessTiff under `/usr/local' and `libXm.so' +could not be found when linking `getpgrp()' test program, making XEmacs +think that `getpgrp()' takes an argument. Try adding `/usr/local/lib' +in `/etc/ld.so.conf' and run `ldconfig'. Then run XEmacs's `configure' +again. As with all problems of this type, reading the config.log file +generated from configure and seeing the log of how the test failed can +prove enlightening. + + +* Problems with running XEmacs +============================== +** On Solaris 2.6, XEmacs dumps core when exiting. + +This happens if you're XEmacs is running on the same machine as the X +server, and the optimized memory transport has been turned on by +setting the environment variable XSUNTRANSPORT. The crash occurs +during the call to XCloseDisplay. + +If this describes your situation, you need to undefine the +XSUNTRANSPORT environment variable. + +** `C-z', or `M-x suspend-emacs' hangs instead of suspending. + +If you build with `gpm' support on Linux, you cannot suspend XEmacs +because gpm installs a buggy SIGTSTP handler. Either compile with +`--with-gpm=no', or don't suspend XEmacs on the Linux console until +this bug is fixed. + +** You type Control-H (Backspace) expecting to delete characters. + +Emacs has traditionally used Control-H for help; unfortunately this +interferes with its use as Backspace on TTY's. One way to solve this +problem is to put this in your .emacs: + + (when (eq tty-erase-char ?\C-h) + (keyboard-translate ?\C-h ?\C-?) + (global-set-key "\M-?" 'help-command)) + +This checks whether the TTY erase char is C-h, and if it is, makes +Control-H (Backspace) work sensibly, and moves help to Meta-? (ESC ?). + +Note that you can probably also access help using F1. + +** Mail agents (VM, Gnus, rmail) cannot get new mail + +rmail and VM get new mail from /usr/spool/mail/$USER using a program +called `movemail'. This program interlocks with /bin/mail using the +protocol defined by /bin/mail. + +There are two different protocols in general use. One of them uses +the `flock' system call. The other involves creating a lock file; +`movemail' must be able to write in /usr/spool/mail in order to do +this. You control which one is used by defining, or not defining, the +macro MAIL_USE_FLOCK in config.h or the m- or s- file it includes. IF +YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR SYSTEM, +YOU CAN LOSE MAIL! + +If your system uses the lock file protocol, and fascist restrictions +prevent ordinary users from writing the lock files in /usr/spool/mail, +you may need to make `movemail' setgid to a suitable group such as +`mail'. To do this, use the following commands (as root) after doing +the make install. + + chgrp mail movemail + chmod 2755 movemail + +Installation normally copies movemail from the build directory to an +installation directory which is usually under /usr/local/lib. The +installed copy of movemail is usually in the directory +/usr/local/lib/emacs/VERSION/TARGET. You must change the group and +mode of the installed copy; changing the group and mode of the build +directory copy is ineffective. + +** XEmacs crashes on Digital Unix within font-lock, or when dealing +with large compilation buffers. + +The default stack size under Digital Unix is rather small (2M as +opposed to Solaris 8M), hosing the regexp code, which uses alloca() +extensively, overflowing the stack when complex regexps are used. +Workarounds: + +1) Increase your stack size, using `ulimit -s 8192' or a (t)csh + equivalent; + +2) Recompile regex.c with REGEX_MALLOC defined. + +** On Solaris, C-x doesn't get through to Emacs when you use the console. + +This is a Solaris feature (at least on Intel x86 cpus). Type C-r +C-r C-t, to toggle whether C-x gets through to Emacs. + +** VM appears to hang in large folders. + +This is normal (trust us) when upgrading to VM-6.22 from earlier +versions. Let VM finish what it is doing and all will be well. + +** Changes made to .el files do not take effect. + +You may have forgotten to recompile them into .elc files. Then the +old .elc files will be loaded, and your changes will not be seen. To +fix this, do `M-x byte-recompile-directory' and specify the directory +that contains the Lisp files. + +Note that you will get a warning when loading a .elc file that is +older than the corresponding .el file. + +** Things which should be bold or italic (such as the initial +copyright notice) are not. + +The fonts of the "bold" and "italic" faces are generated from the font +of the "default" face; in this way, your bold and italic fonts will +have the appropriate size and family. However, emacs can only be +clever in this way if you have specified the default font using the +XLFD (X Logical Font Description) format, which looks like + + *-courier-medium-r-*-*-*-120-*-*-*-*-*-* + +if you use any of the other, less strict font name formats, some of +which look like: + + lucidasanstypewriter-12 +and fixed +and 9x13 + +then emacs won't be able to guess the names of the "bold" and "italic" +versions. All X fonts can be referred to via XLFD-style names, so you +should use those forms. See the man pages for X(1), xlsfonts(1), and +xfontsel(1). + +** The dumped Emacs crashes when run, trying to write pure data. + +Two causes have been seen for such problems. + +1) On a system where getpagesize is not a system call, it is defined +as a macro. If the definition (in both unexec.c and malloc.c) is wrong, +it can cause problems like this. You might be able to find the correct +value in the man page for a.out (5). + +2) Some systems allocate variables declared static among the +initialized variables. Emacs makes all initialized variables in most +of its files pure after dumping, but the variables declared static and +not initialized are not supposed to be pure. On these systems you +may need to add "#define static" to the m- or the s- file. + +** Reading and writing files is very very slow. + +Try evaluating the form (setq lock-directory nil) and see if that helps. +There is a problem with file-locking on some systems (possibly related +to NFS) that I don't understand. Please send mail to the address +xemacs@xemacs.org if you figure this one out. + +** The Emacs window disappears when you type M-q. + +Some versions of the Open Look window manager interpret M-q as a quit +command for whatever window you are typing at. If you want to use +Emacs with that window manager, you should try to configure the window +manager to use some other command. You can disable the +shortcut keys entirely by adding this line to ~/.OWdefaults: + + OpenWindows.WindowMenuAccelerators: False + +** The `Alt' key doesn't behave as `Meta' when running DECwindows. + +The default DEC keyboard mapping has the Alt keys set up to generate the +keysym `Multi_key', which has a meaning to xemacs which is distinct from that +of the `Meta_L' and `Meta-R' keysyms. A second problem is that certain keys +have the Mod2 modifier attached to them for no adequately explored reason. +The correct fix is to pass this file to xmodmap upon starting X: + + clear mod2 + keysym Multi_key = Alt_L + add mod1 = Alt_L + add mod1 = Alt_R + +** The Compose key on a DEC keyboard does not work as Meta key. + +This shell command should fix it: + + xmodmap -e 'keycode 0xb1 = Meta_L' + +** When emacs starts up, I get lots of warnings about unknown keysyms. + +If you are running the prebuilt binaries, the Motif library expects to find +certain thing in the XKeysymDB file. This file is normally in /usr/lib/X11/ +or in /usr/openwin/lib/. If you keep yours in a different place, set the +environment variable $XKEYSYMDB to point to it before starting emacs. If +you still have the problem after doing that, perhaps your version of X is +too old. There is a copy of the MIT X11R5 XKeysymDB file in the emacs `etc' +directory. Try using that one. + +** My X resources used to work, and now some of them are being ignored. + +Check the resources in .../etc/Emacs.ad (which is the same as the file +sample.Xdefaults). Perhaps some of the default resources built in to +emacs are now overriding your existing resources. Copy and edit the +resources in Emacs.ad as necessary. + +** I get complaints about the mapping of my HP keyboard at startup, +but I haven't changed anything. + +The default HP keymap is set up to have Mod1 assigned to two different keys: +Meta_L and Mode_switch (even though there is not actually a Mode_switch key on +the keyboard -- it uses an "imaginary" keycode.) There actually is a reason +for this, but it's not a good one. The correct fix is to execute this command +upon starting X: + + xmodmap -e 'remove mod1 = Mode_switch' + +** I have focus problems when I use `M-o' to switch to another screen +without using the mouse. + +The focus issues with a program like XEmacs, which has multiple +homogeneous top-level windows, are very complicated, and as a result, +most window managers don't implement them correctly. + +The R4/R5 version of twm (and all of its descendants) had buggy focus +handling. Sufficiently recent versions of tvtwm have been fixed. In +addition, if you're using twm, make sure you have not specified +"NoTitleFocus" in your .tvtwmrc file. The very nature of this option +makes twm do some illegal focus tricks, even with the patch. + +It is known that olwm and olvwm are buggy, and in different ways. If +you're using click-to-type mode, try using point-to-type, or vice +versa. + +In older versions of NCDwm, one could not even type at XEmacs windows. +This has been fixed in newer versions (2.4.3, and possibly earlier). + +(Many people suggest that XEmacs should warp the mouse when focusing +on another screen in point-to-type mode. This is not ICCCM-compliant +behavior. Implementing such policy is the responsibility of the +window manager itself, it is not legal for a client to do this.) + +** Emacs spontaneously displays "I-search: " at the bottom of the screen. + +This means that Control-S/Control-Q (XON/XOFF) "flow control" is being +used. C-s/C-q flow control is bad for Emacs editors because it takes +away C-s and C-q as user commands. Since editors do not output long +streams of text without user commands, there is no need for a +user-issuable "stop output" command in an editor; therefore, a +properly designed flow control mechanism would transmit all possible +input characters without interference. Designing such a mechanism is +easy, for a person with at least half a brain. + +There are three possible reasons why flow control could be taking place: + + 1) Terminal has not been told to disable flow control + 2) Insufficient padding for the terminal in use + 3) Some sort of terminal concentrator or line switch is responsible + +First of all, many terminals have a set-up mode which controls whether +they generate XON/XOFF flow control characters. This must be set to +"no XON/XOFF" in order for Emacs to work. Sometimes there is an +escape sequence that the computer can send to turn flow control off +and on. If so, perhaps the termcap `ti' string should turn flow +control off, and the `te' string should turn it on. + +Once the terminal has been told "no flow control", you may find it +needs more padding. The amount of padding Emacs sends is controlled +by the termcap entry for the terminal in use, and by the output baud +rate as known by the kernel. The shell command `stty' will print +your output baud rate; `stty' with suitable arguments will set it if +it is wrong. Setting to a higher speed causes increased padding. If +the results are wrong for the correct speed, there is probably a +problem in the termcap entry. You must speak to a local Unix wizard +to fix this. Perhaps you are just using the wrong terminal type. + +For terminals that lack a "no flow control" mode, sometimes just +giving lots of padding will prevent actual generation of flow control +codes. You might as well try it. + +If you are really unlucky, your terminal is connected to the computer +through a concentrator which sends XON/XOFF flow control to the +computer, or it insists on sending flow control itself no matter how +much padding you give it. Unless you can figure out how to turn flow +control off on this concentrator (again, refer to your local wizard), +you are screwed! You should have the terminal or concentrator +replaced with a properly designed one. In the mean time, some drastic +measures can make Emacs semi-work. + +You can make Emacs ignore C-s and C-q and let the operating system +handle them. To do this on a per-session basis, just type M-x +enable-flow-control RET. You will see a message that C-\ and C-^ are +now translated to C-s and C-q. (Use the same command M-x +enable-flow-control to turn *off* this special mode. It toggles flow +control handling.) + +If C-\ and C-^ are inconvenient for you (for example, if one of them +is the escape character of your terminal concentrator), you can choose +other characters by setting the variables flow-control-c-s-replacement +and flow-control-c-q-replacement. But choose carefully, since all +other control characters are already used by emacs. + +IMPORTANT: if you type C-s by accident while flow control is enabled, +Emacs output will freeze, and you will have to remember to type C-q in +order to continue. + +If you work in an environment where a majority of terminals of a +certain type are flow control hobbled, you can use the function +`enable-flow-control-on' to turn on this flow control avoidance scheme +automatically. Here is an example: + +(enable-flow-control-on "vt200" "vt300" "vt101" "vt131") + +If this isn't quite correct (e.g. you have a mixture of flow-control hobbled +and good vt200 terminals), you can still run enable-flow-control +manually. + +I have no intention of ever redesigning the Emacs command set for the +assumption that terminals use C-s/C-q flow control. XON/XOFF flow +control technique is a bad design, and terminals that need it are bad +merchandise and should not be purchased. Now that X is becoming +widespread, XON/XOFF seems to be on the way out. If you can get some +use out of GNU Emacs on inferior terminals, more power to you, but I +will not make Emacs worse for properly designed systems for the sake +of inferior systems. + +** Control-S and Control-Q commands are ignored completely. + +For some reason, your system is using brain-damaged C-s/C-q flow +control despite Emacs's attempts to turn it off. Perhaps your +terminal is connected to the computer through a concentrator +that wants to use flow control. + +You should first try to tell the concentrator not to use flow control. +If you succeed in this, try making the terminal work without +flow control, as described in the preceding section. + +If that line of approach is not successful, map some other characters +into C-s and C-q using keyboard-translate-table. The example above +shows how to do this with C-^ and C-\. + +** Control-S and Control-Q commands are ignored completely on a net +connection. + +Some versions of rlogin (and possibly telnet) do not pass flow +control characters to the remote system to which they connect. +On such systems, emacs on the remote system cannot disable flow +control on the local system. + +One way to cure this is to disable flow control on the local host +(the one running rlogin, not the one running rlogind) using the +stty command, before starting the rlogin process. On many systems, +`stty start u stop u' will do this. + +Some versions of tcsh will prevent even this from working. One way +around this is to start another shell before starting rlogin, and +issue the stty command to disable flow control from that shell. + +If none of these methods work, the best solution is to type +`M-x enable-flow-control' at the beginning of your emacs session, or +if you expect the problem to continue, add a line such as the +following to your .emacs (on the host running rlogind): + +(enable-flow-control-on "vt200" "vt300" "vt101" "vt131") + +See the entry about spontaneous display of I-search (above) for more +info. + +** TTY redisplay is slow. + +XEmacs has fairly new TTY redisplay support (beginning from 19.12), +which doesn't include some basic TTY optimizations -- like using +scrolling regions to move around blocks of text. This is why +redisplay on the traditional terminals, or over slow lines can be very +slow. + +If you are interested in fixing this, please let us know at +. + +** Screen is updated wrong, but only on one kind of terminal. + +This could mean that the termcap entry you are using for that terminal +is wrong, or it could mean that Emacs has a bug handing the +combination of features specified for that terminal. + +The first step in tracking this down is to record what characters +Emacs is sending to the terminal. Execute the Lisp expression +(open-termscript "./emacs-script") to make Emacs write all terminal +output into the file ~/emacs-script as well; then do what makes the +screen update wrong, and look at the file and decode the characters +using the manual for the terminal. There are several possibilities: + +1) The characters sent are correct, according to the terminal manual. + +In this case, there is no obvious bug in Emacs, and most likely you +need more padding, or possibly the terminal manual is wrong. + +2) The characters sent are incorrect, due to an obscure aspect of the + terminal behavior not described in an obvious way by termcap. + +This case is hard. It will be necessary to think of a way for Emacs +to distinguish between terminals with this kind of behavior and other +terminals that behave subtly differently but are classified the same +by termcap; or else find an algorithm for Emacs to use that avoids the +difference. Such changes must be tested on many kinds of terminals. + +3) The termcap entry is wrong. + +See the file etc/TERMS for information on changes that are known to be +needed in commonly used termcap entries for certain terminals. + +4) The characters sent are incorrect, and clearly cannot be right for + any terminal with the termcap entry you were using. + +This is unambiguously an Emacs bug, and can probably be fixed in +termcap.c, terminfo.c, tparam.c, cm.c, redisplay-tty.c, +redisplay-output.c, or redisplay.c. + +** Your Delete key sends a Backspace to the terminal, using an AIXterm. + +The solution is to include in your .Xdefaults the lines: + + *aixterm.Translations: #override BackSpace: string(0x7f) + aixterm*ttyModes: erase ^? + +This makes your Backspace key send DEL (ASCII 127). + +** With certain fonts, when the cursor appears on a character, the +character doesn't appear--you get a solid box instead. + +One user on a Linux system reported that this problem went away with +installation of a new X server. The failing server was XFree86 3.1.1. +XFree86 3.1.2 works. + +** On SunOS 4.1.3, Emacs unpredictably crashes in _yp_dobind_soft. + +This happens if you configure Emacs specifying just `sparc-sun-sunos4' +on a system that is version 4.1.3. You must specify the precise +version number (or let configure figure out the configuration, which +it can do perfectly well for SunOS). + +** On Irix, I don't see the toolbar icons and I'm getting lots of +entries in the warnings buffer. + +SGI ships a really old Xpm library in /usr/lib which does not work at +all well with XEmacs. The solution is to install your own copy of the +latest version of Xpm somewhere and then use the --site-includes and +--site-libraries flags to tell configure where to find it. + +** On HPUX, you get "poll: Interrupted system call" message in the +window where XEmacs was launched. + +Richard Cognot writes: + + I get a very strange problem when linking libc.a dynamically: every + event (mouse, keyboard, expose...) results in a "poll: Interrupted + system call" message in the window where XEmacs was + launched. Forcing a static link of libc.a alone by adding + /usr/lib/libc.a at the end of the link line solves this. Note that + my 9.07 build of 19.14b17 and my (old) build of 19.13 both exhibit + the same behaviour. I've tried various hpux patches to no avail. If + this problem cannot be solved before the release date, binary kits + for HP *must* be linked statically against libc, otherwise this + problem will show up. (This is directed at whoever will volunteer + for this kit, as I won't be available to do it, unless 19.14 gets + delayed until mid-june ;-). I think this problem will be an FAQ soon + after the release otherwise. + +Note: The above entry is probably not valid for XEmacs 21.2 and +later. + +** When Emacs tries to ring the bell, you get an error like + + audio: sst_open: SETQSIZE" Invalid argument + audio: sst_close: SETREG MMR2, Invalid argument + +you have probably compiled using an ANSI C compiler, but with non-ANSI +include files. In particular, on Suns, the file +/usr/include/sun/audioio.h uses the _IOW macro to define the constant +AUDIOSETQSIZE. _IOW in turn uses a K&R preprocessor feature that is +now explicitly forbidden in ANSI preprocessors, namely substitution +inside character constants. All ANSI C compilers must provide a +workaround for this problem. Lucid's C compiler is shipped with a new +set of system include files. If you are using GCC, there is a script +called fixincludes that creates new versions of some system include +files that use this obsolete feature. + +** My buffers are full of \000 characters or otherwise corrupt. + +Some compilers have trouble with gmalloc.c and ralloc.c; try recompiling +without optimization. If that doesn't work, try recompiling with +SYSTEM_MALLOC defined, and/or with REL_ALLOC undefined. + +** On AIX 4, some programs fail when run in a Shell buffer +with an error message like No terminfo entry for "unknown". + +On AIX, many terminal type definitions are not installed by default. +`unknown' is one of them. Install the "Special Generic Terminal +Definitions" to make them defined. + +** Emacs exits with "X protocol error" when run with an X server for +Windows. + +A certain X server for Windows had a bug which caused this. +Supposedly the newer 32-bit version of this server doesn't have the +problem. + +** A position you specified in .Xdefaults is ignored, using twm. + +twm normally ignores "program-specified" positions. +You can tell it to obey them with this command in your `.twmrc' file: + + UsePPosition "on" #allow clents to request a position + +** The right Alt key works wrong on German HP keyboards (and perhaps + other non-English HP keyboards too). + +This is because HPUX defines the modifiers wrong in X. Here is a +shell script to fix the problem; be sure that it is run after VUE +configures the X server. + + xmodmap 2> /dev/null - << EOF + keysym Alt_L = Meta_L + keysym Alt_R = Meta_R + EOF + + xmodmap - << EOF + clear mod1 + keysym Mode_switch = NoSymbol + add mod1 = Meta_L + keysym Meta_R = Mode_switch + add mod2 = Mode_switch + EOF + +** Trouble using ptys on IRIX, or running out of ptys. + +The program mkpts (which may be in `/usr/adm' or `/usr/sbin') needs to +be set-UID to root, or non-root programs like Emacs will not be able +to allocate ptys reliably. + +** Motif dialog boxes lose on Irix. + +Larry Auton writes: +Beware of not specifying + + --with-dialogs=athena + +if it builds with the motif dialogs [boom!] you're a dead man. + +** Beware of the default image & graphics library on Irix + +Richard Cognot writes: +You *have* to compile your own jpeg lib. The one delivered with SGI +systems is a C++ lib, which apparently XEmacs cannot cope with. + +** Slow startup on Linux. + +People using systems based on the Linux kernel sometimes report that +startup takes 10 to 15 seconds longer than `usual'. + +This is because Emacs looks up the host name when it starts. +Normally, this takes negligible time; the extra delay is due to +improper system configuration. This problem can occur for both +networked and non-networked machines. + +Here is how to fix the configuration. It requires being root. + +*** Networked Case + +First, make sure the files `/etc/hosts' and `/etc/host.conf' both +exist. The first line in the `/etc/hosts' file should look like this +(replace HOSTNAME with your host name): + + 127.0.0.1 localhost HOSTNAME + +Also make sure that the `/etc/host.conf' files contains the following +lines: + + order hosts, bind + multi on + +Any changes, permanent and temporary, to the host name should be +indicated in the `/etc/hosts' file, since it acts a limited local +database of addresses and names (e.g., some SLIP connections +dynamically allocate ip addresses). + +*** Non-Networked Case + +The solution described in the networked case applies here as well. +However, if you never intend to network your machine, you can use a +simpler solution: create an empty `/etc/host.conf' file. The command +`touch /etc/host.conf' suffices to create the file. The `/etc/hosts' +file is not necessary with this approach. + +** On Solaris 2.4, Dired hangs and C-g does not work. Or Emacs hangs +forever waiting for termination of a subprocess that is a zombie. + +casper@fwi.uva.nl says the problem is in X11R6. Rebuild libX11.so +after changing the file xc/config/cf/sunLib.tmpl. Change the lines + + #if ThreadedX + #define SharedX11Reqs -lthread + #endif + +to: + + #if OSMinorVersion < 4 + #if ThreadedX + #define SharedX11Reqs -lthread + #endif + #endif + +Be sure also to edit x/config/cf/sun.cf so that OSMinorVersion is 4 +(as it should be for Solaris 2.4). The file has three definitions for +OSMinorVersion: the first is for x86, the second for SPARC under +Solaris, and the third for SunOS 4. Make sure to update the +definition for your type of machine and system. + +Then do `make Everything' in the top directory of X11R6, to rebuild +the makefiles and rebuild X. The X built this way work only on +Solaris 2.4, not on 2.3. + +For multithreaded X to work it necessary to install patch +101925-02 to fix problems in header files [2.4]. You need +to reinstall gcc or re-run just-fixinc after installing that +patch. + +However, Frank Rust used a simpler solution: +he changed + #define ThreadedX YES +to + #define ThreadedX NO +in sun.cf and did `make World' to rebuild X11R6. Removing all +`-DXTHREAD*' flags and `-lthread' entries from lib/X11/Makefile and +typing 'make install' in that directory also seemed to work. + +** With M-x enable-flow-control, you need to type C-\ twice to do +incremental search--a single C-\ gets no response. + +This has been traced to communicating with your machine via kermit, +with C-\ as the kermit escape character. One solution is to use +another escape character in kermit. One user did + + set escape-character 17 + +in his .kermrc file, to make C-q the kermit escape character. + +** The Motif version of Emacs paints the screen a solid color. + +This has been observed to result from the following X resource: + + Emacs*default.attributeFont: -*-courier-medium-r-*-*-*-140-*-*-*-*-iso8859-* + +That the resource has this effect indicates a bug in something, but we +do not yet know what. If it is an Emacs bug, we hope someone can +explain what the bug is so we can fix it. In the mean time, removing +the resource prevents the problem. + +** Regular expressions matching bugs on SCO systems. + +On SCO, there are problems in regexp matching when Emacs is compiled +with the system compiler. The compiler version is "Microsoft C +version 6", SCO 4.2.0h Dev Sys Maintenance Supplement 01/06/93; Quick +C Compiler Version 1.00.46 (Beta). The solution is to compile with +GCC. + +** In Shell mode, you get a ^M at the end of every line. + +This happens to people who use tcsh, because it is trying to be too +smart. It sees that the Shell uses terminal type `unknown' and turns +on the flag to output ^M at the end of each line. You can fix the +problem by adding this to your .cshrc file: + + if ($?EMACS) then + if ($EMACS == "t") then + unset edit + stty -icrnl -onlcr -echo susp ^Z + endif + endif + +** An error message such as `X protocol error: BadMatch (invalid +parameter attributes) on protocol request 93'. + +This comes from having an invalid X resource, such as + emacs*Cursor: black +(which is invalid because it specifies a color name for something +that isn't a color.) + +The fix is to correct your X resources. + +** Mail is lost when sent to local aliases. + +Many emacs mail user agents (VM and rmail, for instance) use the +sendmail.el library. This library can arrange for mail to be +delivered by passing messages to the /usr/lib/sendmail (usually) +program . In doing so, it passes the '-t' flag to sendmail, which +means that the name of the recipient of the message is not on the +command line and, therefore, that sendmail must parse the message to +obtain the destination address. + +There is a bug in the SunOS4.1.1 and SunOS4.1.3 versions of sendmail. +In short, when given the -t flag, the SunOS sendmail won't recognize +non-local (i.e. NIS) aliases. It has been reported that the Solaris +2.x versions of sendmail do not have this bug. For those using SunOS +4.1, the best fix is to install sendmail V8 or IDA sendmail (which +have other advantages over the regular sendmail as well). At the time +of this writing, these official versions are available: + + Sendmail V8 on ftp.cs.berkeley.edu in /ucb/sendmail: + sendmail.8.6.9.base.tar.Z (the base system source & documentation) + sendmail.8.6.9.cf.tar.Z (configuration files) + sendmail.8.6.9.misc.tar.Z (miscellaneous support programs) + sendmail.8.6.9.xdoc.tar.Z (extended documentation, with postscript) + + IDA sendmail on vixen.cso.uiuc.edu in /pub: + sendmail-5.67b+IDA-1.5.tar.gz + +** On AIX, you get this message when running Emacs: + + Could not load program emacs + Symbol smtcheckinit in csh is undefined + Error was: Exec format error + +or this one: + + Could not load program .emacs + Symbol _system_con in csh is undefined + Symbol _fp_trapsta in csh is undefined + Error was: Exec format error + +These can happen when you try to run on AIX 3.2.5 a program that was +compiled with 3.2.4. The fix is to recompile. + +** After running emacs once, subsequent invocations crash. + +Some versions of SVR4 have a serious bug in the implementation of the +mmap () system call in the kernel; this causes emacs to run correctly +the first time, and then crash when run a second time. + +Contact your vendor and ask for the mmap bug fix; in the mean time, +you may be able to work around the problem by adding a line to your +operating system description file (whose name is reported by the +configure script) that reads: +#define SYSTEM_MALLOC +This makes Emacs use memory less efficiently, but seems to work around +the kernel bug. + +** Inability to send an Alt-modified key, when Emacs is communicating +directly with an X server. + +If you have tried to bind an Alt-modified key as a command, and it +does not work to type the command, the first thing you should check is +whether the key is getting through to Emacs. To do this, type C-h c +followed by the Alt-modified key. C-h c should say what kind of event +it read. If it says it read an Alt-modified key, then make sure you +have made the key binding correctly. + +If C-h c reports an event that doesn't have the Alt modifier, it may +be because your X server has no key for the Alt modifier. The X +server that comes from MIT does not set up the Alt modifier by +default. + +If your keyboard has keys named Alt, you can enable them as follows: + + xmodmap -e 'add mod2 = Alt_L' + xmodmap -e 'add mod2 = Alt_R' + +If the keyboard has just one key named Alt, then only one of those +commands is needed. The modifier `mod2' is a reasonable choice if you +are using an unmodified MIT version of X. Otherwise, choose any +modifier bit not otherwise used. + +If your keyboard does not have keys named Alt, you can use some other +keys. Use the keysym command in xmodmap to turn a function key (or +some other 'spare' key) into Alt_L or into Alt_R, and then use the +commands show above to make them modifier keys. + +Note that if you have Alt keys but no Meta keys, Emacs translates Alt +into Meta. This is because of the great importance of Meta in Emacs. + +** `Pid xxx killed due to text modification or page I/O error' + +On HP/UX, you can get that error when the Emacs executable is on an NFS +file system. HP/UX responds this way if it tries to swap in a page and +does not get a response from the server within a timeout whose default +value is just ten seconds. + +If this happens to you, extend the timeout period. + +** `expand-file-name' fails to work on any but the machine you dumped +Emacs on. + +On Ultrix, if you use any of the functions which look up information +in the passwd database before dumping Emacs (say, by using +expand-file-name in site-init.el), then those functions will not work +in the dumped Emacs on any host but the one Emacs was dumped on. + +The solution? Don't use expand-file-name in site-init.el, or in +anything it loads. Yuck - some solution. + +I'm not sure why this happens; if you can find out exactly what is +going on, and perhaps find a fix or a workaround, please let us know. +Perhaps the YP functions cache some information, the cache is included +in the dumped Emacs, and is then inaccurate on any other host. + +** Emacs fails to understand most Internet host names, even though +the names work properly with other programs on the same system. + Emacs won't work with X-windows if the value of DISPLAY is HOSTNAME:0. + Gnus can't make contact with the specified host for nntp. + +This typically happens on Suns and other systems that use shared +libraries. The cause is that the site has installed a version of the +shared library which uses a name server--but has not installed a +similar version of the unshared library which Emacs uses. + +The result is that most programs, using the shared library, work with +the nameserver, but Emacs does not. + +The fix is to install an unshared library that corresponds to what you +installed in the shared library, and then relink Emacs. + +On SunOS 4.1, simply define HAVE_RES_INIT. + +If you have already installed the name resolver in the file libresolv.a, +then you need to compile Emacs to use that library. The easiest way to +do this is to add to config.h a definition of LIBS_SYSTEM, LIBS_MACHINE +or LIB_STANDARD which uses -lresolv. Watch out! If you redefine a macro +that is already in use in your configuration to supply some other libraries, +be careful not to lose the others. + +Thus, you could start by adding this to config.h: + +#define LIBS_SYSTEM -lresolv + +Then if this gives you an error for redefining a macro, and you see that +the s- file defines LIBS_SYSTEM as -lfoo -lbar, you could change config.h +again to say this: + +#define LIBS_SYSTEM -lresolv -lfoo -lbar + +** Trouble using ptys on AIX. + +People often install the pty devices on AIX incorrectly. +Use `smit pty' to reinstall them properly. + +** Shell mode on HP/UX gives the message, "`tty`: Ambiguous". + +christos@theory.tn.cornell.edu says: + +The problem is that in your .cshrc you have something that tries to +execute `tty`. If you are not running the shell on a real tty then tty +will print "not a tty". Csh expects one word in some places, but tty +is giving it back 3. + +The solution is to add a pair of quotes around `tty` to make it a +single word: + +if (`tty` == "/dev/console") + +should be changed to: + +if ("`tty`" == "/dev/console") + +Even better, move things that set up terminal sections out of .cshrc +and into .login. + +** With process-connection-type set to t, each line of subprocess +output is terminated with a ^M, making ange-ftp and GNUS not work. + +On SunOS systems, this problem has been seen to be a result of an +incomplete installation of gcc 2.2 which allowed some non-ANSI +compatible include files into the compilation. In particular this +affected virtually all ioctl() calls. + +** Once you pull down a menu from the menubar, it won't go away. + +It has been claimed that this is caused by a bug in certain very old +(1990?) versions of the twm window manager. It doesn't happen with +recent vintages, or with other window managers. + +** Emacs ignores the "help" key when running OLWM. + +OLWM grabs the help key, and retransmits it to the appropriate client +using XSendEvent. Allowing emacs to react to synthetic events is a +security hole, so this is turned off by default. You can enable it by +setting the variable x-allow-sendevents to t. You can also cause fix +this by telling OLWM to not grab the help key, with the null binding +"OpenWindows.KeyboardCommand.Help:". + +** Programs running under terminal emulator do not recognize `emacs' +terminal type. + +The cause of this is a shell startup file that sets the TERMCAP +environment variable. The terminal emulator uses that variable to +provide the information on the special terminal type that Emacs +emulates. + +Rewrite your shell startup file so that it does not change TERMCAP +in such a case. You could use the following conditional which sets +it only if it is undefined. + + if ( ! ${?TERMCAP} ) setenv TERMCAP ~/my-termcap-file + +Or you could set TERMCAP only when you set TERM--which should not +happen in a non-login shell. + + +* Compatibility problems (with Emacs 18, GNU Emacs, or previous XEmacs/lemacs) +============================================================================== + +** "Symbol's value as variable is void: unread-command-char". + "Wrong type argument: arrayp, #" + "Wrong type argument: stringp, [#]" + +There are a few incompatible changes in XEmacs, and these are the +symptoms. Some of the emacs-lisp code you are running needs to be +updated to be compatible with XEmacs. + +The code should not treat keymaps as arrays (use `define-key', etc.), +should not use obsolete variables like `unread-command-char' (use +`unread-command-events'). Many (most) of the new ways of doing things +are compatible in GNU Emacs and XEmacs. + +Modern Emacs packages (Gnus, VM, W3, efs, etc) are written to support +GNU Emacs and XEmacs. We have provided modified versions of several +popular emacs packages (dired, etc) which are compatible with this +version of emacs. Check to make sure you have not set your load-path +so that your private copies of these packages are being found before +the versions in the lisp directory. + +Make sure that your load-path and your $EMACSLOADPATH environment +variable are not pointing at an Emacs18 lisp directory. This will +cripple emacs. + +** Some packages that worked before now cause the error +Wrong type argument: arrayp, # + +Code which uses the `face' accessor functions must be recompiled with +xemacs 19.9 or later. The functions whose callers must be recompiled +are: face-font, face-foreground, face-background, +face-background-pixmap, and face-underline-p. The .elc files +generated by version 19.9 will work in 19.6 and 19.8, but older .elc +files which contain calls to these functions will not work in 19.9. + +** Signaling: (error "Byte code stack underflow (byte compiler bug), pc 38") + +This error is given when XEmacs 20 is compiled without MULE support +but is attempting to load a .elc which requires MULE support. The fix +is to rebytecompile the offending file. + +** Signaling: (wrong-type-argument ...) when loading mail-abbrevs + +The is seen when installing the Insidious Big Brother Data Base (bbdb) +which includes an outdated copy of mail-abbrevs.el. Remove the copy +that comes with bbdb and use the one that comes with XEmacs. + + +* MULE issues +============= + +** A reminder: XEmacs/Mule work does not currently receive *any* +funding, and all work is done by volunteers. If you think you can +help, please contact the XEmacs maintainers. + +** XEmacs/Mule doesn't support TTY's satisfactorily. + +This is a major problem, which we plan to address in a future release +of XEmacs. Basically, XEmacs should have primitives to be told +whether the terminal can handle international output, and which +locale. Also, it should be able to do approximations of characters to +the nearest supported by the locale. + +** Internationalized (Asian) Isearch doesn't work. + +Currently, Isearch doesn't directly support any of the input methods +that are not XIM based (like egg, canna and quail) (and there are +potential problems with XIM version too...). If you're using egg +there is a workaround. Hitting right after C-s to invoke +Isearch will put Isearch in string mode, where a complete string can +be typed into the minibuffer and then processed by Isearch afterwards. +Since egg is now supported in the minibuffer using string mode you can +now use egg to input your Japanese, Korean or Chinese string, then hit +return to send that to Isearch and then use standard Isearch commands +from there. + +** Using egg and mousing around while in 'fence' mode screws up my +buffer. + +Don't do this. The fence modes of egg and canna are currently very +modal, and messing with where they expect point to be and what they +think is the current buffer is just asking for trouble. If you're +lucky they will realize that something is awry, and simply delete the +fence, but worst case can trash other buffers too. We've tried to +protect against this where we can, but there still are many ways to +shoot yourself in the foot. So just finish what you are typing into +the fence before reaching for the mouse. + +** Not all languages in Quail are supported like Devanagari and Indian +languages, Lao and Tibetan. + +Quail requires more work and testing. Although it has been ported to +XEmacs, it works really well for Japanese and for the European +languages. + +** Right-to-left mode is not yet implemented, so languages like +Arabic, Hebrew and Thai don't work. + +Getting this right requires more work. It may be implemented in a +future XEmacs version, but don't hold your breath. If you know +someone who is ready to implement this, please let us know. + +** We need more developers and native language testers. It's extremely +difficult (and not particularly productive) to address languages that +nobody is using and testing. + +** The kWnn and cWnn support for Chinese and Korean needs developers +and testers. It probably doesn't work. + +** There are no `native XEmacs' TUTORIALs for any Asian languages, +including Japanese. FSF Emacs and XEmacs tutorials are quite similar, +so it should be sufficient to skim through the differences and apply +them to the Japanese version. + +** We only have localized menus translated for Japanese, and the +Japanese menus are developing bitrot (the Mule menu appears in +English). + +** XIM is untested for any language other than Japanese. diff --git a/README b/README new file mode 100644 index 0000000..3715e1c --- /dev/null +++ b/README @@ -0,0 +1,63 @@ +This directory tree holds version 21.2 of XEmacs, the extensible, +customizable, self-documenting real-time display editor. This version +of XEmacs also runs on various Microsoft Windows platforms including +MS Windows '95 and MS Windows NT and Cygwin. + +See the file `etc/NEWS' for information on new features and other +user-visible changes since the last version of XEmacs. + +The file `INSTALL' in this directory says how to bring up XEmacs on +Unix and Cygwin, once you have loaded the entire subtree of this +directory. + +The file `PROBLEMS' contains information on many common problems that +occur in building, installing and running XEmacs. + +See the file `nt/README' for instructions on building XEmacs for +Microsoft Windows. + +Reports of bugs in XEmacs should be posted to the newsgroup +comp.emacs.xemacs or sent to the mailing list xemacs@xemacs.org. See +the "Bugs" section of the XEmacs manual for more information on how to +report bugs. (The file `BUGS' in this directory explains how you can +find and read that section using the Info files that come with +XEmacs.) See `etc/MAILINGLISTS' for more information on mailing lists +relating to XEmacs and other GNU products. + +The file `configure' is a shell script to acclimate XEmacs to the +oddities of your processor and operating system. It will create a +file named `Makefile' (a script for the `make' program), which helps +automate the process of building and installing emacs. See INSTALL +for more detailed information. + +The file `configure.in' is the input used by the autoconf program to +construct the `configure' script. Since XEmacs has configuration +requirements that autoconf can't meet, `configure.in' uses an unholy +marriage of custom-baked configuration code and autoconf macros; it +may be wise to avoid rebuilding `configure' from `configure.in' when +possible. + +The file `Makefile.in' is a template used by `configure' to create +`Makefile'. + +There are several subdirectories: + +`src' holds the C code for Emacs (the XEmacs Lisp interpreter and its + primitives, the redisplay code, and some basic editing functions). +`lisp' holds the Emacs Lisp code for XEmacs (most everything else). +`lib-src' holds the source code for some utility programs for use by + or with XEmacs, like movemail and etags. +`etc' holds miscellaneous architecture-independent data files + XEmacs uses, like the tutorial text and the Zippy the Pinhead quote + database. The contents of the `lisp', `info' and `man' + subdirectories are architecture-independent too. +`lwlib' holds the C code for the toolkit objects used by XEmacs. + +`info' holds the Info documentation tree for XEmacs. +`man' holds the source code for the XEmacs info documentation tree. + +`msdos' holds configuration files for compiling XEmacs under MSDOG. + See the file etc/MSDOS for more information. + +`nt' holds configuration files for compiling XEmacs under Microsoft Windows + NT. The support for NT is very tentative right now. diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..c84a38b --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,99 @@ +dnl aclocal.m4 --- Dynamically linked library support for XEmacs +dnl Copyright (C) 1998 Free Software Foundation, Inc. +dnl Author: William Perry +dnl This file is part of XEmacs + +AC_DEFUN(XE_MAKE_SHAREDLIB, [ +dll_ld="ld" +dll_lflags="-shared" +dll_cflags="-r" +dll_oflags="-o " + +AC_MSG_CHECKING(how to build a shared library) +case `uname -rs` in + UNIX_SV*|UNIX_System_V*) + dll_lflags="-G" + dll_cflags=-Kpic + dll_ld="ld" + ;; + BSD/OS*) + dll_cflags= + dll_lflags="-r" + dll_ld="shlicc2" + ;; + FreeBSD*2*) + dll_lflags="-Bshareable" + dll_cflags="-fPIC -DPIC" + dll_ld=ld + ;; + SunOS*4.*) + dll_cflags="-P" + dll_lflags="-dp -assert pure-text -assert nodefinitions" + ;; + SunOS*5.*) + dll_ld="cc" + dll_cflags="-KPIC" + dll_lflags="-G" + dll_oflags="-W0,-y-o -W0,-y" + ;; + IRIX*5.*|IRIX*6.*) + dll_cflags="-KPIC" + ;; + OSF1*) + ;; + HP-UX*) + dll_ld="ld" + dll_lflags="-b" + dll_cflags="+z" + ;; + SCO_SV*) + dll_ld="ld" + dll_lflags="-G" + dll_cflags="-Kpic" + ;; + AIX*) + dll_lflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:\${@:.ell=.exp} -b noentry -lc" + dll_ld="ld" + ;; + *) + ;; + esac + + if test "$GCC" = "yes" ; then + dll_cflags="-fPIC" + case `uname -rs` in + SunOS*5.*) + dll_ld="ld" + dll_oflags="-o " + dll_lflags="-G" + ;; + SCO_SV*) + dll_ld="ld" + dll_lflags="-G" + dll_cflags="-b elf" + ;; + FreeBSD*) + dll_cflags="-DDLSYM_NEEDS_UNDERSCORE -DPIC -fPIC" + dll_lflags="-Bshareable" + dll_ld=ld + ;; + BSD/OS*) + dll_cflags= + dll_lflags="-r" + dll_ld="shlicc2" + ;; + UNIX_SV*) + dll_cflags="-fPIC" + ;; + *) + dll_ld="$CC" + dll_lflags="-shared" + esac + fi + + AC_MSG_RESULT("lflags: $dll_lflags cflags: $dll_cflags") +AC_SUBST(dll_ld) +AC_SUBST(dll_cflags) +AC_SUBST(dll_oflags) +AC_SUBST(dll_lflags) +])dnl diff --git a/config.guess b/config.guess new file mode 100755 index 0000000..ed660fb --- /dev/null +++ b/config.guess @@ -0,0 +1,893 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Written by Per Bothner . +# The master version of this file is at the FSF in /home/gd/gnu/lib. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 8/24/94.) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + cat <dummy.s + .globl main + .ent main +main: + .frame \$30,0,\$26,0 + .prologue 0 + .long 0x47e03d80 # implver $0 + lda \$2,259 + .long 0x47e20c21 # amask $2,$1 + srl \$1,8,\$2 + sll \$2,2,\$2 + sll \$0,3,\$0 + addl \$1,\$0,\$0 + addl \$2,\$0,\$0 + ret \$31,(\$26),1 + .end main +EOF + ${CC-cc} dummy.s -o dummy 2>/dev/null + if test "$?" = 0 ; then + ./dummy + case "$?" in + 7) + UNAME_MACHINE="alpha" + ;; + 15) + UNAME_MACHINE="alphaev5" + ;; + 14) + UNAME_MACHINE="alphaev56" + ;; + 10) + UNAME_MACHINE="alphapca56" + ;; + 16) + UNAME_MACHINE="alphaev6" + ;; + esac + fi + rm -f dummy.s dummy + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]` + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-cbm-sysv4 + exit 0;; + amiga:NetBSD:*:*) + echo m68k-cbm-netbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc64:OpenBSD:*:*) + echo mips64el-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hkmips:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + arm32:NetBSD:*:*) + echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + SR2?01:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:*|MIS*:OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + atari*:NetBSD:*:*) + echo m68k-atari-netbsd${UNAME_RELEASE} + exit 0 ;; + atari*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:NetBSD:*:*) + echo m68k-sun-netbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:NetBSD:*:*) + echo m68k-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + sed 's/^ //' << EOF >dummy.c + int main (argc, argv) int argc; char **argv; { + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + ${CC-cc} dummy.c -o dummy \ + && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ + -o ${TARGET_BINARY_INTERFACE}x = x ] ; then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i?86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + sed 's/^ //' << EOF >dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:4) + if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=4.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[3478]??:HP-UX:*:*) + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;; + 9000/8?? ) HP_ARCH=hppa1.0 ;; + esac + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i?86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*X-MP:*:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY-2:*:*:*) + echo cray2-cray-unicos + exit 0 ;; + F300:UNIX_System_V:*:*) + FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + F301:UNIX_System_V:*:*) + echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` + exit 0 ;; + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + i?86:BSD/386:*:* | *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin32 + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin32 + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:Linux:*:*) + # uname on the ARM produces all sorts of strangeness, and we need to + # filter it out. + case "$UNAME_MACHINE" in + arm* | sa110*) UNAME_MACHINE="arm" ;; + esac + + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. + ld_help_string=`ld --help 2>&1` + ld_supported_emulations=`echo $ld_help_string \ + | sed -ne '/supported emulations:/!d + s/[ ][ ]*/ /g + s/.*supported emulations: *// + s/ .*// + p'` + case "$ld_supported_emulations" in + i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; + i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; + sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;; + esac + + if test "${UNAME_MACHINE}" = "alpha" ; then + sed 's/^ //' <dummy.s + .globl main + .ent main + main: + .frame \$30,0,\$26,0 + .prologue 0 + .long 0x47e03d80 # implver $0 + lda \$2,259 + .long 0x47e20c21 # amask $2,$1 + srl \$1,8,\$2 + sll \$2,2,\$2 + sll \$0,3,\$0 + addl \$1,\$0,\$0 + addl \$2,\$0,\$0 + ret \$31,(\$26),1 + .end main +EOF + LIBC="" + ${CC-cc} dummy.s -o dummy 2>/dev/null + if test "$?" = 0 ; then + ./dummy + case "$?" in + 7) + UNAME_MACHINE="alpha" + ;; + 15) + UNAME_MACHINE="alphaev5" + ;; + 14) + UNAME_MACHINE="alphaev56" + ;; + 10) + UNAME_MACHINE="alphapca56" + ;; + 16) + UNAME_MACHINE="alphaev6" + ;; + esac + + objdump --private-headers dummy | \ + grep ld.so.1 > /dev/null + if test "$?" = 0 ; then + LIBC="libc1" + fi + fi + rm -f dummy.s dummy + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 + elif test "${UNAME_MACHINE}" = "mips" ; then + cat >dummy.c </dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + else + # Either a pre-BFD a.out linker (linux-gnuoldld) + # or one that does not give us useful --help. + # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. + # If ld does not provide *any* "supported emulations:" + # that means it is gnuoldld. + echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" + test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + + case "${UNAME_MACHINE}" in + i?86) + VENDOR=pc; + ;; + *) + VENDOR=unknown; + ;; + esac + # Determine whether the default compiler is a.out or elf + cat >dummy.c < +main(argc, argv) + int argc; + char *argv[]; +{ +#ifdef __ELF__ +# ifdef __GLIBC__ +# if __GLIBC__ >= 2 + printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +#else + printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); +#endif + return 0; +} +EOF + ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + fi ;; +# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions +# are messed up and put the nodename in both sysname and nodename. + i?86:DYNIX/ptx:4*:*) + echo i386-sequent-sysv4 + exit 0 ;; + i?86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} + fi + exit 0 ;; + i?86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i?86:LynxOS:2.*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:*:6*) + echo mips-sony-newsos6 + exit 0 ;; + R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +cat >dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +#if !defined (ultrix) + printf ("vax-dec-bsd\n"); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 +rm -f dummy.c dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +#echo '(Unable to guess system type)' 1>&2 + +exit 1 diff --git a/config.sub b/config.sub new file mode 100755 index 0000000..8fef96a --- /dev/null +++ b/config.sub @@ -0,0 +1,915 @@ +#! /bin/sh +# Configuration validation subroutine script, version 1.1. +# Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# Synched up with: FSF 19.31. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +if [ x$1 = x ] +then + echo Configuration name missing. 1>&2 + echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 + echo "or $0 ALIAS" 1>&2 + echo where ALIAS is a recognized configuration type. 1>&2 + exit 1 +fi + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +esac + +# Separate what the user gave into CPU-COMPANY and OS (if any). +basic_machine=`echo $1 | sed 's/-[^-]*$//'` +if [ $basic_machine != $1 ] +then os=`echo $1 | sed 's/.*-/-/'` +else os=; fi + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple) + os= + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + tahoe | i[3-9]86 | i860 | m68k | m68000 | m88k | ns32k | arm \ + | arme[lb] | pyramid \ + | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \ + | alpha | we32k | mab | ns16k | clipper | i370 | sh \ + | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \ + | pdp11 | mips64el | mips64orion | mips64orionel \ + | sparc | sparclet | sparclite | sparc64) + basic_machine=$basic_machine-unknown + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + vax-* | tahoe-* | i[3-9]86-* | i860-* | m68k-* | m68000-* | m88k-* \ + | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \ + | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ + | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ + | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ + | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* | mab-*) + ;; + # Recognize names of some NetBSD ports. + amiga-* | hp300-* | mac68k-* | sun3-* | pmax-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-cbm + ;; + amigados) + basic_machine=m68k-cbm + os=-amigados + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + [ctj]90-cray) + basic_machine=c90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + os=-mvs + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i[3-9]86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` + os=-sysv32 + ;; + i[3-9]86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` + os=-sysv4 + ;; + i[3-9]86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` + os=-sysv + ;; + i[3-9]86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` + os=-solaris2 + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + miniframe) + basic_machine=m68000-convergent + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + np1) + basic_machine=np1-gould + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + case $os in + -netbsd*) + basic_machine=pc532-unknown + ;; + *) + basic_machine=ns32k-pc532 + ;; + esac + ;; + pentium | p5) + basic_machine=i586-intel + ;; + pentiumpro | p6) + basic_machine=i686-intel + ;; + pentium-* | p5-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + k5) + # We don't have specific support for AMD's K5 yet, so just call it a Pentium + basic_machine=i586-amd + ;; + nexen) + # We don't have specific support for Nexgen yet, so just call it a Pentium + basic_machine=i586-nexgen + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=rs6000-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + mips) + basic_machine=mips-mips + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sparc) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -unixware* | svr4*) + os=-sysv4 + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[345]* \ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \ + | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \ + | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin32* | -pe* | -psos* | -moss* | -openbsd* ) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -xenix) + os=-xenix + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-semi) + os=-aout + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-ibm) + os=-aix + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigados + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -lynxos*) + vendor=lynx + ;; + -aix*) + vendor=ibm + ;; + -hpux*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -aux*) + vendor=apple + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os diff --git a/configure.usage b/configure.usage new file mode 100644 index 0000000..bcab03e --- /dev/null +++ b/configure.usage @@ -0,0 +1,249 @@ +Usage: configure [--OPTION[=VALUE] ...] [CONFIGURATION] + +Set compilation and installation parameters for XEmacs, and report. + +Note that for most of the following options, you can explicitly enable +them using `--OPTION=yes' and explicitly disable them using `--OPTION=no'. +This is especially useful for auto-detected options. +The option `--without-FEATURE' is a synonym for `--with-FEATURE=no'. + +Options marked with a (*) are auto-detected. + +Use colons (or quoted spaces) to separate directory names in option +values which are PATHs (i.e. lists of directories). + +General options: + +--help Issue this usage message. +--verbose Display the results of configure tests. +--extra-verbose Display even more information, useful for debugging. + + +Compilation options: + +--compiler=prog C compiler to use. +--with-gcc (*) Use GCC to compile XEmacs. +--without-gcc Don't use GCC to compile XEmacs. +--with-gnu-make Write the Makefiles to take advantage of + special features of GNU Make. (GNU Make + works fine on the Makefiles even without this + option. This just allows for simultaneous + in-place and --srcdir building.) +--cflags=FLAGS Compiler flags (such as -O) +--cpp=prog C preprocessor to use (e.g. /usr/ccs/lib/cpp or cc -E) +--cppflags=FLAGS C preprocessor flags (e.g. -I/foo or -Dfoo=bar) +--libs=LIBS Additional libraries (e.g. -lfoo) +--ldflags=FLAGS Additional linker flags (e.g. -L/foo) +--site-includes=PATH List of directories to search first for header files. +--site-libraries=PATH List of directories to search first for libraries. +--site-prefixes=PATH List of directories to search for include/ and lib/ + subdirectories, just after 'site-includes' and + 'site-libraries'. +--site-runtime-libraries=PATH + List of ALL directories to search for dynamically + linked libraries at run time. +--dynamic=yes Link dynamically if supported by system. +--dynamic=no Force static linking on systems where dynamic + linking is the default. +--srcdir=DIR Look for the XEmacs source files in DIR. + See also --with-gnu-make. +--use-indexed-lrecord-implementation +--use-minimal-tagbits +--gung-ho Build with new-style Lisp_Objects. + Equivalent to both of the 2 previous options combined. + + +Installation options: + +--prefix=DIR Install files below DIR. Defaults to `/usr/local'. + + +Window-system options: + +--with-x11 (*) Support the X Window System. +--without-x11 Don't support X. +--x-includes=DIR Search for X header files in DIR. +--x-libraries=DIR Search for X libraries in DIR. +--without-toolbars Don't compile with any toolbar support. +--without-session Compile without realized leader window which will + keep the WM_COMMAND property. Required for proper + session-management. +--with-menubars=TYPE Use TYPE menubars (lucid, motif, or no). The Lucid + widgets emulate Motif (mostly) but are faster. + *WARNING* The Motif menubar is currently broken. +--with-scrollbars=TYPE Use TYPE scrollbars + (lucid, motif, athena, athena3d, or no). +--with-dialogs=TYPE Use TYPE dialog boxes (motif, athena, athena3d, or no). + Lucid menubars and scrollbars are the default. + Motif dialog boxes will be used if Motif can be found. +--with-dragndrop (*) Compile in the generic drag and drop API. This is + automatically added if one of the drag and drop + protocols is found (currently CDE, OffiX, MSWindows). + *WARNING* The Drag'n'drop support is under development + 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. + It is highly recommended that you obtain XPM + (version 3.4h or better) if you don't already + have it. Get it from the XEmacs FTP site. +--with-xface (*) Compile with support for X-Face mail header + conversion. Requires the compface library. + Get it from the XEmacs FTP site. +--with-gif (*) Compile with support for GIF image conversion. + Requires GifLib 3.1 or greater. Get it from + the XEmacs FTP site. +--with-jpeg (*) Compile with support for JPEG image conversion. + Requires libjpeg from the Independent JPEG Group. + Get it from the XEmacs FTP site. +--with-png (*) Compile with support for PNG image conversion. + Requires libpng. Get it from the XEmacs FTP site. +--with-tiff (*) Compile with support for TIFF image conversion. + Requires Sam Lefflier's libtiff library. + Get if from the XEmacs FTP site. + + +TTY options: + +--without-tty Don't support TTY-s. +--with-ncurses (*) Use the ncurses library for tty support. +--with-gpm (*) Compile in support for General Purpose Mouse. + + +Additional features: + +--with-tooltalk (*) Support the ToolTalk IPC protocol. +--with-workshop Support the Sun WorkShop (formerly Sparcworks) + development environment. +--with-socks Compile with support for SOCKS (an Internet proxy). +--with-database=TYPE (*) Compile with database support. Valid types are + `no' or a comma-separated list of one or more + of `dbm', `gnudbm', or `berkdb'. +--with-sound=native (*) Compile with native sound support. +--with-sound=nas Compile with network sound support. +--with-sound=both Compile with native and network sound support. +--native-sound-lib=LIB Native sound support library. Needed on Suns + with --with-sound=both because both sound libraries + are called libaudio. +--with-pop support POP for mail retrieval +--with-kerberos support Kerberos-authenticated POP +--with-hesiod support Hesiod to get the POP server host +--with-dnet (*) Compile with support for DECnet. +--with-ldap (*) Compile with support for the LDAP protocol (requires + installed LDAP libraries on the system). +--mail-locking=TYPE (*) Specify the locking to be used by movemail to prevent + concurrent updates of mail spool files. Valid types + are `lockf', `flock', and `file'. +--with-site-lisp Allow for a site-lisp directory in the XEmacs hierarchy + searched before the installation packages. +--package-path=PATH Directories to search for packages to dump with xemacs. + PATH splits into three parts separated + by double colons (::), an early, a late, and a last part, + corresponding to their position in the various + system paths: The early part is always first, + the late part somewhere in the middle, and the + last part at the very back. + Only the late part gets seen at dump time. + If PATH has only one component, that component + is late. + If PATH has two components, the first is + early, the second is late. +--infodir=DIR Directory to install the XEmacs Info manuals and dir in. +--infopath=PATH Directories to search for Info documents, info dir + and localdir files in case run-time searching + for them fails. + +Internationalization options: + +--with-mule Compile with Mule (MUlti-Lingual Emacs) support, + needed to support non-Latin-1 (including Asian) languages. +--with-xim=xlib Compile with support for X input methods, +--with-xim=motif (*) Used in conjunction with Mule support. + Use either raw Xlib to provide XIM support, or + the Motif XmIm* routines (when available). + NOTE: On some systems bugs in X11's XIM support + will cause XEmacs to crash, so by default, + no XIM support is compiled in, unless running + on Solaris and the XmIm* routines are detected. +--with-canna (*) Compile with support for Canna (a Japanese input method + used in conjunction with Mule support). +--with-wnn (*) Compile with support for WNN (a multi-language input method + used in conjunction with Mule support). +--with-wnn6 (*) Compile with support for the comercial package WNN version 6 +--with-i18n3 Compile with I18N level 3 (support for message + translation). This doesn't currently work. +--with-xfs Compile with XFontSet support for bilingual menubar. + Can't use this option with --with-xim=motif or xlib. + And should have --with-menubars=lucid. + + +Debugging options: + +--debug Compile with support for debugging XEmacs. + (Causes code-size increase and little loss of speed.) +--error-checking=TYPE[,TYPE]... + Compile with internal error-checking added. + Causes noticeable loss of speed. Valid types + are extents, bufpos, malloc, gc, typecheck. +--error-checking=none Disable all internal error-checking (the default). +--error-checking=all Enable all internal error-checking. +--memory-usage-stats Compile with additional code to allow you to + determine what XEmacs's memory is being used + for. Causes a small code increase but no loss + of speed. Normally enabled when --debug is given. +--no-doc-file Don't rebuild the DOC file unless it's explicitly + deleted. Only use during development. (It speeds + up the compile-run-test cycle.) +--use-union-type Enable or disable use of a union, instead of an + int, for the fundamental Lisp_Object type; this + provides stricter type-checking. Only works with + some systems and compilers. + + +Other options: + +--puresize=VALUE Override default amount of space for pure Lisp code. +--rel-alloc Use the relocating allocator (default for this option + is system-dependent). +--with-dlmalloc Control usage of Doug Lea malloc on systems that have + it in the standard C library (default is to use it if + it is available). +--with-clash-detection Use lock files to detect multiple edits of the same file. + The default is to not do clash detection. +--lockdir=DIR The directory to put clash detection files in, such as + `/var/lock/emacs'. + Defaults to `${statedir}/xemacs/lock'. +--with-system-malloc Force use of the system malloc, rather than GNU malloc. +--with-debug-malloc Use the debugging malloc package. + +You may also specify any of the `path' variables found in Makefile.in, +including --bindir, --libdir, --lispdir, --sitelispdir, --datadir, +--infodir, --mandir and so on. Note that we recommend against +explicitly setting any of these variables. See the INSTALL file for a +complete list plus the reasons we advise not changing them. + +If successful, configure leaves its status in config.status. If +unsuccessful after disturbing the status quo, it removes config.status. + +The configure script also recognizes some environment variables, each +of which is equivalent to a corresponding configure flag. A specified +configure flag always overrides the environment variable. + +envvar configure flag +----- -------------- +CC --compiler +CPP --cpp +CFLAGS --cflags +CPPFLAGS --cppflags +LDFLAGS --ldflags +LIBS --libs +LD_RUN_PATH --site-runtime-libraries + +For more details on the install process, consult the INSTALL file. diff --git a/dynodump/Makefile.in.in b/dynodump/Makefile.in.in new file mode 100644 index 0000000..b98e2a9 --- /dev/null +++ b/dynodump/Makefile.in.in @@ -0,0 +1,86 @@ +## Makefile for dynodump subdirectory in XEmacs +## Copyright (C) 1995 Board of Trustees, University of Illinois +## Copyright (C) 1996, 1997 Sun Microsystems, Inc. + +## This file is part of XEmacs. + +## XEmacs is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by the +## Free Software Foundation; either version 2, or (at your option) any +## later version. + +## XEmacs is distributed in the hope that it will be useful, but WITHOUT +## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +## for more details. + +## You should have received a copy of the GNU General Public License +## along with XEmacs; see the file COPYING. If not, write to +## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +## Boston, MA 02111-1307, USA. + +## Synched up with: Not synched with FSF. + +## For performance and consistency, no built-in rules. +.SUFFIXES: +.SUFFIXES: .c .o .i .h + +@SET_MAKE@ +SHELL = /bin/sh +RM = rm -f + +## ==================== Things "configure" will edit ==================== + +CC=@CC@ +CFLAGS=@CFLAGS@ +ARCH=@dynodump_arch@ + +srcdir=@srcdir@ + +## ========================= start of cpp stuff ========================= + +#define NO_SHORTNAMES +#define NOT_C_CODE +#include "../src/config.h" + +#ifdef USE_GNU_MAKE +vpath %.c @srcdir@ +vpath %.h @srcdir@ +#else +VPATH=@srcdir@ +#endif + +#ifdef USE_GCC +pic_arg = -fpic +#else +pic_arg = -K pic +#endif + +INCLUDES = -I${srcdir} -I${srcdir}/$(ARCH) +ALL_CFLAGS = ${CFLAGS} ${pic_arg} ${INCLUDES} +OBJS = _relocate.o dynodump.o syms.o uninit.o + +%.o : %.c + $(CC) -c $(ALL_CFLAGS) $< + +all:: dynodump.so + +dynodump.so: ${srcdir}/_dynodump.h $(OBJS) + PATH=/usr/ccs/bin:/bin:$$PATH ld -o dynodump.so -G $(OBJS) -lelf -lmapmalloc + +_relocate.o: ${srcdir}/$(ARCH)/_relocate.c + $(CC) -c $(ALL_CFLAGS) ${srcdir}/$(ARCH)/_relocate.c + +uninit.o: ${srcdir}/$(ARCH)/uninit.c + $(CC) -c $(ALL_CFLAGS) ${srcdir}/$(ARCH)/uninit.c + +.PHONY: mostlyclean clean distclean realclean extraclean +mostlyclean: + $(RM) *.o *.i core +clean: mostlyclean + $(RM) *.so *.so.1 +distclean: clean + $(RM) Makefile Makefile.in TAGS +realclean: distclean +extraclean: realclean + $(RM) *~ \#* diff --git a/dynodump/README b/dynodump/README new file mode 100644 index 0000000..f25d6f0 --- /dev/null +++ b/dynodump/README @@ -0,0 +1,101 @@ + DYNODUMP + -------- + +Dynodump, not to be confused with DinoTurd (as seen in Jurassic Park), +is a shared object that provides one function: + + int dynodump(char *new_file); + +dynodump(), called from a running program will write a new executable +in new_file a la unexec() in GNU Emacs. The difference lies in the +relocations. + +dynodump() will create an image with any relocations (which were +performed by the run-time dynamic linker) undone. This allows the new +image to be run in a different environment. There is, however, one +potentially major caveat. If a symbol reference gets updated during +the running of the calling program, its updated value will be lost. +An example (with additional blank lines for legibility): + + $ cat lib.c + char _foo[] = "hello"; + char _bar[] = "world"; + + $ cc -G -o lib.so lib.c + + $ cat prog.c + extern char _foo, _bar; + + int beenhere = 0; + char * foo = &_foo; + char * bar = &_bar; + + int + main(void) + { + (void) printf("%d: foo = %x\n", beenhere, foo); + (void) printf("%d: bar = %x, ", beenhere, bar); + + if (!beenhere) { + beenhere = 1; + bar++; + dynodump("newfile"); + } + (void) printf("%x\n", bar); + } + + $ cc -o prog prog.c -R. lib.so dynodump.so + + $ ./prog + 0: foo = ef7503cc + 0: bar = ef7503d2, ef7503d3 + + $ ./newfile + 1: foo = ef7503cc + 1: bar = ef7503d2, ef7503d2 + +Notice that in the run of newfile, bar points at "world" instead of +the perhaps expected "orld". + +Dynodump supports sparc, intel, and power pc architectures. + +Dynodump is buildable with GNU make and gcc. If it works for you +with these tools, let me know. + +unexec() +-------- + +Also supplied is an unexsol2.c which belongs in the XEmacs src +directory with the other unex*.c files. The src/s/sol2.h should be +have the following added to it: + + #ifdef UNEXEC + #undef UNEXEC + #endif + #define UNEXEC unexsol2.o + +This unexec() will attempt to dlopen() the dynodump.so to find the +dynodump function. The default is "../dynodump/dynodump.so" which +should be appropriate for the typical XEmacs build (unless you used +configure to set up separate build and source trees). You may change +it by setting the DYNODUMP environment variable to the full path of +the dynodump shared object. + +Other notes: + +If you're using the 4.0 C compiler from Sun, you should arrange to +shut off the incremental linker. This is done with the -xildoff +option to the compiler. The common.mk and testsuite/Makefile files +have commentary and ready made lines for uncommenting for this +purpose. + +If you're interested in playing with the UltraSPARC specific options +to the aforementioned compiler, then the same makefiles have some +commentary and flags settings to point you in that direction. + +Questions: + +dynodump() was developed by Rod.Evans@Eng.Sun.COM and +Georg.Nikodym@Canada.Sun.COM. If you have questions, feel free to ask +them but be aware that Rod, "don't know jack about emacs." + diff --git a/dynodump/_dynodump.h b/dynodump/_dynodump.h new file mode 100644 index 0000000..847c4eb --- /dev/null +++ b/dynodump/_dynodump.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#pragma ident "@(#) $Id: _dynodump.h,v 1.3 1997/05/29 04:22:29 steve Exp $ - SMI" + +#ifndef _DYNODUMP_DOT_H +#define _DYNODUMP_DOT_H + +#include +#include "machdep.h" + +/* General rounding macro */ +#define S_ROUND(x, a) (((int)(x) + (((int)(a) ? (int)(a) : 1) - 1)) & \ + ~(((int)(a) ? (int)(a) : 1) - 1)) + +/* + * Define a cache structure that is used to retain all elf section information. + */ +typedef struct cache { + Elf_Scn *c_scn; + Shdr *c_shdr; + Elf_Data *c_data; + char *c_name; +} Cache; + +/* + * Define any local prototypes. + */ +extern void update_dynamic(Cache *); +extern void update_reloc(Cache *, Cache *, Cache *, Cache *, Half shnum); +extern void update_sym(Cache *, Cache *, Addr); +extern void dynodump_uninit(void); + +#endif diff --git a/dynodump/dynodump.c b/dynodump/dynodump.c new file mode 100644 index 0000000..ff4477d --- /dev/null +++ b/dynodump/dynodump.c @@ -0,0 +1,560 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * dynodump(3x) dumps a running executable into a specified ELF file. The new + * file consists of the memory contents of the original file together with any + * heap. This heap is assigned to a new `.heap' section within the new file. + * + * The new file may be re-executed, and will contain any data modifications + * made to the original image up until the time dynodump(3x) was called. + * + * The original image may have undergone relocations (performed by ld.so.1) + * prior to control being transferred to the image. These relocations will + * reside as the data copied from the image. To prevent subsequent executions + * of the new image from undergoing the same relocations, any relocation entries + * (besides copy or jump slot relocations) are nulled out. Note that copy + * relocations such as required for __iob must be reinitialized each time the + * process starts, so it is not sufficient to simply null out the .dynamic + * sections relocation information. The effect of this is that if the new + * image was bound to definitions in any shared object dependencies, then these + * dependencies *must* reside in the same location as when dynodump(3x) was + * called. Any changes to the shared object dependencies of the new image, or + * uses of such things as LD_PRELOAD, may result in the bindings encoded in the + * image becoming invalid. + * + * The following flags modify the data of the image created: + * + * RTLD_SAVREL save the original relocation data. Under this option any + * relocation offset is reset to contain the same data as was + * found in the images original file. + * + * This option allows relocation information to be retained in the + * new image so that it may be re-executed when the new image is + * run. This allows far greater flexibility as the new image can + * now take advantage of new shared objects. + * + * Note. under this mechanism, any data item that undergoes + * relocation and is then further modified during the execution of + * the image before dynodump(3x) is called will lose the + * modification that occured during the applications execution. + * + * N.B. The above commentary is not quite correct in the flags have been hardwired + * to RTLD_SAVREL. + */ +#pragma ident "@(#) $Id: dynodump.c,v 1.6 1998/03/31 20:10:55 steve Exp $ - SMI" + +#define __EXTENSIONS__ 1 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "machdep.h" +#include "_dynodump.h" + +/* + * Generic elf error message generator + */ +static int +elferr(const char * str) +{ + fprintf(stderr, "%s: %s\n", str, elf_errmsg(elf_errno())); + return (1); +} + +int dynodump (const char * file); +int +dynodump(const char * file) +{ + Elf *ielf, *oelf; + Ehdr *iehdr, *oehdr; + Phdr *iphdr, *ophdr, *data_phdr = 0; + Cache *icache, *ocache, *_icache, *_ocache; + Cache *data_cache = 0, *shstr_cache = 0; + Cache *heap_cache = 0; + Word heap_sz = 0; + Elf_Scn *scn; + Shdr *shdr; + Elf_Data *data, rundata; + Half ndx, _ndx; + int fd, _fd; + Addr edata, _addr; + char *istrs, *ostrs, *_ostrs, proc[16]; + const char heap[] = ".heap"; + prstatus_t pstat; + + /* make a call to the processor specific un-init stuff */ + dynodump_uninit(); + + /* + * Obtain a file descriptor for this process, + * for the executable and get a prstatus_t + * structure. + */ + sprintf(proc, "/proc/%ld", getpid()); + if (((_fd = open(proc, O_RDONLY, 0)) == -1) || + ((fd = ioctl(_fd, PIOCOPENM, (void *)0)) == -1) || + (ioctl(_fd, PIOCSTATUS, &pstat) == -1)) { + fprintf(stderr, "/proc: initialization error: %s\n", + strerror(errno)); + close(_fd); + return (1); + } + close(_fd); + + /* + * Initialize with the ELF library and make sure this is an executable + * ELF file we're dealing with. + */ + elf_version(EV_CURRENT); + if ((ielf = elf_begin(fd, ELF_C_READ, NULL)) == NULL) { + close(fd); + return (elferr("elf_begin")); + } + close(fd); + + if ((elf_kind(ielf) != ELF_K_ELF) || + ((iehdr = elf_getehdr(ielf)) == NULL) || + (iehdr->e_type != ET_EXEC)) { + fprintf(stderr, "image is not an ELF executable\n"); + elf_end(ielf); + return (1); + } + /* + * Elf_elf_header(iehdr); + */ + + /* + * Create the new output file. + */ + if ((fd = open(file, O_RDWR | O_CREAT | O_TRUNC, 0777)) == -1) { + fprintf(stderr, "%s: open failed: %s\n", file, + strerror(errno)); + elf_end(ielf); + return (1); + } + if ((oelf = elf_begin(fd, ELF_C_WRITE, NULL)) == NULL) { + elf_end(ielf); + close(fd); + return (elferr("elf_begin")); + } + + /* + * Obtain the input program headers. Remember the data segments + * program header entry as this will be updated later to reflect the + * new .heap sections size. + */ + if ((iphdr = elf_getphdr(ielf)) == NULL) + return (elferr("elf_getphdr")); + + for (ndx = 0, ophdr = iphdr; ndx != iehdr->e_phnum; ndx++, ophdr++) { + /* + * Save the program header that contains the NOBITS section, or + * the last loadable program header if no NOBITS exists. + * A NOBITS section translates to a memory size requirement that + * is greater than the file data it is mapped from. + */ + if (ophdr->p_type == PT_LOAD) { + if (ophdr->p_filesz != ophdr->p_memsz) + data_phdr = ophdr; + else if (data_phdr) { + if (data_phdr->p_vaddr < ophdr->p_vaddr) + data_phdr = ophdr; + } else + data_phdr = ophdr; + } + } + if (data_phdr == 0) { + fprintf(stderr, "no data segment found!\n"); + return (0); + } + + /* + * Obtain the input files section header string table. + */ + if ((scn = elf_getscn(ielf, iehdr->e_shstrndx)) == NULL) + return (elferr("elf_getscn")); + if ((data = elf_getdata(scn, NULL)) == NULL) + return (elferr("elf_getdata")); + istrs = (char *) data->d_buf; + + /* + * Construct a cache to maintain the input files section information. + */ + if ((icache = (Cache *) malloc(iehdr->e_shnum * sizeof (Cache))) == 0) { + fprintf(stderr, "malloc failed: %s\n", strerror(errno)); + return (1); + } + _icache = icache; + _icache++; + + /* + * Traverse each section from the input file. + */ + for (ndx = 1, scn = 0; + (_icache->c_scn = elf_nextscn(ielf, scn)); + ndx++, scn = _icache->c_scn, _icache++) { + + if ((_icache->c_shdr = shdr = elf_getshdr(_icache->c_scn)) == NULL) + return (elferr("elf_getshdr")); + + if ((_icache->c_data = elf_getdata(_icache->c_scn, NULL)) == NULL) + return (elferr("elf_getdata")); + + _icache->c_name = istrs + (size_t)(shdr->sh_name); + + /* + * For each section that has a virtual address reestablish the + * data buffer to point to the memory image. + * + * if (shdr->sh_addr) + * _icache->c_data->d_buf = (void *)shdr->sh_addr; + */ + + /* + * Remember the last section of the data segment, the new .heap + * section will be added after this section. + * If we already have one, then set data_cache to the previous + * section and set heap_cache to this one. + */ + if ((shdr->sh_addr + shdr->sh_size) + == (data_phdr->p_vaddr + data_phdr->p_memsz)) { + if (strcmp(_icache->c_name, heap) == 0) { +#ifdef DEBUG + printf("Found a previous .heap section\n"); +#endif + data_cache = _icache - 1; + heap_cache = _icache; + heap_sz = shdr->sh_size; + } else { + data_cache = _icache; + } + } + + /* + * Remember the section header string table as this will be + * rewritten with the new .heap name. + */ + if ((shdr->sh_type == SHT_STRTAB) && + ((strcmp(_icache->c_name, ".shstrtab")) == 0)) + shstr_cache = _icache; + } + if (data_cache == 0) { + fprintf(stderr, "final data section not found!\n"); + return (0); + } + + /* + * Determine the new .heap section to create. + */ + rundata.d_buf = (void *)(data_cache->c_shdr->sh_addr + + data_cache->c_shdr->sh_size); + rundata.d_size = (int)sbrk(0) - (int)rundata.d_buf; + rundata.d_type = ELF_T_BYTE; + rundata.d_off = 0; + rundata.d_align = 1; + rundata.d_version = EV_CURRENT; + + /* + * From the new data buffer determine the new value for _end and _edata. + * This will also be used to update the data segment program header. + * + * If we had a .heap section, then its size is part of the program + * headers notion of data size. Because we're only going to output one + * heap section (ignoring the one in the running binary) we need to + * subract the size of that which we're ignoring. + */ + if (heap_cache) { + edata = S_ROUND((data_phdr->p_vaddr + + data_phdr->p_memsz + - heap_sz), rundata.d_align) + rundata.d_size; + } else { + edata = S_ROUND((data_phdr->p_vaddr + data_phdr->p_memsz), + rundata.d_align) + rundata.d_size; + } + + /* + * We're now ready to construct the new elf image. + * + * Obtain a new elf header and initialize it with any basic information + * that isn't calculated as part of elf_update(). Bump the section + * header string table index to account for the .heap section we'll be + * adding. + */ + if ((oehdr = elf_newehdr(oelf)) == NULL) + return (elferr("elf_newehdr")); + + oehdr->e_entry = iehdr->e_entry; + oehdr->e_machine = iehdr->e_machine; + oehdr->e_type = iehdr->e_type; + oehdr->e_flags = iehdr->e_flags; + /* + * If we already have a heap section, we don't need any adjustment + */ + if (heap_cache) + oehdr->e_shstrndx = iehdr->e_shstrndx; + else + oehdr->e_shstrndx = iehdr->e_shstrndx + 1; + +#ifdef DEBUG + printf("iehdr->e_flags = %x\n", iehdr->e_flags); + printf("iehdr->e_entry = %x\n", iehdr->e_entry); + printf("iehdr->e_shstrndx= %d\n", iehdr->e_shstrndx); + printf("iehdr->e_machine = %d\n", iehdr->e_machine); + printf("iehdr->e_type = 0x%x\n", iehdr->e_type); + printf("oehdr->e_machine = %d\n", oehdr->e_machine); + printf("oehdr->e_type = 0x%x\n", oehdr->e_type); +#endif + + /* + * Obtain a new set of program headers. Initialize these with the same + * information as the input program headers and update the data segment + * to reflect the new .heap section. + */ + if ((ophdr = elf_newphdr(oelf, iehdr->e_phnum)) == NULL) + return (elferr("elf_newphdr")); + + for (ndx = 0; ndx != iehdr->e_phnum; ndx++, iphdr++, ophdr++) { + *ophdr = *iphdr; + if (data_phdr == iphdr) + ophdr->p_filesz = ophdr->p_memsz = edata - ophdr->p_vaddr; + } + + /* + * Obtain a new set of sections. + */ + _icache = icache; + _icache++; + for (ndx = 1; ndx != iehdr->e_shnum; ndx++, _icache++) { + /* + * Skip the heap section of the running executable + */ + if (_icache == heap_cache) + continue; + /* + * Create a matching section header in the output file. + */ + if ((scn = elf_newscn(oelf)) == NULL) + return (elferr("elf_newscn")); + if ((shdr = elf_getshdr(scn)) == NULL) + return (elferr("elf_getshdr")); + *shdr = *_icache->c_shdr; + + /* + * Create a matching data buffer for this section. + */ + if ((data = elf_newdata(scn)) == NULL) + return (elferr("elf_newdata")); + *data = *_icache->c_data; + + /* + * For each section that has a virtual address reestablish the + * data buffer to point to the memory image. Note, we skip + * the plt section. + */ + if ((shdr->sh_addr) && (!((shdr->sh_type == SHT_PROGBITS) + && (strcmp(_icache->c_name, ".plt") == 0)))) + data->d_buf = (void *)shdr->sh_addr; + + /* + * Update any NOBITS section to indicate that it now contains + * data. + */ + if (shdr->sh_type == SHT_NOBITS) + shdr->sh_type = SHT_PROGBITS; + + /* + * Add the new .heap section after the last section of the + * present data segment. If we had a heap section, then + * this is the section preceding it. + */ + if (data_cache == _icache) { + if ((scn = elf_newscn(oelf)) == NULL) + return (elferr("elf_newscn")); + if ((shdr = elf_getshdr(scn)) == NULL) + return (elferr("elf_getshdr")); + shdr->sh_type = SHT_PROGBITS; + shdr->sh_flags = SHF_ALLOC | SHF_WRITE; + + if ((data = elf_newdata(scn)) == NULL) + return (elferr("elf_newdata")); + *data = rundata; + } + + /* + * Update the section header string table size to reflect the + * new section name (only if we didn't already have a heap). + */ + if (!heap_cache) { + if (shstr_cache && (shstr_cache == _icache)) { + data->d_size += sizeof (heap); + } + } + } + + /* + * Write out the new image, and obtain a new elf descriptor that will + * allow us to write to the new image. + */ + if (elf_update(oelf, ELF_C_WRITE) == -1) + return (elferr("elf_update")); + elf_end(oelf); + if ((oelf = elf_begin(fd, ELF_C_RDWR, NULL)) == NULL) + return (elferr("elf_begin")); + if ((oehdr = elf_getehdr(oelf)) == NULL) + return (elferr("elf_getehdr")); + + /* + * Obtain the output files section header string table. + */ + if ((scn = elf_getscn(oelf, oehdr->e_shstrndx)) == NULL) + return (elferr("elf_getscn")); + if ((data = elf_getdata(scn, NULL)) == NULL) + return (elferr("elf_getdata")); + ostrs = _ostrs = (char *) data->d_buf; + *_ostrs++ = '\0'; + + /* + * Construct a cache to maintain the output files section information. + */ + if ((ocache = (Cache *)malloc(oehdr->e_shnum * sizeof (Cache))) == 0) { + fprintf(stderr, "malloc failed: %s\n", strerror(errno)); + return (1); + } + _ocache = ocache; + _ocache++; + _icache = icache; + _icache++; + + /* + * Traverse each section from the input file rebuilding the section + * header string table as we go. + */ + _ndx = _addr = 0; + for (ndx = 1, scn = 0; + (_ocache->c_scn = elf_nextscn(oelf, scn)); + ndx++, scn = _ocache->c_scn, _ocache++, _icache++) { + + const char *strs; + + if (_icache == heap_cache) { +#ifdef DEBUG + printf("ignoring .heap section in input\n"); +#endif + _icache++; + } + + if ((_ocache->c_shdr = shdr = + elf_getshdr(_ocache->c_scn)) == NULL) + return (elferr("elf_getshdr")); + if ((_ocache->c_data = + elf_getdata(_ocache->c_scn, NULL)) == NULL) + return (elferr("elf_getdata")); + + /* + * If were inserting the new .heap section, insert the new + * section name and initialize its virtual address. + */ + if (_addr) { + strs = heap; + shdr->sh_addr = S_ROUND(_addr, shdr->sh_addralign); + _addr = 0; + } else { + strs = istrs + (size_t)(_icache->c_shdr->sh_name); + } + + strcpy(_ostrs, strs); + shdr->sh_name = _ostrs - ostrs; + _ocache->c_name = _ostrs; + _ostrs += strlen(strs) + 1; + + /* + * If we've inserted a new section any later section may need + * their sh_link fields updated. + * If we already had a heap section, then this is not required. + */ + if (!heap_cache) { + if (_ndx) { + if (_ocache->c_shdr->sh_link >= _ndx) + _ocache->c_shdr->sh_link++; + } + } + + /* + * If this is the last section of the original data segment + * determine sufficient information to initialize the new .heap + * section which will be obtained next. + */ + if (data_cache == _icache) { + _ndx = ndx + 1; + _addr = shdr->sh_addr + shdr->sh_size; + _icache--; + data_cache = 0; + } + } + + /* + * Now that we have a complete description of the new image update any + * sections that are required. + * + * o update the value of _edata and _end. + * + * o reset any relocation entries if necessary. + */ + _ocache = &ocache[1]; + _icache = &icache[1]; + for (ndx = 1; ndx < oehdr->e_shnum; ndx++, _ocache++, _icache++) { + if ((_ocache->c_shdr->sh_type == SHT_SYMTAB) || + (_ocache->c_shdr->sh_type == SHT_DYNSYM)) + update_sym(ocache, _ocache, edata); + + if (_ocache->c_shdr->sh_type == M_REL_SHT_TYPE) + update_reloc(ocache, _ocache, icache, _icache, oehdr->e_shnum); + } + + if (elf_update(oelf, ELF_C_WRITE) == -1) + return (elferr("elf_update")); + + elf_end(oelf); + elf_end(ielf); + return (0); +} diff --git a/dynodump/i386/_relocate.c b/dynodump/i386/_relocate.c new file mode 100644 index 0000000..f97dd1b --- /dev/null +++ b/dynodump/i386/_relocate.c @@ -0,0 +1,118 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#pragma ident "@(#) $Id: _relocate.c,v 1.3 1997/05/29 04:23:02 steve Exp $ - SMI" + +/* LINTLIBRARY */ + +#include +#include +#include +#include "_dynodump.h" + +void +update_reloc(Cache *ocache, Cache *_ocache, + Cache *icache, Cache *_icache, + Half shnum) +{ + Shdr *shdr; + Rel *rels; + int reln, cnt; + Cache *orcache, *ircache; + + /* + * Set up to readh the output relocation table. + */ + shdr = _ocache->c_shdr; + rels = (Rel *) _ocache->c_data->d_buf; + reln = shdr->sh_size / shdr->sh_entsize; + + /* + * Determine the section that is being relocated. + */ + orcache = &ocache[shdr->sh_info]; + shdr = _icache->c_shdr; + ircache = &icache[shdr->sh_info]; + + /* + * Determine the section that is being relocated. Note that for this + * stupid architecture the .rel.plt actually contains offsets into the + * .got. + */ + if (strcmp(_ocache->c_name, ".rel.plt")) { + orcache = &ocache[shdr->sh_info]; + shdr = _icache->c_shdr; + ircache = &icache[shdr->sh_info]; + } else { + Half ndx; + Cache * __ocache = ocache; + + for (__ocache++, ndx = 1; ndx != shnum; ndx++, __ocache++) { + if (strcmp(__ocache->c_name, ".got") == 0) { + orcache = __ocache; + ircache = &icache[ndx]; + break; + } + } + } + + /* + * Loop through the relocation table. + */ + for (cnt = 0; cnt < reln; cnt++, rels++) { + unsigned char *iaddr, *oaddr; + Addr off; + unsigned char type = ELF_R_TYPE(rels->r_info); + + /* + * Ignore some relocations as these can be safely carried out + * twice (they simply override any existing data). In fact, + * some relocations like __iob's copy relocation must be carried + * out each time the process restarts, otherwise stdio blows up. + */ + if ((type == R_386_COPY) || (type == R_386_NONE)) + continue; + + /* + * If we are required to restore the relocation location + * to its value prior to relocation, then read the + * location's original contents from the input image and + * copy it to the output image. + */ + off = rels->r_offset - ircache->c_shdr->sh_addr; + iaddr = (unsigned char *) ircache->c_data->d_buf + off; + oaddr = (unsigned char *) orcache->c_data->d_buf + off; + *(unsigned long *) oaddr = *(unsigned long *) iaddr; + } +} diff --git a/dynodump/i386/machdep.h b/dynodump/i386/machdep.h new file mode 100644 index 0000000..4dc66fe --- /dev/null +++ b/dynodump/i386/machdep.h @@ -0,0 +1,93 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#pragma ident "@(#) $Id: machdep.h,v 1.3 1997/05/29 04:23:02 steve Exp $ - SMI" + +/* + * Global include file for all sgs Intel machine dependent macros, constants + * and declarations. + */ +#ifndef MACHDEP_DOT_H +#define MACHDEP_DOT_H + +#include +#include + +/* + * Make machine class dependent data types transparent to the common code + */ +#define Word Elf32_Word +#define Sword Elf32_Sword +#define Half Elf32_Half +#define Addr Elf32_Addr +#define Off Elf32_Off +#define Byte unsigned char + +#define Ehdr Elf32_Ehdr +#define Shdr Elf32_Shdr +#define Sym Elf32_Sym +#define Rel Elf32_Rel +#define Phdr Elf32_Phdr +#define Dyn Elf32_Dyn +#define Boot Elf32_Boot +#define Verdef Elf32_Verdef +#define Verdaux Elf32_Verdaux +#define Verneed Elf32_Verneed +#define Vernaux Elf32_Vernaux +#define Versym Elf32_Versym + +/* + * Make machine class dependent functions transparent to the common code + */ +#define ELF_R_TYPE ELF32_R_TYPE +#define ELF_R_INFO ELF32_R_INFO +#define ELF_R_SYM ELF32_R_SYM +#define ELF_ST_BIND ELF32_ST_BIND +#define ELF_ST_TYPE ELF32_ST_TYPE +#define ELF_ST_INFO ELF32_ST_INFO +#define elf_fsize elf32_fsize +#define elf_getehdr elf32_getehdr +#define elf_getphdr elf32_getphdr +#define elf_newehdr elf32_newehdr +#define elf_newphdr elf32_newphdr +#define elf_getshdr elf32_getshdr +#define elf_xlatetof elf32_xlatetof +#define elf_xlatetom elf32_xlatetom + +/* + * Make relocation types transparent to the common code + */ +#define M_REL_SHT_TYPE SHT_REL /* section header type */ + +#endif diff --git a/dynodump/i386/uninit.c b/dynodump/i386/uninit.c new file mode 100644 index 0000000..ad80ba3 --- /dev/null +++ b/dynodump/i386/uninit.c @@ -0,0 +1,44 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * This is where you put processor specific un-initialization things + * to deal with "initialization idempotency issues". + */ + +void +dynodump_uninit(void) +{ + return; +} diff --git a/dynodump/ppc/_relocate.c b/dynodump/ppc/_relocate.c new file mode 100644 index 0000000..754b417 --- /dev/null +++ b/dynodump/ppc/_relocate.c @@ -0,0 +1,269 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#pragma ident "@(#) $Id: _relocate.c,v 1.4 1998/03/31 20:10:55 steve Exp $ - SMI" + +/* LINTLIBRARY */ + +#include +#include +#include "_dynodump.h" + + +/* + * NOTE: These macros will work reliably only on 32-bit 2's + * complement machines. The type of P in all cases should + * by unsigned char * + */ +#if defined(_BIG_ENDIAN) + +#define GET4(P) ((long)(((unsigned long)(P)[0] << 24) | \ + ((unsigned long)(P)[1] << 16) | \ + ((unsigned long)(P)[2] << 8) | \ + (unsigned long)(P)[3])) +#define PUT4(V, P) { \ + (P)[0] = (unsigned char)((V) >> 24); \ + (P)[1] = (unsigned char)((V) >> 16); \ + (P)[2] = (unsigned char)((V) >> 8); \ + (P)[3] = (unsigned char)(V); \ + } +#define GEThalf(P) ((long) (((unsigned long) (P)[0] << 8) | \ + ((unsigned long) (P)[1]))) +#define GETword(P) GET4(P) +#define PUThalf(V, P) { \ + (P)[0] = ((V) >> 8); \ + (P)[1] = ((V)); \ + } +#define PUTword(V, P) PUT4(V, P) + +#elif defined(_LITTLE_ENDIAN) + +#define GET4(P) ((long)(((unsigned long)(P)[0]) | \ + ((unsigned long)(P)[1] << 8) | \ + ((unsigned long)(P)[2] << 16) | \ + ((unsigned long)(P)[3]) << 24)) +#define PUT4(V, P) { \ + (P)[0] = (unsigned char)(V); \ + (P)[1] = (unsigned char)((V) >> 8); \ + (P)[2] = (unsigned char)((V) >> 16); \ + (P)[3] = (unsigned char)((V) >> 24); \ + } +#define GEThalf(P) ((long) (((unsigned long) (P)[0]) | \ + ((unsigned long) (P)[1] << 8))) +#define GETword(P) GET4(P) +#define PUThalf(V, P) { \ + (P)[0] = (V); \ + (P)[1] = ((V) >> 8); \ + } +#define PUTword(V, P) PUT4(V, P) + +#endif /* defined(_LITTLE_ENDIAN) */ + +/* + * NAME VALUE FIELD CALCULATION + * + * R_PPC_NONE 0 none none + * R_PPC_ADDR32 1 word32 S + A + * R_PPC_ADDR24 2 low24 (S + A) >> 2 + * R_PPC_ADDR16 3 half16 S + A + * R_PPC_ADDR16_LO 4 half16 #lo(S + A) + * R_PPC_ADDR16_HI 5 half16 #hi(S + A) + * R_PPC_ADDR16_HA 6 half16 #ha(S + A) + * R_PPC_ADDR14 7 low14 (S + A) >> 2 + * R_PPC_ADDR14_BRTAKEN 8 low14 (S + A) >> 2 + * R_PPC_ADDR14_BRNTAKEN 9 low14 (S + A) >> 2 + * R_PPC_REL24 10 low24 (S + A - P) >> 2 + * R_PPC_REL14 11 low14 (S + A - P) >> 2 + * R_PPC_REL14_BRTAKEN 12 low14 (S + A - P) >> 2 + * R_PPC_REL14_BRNTAKEN 13 low14 (S + A - P) >> 2 + * R_PPC_GOT16 14 half16 G + A + * R_PPC_GOT16_LO 15 half16 #lo(G + A) + * R_PPC_GOT16_HI 16 half16 #hi(G + A) + * R_PPC_GOT16_HA 17 half16 #ha(G + A) + * R_PPC_PLT24 18 low24 (L + A - P) >> 2 + * R_PPC_COPY 19 none none + * R_PPC_GLOB_DAT 20 word32 S + A + * R_PPC_JMP_SLOT 21 none see below + * R_PPC_RELATIVE 22 word32 B + A + * R_PPC_LOCAL24PC 23 low24 see below + * R_PPC_UADDR32 24 word32 S + A + * R_PPC_UADDR16 25 half16 S + A + * + * This is Figure 4-3: Relocation Types from the Draft Copy of + * the ABI, Printed on 7/25/94. + * + * The field column specifies how much of the data + * at the reference address is to be used. The data are assumed to be + * right-justified with the least significant bit at the right. + * In the case of plt24 addresses, the reference address is + * assumed to be that of a 6-word PLT entry. The address is the right- + * most 24 bits of the third word. + */ +static void +move_reloc(unsigned char *iaddr, unsigned char *oaddr, unsigned char type) +{ + switch(type) { + case R_PPC_NONE: + break; + + case R_PPC_ADDR32: + case R_PPC_UADDR32: + PUTword(GETword(iaddr), oaddr); + break; + + case R_PPC_ADDR24: + case R_PPC_REL24: + case R_PPC_PLT24: + case R_PPC_LOCAL24PC: + /* XXX - big assumption here that the original contents were masked + * properly. If this assumption proves correct, then these 24bit + * cases can be folded into the above 32bit cases. + */ + PUTword(GETword(iaddr), oaddr); + break; + + case R_PPC_ADDR16: + case R_PPC_UADDR16: + case R_PPC_GOT16: + PUThalf(GEThalf(iaddr), oaddr); + break; + + case R_PPC_ADDR16_LO: + case R_PPC_GOT16_LO: + /* XXX - more assumptions which if proved correct, we can + * do some folding with above cases + */ + PUThalf(GEThalf(iaddr), oaddr); + break; + + case R_PPC_ADDR16_HI: + case R_PPC_GOT16_HI: + /* XXX - more assumptions which if proved correct, we can + * do some folding with above cases + */ + PUThalf(GEThalf(iaddr), oaddr); + break; + + case R_PPC_ADDR16_HA: + case R_PPC_GOT16_HA: + /* XXX - more assumptions which if proved correct, we can + * do some folding with above cases + */ + PUThalf(GEThalf(iaddr), oaddr); + break; + + case R_PPC_ADDR14: + case R_PPC_ADDR14_BRTAKEN: + case R_PPC_ADDR14_BRNTAKEN: + case R_PPC_REL14: + case R_PPC_REL14_BRTAKEN: + case R_PPC_REL14_BRNTAKEN: + /* XXX - big assumption here that the original contents were masked + * properly. If this assumption proves correct, then these 14bit + * cases can be folded into the above 32bit cases. + */ + PUTword(GETword(iaddr), oaddr); + break; + + case R_PPC_COPY: + break; + + case R_PPC_GLOB_DAT: + case R_PPC_RELATIVE: + PUTword(GETword(iaddr), oaddr); + break; + + case R_PPC_JMP_SLOT: + break; + + default: + break; + } +} + +void +update_reloc(Cache *ocache, Cache *_ocache, Cache *icache, Cache *_icache, Half shnum) +{ + Shdr *shdr; + Rel *rels; + int reln, cnt; + Cache *orcache, * ircache; + + /* + * Set up to read the output relocation table. + */ + shdr = _ocache->c_shdr; + rels = (Rel *)_ocache->c_data->d_buf; + reln = shdr->sh_size / shdr->sh_entsize; + + /* + * Determine the section that is being relocated. + */ + orcache = &ocache[shdr->sh_info]; + shdr = _icache->c_shdr; + ircache = &icache[shdr->sh_info]; + + /* + * Loop through the relocation table. + */ + for (cnt = 0; cnt < reln; cnt++, rels++) { + unsigned char type = ELF_R_TYPE(rels->r_info); + + /* + * Ignore some relocations as these can safely be carried out + * twice (they simply override any existing data). In fact, + * some relocations like __iob's copy relocation must be carried + * out each time the process restarts otherwise stdio blows up. + */ + if ((type == R_PPC_COPY) || (type == R_PPC_JMP_SLOT) || + (type == R_PPC_NONE)) + continue; + + { + unsigned char *iaddr, *oaddr; + Addr off; + + /* + * If we are required to restore the relocation location + * to its value prior to relocation, then read the + * locations original contents from the input image and + * copy it to the output image. + */ + off = rels->r_offset - ircache->c_shdr->sh_addr; + iaddr = (unsigned char *)ircache->c_data->d_buf + off; + oaddr = (unsigned char *)orcache->c_data->d_buf + off; + move_reloc(iaddr, oaddr, type); + } + } +} diff --git a/dynodump/ppc/machdep.h b/dynodump/ppc/machdep.h new file mode 100644 index 0000000..a649a9c --- /dev/null +++ b/dynodump/ppc/machdep.h @@ -0,0 +1,88 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#pragma ident "@(#) $Id: machdep.h,v 1.3 1997/05/29 04:23:20 steve Exp $ - SMI" + +/* + * Global include file for all sgs PowerPC machine dependent macros, constants + * and declarations. + */ +#ifndef MACHDEP_DOT_H +#define MACHDEP_DOT_H + +#include +#include + +/* + * Make machine class dependent data types transparent to the common code + */ +#define Word Elf32_Word +#define Sword Elf32_Sword +#define Half Elf32_Half +#define Addr Elf32_Addr +#define Off Elf32_Off +#define Byte unsigned char + +#define Ehdr Elf32_Ehdr +#define Shdr Elf32_Shdr +#define Sym Elf32_Sym +#define Rel Elf32_Rela +#define Phdr Elf32_Phdr +#define Dyn Elf32_Dyn +#define Boot Elf32_Boot +#define Verdef Elf32_Verdef +#define Verdaux Elf32_Verdaux +#define Verneed Elf32_Verneed +#define Vernaux Elf32_Vernaux +#define Versym Elf32_Versym + +/* + * Make machine class dependent functions transparent to the common code + */ +#define ELF_R_TYPE ELF32_R_TYPE +#define ELF_R_INFO ELF32_R_INFO +#define ELF_R_SYM ELF32_R_SYM +#define ELF_ST_BIND ELF32_ST_BIND +#define ELF_ST_TYPE ELF32_ST_TYPE +#define ELF_ST_INFO ELF32_ST_INFO +#define elf_fsize elf32_fsize +#define elf_getehdr elf32_getehdr +#define elf_getphdr elf32_getphdr +#define elf_newehdr elf32_newehdr +#define elf_newphdr elf32_newphdr +#define elf_getshdr elf32_getshdr + +#define M_REL_SHT_TYPE SHT_RELA /* section header type */ + +#endif diff --git a/dynodump/ppc/uninit.c b/dynodump/ppc/uninit.c new file mode 100644 index 0000000..0119d48 --- /dev/null +++ b/dynodump/ppc/uninit.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * This is where you put processor specific un-initialization things + * to deal with "initialization idempotency issues". + */ + +extern void __delete_all_module_tags(void); +extern void __exithandle(void); + +void +dynodump_uninit(void) +{ + /* There are 2 possible ways to do this. It is not clear which way + will be blessed by the Sun Gods. Both appear to work. */ + + /* _exithandle has recently been blessed. */ + + /* __delete_all_module_tags(); */ + _exithandle(); + + return; +} diff --git a/dynodump/sparc/_relocate.c b/dynodump/sparc/_relocate.c new file mode 100644 index 0000000..14466f0 --- /dev/null +++ b/dynodump/sparc/_relocate.c @@ -0,0 +1,294 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * Update the value of the `_edata' and `_end' symbols. + */ +#pragma ident "@(#) $Id: _relocate.c,v 1.4 1998/03/31 20:10:55 steve Exp $ - SMI" + +#include +#include +#include "machdep.h" +#include "_dynodump.h" + + +#define GETbyte(P) ((long)((unsigned long)(P)[0])) +#define GEThalf(P) ((long)(((unsigned long)(P)[0] << 8) | \ + ((unsigned long)(P)[1]))) +#define GETword(P) ((long)(((unsigned long)(P)[0] << 24) | \ + ((unsigned long)(P)[1] << 16) | \ + ((unsigned long)(P)[2] << 8) | \ + (unsigned long)(P)[3])) +#define GETdisp30(P) (GETword(P) & 0x3fffffff) +#define GETdisp22(P) (GETword(P) & 0x3fffff) +#define GETdisp16(P) (((GETword(P) & 0x300000) >> 6) | \ + (GETword(P) & 0x3fff)) +#define GETdisp19(P) (GETword(P) & 0x7ffff) +#define GETimm22(P) (GETword(P) & 0x3fffff) +#define GETimm5(P) (GEThalf((P)+2) & 0x1f) +#define GETimm6(P) (GEThalf((P)+2) & 0x2f) +#define GETimm7(P) (GEThalf((P)+2) & 0x3f) +#define GETsimm13(P) (GEThalf((P)+2) & 0x1fff) +#define GETsimm10(P) (GEThalf((P)+2) & 0x3ff) +#define GETsimm11(P) (GEThalf((P)+2) & 0x7ff) +#define GETplt22(P) (GETword((P)+8) & 0x3fffff) + +#define PUTbyte(V, P) (P)[0] = (V) +#define PUThalf(V, P) (P)[0] = ((V) >> 8); \ + (P)[1] = ((V)) +#define PUTword(V, P) (P)[0] = (unsigned char)((V) >> 24); \ + (P)[1] = (unsigned char)((V) >> 16); \ + (P)[2] = (unsigned char)((V) >> 8); \ + (P)[3] = (unsigned char)(V) +#define PUTdisp30(V, P) { \ + unsigned long int temp; \ + temp = GETword(P) & ~0x3fffffff; \ + temp |= ((V) & 0x3fffffff); \ + PUTword(temp, P); \ + } +#define PUTdisp22(V, P) { \ + unsigned long int temp; \ + temp = GETword(P) & ~0x3fffff; \ + temp |= ((V) & 0x3fffff); \ + PUTword(temp, P); \ + } +#define PUTimm22(V, P) { \ + unsigned long int temp; \ + temp = GETword(P) & ~0x3fffff; \ + temp |= ((V) & 0x3fffff); \ + PUTword(temp, P); \ + } +#define PUTimm5(V, P) { \ + unsigned long int temp; \ + temp = GEThalf(P+2) & ~0x1f; \ + temp |= ((V) & 0x1f); \ + PUThalf(temp, (P+2)); \ + } +#define PUTimm6(V, P) { \ + unsigned long int temp; \ + temp = GEThalf(P+2) & ~0x2f; \ + temp |= ((V) & 0x2f); \ + PUThalf(temp, (P+2)); \ + } +#define PUTimm7(V, P) { \ + unsigned long int temp; \ + temp = GEThalf(P+2) & ~0x3f; \ + temp |= ((V) & 0x3f); \ + PUThalf(temp, (P+2)); \ + } +#define PUTsimm13(V, P) { \ + unsigned long int temp; \ + temp = GEThalf(P+2) & ~0x1fff; \ + temp |= ((V) & 0x1fff); \ + PUThalf(temp, (P+2)); \ + } +#define PUTplt22(V, P) { \ + unsigned long int temp; \ + temp = GETword((P)+8) & ~0x3fffff; \ + temp |= ((V) & 0x3fffff); \ + PUTword(temp, ((P)+8)); \ + } +#define PUTsimm10(V, P) { \ + unsigned long int temp; \ + temp = GEThalf(P+2) & ~0x3ff; \ + temp |= ((V) & 0x3ff); \ + PUThalf(temp, (P+2)); \ + } +#define PUTsimm11(V, P) { \ + unsigned long int temp; \ + temp = GEThalf(P+2) & ~0x7ff; \ + temp |= ((V) & 0x7ff); \ + PUThalf(temp, (P+2)); \ + } +#define PUTdisp16(V, P) { \ + unsigned long int temp; \ + temp = GETword(P) & ~0x303fff; \ + temp |= ((V) & 0xc000) << 6; \ + temp |= ((V) & 0x3fff); \ + PUTword(temp, P); \ + } +#define PUTdisp19(V, P) { \ + unsigned long int temp; \ + temp = GETword(P) & ~0x7ffff; \ + temp |= ((V) & 0x7ffff); \ + PUTword(temp, P); \ + } + +static void +move_reloc(unsigned char * iaddr, unsigned char * oaddr, unsigned char type) +{ + switch (type) { + case R_SPARC_8: + case R_SPARC_DISP8: + PUTbyte(GETbyte(iaddr), oaddr); + break; + + case R_SPARC_16: + case R_SPARC_DISP16: + PUThalf(GEThalf(iaddr), oaddr); + break; + + case R_SPARC_32: + case R_SPARC_DISP32: + case R_SPARC_GLOB_DAT: + case R_SPARC_RELATIVE: + case R_SPARC_UA32: + PUTword(GETword(iaddr), oaddr); + break; + + case R_SPARC_WDISP30: + case R_SPARC_WPLT30: + PUTdisp30(GETdisp30(iaddr), oaddr); + break; + + case R_SPARC_WDISP22: + case R_SPARC_PC22: + PUTdisp22(GETdisp22(iaddr), oaddr); + break; + + case R_SPARC_HI22: + case R_SPARC_GOT22: + case R_SPARC_22: + PUTimm22(GETimm22(iaddr), oaddr); + break; + + case R_SPARC_13: + case R_SPARC_GOT13: + PUTsimm13(GETsimm13(iaddr), oaddr); + break; + + case R_SPARC_LO10: + case R_SPARC_GOT10: + case R_SPARC_PC10: +#ifdef R_SPARC_10 + case R_SPARC_10: +#endif + PUTsimm10(GETsimm10(iaddr), oaddr); + break; + +#ifdef R_SPARC_11 + case R_SPARC_11: + PUTsimm11(GETsimm11(iaddr), oaddr); + break; +#endif + +#ifdef R_SPARC_WDISP16 + case R_SPARC_WDISP16: + PUTdisp16(GETdisp16(iaddr), oaddr); + break; +#endif + +#ifdef R_SPARC_WDISP19 + case R_SPARC_WDISP19: + PUTdisp19(GETdisp19(iaddr), oaddr); + break; +#endif + +#ifdef R_SPARC_5 + case R_SPARC_5: + PUTimm5(GETimm5(iaddr), oaddr); + break; +#endif + +#ifdef R_SPARC_6 + case R_SPARC_6: + PUTimm6(GETimm6(iaddr), oaddr); + break; +#endif + +#ifdef R_SPARC_7 + case R_SPARC_7: + PUTimm7(GETimm7(iaddr), oaddr); + break; +#endif + + default: + break; + } +} + +void +update_reloc(Cache *ocache, Cache *_ocache, + Cache *icache, Cache *_icache, + Half shnum) +{ + Shdr *shdr; + Rel *rels; + int reln, cnt; + Cache *orcache, *ircache; + + /* + * Set up to read the output relocation table. + */ + shdr = _ocache->c_shdr; + rels = (Rel *)_ocache->c_data->d_buf; + reln = shdr->sh_size / shdr->sh_entsize; + + /* + * Determine the section that is being relocated. + */ + orcache = &ocache[shdr->sh_info]; + shdr = _icache->c_shdr; + ircache = &icache[shdr->sh_info]; + + /* + * Loop through the relocation table. + */ + for (cnt = 0; cnt < reln; cnt++, rels++) { + unsigned char *iaddr, *oaddr; + Addr off; + unsigned char type = ELF_R_TYPE(rels->r_info); + + /* + * Ignore some relocations as these can safely be carried out + * twice (they simply override any existing data). In fact, + * some relocations like __iob's copy relocation must be carried + * out each time the process restarts otherwise stdio blows up. + */ + if ((type == R_SPARC_COPY) || (type == R_SPARC_JMP_SLOT) || + (type == R_SPARC_NONE)) + continue; + + /* + * If we are required to restore the relocation location + * to its value prior to relocation, then read the + * locations original contents from the input image and + * copy it to the output image. + */ + off = rels->r_offset - ircache->c_shdr->sh_addr; + iaddr = (unsigned char *)ircache->c_data->d_buf + off; + oaddr = (unsigned char *)orcache->c_data->d_buf + off; + move_reloc(iaddr, oaddr, type); + } +} diff --git a/dynodump/sparc/machdep.h b/dynodump/sparc/machdep.h new file mode 100644 index 0000000..b4b76d8 --- /dev/null +++ b/dynodump/sparc/machdep.h @@ -0,0 +1,91 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +#pragma ident "@(#) $Id: machdep.h,v 1.3 1997/05/29 04:23:26 steve Exp $ - SMI" + +/* + * Global include file for all sgs SPARC machine dependent macros, constants + * and declarations. + */ +#ifndef MACHDEP_DOT_H +#define MACHDEP_DOT_H + +#include +#include + +/* + * Make machine class dependent data types transparent to the common code + */ +#define Word Elf32_Word +#define Sword Elf32_Sword +#define Half Elf32_Half +#define Addr Elf32_Addr +#define Off Elf32_Off +#define Byte unsigned char + +#define Ehdr Elf32_Ehdr +#define Shdr Elf32_Shdr +#define Sym Elf32_Sym +#define Rel Elf32_Rela +#define Phdr Elf32_Phdr +#define Dyn Elf32_Dyn +#define Boot Elf32_Boot +#define Verdef Elf32_Verdef +#define Verdaux Elf32_Verdaux +#define Verneed Elf32_Verneed +#define Vernaux Elf32_Vernaux +#define Versym Elf32_Versym + +/* + * Make machine class dependent functions transparent to the common code + */ +#define ELF_R_TYPE ELF32_R_TYPE +#define ELF_R_INFO ELF32_R_INFO +#define ELF_R_SYM ELF32_R_SYM +#define ELF_ST_BIND ELF32_ST_BIND +#define ELF_ST_TYPE ELF32_ST_TYPE +#define ELF_ST_INFO ELF32_ST_INFO +#define elf_fsize elf32_fsize +#define elf_getehdr elf32_getehdr +#define elf_getphdr elf32_getphdr +#define elf_newehdr elf32_newehdr +#define elf_newphdr elf32_newphdr +#define elf_getshdr elf32_getshdr + +/* + * Make relocation types transparent to the common code + */ +#define M_REL_SHT_TYPE SHT_RELA /* section header type */ + +#endif diff --git a/dynodump/sparc/uninit.c b/dynodump/sparc/uninit.c new file mode 100644 index 0000000..d023877 --- /dev/null +++ b/dynodump/sparc/uninit.c @@ -0,0 +1,45 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * This is where you put processor specific un-initialization things + * to deal with "initialization idempotency issues". + */ + +void dynodump_uninit(void); +void +dynodump_uninit(void) +{ + return; +} diff --git a/dynodump/syms.c b/dynodump/syms.c new file mode 100644 index 0000000..0ac5cb8 --- /dev/null +++ b/dynodump/syms.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 1995 by Sun Microsystems, Inc. + * All rights reserved. + * + * This source code is a product of Sun Microsystems, Inc. and is provided + * for unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify this source code without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC. + * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY + * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT + * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS + * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN + * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT, + * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY. + * + * This source code is provided with no support and without any obligation on + * the part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS + * SOURCE CODE OR ANY PART THEREOF. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * Update the value of the `_edata' and `_end' symbols. + */ +#pragma ident "@(#) $Id: syms.c,v 1.3 1997/05/29 04:22:30 steve Exp $ - SMI" + +#include +#include +#include "machdep.h" +#include "_dynodump.h" + +void +update_sym(Cache * cache, Cache * _cache, Addr edata) +{ + char *strs; + Sym *syms; + Shdr *shdr; + int symn, cnt; + + /* + * Set up to read the symbol table and its associated string table. + */ + shdr = _cache->c_shdr; + syms = (Sym *) _cache->c_data->d_buf; + symn = shdr->sh_size / shdr->sh_entsize; + + strs = (char *) cache[shdr->sh_link].c_data->d_buf; + + /* + * Loop through the symbol table looking for `_end' and `_edata'. + */ + for (cnt = 0; cnt < symn; cnt++, syms++) { + char *name = strs + syms->st_name; + + if (strcmp(name, "_end") && strcmp(name, "_edata")) + continue; + + syms->st_value = edata; + } +} diff --git a/etc/BETA b/etc/BETA new file mode 100644 index 0000000..0e619ee --- /dev/null +++ b/etc/BETA @@ -0,0 +1,366 @@ + -*- mode:outline -*- + +* Introduction +============== + +You are running an experimental version of XEmacs. Please do not +report problems with Beta XEmacs to comp.emacs.xemacs. Report them to +xemacs-beta@xemacs.org. + +** XEmacs Beta Mailing List +=========================== + +*** Subscribing +--------------- + +If you are not subscribed to the XEmacs beta list you should be. Send +an email message to xemacs-beta-request@xemacs.org with `subscribe' +(without the quotes) as the BODY of the message. + +*** Unsubscribing +----------------- + +To unsubscribe from the list send an email message to +xemacs-beta-request@xemacs.org with `unsubscribe' (without the quotes) +as the BODY of the message. + +*** Administrivia +----------------- + +The XEmacs beta list is managed by the Majordomo mailing list package, +and the usual Majordomo commands work. Do not send mailing list +requests to the main address (xemacs-beta@xemacs.org), always send +them to xemacs-beta-request@xemacs.org. If you have problems with the +list itself, they should be brought to the attention of the XEmacs +Mailing List manager Jason Mastaler . + + +** Beta Release Schedule +======================== + +The URL ftp://ftp.xemacs.org/pub/xemacs/beta/README always contains +the best estimate of when the next beta XEmacs will be released. For +weekend betas the release time is generally in the vicinity of 2PM to +5PM US Pacific Time (Universal Time minus 8 hours). For weekday +betas, the release time is generally in the vicinity of 8PM to +Midnight US Pacific Time on the listed day. + +Betas are nominally a week apart, scheduled on every Saturday. +Midweek releases are made when a serious enough problem warrants it. + + +** Reporting Problems +===================== + +The best way to get problems fixed in XEmacs is to submit good problem +reports. Since this is beta software, problems are certain to exist. +Please read through all of part II of the XEmacs FAQ for an overview +of problem reporting. Other items which are most important are: + +1. Do not submit C stack backtraces without line numbers. Since it + is possible to compile optimized with debug information with GCC + it is never a good idea to compile XEmacs without the -g flag. + XEmacs runs on a variety of platforms, and often it is not + possible to recreate problems which afflict a specific platform. + The line numbers in the C stack backtrace help isolate where the + problem is actually occurring. + +2. Attempt to recreate the problem starting with an invocation of + XEmacs with `xemacs -q -no-site-file'. Quite often, problems are + due to package interdependencies, and the like. An actual bug in + XEmacs should be reproducible in a default configuration without + loading any special packages (or the one or two specific packages + that cause the bug to appear). + +3. A picture can be worth a thousand words. When reporting an + unusual display, it is generally best to capture the problem in a + screen dump and include that with the problem report. The easiest + way to get a screen dump is to use the xv program and its grab + function. Save the image as a GIF to keep bandwidth requirements + down without loss of information. MIME is the preferred method + for making the image attachments. + +** Getting the Source +===================== + +In addition to the normal tar distribution, XEmacs source is now +available via CVS. Please see the URL: . + +* Compiling Beta XEmacs +======================= + +** Building an XEmacs from patches +================================== + +All beta releases of XEmacs are included with patches from the +previous version in an attempt to keep bandwidth requirements down. +Patches should be applied with the GNU patch program in something like +the following. Let's say you're upgrading XEmacs 20.15-beta10 to +XEmacs 20.15-beta11 and you have a full unmodified XEmacs 20.15-beta10 +source tree to work with. Cd to the top level directory and issue the +shell command: + +$ gunzip -c /tmp/xemacs-20.15-b10-20.15-b11.patch.gz | patch -p1 + +After patching, check to see that no patches were missed by doing +$ find . -name \*.rej -print + +Any rejections should be treated as serious problems to be resolved +before building XEmacs. + +After seeing that there were no rejections, issue the commands + +$ ./config.status --recheck +$ make beta + +and go play minesweep for a while on an older XEmacs while the binary +is rebuilt. + +** Building XEmacs from a full distribution +============================================== + +Locate a convenient place where you have at least 100MB of free space +and issue the command + +$ gunzip -c /tmp/xemacs-20.15-b11.tar.gz | tar xvf - + +(or simply `tar zxvf /tmp/xemacs-20.15-b11.tar.gz' if you use GNU tar). + +cd to the top level directory and issue an appropriate configure +command. One maintainer uses the following at the time of this +writing: + +./configure \ + --cflags="-mpentium -march=pentium -O6 -g -fno-peep-spills" \ + --error-checking=all --debug=yes \ + --with-scrollbars=athena3d --with-dialogs=athena3d \ + --with-mule --with-xfs --with-xim=xlib + +Part of the configure output is a summary that looks something like: + +uname -a: Linux altair.xemacs.org 2.0.32 #2 Sun Nov 16 18:52:14 PST 1997 i586 + +./configure '--cflags=-mpentium -march=pentium -O6 -g -fno-peep-spills' '--error-checking=all' '--debug=yes' '--with-scrollbars=athena3d' '--with-dialogs=athena3d' '--with-mule' '--with-xfs' '--with-xim=xlib' + + +XEmacs 21.0-b34 "Oberhasli-pre2" configured for `i586-pc-linux'. + + Where should the build process find the source code? /home/xemacs/xemacs-20.0 + What installation prefix should install use? /usr/local + What operating system and machine description files should XEmacs use? + `s/linux.h' and `m/intel386.h' + What compiler should XEmacs be built with? gcc -mpentium -march=pentium -O6 -g -fno-peep-spills + Should XEmacs use the GNU version of malloc? yes + (Using Doug Lea's new malloc from the GNU C Library.) + Should XEmacs use the relocating allocator for buffers? yes + What window system should XEmacs use? x11 + Where do we find X Windows header files? /usr/X11/include + Where do we find X Windows libraries? /usr/X11/lib + Compiling in support for XAUTH. + Compiling in support for XPM images. + Compiling in support for X-Face message headers. + Compiling in support for GIF image conversion. + Compiling in support for JPEG image conversion. + Compiling in support for PNG image conversion. + Compiling in support for TIFF image conversion. + Compiling in native sound support. + Compiling in support for Berkeley DB. + Compiling in support for GNU DBM. + Compiling in support for ncurses. + Compiling in support for GPM (General Purpose Mouse). + Compiling in Mule (multi-lingual) support. + Compiling in XIM (X11R5+ I18N input method) support. + Using raw Xlib to provide XIM support. + Using XFontSet to provide bilingual menubar. + Compiling in support for Canna on Mule. + Compiling in support for the WNN input method on Mule. + Using WNN version 6. + Compiling in support for OffiX. + Compiling in support for proper session-management. + Using Lucid menubars. + Using Athena-3d scrollbars. + Using Athena-3d dialog boxes. + Compiling in DLL support. + movemail will use "dot-locking" for locking mail spool files. + Using Lisp_Objects with minimal tagbits. + Compiling in extra code for debugging. + Compiling in code for checking XEmacs memory usage. + WARNING: --------------------------------------------------------- + WARNING: Compiling in support for runtime error checking. + WARNING: XEmacs will run noticeably more slowly as a result. + WARNING: Error checking is on by default for XEmacs beta releases. + WARNING: --------------------------------------------------------- + + + +Then type `make' and you should have a working XEmacs. + +After you have verified that you have a functional editor, fire up +your favorite mail program and send a build report to +xemacs-beta@xemacs.org. The build report should include + +1. Your hardware configuration (OS version, etc.) + +2. Version numbers of software in use (X11 version, system library + versions if appropriate, graphics library versions if appropriate). + If you're on a system like Linux, include all the version numbers + you can because chances are it makes a difference. + +3. The options given to configure + +4. The configuration report illustrated above + + For convenience all of the above items are placed in a file called + `Installation' in the top level build directory. They are also + available by performing M-x describe-installation inside XEmacs. + +5. Any other unusual items you feel should be brought to the attention + of the developers. + +** Creating patches for submission +================================== + +Patches to XEmacs should be mailed to . +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 +others make changes to the same source file. + +An example of the `diff' usage: + +$ diff -u OLDFILE NEWFILE + +-or- + +$ diff -c OLDFILE NEWFILE + +Also, it is helpful if you create the patch in the top level of the +XEmacs source directory: + +$ cp -p lwlib/xlwmenu.c lwlib/xlwmenu.c.orig + hack, hack, hack.... +$ diff -u lwlib/xlwmenu.c.orig lwlib/xlwmenu.c + +Each patch should be accompanied by an update to the appropriate +ChangeLog file. Please don't mail patches to ChangeLog because they +have an extremely high rate of failure; just mail us the new part of +the ChangeLog you added. + +Also note that if you cut & paste from an xterm to an XEmacs mail buffer +you will probably lose due to tab expansion. The best thing to do is +to use an XEmacs shell buffer to run the diff commands, or ... +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 +===================================== + +The packages directory + ftp://ftp.xemacs.org/pub/xemacs/beta/xemacs-21.0/packages/ + +is divided into subdirectory by the major type of package. + +drwxr-xr-x 2 beta-f beta-f 1024 Oct 10 00:43 binary-packages +drwxr-xr-x 2 beta-f beta-f 512 Oct 10 00:44 package-sources +drwxr-xr-x 2 beta-f beta-f 512 Oct 10 00:44 utils + +** Support Utilities (utils) +============================ + +The utils directory contains tools to deal with current Lisp sources that +have not had yet gotten XEmacs package integration. The script `xpackage.sh' +is used with Quassia Gnus. Edit the appropriate variables at the top of +the script to reflect the local configuration and run it in the top level +directory of a Quassia Gnus source tree to install an update to Quassia Gnus. + +** Binary package installation (binary-packages) +================================================ + +Prerequisite: XEmacs 21.0-b1. + +Binary packages are complete entities that can be untarred at the top +level of an XEmacs package hierarchy and work at runtime. To install files +in this directory, run the command `M-x package-admin-add-binary-package' +and fill in appropriate values to the prompts. + +** Manual procedures for package management +=========================================== + +Prerequisite: XEmacs 21.0 + +When adding and deleting files from a lisp directory the +auto-autoloads.el (global symbols) and custom-load.el (Customization +groups) must be kept in synch. Assuming one is manipulating a +directory called `lisp-utils', the command to rebuild the +auto-autoloads.el file is: + +xemacs-21.0 -vanilla -batch -l autoload -f batch-update-directory lisp-utils + +The command to rebuild the custom-load.el file is: + +xemacs-21.0 -vanilla -batch -l cus-dep \ + -f Custom-make-dependencies lisp-utils + +To bytecompile both of these files the command is: + +xemacs-21.0 -vanilla -batch -f batch-byte-compile \ + lisp-utils/auto-autoloads.el lisp-utils/custom-laod.el + +** Building XEmacs and XEmacs packages from scratch +=================================================== + +To build everything completely from scratch (not a high priority as a +design goal), the following procedure should work. (I don't recommend +building this way). + +*** Phase 1 -- Get a minimal XEmacs binary with mule to build the package + lisp with. + +**** Grab a mule-base tarball and install it into a newly created package + directory. + +**** Configure XEmacs with mule and a package-path including the + directory created above. + +**** Do a `make dist' to build an XEmacs binary. + +*** Phase 2 -- Build and install the package lisp. + +**** Modify XEmacs.rules for local paths and the XEmacs binary created in + Phase 1. + +**** Do a make from the top level package lisp source directory.[1] + +**** Do `make bindist's on all the packages you wish to install and + remove the byproduct .tar.gz's. + +*** Phase 3 -- If necessary, redump XEmacs + with the packages that require dump-time support and install it. + +**** Reconfigure without Mule if you don't wish a Mule-ish XEmacs, and + rebuild XEmacs. + +- or - + +**** rm lib-src/DOC src/xemacs; make + +**** Install or run in-place. + +Note that this is in essence what `make all-elc' has always done. diff --git a/etc/CHARSETS b/etc/CHARSETS new file mode 100644 index 0000000..dd2d083 --- /dev/null +++ b/etc/CHARSETS @@ -0,0 +1,57 @@ +######################### +## LIST OF CHARSETS +## Each line corresponds to one charset. +## The following attributes are listed in this order +## separated by a colon `:' in one line. +## CHARSET-SYMBOL-NAME, +## CHARSET-ID, +## DIMENSION (1 or 2) +## CHARS (94 or 96) +## BYTES (of multibyte form: 1, 2, 3, or 4), +## WIDTH (occupied column numbers: 1 or 2), +## DIRECTION (0:left-to-right, 1:right-to-left), +## ISO-FINAL-CHAR (character code of ISO-2022's final character) +## ISO-GRAPHIC-PLANE (ISO-2022's graphic plane, 0:GL, 1:GR) +## DESCRIPTION (describing string of the charset) +tibetan-1-column:241:2:94:4:1:0:56:0:Tibetan 1 column glyph +tibetan:252:2:94:4:2:0:55:0:Tibetan characters +lao:167:1:94:3:1:0:49:0:Lao characters (ISO10646 0E80..0EDF) +indian-1-column:240:2:94:4:1:0:54:0:Indian charset for 2-column width glypps +indian-2-column:251:2:94:4:2:0:53:0:Indian charset for 2-column width glyphs +indian-is13194:225:1:94:3:2:0:53:1:Generic Indian charset for data exchange with IS 13194 +ascii-right-to-left:166:1:94:3:1:1:66:0:ASCII (left half of ISO8859-1) with right-to-left direction +chinese-cns11643-7:250:2:94:4:2:0:77:0:CNS11643 Plane 7 Chinese Traditional +chinese-cns11643-6:249:2:94:4:2:0:76:0:CNS11643 Plane 6 Chinese Traditional +chinese-cns11643-5:248:2:94:4:2:0:75:0:CNS11643 Plane 5 Chinese Traditional +chinese-cns11643-4:247:2:94:4:2:0:74:0:CNS11643 Plane 4 Chinese Traditional +chinese-cns11643-3:246:2:94:4:2:0:73:0:CNS11643 Plane 3 Chinese Traditional +ethiopic:245:2:94:4:2:0:51:0:Ethiopic characters +arabic-2-column:224:1:94:3:2:1:52:0:Arabic 2-column +arabic-1-column:165:1:94:3:1:1:51:0:Arabic 1-column +arabic-digit:164:1:94:3:1:0:50:0:Arabic digit +vietnamese-viscii-upper:163:1:96:3:1:0:50:1:VISCII1.1 upper-case +vietnamese-viscii-lower:162:1:96:3:1:0:49:1:VISCII1.1 lower-case +ipa:161:1:96:3:1:0:48:1:IPA (International Phonetic Association) +chinese-sisheng:160:1:94:3:1:0:48:0:SiSheng characters for PinYin/ZhuYin +chinese-big5-2:153:2:94:3:2:0:49:0:Big5 Level-2 Chinese traditional +chinese-big5-1:152:2:94:3:2:0:48:0:Big5 Level-1 Chinese traditional +chinese-cns11643-2:150:2:94:3:2:0:72:0:CNS11643 Plane 2 Chinese traditional +chinese-cns11643-1:149:2:94:3:2:0:71:0:CNS11643 Plane 1 Chinese traditional +japanese-jisx0212:148:2:94:3:2:0:68:0:JISX0212 Japanese supplement +korean-ksc5601:147:2:94:3:2:0:67:0:KSC5601 Korean Hangul and Hanja +japanese-jisx0208:146:2:94:3:2:0:66:0:JISX0208.1983/1990 Japanese Kanji +chinese-gb2312:145:2:94:3:2:0:65:0:GB2312 Chinese simplified +japanese-jisx0208-1978:144:2:94:3:2:0:64:0:JISX0208.1978 Japanese Kanji (so called "old JIS") +latin-iso8859-9:141:1:96:2:1:0:77:1:ISO8859-9 (Latin-5) +cyrillic-iso8859-5:140:1:96:2:1:0:76:1:ISO8859-5 (Cyrillic) +latin-jisx0201:138:1:94:2:1:0:74:0:JISX0201.1976 Japanese Roman +katakana-jisx0201:137:1:94:2:1:0:73:1:JISX0201.1976 Japanese Kana +hebrew-iso8859-8:136:1:96:2:1:1:72:1:ISO8859-8 (Hebrew) +arabic-iso8859-6:135:1:96:2:1:1:71:1:ISO8859-6 (Arabic) +greek-iso8859-7:134:1:96:2:1:0:70:1:ISO8859-7 (Greek) +thai-tis620:133:1:96:2:1:0:84:1:TIS620.2529 (Thai) +latin-iso8859-4:132:1:96:2:1:0:68:1:ISO8859-4 (Latin-4) +latin-iso8859-3:131:1:96:2:1:0:67:1:ISO8859-3 (Latin-3) +latin-iso8859-2:130:1:96:2:1:0:66:1:ISO8859-2 (Latin-2) +latin-iso8859-1:129:1:96:2:1:0:65:1:ISO8859-1 (Latin-1) +ascii:000:1:94:1:1:0:66:0:ASCII (ISO646 IRV) diff --git a/etc/CODING-STANDARDS b/etc/CODING-STANDARDS new file mode 100644 index 0000000..d58b771 --- /dev/null +++ b/etc/CODING-STANDARDS @@ -0,0 +1,81 @@ + XEMACS CODING STANDARDS + + by + + Ben Wing + + +Copyright (c) 1996 Ben Wing. + + +This file documents the coding standards used in the XEmacs source +code. Note that XEmacs follows the GNU coding standards, which are +documented separately in ../man/standards.texi. This file only +documents standards that are not included in that document; typically +this consists of standards that are specifically relevant to the +XEmacs code itself. + +First, a recap of the GNU standards: + +-- Put a space after every comma. +-- Put a space before the parenthesis that begins a function call, + macro call, function declaration or definition, or control + statement (if, while, switch, for). (DO NOT do this for macro + definitions; this is invalid preprocessor syntax.) +-- The brace that begins a control statement (if, while, for, switch, + do) or a function definition should go on a line by itself. +-- In function definitions, put the return type and all other + qualifiers on a line before the function name. Thus, the function + name is always at the beginning of a line. +-- Indentation level is two spaces. (However, the first and following + statements of a while/for/if/etc. block are indented four spaces + from the while/for/if keyword. The opening and closing braces are + indented two spaces.) +-- Variable and function names should be all lowercase, with underscores + separating words, except for a prefixing tag, which may be in + uppercase. Do not use the mixed-case convention (e.g. + SetVariableToValue ()) and *especially* do not use Microsoft + Hungarian notation (char **rgszRedundantTag). +-- preprocessor and enum constants should be all uppercase, and should + be prefixed with a tag that groups related constants together. + + +Now, the XEmacs coding standards: + +**** Specially-prefixed functions/variables: + +-- All global C variables whose value is constant and is a symbol begin + with a capital Q, e.g. Qkey_press_event. (The type will always be + Lisp_Object.) +-- All other global C variables whose value is a Lisp_Object (this + includes variables that forward into Lisp variables plus others like + Vselected_console) begin with a capital V. +-- No C variables whose value is other than a Lisp_Object should begin + with a capital V. (This includes C variables that forward into + integer or boolean Lisp variables.) +-- All global C variables whose value is a struct Lisp_Subr begin with a + capital S. (This only occurs in connection with DEFUN ()). +-- All C functions that are Lisp primitives begin with a capital F, + and no others should begin this way. + +**** Functions for manipulating Lisp types: + +-- Any function that creates an empty or mostly empty Lisp object + should begin allocate_(). (*Not* make_().) (Except, of course, + for Lisp primitives, which usually begin Fmake_()). +-- Any function that converts a pointer into an equivalent Lisp_Object + should begin make_(). +-- Any function that converts a Lisp_Object into its equivalent pointer + and checks the type and validity of the object (e.g. making sure + it's not dead) should begin decode_(). +-- Any function that looks up a Lisp object (e.g. buffer, face) given + a symbol or string should begin get_(). (Except, of course, for + Lisp primitives, which usually begin Fget_()). + +**** Other: + +-- Any header-file declarations of the sort + + struct foobar; + + go into the "types" section of lisp.h. diff --git a/etc/CODINGS b/etc/CODINGS new file mode 100644 index 0000000..81611fc --- /dev/null +++ b/etc/CODINGS @@ -0,0 +1,74 @@ +######################### +## LIST OF CODING SYSTEMS +## Each line corresponds to one coding system +## Format of a line is: +## NAME:TYPE:MNEMONIC:EOL:FLAGS:DOCSTRING, +## where +## TYPE = nil (no conversion), t (auto conversion), +## 0 (Mule internal), 1 (SJIS), 2 (ISO2022), 3 (BIG5), or 4 (CCL) +## EOL = 0 (LF), 1 (CRLF), 2 (CR), or 3 (Automatic detection) +## FLAGS = +## if TYPE = 2 then +## comma (`,') separated data of the followings: +## G0, G1, G2, G3, SHORT-FORM, ASCII-EOL, ASCII-CNTL, SEVEN, +## LOCKING-SHIFT, SINGLE-SHIFT, USE-ROMAN, USE-OLDJIS, NO-ISO6429 +## else if TYPE = 4 then +## comma (`,') separated CCL programs for read and write +## else +## 0 +## +no-conversion:nil:=:0:0:Do no conversion +undecided:t:+:3:0:Detect coding-system automatically +hz:0:z:3:0:Codins-system of Hz/ZW used for Chinese (GB). +emacs-mule:0:=:3:0:Internal coding system used in a buffer. +shift_jis:1:S:3:0:Coding-system of Shift-JIS used in Japan. +sjis:1:S:3:0:Coding-system of Shift-JIS used in Japan. +euc-japan-1990:2:E:3:ascii,japanese-jisx0208,katakana-jisx0201,japanese-jisx0212,1,1,1,0,0,1,0,0,0:Coding-system of Japanese EUC (Extended Unix Code). +iso-2022-lock:2:i:3:(ascii,t),-2,-1,-1,0,1,1,1,0,0,0,0,0:ISO-2022 coding system using Locking-Shift for 96-charset. +iso-2022-ss2-7:2:I:3:(ascii,t),-1,-2,-1,1,1,1,1,0,1,0,0,0:ISO-2022 coding system using SS2 for 96-charset in 7-bit code. +iso-2022-ss2-8:2:I:3:(ascii,t),-1,-2,-1,0,1,1,0,0,1,0,0,0:ISO-2022 coding system using SS2 for 96-charset in 8-bit code. +iso-2022-cjk:2:I:3:(ascii,t),(nil,korean-ksc5601,chinese-gb2312,chinese-cns11643-1,t),(nil,chinese-cns11643-2),(nil,chinese-cns11643-3,chinese-cns11643-4,chinese-cns11643-5,chinese-cns11643-6,chinese-cns11643-7),1,1,1,1,1,1,0,0,0:Mixture of ISO-2022-JP, ISO-2022-KR, and ISO-2022-CN +cn-gb-2312:2:C:3:(ascii,t),chinese-gb2312,chinese-sisheng,-1,0,1,1,0,0,1,0,0,0:Coding-system of Chinese EUC (so called GB Encoding). +lao:2:T:3:(ascii,t),(lao,t),-1,-1,0,1,0,0,0,0,0,0,0:Coding-system used for ASCII(MSB=0) & LAO(MSB=1). +iso-2022-jp-1978-irv:2:J:3:(ascii,t),-1,-1,-1,1,1,1,1,0,0,1,1,0:Coding-system used for old jis terminal. +junet:2:J:3:(ascii,t),-1,-1,-1,1,1,1,1,0,0,0,0,0:Coding system based on ISO2022 7-bit encoding. +tis620:2:T:3:(ascii,t),(thai-tis620,t),-1,-1,0,1,0,0,0,0,0,0,0:Coding-system used for ASCII(MSB=0) & TIS620(MSB=1). +euc-japan:2:E:3:ascii,japanese-jisx0208,katakana-jisx0201,japanese-jisx0212,1,1,1,0,0,1,0,0,0:Coding-system of Japanese EUC (Extended Unix Code). +iso-2022-int-1:2:I:3:(ascii,t),(korean-ksc5601,t),-1,-1,1,1,1,1,1,0,0,0,0:ISO-2022-INT-1 +euc-china:2:C:3:(ascii,t),chinese-gb2312,chinese-sisheng,-1,0,1,1,0,0,1,0,0,0:Coding-system of Chinese EUC (so called GB Encoding). +old-jis:2:J:3:(ascii,t),-1,-1,-1,1,1,1,1,0,0,1,1,0:Coding-system used for old jis terminal. +iso-2022-7:2:J:3:(ascii,t),-1,-1,-1,1,1,1,1,0,0,0,0,0:Coding system based on ISO2022 7-bit encoding. +iso-2022-cn:2:C:3:ascii,(nil,chinese-gb2312,chinese-cns11643-1),(nil,chinese-cns11643-2),(nil,chinese-cns11643-3,chinese-cns11643-4,chinese-cns11643-5,chinese-cns11643-6,chinese-cns11643-7),0,1,1,1,1,1,0,0,0:Coding system ISO-2022-CN for Chinese (GB and CNS character sets). +ctext:2:X:3:(ascii,t),(latin-iso8859-1,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-1 Compound Text Encoding. +iso-2022-jp:2:J:3:(ascii,t),-1,-1,-1,1,1,1,1,0,0,0,0,0:Coding system based on ISO2022 7-bit encoding. +iso-2022-kr:2:k:3:ascii,(nil,korean-ksc5601),-1,-1,0,1,1,1,1,0,0,0,0:MIME ISO-2022-KR +iso-2022-cn-ext:2:C:3:ascii,(nil,chinese-gb2312,chinese-cns11643-1),(nil,chinese-cns11643-2),(nil,chinese-cns11643-3,chinese-cns11643-4,chinese-cns11643-5,chinese-cns11643-6,chinese-cns11643-7),0,1,1,1,1,1,0,0,0:Coding system ISO-2022-CN for Chinese (GB and CNS character sets). +iso-8859-1:2:X:3:(ascii,t),(latin-iso8859-1,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-1 Compound Text Encoding. +iso-8859-2:2:2:3:(ascii,t),(latin-iso8859-2,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-2 +iso-8859-3:2:3:3:(ascii,t),(latin-iso8859-3,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-3 +iso-8859-4:2:4:3:(ascii,t),(latin-iso8859-4,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-4 +iso-8859-5:2:5:3:(ascii,t),(cyrillic-iso8859-5,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-5 +iso-8859-7:2:7:3:(ascii,t),(greek-iso8859-7,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-7 +iso-8859-8:2:8:3:(ascii,t),(hebrew-iso8859-8,t),-1,-1,0,1,1,0,0,0,0,0,1:MIME ISO-8859-8 +iso-8859-9:2:9:3:(ascii,t),(latin-iso8859-9,t),-1,-1,0,1,1,0,0,0,0,0,0:MIME ISO-8859-9 +euc-kr:2:K:3:(ascii,t),korean-ksc5601,-1,-1,0,1,1,0,0,0,0,0,0:Coding-system of Korean EUC (Extended Unix Code). +euc-korea:2:K:3:(ascii,t),korean-ksc5601,-1,-1,0,1,1,0,0,0,0,0,0:Coding-system of Korean EUC (Extended Unix Code). +cn-big5:3:B:3:0:Coding-system of BIG5. +big5:3:B:3:0:Coding-system of BIG5. +viscii:4:V:3: 3 106 e ffffff0b 100 0 1 19c6 3 4 19c7 19e7 7 8 9 a b c d e f 10 11 12 13 19d6 15 16 17 18 19db 1a 1b 1c 1d 19dc 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 19d5 19a1 19a2 19a3 19a4 19a5 19a6 19a7 19a8 19a9 19aa 19ab 19ac 19ad 19ae 19af 19b0 19b1 19b2 19b5 19fe 19be 19b6 19b7 19b8 19f6 19f7 19ef 19fc 19fb 19f8 19cf 19f5 1921 1922 1923 1924 1925 1926 1927 1928 1929 192a 192b 192c 192d 192e 192f 1930 1931 1932 19de 19bd 1935 1936 1937 1938 19f1 19d1 19d7 19d8 193d 193e 19df 19e0 19e1 19e2 19e3 19e4 19e5 1946 1947 19e8 19e9 19ea 19eb 19ec 19ed 19ee 194f 19f0 1951 19f2 19f3 19f4 1955 1956 1957 1958 19f9 19fa 195b 195c 19fd 195e 195f 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 196a 196b 196c 196d 196e 196f 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 197a 197b 197c 197d 197e 19e6 fffefd0c 16, 1 121 e 41b 10 80 fffffc07 fffffb0c 41b 15 9a fffff707 fffff60c 881d 12 a2 e 4017 80 ffffef0b 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 0 0 b5 b6 b7 b8 0 0 0 0 bd be 0 0 0 0 0 0 0 c6 c7 0 0 0 0 0 0 0 cf 0 d1 0 0 0 d5 d6 d7 d8 0 0 db dc 0 de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe 0 ffff6d0c 881b 12 a3 e 4017 80 ffff660b 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 0 0 93 96 97 98 0 0 0 0 b4 95 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 9f 0 ba 0 0 0 80 14 bb bc 0 0 19 1e 0 b3 bf c0 c1 c2 c3 c4 c5 ff 6 c8 c9 ca cb cc cd ce 9b d0 b9 d2 d3 d4 a0 99 9a 9e d9 da 9d 9c dd 94 0 fffee40c fffee307 fffee20c 16:Coding-system used for VISCII 1.1. +koi8:4:K:3: 3 106 e ffffff0b 100 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f 20 20 20 e71 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e21 20 20 20 20 20 20 20 20 20 20 20 20 e6e e50 e51 e66 e54 e55 e64 e53 e65 e58 e59 e5a e5b e5c e5d e5e e5f e6f e60 e61 e62 e63 e56 e52 e6c e6b e57 e68 e6d e69 e67 e6a e4e e30 e31 e46 e34 e35 e44 e33 e45 e38 e39 e3a e3b e3c e3d e3e e3f e4f e40 e41 e42 e43 e36 e32 e4c e4b e37 e48 e4d e49 e47 e4a fffefd0c 16, 1 6e e 41b 15 8c fffffc07 fffffb0c e 4017 a0 fffff70b 60 20 b3 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e1 e2 f7 e7 e4 e5 f6 fa e9 ea eb ec ed ee ef f0 f2 f3 f4 f5 e6 e8 e3 fe fb fd ff f9 f8 fc e0 f1 c1 c2 d7 c7 c4 c5 d6 da c9 ca cb cc cd ce cf d0 d2 d3 d4 d5 c6 c8 c3 de db dd df d9 d8 dc c0 d1 20 a3 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ffff950c 16:Coding-system used for KOI8. +koi8-r:4:K:3: 3 106 e ffffff0b 100 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f 20 20 20 e71 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e21 20 20 20 20 20 20 20 20 20 20 20 20 e6e e50 e51 e66 e54 e55 e64 e53 e65 e58 e59 e5a e5b e5c e5d e5e e5f e6f e60 e61 e62 e63 e56 e52 e6c e6b e57 e68 e6d e69 e67 e6a e4e e30 e31 e46 e34 e35 e44 e33 e45 e38 e39 e3a e3b e3c e3d e3e e3f e4f e40 e41 e42 e43 e36 e32 e4c e4b e37 e48 e4d e49 e47 e4a fffefd0c 16, 1 6e e 41b 15 8c fffffc07 fffffb0c e 4017 a0 fffff70b 60 20 b3 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e1 e2 f7 e7 e4 e5 f6 fa e9 ea eb ec ed ee ef f0 f2 f3 f4 f5 e6 e8 e3 fe fb fd ff f9 f8 fc e0 f1 c1 c2 d7 c7 c4 c5 d6 da c9 ca cb cc cd ce cf d0 d2 d3 d4 d5 c6 c8 c3 de db dd df d9 d8 dc c0 d1 20 a3 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ffff950c 16:Coding-system used for KOI8. +alternativnyj:4:A:3: 3 106 e ffffff0b 100 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f e30 e31 e32 e33 e34 e35 e36 e37 e38 e39 e3a e3b e3c e3d e3e e3f e40 e41 e42 e43 e44 e45 e46 e47 e48 e49 e4a e4b e4c e4d e4e e4f e50 e51 e52 e53 e54 e55 e56 e57 e58 e59 e5a e5b e5c e5d e5e e5f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e60 e61 e62 e63 e64 e65 e66 e67 e68 e69 e6a e6b e6c e6d e6e e6f e21 e71 20 20 20 20 20 20 20 20 20 20 20 20 20 e70 fffefd0c 16, 1 6e e 41b 15 8c fffffc07 fffffb0c e 4017 a0 fffff70b 60 20 f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef ff f1 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ffff950c 16:Coding-system used for Alternativnyj +vscii:4:V:3: 3 106 e ffffff0b 100 0 19fa 19f8 3 19d7 19d8 19e6 7 8 9 a b c d e f 10 19d1 19df 19cf 19d6 19db 19fd 19dc 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 19e0 19e4 19e3 19e1 19d5 19a3 19a7 19e8 19eb 19a8 19e9 19a9 19ae 19ec 19ef 19ee 19ed 19b8 19f2 19f6 19f5 19f3 19f7 19b5 19b6 19b7 19de 19be 19fe 19f9 19fc 19fb a0 19e5 19e2 19ea 19f4 19bd 19df 19f0 1965 1962 196a 1974 193e 1979 1970 19a2 c0 c1 c2 c3 c4 1960 1964 1963 1961 1955 19c6 1922 1946 1947 1921 19c7 19a1 19a5 19a6 19e7 19a5 19ab 1923 1925 1926 1967 1924 1927 1968 19ac 196b 1928 1969 1929 192b 192c 192d 192a 192e 196c 196f 19ad 19aa 19b0 196e 196d 1938 1972 19b1 1976 1975 1973 1977 1930 1931 1932 192f 1935 1936 1937 195e 193e 197e 1979 19b2 197c 197b 197a 1978 1957 1958 1966 1951 1971 194f 1956 195b 197d 195c 19af fffefd0c 16, 1 121 e 41b 10 80 fffffc07 fffffb0c 41b 15 9a fffff707 fffff60c 881d 12 a2 e 4017 80 ffffef0b 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 be bb c6 ca c7 c8 cb cf d1 d5 d2 d3 d4 d6 e8 e5 e6 e7 0 0 e9 ea eb de 0 0 0 0 0 ed 0 0 0 0 0 0 0 bc bd 0 0 0 0 0 0 0 fa 0 f8 0 0 0 b9 fb f5 f6 0 0 fc fe 0 ec 0 b5 b8 a9 b7 b6 a8 f7 c9 cc d0 aa ce d7 dd dc d8 ae f9 df e3 ab e2 e1 e4 f4 ef f3 f2 f1 fd ee 0 ffff6d0c 881b 12 a3 e 4017 80 ffff660b 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 0 0 93 96 97 98 0 0 0 0 b4 95 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 9f 0 ba 0 0 0 80 14 bb bc 0 0 19 1e 0 b3 bf c0 c1 c2 c3 c4 c5 ff 6 c8 c9 ca cb cc cd ce 9b d0 b9 d2 d3 d4 a0 99 9a 9e d9 da 9d 9c dd 94 0 fffee40c fffee307 fffee20c 16:Coding-system used for VSCII-1. +############################ +## LIST OF CODING CATEGORIES (ordered by priority) +## CATEGORY:CODING-SYSTEM +## +coding-category-iso-7:iso-2022-7 +coding-category-iso-8-1:iso-8859-1 +coding-category-iso-8-2:iso-8859-1 +coding-category-iso-else:iso-2022-lock +coding-category-emacs-mule:emacs-mule +coding-category-sjis:sjis +coding-category-big5:big5 +coding-category-binary:no-conversion diff --git a/etc/COPYING b/etc/COPYING new file mode 100644 index 0000000..1942c43 --- /dev/null +++ b/etc/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/etc/COPYING.LIB b/etc/COPYING.LIB new file mode 100644 index 0000000..07960d8 --- /dev/null +++ b/etc/COPYING.LIB @@ -0,0 +1,483 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this library; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/etc/DEBUG b/etc/DEBUG new file mode 100644 index 0000000..045444d --- /dev/null +++ b/etc/DEBUG @@ -0,0 +1,143 @@ +Debugging GNU Emacs +Copyright (c) 1985 Richard M. Stallman. + + 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 changed them. + +On 4.2 you will probably find that dbx does not work for +debugging GNU Emacs. For one thing, dbx does not keep the +inferior process's terminal modes separate from its own. +For another, dbx does not put the inferior in a separate +process group, which makes trouble when an inferior uses +interrupt input, which GNU Emacs must do on 4.2. + +dbx has also been observed to have other problems, +such as getting incorrect values for register variables +in stack frames other than the innermost one. + +The Emacs distribution now contains GDB, the new source-level +debugger for the GNU system. GDB works for debugging Emacs. +GDB currently runs on vaxes under 4.2 and on Sun 2 and Sun 3 +systems. + + +** Some useful techniques + +`Fsignal' is a very useful place to stop in. +All Lisp errors go through there. + +It is useful, when debugging, to have a guaranteed way +to return to the debugger at any time. If you are using +interrupt-driven input, which is the default, then Emacs is using +RAW mode and the only way you can do it is to store +the code for some character into the variable stop_character: + + set stop_character = 29 + +makes Control-] (decimal code 29) the stop character. +Typing Control-] will cause immediate stop. You cannot +use the set command until the inferior process has been started. +Put a breakpoint early in `main', or suspend the Emacs, +to get an opportunity to do the set command. + +If you are using cbreak input (see the Lisp function set-input-mode), +then typing Control-g will cause a SIGINT, which will return control +to the debugger immediately unless you have done + + ignore 3 (in dbx) +or handle 3 nostop noprint (in gdb) + +You will note that most of GNU Emacs is written to avoid +declaring a local variable in an inner block, even in +cases where using one would be the cleanest thing to do. +This is because dbx cannot access any of the variables +in a function which has even one variable defined in an +inner block. A few functions in GNU Emacs do have variables +in inner blocks, only because I wrote them before realizing +that dbx had this problem and never rewrote them to avoid it. + +I believe that GDB does not have such a problem. + + +** Examining Lisp object values. + +When you have a live process to debug, and it has not encountered a +fatal error, you can use the GDB command `pr'. First print the value +in the ordinary way, with the `p' command. Then type `pr' with no +arguments. This calls a subroutine which uses the Lisp printer. + +If you can't use this command, either because the process can't run +a subroutine or because the data is invalid, you can fall back on +lower-level commands. + +Use the `xtype' command to print out the data type of the last data +value. Once you know the data type, use the command that corresponds +to that type. Here are these commands: + + xint xptr xwindow xmarker xoverlay xmiscfree xintfwd xboolfwd xobjfwd + xbufobjfwd xkbobjfwd xbuflocal xbuffer xsymbol xstring xvector xframe + xwinconfig xcompiled xcons xcar xcdr xsubr xprocess xfloat xscrollbar + +Each one of them applies to a certain type or class of types. +(Some of these types are not visible in Lisp, because they exist only +internally.) + +Each x... command prints some information about the value, and +produces a GDB value (subsequently available in $) through which you +can get at the rest of the contents. + +In general, most of the rest of the contents will be addition Lisp +objects which you can examine in turn with the x... commands. + +** If GDB does not run and your debuggers can't load Emacs. + +On some systems, no debugger can load Emacs with a symbol table, +perhaps because they all have fixed limits on the number of symbols +and Emacs exceeds the limits. Here is a method that can be used +in such an extremity. Do + + nm -n temacs > nmout + strip temacs + adb temacs + 0xd:i + 0xe:i + 14:i + 17:i + :r -l loadup (or whatever) + +It is necessary to refer to the file `nmout' to convert +numeric addresses into symbols and vice versa. + +It is useful to be running under a window system. +Then, if Emacs becomes hopelessly wedged, you can create +another window to do kill -9 in. kill -ILL is often +useful too, since that may make Emacs dump core or return +to adb. + + +** Debugging incorrect screen updating. + +To debug Emacs problems that update the screen wrong, it is useful +to have a record of what input you typed and what Emacs sent to the +screen. To make these records, do + +(open-dribble-file "~/.dribble") +(open-termscript "~/.termscript") + +The dribble file contains all characters read by Emacs from the +terminal, and the termscript file contains all characters it sent to +the terminal. The use of the directory `~/' prevents interference +with any other user. + +If you have irreproducible display problems, put those two expressions +in your ~/.emacs file. When the problem happens, exit the Emacs that +you were running, kill it, and rename the two files. Then you can start +another Emacs without clobbering those files, and use it to examine them. diff --git a/etc/DISTRIB b/etc/DISTRIB new file mode 100644 index 0000000..3dd537c --- /dev/null +++ b/etc/DISTRIB @@ -0,0 +1,136 @@ + -*- text -*- + + XEmacs availability information. Last Modified: 17-Apr-97. + +XEmacs is available via anonymous FTP from ftp.xemacs.org (128.174.252.16) +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. 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 +that is networkologically close to you. If you know of other mirrors +of the XEmacs archives, please send us mail and we will list them here +as well. + +There are mailing lists and newsgroups specifically for discussing and +reporting bugs in XEmacs; see the file MAILINGLISTS in this directory. + +The FTP and ordering information in the remainder of this file applies +to the versions of GNU Emacs distributed by the Free Software +Foundation, not to XEmacs. + +----------------------------------------------------------------------- + +For an order form for all Emacs and FSF distributions deliverable from +the USA, see the file `ORDERS' in this directory (etc/ in the GNU +Emacs distribution or /pub/gnu/GNUinfo on prep.ai.mit.edu). For a +European order form, see `ORDERS.EUROPE'. For a Japan order form, +see `ORDERS.JAPAN'. + + GNU Emacs availability information, June 1995 +Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995 Free Software Foundation, Inc. + + Permission is granted to anyone to make or distribute + verbatim copies of this document provided that the + copyright notice and this permission notice are preserved. + +GNU Emacs is legally owned by the Free Software Foundation, but we +regard the foundation more as its custodian on behalf of the public. + +In the GNU project, when we speak of "free software", this refers to +liberty, not price. Specifically, it refers to the users' freedom to +study, copy, change and improve the software. Sometimes users pay +money for copies of GNU software, and sometimes they get copies at no +charge. But regardless of how they got the software, or whether it +was modified by anyone else along the way, they have the freedom to +copy and change it--those freedoms are what "free software" means. + +The precise conditions for copying and modification are stated in the +document "GNU General Public License," a copy of which is required to +be distributed with every copy of GNU Emacs. It is usually in a file +named `COPYING' in the same directory as this file. These conditions +are designed to make sure that everyone who has a copy of GNU Emacs +(including modified versions) has the freedom to redistribute and +change it. + +If you do not know anyone to get a copy of GNU Emacs from, you can +order a tape, cd-rom, or floppy diskette from the Free Software +Foundation. We distribute Emacs version 18 and 19 in different +formats for many machines. We also distribute nicely typeset copies +of the Emacs user manual, Emacs Lisp Reference Manual, the Emacs +reference card, etc. See file `ORDERS'. + +If you have Internet access, you can copy the latest Emacs +distribution from hosts, such as prep.ai.mit.edu. There are several +ways to do this; see the file `FTP' for more information. Even +better, get the latest version of the file from `/pub/gnu/GNUinfo/FTP' +on prep.ai.mit.edu for the most current arrangements. It may also be +possible to copy Emacs via uucp; the file `FTP' contains information +on that too. + +Emacs has been run on both Berkeley Unix and System V Unix, on a +variety of types of cpu. It also works on VMS and on Apollo +computers, though with some deficiencies that reflect problems in +these operating systems. See the file `MACHINES' in this directory +(see above) for a full list of machines that GNU Emacs has been tested +on, with machine-specific installation notes and warnings. There is +also Demacs that works on newer MS-DOS machines (see file `ORDERS'). + +Note that there is significant variation between Unix systems +supposedly running the same version of Unix; it is possible that what +works in GNU Emacs for me does not work on your system due to such an +incompatibility. Since I must avoid reading Unix source code, I +cannot even guess what such problems may exist. + +GNU Emacs is distributed with no warranty (see the General Public +License for full details, in the file `COPYING' in this directory (see +above)), and neither I nor the Free Software Foundation promises any +kind of support or assistance to users. The foundation keeps a list +of people who are willing to offer support and assistance for hire. +See the file `SERVICE'. You can get the latest version from +prep.ai.mit.edu in file `/pub/gnu/GNUinfo/SERVICE'. + +However, we plan to continue to improve GNU Emacs and keep it +reliable, so please send me any complaints and suggestions you have. +I will probably fix anything that I consider a malfunction. I may +make improvements that are suggested, but I may choose not to. +Improving Emacs is not my highest priority now. + +If you are on the Internet, report bugs to +bug-gnu-emacs@prep.ai.mit.edu; on UUCP, use the address +...!uunet!prep.ai.mit.edu!bug-gnu-emacs. Otherwise, phone or write the +foundation at: + Free Software Foundation + 59 Temple Place - Suite 330 + Boston, MA 02111-1307 + Voice: +1-617-542-5942 + Fax: +1-617-542-2652 + +General questions about the GNU Project can be asked of +gnu@prep.ai.mit.edu. + +If you are a computer manufacturer, I encourage you to ship a copy of +GNU Emacs with every computer you deliver. The same copying +permission terms apply to computer manufacturers as to everyone else. +You should consider making a donation to help support the GNU project; +if you estimate what it would cost to distribute some commercial +product and divide it by five, that is a good amount. + +If you like GNU Emacs, please express your satisfaction with a +donation: send me or the Foundation what you feel Emacs has been worth +to you. If you are glad that I developed GNU Emacs and distribute it +as freeware, rather than following the obstructive and antisocial +practices typical of software developers, reward me. If you would +like the Foundation to develop more free software, contribute. + +Your donations will help to support the development of more useful +software to be distributed on the same basis as GNU Emacs. Eventually +we will have a complete imitation of the Unix operating system, called +GNU (Gnu's Not Unix), which will run Unix user programs. For more +information on GNU, see the file `GNU' in this directory (see above). + + Richard M Stallman + Chief GNUisance, + President of the Free Software Foundation diff --git a/etc/Emacs.ad b/etc/Emacs.ad new file mode 100644 index 0000000..4754a7f --- /dev/null +++ b/etc/Emacs.ad @@ -0,0 +1,284 @@ +! This is the app-defaults file for XEmacs. +! +! This used to be identical to sample.Xdefaults, but the resources +! below have been rewritten to be as general as possible to avoid +! overriding user resources. Other than the form rewriting, both +! files should be kept in sync. +! +! The resources below are loaded into the XEmacs executable at compile-time: +! changes to .../etc/Emacs.ad made after XEmacs has been built will have no +! effect. +! +! However, you may copy .../etc/Emacs.ad to /usr/lib/X11/app-defaults/Emacs +! (or whatever the standard app-defaults directory is at your site) to cause +! it to be consulted at run-time. (Do this only for site-wide customizations: +! personal customizations should be put into ~/.Xdefaults instead.) +! Note that the file must be named Emacs, not XEmacs. +! +! See the NEWS file (C-h n) or XEmacs manual (C-h i) for a description of +! the various resources and the syntax for setting them. +! +! Energize users: note that this is not the same app-defaults file that is +! used with the Energize-specific version of XEmacs. + + +! Colors and backgrounds. +! ====================== +! The contrasts of these colors will cause them to map to the appropriate +! one of "black" or "white" on monochrome systems. +! +! The valid color names on your system can be found by looking in the file +! `rgb.txt', usually found in /usr/lib/X11/ or /usr/openwin/lib/X11/. + +! Set the modeline colors. +!Emacs.modeline*attributeForeground: Black +!Emacs.modeline*attributeBackground: Gray75 + +! Set the color of the text cursor. +!Emacs.text-cursor*attributeBackground: Red3 + +! If you want to set the color of the mouse pointer, do this: +! Emacs.pointer*attributeForeground: Black +! If you want to set the background of the mouse pointer, do this: +! Emacs.pointer*attributeBackground: White +! Note that by default, the pointer foreground and background are the same +! as the default face. + +! Set the menubar colors. This overrides the default foreground and +! background colors specified above. +*menubar*Foreground: Gray30 +*menubar*Background: Gray80 +! This is for buttons in the menubar. +! Yellow would be better, but that would map to white on monochrome. +*menubar*buttonForeground: Blue +*XlwMenu*highlightForeground: Red +*XlwMenu*titleForeground: Maroon +*XlwMenu*selectColor: ForestGreen +*XmToggleButton*selectColor: ForestGreen + +! Specify the colors of popup menus. +*popup*Foreground: Black +*popup*Background: Gray80 + +! Specify the colors of the various sub-widgets of the dialog boxes. +*dialog*Foreground: Black +! #A5C0C1 is a shade of blue +*dialog*Background: #A5C0C1 +! The following three are for Motif dialog boxes ... +*dialog*XmTextField*Background: WhiteSmoke +*dialog*XmText*Background: WhiteSmoke +*dialog*XmList*Background: WhiteSmoke +! While this one is for Athena dialog boxes. +*dialog*Command*Background: WhiteSmoke + +! Xlw Scrollbar colors +*XlwScrollBar*Foreground: Gray30 +*XlwScrollBar*Background: Gray80 +*XmScrollBar*Foreground: Gray30 +*XmScrollBar*Background: Gray80 + +! +! The Lucid Scrollbar supports two added resources, SliderStyle is either +! "plain" (default) or "dimple". Dimple puts a small dimple in the middle +! of the slider that depresses when the slider is clicked on. ArrowPosition is +! either "opposite" (default) or "same". Opposite puts the arrows at opposite +! of the scrollbar, same puts both arrows at the same end, like the Amiga. +! +! Emacs*XlwScrollBar.SliderStyle: dimple +! Emacs*XlwScrollBar.ArrowPosition: opposite + + +! +! If you want to turn off a toolbar, set its height or width to 0. +! The correct size value is not really arbitrary. We only control it +! this way in order to avoid excess frame resizing when turning the +! toolbars on and off. +! +! To change the heights and widths of the toolbars: +! +! Emacs.topToolBarHeight: 37 +! Emacs.bottomToolBarHeight: 0 +! Emacs.leftToolBarWidth: 0 +! Emacs.rightToolBarWidth: 0 + +!*topToolBarShadowColor: Gray90 +!*bottomToolBarShadowColor: Gray40 +!*backgroundToolBarColor: Gray80 +*toolBarShadowThickness: 2 + + +! If you want to turn off vertical scrollbars, or change the default +! pixel width of the vertical scrollbars, do it like this (0 width +! means no vertical scrollbars): +! +! Emacs.scrollBarWidth: 0 +! +! To change it for a particular frame, do this: +! +! Emacs*FRAME-NAME.scrollBarWidth: 0 + + +! If you want to turn off horizontal scrollbars, or change the default +! pixel height of the horizontal scrollbars, do it like this (0 height +! means no horizontal scrollbars): +! +! Emacs.scrollBarHeight: 0 +! +! To change it for a particular frame, do this: +! +! Emacs*FRAME-NAME.scrollBarHeight: 0 + + +! To dynamically change the labels used for menubar buttons... +! +! Emacs*XlwMenu.resourceLabels: True +! Emacs*XlwMenu.newFrame.labelString: Open Another Window + +! To have the Motif scrollbars on the left instead of the right, do this: +! +! Emacs*scrollBarPlacement: BOTTOM_LEFT +! +! To have the Athena scrollbars on the right, use `BOTTOM_RIGHT' instead + +! To have Motif scrollbars act more like Xt scrollbars... +! +! Emacs*XmScrollBar.translations: #override \n\ +! : PageDownOrRight(0) \n\ +! : PageUpOrLeft(0) + +! Fonts. +! ====== +! XEmacs requires the use of XLFD (X Logical Font Description) format font +! names, which look like +! +! *-courier-medium-r-*-*-*-120-*-*-*-*-*-* +! +! if you use any of the other, less strict font name formats, some of which +! look like +! lucidasanstypewriter-12 +! and fixed +! and 9x13 +! +! then XEmacs won't be able to guess the names of the bold and italic versions. +! All X fonts can be referred to via XLFD-style names, so you should use those +! forms. See the man pages for X(1), xlsfonts(1), and xfontsel(1). + + +! The default font for the text area of XEmacs is chosen at run-time +! by lisp code which tries a number of different possibilities in order +! of preference. If you wish to override it, use this: +! +! Emacs.default.attributeFont: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* + +! If you choose a font which does not have an italic version, you can specify +! some other font to use for it here: +! +! Emacs.italic.attributeFont: -*-courier-medium-o-*-*-*-120-*-*-*-*-iso8859-* +! +! And here is how you would set the background color of the `highlight' face, +! but only on the screen named `debugger': +! +! Emacs*debugger.highlight.attributeBackground: PaleTurquoise +! +! See the NEWS file (C-h n) for a more complete description of the resource +! syntax of faces. + + +! Font of the modeline, menubar and pop-up menus. +! Note that the menubar resources do not use the `face' syntax, since they +! are X toolkit widgets and thus outside the domain of XEmacs proper. +! +*menubar*Font: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-* +*popup*Font: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-* + +! Font in the Motif dialog boxes. +! (Motif uses `fontList' while most other things use `font' - if you don't +! know why you probably don't want to.) +! +*XmDialogShell*FontList: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-* +*XmTextField*FontList: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* +*XmText*FontList: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* +*XmList*FontList: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* + +! Font in the Athena dialog boxes. +! I think 14-point looks nicer than 12-point. +! Some people use 12-point anyway because you get more text, but +! there's no purpose at all in doing this for dialog boxes. + +*Dialog*Font: -*-helvetica-bold-r-*-*-*-140-*-*-*-*-iso8859-* + +! Dialog box translations. +! ======================= + +! This accelerator binds in a dialog box to on button1 +*dialog*button1.accelerators:#override\ +Return: ArmAndActivate()\n\ +KP_Enter: ArmAndActivate()\n\ +Ctrlm: ArmAndActivate()\n + +! Translations to make the TextField widget behave more like XEmacs +*XmTextField*translations: #override\n\ + !osfBackSpace: delete-previous-character()\n\ + !osfDelete: delete-previous-character()\n\ + !Ctrlh: delete-previous-character()\n\ + !Ctrld: delete-next-character()\n\ + !MetaosfDelete: delete-previous-word()\n\ + !MetaosfBackSpace: delete-previous-word()\n\ + !Metad: delete-next-word()\n\ + !Ctrlk: delete-to-end-of-line()\n\ + !Ctrlg: process-cancel()\n\ + !Ctrlb: backward-character()\n\ + !osfLeft: backward-character()\n\ + !Ctrlf: forward-character()\n\ + !osfRight: forward-character()\n\ + !Metab: backward-word()\n\ + !MetaosfLeft: backward-word()\n\ + !Metaf: forward-word()\n\ + !MetaosfRight: forward-word()\n\ + !Ctrle: end-of-line()\n\ + !Ctrla: beginning-of-line()\n\ + !Ctrlw: cut-clipboard()\n\ + !Metaw: copy-clipboard()\n\ + : copy-primary()\n + +! With the XEmacs typeahead it's better to not have space be bound to +! ArmAndActivate() for buttons that appear in dialog boxes. This is +! not 100% Motif compliant but the benefits far outweight the +! compliancy problem. +*dialog*XmPushButton*translations:#override\n\ + : Arm()\n\ + ,: Activate()\ + Disarm()\n\ + (2+): MultiArm()\n\ + (2+): MultiActivate()\n\ + : Activate()\ + Disarm()\n\ + osfSelect: ArmAndActivate()\n\ + osfActivate: ArmAndActivate()\n\ + osfHelp: Help()\n\ + ~Shift ~Meta ~Alt Return: ArmAndActivate()\n\ + : Enter()\n\ + : Leave()\n + +! XIM input method style +! ======================= + +! ximStyles is a (whitespace or comma-separated) list of XIMStyles in +! order of user's preference. +! Choose a subset of the following styles or reorder to taste +*ximStyles: XIMPreeditPosition|XIMStatusArea\ + XIMPreeditPosition|XIMStatusNothing\ + XIMPreeditPosition|XIMStatusNone\ + XIMPreeditNothing|XIMStatusArea\ + XIMPreeditNothing|XIMStatusNothing\ + XIMPreeditNothing|XIMStatusNone\ + XIMPreeditNone|XIMStatusArea\ + XIMPreeditNone|XIMStatusNothing\ + XIMPreeditNone|XIMStatusNone + +! XIM Preedit and Status foreground and background +*EmacsFrame.ximForeground: black +*EmacsFrame.ximBackground: white + +! XIM fontset (defaults to system fontset default) +! *EmacsFrame.FontSet: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-* diff --git a/etc/FTP b/etc/FTP new file mode 100644 index 0000000..965f0b9 --- /dev/null +++ b/etc/FTP @@ -0,0 +1,282 @@ + -*- text -*- + + 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/. + +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://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/ + ftp://ftp.th-darmstadt.de/pub/editors/xemacs/ + ftp://sunsite.doc.ic.ac.uk/gnu/xemacs/ + ftp://ftp.lip6.fr/pub/emacs/xemacs/ + ftp://uiarchive.cso.uiuc.edu/pub/packages/xemacs/ + ftp://ftp.technion.ac.il/pub/unsupported/gnu/xemacs/ + ftp://ftp.linux.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/xemacs/ + ftp://sunsite.icm.edu.pl/pub/unix/xemacs + + +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 +that is networkologically close to you. If you know of other mirrors +of the XEmacs archives, please send us mail and we will list them here +as well. + +There are mailing lists and newsgroups specifically for discussing and +reporting bugs in XEmacs; see the file MAILINGLISTS in this directory. + +The FTP and ordering information in the remainder of this file applies +to the versions of GNU Emacs distributed by the Free Software Foundation, +not to XEmacs. + +----------------------------------------------------------------------- +How to get GNU Software by Internet FTP or by UUCP. Last updated 11 June 95. + +* Please send improvements to this file to gnu@prep.ai.mit.edu. + +* No Warranties + +We distribute software in the hope that it will be useful, but without +any warranty. No author or distributor of this software accepts +responsibility to anyone for the consequences of using it or for +whether it serves any particular purpose or works at all, unless he +says so in writing. + +* Updates + +If you find this file in the Emacs distribution, there is a chance it +is out of date. If you plan to FTP files from a GNU FTP host, you +might as well start by FTPing the current version of this file, which +is `/pub/gnu/GNUinfo/FTP'. + +* How to FTP + +Use the ftp program on your system (ask locally if you can't find it) +to connect to the host you are ftping from. Unless indicated +otherwise, login in as user "anonymous", with password: "your e-mail +address" and set "binary" mode (to transfer all eight bits in each +byte). + +* FTPing GNU Software + +** How to FTP GNU Emacs + +If you are on the Internet (see also "** Alternative Internet FTP +Sources" below), you can at present copy the latest distribution +version of GNU Emacs from the file /pub/gnu/emacs-M.N.tar on host +prep.ai.mit.edu (or the file /pub/gnu/emacs-M.N.tar.gz which has been +run through gzip after tar). M and N stand for version numbers; look +at a listing of the directory through ftp to see what version is +available. These files are about 11 and 4 megabytes long, +respectively. After you unpack the distribution, be sure to look at +the files README and INSTALL. + +Because of difficulties in transferring large files, sometimes a split +version of the tar file is created. This would be in a directory +named /pub/gnu/emacs-M.N.tar-split or perhaps +/pub/gnu/emacs-M.N.tar.gz-split, containing files of 100000 characters +each. There is generally no trouble in ftping files of this size. +They can be combined with cat to make a tar file or compressed tar +file. If you can't find such files on prep.ai.mit.edu, have a look at +archive.cis.ohio-state.edu. + +ALWAYS USE BINARY/IMAGE MODE TO TRANSFER THESE FILES! +Text mode does not work for tar files or compressed files. + +Some ftp'ers have found it necessary for successful file transfer: + - to explicitly use prep.ai.mit.edu internet address: +18.159.0.42 (as of 18 June 95) + +Files of differences from previous widely distributed GNU Emacs +versions to the present version are also available on prep.ai.mit.edu +under names of the form emacs.diff-OO.OO-NN.NN in directory /pub/gnu. +These are made with diff -rc2. Sometimes there are versions +compressed with gzip of these difference files as well; their names +have .gz appended. + +The Emacs manual in source form is included in the distribution. The +dvi file produced by TeX is not included, but a copy may be available +for ftp under the name /pub/gnu/emacs.dvi. + +The Emacs Lisp Reference Manual is in a separate file: + /pub/gnu/elisp-manual-NN.tar.gz + +** VMS FTP sites with GNU Software +You can anonymously ftp a VMS version of GNU emacs from: + - ftp.stacken.kth.se:[.GNU-VMS] - GNU Emacs and some other VMS +ports (and some VMS binaries) of GNU software + - mango.rsmas.miami.edu has a VMS version of the GCC/G++ compiler. +Contact angel@flipper.miami.edu (angel li) for details. + - addvax.llnl.gov - GNU Emacs + - VMSD.OAC.UCI.EDU - GNU Emacs + - RIGEL.EFD.LTH.SE [130.235.48.3] - GNU Emacs + - ctrsci.cc.utah.edu - GNU Emacs - The 00readme.txt file gives details + - cc.utah.edu [128.110.8.24] - misc. GNU software - user +anonymous, pass guest. The 00README.txt file gives details. + +** Other GNU Software and How To FTP It + +Other GNU software is available on prep.ai.mit.edu under directory +/pub/gnu. diff files to convert between versions (like those used for +GNU Emacs), exist for some of these programs. Some programs have misc +support files as well. Have a look on prep to see which ones. +Compressed versions of the tar or diff files are often available +(indicated by a .gz suffix and made with the `gzip' program). Some of +this software is in beta test (probably still buggy), and is being +made available for use by hackers who like to test software. + +The file /pub/gnu/DESCRIPTIONS has a list of the packages distributed +on prep.ai.mit.edu with a brief description explaining what +each one can be used for. + +More information about these programs can typically be found in the +GNU Bulletin. To receive a copy, write to gnu@prep.ai.mit.edu. + +** Scheme and How to FTP It + +The latest distribution version of C Scheme is available via anonymous FTP +from altdorf.ai.mit.edu in /archive/scheme-X.XX/ (where X.XX is some version +number). + +Read the files INSTALL and README in the top level C Scheme directory. + +** TeX and How to Obtain It + +We don't distribute TeX now, but it is free software. + +TeX is a document formatter that is used, among other things, by the FSF +for all its documentation. You will need it if you want to make printed +manuals. + +TeX is freely redistributable. You can get it by ftp, tape, or CD/ROM. + +*** For FTP instructions, retrieve the file +ftp.cs.umb.edu:pub/tex/unixtex.ftp. (We don't include it here because it +changes relatively frequently. Sorry.) + +*** For TeX on a single tape (4mm DAT or QIC-24), ordering information is +available from unixtex@u.washington.edu. A distribution fee in the area +of US$210.00 covers administrative costs. Tapes will be available at +least through summer of 1994. + +*** The FSF hopes soon to distribute tapes of TeX itself, after the +University of Washington distribution service goes away. + +*** A minimal TeX collection (enough to process Texinfo files, anyway) +is included on the GNU source CD/ROM. See the file ORDERS in this +directory for more information. + +** Alternative Internet FTP Sources + +Please do NOT use a site outside your country, until you have checked +all sites inside your country, and then your continent. Trans-ocean +TCP/IP links are very expensive and usually very low speed. + +The administrators of louie.udel.edu maintains copies of GNU Emacs. +The files are available via anonymous ftp under directory ~ftp/gnu. + +Emacs and other GNU programs may be available via anonymous ftp from +these US sites: ftp.kpc.com:/pub/mirror/gnu (Silicon Valley, CA) +ftp.hawaii.edu:/mirrors/gnu, f.ms.uky.edu:/pub3/gnu, +ftp.digex.net:/pub/gnu (Internet address 164.109.10.23, nightly full +mirror, ran by mcguire@digex.net), wuarchive.wustl.edu:/systems/gnu, +col.hp.com:/mirrors/gnu, ftp.cs.columbia.edu:/archives/gnu/prep, +uiarchive.cso.uiuc.edu:/pub/gnu (Internet address 128.174.5.14, +nightly full mirror, ran by ftpadmin@uiuc.edu), +jaguar.utah.edu:/gnustuff, gatekeeper.dec.com:/pub/GNU, +labrea.stanford.edu, archive.cis.ohio-state.edu, and +ftp.uu.net:/archive/systems/gnu. + +And these foreign sites: ftp.cs.ubc.ca:/mirror2/gnu (Western Canada, +daily full mirror, ran by ftp-admin@cs.ubc.ca), +ftp.inf.utfsm.cl:/pub/gnu (Chile 146.83.198.3 nightly full mirror, ran +by ftp@inf.utfsm.cl), ftp.unicamp.br:/pub/gnu (Brazil manual mirror, +ran by oliva@dcc.unicamp.br), archie.au:/gnu (Australia (archie.oz or +archie.oz.au for ACSnet)), ftp.technion.ac.il:/pub/unsupported/gnu +(Israel, daily full mirror, ran by ftp-admin), ftp.sun.ac.za:/pub/gnu +(South Africa), ftp.etsimo.uniovi.es:/pub/gnu (Spain), +ftp.mcc.ac.uk:/pub/gnu (130.88.203.12 daily full mirror, ran by +root@ftp.mcc.ac.uk), unix.hensa.ac.uk:/mirrors/uunet/systems/gnu, +ftp.warwick.ac.uk (137.205.192.14 daily full mirror, ran by +unixhelp@warwick.ac.uk), ftp.informatik.tu-muenchen.de, +ftp.informatik.rwth-aachen.de, or germany.eu.net (mirror ran by +archive-admin@germany.eu.net) (Germany), isy.liu.se (Sweden), +ftp.stacken.kth.se or ftp.luth.se:/pub/unix/gnu (Sweden), +ftp.sunet.se:/pub/gnu (Sweden 130.238.127.3 daily mirror, ran by +archive@ftp.sunet.se (also mirrors the Mailing List Archives) +ftp.nl.net (Netherlands), ftp.win.tue.nl:/pub/gnu (Netherlands +131.155.70.100 daily mirror, ran by ftp@win.tue.nl), +ftp.funet.fi:/pub/gnu (Finland 128.214.6.100, ran by gnu-adm), +ftp.denet.dk (Denmark), ugle.unit.no (Norway 129.241.1.97), +ftp.eunet.ch or nic.switch.ch:/mirror/gnu (Switzerland), +irisa.irisa.fr:/pub/gnu or ftp.univ-lyon1.fr:pub/gnu (ran by +ftpmaint@ftp.univ-lyon1.fr) (France), ftp.ieunet.ie:pub/gnu (Ireland +192.111.39.1 weekly mirror, ran by archive@ieunet.ie), archive.eu.net +(Europe 192.16.202.1), cair-archive.kaist.ac.kr:/pub/gnu (Korea +143.248.11.171, ran by ftpkeeper@cair-archive.kaist.ac.kr), +ftp.nectec.or.th:/pub/mirrors/gnu (Thailand 192.150.251.32 daily +mirror, ran by ftp@nwg.nectec.or.th), +utsun.s.u-tokyo.ac.jp:/ftpsync/prep or ftp.cs.titech.ac.jp (Japan, +nemacs, the japanese port of GNU Emacs, is under ~ftp/JAPAN). + +* Getting GNU software in Great Britain + +jpo@cs.nott.ac.uk is willing to distribute those GNU sources he has +available. The smaller items are available from the info-server (send +to info-server@cs.nott.ac.uk) the larger items by negotiation. Due to +communication costs this service is only available within the UK. + +BattenIG@computer-science.birmingham.ac.uk (aka +I.G.Batten@fulcrum.bt.co.uk) is also willing to distribute those GNU +sources he has. He can also write tapes in qic-21 and qic-24 formats. + +lmjm@doc.ic.ac.uk is willing to distribute those GNU sources he has +along with comp.sources.unix, comp.sources.x, X windows et al. The +archive, on src.doc.ic.ac.uk in directory /gnu, is available via ftp +over the Internet (on 146.169.3.7), ftam over IXI, HTTP, FSP, Gopher, +ftpmail, NFS, Lanmanger over IP, telnet, and uucp. Due to +communication costs this service is only available within the UK. +Mail to info-server@doc.ic.ac.uk for details. He can also write sun +cartridge or exabyte tapes. + +UK sites with just anonymous FTP access are in the above list. + +* Getting GNU software via UUCP + +OSU is distributing via UUCP: most GNU software, MIT C Scheme, +Compress, News, RN, NNTP, Patch, some Appletalk stuff, some of the +Internet Requests For Comment (RFC) et al.. See their periodic +postings on the Usenet newsgroup comp.sources.d for informational +updates. Current details from or +<...!osu-cis!staff>. + +Information on how to uucp some GNU programs is available via +electronic mail from: uunet!hutch!barber, hqda-ai!merlin, acornrc!bob, +hao!scicom!qetzal!upba!ugn!nepa!denny, ncar!noao!asuvax!hrc!dan, +bigtex!james (aka james@bigtex.cactus.org), oli-stl!root, +src@contrib.de (Germany), toku@dit.co.jp (Japan) and info@ftp.uu.net. + +* If You Like The Software + +If you like the software developed and distributed by the Free +Software Foundation, please express your satisfaction with a donation. +Your donations will help to support the Foundation and make our future +efforts successful, including a complete development and operating +system, called GNU (Gnu's Not Un*x), which will run Un*x user +programs. For more information on GNU and the Foundation, contact us +at the above address. + +Ordering a distribution tape from the Foundation is often a good +way to bring your company or university to make a donation. diff --git a/etc/GNU b/etc/GNU new file mode 100644 index 0000000..e535000 --- /dev/null +++ b/etc/GNU @@ -0,0 +1,532 @@ +Copyright (C) 1985, 1993 Free Software Foundation, Inc. + + Permission is granted to anyone to make or distribute verbatim copies +of this document, 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. + + Modified versions may not be made. + +The GNU Manifesto +***************** + + The GNU Manifesto which appears below was written by Richard + Stallman at the beginning of the GNU project, to ask for + participation and support. For the first few years, it was + updated in minor ways to account for developments, but now it + seems best to leave it unchanged as most people have seen it. + + Since that time, we have learned about certain common + misunderstandings that different wording could help avoid. + Footnotes added in 1993 help clarify these points. + + For up-to-date information about the available GNU software, + please see the latest issue of the GNU's Bulletin. The list is + much too long to include here. + +What's GNU? Gnu's Not Unix! +============================ + + GNU, which stands for Gnu's Not Unix, is the name for the complete +Unix-compatible software system which I am writing so that I can give it +away free to everyone who can use it.(1) Several other volunteers are +helping me. Contributions of time, money, programs and equipment are +greatly needed. + + So far we have an Emacs text editor with Lisp for writing editor +commands, a source level debugger, a yacc-compatible parser generator, +a linker, and around 35 utilities. A shell (command interpreter) is +nearly completed. A new portable optimizing C compiler has compiled +itself and may be released this year. An initial kernel exists but +many more features are needed to emulate Unix. When the kernel and +compiler are finished, it will be possible to distribute a GNU system +suitable for program development. We will use TeX as our text +formatter, but an nroff is being worked on. We will use the free, +portable X window system as well. After this we will add a portable +Common Lisp, an Empire game, a spreadsheet, and hundreds of other +things, plus on-line documentation. We hope to supply, eventually, +everything useful that normally comes with a Unix system, and more. + + GNU will be able to run Unix programs, but will not be identical to +Unix. We will make all improvements that are convenient, based on our +experience with other operating systems. In particular, we plan to +have longer file names, file version numbers, a crashproof file system, +file name completion perhaps, terminal-independent display support, and +perhaps eventually a Lisp-based window system through which several +Lisp programs and ordinary Unix programs can share a screen. Both C +and Lisp will be available as system programming languages. We will +try to support UUCP, MIT Chaosnet, and Internet protocols for +communication. + + GNU is aimed initially at machines in the 68000/16000 class with +virtual memory, because they are the easiest machines to make it run +on. The extra effort to make it run on smaller machines will be left +to someone who wants to use it on them. + + To avoid horrible confusion, please pronounce the `G' in the word +`GNU' when it is the name of this project. + +Why I Must Write GNU +==================== + + I consider that the golden rule requires that if I like a program I +must share it with other people who like it. Software sellers want to +divide the users and conquer them, making each user agree not to share +with others. I refuse to break solidarity with other users in this +way. I cannot in good conscience sign a nondisclosure agreement or a +software license agreement. For years I worked within the Artificial +Intelligence Lab to resist such tendencies and other inhospitalities, +but eventually they had gone too far: I could not remain in an +institution where such things are done for me against my will. + + So that I can continue to use computers without dishonor, I have +decided to put together a sufficient body of free software so that I +will be able to get along without any software that is not free. I +have resigned from the AI lab to deny MIT any legal excuse to prevent +me from giving GNU away. + +Why GNU Will Be Compatible with Unix +==================================== + + Unix is not my ideal system, but it is not too bad. The essential +features of Unix seem to be good ones, and I think I can fill in what +Unix lacks without spoiling them. And a system compatible with Unix +would be convenient for many other people to adopt. + +How GNU Will Be Available +========================= + + GNU is not in the public domain. Everyone will be permitted to +modify and redistribute GNU, but no distributor will be allowed to +restrict its further redistribution. That is to say, proprietary +modifications will not be allowed. I want to make sure that all +versions of GNU remain free. + +Why Many Other Programmers Want to Help +======================================= + + I have found many other programmers who are excited about GNU and +want to help. + + Many programmers are unhappy about the commercialization of system +software. It may enable them to make more money, but it requires them +to feel in conflict with other programmers in general rather than feel +as comrades. The fundamental act of friendship among programmers is the +sharing of programs; marketing arrangements now typically used +essentially forbid programmers to treat others as friends. The +purchaser of software must choose between friendship and obeying the +law. Naturally, many decide that friendship is more important. But +those who believe in law often do not feel at ease with either choice. +They become cynical and think that programming is just a way of making +money. + + By working on and using GNU rather than proprietary programs, we can +be hospitable to everyone and obey the law. In addition, GNU serves as +an example to inspire and a banner to rally others to join us in +sharing. This can give us a feeling of harmony which is impossible if +we use software that is not free. For about half the programmers I +talk to, this is an important happiness that money cannot replace. + +How You Can Contribute +====================== + + I am asking computer manufacturers for donations of machines and +money. I'm asking individuals for donations of programs and work. + + One consequence you can expect if you donate machines is that GNU +will run on them at an early date. The machines should be complete, +ready to use systems, approved for use in a residential area, and not +in need of sophisticated cooling or power. + + I have found very many programmers eager to contribute part-time +work for GNU. For most projects, such part-time distributed work would +be very hard to coordinate; the independently-written parts would not +work together. But for the particular task of replacing Unix, this +problem is absent. A complete Unix system contains hundreds of utility +programs, each of which is documented separately. Most interface +specifications are fixed by Unix compatibility. If each contributor +can write a compatible replacement for a single Unix utility, and make +it work properly in place of the original on a Unix system, then these +utilities will work right when put together. Even allowing for Murphy +to create a few unexpected problems, assembling these components will +be a feasible task. (The kernel will require closer communication and +will be worked on by a small, tight group.) + + If I get donations of money, I may be able to hire a few people full +or part time. The salary won't be high by programmers' standards, but +I'm looking for people for whom building community spirit is as +important as making money. I view this as a way of enabling dedicated +people to devote their full energies to working on GNU by sparing them +the need to make a living in another way. + +Why All Computer Users Will Benefit +=================================== + + Once GNU is written, everyone will be able to obtain good system +software free, just like air.(2) + + This means much more than just saving everyone the price of a Unix +license. It means that much wasteful duplication of system programming +effort will be avoided. This effort can go instead into advancing the +state of the art. + + Complete system sources will be available to everyone. As a result, +a user who needs changes in the system will always be free to make them +himself, or hire any available programmer or company to make them for +him. Users will no longer be at the mercy of one programmer or company +which owns the sources and is in sole position to make changes. + + Schools will be able to provide a much more educational environment +by encouraging all students to study and improve the system code. +Harvard's computer lab used to have the policy that no program could be +installed on the system if its sources were not on public display, and +upheld it by actually refusing to install certain programs. I was very +much inspired by this. + + Finally, the overhead of considering who owns the system software +and what one is or is not entitled to do with it will be lifted. + + Arrangements to make people pay for using a program, including +licensing of copies, always incur a tremendous cost to society through +the cumbersome mechanisms necessary to figure out how much (that is, +which programs) a person must pay for. And only a police state can +force everyone to obey them. Consider a space station where air must +be manufactured at great cost: charging each breather per liter of air +may be fair, but wearing the metered gas mask all day and all night is +intolerable even if everyone can afford to pay the air bill. And the +TV cameras everywhere to see if you ever take the mask off are +outrageous. It's better to support the air plant with a head tax and +chuck the masks. + + Copying all or parts of a program is as natural to a programmer as +breathing, and as productive. It ought to be as free. + +Some Easily Rebutted Objections to GNU's Goals +============================================== + + "Nobody will use it if it is free, because that means they can't + rely on any support." + + "You have to charge for the program to pay for providing the + support." + + If people would rather pay for GNU plus service than get GNU free +without service, a company to provide just service to people who have +obtained GNU free ought to be profitable.(3) + + We must distinguish between support in the form of real programming +work and mere handholding. The former is something one cannot rely on +from a software vendor. If your problem is not shared by enough +people, the vendor will tell you to get lost. + + If your business needs to be able to rely on support, the only way +is to have all the necessary sources and tools. Then you can hire any +available person to fix your problem; you are not at the mercy of any +individual. With Unix, the price of sources puts this out of +consideration for most businesses. With GNU this will be easy. It is +still possible for there to be no available competent person, but this +problem cannot be blamed on distribution arrangements. GNU does not +eliminate all the world's problems, only some of them. + + Meanwhile, the users who know nothing about computers need +handholding: doing things for them which they could easily do +themselves but don't know how. + + Such services could be provided by companies that sell just +hand-holding and repair service. If it is true that users would rather +spend money and get a product with service, they will also be willing +to buy the service having got the product free. The service companies +will compete in quality and price; users will not be tied to any +particular one. Meanwhile, those of us who don't need the service +should be able to use the program without paying for the service. + + "You cannot reach many people without advertising, and you must + charge for the program to support that." + + "It's no use advertising a program people can get free." + + There are various forms of free or very cheap publicity that can be +used to inform numbers of computer users about something like GNU. But +it may be true that one can reach more microcomputer users with +advertising. If this is really so, a business which advertises the +service of copying and mailing GNU for a fee ought to be successful +enough to pay for its advertising and more. This way, only the users +who benefit from the advertising pay for it. + + On the other hand, if many people get GNU from their friends, and +such companies don't succeed, this will show that advertising was not +really necessary to spread GNU. Why is it that free market advocates +don't want to let the free market decide this?(4) + + "My company needs a proprietary operating system to get a + competitive edge." + + GNU will remove operating system software from the realm of +competition. You will not be able to get an edge in this area, but +neither will your competitors be able to get an edge over you. You and +they will compete in other areas, while benefiting mutually in this +one. If your business is selling an operating system, you will not +like GNU, but that's tough on you. If your business is something else, +GNU can save you from being pushed into the expensive business of +selling operating systems. + + I would like to see GNU development supported by gifts from many +manufacturers and users, reducing the cost to each.(5) + + "Don't programmers deserve a reward for their creativity?" + + If anything deserves a reward, it is social contribution. +Creativity can be a social contribution, but only in so far as society +is free to use the results. If programmers deserve to be rewarded for +creating innovative programs, by the same token they deserve to be +punished if they restrict the use of these programs. + + "Shouldn't a programmer be able to ask for a reward for his + creativity?" + + There is nothing wrong with wanting pay for work, or seeking to +maximize one's income, as long as one does not use means that are +destructive. But the means customary in the field of software today +are based on destruction. + + Extracting money from users of a program by restricting their use of +it is destructive because the restrictions reduce the amount and the +ways that the program can be used. This reduces the amount of wealth +that humanity derives from the program. When there is a deliberate +choice to restrict, the harmful consequences are deliberate destruction. + + The reason a good citizen does not use such destructive means to +become wealthier is that, if everyone did so, we would all become +poorer from the mutual destructiveness. This is Kantian ethics; or, +the Golden Rule. Since I do not like the consequences that result if +everyone hoards information, I am required to consider it wrong for one +to do so. Specifically, the desire to be rewarded for one's creativity +does not justify depriving the world in general of all or part of that +creativity. + + "Won't programmers starve?" + + I could answer that nobody is forced to be a programmer. Most of us +cannot manage to get any money for standing on the street and making +faces. But we are not, as a result, condemned to spend our lives +standing on the street making faces, and starving. We do something +else. + + But that is the wrong answer because it accepts the questioner's +implicit assumption: that without ownership of software, programmers +cannot possibly be paid a cent. Supposedly it is all or nothing. + + The real reason programmers will not starve is that it will still be +possible for them to get paid for programming; just not paid as much as +now. + + Restricting copying is not the only basis for business in software. +It is the most common basis because it brings in the most money. If it +were prohibited, or rejected by the customer, software business would +move to other bases of organization which are now used less often. +There are always numerous ways to organize any kind of business. + + Probably programming will not be as lucrative on the new basis as it +is now. But that is not an argument against the change. It is not +considered an injustice that sales clerks make the salaries that they +now do. If programmers made the same, that would not be an injustice +either. (In practice they would still make considerably more than +that.) + + "Don't people have a right to control how their creativity is + used?" + + "Control over the use of one's ideas" really constitutes control over +other people's lives; and it is usually used to make their lives more +difficult. + + People who have studied the issue of intellectual property rights +carefully (such as lawyers) say that there is no intrinsic right to +intellectual property. The kinds of supposed intellectual property +rights that the government recognizes were created by specific acts of +legislation for specific purposes. + + For example, the patent system was established to encourage +inventors to disclose the details of their inventions. Its purpose was +to help society rather than to help inventors. At the time, the life +span of 17 years for a patent was short compared with the rate of +advance of the state of the art. Since patents are an issue only among +manufacturers, for whom the cost and effort of a license agreement are +small compared with setting up production, the patents often do not do +much harm. They do not obstruct most individuals who use patented +products. + + The idea of copyright did not exist in ancient times, when authors +frequently copied other authors at length in works of non-fiction. This +practice was useful, and is the only way many authors' works have +survived even in part. The copyright system was created expressly for +the purpose of encouraging authorship. In the domain for which it was +invented--books, which could be copied economically only on a printing +press--it did little harm, and did not obstruct most of the individuals +who read the books. + + All intellectual property rights are just licenses granted by society +because it was thought, rightly or wrongly, that society as a whole +would benefit by granting them. But in any particular situation, we +have to ask: are we really better off granting such license? What kind +of act are we licensing a person to do? + + The case of programs today is very different from that of books a +hundred years ago. The fact that the easiest way to copy a program is +from one neighbor to another, the fact that a program has both source +code and object code which are distinct, and the fact that a program is +used rather than read and enjoyed, combine to create a situation in +which a person who enforces a copyright is harming society as a whole +both materially and spiritually; in which a person should not do so +regardless of whether the law enables him to. + + "Competition makes things get done better." + + The paradigm of competition is a race: by rewarding the winner, we +encourage everyone to run faster. When capitalism really works this +way, it does a good job; but its defenders are wrong in assuming it +always works this way. If the runners forget why the reward is offered +and become intent on winning, no matter how, they may find other +strategies--such as, attacking other runners. If the runners get into +a fist fight, they will all finish late. + + Proprietary and secret software is the moral equivalent of runners +in a fist fight. Sad to say, the only referee we've got does not seem +to object to fights; he just regulates them ("For every ten yards you +run, you can fire one shot"). He really ought to break them up, and +penalize runners for even trying to fight. + + "Won't everyone stop programming without a monetary incentive?" + + Actually, many people will program with absolutely no monetary +incentive. Programming has an irresistible fascination for some +people, usually the people who are best at it. There is no shortage of +professional musicians who keep at it even though they have no hope of +making a living that way. + + But really this question, though commonly asked, is not appropriate +to the situation. Pay for programmers will not disappear, only become +less. So the right question is, will anyone program with a reduced +monetary incentive? My experience shows that they will. + + For more than ten years, many of the world's best programmers worked +at the Artificial Intelligence Lab for far less money than they could +have had anywhere else. They got many kinds of non-monetary rewards: +fame and appreciation, for example. And creativity is also fun, a +reward in itself. + + Then most of them left when offered a chance to do the same +interesting work for a lot of money. + + What the facts show is that people will program for reasons other +than riches; but if given a chance to make a lot of money as well, they +will come to expect and demand it. Low-paying organizations do poorly +in competition with high-paying ones, but they do not have to do badly +if the high-paying ones are banned. + + "We need the programmers desperately. If they demand that we stop + helping our neighbors, we have to obey." + + You're never so desperate that you have to obey this sort of demand. +Remember: millions for defense, but not a cent for tribute! + + "Programmers need to make a living somehow." + + In the short run, this is true. However, there are plenty of ways +that programmers could make a living without selling the right to use a +program. This way is customary now because it brings programmers and +businessmen the most money, not because it is the only way to make a +living. It is easy to find other ways if you want to find them. Here +are a number of examples. + + A manufacturer introducing a new computer will pay for the porting of +operating systems onto the new hardware. + + The sale of teaching, hand-holding and maintenance services could +also employ programmers. + + People with new ideas could distribute programs as freeware, asking +for donations from satisfied users, or selling hand-holding services. +I have met people who are already working this way successfully. + + Users with related needs can form users' groups, and pay dues. A +group would contract with programming companies to write programs that +the group's members would like to use. + + All sorts of development can be funded with a Software Tax: + + Suppose everyone who buys a computer has to pay x percent of the + price as a software tax. The government gives this to an agency + like the NSF to spend on software development. + + But if the computer buyer makes a donation to software development + himself, he can take a credit against the tax. He can donate to + the project of his own choosing--often, chosen because he hopes to + use the results when it is done. He can take a credit for any + amount of donation up to the total tax he had to pay. + + The total tax rate could be decided by a vote of the payers of the + tax, weighted according to the amount they will be taxed on. + + The consequences: + + * The computer-using community supports software development. + + * This community decides what level of support is needed. + + * Users who care which projects their share is spent on can + choose this for themselves. + + In the long run, making programs free is a step toward the +post-scarcity world, where nobody will have to work very hard just to +make a living. People will be free to devote themselves to activities +that are fun, such as programming, after spending the necessary ten +hours a week on required tasks such as legislation, family counseling, +robot repair and asteroid prospecting. There will be no need to be +able to make a living from programming. + + We have already greatly reduced the amount of work that the whole +society must do for its actual productivity, but only a little of this +has translated itself into leisure for workers because much +nonproductive activity is required to accompany productive activity. +The main causes of this are bureaucracy and isometric struggles against +competition. Free software will greatly reduce these drains in the +area of software production. We must do this, in order for technical +gains in productivity to translate into less work for us. + + ---------- Footnotes ---------- + + (1) The wording here was careless. The intention was that nobody +would have to pay for *permission* to use the GNU system. But the +words don't make this clear, and people often interpret them as saying +that copies of GNU should always be distributed at little or no charge. +That was never the intent; later on, the manifesto mentions the +possibility of companies providing the service of distribution for a +profit. Subsequently I have learned to distinguish carefully between +"free" in the sense of freedom and "free" in the sense of price. Free +software is software that users have the freedom to distribute and +change. Some users may obtain copies at no charge, while others pay to +obtain copies--and if the funds help support improving the software, so +much the better. The important thing is that everyone who has a copy +has the freedom to cooperate with others in using it. + + (2) This is another place I failed to distinguish carefully between +the two different meanings of "free". The statement as it stands is +not false--you can get copies of GNU software at no charge, from your +friends or over the net. But it does suggest the wrong idea. + + (3) Several such companies now exist. + + (4) The Free Software Foundation raises most of its funds from a +distribution service, although it is a charity rather than a company. +If *no one* chooses to obtain copies by ordering the from the FSF, it +will be unable to do its work. But this does not mean that proprietary +restrictions are justified to force every user to pay. If a small +fraction of all the users order copies from the FSF, that is sufficient +to keep the FSF afloat. So we ask users to choose to support us in +this way. Have you done your part? + + (5) A group of computer companies recently pooled funds to support +maintenance of the GNU C Compiler. + diff --git a/etc/HELLO b/etc/HELLO new file mode 100644 index 0000000..ea86d00 --- /dev/null +++ b/etc/HELLO @@ -0,0 +1,38 @@ +You need many fonts to read all. +Please correct this incomplete list and add more! + +--------------------------------------------------------- +Arabic [2](38R(47d(3T!JSa(4W(3W[0](B +Croatian (Hrvatski) Bog (Bok), Dobar dan +Czech (,Bh(Besky) Dobr,B}(B den +Danish (Dansk) Hej, Goddag +English Hello +Esperanto Saluton +Estonian Tere, Tervist +FORTRAN PROGRAM +Finnish (Suomi) Hei +French (Fran,Ag(Bais) Bonjour, Salut +German (Deutsch Nord) Guten Tag +German (Deutsch S,A|(Bd) Gr,A|_(B Gott +Greek (,FGkk]mija(B) ,FCei\(B ,Fsar(B +Hebrew [2],Hylem[0](B +Italiano Ciao, Buon giorno +Maltese Ciao +Nederlands, Vlaams Hallo, Hoi, Goedendag +Norwegian (Norsk) Hei, God dag +Polish Cze,B6f(B! +Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B! +Spanish (Espa,Aq(Bol) ,A!(BHola! +Swedish (Svenska) Hej, Goddag +Vietnamese (Ti,1*(Bng Vi,1.(Bt) Ch,1`(Bo b,1U(Bn + +Japanese ($BF|K\8l(B) $B$3$s$K$A$O(B, (I:]FAJ(B, $BqV$(DiQ(B +Chinese ($AVPND(B,$AFUM(;0(B,$A::So(B) $ADc:C(B +Cantonese ($(0GnM$(B,$(0N]0*Hd(B) $(0*/=((B, $(0+$)p(B +Hangul ($(CGQ1[(B) $(C>H3gGO<H3gGO=J4O1n(B + +Difference among chinese characters in GB, JIS, KSC, BIG5: + GB -- $AT*Fx(B $A?*7"(B + JIS -- $B855$(B $B3+H/(B + KSC -- $(Cj*Q((B $(CKR[!(B + BIG5 -- $(0&x86(B $(0DeBv(B diff --git a/etc/InstallGuide b/etc/InstallGuide new file mode 100644 index 0000000..e0fe148 --- /dev/null +++ b/etc/InstallGuide @@ -0,0 +1,112 @@ +Introduction + +Thank you for downloading XEmacs. We of the XEmacs development team +believe user satisfaction is our number one priority, and we hope that +you will be pleased with the power of our editor. Please follow all +of the instructions in order to enjoy a quick and easy installation. + + +Getting Started + +In this guide, information which you will need to supply will be enclosed in +angle brackets, . Commands which you will have to enter will be +indented, + + like this. + +You will need to provide a loading directory, in which to load the +material from tape (/tmp/xemacs is recommended), and a permanent +installation directory (/usr/local/xemacs is recommended). + + +Loading From Tape + +First create and change directory to the loading directory: + + mkdir + cd + +Now you are ready to load the software from tape. + +The specific device name needed to load the tape varies with hardware vendors, +and may be found in Appendix A, "Vendors and Device Names". + +Load the software from tape: + + tar xvf /dev/ + +You have now loaded all of the software from tape, and are ready to compile and +install the XEmacs Text Editor. + + +Compiling and Installing the XEmacs Editor + +Compiling and installing the libraries is handled by a user-friendly shell +script. You will need to provide some information to the script, such as your +organization name and registration number. To run the script, type + + /bin/sh xemacs/xemacs.install -d + +Follow the script's directions, and provide the information which it prompts +for. + +When the script prompts you for the directory in which the distribution files +are located, you will find that you are unable to provide it with any directory +which the script will deem satisfactory. That is because it is necessary to +order the following additional parts which are necessary to continue with the +installation: + + Part Number Qty Name Price + + GM-96-3026 1 Goat, male 1000.00 + CB-13-2395 1 Candle, black 50.00 + CG-63-6376 1 Chalk dust container 10.00 + IB-89-3335 5 Incense sticks 5.00 + DE-44-8846 1 Dagger, ebon, curved 500.00 + AS-87-2319 1 Altar, silver 10000.00 + +Wait until the additional parts arrive; you will be ready to continue the +installation the next Friday the 13th at midnight. + + +Ritual for Successfully Completing Installation + +Stand in front of the computer. Pour out the chalk dust in an inscribed +pentagram around you; be sure that it is without breaks. Set an incense stick +at each of the five corners, the altar in front of the computer, and the candle +in front of the altar. + +Light each of the incense sticks and the candles, chanting in a low voice: + + Daemons and spirits of the netherworld + Forces of all that is chaotic and mysterious + Essence of Netscape and MicroSoft + + I am coming here to appease you + I offer you this goat + That my software may work + + I bind you here + Do not make my system crash + Let the software install as advertised + +Place the goat on the altar, and slaughter it with the dagger. + + May this goat feed you + Sate your lust for blood + Into it may your mischief fly + Not my computer + Make the software work + For this is the only way + +Then spit into the computer's ventilation slots. This will complete different +circuits inside the computer, causing its motherboard and cards to function in +ways that the engineers never intended, thereby making your system compatible +with our libraries. + +Reboot your computer. The installation is now complete. + +[This has undergone a minor rewrite for XEmacs. It originally +appeared on rec.humor.funny courtesy of jonathan seth hayward +, and is included by permission of the +author]. diff --git a/etc/LPF b/etc/LPF new file mode 100644 index 0000000..93226e6 --- /dev/null +++ b/etc/LPF @@ -0,0 +1,122 @@ + Protect Your Freedom to Write Programs + Join the League for Programming Freedom + (Version of February 3, 1994) + +Ten years ago, programmers were allowed to write programs using all +the techniques they knew, and providing whatever features they felt +were useful. This is no longer the case. New monopolies, known as +software patents and interface copyrights, have taken away our freedom +of expression and our ability to do a good job. + +"Look and feel" lawsuits attempt to monopolize well-known command +languages; some have succeeded. Copyrights on command languages +enforce gratuitous incompatibility, close opportunities for +competition, and stifle incremental improvements. + +Software patents are even more dangerous; they make every design +decision in the development of a program carry a risk of a lawsuit, +with draconian pretrial seizure. It is difficult and expensive to +find out whether the techniques you consider using are patented; it is +impossible to find out whether they will be patented in the future. + +The League for Programming Freedom is a grass-roots organization of +professors, students, businessmen, programmers and users dedicated to +bringing back the freedom to write programs. The League is not +opposed to the legal system that Congress expressly established for +software--copyright on individual programs. Our aim is to reverse the +recent changes that prevent programmers from doing their work. + +The League works to abolish the new monopolies by publishing articles, +talking with public officials, denouncing egregious offenders, and +filing amicus curiae briefs, most notably against Lotus in its suit +against Borland. We testified twice at the recent Patent Office +hearings on software patents. We welcome suggestions for other +activities, as well as help in carrying them out. + +Membership dues in the League are $42 per year for programmers, +managers and professionals; $10.50 for students; $21 for others. +Please give more if you can. The League's funds will be used for +filing briefs; for printing handouts, buttons and signs; whatever will +persuade the courts, the legislators, and the people. You may not get +anything personally for your dues--except for the freedom to write +programs. The League is a non-profit corporation, but not considered +a tax-exempt charity. However, for those self-employed in software, +the dues can be a business expense. + +The League needs both activist members and members who only pay their +dues. We also greatly need additional corporate members; contact us +for information. + +If you have any questions, please write to the League, phone ++1 617 621 7084, or send Internet mail to lpf@uunet.uu.net. + + Chris Hofstader, President + Dean Anderson, Secretary + Aubrey Jaffer, Treasurer + +Chris Hofstader can be reached at (617) 492-0023; FAX (617) 497-1632. + To join, please send a check and the following information to: + + League for Programming Freedom + 1 Kendall Square #143 + P.O.Box 9171 + Cambridge, Massachusetts 02139 + +(Outside the US, please send a check in US dollars on a bank +having a US correspondent bank, to save us check cashing fees.) + +Your name: + + +The address for League mailings, a few each year; please indicate +whether it is your home address or your work address: + + + +The company you work for, and your position: + + +Your phone numbers (home, work or both): + + +Your email address, so we can contact you for demonstrations or for +writing letters. (If you don't want us to contact you for these +things, please say so, but please give us your email address anyway +so we can save paper and postage by sending you the newsletter by email.) + + +Is there anything about you which would enable your endorsement of the +LPF to impress the public? For example, if you are or have been a +professor or an executive, or have written software that has a good +reputation, please tell us. + + + +Would you like to help with LPF activities? + + + + +The corporate charter of the League for Programming Freedom states: + + The purpose of the corporation is to engage in the following + activities: + + 1. To determine the existence of, and warn the public about + restrictions and monopolies on classes of computer programs where such + monopolies prevent or restrict the right to develop certain types of + computer programs. + + 2. To develop countermeasures and initiatives, in the public interest, + effective to block or otherwise prevent or restrain such monopolistic + activities including education, research, publications, public + assembly, legislative testimony, and intervention in court proceedings + involving public interest issues (as a friend of the court). + + 3. To engage in any business or other activity in service of and + related to the foregoing paragraphs that lawfully may be carried on + by a corporation organized under Chapter 180 of the Massachusetts + General Laws. + +The officers and directors of the League will be elected annually by +the members. diff --git a/etc/MACHINES b/etc/MACHINES new file mode 100644 index 0000000..0d3bbf3 --- /dev/null +++ b/etc/MACHINES @@ -0,0 +1,1261 @@ +This is a list of the status of GNU Emacs on various machines and systems. + +For each system and machine, we give the configuration name you should +pass to the `configure' script to prepare to build Emacs for that +system/machine. + +The `configure' script uses the configuration name to decide which +machine and operating system description files `src/config.h' should +include. The machine description files are all in `src/m', and have +names similar to, but not identical to, the machine names used in +configuration names. The operating system files are all in `src/s', +and are named similarly. See the `configure' script if you need to +know which configuration names use which machine and operating system +description files. + +If you add support for a new configuration, add a section to this +file, and then edit the `configure' script to tell it which +configuration name(s) should select your new machine description and +system description files. + + +Here are the configurations Emacs is intended to work with, with the +corresponding configuration names. You can postpend version numbers +to operating system names (i.e. sunos4.1) or architecture names (i.e. +hppa1.1). If you leave out the version number, the `configure' script +will configure Emacs for the latest version it knows about. + +************************************************************************* +* * +* NOTE: this file is kept in sync with the FSF version, though we * +* expect the information here to be mostly accurate for XEmacs. * +* Bear in mind that the version numbers mentioned in the text below * +* are the FSF numbers, not the Lucid numbers. For comparison, * +* FSFmacs 19.26 roughly corresponds to XEmacs 19.11. * +* * +************************************************************************* + +Acorn RISCiX (arm-acorn-riscix1.2) + + Emacs 19.29 has changes that ought to support RISCiX 1.2. + + Due to a bug in the RISCiX C compiler (3.4.5), emacs must + be built with gcc (versions 2.5.8 onwards). + + In addition, you will need GNU sed and GNU make, as the RISCiX release + versions of these utilities cannot cope with building emacs-19! + + GNU sed should be configured with: + + env 'DEFS=-Dgetopt=gnu_getopt -Dopterr=gnu_opterr -Doptind=gnu_optind \ + -Doptarg=gnu_optarg' ./configure + + GNU make (3.72+) should be configured with: + + env 'CFLAGS=-Dgetopt=gnu_getopt -Dopterr=gnu_opterr -Doptind=gnu_optind \ + -Doptarg=gnu_optarg' ./configure + + Emacs may be configured to use the X toolkit, by adding --with-x-toolkit + to the configure command. If you do this, you will need to edit the line + in src/Makefile which defines LIBW (about line 59) to read: + + LIBW= -lXaw_n + + This ensures that the non-shared widget library is used. + + It is unlikely that this version of emacs will work with RISCiX 1.1. + +Alliant (fx80-alliant-bsd): + + 18.52 worked on system version 4. Previous Emacs versions were + known to work on previous system versions. + + If you are using older versions of their operating system, you may + need to edit `src/config.h' to use `m/alliant1.h' (on version 1) or + `m/alliant.h' (on versions 2 and 3). + +Alliant FX/2800 (i860-alliant-bsd) + + Known to work with 19.26 and OS version 2.2, compiler version 1.3. + +Alpha (DEC) running OSF/1 (alpha-dec-osf1) + + Worked as of Lucid Emacs 19.8. + +Altos 3068 (m68k-altos-sysv) + + 18.52 was said to work, provided you don't compile unexec.c with -O. + +Amdahl UTS (580-amdahl-sysv) + + Small changes for 18.38 were merged in 18.39. It is mostly + working, but at last report a bug sometimes causes Emacs to + grab very large amounts of memory. No fix or explanation + has yet been reported. It may be possible to find this bug + if you find which Emacs command it happens within and then + run that command with a breakpoint set at malloc. + + The 5.2u370 compiler is so brain damaged that it is not + even worth trying to use it. Success was obtained with the + uts native C compiler on uts version 5.2.5. + +Apollo running Domain (m68k-apollo-domain) + + 19.29 has a few patches that ought to make things work. + + There are reports of bugs in cc -O on this system. + + In `lib-src/Makefile', don't expect emacsclient and emacsserver to + compile. You might want to remove them from your makefile. + + The Apollo has a bizarre operating system which does not permit + Emacs to be dumped with preloaded pure Lisp code. Therefore, each + time you start Emacs on this system, the standard Lisp code is loaded + into it. Expect it to take a long time. You can prevent loading of + the standard Lisp code by specifying the -nl switch. It must + come at the beginning of the command line; only the -t and -batch + switches may come before it. + + + Here is a design for a method of dumping and reloading the relevant + necessary impure areas of Emacs. + + On dumping, you need to dump only the array `pure' plus the + locations that contain values of forwarded Lisp variables or that are + protected for garbage collection. The former can be found by a + garbage- collection-like technique, and the latter are in the + staticprolist vector (see alloc.c for both things). + + Reloading would work in an Emacs that has just been started; except + when a switch is specified to inhibit this, it would read the dump + file and set all the appropriate locations. The data loaded must be + relocated, but that's not hard. Those locations that are of type + Lisp_Object can be found by a technique like garbage-collection, and + those of them that point to storage can be relocated. The other data + read from the file will not need to be relocated. + + The switch to inhibit loading the data base would be used when it + is time to dump a new data base. + + This would take a few seconds, which is much faster than loading + the Lisp code of Emacs from scratch. + +AT&T 3b2, 3b5, 3b15, 3b20 (we32k-att-sysv) + + Emacs will probably not work with certain kernel constants too small. + + In param.h CDLIMIT should be at least (1L << 12) in order to allow + processes to write up to 2 Mbyte files. This parameter is configurable + by normal means in /etc/master.d/kernel; examine that file for the + symbol CDLIMIT or ULIMIT, and raise it by several powers of 2. Then + do normal kernel rebuild things via "cd /boot; mkboot -k KERNEL" and so + forth. + + In seg.h NSEGP and STACKSEG should be at least 16 and 4 respectively + to allow processes with total size of up to 2Mbytes. + However, I'm told it is unlikely this would fail to be true. + + The MAXMEM may also prevent Emacs from running. The file + 3B-MAXMEM in this directory explains how to increase MAXMEM. + + On some of these machines, you may need to define IN_SCCS_ID + in config.h to make Emacs work. Supposedly you can tell whether + this is necessary by checking something in /usr/include/sys/time.h; + we do not know precisely what. + +AT&T 7300 or 3b1 (m68k-att-sysv) + + 18.52 worked. If you have strange troubles with dumping + Emacs, delete the last few lines from `src/m/7300.h' and recompile. + These lines are supposed to produce a sharable executable. + + `src/m/7300.h' defines SHORTNAMES because operating system versions + older than 3.5 did not support long symbol names. Version 3.5 does + support them, so you can remove the #define SHORTNAMES in that + version. + +Bull DPX/2 models 2nn or 3nn (m68k-bull-sysv3) + + Minor fixes merged into 19.19, which should work with CC or GCC. + + You should compile with all the POSIX stuff: undef _SYSV and define + _POSIX_SOURCE, _XOPEN_SOURCE and _BULL_SOURCE. + + On bos2.00.45 there is a bug that makes the F_SETOWN fcntl + call enters in an infinite loop. F_SETOWN_BUG has been defined to avoid + calling it. + +Bull DPX/20 (rs6000-bull-bosx) + + Version 19 works. + +Bull sps7 (m68k-bull-sysv2) + + Changes partially merged in version 19, but some fixes are probably required. + +CCI 5/32, 6/32 + + See "Tahoe". + +Celerity (celerity-celerity-bsd4.2) + + Version 18.49 worked. This configuration name is a hack, because we + don't know the processor used by Celerities. If someone + who uses a Celerity could get in touch with us, we can teach + config.sub a better name for the configuration. + +Clipper (clipper-???) + + Version 19 has support for some brand of clipper system. If you + have successfully built Emacs 19 on some sort of clipper system, let + us know so we can flesh out this entry. + + Note that the Orion 105 is also a clipper, but some system-related + parameters are different. + +Convex (c1-convex-bsd, c2-convex-bsd, c32-convex-bsd, c34-convex-bsd, + c38-convex-bsd) + + Support updated and residual bugs fixed in 19.26. + +Cubix QBx/386 (i386-cubix-sysv) + + Changes merged in 19.1. Systems before 2/A/0 may fail to compile etags.c + due to a compiler bug. + +Cydra 5 (cydra-cydrome-sysv) + + 18.51 worked in one version of their operating system but stopped + working in a newer version. This has not been fixed. + +Data General Aviion (m88k-dg-dgux) + + 19.23 works; however, the GCC provided with DGUX 5.4R3.00 fails to + compile src/emacs.c. GCC 2.5.8 does work. + The 19.26 pretest was reported to work; no word on which compiler. + + System versions other than DGUX 5.4R3.00 have not been tested. + +DECstation (mips-dec-ultrix or mips-dec-osf) + + This machine is the older Mips-based DECstation. + Emacs should now work on the Alpha CPU. + + 19.25 works on Ultrix 4.2. The 19.26 pretest was reported to work + on Ultrix 4.2a and on 4.4. + + One user reported 19.25 did not work at all with --with-x-toolkit + using X11R5 patch level 10, but worked ok with X11R5 pl26. + + See under Ultrix for problems using X windows on Ultrix. + Note that this is a MIPS machine. + + For Ultrix versions 4.1 or earlier, you may need to define + SYSTEM_MALLOC in `src/m/pmax.h', because XvmsAlloc.o in libX11.a seems + to insist on defining malloc itself. + + For Ultrix versions prior to 4.0, you may need to delete + the definition of START_FILES from `src/m/pmax.h'. + +Motorola Delta 147 (m68k-motorola-sysv) + + The EMacs 19.26 pretest was reported to work. + + Motorola Delta boxes running System V/68 release 3. + Tested on 147 board with SVR3V7, no X and gcc. + Tested on 167 board with SVR3V7, no X, cc, gnucc and gcc. + Reports say it works with X too. + + The installation script chooses the compiler itself. gnucc is + preferred. + +Motorola Delta 187 (m88k-motorola-sysv, + m88k-motorola-sysvr4, or + m88k-motorola-m88kbcs) + + The 19.26 pretest was reported to run on SVR3. However, if you + use --with-x-toolkit on svr3, you will have problems compiling some + files because time.h and sys/time.h get included twice. + One fix is to edit those files to protect against multiple inclusion. + + As of version 19.13, Emacs was reported to run under SYSVr3 and SYSVr4. + +Dual running System V (m68k-dual-sysv) + + As of 17.46, this worked except for a few changes + needed in unexec.c. + +Dual running Uniplus (m68k-dual-uniplus) + + Worked, as of 17.51. + +Elxsi 6400 (elxsi-elxsi-sysv) + + Changes for 12.0 release are in 19.1. + Dumping should work now. + +Encore machine (ns16k-encore-bsd) + + This machine bizarrely uses 4.2BSD modified to use the COFF format + for object files. Works (as of 18.40). For the APC processor you + must enable two lines at the end of `src/s/umax.h', which are commented + out in the file as distributed. + + WARNING: If you compile Emacs with the "-O" compiler switch, you + must also use the "-q enter_exits" switch so that all functions have + stack frames. Otherwise routines that call `alloca' all lose. + + A kernel bug in some system versions causes input characters to be lost + occasionally. + +GEC 63 (local-gec63-usg5.2) + + Changes are partially merged in version 18, but certainly require + more work. Let us know if you get this working, and we'll give it a + real configuration name. + +Gould Power Node (pn-gould-bsd4.2 or pn-gould-bsd4.3) + + 18.36 worked on versions 1.2 and 2.0 of the operating system. + + On UTX/32 2.0, use pn-gould-bsd4.3. + + On UTX/32 1.2 and UTX/32S 1.0, use pn-gould-bsd4.2 and note that + compiling `lib-src/sorted-doc' tickles a compiler bug: remove the -g + flag to cc in the makefile. + + UTX/32 1.3 has a bug in the bcopy library routine. Fix it by + #undef BSTRING in `src/m/gould.h'. + + Version 19 incorporates support for releases 2.1 and later of UTX/32. + A site running a pre-release of 2.1 should #define RELEASE2_1 in config.h. + +Gould NP1 (np1-gould-bsd) + + Version 19 supposedly works. + +Harris Night Hawk (m68k-harris-cxux or m88k-harris-cxux) + + This port was added in 19.23. The configuration actually tested was + a Night Hawk 4800 running CX/UX 7.0. + + If you have GCC ported and want to build with it, you probably need to + change things (like compiler switches) defined in the s/cxux.h file. + + With CX/UX 7.0 and later releases, you need to build after setting the + SDE_TARGET environment variable to COFF (a port using ELF and shared + libraries has not yet been done). + +Honeywell XPS100 (xps100-honeywell-sysv) + + Config file added in version 19. + +Hewlett-Packard 9000 series 200 or 300 (m68k-hp-bsd or m68k-hp-hpux7.) + + Version 19 works under BSD. The 19.26 pretest was reported + to work on HPUX 9. + + These machines are 68000-series CPUs running HP/UX + (a derivative of sysV with some BSD features) or BSD 4.3 ported by Utah. + The operating system suffix determines which system Emacs is built for. + + Series 200 HPUX runs Emacs only if it has the "HP/UX upgrade". + + If you are running HP/UX release 8.0 or later, you need the optional + "C/ANSI C" software in order to build Emacs (older releases of HP/UX + do not require any special software). If the file "/etc/filesets/C" + exists on your machine, you have this software, otherwise you do not. + + Note that HP has used two incompatible assembler syntaxes, + and has recently changed the format of C function frames. + `src/crt0.c' and `src/alloca.s' have been conditionalised for the new + assembler and new function-entry sequence. You may need to define + OLD_HP_ASSEMBLER if you are using an older hpux version. If you + have an official (bought from HP) series 300 machine you have + the new assembler. Kernels that are 5.+ or later have new + assembler. A Series 200 that has been upgraded to a 68010 + processor and a 5.+ kernel has the new compiler. + + Define C_SWITCH_MACHINE to be +X to make a version of Emacs that + runs on both 68010 and 68020 based HP/UX's. + + Define HPUX_68010 if you are using the new assembler, for + a system that has a 68010 without a 68881. This is to say, + a s200 (upgraded) or s310. + + Define the symbol HPUX_NET if you have the optional network features + that include the `netunam' system call. This is referred to as + Network Services (NS/9000) in HP literature. + +HP 9000 series 500: not supported. + + The series 500 has a seriously incompatible memory architecture + which relocates data in memory during execution of a program, + and support for it would be difficult to implement. + +HP 9000 series 700 or 800 (Spectrum) (hppa1.0-hp-hpux or hppa1.1-hp-hpux + or ...hpux9shr) + + 19.26 is believed to work on HPUX 9 provided you compile with GCC. + As of version 19.16, Emacs was reported to build (using GCC) and run + on HP 9000/700 series machines running HP/UX versions 8.07 and 9.01. + + Use hppa1.1 for the 700 series and hppa1.0 for the 800 + series machines. (Emacs may not actually care which one you use.) + + Use hppa1.1-hp-hpux9shr to use shared libraries on HPUX version 9. + You may need to create the X libraries libXaw.a and libXmu.a from + the MIT X distribute, and you may need to edit src/Makefile's + definition of LIBXT to look like this: + + LIBXT= $(LIBW) -lXmu -lXt $(LIBXTR6) -lXext + + Some people report trouble using the GNU memory allocator under + HP/UX version 9. The problems often manifest as lots of ^@'s in the + buffer. + + We are told that these problems go away if you obtain the latest + patches for the HP/UX C compiler. James J Dempsey + says that this set of versions works for him: + /bin/cc: + HP92453-01 A.09.28 HP C Compiler + /lib/ccom: + HP92453-01 A.09.28 HP C Compiler + HP-UX SLLIC/OPTIMIZER HP-UX.09.00.23 02/18/93 + Ucode Code Generator - HP-UX.09.00.23.5 (patch) 2/18/93 + + For 700 series machines, the HP-UX patch needed is known as + PHSS_2653. (Perhaps for 800 series machines as well; we don't + know.) If you are on the Internet, you should be able to obtain + this patch by using telnet to access the machine + support.mayfield.hp.com and logging in as "hpslreg" and following + the instructions there. Do not ask FSF for further support on + this. If you have any trouble obtaining the patch, contact HP + Software Support. + + If your buffer fills up with nulls (^@) at some point, it could well + be that problem. That problem does not happen when people use GCC + to compile Emacs. On the other hand, the HP compiler version 9.34 + was reported to work for the 19.26 pretest. 9.65 was also reported to work. + + If you turn on the DSUSP character (delayed suspend), + Emacs 19.26 does not know how to turn it off on HPUX. + You need to turn it off manually. + + If you are running HP/UX release 8.0 or later, you need the optional + "C/ANSI C" software in order to build Emacs (older releases of HP/UX + do not require any special software). If the file "/etc/filesets/C" + exists on your machine, you have this software, otherwise you do not. + +High Level Hardware Orion (orion-highlevel-bsd) + + This is the original microprogrammed hardware. + Machine description file ought to work. + +High Level Hardware Orion 1/05 (clipper-highlevel-bsd) + + Changes merged in 18.52. This is the one with the Clipper cpu. + Note that systems which lack NFS need LOAD_AVE_TYPE changed to `double'. + + C compiler has a bug; it loops compiling eval.c. + Compile it by hand without optimization. + +IBM PS/2 (i386-ibm-aix1.1 or i386-ibm-aix1.2) + + Changes merged in version 19. You may need to copy + /usr/lib/samples/hft/hftctl.c to the Emacs src directory. + + i386-ibm-aix1.1 may not work with certain new X window managers, and + may be suboptimal. + +IBM RS/6000 (rs6000-ibm-aix) + + Emacs 19.26 is believed to work; its pretest was tested. + + At last report, Emacs didn't run well on terminals. Informed + persons say that the tty VMIN and VTIME settings have been + corrupted; if you have a fix, please send it to us. + + Compiling with -O using the IBM compiler has been known + to make Emacs work incorrectly. It's reported that on + AIX 3.2.5 with an IBM compiler earlier than 1.03.00.14, + cc -O fails for some files. You need to install any + PTF containing APAR #IX42810 to bring the compiler to + the 1.03.00.14 level to allow optimized compiles. + Alternatively, recompiling just emacs.c and extents.c + without optimization seems to do the trick as well. + + There are reports that IBM compiler versions earlier than 1.03.00.02 + fail even without -O. + + As of 19.11, if you strip the Emacs executable, it ceases to work. + + If you are using AIX 3.2.3, you may get a core dump when loading + ange-ftp. You may be able to fix the problem by defining LIBS_TERMCAP + as -ltermcap -lcurses. Please tell us if this fails to work. + + If anyone can fix the above problems, or confirm that they don't happen + with certain versions of various programs, we would appreciate it. + +IBM RT/PC (romp-ibm-bsd or romp-ibm-aix) + + Use romp-ibm-bsd for the 4.2-like system and romp-ibm-aix for AIX. + 19.22 is reported to work under bsd. We don't know about AIX. + + On BSD, if you have trouble, try compiling with a different compiler. + + On AIX, the file /usr/lib/samples/hft/hftctl.c must be compiled into + hftctl.o, with this result left in the src directory (hftctl.c is + part of the standard AIX distribution). + + window.c must not be compiled with -O on AIX. + +Integrated Solutions `Optimum V' (m68k-isi-bsd4.2 or -bsd4.3) + + 18.52 said to work on some sort of ISI machine. + Version 18.45 worked (running on a Optimum V (VME bus, 68020) + BSD 4.2 (3.05e) system). 18.42 is reported to work on + a Qbus 68010 system. Has not been tried on `WorkStation' `Cluster + Compute Node' `Cluster WorkStation' or `Server Node' (Love the + StudLYCaps) + + Compilation with -O is rumored to break something. + + On recent system versions, you may need to undefine the macro UMAX + in `lib-src/loadst.c' and `src/getpagesize.h'. They stupidly defined this + in a system header file, which confuses Emacs (which thinks that UMAX + indicates the Umax operating system). + +Intel 386 (i386-*-isc, i386-*-esix, + i386-*-xenix, i386-*-linux, i386-*-freebsd, + i386-intsys-sysv, i386-*-sysv3, + i386-*-sysv4, i386-*-sysv4.2, + i386-*-sysv5.3, i386-*-bsd4.2, + i386-*-sco3.2v4, i386-*-bsd386, i386-*-386bsd + or i486... or i586...) + + In the above configurations, * means that the manufacturer's name + you specify does not matter, and you can use any name you like + (but it should not contain any dashes or stars). + + When using the ISC configurations, be sure to specify the isc + version number - for example, if you're running ISC 3.0, use + i386-unknown-isc3.0 as your configuration name. + Use i386-*-esix for Esix; Emacs runs as of version 19.6. + Use i386-*-linux for GNU/Linux systems; Emacs runs as of version 19.26. + Use i386-intsys-sysv for Integrated Solutions 386 machines. + It may also be correct for Microport systems. + Use i386-*-sco3.2v4 for SCO 3.2v4; Emacs runs as of version 19.26. + + On GNU/Linux systems, Emacs 19.23 was said to work properly with libc + version 4.5.21, but not with 4.5.19. If your system uses QMAGIC + for the executable format, you must edit config.h to define LINUX_QMAGIC. + + On GNU/Linux, configure may fail to put these definitions in config.h: + + #define HAVE_GETTIMEOFDAY + #define HAVE_MKDIR + #define HAVE_RMDIR + + To work around the problem, add those definitions by hand. + It is possible that this problem happens only with X11R6 + or that newer system versions have fixed it. + + The 19.26 pretest was reported to work on SVR4.3 and on Freebsd. + + Use i386-*-bsd386 for BSDI BSD/386; Emacs runs as of version 19.23. + Make on that system is broken; use GNU make instead. + Shell bugs in version 1.0 of BSD/386 cause configure + to do the wrong thing with --with-x-toolkit; the workaround is to edit + configure to run another shell such as bash. + + For System V release 3, use i386-*-sysv3. + For System V release 4, use i386-*-sysv4. + For System V release 4.2, use i386-*-sysv4.2. + + If you are using Xenix, see notes at end under Xenix. + If you are using Esix, see notes at end under Esix. + If you are using SCO Unix, see notes at end under SCO. + + On 386bsd, netbsd and freebsd, you should use GNU make, not the + system's make. Assuming it's installed as gmake, do `gmake install + MAKE=gmake'. + + If you are using System V release 4.2, you may find that `cc -E' + puts spurious spaces in `src/xmakefile'. If that happens, + specify CPP=/lib/cpp as an option when you run make. + There is no problem if you compile with GCC. + + Note that use of Linux with GCC 2.4 and the DLL 4.4 libraries + requires the experimental "net 2" network patches (no relation to + Berkeley Net 2). There is a report that (some version of) Linux + requires including `/usr/src/linux/include/linux' in buffer.c + but no coherent explanation of why that might be so. If it is so, + in current versions of Linux, something else should probably be changed. + + Some sysV.3 systems seem to have bugs in `opendir'; + for them, alter `config.h' to define NONSYSTEM_DIR_LIBRARY + and undefine SYSV_SYSTEM_DIR. + + If you use optimization on V.3, you may need the option -W2,'-y 0' + to prevent certain faulty optimization. + + On 386/ix, to link with shared libraries, add #define USG_SHARED_LIBRARIES + to config.h. + + On SCO, there are problems in regexp matching when Emacs is compiled + with the system compiler. The compiler version is "Microsoft C + version 6", SCO 4.2.0h Dev Sys Maintenance Supplement 01/06/93; + Quick C Compiler Version 1.00.46 (Beta). The solution is to compile + with GCC. + + On ISC systems (2.02 and more recent), don't try to use the versions + of X that come with the system; use XFree86 instead. + + There is no consistency in the handling of certain system header files + on V.3. + + Some versions have sys/sioctl.h, and require it in sysdep.c. + But some versions do not have sys/sioctl.h. + For a given version of the system, this may depend on whether you have + X Windows or TCP/IP. Define or undefine NO_SIOCTL_H in config.h + according to whether you have the file. + + Likewise, some versions have been known to need sys/ttold.h, sys/stream.h, + and sys/ptem.h included in sysdep.c. If your system has these files, + try defining NEED_PTEM_H in config.h if you have trouble without it. + + You may find that adding -I/usr/X/include or -I/usr/netinclude or both + to CFLAGS avoids compilation errors on certain systems. + + Some versions convince sysdep.c to try to use `struct tchars' + but define `struct tc' instead; add `#define tchars tc' + to config.h to solve this problem. + +Iris 2500 and Iris 2500 Turbo (m68k-sgi-iris3.5 or m68k-sgi-iris3.6) + + Version 18 was said to work; use m68k-sgi-iris3.5 for system version 2.5 + and m68k-sgi-iris3.6 for system version 3.6. + Note that the 3030 is the same as the Iris 2500 Turbo. + +Iris 4D (mips-sgi-irix[456].*) + + The 19.26 pretest was reported to work on IRIX 4.0.5 and 5.2. + 19.23 was reported to work on IRIX 5.2, but you may need to install + the "compiler_dev.hdr.internal" subsystem in order to compile unexelfsgi.c. + 19.22 was known to work on all Silicon Graphics machines running + IRIX 4.0.5 or IRIX 5.1. + + Compiling with -O using IRIX compilers prior to 3.10.1 may not work. + Don't use -O or use GCC instead. + + Most IRIX 3.3 systems do not have an ANSI C compiler, but a few do. + Compile Emacs 18 with the -cckr switch on these machines. + + There is a bug in IRIX 3.3 that can sometimes leave ptys owned by root + with a permission of 622. This causes malfunctions in use of + subprocesses of Emacs. Irix versions 4.0 and later with GNU Emacs + versions 18.59 and later fix this bug. + +Masscomp (m68k-masscomp-rtu) + + 18.36 worked on a 5500DP running RTU v3.1a and compiler version 3.2 + with minor fixes that are included in 18.37. However, bizarre behavior + was reported for 18.36 on a Masscomp (model and version unknown but probably + a 68020 system). The report sounds like a compiler bug. + + A compiler bug affecting statements like + unsigned char k; unsigned char *p;... x = p[k]; + has been reported for "C version 1.2 under RTU 3.1". We do not wish + to take the time to install the numerous workarounds required to + compensate for this bug. + + For RTU version 3.1, define FIRST_PTY_LETTER to be 'p' in `src/s/rtu.h' + (or #undef and redefine it in config.h) so that ptys will be used. + + GNU Emacs is said to have no chance of compiling on RTU versions + prior to v3.0. + +Megatest (m68k-megatest-bsd) + + Emacs 15 worked; do not have any reports about Emacs 16 or 17 + but any new bugs are probably not difficult. + +Mips (mips-mips-riscos, mips-mips-riscos4.0, or mips-mips-bsd) + + The C compiler on Riscos 4.51 dumps core trying to optimize + parts of Emacs. Try without optimization or try GCC. + + Meanwhile, the linker on that system returns success even if + there are undefined symbols; as a result, configure gets the + wrong answers to various questions. No work-around is known + except to edit src/config.h by hand to indicate which functions + don't exist. + + Use mips-mips-riscos4.0 for RISCOS version 4. + Use mips-mips-bsd with the BSD world. + + Note that the proper configuration names for DECstations are + mips-dec-ultrix and mips-dec-osf. + + If you are compiling with GCC, then you must run fixincludes; + the alternative of using -traditional won't work because + the definition of SIGN_EXTEND_CHAR uses the keyword `signed'. + + If the SYSV world is the default, then you probably need the following + line in etc/Makefile: + + CFLAGS= -g -systype bsd43 + + Some operating systems on MIPS machines give SIGTRAP for division by + zero instead of the usual signals. The only real solution is to fix + the system to give a proper signal. + + In the meantime, you can change init_data in data.c if you wish. + Change it to handle SIGTRAP as well as SIGFPE. But this will have a + great disadvantage: you will not be able to run Emacs under a + debugger. I think crashing on division by zero is a lesser problem. + + dsg@mitre.org reported needing to use --x-libraries=/bsd43/usr/lib + on a riscos4bsd site. But it is not clear whether this is needed in + general or only because of quirks on a particular site. + +National Semiconductor 32000 (ns32k-ns-genix) + + This is for a complete machine from National Semiconductor, + running Genix. Changes merged in version 19. + +NCR Tower 32 (m68k-ncr-sysv2 or m68k-ncr-sysv3) + + If you are running System V release 2, use m68k-ncr-sysv2. + If you are running System V release 3, use m68k-ncr-sysv3. + + These both worked as of 18.56. If you change `src/ymakefile' so that + CFLAGS includes C_OPTIMIZE_SWITCH rather than C_DEBUG_SWITCH, check + out the comments in `src/m/tower32.h' (for System V release 2) or + `src/m/tower32v3.h' (for System V release 3) about this. + + There is a report that compilation with -O did not work with 18.54 + under System V release 2. + +NCR Intel system (i386-ncr-sysv4.2) + + This system works in 19.31, but if you don't link it with GNU ld, + you may need to set LD_RUN_PATH at link time to specify where + to find the X libraries. + +NeXT (m68k-next-nextstep) + + Emacs 19 has not been tested extensively yet, but it seems to work + in a NeXTStep 3.0 terminal window, and under the X server called + co-Xist. You may need to specify -traditional when src/Makefile + builds xmakefile. + + NeXT users might want to implement direct operation with NeXTStep, + but from the point of view of the GNU project, that is a + distraction. + + Thanks to Thorsten Ohl for working on the NeXT port of Emacs 19. + +Nixdorf Targon 31 (m68k-nixdorf-sysv) + + Machine description file for version 17 is included in 18 + but whether it works is not known. + `src/unexec.c' bombs if compiled with -O. + Note that the "Targon 35" is really a Pyramid. + +Nu (TI or LMI) (m68k-nu-sysv) + + Version 18 is believed to work. + +Paragon OSF/1 (i860-intel-osf1) + + Changes merged in 19.29. + + There is a bug in OSF/1 make which claims there is a syntax error + in the src/xmakefile. You can successfully build emacs with: + + pmake MAKE=pmake + +Plexus (m68k-plexus-sysv) + + Worked as of 17.56. + +Pmax (DEC Mips) (mips-dec-ultrix or mips-dec-osf1) + + See under DECstation, above. + +Prime EXL (i386-prime-sysv) + + Minor changes merged in 19.1. + +Pyramid (pyramid-pyramid-bsd) + + The 19.26 pretest was observed to work on OSx 5.0, but it is necessary + to edit gmalloc.c. You must add #include at the top, + and delete the #define for size_t. + + You need to build Emacs in the Berkeley universe with + the `ucb' command, as in `ucb make' or `ucb build-install'. + + In OSx 4.0, it seems necessary to add the following two lines + to `src/m/pyramid.h': + #define _longjmp longjmp + #define _setjmp setjmp + + In Pyramid system 2.5 there has been a compiler bug making + Emacs crash just after screen-splitting with Qnil containing 0. + A compiler that fixes this is Pyramid customer number 8494, + internal number 1923. + + Some versions of the pyramid compiler get fatal + errors when the -gx compiler switch is used; if this + happens to you, change `src/m/pyramid.h' to define + C_DEBUG_SWITCH with an empty definition. + + Some old system versions may require you to define PYRAMID_OLD + in when alloca.s is preprocessed, in order to define _longjmp and _setjmp. + +Sequent Balance (ns32k-sequent-bsd4.2 or ns32k-sequent-bsd4.3) + + Emacs 18.51 worked on system version 3.0. 18.52 is said to work. + Delete some lines at the end of `src/m/sequent.h' for earlier system + versions. + +Sequent Symmetry (i386-sequent-bsd, i386-sequent-ptx) + + Emacs 19 should work on Dynix (BSD). However, if you compile with + the Sequent compiler, you may find Emacs does not restore the + terminal settings on exit. If this happens, compile with GCC. + + Emacs 19.27 contains patches that should support + DYNIX/ptx 1.4 and 2.1 with the native cc compiler. + + Gcc can't compile src/process.c due to a non-standard Sequent asm + keyword extension supported by cc and used for the network byte/word + swapping functions in the PTX /usr/include/netinet/in.h file. Gcc + 2.5.8 includes the file which can be included into + netinet/in.h to perform these byte/word swapping functions in the + same manner. Patches have been submitted to the FSF against gcc + 2.6.0 to fix this problem and allow Emacs to be built with gcc. + + If your machine does not have TCP/IP installed, you will have to edit the + src/s/ptx.h file and comment out #define TCPIP_INSTALLED. + +Siemens Nixdorf RM600 and RM400 (mips-siemens-sysv4) + + Changes merged in 19.29. This configuration should also work for + Pyramid MIS Server running DC-OSX 1.x. The version configured with + `--with-x' works without any modifications, but `--with-x-toolkit' + works only if the Athena library and the Toolkit library are linked + statically. For this, edit `src/Makefile' after the `configure' run + and modify the lines with `-lXaw' and `-lXt' as follows: + + LIBW= /usr/lib/libXaw.a + LIBXT= $(LIBW) -lXmu /usr/lib/libXt.a $(LIBXTR6) -lXext + +SONY News (m68k-sony-bsd4.2 or m68k-sony-bsd4.3) + + 18.52 worked. Use m68k-sony-bsd4.3 for system release 3. + +SONY News 3000 series (RISC NEWS) (mips-sony-bsd) + + The 19.26 pretest is reported to work. + + Some versions of the operating system give SIGTRAP for division by zero + instead of the usual signals. This causes division by zero + to make Emacs crash. The system should be fixed to give the proper signal. + Changing Emacs is not a proper solution, because it would prevent + Emacs from working under any debugger. But you can change init_data + in data.c if you wish. + +Stardent i860 (i860-stardent-sysv4.0) + + 19.26 pretest reported to work. + +Stardent 1500 or 3000 + + See Titan. + +Stride (m68k-stride-sysv) + + Works (most recent news for 18.30) on their release 2.0. + For release 2.2, see the end of `src/m/stride.h'. + It may be possible to run on their V.1 system but changes + in the s- file would be needed. + +Sun 3, Sun 4 (sparc), Sun 386 (m68k-sun-sunos, sparc-sun-sunos, i386-sun-sunos, + sparc-sun-sunos4shr, sparc-sun-solaris2.*, + i386-sun-solaris2.*) + + 19.26 is believed to work on Sparcs and Sun 3's. Some people report + that Emacs crashes immediately on startup when used with a non-X + terminal, but we think this is due to compiling with GCC and failing + to use GCC's "fixed" system header files. + + Some Sun versions of X windows use the clipboard, not the selections, + for transferring text between clients. The Cut, Paste and Copy items + in the menu bar Edit menu work with the clipboard. + + It's important to include the SunOS version number in the + configuration name. For example, for SunOS release 4.0 on a Sun 3, + use `m68k-sun-sunos4.0'; for SunOS release 4.1 on a Sparc, use + `sparc-sun-sunos4.1'. For SunOS release 4.1.3 on a Sparc, use + `sparc-sun-sunos4.1.3'. Use sunos4shr to link with shared libraries + on Sunos 4.1. + + (FSF MACHINES file says use of shared libraries does not work with + X11R5 or X11R6 on Sunos 4 as of 19.26, but I think this does not + apply to XEmacs.) + + Use `m68k' for the 68000-based Sun boxes, `sparc' for Sparcstations, + and `i386' for Sun Roadrunners. i386 calls for Sunos4.0. + + Do not define the environment variable 'KEEP_STATE' while running + `configure'. + + FSF MACHINES file says the following: (may not apply to XEmacs) + + If you compile with Sun's ANSI compiler acc, you need additional options + when linking temacs, such as + /usr/lang/SC2.0.1/values-Xt.o -L/usr/lang/SC2.0.1/cg87 -L/usr/lang/SC2.0.1 + (those should be added just before the libraries) and you need to + add -lansi just before -lc. The precise file names depend on the + compiler version, so we cannot easily arrange to supply them. + + On SunOS 4.1.1, do not use /usr/5bin/cc. You can use gcc or/usr/bin/cc. + Make sure the environment variable LD_LIBRARY_PATH is not defined. + + Some people report crashes on SunOS 4.1.3 if SYSTEM_MALLOC is defined. + Others have reported that Emacs works if SYSTEM_MALLOC is defined, and not + if it is undefined. So far we do not know why results vary in this way. + The sources are set up so that SYSTEM_MALLOC is defined; if that crashes, + or if you want the benefit of the relocating memory allocator, you can + try enabling the #undef SYSTEM_MALLOC in src/s/sunos4-1-3.h. + + On Solaris 2, you need to install patch 100947-02 to fix a system bug. + Presumably this patch comes from Sun. You must alter the definition of + LD_SWITCH_SYSTEM if your X11 libraries are not in /usr/openwin/lib. + You must make sure that /usr/ucblib is not in your LD_LIBRARY_PATH. + + On Solaris 2.2, with a multiprocessor SparcCenter 1000, Emacs 19.17 is + reported to hang sometimes if it exits while it has one or more + subprocesses (e.g. the `wakeup' subprocess used by `display-time'). + Emacs and its subprocesses become zombies, and in their zombie state + slow down their host and disable rlogin and telnet. This is most + likely due to a bug in Solaris 2.2's multiprocessor support, + rather than an Emacs bug. + + On Solaris, do not use /usr/ucb/cc. Use /opt/SUNWspro/bin/cc. Make + sure that /usr/ccs/bin and /opt/SUNWspro/bin are in your PATH before + /usr/ucb. (Most free software packages have the same requirement on + Solaris.) + + If you have trouble using open-network-stream, get the distribution + of `bind' (the BSD name-server), build libresolv.a, and link Emacs + with -lresolv, by copying the #definition of LIBS_SYSTEM in + src/s/sunos4-1.h to src/config.h. This problem is due to obsolete + software in the nonshared standard library. + + If you want to use SunWindows, define HAVE_SUN_WINDOWS + in config.h to enable a special interface called `emacstool'. + The definition must *precede* the #include "machine.h". + System version 3.2 is required for this facility to work. + + We recommend that you instead use the X window system, which + has technical advantages, is an industry standard, and is also + free software. The FSF does not support the SunWindows code; + we installed it only on the understanding we would not let it + divert our efforts from what we think is important. + + If you are compiling for X windows, and the X window library was + compiled to use the 68881, then you must edit config.h according + the comments at the end of `src/m/sun3.h'. + + Note that Emacs on a Sun is not really as big as it looks. + As dumped, it includes around 200k of zeros between the + original text section and the original data section + (now remapped as part of the text). These are never + swapped in. + + To build a single Emacs that will run on Sun 2 and Sun 3 + HARDWARE, just build it on the Sun 2. + + On Sunos 4.1.3, the word is that Emacs can loop infinitely + on startup with X due perhaps to a bug in Sunos. Installing all of + these Sun patches fixes the problem. We don't know which of them + are really relevant. + + 100075-11 100224-06 100347-03 100482-05 100557-02 100623-03 100804-03 + 101080-01 100103-12 100249-09 100496-02 100564-07 100630-02 100891-10 + 101134-01 100170-09 100296-04 100377-09 100507-04 100567-04 100650-02 + 101070-01 101145-01 100173-10 100305-15 100383-06 100513-04 100570-05 + 100689-01 101071-03 101200-02 100178-09 100338-05 100421-03 100536-02 + 100584-05 100784-01 101072-01 101207-01 + +Tadpole 68K (m68k-tadpole-sysv) + + Changes merged in 19.1. + + You may need to edit Makefile to change the variables LIBDIR and + BINDIR from /usr/local to /usr/contrib. + + To give movemail access to /usr/mail, you may need to execute + + chmod 2755 etc/movemail; chgrp mail etc/movemail + +Tahoe (tahoe-tahoe-bsd4.2 or tahoe-tahoe-bsd4.3) + + 18.52 was known to work on some Tahoes, but a compiler bug intervenes + on others. Some Emacs versions have worked in Unisys 1r4 + (not in 1r3) and CCI I.21. + + If you have trouble compiling `lib-src/loadst.c', turn off the definition + of DKSTAT_HEADER_FILE in `src/m/tahoe.h'. + +Tandem Integrity S2 (mips-tandem-sysv) + + Changes merged in 18.56 but subprocess support is turned off. + You will probably want to see if you can make subprocesses work. + + You must edit `lib-src/Makefile' to define LOADLIBES = -mld. + +Tektronix XD88 (m88k-tektronix-sysv3*) + + The 19.26 pretest was reported to work. + Minor changes merged in 19.19. + +Tektronix 16000 box (6130?) (ns16k-tektronix-bsd) + + Emacs 17.61 worked. + +Tektronix 4300 (m68k-tektronix-bsd) + + Emacs 19.26 pretest reported to work. + +Titan P2 or P3 (titan-titan-sysv) + + Changes probably merged in version 19. + +Ustation E30 (SS5E) (m68k-unisys-unipl) + + Changes merged in 18.52; don't know whether they work. + +Vaxen running Berkeley Unix (vax-dec-bsd4.1, vax-dec-bsd4.2, vax-dec-bsd4.3), + Ultrix (vax-dec-ultrix), + System V (vax-dec-sysv0, vax-dec-sysv2), or + VMS (vax-dec-vms) + + Works. + + See under Ultrix for problems using X windows on Ultrix (vax-dec-ultrix). + + 18.27 worked on System V rel 2 (vax-dec-sysv2). + + 18.36 worked on System V rel 0 (vax-dec-sysv0). + + Richard Levitte distributes a set of patches to + Emacs 18.59 to make it work nicely under VMS. Emacs 19 probably + won't work very well, or even compile. Levitte is working on a + port, so these problems should be fixed in the near future. + +Whitechapel MG1 (ns16k-whitechapel-?) + + May work. Supposedly no changes were needed except in `src/m/mg1.h' + file. I do not know what Unix version runs on them. + +Wicat (m68k-wicat-sysv) + + Changes merged as of 18.6; whether they work is unknown. + See comments in `src/m/wicat.h' for things you should change + depending on the system and compiler version you have. + +Here are notes about some of the systems supported: + +Berkeley 4.1 (bsd4.1) + + Works on vaxes. + +Berkeley 4.2 (bsd4.2) + + Works on several machines. + +Berkeley 4.3 (bsd4.3) + + Works, on Vaxes at least. + +Esix + + The following was written for Emacs 18.59 and has been + slightly adapted for Emacs 19. It may need more change to be correct. + + Use s/usg5-4.h for Esix System V 4.0.[34] systems if you also have + XFree86. If you insist on using the Esix X Window libraries, good + luck. s/esix5r4.h provides a starting point, but doesn't seem to + work consistently. The basic problems involve the need to load + -lX11 *last* in the link command, and even then some things break. + You get best results by installing XFree86 and forgetting about the + Esix stuff unless you want to run IXI xdt3, which really only needs + the Esix X11 shared libraries. + + To compile with XFree86, make sure that your LD_LIBRARY_PATH + contains /usr/X386/lib. Be careful if you also have the Esix X + Window libraries that /usr/X386/lib appears *first* in the + LD_LIBRARY_PATH. Then define C_SWITCH_X_SYSTEM -I/usr/X386/include. + +Microport + + See under "Intel 386". + +SCO Unix + If you have TCP but not X, you need to edit src/s/sco4.h + to define HAVE_SOCKETS. + + If you are using MMDF instead of sendmail, you need to remove + /usr/lib/sendmail or modify lisp/paths.el before compiling. + lisp/paths.el (which is loaded during the build) will attempt to use + sendmail if it exists. + + If you are using SMAIL, you need to define the macro + SMAIL in config.h. + +System V rel 0 (usg5.0) + + Works, on Vaxes and 3bxxx's. + There are some problems in 18.37 due to shortnames/cccp problems: + use the emacs 17 cpp if you have it. + +System V rel 2 (usg5.2) + + Works on various machines. + On some (maybe all) machines the library -lPW exists and contains + a version of `alloca'. On these machines, to use it, put + #define HAVE_ALLOCA + #define LIB_STANDARD -lPW -lc + in the `src/m/MACHINENAME.h' file for the machine. + + If you find that the character Meta-DEL makes Emacs crash, + find where function init_sys_modes in sysdep.c sets sg.c_cc[VQUIT] + and make it store 7 there. I have as yet no evidence of whether + this problem, known in HP/UX, exists in other system V versions. + +System V rel 2.2 (usg5.2.2) + + In 5.2.2 AT&T undid, incompatibly, their previous incompatible + change to the way the nlist library is called. A different s- file + is used to enable the other interface. + + They call themselves the right choice--can't they choose? + + Emacs version 18 unexec is currently not working properly + on 5.2.2. Nobody knows why yet. A workaround is to define + NO_REMAP. It is not yet known whether this applies to all + machines running 5.2.2. + +System V rel 3 (usg5.3) + + Some versions of this system support ptys and BSD-style sockets. + On such systems, you should define HAVE_PTYS and HAVE_SOCKETS in config.h. + + If you want to link Emacs with shared libraries, define + USG_SHARED_LIBRARIES. + + You may have to add ANSI idempotence #-lines to your sys/types.h + file to get Emacs to compile correctly. This may be necessary on + other pre-ANSI systems as well. + + On an AT&T 6386WGS using System V Release 3.2 and X11R3, the X support + cannot be made to work. Whether or not the GNU relocating malloc is + used, the symptom is that the first call Emacs makes to sbrk(0) returns + (char *)-1. Sorry, you're stuck with character-only mode. Try + installing Xfree86 to fix this. + +System V rel 4.0.3 and 4.0.4 (usg5.4) + + Supported, including shared libraries for ELF, but ptys do not work + because TIOCGPGRP fails to work on ptys (but Dell 2.2 seems to have + fixed this). This failure is probably due to a misunderstanding of + the consequences of the POSIX spec: many system designers mistakenly + think that POSIX requires this feature to fail. This is untrue; + ptys are an extension, and POSIX says that extensions *when used* + may change the action of standard facilities in any fashion. + + If you get compilation errors about wrong number of + arguments to getpgrp, define GETPGRP_NO_ARG. + + The standard C preprocessor may generate xmakefile incorrectly. However, + /lib/cpp will work, so use `make CPP=/lib/cpp'. Standard cpp + seems to work OK under Dell 2.2. + + Some versions 3 and earlier of V.4, on the Intel 386 and 860, had + problems in the X11 libraries. These prevent Emacs from working + with X. You can use Emacs with X provided your copy of X is based + on X11 release 4 or newer, or is Dell's 2.2 (which is a 4.0.3). + Unfortunately, the only way you can tell whether your X11 library is + new enough is to try compiling Emacs to use X. If emacs runs, your + X11 library is new enough. + + In this context, GSV4 and GSV4i are alternate names for X11R4. + OL2.* is X11R3 based. OL3 is in between X11R3 and X11R4, and may or + may not work, depending on who made the Unix system. If the library + libXol is part of the X distribution, then you have X11R3 and Emacs + won't work with X. + + Most versions of V.4 support sockets. If `/usr/lib/libsocket.so' + exists, your system supports them. If yours does not, you must add + #undef HAVE_SOCKETS in config.h, after the inclusion of s-usg5-4.h. + (Any system that supports Internet should implement sockets.) + +Ultrix (bsd4.3) + + Recent versions of Ultrix appear to support the features of Berkeley 4.3. + Ultrix was at the BSD 4.2 level for a long time after BSD 4.3 came out. + + Ultrix 3.0 has incompatibilities in its X library if you have the + Ultrix version of X (UWS version 2.0). To solve them, you need to + prevent XvmsAlloc.o in Xlib from being used. Israel Pinkas says: + + I added the following lines to config.h after the X defines: + + #if defined(ultrix) && defined(X11) + #define OBJECTS_SYSTEM calloc.o + #endif + + Then I ran the following: + + ar x /usr/lib/libc.a calloc.o + + The problem is said to be gone in UWS version 2.1. + +Uniplus 5.2 (unipl5.2) + + Works, on Dual machines at least. + +VMS (vmsM.N) + + Richard Levitte distributes a set of patches to + Emacs 18.59 to make it work nicely under VMS. Emacs 19 probably + won't work very well, or even compile. Levitte is working on a + port, so these problems should be fixed in the near future. + + Note that Emacs for VMS is usually distributed in a special VMS + distribution. See the file ../vms/VMSINSTALL for info on moving + Unix distributions to VMS, and other VMS-related topics. + +Xenix (xenix) + + Should work in 18.50, but you will need to edit the files + `lib-src/Makefile' and `src/ymakefile' + (see the comments that mention "Xenix" for what to change.) + Compiling Emacs with -O is said not to work. + + If you want Emacs to work with Smail (installed as /usr/bin/smail) + then add the line #define SMAIL to config.h. + + The file etc/XENIX suggests some useful things to do to Xenix + to make the Emacs meta key work. + +Local variables: +mode: indented-text +fill-prefix: " " +End: diff --git a/etc/MAILINGLISTS b/etc/MAILINGLISTS new file mode 100644 index 0000000..2bab54a --- /dev/null +++ b/etc/MAILINGLISTS @@ -0,0 +1,1206 @@ + + XEmacs Electronic Mailing Lists. Last Modified: 1997-01-13 + +XEmacs has its own mailing list and newsgroup which are distinct from +the FSF GNU Emacs mailing lists and newsgroups. The mailing list is: + + xemacs@xemacs.org For reporting all bugs in XEmacs, including bugs + in the compilation and installation procedures. + Also for all random questions and conversation + about XEmacs. + +This mailing list is bidirectionally gatewayed into the USENET newsgroup +comp.emacs.xemacs. + +To be added or removed from this mailing list, send mail to +xemacs-request@xemacs.org (If it is possible for you to read the +messages via the newsgroup, we would prefer that; the fewer people there +are on the mailing list, the less trouble it is to maintain.) + +Please do NOT send messages about problems with XEmacs to the FSF GNU +Emacs newsgroups and mailing lists (listed below) unless you are sure +that the problem you are reporting is a problem with both versions of +GNU Emacs. People who aren't subscribed to the XEmacs mailing list most +likely are not interested in hearing about problems with it. + +The XEmacs mailing list is archived at ftp://ftp.xemacs.org/pub/xemacs/mlists/. + +See the file etc/BETA for more information about mailing lists for use +by beta testers and XEmacs developers. + +IMPORTANT IMPORTANT IMPORTANT: + +Aside from the names of the mailing lists and newsgroups corresponding +to this version of Emacs, the guidelines enumerated below still apply. +Please read them before sending a message. + +----------------------------------------------------------------------- + GNU Project Electronic Mailing Lists and gnUSENET Newsgroups + Last Updated 1 July 97 + + Please report improvements to: gnu@prep.ai.mit.edu + +* GNU mailing lists are also distributed as USENET news groups + +The mailing lists are gated both ways with the gnu.all newsgroups at +ohio-state.edu. The one-to-one correspondence is indicated below. If +you don't know if your site is on USENET, ask your system administrator. +If you are a USENET site and don't get the gnu.all newsgroups, please +ask your USENET administrator to get them. If he has your feeds ask +their feeds, you should win. And everyone else wins: newsgroups make +better use of the limited bandwidth of the computer networks and your +home machine than mailing list traffic; and staying off the mailing +lists make better use of the people who maintain the lists and the +machines that the GNU people working with rms use (i.e. we have more +time to produce code!!). Thanx. + +* Getting the mailing lists directly + +If several users at your site or local network want to read a list and +you aren't a USENET site, Project GNU would prefer that you would set up +one address that redistributes locally. This reduces overhead on our +people and machines, your gateway machine, and the network(s) used to +transport the mail from us to you. + +* How to subscribe to and report bugs in mailing lists + +Send messages ABOUT these lists, such as reports of mail problems, or +requests to be added or removed, to help-gnu-emacs-request (or +info-gnu-request, bug-gdb-request, etc.), NOT to info-gnu-emacs (or +info-gnu, etc.). These -request addresses go only to the +people who can do something about your requests or problems, and thus +avoids disturbing everyone else. + +Note that all GNU mailing lists are maintained by volunteers. They get +behind occasionally. Wait at least 3 or 4 days before asking again. +Thanks! + +Many of the GNU mailing lists are very large and are received by many +people. Please don't send them anything that is not seriously important +to all their readers. All GNU mailing lists are unmoderated, mail +reflectors, except info-gnu, info-gnu-emacs, info-gcc, info-g++, +info-gnu-fortran. + +All addresses below are in internet format. Consult the mail guru for +your computer to figure out address syntaxes from other networks. From +UUCP machines: + ..!ucbvax!prep.ai.mit.edu!ADDRESS + ..!uunet!prep.ai.mit.edu!ADDRESS + +If a message you mail to a list is returned from a MAILER-DAEMON (often +with the line: + ----- Transcript of session follows ----- + don't resend the message to the list. All this return means is that +your original message failed to reach a few addresses on the list. Such +messages are NEVER a reason to resend a piece of mail a 2nd time. This +just bothers all (less the few delivery failures (which will probably +just fail again!)) of the readers of the list with a message they have +already seen. It also wastes computer and network resources. + +It is appropriate to send these to the -request address for a list, and +ask them to check the problem out. + +* Send Specific Requests for Information to: gnu@prep.ai.mit.edu + +Specific requests for information about obtaining GNU software, or GNU +activities in Cambridge and elsewhere can be directed to: + gnu@prep.ai.mit.edu + +* General Information about all lists + +Please keep each message under 25,000 characters. Some mailers bounce +messages that are longer than this. If your message is long, it is +generally better to send a message offering to make the large file +available to only those people who want it (e.g. mailing it to people +who ask, or putting it up for FTP). In the case of gnu.emacs.sources, +somewhat larger postings (up to 10 parts of no more than 25,000 +characters each) are acceptable (assuming they are likely to be of +interest to a reasonable number of people); if it is larger than that +have it added to archive.cis.ohio-state.edu (the GNU Emacs Lisp ftp and +uucp archive on and announce) its location there. Good bug reports are +short. See section '* General Information about bug-* lists and ...' +for further details. + +Most of the time, when you reply to a message sent to a list, the reply +should not go to the list. But most mail reading programs supply, by +default, all the recipients of the original as recipients of the reply. +Make a point of deleting the list address from the header when it does +not belong. This prevents bothering all readers of a list, and reduces +network congestion. + +The GNU mailing lists and newsgroups, like the GNU project itself, exist +to promote the freedom to share software. So don't use these lists to +promote or recommend non-free software. (Using them to post ordering +information is the ultimate faux pas.) If there is no free program to +do a certain task, then somebody should write one! + +* General Information about info-* lists + +These lists and their newsgroups are meant for important announcements. +Since the GNU project uses software development as a means for social +change, the announcements may be technical or political. + +Most GNU projects info-* lists (and their corresponding gnu.*.announce +newsgroups) are moderated to keep their content significant and +relevant. If you have a bug to report, send it to the bug-* list. If +you need help on something else and the help-* list exists, ask it. + +See section '* General Information about all lists'. + +* General Information about help-* lists + +These lists (and their newsgroups) exist for anyone to ask questions +about the GNU software that the list deals with. The lists are read by +people who are willing to take the time to help other users. + +When you answer the questions that people ask on the help-* lists, keep +in mind that you shouldn't answer by promoting a proprietary program as +a solution. The only real solutions are the ones all the readers can +share. + +If a program crashes, or if you build it following the standard +procedure on a system on which it is supposed to work and it does not +work at all, or if an command does not behave as it is documented to +behave, this is a bug. Don't send bug reports to a help-* list; mail +them to the bug-* list instead. + +See section '* General Information about all lists'. + +* General Information about bug-* lists and reporting program bugs + +If you think something is a bug in a program, it might be one; or, it +might be a misunderstanding or even a feature. Before beginning to +report bugs, please read the section ``Reporting Emacs Bugs'' toward the +end of the GNU Emacs reference manual (or node Emacs/Bugs in Emacs's +built-in Info system) for a discussion of how and when to send in bug +reports. For GNU programs other than GNU Emacs, also consult their +documentation for their bug reporting procedures. Always include the +version number of the GNU program, as well as the operating system and +machine the program was ran on (if the program doesn't have a version +number, send the date of the latest entry in the file ChangeLog). For +GNU Emacs bugs, type "M-x emacs-version". A debugger backtrace of any +core dump, can also be useful. Be careful to separate out hypothesis +from fact! For bugs in GNU Emacs lisp, set variable debug-on-error to +t, and re-enter the command(s) that cause the error message; Emacs will +pop up a debug buffer if something is wrong; please include a copy of +the buffer in your bug report. Please also try to make your bug report +as short as possible; distill the problem to as few lines of code and/or +input as possible. GNU maintainers give priority to the shortest, high +quality bug reports. + +Please don't send in a patch without a test case to illustrate the +problem the patch is supposed to fix. Sometimes the patches aren't +correct or aren't the best way to do the job, and without a test case +there is no way to debug an alternate fix. + +The purpose of reporting a bug is to enable the bug to be fixed for the +sake of the whole community of users. You may or may not receive a +response; the maintainers will send one if that helps them find or +verify a fix. Most GNU maintainers are volunteers and all are +overworked; they don't have time to help individuals and still fix the +bugs and make the improvements that everyone wants. If you want help +for yourself in particular, you may have to hire someone. The GNU +project maintains a list of people providing such services. It is +distributed with GNU Emacs in file etc/SERVICE, and can be requested +from gnu@prep.ai.mit.edu. + +Anything addressed to the implementors and maintainers of a GNU program +via a bug-* list, should NOT be sent to the corresponding info-* or +help-* list. + +Please DON'T post your bug reports on the gnu.*.bug newsgroups! Mail +them to bug-*@prep instead! At first sight, it seems to make no +difference: anything sent to one will be propagated to the other; but: + - if you post on the newsgroup, the information about how to +reach you is lost in the message that goes on the mailing list. It +can be very important to know how to reach you, if there is anything +in the bug report that we don't understand; + - bug reports reach the GNU maintainers quickest when they are +sent to the bug-* mailing list submittal address; + - mail is much more reliable then netnews; and + - if the internet mailers can't get your bug report delivered, +they almost always send you an error message, so you can find another +way to get the bug report in. When netnews fails to get your message +delivered to the maintainers, you'll never know about it and the +maintainers will never see the bug report. + +And please DON'T post your GNU bug reports to comp.* or other gnu.* +newsgroups, they never make it to the GNU maintainers at all. Please +mail them to bug-*@prep instead! + +See section '* General Information about all lists'. + +* info-gnu-request@prep.ai.mit.edu to subscribe to info-gnu +** gnUSENET newsgroup: gnu.announce +** Send announcements to: info-gnu@prep.ai.mit.edu + +This list distributes progress reports on the GNU Project. It is also +used by the GNU Project to ask people for various kinds of help. It is +NOT for general discussion. + +The list is filtered to remove items meant for info-gnu-request, that +can be answered by the moderator without bothering the list, or should +have been sent to another list. + +See section '* General Information about info-* lists'. + +* gnu-misc-discuss-request@prep.ai.mit.edu to subscribe to gnu-misc-discuss +** gnUSENET newsgroup: gnu.misc.discuss +** Send contributions to: gnu-misc-discuss@prep.ai.mit.edu + +This list is for serious discussion of freed software, the GNU Project, +the GNU Manifesto, and their implications. It's THE place for +discussion that is not appropriate in the other GNU mailing lists and +gnUSENET newsgroups. + +Flaming is out of place. Tit-for-tat is not welcome. Repetition +should not occur. + +Good READING and writing are expected. Before posting, wait a while, +cool off, and think. + +Don't use this group for complaints and bug reports about GNU software! +The maintainers don't read this group; they won't see your complaint. +Use the appropriate bug-reporting mailing list instead, so that people +who can do something about the problem will see it. + +Don't trust pronouncements made on gnu-misc-discuss about what GNU is, +what FSF position is, what the GNU General Public License is, etc., +unless they are made by someone you know is well connected with GNU and +are sure the message is not forged. + +USENET and gnUSENET readers are expected to have read ALL the articles +in news.announce.newusers before posting. If news.announce.newusers is +empty at your site, wait (the articles are posted monthly), your posting +isn't that urgent! Readers on the Internet can anonymous FTP these +articles from host ftp.uu.net under directory ?? + +Someone from the Free Software Foundation will attempt to follow this +group as time and volume permits. + +Remember, "GNUs Not Unix" and "gnUSENET is Not USENET". We have +higher standards! + +Note that sending technical questions about specific GNU software to +gnu-misc-discuss is likely to be less useful than sending them to the +appropriate mailing list or gnUSENET newsgroup, since more technical +people read those. + +* bug-gnu-sql-request@prep.ai.mit.edu to subscribe to bug-gnu-sql +** gnUSENET newsgroup: NONE PLANNED +** GNU-SQL BUG reports to: bug-gnu-sql@prep.ai.mit.edu + +This list distributes, to the active maintainers of GNU's SQL (GNU's SQL +full scale database server), bug reports and fixes for, and suggestions +for improvements to GNU's SQL. User discussion of GNU's SQL also occurs +here. + +There are no other GNU mailing lists or gnUSENET newsgroups for GNU's SQL. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* bug-guile-request@prep.ai.mit.edu to subscribe to bug-guile +** gnUSENET newsgroup: NONE PLANNED +** GUILE BUG reports to: bug-guile@prep.ai.mit.edu + +This list distributes, to the active maintainers of GUILE (GNU's +Ubiquitous Extension Language), bug reports and fixes for, and suggestions for +improvements to GUILE. User discussion of GUILE also occurs here. + +There are no other GNU mailing lists or gnUSENET newsgroups for GUILE . + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* guile-sources-request@prep.ai.mit.edu to subscribe to guile-sources +** gnUSENET newsgroup: NONE PLANNED +** Guile source code to: guile-sources@prep.ai.mit.edu + +This list will be for the posting, by their authors, of GUILE, Scheme, +and C sources and patches that improve Guile. Its contents will be +reviewed by the FSF for inclusion in future releases of GUILE. + +Please do NOT discuss or request source code here. Use bug-guile for +those purposes. This allows the automatic archiving of sources posted +to this list. + +Please do NOT post such sources to any other GNU mailing list (e.g +bug-guile) or gnUSENET newsgroups. It's up to each poster to decide +whether to cross-post to any non-gnUSENET newsgroup. + +Please do NOT announce that you have posted source code to guile.sources +to any other GNU mailing list (e.g. bug-guile) or gnUSENET newsgroups. +People who want to keep up with sources will read this list. It's up to +each poster to decide whether to announce a guile.sources article in any +non-gnUSENET newsgroup (e.g. comp.emacs or comp.sources.d). + +If source or patches that were previously posted or a simple fix is +requested in bug-guile, please mail it to the requester. Do NOT +repost it. If you also want something that is requested, send mail to +the requester asking him to forward it to you. This kind of traffic is +best handled by e-mail, not by a broadcast medium that reaches millions +of sites. + +If the requested source is very long (>10k bytes) send mail offering to +send it. This prevents the requester from getting many redundant copies +and saves network bandwidth. + +* bug-gnustep-request@prep.ai.mit.edu to subscribe to bug-gnustep +** gnUSENET newsgroup: gnu.gnustep.bug +** Gnustep bug reports to: bug-gnustep@prep.ai.mit.edu +** FAQ-URL: none known +** FAQ-Archive-name: none known +** FAQ-Posting-frequency: none known + +This list distributes bug reports for, fixes for bugs in, and +suggestions for improvements in GNUstep to its active developers. + +Subscribers to bug-gnustep get all info-gnustep messages. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* help-gnustep-request@prep.ai.mit.edu to subscribe to help-gnustep +** gnUSENET newsgroup: gnu.gnustep.help +** Send contributions to: help-gnustep@prep.ai.mit.edu +** FAQ-URL: none known +** FAQ-Archive-name: none known +** FAQ-Posting-frequency: none known + +This list is the place for users and installers of the GNUstep to ask +for help. Please send bug reports to bug-gnustep@prep.ai.mit.edu +instead of posting them here. + +See section '* General Information about help-* lists'. + +* discuss-gnustep-request@prep.ai.mit.edu to subscribe to discuss-gnustep +** gnUSENET newsgroup: gnu.gnustep.discuss +** Send contributions to: discuss-gnustep@prep.ai.mit.edu +** FAQ-URL: none known +** FAQ-Archive-name: none known +** FAQ-Posting-frequency: none known + +This list is the place for GNUstep users and developers to discuss +GNUstep. Please send bug reports to bug-gnustep@prep.ai.mit.edu +instead of posting them here. + +See section '* General Information about discuss-* lists'. + +* info-gnustep-request@prep.ai.mit.edu to subscribe to info-gnustep +** gnUSENET newsgroup: gnu.gnustep.announce +** Send announcements to: info-gnustep@prep.ai.mit.edu +** FAQ-URL: none known +** FAQ-Archive-name: none known +** FAQ-Posting-frequency: none known + +This list distributes announcements and progress reports on GNUstep. +It is NOT for general discussion; please use discuss-gnustep for that. + +The list is filtered to remove items meant for info-gnustep-request, that +can be answered by the moderator without bothering the list, or should +have been sent to another list. + +Do not report GNUstep bugs to info-gnustep, help-gnustep, or +discuss-gnustep, mail them to bug-gnustep@prep.ai.mit.edu instead. + +See section '* General Information about info-* lists'. + +* bug-hurd-request@prep.ai.mit.edu to subscribe to bug-hurd +** gnUSENET newsgroup: gnu.hurd.bug +** Hurd bug reports to: bug-hurd@prep.ai.mit.edu + +This list distributes bug reports for, fixes for bugs in, and +suggestions for improvements in the GNU Hurd to its active developers. + +No info-gnu-hurd list is planned. Announcements about the GNU Hurd will +be made to the list info-gnu@prep.ai.mit.edu (see above). + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* help-hurd-request@prep.ai.mit.edu to subscribe to help-hurd +** gnUSENET newsgroup: gnu.hurd.help +** Send contributions to: help-hurd@prep.ai.mit.edu + +This list is the place for users and installers of the GNU Hurd to ask +for help. + +No info-gnu-hurd list is planned. Announcements about the GNU Hurd will +be made to the list info-gnu@prep.ai.mit.edu (see above). + +See section '* General Information about help-* lists'. + +* hurd-ann-request@prep.ai.mit.edu IS NOW DEFUNCT +** gnUSENET newsgroup: NEVER EXISTED +** DEAD address: hurd-ann@prep.ai.mit.edu + +This list is dead. Announcements about the GNU Hurd will be made to the +list info-gnu@prep.ai.mit.edu (see above). + +* bug-gnu-emacs-request@prep.ai.mit.edu to subscribe to bug-gnu-emacs +** gnUSENET newsgroup: gnu.emacs.bug +** Gnu Emacs bug reports to: bug-gnu-emacs@prep.ai.mit.edu + +This list distributes, to the active maintainers of GNU Emacs, bug +reports and fixes for, and suggestions for improvements in GNU Emacs. + +Send bugs in the GNU Emacs Lisp reference manual to: + lisp-manual-bugs@prep.ai.mit.edu + +lisp-manual-bugs is neither a mailing list nor a gnUSENET newsgroup. +It's just a bug-reporting address. + +Subscribers to bug-gnu-emacs get all info-gnu-emacs messages. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* gnu-emacs-sources-request@prep.ai.mit.edu to subscribe to gnu-emacs-sources +** gnUSENET newsgroup: gnu.emacs.sources +** Gnu Emacs source code to: gnu-emacs-sources@prep.ai.mit.edu + +This list/newsgroup will be for the posting, by their authors, of Emacs +Lisp and C sources and patches that improve GNU Emacs. Its contents +will be reviewed by the FSF for inclusion in future releases of GNU +Emacs. + +Please do NOT discuss or request source code here. Use +help-gnu-emacs/gnu.emacs.help for those purposes. This allows the +automatic archiving of sources posted to this list/newsgroup. + +Please do NOT post such sources to any other GNU mailing list (e.g +help-gnu-emacs) or gnUSENET newsgroups (e.g. gnu.emacs.help). It's up +to each poster to decide whether to cross-post to any non-gnUSENET +newsgroup (e.g. comp.emacs or vmsnet.sources). + +Please do NOT announce that you have posted source code to +gnu.emacs.sources to any other GNU mailing list (e.g. help-gnu-emacs) or +gnUSENET newsgroups (e.g. gnu.emacs.help). People who want to keep up +with sources will read this list/newsgroup. It's up to each poster to +decide whether to announce a gnu.emacs.sources article in any +non-gnUSENET newsgroup (e.g. comp.emacs or comp.sources.d). + +If source or patches that were previously posted or a simple fix is +requested in help-gnu-emacs, please mail it to the requester. Do NOT +repost it. If you also want something that is requested, send mail to +the requester asking him to forward it to you. This kind of traffic is +best handled by e-mail, not by a broadcast medium that reaches millions +of sites. + +If the requested source is very long (>10k bytes) send mail offering to +send it. This prevents the requester from getting many redundant copies +and saves network bandwidth. + +* help-gnu-emacs-request@prep.ai.mit.edu to subscribe to help-gnu-emacs +** gnUSENET newsgroup: gnu.emacs.help (and one-way into comp.emacs) +** Send contributions to: help-gnu-emacs@prep.ai.mit.edu + +This list is the place for users and installers of GNU Emacs to ask for +help. Please send bug reports to bug-gnu-emacs instead of posting them +here. + +Since help-gnu-emacs is a very large list, send it only those items that +are seriously important to many people. + +If source or patches that were previously posted or a simple fix is +requested in help-gnu-emacs, please mail it to the requester. Do NOT +repost it. If you also want something that is requested, send mail to +the requester asking him to forward it to you. This kind of traffic is +best handled by e-mail, not a broadcast medium that reaches millions of +sites. + +This list is also gated one way to USENET's newsgroup comp.emacs (once +known as net.emacs). This one-way gating is done for users whose sites +get comp.emacs, but not gnu.emacs.help. Users at non-USENET sites may +receive all articles from comp.emacs by making their request to: +unix-emacs-request@bbn.com + +If Emacs crashes, or if you build Emacs following the standard procedure +on a system which Emacs is supposed to work on (see etc/MACHINES) and it +does not work at all, or if an editing command does not behave as it is +documented to behave, this is a bug. Don't send bug reports to +help-gnu-emacs (gnu.emacs.help) or post them to comp.emacs; mail them to +bug-gnu-emacs@prep.ai.mit.edu instead. + +See section '* General Information about help-* lists'. + +* info-gnu-emacs-request@prep.ai.mit.edu to subscribe to info-gnu-emacs +** gnUSENET newsgroup: gnu.emacs.announce (and one-way into comp.emacs) +** Send announcements to: info-gnu-emacs@prep.ai.mit.edu + +This list distributes announcements and progress reports on GNU Emacs. +It is NOT for general discussion; please use help-gnu-emacs for that. + +The list is filtered to remove items meant for info-gnu-emacs-request, +that can be answered by the moderator without bothering the list, or +should have been sent to another list. + +info-gnu-emacs is also gated one way to USENET's newsgroup comp.emacs +(once known as net.emacs). This one-way gating is done for users whose +sites get comp.emacs, but not gnu.emacs.announce. Users at non-USENET +sites may receive all articles from comp.emacs by making their request +to: unix-emacs-request@bbn.com + +Do not report GNU Emacs bugs to info-gnu-emacs or comp.emacs, instead +mail them to bug-gnu-emacs@prep.ai.mit.edu. + +See section '* General Information about info-* lists'. + +* vms-gnu-emacs-request@prep.ai.mit.edu to subscribe +** gnUSENET newsgroup: gnu.emacs.vms +** Send contributions to: vms-gnu-emacs@prep.ai.mit.edu + +This list was a working group who did the initial port of GNU Emacs to +the VMS operating system. It still discusses problems and solutions to +the VMS port and the distribution of it. + +* bug-bash-request@prep.ai.mit.edu to subscribe to bug-bash +** gnUSENET newsgroup: gnu.bash.bug +** BASH bug reports to: bug-bash@prep.ai.mit.edu + +This list distributes, to the active maintainers of BASH (the Bourne +Again SHell), bug reports and fixes for, and suggestions for +improvements in BASH. User discussion of BASH also occurs here. + +Always report the version number of the operating system, hardware, and +bash (flag -version on startup or check the variable $BASH_VERSION in a +running bash). + +There are no other GNU mailing lists or gnUSENET newsgroups for BASH. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* bug-gdb-request@prep.ai.mit.edu to subscribe to bug-gdb +** gnUSENET newsgroup: gnu.gdb.bug +** GDB bug reports to: bug-gdb@prep.ai.mit.edu + +This list distributes, to the active maintainers of GDB (Gnu's +DeBugger), bug reports and fixes for, and suggestions for improvements +in GDB. + +There are no other GNU mailing lists or gnUSENET newsgroups for GDB. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* bug-octave-request@che.utexas.edu to subscribe to bug-octave +** gnUSENET newsgroup: NONE PLANNED +** Octave bug reports to: bug-octave@che.utexas.edu + +This list distributes, to the active maintainers of Octave (a system +for numerical computations), bug reports and fixes for, and +suggestions for improvements to Octave. + +The help-octave mailing list is for user discussion of Octave. + +See section '* General Information about bug-* lists and reporting +program bugs'. + + +* help-octave-request@che.utexas.edu to subscribe to help-octave +** gnUSENET newsgroup: NONE PLANNED +** Send contributions to: help-octave@che.utexas.edu + +This list is the place for users and installers of Octave to ask for +help. Please send bug reports to bug-octave instead of posting them +here. + +If Octave crashes, or if you build Octave following the standard +procedure on a system on which Octave is supposed to work on and it +does not work at all, or if a command does not behave as it is +documented to behave, this is a bug. Don't send bug reports to +help-octave; mail them to bug-octave@che.utexas.edu instead. + +See section '* General Information about help-* lists'. + +* bug-gcc-request@prep.ai.mit.edu to subscribe to bug-gcc +** gnUSENET newsgroup: gnu.gcc.bug +** GCC bug reports to: bug-gcc@prep.ai.mit.edu + +This list distributes bug reports for, fixes for bugs in, and +suggestions for improvements in the GNU C Compiler to its active +developers. + +Please don't send in a patch without a test case to illustrate the +problem the patch is supposed to fix. Sometimes the patches aren't +correct or aren't the best way to do the job, and without a test case +there is no way to debug an alternate fix. + +The most convenient form of test case is a piece of cpp output that can +be passed directly to cc1. Preferably written in C, not C++ or +Objective C. + +Subscribers to bug-gcc get all info-gcc messages. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* help-gcc-request@prep.ai.mit.edu to subscribe to help-gcc +** gnUSENET newsgroup: gnu.gcc.help +** Send contributions to: help-gcc@prep.ai.mit.edu + +This list is the place for users and installers of the GNU C Compiler to +ask for help. + +If gcc crashes, or if you build gcc following the standard procedure on +a system which gcc is supposed to work on (see config.sub) and it does +not work at all, or if an command line option does not behave as it is +documented to behave, this is a bug. Don't send bug reports to help-gcc +(gnu.gcc.help); mail them to bug-gcc@prep.ai.mit.edu instead. + +See section '* General Information about help-* lists'. + +* info-gcc-request@prep.ai.mit.edu to subscribe to info-gcc +** gnUSENET newsgroup: gnu.gcc.announce +** Send announcements to: info-gcc@prep.ai.mit.edu + +This list distributes announcements and progress reports on the GNU C +Compiler. It is NOT for general discussion; please use help-gcc for +that. + +The list is filtered to remove items meant for info-gcc-request, that +can be answered by the moderator without bothering the list, or should +have been sent to another list. + +See section '* General Information about info-* lists'. + +* bug-gnu960-request@ichips.intel.com to subscribe to bug-gnu960 +** gnUSENET newsgroup: NONE PLANNED +** Intel 960 Port bug reports to: bug-gnu960@ichips.intel.com + +This list distributes bug reports for, fixes for bugs in, and +suggestions for improvements in Intel's port of GNU software to the +Intel 960 microprocessor. + +You can also fax to: GNU/960 - 1-503-696-4930. + +There are no other GNU mailing lists or gnUSENET newsgroups for Intel's +port of GNU software to the Intel 960 microprocessor. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* bug-glibc-request@prep.ai.mit.edu to subscribe to bug-glibc +** gnUSENET newsgroup: gnu.glibc.bug +** GNU C Library bug reports to: bug-glibc@prep.ai.mit.edu + +This list distributes, to the active maintainers of glibc (GNU's C +library), bug reports and fixes for, and suggestions for improvements in +glibc. User discussion of glibc also occurs here. + +Announcements of new releases of glibc are made on both info-gcc and +bug-glibc. + +There are no other GNU mailing lists or gnUSENET newsgroups for the GNU +C Library. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* bug-g++-request@prep.ai.mit.edu to subscribe to bug-g++ +** gnUSENET newsgroup: gnu.g++.bug +** G++ bug reports to: bug-g++@prep.ai.mit.edu + +This list distributes bug reports for, fixes for bugs in, and +suggestions for improvements in the GNU C++ Compiler to its active +developers. + +G++ uses the GNU C-Compiler back end. Active developers may wish to +subscribe to bug-gcc@prep.ai.mit.edu as well. + +Subscribers to bug-g++ get all info-g++ messages. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* help-g++-request@prep.ai.mit.edu to subscribe to help-g++ +** gnUSENET newsgroup: gnu.g++.help (and one-way into comp.lang.c++) +** Send contributions to: help-g++@prep.ai.mit.edu + +This list is the place for users and installers of the GNU C++ Compiler +to ask for help. Please send bug reports to bug-g++@prep.ai.mit.edu +instead of posting them here. + +help-g++ is also gated one way to USENET's newsgroup comp.lang.c++. +This one-way gating is done for users whose sites get comp.lang.c++, but +not gnu.g++.help. + +See section '* General Information about help-* lists'. + +* info-g++-request@prep.ai.mit.edu to subscribe to info-g++ +** gnUSENET newsgroup: gnu.g++.announce (and one-way into comp.lang.c++) +** Send announcements to: info-g++@prep.ai.mit.edu + +This list distributes announcements and progress reports on the GNU C++ +Compiler. It is NOT for general discussion; please use help-g++ for +that. + +The list is filtered to remove items meant for info-g++-request, that +can be answered by the moderator without bothering the list, or should +have been sent to another list. + +It is also gated one way to USENET's newsgroup comp.lang.c++. This +one-way gating is done for users whose sites get comp.lang.c++, but not +gnu.g++.announce. + +Do not report g++ bugs to info-g++ or comp.lang.c++, mail them to +bug-g++@prep.ai.mit.edu instead. + +See section '* General Information about info-* lists'. + +* bug-lib-g++-request@prep.ai.mit.edu to subscribe to bug-lib-g++ +** gnUSENET newsgroup: gnu.g++.lib.bug +** lib-g++ bug reports to: bug-lib-g++@prep.ai.mit.edu + +This list distributes, to the active maintainers of libg++ (GNU's +library for C++), bug reports and fixes for, and suggestions for +improvements in lib-g++. User discussion of libg++ also occurs here. + +Announcements of new releases of libg++ are made on both info-g++ and +bug-lib-g++. + +There are no other GNU mailing lists or gnUSENET newsgroups for GNU's +G++ Library. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* info-gnu-fortran-request@prep.ai.mit.edu to subscribe to info-gnu-fortran +** gnUSENET newsgroup: NONE YET +** Send announcements to: info-gnu-fortran@prep.ai.mit.edu + +This list is for progress reports about the GNU Fortran compiler. In +the future it will also be used for release notices. + +The list is filtered to remove items meant for info-gnu-fortran-request, +that can be answered by the moderator without bothering the list, or +should have been sent to another list. + +People on the Internet can get a current status report by fingering the +address fortran@gnu.ai.mit.edu. + +See section '* General Information about info-* lists'. + +There are no other GNU mailing lists or gnUSENET newsgroups for GNU +Fortran (yet). + +* bug-oleo-request@prep.ai.mit.edu to subscribe to bug-oleo +** gnUSENET newsgroup: NONE PLANNED +** Oleo bug reports to: bug-oleo@prep.ai.mit.edu + +This list distributes, to the active maintainers of Oleo (the GNU +spreadsheet), bug reports and fixes for, and suggestions for +improvements to Oleo. User discussion of Oleo also occurs here. + +There are no other GNU mailing lists or gnUSENET newsgroups for Oleo . + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* bug-gmp-request@prep.ai.mit.edu to subscribe to bug-gmp +** gnUSENET newsgroup: NONE PLANNED +** gmp bug reports to: bug-gmp@prep.ai.mit.edu + +This list distributes, to the active maintainers of gmp (the GNU +Multiple Precision Library), bug reports and fixes for, and suggestions +for improvements to gmp. User discussion of gmp also occurs here. + +There are no other GNU mailing lists or gnUSENET newsgroups for gmp . + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* bug-pine-request@prep.ai.mit.edu to subscribe to bug-pine +** gnUSENET newsgroup: NONE PLANNED +** pine bug reports to: bug-pine@prep.ai.mit.edu + +This list distributes, to the active maintainers of pine (the GNU +version of the pine mail reader), bug reports and fixes for, and suggestions +for improvements to pine. User discussion of pine also occurs here. + +There are no other GNU mailing lists or gnUSENET newsgroups for pine . + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* bug-cfengine-request@prep.ai.mit.edu to subscribe to bug-cfengine +** gnUSENET newsgroup: gnu.cfengine.bug +** cfengine bug reports to: bug-cfengine@prep.ai.mit.edu + +This list distributes, to the active maintainers of cfengine (configure +BSD and System-5-like operating systems attached to a TCP/IP network), +bug reports and fixes for, and suggestions for improvements to cfengine. +User discussion of cfengine also occurs here. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* help-cfengine-request@prep.ai.mit.edu to subscribe to help-cfengine +** gnUSENET newsgroup: gnu.cfengine.help +** Send contributions to: help-cfengine@prep.ai.mit.edu + +This list is the place for users and installers of cfengine to ask for +help. Please send bug reports to bug-cfengine instead of posting them +here. + +This list is also used for announcements about cfengine and related +programs, and small but important patches. Announcements of cfengine +releases are also made to info-gnu@prep.ai.mit.edu (see above) + +Since help-cfengine is a large list, send it only those items that +are seriously important to many people. + +If source or patches that were previously posted or a simple fix is +requested in help-cfengine, please mail it to the requester. Do NOT +repost it. If you also want something that is requested, send mail to +the requester asking him to forward it to you. This kind of traffic is +best handled by e-mail, not a broadcast medium that reaches millions of +sites. + +See section '* General Information about help-* lists'. +Also see section '* General Information about info-* lists'. + +* bug-gnu-smalltalk-request@prep.ai.mit.edu to subscribe to bug-gnu-smalltalk +** gnUSENET newsgroup: gnu.smalltalk.bug +** GNU Smalltalk bug reports to: bug-gnu-smalltalk@prep.ai.mit.edu + +GNU Smalltalk is the GNU project implementation of the Smalltalk language. + +This list distributes, to the active maintainers of GNU Smalltalk, bug +reports and fixes for, and suggestions for improvements to GNU +Smalltalk. User discussion of GNU Smalltalk also occurs here. + +For now, new releases of GNU Smalltalk will also be announced on this list. + +There are no other GNU mailing lists or gnUSENET newsgroups for GNU +Smalltalk. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* st-next-request@laplace.eng.sun.com to subscribe to st-next +** gnUSENET newsgroup: NONE PLANNED +** Send contributions to: st-next@laplace.eng.sun.com + +For people interested in working on GNU Smalltalk on the NeXT. + +* bug-groff-request@prep.ai.mit.edu to subscribe to bug-groff +** gnUSENET newsgroup: gnu.groff.bug +** GNU groff bug reports to: bug-groff@prep.ai.mit.edu + +groff is the GNU project implementation, in C++, of the traditional Unix +document formatting tools. + +This list distributes, to the active maintainers of groff, bug reports +and fixes for, and suggestions for improvements to groff (and it +component programs). User discussion of groff also occurs here. + +For now, new releases of groff will also be announced on this list. + +There are no other GNU mailing lists or gnUSENET newsgroups for groff. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* bug-ghostscript-request@prep.ai.mit.edu to subscribe to bug-ghostscript +** gnUSENET newsgroup: gnu.ghostscript.bug +** Ghostscript bug reports to: bug-ghostscript@prep.ai.mit.edu + +Ghostscript is the GNU project implementation of a language and graphics +library with a remarkable similarity to PostScript. + +This list distributes, to the active maintainers of Ghostscript, bug +reports and fixes for, and suggestions for improvements in Ghostscript. + +For now, new releases of Ghostscript will also be announced on this list. + +There are no other GNU mailing lists or gnUSENET newsgroups for +Ghostscript. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* bug-gnu-utils-request@prep.ai.mit.edu to subscribe to bug-gnu-utils +** gnUSENET newsgroup: gnu.utils.bug +** GNU Utilities bug reports to: bug-gnu-utils@prep.ai.mit.edu + +This list distributes, to the active maintainers of these programs, bug +reports and fixes for, and suggestions for improvements in GNU programs +not covered by other bug-* mailing lists/gnu.*.bug newsgroups. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* help-gnu-utils-request@prep.ai.mit.edu to subscribe to help-gnu-utils +** gnUSENET newsgroup: gnu.utils.help +** Send contributions to: help-gnu-utils@prep.ai.mit.edu + +This list is the place for users and installers of GNU programs not +covered by other GNU mailing lists/gnu.* newsgroups to ask for help. + +Don't send bug reports to help-gnu-utils (gnu.utils.help); mail them to +bug-gnu-utils@prep.ai.mit.edu instead. + +See section '* General Information about help-* lists'. + +* info-gnu-utils-request@prep.ai.mit.edu IS NOW DEFUNCT +** a gnUSENET newsgroup bever existed +** DEAD address: info-gnu-utils@prep.ai.mit.edu + +This list is dead. Announcements about GNU Utilities will be made to the +list info-gnu@prep.ai.mit.edu (see above). + +* info-cvs-request@prep.ai.mit.edu to subscribe to info-cvs. +** USENET newsgroup: (none) +** CVS discussions/questions to: info-cvs@prep.ai.mit.edu + +This list is for discussion and dissemination of information about +CVS. Please check the FAQ before posting questions, however. + +* bug-cvs-request@prep.ai.mit.edu to subscribe to bug-cvs. +** USENET newsgroup: (none) +** CVS bug reports to: bug-cvs@prep.ai.mit.edu + +This list distributes bug reports, fixes, and suggestions for +improvements to the maintainers of CVS. + +* bug-fortran-mode-request@erl.mit.edu to subscribe to bug-fortran-mode +** USENET newsgroup: (none) +** Fortran mode bug reports to: bug-fortran-mode@erl.mit.edu + +This list collects bug reports, fixes for bugs, and suggestions for +improvements in GNU Emacs's Fortran mode (a major mode to support +editing Fortran source code). + +It is the place to report Fortran mode bugs by all users of Fortran +mode. + +Always report the version number Fortran mode reports on startup as well +as the version of Emacs. + +There is no info-fortran-mode list. There are no USENET gateways to +bug-fortran-mode at this time. + +* info-gnus-request@flab.fujitsu.co.jp to subscribe +** gnUSENET newsgroup: NONE YET +** Send contributions to: info-gnus@flab.fujitsu.co.jp + +The list is intended to exchange useful information about GNUS, such as +bug reports, useful hooks, and extensions of GNUS. GNUS is an NNTP-base +network news reader for GNU Emacs (which also works with a news spool). +English and Japanese are the official languages of the list. GNUS is +quite different than gnews. + +* info-gnus-english-request@prep.ai.mit.edu to subscribe +** gnUSENET newsgroup: gnu.emacs.gnus +** Send contributions to: info-gnus-english@prep.ai.mit.edu + +The list has the same charter as info-gnus. The difference is that +English is the only official language of the list. + +info-gnus-english/gnu.emacs.gnus is forward to info-gnus, but NOT +vice-versa. + +* info-gnews-request@ics.uci.edu to subscribe to info-gnews +** gnUSENET newsgroup: gnu.emacs.gnews +** Send contributions to: info-gnews@ics.uci.edu + +This newsgroup is intended to exchange useful information about gnews, +such as bug reports, useful hooks, and extensions of gnews. gnews is an +NNTP-base network news reader for GNU Emacs (which also works a news +spool). It is quite different than GNUS. + +* gnu-emacs-ada-request@grebyn.com to subscribe to gnu-emacs-ada +** gnUSENET newsgroup: NONE PLANNED +** Gnu Emacs Ada support bug reports to: gnu-emacs-ada@grebyn.com + +This list distributes bug reports for, fixes for bugs in, and +suggestions for improvements in GNU Emacs' editing support of the Ada +programming language. + +There are no other GNU mailing lists or gnUSENET newsgroups for GNU +Emacs' editing support of Ada. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* bug-vm-request@uunet.uu.net to subscribe to bug-vm +** gnUSENET newsgroup: gnu.emacs.vm.bug +** VM mail reader bug reports to: bug-vm@uunet.uu.net + +This list discusses bugs in View Mail mode for GNU Emacs, with an +emphasis on beta and prerelease versions. + +Always report the version number of VM you are using, as well as the +version of Emacs you're running. If you believe it is significant, +report the operating system used and the hardware. + +Subscribers to bug-vm get all info-vm messages. + +* info-vm-request@uunet.uu.net to subscribe to info-vm +** gnUSENET newsgroup: gnu.emacs.vm.info +** Send contributions to: info-vm@uunet.uu.net + +This list discusses the View Mail mode for GNU Emacs, an alternative to +rmail mode. + +* supercite-request@warsaw.nlm.nih.gov to subscribe to supercite +** gnUSENET newsgroup: NONE PLANNED +** Send articles to: supercite@warsaw.nlm.nih.gov +*** UUCP: ..!uunet!warsaw.nlm.nih.gov!supercite-request + +The supercite mailing list covers issues related to the advanced +mail/news citation package called Supercite for GNU Emacs. + +* auc-tex-request@iesd.auc.dk to subscribe +** USENET newsgroup: NONE YET +** Send contributions to: auc-tex@iesd.auc.dk + +The list is intended to exchange information about AUC TeX, such as +bug reports, request for help, and information on current +developments. AUC TeX is a much enhanced LaTeX mode for GNU Emacs. + +The list is unmoderated. + +* bug-gnu-chess-request@prep.ai.mit.edu to subscribe to bug-gnu-chess +** gnUSENET newsgroup: gnu.chess.bug +** GNU Chess bug reports to: bug-gnu-chess@prep.ai.mit.edu + +This list directly accesses the GNU Chess developer's group. If you +have a *BUG* to report about the program, which can also include a +feature enhancement request, please send it to this list. + +Subscribers to bug-gnu-chess get all info-gnu-chess messages. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +* help-gnu-chess-request@prep.ai.mit.edu IS NOW DEFUNCT +** gnUSENET newsgroup: NONE PLANNED +** DEAD address: help-gnu-chess@prep.ai.mit.edu + +This list is dead. Use info-gnu-chess@prep.ai.mit.edu/gnu.chess instead. + +* info-gnu-chess-request@prep.ai.mit.edu to subscribe to info-gnu-chess +** gnUSENET newsgroup: gnu.chess +** Send contributions to: info-gnu-chess@prep.ai.mit.edu +** FAQ-URL: http://www.research.digital.com/SRC/personal/Tim_Mann/chess.html +** FAQ-Archive-name: games/chess/gnu-faq +** FAQ-Posting-frequency: monthly + +This list is the place for users and installers of GNU Chess to ask for +help. This list is also used for games played by people or other +entities against the program, and other generalized non-bug, +non-enhancement data. Please send bug reports to bug-gnu-chess instead +of posting them here. + +This list is also used for announcements about GNU Chess and related +programs, and small but important patches. Announcements of GNU Chess +releases are also made to info-gnu@prep.ai.mit.edu (see above) + +Since info-gnu-chess is a large list, send it only those items that +are seriously important to many people. + +If source or patches that were previously posted or a simple fix is +requested in info-gnu-chess, please mail it to the requester. Do NOT +repost it. If you also want something that is requested, send mail to +the requester asking him to forward it to you. This kind of traffic is +best handled by e-mail, not a broadcast medium that reaches millions of +sites. + +See section '* General Information about help-* lists'. +Also see section '* General Information about info-* lists'. + +* bug-gnu-shogi-request@prep.ai.mit.edu to subscribe to bug-gnu-shogi +** gnUSENET newsgroup: NONE PLANNED +** GNU Shogi bug reports to: bug-gnu-shogi@prep.ai.mit.edu + +This list directly accesses the GNU Shogi developer's group. If you +have a *BUG* to report about the program, which can also include a +feature enhancement request, please send it to this list. + +Subscribers to bug-gnu-shogi get all info-gnu-shogi messages. + +See section '* General Information about bug-* lists and reporting +program bugs'. + +Shogi is a game something like chess. There are several different types +of pieces, a board that is 9 by 9 squares, and the modification that a +captured piece can be reintroduced on the board by the capturing player +(and used). Due to this last difference from Western chess, a Shogi +game never simplifies. + +* help-gnu-shogi-request@prep.ai.mit.edu IS NOW DEFUNCT +** gnUSENET newsgroup: NONE PLANNED +** DEAD address: help-gnu-shogi@prep.ai.mit.edu + +This list is dead. + +* info-gnu-shogi-request@prep.ai.mit.edu to subscribe to info-gnu-shogi +** gnUSENET newsgroup: NONE PLANNED +** Send contributions to: info-gnu-shogi@prep.ai.mit.edu + +This list is the place for users and installers of GNU Shogi to ask for +help. This list is also used for games played by people or other +entities against the program, and other generalized non-bug, +non-enhancement data. Please send bug reports to bug-gnu-shogi instead +of posting them here. + +This list is also used for announcements about GNU Shogi and related +programs, and small but important patches. Announcements of GNU Shogi +releases are also made to info-gnu@prep.ai.mit.edu (see above) + +Since info-gnu-shogi is a large list, send it only those items that +are seriously important to many people. + +If source or patches that were previously posted or a simple fix is +requested in info-gnu-shogi, please mail it to the requester. Do NOT +repost it. If you also want something that is requested, send mail to +the requester asking him to forward it to you. This kind of traffic is +best handled by e-mail, not a broadcast medium that reaches millions of +sites. + +See section '* General Information about help-* lists'. +Also see section '* General Information about info-* lists'. + +* gnu-manual-request@a.cs.uiuc.edu IS NOW DEFUNCT +** DEAD: Gnusenet newsgroup: gnu.emacs.lisp.manual +** DEAD address: gnu-manual@a.cs.uiuc.edu +*** DEAD UUCP address: ..!uunet!uiucdcs!gnu-manual-request + +This list and newsgroup is dead. It was a working group whose +volunteers wrote, proofread and commented on the developing GNU Emacs +Lisp programmers manual. + +Send bugs in the GNU Emacs Lisp reference manual to: + lisp-manual-bugs@prep.ai.mit.edu + +lisp-manual-bugs is neither a mailing list nor a gnUSENET newsgroup. +It's just a bug-reporting address. + +* no mailing list request +** gnUSENET newsgroup: gnu.gnusenet.config +** no mailing list + +This newsgroup has nothing to do with GNU software, especially its +configuration. It exists to distribute information about the +administration and configuration of gnUSENET: the gnu.all alternative +USENET hierarchy that carry the GNU mailing lists. + +Administrators of gnUSENET hosts receiving the gnu.all newsgroups are +welcome to ask questions here or via e-mail of gnu@prep.ai.mit.edu. + +* no mailing list request +** gnUSENET newsgroup: gnu.gnusenet.test +** no mailing list + +This newsgroup has nothing to do with GNU software, especially its +testing. It exists to allow test messages to be made in gnUSENET: the +gnu.all alternative USENET hierarchy that carry the GNU mailing lists. + +Local variables: +mode: outline +fill-column: 72 +End: diff --git a/etc/MORE.STUFF b/etc/MORE.STUFF new file mode 100644 index 0000000..be87615 --- /dev/null +++ b/etc/MORE.STUFF @@ -0,0 +1,52 @@ +More Neat Stuff for your Emacs -*-Outline-*- + +This file describes GNU Emacs programs and resources that are maintained +by other people. Some of these may become part of the Emacs distribution +in the future. + +* The LCD archive + +There is a large collection of Emacs Lisp code available for FTP at +archive.cis.ohio-state.edu; it is actively maintained by Dave Brennan + and Dave Sill . + +To get started using this archive, do: + + ftp archive.cis.ohio-state.edu + +Once you're in FTP, do + + cd pub/gnu/emacs/elisp-archive + bin + get lispdir.el.Z + get LCD-datafile.Z + +and exit. Then do: + + compress -d *.Z + +The lispdir.el package will help you search for useful packages in the +LCD-datafile, which is a list of the archive constants. It will even +fetch them for you on command. + +* Eric Ludlam's etalk system + +Eric Ludlam has written a C program and Emacs Lisp code to do Internet talk +through an Emacs window. The package also includes Emacs Lisp code which +assists you in using talk to play a number of different interactive games. + +This system seems to be quite nicely put together and is well documented +with a texinfo file that you can integrate into Emacs's own on-line help. +It's too large and specialized to include in the Emacs distribution, though. + +Sources of this system are available for FTP at + + nic.umass.edu 128.119.166.14 + +Look under pub/contrib. As of March 23 1993, there are two relevant files: + + pub/contrib/etalk0.6B.tar.Z --- sources of the talk system + pub/contrib/egames0.6B.tar.Z --- more game-support files + +We don't know whether this can use the additional features in GNU talk. + diff --git a/etc/MOTIVATION b/etc/MOTIVATION new file mode 100644 index 0000000..37ed36f --- /dev/null +++ b/etc/MOTIVATION @@ -0,0 +1,176 @@ +STUDIES FIND REWARD OFTEN NO MOTIVATOR + +Creativity and intrinsic interest diminish if task is done for gain + +By Alfie Kohn +Special to the Boston Globe +[reprinted with permission of the author + from the Monday 19 January 1987 Boston Globe] + +In the laboratory, rats get Rice Krispies. In the classroom the top +students get A's, and in the factory or office the best workers get +raises. It's an article of faith for most of us that rewards promote +better performance. + +But a growing body of research suggests that this law is not nearly as +ironclad as was once thought. Psychologists have been finding that +rewards can lower performance levels, especially when the performance +involves creativity. + +A related series of studies shows that intrinsic interest in a task - +the sense that something is worth doing for its own sake - typically +declines when someone is rewarded for doing it. + +If a reward - money, awards, praise, or winning a contest - comes to +be seen as the reason one is engaging in an activity, that activity +will be viewed as less enjoyable in its own right. + +With the exception of some behaviorists who doubt the very existence +of intrinsic motivation, these conclusions are now widely accepted +among psychologists. Taken together, they suggest we may unwittingly +be squelching interest and discouraging innovation among workers, +students and artists. + +The recognition that rewards can have counter-productive effects is +based on a variety of studies, which have come up with such findings +as these: Young children who are rewarded for drawing are less likely +to draw on their own that are children who draw just for the fun of +it. Teenagers offered rewards for playing word games enjoy the games +less and do not do as well as those who play with no rewards. +Employees who are praised for meeting a manager's expectations suffer +a drop in motivation. + +Much of the research on creativity and motivation has been performed +by Theresa Amabile, associate professor of psychology at Brandeis +University. In a paper published early last year on her most recent +study, she reported on experiments involving elementary school and +college students. Both groups were asked to make "silly" collages. +The young children were also asked to invent stories. + +The least-creative projects, as rated by several teachers, were done +by those students who had contracted for rewards. "It may be that +commissioned work will, in general, be less creative than work that is +done out of pure interest," Amabile said. + +In 1985, Amabile asked 72 creative writers at Brandeis and at Boston +University to write poetry. Some students then were given a list of +extrinsic (external) reasons for writing, such as impressing teachers, +making money and getting into graduate school, and were asked to think +about their own writing with respect to these reasons. Others were +given a list of intrinsic reasons: the enjoyment of playing with +words, satisfaction from self-expression, and so forth. A third group +was not given any list. All were then asked to do more writing. + +The results were clear. Students given the extrinsic reasons not only +wrote less creatively than the others, as judged by 12 independent +poets, but the quality of their work dropped significantly. Rewards, +Amabile says, have this destructive effect primarily with creative +tasks, including higher-level problem-solving. "The more complex the +activity, the more it's hurt by extrinsic reward," she said. + +But other research shows that artists are by no means the only ones +affected. + +In one study, girls in the fifth and sixth grades tutored younger +children much less effectively if they were promised free movie +tickets for teaching well. The study, by James Gabarino, now +president of Chicago's Erikson Institute for Advanced Studies in Child +Development, showed that tutors working for the reward took longer to +communicate ideas, got frustrated more easily, and did a poorer job in +the end than those who were not rewarded. + +Such findings call into question the widespread belief that money is +an effective and even necessary way to motivate people. They also +challenge the behaviorist assumption that any activity is more likely +to occur if it is rewarded. Amabile says her research "definitely +refutes the notion that creativity can be operantly conditioned." + +But Kenneth McGraw, associate professor of psychology at the +University of Mississippi, cautions that this does not mean +behaviorism itself has been invalidated. "The basic principles of +reinforcement and rewards certainly work, but in a restricted context" +- restricted, that is, to tasks that are not especially interesting. + +Researchers offer several explanations for their surprising findings +about rewards and performance. + +First, rewards encourage people to focus narrowly on a task, to do it +as quickly as possible and to take few risks. "If they feel that +'this is something I hve to get through to get the prize,' the're +going to be less creative," Amabile said. + +Second, people come to see themselves as being controlled by the +reward. They feel less autonomous, and this may interfere with +performance. "To the extent one's experience of being +self-determined is limited," said Richard Ryan, associate psychology +professor at the University of Rochester, "one's creativity will be +reduced as well." + +Finally, extrinsic rewards can erode intrinsic interest. People who +see themselves as working for money, approval or competitive success +find their tasks less pleasurable, and therefore do not do them as +well. + +The last explanation reflects 15 years of work by Ryan's mentor at the +University of Rochester, Edward Deci. In 1971, Deci showed that +"money may work to buy off one's intrinsic motivation for an activity" +on a long-term basis. Ten years later, Deci and his colleagues +demonstrated that trying to best others has the same effect. Students +who competed to solve a puzzle quickly were less likely than those who +were not competing to keep working at it once the experiment was over. + +Control plays role + +There is general agreement, however, that not all rewards have the +same effect. Offering a flat fee for participating in an experiment - +similar to an hourly wage in the workplace - usually does not reduce +intrinsic motivation. It is only when the rewards are based on +performing a given task or doing a good job at it - analogous to +piece-rate payment and bonuses, respectively - that the problem +develops. + +The key, then, lies in how a reward is experienced. If we come to +view ourselves as working to get something, we will no longer find +that activity worth doing in its own right. + +There is an old joke that nicely illustrates the principle. An +elderly man, harassed by the taunts of neighborhood children, finally +devises a scheme. He offered to pay each child a dollar if they would +all return Tuesday and yell their insults again. They did so eagerly +and received the money, but he told them he could only pay 25 cents on +Wednesday. When they returned, insulted him again and collected their +quarters, he informed them that Thursday's rate would be just a penny. +"Forget it," they said - and never taunted him again. + +Means to and end + +In a 1982 study, Stanford psychologist Mark L. Lepper showed that any +task, no matter how enjoyable it once seemed, would be devalued if it +were presented as a means rather than an end. He told a group of +preschoolers they could not engage in one activity they liked until +they first took part in another. Although they had enjoyed both +activities equally, the children came to dislike the task that was a +prerequisite for the other. + +It should not be surprising that when verbal feedback is experienced +as controlling, the effect on motivation can be similar to that of +payment. In a study of corporate employees, Ryan found that those who +were told, "Good, you're doing as you /should/" were "significantly +less intrinsically motivated than those who received feedback +informationally." + +There's a difference, Ryan says, between saying, "I'm giving you this +reward because I recognize the value of your work" and "You're getting +this reward because you've lived up to my standards." + +A different but related set of problems exists in the case of +creativity. Artists must make a living, of course, but Amabile +emphasizes that "the negative impact on creativity of working for +rewards can be minimized" by playing down the significance of these +rewards and trying not to use them in a controlling way. Creative +work, the research suggests, cannot be forced, but only allowed to +happen. + +/Alfie Kohn, a Cambridge, MA writer, is the author of "No Contest: The +Case Against Competition," recently published by Houghton Mifflin Co., +Boston, MA. ISBN 0-395-39387-6. / diff --git a/etc/NEWS b/etc/NEWS new file mode 100644 index 0000000..01711ba --- /dev/null +++ b/etc/NEWS @@ -0,0 +1,506 @@ +-*- mode:outline -*- + +* Introduction +============== + +This file presents some general information about XEmacs. It is +primarily about the changes in recent XEmacs versions and its release +history. + +Use `C-c C-f' to move to the next equal level of outline, and +`C-c C-b' to move to previous equal level. `C-h m' will give more +info about the Outline mode. Many commands are also available through +the menubar. + +Users who would like to know which capabilities have been introduced +in each release should look at the appropriate section of this file. +Starting with version 20.0, XEmacs includes ChangeLogs, which can be +consulted for a more detailed list of changes. + +Users interested in some of the details of how XEmacs differs from GNU +Emacs should read the section "What's Different?" near the end of this +file. + + N.B. The term "GNU Emacs" refers to any release of Emacs Version + 19 from the Free Software Foundation's GNU Project. (We do not + say just "Emacs" as Richard M. Stallman ["RMS"] prefers, because + it is clearly a more generic term.) The term "XEmacs" refers to + this program or to its predecessors "Era" and "Lucid Emacs". The + predecessor of all these program is called "Emacs 18". When no + particular version is implied, "Emacs" will be used. + + +* Changes in XEmacs 21.2 +======================== +None yet. + +* Changes in XEmacs 21.0 +======================== + +** XEmacs has been unbundled into constituent installable packages. +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 +at . To +discuss Windows-specific issues, subscribe to the mailing list at +. + +** XEmacs will now use `XEmacs' as its application class if it finds +any `XEmacs' resources in the resource database. Otherwise, it will +continue to use the `Emacs' class. + +** The options menu has been ported to Custom. +This means that each entry in the options menu acts as if you had customized +the corresponding variable by hand. ### WARNING: there is currently no +upgrading function to help you port your old options settings to the new +format. Consequently, if you want to modify the options for XEmacs 21, you +will have to set them all again through the menu, and remove the code loading +.xemacs-options from your .emacs. + +** When the Zmacs region is active, `M-x query-replace' and the other +replace commands now operate on the region contents only. + +** Using the new `-private' option, you can make XEmacs use a private +colormap. + +** The `imenu' package has been ported to XEmacs and is available as a +package. + +** `echo-keystrokes' can now be a floating-point number, so that you +can set it to intervals shorter than one second. + + (setq echo-keystrokes 0.1) + +** The new command `center-to-window-line' works like `recenter' +(bound to `C-l'), only it does not redisplay the whole display area. + +** The M-. command will now first search through exact tags matches, +and then through inexact matches, as one would expect. + +** The new variable `user-full-name' can be used to customize one's +name when using the Emacs mail and news reading facilities. + +Normally, `user-full-name' is a function that returns the full name of +a user or UID, as specified by the system -- for instance, +(user-full-name "root") returns something like "Super-User". However, +when the function is called without arguments, it will return the +value of the `user-full-name' variable. The `user-full-name' variable +is initialized using the environment variable NAME and (failing that) +the user's system name. + +The behaviour of the `user-full-name' function with an argument +specified is unchanged. + +** The new command `M-x customize-changed-options' lets you customize +all the options whose default values have changed in recent Emacs +versions. You specify a previous Emacs version number as argument, +and the command creates a customization buffer showing all the +customizable options whose default values were changed since that +version. + +If you don't specify a particular version number argument, then the +customization buffer shows all the customizable options for which +Emacs versions of changes are recorded. + +** The new command `add-log-convert' can be used to convert the +old-style (pre-20.3) ChangeLog buffers to new style, for +consistency. A reminder: if you wish to revert to old-style +ChangeLogs instead, customize the value of `add-log-time-format' +variable. + +** The new command `zap-up-to-char' is now available. It is similar +to `zap-to-char', except that it does not delete the searched-for +character. It is not bound to a key by default. + +** You can now store a number into a register with `C-u NUMBER C-x r n' +REG, increment it by INC with `C-u INC C-x r + REG' (to increment by +one, omit C-u INC), and insert it in the buffer with `C-x r g REG'. +This is useful for writing keyboard macros. + +** The M-: command, when given a prefix argument, will now insert its +result to the current buffer. + +** 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. +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. + +*** Mule support now works on TTY's. Use `set-terminal-coding-system' +and `set-keyboard-coding-system' to specify the coding system of your +display and keyboard. + +*** Egg/SJ3 input method is now officially supported. Quail and +Egg/Skk have been available through the generalized Leim since 20.3. + +*** Localized Japanese menubars are available if XEmacs is built with +XFONTSET and either the X11 libraries are built with X_LOCALE defined +or the native C libraries support Japanese localization. This has +been available since 20.3, only it hasn't been announced before. + +** Jamie Zawinski's `gdb-highlight' extension is now distributed with +the `debug' package. gdb-highlight makes most objects printed in a +gdb buffer be mouse-sensitive: as text shows up in the buffer, it is +parsed, and objects which are recognized have context-sensitive +commands attached to them. To use it, add the following to `.emacs': + + (add-hook 'gdb-mode-hook (lambda () (require 'gdb-highlight))) + +** The package popper.el is now included in the edit-utils package. +It has been greatly enhanced with respect to the one once included +with the ilisp package and should work well under XEmacs 21.0. + +** C mode changes + +*** Multiline macros are now handled, both as they affect indentation, +and as recognized syntax. New syntactic symbol cpp-macro-cont is +assigned to second and subsequent lines of a multiline macro +definition. + +*** A new style "user" which captures all non-hook-ified +(i.e. top-level) .emacs file variable setings and customizations. +Style "cc-mode" is an alias for "user" and is deprecated. "gnu" style +is still the default however. + +*** "java" style now conforms to Sun's JDK coding style. + +*** There are new commands c-beginning-of-defun, c-end-of-defun which +are alternatives which you could bind to C-M-a and C-M-e if you prefer +them. They do not have key bindings by default. + +*** New and improved implementations of M-a (c-beginning-of-statement) +and M-e (c-end-of-statement). + +*** C++ namespace blocks are supported, with new syntactic symbols +namespace-open, namespace-close, and innamespace. + +*** File local variable settings of c-file-style and c-file-offsets +makes the style variables local to that buffer only. + +*** New indentation functions c-lineup-close-paren, +c-indent-one-line-block, c-lineup-dont-change. + +*** Improvements (hopefully!) to the way CC Mode is loaded. You +should now be able to do a (require 'cc-mode) to get the entire +package loaded properly for customization in your .emacs file. A new +variable c-initialize-on-load controls this and is t by default. + +** In Text mode, now only blank lines separate paragraphs. +This makes it possible to get the full benefit of Adaptive Fill mode +in Text mode, and other modes derived from it (such as Mail mode). +TAB in Text mode now runs the command indent-relative; this makes a +practical difference only when you use indented paragraphs. + +As a result, the old Indented Text mode is now identical to Text mode, +and is an alias for it. + +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. + +This behaviour can be customized, look for `Info-auto-generate-directory' +and `Info-save-auto-generated-dir' in the `info' customization group. + + +* Lisp and internal changes in XEmacs 21.0 +========================================== + +** It is now possible to build XEmacs with support for 31-bit Lisp +integers (normally, Lisp integers are only 28 bits wide on 32-bit +machines.) Configure with --use-minimal-tagbits to test. With this +change, the maximum buffer size on 32-bit machines is increased from +128M to 1G. This setting will be made default in a future XEmacs +version. + +** Specifier changes. + +*** When instantiating a specifier, the window locale now has a higher +precedence than the buffer locale. This is because the window locale +is more specific than the buffer locale. + +*** The new macro `let-specifier' can be used to temporarily add +specifications to specifiers. See the documentation for details. + +*** The new specifiers `vertical-scrollbar-visible-p' and +`horizontal-scrollbar-visible-p' may be used to control scrollbar +visibility. Previously, the only way to remove a scrollbar was to set +its size to 0. This method is still supported for backward +compatibility. + +*** The new specifiers `scrollbar-on-left-p' and `scrollbar-on-top-p' +may be used to control the position of the vertical and horizontal +toolbar. Previously, their position could be changed only through the +use of X resources. + +*** The new draggable vertical dividers between windows may be turned +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 +`vertical-divider-spacing' specifiers, which see. + +** Frame focus management changes. + +*** When the variable focus-follows-mouse is non-nil, `select-frame' +no longer permanently selects a different frame. The frame selection +is temporary and is reverted when the current command terminates, much +like the buffer selected by `set-buffer'. This is the same as in FSF +Emacs. + +*** The new function `focus-frame' sets the window system focus to +FRAME (and selects it), regardless of the value of +`focus-follows-mouse'. Doing this is not well behaved, so be +absolutely sure that you want this. + +The code that uses `select-frame' only to get the window manager focus +should be changed to use `set-frame-focus' instead, so that they keep +working when `focus-follows-mouse' is non-nil. + +*** The special forms `save-selected-frame' and `with-selected-frame' +can now be used to temporarily change selected frame. + +*** The behavior of `other-frame' command (`C-x 5 o') is unaffected by +these changes. + +** The function `select-window' now has an optional second argument +NORECORD which if non-nil inhibits the recording of a buffer change. + +** The function `vertical-motion' now correctly handles the second, +optional WINDOW argument. A new third argument PIXELS, if non-nil, +indicates that the returned motion should be in pixels. + +** The new function `vertical-motion-pixels' is similar to +vertical-motion but takes as input a vertical motion in pixels. + +** The new functions window-text-area-pixel-{width,height,edges} can +be used to obtain information about the text-displaying area of a +window. + +** The new functions `shrink-window-pixels' and `enlarge-window-pixels' +can be used to adjust the size of a window by a pixel amount. + +** The new function `window-displayed-text-pixel-height' can be used +to determine the height of the text actually displayed in a window. + +** The arithmetic comparison functions <, >, =, /= now accept a +variable number of arguments. + +This means that if you want to test whether A < B < C, you can write +it as (< A B C) instead of (and (< A B) (< B C)). Likewise, +(apply #'> LIST) now tests if LIST is monotonously increasing -- and +so on. + +** The XEmacs hashtables now have a consistent read/print syntax. +This means that a hashtable will be readably printed in a +structure-like form: + + #s(hashtable size 2 data (key1 value1 key2 value2)) + +When XEmacs reads this form, it will create a new hashtable according +to description. This allows you to easily dump hashtables to files +using `prin1', and read them back in using `read'. + +If `print-readably' is non-nil, a more relaxed syntax is used; for +instance: + + # + +** It is now possible to build XEmacs with LDAP support. +You will need to install a LDAP library first. The following have +been tested: + - LDAP 3.3 from the University of Michigan + (get it from ) + - LDAP SDK 1.0 from Netscape Corp. + (get it from ) + +** When profiling is in effect, a call-count of all recorded functions +is now calculated. This information is stored in +`call-count-profile-table', and is utilized by `profile-results' as +well as the new command `profile-call-count-results'. + +** It is now an error to change the value of a symbol whose name +starts with a colon, if it is interned in the standard obarray. + +However, setting such a symbol to its proper value, which is that +symbol itself, is not an error. This is for the sake of programs that +support pre-19.12 XEmacs and pre-20 GNU Emacs by explicitly setting +these variables to themselves. + +** The `concat' function no longer accepts integer arguments. + +** The new function `string' concatenates all its argument characters +and returns the resulting string. This is consistent with other +functions, like `list', `vector', etc. + +** The function `temp-directory' is now available to return the +directory to store temporary files. On Unix this will be obtained +from TMPDIR, defaulting to `/tmp'. + +** The function load-average now accepts an optional argument +USE-FLOATS. If it is non-nil, the load average values are returned as +floating point numbers, rather than as integers to be divided by 100. + +** The `make-event' function now supports the TYPE and PLIST +arguments, which can be used to create various events from Lisp. See +the documentation for details. + +** `function-interactive' is a new function that returns the +interactive specification of a funcallable object. + +** The new `lmessage' function allows printing of a formatted message +with a particular label. + + (lmessage 'progress "Processing... %d" counter) + +This function is more convenient than `display-message' because it +automatically applies `format' to its arguments. + +** The new `lwarn' function, analogous to `lmessage', allows printing +a formatted warning, with a non-default CLASS or LABEL. + +** The new function `split-path' can now be used to explode the +components of a colon-separated search path into a list. + + (split-path "foo:bar") + => ("foo" "bar") + +** Specifiers and symbols whose value is a specifier are now allowed +as modeline specifications. + +** defcustom now accepts the keyword `:version'. Use this to specify +in which version of Emacs a certain variable's default value changed. +For example, + + (defcustom foo-max 34 "*Maximum number of foo's allowed." + :type 'integer + :group 'foo + :version "21.0") + +This information is used to control the customize-changed-options +command. + +** The line number tracking in modeline is now efficient, even for +very large buffers. This is achieved by caching the line numbers of +recent buffer positions, and reusing them. This cache is used only in +the buffers where `line-number-mode' is in effect. + +** When the new GNU Malloc aka Doug Lea Malloc is available, it will +be used. This should result in better performance on Linux systems +with libc6. + +** 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 +configure command line to get it back. + +*** `Info-default-directory-list' is now obsolete. If you want to +change the path which XEmacs uses to search for info files, set +`Info-directory-list' instead. diff --git a/etc/OONEWS b/etc/OONEWS new file mode 100644 index 0000000..56e72d7 --- /dev/null +++ b/etc/OONEWS @@ -0,0 +1,5526 @@ +-*- mode:outline; minor-mode:outl-mouse -*- +C-c TAB This shows subheadings (if any) of current heading. +C-c C-s Show _all_ the text and headings under current heading + + +* Introduction +============== + +This file presents some general information about XEmacs. It is primarily +about the evolution of XEmacs and its release history. + +There are five sections. + + Introduction................(this section) provides an introduction + + Using Outline Mode..........briefly explains how to use outline mode + + XEmacs Release Notes........detailed changes to this release + + Future Plans for XEmacs.....what's next + + The History of XEmacs.......some historical notes + + A Long List of Packages.....all the stuff in XEmacs + + What Changed................between versions and also FSF GNU Emacs + +New users should look at the next section on "Using Outline Mode". +You will be more efficient when you can navigate quickly through this +file. Users who want to know which capabilities have been introduced +in this release should look at the "XEmacs Release Notes." Users +interested in some of the details of how XEmacs differs from GNU Emacs +should read the section "What Changed?". + + N.B. The term "FSF GNU Emacs" refers to any release of Emacs + Version 19 from the Free Software Foundation's GNU Project. (We do + not say just "GNU Emacs" because Richard M. Stallman ["RMS"] + thinks that this term is too generic; although we sometimes say + e.g. "GNU Emacs 19.30" to refer to a specific version of FSF GNU + Emacs. The term "XEmacs" refers to this program or to its + predecessors "Era", "Epoch", and "Lucid Emacs". The predecessor + of all these program is called "Emacs 18". When no particular + version is implied, "Emacs" will be used. + + +* Using Outline Mode +==================== + +This file is in outline mode, a major mode for viewing (or editing) +outlines. It allows you to make parts of the text temporarily invisible so +that you can see just the overall structure of the outline. + +There are two ways of using outline mode: with keys or with menus. Using +outline mode with menus is the simplest and is just as effective as using +keystrokes. There are menus for outline mode on the menubar as well as in +popup menus activated by pressing mouse button 3. + +Try the following to help you read this file. + +C-c C-q This hides everything but the very top level headings + You can then move to an interesting section +C-c TAB This shows subheadings (if any) of current heading. +C-c C-s Show _all_ the text and headings under current heading +C-c C-d Hide _all_ the text and headings under current heading + +It's then easy to navigate through the file alternating between +showing, C-C C-s, and hiding, C-c C-d, the text. Also, use the "Show" +and "Hide" menus displayed to get access to the same commands. + +You may at any time press `C-h m' to get a listing of the outline mode key +bindings. + +* XEmacs Release Notes +====================== + +** Major Differences Between 19.15 and 19.16 +============================================ + +Many bugs have been fixed. XEmacs 19.16 is a bug-fix release only. No +new features have been added. + +-- shell-command did not respect its output-buffer argument. + +-- When using CVS in conjunction with frame-icon, an error + would occur when a frame was iconified. + +-- dired did not properly protect its data structures during + garbage collection. + +-- y-or-n-p-minibuf could crash XEmacs 19.15. + +-- overlay-lists did not always return a pair of lists. + +-- Starting with the -nw option did not prevent XEmacs 19.15 from + attempting to connect to a tooltalk server. + +-- XEmacs 19.15 could not be built on a DUNIX4.0 system. + +-- appt.el did not respect the user's hooks. + +-- outline-mode did not work in a tty-only XEmacs 19.15. + +-- MD5 checksum generation did not work on a 64-bit machine. + +-- XEmacs 19.15 ignored the user's mail path. + +-- The rcompile package checked for ange-ftp instead of efs. + +-- vc-directory did not work. + +-- Sometimes clicking on a modeline did not advance to the + next or previous buffer as it should have. + +-- The variable enable-local-variables was sometimes ignored. + +-- pending-del did not respect the user's hooks. + +-- CRiSP mode was synchronized with FSF emacs. + +-- The performance of font-lock was improved. + +-- There were numerous holes in the garbage collection. + +-- There were 2 minor bugs with using XEmacs 19.15 on a tty. + +-- XEmacs 19.15 ignored certain dead_key events. + +-- XEmacs 19.15 had minor fontification problems with java. + +-- mark-pop did not always restore the mark properly. + +-- smtpmail.el had a couple of minor bugs. + +-- telnet-mode did not always respond to the telnet prompt. + +-- gomoku was broken in XEmacs 19.15. + +-- recover-all files did not work in XEmacs 19.15. + +-- transient-mark-mode and skeleton.el did not work together. + +-- Footnotes were not properly formatted in info. + +-- Configuration of XEmacs 19.15 did not work on Sequent + computers, because they do not have a working version of alloca. + +-- In XEmacs 19.15 it was impossible to compile with Lucid + scrollbars without Motif. + +-- XEmacs 19.15 would erroneously report an internal error on + certain types of minibuffer input. + +-- When using virtual screens with your X server, sometimes + iconify-frame would cause XEmacs 19.15 to lose one of the frames. + +-- server-kill-buffer always returned nil. + +-- The :filter keyword on a menubar could crash XEmacs 19.15. + +-- psgml-mode did not respect the user's hooks. + +-- Many bugs in efs mode were fixed. + +-- sh-script.el could hang XEmacs. + +-- Options could not be saved after fonts were changed in + XEmacs 19.15. + +-- read-from-string could not read "1.". + +-- dired was confused about where chown lives on Linux. + +-- Edebug did not work on floating point numbers. + +-- first-change-hook saved the wrong buffer, so unwinding the + stack could result in the wrong buffer's being restored. + +-- pcl-cvs was incompatible with live-icon. + +-- save-buffer deactivated the zmacs region. + +-- When running a sub-process, if the standard error could + not be opened, the error was reported incorectly. + +-- shell-command-on-region had a bogus test for the active + region. + +-- get-frame-for-buffer ignored relevant properties. + +-- make-database did not correctly expand its filename + argument. + +-- A few minor improvements were made to the optimizer in the + byte-compiler. + +-- kill-region could get confused when the beginning of the + region was after the end of the region. + +-- movemail was upgraded to the same version which shipped + with XEmacs 20.2; this version understands Linux file locking. + +-- The regexp cache size was too small. + +-- The "save as" dialog was buggy. + +-- Minor bugs in sendmail mode. + +-- tm did not understand the png image format. + +-- set-text-properties only removed the first text property. + +-- add-log.el has been upgraded to the version supported by + FSF emacs 20.1. + +-- When tags-loop-continue was called inappropriately, the + wrong error message resulted. + +-- Frame creation was buggy, and could crash XEmacs. + +-- PNG support did not work on Linux. + +-- Asynchronous process output did not always work. + +-- x-compose.el did not support the degree sign or the + grave keysym. + +-- mh-invisible-headers did not work. + +-- Creating a tty frame could crash XEmacs 19.15. + +-- detach-extent could crash XEmacs. + +-- The minibuffer could get the read-only attribute. + +-- When the mouse was in the right side of the frame, its + position could be reported incorrectly. + +-- lib-complete didn't work with compressed files. + +-- getloadavg.c was brought into sync with the XEmacs 20.2 + version. + +** Major Differences Between 19.14 and 19.15 +============================================ + +Many bugs have been fixed. An effort has been made to eradicate all +XEmacs crashes, although we are not quite done yet. The overall +quality of XEmacs should be higher than any previous release. XEmacs +now compiles with nary a warning with some compilers. + +User visible changes: + +-- EFS replaces ange-ftp for remote file manipulation capability. + +-- TM (Tools for Mime) now comes with XEmacs. This provides MIME + (Multi-purpose Internet Multi-media Extensions?) support for Mail + and News. The primary author is Morioka Tomohiko. + +-- There is a new way to customize faces and (some) variables. + Try it with `M-x customize RET', or from the Options->Customize menu. + Documented in . + +-- The AUC TeX environment for editing and running TeX is now bundled. + (Per Abrahamsen.) + Enable with (require 'tex-site) in your .emacs file. + Documented in . + +-- New user option `init-face-from-resources'. + If you don't set faces with X resources, you can speed up the + initialization of new faces by setting this to nil. + +-- `column.el' removed, use `column-number-mode' instead. + +-- Command line processing should work much better now - no more order + dependencies. + +-- html mode now defaults to using HTML-3.2 + +-- VM now has a native MIME mode + +-- The traditional time.el package now has optional modeline graphics + +-- The XEmacs Logo has been changed courtesy of Jens Lautenbacher + +-- Default background changed to gray80 + +-- The XEmacs build procedure has been changed to make it easier than + ever to include new packages to be dumped with the binary + +-- cc-mode is no longer auto-loaded. (require 'cc-mode) is now needed + before you customize cc-mode in your .emacs. + +-- blink-cursor-mode is somewhat more useable now that the cursor + stops blinking during keyboard activity. + +-- Dired is now part of efs and went from version 6.X to 7.9. + Keybindings have been synced with FSF Emacs, there are more menus and + items in menus are sometimes grouped differently. Any personnal + customization to dired will probably have to be checked. + + If you are a 19.14 user and use its dired a lot, expect to get mad at + 'c', 'r' and '^' keybindings." + + +** New Packages +------------ + +Noteworthy new packages: + redo + igrep + uniquify + auctex + + +-- Many new packages have been added: +*** auctex (Per Abrahamsen) +*** customize (Per Abrahamsen)) +*** m4-mode 1.8 (Andrew Csillag) +*** crisp.el - crisp/brief emulation (Gary D. Foster) + Minor mode emulation for Borland's Brief/Crisp editor +*** Johan Vroman's iso-acc.el has been ported to XEmacs by Alexandre Oliva +*** psgml-1.01 (Lennart Staflin, James Clark) +*** python-mode.el 2.90 (Barry Warsaw) +*** vrml-mode.el (Ben Wing) +*** enriched.el, face-menu.el (Boris Goldowsky, Michael Sperber) +*** sh-script.el (Daniel Pfeiffer) +*** decipher.el (Christopher J. Madsen) +*** mic-paren.el (Mikael Sjödin) +*** xrdb-mode.el 1.21 (Barry Warsaw) +*** redo.el 1.01 (Kyle Jones) +*** edmacro.el (ported by Hrvoje Niksic) +*** verilog-mode.el (Michael McNamara) +*** webjump.el-1.4 (Neil W. Van Dyke) +*** overlay.el (Joseph Nuspl support for Emacs overlay API) +*** browse-cltl2.el 1.1 (Holger Schauer) +*** mine.el 1.17 (Jacques Duthen) +*** igrep.el 2.56 (Kevin Rodgers) +*** speedbar.el (Eric Ludlam) +*** frame-icon.el (Michael Lamoureux) +*** winmgr-mode.el (David Konerding, Stefan Strobel & Barry Warsaw) +*** whitespace-mode.el (Heiko Muenkel) +*** detached-minibuf.el (Alvin Shelton) + +** Updated Packages +------------ + +Most packages have been updated to the latest available versions. +(thanks go to countless maintainers): + +*** ediff 2.64 (Michael Kifer) +*** Gnus Gnus 5.4.36 (Lars Magne Ingebrigtsen) + +**** 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. +*** w3 3.0.71 (Bill Perry) + - Major upgrade to Emacs/W3, including + - Much fuller stylesheet support + - Tables support + - Frames support + - better asynchronous downloads + - now uses the widget library for consistent look of form elements + - Much much much faster +*** ilisp 5.8 (Chris McConnell, Ivan Vasquez, Marco Antoniotti, Rick + Campbell) +*** VM 6.22 (Kyle Jones) +*** etags 11.78 (Francesco Potorti`) +*** ksh-mode.el 2.9 +*** vhdl-mode.el 2.73 (Rod Whitby) +*** id-select.el 1.4.5 (Bob Weiner) +*** EDT/TPU emulation modes should work now for the first time. +*** viper 2.93 (Michael Kifer) is now the `official' vi emulator for XEmacs. +*** big-menubar should work much better now. +*** mode-motion+.el 3.16 +*** backup-dir 2.0 (Greg Klanderman) +*** ps-print.el-3.05 (Jacques Duthen Prestataire) +*** lazy-lock-1.16 (Simon Marshall) +*** fast-lock.el 3.10.2 (Simon Marshall) +*** reporter 3.3 (Barry Warsaw) +*** hm--html-menus 5.4 (Heiko Muenkel) +*** cc-mode 4.387 (Barry Warsaw) +*** elp 2.37 (Barry Warsaw) +*** itimer.el-1.05 (Kyle Jones) +*** floating-toolbar.el-1.02 (Kyle Jones) +*** balloon-help.el-1.05 (Kyle Jones) +*** hyperbole-4.023 (Bob Weiner) +*** cperl-mode-1.31+ +*** OO-Browser 2.10 (Bob Weiner) + +** Changes at Lisp level +------------ + +-- New `widget' library for inserting UI components in buffers. + Documented in . + +-- New `custom' library for declaring user options and faces. + Documented in . + +-- New function `make-empty-face'. + Like `make-face', but doesn't query the resource database. + +-- New function x-keysym-on-keyboard-p helps determine keyboard + characteristics for key rebinding: + + x-keysym-on-keyboard-p: (KEYSYM &optional DEVICE) + -- a built-in function. + Return true if KEYSYM names a key on the keyboard of DEVICE. + More precisely, return true if pressing a physical key + on the keyboard of DEVICE without any modifier keys generates KEYSYM. + Valid keysyms are listed in the files /usr/include/X11/keysymdef.h and in + /usr/lib/X11/XKeysymDB, or whatever the equivalents are on your system. + +-- Usage of keysyms of the form kp_0 is deprecated and one should use + the Emacs compatible kp-0 instead. + + +-- preceding-char and following-char have been obsoleted. Use the + much safer and correct functions char-after and char-before instead. + +-- Many symbols present for compatibility with GNU Emacs no longer + generate bytecompiler warning messages + +-- Installed info files are now compressed (support courtesy of Joseph J Nuspl) + +-- (load-average) works on Solaris, even if you're not root. Thanks to + Hrvoje Niksic. + +-- OffiX drag-and-drop support added + +-- lots of syncing with 19.34 elisp files, most by Steven Baur + +-- M-: (eval-expression) is now enabled by default since it is much + more difficult to type. + +-- new variables: + signal-error-on-buffer-boundary + + +* Future Plans for XEmacs +========================== + +This is the end of the line for XEmacs v19. No new development is planned +on this source tree. XEmacs 20.1 will contain the functionality in 19.15, +and development will continue with XEmacs 20.2. The major new `feature' +planned in 20.2 will be the introduction of separable packages and the +capability to download and use an XEmacs lite distribution. + +* The History of XEmacs +======================= + +This product is an extension of GNU Emacs, previously known to some as +"Lucid Emacs" or "ERA". It was initially based on an early version of Emacs +Version 19 from the Free Software Foundation and has since been kept +up-to-date with recent versions of that product. It stems from a +collaboration of Lucid, Inc. with SunSoft DevPro (a division of Sun +Microsystems, Inc.; formerly called SunPro) and the University of Illinois. + +NOTE: Lucid, Inc. is currently out of business but development on XEmacs +continues strong. Recently, Amdahl Corporation and INS Engineering have +both contributed significantly to the development of XEmacs. + + +* A Long List of Packages +======================= + +This section gives a detailed list of packages included with XEmacs. +It's long! Of particular interest are: games, gnus, modes, packages, +and utils. + +** auctex - Super TeX +*** auctex/auc-old.el +This file contains an alternative keymapping, compatible with +older versions of AUC TeX. You are strongly suggested to try the +new keyboard layout, as we would like this file to go away +eventually. +*** auctex/bib-cite.el +Commentary: + +This package is used in various TeX modes to display or edit references +associated with \cite commands, or matching \ref and \label commands. +*** auctex/font-latex.el +Commentary: +*** auctex/style/german.el +Commentary: + +`german.sty' use `"' to give next character an umlaut. +*** auctex/style/harvard.el +Commentary: + +Harvard citation style is from Peter Williams available on the CTAN +servers +*** auctex/style/plfonts.el +Commentary: + +`plfonts.sty' use `"' to make next character Polish. +`plfonts.sty' L. Holenderski, IIUW, lhol@mimuw.edu.pl +*** auctex/style/plhb.el +Commentary: + +`plhb.sty' use `"' to make next character Polish. +`plhb.sty' J. S. Bie\'n, IIUW, jsbien@mimuw.edu.pl + + +** bytecomp - Byte compile Emacs Lisp files +*** bytecomp/byte-optimize.el +Commentary: + +======================================================================== +"No matter how hard you try, you can't make a racehorse out of a pig. +You can, however, make a faster pig." + +Or, to put it another way, the emacs byte compiler is a VW Bug. This code +makes it be a VW Bug with fuel injection and a turbocharger... You're +still not going to make it go faster than 70 mph, but it might be easier +to get it there. + +*** bytecomp/bytecomp-runtime.el +Commentary: + +interface to selectively inlining functions. +This only happens when source-code optimization is turned on. +*** bytecomp/bytecomp.el +Commentary: + +The Emacs Lisp byte compiler. This crunches lisp source into a sort +of p-code which takes up less space and can be interpreted faster. +The user entry points are byte-compile-file and byte-recompile-directory. +*** bytecomp/disass.el +Commentary: + +The single entry point, `disassemble', disassembles a code object generated +by the Emacs Lisp byte-compiler. This doesn't invert the compilation +operation, not by a long shot, but it's useful for debugging. + +** calendar - Calendars, diaries and appointments +*** calendar/calendar.el +Commentary: + +This collection of functions implements a calendar window. It +generates a calendar for the current month, together with the previous +and coming months, or for any other three-month period. The calendar +can be scrolled forward and backward in the window to show months in +the past or future; the cursor can move forward and backward by days, +weeks, or months, making it possible, for instance, to jump to the +date a specified number of days, weeks, or months from the date under +the cursor. The user can display a list of holidays and other notable +days for the period shown; the notable days can be marked on the +calendar, if desired. The user can also specify that dates having +corresponding diary entries (in a file that the user specifies) be +marked; the diary entries for any date can be viewed in a separate +window. The diary and the notable days can be viewed independently of +the calendar. Dates can be translated from the (usual) Gregorian +calendar to the day of the year/days remaining in year, to the ISO +commercial calendar, to the Julian (old style) calendar, to the Hebrew +calendar, to the Islamic calendar, to the French Revolutionary calendar, +to the Mayan calendar, and to the astronomical (Julian) day number. +When floating point is available, times of sunrise/sunset can be displayed, +as can the phases of the moon. Appointment notification for diary entries +is available. +*** calendar/cal-dst.el +Commentary: + +This collection of functions implements the features of calendar.el and +holiday.el that deal with daylight savings time. +*** calendar/cal-french.el +Commentary: + +This collection of functions implements the features of calendar.el and +diary.el that deal with the French Revolutionary calendar. +*** calendar/cal-mayan.el +Commentary: + +This collection of functions implements the features of calendar.el and +diary.el that deal with the Mayan calendar. It was written jointly by +*** calendar/cal-x.el +Commentary: + +This collection of functions implements dedicated frames in x-windows for +calendar.el. +*** calendar/cal-xemacs.el +Commentary: + +This collection of functions implements menu bar and popup menu support for +calendar.el. +*** calendar/diary-ins.el +Commentary: + +This collection of functions implements the diary insertion features as +described in calendar.el. +*** calendar/solar.el +Commentary: + +This collection of functions implements the features of calendar.el, +diary.el, and holiday.el that deal with times of day, sunrise/sunset, and +eqinoxes/solstices. + +** cl - Common Lisp compatibility with Emacs Lisp +*** cl/cl-compat.el +Commentary: + +These are extensions to Emacs Lisp that provide a degree of +Common Lisp compatibility, beyond what is already built-in +in Emacs Lisp. + +** comint - For running shells, telnet, rsh, gdb, dbx under Emacs +*** comint/comint-xemacs.el +Commentary: + +Declare customizable faces for comint outside the main code so it can +be dumped with XEmacs. +*** comint/comint.el +Commentary: + +This file defines a general command-interpreter-in-a-buffer package +(comint mode). The idea is that you can build specific process-in-a-buffer +modes on top of comint mode -- e.g., lisp, shell, scheme, T, soar, .... +This way, all these specific packages share a common base functionality, +and a common set of bindings, which makes them easier to use (and +saves code, implementation time, etc., etc.). + +Several packages are already defined using comint mode: +- shell.el defines a shell-in-a-buffer mode. +- cmulisp.el defines a simple lisp-in-a-buffer mode. + +- The file cmuscheme.el defines a scheme-in-a-buffer mode. +- The file tea.el tunes scheme and inferior-scheme modes for T. +- The file soar.el tunes lisp and inferior-lisp modes for Soar. +- cmutex.el defines tex and latex modes that invoke tex, latex, bibtex, + previewers, and printers from within emacs. +- background.el allows csh-like job control inside emacs. +*** comint/gdb.el +Commentary: + +A facility is provided for the simultaneous display of the source code +in one window, while using gdb to step through a function in the +other. A small arrow in the source window, indicates the current +line. +*** comint/gud.el +Commentary: +*** comint/history.el +Commentary: + +suggested generic history stuff -- tale + +This is intended to provided easy access to a list of elements +being kept as a history ring. +*** comint/inf-lisp.el +Commentary: + +This file defines a a lisp-in-a-buffer package (inferior-lisp +mode) built on top of comint mode. This version is more +featureful, robust, and uniform than the Emacs 18 version. The +key bindings are also more compatible with the bindings of Hemlock +and Zwei (the Lisp Machine emacs). +*** comint/kermit.el +Commentary: + +I'm not sure, but I think somebody asked about running kermit under shell +mode a while ago. Anyway, here is some code that I find useful. The result +is that I can log onto machines with primitive operating systems (VMS and +ATT system V :-), and still have the features of shell-mode available for +command history, etc. It's also handy to be able to run a file transfer in +an emacs window. The transfer is in the "background", but you can also +monitor or stop it easily. +*** comint/rlogin.el +Commentary: + +Support for remote logins using `rlogin'. +This program is layered on top of shell.el; the code here only accounts +for the variations needed to handle a remote process, e.g. directory +tracking and the sending of some special characters. +*** comint/shell.el +Commentary: + +This file defines a a shell-in-a-buffer package (shell mode) built +on top of comint mode. This is actually cmushell with things +renamed to replace its counterpart in Emacs 18. cmushell is more +featureful, robust, and uniform than the Emacs 18 version. +*** comint/telnet.el +Commentary: + +This mode is intended to be used for telnet or rsh to a remode host; +`telnet' and `rsh' are the two entry points. Multiple telnet or rsh +sessions are supported. + +** custom - Allow's user to customize Emacs +*** custom/custom.el +Commentary: + +This file only contain the code needed to declare and initialize +user options. The code to customize options is autoloaded from +`cus-edit.el'. + +The code implementing face declarations is in `cus-face.el' + +** edebug - Emacs Lisp debugger +*** edebug/cl-read.el +Commentary: + +Please send bugs and comments to the author. + +This package replaces the standard Emacs Lisp reader (implemented +as a set of built-in Lisp function in C) by a flexible and +customizable Common Lisp like one (implemented entirely in Emacs +Lisp). During reading of Emacs Lisp source files, it is about 40% +slower than the built-in reader, but there is no difference in +loading byte compiled files - they dont contain any syntactic sugar +and are loaded with the built in subroutine `load'. + +** ediff - Compare and merge files with graphical difference display +*** ediff/ediff.el +Commentary: + +Never read that diff output again! +Apply patch interactively! +Merge with ease! + +This package provides a convenient way of simultaneous browsing through +the differences between a pair (or a triple) of files or buffers. The +files being compared, file-A, file-B, and file-C (if applicable) are +shown in separate windows (side by side, one above the another, or in +separate frames), and the differences are highlighted as you step +through them. You can also copy difference regions from one buffer to +another (and recover old differences if you change your mind). + +Ediff also supports merging operations on files and buffers, including +merging using ancestor versions. Both comparison and merging operations can +be performed on directories, i.e., by pairwise comparison of files in those +directories. + +** efs - Remote file access (replaces ange-ftp) +See online manual. + +** electric - The "electric" commands; these implement temporary +windows for help, list-buffers, etc. + +*** electric/ehelp.el +Commentary: + +This package provides a pre-packaged `Electric Help Mode' for +browsing on-line help screens. There is one entry point, +`with-electric-help'; all you have to give it is a no-argument +function that generates the actual text of the help into the current +buffer. + +** emulators - Various emulations: mocklisp, teco, TPU/EDT, WordStar +*** emulators/mlconvert.el +Commentary: + +This package converts Mocklisp code written under a Gosling or UniPress +Emacs for use with GNU Emacs. The translated code will require runtime +support from the mlsupport.el equivalent. +*** emulators/mlsupport.el +Commentary: + +This package provides equivalents of certain primitives from Gosling +Emacs (including the commercial UniPress versions). These have an +ml- prefix to distinguish them from native GNU Emacs functions with +similar names. The package mlconvert.el translates Mocklisp code +to use these names. +*** emulators/teco.el +Commentary: + +This code has been tested some, but no doubt contains a zillion bugs. +You have been warned. + +Written by Dale R. Worley based on a C implementation by Matt Fichtenbaum. +Please send comments, bug fixes, enhancements, etc. to drw@math.mit.edu. +*** emulators/tpu-edt.el +Commentary: + +%% TPU-edt -- Emacs emulating TPU emulating EDT + +%% Introduction + + TPU-edt emulates the popular DEC VMS editor EDT (actually, it emulates + DEC TPU's EDT emulation, hence the name TPU-edt). +*** emulators/tpu-extras.el +Commentary: + + Use the functions defined here to customize TPU-edt to your tastes by + setting scroll margins and/or turning on free cursor mode. Here's an + example for your .emacs file. +*** emulators/ws-mode.el +Commentary: + +This emulates WordStar, with a major mode. + +** energize - Interface to now-defunct Lucid's C/C++ integrated +environment XEmacs (nee Lucid Emacs) saw birth explicitly to serve +Energize. + +** eos - SPARCworks + +** eterm - Full terminal emulation under Emacs +*** eterm/term.el +Commentary: + +This file defines a general command-interpreter-in-a-buffer package +(term mode). The idea is that you can build specific process-in-a-buffer +modes on top of term mode -- e.g., lisp, shell, scheme, T, soar, .... +This way, all these specific packages share a common base functionality, +and a common set of bindings, which makes them easier to use (and +saves code, implementation time, etc., etc.). +*** eterm/tgud.el +Commentary: + +The ancestral gdb.el was by W. Schelter +It was later rewritten by rms. Some ideas were due to Masanobu. +Grand Unification (sdb/dbx support) by Eric S. Raymond +The overloading code was then rewritten by Barry Warsaw , +who also hacked the mode to use comint.el. Shane Hartman +added support for xdb (HPUX debugger). Rick Sladkey +wrote the GDB command completion code. Dave Love +added the IRIX kluge and re-implemented the Mips-ish variant. +Then hacked by Per Bothner to use term.el. +*** eterm/tshell.el +Commentary: + +This file defines a a shell-in-a-buffer package (shell mode) built +on top of term mode. This is actually cmushell with things +renamed to replace its counterpart in Emacs 18. cmushell is more +featureful, robust, and uniform than the Emacs 18 version. + +** games - blackbox, mines, decipher, doctor, ... +*** games/blackbox.el +Commentary: + +The object of the game is to find four hidden balls by shooting rays +into the black box. There are four possibilities: 1) the ray will +pass thru the box undisturbed, 2) it will hit a ball and be absorbed, +3) it will be deflected and exit the box, or 4) be deflected immediately, +not even being allowed entry into the box. +*** games/conx.el +Commentary: + +conx.el: Yet Another Dissociator. + +Select a buffer with a lot of text in it. Say M-x conx-buffer +or M-x conx-region. Repeat on as many other bodies of text as +you like. + +M-x conx will use the word-frequency tree the above generated +to produce random sentences in a popped-up buffer. It will pause +at the end of each paragraph for two seconds; type ^G to stop it. +*** games/cookie1.el +Commentary: + +Support for random cookie fetches from phrase files, used for such +critical applications as emulating Zippy the Pinhead and confounding +the NSA Trunk Trawler. +*** games/decipher.el +Commentary: + +This package is designed to help you crack simple substitution +ciphers where one letter stands for another. It works for ciphers +with or without word divisions. (You must set the variable +decipher-ignore-spaces for ciphers without word divisions.) +*** games/dissociate.el +Commentary: + +The single entry point, `dissociated-press', applies a travesty +generator to the current buffer. The results can be quite amusing. +*** games/doctor.el +Commentary: + +The single entry point `doctor', simulates a Rogerian analyst using +phrase-production techniques similar to the classic ELIZA demonstration +of pseudo-AI. +*** games/flame.el +Commentary: + +"Flame" program. This has a chequered past. +*** games/gomoku.el +Gomoku is a game played between two players on a rectangular board. Each +player, in turn, marks a free square of its choice. The winner is the first +one to mark five contiguous squares in any direction (horizontally, +vertically or diagonally). + +*** games/hanoi.el +Commentary: + +Solves the Towers of Hanoi puzzle while-U-wait. + +The puzzle: Start with N rings, decreasing in sizes from bottom to +top, stacked around a post. There are two other posts. Your mission, +should you choose to accept it, is to shift the pile, stacked in its +original order, to another post. +*** games/life.el +Commentary: + +A demonstrator for John Horton Conway's "Life" cellular automaton +in Emacs Lisp. Picks a random one of a set of interesting Life +patterns and evolves it according to the familiar rules. +*** games/mine.el +Commentary: + +The object of this classical game is to locate the hidden mines. +To do this, you hit the squares on the game board that do not +contain mines, and you mark the squares that do contain mines. +*** games/mpuz.el +Commentary: + +When this package is loaded, `M-x mpuz' generates a random multiplication +puzzle. This is a multiplication example in which each digit has been +consistently replaced with some letter. Your job is to reconstruct +the original digits. Type `?' while the mode is active for detailed help. +*** games/spook.el +Commentary: + + Just before sending mail, do M-x spook. + A number of phrases will be inserted into your buffer, to help + give your message that extra bit of attractiveness for automated + keyword scanners. +*** games/studly.el +Commentary: + +Functions to studlycapsify a region, word, or buffer. Possibly the +esoteric significance of studlycapsification escapes you; that is, +you suffer from autostudlycapsifibogotification. Too bad. +*** games/yow.el +Commentary: + +Important pinheadery for GNU Emacs. + +See cookie1.el for implementation. Note --- the `n' argument of yow +from the 18.xx implementation is no longer; we only support *random* +random access now. + +** gnus - The ultimate News and Mail reader +See online manual +*** gnus/gnus-audio.el +Commentary: +This file provides access to sound effects in Gnus. +Prerelease: This file is partially stripped to support earcons.el +You can safely ignore most of it until Red Gnus. **Evil Laugh** +*** gnus/gnus-gl.el +Commentary: +*** gnus/gnus-undo.el +Commentary: + +This package allows arbitrary undoing in Gnus buffers. As all the +Gnus buffers aren't very text-oriented (what is in the buffers is +just some random representation of the actual data), normal Emacs +undoing doesn't work at all for Gnus. +*** gnus/mailheader.el +Commentary: + +This package provides an abstraction to RFC822-style messages, used in +mail news, and some other systems. The simple syntactic rules for such +headers, such as quoting and line folding, are routinely reimplemented +in many individual packages. This package removes the need for this +redundancy by representing message headers as association lists, +offering functions to extract the set of headers from a message, to +parse individual headers, to merge sets of headers, and to format a set +of headers. +*** gnus/message.el +Commentary: + +This mode provides mail-sending facilities from within Emacs. It +consists mainly of large chunks of code from the sendmail.el, +gnus-msg.el and rnewspost.el files. +*** gnus/nnheader.el +Commentary: + +These macros may look very much like the ones in GNUS 4.1. They +are, in a way, but you should note that the indices they use have +been changed from the internal GNUS format to the NOV format. The +makes it possible to read headers from XOVER much faster. + +** hm--html-menus - Menus and popups for writing/viewing html documents + +** hyperbole - Personal database + +** ilisp - A comint-based package for interacting with inferior +lisp processes. + + +** iso - Implement various ISO character standards +*** iso/iso-acc.el +Commentary: + +Function `iso-accents-mode' activates a minor mode in which +typewriter "dead keys" are emulated. The purpose of this emulation +is to provide a simple means for inserting accented characters +according to the ISO-8859-1 character set. +*** iso/iso-ascii.el +Commentary: + +This code sets up to display ISO 8859/1 characters on plain +ASCII terminals. The display strings for the characters are +more-or-less based on TeX. +*** iso/iso-cvt.el +Commentary: + +This lisp code serves two purposes, both of which involve +the translation of various conventions for representing European +character sets to ISO 8859-1. + +** mailcrypt - Encrypting/decrypting of mail messages + +** mel - MIME encoding library (see also TM) + +** mh-e - Emacs interface to MH mail reader +*** mh-e/mh-e.el +Commentary: + +mh-e is an Emacs interface to the MH mail system. + +** modes - How to edit files: Ada, asm, awk, bib, cperl, eiffel, ... +*** modes/arc-mode.el +Commentary: + +NAMING: "arc" is short for "archive" and does not refer specifically +to files whose name end in ".arc" + +ARCHIVE TYPES: Currently only the archives below are handled, but the +structure for handling just about anything is in place. + + Arc Lzh Zip Zoo + -------------------------------- +View listing Intern Intern Intern Intern +Extract member Y Y Y Y +Save changed member Y Y Y Y +Add new member N N N N +Delete member Y Y Y Y +Rename member Y Y N N +Chmod - Y Y - +Chown - Y - - +Chgrp - Y - - +*** modes/asm-mode.el +Commentary: + +This minor mode is based on text mode. It defines a private abbrev table +that can be used to save abbrevs for assembler mnemonics. +*** modes/auto-show.el +Commentary: + +This file provides functions that +automatically scroll the window horizontally when the point moves +off the left or right side of the window. +*** modes/awk-mode.el +Commentary: + +Sets up C-mode with support for awk-style #-comments and a lightly +hacked syntax table. +*** modes/bib-mode.el +Commentary: + + GNU Emacs code to help maintain databases compatible with (troff) + refer and lookbib. The file bib-file should be set to your + bibliography file. Keys are automagically inserted as you type, + and appropriate keys are presented for various kinds of entries. +*** modes/bibtex.el +*** modes/cc-compat.el +Commentary: + +Boring old c-mode.el (BOCM) is confusion and brain melt. cc-mode.el +is clarity of thought and purity of chi. If you are still unwilling +to accept enlightenment, this might help, or it may prolong your +agony. +*** modes/cc-guess.el +Commentary: + +This file contains routines that help guess the cc-mode style in a +particular region of C, C++, or Objective-C code. It is provided +for example and experimentation only. It is not supported in +anyway. Some folks have asked for a style guesser and the best way +to show my thoughts on the subject is with this sample code. Feel +free to improve upon it in anyway you'd like. Please send me the +results. Note that style guessing is lossy! +*** modes/cc-lobotomy.el +Commentary: + +Every effort has been made to improve the performance of +cc-mode. However, due to the nature of the C, C++, and Objective-C +language definitions, a trade-off is often required between +accuracy of construct recognition and speed. I believe it is always +best to be correct, and that the mode is currently fast enough for +most normal usage. Others disagree. I have no intention of +including these hacks in the main distribution. When cc-mode +version 5 comes out, it will include a rewritten indentation engine +so that performance will be greatly improved automatically. This +was not included in this release of version 4 so that Emacs 18 +could still be supported. Note that this implies that cc-mode +version 5 will *not* work on Emacs 18! +*** modes/cc-mode.el +Commentary: + +This package provides modes in GNU Emacs for editing C, C++, +Objective-C, and Java code. It is intended to be a replacement for +c-mode.el (a.k.a. BOCM -- Boring Old C-Mode), c++-mode.el, +cplus-md.el, and cplus-md1.el, all of which are in some way +ancestors of this file. A number of important improvements have +been made, briefly: complete K&R C, ANSI C, `ARM' C++, Objective-C, +and Java support with consistent indentation across all modes, more +intuitive indentation controlling variables, compatibility across +all known Emacsen, nice new features, and tons of bug fixes. This +package is called "CC Mode" to distinguish it from its ancestors, +but there is no cc-mode command. Usage and programming details are +contained in an accompanying texinfo manual. +*** modes/cl-indent.el +Commentary: + +This package supplies a single entry point, common-lisp-indent-function, +which performs indentation in the preferred style for Common Lisp code. +*** modes/cperl-mode.el Can't find any Commentary section +*** modes/eiffel3.el Can't find any Commentary section +*** modes/enriched.el Can't find any Commentary section +*** modes/executable.el +Commentary: + +executable.el is used by certain major modes to insert a suitable +#! line at the beginning of the file, if the file does not already +have one. + +*** modes/f90.el +Commentary: + +Smart mode for editing F90 programs in FREE FORMAT. +Knows about continuation lines, named structured statements, and other +new features in F90 including HPF (High Performance Fortran) structures. +The basic feature is to provide an accurate indentation of F90 programs. +In addition, there are many more features like automatic matching of all +end statements, an auto-fill function to break long lines, a join-lines +function which joins continued lines etc etc. + To facilitate typing, a fairly complete list of abbreviations is provided. + For example, `i is short-hand for integer (if abbrev-mode is on). + +*** modes/follow.el +Commentary: + +`Follow mode' is a minor mode for Emacs 19 and XEmacs which +combines windows into one tall virtual window. + +The feeling of a "virtual window" has been accomplished by the use +of two major techniques: + + * The windows always displays adjacent sections of the buffer. + This means that whenever one window is moved, all the + others will follow. (Hence the name Follow Mode.) + + * Should the point (cursor) end up outside a window, another + window displaying that point is selected, if possible. This + makes it possible to walk between windows using normal cursor + movement commands. +*** modes/fortran.el +Commentary: + +Fortran mode has been upgraded and is now maintained by Stephen A. Wood +(saw@cebaf.gov). It now will use either fixed format continuation line +markers (character in 6th column), or tab format continuation line style +(digit after a TAB character.) A auto-fill mode has been added to +automatically wrap fortran lines that get too long. + +We acknowledge many contributions and valuable suggestions by +Lawrence R. Dodd, Ralf Fassel, Ralph Finch, Stephen Gildea, +Dr. Anil Gokhale, Ulrich Mueller, Mark Neale, Eric Prestemon, +Gary Sabot and Richard Stallman. +*** modes/hideif.el +Commentary: + +Hide-ifdef suppresses the display of code that the preprocessor wouldn't +pass through. The support of constant expressions in #if lines is +limited to identifiers, parens, and the operators: &&, ||, !, and +"defined". Please extend this. +*** modes/hideshow.el +Commentary: + +This file provides `hs-minor-mode'. When active, six commands: + hs-{hide,show}-{all,block}, hs-show-region and hs-minor-mode +are available. They implement block hiding and showing. Blocks are +defined in mode-specific way. In c-mode or c++-mode, they are simply +curly braces, while in lisp-ish modes they are parens. Multi-line +comments (c-mode) can also be hidden. The command M-x hs-minor-mode +toggles the minor mode or sets it (similar to outline minor mode). +See documentation for each command for more info. +*** modes/icon.el +Commentary: + +A major mode for editing the Icon programming language. +*** modes/ksh-mode.el + + +Description: + sh, ksh, and bash script editing commands for emacs. + + This major mode assists shell script writers with indentation + control and control structure construct matching in much the same + fashion as other programming language modes. Invoke describe-mode + for more information. +*** modes/lisp-mnt.el +Commentary: + +This minor mode adds some services to Emacs-Lisp editing mode. + +First, it knows about the header conventions for library packages. +One entry point supports generating synopses from a library directory. +Another can be used to check for missing headers in library files. +*** modes/lisp-mode.el +Commentary: + +The base major mode for editing Lisp code (used also for Emacs Lisp). +This mode is documented in the Emacs manual +*** modes/m4-mode.el +Commentary: + +A smart editing mode for m4 macro definitions. It seems to have most of the +syntax right (sexp motion commands work, but function motion commands don't). +It also sets the font-lock syntax stuff for colorization +*** modes/mail-abbrevs.el Can't find any Commentary section +*** modes/make-mode.el +Commentary: + +A major mode for editing makefiles. The mode knows about Makefile +syntax and defines M-n and M-p to move to next and previous productions. +*** modes/modula2.el +Commentary: + +A major mode for editing Modula-2 code. It provides convenient abbrevs +for Modula-2 keywords, knows about the standard layout rules, and supports +a native compile command. +*** modes/nroff-mode.el +Commentary: + +This package is a major mode for editing nroff source code. It knows +about various nroff constructs, ms, mm, and me macros, and will fill +and indent paragraphs properly in their presence. It also includes +a command to count text lines (excluding nroff constructs), a command +to center a line, and movement commands that know how to skip macros. +*** modes/old-c-mode.el +Commentary: + +A smart editing mode for C code. It knows a lot about C syntax and tries +to position the cursor according to C layout conventions. You can +change the details of the layout style with option variables. Load it +and do M-x describe-mode for details. +*** modes/outl-mouse.el Can't find any Commentary section +*** modes/outline.el +Commentary: + +This package is a major mode for editing outline-format documents. +An outline can be `abstracted' to show headers at any given level, +with all stuff below hidden. See the Emacs manual for details. +*** modes/pascal.el + +Emacs should enter Pascal mode when you find a Pascal source file. +When you have entered Pascal mode, you may get more info by pressing +C-h m. You may also get online help describing various functions by: +C-h f +*** modes/perl-mode.el +*** modes/picture.el +Commentary: + +This code provides the picture-mode commands documented in the Emacs +manual. The screen is treated as a semi-infinite quarter-plane with +support for rectangle operations and `etch-a-sketch' character +insertion in any of eight directions. +*** modes/postscript.el Can't find any Commentary section +modes/prolog.el +Commentary: + +This package provides a major mode for editing Prolog. It knows +about Prolog syntax and comments, and can send regions to an inferior +Prolog interpreter process. +*** modes/python-mode.el +Commentary: + +This is a major mode for editing Python programs. It was developed +by Tim Peters after an original idea by Michael A. Guravage. Tim +subsequently left the net; in 1995, Barry Warsaw inherited the +mode and is the current maintainer. +*** modes/rexx-mode.el Can't find any Commentary section +*** modes/rsz-minibuf.el +Commentary: + +This package allows the entire contents (or as much as possible) of the +minibuffer to be visible at once when typing. As the end of a line is +reached, the minibuffer will resize itself. When the user is done +typing, the minibuffer will return to its original size. +*** modes/scheme.el +Commentary: + +Adapted from Lisp mode by Bill Rozas, jinx@prep. +Initially a query replace of Lisp mode, except for the indentation +of special forms. Probably the code should be merged at some point +so that there is sharing between both libraries. +*** modes/scribe.el Can't find any Commentary section +*** modes/sendmail.el +Commentary: + +This mode provides mail-sending facilities from within Emacs. It is +documented in the Emacs user's manual. +*** modes/sh-script.el +Commentary: + +Major mode for editing shell scripts. Bourne, C and rc shells as well +as various derivatives are supported and easily derived from. Structured +statements can be inserted with one command or abbrev. Completion is +available for filenames, variables known from the script, the shell and +the environment as well as commands. +*** modes/simula.el +Commentary: + +A major mode for editing the Simula language. It knows about Simula +syntax and standard indentation commands. It also provides convenient +abbrevs for Simula keywords. +*** modes/tcl.el +Commentary: + +Major mode for editing Tcl +*** modes/texinfo.el Can't find any Commentary section +*** modes/text-mode.el +Commentary: + +This package provides the fundamental text mode documented in the +Emacs user's manual. +*** modes/two-column.el Can't find any Commentary section +*** modes/verilog-mode.el +Commentary: + +A major mode for editing Verilog HDL source code. When you have +entered Verilog mode, you may get more info by pressing C-h m. You +may also get online help describing various functions by: C-h f + +*** modes/view-less.el +Commentary: + +This mode is for browsing files without changing them. Keybindings +similar to those used by the less(1) program are used. +*** modes/view.el +Commentary: + +This package provides the `view' minor mode documented in the Emacs +user's manual. + +XEmacs: We don't autoload this because we use `view-less' instead. +*** modes/vrml-mode.el +Commentary: + +Mostly bastardized from tcl.el. +*** modes/whitespace-mode.el +Commentary: + + This is a minor mode, which highlights whitespaces (blanks and + tabs) with different faces, so that it is easier to + distinguish between them. + Toggle the mode with: M-x whitespace-mode + or with: M-x whitespace-incremental-mode + The second one should be used in big files. +*** modes/winmgr-mode.el +Commentary: + +This package is a major mode for editing window configuration files and +also defines font-lock keywords for such files. +*** modes/xpm-mode.el Can't find any Commentary section +modes/xrdb-mode.el Can't find any Commentary section + +** mu - Message Utilities library (part of the Tools for MIME). + +** ns - NeXTstep + +** oobr - Browser for Object Oriented languages +*** oobr/br-c++-ft.el Can't find any Commentary section + +** packages - Lot's of stuff: array, baloon help, version control, ... +*** packages/add-log.el +Commentary: + +This facility is documented in the Emacs Manual. +*** packages/apropos.el +Commentary: + +The ideas for this package were derived from the C code in +src/keymap.c and elsewhere. The functions in this file should +always be byte-compiled for speed. Someone should rewrite this in +C (as part of src/keymap.c) for speed. +*** packages/array.el +Commentary: + +Commands for editing a buffer interpreted as a rectangular array +or matrix of whitespace-separated strings. You specify the array +dimensions and some other parameters at startup time. +*** packages/auto-save.el Can't find any Commentary section +packages/autoinsert.el +Commentary: + + The following defines an association list for text to be + automatically inserted when a new file is created, and a function + which automatically inserts these files; the idea is to insert + default text much as the mode is automatically set using + auto-mode-alist. +*** packages/avoid.el +Commentary: + +For those who are annoyed by the mouse pointer obscuring text, +this mode moves the mouse pointer - either just a little out of +the way, or all the way to the corner of the frame. +To use, load or evaluate this file and type M-x mouse-avoidance-mode . +To set up permanently, put this file on your .emacs: +*** packages/backup-dir.el Can't find any Commentary section +*** packages/balloon-help.el Can't find any Commentary section +*** packages/big-menubar.el Can't find any Commentary section +*** packages/blink-cursor.el +*** packages/blink-paren.el Can't find any Commentary section +*** packages/bookmark.el Can't find any Commentary section +*** packages/buff-menu.el +Commentary: + +Edit, delete, or change attributes of all currently active Emacs +buffers from a list summarizing their state. A good way to browse +any special or scratch buffers you have loaded, since you can't find +them by filename. The single entry point is `Buffer-menu-mode', +normally bound to C-x C-b. +*** packages/chistory.el +Commentary: + +This really has nothing to do with list-command-history per se, but +its a nice alternative to C-x ESC ESC (repeat-complex-command) and +functions as a lister if given no pattern. It's not important +enough to warrant a file of its own. +*** packages/cmuscheme.el +Commentary: + + This is a customisation of comint-mode (see comint.el) +*** packages/crypt.el +Commentary: + +NOTE: Apparently not being maintained by the author, who now +uses jka-compr.el. --ben (1/26/96) +Included patch (1/26/96) + +Code for handling all sorts of compressed and encrypted files.| +*** packages/cu-edit-faces.el Can't find any Commentary section +*** packages/dabbrev.el +Commentary: + +The purpose with this package is to let you write just a few +characters of words you've written earlier to be able to expand +them. +*** packages/desktop.el +Commentary: + +Save the Desktop, i.e., + - some global variables + - the list of buffers with associated files. For each buffer also + - the major mode + - the default directory + - the point + - the mark & mark-active + - buffer-read-only + - some local variables +*** packages/fast-lock.el +Commentary: + +Lazy Lock mode is a Font Lock support mode. +It makes visiting a file in Font Lock mode faster by restoring its face text +properties from automatically saved associated Font Lock cache files. +*** packages/font-lock.el +Font-lock-mode is a minor mode that causes your comments to be +displayed in one face, strings in another, reserved words in another, +documentation strings in another, and so on. +*** packages/func-menu.el Can't find any Commentary section +*** packages/generic-sc.el Can't find any Commentary section +*** packages/gnuserv.el Can't find any Commentary section +*** packages/gopher.el +Commentary: +OPERATING INSTRUCTIONS + +To use, `M-x gopher'. To specify a different root server, use +`C-u M-x gopher'. If you want to use bookmarks, set the variable +gopher-support-bookmarks appropriately. +*** packages/hexl.el +Commentary: + +This package implements a major mode for editing binary files. It uses +a program called hexl, supplied with the GNU Emacs distribution, that +can filter a binary into an editable format or from the format back into +binary. For full instructions, invoke `hexl-mode' on an empty buffer and +do `M-x describe-mode'. +*** packages/hyper-apropos.el +Commentary: + + Rather than run apropos and print all the documentation at once, + I find it easier to view a "table of contents" first, then + get the details for symbols as you need them. +*** packages/icomplete.el +Commentary: + +Loading this package implements a more fine-grained minibuffer +completion feedback scheme. Prospective completions are concisely +indicated within the minibuffer itself, with each successive +keystroke. +*** packages/igrep.el Can't find any Commentary section +*** packages/info.el Can't find any Commentary section +*** packages/informat.el Can't find any Commentary section +*** packages/ispell.el +Commentary: +*** packages/jka-compr.el +Commentary: + +This package implements low-level support for reading, writing, +and loading compressed files. It hooks into the low-level file +I/O functions (including write-region and insert-file-contents) so +that they automatically compress or uncompress a file if the file +appears to need it (based on the extension of the file name). +Packages like Rmail, VM, GNUS, and Info should be able to work +with compressed files without modification. +*** packages/lazy-lock.el +Commentary: + +Purpose: + +To make visiting buffers in `font-lock-mode' faster by making fontification +be demand-driven and stealthy. +Fontification only occurs when, and where, necessary. +*** packages/ledit.el +Commentary: + +This is a major mode for editing Liszt. See etc/LEDIT for details. +*** packages/lispm-fonts.el Can't find any Commentary section +*** packages/lpr.el +Commentary: + +Commands to send the region or a buffer your printer. Entry points +are `lpr-buffer', `print-buffer', lpr-region', or `print-region'; option +variables include `lpr-switches' and `lpr-command'. +*** packages/makeinfo.el +Commentary: + +The Texinfo mode `makeinfo' related commands are: +*** packages/makesum.el +Commentary: + +Displays a nice human-readable summary of all keybindings in a +two-column format. +*** packages/man.el Can't find any Commentary section +*** packages/metamail.el +Commentary: + +Note: Metamail does not have all options which is compatible with +the environment variables. For that reason, matamail.el have to +hack the environment variables. In addition, there is no way to +display all header fields without extra informative body messages +which are suppressed by "-q" option. + +The idea of using metamail to process MIME messages is from +gnus-mime.el by Spike . +*** packages/mic-paren.el Can't find any Commentary section +*** packages/mime-compose.el Can't find any Commentary section +*** packages/mode-motion+.el Can't find any Commentary section +*** packages/netunam.el +Commentary: + +Use the Remote File Access (RFA) facility of HP-UX from Emacs. +*** packages/page-ext.el +Commentary: + +You may use these commands to handle an address list or other +small data base. +*** packages/paren.el +Commentary: + +Purpose of this package: + + This package highlights matching parens (or whole sexps) for easier + editing of source code, particularly lisp source code. +*** packages/pending-del.el Can't find any Commentary section +*** packages/ps-print.el +Commentary: + +This package provides printing of Emacs buffers on PostScript +printers; the buffer's bold and italic text attributes are +preserved in the printer output. Ps-print is intended for use with +Emacs 19 or Lucid Emacs, together with a fontifying package such as +font-lock or hilit. +*** packages/rcompile.el +Commentary: + +This package is for running a remote compilation and using emacs to parse +the error messages. It works by rsh'ing the compilation to a remote host +and parsing the output. If the file visited at the time remote-compile was +called was loaded remotely (ange-ftp), the host and user name are obtained +by the calling ange-ftp-ftp-name on the current directory. In this case the +next-error command will also ange-ftp the files over. This is achieved +automatically because the compilation-parse-errors function uses +default-directory to build it's file names. If however the file visited was +loaded locally, remote-compile prompts for a host and user and assumes the +files mounted locally (otherwise, how was the visited file loaded). +*** packages/recent-files.el Can't find any Commentary section +*** packages/refbib.el +Commentary: + +Use: from a buffer containing the refer-style bibliography, + M-x r2b-convert-buffer +Program will prompt for an output buffer name, and will log +warnings during the conversion process in the buffer *Log*. +*** packages/remote.el Can't find any Commentary section +*** packages/reportmail.el Can't find any Commentary section +*** packages/resume.el +Commentary: + +The purpose of this library is to handle command line arguments +when you resume an existing Emacs job. + +You can't get the benefit of this library by using the `emacs' command, +since that always starts a new Emacs job. Instead you must use a +command called `edit' which knows how to resume an existing Emacs job +if you have one, or start a new Emacs job if you don't have one. + +To define the `edit' command, run the script etc/emacs.csh (if you use CSH), +or etc/emacs.bash if you use BASH. You would normally do this in your +login script. +*** packages/saveconf.el Can't find any Commentary section +*** packages/saveplace.el +Commentary: + +Automatically save place in files, so that visiting them later +(even during a different Emacs session) automatically moves point +to the saved position, when the file is first found. Uses the +value of buffer-local variable save-place to determine whether to +save position or not. +*** packages/sccs.el Can't find any Commentary section +*** packages/scroll-in-place.el Can't find any Commentary section +*** packages/server.el +Commentary: + +This Lisp code is run in Emacs when it is to operate as +a server for other processes. + +*** packages/shell-font.el Can't find any Commentary section +*** packages/spell.el +Commentary: + +This mode provides an Emacs interface to the UNIX spell(1) program. +Entry points are `spell-buffer', `spell-word', `spell-region' and +`spell-string'. These facilities are documented in the Emacs user's +manual. +*** packages/supercite.el Can't find any Commentary section +*** packages/tar-mode.el Can't find any Commentary section +*** packages/terminal.el Can't find any Commentary section +*** packages/tex-latin1.el Can't find any Commentary section +*** packages/texinfmt.el Can't find any Commentary section +*** packages/texnfo-tex.el Can't find any Commentary section +*** packages/texnfo-upd.el +Commentary: +*** packages/time-stamp.el +Commentary: + +If you put a time stamp template anywhere in the first 8 lines of a file, +it can be updated every time you save the file. See the top of +time-stamp.el for a sample. The template looks like one of the following: + Time-stamp: <> + Time-stamp: " " +The time stamp is written between the brackets or quotes, resulting in + Time-stamp: <95/01/18 10:20:51 gildea> +*** packages/time.el +Commentary: + +Facilities to display current time/date and a new-mail indicator +in the Emacs mode line. The single entry point is `display-time'. +*** packages/uncompress.el +Commentary: + +This package can be used to arrange for automatic uncompress of +files packed with the UNIX compress(1) utility when they are visited. +All that's necessary is to load it. This can conveniently be done from +your .emacs file. +*** packages/underline.el +Commentary: + +This package deals with the primitive form of underlining +consisting of prefixing each character with "_\^h". The entry +point `underline-region' performs such underlining on a region. +The entry point `ununderline-region' removes it. +*** packages/upd-copyr.el Can't find any Commentary section +*** packages/vc.el +Commentary: + +This mode is fully documented in the Emacs user's manual. + +Supported version-control systems presently include SCCS, RCS, and CVS. +The RCS lock-stealing code doesn't work right unless you use RCS 5.6.2 +or newer. Currently (January 1994) that is only a beta test release. +Even initial checkins will fail if your RCS version is so old that ci +doesn't understand -t-; this has been known to happen to people running +NExTSTEP 3.0. +*** packages/webjump.el +Change Log: +*** packages/webster-ucb.el Can't find any Commentary section +*** packages/webster.el Can't find any Commentary section +*** packages/xscheme.el Can't find any Commentary section + + +** pcl-cvs - Front end to CVS (see also vc -- version control) +*** pcl-cvs/cookie.el +Commentary: + + Introduction + ============ + +Cookie is a package that implements a connection between an +dll (a doubly linked list) and the contents of a buffer. +Possible uses are dired (have all files in a list, and show them), +buffer-list, kom-prioritize (in the LysKOM elisp client) and +others. pcl-cvs.el uses cookie.el. +*** pcl-cvs/dll-debug.el +Commentary: + +This is a plug-in replacement for dll.el. It is dreadfully +slow, but it facilitates debugging. Don't trust the comments in +this file too much. +(provide 'dll) + +*** pcl-cvs/dll.el +Commentary: + +A doubly linked list consists of one cons cell which holds the tag +'DL-LIST in the car cell and a pointer to a dummy node in the cdr +cell. The doubly linked list is implemented as a circular list +with the dummy node first and last. The dummy node is recognized +by comparing it to the node which the cdr of the cons cell points +to. + +*** pcl-cvs/elib-node.el +Commentary: + +A node is implemented as an array with three elements, using +(elt node 0) as the left pointer +(elt node 1) as the right pointer +(elt node 2) as the data +*** pcl-cvs/pcl-cvs-startup.el Can't find any Commentary section +*** pcl-cvs/pcl-cvs-xemacs.el Can't find any Commentary section +*** pcl-cvs/pcl-cvs.el Can't find any Commentary section +*** pcl-cvs/string.el +Commentary: + + +This file is part of the elisp library Elib. +It implements simple generic string functions for use in other +elisp code: replace regexps in strings, split strings on regexps. + +** prim - Lots of XEmacs primitives (see Emacs-Lisp manual). +*** prim/about.el Can't find any Commentary section +*** prim/advocacy.el Can't find any Commentary section +*** prim/auto-autoloads.el Can't find any Commentary section +*** prim/backquote.el Can't find any Commentary section +*** prim/buffer.el Can't find any Commentary section +*** prim/case-table.el Can't find any Commentary section +*** prim/cleantree.el +Commentary: + +This code is derived from Gnus based on a suggestion by + David Moore +*** prim/cmdloop.el Can't find any Commentary section +*** prim/cmdloop1.el Can't find any Commentary section +*** prim/console.el Can't find any Commentary section +*** prim/custom-load.el Can't find any Commentary section +*** prim/debug.el +Commentary: + +This is a major mode documented in the Emacs manual. +*** prim/device.el Can't find any Commentary section +*** prim/dialog.el Can't find any Commentary section +*** prim/disp-table.el Can't find any Commentary section +*** prim/env.el +Commentary: + +UNIX processes inherit a list of name-to-string associations from their +parents called their `environment'; these are commonly used to control +program options. This package permits you to set environment variables +to be passed to any sub-process run under XEmacs. +*** prim/events.el Can't find any Commentary section +*** prim/extents.el Can't find any Commentary section +*** prim/faces.el Can't find any Commentary section +*** prim/files.el +Commentary: + +Defines most of XEmacs's file- and directory-handling functions, +including basic file visiting, backup generation, link handling, +ITS-id version control, load- and write-hook handling, and the like. +*** prim/fill.el +Commentary: + +All the commands for filling text. These are documented in the XEmacs +Reference Manual. +*** prim/float-sup.el Can't find any Commentary section +*** prim/format.el +Commentary: + +This file defines a unified mechanism for saving & loading files stored +in different formats. `format-alist' contains information that directs +Emacs to call an encoding or decoding function when reading or writing +files that match certain conditions. +*** prim/frame.el Can't find any Commentary section +*** prim/glyphs.el Can't find any Commentary section +*** prim/gui.el Can't find any Commentary section +*** prim/help.el +Commentary: + +This code implements XEmacs's on-line help system, the one invoked by +`M-x help-for-help'. +*** prim/inc-vers.el Can't find any Commentary section +*** prim/indent.el +Commentary: + +Commands for making and changing indentation in text. These are +described in the XEmacs Reference Manual. +*** prim/isearch-mode.el Can't find any Commentary section +*** prim/itimer-autosave.el +Commentary: + +itimer-driven auto-saves +*** prim/itimer.el Can't find any Commentary section +*** prim/keydefs.el Can't find any Commentary section +*** prim/keymap.el Can't find any Commentary section +*** prim/lisp.el +Commentary: + +Lisp editing commands to go with Lisp major mode. +*** prim/loaddefs.el +Commentary: + +You should never need to write autoloads by hand and put them here. + +It is no longer necessary. Instead use autoload.el to maintain them +for you. Just insert ";;;###autoload" before defuns or defmacros you +want to be autoloaded, or other forms you want copied into loaddefs.el +(defvars, key definitions, etc.). +*** prim/loadup-el.el Can't find any Commentary section +*** prim/loadup.el +Commentary: + +This is loaded into a bare Emacs to make a dumpable one. +*** prim/macros.el +Commentary: + +Extension commands for keyboard macros. These permit you to assign +a name to the last-defined keyboard macro, expand and insert the +lisp corresponding to a macro, query the user from within a macro, +or apply a macro to each line in the reason. + +This file is largely superseded by edmacro.el as of XEmacs 20.1. -sb +*** prim/menubar.el Can't find any Commentary section +*** prim/minibuf.el +Commentary: + +Written by Richard Mlynarik 2-Oct-92 +*** prim/misc.el Can't find any Commentary section +*** prim/mode-motion.el Can't find any Commentary section +*** prim/modeline.el Can't find any Commentary section +*** prim/mouse.el Can't find any Commentary section +*** prim/novice.el +Commentary: + +This mode provides a hook which is, by default, attached to various +putatively dangerous commands in a (probably futile) attempt to +prevent lusers from shooting themselves in the feet. +*** prim/objects.el Can't find any Commentary section +*** prim/obsolete.el Can't find any Commentary section +*** prim/options.el +Commentary: + +This code provides functions to list and edit the values of all global +option variables known to loaded Emacs Lisp code. There are two entry +points, `list-options' and `edit' options'. The latter enters a major +mode specifically for editing option values. Do `M-x describe-mode' in +that context for more details. +*** prim/overlay.el Can't find any Commentary section +*** prim/page.el +Commentary: + +This code provides the page-oriented movement and selection commands +documented in the XEmacs Reference Manual. +*** prim/paragraphs.el +Commentary: + +This package provides the paragraph-oriented commands documented in the +XEmacs Reference Manual. +*** prim/process.el Can't find any Commentary section +*** prim/profile.el Can't find any Commentary section +*** prim/rect.el +Commentary: + +This package provides the operations on rectangles that are ocumented +in the XEmacs Reference Manual. +*** prim/register.el +Commentary: + +This package of functions emulates and somewhat extends the venerable +TECO's `register' feature, which permits you to save various useful +pieces of buffer state to named variables. The entry points are +documented in the XEmacs Reference Manual. +*** prim/replace.el +Commentary: + +This package supplies the string and regular-expression replace functions +documented in the XEmacs Reference Manual. + +All the gettext calls are for XEmacs I18N3 message catalog support. +*** prim/reposition.el +Commentary: + +Reposition-window makes an entire function definition or comment visible, +or, if it is already visible, places it at the top of the window; +additional invocations toggle the visibility of comments preceding the +code. For the gory details, see the documentation for reposition-window; +rather than reading that, you may just want to play with it. + +This tries pretty hard to do the recentering correctly; the precise +action depends on what the buffer looks like. If you find a situation +where it doesn't behave well, let me know. This function is modeled +after one of the same name in ZMACS, but the code is all-new and the +behavior in some situations differs. +*** prim/scrollbar.el Can't find any Commentary section +*** prim/simple.el +Commentary: + +A grab-bag of basic XEmacs commands not specifically related to some +major mode or to file-handling. +*** prim/sort.el +Commentary: + +This package provides the sorting facilities documented in the XEmacs +Reference Manual. +*** prim/sound.el Can't find any Commentary section +*** prim/specifier.el Can't find any Commentary section +*** prim/startup.el Can't find any Commentary section +*** prim/subr.el +Commentary: + +There's not a whole lot in common now with the FSF version, +be wary when applying differences. I've left in a number of lines +of commentary just to give diff(1) something to synch itself with to +provide useful context diffs. -sb +*** prim/symbols.el +Commentary: + +The idea behind magic variables is that you can specify arbitrary +behavior to happen when setting or retrieving a variable's value. The +purpose of this is to make it possible to cleanly provide support for +obsolete variables (e.g. unread-command-event, which is obsolete for +unread-command-events) and variable compatibility +(e.g. suggest-key-bindings, the FSF equivalent of +teach-extended-commands-p and teach-extended-commands-timeout). +*** prim/syntax.el Can't find any Commentary section +*** prim/tabify.el +Commentary: + +Commands to optimize spaces to tabs or expand tabs to spaces in a region +(`tabify' and `untabify'). The variable tab-width does the obvious. +*** prim/toolbar.el Can't find any Commentary section +*** prim/undo-stack.el Can't find any Commentary section +*** prim/update-elc.el Can't find any Commentary section +*** prim/userlock.el +Commentary: + +This file is autoloaded to handle certain conditions +detected by the file-locking code within XEmacs. +The two entry points are `ask-user-about-lock' and +`ask-user-about-supersession-threat'. +*** prim/window.el Can't find any Commentary section + +** psgml - SGML/HTML editing mode +*** psgml/iso-sgml.el Can't find any Commentary section +*** psgml/psgml-api.el +Commentary: + +Provides some extra functions for the API to PSGML. + +*** psgml/psgml-charent.el +Commentary: + + Functions to convert character entities into displayable characters + and displayable characters back into character entities. + +*** psgml/psgml-debug.el Can't find any Commentary section +*** psgml/psgml-dtd.el +Commentary: + +Part of major mode for editing the SGML document-markup language. + +*** psgml/psgml-edit.el +Commentary: + +Part of major mode for editing the SGML document-markup language. + +*** psgml/psgml-fs.el +Commentary: + +The function `style-format' formats the SGML-file in the current +buffer according to the style defined in the file `psgml-style.fs' +(or the file given by the variable `fs-style'). + +To try it load this file and open the test file example.sgml. Then +run the emacs command `M-x style-format'. + +The style file should contain a single Lisp list. The elements of +this list, are them self lists, describe the style for an element type. +The sublists begin with the generic identifier for the element types and +the rest of the list are characteristic/value pairs. + +E.g. ("p" block t left 4 top 2) + +Defines the style for p-elements to be blocks with left margin 4 and +at least to blank lines before the block. + +*** psgml/psgml-html.el +Commentary: + +Parts were taken from html-helper-mode and from code by Alastair Burt. + +Feb 18 1997, Heiko Muenkel: Added the hook variable html-mode-hook. +; With that you can now use the hm--html-minor-mode together +; with this mode. For that you've to add the following line +; to your ~/.emacs: +; (add-hook 'html-mode-hook 'hm--html-minor-mode) +*** psgml/psgml-info.el +Commentary: + +This file is an addon to the PSGML package. + +This file contains some commands to print out information about the +current DTD. +*** psgml/psgml-other.el +Commentary: + +Part of psgml.el. Code not compatible with XEmacs. + +*** psgml/psgml-parse.el +Commentary: + +Part of major mode for editing the SGML document-markup language. + +*** psgml/psgml-xemacs.el +Commentary: + +Part of psgml.el + +Menus for use with XEmacs + +*** psgml/psgml.el +Commentary: + +Major mode for editing the SGML document-markup language. +*** psgml/tempo.el +Commentary: + +This file provides a simple way to define powerful templates, or +macros, if you wish. It is mainly intended for, but not limited to, +other programmers to be used for creating shortcuts for editing +certain kind of documents. It was originally written to be used by +a HTML editing mode written by Nelson Minar , +and his html-helper-mode.el is probably the best example of how to +use this program. + +** rmail - Reading Mail (see also VM and GNUS) +*** rmail/rmail-kill.el +Commentary: +*** rmail/rmail-xemacs.el +Commentary: + +Right button pops up a menu of commands in Rmail and Rmail summary buffers. +Middle button selects indicated mail message in Rmail summary buffer +*** rmail/rmail.el Can't find any Commentary section +*** rmail/rmailedit.el Can't find any Commentary section +*** rmail/rmailkwd.el Can't find any Commentary section +*** rmail/rmailmsc.el Can't find any Commentary section +*** rmail/rmailout.el Can't find any Commentary section +*** rmail/rmailsort.el Can't find any Commentary section +*** rmail/rmailsum.el +Commentary: + + Provided all commands from rmail-mode in rmail-summary-mode and made key + bindings in both modes wholly compatible. +*** rmail/undigest.el +Commentary: + +See Internet RFC 934 +*** rmail/unrmail.el Can't find any Commentary section + +** sunpro - Additional code for interfacing with SunPro products. +*** sunpro/sunpro-init.el Can't find any Commentary section +*** sunpro/sunpro-keys.el Can't find any Commentary section +*** sunpro/sunpro-load.el Can't find any Commentary section +*** sunpro/sunpro-menubar.el +Commentary: + Creates the default SunPro menubars. +*** sunpro/sunpro-sparcworks.el +Commentary: + +Called from the SPARCworks Manager with the command: + + xemacs -q -l sunpro-sparcworks $SUNPRO_SWM_TT_ARGS $SUNPRO_SWM_GUI_ARGS + +** term - Terminal specific initialization: vt100, wyse, ... +*** term/AT386.el +Commentary: + +Uses the Emacs 19 terminal initialization features --- won't work with 18. +*** term/apollo.el Can't find any Commentary section +*** term/bg-mouse.el Can't find any Commentary section +*** term/bobcat.el Can't find any Commentary section +*** term/internal.el Can't find any Commentary section +*** term/keyswap.el +Commentary: + +This package is meant to be called by other terminal packages. +*** term/linux.el Can't find any Commentary section +*** term/lk201.el Can't find any Commentary section +*** term/news.el +Commentary: + +Uses the Emacs 19 terminal initialization features --- won't work with 18. +*** term/pc-win.el Can't find any Commentary section +*** term/scoansi.el Can't find any Commentary section +*** term/sun-mouse.el +Commentary: +*** term/sun.el +Commentary: + +The function key sequences for the console have been converted for +use with function-key-map, but the *tool stuff hasn't been touched. +*** term/sup-mouse.el Can't find any Commentary section +*** term/tty-init.el +Commentary: +*** term/tvi970.el +Commentary: + +Uses the Emacs 19 terminal initialization features --- won't work with 18. +*** term/vt-control.el +Commentary: + + The functions contained in this file send various VT control codes + to the terminal where emacs is running. The following functions are + available. +*** term/vt100-led.el Can't find any Commentary section +*** term/vt100.el +Commentary: + +Uses the Emacs 19 terminal initialization features --- won't work with 18. + +Handles all VT100 clones, including the Apollo terminal. Also handles +the VT200 --- its PF- and arrow- keys are different, but all those +are really set up by the terminal initialization code, which mines them +out of termcap. This package is here to define the keypad comma, dash +and period (which aren't in termcap's repertoire) and the function for +changing from 80 to 132 columns & vv. +*** term/vt102.el Can't find any Commentary section +*** term/vt125.el Can't find any Commentary section +*** term/vt200.el Can't find any Commentary section +*** term/vt201.el Can't find any Commentary section +*** term/vt220.el Can't find any Commentary section +*** term/vt240.el Can't find any Commentary section +*** term/vt300.el Can't find any Commentary section +*** term/vt320.el Can't find any Commentary section +*** term/vt400.el Can't find any Commentary section +*** term/vt420.el Can't find any Commentary section +*** term/win32-win.el +Commentary: + +win32-win.el: this file is loaded from ../lisp/startup.el when it recognizes +that win32 windows are to be used. Command line switches are parsed and those +pertaining to win32 are processed and removed from the command line. The +win32 display is opened and hooks are set for popping up the initial window. + +startup.el will then examine startup files, and eventually call the hooks +which create the first window (s). +*** term/wyse50.el +Commentary: + +The Wyse50 is ergonomically wonderful, but its escape-sequence design sucks +rocks. The left-arrow key emits a backspace (!) and the down-arrow a line +feed (!!). Thus, you have to unbind some commonly-used Emacs keys to +enable the arrows. +*** term/xterm.el Can't find any Commentary section + +** tl - Tiny Library (Part of the Tools for MIME). +*** tl/bitmap.el Can't find any Commentary section +*** tl/cless.el Can't find any Commentary section +*** tl/emu-e19.el Can't find any Commentary section +*** tl/emu-orig.el Can't find any Commentary section +*** tl/emu-xemacs.el Can't find any Commentary section +*** tl/emu.el Can't find any Commentary section +*** tl/file-detect.el Can't find any Commentary section +*** tl/filename.el Can't find any Commentary section +*** tl/mu-cite.el +Commentary: +*** tl/mu-comment.el +Commentary: + + type `C-c C-q' at the beginning of S-expression you want to + comment out. +*** tl/mu-replace.el +Commentary: +*** tl/range.el Can't find any Commentary section +*** tl/richtext.el Can't find any Commentary section +*** tl/std11-parse.el Can't find any Commentary section +*** tl/std11.el Can't find any Commentary section +*** tl/texi-util.el Can't find any Commentary section +*** tl/tinyrich.el Can't find any Commentary section +*** tl/tl-822.el Can't find any Commentary section +*** tl/tl-atype.el Can't find any Commentary section +*** tl/tl-list.el Can't find any Commentary section +*** tl/tl-misc.el Can't find any Commentary section +*** tl/tl-num.el Can't find any Commentary section +*** tl/tl-seq.el Can't find any Commentary section +*** tl/tl-str.el Can't find any Commentary section +*** tl/tu-comment.el +Commentary: +*** tl/tu-replace.el +Commentary: + +** tm - Tools for MIME -- integrates in VM, RMAIL, GNUS +*** tm/gnus-art-mime.el Can't find any Commentary section +*** tm/gnus-charset.el Can't find any Commentary section +*** tm/gnus-mime-old.el Can't find any Commentary section +*** tm/gnus-mime.el Can't find any Commentary section +*** tm/gnus-msg-mime.el Can't find any Commentary section +*** tm/gnus-sum-mime.el Can't find any Commentary section +*** tm/message-mime.el Can't find any Commentary section +*** tm/mime-setup.el Can't find any Commentary section +*** tm/sc-setup.el Can't find any Commentary section +*** tm/signature.el Can't find any Commentary section +*** tm/tm-bbdb.el Can't find any Commentary section +*** tm/tm-def.el Can't find any Commentary section +*** tm/tm-edit-mc.el Can't find any Commentary section +*** tm/tm-edit.el +Commentary: + +This is an Emacs minor mode for editing Internet multimedia +messages formatted in MIME (RFC 2045, 2046, 2047, 2048 and 2049). +All messages in this mode are composed in the tagged MIME format, +that are described in the following examples. The messages +composed in the tagged MIME format are automatically translated +into a MIME compliant message when exiting the mode. +*** tm/tm-ew-d.el Can't find any Commentary section +*** tm/tm-ew-e.el Can't find any Commentary section +*** tm/tm-file.el Can't find any Commentary section +*** tm/tm-ftp.el Can't find any Commentary section +*** tm/tm-gd3.el Can't find any Commentary section +*** tm/tm-gnus.el Can't find any Commentary section +*** tm/tm-gnus4.el Can't find any Commentary section +*** tm/tm-gnus5.el Can't find any Commentary section +*** tm/tm-html.el Can't find any Commentary section +*** tm/tm-image.el +Commentary: + If you use this program with MULE, please install + etl8x16-bitmap.bdf font included in tl package. +*** tm/tm-latex.el Can't find any Commentary section +*** tm/tm-mail.el Can't find any Commentary section +*** tm/tm-mh-e.el Can't find any Commentary section +*** tm/tm-orig.el Can't find any Commentary section +*** tm/tm-parse.el Can't find any Commentary section +*** tm/tm-partial.el Can't find any Commentary section +*** tm/tm-pgp.el +Commentary: + + This module is based on 2 drafts about PGP MIME integration: +*** tm/tm-play.el Can't find any Commentary section +*** tm/tm-rmail.el Can't find any Commentary section +*** tm/tm-setup.el Can't find any Commentary section +*** tm/tm-sgnus.el Can't find any Commentary section +*** tm/tm-tar.el Can't find any Commentary section +*** tm/tm-text.el Can't find any Commentary section +*** tm/tm-view.el Can't find any Commentary section +*** tm/tm-vm.el +Commentary: + + Plese insert `(require 'tm-vm)' in your ~/.vm file. +*** tm/tmh-comp.el Can't find any Commentary section + +** tooltalk - Support for Tooltalk protocol +*** tooltalk/tooltalk-init.el Can't find any Commentary section +*** tooltalk/tooltalk-load.el Can't find any Commentary section +*** tooltalk/tooltalk-macros.el Can't find any Commentary section +*** tooltalk/tooltalk-util.el Can't find any Commentary section + +** utils - Lots of stuff +*** utils/abbrevlist.el Can't find any Commentary section +*** utils/advice.el +Commentary: + +This package implements a full-fledged Lisp-style advice mechanism +for Emacs Lisp. Advice is a clean and efficient way to modify the +behavior of Emacs Lisp functions without having to keep personal +modified copies of such functions around. A great number of such +modifications can be achieved by treating the original function as a +black box and specifying a different execution environment for it +with a piece of advice. Think of a piece of advice as a kind of fancy +hook that you can attach to any function/macro/subr. +*** utils/annotations.el Can't find any Commentary section +*** utils/assoc.el +Commentary: + +Association list utilities providing insertion, deletion, sorting +fetching off key-value pairs in association lists. +*** utils/atomic-extents.el Can't find any Commentary section +*** utils/autoload.el +Commentary: + +This code helps GNU Emacs maintainers keep the loaddefs.el file up to +date. It interprets magic cookies of the form ";;;###autoload" in +lisp source files in various useful ways. To learn more, read the +source; if you're going to use this, you'd better be able to. +*** utils/bench.el +Commentary: + +Adapted from Shane Holder's bench.el by steve@altair.xemacs.org. + +To run +Extract the shar file in /tmp, or modify bench-lisp-file to +point to the gnus.el file. +At the shell prompt emacs -q --no-site-file <= don't load users .emacs or site- +file +M-x byte-compile-file "/tmp/bench.el" +M-x load-file "/tmp/bench.elc" +In the scratch buffer (bench 1) + + +All bench marks must be named bench-mark- +Results are put in bench-mark- +*** utils/blessmail.el +Commentary: + +This is loaded into a bare Emacs to create the blessmail script, +which (on systems that need it) is used during installation +to give appropriate permissions to movemail. + +It has to be done from lisp in order to be sure of getting the +correct value of rmail-spool-directory. +*** utils/browse-cltl2.el Can't find any Commentary section +*** utils/browse-url.el +Commentary: + +This package provides functions which read a URL (Uniform Resource +Locator) from the minibuffer, defaulting to the URL around point, +and ask a World-Wide Web browser to load it. It can also load the +URL associated with the current buffer. Different browsers use +different methods of remote control so there is one function for +each supported browser. If the chosen browser is not running, it +is started. Currently there is support for: + +*** utils/crontab.el Can't find any Commentary section +*** utils/delbackspace.el Can't find any Commentary section +*** utils/derived.el +Commentary: + +GNU Emacs is already, in a sense, object oriented -- each object +(buffer) belongs to a class (major mode), and that class defines +the relationship between messages (input events) and methods +(commands) by means of a keymap. + +In the mean time, this package offers most of the advantages of +full inheritance with the existing major modes. The macro +`define-derived-mode' allows the user to make a variant of an existing +major mode, with its own keymap. The new mode will inherit the key +bindings of its parent, and will, in fact, run its parent first +every time it is called. For example, the commands +*** utils/detached-minibuf.el +Commentary: + +WARNING. DANGER. This file reportedly crashes 19.14, use it only with a +recent XEmacs. + +Version: 1.1 +*** utils/docref.el +Commentary: + +This package allows you to use a simple form of cross references in +your Emacs Lisp documentation strings. Cross-references look like +\\(type@[label@]data), where type defines a method for retrieving +reference informatin, data is used by a method routine as an argument, +and label "represents" the reference in text. If label is absent, data +is used instead. +*** utils/easymenu.el Can't find any Commentary section +*** utils/edmacro.el +Commentary: + +Usage: + +The `C-x C-k' (`edit-kbd-macro') command edits a keyboard macro +in a special buffer. It prompts you to type a key sequence, +which should be one of: +*** utils/eldoc.el +Commentary: + +This program was inspired by the behavior of the "mouse documentation +window" on many Lisp Machine systems; as you type a function's symbol +name as part of a sexp, it will print the argument list for that +function. Behavior is not identical; for example, you need not actually +type the function name, you need only move point around in a sexp that +calls it. Also, if point is over a documented variable, it will print +the one-line documentation for that variable instead, to remind you of +that variable's meaning. +*** utils/elp.el +Commentary: + +If you want to profile a bunch of functions, set elp-function-list +to the list of symbols, then do a M-x elp-instrument-list. This +hacks those functions so that profiling information is recorded +whenever they are called. To print out the current results, use +M-x elp-results. If you want output to go to standard-output +instead of a separate buffer, setq elp-use-standard-output to +non-nil. With elp-reset-after-results set to non-nil, profiling +information will be reset whenever the results are displayed. You +can also reset all profiling info at any time with M-x +elp-reset-all. +*** utils/facemenu.el +Commentary: + +This file defines a menu of faces (bold, italic, etc) which allows you to +set the face used for a region of the buffer. Some faces also have +keybindings, which are shown in the menu. Faces with names beginning with +"fg:" or "bg:", as in "fg:red", are treated specially. +Such faces are assumed to consist only of a foreground (if "fg:") or +background (if "bg:") color. They are thus put into the color submenus +rather than the general Face submenu. These faces can also be +automatically created by selecting the "Other..." menu items in the +"Foreground" and "Background" submenus. +*** utils/find-gc.el +Commentary: + +Produce in unsafe-list the set of all functions that may invoke GC. +This expects the Emacs sources to live in emacs-source-directory. +It creates a temporary working directory /tmp/esrc. +*** utils/finder.el +Commentary: + +This mode uses the Keywords library header to provide code-finding +services by keyword. +*** utils/floating-toolbar.el +Commentary: + +The command `floating-toolbar' pops up a small frame +containing a toolbar. The command should be bound to a +button-press event. If the mouse press happens over an +extent that has a non-nil 'floating-toolbar property, the +value of that property is the toolbar instantiator that will +be displayed. Otherwise the toolbar displayed is taken from +the variable `floating-toolbar'. This variable can be made +buffer local to produce buffer local floating toolbars. +*** utils/flow-ctrl.el +Commentary: + +Terminals that use XON/XOFF flow control can cause problems with +GNU Emacs users. This file contains Emacs Lisp code that makes it +easy for a user to deal with this problem, when using such a +terminal. + +*** utils/foldout.el +Commentary: + +This file provides folding editor extensions for outline-mode and +outline-minor-mode buffers. What's a "folding editor"? Read on... + +Imagine you're in an outline-mode buffer and you've hidden all the text and +subheadings under your level-1 headings. You now want to look at the stuff +hidden under one of these headings. Normally you'd do C-c C-e (show-entry) +to expose the body or C-c C-i to expose the child (level-2) headings. + +With foldout, you do C-c C-z (foldout-zoom-subtree). This exposes the body +and child subheadings and narrows the buffer so that only the level-1 +heading, the body and the level-2 headings are visible. If you now want to +look under one of the level-2 headings, position the cursor on it and do C-c +C-z again. This exposes the level-2 body and its level-3 child subheadings +and narrows the buffer again. You can keep on zooming in on successive +subheadings as much as you like. A string in the modeline tells you how +deep you've gone. +*** utils/forms-d2.el Can't find any Commentary section +*** utils/forms-pass.el Can't find any Commentary section +*** utils/forms.el +Commentary: + +Visit a file using a form. + +Forms mode means visiting a data file which is supposed to consist +of records each containing a number of fields. The records are +separated by a newline, the fields are separated by a user-defined +field separator (default: TAB). +When shown, a record is transferred to an Emacs buffer and +presented using a user-defined form. One record is shown at a +time. +*** utils/frame-icon.el +Commentary: +*** utils/hide-copyleft.el Can't find any Commentary section +*** utils/highlight-headers.el Can't find any Commentary section +*** utils/id-select.el Can't find any Commentary section +*** utils/lib-complete.el Can't find any Commentary section +*** utils/live-icon.el Can't find any Commentary section +*** utils/loadhist.el +Commentary: + +These functions exploit the load-history system variable. +*** utils/mail-extr.el +Commentary: + + mail-extract-address-components: (address) + + Given an RFC-822 ADDRESS, extract full name and canonical address. + Returns a list of the form (FULL-NAME CANONICAL-ADDRESS). + If no name can be extracted, FULL-NAME will be nil. + ADDRESS may be a string or a buffer. If it is a buffer, the visible + (narrowed) portion of the buffer will be interpreted as the address. + (This feature exists so that the clever caller might be able to avoid + consing a string.) + If ADDRESS contains more than one RFC-822 address, only the first is + returned. + +*** utils/mail-utils.el +Commentary: + +Utility functions for mail and netnews handling. These handle fine +points of header parsing. +*** utils/mailpost.el +Commentary: + +Yet another mail interface. this for the rmail system to provide + the missing sendmail interface on systems without /usr/lib/sendmail, + but with /usr/uci/post. +*** utils/map-ynp.el +Commentary: + +map-y-or-n-p is a general-purpose question-asking function. +It asks a series of y/n questions (a la y-or-n-p), and decides to +applies an action to each element of a list based on the answer. +The nice thing is that you also get some other possible answers +to use, reminiscent of query-replace: ! to answer y to all remaining +questions; ESC or q to answer n to all remaining questions; . to answer +y once and then n for the remainder; and you can get help with C-h. +*** utils/meese.el +Commentary: +This file is grossly misnamed. It should be called reno.el. +*** utils/passwd.el Can't find any Commentary section +*** utils/pp.el Can't find any Commentary section +*** utils/pretty-print.el Can't find any Commentary section +*** utils/redo.el +Commentary: + +Emacs' normal undo system allows you to undo an arbitrary +number of buffer changes. These undos are recorded as ordinary +buffer changes themselves. So when you break the chain of +undos by issuing some other command, you can then undo all +the undos. The chain of recorded buffer modifications +therefore grows without bound, truncated only at garbage +collection time. + +*** utils/regi.el Can't find any Commentary section +*** utils/reporter.el +Commentary: +Lisp Package Authors +==================== +Reporter was written primarily for Emacs Lisp package authors so +that their users can easily report bugs. When invoked, +reporter-submit-bug-report will set up an outgoing mail buffer with +the appropriate bug report address, including a lisp expression the +maintainer of the package can eval to completely reproduce the +environment in which the bug was observed (e.g. by using +eval-last-sexp). This package proved especially useful during my +development of cc-mode, which is highly dependent on its +configuration variables. +*** utils/rfc822.el Can't find any Commentary section +*** utils/ring.el +Commentary: + +This code defines a ring data structure. A ring is a + (hd-index length . vector) +list. You can insert to, remove from, and rotate a ring. When the ring +fills up, insertions cause the oldest elts to be quietly dropped. +*** utils/shadowfile.el Can't find any Commentary section +*** utils/skeleton.el +Commentary: + +A very concise language extension for writing structured statement +skeleton insertion commands for programming language modes. This +originated in shell-script mode and was applied to ada-mode's +commands which shrunk to one third. And these commands are now +user configurable. +*** utils/smtpmail.el +Commentary: + +Send Mail to smtp host from smtpmail temp buffer. +*** utils/soundex.el +Commentary: + +The Soundex algorithm maps English words into representations of +how they sound. Words with vaguely similar sound map to the same string. +*** utils/speedbar.el +Commentary: + + The speedbar provides a frame in which files, and locations in +files are displayed. These items can be clicked on with mouse-2 +in order to make the last active frame display that file location. +*** utils/symbol-syntax.el Can't find any Commentary section +*** utils/sysdep.el Can't find any Commentary section +*** utils/text-props.el +Commentary: + +This is a nearly complete implementation of the FSF19 text properties API. +Please let me know if you notice any differences in behavior between +this implementation and the FSF implementation. +*** utils/thing.el Can't find any Commentary section +*** utils/timezone.el Can't find any Commentary section +*** utils/tq.el +Commentary: + +manages receiving a stream asynchronously, +parsing it into transactions, and then calling +handler functions + +Our basic structure is the queue/process/buffer triple. Each entry +of the queue is a regexp/closure/function triple. We buffer +bytes from the process until we see the regexp at the head of the +queue. Then we call the function with the closure and the +collected bytes. +*** utils/trace.el +Commentary: + +A simple trace package that utilizes advice.el. It generates trace +information in a Lisp-style fashion and inserts it into a trace output +buffer. Tracing can be done in the background (or silently) so that +generation of trace output won't interfere with what you are currently +doing. +*** utils/tree-menu.el Can't find any Commentary section +*** utils/uniquify.el +Commentary: + +Emacs's standard method for making buffer names unique adds <2>, <3>, +etc. to the end of (all but one of) the buffers. This file replaces +that behavior, for buffers visiting files and dired buffers, with a +uniquification that adds parts of the file name until the buffer names +are unique. For instance, buffers visiting /u/mernst/tmp/Makefile and +/usr/projects/zaphod/Makefile would be named Makefile|tmp and +Makefile|zaphod, respectively (instead of Makefile and Makefile<2>). +Other buffer name styles are also available. +*** utils/xbm-button.el Can't find any Commentary section +*** utils/xpm-button.el Can't find any Commentary section + +** viper - VI emulator +*** viper/viper-ex.el Can't find any Commentary section +*** viper/viper-init.el Can't find any Commentary section +*** viper/viper-keym.el Can't find any Commentary section +*** viper/viper-macs.el Can't find any Commentary section +*** viper/viper-mous.el Can't find any Commentary section +*** viper/viper-util.el Can't find any Commentary section +*** viper/viper.el Can't find any Commentary section + +** vm - Mail reader +See the online documentation. + +** vms - Stuff for Emacs under VMS +vms/vms-patch.el Can't find any Commentary section +*** vms/vmsproc.el Can't find any Commentary section +*** vms/vmsx.el Can't find any Commentary section + +** w3 - World Wide Web browser under Emacs +See the online documentation. + +** x11 - X11 specific stuff: compose keys, menubars, toolbar, ... +*** x11/x-compose.el Can't find any Commentary section +*** x11/x-faces.el Can't find any Commentary section +*** x11/x-font-menu.el +Commentary: + +Creates three menus, "Font", "Size", and "Weight", and puts them on the +"Options" menu. The contents of these menus are the superset of those +properties available on any fonts, but only the intersection of the three +sets is selectable at one time. +*** x11/x-init.el +Commentary: +*** x11/x-iso8859-1.el Can't find any Commentary section +*** x11/x-menubar.el +Commentary: +*** x11/x-misc.el Can't find any Commentary section +*** x11/x-mouse.el Can't find any Commentary section +*** x11/x-scrollbar.el Can't find any Commentary section +*** x11/x-select.el Can't find any Commentary section +*** x11/x-toolbar.el Can't find any Commentary section +*** x11/x-win-sun.el +Commentary: + +This file is loaded by x-win.el at run-time when we are sure that XEmacs +is running on the display of a Sun. + +The Sun X server (both the MIT and OpenWindows varieties) have extremely +stupid names for their keypad and function keys. For example, the key +labeled 3 / PgDn, with R15 written on the front, is actually called F35. +*** x11/x-win-xfree86.el Can't find any Commentary section + + +* What Changed +=================== + + +** Differences between XEmacs and GNU Emacs 19 +================================================== + +In XEmacs, events are first-class objects. FSF 19 represents them as +integers, which obscures the differences between a key gesture and the +ancient ASCII code used to represent a particular overlapping subset of them. + +In XEmacs, keymaps are first-class opaque objects. FSF 19 represents them as +complicated combinations of association lists and vectors. If you use the +advertised functional interface to manipulation of keymaps, the same code +will work in XEmacs, Emacs 18, and GNU Emacs 19; if your code depends +on the underlying implementation of keymaps, it will not. + +XEmacs uses "extents" to represent all non-textual aspects of buffers; +FSF 19 uses two distinct objects, "text properties" and "overlays", +which divide up the functionality between them. Extents are a +superset of the functionality of the two FSF data types. The full FSF +19 interface to text properties is supported in XEmacs (with extents +being the underlying representation). + +Extents can be made to be copied into strings, and thus restored by kill +and yank. Thus, one can specify this behavior on either "extents" or +"text properties", whereas in FSF 19 text properties always have this +behavior and overlays never do. + +Many more packages are provided standard with XEmacs than with FSF 19. + +Pixmaps of arbitrary size can be embedded in a buffer. + +Variable width fonts work. + +The height of a line is the height of the tallest font on that line, instead +of all lines having the same height. + +XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which +makes it be a more well-behaved X citizen (and also improves +portability). A result of this is that it is possible to include +other Xt "Widgets" in the XEmacs window. Also, XEmacs understands the +standard Xt command-line arguments. + +XEmacs provides support for ToolTalk on systems that have it. + +XEmacs can ask questions using popup dialog boxes. Any command executed from +a menu will ask yes/no questions with dialog boxes, while commands executed +via the keyboard will use the minibuffer. + +XEmacs has a built-in toolbar. Four toolbars can actually be configured: +top, bottom, left, and right toolbars. + +XEmacs has vertical and horizontal scrollbars. Unlike in FSF 19 (which +provides a primitive form of vertical scrollbar), these are true toolkit +scrollbars. A look-alike Motif scrollbar is provided for those who +don't have Motif. (Even for those who do, the look-alike may be preferable +as it is faster.) + +If you're running on a machine with audio hardware, you can specify sound +files for XEmacs to play instead of the default X beep. See the documentation +of the function load-sound-file and the variable sound-alist. + +An XEmacs frame can be placed within an "external client widget" managed by +another application. This allows an application to use an XEmacs frame as its +text pane rather than the standard Text widget that is provided with Motif or +Athena. XEmacs supports Motif applications, generic Xt (e.g. Athena) +applications, and raw Xlib applications. + +Here are some more specifics about the XEmacs implementation: + +*** The Input Model +------------------- + +The fundamental unit of input is an "event" instead of a character. An +event is a new data type that contains several pieces of information. +There are several kinds of event, and corresponding accessor and utility +functions. We tried to abstract them so that they would apply equally +well to a number of window systems. + +NOTE: All timestamps are measured as milliseconds since Emacs started. + + key_press_event + event_channel A token representing which keyboard generated it. + For this kind of event, this is a frame object. + (This is for eventual support of multiple displays.) + timestamp When it happened + key What keysym this is; an integer or a symbol. + If this is an integer, it will be in the printing + ASCII range: >32 and <127. + modifiers Bucky-bits on that key: control, meta, etc. + For most keys, Shift is not a bit; that is implicit + in the keyboard layout. + + button_press_event + button_release_event + event_channel A token representing which mouse generated it. + For this kind of event, this is a frame object. + timestamp When it happened + button What button went down or up. + modifiers Bucky-bits on that button: shift, control, meta, etc. + x, y Where it was at the button-state-change (in pixels). + + pointer_motion_event + event_channel A token representing which mouse generated it. + For this kind of event, this is a frame object. + timestamp When it happened + x, y Where it was after it moved (in pixels). + modifiers Bucky-bits down when the motion was detected. + (Possibly not all window systems will provide this?) + + process_event + timestamp When it happened + process the emacs "process" object in question + + timeout_event + timestamp Now (really, when the timeout was signaled) + interval_id The ID returned when the associated call to + add_timeout_cb() was made + ------ the rest of the fields are filled in by Emacs ----- + id_number The Emacs timeout ID for this timeout (more + than one timeout event can have the same value + here, since Emacs timeouts, as opposed to + add_timeout_cb() timeouts, can resignal + themselves) + function An elisp function to call when this timeout is + processed. + object The object passed to that function. + + eval_event + timestamp When it happened + function An elisp function to call with this event object. + object Anything. + This kind of event is used internally; sometimes the + window system interface would like to inform emacs of + some user action (such as focusing on another frame) + but needs that to happen synchronously with the other + user input, like keypresses. This is useful when + events are reported through callbacks rather + than in the standard event stream. + + misc_user_event + timestamp When it happened + function An elisp function to call with this event object. + object Anything. + This is similar to an eval_event, except that it is + generated by user actions: selections in the + menubar or scrollbar actions. It is a "command" + event, like key and mouse presses (and unlike mouse + motion, process output, and enter and leave window + hooks). In many ways, eval_events are not the same + as keypresses or misc_user_events. + + magic_event + No user-serviceable parts within. This is for things + like KeymapNotify and ExposeRegion events and so on + that emacs itself doesn't care about, but which it + must do something with for proper interaction with + the window system. + + Magic_events are handled somewhat asynchronously, just + like subprocess filters. However, occasionally a + magic_event needs to be handled synchronously; in that + case, the asynchronous handling of the magic_event will + push an eval_event back onto the queue, which will be + handled synchronously later. This is one of the + reasons why eval_events exist; I'm not entirely happy + with this aspect of this event model. + + +The function `next-event' blocks and returns one of the above-described +event objects. The function `dispatch-event' takes an event and processes +it in the appropriate way. + +For a process-event, dispatch-event calls the process's handler; for a +mouse-motion event, the mouse-motion-handler hook is called, and so on. +For magic-events, dispatch-event does window-system-dependent things, +including calling some non-window-system-dependent hooks: map-frame-hook, +unmap-frame-hook, mouse-enter-frame-hook, and mouse-leave-frame-hook. + +The function `next-command-event' calls `next-event' until it gets a key or +button from the user (that is, not a process, motion, timeout, or magic +event). If it gets an event that is not a key or button, it calls +`dispatch-event' on it immediately and reads another one. The +next-command-event function could be implemented in Emacs Lisp, though it +isn't. Generally one should call `next-command-event' instead of +`next-event'. + +read-char calls next-command-event; if it doesn't get an event that can be +converted to an ASCII character, it signals an error. Otherwise it returns +an integer. + +The variable `last-command-char' always contains an integer, or nil (if the +last read event has no ASCII equivalent, as when it is a mouse-click or a +non-ASCII character chord.) + +The new variable `last-command-event' holds an event object, that could be +a non-ASCII character, a button click, a menu selection, etc. + +The variable `unread-command-char' no longer exists, and has been replaced +by `unread-command-events'. With the new event model, it is incorrect for +code to do (setq unread-command-char (read-char)), because all user-input +can't be represented as ASCII characters. *** This is an incompatible +change. Code which sets `unread-command-char' must be updated to use the +combination of `next-command-event' and `unread-command-events' instead. + +The functions `this-command-keys' and `recent-keys' return a vector of +event objects, instead of a string of ASCII characters. *** This also +is an incompatible change. + +Almost nothing happens at interrupt level; the SIGIO handler simply sets a +flag, and later, the X event queue is scanned for KeyPress events which map +to ^G. All redisplay happens in the main thread of the process. + + +*** Keymaps +----------- + +Instead of keymaps being alists or obarrays, they are a new primary data +type. The only user access to the contents of a keymap is through the +existing keymap-manipulation functions, and a new function, map-keymap. +This means that existing code that manipulates keymaps may need to +be changed. + +One of our goals with the new input and keymap code was to make more +character combinations available for binding, besides just ASCII and +function keys. We want to be able bind different commands to Control-a +and Control-Shift-a; we also want it to be possible for the keys Control-h +and Backspace (and Control-M and Return, and Control-I and Tab, etc) to +be distinct. + +One of the most common complaints that new Emacs users have is that backspace +is help. The answer is to play around with the keyboard-translate-table, or +be lucky enough to have a system administrator who has done this for you +already; but if it were possible to bind backspace and C-h to different +things, then (under a window manager at least) both backspace and delete +would delete a character, and ^H would be help. There's no need to deal +with xmodmap, kbd-translate-table, etc. + +Here are some more examples: suppose you want to bind one function to Tab, +and another to Control-Tab. This can't be done if Tab and Control-I are the +same thing. What about control keys that have no ASCII equivalent, like +Control-< ? One might want that to be bound to set-mark-at-point-min. We +want M-C-Backspace to be kill-backward-sexp. But we want M-Backspace to be +kill-backward-word. Again, this can't be done if Backspace and C-h are +indistinguishable. + +The user represents keys as a string of ASCII characters (when possible and +convenient), or as a vector of event objects, or as a vector of "key +description lists", that looks like (control a), or (control meta delete) +or (shift f1). The order of the modifier-names is not significant, so +(meta control x) and (control meta x) are the same. + +`define-key' knows how to take any of the above representations and store them +into a keymap. When Emacs wants to return a key sequence (this-command-keys, +recent-keys, keyboard-macros, and read-key-sequence, for example) it returns +a vector of event objects. Keyboard macros can also be represented as ASCII +strings or as vectors of key description lists. + +This is an incompatible change: code which calls `this-command-keys', +`recent-keys', `read-key-sequence', or manipulates keyboard-macros probably +needs to be changed so that it no longer assumes that the returned value is a +string. + +Control-Shift-a is specified as (control A), not (control shift a), since A +is a two-case character. But for keys that don't have an upper case +version, like F1, Backspace, and Escape, you use the (shift backspace) syntax. + +See the doc string for our version of define-key, reproduced below in the +`Changed Functions' section. Note that when the KEYS argument is a string, +it has the same semantics as the v18 define-key. + + +*** Xt Integration +------------------ + +The heart of the event loop is implemented in terms of the Xt event functions +(specifically XtAppProcessEvent), and uses Xt's concept of timeouts and +file-descriptor callbacks, eliminating a large amount of system-dependent code +(Xt does it for you.) + +If Emacs is compiled with support for X, it uses the Xt event loop even when +Emacs is not running on an X display (the Xt event loop supports this). This +makes it possible to run Emacs on a dumb TTY, and later connect it to one or +more X servers. It should also be possible to later connect an existing Emacs +process to additional TTY's, although this code is still experimental. (Our +intent at this point is not to have an Emacs that is being used by multiple +people at the same time: it is to make it possible for someone to go home, log +in on a dialup line, and connect to the same Emacs process that is running +under X in their office without having to recreate their buffer state and so +on.) + +If Emacs is not compiled with support for X, then it instead uses more general +code, something like what v18 does; but this way of doing things is a lot more +modular. + +(Linking Emacs with Xt seems to only add about 300k to the executable size, +compared with an Emacs linked with Xlib only.) + + +*** Region Highlighting +----------------------- + +If the variable `zmacs-regions' is true, then the region between point and +mark will be highlighted when "active". Those commands which push a mark +(such as C-SPC, and C-x C-x) make the region become "active" and thus +highlighted. Most commands (all non-motion commands, basically) cause it to +become non-highlighted (non-"active"). Commands that operate on the region +(such as C-w, C-x C-l, etc.) only work if the region is in the highlighted +state. + +zmacs-activate-region-hook and zmacs-deactivate-region-hook are run at the +appropriate times; under X, zmacs-activate-region-hook makes the X selection +be the region between point and mark, thus doing two things at once: making +the region and the X selection be the same; and making the region highlight +in the same way as the X selection. + +If `zmacs-regions' is true, then the `mark-marker' command returns nil unless +the region is currently in the active (highlighted) state. With an argument +of t, this returns the mark (if there is one) regardless of the active-region +state. You should *generally* not use the mark unless the region is active, +if the user has expressed a preference for the active-region model. Watch +out! Moving this marker changes the mark position. If you set the marker not +to point anywhere, the buffer will have no mark. + +In this way, the primary selection is a fairly transitory entity; but +when something is copied to the kill ring, it is made the Clipboard +selection. It is also stored into CUT_BUFFER0, for compatibility with +X applications that don't understand selections (like Emacs18). + +Compatibility note: if you have code which uses (mark) or (mark-marker), +then you need to either: change those calls to (mark t) or (mark-marker t); +or simply bind `zmacs-regions' to nil around the call to mark or mark-marker. +This is probably the best solution, since it will work in Emacs 18 as well. + + +*** Menubars and Dialog Boxes +----------------------------- + +Here is an example of a menubar definition: + +(defvar default-menubar + '(("File" ["Open File..." find-file t] + ["Save Buffer" save-buffer t] + ["Save Buffer As..." write-file t] + ["Revert Buffer" revert-buffer t] + "-----" + ["Print Buffer" lpr-buffer t] + "-----" + ["Delete Frame" delete-frame t] + ["Kill Buffer..." kill-buffer t] + ["Exit Emacs" save-buffers-kill-emacs t] + ) + ("Edit" ["Undo" advertised-undo t] + ["Cut" kill-primary-selection t] + ["Copy" copy-primary-selection t] + ["Paste" yank-clipboard-selection t] + ["Clear" delete-primary-selection t] + ) + ...)) + +The first element of each menu item is the string to print on the menu. + +The second element is the callback function; if it is a symbol, it is +invoked with `call-interactively.' If it is a list, it is invoked with +`eval'. + +If the second element is a symbol, then the menu also displays the key that +is bound to that command (if any). + +The third element of the menu items determines whether the item is selectable. +It may be t, nil, or a form to evaluate. Also, a hook is run just before a +menu is exposed, which can be used to change the value of these slots. +For example, there is a hook that makes the "undo" menu item be selectable +only in the cases when `advertised-undo' would not signal an error. + +Menus may have other menus nested within them; they will cascade. + +There are utility functions for adding items to menus, deleting items, +disabling them, etc. + +The function `popup-menu' takes a menu description and pops it up. + +The function `popup-dialog-box' takes a dialog-box description and pops +it up. Dialog box descriptions look a lot like menu descriptions. + +The menubar, menu, and dialog-box code is implemented as a library, +with an interface which hides the toolkit that implements it. + + +*** Isearch Changes +------------------- + +Isearch has been reimplemented in a different way, adding some new features, +and causing a few incompatible changes. + + - the old isearch-*-char variables are no longer supported. In the old + system, one could make ^A mean "repeat the search" by doing something + like (setq search-repeat-char ?C-a). In the new system, this is + accomplished with + + (define-key isearch-mode-map "\C-a" 'isearch-repeat-forward) + + - The advantage of using the normal keymap mechanism for this is that you + can bind more than one key to an isearch command: for example, both C-a + and C-s could do the same thing inside isearch mode. You can also bind + multi-key sequences inside of isearch mode, and bind non-ASCII keys. + For example, to use the F1 key to terminate a search: + + (define-key isearch-mode-map 'f1 'isearch-exit) + + or to make ``C-c C-c'' terminate a search: + + (define-key isearch-mode-map "\C-c\C-c" 'isearch-exit) + + - If isearch is behaving case-insensitively (the default) and you type an + upper case character, then the search will become case-sensitive. This + can be disabled by setting `search-caps-disable-folding' to nil. + + - There is a history ring of the strings previously searched for; typing + M-p or M-n while searching will cycle through this ring. Typing M-TAB + will do completion across the set of items in the history ring. + + - The ESC key is no longer used to terminate an incremental search. The + RET key should be used instead. This change is necessary for it to be + possible to bind "meta" characters to isearch commands. + + +*** Startup Code Changes +------------------------ + +The initial X frame is mapped before the user's .emacs file is executed. +Without this, there is no way for the user to see any error messages +generated by their .emacs file, any windows created by the .emacs file +don't show up, and the copyleft notice isn't shown. + +The default values for load-path, exec-path, lock-directory, and +Info-directory-list are not (necessarily) built into Emacs, but are +computed at startup time. + +First, Emacs looks at the directory in which its executable file resides: + + o If that directory contains subdirectories named "lisp" and "lib-src", + then those directories are used as the lisp library and exec directory. + + o If the parent of the directory in which the emacs executable is located + contains "lisp" and "lib-src" subdirectories, then those are used. + + o If ../lib/xemacs- (starting from the directory in which the + emacs executable is located) contains a "lisp" subdirectory and either + a "lib-src" subdirectory or a subdirectory, then + those are used. + + o If the emacs executable that was run is a symbolic link, then the link + is chased, and the resultant directory is checked as above. + +(Actually, it doesn't just look for "lisp/", it looks for "lisp/prim/", +which reduces the chances of a false positive.) + +If the lisp directory contains subdirectories, they are added to the default +load-path as well. If the site-lisp directory exists and contains +subdirectories, they are then added. Subdirectories whose names begin with +a dot or a hyphen are not added to the load-path. + +These heuristics fail if the Emacs binary was copied from the main Emacs +tree to some other directory, and links for the lisp directory were not put +in. This isn't much of a restriction: either make there be subdirectories +(or symbolic links) of the directory of the emacs executable, or make the +"installed" emacs executable be a symbolic link to an executable in a more +appropriate directory structure. For example, this setup works: + + /usr/local/xemacs/xemacs* ; The executable. + /usr/local/xemacs/lisp/ ; The associated directories. + /usr/local/xemacs/etc/ ; Any of the files in this list + /usr/local/xemacs/lock/ ; could be symbolic links as well. + /usr/local/xemacs/info/ + +As does this: + + /usr/local/bin/xemacs -> ../xemacs/src/xemacs-19.14 ; A link... + /usr/local/xemacs/src/xemacs-19.14* ; The executable, + /usr/local/xemacs/lisp/ ; and the rest of + /usr/local/xemacs/etc/ ; the source tree + /usr/local/xemacs/lock/ + /usr/local/xemacs/info/ + +This configuration might be used for a multi-architecture installation; assume +that $LOCAL refers to a directory which contains only files specific to a +particular architecture (i.e., executables) and $SHARED refers to those files +which are not machine specific (i.e., lisp code and documentation.) + + $LOCAL/bin/xemacs@ -> $LOCAL/xemacs-19.14/xemacs* + $LOCAL/xemacs-19.14/lisp@ -> $SHARED/xemacs-19.14/lisp/ + $LOCAL/xemacs-19.14/etc@ -> $SHARED/xemacs-19.14/etc/ + $LOCAL/xemacs-19.14/info@ -> $SHARED/xemacs-19.14/info/ + +The following would also work, but the above is probably more attractive: + + $LOCAL/bin/xemacs* + $LOCAL/bin/lisp@ -> $SHARED/xemacs-19.14/lisp/ + $LOCAL/bin/etc@ -> $SHARED/xemacs-19.14/etc/ + $LOCAL/bin/info@ -> $SHARED/xemacs-19.14/info/ + +If Emacs can't find the requisite directories, it writes a message like this +(or some appropriate subset of it) to stderr: + + WARNING: + couldn't find an obvious default for load-path, exec-directory, and + lock-directory, and there were no defaults specified in paths.h when + Emacs was built. Perhaps some directories don't exist, or the Emacs + executable, /cadillac-th/jwz/somewhere/xemacs is in a strange place? + + Without both exec-directory and load-path, Emacs will be very broken. + Consider making a symbolic link from /cadillac-th/jwz/somewhere/etc + to wherever the appropriate Emacs etc/ directory is, and from + /cadillac-th/jwz/somewhere/lisp/ to wherever the appropriate Emacs + lisp library is. + + Without lock-directory set, file locking won't work. Consider + creating /cadillac-th/jwz/somewhere/lock as a directory or symbolic + link for use as the lock directory. + +The default installation tree is the following: + + /usr/local/bin/b2m ; + ctags ; executables that + emacsclient ; should be in + etags ; user's path + xemacs -> xemacs- ; + xemacs ; + /usr/local/lib/xemacs/site-lisp + /usr/local/lib/xemacs/lock + /usr/local/lib/xemacs-/etc ; architecture ind. files + /usr/local/lib/xemacs-/info + /usr/local/lib/xemacs-/lisp + /usr/local/lib/xemacs-/ ; binaries emacs may run + + +*** X Resources +--------------- + +(Note: This section is copied verbatim from the XEmacs Reference Manual.) + + The Emacs resources are generally set per-frame. Each Emacs frame +can have its own name or the same name as another, depending on the +name passed to the `make-frame' function. + + You can specify resources for all frames with the syntax: + + Emacs*parameter: value + +or + + Emacs*EmacsFrame.parameter:value + +You can specify resources for a particular frame with the syntax: + + Emacs*FRAME-NAME.parameter: value + + +**** Geometry Resources +----------------------- + + To make the default size of all Emacs frames be 80 columns by 55 +lines, do this: + + Emacs*EmacsFrame.geometry: 80x55 + +To set the geometry of a particular frame named `fred', do this: + + Emacs*fred.geometry: 80x55 + +Important! Do not use the following syntax: + + Emacs*geometry: 80x55 + +You should never use `*geometry' with any X application. It does not +say "make the geometry of Emacs be 80 columns by 55 lines." It really +says, "make Emacs and all subwindows thereof be 80x55 in whatever units +they care to measure in." In particular, that is both telling the +Emacs text pane to be 80x55 in characters, and telling the menubar pane +to be 80x55 pixels, which is surely not what you want. + + As a special case, this geometry specification also works (and sets +the default size of all Emacs frames to 80 columns by 55 lines): + + Emacs.geometry: 80x55 + +since that is the syntax used with most other applications (since most +other applications have only one top-level window, unlike Emacs). In +general, however, the top-level shell (the unmapped ApplicationShell +widget named `Emacs' that is the parent of the shell widgets that +actually manage the individual frames) does not have any interesting +resources on it, and you should set the resources on the frames instead. + + The `-geometry' command-line argument sets only the geometry of the +initial frame created by Emacs. + + A more complete explanation of geometry-handling is + + * The `-geometry' command-line option sets the `Emacs.geometry' + resource, that is, the geometry of the ApplicationShell. + + * For the first frame created, the size of the frame is taken from + the ApplicationShell if it is specified, otherwise from the + geometry of the frame. + + * For subsequent frames, the order is reversed: First the frame, and + then the ApplicationShell. + + * For the first frame created, the position of the frame is taken + from the ApplicationShell (`Emacs.geometry') if it is specified, + otherwise from the geometry of the frame. + + * For subsequent frames, the position is taken only from the frame, + and never from the ApplicationShell. + + This is rather complicated, but it does seem to provide the most +intuitive behavior with respect to the default sizes and positions of +frames created in various ways. + + +**** Iconic Resources +--------------------- + + Analogous to `-geometry', the `-iconic' command-line option sets the +iconic flag of the ApplicationShell (`Emacs.iconic') and always applies +to the first frame created regardless of its name. However, it is +possible to set the iconic flag on particular frames (by name) by using +the `Emacs*FRAME-NAME.iconic' resource. + + +**** Resource List +------------------ + + Emacs frames accept the following resources: + +`geometry' (class `Geometry'): string + Initial geometry for the frame. *Note Geometry Resources:: for a + complete discussion of how this works. + +`iconic' (class `Iconic'): boolean + Whether this frame should appear in the iconified state. + +`internalBorderWidth' (class `InternalBorderWidth'): int + How many blank pixels to leave between the text and the edge of the + window. + +`interline' (class `Interline'): int + How many pixels to leave between each line (may not be + implemented). + +`menubar' (class `Menubar'): boolean + Whether newly-created frames should initially have a menubar. Set + to true by default. + +`initiallyUnmapped' (class `InitiallyUnmapped'): boolean + Whether XEmacs should leave the initial frame unmapped when it + starts up. This is useful if you are starting XEmacs as a server + (e.g. in conjunction with gnuserv or the external client widget). + You can also control this with the `-unmapped' command-line option. + +`barCursor' (class `BarColor'): boolean + Whether the cursor should be displayed as a bar, or the + traditional box. + +`textPointer' (class `Cursor'): cursor-name + The cursor to use when the mouse is over text. This resource is + used to initialize the variable `x-pointer-shape'. + +`selectionPointer' (class `Cursor'): cursor-name + The cursor to use when the mouse is over a selectable text region + (an extent with the `highlight' property; for example, an Info + cross-reference). This resource is used to initialize the variable + `x-selection-pointer-shape'. + +`spacePointer' (class `Cursor'): cursor-name + The cursor to use when the mouse is over a blank space in a buffer + (that is, after the end of a line or after the end-of-file). This + resource is used to initialize the variable + `x-nontext-pointer-shape'. + +`modeLinePointer' (class `Cursor'): cursor-name + The cursor to use when the mouse is over a mode line. This + resource is used to initialize the variable `x-mode-pointer-shape'. + +`gcPointer' (class `Cursor'): cursor-name + The cursor to display when a garbage-collection is in progress. + This resource is used to initialize the variable + `x-gc-pointer-shape'. + +`scrollbarPointer' (class `Cursor'): cursor-name + The cursor to use when the mouse is over the scrollbar. This + resource is used to initialize the variable + `x-scrollbar-pointer-shape'. + +`pointerColor' (class `Foreground'): color-name +`pointerBackground' (class `Background'): color-name + The foreground and background colors of the mouse cursor. These + resources are used to initialize the variables + `x-pointer-foreground-color' and `x-pointer-background-color'. + +`scrollBarWidth' (class `ScrollBarWidth'): integer + How wide the vertical scrollbars should be, in pixels; 0 means no + vertical scrollbars. You can also use a resource specification of + the form `*scrollbar.width', or the usual toolkit scrollbar + resources: `*XmScrollBar.width' (Motif), `*XlwScrollBar.width' + (Lucid), or `*Scrollbar.thickness' (Athena). We don't recommend + that you use the toolkit resources, though, because they're + dependent on how exactly your particular build of XEmacs was + configured. + +`scrollBarHeight' (class `ScrollBarHeight'): integer + How high the horizontal scrollbars should be, in pixels; 0 means no + horizontal scrollbars. You can also use a resource specification + of the form `*scrollbar.height', or the usual toolkit scrollbar + resources: `*XmScrollBar.height' (Motif), `*XlwScrollBar.height' + (Lucid), or `*Scrollbar.thickness' (Athena). We don't recommend + that you use the toolkit resources, though, because they're + dependent on how exactly your particular build of XEmacs was + configured. + +`scrollBarPlacement' (class `ScrollBarPlacement'): string + Where the horizontal and vertical scrollbars should be positioned. + This should be one of the four strings `bottom-left', + `bottom-right', `top-left', and `top-right'. Default is + `bottom-right' for the Motif and Lucid scrollbars and + `bottom-left' for the Athena scrollbars. + +`topToolBarHeight' (class `TopToolBarHeight'): integer +`bottomToolBarHeight' (class `BottomToolBarHeight'): integer +`leftToolBarWidth' (class `LeftToolBarWidth'): integer +`rightToolBarWidth' (class `RightToolBarWidth'): integer + Height and width of the four possible toolbars. + +`topToolBarShadowColor' (class `TopToolBarShadowColor'): color-name +`bottomToolBarShadowColor' (class `BottomToolBarShadowColor'): color-name + Color of the top and bottom shadows for the toolbars. NOTE: These + resources do *not* have anything to do with the top and bottom + toolbars (i.e. the toolbars at the top and bottom of the frame)! + Rather, they affect the top and bottom shadows around the edges of + all four kinds of toolbars. + +`topToolBarShadowPixmap' (class `TopToolBarShadowPixmap'): pixmap-name +`bottomToolBarShadowPixmap' (class `BottomToolBarShadowPixmap'): pixmap-name + Pixmap of the top and bottom shadows for the toolbars. If set, + these resources override the corresponding color resources. NOTE: + These resources do *not* have anything to do with the top and + bottom toolbars (i.e. the toolbars at the top and bottom of the + frame)! Rather, they affect the top and bottom shadows around the + edges of all four kinds of toolbars. + +`toolBarShadowThickness' (class `ToolBarShadowThickness'): integer + Thickness of the shadows around the toolbars, in pixels. + +`visualBell' (class `VisualBell'): boolean + Whether XEmacs should flash the screen rather than making an + audible beep. + +`bellVolume' (class `BellVolume'): integer + Volume of the audible beep. + +`useBackingStore' (class `UseBackingStore'): boolean + Whether XEmacs should set the backing-store attribute of the X + windows it creates. This increases the memory usage of the X + server but decreases the amount of X traffic necessary to update + the screen, and is useful when the connection to the X server goes + over a low-bandwidth line such as a modem connection. + + +**** Face Resources +------------------- + + The attributes of faces are also per-frame. They can be specified as: + + Emacs.FACE_NAME.parameter: value + + (*do not* use `Emacs*FACE_NAME...') + +or + + Emacs*FRAME_NAME.FACE_NAME.parameter: value + +Faces accept the following resources: + +`attributeFont' (class `AttributeFont'): font-name + The font of this face. + +`attributeForeground' (class `AttributeForeground'): color-name +`attributeBackground' (class `AttributeBackground'): color-name + The foreground and background colors of this face. + +`attributeBackgroundPixmap' (class `AttributeBackgroundPixmap'): file-name + The name of an XBM file (or XPM file, if your version of Emacs + supports XPM), to use as a background stipple. + +`attributeUnderline' (class `AttributeUnderline'): boolean + Whether text in this face should be underlined. + + All text is displayed in some face, defaulting to the face named +`default'. To set the font of normal text, use +`Emacs*default.attributeFont'. To set it in the frame named `fred', use +`Emacs*fred.default.attributeFont'. + + These are the names of the predefined faces: + +`default' + Everything inherits from this. + +`bold' + If this is not specified in the resource database, Emacs tries to + find a bold version of the font of the default face. + +`italic' + If this is not specified in the resource database, Emacs tries to + find an italic version of the font of the default face. + +`bold-italic' + If this is not specified in the resource database, Emacs tries to + find a bold-italic version of the font of the default face. + +`modeline' + This is the face that the modeline is displayed in. If not + specified in the resource database, it is determined from the + default face by reversing the foreground and background colors. + +`highlight' + This is the face that highlighted extents (for example, Info + cross-references and possible completions, when the mouse passes + over them) are displayed in. + +`left-margin' +`right-margin' + These are the faces that the left and right annotation margins are + displayed in. + +`zmacs-region' + This is the face that mouse selections are displayed in. + +`text-cursor' + This is the face that the cursor is displayed in. + +`isearch' + This is the face that the matched text being searched for is + displayed in. + +`info-node' + This is the face of info menu items. If unspecified, it is copied + from `bold-italic'. + +`info-xref' + This is the face of info cross-references. If unspecified, it is + copied from `bold'. (Note that, when the mouse passes over a + cross-reference, the cross-reference's face is determined from a + combination of the `info-xref' and `highlight' faces.) + + Other packages might define their own faces; to see a list of all +faces, use any of the interactive face-manipulation commands such as +`set-face-font' and type `?' when you are prompted for the name of a +face. + + If the `bold', `italic', and `bold-italic' faces are not specified +in the resource database, then XEmacs attempts to derive them from the +font of the default face. It can only succeed at this if you have +specified the default font using the XLFD (X Logical Font Description) +format, which looks like + + *-courier-medium-r-*-*-*-120-*-*-*-*-*-* + +If you use any of the other, less strict font name formats, some of +which look like + + lucidasanstypewriter-12 + fixed + 9x13 + + then XEmacs won't be able to guess the names of the bold and italic +versions. All X fonts can be referred to via XLFD-style names, so you +should use those forms. See the man pages for `X(1)', `xlsfonts(1)', +and `xfontsel(1)'. + + +**** Widgets +------------ + + There are several structural widgets between the terminal EmacsFrame +widget and the top level ApplicationShell; the exact names and types of +these widgets change from release to release (for example, they changed +in 19.9, 19.10, 19.12, and 19.13) and are subject to further change in +the future, so you should avoid mentioning them in your resource database. +The above-mentioned syntaxes should be forward-compatible. As of 19.14, +the exact widget hierarchy is as follows: + + INVOCATION-NAME "shell" "container" FRAME-NAME + x-emacs-application-class "TopLevelEmacsShell" "EmacsManager" "EmacsFrame" + +(for normal frames) + +or + + INVOCATION-NAME "shell" "container" FRAME-NAME + x-emacs-application-class "TransientEmacsShell" "EmacsManager" "EmacsFrame" + +(for popup/dialog-box frames) + +where INVOCATION-NAME is the terminal component of the name of the +XEmacs executable (usually `xemacs'), and `x-emacs-application-class' +is generally `Emacs'. + + +**** Menubar Resources +---------------------- + + As the menubar is implemented as a widget which is not a part of +XEmacs proper, it does not use the face mechanism for specifying fonts +and colors: It uses whatever resources are appropriate to the type of +widget which is used to implement it. + + If Emacs was compiled to use only the Motif-lookalike menu widgets, +then one way to specify the font of the menubar would be + + Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-* + + If the Motif library is being used, then one would have to use + + Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-* + + because the Motif library uses the `fontList' resource name instead +of `font', which has subtly different semantics. + + The same is true of the scrollbars: They accept whichever resources +are appropriate for the toolkit in use. + + +*** Source Code Highlighting +---------------------------- + +It's possible to have your buffers "decorated" with fonts or colors +indicating syntactic structures (such as strings, comments, function names, +"reserved words", etc.). In XEmacs, the preferred way to do this is with +font-lock-mode; activate it by adding the following code to your .emacs file: + + (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock) + (add-hook 'c-mode-hook 'turn-on-font-lock) + (add-hook 'c++-mode-hook 'turn-on-font-lock) + (add-hook 'dired-mode-hook 'turn-on-font-lock) + ...etc... + +To customize it, see the descriptions of the function `font-lock-mode' and +the variables `font-lock-keywords', `c-font-lock-keywords', etc. + +There exist several other source code highlighting packages, but font-lock +does one thing that most others don't do: highlights as you type new text; +and one thing that no others do: bases part of its decoration on the +syntax table of the major mode. Font-lock has C-level support to do this +efficiently, so it should also be significantly faster than the others. + +If there's something that another highlighting package does that you can't +make font-lock do, let us know. We would prefer to consolidate all of the +desired functionality into one package rather than ship several different +packages which do essentially the same thing in different ways. + + +** Differences Between XEmacs and Emacs 18 +========================================== + +Auto-configure support has been added, so it should be fairly easy to compile +XEmacs on different systems. If you have any problems or feedback about +compiling on your system, please let us know. + +We have reimplemented the basic input model in a more general way; instead of +X input being a special-case of the normal ASCII input stream, XEmacs has a +concept of "input events", and ASCII characters are a subset of that. The +events that XEmacs knows about are not X events, but are a generalization of +them, so that XEmacs can eventually be ported to different window systems. + +We have reimplemented keymaps so that sequences of events can be stored into +them instead of just ASCII codes; it is possible to, for example, bind +different commands to each of the chords Control-h, Control-H, Backspace, +Control-Backspace, and Super-Shift-Backspace. Key bindings, function key +bindings, and mouse bindings live in the same keymaps. + +Input and display of all ISO-8859-1 characters is supported. + +You can have multiple X windows ("frames" in XEmacs terminology). + +XEmacs has objects called "extents" and "faces", which are roughly +analogous to Epoch's "buttons," "zones," and "styles." An extent is a +region of text (a start position and an end position) and a face is a +collection of textual attributes like fonts and colors. Every extent +is displayed in some "face", so changing the properties of a face +immediately updates the display of all associated extents. Faces can +be frame-local: you can have a region of text which displays with +completely different attributes when its buffer is viewed from a +different X window. + +The display attributes of faces may be specified either in lisp or through +the X resource manager. + +Pixmaps of arbitrary size can be embedded in a buffer. + +Variable width fonts work. + +The height of a line is the height of the tallest font on that line, instead +of all lines having the same height. + +XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which +makes it be a more well-behaved X citizen (and also improves +portability). A result of this is that it is possible to include +other Xt "Widgets" in the XEmacs window. Also, XEmacs understands the +standard Xt command-line arguments. + +XEmacs understands the X11 "Selection" mechanism; it's possible to define +and customize selection converter functions and new selection types from +Emacs Lisp, without having to recompile XEmacs. + +XEmacs provides support for ToolTalk on systems that have it. + +XEmacs supports the Zmacs/Lispm style of region highlighting, where the +region between the point and mark is highlighted when in its "active" state. + +XEmacs has a menubar, whose contents are customizable from emacs-lisp. +This menubar looks Motif-ish, but does not require Motif. If you already +own Motif, however, you can configure XEmacs to use a *real* Motif menubar +instead. + +XEmacs can ask questions using popup dialog boxes. Any command executed from +a menu will ask yes/no questions with dialog boxes, while commands executed +via the keyboard will use the minibuffer. + +XEmacs has vertical and horizontal scrollbars. + +The initial load-path is computed at run-time, instead of at compile-time. +This means that if you move the XEmacs executable and associated directories +to somewhere else, you don't have to recompile anything. + +You can specify what the title of the XEmacs windows and icons should be +with the variables `frame-title-format' and `frame-icon-title-format', +which have the same syntax as `mode-line-format'. + +XEmacs now supports floating-point numbers. + +XEmacs now knows about timers directly, instead of them being simulated by +a subprocess. + +XEmacs understands truenames, and can be configured to notice when you are +visiting two names of the same file. See the variables find-file-use-truenames +and find-file-compare-truenames. + +If you're running on a machine with audio hardware, you can specify sound +files for XEmacs to play instead of the default X beep. See the documentation +of the function load-sound-file and the variable sound-alist. + +An XEmacs frame can be placed within an "external client widget" managed by +another application. This allows an application to use an XEmacs frame as its +text pane rather than the standard Text widget that is provided with Motif or +Athena. XEmacs supports Motif applications, generic Xt (e.g. Athena) +applications, and raw Xlib applications. + +Random changes to the emacs-lisp library: (some of this was not written by +us, but is included because it's free software and we think it's good stuff) + + - there is a new optimizing byte-compiler + - there is a new abbrev-based mail-alias mechanism + - the -*- line can contain local-variable settings + - there is a new TAGS package + - there is a new VI-emulation mode (viper) + - there is a new implementation of Dired + - there is a new implementation of Isearch + - the VM package for reading mail is provided + - the W3 package for browsing the World Wide Web hypertext information + system is provided + - the Hyperbole package, a programmable information management and + hypertext system + - the OO-Browser package, a multi-language object-oriented browser + +There are many more specifics in the "Miscellaneous Changes" section, below. + +The online Emacs Manual and Emacs-Lisp Manual are now both relatively +up-to-date. + +** Major Differences Between 19.13 and 19.14 +============================================ + +XEmacs has a new address! The canonical ftp site is now +ftp.xemacs.org:/pub/xemacs and the Web page is now at +http://www.xemacs.org/. All mailing lists now have @xemacs.org +addresses. For the time being the @cs.uiuc.edu addresses will +continue to function. + +This is a major new release. Many features have been added, as well +as many bugs fixed. The Motif menubar has still _NOT_ been fixed for +19.14. You should use the Lucid menubar instead. + + + +Major user-visible changes: +--------------------------- + +-- Color support in TTY mode is provided. You have to have a TTY capable + of displaying them, such as color xterm or the console under Linux. + If your terminal type supports colors (e.g. `xterm-color'), XEmacs + will automatically notice this and start using color. + +-- blink-cursor-mode enables a blinking text cursor. There is a + menubar option for this also. + +-- auto-show-mode is turned on by default; this means that XEmacs + will automatically scroll a window horizontally as necessary to + keep point in view. + +-- a file dialog box is provided and will be used whenever you + are prompted for a filename as a result of a menubar selection. + +-- XEmacs can be compiled with built-in GIF, JPEG, and PNG support. + The GIF libraries are supplied with XEmacs; for JPEG and PNG, + you have to obtain the appropriate libraries (this is well- + documented). This makes image display much easier and faster under + W3 (the web browser) and TM (adds MIME support to VM and GNUS; + not yet included with XEmacs but will be in 19.15). + +-- XEmacs provides a really nice mode (PSGML with "Wing improvements") + for editing HTML and other SGML documents. It parses the document, + and as a result it does proper indentation, can show you the context + you're in, the allowed tags at a particular position, etc. + +-- XEmacs comes standard with modes for editing Java and VRML code, + including font-lock support. + +-- GNUS 5.2 comes standard with XEmacs. + +-- You can now embed colors in the modeline, with different sections + of the modeline responding appropriately to various mouse gestures: + For example, clicking on the "read-only" indicator toggles the + read-only status of a buffer, and clicking on the buffer name + cycles to the next buffer. Pressing button3 on these areas brings + up a popup menu of appropriate commands. + +-- There is a much nicer mode for completion lists and such. + At the minibuffer prompt, if you hit page-up or Meta-V, the completion + buffer will be displayed (if it wasn't already), you're moved into + it, and can move around and select filenames using the arrow keys + and the return key. Rather than a cursor, a filename is highlighted, + and the arrow keys change which filename is highlighted. + +-- The edit-faces subsystem has also been much improved, in somewhat + similar ways to the completion list improvements. + +-- Many improvements were made to the multi-device support. + We now provide an auxiliary utility called "gnuattach" that + lets you connect to an existing XEmacs process and display + a TTY frame on the current TTY connection, and commands + `make-frame-on-display' (with a corresponding menubar entry) + and `make-frame-on-tty' for more easily creating frames on + new TTY or X connections. + +-- We have incorporated nearly all of the functionality of GNU Emacs + 19.30 into XEmacs. This includes support for lazy-loaded + byte code and documentation strings, improved paragraph filling, + better support for margins within documents, v19 regular expression + routines (including caching of compiled regexps), etc. + +-- In accordance with GNU Emacs 19.30, the following key binding + changes have been made: + + C-x ESC -> C-x ESC ESC + ESC ESC -> ESC : + ESC ESC ESC is "abort anything" (keyboard-escape-quit). + +-- All major packages have been updated to their latest-released + versions. + +-- XEmacs now gracefully handles a full colormap (such as typically + results when running Netscape). The nearest available color + is automatically substituted. + +-- Many bug fixes to the subprocess/PTY code, ps-print, menubar + functions, `set-text-properties', DEC Alpha support, toolbar + resizing (the "phantom VM toolbar" bug), and lots and lots + of other things were made. + +-- The ncurses library (a replacement for curses, found especially + under Linux) is supported, and will be automatically used + if it can be found. + +-- You can now undo in the minibuffer. + +-- Surrogate minibuffers now work. These are also sometimes referred + to as "global" minibuffers. + +-- font-lock has been merged with GNU Emacs 19.30, improved defaults + have been added, and changes have been made to the way it is + configured. + +-- Many, many modes have menubar entries for them. + +-- `recover-session' lets you recover whatever files can be recovered + after your XEmacs process has died unexpectedly. + +-- C-h k followed by a toolbar button press correctly reports + the binding of the toolbar button. + +-- `function-key-map', `key-translation-map', and `keyboard-translate-table' + are now correctly implemented. + +-- `show-message-log' (and its menubar entry under Edit) have been + removed; instead use `view-lossage' (and its menubar entry under + Help). + +-- There is a standard menubar entry for specifying which browser + (Netscape, W3, Mosaic, etc.) to use when dispatching URL's + in mail, Usenet news, etc. + +-- Improved native sound support under Linux. + +-- Lots of other things we forgot to mention. + + + +Significant Lisp-level changes: +------------------------------- + +-- Many improvements to the E-Lisp documentation have been made; + it should now be up-to-date and complete in nearly all cases. + +-- XEmacs has extensive documentation on its internals, for + would-be C hackers. + +-- Common-Lisp support (the CL package) is now dumped standard + into XEmacs. No more need for (require 'cl) or anything + like that. + +-- Full support for extents and text properties over strings is + provided. + +-- The extent properties `start-open', `end-open', `start-closed', + and `end-closed' now work correctly w.r.t. text properties. + +-- The `face' property of extents and text properties can now + be a list. + +-- The `mouse-face' property from GNU Emacs is now supported. + It supersedes the `highlight' property. + +-- `enriched' and `facemenu' packages from GNU Emacs have been ported. + +-- New functions for easier creation of dialog boxes: + `get-dialog-box-response', `message-box', and `message-or-box'. + +-- `function-min-args' and `function-max-args' allow you to determine + the minimum and maximum allowed arguments for any type of + function (i.e. subr, lambda expression, byte-compiled function, etc.). + +-- Some C-level support for doing E-Lisp profiling is provided. + See `start-profiling', `stop-profiling', and + `pretty-print-profiling-info'. + +-- `current-process-time' reports the user, system, and real times + for the currently running XEmacs process. + +-- `next-window', `previous-window', `next-frame', `previous-frame', + `other-window', `get-lru-window', etc. have an extra device + argument that allows you to restrict which devices it includes + (normally all devices). Some functions that incorrectly ignored + frames on different devices (e.g. C-x 0) are fixed. + +-- new functions `run-hook-with-args-until-success', + `run-hook-with-args-until-failure'. + +-- generalized facility for local vs. global hooks. See `make-local-hook', + `add-hook'. + +-- New functions for querying the window tree: `frame-leftmost-window', + `frame-rightmost-window', `window-first-hchild', `window-first-vchild', + `window-next-child', `window-previous-child', and `window-parent'. + +-- Epoch support works. This gets you direct access to some X events + and objects (e.g. properties and property-notify events). + +-- The multi-device support has been majorly revamped. There is now + a new concept of "consoles" (devices grouped together under a + common keyboard/mouse), console-local variables, and a generalized + concept of device/console connection. + +-- `display-buffer' synched with GNU Emacs 19.30, giving you lots of + wondrous cruft such as + -- unsplittable frames + -- pop-up-frames, pop-up-frame-function + -- special-display-buffer-names, special-display-regexps, + special-display-function + -- same-window-buffer-names, same-window-regexps + +-- XEmacs has support for accessing DBM- and/or DB-format databases, + provided that you have the appropriate libraries on your system. + +-- There is a new font style: "strikethru" fonts. + +-- New data type "weak list", which is a list with special + garbage-collection properties, similar to weak hash tables. + +-- `set-face-parent' makes one face inherit all properties from another. + +-- The junky frame parameters mechanism has been revamped as + frame properties, which a standard property-list interface. + +-- Lots and lots of functions for working with property lists have + been added. + +-- New functions `push-window-configuration', `pop-window-configuration', + `unpop-window-configuration' for maintain a stack of window + configurations. + +-- Many fixups to the glyph code; icons and mouse pointers are now + properly merged into the glyph mechanism. + +-- `set-specifier' works more sensibly, like `set-face-property'. + +-- Many new specifiers for individually controlling toolbar height/width + and visibility and text cursor visibility. + +-- New face `text-cursor' controls the colors of the text cursor. + +-- Many new variables for turning on debug information about the + inner workings of XEmacs. + +-- Hash tables can now compare their keys using `equal' or `eql' + as well as `eq'. + +-- Other things too numerous to mention. + + + +Significant configuration/build changes: +---------------------------------------- + +-- You can disable TTY support, toolbar support, scrollbar support, + menubar support, and/or dialog box support at configure time + to save memory. + +-- New configure option `--extra-verbose' shows the diagnostic + output from feature testing; this should help track down + problems with incorrect feature detection. + +-- `dont-have-xmu' is now `with-xmu', with the reversed sense. + (It defaults to `yes'.) + +-- `with-mocklisp' lets you add Mocklisp support if you really + need this. + +-- `with-term' for adding TERM support for Linux users. + + + +** Major Differences Between 19.12 and 19.13 +============================================ + +This is primarily a bug-fix release. Lots of bugs have been fixed. +Hopefully only a few have been introduced. The most noteworthy bug +fixes are: + + -- There should be no more problems connecting XEmacs to an X + server over SLIP or other slow connections. + -- Periodic crashes when using the Buffers menu should be gone. + -- etags would sometimes erase the current buffer; it doesn't + any more. + -- XEmacs will correctly exit if the X server dies. + -- uniconified frames are displayed properly under TVTWM. + -- Breakage in `add-menu-item' / `add-menu-button' is fixed. + +The Motif menubar has _NOT_ been fixed for 19.13. You should use the +Lucid menubar instead. + +Multi-device support should now be working properly. You can now open +an X device after having started out on a TTY device. + +Background pixmaps now work. See `set-face-background-pixmap'. + +Echo area messages are now saved to a buffer, " *Message Log*". To +see this buffer, use the command `show-message-log'. It is possible +to filter the message which are actually included by modifying the +variables `log-message-ignore-regexps' and `log-message-ignore-labels'. + +You can now control which warnings you want to see. See +`display-warning-suppressed-classes' and friends. + +You can now set the default location of an "other window" from the +Options menu. + +"Save Options" now saves the state of all faces. + +You can choose which file "Save Options" writes into; see +`save-options-file'. + +XPM support is no longer required for the toolbar. + +The relocating allocator is now enabled by default whenever possible. +This allows buffer memory to be returned to the system when no longer +in use which helps keep XEmacs process size down. + +The ability to have captioned toolbars has been added. Currently only +the default toolbar actually has a captioned version provided. A new +specifier variable, `toolbar-buttons-captioned-p' controls whether the +toolbar is captioned. + +A copy of the XEmacs FAQ is now included and is available through info. + +The on-line E-Lisp reference manual has been significantly updated. + +There is now audio support under Linux. + +Modifier keys can now be sticky. This is controlled by the variable +`modifier-keys-are-sticky'. + +manual-entry should now work correctly under Irix with the penalty of +a longer startup time the first time it is invoked. If you are having +problems with this on another system try setting +`Manual-use-subdirectory-list' to t. + +make-tty-device no longer automatically creates the first frame. + +Rectangular regions now work correctly. + +ediff no longer sets synchronize-minibuffers to t unless you first set +ediff-synchronize-minibuffers + +keyboard-translate-table has been implemented. This means that the +`enable-flow-control' command for dealing with TTY connections that +filter out ^S and ^Q now works. + +You can now create frames that are initially unmapped and frames that +are "transient for another frame", meaning that they behave more like +dialog-box frames. + +Other E-Lisp changes: + +-- Specifier `menubar-visible-p' for controlling menubar visibility +-- Local command hooks should be set using `local-pre-command-hook' + and `local-post-command-hook' instead of making the global + equivalents be buffer-local. +-- `quit-char', `help-char', `meta-prefix-char' can be any key specifier + instead of just an integer. +-- new functions `add-async-timeout' and `disable-async-timeout'. + These let you create asynchronous timeouts, which are like + normal timeouts except that they're executed even during + running Lisp code. Use this with care! +-- `debug-on-error' and `stack-trace-on-error' now enter the debugger + only when an *unhandled* error occurs. If you want the old + behavior, use `debug-on-signal' and `stack-trace-on-signal'. +-- \U, \L, \u, \l, \E recognized specially in `replace-match'. + These are standard ex/perl commands for changing the case of + replaced text. +-- New function event-matches-key-specifier-p. This provides + a clean way of comparing keypress events with key specifiers + such as 65, (shift home), etc. without having to resort + to ugly `character-to-event' / `event-to-character' hacks. +-- New function `add-to-list' +-- New Common-Lisp functions `some', `every', `notevery', `notany', + `adjoin', `union', `intersection', `set-difference', + `set-exclusive-or', `subsetp' +-- `remove-face-property' provides a clean way of removing a + face property. + +Many of the Emacs Lisp packages have been updated. Some of the new +Emacs Lisp packages --- + +ada-mode: major mode for editing Ada source + +arc-mode: simple editing of archives + +auto-show-mode: automatically scrolls horizontally to keep point on-screen + +completion: dynamic word completion mode + +dabbrev: the dynamic abbrev package has been rewritten and is much + more powerful -- e.g. it searches in other buffers as well + as the current one + +easymenu: menu support package + +live-icon: makes frame icons represent the current frame contents + +mailcrypt 3.2: mail encryption with PGP; included but v2.4 is still + the default + +two-column: for editing two-column text + + +** Major Differences Between 19.11 and 19.12 +============================================ + +This is a huge new release. Almost every aspect of XEmacs has been changed +at least somewhat. The highlights are: + +-- TTY support (includes face support) +-- new redisplay engine; should be faster, less buggy, and more powerful +-- terminology change from "screen" to "frame" +-- built-in toolbar +-- toolbar support added to many packages +-- multiple device support (still in beta; improvements to come in + 19.13) +-- Purify used to ensure that there are no memory leaks or memory corruption + problems +-- horizontal and vertical scrollbars in all windows +-- new Lucid (i.e. look-alike Motif) scrollbar widget +-- stay-up menus in the Lucid (look-alike Motif) menubar widget +-- 3-d modeline +-- new extents engine; should be faster, less buggy, and more powerful +-- much more powerful control over faces +-- expanded menubar +-- more work on synching with GNU Emacs 19.28 +-- new packages: Hyperbole, OOBR (object browser), hm--html-menus, viper, + lazy-lock.el, ksh-mode.el, rsz-minibuf.el +-- package updates for all major packages +-- dynodump package for Solaris: provides proper undumping and portable + binaries across different OS versions and machine types +-- Greatly expanded concept of "glyphs" (pixmaps etc. in a buffer) +-- built-in support for displaying X-Faces, if the X-Face library is + available +-- built-in support for SOCKS if the SOCKS library is available +-- graceful behavior when the colormap is full (e.g. Netscape ate + all the colors) +-- built-in MD5 (secure hashing function) support + + +More specific information: + +*** TTY Support +--------------- + +The long-awaited TTY support is now available. XEmacs will start up +in TTY mode (using the tty you started XEmacs from) if the DISPLAY +environment variable is not set or if you use the `-nw' option. + +Faces are available on TTY's. For a demonstration, try editing a C +file and turning on font-lock-mode. + +You can also connect to additional TTY's using `make-tty-device', +whether your first frame was a TTY or an X window. This ability is +not yet completely finished. + +The full event-loop capabilities (processes, timeouts, etc.) are +available on TTY's. + + + +*** New Redisplay Engine +------------------------ + +The redisplay engine has been rewritten to improve its efficiency and +to increase its functionality. It should also be significantly more +bug-free than the previous redisplay engine. + +A line that is not big enough to display at the bottom of the window +will normally be clipped (so that it is partially visible) rather than +not displayed at all. The variable `pixel-vertical-clip-threshold' +can be used to control the minimum space that must be available for a +line to be clipped rather than not displayed at all. + +Tabs are displayed in such a way that things line up fairly well even +in the presence of variable-width fonts and/or lines with +multiply-sized fonts. + +Display tables are implemented, through the specifier variable +`current-display-table'. They can be buffer-local, window-local, +frame-local, or device-local. See below for info about specifiers. + + + +*** Toolbar +----------- + +There is now built-in support for a toolbar. A sample toolbar is +visible by default at the top of the frame. Four separate toolbars +can be configured (at the top, bottom, left, and right of the frame). +The toolbar specification is similar to the menubar specification. +The up, down, and disabled glyphs of a toolbar button can be +separately controlled. Explanatory text can be echoed in the echo +area when the mouse passes over a toolbar button. The size, contents, +and visibility of the various toolbars can be controlled on a +per-buffer, per-window, per-frame, and per-device basis through the +use of specifiers. See the chapter on toolbars in the Lisp Reference +Manual (included with XEmacs) for more information. + +The toolbar color and shadow thicknesses are currently controlled only +through `modify-frame-parameters' and through X resources. We are +planning on making these controllable through specifiers as well. (Our +hope is to make `modify-frame-parameters' obsolete, as it is a clunky +and not very powerful mechanism.) + +Info, GNUS, VM, W3, and various other packages include custom toolbars +with them. + + + +*** Menubar +----------- + +Stay-up menus are implemented in the look-alike Motif menubar. + +The default menubar has been expanded to include most commonly-used +functions in XEmacs. + +The options menu has been greatly expanded to include many more +options. + +The menubar specification format has been greatly expanded. Per-menu +activation hooks can be specified through the :filter keyword (thus +obsoleting `activate-menubar-hook'); this allows for fast response +time when you have a large and complex menu. You can dynamically +control whether menu items are present through the :included and +:config keywords. (The latter keyword implements a simple menubar +configuration scheme, in conjunction with the variable +`menubar-configuration'.) Many different menu-item separators (single +or double line; solid or dashed; flat, etched-in, or etched-out) are +available. See the chapter on menus in the Lisp Reference Manual for +more information about all of this. + +New functions `add-submenu' and `add-menu-button' are available. +These supersede the older `add-menu' and `add-menu-item' functions, +and provide a more powerful and consistent interface. + +New convenience functions for popping up the part or all of the +menubar in a pop-up menu are available: `popup-menubar-menu' and +`popup-buffer-menu'. + +Menus are now incrementally constructed greatly improving menubar +response time. + + + +*** Scrollbars +-------------- + +A look-alike Motif scrollbar is now included with XEmacs. No longer +will you have to suffer with ugly Athena scrollbars. + +Windows can now have horizontal scrollbars. Normally they are visible +when the window's buffer is set to truncate lines rather than wrap +them (e.g. `(setq truncate-lines t)'). + +All windows, not only the right-most ones, can have vertical +scrollbars. + +The functions to change a scrollbar's width have been superseded by +the specifier variables `scrollbar-width' and `scrollbar-height'. +This allows their values to be controlled on a buffer-local, +window-local, frame-local, and device-local basis. See below. + +The scrollbars interact better with the event loop (for example, you +can type `C-h k', do a scrollbar action, and see a description of this +scrollbar action printed as if you had pressed a key sequence or +selected a menu item). + +The scrollbar behavior can be reprogrammed, by advising the +`scrollbar-*' functions. + + + +*** Key Bindings +---------------- + +The oft-used function `goto-line' now has its own binding: M-g. + +New bindings are available for scrolling the "other" window: M-next, +M-prior, M-home, M-end. (On many keyboards, `next' and `prior' +labelled `PgUp' and `PgDn'.) + +You can reactivate a deactivated Zmacs region, without having any +other effects, with the binding M-C-z. + +The bindings `M-u', `M-l', and `M-c' now work on the region (if a +region is active) or work on a word, as before. + +Shift-Control-G forces a "critical quit", which drops immediately into +the debugger; see below. + + + +*** Modeline +------------ + +The modeline can now have a 3-d look; this is enabled by default. The +specifier variable `modeline-shadow-thickness' controls the size. + +The modeline can now be turned off on a per-buffer, per-window, +per-frame, or per-device basis. The specifier variable +`has-modeline-p' controls whether the modeline is visible. See below +for details about the vastly powerful specifier mechanism. + +The modeline functions and variables have been renamed to be +`*-modeline-*' rather than `*-mode-line-*'. Aliases are provided for +all the old names. + +Variable width fonts now work correctly when used in the modeline. + + + +*** Minibuffer, Echo Area +------------------------- + +The minibuffer is no longer constrained to be one line high. The +package rsz-minibuf.el is included to automatically resize the +minibuffer when its contents are too big; enable this with +`resize-minibuffer-mode'. + +The echo area is now a true buffer, called " *Echo Area*". This +allows you to customize the echo area behavior through +before-change-functions and after-change-functions. + + + +*** Specifiers +-------------- + +XEmacs has a new concept called "specifiers", used to configure most +display options (toolbar size and contents, scrollbar size, face +properties, modeline visibility and shadow-thickness, glyphs, display +tables, etc.). We are planning on converting all display +characteristics to use specifiers, and obsoleting the clunky functions +`frame-parameters' and `modify-frame-parameters'. Specifically: + +-- You can specify values (called "instantiators") for particular + "locales" (i.e. buffers, windows, frames, devices, or a global value). + When determining what the actual value (or "instance") of a specifier + is, the specifications that are provided are searched from most + specific (i.e. buffer-local) to most general (i.e. global), looking + for a matching one. + +-- You can specify multiple instantiators for a particular locale. + For example, when specifying what the foreground color of a face + is in a particular buffer, you could specify two instantiators: + "dark sea green" and "green". The color would then be dark sea + green on devices that recognize that color, and green on other + devices. You have effectively provided a fallback value to make + sure you get reasonable behavior on all devices. + +-- You can add one or more tags to an instantiator, where a tag + is a symbol that has been previously registered with XEmacs. + This allows you to identify your instantiators for later + removal in a way that won't interfere with other applications + using the same specifier. Furthermore, particular tags can + be restricted to match only particular sorts of devices. + Any tagged instantiator will be ignored if the device over which + it is being instanced does not match any of its tags. This + allows you, for example, to restrict an instantiator to a + particular device type (X or TTY) and/or class (color, grayscale, + or mono). (You might want to specify, for example, that a + particular face is displayed in green on color devices and is + underlined on mono devices.) + +-- A full API is provided for manipulating specifiers, and full + documentation is provided in the Lisp Reference Manual. + + + +*** Basic Lisp Stuff +-------------------- + +Common-Lisp backquote syntax is recognized. For example, the old +expression + +(` (a b (, c))) + +can now be written + +`(a b ,c) + +The old backquote syntax is still accepted. + +The new function `type-of' returns a symbol describing the type of a +Lisp object (`integer', `string', `symbol', etc.) + +Symbols beginning with a colon (called "keywords") are treated +specially in that they are automatically made self-evaluating when +they are interned into `obarray'. The new function `keywordp' returns +whether a symbol begins with a colon. + +`get', `put', and `remprop' have been generalized to allow you to set +and retrieve properties on many different kinds of objects: symbols, +strings, faces, glyphs, and extents (for extents, however, this is not +yet implemented). They are joined by a new function `object-props' +that returns all of the properties that have been set on an object. + +New functions `plists-eq' and `plists-equal' are provided for +comparing property lists (a property list is an alternating list +of keys and values). + +The Common-Lisp functions `caar', `cadr', `cdar', `cddr', `caaar', etc. +(up to four a's and/or d's), `first', `second', `third', etc. (up to +`tenth'), `last', `rest', and `endp' have been added, for more +convenient manipulation of lists. + +New function `mapvector' maps over a sequence and returns a vector +of the results, analogous to `mapcar'. + +New functions `rassoc', `remassoc', `remassq', `remrassoc', and +`remrassq' are provided for working with alists. + +New functions `defvaralias', `variable-alias' and `indirect-variable' +are provided for creating variable aliases. + +Strings have a modified-tick that is bumped every time a string +is modified in-place with `aset' or `fillarray'. This is retrieved +with the new function `string-modified-tick'. + +New macro `push' destructively adds an element to the beginning of a +list. New macro `pop' destructively removes and returns the first +element of a list. + + + +*** Buffers +----------- + +Most functions that operate on buffer text now take an optional BUFFER +argument, specifying which buffer they operate on. (Previously, they +always operated on the current buffer.) + +The new function `transpose-regions' is provided, ported from GNU +Emacs. + +The new function `save-current-buffer' works like `save-excursion' +but only saves the current buffer, not the location of point in +that buffer. + + + +*** Devices +----------- + +XEmacs has a new concept of "device", which is represents a particular +X display or TTY connection. `make-frame' has a new, optional device +parameter that allows you to specify which device the frame is to be +created on. + +Multiple simultaneous TTY and/or X connections may be made. The +specifier mechanism provides reasonable behavior of glyphs, faces, +etc. over heterogeneous device types and over devices whose individual +capabilities may vary. + +There is also a device type called "stream" that represents a STDIO +device that has no redisplay or cursor-motion capabilities, such as +the "glass terminal" that XEmacs uses when it is run noninteractively. +There is not all that much you can do with stream devices currently; +please let us know if there are good uses you can think of for this +capability. (For example, log files?) + +A new device API is provided. Functions are provided such as +`device-name' (the name of the device, which generally is based on the +X display or TTY file name), `device-type' (X, TTY, or stream), +`device-class' (color, grayscale, or mono), etc. See the Lisp +Reference Manual. + +Many functions have been extended to contain an additional, optional +device argument, where such an extension makes sense. In general, if +the argument is omitted, it is equivalent to specifying +`(selected-device)'. + +Many previous functions and variables are obsoleted in favor of the +device API. For example, `window-system' is obsoleted by +`device-type', and `x-color-display-p' and friends are obsoleted by +`device-class'. + +*** NOTE **: The obsolete variable `window-system' is going +to be deleted soon, probably in 19.14. Please correct all +your code to use `device-type'. + +*** INCOMPATIBLE CHANGE **: The function `x-display-visual-class' +returns different values from previous versions of XEmacs. + + + +*** Errors, Warnings, C-g +------------------------- + +There is a new warnings system implemented. Many warnings that were +formerly displayed in various ad-hoc ways (e.g. warnings about screwy +modifier mappings, messages about failures handling the mouse cursor +and errors in a gc-hook) have been regularized through this system. +The new function `warn' displays a warning before the next redisplay +(the actually display of the warning messages is accomplished through +`display-warning-buffer'). Both `warn' and `display-warning-buffer' +are Lisp functions (the C code calls out to them as necessary), and +thus you can customize the warning system. + +Under an X display, you can press Shift-Control-G to force a "critical +quit". This will immediately display a backtrace and pop you into the +debugger, regardless of the settings of `inhibit-quit' and +`debug-on-quit'. + +C-g now works properly even on systems that don't implement SIGIO or +for which SIGIO is broken (e.g. IRIX 5.3 and older versions of Linux). +In addition, the SIGIO support has been fixed for many systems on +which it didn't always work properly before (e.g. HPUX and Solaris). + + + +*** Events +---------- + +*** INCOMPATIBLE CHANGE **: Many event functions have been changed to +accept and return windows instead of frames. + +New function: `event-live-p', specifying whether `deallocate-event' +has been called on an event. + +The "menu event" type has been renamed to "misc-user event", and +encompasses scrollbar events as well as menu events. We are planning +on making it also encompass toolbar events in a future release. + +New functions are provided for determining whether an particular +sections of a frame: `event-over-border-p', `event-over-glyph-p', +`event-over-modeline-p', `event-over-text-area-p', and +`event-over-toolbar-p'. The old, kludgey methods of checking the +window-height, the internal-border-width, etc. are unreliable and +should not be used. + +New functions `event-window-x-pixel' and `event-window-y-pixel' are +provided for determining where in a particular window an event +happened. + +New functions `event-glyph-x-pixel' and `event-glyph-y-pixel' are +provided for determining where in a particular glyph an event +happened. + +New function `event-closest-point', which returns the closest buffer +position to the event even if the event did not occur over any text. + +New variable `unread-command-events', superseding the older +`unread-command-event'. + +Many event-loop bugs have been fixed. + + + +*** Extents +----------- + +The extent code has been largely rewritten. It should be faster and +more reliable. + +The text-property implementation has been greatly improved. + +Some new extent primitives are provided to return the position of the +next or previous property change in a buffer. + +Extents can now have a parent specified; then all of its properties +(except for the buffer it's in and its position in that buffer) come +from that extent. Hierarchies of such extents can be created. + +Extents now have a `detachable' property that controls what happens +(they either get detached or shrink down to zero-length) when their +text is deleted. Previously, such extents would always be detached. + +The `invisible' property on extents now works. + +`map-extents' has three additional parameters that provide more +control over which extents are mapped. + +`map-extents' deals better with changes made to extents in the +buffer being mapped over. + +A new function `mapcar-extents' (an alternative to `map-extents') has +been provided and should be easier to use than `map-extents'. + + + +*** Faces +--------- + +Faces can now be buffer-local, window-local, and device-local as well +as frame-local, and can be further restricted to a particular device +type or class. The way in which faces can be controlled is now based +on the general and powerful specifier mechanism; see above. + +The new function `set-face-property' generalizes `set-face-font', +`set-face-foreground', etc. and takes many new optional arguments, in +accordance with the new specifier mechanism. + +The new functions `face-property' and `face-property-instance' +generalize `face-font', `face-foreground', etc. and take many new +optional arguments, in accordance with the new specifier mechanism. +(`face-property' returns the value, if any, that was specified for a +particular locale, and `face-property-instance' returns the actual +value that will be used for display. See the section on specifiers.) + +The functions `face-font', `face-foreground', `face-background', +`set-face-font', `set-face-foreground', `set-face-background', +etc. are now convenience functions, trivially implemented using +`face-property' and `set-face-property' and take new optioanl +arguments in accordance with those functions. New convenience +functions `face-font-instance', `face-foreground-instance', +`face-background-instance', etc. are provided and are trivially +implemented using `face-property-instance'. + +Inheritance of face properties can now be specified. Each individual +face property can inherit differently from other properties, or not +inherit at all. + +You can set user-defined properties on faces using +`set-face-property'. + +You can create "temporary" faces, which are faces that disappear +when they are no longer in use. This is as opposed to normal +faces, which stay around forever. + +The function `make-face' takes a new optional argument specifying +whether a face should be permanent or temporary, and returns the +actual face object rather than the face symbol, as in previous +versions of XEmacs. + +The function `face-list' takes a new optional argument specifying +whether permanent, temporary, or both kinds of faces should be +returned. + +Faces have new TTY-specific properties: `highlight', `reverse', +`alternate', `blinking', and `dim'. + +Redisplay is smarter about dealing with face changes: changes to a +particular face no longer cause all frames to be cleared and +redisplayed. + +The Edit-Faces package is provided for interactively changing faces. +A menu item on the options menu is provided for this. + +New functions are provided for retrieving the ascent, descent, height, +and width of a character in a particular face. + + + +*** Fonts, Colors +----------------- + +*** INCOMPATIBLE CHANGE **: The old "font" and "pixel" objects are gone. +In place are new objects "font specifier", "font instance", "color +specifier", and "color instance". Functions `font-name', `pixel-name' +(an obsolete alias for `color-name'), etc. are now convenience +functions for working with font and color specifiers. Old code that +is not too sophisticated about working with font and pixel objects may +still work, though. (For example, the idiom `(font-name (face-font +'default))' still works.) + +You can now extract the RGB components of a color-instance object +(similar to the old pixel object) with the function +`color-instance-rgb-components'. There is also a convenience function +`color-rgb-components' for working with color specifiers. + +If there are no more colors available in the colormap, the nearest +existing color will be used when allocating a new color. + + + +*** Frames +---------- + +What used to be called "screens" are now called "frames", for clarity +and consistency with GNU Emacs. Aliases are provided for all the old +screen functions and variables, to avoid introducing a huge E-Lisp +incompatibility. + +The frame code has been merged with GNU Emacs 19.28, providing +improved functionality for many functions. + + + +*** Glyphs, Images, and Pixmaps +------------------------------- + +Glyphs (used in various places, i.e. as begin-glyphs and end-glyphs +attached to extents and appearing in a buffer or in marginal +annotations; as the truncator and continuor glyphs marking line wrap +or truncation; as an overlay at the beginning of a line; as the +displayable element in a toolbar button; etc.) can now be +buffer-local, window-local, frame-local, and device-local, and can be +further restricted to a particular device type or class. The way in +which faces can be controlled is now based on the general and powerful +specifier mechanism; see above. + +*** INCOMPATIBLE CHANGE **: The glyph and pixmap API has been completely +overhauled. A new Lisp object "glyph" is provided and should be used +where the old "pixmap" object would have been used. The pixmap object +exists no longer. There are also new Lisp objects "image specifier" +and "image instance" (an image-instance is the closest equivalent to +what a pixmap object was). More work on glyphs and images is slated +for 19.13. The glyph and image docs in the Lisp Reference Manual are +incomplete and will be finished in 19.13. + +The new function `set-glyph-property' allows setting of all the +glyph properties (`baseline', `contrib-p', etc.). Convenience +functions for particular properties are also provided, just like +for faces. + +You can set user-defined properties on glyphs using the new function +`set-glyph-property'. + +When displaying pixmaps, existing, closest-matching colors will be +used if the colormap is full. + +If the compface library is compiled into XEmacs, there is built-in +support for displaying X-Face bitmaps. (These are typically small +pictures of people's faces, included in a mail message through the +X-Face: header.) VM and highlight-headers will automatically use the +built-in X-Face support if it is available. + +Annotations in the right margin (as well as the left margin) are now +implemented. The left and right margin width functions have been +superseded by the specifier variables `left-margin-width' and +`right-margin-width', allowing much more flexible control through the +specifier mechanism. + +*** INCOMPATIBLE CHANGE **: The variable `use-left-overflow', +for controlling annotations in the left margin, is now a specifier +variable instead of a buffer-local variable. (There is also a new +variable `use-right-overflow', that is complementary.) + + + +*** Hashing +----------- + +Two new types of weak hashtables can be created: key-weak and +value-weak. In a key-weak hashtable, an entry remains around +if its key is referenced elsewhere, regardless of whether this +is also the case for the value. Value-weak hashtables are +complementary. (This is as opposed to the traditional weak +hashtables, where an entry remains around only if both the +key and value are referenced elsewhere.) New functions +`make-key-weak-hashtable' and `make-value-weak-hashtable' +are provided for creating these hashtables. + +The new function `md5' is provided for performing an MD5 +hash of an object. MD5 is a secure message digest algorithm +developed by RSA, inc. + + + +*** Keymaps +----------- + +The GNU Emacs concept of `function-key-map' is now partially +implemented. This allows conversion of function-key escape sequences +such as `ESC [ 1 1 ~' into an equivalent human-readable keysym such as +`F1'. This work will be completed in 19.14. The function-key map is +device-local and controllable through the functions +`device-function-key-map' and `set-device-function-key-map'. + +`where-is-internal' now correctly searches minor-mode keymaps, +extent-local keymaps, etc. As a side effect of this, menu items will +now correctly show the keyboard equivalent for commands that are +available through a minor-mode keymap, extent-local keymap, etc. + +*** INCOMPATIBLE CHANGE **: The modifier key "Symbol" has +been renamed to "Alt", for compatibility with the rest of the world. +Keep in mind that on many keyboards, the key labelled "Alt" actually +generates the "Meta" modifier. (On Sun keyboards, however, the key +labelled "Alt" does indeed generate the "Alt" modifier, and the key +labelled with a diamond generates the "Meta" modifier.) + + + +*** Mouse, Active Region +------------------------ + +The mouse internals in mouse.el have been rewritten. Hooks have been +provided for easier customization of mouse behavior. For example, you +can now easily specify an action to be invoked on single-click +(i.e. down-up without appreciable motion), double-click, drag-up, etc. + +Some code from GNU Emacs has been ported over, generalizing some of +the X-specific mouse stuff. + +*** INCOMPATIBLE CHANGE **: The function `set-mouse-position' accepts +a window instead of a frame. + +New function `mouse-position' that obsoletes and is more powerful than +`read-mouse-position'. + +New functions `mouse-pixel-positon' and `set-mouse-pixel-position' for +working with pixels instead of characters. + +The active (Zmacs) region is now highlighted using the `zmacs-region-face' +instead of the `primary-selection-face'; this generalizes what used +to be X-specific. + +New functions `region-active-p', `region-exists-p', and `activate-region' +provide a uniform API for dealing with the region irrespective of +whether the variable `zmacs-regions' is set. + +XEmacs is now a better X citizen with respect to the primary selection: +it does not stomp on the primary selection quite so much. This makes +things more manageable if you set `zmacs-regions' to nil. + + + +*** Processes +------------- + +Various process race conditions and bugs have been fixed. Problems +with process termination not getting noticed until much later (if at +all) should be gone now, as well as problems with zombie processes +under some systems. + +SOCKS support is now included. SOCKS is a package that allows hosts +behind a firewall to gain full access to the Internet without +requiring direct IP reachability. + + + +*** Windows +----------- + +Windows 95 is still not out yet. + +*** INCOMPATIBLE CHANGE **: The functions `locate-window-from-coordinates' +and `window-edges' have been eliminated. It no longer makes sense to +work with windows in terms of character positions, because windows can +(and often do) have many differently-sized fonts in them, because the +3-D modeline is not exactly one line high, etc. + +The new functions `window-pixel-edges', `window-highest-p', +`window-lowest-p', `frame-highest-window', and `frame-lowest-window' +are provided as substitutes for the above-mentioned, deleted +functions. + +The function `window-end' now takes an optional GUARANTEE argument +that will ensure that the value is actually correct as of the next +redisplay. + +The window code has been merged with GNU Emacs 19.28, providing +improved functionality for many functions. + + + +*** System-Specific Information +------------------------------- + +Georg Nikodym's dynodump package is provided, for proper unexec()ing +on Solaris systems. Executables built on Solaris 2.3 can now run on +Solaris 2.4 without crashing; similarly with executables built on one +type of Sun machine and run on another. + +AIX 4.x is supported. + +The NeXTstep operating system is supported in TTY mode (this is still +in beta). There are plans to port XEmacs to the NeXTstep window +system, but it may be awhile before this is complete. + +Problems with the `round' function causing arithmetic errors on HPUX 9 +have been fixed. + +You can now build XEmacs as an ELF executable on Linux systems that +support ELF. + +Various other new system configurations are supported. + + + + +** Major Differences Between 19.10 and 19.11 +============================================ + +The name has changed from "Lucid Emacs" to "XEmacs". Along with this is a +new canonical ftp site: cs.uiuc.edu:/pub/xemacs. + +XEmacs now has its very own World Wide Web page! It contains a +complete list of the FTP distribution sites, the most recent FAQ, +pointers to Emacs Lisp packages not included with the distribution, and +other useful stuff. Check it out at http://xemacs.cs.uiuc.edu/. + +A preliminary New Users Guide. + +cc-mode.el now provides the default C, C++ and Objective-C modes. + +The primary goal of this release is stability. Very few new features have +been introduced but lots of bugs have been fixed. Many of the Emacs Lisp +packages have been updated. + +Some of the new Emacs Lisp packages --- + +tcl-mode.el: major mode for editing TCL code + +fast-lock.el: saves and restores font-lock highlighting, greatly + reducing the time necessary for loading a font-lock'ed + file + +ps-print.el: prints buffers to Postscript printers preserving the + buffer's bold and italic text attributes + +toolbar.el: provides a "fake" toolbar for use with XEmacs (an + integrated one will be included with 19.12) + + +** Major Differences Between 19.9 and 19.10 +=========================================== + +The GNU `configure' system is now used to build lemacs. + +The Emacs Manual and Emacs Lisp Reference Manual now document version 19.10. +If you notice any errors, please let us know. + +When pixmaps are displayed in a buffer, they contribute to the line height - +that is, if the glyph is taller than the rest of the text on the line, the +line will be as tall as necessary to display the glyph. + +In addition to using arbitrary sound files as emacs beeps, one can control +the pitch and duration of the standard X beep, on X servers which allow that +(Note: most don't.) + +There is support for playing sounds on systems with NetAudio servers. + +Minor modes may have mode-specific key bindings; keymaps may have an arbitrary +number of parent maps. + +Menus can have toggle and radio buttons in them. + +There is a font selection menu. + +Some default key bindings have changed to match FSF19; the new bindings are + + Screen-related commands: + C-x 5 2 make-screen + C-x 5 0 delete-screen + C-x 5 b switch-to-buffer-other-screen + C-x 5 f find-file-other-screen + C-x 5 C-f find-file-other-screen + C-x 5 m mail-other-screen + C-x 5 o other-screen + C-x 5 r find-file-read-only-other-screen + Abbrev-related commands: + C-x a l add-mode-abbrev + C-x a C-a add-mode-abbrev + C-x a g add-global-abbrev + C-x a + add-mode-abbrev + C-x a i g inverse-add-global-abbrev + C-x a i l inverse-add-mode-abbrev + C-x a - inverse-add-global-abbrev + C-x a e expand-abbrev + C-x a ' expand-abbrev + Register-related commands: + C-x r C-SPC point-to-register + C-x r SPC point-to-register + C-x r j jump-to-register + C-x r s copy-to-register + C-x r x copy-to-register + C-x r i insert-register + C-x r g insert-register + C-x r r copy-rectangle-to-register + C-x r c clear-rectangle + C-x r k kill-rectangle + C-x r y yank-rectangle + C-x r o open-rectangle + C-x r t string-rectangle + C-x r w window-configuration-to-register + Narrowing-related commands: + C-x n n narrow-to-region + C-x n w widen + Other changes: + C-x 3 split-window-horizontally (was undefined) + C-x - shrink-window-if-larger-than-buffer + C-x + balance-windows + +The variable allow-deletion-of-last-visible-screen has been removed, since +it was widely hated. You can now always delete the last visible screen if +there are other iconified screens in existence. + +ToolTalk support is provided. + +An Emacs screen can be placed within an "external client widget" managed +by another application. This allows an application to use an Emacs screen +as its text pane rather than the standard Text widget that is provided +with Motif or Athena. + +Additional compatibility with Epoch is provided (though this is not yet +complete.) + + +** Major Differences Between 19.8 and 19.9 +========================================== + +Scrollbars! If you have Motif, these are real Motif scrollbars; otherwise, +Athena scrollbars are used. They obey all the usual resources of their +respective toolkits. + +There is now an implementation of dialog boxes based on the Athena +widgets, as well as the existing Motif implementation. + +This release works with Motif 1.2 as well as 1.1. If you link with Motif, +you do not also need to link with Athena. + +If you compile lwlib with both USE_MOTIF and USE_LUCID defined (which is the +recommended configuration) then the Lucid menus will draw text using the Motif +string-drawing library, instead of the Xlib one. The reason for this is that +one can take advantage of the XmString facilities for including non-Latin1 +characters in resource specifications. However, this is a user-visible change +in that, in this configuration, the menubar will use the "*fontList" resource +in preference to the "*font" resource, if it is set. + +It's possible to make extents which are copied/pasted by kill and undo. +There is an implementation of FSF19-style text properties based on this. + +There is a new variable, minibuffer-max-depth, which is intended to circumvent +a common source of confusion among new Emacs users. Since, under a window +system, it's easy to jump out of the minibuffer (by doing M-x, then getting +distracted, and clicking elsewhere) many, many novice users have had the +problem of having multiple minibuffers build up, even to the point of +exhausting the lisp stack. So the default behavior is to disallow the +minibuffer to ever be reinvoked while active; if you attempt to do so, you +will be prompted about it. + +There is a new variable, teach-extended-commands-p, which if set, will cause +`M-x' to remind you of any key bindings of the command you just invoked the +"long way." + +There are menus in Dired, Tar, Comint, Compile, and Grep modes. + +There is a menu of window management commands on the right mouse button over +the modelines. + +Popup menus now have titles at the top; this is controlled by the new +variable `popup-menu-titles'. + +The `Find' key on Sun keyboards will search for the next (or previous) +occurrence of the selected text, as in OpenWindows programs. + +The `timer' package has been renamed to `itimer' to avoid a conflict with +a different package called `timer'. + +VM 5.40 is included. + +W3, the emacs interface to the World Wide Web, is included. + +Felix Lee's GNUS speedups have been installed, including his new version of +nntp.el which makes GNUS efficiently utilize the NNTP XOVER command if +available (which is much faster.) + +GNUS should also be much friendlier to new users: it starts up much faster, +and doesn't (necessarily) subscribe you to every single newsgroup. + +The byte-compiler issues a new class of warnings: variables which are +bound but not used. This is merely an advisory, and does not mean the +code is incorrect; you can disable these warnings in the usual way with +the `byte-compiler-options' macro. + +the `start-open' and `end-open' extent properties, for specifying whether +characters inserted exactly at a boundary of an extent should go into the +extent or out of it, now work correctly. + +The `extent-data' slot has been generalized/replaced with a property list, +so it's easier to attach arbitrary data to extent objects. + +The `event-modifiers' and `event-modifier-bits' functions work on motion +events as well as other mouse and keyboard events. + +Forms-mode uses fonts and read-only regions. + +The behavior of the -geometry command line option should be correct now. + +The `iconic' screen parameter works when passed to x-create-screen. + +The user's manual now documents Lucid Emacs 19.9. + +The relocating buffer allocator is turned on by default; this means that when +buffers are killed, their storage will be returned to the operating system, +and the size of the emacs process will shrink. + +CAVEAT: code which contains calls to certain `face' accessor functions will +need to be recompiled by version 19.9 before it will work. The functions +whose callers must be recompiled are: face-font, face-foreground, +face-background, face-background-pixmap, and face-underline-p. The symptom +of this problem is the error "Wrong type argument, arrayp, #". +The .elc files generated by version 19.9 will work in 19.6 and 19.8, but +older .elc files which contain calls to these functions will not work in 19.9. + +Work In Progress: + + - We have been in the process of internationalizing Lucid Emacs. This code is + ***not*** ready for general use yet. However, the code is included (and + turned off by default) in this release. + + - If you define I18N2 at compile-time, then sorting/collation will be done + according to the locale returned by setlocale(). + + - If you define I18N3 at compile-time, then all messages printed by lemacs + will be filtered through the gettext() library routine, to enable the use + of locale-specific translation catalogues. The current implementation of + this is quite dependent on Solaris 2, and has a very large impact on + existing code, therefore we are going to be making major changes soon. + (You'll notice calls to `gettext' and `GETTEXT' scattered around much of + the lisp and C code; ignore it, this will be going away.) + + - If you define I18N4 at compile-time, then lemacs will internally use a + wide representation of characters, enabling the use of large character + sets such as Kanji. This code is very OS dependent: it requires X11R5, + and several OS-supplied library routines for reading and writing wide + characters (getwc(), putwc(), and a few others.) Performance is also a + problem. This code is also scheduled for a major overhaul, with the + intent of improving performance and portability. + + Our eventual goal is to merge with MULE, or at least provide the same base + level of functionality. If you would like to help out with this, let us + know. + + - Other work-in-progress includes Motif drag-and-drop support, ToolTalk + support, and support for embedding an Emacs widget inside another + application (where it can function as that other application's text-entry + area). This code has not been extensively tested, and may (or may not) + have portability problems, but it's there for the adventurous. Comments, + suggestions, bug reports, and especially fixes are welcome. But have no + expectations that this experimental code will work at all. + + +** Major Differences Between 19.6 and 19.8 +========================================== + +There were almost no differences between versions 19.6 and 19.7; version 19.7 +was a bug-fix release that was distributed with Energize 2.1. + +Lucid Emacs 19.8 represents the first stage of the Lucid Emacs/Epoch merger. +The redisplay engine now in lemacs is an improved descendant of the Epoch +redisplay. As a result, many bugs have been eliminated, and several disabled +features have been re-enabled. Notably: + +Selective display (and outline-mode) work. + +Horizontally split windows work. + +The height of a line is the height of the tallest font displayed on that line; +it is possible for a screen to display lines of differing heights. (Previously, +the height of all lines was the height of the tallest font loaded.) + +There is lisp code to scale fonts up and down, for example, to load the next- +taller version of a font. + +There is a new internal representation for lisp objects, giving emacs-lisp 28 +bit integers and a 28 bit address space, up from the previous maximum of 26. +We expect eventually to increase this to 30 bit integers and a 32 bit address +space, eliminating the need for DATA_SEG_BITS on some architectures. (On 64 +bit machines, add 32 to all of these numbers.) + +GC performance is improved. + +Various X objects (fonts, colors, cursors, pixmaps) are accessible as first- +class lisp objects, with finalization. + +An alternate interface to embedding images in the text is provided, called +"annotations." You may create an "annotation margin" which is whitespace at +the left side of the screen that contains only annotations, not buffer text. + +When using XPM files, one can specify the values of logical color names to be +used when loading the files. + +It is possible to resize windows by dragging their modelines up and down. More +generally, it is possible to add bindings for mouse gestures on the modelines. + +There is support for playing sound files on HP machines. + +ILISP version 5.5 is included. + +The Common Lisp #' read syntax is supported (#' is to "function" as ' is to +"quote".) + +The `active-p' slot of menu items is now evaluated, so one can put arbitrary +lisp code in a menu to decide whether that item should be selectable, rather +than doing this with an `activate-menubar-hook'. + +The X resource hierarchy has changed slightly, to be more consistent. It used +to be + argv[0] SCREEN-NAME pane screen + ApplicationShell EmacsShell Paned EmacsFrame + + now it is + + argv[0] shell pane SCREEN-NAME + ApplicationShell EmacsShell Paned EmacsFrame + +The Lucid Emacs sources have been largely merged with FSF version 19; this +means that the lisp library contains the most recent releases of various +packages, and many new features of FSF 19 have been incorporated. + +Because of this, the lemacs sources should also be substantially more portable. + + +** Major Differences Between 19.4 and 19.6 +========================================== + +There were almost no differences between versions 19.4 and 19.5; we fixed +a few minor bugs and repacked 19.4 as 19.5 for a CD-ROM that we gave away +as a trade show promotion. + +The primary goal of the 19.6 release is stability, rather than improved +functionality, so there aren't many user-visible changes. The most notable +changes are: + + - The -geometry command-line option now correctly overrides geometry + specifications in the resource database. + - The `width' and `height' screen-parameters work. + - Font-lock-mode considers the comment start and end characters to be + a part of the comment. + - The lhilit package has been removed. Use font-lock-mode instead. + - vm-isearch has been fixed to work with isearch-mode. + - new versions of ispell and calendar. + - sccs.el has menus. + +Lots of bugs were fixed, including the problem that lemacs occasionally +grabbed the keyboard focus. + +Also, as of Lucid Emacs 19.6 and Energize 2.0 (shipping now) it is possible +to compile the public release of Lucid Emacs with support for Energize; so +now Energize users will be able to build their own Energize-aware versions +of lemacs, and will be able to use newer versions of lemacs as they are +released to the net. (Of course, this is not behavior covered by your +Energize support contract; you do it at your own risk.) + +I have not incorporated all portability patches that I have been sent since +19.4; I will try to get to them soon. However, if you need to make any +changes to lemacs to get it to compile on your system, it would be quite +helpful if you would send me context diffs (diff -c) against version 19.6. + + +** Major Differences Between 19.3 and 19.4 +========================================== + +Prototypes have been added for all functions. Emacs compiles in the strict +ANSI modes of lcc and gcc, so portability should be vastly improved. + +Many many many many core leaks have been plugged, especially in screen +creation and deletion. + +The float support reworked to be more portable and ANSI conformant. This +resulted in these new configuration parameters: HAVE_INVERSE_HYPERBOLIC, +HAVE_CBRT, HAVE_RINT, FLOAT_CHECK_ERRNO, FLOAT_CATCH_SIGILL, +FLOAT_CHECK_DOMAIN. Let us know if you had to change the defaults on your +architecture. + +The SunOS unexec has been rewritten, and now works with either static or +dynamic libraries, depending on whether -Bstatic or -Bdynamic were specified +at link-time. + +Small (character-sized) bitmaps can be mixed in with buffer text via the new +functions set-extent-begin-glyph and set-extent-end-glyph. (This is actually +a piece of functionality that Energize has been using for a while, but we've +just gotten around to making it possible to use it without Energize. See how +nice we are? Go buy our product.) + +If compiled with Motif support, one can pop up dialog boxes from emacs lisp. +We encourage someone to contribute Athena an version of this code; it +shouldn't be much work. + +If dialog boxes are available, then y-or-n-p and yes-or-no-p use dialog boxes +instead of the minibuffer if invoked as a result of a command that was +executed from a menu instead of from the keyboard. + +Multiple screen support works better; check out doc of get-screen-for-buffer. + +The default binding of backspace is the same as delete. (C-h is still help.) + +A middle click while the minibuffer is active does completion if you click on +a highlighted completion, otherwise it executes the global binding of button2. + +New versions of Barry Warsaw's c++-mode and syntax.c. Font-lock-mode works +with C++ mode now. + +The semantics of activate-menubar-hook has changed; the functions are called +with no arguments now. + +`truename' no longer hacks the automounter; use directory-abbrev-alist instead. + +Most minibuffer handling has been reimplemented in emacs-lisp. + +There is now a builtin minibuffer history mechanism which replaces gmhist. + + +** Major Differences Between 19.2 and 19.3 +========================================== + +The ISO characters have correct case and syntax tables now, so the word-motion +and case-converting commands work sensibly on them. + +If you set ctl-arrow to an integer, you can control exactly which characters +are printable. (There will be a less crufty way to do this eventually.) + +Menubars can now be buffer local; the function set-screen-menubar no longer +exists. Look at GNUS and VM for examples of how to do this, or read +menubar.el. + +When emacs is reading from the minibuffer with completions, any completions +which are visible on the screen will highlight when the mouse moves over them; +clicking middle on a completion is the same as typing it at the minibuffer. +Some implications of this: The *Completions* buffer is always mousable. If +you're using the completion feature of find-tag, your source code will be +mousable when you type M-. Dired buffers will be mousable as soon as you +type ^X^F. And so on. + +The old isearch code has been replaced with a descendant of Dan LaLiberte's +excellent isearch-mode; it is more customizable, and generally less bogus. +You can search for "composed" characters. There are new commands, too; see +the doc for ^S, or the NEWS file. + +A patched GNUS 3.14 is included. + +The user's manual now documents Lucid Emacs 19.3. + +A few more modes have mouse and menu support. + +The startup code should be a little more robust, and give you more reasonable +error messages when things aren't installed quite right (instead of the +ubiquitous "cannot open DISPLAY"...) + +Subdirectories of the lisp directory whose names begin with a hyphen or dot +are not automatically added to the load-path, so you can use this to avoid +accidentally inflicting experimental software on your users. + +I've tried to incorporate all of the portability patches that were sent to +me; I tried to solve some of the problems in different ways than the +patches did, so let me know if I missed something. + +Some systems will need to define NEED_STRDUP, NEED_REALPATH, HAVE_DREM, or +HAVE_REMAINDER in config.h. Really this should be done in the appropriate +s- or m- files, but I don't know which systems need these and which don't. +If yours does, let me know which file it should be in. + +Check out these new packages: + +blink-paren.el: causes the matching parenthesis to flash on and off whenever + the cursor is sitting on a paren-syntax character. + +pending-del.el: Certain commands implicitly delete the highlighted region: + Typing a character when there is a highlighted region replaces + that region with the typed character. + +font-lock.el: A code-highlighting package, driven off of syntax tables, so + that it understands block comments, strings, etc. The + insertion hook is used to fontify text as you type it in. + +shell-font.el: Displays your shell-buffer prompt in boldface. + diff --git a/etc/ORDERS b/etc/ORDERS new file mode 100644 index 0000000..2f4b502 --- /dev/null +++ b/etc/ORDERS @@ -0,0 +1,4343 @@ + + +Note: this file describes how you order software from the Free Software +Foundation directly. Information on getting XEmacs can be found in +the file DISTRIB. + + + +The actual order form follows the descriptions of media contents. + +Most of this file is excerpted from the January 1996 GNU's Bulletin. + +Please send suggestions for improvements to gnu@prep.ai.mit.edu or the postal +address at the end of the order form. Thank You. + +----------------------------------------------------------------------------- + + +FSF Order Form with Descriptions January, 1996 + + + +Free Software Foundation, Inc. Telephone: +1-617-542-5942 +59 Temple Place - Suite 330 Fax: (including Japan) +1-617-542-2652 +Boston, MA 02111-1307 USA Electronic mail: `gnu@prep.ai.mit.edu' + + +----------------------------------------------------------------------------- + + + +There are some sections (e.g. ``Forthcoming GNUs'' and ``How to Get GNU +Software'') which are not in this Order Form file. If you wish to see them, +ask gnu@prep.ai.mit.edu for the complete June, 1995 GNU's Bulletin. + + + +Table of Contents +----------------- + + Donations Translate Into Free Software + Cygnus Matches Donations! + Free Software Redistributors Donate + Help from Free Software Companies + Major Changes in GNU Software and Documentation + The Deluxe Distribution + GNU Documentation + GNU Software + Program/Package Cross Reference + Tapes + Languages Tape + Lisps and Emacs Tape + Utilities Tape + Scheme Tape + X11 Tapes + Berkeley 4.4BSD-Lite Tape + VMS Emacs and VMS Compiler Tapes + CD-ROMs + Pricing of the GNU CD-ROMs + December 1995 Compiler Tools Binaries CD-ROM + December 1994 Compiler Tools Binaries CD-ROM + December 1993 Compiler Tools Binaries CD-ROM + Source Code CD-ROMs + December 1995 Source Code CD-ROMs + June 1995 Source Code CD-ROM + May 1994 Source Code CD-ROM + November 1993 Source Code CD-ROM + MS-DOS Book with CD-ROM + Debian GNU/Linux Book with CD-ROM + MS-DOS Diskettes + DJGPP Diskettes + Emacs Diskettes + Selected Utilities Diskettes + Windows Diskette + Tape & CD-ROM Subscription Service + FSF T-shirt + Free Software Foundation Order Form + + +----------------------------------------------------------------------------- + + + +Donations Translate Into Free Software +************************************** + +If you appreciate Emacs, GNU CC, Ghostscript, and other free software, you +may wish to help us make sure there is more in the future--remember, +*donations translate into more free software!* + +Your donation to us is tax-deductible in the United States. We gladly accept +*any* currency, although the U.S. dollar is the most convenient. + +If your employer has a matching gifts program for charitable donations, +please arrange to: add the FSF to the list of organizations for your +employer's matching gifts program; and have your donation matched (note *Note +Cygnus Matches Donations!::). If you do not know, please ask your personnel +department. + +Circle amount you are donating, cut out this form, and send it with your +donation to: + + Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307 + USA + + + $500 $250 $100 $50 Other $________ + + Other currency:________ + + +You can charge a donation to any of Carte Blanche, Diner's Club, JCB, +MasterCard, Visa, or American Express. Charges may also be faxed to ++1-617-542-2652. + + Card type: __________________ Expiration Date: _____________ + + Account Number: _____________________________________________ + + Cardholder's Signature: _____________________________________ + + Name: _______________________________________________________ + + Street Address: _____________________________________________ + + City/State/Province: ________________________________________ + + Zip Code/Postal Code/Country: _______________________________ + + + +Cygnus Matches Donations! +************************* + +To encourage cash donations to the Free Software Foundation, Cygnus Support +will continue to contribute corporate funds to the FSF to accompany gifts by +its employees, and by its customers and their employees. + +Donations payable to the Free Software Foundation should be sent by eligible +persons to Cygnus Support, which will add its gifts and forward the total to +the FSF each quarter. The FSF will provide the contributor with a receipt to +recognize the contribution (which is tax-deductible on U.S. tax returns). +For more information, please contact Cygnus: + + Cygnus Support + 1937 Landings Drive + Mountain View, CA 94043 + USA + + Telephone: 415-903-1400 + +1-800-Cygnus1 (-294-6871) + Fax: 415-903-0122 + Electronic-Mail: `info@cygnus.com' + FTP: `ftp.cygnus.com' + WWW: `http://www.cygnus.com/' + + + +Free Software Redistributors Donate +*********************************** + +The SNOW 2.1 CD producers added the words "Includes $5 donation to the FSF" +to the front of their CD. Potential buyers will know just how much of the +price is for the FSF & how much is for the redistributor. + +The Sun Users Group Deutschland & ASCII Corporation (Japan) have added +donations to the FSF to the price of their next GNU software CD-ROMs. + +Austin Code Works, a free software redistributor, supports free software +development by giving the FSF 20% of the selling price for the GNU software +CDs they produce & sell. + +Walnut Creek CDROM & Info Magic, free software redistributors, are also +giving us part of their selling price. + +TOHDO-SHA is donating 400 yen to the FSF for each copy of `The GNU Emacs Lisp +Reference Manual, Japanese Edition' sold at bookstores in Japan. + +CQ Publishing made a large donation from the sales of their GAWK book in +Japanese. + +In the long run, the success of free software depends on how much new free +software people develop. Free software distribution offers an opportunity to +raise funds for such development in an ethical way. These redistributors +have made use of the opportunity. Many others let it go to waste. + +You can help promote free software development by convincing for-a-fee +redistributors to contribute--either by doing development themselves or by +donating to development organizations (the FSF and others). + +The way to convince distributors to contribute is to demand and expect this +of them. This means choosing among distributors partly by how much they give +to free software development. Then you can show distributors they must +compete to be the one who gives the most. + +To make this work, you must insist on numbers that you can compare, such as, +"We will give ten dollars to the Foobar project for each disk sold." A vague +commitment, such as "A portion of the profits is donated," doesn't give you a +basis for comparison. Even a precise fraction "of the profits from this +disk" is not very meaningful, since creative accounting and unrelated +business decisions can greatly alter what fraction of the sales price counts +as profit. + +Also, press developers for firm information about what kind of development +they do or support. Some kinds make much more long-term difference than +others. For example, maintaining a separate version of a GNU program +contributes very little; maintaining a program on behalf of the GNU Project +contributes much. Easy new ports contribute little, since someone else would +surely do them; difficult ports such as adding a new CPU to the GNU compiler +or Mach contribute more; major new features and programs contribute the most. + +By establishing the idea that supporting further development is "the proper +thing to do" when distributing free software for a fee, we can assure a +steady flow of resources for making more free software. + + + +Help from Free Software Companies +********************************* + +When choosing a free software business, ask those you are considering how +much they do to assist free software development, e.g., by contributing money +to free software development or by writing free software improvements +themselves for general use. By basing your decision partially on this +factor, you can help encourage those who profit from free software to +contribute to its growth. + +Wingnut (SRA's special GNU support group) regularly donates a part of its +income to the FSF to support the development of new GNU programs. Listing +them here is our way of thanking them. Wingnut has made a pledge to donate +10% of their income to the FSF, and has purchased several Deluxe Distribution +packages in Japan. Also see *Note Cygnus Matches Donations!::. + + Wingnut Project + Software Research Associates, Inc. + 1-1-1 Hirakawa-cho, Chiyoda-ku + Tokyo 102, Japan + + Phone: (+81-3)3234-2611 + Fax: (+81-3)3942-5174 + E-mail: `info-wingnut@sra.co.jp' + WWW: `http://www.sra.co.jp/public/sra/product/wingnut/' + + + +Major Changes in GNU Software and Documentation +*********************************************** + + * A New FSF T-shirt! (*Note FSF T-shirt::) + + We have a new T-shirt. This design was inspired by the cover of the + `GNU Emacs Lisp Reference Manual'. + + * GNU Emacs 19.30 (*Note GNU Software::) + + We have just released Emacs 19.30. New features include support for menu + bars on text-only terminals, a total rewrite of GNUS, multiple frames on + Windows NT and Windows 95, & many others. + + * New Programs on the Tapes (*Note GNU Software::) + + `gettext' is now on the *Note Languages Tape::. Termutils & Midnight + Commander have been added to the *Note Utilities Tape::. CLX has been + added to the *Note Lisps/Emacs Tape::. Newer versions of many of our + programs & manuals have been placed on all the media we distribute. + + * New Source Code CD! + + We have just released the December 1995 Source Code CD-ROMs (Edition 7). + Due to increasing amounts of GNU Software, the Source Code CD is now a + two disc set--the price remains unchanged! The new programs included + are: apache, CLX, Elisp archive, `ffcall', `gettext', GN, Gnans, + `gnuserv', Hyperbole, Midnight Commander, Oaklisp, SIPP, SNePS, Spinner, + W3, and `xgrabsc'. *Note GNU Software::, for more information about + these packages. Also on the CD-ROMs are full distributions of MIT X11R6 + (both our Required & Optional distributions), MIT Scheme 7.3, Emacs + 19.30, GCC 2.7.1, and current versions of all other GNU Software. For + more information, see *Note December 1995 Source Code CD-ROMs::. + + * New Compiler Tools CD-ROM + + We have a new edition of the Compiler Tools Binaries CD-ROM with updated + versions of much of its software. It contains executables of the GNU + compiler tools for some systems that don't normally come with a + compiler. This allows users of those systems to compile their own + software without having to buy a proprietary compiler. + + We hope to include more systems with each update of this CD-ROM. If you + can help build binaries for new systems or have one to suggest, please + contact us at either address on page 1. For more information, see *Note + Compiler Tools Binaries CD-ROM::. + + * New/Updated Manuals since Last Bulletin (*Note Documentation::) + + We have a new manual: `The GNU Emacs Lisp Reference Manual, Japanese + Edition' - the FSF would like to thank the team of over 30 Japanese who + did the translation. These new editions include bug fixes and + additional information: `The GNU Emacs Lisp Reference Manual', `GNU + Make', `Bison', `Programming in Emacs Lisp: An Introduction', and `The + Termcap Manual'. + + * Older FSF CD-ROMs Available at a Reduced Price + + While supplies last, older versions of our CD-ROMs are available at a + reduced price. Note that the newest version has bug fixes and + improvements that the older versions do not. See the *note Free + Software Foundation Order Form::.. + + * GNU Software Works on MS-DOS (Also *note GNU Software::.) + + GNU Emacs 19 and many other GNU programs have been ported to MS-DOS for + i386/i486/Pentium machines. We ship binaries & sources on the *Note + DJGPP Diskettes::; *Note Emacs Diskettes::; *Note Selected Utilities + Diskettes::; & the *Note Compiler Tools Binaries CD-ROM::. We will ship + binaries & sources on the *Note MS-DOS Book with CD-ROM::, when it is + available. + + * The FSF Takes Credit Cards + + We take these credit cards: Carte Blanche, Diner's Club, MasterCard, JCB, + Visa, and American Express. Please note that we are charged about 5% of + an order's total amount in credit card processing fees. Please consider + paying by check instead or adding on a 5% donation to make up the + difference. + + + +The Deluxe Distribution +*********************** + +The Free Software Foundation has been asked repeatedly to create a package +that provides executables for all of our software. Normally we offer only +sources. In addition to providing binaries with the source code, the Deluxe +Distribution includes a complete set of our printed manuals and reference +cards. + +The FSF Deluxe Distribution contains the binaries and sources to hundreds of +different programs including GNU Emacs, the GNU C Compiler, the GNU Debugger, +the complete X Window System, and all the GNU utilities. + +We will make a Deluxe Distribution for most machines/operating systems. We +may be able to send someone to your office to do the compilation, if we can't +find a suitable machine close to us. However, we can only compile the +programs that already support your chosen machine/system - porting is a +separate matter (to commission a port, consult the GNU Service Directory; +details in *Note Free Software Support::). Compiling all these programs +takes time; a Deluxe Distribution for an unusual machine will take longer to +produce than one for a common machine. Please contact the FSF Office with +any questions. + +We supply the software in one of these tape formats in Unix `tar' format: +1600 or 6250bpi 1/2in reel, Sun DC300XLP 1/4in cartridge - QIC24, IBM RS/6000 +1/4in c.t. - QIC 150, Exabyte 8mm c.t., or DAT 4mm c.t. If your computer +cannot read any of these, please contact us to see if we can handle your +format. + +The manuals included are one each of the `Bison', `Calc', `GAWK', `GNU C +Compiler', `GNU C Library', `GDB', `Flex', `GNU Emacs Lisp Reference', +`Programming in Emacs Lisp: An Introduction', `Make', `Texinfo', & `Termcap' +manuals; six copies of the `GNU Emacs' manual; and a packet of ten reference +cards each for Emacs, Bison, Calc, Flex, & GDB. + +Every Deluxe Distribution also has a copy of the latest editions of our +CD-ROMs that have sources of our software & compiler tool binaries for some +systems. The MS-DOS CD is in ISO 9660 format. The other CDs are in ISO 9660 +format with Rock Ridge extensions. + +The price of the Deluxe Distribution is $5000 (shipping included). These +sales provide enormous financial assistance to help the FSF develop more free +software. To order, please fill out the "Deluxe Distribution" section on the +*note Free Software Foundation Order Form::. and send it to: + + Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307 + USA + + Telephone: +1-617-542-5942 + Fax (including Japan): +1-617-542-2652 + Electronic mail: gnu@prep.ai.mit.edu + + + +GNU Documentation +***************** + +GNU is dedicated to having quality, easy-to-use online & printed +documentation. GNU manuals are intended to explain underlying concepts, +describe how to use all the features of each program, & give examples of +command use. GNU manuals are distributed as Texinfo source files, which +yield both typeset hardcopy via the TeX document formatting system and online +hypertext display via the menu-driven Info system. Source for these manuals +comes with our software; here are the manuals that we publish as printed +books. See the *note Free Software Foundation Order Form::., to order them. + +Most GNU manuals are bound as soft cover books with "lay-flat" bindings. +This allows you to open them so they lie flat on a table without creasing the +binding. They have an inner cloth spine and an outer cardboard cover that +will not break or crease as an ordinary paperback will. Currently, the +`GDB', `Emacs', `Emacs Lisp Reference', `Programming in Emacs Lisp: An +Introduction', `GAWK', `Make', `Bison', & `Texinfo' manuals have this +binding. The other GNU manuals also lie flat when opened, using a GBC or +Wire-O binding. All our manuals are 7in by 9.25in except the 8.5in by 11in +`Calc' manual. + +The edition number of the manual and version number of the program listed +after each manual's name were current at the time this Bulletin was published. + +`Debugging with GDB' (Edition 4.12 for Version 4.14) tells how to run your +program under GNU Debugger control, examine and alter data, modify a +program's flow of control, and use GDB through GNU Emacs. + +The `GNU Emacs Manual' (11th Edition for Version 19.29) describes editing with +GNU Emacs. It explains advanced features, including outline mode and regular +expression search; how to use special programming modes to write languages +like C++ and TeX; how to use the `tags' utility; how to compile and correct +code; how to make your own keybindings; and other elementary customizations. + +`Programming in Emacs Lisp: An Introduction' (Edition 1.04) is for people who +are not necessarily interested in programming, but who do want to customize +or extend their computing environment. If you read it in Emacs under Info +mode, you can run the sample programs directly. + +`The GNU Emacs Lisp Reference Manual' (Edition 2.4 for Version 19.29) and +`The GNU Emacs Lisp Reference, Japanese Edition' (Japanese DRAFT Revision +1.0, from English Edition 2.4 for Version 19.29) covers this programming +language in depth, including data types, control structures, functions, +macros, syntax tables, searching/matching, modes, windows, keymaps, byte +compilation, and the operating system interface. + +`The GAWK Manual' (Edition 0.16 for Version 2.16) tells how to use the GNU +implementation of `awk'. It is written for those who have never used `awk' +and describes the features of this powerful string and record manipulation +language. + +The `Make Manual' (Edition 0.49 for Version 3.74) describes GNU `make', a +program used to rebuild parts of other programs. The manual tells how to +write "makefiles", which specify how a program is to be compiled and how its +files depend on each other. Included are an introductory chapter for novice +users and a section about automatically generated dependencies. + +The `Flex' manual (Edition 1.03 for Version 2.3.7) teaches you to write a +lexical scanner definition for the `flex' program to create a C++ or C-coded +scanner that recognizes the patterns defined. You need no prior knowledge of +scanners. + +The `Bison' manual (December 1993 Edition for Version 1.23) teaches you how +to write context-free grammars for the Bison program that convert into +C-coded parsers. You need no prior knowledge of parser generators. + +`Using and Porting GNU CC' (September 1994 Edition for Version 2.6) tells how +to run, install, and port the GNU C Compiler to new systems. It lists new +features and incompatibilities of GCC, but people not familiar with C will +still need a good reference on the C programming language. It also covers +G++. We are doing limited copier runs of this manual until it becomes more +stable. + +The `Texinfo' manual (Edition 2.21 for Version 3) explains the markup +language that produces our online Info documentation & typeset hardcopies. +It tells you how to make tables, lists, chapters, nodes, indexes, cross +references, & how to catch mistakes. This second edition describes over 50 +new commands. + +`The Termcap Manual' (2nd Edition for Version 1.2), often described as "twice +as much as you ever wanted to know about termcap," details the format of the +termcap database, the definitions of terminal capabilities, and the process +of interrogating a terminal description. This manual is primarily for +programmers. + +The `C Library Reference Manual' (Edition 0.06 for Version 1.09) describes +the library's facilities, including both what Unix calls "library functions" +& "system calls." We are doing small copier runs of this manual until it +becomes more stable. Please send fixes to `bug-glibc-manual@prep.ai.mit.edu'. + +The `Emacs Calc Manual' (Edition 2.02 for Version 2.02) is both a tutorial +and a reference manual. It tells how to do ordinary arithmetic, how to use +Calc for algebra, calculus, and other forms of mathematics, and how to extend +Calc. + + + +GNU Software +************ + +All our software is available via FTP; see *Note How to Get GNU Software::. +We also offer software on various media and printed documentation: + + * *Note CD-ROMs::. + + * *Note Tapes::. + + * *Note MS-DOS Diskettes::. + + * *Note Documentation::, which includes manuals and reference cards. + +In these articles describing the contents of each medium, the version number +listed after each program name was current when we published this Bulletin. +When you order a distribution tape, diskette, or newer CD-ROM, some of the +programs may be newer and therefore the version number higher. See the *note +Free Software Foundation Order Form::., for ordering information. + +Some of the contents of our tape and FTP distributions are compressed. We +have software on our tapes and FTP sites to uncompress these files. Due to +patent troubles with `compress', we use another compression program, `gzip'. +(Such prohibitions on software development are fought by the League for +Programming Freedom; *note What Is the LPF::., for details.) + +GNU `make' is on several of our tapes because some system vendors supply no +`make' utility at all and some native `make' programs lack the `VPATH' +feature essential for using the GNU configure system to its full extent. The +GNU `make' sources have a shell script to build `make' itself on such systems. + +We welcome all bug reports and enhancements sent to the appropriate +electronic mailing list (*note Free Software Support::.). + + + +Configuring GNU Software +------------------------ + +We are using, Autoconf, a uniform scheme for configuring GNU software +packages in order to compile them (see "Autoconf" below, in this article). +The goal is to have all GNU software support the same alternatives for naming +machine and system types. + +Ultimately, it will be possible to configure and build the entire system all +at once, eliminating the need to configure each individual package separately. + +You can also specify both the host and target system to build +cross-compilation tools. Most GNU programs now use Autoconf-generated +configure scripts. + + + +GNU Software currently available +-------------------------------- + +For future programs and features, see *Note Forthcoming GNUs::. + +Key to cross reference: + + + BinCD + December 1994 Binaries CD-ROM + + DjgpD + Djgpp Diskettes + + DosBC + MS-DOS Book with CD-ROM + + EmcsD + Emacs Diskettes + + LangT + Languages Tape + + LiteT + 4.4BSD-Lite Tape + + LspEmcT + Lisps/Emacs Tape + + SchmT + Scheme Tape + + SrcCD + December 1995 Source CD-ROMs + + UtilD + Selected Utilities Diskettes + + UtilT + Utilities Tape + + VMSCmpT + VMS Compiler Tape + + VMSEmcsT + VMS Emacs Tape + + WdwsD + Windows Diskette + + X11OptT + X11 Optional Tape + + X11ReqT + X11 Required Tape + +[FSFman] shows that we sell a manual for that package. [FSFrc] shows we sell +a reference card for that package. To order them, see the *note Free +Software Foundation Order Form::.. *Note Documentation::, for more +information on the manuals. Source code for each manual or reference card is +included with each package. + + * `acm' (SrcCD, UtilT) + + `acm' is a LAN-oriented, multiplayer aerial combat simulation that runs + under the X Window System. Players engage in air to air combat against + one another using heat seeking missiles and cannons. We are working on + a more accurate simulation of real airplane flight characteristics. + + * apache (SrcCD) + + Apache is an HTTP server designed as a plug-in replacement for version + 1.3 or 1.4 of the NCSA server. It fixes numerous bugs in the NCSA + server and includes many frequently requested new features, and has an + API which allows it to be extended to meet users' needs more easily. + + * Autoconf (SrcCD, UtilT) + + Autoconf produces shell scripts which automatically configure source code + packages. These scripts adapt the packages to many kinds of Unix-like + systems without manual user intervention. Autoconf creates a script for + a package from a template file which lists the operating system features + which the package can use, in the form of `m4' macro calls. Autoconf + requires GNU `m4' to operate, but the resulting configure scripts it + generates do not. + + * BASH (SrcCD, UtilT) + + GNU's shell, BASH (Bourne Again SHell), is compatible with the Unix `sh' + and offers many extensions found in `csh' and `ksh'. BASH has job + control, `csh'-style command history, command-line editing (with Emacs + and `vi' modes built-in, and the ability to rebind keys) via the + `readline' library. BASH conforms to the POSIX 1003.2-1992 standard. + + * `bc' (DosBC, SrcCD, UtilT) + + `bc' is an interactive algebraic language with arbitrary precision + numbers. GNU `bc' follows the POSIX 1003.2-1992 standard, with several + extensions including multi-character variable names, an `else' + statement, and full Boolean expressions. The RPN calculator `dc' is now + distributed as part of the same package, but GNU `bc' is not implemented + as a `dc' preprocessor. + + * BFD (BinCD, DjgpD, DosBC, LangT, SrcCD) + + The Binary File Descriptor library allows a program which operates on + object files (e.g., `ld' or GDB) to support many different formats in a + clean way. BFD provides a portable interface, so that only BFD needs to + know the details of a particular format. One result is that all + programs using BFD will support formats such as a.out, COFF, and ELF. + BFD comes with Texinfo source for a manual (not yet published on paper). + + At present, BFD is not distributed separately; it is included with + packages that use it. + + * Binutils (BinCD, DjgpD, DosBC, LangT, SrcCD; `gas' only on VMSCmpT) + + Binutils includes these programs: `ar', `c++filt', `demangle', `gas', + `gprof', `ld', `nlmconv', `nm', `objcopy', `objdump', `ranlib', `size', + `strings', & `strip'. + + Binutils version 2 uses the BFD library. The GNU assembler, `gas', + supports the a29k, Alpha, H8/300, H8/500, HP-PA, i386, i960, m68k, m88k, + MIPS, NS32K, SH, SPARC, Tahoe, Vax and Z8000 CPUs, and attempts to be + compatible with many other assemblers for UNIX and embedded systems. It + can produce mixed C-and-assembly listings, and includes a macro facility + similar to that in some other assemblers. GNU's linker `ld' emits + source-line numbered error messages for multiply-defined symbols and + undefined references, and interprets a superset of AT&T's Linker Command + Language, which gives control over where segments are placed in memory. + `nlmconv' converts object files into Novell NetWare Loadable Modules. + `objdump' can disassemble code for most of the CPUs listed above, and + can display other data (e.g., symbols and relocations) from any file + format read by BFD. + + * Bison (BinCD,DjgpD,DosBC,LangT,SrcCD,VMSCmpT)[FSFman,FSFrc] + + Bison is an upwardly compatible replacement for the parser generator + `yacc'. Texinfo source for the `Bison Manual' and reference card are + included. *Note Documentation::. + + A recent policy change allows non-free programs to use Bison-generated + parsers. *Note Conditions for Using Bison::. + + * C Library (BinCD, LangT, SrcCD) [FSFman] + + The GNU C library supports ANSI C-1989, POSIX 1003.1-1990 and most of the + functions in POSIX 1003.2-1992. It is upwardly compatible with 4.4BSD + and includes many System V functions, plus GNU extensions. + + The C Library performs many functions of the Unix system calls in the + GNU/Hurd. Mike Haertel has written a fast `malloc' which wastes less + memory than the old GNU version. The GNU regular-expression functions + (`regex' and `rx') now nearly conform to the POSIX 1003.2 standard. + + GNU `stdio' lets you define new kinds of streams, just by writing a few + C functions. The `fmemopen' function uses this to open a stream on a + string, which can grow as necessary. You can define your own `printf' + formats to use a C function you have written. For example, you can + safely use format strings from user input to implement a `printf'-like + function for another programming language. Extended `getopt' functions + are already used to parse options, including long options, in many GNU + utilities. + + The C Library runs on Sun-3 (SunOS 4.1), Sun-4 (SunOS 4.1 or Solaris 2), + HP 9000/300 (4.3BSD), SONY News 800 (NewsOS 3 or 4), MIPS DECstation + (Ultrix 4), DEC Alpha (OSF/1), i386/i486/Pentium (System V, SVR4, BSD, + SCO 3.2, & SCO ODT 2.0), Sequent Symmetry i386 (Dynix 3), & SGI (Irix + 4). *Note Forthcoming GNUs::. Texinfo source for the + `GNU C Library Reference Manual' is included (*note Documentation::.. + + * C++ Library (BinCD, DjgpD, DosBC, LangT, SrcCD) + + The GNU C++ library (libg++) contains an extensive collection of C++ + "forest" classes, an IOStream library for input/output routines, and + support tools for use with G++. Supported classes include: Obstacks, + multiple-precision Integers and Rationals, Complex numbers, arbitrary + length Strings, BitSets, and BitStrings. + + The distribution also includes the libstdc++ library. This implements + library facilities defined by the forthcoming ANSI/ISO C++ standard, + including a port of the Standard Template Library. + + * Calc (DosBC, LspEmcT, SrcCD) [FSFman, FSFrc] + + Calc (written by Dave Gillespie in Emacs Lisp) is an extensible, advanced + desk calculator & mathematical tool that runs as part of GNU Emacs. You + can use Calc just as a simple four-function calculator, but it has many + more features including: choice of algebraic or RPN (stack-based) entry; + logarithmic, trigonometric, & financial functions; arbitrary precision; + complex numbers; vectors; matrices; dates; times; infinities; sets; + algebraic simplification; differentiation & integration. It outputs to + `gnuplot', & comes with source for a manual & reference card (*note + Documentation::.). + + * `cfengine' (SrcCD, UtilT) + + `cfengine' is used for maintaining site-wide configuration of a + heterogeneous Unix network using a simple high level language. Its + appearance is similar to `rdist', but also allows many more operations + to be performed automatically. See Mark Burgess, "A Site Configuration + Engine", `Computing Systems', Vol. 8, No. 3 (ask `office@usenix.org' how + to get a copy). + + * Chess (SrcCD, UtilT, WdwsD) + + GNU Chess enables most modern computers to play a full game of chess. It + supports a plain terminal interface, a curses interface, and a spiffy X + Window interface via `xboard'. + + Improvements this past year include fixes to the game analyzer, book, & + hash table; smartening up draw and mate; improved thinking on opponent's + time; Autoconf installation; a makefile for Windows NT compilation; + forward pruning; unlimited quiescence captures; improved evaluation; + improved null & time control logic; & repetition-detection. + + GNU Chess was originated by Stuart Cracraft. Improvements & rewrites are + from John Stanback, Cha Kong Sian, Mike McGann, and many others. + + Send bugs to `bug-gnu-chess@prep.ai.mit.edu' & general comments to + `info-gnu-chess@prep.ai.mit.edu'. + + * CLISP (LspEmcT, SrcCD) + + CLISP is a Common Lisp implementation by Bruno Haible and Michael Stoll. + It mostly supports the Lisp described by `Common LISP: The Language (2nd + edition)' and the ANSI Common Lisp standard. CLISP includes an + interpreter, a byte-compiler, a large subset of CLOS, a foreign language + interface, and, for some machines, a screen editor. The user interface + language (English, German, French) is choosable at run time. Major + packages that run in CLISP include CLX & Garnet. CLISP needs only 2 MB + of memory & runs on many microcomputers (including MS-DOS systems, OS/2, + Windows NT, Amiga 500-4000, Acorn RISC PC) & Unix-like systems + (GNU/Linux, Sun4, SVR4, SGI, HP-UX, DEC Alpha, NeXTStep, & others). + + * Common Lisp **Note Forthcoming GNUs::* (LspEmcT, SrcCD) + + GNU Common Lisp (GCL, formerly known as Kyoto Common Lisp) is a compiler + & interpreter for Common Lisp. GCL is very portable & extremely + efficient on a wide class of applications, & compares favorably in + performance with commercial Lisps on several large theorem-prover & + symbolic algebra systems. GCL supports the CLtL1 specification but is + moving towards the proposed ANSI standard. + + GCL compiles to C & then uses the native optimizing C compiler (e.g., + GCC). A function with a fixed number of args & one value turns into a C + function of the same number of args, returning one value--so GCL is + maximally efficient on such calls. Its conservative garbage collector + gives great freedom to the C compiler to put Lisp values in registers. + It has a source level Lisp debugger for interpreted code & displays + source code in an Emacs window. Its profiler (based on the C profiling + tools) counts function calls & the time spent in each function. + + There is now a built-in interface to the Tk widget system. It runs in a + separate process, so users may monitor progress on Lisp computations or + interact with running computations via a windowing interface. + + There is also an Xlib interface via C (xgcl-2). CLX runs with GCL, as + does PCL (see "PCL" later in this article). *Note Forthcoming GNUs::, + for plans regarding GCL or for recent developments. + + GCL version 2.2 is released under the GNU Library General Public License. + + * CLX (LspEmcT, SrcCD) + + CLX is an X Window interface library for GCL. + + * `cpio' (DosBC, SrcCD, UtilD, UtilT) + + `cpio' is an archive program with all the features of SVR4 `cpio', + including support for the final POSIX 1003.1 `ustar' standard. `mt', a + program to position magnetic tapes, is included with `cpio'. + + * CVS (SrcCD, UtilT) + + CVS, the Concurrent Version System, manages software revision & release + control at a multi-developer, multi-directory, multi-group site. It + works best with RCS versions 4 and above, but will parse older RCS + formats, losing some of CVS's fancier features. (See Berliner, Brian, + "CVS-II: Parallelizing Software Development," `Proceedings of the Winter + 1990 USENIX Association Conference'; ask `office@usenix.org' how to get + a copy.) + + * DejaGnu (LangT, SrcCD) + + DejaGnu is a framework to test programs with a single front end for all + tests. The framework's flexibility & consistency makes it easy to write + tests. + + DejaGnu comes with `expect', which runs scripts to conduct dialogs with + programs. + + * Diffutils (DjgpD, DosBC, SrcCD, UtilT) + + GNU `diff' compares files showing line-by-line changes in several + flexible formats. It is much faster than traditional Unix versions. The + Diffutils package contains `diff', `diff3', `sdiff', & `cmp'. Recent + improvements include more consistent handling of character sets and a + new `diff' option to do all input/output in binary; this is useful on + some non-POSIX hosts. Plans for the Diffutils package include support + for internationalization (e.g., error messages in Chinese) and for some + non-Unix PC environments. + + * DJGPP (BinCD, DjgpD, DosBC) + + DJ Delorie has ported GCC/G++ (see "GCC" in this article) to i386s + running MS-DOS. DJGPP has a 32-bit i386 DOS extender with a symbolic + debugger; development libraries; & ports of Bison, `flex', & Binutils. + Full source code is provided. It needs at least 5MB of hard disk space + to install & 512K of RAM to use. It supports SVGA (up to 1024x768), XMS + & VDISK memory allocation, `himem.sys', VCPI (e.g., QEMM, DESQview, & + 386MAX), & DPMI (e.g., Windows 3.x, OS/2, QEMM, & QDPMI). + + The FSF offers it on the *Note Compiler Tools Binaries CD-ROM::, and on + the *Note DJGPP Diskettes::. FTP from `oak.oakland.edu' in + `/simtel/vendors/djgpp/' (or another SimTel mirror site). + + To join a DJGPP users mailing list, ask + `djgpp-request@sun.soe.clarkson.edu'. + + * `dld' (LangT, SrcCD) + + `dld' is a dynamic linker written by W. Wilson Ho. Linking your program + with the `dld' library allows you to dynamically load object files into + the running binary. Currently supported are VAX (Ultrix), Sun 3 (SunOS + 3.4 & 4.0), SPARC (SunOS 4.0), Sequent Symmetry (Dynix), & Atari ST. + + * `doschk' (DosBC, SrcCD, UtilT) + + This program is a utility to help software developers ensure that their + source file names are distinguishable on System V platforms with + 14-character filenames and on MS-DOS systems with 8+3 character + filenames. + + * `ecc' (LangT, SrcCD) + + `ecc' is a Reed-Solomon error correction checking program, which can + correct three byte errors in a block of 255 bytes and detect more severe + errors. Contact `paulf@stanford.edu' for more information. + + * `ed' (SrcCD, UtilT) + + `ed' is the standard text editor. It is line-oriented and can be used + interactively or in scripts. + + * Elib (DosBC, LspEmcT, SrcCD) + + Elib is a small library of Emacs Lisp functions, including routines for + using AVL trees and doubly-linked lists. + + * Elisp archive (SrcCD) + + This is a snapshot of Ohio State's GNU Emacs Lisp FTP Archive. FTP it + from `archive.cis.ohio-state.edu' in `/pub/gnu/emacs/elisp-archive'. + + * Emacs **Note Forthcoming GNUs:: for future plans.* + + In 1975, Richard Stallman developed the first Emacs, an extensible, + customizable real-time display editor & computing environment. GNU Emacs + is his second implementation. It offers true Lisp--smoothly integrated + into the editor--for writing extensions & provides an interface to the X + Window System. It runs on Unix, MS-DOS, & Windows NT. In addition to + its powerful native command set, Emacs has extensions which emulate the + editors vi & EDT (Digital's VMS editor). Emacs has many other features + which make it a full computing support environment. Source for the `GNU + Emacs Manual' & a reference card comes with the software. Sources for + the `GNU Emacs Lisp Reference Manual' & `Programming in Emacs Lisp: An + Introduction' are distributed in separate packages. *Note + Documentation::. + + * Emacs 18 (LspEmcT, SrcCD, VMSEmcsT) [FSFrc] + + Emacs 18.59 is the last release of version 18 from the FSF. We no longer + maintain it. It supports these Unix systems that Emacs 19 doesn't + support (please help port Emacs 19 to these systems): Alliant FX/80, + Altos 3068, Amdahl (UTS), AT&T (3Bs & 7300 PC), CCI 5/32 & 6/32, + Celerity, Digital (VAX VMS), Dual, Encore (APC, DPC, & XPC), HLH Orion + (original & 1/05), ISI (Optimum V, 80386), Masscomp, NCR Tower 32 (SVR2 + & SVR3), Nixdorf Targon 31, Nu (TI & LMI), pfa50, Plexus, Prime EXL, + Stride (system rel. 2), Tahoe, Tandem Integrity S2, Tektronix 16000, + Triton 88, Ustation E30 (SS5E), Whitechapel (MG1), & Wicat. + + * Emacs 19 (DosBC, EmcsD, LspEmcT, SrcCD) [FSFman(s), FSFrc] + + Emacs 19 works with character-only terminals & with the X Window System + (with or without an X toolkit). New features in Emacs 19 include: + multiple X windows ("frames" to Emacs), with a separate X window for the + minibuffer or a minibuffer attached to each X window; property lists + associated with regions of text in a buffer; multiple fonts & colors + defined by those properties; simplified/improved processing of function + keys, mouse clicks, and mouse movement; X selection processing, + including clipboard selections; hooks to be run if the point or mouse + moves outside a certain range; menu bars and popup menus defined by + keymaps; scrollbars; before- and after-change hooks; a source-level + debugger for Emacs Lisp programs; floating point numbers; improved + buffer allocation, including returning storage to the system when a + buffer is killed; interfacing with the X resource manager; many updated + libraries; integrated support for version control systems (RCS, CVS, & + SCCS); Autoconf based configuration; and support for European character + sets. + + Recent features include the ability to open frames on more than one X + display from a single Emacs job, operation on MS-DOS, MS Windows, and + Windows NT, displaying multiple views of an outline at the same time, + support for the Athena & Motif widgets, version control support for CVS + and for multiple branches, text properties for formatting text, commands + to edit text properties and save them in files, and GNU-standard + long-named command line options. + + Emacs 19.30 works on: Acorn RISC (RISCiX); Alliant FX/2800 (BSD); Alpha + (OSF/1); Apollo (DomainOS); Bull DPX/2 2nn & 3nn (SysV.3) & sps7 + (SysV.2); Clipper; Convex (BSD); Cubix QBx (SysV); Data General Aviion + (DGUX); DEC MIPS (Ultrix 4.2, OSF/1, not VMS); Elxsi 6400 (SysV); Gould + Power Node & NP1 (4.2 & 4.3BSD); Harris Night Hawk 1200, 3000, 4000 & + 5000 (cxux); Honeywell XPS100 (SysV); HP 9000 series 200, 300, 700, 800 + (but not 500) (4.3BSD; HP-UX 7, 8, 9); Intel i386/i486/Pentium + (GNU/Linux, 386BSD, AIX, BSDI/386, FreeBSD, Esix, ISC, MS-DOS (*note + MS-DOS Diskettes::., & *Note MS-DOS Book with CD-ROM::), NetBSD, + SCO3.2v4, Solaris, SysV, Xenix, WindowsNT); IBM RS/6000 (AIX 3.2) & + RT/PC (AIX, BSD); Motorola Delta 147 & 187 (SysV.3, SysV.4, m88kbcs); + National Semiconductor 32K (Genix); NeXT (BSD, Mach 2 w/ NeXTStep 3.0); + Paragon (OSF/1); Prime EXL (SysV); Pyramid (BSD); Sequent Symmetry (BSD, + ptx); Siemens RM400 & RM600 (SysV); SGI Iris 4D (Irix 4.x & 5.x); Sony + News/RISC (NewsOS); Stardent i860 (SysV); Sun 3 & 4, SPARC 1, 1+, 2, 10, + Classic (SunOS 4.0, 4.1, Solaris 2.0-2.3); Tadpole 68k (SysV); Tektronix + XD88 (SysV.3) & 4300 (BSD); & Titan P2 & P3 (SysV). + + Other configurations supported by Emacs 18 should work with few changes + in Emacs 19; as users tell us more about their experiences with different + systems, we will augment the list. Also see *Note Forthcoming GNUs::. + + * `es' (SrcCD, UtilT) + + `es' is an extensible shell (based on `rc') with first class functions, + lexical scope, exceptions and rich return values (i.e., functions can + return values other than just numbers). `es''s extensibility comes from + the ability to modify and extend the shell's built-in services, such as + path searching and redirection. Like `rc', it is great for both + interactive use and scripting, particularly since its quoting rules are + much less baroque than the C and Bourne shells. + + * `f2c' (LangT, SrcCD) + + `f2c' converts Fortran-77 source into C or C++, which can be compiled + with GCC or G++. Get bug fixes by FTP from site `netlib.att.com' or by + email from `netlib@research.att.com'. See the file + `/netlib/f2c/readme.Z' for a summary. Also see the GNU Fortran item + later in this article, and in *Note Forthcoming GNUs::. + + * `ffcall' (SrcCD) + + `ffcall' is a C library for implementing foreign function calls in + embedded interpreters by Bill Triggs and Bruno Haible. It allows C + functions with arbitrary argument lists and return types to be called or + emulated (callbacks). + + * Fileutils (DosBC, SrcCD, UtilT) + + The Fileutils work on files: `chgrp', `chmod', `chown', `cp', `dd', `df', + `dir', `du', `install', `ln', `ls', `mkdir', `mkfifo', `mknod', `mv', + `rm', `rmdir', `sync', `touch', & `vdir'. + + * Findutils (DosBC, SrcCD, UtilT) + + `find' is frequently used both interactively and in shell scripts to + find files which match certain criteria and perform arbitrary operations + on them. Also included are `locate', which scans a database for file + names that match a pattern, and `xargs', which applies a command to a + list of files. + + * Finger (SrcCD, UtilT) + + GNU Finger has more features than other finger programs. For sites with + many hosts, a single host may be designated as the finger "server" host + and other hosts at that site configured as finger "clients". The server + host collects information about who is logged in on the clients. To + finger a user at a GNU Finger site, a query to any of its client hosts + gets useful information. GNU Finger supports many customization + features, including user output filters and site programmable output for + special target names. + + * `flex' (BinCD, DjgpD, DosBC, LangT, SrcCD, UtilD) [FSFman, FSFrc] + + `flex' is a replacement for the `lex' scanner generator. `flex' was + written by Vern Paxson of the Lawrence Berkeley Laboratory and generates + far more efficient scanners than `lex' does. Sources for the `Flex + Manual' and reference card are included (*note Documentation::.). + + * Fortran (`g77') **Note Forthcoming GNUs::* (LangT, SrcCD) + + GNU Fortran (`g77'), developed by Craig Burley, is available for public + beta testing on the Internet. For now, `g77' produces code that is + mostly object-compatible with `f2c' & uses the same run-time library + (`libf2c'). + + * Fontutils (SrcCD, UtilT) + + The Fontutils convert between font formats, create fonts for use with + Ghostscript or TeX (starting with a scanned type image & converting the + bitmaps to outlines), et al. It includes: `bpltobzr', `bzrto', + `charspace', `fontconvert', `gsrenderfont', `imageto', `imgrotate', + `limn', & `xbfe'. + + * GAWK (DosBC, LangT, SrcCD) [FSFman] + + GAWK is upwardly compatible with the latest POSIX specification of + `awk'. It also provides several useful extensions not found in other + `awk' implementations. Texinfo source for the `GAWK Manual' comes with + the software (*note Documentation::.). + + * GCC (BinCD, DjgpD, DosBC, LangT, SrcCD, VMSCmpT) [FSFman] + + Version 2 of the GNU C Compiler supports the languages C, C++, and + Objective-C; the source file name suffix or a compiler option selects + the language. Objective-C support was donated by NeXT. The runtime + support needed to run Objective-C programs is now distributed with GCC + (this does not include any Objective-C classes aside from `object', but + see "GNUStep" in *Note Forthcoming GNUs::). As much as possible, G++ is + kept compatible with the evolving draft ANSI standard, but not with + `cfront' (AT&T's compiler), which has been diverging from ANSI. + + The GNU C Compiler is a fairly portable optimizing compiler which + performs automatic register allocation, common sub-expression + elimination, invariant code motion from loops, induction variable + optimizations, constant propagation and copy propagation, delayed + popping of function call arguments, tail recursion elimination, + integration of inline functions and frame pointer elimination, + instruction scheduling, loop unrolling, filling of delay slots, leaf + function optimization, optimized multiplication by constants, a certain + amount of common subexpression elimination (CSE) between basic blocks + (though not all of the supported machine descriptions provide for + scheduling or delay slots), a feature for assigning attributes to + instructions, and many local optimizations that are automatically + deduced from the machine description. + + GCC can open-code most arithmetic on 64-bit values (type `long long + int'). It supports extended floating point (type `long double') on the + 68k; other machines will follow. + + GCC supports full ANSI C, traditional C, & GNU C extensions (including: + nested functions support, nonlocal gotos, & taking the address of a + label). + + GCC can generate a.out, COFF, ELF, & OSF-Rose files when used with a + suitable assembler. It can produce debugging information in these + formats: BSD stabs, COFF, ECOFF, ECOFF with stabs, & DWARF. + + GCC generates code for many CPUs, including the a29k, Alpha ARM AT&T + DSP1610 Clipper Convex cN Elxsi Fujitsu Gmicro i370, i860, i960, + MIL-STD-1750a, MIPS, ns32k, PDP-11, Pyramid, ROMP, RS/6000, SH, SPUR, + Tahoe, VAX, & we32k. Position-independent code is generated for the + Clipper, Hitachi H8/300, HP-PA (1.0 & 1.1), i386/i486/Pentium, m68k, + m88k, SPARC, & SPARClite. + + Operating systems supported include: GNU/Hurd, GNU/Linux, ACIS, AIX, AOS, + BSD, Clix, Concentrix, Ctix, DG/UX, Dynix, FreeBSD, Genix, HP-UX, Irix, + ISC, Luna, LynxOS, Minix, NetBSD, NewsOS, NeXTStep, OS/2, OSF, OSF-Rose, + RISCOS, SCO, Solaris 2, SunOS 4, System/370, SysV, Ultrix, Unos, VMS, & + Windows/NT. + + Using the configuration scheme for GCC, building a cross-compiler is as + easy as building a native compiler. + + Version 1 of GCC, G++, & libg++ are no longer maintained. + + Texinfo source for the `Using and Porting GNU CC' manual, is included + with GCC (*note Documentation::.). + + *Note Forthcoming GNUs::, for plans for later releases of GCC. + + * GDB (BinCD, DjgpD, DosBC, LangT, SrcCD) [FSFman, FSFrc] + + GDB, the GNU DeBugger, is a source-level debugger for C, C++, & Fortran. + + GDB can debug both C and C++ programs, and will work with executables + produced by many different compilers; however, C++ debugging will have + some limitations if you do not use GCC. + + GDB has a command line user interface, and Emacs has a GDB mode. Two X + interfaces (not distributed or maintained by the FSF) are: `gdbtk' (FTP + it from `ftp.cygnus.com' in directory `/pub/gdb'); and `xxgdb' (FTP it + from `ftp.x.org' in directory `/contrib/utilities'). + + Executable files and symbol tables are read via the BFD library, which + allows a single copy of GDB to debug programs with multiple object file + formats (e.g., a.out, COFF, ELF). Other features include a rich command + language, remote debugging over serial lines or TCP/IP, and watchpoints + (breakpoints triggered when the value of an expression changes). + + GDB uses a standard remote interface to a simulator library which (so + far) has simulators for the Hitachi H8/300, H8/500, Super-H, & Zilog + Z8001/2. + + GDB can perform cross-debugging. To say that GDB "targets" a platform + means it can perform native or cross-debugging for it. To say that GDB + can "host" a given platform means that it can be built on it, but cannot + necessarily debug native programs. + + GDB can: + + * "target" & "host": Amiga 3000 (Amix), DEC Alpha (OSF/1), DECstation + 3100 & 5000 (Ultrix), HP 9000/300 (BSD, HP-UX), HP 9000/700 (HP-UX + 9, 10), i386 (GNU/Hurd, GNU/Linux, BSD, FreeBSD, LynxOS, NetBSD, + SCO), IBM RS/6000 (AIX, LynxOS), Motorola Delta m88k (System V, + CX/UX), PC532 (NetBSD), Motorola m68k MVME-167 (LynxOS), NCR 3000 + (SVR4), SGI (Irix V3, V4, V5), SONY News (NewsOS 3.x), SPARC + (LynxOS, NetBSD, Solaris, & SunOS 4.1 ) Sun-3 (SunOS 4.1), & + Ultracomputer (a29k running Sym1). + + * "target", but not "host": AMD 29000 (COFF & a.out), Hitachi H8/300, + Hitachi SH, i386 (a.out, COFF, OS/9000), i960 (Nindy, VxWorks), + m68k/m68332 (a.out, COFF, VxWorks), MIPS (ELF, IDT ecoff), Fujitsu + SPARClite (a.out, COFF), & Z8000. + + * "host", but not "target": IBM RT/PC (AIX), HP/Apollo 68k (BSD), & + Apple Macintosh (MacOS). + + Sources for the manual, `Debugging with GDB', and a reference card are + included (*note Documentation::.). + + * `gdbm' (LangT, SrcCD, UtilD) + + `gdbm' is the GNU replacement for the traditional `dbm' and `ndbm' + libraries. It implements a database using quick lookup by hashing. + `gdbm' does not ordinarily make sparse files (unlike its Unix and BSD + counterparts). + + * `gettext' (LangT, SrcCD) + + The GNU `gettext' tool set contains everything maintainers need to + internationalize a package for messages, tools that help translators + localize messages to their native language, once a package has been + internationalized. *Note Help the GNU Translation Project::. + + * Ghostscript (DosBC, SrcCD, UtilT) + + The GNU release of Ghostscript is an interpreter for the Postscript + graphics language (*note Forthcoming GNUs::., for future plans). + + The current version of GNU Ghostscript is 2.6.2. Features include the + ability to use the fonts provided by the platform on which Ghostscript + runs (X Window System & Microsoft (MS) Windows), resulting in much + better-looking screen displays; improved text file printing (like + `enscript'); a utility to extract the text from a Postscript language + document; a much more reliable (and faster) MS Windows implementation; + support for MS C/C++ 7.0; drivers for many new printers ( e.g. the + SPARCprinter), & for TIFF/F (Fax) file format; many more Postscript Level + 2 facilities, including most of the color space facilities (but not + patterns); & the ability to switch between Level 1 & Level 2 + dynamically. Version 2.6.2 adds a LaserJet 4 driver & several important + bug fixes to version 2.6.1. + + Ghostscript executes commands in the Postscript language by writing + directly to a printer, drawing on an X window, or writing to files for + printing later or manipulating with other graphics programs. + + Ghostscript includes a C-callable graphics library (for client programs + that do not want to deal with the Postscript language). It also supports + i386/i486/Pentiums running MS-DOS with EGA, VGA or SuperVGA graphics (but + please do *not* ask the FSF staff any questions about this; we do not + use MS-DOS). + + * Ghostview (DosBC, SrcCD, UtilT) + + Tim Theisen, `ghostview@cs.wisc.edu', created Ghostview, a previewer for + multi-page files with an X Window interface. Ghostview & Ghostscript + work together; Ghostview creates a viewing window & Ghostscript draws in + it. + + * GIT (SrcCD, UtilT) + + GIT is a set of interactive tools: an extensible file system browser, an + ASCII/hex file viewer, a process viewer/killer, & other related + utilities & shell scripts. It can be used to increase the speed & + efficiency of many daily tasks, such as copying & moving files & + directories, invoking editors, compressing/uncompressing files, creating + & expanding archives, compiling programs, sending mail, etc. It looks + nice, has colors (if the standard ANSI color sequences are supported), & + is user-friendly. + + * `gmp' **Note Forthcoming GNUs::* (LangT, SrcCD) + + GNU `mp' is a library for arbitrary precision arithmetic on signed + integers and rational numbers. It has a rich set of functions with a + regular interface. + + * GN (SrcCD) + + GN is a gopher/HTTP server. It recognizes whether the request came from + an HTTP (World Wide Web) or gopher client and responds accordingly. + + * Gnans (SrcCD) + + Gnans is a program (and language) for the numerical study of + deterministic and stochastic dynamical systems. The dynamical systems + may evolve in continuous or discrete time. Gnans has graphical & + command line interfaces. + + * GNATS (SrcCD, UtilT) + + GNATS (GNats: A Tracking System, not to be confused with GNAT, The GNU + Ada Translator) is a bug-tracking system. It is based upon the paradigm + of a central site or organization which receives problem reports and + negotiates their resolution by electronic mail. Although it has been + used primarily as a software bug-tracking system so far, it is + sufficiently generalized that it could be used for handling system + administration issues, project management, or any number of other + applications. + + * `gnuplot' (SrcCD, UtilT, WdwsD) + + `gnuplot' is an interactive program for plotting mathematical + expressions and data. It plots both curves (2 dimensions) & surfaces (3 + dimensions). Curiously, it was neither written nor named for the GNU + Project; the name is a coincidence. Various GNU programs use `gnuplot'. + + * `gnuserv' (LspEmcT, SrcCD) + + `gnuserv' is a enhanced version of Emacs' `emacsclient' program. It + lets the user direct a running Emacs to edit files or evaluate arbitrary + Emacs Lisp constructs from another process. + + * GnuGo (SrcCD, UtilT) + + GnuGo plays the game of Go (Wei-Chi); version 1.2 was released with minor + changes for portability, but it is not yet very sophisticated. + + * `gperf' (LangT, SrcCD) + + `gperf' generates perfect hash tables. The C version is in package + cperf. The C++ version is in libg++. Both produce hash functions in + either C or C++. + + * Graphics (SrcCD, UtilT) + + GNU Graphics produces x-y plots from ASCII or binary data. It outputs + in Postscript, Tektronix 4010 compatible, and Unix device-independent + "plot" formats. It has a previewer for the X Window System. Features + include a `spline' interpolation program; examples of shell scripts + using `graph' and `plot'; a statistics toolkit; and output in TekniCAD + TDA and ln03 file formats. Email bugs or queries to Rich Murphey, + `Rich@lamprey.utmb.edu'. + + * grep (DosBC, SrcCD, UtilT) + + This package has GNU `grep', `egrep', and `fgrep', which find lines that + match entered patterns. They are much faster than the traditional Unix + versions. + + * Groff (DjgpD, DosBC, SrcCD, UtilT) + + Groff is a document formatting system based on a device-independent + version of `troff' & includes: `eqn', `nroff', `pic', `refer', `tbl', + `troff'; the `man', `ms', & `mm' macros; & drivers for Postscript, TeX + `dvi' format, and typewriter-like devices. Groff's `mm' macro package + is almost compatible with the DWB `mm' macros with several extensions. + Also included is a modified version of the Berkeley `me' macros and an + enhanced version of the X11 `xditview' previewer. A driver for the + LaserJet 4 series of printers is currently in test. Written in C++, + these programs can be compiled with GNU C++ Version 2.5 or later. + + Groff users are encouraged to contribute enhancements. Most needed are + complete Texinfo documentation, a `grap' emulation (a `pic' preprocessor + for typesetting graphs), a page-makeup postprocessor similar to `pm' + (see `Computing Systems', Vol. 2, No. 2; ask `office@usenix.org' how to + get a copy), and an ASCII output class for `pic' to integrate `pic' with + Texinfo. Questions and bug reports from users who have read the + documentation provided with Groff can be sent to + `bug-groff@prep.ai.mit.edu'. + + * `gzip' (DjgpD, DosBC, LangT, LspEmcT, SrcCD, UtilT) + + `gzip' can expand LZW-compressed files but uses another, unpatented + algorithm for compression which generally produces better results. It + also expands files compressed with System V's `pack' program. + + * `hello' (DosBC, SrcCD, UtilT) + + The GNU `hello' program produces a familiar, friendly greeting. It + allows non-programmers to use a classic computer science tool which would + otherwise be unavailable to them. Because it is protected by the GNU + General Public License, users are free to share and change it. `hello' + is also a good example of a program that meets the GNU coding standards. + + Like any truly useful program, `hello' contains a built-in mail reader. + + * `hp2xx' (SrcCD, UtilT) + + GNU `hp2xx' reads HP-GL files, decomposes all drawing commands into + elementary vectors, and converts them into a variety of vector and raster + output formats. It is also an HP-GL previewer. Currently supported + vector formats include encapsulated Postscript, Uniplex RGIP, Metafont, + various special TeX-related formats, and simplified HP-GL (line drawing + only) for imports. Raster formats supported include IMG, PBM, PCX, & + HP-PCL (including Deskjet & DJ5xxC support). Previewers work under X11 + (Unix), OS/2 (PM & full screen), & MS-DOS (SVGA, VGA, & HGC). + + * HylaFAX (SrcCD, UtilT) + + HylaFAX (once named FlexFAX) is a facsimile system for Unix systems. It + supports sending, receiving, & polled retrieval of facsimile, as well as + transparent shared data use of the modem. + + Details are available on the World Wide Web at: + `http://www.vix.com/hylafax/'. + + * Hyperbole (LspEmcT, SrcCD) + + Hyperbole, written by Bob Weiner in Emacs Lisp, is an open, efficient, + programmable information management & hypertext system, intended for + everyday work on any platform supported by Emacs. + + * `indent' (DosBC, LangT, SrcCD, UtilD) + + GNU `indent' formats C source code into the GNU indentation style. It + also has options to output BSD, K&R, or your own special style. GNU + `indent' is more robust & provides more functionality than other such + programs, including handling C++ comments. It runs on a number of + systems, including DOS & VMS. + + The next version will also format C++ source code. + + * Ispell (DosBC, SrcCD, UtilT) + + Ispell is an interactive spell checker that suggests "near misses" to + replace unrecognized words. System & user-maintained dictionaries for + multiple languages can be used. Standalone & Emacs interfaces are + available. + + Previously, the FSF had its own version of Ispell ("Ispell 4.0"), but + has dropped it for a parallel branch that has had more development + ("Ispell 3.1"). (Ispell 3 was an earlier release by the original Ispell + author, but others have since made it more sophisticated.) + + * JACAL *Not available from the FSF except by FTP* + + JACAL is a symbolic mathematics system for the manipulation and + simplification of algebraic equations and expressions. New in JACAL is + multivariate factoring from Michael Thomas `(mjt@octavia.anu.edu.au)'. + See JACAL's documentation at `http://www-swiss.ai.mit.edu/~jaffer/'. + + JACAL is written in Scheme using the SLIB portable Scheme Library. It + comes with SCM, an IEEE P1178 & R4RS compliant version of Scheme written + in C. SCM runs on Amiga, Atari-ST, MS-DOS, OS/2, NOS/VE, Unicos, VMS, + Unix, & similar systems. + + The FSF is not distributing JACAL on any physical media. To get an IBM + PC floppy disk with the freely redistributable source & executable + files, send $99.00 to: + + Aubrey Jaffer + 84 Pleasant Street + Wakefield, MA 01880-1846 + USA + + * `less' (DosBC, SrcCD, UtilD, UtilT) + + `less' is a display paginator similar to `more' and `pg', but with + various features (such as the ability to scroll backwards) that most + pagers lack. + + * `m4' (DosBC, SrcCD, UtilD, UtilT) + + GNU `m4' is an implementation of the traditional Unix macro processor. + It is mostly SVR4 compatible, although it has some extensions (e.g., + handling more than 9 positional parameters to macros). `m4' also has + built-in functions for including files, running shell commands, doing + arithmetic, etc. + + * `make' (BinCD,DjgpD,DosBC,LangT,LspEmcT,SrcCD,UtilD,UtilT)[FSFman] + + GNU `make' supports POSIX 1003.2 and has all but a few obscure features + of the BSD and System V versions of `make'. GNU extensions include long + options, parallel compilation, flexible implicit pattern rules, + conditional execution, & powerful text manipulation functions. Texinfo + source for the `Make Manual' comes with the program (*note + Documentation::.). + + * MandelSpawn (SrcCD, UtilT) + + A parallel Mandelbrot generation program for the X Window System. + + * Midnight Commander (`mc') (SrcCD, UtilT) + + The Midnight Commander is a user friendly and colorful Unix file manager + and shell, useful to novice and guru alike. It has a built-in virtual + file system that allows the user to manipulate files inside tar files + (both regular and compressed) or files on remote machines using the FTP + protocol. + + * `mkisofs' (SrcCD, UtilT) + + `mkisofs' is a pre-mastering program to generate an ISO 9660 file system. + It takes a snapshot of a directory tree, and makes a binary image which + corresponds to an ISO 9660 file system when written to a block device. + + It can also generate the System Use Sharing Protocol records of the Rock + Ridge Interchange Protocol (used to further describe the files in an ISO + 9660 file system to a Unix host; it provides information such as longer + filenames, uid/gid, permissions, and device nodes). + + Also included is `cdwrite', which can take an image from `mkisofs' and + write it to a Phillips CD recorder system attached to a GNU/Linux system. + + * mtools (SrcCD, UtilT) + + mtools is a set of public domain programs to allow Unix systems to read, + write, and manipulate files on an MS-DOS file system (usually a + diskette). + + * MULE (DosBC, EmcsD, LspEmcT, SrcCD) + + MULE is a MULtilingual Enhancement to GNU Emacs. MULE text buffers can + contain a mix of characters from many languages including: Japanese, + Chinese, Korean, Vietnamese, Thai, modern European languages (including + Greek & Russian), Arabic, & Hebrew. MULE also provides input methods + for all of them. MULE is being merged into GNU Emacs. *Note GNU & + Other Free Software in Japan::, for more information about MULE. + + * `ncurses' (LangT, SrcCD) + + `ncurses' is an implementation of the Unix `curses' library for + developing screen based programs that are terminal independent. + + * NetHack (SrcCD, UtilT) + + NetHack is a Rogue-like adventure game supporting character & X displays. + + * NIH Class Library (LangT, SrcCD) + + The NIH Class Library (once known as "OOPS", Object-Oriented Program + Support) is a portable collection of C++ classes (similar to those in + Smalltalk-80) written in C++ by Keith Gorlen of the National Institutes + of Health (NIH). + + * `nvi' (SrcCD, UtilT) + + `nvi' is a free implementation of the `vi'/`ex' Unix editor. It has + most of the functionality of the original `vi'/`ex', except "open" mode + & the `lisp' option, which will be added. Enhancements over `vi'/`ex' + include split screens with multiple buffers, handling 8-bit data, + infinite file & line lengths, tag stacks, infinite undo, & extended + regular expressions. It runs under GNU/Linux, BSD, NetBSD, FreeBSD, + BSDI, AIX, HP-UX, DGUX, IRIX, PSF, PTX, Solaris, SunOS, Ultrix, and + Unixware, & should port easily to other systems. + + * Oaklisp (SrcCD) + + Oaklisp is a fast, portable, object-oriented Scheme with first class + types. + + * Objective-C Library **Note Forthcoming GNUs::* (LangT, SrcCD) + + Our Objective-C Class Library (`libobjects') has general-purpose, + non-graphical Objective-C objects written by Andrew McCallum & other + volunteers. It includes collection classes for using groups of objects + & C types, I/O streams, coders for formatting objects & C types to + streams, ports for network packet transmission, distributed objects + (remote object messaging), string classes, exceptions, pseudo-random + number generators, & time handling facilities. It also includes the + foundation classes for the GNUStep project; over 70 of them have already + been implemented. The library is known to work on i386/i486/Pentiums, + m68k, SPARC, MIPS, HPPA, & RS/6000. Send queries & bug reports to + `mccallum@gnu.ai.mit.edu'. + + * OBST (LangT, SrcCD) + + OBST is a persistent object management system with bindings to C++. + OBST supports incremental loading of methods. Its graphical tools + require the X Window System. It features a hands-on tutorial including + sample programs. It compiles with G++, and should install easily on + most Unix platforms. + + * Octave (LangT, SrcCD) + + Octave is a high-level language similar to MATLAB, primarily intended + for numerical computations. It has a convenient command line interface + for solving linear & nonlinear problems numerically. + + Octave does arithmetic for real and complex scalars and matrices, solves + sets of nonlinear algebraic equations, integrates systems of ordinary + differential & differential-algebraic equations, and integrates + functions over finite & infinite intervals. Two- & three-dimensional + plotting is available using `gnuplot'. + + Send queries and bug reports to: `bug-octave@bevo.che.wisc.edu'. + + Texinfo source is included for a 220+ page Octave manual, not yet + published by the FSF. + + * Oleo (SrcCD, UtilT) + + Oleo is a spreadsheet program (better for you than the more expensive + spreadsheets). It supports the X Window System and character-based + terminals, and can output Embedded Postscript renditions of spreadsheets. + Keybindings should be familiar to Emacs users and are configurable. + Oleo supports multiple variable-width fonts when used under the X Window + System or outputting to Postscript devices. + + * `p2c' (LangT, SrcCD) + + `p2c' is Dave Gillespie's Pascal-to-C translator. It inputs many + different dialects (HP, ISO, Turbo, VAX, et al.) and generates readable, + maintainable, portable C. + + * `patch' (DosBC, SrcCD, UtilT) + + `patch' is our version of Larry Wall's program to take `diff''s output + and apply those differences to an original file to generate the modified + version. + + * PCL (LspEmcT, SrcCD) + + PCL is a free implementation of a large subset of CLOS, the Common Lisp + Object System. It runs under both GCL and CLISP, mentioned above. + + * `perl' (DosBC, LangT, SrcCD) + + Larry Wall's `perl' combines the features and capabilities of `sed', + `awk', `sh', and C. It also provides interfaces to the Unix system + calls and many C library routines. + + * `pine' (SrcCD, UtilT) + + `pine' is a friendly menu-driven electronic mail manager and user + interface . + + * `ptx' **Note Forthcoming GNUs::* (SrcCD, UtilD, UtilT) + + GNU `ptx' is our version of the traditional permuted index generator. + It handles multiple input files at once, produces TeX compatible output, + and generates readable "KWIC" (KeyWords In Context) indexes without + using `nroff'. + + It does not yet handle input files that do not fit in memory all at once. + + * `rc' (SrcCD, UtilT) + + `rc' is a shell that features a C-like syntax (much more so than `csh') + and far cleaner quoting rules than the C or Bourne shells. It's + intended to be used interactively, but is also great for writing + scripts. It inspired the shell `es'. + + * RCS (SrcCD, UtilD, UtilT) + + RCS, the Revision Control System, is used for version control & + management of software projects. Used with GNU `diff', RCS can handle + binary files (executables, object files, 8-bit data, etc). RCS now + conforms to GNU configuration standards and to POSIX 1003.1b-1993. Also + see the CVS item above. + + * `recode' **Note Forthcoming GNUs::* (SrcCD, UtilT) + + GNU `recode' converts files between character sets and usages. When + exact transliterations are not possible, it may delete the offending + characters or fall back on approximations. This program recognizes or + outputs nearly 150 different character sets and is able to transliterate + files between almost any pair. Most RFC 1345 character sets are + supported. + + * `regex' (LangT, SrcCD) + + The GNU regular expression library supports POSIX.2, except for + internationalization features. It is included in many GNU programs which + do regular expression matching & is available separately. An alternate + regular expression package, `rx', is faster than `regex' in most cases & + will replace `regex' over time. + + * `rx' (LangT, SrcCD) + + Tom Lord has written `rx', a new regular expression library which is + faster than the older GNU `regex' library. It is now being distributed + with `sed' and `tar'. `rx' will be used in the next releases of `m4' + and `ptx'. + + * SAOimage (SrcCD, UtilT) + + SAOimage is an X-based astronomical image viewer. It reads data images + and displays them with a pseudocolor colormap. There is full interactive + control of the colormap, reading, and writing of colormaps, etc. + + * Scheme *For more information, see *Note Scheme Tape::* (SrcCD, SchmT) + + * `screen' (SrcCD, UtilT) + + `screen' is a terminal multiplexer that runs several separate "screens" + (ttys) on a single character-based terminal. Each virtual terminal + emulates a DEC VT100 plus several ISO 2022 and ISO 6429 (ECMA 48, ANSI + X3.64) functions, including color. Arbitrary keyboard input translation + is also supported. `screen' sessions can be detached and resumed later + on a different terminal type. Output in detached sessions is saved for + later viewing. + + * `sed' (DjgpD, DosBC, SrcCD, UtilD, UtilT) + + `sed' is a stream-oriented version of `ed'. It comes with the `rx' + library. + + * Sharutils (SrcCD, UtilT) + + `shar' makes so-called shell archives out of many files, preparing them + for transmission by electronic mail services; `unshar' helps unpack + these shell archives after reception. `uuencode' and `uudecode' are + POSIX compliant implementations of a pair of programs to transform files + into a format that can be safely transmitted across a 7-bit ASCII link. + + * Shellutils (DosBC, SrcCD, UtilT) + + They are: `basename', `date', `dirname', `echo', `env', `expr', `false', + `groups', `hostname', `id', `logname', `nice', `nohup', `pathchk', + `printenv', `printf', `pwd', `sleep', `stty', `su', `tee', `test', + `true', `tty', `uname', `users', `who', `whoami', & `yes'. + + * Shogi (SrcCD, UtilT) + + Shogi is a Japanese game similar to Chess; a major difference is that + captured pieces can be returned into play. + + GNU Shogi is a variant of GNU Chess; it implements the same features & + similar heuristics. As a new feature, sequences of partial board + patterns can be introduced to help the program play toward specific + opening patterns. It has both character and X display interfaces. + + It is primarily supported by Matthias Mutz on behalf of the FSF. + + * SIPP (SrcCD) + + SIPP is a library for creating photorealistic renderings of 3D scenes. + A scene is built up of objects which can be transformed with rotation, + translation, and scaling. The objects form hierarchies where each object + can have arbitrarily many subobjects and subsurfaces. A surface is a + number of connected polygons which are rendered with either Phong, + Gouraud, or flat shading. The library supports programmable shaders and + texture mapping with textures in up to 3 dimensions and automatic + interpolation of texture coordinates. A scene can be illuminated by an + arbitrary number of light sources. The lights from some of them are + capable of casting shadows of objects. + + * Smalltalk *Also see *Note Forthcoming GNUs::* (LangT,SrcCD) + + GNU Smalltalk is an interpreted object-oriented programming language + system written in highly portable C. It has been ported to many Unix, + DOS, & other OSes. Features include a binary image save capability, the + ability to call user-written C code with parameters, an Emacs editing + mode, a version of the X protocol invocable from Smalltalk, optional + byte-code compilation and/or execution tracing, & automatically loaded + per-user initialization files. It implements all of the classes & + protocol in the book "Smalltalk-80: The Language", except for the + graphic user interface (GUI) related classes. + + * SNePS (SrcCD) + + SNePS is the Semantic Network Processing System. It is an + implementation of a fully intensional theory of propositional knowledge + representation and reasoning. SNePS runs under CLISP or GCL. + + * Spinner (SrcCD) + + Spinner is a modularized, object oriented, non-forking World Wide Web + server with high performance and throughput. + + * Superopt (LangT, SrcCD) + + Superopt is a function sequence generator that uses an exhaustive + generate-and-test approach to find the shortest instruction sequence for + a given function. You provide a function as input, a CPU to generate + code for, and how many instructions you want. Its use in GCC is + described in the `ACM SIGPLAN PLDI'92 Proceedings'. It supports: SPARC, + m68k, m68020, m88k, IBM POWER and PowerPC, AMD 29k, Intel x86 and 960, + Pyramid, DEC Alpha, Hitachi SH, & HP-PA. + + * `tar' (DosBC, SrcCD, UtilT) + + GNU `tar' includes multi-volume support, the ability to archive sparse + files, compression/decompression, remote archives, and special features + that allow `tar' to be used for incremental and full backups. GNU `tar' + uses an early draft of the POSIX 1003.1 `ustar' format which is + different from the final version. This will be corrected in the future. + + * Termcap Library (SrcCD, UtilT) [FSFman] + + The GNU Termcap library is a drop-in replacement for `libtermcap.a' on + any system. It does not place an arbitrary limit on the size of Termcap + entries, unlike most other Termcap libraries. Included is source for the + `Termcap Manual' in Texinfo format (*note Documentation::.). + + * Termutils (SrcCD, UtilT) + + The Termutils package contains programs for controlling terminals. + `tput' is a portable way for shell scripts to use special terminal + capabilities. `tabs' is a program to set hardware terminal tab settings. + + * TeX (DosBC, SrcCD) + + TeX is a document formatting system that handles complicated + typesetting, including mathematics. It is GNU's standard text formatter. + + The University of Washington maintains & supports a tape distribution of + TeX for Unix systems. The core material is Karl Berry's `web2c' TeX + package. Sources are available via anonymous ftp; retrieval + instructions are in `/pub/tex/unixtex.ftp' on `ftp.cs.umb.edu'. If you + receive any installation support from the University of Washington, + consider sending them a donation. + + To order a full distribution written in `tar' on either a 1/4inch + 4-track QIC-24 cartridge or a 4mm DAT cartridge, send $210.00 to: + + Pierre A. MacKay + Department of Classics + DH-10, Denny Hall 218 + University of Washington + Seattle, WA 98195 + USA + + Electronic-Mail: `mackay@cs.washington.edu' + Telephone: +1-206-543-2268 + + Please make checks payable to: `University of Washington'. Do not + specify any other payee. That causes accounting problems. Checks must + be in U.S. dollars, drawn on a U.S. bank. Only prepaid orders can be + handled. Overseas sites: please add to the base cost $20.00 to ship via + air parcel post or $30.00 to ship via courier. Please check with the + above for current prices & formats. + + * Texinfo (DjgpD,DosBC,LangT,LspEmcT,SrcCD,UtilD,UtilT)[FSFman] + + Texinfo is a set of utilities (`makeinfo', `info', `texi2dvi', + `texindex', `tex2patch', & `fixfonts') which generate both printed + manuals & online hypertext documentation (called "Info"), & can read + online Info documents. Version 3 has both Emacs Lisp & standalone + programs written in C or shell script. Texinfo mode for Emacs enables + easy editing & updating of Texinfo files. Source for the `Texinfo + Manual' is included (*note Documentation::.). + + * Textutils (DosBC, SrcCD, UtilT) + + The Textutils programs manipulate textual data. They include: `cat', + `cksum', `comm', `csplit', `cut', `expand', `fmt', `fold', `head', + `join', `md5sum', `nl', `od', `paste', `pr', `sort', `split', `sum', + `tac', `tail', `tr', `unexpand', `uniq', and `wc'. + + * Tile Forth (LangT, SrcCD) + + Tile Forth is a 32-bit implementation of the Forth-83 standard written + in C, allowing it to be easily ported to new systems and extended with + any C-function (graphics, windowing, etc). + + Many documented Forth libraries are available, including ones for + top-down parsing, multi-threads, & object oriented programming. + + * `time' (SrcCD, UtilT) + + `time' reports (usually from a shell) the user, system, & real time used + by a process. On some systems it also reports memory usage, page + faults, etc. + + * `ucblogo' (LangT, SrcCD) + + `ucblogo' implements the classic teaching language, Logo. + + * UUCP (SrcCD, UtilT) + + GNU's UUCP system (written by Ian Lance Taylor) supports the `f', `g', + `v' (all window & packet sizes), `G', `t', `e', Zmodem, & two new + bidirectional (`i' & `j') protocols. With a BSD sockets library, it can + make TCP connections. With TLI libraries, it can make TLI connections. + Source is included for a manual (not yet published by the FSF). + + * W3 (LspEmcT, SrcCD) + + W3 (written by William Perry in Emacs Lisp) is an extensible, advanced + World Wide Web browser that runs as part of GNU Emacs. It understands + many protocols: FTP, gopher, HTML, SMTP, Telnet, WAIS, et al. + + * `wdiff' (DosBC, SrcCD, UtilT) + + `wdiff' is a front-end to GNU `diff'. It compares two files, finding + the words deleted or added to the first to make the second. It has many + output formats and works well with terminals and pagers. `wdiff' is + very useful when two texts differ only by a few words and paragraphs + have been refilled. + + * X11 *For details, see *Note X11 Tapes::* (SrcCD, X11OptT, X11ReqT) + + * `xboard', `xshogi' (SrcCD, UtilT) + + `xboard' is an X Window interface to GNU Chess. `xshogi' is an X Window + interface to GNU Shogi. They use the R4 Athena widgets and Xt + Intrinsics to provide an interactive referee for managing a game between + a user & a computer opponent, or between two computers. You can also use + `xboard' without GNU Chess to play through games in files or to play + through games manually (force mode); in this case, moves aren't + validated. + + * `xgrabsc' (SrcCD) + + `xgrabsc' is a screen capture program similar to `xwd' but providing + more ways of selecting the part of the screen to capture and different + types of output: Postscript, color Postscript, xwd, bitmap, pixmap, and + puzzle. + + * `Ygl' (SrcCD, UtilT) + + `Ygl' emulates a subset of SGI's GL (Graphics Language) library under + X11 on GNU/Linux with XFree, AIX 3.2, ConvexOS, HP-UX, SunOS, et al. It + has most two-dimensional graphics routines, the queue device & query + routines, double buffering, RGB mode with dithering, FORTRAN bindings, + at al. + + + +Program/Package Cross Reference +******************************* + +Here is a list of what package each GNU program or library is in. You can FTP +the current list in the file `/pub/gnu/ProgramIndex' from a GNU FTP host +(listed in *Note How to Get GNU Software::). + + * a2p perl + * a2x xopt + * ac bsd44 + * accton bsd44 + * ackpfd phttpd + * acl bsd44 + * acm acm + * acms acm + * addftinfo Groff + * adventure bsd44 + * afm2tfm TeX + * amd bsd44 + * ansitape bsd44 + * AnswerGarden xopt + * apply bsd44 + * appres xreq + * apropos bsd44 + * ar Binutils + * arithmetic bsd44 + * arp bsd44 + * atc bsd44 + * autoconf Autoconf + * autoheader Autoconf + * autoreconf Autoconf + * autoscan Autoconf + * autoupdate Autoconf + * auto_box xopt + * auto_box xreq + + * b2m Emacs + * backgammon bsd44 + * bad144 bsd44 + * badsect bsd44 + * banner bsd44 + * basename Shellutils + * bash BASH + * battlestar bsd44 + * bc bc + * bcd bsd44 + * bdes bsd44 + * bdftops Ghostscript + * beach_ball xopt + * beach_ball xreq + * beach_ball2 xopt + * bibtex TeX + * biff bsd44 + * bison Bison + * bitmap xreq + * boggle bsd44 + * bpltobzr Fontutils + * bugfiler bsd44 + * buildhash Ispell + * bzrto Fontutils + + * c++ GCC + * c++filt Binutils + * c2ph perl + * ca100 xopt + * caesar bsd44 + * cal bsd44 + * calendar bsd44 + * canfield bsd44 + * cat Textutils + * cbars wdiff + * cc GCC + * cc1 GCC + * cc1obj GCC + * cc1plus GCC + * cccp GCC + * cdwrite mkisofs + * cfengine cfengine + * cgi Spinner + * charspace Fontutils + * checknr bsd44 + * chess bsd44 + * chflags bsd44 + * chgrp Fileutils + * ching bsd44 + * chmod Fileutils + * chown Fileutils + * chpass bsd44 + * chroot bsd44 + * ci RCS + * cksum Textutils + * cktyps g77 + * clisp CLISP + * clri bsd44 + * cmail xboard + * cmmf TeX + * cmodext xopt + * cmp Diffutils + * co RCS + * col bsd44 + * colcrt bsd44 + * colrm bsd44 + * column bsd44 + * comm Textutils + * compress bsd44 + * comsat bsd44 + * connectd bsd44 + * cp Fileutils + * cpicker xopt + * cpio cpio + * cpp GCC + * cppstdin perl + * cribbage bsd44 + * crock xopt + * csh bsd44 + * csplit Textutils + * ctags Emacs + * ctwm xopt + * cu UUCP + * cut Textutils + * cvs CVS + * cvscheck CVS + * cvtmail Emacs + * cxterm xopt + + * d Fileutils + * date Shellutils + * dc bc + * dd Fileutils + * ddd DDD + * delatex TeX + * demangle Binutils + * descend CVS + * detex TeX + * df Fileutils + * dhtppd phttpd + * diff Diffutils + * diff3 Diffutils + * digest-doc Emacs + * dipress bsd44 + * dir Fileutils + * dirname Shellutils + * dish xopt + * disklabel bsd44 + * diskpart bsd44 + * dld dld + * dm bsd44 + * dmesg bsd44 + * doschk doschk + * dox xopt + * du Fileutils + * dump bsd44 + * dump mkisofs + * dumpfs bsd44 + * dvi2tty TeX + * dvicopy TeX + * dvips TeX + * dvitype TeX + + * ecc ecc + * echo Shellutils + * ed ed + * edit-pr GNATS + * editres xreq + * edquota bsd44 + * eeprom bsd44 + * egrep grep + * emacs Emacs + * emacsclient Emacs + * emacsserver Emacs + * emacstool Emacs + * emu xopt + * env Shellutils + * eqn Groff + * error bsd44 + * es es + * esdebug es + * etags Emacs + * ex nvi + * expand Textutils + * expect DejaGnu + * expr Shellutils + * exterm xopt + + * f2c f2c + * factor bsd44 + * fakemail Emacs + * false Shellutils + * fastboot bsd44 + * fax2ps HylaFAX + * faxalter HylaFAX + * faxanswer HylaFAX + * faxcover HylaFAX + * faxd HylaFAX + * faxd.recv HylaFAX + * faxmail HylaFAX + * faxquit HylaFAX + * faxrcvd HylaFAX + * faxrm HylaFAX + * faxstat HylaFAX + * fc f2c + * fdraw xopt + * ffe g77 + * fgrep grep + * file bsd44 + * find Findutils + * find2perl perl + * finger Finger + * fingerd Finger + * fish bsd44 + * fixfonts Texinfo + * fixinc.svr4 GCC + * fixincludes GCC + * flex flex + * flex++ flex + * fmt bsd44 + * fold Textutils + * font2c Ghostscript + * fontconvert Fontutils + * forth Tile Forth + * forthicon Tile Forth + * forthtool Tile Forth + * fortune bsd44 + * fpr bsd44 + * freq Ispell + * freqtbl Ispell + * from bsd44 + * fsck bsd44 + * fsplit bsd44 + * fstat bsd44 + * ftp bsd44 + * ftpd bsd44 + + * g++ GCC + * gas Binutils + * gawk GAWK + * gcc GCC + * gcore bsd44 + * gdb GDB + * genclass libg++ + * gettext gettext + * getty bsd44 + * gftodvi TeX + * gftopk TeX + * gftype TeX + * ghostview Ghostview + * git GIT + * gitaction GIT + * gitcmp GIT + * gitkeys GIT + * gitmatch GIT + * gitmount GIT + * gitps GIT + * gitredir GIT + * gitrgrep GIT + * gitview GIT + * gitwipe GIT + * gn GN + * gnans Gnans + * gnanslator Gnans + * gnats GNATS + * gnuchess Chess + * gnuchessc Chess + * gnuchessn Chess + * gnuchessr Chess + * gnuchessx Chess + * gnuclient gnuserv + * gnudoit gnuserv + * gnupdisp Shogi + * gnuplot gnuplot + * gnuplot_x11 gnuplot + * gnuserv gnuserv + * gnushogi Shogi + * gnushogir Shogi + * gnushogix Shogi + * go GnuGo + * gpc xopt + * gpc xreq + * gperf cperf + * gperf libg++ + * gprof Binutils + * graph Graphics + * grep grep + * grodvi Groff + * groff Groff + * grops Groff + * grotty Groff + * groups Shellutils + * gs Ghostscript + * gsbj Ghostscript + * gsdj Ghostscript + * gslj Ghostscript + * gslp Ghostscript + * gsnd Ghostscript + * gsrenderfont Fontutils + * gunzip gzip + * gwm xopt + * gzexe gzip + * gzip gzip + + * h2ph perl + * h2pl perl + * hack bsd44 + * hangman bsd44 + * head Textutils + * hello hello + * hexdump bsd44 + * hexl Emacs + * hostname Shellutils + * hp2xx hp2xx + * hterm xopt + * htmlencode phttpd + * httpd apache + * httpdecode phttpd + + * i18nOlwmV2 xopt + * i2mif xopt + * ico xopt + * ico xreq + * id Shellutils + * ident RCS + * ifconfig bsd44 + * ifnames Autoconf + * ImageMagick xopt + * imageto Fontutils + * iman xopt + * imgrotate Fontutils + * indent indent + * indxbib Groff + * inetd bsd44 + * info Texinfo + * inimf TeX + * init bsd44 + * initex TeX + * inn bsd44 + * install Fileutils + * iostat bsd44 + * isodiag mkisofs + * isodump mkisofs + * ispell Ispell + * ixterm xopt + * ixx xopt + + * join Textutils + * jot bsd44 + * jove bsd44 + + * kdestroy bsd44 + * kdump bsd44 + * kermit bsd44 + * kgames xopt + * kgmon bsd44 + * kill bsd44 + * kinit bsd44 + * kinput2 xopt + * klist bsd44 + * kpasswdd bsd44 + * ksrvtgt bsd44 + * kterm xopt + * ktrace bsd44 + + * lam bsd44 + * larn bsd44 + * lasergnu gnuplot + * last bsd44 + * lastcomm bsd44 + * latex TeX + * lclock xopt + * ld Binutils + * leave bsd44 + * less less + * lesskey less + * libavcall.a ffcall + * libbfd.a Binutils + * libbfd.a GDB + * libbzr.a Fontutils + * libc.a C Library + * libcompat.a bsd44 + * libcurses.a bsd44 + * libcurses.a ncurses + * libdcurses.a ncurses + * libedit.a bsd44 + * libF77.a f2c + * libF77.a g77 + * libg++.a libg++ + * libgdbm.a gdbm + * libgf.a Fontutils + * libgmp.a gmp + * libgnanslib Gnans + * libI77.a f2c + * libI77.a g77 + * libkvm.a bsd44 + * libm.a bsd44 + * libncurses.a ncurses + * libnihcl.a NIHCL + * libnihclmi.a NIHCL + * libnihclvec.a NIHCL + * libnls.a xreq + * libobjects.a libobjects + * liboctave.a Octave + * liboldX.a xreq + * libpbm.a Fontutils + * libPEXt.a xopt + * libpk.a Fontutils + * libresolv.a bsd44 + * librpc.a bsd44 + * libsipp.a SIPP + * libtcl.a DejaGnu + * libtelnet.a bsd44 + * libterm.a bsd44 + * libtermcap.a Termcap + * libtfm.a Fontutils + * libutil.a bsd44 + * libvacall.a ffcall + * libWc.a xopt + * libwidgets.a Fontutils + * libX.a xreq + * libXau.a xreq + * libXaw.a xreq + * libXcp.a xopt + * libXcu.a xopt + * libXdmcp.a xreq + * libXmp.a xopt + * libXmu.a xreq + * libXO.a xopt + * libXop.a xopt + * libXp.a xopt + * libXpex.a xopt + * libXt.a xopt + * libXt.a xreq + * libXwchar.a xopt + * liby.a bsd44 + * libYgl.a Ygl + * limn Fontutils + * listres xopt + * listres xreq + * lkbib Groff + * ln Fileutils + * locate Findutils + * lock bsd44 + * logcvt-ip2n phttpd + * logger bsd44 + * login bsd44 + * logname Shellutils + * logo ucblogo + * lookbib Groff + * lorder bsd44 + * lpr bsd44 + * ls Fileutils + + * m4 m4 + * mail bsd44 + * mail-files Sharutils + * mailshar Sharutils + * make make + * make-docfile Emacs + * make-path Emacs + * makeindex TeX + * makeinfo Texinfo + * MakeTeXPK TeX + * man bsd44 + * man-macros Groff + * mattrib mtools + * maze xopt + * maze xreq + * mazewar xopt + * mc mc + * mcd mtools + * mcopy mtools + * mcserv mc + * mdel mtools + * mdir mtools + * me-macros Groff + * merge RCS + * mesg bsd44 + * mf TeX + * mformat mtools + * mft TeX + * mgdiff xopt + * mh bsd44 + * mille bsd44 + * mkcache GN + * mkdep bsd44 + * mkdir Fileutils + * mkfifo Fileutils + * mkisofs mkisofs + * mklocale bsd44 + * mkmanifest mtools + * mkmf bsd44 + * mkmodules CVS + * mknod Fileutils + * mkstr bsd44 + * mlabel mtools + * mm-macros Groff + * mmd mtools + * monop bsd44 + * more bsd44 + * morse bsd44 + * mount bsd44 + * mountd bsd44 + * movemail Emacs + * mprof bsd44 + * mrd mtools + * mread mtools + * mren mtools + * ms-macros Groff + * msgcmp gettext + * msgfmt gettext + * msgmerge gettext + * msgs bsd44 + * msgunfmt gettext + * mst Smalltalk + * mt cpio + * mterm xopt + * mtree bsd44 + * mtype mtools + * mule MULE + * muncher xopt + * mv Fileutils + * mvdir Fileutils + * mwrite mtools + + * nethack NetHack + * netstat bsd44 + * newfs bsd44 + * nfsd bsd44 + * nfsiod bsd44 + * nfsstat bsd44 + * nice Shellutils + * nl Textutils + * nlmconv Binutils + * nm Binutils + * nohup Shellutils + * notify HylaFAX + * nroff Groff + * number bsd44 + + * objc GCC + * objcopy Binutils + * objdump Binutils + * objective-c GCC + * obst-boot OBST + * obst-CC OBST + * obst-cct OBST + * obst-cgc OBST + * obst-cmp OBST + * obst-cnt OBST + * obst-cpcnt OBST + * obst-csz OBST + * obst-dir OBST + * obst-dmp OBST + * obst-gen OBST + * obst-gsh OBST + * obst-init OBST + * obst-scp OBST + * obst-sil OBST + * obst-stf OBST + * oclock xreq + * octave Octave + * od Textutils + * oleo Oleo + * ora-examples xopt + + * p2c p2c + * pagesize bsd44 + * palette xopt + * pascal bsd44 + * passwd bsd44 + * paste Textutils + * patch patch + * patgen TeX + * pathalias bsd44 + * pathchk Shellutils + * pax bsd44 + * pbmplus xopt + * perl perl + * pfbtops Groff + * phantasia bsd44 + * phttpd phttpd + * pic Groff + * pico pine + * pig bsd44 + * pine pine + * ping bsd44 + * pixedit xopt + * pixmap xopt + * pktogf TeX + * pktype TeX + * plaid xopt + * plot2fig Graphics + * plot2plot Graphics + * plot2ps Graphics + * plot2tek Graphics + * pltotf TeX + * pollrcvd HylaFAX + * pom bsd44 + * pooltype TeX + * portmap bsd44 + * ppt bsd44 + * pr Textutils + * pr-addr GNATS + * pr-edit GNATS + * primes bsd44 + * printenv Shellutils + * printf Shellutils + * protoize GCC + * proxygarb Spinner + * ps bsd44 + * ps2ascii Ghostscript + * ps2epsi Ghostscript + * ps2fax HylaFAX + * psbb Groff + * pstat bsd44 + * psycho xopt + * ptester phttpd + * ptx ptx + * pubdic+ xopt + * puzzle xopt + * puzzle xreq + * pwd Shellutils + * pyramid xopt + + * query-pr GNATS + * quiz bsd44 + * quot bsd44 + * quota bsd44 + * quotacheck bsd44 + * quotaon bsd44 + + * rain bsd44 + * random bsd44 + * ranlib Binutils + * rbootd bsd44 + * rc rc + * rcp bsd44 + * rcs RCS + * rcs-to-cvs CVS + * rcs2log Emacs + * rcsdiff RCS + * rcsfreeze RCS + * rcsmerge RCS + * rdist bsd44 + * reboot bsd44 + * recode recode + * recvstats HylaFAX + * red ed + * refer Groff + * remsync Sharutils + * renice bsd44 + * repquota bsd44 + * restore bsd44 + * rev bsd44 + * rexecd bsd44 + * rlog RCS + * rlogin bsd44 + * rlogind bsd44 + * rm Fileutils + * rmail bsd44 + * rmdir Fileutils + * rmt cpio + * rmt tar + * robots bsd44 + * rogue bsd44 + * route bsd44 + * routed bsd44 + * rr xopt + * rs bsd44 + * rsh bsd44 + * rshd bsd44 + * runtest DejaGnu + * runtest.exp DejaGnu + * ruptime bsd44 + * rwho bsd44 + * rwhod bsd44 + + * s2p perl + * sail bsd44 + * saoimage SAOimage + * savecore bsd44 + * sc bsd44 + * sccs bsd44 + * sccs2rcs CVS + * scdisp xopt + * screen screen + * script bsd44 + * scsiformat bsd44 + * sctext xopt + * sdiff Diffutils + * sed sed + * send-pr GNATS + * sendfax HylaFAX + * sendmail bsd44 + * sgi2fax HylaFAX + * sgn GN + * sh bsd44 + * shar Sharutils + * shinbun xopt + * shogi Shogi + * showfont xopt + * showmount bsd44 + * shutdown bsd44 + * size Binutils + * sj3 xopt + * sjxa xopt + * slattach bsd44 + * sleep Shellutils + * sliplogin bsd44 + * snake bsd44 + * snftobdf xopt + * soelim Groff + * sort Textutils + * sos2obst OBST + * spider xopt + * split Textutils + * startslip bsd44 + * stf OBST + * strings Binutils + * strip Binutils + * stty Shellutils + * su Shellutils + * sum Textutils + * superopt Superopt + * swapon bsd44 + * sync bsd44 + * sysctl bsd44 + * syslogd bsd44 + * systat bsd44 + + * tabs Termutils + * tac Textutils + * tail Textutils + * taintperl perl + * talk bsd44 + * talkd bsd44 + * tangle TeX + * tar tar + * tbl Groff + * tcl DejaGnu + * tclsh DejaGnu + * tcopy bsd44 + * tcp Emacs + * tee Shellutils + * tek2plot Graphics + * telnet bsd44 + * telnetd bsd44 + * test Shellutils + * test-g++ DejaGnu + * test-tool DejaGnu + * tetris bsd44 + * tex TeX + * tex3patch Texinfo + * texi2dvi Texinfo + * texindex Texinfo + * texspell TeX + * textfmt HylaFAX + * tfmtodit Groff + * tftopl TeX + * tftp bsd44 + * tftpd bsd44 + * tgrind TeX + * time time + * timed bsd44 + * timer Emacs + * timex xopt + * tip bsd44 + * tkpostage xopt + * tn3270 bsd44 + * touch Fileutils + * tput Termutils + * tr Textutils + * traceroute bsd44 + * transcript HylaFAX + * transfig xopt + * trek bsd44 + * trn3 bsd44 + * troff Groff + * trpt bsd44 + * trsp bsd44 + * true Shellutils + * tset bsd44 + * tsort bsd44 + * tty Shellutils + * ttygnans Gnans + * tunefs bsd44 + * tupdate gettext + * tvtwm xopt + * twm xreq + + * ul bsd44 + * ulpc Spinner + * umount bsd44 + * uname Shellutils + * uncompress gzip + * unexpand Textutils + * unifdef bsd44 + * unify wdiff + * uniq Textutils + * unprotoize GCC + * unshar Sharutils + * unvis bsd44 + * update bsd44 + * updatedb Findutils + * users Shellutils + * uuchk UUCP + * uucico UUCP + * uuconv UUCP + * uucp UUCP + * uucpd bsd44 + * uudecode Sharutils + * uudir UUCP + * uuencode Sharutils + * uulog UUCP + * uuname UUCP + * uupick UUCP + * uurate UUCP + * uusched UUCP + * uustat UUCP + * uuto UUCP + * uux UUCP + * uuxqt UUCP + + * v Fileutils + * vacation bsd44 + * vandal xopt + * vcdiff Emacs + * vdir Fileutils + * vftovp TeX + * vgrind bsd44 + * vi nvi + * viewres xopt + * viewres xreq + * vine xopt + * vipw bsd44 + * virmf TeX + * virtex TeX + * vis bsd44 + * vmstat bsd44 + * vptovf TeX + + * w bsd44 + * waisgn GN + * wakeup Emacs + * wall bsd44 + * wargames bsd44 + * wc Textutils + * wdiff wdiff + * weave TeX + * what bsd44 + * whatis bsd44 + * whereis bsd44 + * who Shellutils + * whoami Shellutils + * whois bsd44 + * window bsd44 + * winterp xopt + * wish DejaGnu + * worm bsd44 + * worms bsd44 + * write bsd44 + * wump bsd44 + + * x11perf xreq + * x2p perl + * xalarm xopt + * xancur xopt + * xargs Findutils + * xauth xreq + * xbfe Fontutils + * xbiff xopt + * xbiff xreq + * xboard xboard + * xboing xopt + * xbuffy3 xopt + * xcalc xopt + * xcalc xreq + * xcalendar xopt + * xcdplayer xopt + * xcell xopt + * xclipboard xreq + * xclock xreq + * xcmdmenu xopt + * xcms xopt + * xcmsdb xreq + * xcmstest xreq + * xco xopt + * xcolorize xopt + * xcolors xopt + * xconsole xreq + * xcrtca xopt + * xdaliclock xopt + * xdiary xopt + * xditview Groff + * xditview xopt + * xditview xreq + * xdm xreq + * xdpyinfo xreq + * xdu xopt + * xdvi TeX + * xdvi xopt + * xdvorak xopt + * xearth xopt + * xed xopt + * xedit xopt + * xedit xreq + * xev xopt + * xev xreq + * xexit xopt + * xeyes xopt + * xeyes xreq + * xfd xreq + * xfed xopt + * xfedor xopt + * xfeoak xopt + * xferstats HylaFAX + * xfig xopt + * xfontsel xopt + * xfontsel xreq + * xforecast xopt + * xgas xopt + * xgas xreq + * xgc xopt + * xgc xreq + * xgettext gettext + * xhearts xopt + * xhelp xopt + * xhost xreq + * xinit xreq + * xkeycaps xopt + * xkill xreq + * xlax xopt + * xlayout xopt + * xlbiff xopt + * xless xopt + * xload xopt + * xload xreq + * xlogin xopt + * xlogo xreq + * xlsatoms xreq + * xlsclients xreq + * xlsfonts xreq + * xmag xreq + * xmail xopt + * xmailbox xopt + * xmailwatcher xopt + * xman xopt + * xman xreq + * xmandel xopt + * xmessage xopt + * xmeter xopt + * xmh xreq + * xmh-icons xopt + * xmh.editor xopt + * xmodmap xreq + * xmon xopt + * xmove xopt + * xmphone xopt + * xpd xopt + * xphoon xopt + * xpipeman xopt + * xplot Graphics + * xpostit xopt + * xpr xopt + * xpr xreq + * xprompt xopt + * xproof xopt + * xprop xreq + * xpserv xopt + * xrdb xreq + * xrefresh xreq + * xrsh xopt + * xrubik xopt + * xrunclient xopt + * xscope xopt + * xscreensaver xopt + * xsession xopt + * xset xreq + * xsetroot xreq + * xshogi xshogi + * xstdcmap xreq + * xstr bsd44 + * xtalk xopt + * xterm xreq + * xterm_color xopt + * xtetris xopt + * xTeXcad.13 xopt + * xtiff xopt + * xtree xopt + * xtv xopt + * xwd xreq + * xwininfo xreq + * xwud xreq + + * yacc bsd44 + * yes Shellutils + * youbin xopt + * yow Emacs + + * zcat gzip + * zcmp gzip + * zdiff gzip + * zforce gzip + * zgrep gzip + * zmore gzip + * znew gzip + + * [ Shellutils + + + +Tapes +***** + +We offer Unix source code on tapes in `tar' format on these media: + + * 4mm DAT cartridge tape. + + * 8mm Exabyte cartridge tape. + + * Sun DC300XLP QIC-24 1/4in cartridge (readable on some other systems). + + * Hewlett-Packard 16-track DC600HC 1/4in cartridge tape. + + * IBM RS/6000 QIC-150 1/4in cartridge (readable on some other systems). + + * 1600bpi 9-track 1/2in reel tape. + +The contents of the various tapes for Unix systems are the same; only the +media are different. For prices, see the *note Free Software Foundation +Order Form::.. Source code for the manuals & reference cards is included +(*note Documentation::.). + +Some of the files on the tapes are compressed with `gzip' to allow more files +on each tape. Refer to the top-level `README' file at the beginning of each +tape for instructions on uncompressing them. `uncompress' and `unpack' *do +not work*! + + + +Languages Tape +-------------- + +This tape contains programming tools: compilers, interpreters and, related +programs (parsers, translators, debuggers, linkers, etc.). + + * Binutils 2.6 + * Bison 1.24 + * C Library 1.09 + * cperf 2.1a + * DejaGnu 1.2 + * dld 3.2.3 + * ecc 1.2.1 + * f2c 1995.02.24 + * flex 2.5.2 + * g77 0.5.17 + * GAWK 2.15.6 + * GCC/G++/Objective-C 2.7.2 + * GDB 4.15.1 + * gdbm 1.7.3 + * gettext 0.10 + * gmp 1.3.2 + * gzip 1.2.4 + * indent 1.9.1 + * libg++ 2.7.1 + * libobjects 0.1.3 + * make 3.74 + * ncurses 1.9.4 + * NIHCL 3.1.4 + * OBST 3.4.3 + * Octave 1.1.1 + * p2c 1.20 + * perl 4.036 + * perl 5.001 + * regex 0.12 + * rx 0.05 + * Smalltalk 1.1.1 + * Superopt 2.5 + * Texinfo 3.6 + * Tile Forth 2.1 + * ucblogo 3.3 + + + +Lisps/Emacs Tape +---------------- + +This tape has Common Lisp systems and libraries, GNU Emacs, assorted +extensions that work with Emacs, manuals, & a few other important utilities. + + * Calc 2.02c + * CLISP 1995.12.04 + * CLX 5.02 + * Common Lisp 2.2 + * Elib 0.06 + * Emacs 18.59 + * Emacs 19.28 + * Emacs 19.30 + * GNU Emacs Lisp Reference Manual Ed. 1.03 for Version 18 + * GNU Emacs Lisp Reference Manual Ed. 2.4 for Version 19.29 + * gnuserv 2.1alpha + * gzip 1.2.4 + * Hyperbole 4.01 + * make 3.74 + * MULE 2.3 + * PCL 2.2 + * Programming in Emacs Lisp: An Introduction Ed. 1.04 + * Texinfo 3.6 + * W3 2.2.25 + + + +Utilities Tape +-------------- + +This tape consists mostly of smaller utilities and miscellaneous applications. + + * acm 4.7 + * Autoconf 2.7 + * BASH 1.14.5 + * bc 1.03 + * cfengine 1.2.14 + * cfengine 1.2.22 + * Chess 4.0.pl75 + * cpio 2.3 + * CVS 1.6 + * Diffutils 2.7 + * doschk 1.1 + * ed 0.2 + * es 0.84 + * Fileutils 3.12 + * Findutils 4.1 + * Finger 1.37 + * Fontutils 0.6 + * Ghostscript 2.6.2 + * Ghostview 1.5 + * Ghostview for Windows 1.0 + * GIT 4.3.6 + * GNATS 3.2 + * GnuGo 1.2 + * gnuplot 3.5 + * Graphics 0.17 + * grep 2.0 + * Groff 1.10 + * gzip 1.2.4 + * hello 1.3 + * hp2xx 3.1.4 + * HylaFAX 3.0.0 + * Ispell 3.1.20 + * less 2.9.0 + * m4 1.4 + * make 3.74 + * MandelSpawn 0.07 + * mc 3.0 + * mkisofs 1.04 + * mm 1.07 + * mtools 2.0.7 + * NetHack 3.1.3 + * nvi 1.34 + * Oleo 1.6 + * patch 2.1 + * pine 3.91 + * ptx 0.4 + * rc 1.4 + * RCS 5.7 + * readline 2.0 + * recode 3.4 + * SAOimage 1.16 + * screen 3.7.1 + * sed 2.05 + * Sharutils 4.2 + * Shellutils 1.12 + * Shogi 1.2.3 + * tar 1.11.8 + * Termcap 1.3 + * Termutils 2.0 + * Texinfo 3.6 + * Textutils 1.13 + * time 1.6 + * UUCP 1.06.1 + * wdiff 0.5 + * xboard 3.4.pl0 + * xshogi 1.2.03 + * Ygl 3.0.3 + + + +Scheme Tape +----------- + +Scheme is a simplified, lexically-scoped dialect of Lisp. It was designed at +MIT and other universities to teach students the art of programming and to +research new parallel programming constructs and compilation techniques. + +This tape now has MIT Scheme 7.3, which conforms to the "Revised^4 Report On +the Algorithmic Language Scheme" (MIT AI Lab Memo 848b), for which TeX source +is included. It is written partly in C, but is presently hard to bootstrap. +Binaries that can be used to bootstrap it exist for: HP 9000 series 300, 400, +700, & 800 (running HP-UX 9.0), NeXT (NeXT OS 2 or 3.2), DEC Alpha (OSF/1), +IBM RS/6000 (AIX), Sun-3 or Sun-4 (SunOS 4.1), DECstation 3100/5100 (Ultrix +4.0), Sony NeWS-3250 (NEWS OS 5.01), & Intel i386 (MS-DOS, Windows 3.1 or NT). +If your system is not on this list & you don't enjoy the bootstrap challenge, +see "JACAL" in *Note GNU Software::. + + + +X11 Tapes +--------- + +The two X11 tapes contain Version 11, Release 6 of the X Window System. The +first tape has all of the core software, documentation, & some contributed +clients. We call this the "required" X tape since it is necessary for +running X or Emacs under X. The second, "optional" tape has contributed +libraries & toolkits, the Andrew User Interface System, games, etc. + +The X11 Required tape also contains all fixes and patches released to date. +We update this tape as new fixes and patches are released for programs on +both tapes. *Note Tape & CD-ROM Subscription Service::. + +While supplies last, we will distribute X11R5 on the *Note November 1993 +Source Code CD-ROM::. + + + +Berkeley 4.4BSD-Lite Tape +------------------------- + +The "4.4BSD-Lite" release is the last from the Computer Systems Research +Group at the University of California at Berkeley. It has most of the BSD +software system, except for a few files that remain proprietary. It is much +more complete than the previous "Net2" release. + + + +VMS Emacs and VMS Compiler Tapes +-------------------------------- + +We offer two VMS tapes. One has just GNU Emacs 18.59 (none of the other +software on the *Note Lisps/Emacs Tape::, is included). The other has GCC +2.3.3, Bison 1.19 (to compile GCC), `gas' 1.38 (to assemble GCC's output), and +some library and include files (none of the other software on the *Note +Languages Tape::, is included). We are not aware of a GDB port for VMS. +Both VMS tapes have DEC VAX executables from which you can bootstrap, as the +DEC VMS C compiler cannot compile GCC. We do not have executables for DEC +Alpha VMS systems. Please do not ask us to devote effort to VMS support, +because it is peripheral to the GNU Project. + + + +CD-ROMs +******* + +We offer these CD-ROMs: + + * Several editions of our *Note Source Code CD-ROMs::. + + * *Note December 1995 Compiler Tools Binaries CD-ROM::. + + * *Note December 1994 Compiler Tools Binaries CD-ROM::. + + * *Note December 1993 Compiler Tools Binaries CD-ROM::. + + * *Note MS-DOS Book with CD-ROM::. + + * *Note Debian GNU/Linux Book with CD-ROM::. + +Our CD-ROMs are in ISO 9660 format & can be mounted as a read-only file +system on most computers. If your driver supports it you can mount each CD +with "Rock Ridge" extensions (the MS-DOS CD-ROM is only in ISO 9660 format), +& it will look just like an ordinary Unix file system, rather than one full +of truncated & otherwise mangled names that fit vanilla ISO 9660. + +You can build most of the software without copying the sources off the CD. +You only need enough disk space for object files and intermediate build +targets. + + + +Pricing of the GNU CD-ROMs +-------------------------- + +If a business or organization is ultimately paying, the December 1995 Source +CDs costs $240. It costs $60 if you, an individual, are paying out of your +own pocket. The December 1995 Compiler Tools Binaries CD-ROM costs $220 for +a business or organization, and $55 for an individual. + + + +What do the individual and company prices mean? +............................................... + +The software on our disks is free; anyone can copy it and anyone can run it. +What we charge for is the physical disk and the service of distribution. + +We charge two different prices depending on who is buying. When a company or +other organization buys the December 1995 Source CD-ROMs, we charge $240. +When an individual buys the same CD-ROM, we charge just $60. This +distinction is not a matter of who is allowed to use the software. In either +case, once you have a copy, you can distribute as many copies as you wish and +there's no restriction on who can have or run them. The price distinction is +entirely a matter of what kind of entity pays for the CD. + +You, the reader, are certainly an individual, not a company. If you are +buying a disk "in person", then you are probably doing so as an individual. +But if you expect to be reimbursed by your employer, then the disk is really +for the company; so please pay the company price and get reimbursed for it. +We won't try to check up on you--we use the honor system--so please cooperate. + +Buying CDs at the company price is very helpful for GNU; just +140 Source CDs at that price support an FSF programmer or tech writer for a +year. + + + +Why is there an individual price? +................................. + +In the past, our distribution tapes have been ordered mainly by companies. +The CD at the price of $240 provides them with all of our software for a much +lower price than they would previously have paid for six different tapes. To +lower the price more would cut into the FSF's funds very badly and decrease +the software development we can do. + +However, for individuals, $240 is too high a price; hardly anyone could +afford that. So we decided to make CDs available to individuals at the lower +price of $60. + + + +Is there a maximum price? +......................... + +Our stated prices are minimum prices. Feel free to pay a higher price if you +wish to support GNU development more. The sky's the limit; we will accept as +high a price as you can offer. Or simply give a donation (tax-deductible in +the U.S.) to the Free Software Foundation, a tax-exempt public charity. + + + +December 1995 Compiler Tools Binaries CD-ROM +-------------------------------------------- + +We now have the third edition of our CD-ROM that has binaries and complete +sources for GNU compiler tools for some systems which lack a compiler. This +enables the people who use these systems to compile GNU and other free +software without having to buy a proprietary compiler. You can also use +these GNU tools to compile your own C/C++/Objective-C programs. Older +editions of this CD are available while supplies last at a reduced price; see +the *note Free Software Foundation Order Form::.. + +We hope to have more systems on each update of this CD. If you can help +build binaries for new systems (especially those that don't come with a C +compiler), or have one to suggest, please contact us at the addresses on page +1. + +These packages: + + * DJGPP 1.12m4 from GCC 2.6.3 + * GCC/G++/Objective-C 2.7.1 + * GNU C Library 1.09 + * GDB 4.15.1 + * Binutils 2.6 + * Bison 1.24 + * Emacs 19.29 (MS-DOS only) + * Flex 2.5.2 + * Make 3.74 + * libg++ 2.7.1 + +On these platforms: + + * `i386-msdos' + * `hppa1.0-hp-hpux9' + * `sparc-sun-solaris2' + * `sparc-sun-sunos4.1' + + + +December 1994 Compiler Tools Binaries CD-ROM +-------------------------------------------- + +We still have the 2nd edition of our CD-ROM that contains executables for GNU +compiler tools for some systems which lack a compiler. This enables the +people who use these systems to compile GNU and other free software without +having to buy a proprietary compiler. You can also use the GNU compilation +system to compile your own C/C++/Objective-C programs. + +We hope to have more systems on each update of this CD. If you can help +build binaries for new systems (especially those that don't come with a C +compiler), or have one to suggest, please contact us at the addresses on +page 1. + +These packages: + + *DJGPP 1.12.m2 from GCC 2.6.0 + *GCC/G++/Objective-C 2.6.2 + *GNU C Library 1.09 + *GDB 4.13 + *Binutils 2.5.2 + *Bison 1.22 + *Emacs 19.26 (MS-DOS only) + *Flex 2.4.7 + *Make 3.72.1 + *libg++ 2.6.1 + +On these platforms: + + *`i386-msdos' + *`hppa1.1-hp-hpux9' + *`sparc-sun-solaris2' + *`sparc-sun-sunos4.1' + + + +December 1993 Compiler Tools Binaries CD-ROM +--------------------------------------------- + +We still have the 1st edition of our CD-ROM that contains executables for GNU +compiler tools for some systems which lack a compiler. This will allow users +of those systems to compile GNU and other free software without having to buy +a proprietary compiler. + +The CD-ROM is in ISO 9660 format and can be mounted as a read-only file +system on most operating systems. If your driver supports it you can mount +the CD-ROM with "Rock Ridge" extensions and it will look just like an +ordinary Unix file system, rather than one full of truncated and otherwise +mangled names that fit the vanilla ISO 9660 specifications. + +We hope to have more systems included with each update of this CD-ROM. If +you can help build binaries for new systems (especially for systems that +don't come with a C compiler), or have a system to suggest, please contact us +at either address on the front cover. + +These programs: + + * DJGPP 1.11.m1 + + * GCC/G++/Objective C 2.5.7 + + * GDB 4.11 + + * GAS 2.2 + + * Binutils 2.3 + + * Bison 1.22 + + * Flex 2.4.5 + + * Make 3.70 + + * libg++ 2.5.3 + +For these platforms: + + * `i386-msdos' + + * `hppa1.1-hp-hpux9' + + * `sparc-sun-solaris2' + + * `sparc-sun-sunos4.1' + + + +Source Code CD-ROMs +------------------- + +We have several versions of our Source Code CD-ROMs available, including: + + * *Note December 1995 Source Code CD-ROMs::, the newest release, has + programs, bug fixes, & improvements not on the other CDs. + + * *Note June 1995 Source Code CD-ROM::. + + * *Note May 1994 Source Code CD-ROM::.. + + * *Note November 1993 Source Code CD-ROM::. + + * May 1993 Source Code CD-ROM, see the *note Free Software Foundation + Order Form::.. + + * October 1992 Source Code CD-ROM, see the *note Free Software Foundation + Order Form::.. + +The older Source CDs are available while supplies last at a reduced price +(please note that the December 1994 Source CD is permanently out of stock). +All the Source CDs have Texinfo source for the GNU manuals listed in *Note +Documentation::. + +The VMS tapes' contents are *not* included. Many programs that are only on +MS-DOS diskettes & not on the tapes are also *not* included. The MIT Scheme +& X11 Optional tapes' contents are *not* on the older Source CDs. *Note +Tapes:: & *Note MS-DOS Diskettes::. + +There are no precompiled programs on these Source CDs. You will need a C +compiler (programs which need some other interpreter or compiler normally +provide the C source for a bootstrapping program). We ship C compiler +binaries for some systems on the *Note Compiler Tools Binaries CD-ROM::. + + + +December 1995 Source Code CD-ROMs +................................. + +The 7th edition of our Source CD is out! Due to increasing amounts of GNU +Software, the Source Code CD is now a two disc set--the price remains +unchanged! It contains these packages, & some manuals that are not part of +packages: + + * acm 4.7 + * apache 0.8.8 + * Autoconf 2.7 + * BASH 1.14.5 + * bc 1.03 + * Binutils 2.5.2 + * Binutils 2.6 + * Bison 1.24 + * C Library 1.09 + * Calc 2.02c + * cfengine 1.2.21 + * Chess 4.0.pl75 + * CLISP 1995.08.12 + * Common Lisp 2.2 + * cperf 2.1a + * cpio 2.3 + * CVS 1.6 + * DDD 1.3b + * DejaGnu 1.2.9 + * Diffutils 2.7 + * dld 3.2.3 + * doschk 1.1 + * ecc 1.2.1 + * ed 0.2 + * Elib 0.07 + * Elisp archive + * Emacs 18.59 + * Emacs 19.28 + * Emacs 19.29 + * Emacs 19.30 + * es 0.84 + * f2c 1995.11.18 + * ffcall 1.0 + * Fileutils 3.12 + * Findutils 4.1 + * Finger 1.37 + * flex 2.5.2 + * Fontutils 0.6 + * g77 0.5.17 + * GAWK 2.15.6 + * GCC/G++/Objective C 2.7.1 + * GDB 4.15.1 + * gdbm 1.7.3 + * gettext 0.9a + * Ghostscript 2.6.2 + * Ghostview 1.5 + * Ghostview for Windows 1.0 + * GIT 4.3.7 + * gmp 1.3.2 + * GN 2.23 + * Gnans 1.5 + * GNATS 3.2 + * GNU Emacs Lisp Reference Manual, Ed. 1.03 for Version 18.59 + * GNU Emacs Lisp Reference Manual, Ed. 2.4 for Version 19.29 + * GnuGo 1.2 + * gnuplot 3.5 + * gnuserv 2.1alpha + * Graphics 0.17 + * grep 2.0 + * Groff 1.09 + * gzip 1.2.4 + * hello 1.3 + * hp2xx 3.1.4 + * HylaFAX v3.0pl0 + * Hyperbole 4.01 + * indent 1.9.1 + * Ispell 3.1.20 + * less 290 + * libg++ 2.7.1 + * libobjects 0.1.3 + * m4 1.4 + * make 3.74 + * mc 3.0 + * MIT Scheme 7.3 + * mkisofs 1.04GNU + * mtools 2.0.7 + * MULE 2.3 + * ncurses 1.9.7a + * NetHack 3.1.3 + * NIHCL 3.1.4 + * nvi 1.34 + * Oaklisp 93.07.23 + * OBST 3.4.3 + * Octave 1.1.1 + * Oleo 1.6 + * p2c 1.20 + * patch 2.1 + * perl 4.036 + * perl 5.001 + * phttpd 0.99.68 + * pine 3.91 + * Programming in Emacs Lisp: An Introduction, Ed. 1.04 + * ptx 0.4 + * rc 1.4 + * RCS 5.7 + * recode 3.4 + * regex 0.12 + * rx 0.05 + * SAOimage 1.08 + * screen 3.7.1 + * sed 2.05 + * Sharutils 4.1 + * Shellutils 1.12 + * Shogi 1.2p03 + * SIPP 3.1 + * Smalltalk 1.1.1 + * SNePS 2.3.1 + * Spinner 1.0b11 + * Superopt 2.5 + * tar 1.11.8 + * Termcap 1.3 + * TeX 3.145 + * Texinfo 3.6 + * Textutils 1.13 + * Tile Forth 2.1 + * time 1.6 + * tput 1.0 + * ucblogo 3.3 + * UUCP 1.06.1 + * W3 2.2.25 + * wdiff 0.5 + * X11R6 + * xboard 3.3.pl3 + * xgrabsc 2.41 + * xshogi 1.2p03 + * Ygl 3.0.2 + + + +June 1995 Source Code CD-ROM +............................ + +We still have the 6th edition of our Source CD at a reduced price while +supplies last. Not all FSF distributed software is included (*note Source +Code CD-ROMs::.). It contains these packages, and some manuals that are not +part of packages: + + * acm 4.7 + * Autoconf 2.4 + * BASH 1.14.5 + * bc 1.03 + * Binutils 2.5.2 + * Bison 1.24 + * C Library 1.09 + * Calc 2.02c + * cfengine 1.0.4 + * Chess 4.0.pl74 + * CLISP 1995.04.25 + * Common Lisp 2.1 + * cperf 2.1a + * cpio 2.3 + * CVS 1.3 + * DejaGnu 1.2 + * Diffutils 2.7 + * dld 3.2.3 + * doschk 1.1 + * ecc 1.2.1 + * ed 0.2 + * elib 0.06 + * Emacs 18.59 + * Emacs 19.28 + * Emacs 19.29 + * GNU Emacs Lisp Reference Manual Ed. 1.03 for Version 18 + * GNU Emacs Lisp Reference Manual Ed. 2.4 for Version 19.29 + * es 0.84 + * f2c 1995.02.24 + * Fileutils 3.12 + * Findutils 4.1 + * Finger 1.37 + * flex 2.5.2 + * Fontutils 0.6 + * g77 0.5.15 + * GAWK 2.15.6 + * GCC/G++/Objective C 2.6.3 + * GCC/G++/Objective C 2.7.0 + * GDB 4.14 + * gdbm 1.7.3 + * Ghostscript 2.6.2 + * Ghostview 1.5 + * Ghostview for Windows 1.0 + * GIT 4.3.6 + * gmp 1.3.2 + * GNATS 3.2 + * GnuGo 1.1 + * gnuplot 3.5 + * Graphics 0.17 + * grep 2.0 + * Groff 1.09 + * gzip 1.2.4 + * hello 1.3 + * hp2xx 3.1.4 + * HylaFAX 3.0.pl0 + * indent 1.9.1 + * Ispell 3.1.18 + * less 2.90 + * libg++ 2.6.2 + * libg++ 2.7.0 + * libobjects 0.1.3 + * m4 1.4 + * make 3.74 + * MandelSpawn 0.07 + * mkisofs 1.03GNU + * mtools 2.0.7 + * MULE 2.2 + * ncurses 1.9.1 + * NetHack 3.1.3 + * NIHCL 3.1.4 + * nvi 1.34 + * OBST 3.4.3 + * Octave 1.1.1 + * Oleo 1.6 + * p2c 1.20 + * patch 2.1 + * PCL 2.1 + * perl 4.036 + * perl 5.001 + * pine 3.91 + * Programming in Emacs Lisp: An Introduction Ed. 1.03 for Version 19 + * ptx 0.4 + * rc 1.4 + * RCS 5.7 + * recode 3.4 + * regex 0.12 + * rx 0.05 + * screen 3.6.2 + * sed 2.05 + * Sharutils 4.1 + * Shellutils 1.12 + * Shogi 1.2p03 + * Smalltalk 1.1.1 + * Superopt 2.5 + * tar 1.11.8 + * Termcap 1.2 + * TeX 3.1415 + * Texinfo 3.6 + * Textutils 1.12 + * Tile Forth 2.1 + * time 1.6 + * tput 1.0 + * ucblogo + * UUCP 1.05 + * wdiff 0.5 + * X11R6 + * xboard 3.2.pl2 + * xshogi 1.2p03 + * Ygl 2.9.5 + + + +May 1994 Source Code CD-ROM +........................... + +We still have the 4th edition of our Source CD, at a reduced price. This +CD has Edition 2.3 for version 19 of the `GNU Emacs Lisp Reference Manual' & +some additional software; not all FSF distributed software is included (see +``Source Code CD-ROMs''). It contains the following packages: + *acm 4.5 + *Autoconf 1.10 + *BASH 1.13.5 + *bc 1.02 + *Binutils 2.3 + *Bison 1.22 + *C Library 1.08 + *Calc 2.02c + *Chess 4.0.69 + *CLISP 1994.01.08 + *Common Lisp 1.0 + *cpio 2.3 + *CVS 1.3 + *dc 0.2 + *DejaGnu 1.2 + *Diffutils 2.6 + *dld 3.2.3 + *doschk 1.1 + *ecc 1.2.1 + *ed 0.1 + *elib 0.06 + *Emacs 18.59 + *Emacs 19.23 + *es 0.84 + *f2c 1994.04.14 + *Fileutils 3.9 + *find 3.8 + *finger 1.37 + *flex 2.4.6 + *Fontutils 0.6 + *GAS 1.36.utah + *GAS 2.2 + *Gawk 2.15.4 + *GCC 2.5.8 + *GDB 4.12 + *gdbm 1.7.1 + *Ghostscript 2.6.1 + *Ghostview 1.5 + *Ghostview for Windows 1.0 + *gmp 1.3.2 + *GNATS 3.2 + *GnuGo 1.1 + *gnuplot 3.5 + *gperf 2.1a + *Graphics 0.17 + *grep 2.0 + *Groff 1.09 + *gzip 1.2.4 + *hello 1.3 + *hp2xx 3.1.4 + *indent 1.9.1 + *ispell 4.0 + *libg++ 2.5.3 + *m4 1.1 + *Make 3.71 + *MandelSpawn 0.07 + *mtools 2.0.7 + *MULE 1.0 + *NetFax 3.2.1 + *Nethack 3.1.3 + *NIHCL 3.0 + *nvi 1.11 + *Octave 1.0 + *Oleo 1.5 + *p2c 1.20 + *patch 2.1 + *PCL 1993.03.18 + *perl 4.036 + *ptx 0.3 + *rc 1.4 + *RCS 5.6.0.1 + *recode 3.3 + *regex 0.12 + *screen 3.5.2 + *sed 2.05 + *shellutils 1.9.4 + *Shogi 1.1.02 + *Smalltalk 1.1.1 + *Superopt 2.3 + *tar 1.11.2 + *Termcap 1.2 + *TeX 3.1 + *Texinfo 3.1 + *Textutils 1.9.1 + *Tile Forth 2.1 + *time 1.6 + *tput 1.0 + *UUCP 1.05 + *uuencode 1.0 + *wdiff 0.04 + *X11R6 + *xboard 3.0.9 + *xshogi 1.2.02 + + + +November 1993 Source Code CD-ROM +................................ + +We still have the 3rd edition of our Source CD, at a reduced price, while +supplies last. It was the last Source Code CD to contain X11R5. This CD has +Edition 2.2 for version 19 of the `GNU Emacs Lisp Reference Manual' & some +additional software; not all FSF distributed software is included (*note +Source Code CD-ROMs::.). It contains these packages: + + * acm 3.1 + * Autoconf 1.7 + * BASH 1.13.4 + * bc 1.02 + * Binutils 1.9 2.3 + * Bison 1.22 + * C Library 1.06.7 + * Calc 2.02b + * Chess 4.0p62 + * CLISP 93.11.08 + * cpio 2.3 + * CVS 1.3 + * dc 0.2 + * DejaGnu 1.0.1 + * Diffutils 2.6 + * dld 3.2.3 + * doschk 1.1 + * ecc 1.2.1 + * elib 0.06 + * Emacs 18.59 + * Emacs 19.21 + * es 0.84 + * f2c 1993.04.28 + * Fileutils 3.9 + * find 3.8 + * Finger 1.37 + * flex 2.3.8 + * Fontutils 0.6 + * GAS 1.36.utah + * GAS 1.38.1 + * GAS 2.2 + * GAWK 2.15.3 + * GCC/G++/Objective C 2.5.4 + * GDB 4.11 + * gdbm 1.7.1 + * Ghostscript 2.6.1 + * Ghostview 1.5 + * Ghostview for Windows 1.0 + * gmp 1.3.2 + * GNATS 3.01 + * GnuGo 1.1 + * gnuplot 3.5 + * cperf 2.1a + * Graphics 0.17 + * grep 2.0 + * Groff 1.08 + * gzip 1.2.4 + * hello 1.3 + * hp2xx 3.1.3a + * indent 1.8 + * Ispell 4.0 + * less 177 + * libg++ 2.5.1 + * m4 1.1 + * make 3.69.1 + * MandelSpawn 0.06 + * mtools 2.0.7 + * MULE 1.0 + * NetFax 3.2.1 + * NetHack 3.1.3 + * NIHCL 3.0 + * Oleo 1.5 + * p2c 1.20 + * patch 2.1 + * PCL 93.03.18 + * perl 4.036 + * ptx 0.3 + * rc 1.4 + * RCS 5.6.0.1 + * recode 3.2.4 + * regex 0.12 + * screen 3.5.2 + * sed 1.18 2.03 + * Shellutils 1.9.1 + * Shogi 1.1p02 + * Smalltalk 1.1.1 + * Superopt 2.3 + * tar 1.11.2 + * Termcap 1.2 + * TeX 3.1 + * Texinfo 3.1 + * Tile Forth 2.1 + * time 1.6 + * time 1.6 + * tput 1.0 + * UUCP 1.04 + * uuencode 1.0 + * wdiff 0.04 + * X11R5 + + + +MS-DOS Book with CD-ROM +----------------------- + +We are working on our first book describing GNU Software for MS-DOS, but we +do not know when it will be finished. It will include a CD-ROM with all the +sources & binaries on the MS-DOS Diskettes and more. + +Please do NOT contact us about this book until we announce it on our mailing +lists (to subscribe, ask `info-gnu-request@prep.ai.mit.edu'), because it just +slows us down. + + + +Debian GNU/Linux Book with CD-ROM +--------------------------------- + +We are working on our first book describing Debian GNU/Linux but we do not +know when it will be finished. Please do NOT contact us about this book +until we announce it on our mailing lists (ask +`info-gnu-request@prep.ai.mit.edu' to subscribe), because it just slows us +down. + +A CD will be inside the book with sources & binaries for Debian GNU/Linux, +which is a complete operating system for i386/i486/Pentium. It is a +GNU/Linux system--that is to say, a variant GNU system which uses Linux as +the kernel. (All the systems now available that use the Linux kernel are +GNU/Linux systems, see item "Linux" in *Note Free Software for +Microcomputers::.) + +Debian is being developed by Ian Murdock and the Debian Association in +conjunction with the Free Software Foundation. We are distributing it as an +interim measure until the GNU kernel (the Hurd) is ready for users. + +For details on Debian & how to help, see URL: `http://www.debian.org/' or +FTP, `/pub/gnu/GNUinfo/DEBIAN' from a GNU FTP host (*note How to Get GNU +Software::.). FTP Debian under `/debian' from `ftp.debian.org'. + + + +MS-DOS Diskettes +**************** + +The FSF distributes some of the GNU software ported to MS-DOS, on 3.5inch +1.44MB diskettes. These disks have both sources and executables. + + + +DJGPP Diskettes +--------------- + +We offer DJGPP on 30 diskettes. For further details, see *Note GNU +Software::. The DJGPP diskettes contain the following: + + * Binutils 2.5.2 + * Bison 1.22 + * Diffutils 2.6 + * DJGPP 1.12m4 + * flex 2.4.7 + * GCC/G++ 2.6.3 + * GDB 4.12 + * Groff 1.09 + * gzip 1.24 + * libg++ 2.6.2 + * make 3.71 + * patch 2.1 + * sed 1.18 + * Texinfo 3.1 + + + +Emacs Diskettes +--------------- + +Two versions of GNU Emacs are included on the Emacs diskettes we distribute: +GNU Emacs version 19.29 handles 8-bit character sets; the other, MULE version +2.2, handles 16-bit character sets including Kanji. + + + +Selected Utilities Diskettes +---------------------------- + +The GNUish MS-DOS Project ported GNU software to PC compatibles. Though +GNUish is no longer active, users still ask for these ports done some years +ago. We offer these ports on five diskettes. In general, the ports run on +8086/80286-based 16-bit machines; an 80386 is not required. Some are +necessarily missing features. + +Included are: `cpio', `diff', `find', `flex', `gdbm', `grep', `indent', +`less', `m4', `make', `ptx', RCS, `sed', `shar', `sort', & Texinfo. + + + +Windows Diskette +---------------- + +We offer GNU Chess and `gnuplot' for Microsoft Windows on a single diskette. + + + +Tape & CD-ROM Subscription Service +********************************** + +If you do not have net access, our subscription service enables you to stay +current with the latest GNU developments. For a one-time cost equivalent to +three tapes or CD-ROMs (plus shipping in some cases), we will ship you four +new versions of the tape of your choice or the Source Code CD-ROM. The tapes +are sent each quarter; the CD-ROMs are sent as they are issued (currently +twice a year, but we hope to make it more frequent). + +Regularly, we will send you a new version of a Lisps/Emacs, Languages, +Utilities, or X Window System (X11R6) Required tape, or the Source CD-ROM. +The MIT Scheme and X Window System Optional tapes are not changed often +enough to warrant quarterly updates. We do not yet know if we will be +offering subscriptions to the Compiler Tools Binaries or our new Books with +CD-ROM. + +Since Emacs 19 is on the Lisps/Emacs Tape and the Source CD-ROM, a +subscription to either is an easy way to keep current with Emacs 19 as it +evolves. + +A subscription is an easy way to keep up with the regular bug fixes to the X +Window System. We update the X11R6 Required tape as fixes and patches are +issued throughout the year. Each edition of the *Note Source Code CD-ROMs::, +also has updated sources for the required part of the X Window System. + +Please note: In two cases, you must pay 4 times the normal shipping required +for a single order when you pay for each subscription. If you're in Alaska, +Hawaii, or Puerto Rico you must add $20.00 for shipping for each +subscription. If you're outside of U.S., Canada, and Puerto Rico, you must +add $80.00 for each subscription. See "Unix and VMS Software" and "Shipping +Instructions" on the *note Free Software Foundation Order Form::.. + + + +FSF T-shirt +*********** + +There is a GNU & improved T-shirt. The front has the GNU Emacs Lisp code +`(USE 'GNU)' with "`()'" being the dancing parentheses from the cover of our +`GNU Emacs Lisp Reference Manual' (drawn by Berkeley, CA artist Etienne +Suvasa). The back of the shirt is still imprinted with the Preamble to the +GNU General Public License. + +These shirts come in two colors, Natural & Black. Natural is an off-white, +unbleached, undyed, environment-friendly cotton, printed with black ink, & is +great for tye-dyeing or displaying as is. Black is printed with white ink & +is perfect for late night hacking. All shirts are thick 100% cotton, & come +in sizes M, L, XL, & XXL. GNU shirts often create spontaneous friendships at +technical conferences and on major university campuses! (They also make +great gifts!) + + + +Free Software Foundation Order Form +*********************************** + +All items are distributed with permission to copy and to redistribute. +Texinfo source for each manual and source for each reference card is on +the appropriate tape, diskette, or CD-ROM; the prices for these magnetic +media do not include printed documentation. All items are provided on +an ``as is'' basis, with no warranty of any kind. Please allow six +weeks for delivery (though it won't usually take that long). + + + PRICE AND CONTENTS MAY CHANGE WITHOUT NOTICE AFTER June 30, 1996. + + + +Unix and VMS Software +--------------------- + +These tapes in the formats indicated (*note Tapes::., for contents): + + Please circle the dollar amount for each tape you order. + + Reel to Sun (1) HP IBM (2) Exabyte DAT + reel RS/6000 + Unix tar Unix tar Unix tar Unix tar Unix tar Unix tar + 9-track QIC-24 16-track QIC-150 + 1600 bpi DC300XLP DC600HC DC600A + 1/2" reel 1/4" c.t. 1/4" c.t. 1/4" c.t. 8mm c.t. 4mm c.t. + + (c.t. = cartridge tape) + +Lisps/Emacs $200 $210 $230 $215 $205 $225 + +Languages $200 $210 $230 $215 $205 $225 + +Utilities $200 $210 $230 $215 $205 $225 + +4.4BSD-Lite $200 $210 $230 $215 $205 $225 + +Scheme $200 $210 $230 $215 $205 $225 + +X11R6-Required $200 $210 $230 $215 $205 $225 + +X11R6-Optional $200 $210 $230 $215 $205 $225 + + (1) Sun tapes can be read on some other Unix systems. + (2) IBM RS/6000 tapes can be read on some other Unix systems. + + +Subscriptions, 4 updates for one year (*note Tape & CD-ROM Subscription Service::.): + +Emacs $600 $630 $690 $645 $615 $675 + +Languages $600 $630 $690 $645 $615 $675 + +Utilities $600 $630 $690 $645 $615 $675 + +X11R6-Required $600 $630 $690 $645 $615 $675 + + Subtotal $ ______ Please put total of the above circled amounts here. + + +These 1600 bpi reel-to-reel 9 track 1/2" tapes, in VMS BACKUP format (aka +interchange format) (*note VMS Emacs and VMS Compiler Tapes::.): + +____ @ $195 = $ ______ VMS Emacs, GNU Emacs source & executables only. + +____ @ $195 = $ ______ VMS Compiler, GCC, GAS, and Bison source and + executables only. + + +FSF Deluxe Distribution +....................... +(Please call with any questions. *note Deluxe Distribution::. for machine, +operating system, and media types.): + + +____ @ $5000 = $ ______ The Deluxe Distribution, with manuals, etc. + +Machine: _____________________________________________________________________ + +Operating system: ____________________________________________________________ + +Media type: __________________________________________________________________ + +Version of X Windows System to build: _______________________________________ + + + +CD-ROMs, in ISO 9660 format (*note CD-ROMs::.): +.............................................. + + +GNU Source Code CD-ROMs, Version 7 with X11R6 (*note December 1995 Source Code CD-ROMs::.): + +____ @ $240 = $ ______ for corporations and other organizations. + +____ @ $ 60 = $ ______ for individuals. + + +Subscriptions, next 4 updates, of the Source Code CD-ROM, in ISO 9660 format +(*note Tape & CD-ROM Subscription Service::.): + +____ @ $720 = $ ______ for corporations and other organizations. + +____ @ $180 = $ ______ for individuals. + + +GNU Compiler Tools Binaries CD-ROM, Version 3, December 1995 Edition +(*note Compiler Tools Binaries CD-ROM::.): + +____ @ $220 = $ ______ for corporations and other organizations. + +____ @ $55 = $ ______ for individuals. + + + +MS-DOS Software +--------------- + +The following sources and executables for MS-DOS, on 3.5" 1.44MB diskettes +(*note MS-DOS Diskettes::.): + +____ @ $ 90 = $ ______ Emacs diskettes, GNU Emacs, for 80386 and up. + +____ @ $ 80 = $ ______ DJGPP diskettes, GCC version 2, and other tools + for 80386 and up (also on the + *note Compiler Tools Binaries CD-ROM::.). + +____ @ $ 85 = $ ______ Selected Utilities diskettes, 8086 and up. + +____ @ $ 40 = $ ______ Windows diskette: GNU Chess and gnuplot for + Microsoft Windows. + + +Manuals +------- + +These manuals (*note Documentation::.). The latest version of each manual +will be shipped. Please call if you want a specific version. + +____ @ $ 25 = $ ______ GNU Emacs version manual, with a reference card. + +____ @ $ 50 = $ ______ GNU Emacs Lisp Reference manual, in two volumes. + +____ @ $ 60 = $ ______ GNU Emacs Lisp Reference, Japanese Edition. + +____ @ $ 50 = $ ______ Using and Porting GNU CC. + +____ @ $ 50 = $ ______ GNU C Library Reference Manual. + +____ @ $ 50 = $ ______ GNU Emacs Calc manual, with a reference card. + +____ @ $ 20 = $ ______ Programming in Emacs Lisp: An Introduction. + +____ @ $ 20 = $ ______ Debugging with GDB, with a reference card. + +____ @ $ 25 = $ ______ GAWK manual. + +____ @ $ 20 = $ ______ Make manual. + +____ @ $ 20 = $ ______ Bison manual, with a reference card. + +____ @ $ 20 = $ ______ Flex manual, with a reference card. + +____ @ $ 20 = $ ______ Texinfo manual. + +____ @ $ 15 = $ ______ Termcap manual. + + + +Reference Cards +--------------- + +The following reference cards, in packets of ten. For single copies please +call. + +____ @ $ 10 = $ ______ GNU Emacs version 19 reference cards. + +____ @ $ 10 = $ ______ GNU Emacs Calc reference cards. + +____ @ $ 10 = $ ______ GDB reference cards. + +____ @ $ 10 = $ ______ Bison reference cards. + +____ @ $ 10 = $ ______ Flex reference cards. + + + +T-shirts +-------- + +GNU/FSF T-shirts, thick 100% cotton (*note FSF T-shirt::.): + +____ @ $ 15 = $ ______ Size M ____ natural ____ black. + +____ @ $ 15 = $ ______ Size L ____ natural ____ black. + +____ @ $ 15 = $ ______ Size XL ____ natural ____ black. + +____ @ $ 15 = $ ______ Size XXL ____ natural ____ black. + + + +Older Items +----------- + +Older items are only available while supplies last. + +____ @ $ 5 = $ ______ GNU Emacs version 18 reference cards, in packets + of ten. + + +Please fill in the number of each older CD-ROM you order: + + for for + corporations individuals: + and other + organizations: + +GNU Compiler Tools Binaries CD-ROM + December 1994 Edition (Version 2) ____________ ____________ + +GNU Compiler Tools Binaries CD-ROM + December 1993 Edition (Version 1) ____________ ____________ + + +Please note that the December 1994 Source CD is permanently out of stock. + +GNU Source Code CD-ROM + June 1995 edition with X11R6 ____________ ____________ + +GNU Source Code CD-ROM + May 1994 edition with X11R6 ____________ ____________ + +GNU Source Code CD-ROM + November 1993 edition with X11R5 ____________ ____________ + +GNU Source Code CD-ROM + May 1993 edition with X11R5 ____________ ____________ + +GNU Source Code CD-ROM + October 1992 edition with X11R5 ____________ ____________ + + +Please put the total count and cost of the above older CD-ROMs here: + +____ @ $ 80 = $ ______ for corporations and other organizations. + +____ @ $ 20 = $ ______ for individuals. + + ====== + + Subtotal $ ______ + + + +Tax and Shipping Costs +---------------------- + + + $ ______ For addresses in Massachusetts: add 5% sales tax + or give tax exempt number. There is no sales tax + on T-shirts. + + $ ______ Shipping fee for addresses in Alaska, Hawaii, or + Puerto Rico: + $ 5.00 base charge; + + $ 5.00 for *each* Emacs Calc or Emacs Lisp + Reference manual ($ 5.00 * #ofMans); + + $ 20.00 for *each* tape subscription or CD + subscription ($20.00 * #ofSubs); + + $ 1.00 for *each* item other then the above + (shipping for all other items = + $ 1.00 * #ofOtherItems). + + $ ______ Shipping fee for most Foreign Destinations: (Please + do *not* use this formula for addresses in China, + Guam, Indonesia, Israel, Malaysia, New Zealand, + Philippines, and Thailand. Please fax, + or call for an exact shipping quote.) + $ 20.00 base charge for orders to other + addresses outside of U.S., Canada, & Puerto Rico: + + $ 80.00 for *each* tape subscription or CD + subscription ($ 80.00 * #ofSubs); + + $ 10.00 for *each* of the other items in the + order ($ 10.00 * #ofItems). + + $ ______ Optional (tax-deductible in the U.S.) donation. + ------ We suggest 5% if paying by credit card. + + TOTAL $ ______ We pay for shipping via UPS ground transportation in + the contiguous 48 states and Canada. For very + large orders, ask about actual shipping costs for + that order. + + + +Shipping Information +-------------------- + +Name: ________________________________________________________________________ + +Mail Stop/Dept. Name: ________________________________________________________ + +Organization: ________________________________________________________________ + +Street Address: ______________________________________________________________ + +City/State/Province: _________________________________________________________ + +Zip Code/Postal Code/Country: ________________________________________________ + +Telephone number in case of a problem with your order. +For international orders, please include a Fax number. _______________________ + + +------------------------------------------------------------------------------ +| | +| Orders filled only upon receipt of check, money order, or credit card | +| order in U.S. dollars. Unpaid orders will be returned to the sender. | +| We do not have the staff to handle the billing of unpaid orders. Please | +| help keep our lives simple by including your payment with your order. | +| | +------------------------------------------------------------------------------ + + + +For orders from outside the U.S.: +--------------------------------- + +You are responsible for paying all duties, tariffs, and taxes. If you +refuse to pay the charges, the shipper will return or abandon the order. + + + --------------------------------------------------------------------------- + | | + | Please make checks payable to the ``Free Software Foundation''. | + | | + --------------------------------------------------------------------------- + + + +For Credit Card Orders: +----------------------- + +The Free Software Foundation takes these credit cards: Carte Blanche, +Diner's Club, JCB, MasterCard, Visa, or American Express. Please note that +we are charged about 5% of an order's total amount in credit card +processing fees. Please consider paying by check instead, or adding on a 5% +donation to make up the difference. To place a credit card order, please +give us this information: + + +Card type: ___________________________________________________________________ + +Account Number: ______________________________________________________________ + +Expiration Date: _____________________________________________________________ + +Cardholder's Signature: ______________________________________________________ + + + +------------------------------------------------------------------------------ +| | +| If you wish to pay by wire transfer or you are a reseller, please | +| call or write us for details. | +| | +------------------------------------------------------------------------------ + + + Please mail orders to: Free Software Foundation + 59 Temple Place -- Suite 330 + Boston, MA 02111 +PRICES AND CONTENTS MAY CHANGE +1-617-542-5942 +WITHOUT NOTICE AFTER June 30, 1996. Fax (including Japan): +1-617-542-2652 + +Version: January 1996 ASCII etc/ORDERS + +----------------------------------------------------------------------------- + +local variables: +mode: text +fill-column: 78 +end: diff --git a/etc/ORDERS.EUROPE b/etc/ORDERS.EUROPE new file mode 100644 index 0000000..7004963 --- /dev/null +++ b/etc/ORDERS.EUROPE @@ -0,0 +1,6 @@ +The Free Software Foundation does not currently have a distributor in +Europe. + +Please use the file etc/ORDERS in the GNU Emacs distribution or the +ftpable file prep.ai.mit.edu:/pub/gnu/GNUinfo/ORDERS to order from the +FSF in the United States. diff --git a/etc/ORDERS.JAPAN b/etc/ORDERS.JAPAN new file mode 100644 index 0000000..cdaa9f4 --- /dev/null +++ b/etc/ORDERS.JAPAN @@ -0,0 +1,246 @@ + + +Note: this file describes how you order software from the Free Software +Foundation directly. Information on getting XEmacs can be found in +the file DISTRIB. + + + GNU ORDER FORM FOR JAPAN + +Prices and contents may change without notice after June 30, 1996. + + Item Unit Price Quantity Item Price + ---------------------------------------- ---------- -------- ---------- +* indicates New or Substantially Updated items. + +* Compiler Tools Binaries CD-ROM December '95 Y32,000 ________ __________ + Edition, Version 3, if a corporation or other + organization is ultimately paying. + +* Compiler Tools Binaries CD-ROM December '95 Y8,000 ________ __________ + Edition, Version 3, if an individual is + ultimately paying. + +* Source Code CD-ROM December '95 Edition, Y40,000 ________ __________ + Version 7, with X11R6, if a corporation or + other organization is ultimately paying. + +* Source Code CD-ROM December '95 Edition, Y10,000 ________ __________ + Version 7, with X11R6, if an individual is + ultimately paying. + + Source Code CD-ROM November '93 Edition, Y40,000 ________ __________ + Version 3, with X11R5, if a corporation or other + organization is ultimately paying (while supplies last). + + Source Code CD-ROM November '93 Edition, Y10,000 ________ __________ + Version 3, with X11R5, if an individual is + ultimately paying (while supplies last). + + Subscription to next four editions of the Y125,000 ________ __________ + Source Code CD-ROMs. (There is no subscription + yet to the Compiler Tools Binaries CD-ROM.) + +* Source Code on Tape Y30,000 ________ __________ + (per tape; see the next page for more details.) + + Emacs manual, with reference card Y3,700 ________ __________ + (Eleventh Edition for Version 19.29) + +* Programming in Emacs Lisp, An Introduction Y3,100 ________ __________ + (Edition 1.04) + +* Emacs Lisp Reference manual, in two volumes Y7,100 ________ __________ + (Edition 2.4 for Version 19.29) + +* Emacs Lisp Reference, Japanese Edition manual Y8,000 ________ __________ + (Japanese DRAFT Revision 1.0, Dec 1995, + from English Edition 2.4 for Version 19.29) + + Emacs Calc manual, with reference card Y7,400 ________ __________ + (Edition 2.02 for Version 2.02) + + Using and Porting GNU CC manual Y7,100 ________ __________ + (September 1994 Edition for Version 2.6) + + GNU C Library Reference manual Y7,400 ________ __________ + (Edition 0.06 for Version 1.09) + + Debugging with GDB manual, with reference card Y3,100 ________ __________ + (Edition 4.12 for Version 4.14) + + Texinfo manual (Edition 2.21 for Version 3) Y2,800 ________ __________ + + Termcap manual (Second Edition for Version 1.2) Y2,100 ________ __________ + + Bison manual, with reference card Y2,100 ________ __________ + (December 1993 Edition for Version 1.23) + +* Gawk manual (Edition 1.0 for Version 3.0) Y3,700 ________ __________ + +* Make manual (Edition 0.49 for Version 3.74) Y2,800 ________ __________ + + Flex manual, with reference card Y2,100 ________ __________ + (Edition 1.03 for Version 2.3.7) + + Packet of ten Emacs 19 reference cards Y1,500 ________ __________ + + Packet of ten Emacs 18 reference cards Y1,500 ________ __________ + (while supplies last) + + Packet of ten GDB reference cards Y1,500 ________ __________ + + Packet of ten Emacs Calc reference cards Y1,500 ________ __________ + + Packet of ten Bison reference cards Y1,500 ________ __________ + + Packet of ten Flex reference cards Y1,500 ________ __________ + + FSF T-shirt (size M) Y5,000 ________ __________ + Color: Natural or Black (circle) + + FSF T-shirt (size L) Y5,000 ________ __________ + Color: Natural or Black (circle) + + FSF T-shirt (size XL) Y5,000 ________ __________ + Color: Natural or Black (circle) + + FSF T-shirt (size XXL) Y5,000 ________ __________ + Color: Natural or Black (circle) + + Shipping Y1,500 + + Optional donation--help the FSF write more free software! __________ + + Total __________ + +The following is your shipping label. Please write clearly using Romaji. +All orders must be prepaid. See the next page for payment instructions. + + Name: ___________________________________________________________________ + + Company: ________________________________________________________________ + + Address: ________________________________________________________________ + +Please also provide the following information in case there is a problem +with your order. + + Telephone: ________________ Fax: ________________ E-Mail: _________________ + + ____ Please add my name to the mailing list for future FSF events in + Japan. I prefer to be notified by: ______ fax _____ e-mail + + ____ Please send me information regarding the GNU corporate deluxe + software and documentation package. + + ____ My company is interested in becoming a corporate sponsor of the FSF. + + ____ I am interested in working as a volunteer for the FSF. + +Prices and contents may change without notice after June 30, 1996. + + Version: January 1996 ASCII etc/ORDERS.JAPAN + + Free Software Foundation FAX 001-1-617-542-2652 + 59 Temple Place - Suite 330 Voice 001-1-617-542-5942 + Boston, MA 02111-1307 E-mail gnu@prep.ai.mit.edu + U.S.A. + + + GNU ORDER FORM ADDITIONAL INSTRUCTIONS + +You can fax your order directly to 001-1-617-542-2652. Inquires may +be made to gnu@prep.ai.mit.edu. Orders may also be sent by ordinary +mail to: + + Free Software Foundation + 59 Temple Place - Suite 330 + Boston, MA 02111-1307 + U.S.A. + +Orders may be prepaid either by credit card or by bank transfer. The credit +cards we accept are JCB, Visa, MasterCard, Diner's Club, Carte Blanche, and +American Express. Please provide your card type, expiration date, account +number, and your signature. Bank transfer payments should be made to the +following account: + + Bank: Sanwa Bank + Branch: Azabu Branch (#620) + Account name: Free Software Foundation + Account number: 3683216 + +Prices and contents may change without notice after June 30, 1996. All +software and publications are distributed with permission to copy and to +redistribute. Texinfo source for each manual is on the Source Code CD-ROM +and/or on the appropriate tape. We will ship the latest version of each +manual, unless you instruct us otherwise. + +The minimum order amount (before postage) is Y5,000. The FSF regrets that it +cannot fill orders for smaller amounts. Please contact the FSF directly by +telephone at 001-1-617-542-5942 or by fax at 001-1-617-542-2652 prior to +placing any orders for greater than Y500,000. + +The FSF offers a deluxe package to Japanese corporations which consists of +source code in your preferred format, a set of custom binaries for +your preferred architecture and operating system, and a complete documentation +set with reference cards. Purchasers of the corporate deluxe package will +also receive invitations to future private presentations conducted by Richard +Stallman in Japan. The price for the corporate deluxe package is Y1,000,000. +For more information, contact the FSF directly. + +Software may also be ordered on magnetic tape. The following tape titles are +available: + * Lisps/Emacs + * Languages + * Utilities + * Scheme + * 4.4BSD-Lite + * X11R6-Required + X11R6-Optional + X11R5-Required + X11R5-Optional + +The following tape formats are available: + + Generic Unix tar 9-track 1600bpi 1/2" reel tape + + Generic Unix tar DAT 4mm cartridge tape + + Generic Unix tar Exabyte 8mm cartridge tape + + Sun Unix tar QIC-24 DC300XLP 1/4" cartridge tape + (may also be read on other systems) + + HP Unix tar 16-track DC600HC 1/4" cartridge tape + + IBM RS/6000 Unix tar QIC-150 DC600A 1/4" cartridge tape + (may also be read on other systems) + + VMS backup 9-track 1600bpi 1/2" reel tape + (only two titles: GNU Emacs and GCC/GAS/Bison) + +Please indicate your desired tape titles and formats on a separate sheet of +paper and fax that along with your order. If you need information regarding +which programs are on which tapes, please consult the Japanese edition of the +January 1996 GNU Bulletin. If you do not have a copy of the Japanese edition +of the GNU Bulletin, please contact the FSF. + +For T-shirt orders, please circle desired color. + +Richard Stallman regrets that he cannot autograph items ordered by mail. +If time permits, he will autograph items purchased at or brought to +speaking engagements. + +All sales are final. + +Prices and contents may change without notice after June 30, 1996. + + Please do not fax this page. + + For use in Japan only. + + Free Software Foundation + 59 Temple Place - Suite 330 + Boston, MA 02111-1307 + U.S.A. diff --git a/etc/PACKAGES b/etc/PACKAGES new file mode 100644 index 0000000..598c097 --- /dev/null +++ b/etc/PACKAGES @@ -0,0 +1,324 @@ +* Description of available packages by category +=============================================== + +This data is up-to-date as of 13 January 1998. + +** Library Packages (libs) +========================== + +These packages are required to build and support most of the rest of +XEmacs. By design, xemacs-base is a `regular' package. Use restraint +when adding new files there as it is required by almost everything. + +*** Sun + +Support for Sparcworks. Must be installed prior to XEmacs build to be +effective. + +*** apel + +A Portable Emacs Library. Used by XEmacs MIME support. + +*** edebug + +A Lisp debugger. + +*** dired + +The DIRectory EDitor is for manipulating, and running commands on +files in a directory. + +*** efs + +Treat files on remote systems the same as local files. + +*** mail-lib + +Fundamental lisp files for providing email support. + +*** tooltalk + +Support for building with Tooltalk. Must be installed prior to XEmacs +build to be effective. + +*** xemacs-base + +Fundamental XEmacs support. Install this unless you wish a totally +naked XEmacs. + +*** xemacs-devel + +XEmacs Lisp developer support. This package contains utilities for +supporting Lisp development. It is a single-file package so it may be +tailored. + +** Communications Packages (comm) +================================= + +These packages provide support for various communications, primarily +email and usenet. + +*** footnote + +Footnoting in mail message editing modes. + +*** gnats + +XEmacs bug reports. + +*** gnus + +The Gnus Newsreader and Mailreader. + +*** mailcrypt + +Support for messaging encryption with PGP. + +*** mh-e + +Front end support for MH. + +*** net-utils + +Miscellaneous Networking Utilities. This is a single-file package and +files may be deleted at will. + +*** ph + +Emacs implementation of the ph client to CCSO/qi directory servers. + +*** rmail + +An obsolete Emacs mailer. If you do not already use it don't start. + +*** supercite + +An Emacs citation tool. Useful with all Emacs Mailers and Newsreaders. + +*** tm + +Emacs MIME support. + +*** vm + +An Emacs mailer. This package must be installed prior to building XEmacs. + +*** w3 + +A Web browser. + +** Games and Amusements (games) +=============================== + +*** cookie + +Spook and Yow (Zippy quotes). + +*** games + +Tetris, Sokoban, and Snake. + +*** mine + +Minehunt. + +*** misc-games + +Other amusements and diversions. + +** Mule Support (mule) +====================== + +*** egg-its + +Wnn (4.2 and 6) support. SJ3 support. Must be installed prior to +XEmacs build. + +*** leim + +Quail. Used for everything other than English and Japanese. + +*** locale + +Used for localized menubars (French and Japanese) and localized splash +screens (Japanese). + +*** mule-base + +Basic Mule support. Must be installed prior to building with Mule. + +*** skk + +Another Japanese Language Input Method. Can be used without a +separate process running as a dictionary server. + +** Productivity Packages (oa) +============================= + +*** calendar + +Calendar and diary support. + +*** edit-utils + +Single file lisp packages for various XEmacs goodies. Load this and +weed out the junk you don't want. + +*** forms + +Forms editing support (obsolete, use the builtin Widget instead). + +*** frame-icon + +Provide a WM icon based on major mode. + +*** hm--html-menus + +HTML editing. + +*** ispell + +Spell-checking with ispell. + +*** pc + +PC style interface emulation. + +*** psgml + +Validated HTML/SGML editing. + +*** sgml + +SGML/Linuxdoc-SGML editing. + +*** slider + +User interface tool. + +*** speedbar + +??? Document me. + +*** strokes + +Mouse enhancement utility. + +*** text-modes + +Various single file lisp packages for editing text files. + +*** time + +Display time & date on the modeline. + +** Operating System Utilities (os) +================================== + +*** eterm + +Terminal emulator. + +*** igrep + +Enhanced front-end for Grep. + +*** ilisp + +Front-end for Inferior Lisp. + +*** os-utils + +Miscellaneous single-file O/S utilities. + +*** view-process + +A Unix process browsing tool. + +** Program Editing Support (prog) +================================= + +*** ada + +Ada language support. + +*** c-support + +Basic single-file add-ons for editing C code. + +*** cc-mode + +C, C++ and Java language support. + +*** debug + +GUD, gdb, dbx debugging support. + +*** ediff + +Interface over patch. + +*** emerge + +Another interface over patch. + +*** pcl-cvs + +CVS frontend. + +*** prog-modes + +Miscellaneous single-file lisp files for various programming languages. + +*** scheme + +Front-end support for Inferior Scheme. + +*** sh-script + +Support for editing shell scripts. + +*** vc + +Version Control for Free systems. This package must be installed +prior to building XEmacs. + +*** vc-cc + +Version Control for ClearCase. This package must be installed prior +to building XEmacs [broken as of XEmacs 20.5-beta19]. + +*** vhdl + +Support for VHDL. + +** Word Processing (wp) +======================= + +*** auctex + +Basic TeX/LaTeX support. + +*** crisp + +Crisp/Brief emulation. + +*** edt + +DEC EDIT/EDT emulation. + +*** texinfo + +XEmacs TeXinfo support. + +*** textools + +Single-file TeX support. + +*** tpu + +DEC EDIT/TPU support. + +*** viper + +VI emulation support. diff --git a/etc/README b/etc/README new file mode 100644 index 0000000..49c2065 --- /dev/null +++ b/etc/README @@ -0,0 +1,80 @@ + +This directory contains some text files of documentation for XEmacs or +of interest to XEmacs users, some programs used by or with XEmacs, and +the file of on-line documentation for XEmacs. + +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 +DEBUG Hints on how to debug XEmacs +DISTRIB How to obtain copies of XEmacs and Emacs +Emacs.ad Sample Resource file +FTP XEmacs FTP Mirrors +GNU GNU Manifesto +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 +MORE.STUFF List of useful unbundled packages +NEWS XEmacs 21.2 release information +ORDERS +ORDERS.EUROPE +ORDERS.JAPAN Order forms for GNU software +PACKAGES List of packages available for 21.2 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 (English version) +TUTORIAL.* Tutorials in non-English languages +XKeysymDB X Keysym Database with Motif bindings +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 +editclient.sh Either start up XEmacs or connect to a running one +emacskeys.sco +emacsstrs.sco Special files for running on an SCO console +eos/ Images for EOS support (GUD) +etags.1 Etags man page +gnu.xbm +gnu.xpm Image of a Gnu. +gnuattach.1 Gnuattach man page +gnuclient.1 Gnuclient man page +gnudoit.1 Gnudoit man page +gnuserv.1 Gnuserv man page +gnuserv.README Original README file from gnuserv +gnusref.tex Gnus reference card +gray1.xbm Gray bitmap +ms-kermit +ms-kermit-7bit Files for running XEmacs through kermit +photos/*.Z Various pictures of XEmacs developers +recycle.xpm +recycle2.xpm Two versions of oversized Recycle cursor +refcard.ps.gz Postscript version of XEmacs reference card +refcard.tex XEmacs reference card +sample.Xdefaults Example ~/.Xdefaults file +sample.emacs Example ~/.emacs file +sink.xbm A Gnu icon +sparcworks/ Support files for Sparcworks +tests/ Testcases for external widget +time/ Image files for display-time +toolbar/ Image files for the toolbar +trash.xpm Garbage can icon +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 diff --git a/etc/README.HYPERBOLE b/etc/README.HYPERBOLE new file mode 100644 index 0000000..b1e8e63 --- /dev/null +++ b/etc/README.HYPERBOLE @@ -0,0 +1,6 @@ +Hyperbole is a suite of tools for enhancing productivity. + +The latest working version of this package with major enhancements +is available together with professional support exclusively from their +developer, Altrasoft Inc. See http://www.altrasoft.com for product +and service details. diff --git a/etc/README.OO-BROWSER b/etc/README.OO-BROWSER new file mode 100644 index 0000000..f572fab --- /dev/null +++ b/etc/README.OO-BROWSER @@ -0,0 +1,6 @@ +The OO-Browser is a tool for examining object oriented code. + +The latest working version of this package with major enhancements +is available together with professional support exclusively from their +developer, Altrasoft Inc. See http://www.altrasoft.com for product +and service details. diff --git a/etc/SERVICE b/etc/SERVICE new file mode 100644 index 0000000..9219b24 --- /dev/null +++ b/etc/SERVICE @@ -0,0 +1,935 @@ + -*- text -*- +GNU Service Directory +--------------------- + +This is a list of people who have asked to be listed as offering +support services for GNU software, including GNU Emacs, for a fee +or in some cases at no charge. + +The information comes from the people who asked to be listed; +we do not include any information we know to be false, but we +cannot check out any of the information; we are transmitting it to +you as it was given to us and do not promise it is correct. +Also, this is not an endorsement of the people listed here. +We have no opinions and usually no information about the abilities of +any specific person. We provide this list to enable you to contact +service providers and decide for yourself whether to hire one. + +Before FSF will list your name in the GNU Service Directory, we ask +that you agree informally to the following terms: + +1. You will not restrict (except by copyleft) the use or distribution +of any software, documentation, or other information you supply anyone +in the course of modifying, extending, or supporting GNU software. +This includes any information specifically designed to ameliorate the +use of GNU software. + +2. You will not take advantage of contact made through the Service +Directory to advertise an unrelated business (e.g., sales of +non-GNU-related proprietary information). You may spontaneously +mention your availability for general consulting, but you should not +promote a specific unrelated business unless the client asks. + +Please include some indication of your rates, because otherwise users +have nothing to go by. Please put each e-mail address inside "<>". +Please put nothing else inside "<>". Thanks! + +For a current copy of this directory, or to have yourself listed, ask: + gnu@prep.ai.mit.edu + +** Please keep the entries in this file alphabetical ** + + +Altrasoft +4880 Stevens Creek Blvd., Suite 205 +San Jose, CA 95129-1034 ++1 408 243 3300 +http://www.altrasoft.com + +Altrasoft provides corporate-quality support, development and user +documentation for GNU Emacs, XEmacs and InfoDock. (InfoDock is a turnkey +information management and software development toolset built atop emacs, +written by one of our associates.) Emacs distributions for a variety of +platforms are also available, as is support for other emacs variants, such as +those often found on PCs. + +Our unique focus on emacs-related work allows us to attract expert talent in +this area to keep you on the leading edge of productivity, especially if you +do software development work. We do the porting, patching, coding, +integrating, debugging, documenting and testing so that your people spend +much more productive time on their mainline tasks. + +Standard support packages include help on all aspects of the packages +supported, including all tools shipped as a standard part of the original +package distribution. In general, we want to give you an unbelievably strong +level of support, so where we can, we will also answer questions concerning +any add-on Lisp code that is used at your site. Setup and customization +help, bug fixes, and announcements of new releases are, of course, included. + +Support rates start at $1,000 USD, for single user support for one year. +Discounts are available for group contracts. We also offer Golden Support +contracts for those who need the absolute best in mission-critical support; +contact us for details. Hourly development rates and fixed bid work are +available. + +Updated 20-March-1997. + +Joseph Arceneaux +PO Box 460633 http://www.samsara.com/~jla +San Francisco, CA 94146-0633 ++1 415 648 9988 ++1 415 285 9088 + +Recently led the project making Wells Fargo Bank the first to provide +secure customer account access over the Internet. + +Former FSF staffmember. Performed X11 implementation of Emacs version +19, designed and implemented WYSIWYG Emacs. Installed and +administered FSF network. Maintainer of GNU indent. Over 15 years +experience with Unix and other systems, from writing ROM monitors to +UI design and system administration. + +I provide installation, porting, debugging and customization or +development of GNU and other Unix software. I also design and +implement free software projects and consult on software engineering +and systems design. Handholding and teaching services are also +available as well as things like LAN and compute--infrastructure design. + +Time and material rates around $150 USD per hour, depending upon the +particular job. I am also very interested in fixed-bid jobs. For +selected non-profit organizations with worthy goals, I work for free. + +Updated: 17Oct95 + +Gerd Aschemann +Osannstr. 49 +D-64285 Darmstadt +Tel.: +49 6151 16 2259 +http://www.informatik.th-darmstadt.de/~ascheman/ + +- System Administrator (UNIX) at CS Department, TU Darmstadt, Germany +- 15 years expirience with CS, Systemadministration on different platforms +- 8 years with UNIX/Networking/FreeWare/GNU/X11 +- 6 years organizer of Operating Systems and Distributed Systems courses +- Lectures on System and Network Administration +- Platforms: Solaris, SunOS, Ultrix, OSF1, HP-UX, Linux, FreeBSD, AIX +- Experience with parallel environments (Connection Machine, Meiko, Parsytec) +- Consultant for other UNIX users at TU Darmstadt + +Rates are at 100,-- DM (~60 US$) per hour minimum, depending on the job. +I am willing to travel for sufficiently large jobs. + +Updated: 17Oct95 + +Giuseppe Attardi +Dipartimento di Informatica +Corso Italia 40 +I-56125 Pisa, Italy ++39 50 887-244 + +GNU: help on obtaininig GNU, for italian sites. + +Updated: 5Apr94 + +James Craig Burley +97 Arrowhead Circle +Ashland, MA 01721-1987 +508 881-6087, -4745 +(Please call only between 0900-1700 Eastern time, and only if you +are prepared to hire me -- ask me to help you for free only +via email, to which I might or might not respond.) +Email: --preferred-- + + + +Expertise: + Compiler Internals (author of GNU Fortran, for example) + Operating Systems Internals + Tools/Utilities Development and Maintenance + Microcode Development and Maintenance (primarily VLIW machines) + System Design (computers, operating systems, toolsets, &c) + Debugging (often asked to help debug Other People's Code) + Documentation (authored many books and ran a few doc projects) + Extensive experience with a variety of operating systems, hardware, + languages, and so on + +Rate: $70/hour -- willing to consider flat-fee arrangements + +Updated: 14Aug95 + +Michael I. Bushnell +545 Technology Square, NE43-426 +Cambridge, MA 02139 +(617) 253-8568 + +All GNU software: Installation, customization, answering simple or + complex questions, bug fixing, extension. + +Experience: I have done Unix and GNU programming for several years, + I am the primary author of the Hurd (which provides most + kernel related facilities for the GNU OS). + +I am easily available in the Cambridge/Boston area; work via email. +I am willing to travel for sufficiently large jobs. + +Rates: $100/hr, negotiable, less for non-profit organizaions. + +Updated: 5Apr94 + +C2V Renaud Dumeur +82 bd Haussmann Michel Delval +75009 Paris Jean-Alain Le Borgne +France +Tel (1) 40.08.07.07 +Fax (1) 43.87.35.99 + +We offer source or source+binary distribution, installation, training, +maintenance, technical support, consulting, specific development and +followup on the GNU software development environment: Emacs, gcc/g++, +binutils, gas, gdb. + +Experience: adapted gcc, gas and binutils to work as cross-development +tools for the Thomson st18950 DSP chip: GCC parser and typing system +have been augmented to allow the manipulation of variables located in +separated memory spaces. Porting on new platforms, and professionally +developing software with the GNU tools in the Unix/X11 environment +since they were first available. + +Rates: from 2000 FF/day to 150 000 FF/year, 40% discount for +educational institutions, add taxes and expenses. Ask for list. + +Entered: 5May94 + +Contributed Software +Graefestr. 76 +10967 Berlin, Germany +phone: (+49 30) 694 69 07 +FAX: (+49 30) 694 68 09 +modems: (+49 30) 694 60 55 (5xZyXEL ) +modems: (+49 30) 693 40 51 (8xUSR DS) +email: +internet: uropax.contrib.de [192.109.39.2], login as 'guest'. + +We distribute, install, port, teach and support free software +in general, i.e. X11, GNU, khoros etc. Rates are ECU 80,-- plus +tax per hour. We offer maintenance and support contracts for full +customer satisfaction. +Highlights are transparent development environments for multi-platform +sites and configuration management. Traveling is no problem. + +Free Archive login for downloading on above modem numbers. + +Updated: 5Apr94 + +Stuart Cracraft +25682 Cresta Loma +Laguna Niguel, Ca. +92677 +GNUline: 714-347-8106 +Rate: $75/hour +Consultation topics: + Entire GNU suite - porting, compilation, installation, + user-training, administrator-training +Method: telephone line support, call-in via modem to your site, +or direct visit. + +Experience: supporting GNU since the mid-1980's, coordinator +of GNU Chess (original author), GNU Shogi, GNU Go. Ported GNU Emacs +to Solaris (System V Release 4). Expertise in C, Emacs Lisp, and Perl. +Customized programming also available. + +Entered: 5Apr94 + +Cygnus Support +1937 Landings Drive ...uunet!cygint!info +Mountain View, CA 94043 USA ++1 415 903 1400 voice ++1 415 903 0122 fax + +Cygnus Support +48 Grove Street +Somerville, MA 02144 ++1 617 629 3000 voice ++1 617 629 3010 fax + +Cygnus Support continues to provide supported, maintained versions of +the GNU toolset including GCC, G++, the GNU debugger with graphical +user interface, GNU linker, GNU macro-assembler and Emacs 19. In +keeping with the rapidly advancing needs of software developers, +Cygnus maintains a 90 day release cycle of the GNU toolset. Each +release is regression tested and includes substantial improvements and +additions to the existing matrix of over 65 supported platform +configurations. + +Updated: 2Feb95 + +Edgar Der-Danieliantz +P.O. Box 10 +Yerevan 375009 AM +ARMENIA + +Support for GCC (C & Objective C), X Window System, +World Wide Web, x86-based embedded systems, logic programming, etc. + +Via Internet (mail, talk, irc, etc.) + +Experience: + OS's: 4.3 & 4.4 BSD, SVR3.2 & 4.2, FreeBSD, Linux, + NetBSD, SCO, Solaris, SunOS, Ultrix, NEXTSTEP, UnixWare. + Languages: C, C++, Objective C, Pascal, Tcl/Tk, Perl, + Bourne Shell, PostScript, HTML, Prolog. + Platforms: Intel, SPARC, Mac, VAX, NeXT. + +Rates: Depending on type of work, appx $20/hour. Contact for more information. + Negotiable for individuals and non-profit organizations. + FREE for individuals who can't pay. Your 'Thanks!' just enough! :-) + Payment by international wire transfer. + +Entered: 6Mar96 + +Free Software Association of Germany +Michaela Merz +Heimatring 19 +6000 Frankfurt/Main 70 +phone: (+49 69) 6312083) +ert : (+49-172-6987246) +email: (info@elara.fsag.de) + +Supporting all kinds of freeware (i.e. GNU), freeware development, consulting, +training, installation. Special LINUX support group. + +RATES: + +Companies and for profit +organizations : 100 US$ / hour +Private and not-for-profit +organizations : 40 US$ / hour +ert (24h Emergency +response team) : 300 US$ / hour + +Entered: 14Apr94 + +Noah Friedman +Building 600, Suite 214 2002-A Guadalupe St. #214 +One Kendall Square Austin, TX 78705 +Cambridge, MA 02139 (Local, faster to reach me) +(Permanent) + + +Author of several Emacs Lisp packages and parts of Emacs 19, as well as +numerous utilities written in shell script and perl. Co-maintained GNU +Texinfo and Autoconf for a couple of years. System administrator for a +network of heterogenous machines. FSF employee Feb 1991--Sep 1994. + +I can perform installation, porting, and enhancement of all GNU software +and any other free software; system administration for unix-type systems +and ethernet networks; and I am willing to teach shell programming and +Emacs Lisp. + +Fees negotiable, averaging $60-$75/hour. I can work in the Austin, TX area +or anywhere accessible on the Internet. For larger jobs I may be willing +to travel. + +Updated: 16Aug95 + +Ronald F. Guilmette +Infinite Monkeys & Co. +1751 East Roseville Pkwy. #1828 +Roseville, CA 95661 +Tel: +1 916 786 7945 +FAX: +1 916 786 5311 + +Services: Development & porting of GNU software development tools. + +GNU Contributions: + Invented, designed, and implemented the protoize and + unprotoize tools supplied with GCC2. + + Designed and developed all code to support the generation + of Dwarf symbolic debugging information for System V Release + 4 in GCC2. + + Performed original port of GNU compilers to SVr4 system. + + Finished port of GNU compilers to Intel i860 RISC + processor. + +Experience: 13+ years UNIX systems experience, all working on compilers + and related tools. + + 7+ years working professionally on GCC, G++, and GDB under + contract to various firms including the Microelectronics + and Computer Technology Corporation (MCC), Data General (DG), + Network Computing Devices (NCD), and Intel Corp. + +Other qualifications: + Developer of the RoadTest (tm) C and C++ commercial + compiler test suites. + + Former vice-chairman of UNIX International Programming + Languages Special Interest Group (UI/PLSIG). + + Bachelor's and a Master's degrees, both in Computer Science. + +Rates: Variable depending upon contract duration. Call for quote. + +Updated: 23Sep95 + +Hundred Acre Consulting +1155 W Fourth St Ste 225 +PO Box 6209 +Reno NV 89513-6209 +(702)-348-7299 +Hundred Acre is a consulting group providing support and development +services to organizations of all sizes. We support GNU C++ and C in +particular, but also provide support for all other GNU software and +certain non-GNU public domain software as well. We work on a "service +contract" basis for support -- for a yearly fee, we provide multiple +levels of email and toll free telephone support, and free updates and +bug fixes. The highersupport levels have on-site support. Development +is charged on either an hourly or fixed bid basis. + +Consulting rates: $70 to $90 per hour, or fixed bid. +Support contracts: Several levels, from $495 to $90000 per year. + +Updated: 27Dec94 + +Interactive Information Limited + +Interactive Information Limited is an Edinburgh-based company that +specialises in WWW services and support for using the Internet for +marketing. + +Our staff have many years experience in using, and developing lisp packages +within, Emacs, and in using other GNU/Unix tools, particularly under public +domain UNIXes. + +We can provide services throughout the UK, at any level from general +consultancy through fetching, installing and customising software to +bespoke programming. Fees would be in the range #300 - #600 per day, +depending primarily on the size of the job. + +You can contact us + by email: + by phone: 0370 30 40 52 (UK) + (+44) 370 30 40 52 (International) + by post: 3, Lauriston Gardens, + Edinburgh EH3 9HH + Scotland + +Entered: 13Nov95 + +Scott D. Kalter + : Dennis Fitzgerald + +Kaman Sciences has performed a GNU port for a custom RISC processor. +We have experience in the definition and description of the machine +register transfer language to the GNU tool-set. This includes rewriting +and modification of the necessary description and source files of gcc, gas, +and gld and other binutils. Kaman also has services for installation and +setup of GNU tools, (GAWK, GCC, EMACS, etc.) on Sun workstations. + +Work is on a "service contract" basis and development is charged either +hourly or as a fixed price contract. + +Consulting rates: $70 to $200 per hour. + +Entered: 13Jan95 + +Scott J. Kramer +P.O. Box 620207 +Woodside, CA 94062 ++1 415-941-0755 + +GNU Software: Tutoring, installations/upgrades, Emacs Lisp customizations, + general troubleshooting/support. Prefer that work I do + becomes part integrated into official Free Software Foundation + distributions. + +Systems Administration: Sun (SunOS & Solaris) and SGI (IRIX) + UNIX hardware/software platforms. + +Rate: Task- and time-dependent; non-monetary offers accepted. + +Updated: 12Apr94 + +Fen Labalme + +Services: Supply, porting, installation, consultation on all GNU +products. + +Experience: 20 years OS and compiler experience, portations of most +GNU products. Author of ported software CD-ROM for Unix 4.2. + +Rates: Choice of DM 150 per hour or hotline rates 3 DM per minute + 10 +DM per phone call. Quick questions may be free. Limited free support +available for purchasers of LEMIS CD-ROMs. + +Updated: 21Feb95 + +Marty Leisner +332 Shaftsbury Road +Rochester, New York 14610 +Home:(716) 654-7931 + +Experience: 12 years C/Unix, 7 years DOS. + Extensive experience with GNU binary tools, cross-compilers, + embedded/hosted systems, realtime. +Degree : BS CS, Cornell University +Rates: $75/hr + + + +marty + + +Updated: 15Apr94 + +Richard Levitte (in TeX: Richard Levitte +Södra Långgatan 39, II S\"odra L{\aa}nggatan 39, II +S-171 49 Solna S-171 49 Solna +Sweden Sweden) +Tel.nr.: +46 (8) 18 30 99 (there is an answering machine) +e-mail: (preferred) + + +What I do: + Primarly I work on GNU software for VMS, both VAX and AXP. I + also work on GNU stuff for Unix on occasion. I'm familiar with + SunOS (version 4.x.x), BSD (version 4.2 and up), + Ultrix (version 4.2 and up). + I've been porting GNU Emacs to VMS since spring 1991. This + includes versions 18.57 to 18.59 and version 19.22. + I maintain GNU vmslib. + +Programs supported: + GNU vmslib: extending, installation, upgrading aid, + simple and complex questions, you name it. + GNU Emacs: porting, extending, installation, upgrading aid, + customization, simple or complex questions, + training, you name it. + GNU autoconf: porting, extending, installation, upgrading aid. + GNU zip, diffutils, m4, patch, texinfo: + porting, installation, upgrading aid. + GNU C/C++: installation, upgrading aid. I might start to + hack at it some day. + +The list of programs I currently support represents both my interests and +current priorities. Your interest and funding can influence my priorities. + +Experience: + Fluent in C, C++, Emacs Lisp, Pascal as well as assembler + on VAX, Motorola 680x0, Intel 8086 and 80x86. Modified key + elements in Emacs (e.g., memory and process management) to work + transparently on VMS. I have very good knowledge in the VMS + operating system, as well as MS-DOS and IBM PC compatibles. + I have worked for four and a half years as a VMS system manager. + I've also provided consulting services on IBM PC compatibles, + as well as held classes for IBM PC users. + A reference list is available on request. + +Your Rate: + $50-$80/hour (400-700 SEK in sweden), plus expenses. My rates + are negotiable, depending on how interesting the project is to me. + + +Entered: 18Aug94 + +Roland McGrath +545 Tech Sq, Rm 426 +Cambridge, MA 02139 +Work: (617) 253-8568 + +Co-author of GNU Make (with Richard Stallman); maintainer of GNU Make. +Author and maintainer of the GNU C Library and co-author of the GNU Hurd. +Author of several GNU Emacs Lisp packages and parts of GNU Emacs 19. +FSF employee summer 1989, fall 1990 to the present. + +Installation, maintenance, porting, enhancement of all GNU software. I can +install GNU software and maintain its installation on call via the Internet. + +Fees negotiable; $75-$100/hour, higher for very short term projects. I can +work anywhere in the Boston or SF Bay Area, or anywhere on the Internet. I +am working full-time for the FSF on the GNU Hurd, so I am likely to take on +only jobs that either can be done entirely via the Internet and are +short-term, or that are very interesting. + +Updated: 21Jan95 + +Erik Naggum +P.O. Box 1570 Vika http://www.naggum.no +0118 OSLO phone: +47 2295 0313 +NORWAY NIC handle: EN9 + +Have extensive experience with Unix and C (since 1983), Internet protocols +(1987), International Standards for character sets (1988), SGML (1990), +ANSI Common Lisp (1994); Emacs user and programmer from 1984 to 1987 +(TOPS-20) and 1991 to present (Unix). Have worked on GNU Emacs development +since early 1994, both in Emacs Lisp and C. Have been tracking development +code for Emacs since mid-1995, and know new versions intimately. + +Services offered: installation, support, customization, and development of +new packages, plus courses and seminars from basic usage through Emacs Lisp +programming to writing extensions in C. General aid with all GNU software. + +Rates depend on duration of work: From $6/minute for <= 1 hour, to $500/day +for >= 1 month. Service agreements are encouraged. Cover Scandinavia for +on-site work. Remote debugging and help by mail available for smaller +fees, without limits to distance. + +Please call only about actual work, I prefer mail for all other questions. + +I accept VISA and Mastercard, preferred for remote jobs and small amounts. + +Wolfgang S. Rupprecht +47 Esparito Ave. +Fremont, CA 94539-3827 +(510) 659-9757 + +Anything, (lisp, C, customization, porting, installing) I have +written thousands of lines of GNU Emacs C and Lisp code. Original +author of the floating point additions in Emacs 19. + +Rates: $95/hr. + +Updated: 14Apr94 + +Signum Support AB +Box 2044 _ ...!seunet!signum!info +S-580 02 Linkoping, Sweden ++46 13 21 46 00 voice ++46 13 21 47 00 fax + +Signum Support AB is a company dedicated to supporting, developing +and distributing free software for, including but not limited to, +UNIX systems. The people behind Signum Support AB have many years +of general UNIX experience, both as system administrators and as +programmers, and also extensive experience in maintaining the GNU +programs, both administrating it and finding and fixing bugs. + +Services offered: + + - Installation and customizing GNU and other free software. We will + make free software as easy to install and use as shrink wrapped + programs. + - Warranty protection. + - Customization and porting. + - Subscriptions to new versions which we will send monthly or with + any other interval. + - Finding, Recommending and Investigation of free software in any + area of the customers choise. + - Regular consulting. + +Rates: For software items, request our price list. + For consulting, 400-800 SEK/hour. + +Updated: 14Apr94 + +Small Business Systems, Inc. +Box 17220, Route 104 +Esmond, RI 02917 +401.273.4669 + +Rate: Varies depending on complexity of task. + Hourly and fixed-rate contracts are available. +Programs Supported: All + +Updated: 14Apr94 + +Julian H. Stacey. +Vector Systems Ltd, Holz Strasse 27d, D 80469 Munich (Muenchen), GERMANY. +Tel. +49 89 268616 (089 268616 in Germany) 09:00-21:00 Timezone=GMT+01:00 + +Sources: All FSF/GNU, FreeBSD-current, X-Windows, XFree86, NetBSD, Mach, etc. + (Plus various other things, such as, but not limited to: + blas blt cflow CAD cnews crypt dvi2lj eispack elm encryption expect + ezd f2c flexfax gic gopher info-zip ingres inn jpeg kermit ksh + less lha linpack md5 mh mprof mtools mush nntp octave pbmplus + popper sather sc schemetoc slurp sml spreadsheet sup tcl tcl-dp + tcsh tcx term tex tiff tk top trn unarj ups urt wine xlock xv + xview xxgdb zmodem zip zircon zoo zsh.) +Media: QIC 1/4" Cartridge 525M, 150M, & 60M, TEAC CAS-60 60M Cassette, + CD-ROM, Floppies 1.4M & 1.2 & 720K & 360K. DAT arrangeable. + Postal Service C.O.D.(=`Nachnahme') or pre payment available. +Commercial Consultancy: + Custom Designs, Provision & support of FreeBSD or Unix, C, FSF tools, + X Windows, own tools, systems engineering, hardware interfacing, + multi lingual European, Cyrillic & Chinese tools & systems, + Unix, MSDOS, real time etc, communications & scientific & industrial. +DEUTSCH + FRANCAIS: + Man kann mir in Deutsch schreiben, (oder mich anrufen). + Je comprend Francais, mais je n'ecris pas des responses en Francais. + (Contact me in English, German, or French). +FREE for Symmetric Computer Systems Model 375 owners: + Free Binaries & sources on SCS/375's TEAC 50/60M Cassette, for: + GCC-1.40, UUCP-1.4, Ghostscript 2.3, Tar-1.08, Gzip-1.2.2 etc. + (Native SCS compiler can't compile GCC on this NSC32016 based BSD4.2) +On Request: Resume, Company Profile, Index of public & proprietary tools, +Rate: ~120 DM/hour. ~100DM/Cartridge. (1.5DM = $1 USA = 0.6 UK Pounds @4/'94) +Short enquiries free. (Kurze Anfragen Ohne Gebuhr). + +Updated: 14Jun94 + +Richard M. Stallman +UUCP: {mit-eddie,ucbvax,uunet,harvard,uw-beaver}!ai.mit.edu!rms +545 Tech Sq, Rm 430 +Cambridge, MA 02139 + +Emacs: anything whatever +Is anyone interested in courses in using or extending GNU Emacs? + +Original inventor of Emacs and main author of GNU Emacs and GCC. + +Rates: $6/min or $250/hr. + +Updated: 14Apr94 + +JoS-Ware Comp Tech Johan Svensson +Box 739 +220 07 LUND +SWEDEN +Tel +46-46-104505 (Dept. of Economics, University of LUND) +Fax +46-46-188445 (JoS-Ware Comp Tech) + +What: We offer consulting services regarding installation, + customization, troubleshooting, porting and integration + of all free software, including GNU software. + +Spec.: Network integration, integration of public domain software + into commercial systems, WorldWideWeb, C, X-Windows, Linux, + networked information systems + +How: Remote login over internet, email, modem, phone, personal + visits (in southern Sweden mainly) + +Rates: 550SEK (+ tax) per hour within Sweden + 370SEK (+ tax) per hour within Sweden for educational org. + US $90 per hour outside Sweden + US $70 per hour outside Sweden for educational org. + Note: fees may vary and special arrangements may be considered + +Entered: 7Apr94 + +Kayvan Sylvan +Sylvan Associates +879 Lewiston Drive +San Jose, CA 95136 +Phone: 408-978-1407 + +I will help you port, install and customize GNU Emacs, GCC, G++, +bison, and other GNU tools on almost any architechture and operating +system. Questions answered. GNU C and lisp hacking available. I will +also do ongoing support and periodic upgrades if you get on my GNU +software subscription list. + +Rates: $60-$100/hour, depending on type of work. Substantial discounts +for long-term contracts and also for educational or non-profit +institutions. + +Experience: Many different Unix systems (2.9BSD to 4.4BSD, SVR3 and +SVR4, Linux, Xenix). Systems programming and system administration on all +brands of Unix. Kernel hacking experience. Lots of porting experience. +I can port anything to anything (within reason). + +Updated: 14Apr94 + +Leonard H. Tower Jr. +36 Porter Street +Somerville, MA 02143, USA ++1 (617) 623-7739 + +Will work on most GNU software. +Installation, handholding, trouble shooting, extensions, teaching. + +Rates: 100.00/hour + travel expenses. Negotiable for non-profits. + +Experience: Have hacked on over a dozen architectures in many languages. Have +system mothered several varieties of Unixes. Assisted rms with the front end +of gcc and it's back-end support. Resume available on request. + +Entered: 14Apr94 + +UrbanSoft AO +68 Malooktinskii Prospect +St. Petersburg, Russia 195272 + +Custom GhostScript and TeX programming by e-mail. +Database documents, directories, standard forms. + +UrbanSoft uses a portion of its revenues to contribute +diskette distributions of GNU software to Russian +universities (most of which lack FTP access). + +Rates: 30,000 rubles (currently USD 16.80) per hour. + Fixed rate contracts also possible. + Payable by bank transfer. + +Updated: 20Apr94 + +noris network +Matthias Urlichs +Schleiermacherstrasse 12 +90491 Nuernberg +Germany +Phone: +49 911 9959621 +Fax: +49 911 5980150 + +http://info.noris.de/ (German) + +Expertise: + OS internals, esp. Linux and BSD, esp. device drivers + Network protocol / program design and coding + Utilities coding and maintainance + Program debugging, testing + User interface design and testing + Several programming and tool languages + +Services: + Installation, debugging, enhancement, distribution, + for all kinds of free software. + System administration for most Unix-like systems. + Email, Fax, phone, and in-person consulting (and/or "question answering"). + Remote support and system monitoring (over the Internet), + Update service (new tools tested and installed automagically) + Internet access + +Rates: + DM 110 (~$70) per hour + Support contracts start at DM 170/month + DM 30/supported system. + Willing to travel for sufficiently large jobs. + Rates don't include taxes. + +Entered: 16Aug94 + +Joe Wells +Postal Address: + care of: Boston University Computer Science Department + 111 Cummington Street, Room 138 + Boston, Massachusetts 02215 +Work Telephone: (617) 353-3381 (sorry, but no answering machine or voice mail) +Home Telephone: (617) 739-7456 (until August 1995) +Finger "jbw@cs.bu.edu" for up-to-date contact information. + +Experience: + I have B.A. and M.A. degrees in Computer Science and have completed + all but the dissertation for a Ph.D. in C.S. My research for my + Ph.D. is in the areas of logic, type systems, and programming + language theory. My primary programming languages are Emacs Lisp, + Perl, and Bourne shell, but of course I can program in any language. + I have written numerous Emacs Lisp packages. I started the USENET + "List of Frequently Asked Questions about GNU Emacs with Answers" and + maintained it for more than two years. Most of my work has been + related to the telephone system (modems, voice mail, etc.), but I am + not limited to that. Send e-mail for my complete resume or curriculum + vita. + +Programs supported: + GNU Emacs and Taylor UUCP: + Installation, training, customization, bug fixing, troubleshooting, + extension, development, porting, or answering any kind of question. + Any other GNU program: + The same things, but I don't necessarily have huge amounts of + experience with the particular program. + +Working conditions: + I am usually available for part-time work (less than 20 hours per week + including any travel time). I can sometimes make time for full-time + work for a month or two; please inquire. I can either work in or near + Boston or via the Internet or via telephone; travel outside the Boston + metropolitan area can be negotiated. My schedule is very flexible. + Any programs I write will normally have the copying conditions of the + GNU General Public License; this is negotiable. + +Rates: $65/hour as an independent contractor. + travel and telephone expenses. + higher rates if extensive travel is required. + +Updated: 27Sep94. + +Herb Wood +phone: 1-415-789-7173 +email: + +I'm a better "planner" than I am a hacker. A really good hacker will be able +to keep many pieces of information in their short-term memory and to memorize +new pieces of information at a fast rate. This is not my strong point. +Rather, I excel in domains that require knowledge of the slightly more +theoretical parts of computer science --for example, logic, formal methods of +program development, and functional programming. I can write, and I have +"tutoring" (teaching one-on-one) experience, an, unlike some programmers, +I enjoy doing these things. + +I have spend a lot of time looking at the Emacs Lisp sources and customizing +Emacs and VM. I think I can customize Emacs and its packages quickly and +effectively. + +Entered: 30Jul95 + +Yggdrasil Computing, Inc./ Freesoft, Inc. +4880 Stevens Creek Blvd. Ste. 205 +San Jose, CA 95129 +(408) 261-6630 +(800) 261 6630 + +Updated: 14Apr94 + + +For a current copy of this directory, or to have yourself listed, ask: + gnu@prep.ai.mit.edu + +** Please keep the entries in this file alphabetical ** diff --git a/etc/TERMS b/etc/TERMS new file mode 100644 index 0000000..0245fe2 --- /dev/null +++ b/etc/TERMS @@ -0,0 +1,229 @@ +This file describes what you must or might want to do to termcap entries +to make terminals work properly and efficiently with Emacs. Information +on likely problems with specific types of terminals appears at the end +of the file. + +*** What you want in a terminal *** + +Vital +1. Easy to compute suitable padding for. +2. Never ever sends ^S/^Q unless you type them, at least in one mode. + +Nice for speed +1. Supports insert/delete of multiple lines in one command. +2. Same for multiple characters, though doing them one by +one is usually fast enough except on emulators running on +machines with bitmap screens. + +Nice for usability +1. Considerably more than 24 lines. +2. Meta key (shift-like key that controls the 0200 bit +in every character you type). + +*** New termcap strings *** + +Emacs supports certain termcap strings that are not described in the +4.2 manual but appear to be standard in system V. The one exception +is `cS', which I invented. + +`AL' insert several lines. Takes one parameter, the number of + lines to be inserted. You specify how to send this parameter + using a %-construct, just like the cursor positions in the `cm' + string. + +`DL' delete several lines. One parameter. + +`IC' insert several characters. One parameter. + +`DC' delete several characters. One parameter. + +`rp' repeat a character. Takes two parameters, the character + to be repeated and the number of times to repeat it. + Most likely you will use `%.' for sending the character + to be repeated. Emacs interprets a padding spec with a * + as giving the amount of padding per repetition. + + WARNING: Many terminals have a command to repeat the + *last character output* N times. This means that the character + will appear N+1 times in a row when the command argument is N. + However, the `rp' string's parameter is the total number of + times wanted, not one less. Therefore, such repeat commands + may be used in an `rp' string only if you use Emacs's special + termcap operator `%a-c\001' to subtract 1 from the repeat count + before substituting it into the string. It is probably safe + to use this even though the Unix termcap does not accept it + because programs other than Emacs probably won't look for `rp' + anyway. + +`cs' set scroll region. Takes two parameters, the vertical + positions of the first line to include in the scroll region + and the last line to include in the scroll region. + Both parameters are origin-zero. The effect of this + should be to cause a following insert-line or delete-line + not to move lines below the bottom of the scroll region. + + This is not the same convention that Emacs version 16 used. + That is because I was led astray by unclear documentation + of the meaning of %i in termcap strings. Since the termcap + documentation for `cs' is also unclear, I had to deduce the + correct parameter conventions from what would make the VT-100's + `cs' string work properly. From an incorrect assumption about + %i, I reached an incorrect conclusion about `cs', but the result + worked correctly on the VT100 and ANSII terminals. In Emacs + version 17, both `cs' and %i work correctly. + + The version 16 convention was to pass, for the second parameter, + the line number of the first line beyond the end of the + scroll region. + +`cS' set scroll region. Differs from `cs' in taking parameters + differently. There are four parameters: + 1. Total number of lines on the screen. + 2. Number of lines above desired scroll region. + 3. Number of lines below (outside of) desired scroll region. + 4. Total number of lines on the screen, like #1. + This is because an Ambassador needs the parameters like this. + +`cr', `do', `le' + Emacs will not attempt to use ^M, ^J or ^H for cursor motion + unless these capabilities are present and say to use those + characters. + +`km' Says the terminal has a Meta key. + +Defining these strings is important for getting maximum performance +from your terminal. + +Make sure that the `ti' string sets all modes needed for editing +in Emacs. For example, if your terminal has a mode that controls +wrap at the end of the line, you must decide whether to specify +the `am' flag in the termcap entry; whichever you decide, the `ti' +string should contain commands to set the mode that way. +(Emacs also sends the `vs' string after the `ti' string. +You can put the mode-setting commands in either one of them.) + +*** Specific Terminal Types *** + +Watch out for termcap entries for Ann Arbor Ambassadors that +give too little padding for clear-screen. 7.2 msec per line is right. +These are the strings whose padding you probably should change: + :al=1*\E[L:dl=1*\E[M:cd=7.2*\E[J:cl=7.2*\E[H\E[J: +I have sometimes seen `\E[2J' at the front of the `ti' string; +this is a clear-screen, very slow, and it can cause you to get +Control-s sent by the terminal at startup. I recommend removing +the `\E[2J' from the `ti' string. +The `ti' or `vs' strings also usually need stuff added to them, such as + \E[>33;52;54h\E[>30;37;38;39l +You might want to add the following to the `te' or `ve' strings: + \E[>52l\E[>37h +The following additional capabilities will improve performance: + :AL=1*\E[%dL:DL=1*\E[%dM:IC=4\E[%d@:DC=4\E[%dP:rp=1*%.\E[%a-c\001%db: +If you find that the Meta key does not work, make sure that + :km: +is present in the termcap entry. + +Watch out for termcap entries for VT100's that fail to specify +the `sf' string, or that omit the padding needed for the `sf' and `sr' +strings (2msec per line affected). What you need is + :sf=2*^J:sr=2*\EM:cs=\E[%i%d;%dr: + +The Concept-100 and Concept-108 have many modes that `ti' strings +often fail to initialize. If you have problems on one of these +terminals, that is probably the place to fix them. These terminals +can support an `rp' string. + +Watch out on HP terminals for problems with standout disappearing on +part of the mode line. These problems are due to the absence of +:sg#0: which some HP terminals need. + +The vi55 is said to require `ip=2'. + +The Sun console should have these capabilities for good performance. + :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP: + +The vt220 needs to be set to vt220 mode, 7 bit, space parity +in order to work fully with TERM=vt220. + +If you are using a LAT terminal concentrator, you need to issue these +commands to turn off flow control: + + set port flow control disable + define port flow control disable + +On System V, in the terminfo database, various terminals may have +the `xt' flag that should not have it. `xt' should be present only +for the Teleray 1061 or equivalent terminal. + +In particular, System V for the 386 often has `xt' for terminal type +AT386 or AT386-M, which is used for the console. You should delete +this flag. Here is how: + +You can get a copy of the terminfo "source" for at386 using the +command: `infocmp at386 >at386.tic'. Edit the file at386.tic and remove +the `xt' flag. Then compile the new entry with: `tic at386.tic'. + +It is also reported that these terminal types sometimes have the wrong +reverse-scroll string. It should be \E[T, but sometimes is given as \E[S. + +Here is what watserv1!maytag!focsys!larry recommends for these terminals: + +# This copy of the terminfo description has been fixed. +# The suggestions came from a number of usenet postings. +# +# Intel AT/386 for color card with monochrome display +# +AT386-M|at386-m|386AT-M|386at-m|at/386 console, + am, bw, eo, xon, + cols#80, lines#25, + acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, + clear=\E[2J\E[H, + cr=\r, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, + cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%02d;%p2%02dH, cuu=\E[%p1%dA, cuu1=\E[A, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[1M, + ech=\E[%p1%dX,ed=\E[J, el=\E[K, el1=\E[1K\E[X, flash=^G, home=\E[H, + hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, + ind=\E[S, indn=\E[%p1%dS, invis=\E[9m, + is2=\E[0;10;38m, kbs=\b, kcbt=^], kclr=\E[2J, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kdch1=\E[P, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf11=\EOZ, + kf12=\EOA, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, + kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, + kich1=\E[@, knp=\E[U, kpp=\E[V, krmir=\E0, rev=\E[7m, ri=\E[T, + rin=\E[%p1%dT, rmacs=\E[10m, rmso=\E[m, rmul=\E[m, + sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?%p9%t;12%;%?%p7%t;9%;m, + sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m, + +# +# AT&T 386 color console +# +AT386|at386|386AT|386at|at/386 console, + colors#8, ncv#3, pairs#64, + is2=\E[0;10;39m, + op=\E[0m, + setb=\E[%?%p1%{0}%=%t40m + %e%p1%{1}%=%t44m + %e%p1%{2}%=%t42m + %e%p1%{3}%=%t46m + %e%p1%{4}%=%t41m + %e%p1%{5}%=%t45m + %e%p1%{6}%=%t43m + %e%p1%{7}%=%t47m%;, + setf=\E[%?%p1%{0}%=%t30m + %e%p1%{1}%=%t34m + %e%p1%{2}%=%t32m + %e%p1%{3}%=%t36m + %e%p1%{4}%=%t31m + %e%p1%{5}%=%t35m + %e%p1%{6}%=%t33m + %e%p1%{6}%=%t33m + %e%p1%{7}%=%t37m%;, + use=at386-m, +# +# Color console version that supports underline but maps blue +# foreground color to cyan. +# +AT386-UL|at386-ul|386AT-UL|386at-ul|at/386 console, + is2=\E[0;10;38m, + use=at386, diff --git a/etc/TUTORIAL b/etc/TUTORIAL new file mode 100644 index 0000000..e6a3b3e --- /dev/null +++ b/etc/TUTORIAL @@ -0,0 +1,1114 @@ +Copyright (c) 1985, 1996 Free Software Foundation, Inc. See end for conditions. + +You are looking at the Emacs tutorial. + +Emacs commands generally involve the CONTROL key (sometimes labelled +CTRL or CTL) or the META key. On some keyboards, the META key is +labelled ALT or EDIT or something else (for example, on Sun keyboards, +the diamond key to the left of the spacebar is META). If you have no +META key, you can use ESC instead. Rather than write out META or +CONTROL each time we want you to prefix a character, we'll use the +following abbreviations: + + C- means hold the CONTROL key while typing the character + Thus, C-f would be: hold the CONTROL key and type f. + M- means hold the META key down while typing . If there + is no META key, type , release it, then type the + character . + +Important note: to end the Emacs session, type C-x C-c. (Two characters.) +The characters ">>" at the left margin indicate directions for you to +try using a command. For instance: +<> +>> Now type C-v (View next screen) to move to the next screen. + (go ahead, do it by holding down the control key while typing v). + From now on, you should do this again whenever you finish + reading the screen. + +Note that there is an overlap of two lines when you move from screen +to screen; this provides some continuity so you can continue reading +the text. + +The first thing that you need to know is how to move around from place +to place in the text. You already know how to move forward one screen, +with C-v. To move backwards one screen, type M-v (hold down the META key +and type v, or type v if you do not have a META, EDIT, or ALT key). + +>> Try typing M-v and then C-v, a few times. + + +* SUMMARY +--------- + +The following commands are useful for viewing screenfuls: + + C-v Move forward one screenful + M-v Move backward one screenful + C-l Clear screen and redisplay everything + putting the text near the cursor at the center. + (That's control-L, not control-1.) + +>> Find the cursor, and note what text is near it. + Then type C-l. + Find the cursor again and notice that the same text + is near the cursor now. + + +* BASIC CURSOR CONTROL +---------------------- + +Moving from screenful to screenful is useful, but how do you +move to a specific place within the text on the screen? + +There are several ways you can do this. The most basic way is to use +the commands C-p, C-b, C-f, and C-n. Each of these commands moves the +cursor one row or column in a particular direction on the screen. +Here is a table showing these four commands and shows the directions +they move: + + Previous line, C-p + : + : + Backward, C-b .... Current cursor position .... Forward, C-f + : + : + Next line, C-n + +>> Move the cursor to the line in the middle of that diagram + using C-n or C-p. Then type C-l to see the whole diagram + centered in the screen. + +You'll probably find it easy to think of these by letter: P for +previous, N for next, B for backward and F for forward. These are the +basic cursor positioning commands, and you'll be using them ALL the +time, so it would be of great benefit if you learn them now. + +>> Do a few C-n's to bring the cursor down to this line. + +>> Move into the line with C-f's and then up with C-p's. + See what C-p does when the cursor is in the middle of the line. + +Each of text line ends with a Newline character, which serves to +separate it from the following line. The last line in your file ought +to have a Newline at the end (but Emacs does not require it to have +one). + +>> Try to C-b at the beginning of a line. It should move to + the end of the previous line. This is because it moves back + across the Newline character. + +C-f can move across a Newline just like C-b. + +>> Do a few more C-b's, so you get a feel for where the cursor is. + Then do C-f's to return to the end of the line. + Then do one more C-f to move to the following line. + +When you move past the top or bottom of the screen, the text beyond +the edge shifts onto the screen. This is called "scrolling". It +enables Emacs to move the cursor to the specified place in the text +without moving it off the screen. + +>> Try to move the cursor off the bottom of the screen with C-n, and + see what happens. + +If moving by characters is too slow, you can move by words. M-f +(Meta-f) moves forward a word and M-b moves back a word. + +>> Type a few M-f's and M-b's. + +When you are in the middle of a word, M-f moves to the end of the word. +When you are in whitespace between words, M-f moves to the end of the +following word. M-b works likewise in the opposite direction. + +>> Type M-f and M-b a few times, interspersed with C-f's and C-b's + so that you can observe the action of M-f and M-b from various + places inside and between words. + +Notice the parallel between C-f and C-b on the one hand, and M-f and +M-b on the other hand. Very often Meta characters are used for +operations related to the units defined by language (words, sentences, +paragraphs), while Control characters operate on basic units that are +independent of what you are editing (characters, lines, etc). + +This parallel applies between lines and sentences: C-a and C-e move to +the beginning or end of a line, and M-a and M-e move to the beginning +or end of a sentence. + +>> Try a couple of C-a's, and then a couple of C-e's. + Try a couple of M-a's, and then a couple of M-e's. + +See how repeated C-a's do nothing, but repeated M-a's keep moving one +more sentence. Although these are not quite analogous, each one seems +natural. + +The location of the cursor in the text is also called "point". To +paraphrase, the cursor shows on the screen where point is located in +the text. + +Here is a summary of simple cursor-moving operations, including the +word and sentence moving commands: + + C-f Move forward a character + C-b Move backward a character + + M-f Move forward a word + M-b Move backward a word + + C-n Move to next line + C-p Move to previous line + + C-a Move to beginning of line + C-e Move to end of line + + M-a Move back to beginning of sentence + M-e Move forward to end of sentence + +>> Try all of these commands now a few times for practice. + These are the most often used commands. + +Two other important cursor motion commands are M-< (Meta Less-than), +which moves to the beginning of the whole text, and M-> (Meta +Greater-than), which moves to the end of the whole text. + +On most terminals, the "<" is above the comma, so you must use the +shift key to type it. On these terminals you must use the shift key +to type M-< also; without the shift key, you would be typing M-comma. + +>> Try M-< now, to move to the beginning of the tutorial. + Then use C-v repeatedly to move back here. + +>> Try M-> now, to move to the end of the tutorial. + Then use M-v repeatedly to move back here. + +You can also move the cursor with the arrow keys, if your terminal has +arrow keys. We recommend learning C-b, C-f, C-n and C-p for three +reasons. First, they work on all kinds of terminals. Second, once +you gain practice at using Emacs, you will find that typing these CTRL +characters is faster than typing the arrow keys (because you do not +have to move your hands away from touch-typing position). Third, once +you form the habit of using these CTRL character commands, you can +easily learn to use other advanced cursor motion commands as well. + +Most Emacs commands accept a numeric argument; for most commands, this +serves as a repeat-count. The way you give a command a repeat count +is by typing C-u and then the digits before you type the command. If +you have a META (or EDIT or ALT) key, there is another alternative way +to enter a numeric argument: type the digits while holding down the +META key. We recommend learning the C-u method because it works on +any terminal. + +For instance, C-u 8 C-f moves forward eight characters. + +>> Try using C-n or C-p with a numeric argument, to move the cursor + to a line near this one with just one command. + +Most commands use the numeric argument as a repeat count. Certain +exceptional commands use it differently. C-v and M-v are among the +exceptions. When given an argument, they scroll the screen up or down +by that many lines, rather than by a screenfuls. For example, C-u 4 +C-v scrolls the screen by 4 lines. + +>> Try typing C-u 8 C-v now. + +This should have scrolled the screen up by 8 lines. If you would like +to scroll it down again, you can give an argument to M-v. + +If you are using the X Window system, there is probably a rectangular +area called a scroll bar at the right hand side of the Emacs window. +You can scroll the text by manipulating the scroll bar with the mouse. + +>> Try pressing the middle button at the top of the highlighted area + within the scroll bar. This should scroll the text to a position + determined by how high or low you click. + +>> Move the mouse to a point in the scroll bar about three lines from +the top, and click the left button a couple of times. + + +* CURSOR CONTROL WITH AN X TERMINAL +----------------------------------- + +If you have an X terminal, you will probably find it easier to use +the keys on the keypad to control the cursor. The left, right, up, +and down arrow keys move in the expected direction; they function +exactly like C-b, C-f, C-p, and C-n, but are easier to type and to +remember. You can also use C-left and C-right to move by words, and +C-up and C-down to move by blocks (e.g. paragraphs, if you're +editing text). If you have keys labelled HOME (or BEGIN) and END, +they will take you to the beginning and end of a line, respectively, +and C-home and C-end will move to the beginning and end of the file. +If your keyboard has PgUp and PgDn keys, you can use them to move up +and down a screenful at a time, like M-v and C-v. + +All of these commands can take numeric arguments, as described above. +You can use a shortcut to enter these arguments: just hold down the +CONTROL or META key and type the number. For example, to move 12 +words to the right, type C-1 C-2 C-right. Note that it is very easy +to type this because you do not have to release the CONTROL key +between keystrokes. + + +* WHEN EMACS IS HUNG +-------------------- + +If Emacs stops responding to your commands, you can stop it safely by +typing C-g. You can use C-g to stop a command which is taking too +long to execute. + +You can also use C-g to discard a numeric argument or the beginning of +a command that you do not want to finish. + +>> Type C-u 100 to make a numeric arg of 100, then type C-g. + Now type C-f. It should move just one character, + because you canceled the argument with C-g. + +If you have typed an by mistake, you can get rid of it +with a C-g. + + +* DISABLED COMMANDS +------------------- + +Some Emacs commands are "disabled" so that beginning users cannot use +them by accident. + +If you type one of the disabled commands, Emacs displays a message +saying what the command was, and asking you whether you want to go +ahead and execute the command. + +If you really want to try the command, type Space in answer to the +question. Normally, if you do not want to execute the disabled +command, answer the question with "n". + +>> Type `C-x n p' (which is a disabled command), + then type n to answer the question. + + +* WINDOWS +--------- + +Emacs can have several windows, each displaying its own text. +Note that "window" as used by Emacs does not refer to separate +overlapping windows in the window system, but to separate panes +within a single X window. (Emacs can also have multiple X +windows, or "frames" in Emacs terminology. This is described +later.) + +At this stage it is better not to go into the techniques of +using multiple windows. But you do need to know how to get +rid of extra windows that may appear to display help or +output from certain commands. It is simple: + + C-x 1 One window (i.e., kill all other windows). + +That is Control-x followed by the digit 1. C-x 1 expands the window +which contains the cursor, to occupy the full screen. It deletes all +other windows. + +>> Move the cursor to this line and type C-u 0 C-l. + +(Remember that C-l redraws the screen. If you give a +numeric argument to this command, it means "redraw the +screen and put the current line that many lines from the +top of the screen." So C-u 0 C-l means "redraw the +screen, putting the current line at the top.") + +>> Type Control-x 2 + See how this window shrinks, while a new one appears + to display contents of this buffer. + +>> Type C-x 1 and see the new window disappear. + + +* INSERTING AND DELETING +------------------------ + +If you want to insert text, just type the text. Characters which you +can see, such as A, 7, *, etc. are taken by Emacs as text and inserted +immediately. Type (the carriage-return key) to insert a +Newline character. + +You can delete the last character you typed by typing . + is a key on the keyboard, which may be labeled "Del". In +some cases, the "Backspace" key serves as , but not always! + +More generally, deletes the character immediately before the +current cursor position. + +>> Do this now--type a few characters, then delete them + by typing a few times. Don't worry about this file + being changed; you will not alter the master tutorial. This is + your personal copy of it. + +When a line of text gets too big for one line on the screen, the line +of text is "continued" onto a second screen line. A backslash ("\") +at the right margin indicates a line which has been continued. + +>> Insert text until you reach the right margin, and keep on inserting. + You'll see a continuation line appear. + +>> Use s to delete the text until the line fits on one screen + line again. The continuation line goes away. + +You can delete a Newline character just like any other character. +Deleting the Newline character between two lines merges them into +one line. If the resulting combined line is too long to fit in the +screen width, it will be displayed with a continuation line. + +>> Move the cursor to the beginning of a line and type . This + merges that line with the previous line. + +>> Type to reinsert the Newline you deleted. + +Remember that most Emacs commands can be given a repeat count; +this includes text characters. Repeating a text character inserts +it several times. + +>> Try that now -- type C-u 8 * to insert ********. + +You've now learned the most basic way of typing something in +Emacs and correcting errors. You can delete by words or lines +as well. Here is a summary of the delete operations: + + delete the character just before the cursor + C-d delete the next character after the cursor + + M- kill the word immediately before the cursor + M-d kill the next word after the cursor + + C-k kill from the cursor position to end of line + M-k kill to the end of the current sentence + +Notice that and C-d vs M- and M-d extend the parallel +started by C-f and M-f (well, is not really a control +character, but let's not worry about that). C-k and M-k are like C-e +and M-e, sort of, in that lines are opposite sentences. + +When you delete more than one character at a time, Emacs saves the +deleted text so that you can bring it back. Bringing back killed text +is called "yanking". You can yank the killed text either at the same +place where it was killed, or at some other place in the text. You +can yank the text several times in order to make multiple copies of +it. The command to yank is C-y. + +Note that the difference between "Killing" and "Deleting" something is +that "Killed" things can be yanked back, and "Deleted" things cannot. +Generally, the commands that can remove a lot of text save the text, +while the commands that delete just one character, or just blank lines +and spaces, do not save the deleted text. + +>> Move the cursor to the beginning of a line which is not empty. + Then type C-k to kill the text on that line. +>> Type C-k a second time. You'll see that it kills the Newline + which follows that line. + +Note that a single C-k kills the contents of the line, and a second +C-k kills the line itself, and make all the other lines move up. C-k +treats a numeric argument specially: it kills that many lines AND +their contents. This is not mere repetition. C-u 2 C-k kills two +lines and their newlines; typing C-k twice would not do that. + +To retrieve the last killed text and put it where the cursor currently +is, type C-y. + +>> Try it; type C-y to yank the text back. + +Think of C-y as if you were yanking something back that someone took +away from you. Notice that if you do several C-k's in a row, all of +the killed text is saved together, so that one C-y will yank all of +the lines. + +>> Do this now, type C-k several times. + +Now to retrieve that killed text: + +>> Type C-y. Then move the cursor down a few lines and type C-y + again. You now see how to copy some text. + +What do you do if you have some text you want to yank back, and then +you kill something else? C-y would yank the more recent kill. But +the previous text is not lost. You can get back to it using the M-y +command. After you have done C-y to get the most recent kill, typing +M-y replaces that yanked text with the previous kill. Typing M-y +again and again brings in earlier and earlier kills. When you have +reached the text you are looking for, you do not have to do anything to +keep it. Just go on with your editing, leaving the yanked text where +it is. + +If you M-y enough times, you come back to the starting point (the most +recent kill). + +>> Kill a line, move around, kill another line. + Then do C-y to get back the second killed line. + Then do M-y and it will be replaced by the first killed line. + Do more M-y's and see what you get. Keep doing them until + the second kill line comes back, and then a few more. + If you like, you can try giving M-y positive and negative + arguments. + + +* UNDO +------ + +If you make a change to the text, and then decide that it was a +mistake, you can undo the change with the undo command, C-x u. + +Normally, C-x u undoes the changes made by one command; if you repeat +the C-x u several times in a row, each repetition undoes one +additional command. + +But there are two exceptions: commands that do not change the text do +not count (this includes cursor motion commands and scrolling +command), and self-inserting characters are usually handled in groups +of up to 20. (This is to reduce the number of C-x u's you have to +type to undo insertion of text.) + +>> Kill this line with C-k, then type C-x u and it should reappear. + +C-_ is an alternative undo command; it works just the same as C-x u, +but it is easier to type several times in a row. The disadvantage of +C-_ is that on some keyboards it is not obvious how to type it. That +is why we provide C-x u as well. On some terminals, you can type C-_ +by typing / while holding down CTRL. + +A numeric argument to C-_ or C-x u acts as a repeat count. + + +* FILES +------- + +In order to make the text you edit permanent, you must put it in a +file. Otherwise, it will go away when your invocation of Emacs goes +away. You put your editing in a file by "finding" the file. (This is +also called "visiting" the file.) + +Finding a file means that you see the contents of the file within +Emacs. In many ways, it is as if you were editing the file itself. +However, the changes you make using Emacs do not become permanent +until you "save" the file. This is so you can avoid leaving a +half-changed file on the system when you do not want to. Even when +you save, Emacs leaves the original file under a changed name in case +you later decide that your changes were a mistake. + +If you look near the bottom of the screen you will see a line that +begins and ends with dashes, and contains the string "Emacs: +TUTORIAL". This part of the screen always shows the name of the file +that you are visiting. Right now, you are visiting a file called +"TUTORIAL" which is your personal scratch copy of the Emacs tutorial. +Whatever file you find, that file's name will appear in that precise +spot. + +The commands for finding and saving files are unlike the other +commands you have learned in that they consist of two characters. +They both start with the character Control-x. There is a whole series +of commands that start with Control-x; many of them have to do with +files, buffers, and related things. These commands are two, three or +four characters long. + +Another thing about the command for finding a file is that you have +to say what file name you want. We say the command "reads an argument +from the terminal" (in this case, the argument is the name of the +file). After you type the command + + C-x C-f Find a file + +Emacs asks you to type the file name. The file name you type appears +on the bottom line of the screen. The bottom line is called the +minibuffer when it is used for this sort of input. You can use +ordinary Emacs editing commands to edit the file name. + +While you are entering the file name (or any minibuffer input), +you can cancel the command with C-g. + +>> Type C-x C-f, then type C-g. This cancels the minibuffer, + and also cancels the C-x C-f command that was using the + minibuffer. So you do not find any file. + +When you have finished entering the file name, type to +terminate it. Then C-x C-f command goes to work, and finds the file +you chose. The minibuffer disappears when the C-x C-f command is +finished. + +In a little while the file contents appear on the screen, and you can +edit the contents. When you wish to make your changes permanent, +type the command + + C-x C-s Save the file + +This copies the text within Emacs into the file. The first time you +do this, Emacs renames the original file to a new name so that it is +not lost. The new name is made by adding "~" to the end of the +original file's name. + +When saving is finished, Emacs prints the name of the file written. +You should save fairly often, so that you will not lose very much +work if the system should crash. + +>> Type C-x C-s, saving your copy of the tutorial. + This should print "Wrote ...TUTORIAL" at the bottom of the screen. + +NOTE: On some systems, typing C-x C-s will freeze the screen and you +will see no further output from Emacs. This indicates that an +operating system "feature" called "flow control" is intercepting the +C-s and not letting it get through to Emacs. To unfreeze the screen, +type C-q. Then see the section "Spontaneous Entry to Incremental +Search" in the Emacs manual for advice on dealing with this "feature". + +You can find an existing file, to view it or edit it. You can also +find a file which does not already exist. This is the way to create a +file with Emacs: find the file, which will start out empty, and then +begin inserting the text for the file. When you ask to "save" the +file, Emacs will really create the file with the text that you have +inserted. From then on, you can consider yourself to be editing an +already existing file. + + +* BUFFERS +--------- + +If you find a second file with C-x C-f, the first file remains +inside Emacs. You can switch back to it by finding it again with +C-x C-f. This way you can get quite a number of files inside Emacs. + +>> Create a file named "foo" by typing C-x C-f foo . + Then insert some text, edit it, and save "foo" by typing C-x C-s. + Finally, type C-x C-f TUTORIAL + to come back to the tutorial. + +Emacs stores each file's text inside an object called a "buffer." +Finding a file makes a new buffer inside Emacs. To see a list of the +buffers that current exist in your Emacs job, type + + C-x C-b List buffers + +>> Try C-x C-b now. + +See how each buffer has a name, and it may also have a file name +for the file whose contents it holds. Some buffers do not correspond +to files. For example, the buffer named "*Buffer List*" does +not have any file. It is the buffer which contains the buffer +list that was made by C-x C-b. ANY text you see in an Emacs window +is always part of some buffer. + +>> Type C-x 1 to get rid of the buffer list. + +If you make changes to the text of one file, then find another file, +this does not save the first file. Its changes remain inside Emacs, +in that file's buffer. The creation or editing of the second file's +buffer has no effect on the first file's buffer. This is very useful, +but it also means that you need a convenient way to save the first +file's buffer. It would be a nuisance to have to switch back to +it with C-x C-f in order to save it with C-x C-s. So we have + + C-x s Save some buffers + +C-x s asks you about each buffer which contains changes that you have +not saved. It asks you, for each such buffer, whether to save the +buffer. + +>> Insert a line of text, then type C-x s. + It should ask you whether to save the buffer named TUTORIAL. + Answer yes to the question by typing "y". + +* USING THE MENU +---------------- + +If you are on an X terminal, you will notice a menubar at the +top of the Emacs screen. You can use this menubar to access all +the most common Emacs commands, such as "find file". You will +find this easier at first, because you don't need to remember +the keystrokes necessary to access any particular command. Once +you are comfortable with Emacs, it will be easy to begin using +the keyboard commands because each menu item with a +corresponding keyboard command has the command listed next to +it. + +Note that there are many items in the menubar that have no exact +keyboard equivalents. For example, the Buffers menu lists all +of the available buffers in most-recently used order. You can +switch to any buffer by simply findings its name in the Buffers +menu and selecting it. + + +* USING THE MOUSE +----------------- + +When running under X, Emacs is fully integrated with the mouse. +You can position the text cursor by clicking the left button at +the desired location, and you can select text by dragging the +left mouse button across the text you want to select. (Or +alternatively, click the left mouse button at one end of the +text, then move to the other end and use Shift-click to select +the text.) + +To kill some selected text, you can use C-w or choose the Cut +item from the Edit menu. Note that these are *not* equivalent: +C-w only saves the text internally within Emacs (similar to C-k +as described above), whereas Cut does this and also puts the +text into the X clipboard, where it can be accessed by other +applications. + +To retrieve text from the X clipboard, use the Paste item from +the Edit menu. + +The middle mouse button is commonly used to choose items that +are visible on the screen. For example, if you enter Info (the +on-line Emacs documentation) using C-h i or the Help menu, you +can follow a highlighted link by clicking the middle mouse +button on it. Similarly, if you are typing a file name in +(e.g. when prompted by "Find File") and you hit TAB to show the +possible completions, you can click the middle mouse button on +one of the completions to select it. + +The right mouse button brings up a popup menu. The contents of +this menu vary depending on what mode you're in, and usually +contain a few commonly used commands, so they're easier to +access. + +>> Press the right mouse button now. + +You will have to hold the button down in order to keep the +menu up. + + +* EXTENDING THE COMMAND SET +--------------------------- + +There are many, many more Emacs commands than could possibly be put +on all the control and meta characters. Emacs gets around this with +the X (eXtend) command. This comes in two flavors: + + C-x Character eXtend. Followed by one character. + M-x Named command eXtend. Followed by a long name. + +These are commands that are generally useful but used less than the +commands you have already learned about. You have already seen two of +them: the file commands C-x C-f to Find and C-x C-s to Save. Another +example is the command to end the Emacs session--this is the command +C-x C-c. (Do not worry about losing changes you have made; C-x C-c +offers to save each changed file before it kills the Emacs.) + +C-z is the command to exit Emacs *temporarily*--so that you can go +back to the same Emacs session afterward. + +On systems which allow it, C-z "suspends" Emacs; that is, it returns +to the shell but does not destroy the Emacs. In the most common +shells, you can resume Emacs with the `fg' command or with `%emacs'. + +On systems which do not implement suspending, C-z creates a subshell +running under Emacs to give you the chance to run other programs and +return to Emacs afterward; it does not truly "exit" from Emacs. In +this case, the shell command `exit' is the usual way to get back to +Emacs from the subshell. + +The time to use C-x C-c is when you are about to log out. It's also +the right thing to use to exit an Emacs invoked under mail handling +programs and other miscellaneous utilities, since they may not know +how to cope with suspension of Emacs. In ordinary circumstances, +though, if you are not about to log out, it is better to suspend Emacs +with C-z instead of exiting Emacs. + +There are many C-x commands. Here is a list of the ones you have learned: + + C-x C-f Find file. + C-x C-s Save file. + C-x C-b List buffers. + C-x C-c Quit Emacs. + C-x u Undo. + +Named eXtended commands are commands which are used even less +frequently, or commands which are used only in certain modes. An +example is the command replace-string, which globally replaces one +string with another. When you type M-x, Emacs prompts you at the +bottom of the screen with M-x and you should type the name of the +command; in this case, "replace-string". Just type "repl s" and +Emacs will complete the name. End the command name with . + +The replace-string command requires two arguments--the string to be +replaced, and the string to replace it with. You must end each +argument with . + +>> Move the cursor to the blank line two lines below this one. + Then type M-x repl schangedaltered. + + Notice how this line has changed: you've replaced + the word c-h-a-n-g-e-d with "altered" wherever it occurred, + after the initial position of the cursor. + + +* AUTO SAVE +----------- + +When you have made changes in a file, but you have not saved them yet, +they could be lost if your computer crashes. To protect you from +this, Emacs periodically writes an "auto save" file for each file that +you are editing. The auto save file name has a # at the beginning and +the end; for example, if your file is named "hello.c", its auto save +file's name is "#hello.c#". When you save the file in the normal way, +Emacs deletes its auto save file. + +If the computer crashes, you can recover your auto-saved editing by +finding the file normally (the file you were editing, not the auto +save file) and then typing M-x recover file. When it asks for +confirmation, type yes to go ahead and recover the auto-save +data. + + +* ECHO AREA +----------- + +If Emacs sees that you are typing commands slowly it shows them to you +at the bottom of the screen in an area called the "echo area." The echo +area contains the bottom line of the screen. + + +* MODELINE +----------- + +The line immediately above the echo area it is called the "modeline". +The mode line says something like this: + +--**-XEmacs: TUTORIAL (Fundamental)--L670--58%---------------- + +This line gives useful information about the status of Emacs and +the text you are editing. + +You already know what the filename means--it is the file you have +found. -NN%-- indicates your current position in the text; it means +that NN percent of the text is above the top of the screen. If the +top of the file is on the screen, it will say --Top-- instead of +--00%--. If the bottom of the text is on the screen, it will say +--Bot--. If you are looking at text so small that all of it fits on +the screen, the mode line says --All--. + +The stars near the front mean that you have made changes to the text. +Right after you visit or save a file, that part of the mode line shows +no stars, just dashes. + +The part of the mode line inside the parentheses is to tell you what +editing modes you are in. The default mode is Fundamental which is +what you are using now. It is an example of a "major mode". + +Emacs has many different major modes. Some of them are meant for +editing different languages and/or kinds of text, such as Lisp mode, +Text mode, etc. At any time one and only one major mode is active, +and its name can always be found in the mode line just where +"Fundamental" is now. + +Each major mode makes a few commands behave differently. For example, +there are commands for creating comments in a program, and since each +programming language has a different idea of what a comment should +look like, each major mode has to insert comments differently. Each +major mode is the name of an extended command, which is how you can +switch to that mode. For example, M-x fundamental-mode is a command to +switch to Fundamental mode. + +If you are going to be editing English text, such as this file, you +should probably use Text Mode. +>> Type M-x text-mode. + +Don't worry, none of the commands you have learned changes Emacs in +any great way. But you can observe that M-f and M-b now treat +apostrophes as part of words. Previously, in Fundamental mode, +M-f and M-b treated apostrophes as word-separators. + +Major modes usually make subtle changes like that one: most commands +do "the same job" in each major mode, but they work a little bit +differently. + +To view documentation on your current major mode, type C-h m. + +>> Use C-u C-v once or more to bring this line near the top of screen. +>> Type C-h m, to see how Text mode differs from Fundamental mode. +>> Type q to remove the documentation from the screen. + +Major modes are called major because there are also minor modes. +Minor modes are alternatives not to the major modes, just minor +modifications of them. Each minor mode can be turned on or off by +itself, independent of all other minor modes, and independent of your +major mode. So you can use no minor modes, or one minor mode, or any +combination of several minor modes. + +One minor mode which is very useful, especially for editing English +text, is Auto Fill mode. When this mode is on, Emacs breaks the line +in between words automatically whenever you insert text and make a +line that is too wide. + +You can turn Auto Fill mode on by doing M-x auto-fill-mode. +When the mode is on, you can turn it off by doing M-x +auto-fill-mode. If the mode is off, this command turns it on, +and if the mode is on, this command turns it off. We say that the +command "toggles the mode". + +>> Type M-x auto-fill-mode now. Then insert a line of "asdf " + over again until you see it divide into two lines. You must put in + spaces between them because Auto Fill breaks lines only at spaces. + +The margin is usually set at 70 characters, but you can change it +with the C-x f command. You should give the margin setting you want +as a numeric argument. + +>> Type C-x f with an argument of 20. (C-u 2 0 C-x f). + Then type in some text and see Emacs fill lines of 20 + characters with it. Then set the margin back to 70 using + C-x f again. + +If you makes changes in the middle of a paragraph, Auto Fill mode +does not re-fill it for you. +To re-fill the paragraph, type M-q (Meta-q) with the cursor inside +that paragraph. + +>> Move the cursor into the previous paragraph and type M-q. + + +* SEARCHING +----------- + +Emacs can do searches for strings (these are groups of contiguous +characters or words) either forward through the text or backward +through it. Searching for a string is a cursor motion command; +it moves the cursor to the next place where that string appears. + +The Emacs search command is different from the search commands +of most editors, in that it is "incremental". This means that the +search happens while you type in the string to search for. + +The command to initiate a search is C-s for forward search, and C-r +for reverse search. BUT WAIT! Don't try them now. + +When you type C-s you'll notice that the string "I-search" appears as +a prompt in the echo area. This tells you that Emacs is in what is +called an incremental search waiting for you to type the thing that +you want to search for. terminates a search. + +>> Now type C-s to start a search. SLOWLY, one letter at a time, + type the word 'cursor', pausing after you type each + character to notice what happens to the cursor. + Now you have searched for "cursor", once. +>> Type C-s again, to search for the next occurrence of "cursor". +>> Now type four times and see how the cursor moves. +>> Type to terminate the search. + +Did you see what happened? Emacs, in an incremental search, tries to +go to the occurrence of the string that you've typed out so far, +highlighting it for your convenience. To go to the next occurrence of +'cursor' just type C-s again. If no such occurrence exists Emacs +beeps and tells you the search is currently "failing", C-g would also +terminate the search. + +NOTE: On some systems, typing C-s will freeze the screen and you will +see no further output from Emacs. This indicates that an operating +system "feature" called "flow control" is intercepting the C-s and not +letting it get through to Emacs. To unfreeze the screen, type C-q. +Then see the section "Spontaneous Entry to Incremental Search" in the +Emacs manual for advice on dealing with this "feature". + +If you are in the middle of an incremental search and type , +you'll notice that the last character in the search string is erased +and the search backs up to the last place of the search. For +instance, suppose you have typed "c", to search for the first +occurrence of "c". Now if you type "u", the cursor will move +to the first occurrence of "cu". Now type . This erases +the "u" from the search string, and the cursor moves back to +the first occurrence of "c". + +If you are in the middle of a search and type a control or meta +character (with a few exceptions--characters that are special in +a search, such as C-s and C-r), the search is terminated. + +The C-s starts a search that looks for any occurrence of the search +string AFTER the current cursor position. If you want to search for +something earlier in the text, type C-r instead. Everything that we +have said about C-s also applies to C-r, except that the direction of +the search is reversed. + + +* MULTIPLE WINDOWS +------------------ + +One of the nice features of Emacs is that you can display more than one +window on the screen at the same time. + +>> Move the cursor to this line and type C-u 0 C-l. + +>> Now type C-x 2 which splits the screen into two windows. + Both windows display this tutorial. The cursor stays in the top window. + +>> Type C-M-v to scroll the bottom window. + (If you do not have a real Meta key, type ESC C-v.) + +>> Type C-x o ("o" for "other") to move the cursor to the bottom window. +>> Use C-v and M-v in the bottom window to scroll it. + Keep reading these directions in the top window. + +>> Type C-x o again to move the cursor back to the top window. + The cursor in the top window is just where it was before. + +You can keep using C-x o to switch between the windows. Each +window has its own cursor position, but only one window actually +shows the cursor. All the ordinary editing commands apply to the +window that the cursor is in. We call this the "selected window". + +The command C-M-v is very useful when you are editing text in one +window and using the other window just for reference. You can keep +the cursor always in the window where you are editing, and advance +through the other window sequentially with C-M-v. + +C-M-v is an example of a CONTROL-META character. If you have a real +META key, you can type C-M-v by holding down both CTRL and META while +typing v. It does not matter whether CTRL or META "comes first," +because both of these keys act by modifying the characters you type. + +If you do not have a real META key, and you use ESC instead, the order +does matter: you must type ESC followed by CTRL-v; CTRL-ESC v will not +work. This is because ESC is a character in its own right, not a +modifier key. + +>> Type C-x 1 (in the top window) to get rid of the bottom window. + +(If you had typed C-x 1 in the bottom window, that would get rid +of the top one. Think of this command as "Keep just one +window--the window I am already in.") + +You do not have to display the same buffer in both windows. If you +use C-x C-f to find a file in one window, the other window does not +change. You can find a file in each window independently. + +Here is another way to use two windows to display two different +things: + +>> Type C-x 4 C-f followed by the name of one of your files. + End with . See the specified file appear in the bottom + window. The cursor goes there, too. + +>> Type C-x o to go back to the top window, and C-x 1 to delete + the bottom window. + + +* RECURSIVE EDITING LEVELS +-------------------------- + +Sometimes you will get into what is called a "recursive editing +level". This is indicated by square brackets in the mode line, +surrounding the parentheses around the major mode name. For +example, you might see [(Fundamental)] instead of (Fundamental). + +To get out of the recursive editing level, type ESC ESC ESC. That is +an all-purpose "get out" command. You can also use it for eliminating +extra windows, and getting out of the minibuffer. + +>> Type M-x to get into a minibuffer; then type ESC ESC ESC to get out. + +You cannot use C-g to get out of a recursive editing level. This is +because C-g is used for canceling commands and arguments WITHIN the +recursive editing level. + + +* GETTING MORE HELP +------------------- + +In this tutorial we have tried to supply just enough information to +get you started using Emacs. There is so much available in Emacs that +it would be impossible to explain it all here. However, you may want +to learn more about Emacs since it has many other useful features. +Emacs provides commands for reading documentation about Emacs +commands. These "help" commands all start with the character +Control-h, which is called "the Help character". + +To use the Help features, type the C-h character, and then a +character saying what kind of help you want. If you are REALLY lost, +type C-h ? and Emacs will tell you what kinds of help it can give. +If you have typed C-h and decide you do not want any help, just +type C-g to cancel it. + +(Some sites rebind the character C-h. They really should not do this +as a blanket measure, so complain to the system administrator. +Meanwhile, if C-h does not display a message about help at the bottom +of the screen, try typing M-x help RET instead.) + +The most basic HELP feature is C-h c. Type C-h, a c, and a +command character or sequence, and Emacs displays a very brief +description of the command. + +>> Type C-h c Control-p. + The message should be something like + + C-p runs the command previous-line + +This tells you the "name of the function". Function names are used +mainly for customizing and extending Emacs. But since function names +are chosen to indicate what the command does, they can serve also as +very brief documentation--sufficient to remind you of commands you +have already learned. + +Multi-character commands such as C-x C-s and (if you have no META or +EDIT or ALT key) v are also allowed after C-h c. + +To get more information about a command, use C-h k instead of C-h c. + +>> Type C-h k Control-p. + +This displays the documentation of the function, as well as its +name, in an Emacs window. When you are finished reading the +output, type q to get rid of the help text. + +Here are some other useful C-h options: + + C-h f Describe a function. You type in the name of the + function. + +>> Try typing C-h f previous-line. + This prints all the information Emacs has about the + function which implements the C-p command. + + C-h a Hyper Apropos. Type in a keyword and Emacs will list + all the functions and variables whose names contain + that keyword. The commands that can be invoked with + Meta-x, an asterisk will be displayed to the left. + +>> Type C-h a newline. + +This displays a list of all functions and variables with "newline" in +their names. Press or click the middle mouse button to find +out more about a function or variable. Type `q' to exit hyper-apropos. + + +* CONCLUSION +------------ + +Remember, to exit Emacs permanently use C-x C-c. To exit to a shell +temporarily, so that you can come back in, use C-z. (under X, this +iconifies the current Emacs frame.) + +This tutorial is meant to be understandable to all new users, so if +you found something unclear, don't sit and blame yourself - complain! + + +COPYING +------- + +This tutorial descends from a long line of Emacs tutorials +starting with the one written by Stuart Cracraft for the original Emacs. +Ben Wing updated the tutorial for X Windows. Martin Buchholz and +Hrvoje Niksic added more corrections for XEmacs. + +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. + +The conditions for copying Emacs itself are more complex, but in the +same spirit. Please read the file COPYING and then do give copies of +GNU Emacs to your friends. Help stamp out software obstructionism +("ownership") by using, writing, and sharing free software! diff --git a/etc/TUTORIAL.de b/etc/TUTORIAL.de new file mode 100644 index 0000000..a7b9fa8 --- /dev/null +++ b/etc/TUTORIAL.de @@ -0,0 +1,1159 @@ +Copyright (c) 1997, Adrian Aichner . + +Copyright (c) 1985, 1996 Free Software Foundation, Inc. See end for conditions. + +Du betrachtest das Emacs Tutorial. +Dies sind die einführenden Übungen für Emacs. + +Emacs-Befehle verwenden generell entweder die CONTROL- (manchmal mit +CTRL oder CTL beschriftet, auf deutschen Tastaturen auch oft mit STRG) +oder die META-Taste. Auf manchen Tastaturen ist die META-Taste mit +ALT, EDIT oder sonstwie (z.B. ist auf einer Sun Tastatur die +Raute-Taste links vom SPACE Balken die META-Taste) beschriftet. Statt +jedesmal META oder CONTROL auszuschreiben, wenn wir wollen daß Du die +Taste drückst, verwenden wir folgende Abkürzungen: + +C- bedeutet: Halte die CONTROL-Taste während der Betätigung der + -Taste gedrückt. Also bedeutet C-f: Halte die CONTROL + Taste, während Du den Buchstaben f drückst. +M- bedeutet: Halte die META-Taste während der Betätigung der + -Taste gedrückt. Falls es keine META-Taste gibt, tippe + zuerst ESC (die ESCAPE-Taste) und danach die -Taste. + +Wichtig: Tippe C-x C-c, um die Emacs-Sitzung zu beenden (zwei +Zeichen). Die ">>" am linken Seitenrand deuten auf Anweisungen, die +Du probieren solltest. so z.B: +<> +>> Tippe nun C-v (Betrachte nächste Seite) um die nächste Seite zu + betrachten. (Also, halte die CONTROL-Taste gedrückt während + Du v tippst.) + Von jetzt an tu das bitte jeweils nachdem Du eine Seite + vollständig gelesen hast. + +Bitte beachte die Überlappung von zwei Zeilen wenn Du vorwärts +blätterst; dies erlaubt es, den Text fließend weiter zu lesen. + +Zuerst solltest Du wissen, wie man sich im Text von Stelle zu Stelle +bewegt. Du weißt bereits, wie man sich mit C-v eine Seite +weiterbewegt. Um eine Seite zurück zu gehen, tippe M-v (halte die +META-Taste gedrückt und tippe v oder tippe v wenn Deine Tastatur +keine META-, EDIT- oder ALT-Taste besitzt). + +>> Versuche ein paar Mal M-v und C-v zu tippen. + + +* ZUSAMMENFASSUNG +----------------- + +Die folgenden Befehle sind nützlich um Text seitenweise zu betrachten: + + C-v Eine Seite vorwärts blättern + M-v Eine Seite zurück blättern + C-l Bewegt den Bildschirminhalt um den Textzeiger in die + Bildmitte und baut den Bildschirm neu auf. + (Dies ist CONTROL-, nicht CONTROL-1.) + +>> Finde den Textzeiger und merke Dir den Text der ihm nahe ist. + Nun tippe C-l. + Finde den Textzeiger abermals und achte darauf daß er sich, + relativ zum Text, nicht bewegt hat. + + +* EINFACHE TEXTZEIGER-STEUERUNG +------------------------------- + +Das Bewegen von Bildschirminhalt zum nächsten ist nützlich, aber wie +bewegt man sich an eine bestimmte Stelle im Text? + +Dazu gibt es mehrere Möglichkeiten. Die einfachste ist die Befehle +C-p, C-b, C-f und C-n zu verwenden. Jeder dieser Befehle bewegt den +Textzeiger um eine Zeile bzw. Spalte in eine bestimmte Richtung. +Hier ist eine Tabelle welche die Bewegungsrichtung der vier Befehle +zeigt: + + Vorherige Zeile, C-p + : + : + Rückwärts, C-b .... Jetzige Textzeiger-Position .... Vorwärts, C-f + : + : + Nächste Zeile, C-n + +>> Bewege den Textzeiger mittels C-n oder C-p auf die mittlere Zeile + der obigen Tabelle. Dann zentriere das Diagramm mittels C-l im + Bildschirmfenster. + +Auf Englisch kann man sich diese Befehle leicht einprägen: P für +previous, N für next, B für backward und F für forward. Dies sind die +einfachen Befehle zur Bewegung des Textzeigers. Da Du sie ständig +benutzen wirst, solltest Du sie jetzt erlernen. + +>> Verwende einige C-n's um den Textzeiger auf diese Zeile zu + bringen. + +>> Bewege Dich mit C-f's in die Zeile und dann hinauf mit C-p's. + Beobachte das Verhalten von C-p, wenn Du Dich mitten in einer Zeile + befindest. + +Jede Textzeile endet mit einem Newline-Zeichen, welches sie von der +nächsten trennt. Auch die letzte Zeile in Deiner Datei sollte ein +Newline am Ende besitzen (obschon Emacs dieses nicht benötigt). + +>> Versuche C-b am Beginn einer Zeile. Es sollte Dich zum Ende der + vorigen Zeile bringen. Dies deshalb, weil es Dich über das + Newline-Zeichen zurückbewegt. + +C-f kann sich, wie C-b, über ein Newline hinwegbewegen. + +>> Tippe einige C-b's um ein Gefühl für die Position des Textzeigers + zu bekommen. Dann verwende C-f um ans Ende der Zeile zu gelangen. + Nun versuche ein weiteres C-f um in die nächste Zeile zu gelangen. + +Wenn Du Dich am Anfang oder Ende aus dem Bildschirm bewegst, schiebt +sich der Text ins Blickfeld. Diesen Vorgang nennt man rollen oder +"scrolling". Er erlaubt Emacs den Textzeiger an die gewünschte +Stelle zu bringen, ohne ihn aus dem Bildschirmfenster zu bewegen. + +>> Versuche den Textzeiger mittels C-n aus dem Blickfeld zu bewegen + und beobachte was geschieht. + +Wenn Dir die zeichenweise Fortbewegung zu langsam ist, kannst Du +Dich Wort für Wort bewegen. M-f (META-f) geht ein Wort weiter und M-b +geht eins zurück. + +>> Tippe ein paar M-f's und M-b's. + +Wenn Du mitten in einem Wort bist, bringt Dich M-f an sein Ende. +Wenn Du auf Leerzeichen zwischen Worten stehst, bewegt Dich M-f zum +Ende des folgenden Wortes. M-b bewegt sich sinngemäß zurück. + +>> Versuche M-f und M-b einige Male, abgewechselt von C-f's und C-b's + so daß Du das Verhalten von M-f und M-b an verschiedenen Stellen + innerhalb und zwischen Wörtern beobachten kannst. + +Achte auf die Verwandtschaft von C-f und C-b auf der einen Seite und +M-f und M-b auf der anderen. Sehr oft werden META-Befehle für +Operationen mit Einheiten einer Sprache verwendet (Worte, Sätze, +Absätze), während CONTROL-Befehle unverändert mit den einfachen +Einheiten (Buchstaben, Zeilen, etc.) arbeiten. + +Diese Parallele ist auf Zeilen und Sätze anwendbar: C-a und C-e gehen +zum Anfang und Ende einer Zeile, M-a und M-e zum Anfang bzw. Ende +eines Satzes. + +>> Versuche ein paar C-a's und dann ein paar C-e's. + Versuche ein paar M-a's und dann ein paar M-e's. + +Schau wie mehrere C-a's nichts bewirken, mehrere M-a's sich aber Satz +für Satz weiterbewegen. Obwohl sich ihr Verhalten unterscheidet, +erscheint es natürlich. + +Die Stelle des Textzeigers im Text wird auch "Punkt" genannt. Der +Textzeiger auf dem Bildschirm zeigt an welchem Punkt im Text sich +dieser befindet. + +Hier ist eine Zusammenfassung der einfachen Befehle zur Bewegung des +Textzeigers, inklusive der Befehle zur wort- und satzweisen Bewegung: + + C-f Gehe ein Zeichen weiter + C-b Gehe ein Zeichen zurück + + M-f Gehe ein Wort weiter + M-b Gehe ein Wort zurück + + C-n Gehe zur nächsten Zeile + C-p Gehe zur vorherigen Zeile + + C-a Gehe an den Anfang der Zeile + C-e Gehe an das Ende der Zeile + + M-a Gehe zurück zum Anfang des Satzes + M-e Gehe weiter zum Ende des Satzes + +>> Übe jetzt alle diese Befehle einige Male. + Es sind die am häufigsten benutzten. + +Zwei weitere wichtige Befehle zur Bewegung im Text sind M-< (META +kleiner), welcher an den Anfang des gesamten Texts springt, und M-> +(META größer), welcher an das Textende hüpft. + +Auf einigen deutschen Tastaturen ist ">" über "<", Du mußt also +möglicherweise die Shift-Taste drücken, um ein > zu tippen. Auf +solchen Tastaturen mußt Du auch für M-> die Shift-Taste drücken; ohne +Shift-Taste würdest Du sonst M-< tippen. + +>> Versuche jetzt M-< um an den Beginn dieser einführenden Übungen zu + gelangen. + Dann verwende C-v wiederholt um hierher zurück zu kommen. + +>> Versuche jetzt M-> um ans Ende der Übungen zu springen. + Benutzte M-v widerholt um hierher zurück zu gelangen. + +Du kannst den Textzeiger auch mit den Pfeil-Tasten bewegen, falls +Deine Tastatur solche besitzt. Wir empfehlen das Erlernen von C-b, +C-f, C-n und C-p aus drei Gründen. Erstens funktionieren sie auf allen +Tastaturen. Zweitens wirst Du herausfinden, wenn Du einige Übung mit +Emacs bekommst, daß es schneller ist die CTRL-Tasten zu drücken als +die Pfeil-Tasten (weil Du Deine Hände nicht aus dem normalen +Fingersatz bringen mußt). Drittens: Hast Du die Versendung der CTRL +Befehle erst zu Deiner Gewohnheit gemacht, wird es ein Leichtes +weitere Bewegungs-Befehle zu erlernen. + +Die meisten Emacs-Befehle akzeptieren ein numerisches Argument; +meistens dient dieses als Wiederholzähler. Dieses Argument übergibt +man mit C-u, gefolgt von einer Zahl, bevor man den jeweiligen Befehl +eingibt. Steht Dir eine META- (oder EDIT- oder ALT)-Taste zur +Verfügung, so kannst Du dieses Argument auch wie folgt eingeben: Tippe +die Ziffern während Du die META-Taste gedrückt hältst. Wir empfehlen +das Erlernen der C-u Methode, da sie überall funktioniert. + + +z.B., C-u 8 C-f bewegt den Textzeiger um acht Zeichen weiter. + +>> Versuche C-n und C-p mit numerischem Argument um den Textzeiger + mit nur einem Befehl nahe an diese Zeile heranzubringen. + +Die meisten Befehle verwenden ein Argument als Wiederholzähler. Einige +ausgenommene Befehle verwenden es anders. C-v und M-v sind unter den +Ausnahmen. Mit Argument rollen sie den Text um eben soviele Zeilen, +anstelle von Bildschirmseiten. z.B. C-u 4 C-v rollt den +Bildschirminhalt um 4 Zeilen. + +>> Versuche C-u 8 C-v nun aus. + +Dies sollte den Bildschirminhalt um acht Zeilen nach oben gerollt +haben. Wenn Du ihn wieder zurückrollen willst, kannst Du M-v ein +entsprechendes Argument geben. + +Verwendest Du das X Window System, so befindet sich wahrscheinlich ein +rechteckiger Balken, Scrollbar oder Rollbalken genannt, rechts neben +dem Emacs-Fenster. Du kannst den Text auch durch Manipulieren dieses +Rollbalkens mit der Maus rollen. + +>> Versuche die mittlere Maustaste in der hervorgehobenen Fläche + innerhalb des Rollbalkens zu drücken. Dies sollte den Text mehr + oder weniger rollen, je nachdem wie hoch oder tief der Mauszeiger + auf dem Rollbalken positioniert ist. + +>> Bewege den Mauszeiger im Rollbalken etwa drei Zeilen unter das + obere Ende und drücke die linke Maus-Taste einige Male. + +* TEXTZEIGER STEUERUNG MIT EINEM X-TERMINAL +------------------------------------------- + +An einem X-Terminal wirst Du es wahrscheinlich einfacher finden die +Tasten des Tastenfeldes zur Textzeiger Steuerung zu gebrauchen. Die +Links, Rechts, Auf und Ab Pfeil Tasten steuern in die erwartete +Richtung; sie funktionieren exakt wie C-b, C-f, C-p und C-n, sind aber +leichter zu tippen und zu merken. Du kannst auch C-Links und C-Rechts +verwenden um wortweise zu springen. C-Auf und C-Ab bewegen den +Textzeiger blockweise (z.B. Absätze, wenn Du Text bearbeitest). +Die Tasten HOME (oder BEGIN, POS1) und END (oder ENDE) bringen Dich +zum Anfang oder Ende einer Zeile und C-HOME bzw. C-END bringen Dich +zum Anfang oder Ende der Datei. Hat Deine Tastatur PgUp (oder BILD +AUF) und PgDn (oder BILD AB) kannst Du diese wie M-v und C-v zum +seitenweisen Rollen verwenden. + +All diese Befehle nehmen numerische Argumente wie weiter oben +beschrieben. Du kannst diese Argumente mittels einer Abkürzung +eingeben: Drücke einfache die CONTROL- oder META-Taste während Du die +Ziffern tippst. z.B. um 12 Worte nach rechts zu gehen, tippe C-1 C-2 +C-Rechts. Beachte, daß dies ganz einfach, ohne Loslassen der +CONTROL-Taste, getippt werden kann. + +* WENN EMACS HÄNGT +------------------ + +Wenn Emacs auf Deine Befehle nicht mehr reagiert, kannst Du den +Befehle risikolos mit C-g unterbrechen. Mit C-g kann man Befehle +abbrechen, die zu lange dauern. + +Du kannst mit C-g auch ein numerisches Argument oder einen teilweise +eingegebenen Befehl, den Du nicht mehr ausführen willst, verwerfen. + +>> Tippe C-u 100 für ein numerisches Argument von 100, dann tippe + C-g. Nun tippe C-f. Es wird nur eine Bewegung um ein Zeichen + ausgeführt, da Du das Argument mit C-g verworfen hast. + +Hast Du fälschlich ein getippt, kannst Du es mit C-g loswerden. + + +* GESPERRTE BEFEHLE +------------------- + +Einige Emacs-Befehle sind "gesperrt", damit sie von Anfängern nicht +versehentlich benutzt werden können. + +Wenn Du einen der gesperrten Befehle tippst, zeigt Emacs die +Befehlsdokumentation und fragt um Bestätigung, daß der Befehl +tatsächlich ausgeführt werden soll. + +Wenn Du den Befehl wirklich probieren willst, tippe Space als Antwort +auf die Frage. Normalerweise, wenn Du den gesperrten Befehl nicht +ausführen willst, beantwortest Du die Frage mit "n". + +>> Tippe `C-x n p' (ein gesperrter Befehl), dann beantworte die Frage + mit n. + + +* FENSTER +--------- + +Emacs unterstützt mehrere Fenster, jedes mit unterschiedlichem Text. +Beachte, daß sich der Begriff "Fenster" in Emacs nicht auf +verschiedene, überlappende Fenster im Fenstersystem bezieht, sondern +auf verschiedene Teil-Fenster innerhalb eines X Fensters. (Emacs +unterstützt auch mehrere X-Fenster, oder "Rahmen" ("frames") in +Emacs-Terminologie. Dies wird später beschrieben.) + + C-x 1 Ein Fenster (d.h., Beende alle anderen Fenster). + +Dies ist CONTROL-x gefolgt von der Ziffer 1. C-x 1 erweitert das +Fenster mit dem Textzeiger, so daß es das ganze Emacs-Fenster +einnimmt. Alle anderen Fenster werden beendet. + +>> Bewege den Textzeiger auf diese Zeile und tippe C-u 0 C-l. + +(Denke daran, daß C-l den Bildschirminhalt neu aufbaut. Das +numerische Argument bedeutet: "Baue den Bildschirminhalt neu auf und +bewege die aktuelle Zeile ebensoviele Zeilen vom oberen +Bildschirmrand." C-u 0 C-l bedeutet also "Bau den Bildschirm, mit der +aktuellen Zeile ganz oben, neu auf.") + +>> Tippe CONTROL-x 2 + Beachte wie das Fenster schrumpft, während ein neues mit Teilen + derselben Datei erscheint. + +>> Tippe C-x 1 und sehe das neue Fenster verschwinden. + + +* EINFÜGEN UND LÖSCHEN +---------------------- + +Willst Du Text einfügen, so tippe ihn. Sichtbare Zeichen, wie A, +7, *, etc., werden von Emacs als Text betrachtet und unmittelbar +eingefügt. Tippe (die Rücklauf-Taste) um ein Newline +einzufügen. + +Mit kannst Du das zuletzt getippte Zeichen löschen. + ist eine Taste die möglicherweise mit "Del" oder "Entf" +beschriftet ist. In einigen Fällen dient die Backspace (Rückschritt) +Taste als , jedoch nicht immer! + +Allgemeiner ausgedrückt löscht das Zeichen unmittelbar vor +dem Textzeiger. + +>> Tu dies nun -- tippe einige Buchstaben, lösche sie dann durch + mehrmaliges Tippen von . Kein Grund zur Sorge diese Datei + zu verändern. Es ist Deine persönliche Kopie der "Einführenden + Übungen für Emacs". + +Wird eine Zeile zu lang für eine Bildschirm-Zeile, so wird die Zeile +auf der nächsten Bildschirm-Zeile fortgesetzt. Ein umgekehrter +Schrägstrich ("\") am rechten Rand zeigt an, daß die Zeile fortgesetzt +wird. + +>> Füge Text ein bis Du den rechten Rand erreichst und tippe weiter. + Du wirst bemerken, wie die Fortsetzungszeile erscheint. + +>> Verwende s bis die Zeile wieder auf eine Bildschirmzeile + paßt. Die Fortsetzungszeile verschwindet. + +Ein Newline-Zeichen kann wie jedes andere gelöscht werden. Das +Löschen des Newline-Zeichens fügt die umgebenden Zeilen zusammen. +Ist die entstehende Zeile zu lang für den Bildschirm, erscheint +wieder eine Fortsetzungszeile. + +>> Geh an den Anfang einer Zeile und tippe . Dies fügt die + Zeile an die vorhergehende an. + +>> Tippe um den Newline-Zeichen wieder einzufügen. + +Denke daran, daß die meisten Emacs-Befehle mittels eines Arguments +wiederholt werden können; Ein Textzeichen wird mittels Argument +mehrfach eingefügt. + +>> Versuch's einfach -- Tippe C-u 8 * um ******** einzufügen. + +Du hast jetzt die einfachsten Befehle zum Einfügen und Korrigieren von +Text gelernt. Du kannst auch ganze Worte oder Zeilen löschen. Hier +ist eine Zusammenfassung der Lösch-Befehle: + + Lösche das Zeichen vor dem Textzeiger + C-d Lösche das Zeichen nach dem Textzeiger + + M- Lösche das Wort vor dem Textzeiger + M-d Lösche das Wort nach dem Textzeiger + + C-k Lösche vom Textzeiger bis ans Zeilenende + M-k Lösche vom Textzeiger bis ans Satzende + +Beachte daß und C-d gegenüber M- und M-d die +Verwandtschaft von C-f und M-f fortsetzen ( ist zwar keine +CONTROL-Taste, aber das kümmert uns nicht). C-k und M-k verhalten +sich zueinander wie C-e und M-e zu Zeilen und Sätzen. + +Wenn Du mehr als ein Zeichen auf einmal löschst, speichert sie +Emacs, damit Du sie wieder abrufen kannst. Den gelöschten Text +zurückzuholen nennt man "yanking". Du kannst den gelöschten Text an +der selben oder an einer anderen Textstelle zurückholen. Der Text +kann mehrere Male zurückgeholt geholt werden um Mehrfachkopien +anzulegen. Der Zurückhol-Befehl ist C-y. + +Beachte daß der Unterschied zwischen Entfernen ("Killing") und Löschen +("Deleting") darin besteht, daß gelöschte Teile zurückgeholt werden +können, während dies für entfernte Teile nicht möglich ist. Allgemein +speichern Befehle die viel Text löschen diesen auch, während Befehle, +die nur einzelne Zeichen oder Leerzeilen entfernen, diese nicht +speichern. + +>> Gehe zum Beginn einer nicht leeren Zeile. + Dann lösche den gesamten Text der Zeile mit C-k. +>> Tippe C-k ein zweites Mal. Du wirst sehen, daß dies das folgende + Newline-Zeichen löscht. + +Beachte, daß ein einzelnes C-k den Inhalt einer Zeile löscht, ein +zweites die Zeile selbst, so daß sich nachfolgende Zeilen nach oben +bewegen. Ein numerisches Argument wird von C-k besonders behandelt: +Es löscht ebensoviele Zeilen mitsamt Inhalt. Dies ist keine einfache +Wiederholung. C-u 2 C-k löscht zwei Zeilen und deren Inhalt; zwei +aufeinanderfolgende C-k würden dies nicht tun. + +Um den zuletzt gelöschten Text beim Textzeiger zurückzuholen, tippe +C-y. + +>> Versuch's; Tippe C-y um den Text zurückzuholen. + +Denke so über C-y als ob Du etwas zurückholst, das man Dir genommen +hat. Beachte, daß bei aufeinanderfolgenden C-k's der gelöschte Text in +einem Stück gespeichert wird, so daß ein C-y alle Zeilen zurück bringt. + +>> Tu's jetzt, tippe C-k mehrere Male. + +Nun das Zurückholen des gelöschten Texts: + +>> Tippe C-y. Dann gehe einige Zeilen nach unten und tippe wieder C-y. + Jetzt siehst Du, wie man Text kopiert. + +Was machst Du, wenn Du Text zum Zurückholen hast, dann aber etwas +anderes löscht? C-y würde das zuletzt Gelöschte zurückbringen. Aber +der zuvor gelöschte Text ist nicht verloren. Du kannst Ihn mit M-y +zurückholen. Nachdem Du C-y getippt hast, kannst Du mit M-y den +zurückgeholten Text durch früher gelöschten Text ersetzten. Tippst Du +M-y wieder und wieder, holst Du früher und früher Gelöschtes zurück. +Hast Du den gewünschten Text erreicht, brauchst Du nichts weiter zu +tun um diesen zu behalten. Fahre mit mit Deiner Arbeit fort und laß +den zurückgeholten Text wo er ist. + +Verwendest Du M-y oft genug, kehrst Du an den Anfang zurück (der +letzte Löschvorgang). + +>> Lösche eine Zeile, bewege Dich im Text, lösche eine weitere Zeile. + Dann tippe C-y um die zuletzt gelöschte Zeile zurückzuholen. + Darauf verwende M-y und die zuerst gelöschte Zeile ersetzt den + zuvor zurückgeholten Text. Verwende weitere M-y's und sieh was + passiert. Fahre fort bis die zweite Zeile wiederkehrt und versuche + noch einige M-y's. + Wenn Du willst, kannst Du M-y positive und negative Argumente + geben. + + +* RÜCKGÄNGIG MACHEN +------------------- + +Veränderst Du Text und entscheidest Du dann, daß dies ein Fehler war, +kannst Du die Änderungen mit C-x u rückgängig machen. + +Üblicherweise macht C-x u die Änderungen des letzten Befehls +rückgängig; wenn Du C-x u mehrmals wiederholst, wird jeweils ein +weiterer Befehl rückgängig gemacht. + +Aber es gibt zwei Ausnahmen: Befehle, die keinen Text verändern, +zählen nicht (dies schließt Befehle zum Bewegen und Rollen des +Textzeigers ein) und selbsteinfügende Befehle werden üblicherweise in +Zwanziger-Gruppen behandelt. (Dies dient dazu, die Anzahl der C-x u's +zu reduzieren die Du tippen mußt um eingetippten Text rückgängig zu +machen.) + +>> Lösche diese Zeile mit C-k, dann tippe C-x u und sie sollte + wiedererscheinen. + +C-_ ist ein alternativer rückgängig (undo) Befehl; er funktioniert wie +C-x u, ist aber einfacher zu Wiederholen. Der Nachteil ist, daß C-_ +auf einigen Tastaturen nicht direkt getippt werden kann. Deshalb gibt +es C-x u. Auf einigen Tastaturen kann man C-_ als C-\ tippen. + +Ein numerisches Argument für C-_ oder C-x u dient als Wiederholwert. + + +* DATEIEN +--------- + +Um an einem Text bleibende Änderungen vorzunehmen, mußt Du ihn in +einer Datei speichern. Sonst gehen Deine Änderungen mit dem Beenden +von Emacs verloren. Du legst Deine Arbeit in einer Datei ab, indem Du +eine Datei "findest". (Man nennt dies auch das "Besuchen" +("visiting") einer Datei.) + +Das Finden einer Datei bedeutet, daß Du ihren Inhalt mit Emacs +betrachtest. In vielfacher Hinsicht ist es, als würdest Du die Datei +selbst bearbeiten. Jedoch sind Deine Änderungen nicht permanent bis +Du die Datei sicherst. Damit kannst Du verhindern halb-fertige +Dateien auf dem System abzulegen, wenn Du dies nicht willst. Sogar +beim Abspeichern hinterläßt Emacs die Originaldatei unter verändertem +Namen falls Du später entscheiden solltest, daß die Änderungen ein +Fehler waren. + +Nahe dem unteren Ende des Bildschirms siehst Du eine Zeile die mit +Bindestrichen beginnt und endet und den Text "Emacs: TUTORIAL" +enthält. Dieser Teil des Bildschirms zeigt immer den Namen der +besuchten Datei. Zur Zeit besuchst Du eine Datei namens "TUTORIAL", +welche Deine persönliche Kopie des Emacs Tutorials ist. Was immer für +eine Datei Du findest, ihr Name wird immer an dieser Stelle +erscheinen. + +Die Befehle zum Finden und Sichern von Dateien sind anders als die +bisher erlernten, da sie jeweils aus zwei Zeichen bestehen. Beide +beginnen mit dem Zeichen CONTROL-x. Es gibt eine ganze Reihe von +Befehlen, die mit CONTROL-x beginnen; viele haben mit Dateien, Buffern +und verwandten Dingen zu tun. Diese Befehle sind zwei, drei oder vier +Zeichen lang. + +Bei Befehlen zum Finden einer Datei mußt Du außerdem den Dateinamen +angeben. Wir sagen: "Der Befehl liest ein Argument vom Terminal." (In +diesem Fall ist das Argument der Dateiname). Nachdem Du folgenden +Befehl tippst + + C-x C-f Finde eine Datei + +bittet Dich Emacs, einen Dateinamen einzugeben. Der Dateiname den Du +tippst erscheint am unteren Ende des Emacs-Fensters. Diese unterste +Zeile wird Minibuffer genannt, wenn sie für diese Art Eingabe +verwendet wird. Du kannst die üblichen Emacs-Befehle zum +Bearbeiten des Dateinamens verwenden. + +Während Du den Dateinamen eingibst (oder bei jeder anderen +Minibuffer-Eingabe) kannst Du den Befehl mit C-g abbrechen. + +>> Tippe C-x C-f, dann tippe C-g. Dies beendet den Minibuffer und + bricht den C-x C-f Befehl ab, der den Minibuffer benutzte. Du wirst + also keine Datei finden. + +Wenn Du mit dem Bearbeiten des Dateinamens fertig bist, tippe +um die Eingabe zu beenden. Der C-x C-f Befehl beginnt seine Arbeit +und findet die Datei Deiner Wahl. Der Minibuffer verschwindet, wenn +der C-x C-f Befehl beendet ist. + +Nach kurzer Zeit erscheint der Inhalt der Datei auf dem Bildschirm und +Du kannst diesen bearbeiten. Wenn Du Deine Änderungen sichern willst, +tippe den Befehl + + C-x C-s Sichere die Datei + +Das kopiert den Text von Emacs in die Datei. Geschieht dies das erste +Mal so benennt Emacs die Originaldatei um, so daß sie nicht verloren +geht. Der neue Name entsteht durch Anhängen von "~" am Ende des +Originalnamens. + +Ist der Sicherungsvorgang beendet, gibt Emacs den Namen der Datei an. +Du solltest recht oft sichern, damit Du nicht viel Arbeit verlierst, +sollte das System abstürzen. + +>> Tippe C-x C-s um Deine Kopie des tutorials zu sichern. + Dies sollte "Wrote ...TUTORIAL" am Fuß des Bildschirms ausgeben. + +ACHTUNG: Auf manchen Systemen wird C-x C-s den Bildschirm anhalten und +Du wirst keine weitere Ausgabe von Emacs sehen. Dies bedeutet, daß +auf Deinem System eine Betriebssystemeigenschaft ("feature") namens +Flußsteuerung ("flow control") das C-s abfängt und nicht an Emacs +weitergibt. Tippe C-q, um den Effekt aufzuheben, so daß der Bildschirm +wieder reagiert. Schau dann unter "Spontaneous Entry to Incremental +Search" im Emacs Manual nach, um Hilfe im Umgang mit diesem "Vorzug" +("feature") zu bekommen. + +Du kannst eine existierende Datei finden, um sie zu betrachten. Du +kannst aber auch eine Datei "finden", die es noch nicht gibt. So +erstellt man eine neue Datei mit Emacs: finde die Datei, welche +anfänglich leer ist, dann tippe den Text für die Datei ein. Wenn Du +danach sicherst, wird Emacs die Datei tatsächlich anlegen und Deinen +eingetippten Text darin ablegen. Von da an arbeitest Du an einer +existierenden Datei. + + +* BUFFER +-------- + +Findest Du eine weitere Datei mit C-x C-f, bleibt die erste in Emacs +erhalten. Du kannst zu dieser mit C-x C-f zurückschalten. Auf diese +Art kannst Du eine erhebliche Anzahl von Dateien in Emacs verfügbar +haben. + +>> Erstelle eine Datei namens "foo" durch Eintippen von C-x C-f foo + . + Dann füge etwas Text ein, bearbeite ihn und sichere die Datei "foo" + mit C-x C-s. + Schließlich tippe C-x C-f TUTORIAL um zum Tutorial zurück + zu gelangen. + +Emacs hält den Text jeder Datei in einem Objekt namens "buffer". Das +Finden einer Datei legt in Emacs einen neuen Buffer an. Um eine Liste +aller Buffer in Deiner Emacs-Sitzung zu erhalten tippst Du + + C-x C-b Liste alle Buffer + +>> Probiere C-x C-b jetzt aus. + +Beachte, daß jeder Buffer einen Namen hat. Wenn der Buffer einer Datei +zugeordnet ist, wird auch der Dateiname angezeigt. Einige Buffer haben +keine Entsprechung im Dateisystem. So hat z.B. der Buffer namens +"*Buffer List*" keine zugeordnete Datei. Dieser Buffer enthält die +Liste der Buffer, die mit C-x C-b erstellt wurde. JEDER Text in Emacs +ist Teil irgendeines Buffers. + +>> Tippe C-x 1 um die Bufferliste loszuwerden. + +Wenn Du Änderungen in einer Datei vornimmst, dann eine andere findest, +so wird der Inhalt der ersten nicht gesichert. Die Änderungen bleiben +innerhalb von Emacs im zugeordneten Buffer erhalten. Das Bearbeiten +einer weiteren Datei hat keinen Einfluß auf den Buffer der ersten. +Dies ist sehr nützlich, man braucht aber auch eine angenehme +Möglichkeit, den Buffer der ersten Datei zu sichern. Es wäre lästig, +müßte man mit C-x C-f zur ersten Datei zurückgehen, um diese dann mit +C-x C-s zu sichern. Darum haben wir + + C-x s Sichere mehrere Buffer + +C-x s befragt Dich zu jedem Buffer, der ungesicherte Änderungen +enthält. Für jeden einzelnen wirst Du gefragt ob Du Ihn sichern +willst. + +>> Füge eine Text-Zeile ein, dann tippe C-x s. + Du wirst gefragt, ob Du den Buffer namens TUTORIAL speichern + willst. + +* VERWENDUNG DES MENÜS +---------------------- + +An einem X-Terminal wirst Du eine Menüleiste am oberen Ende des Emacs +Fensters bemerken. Mit der Menüleiste kannst Du die allgemeinsten +Emacs-Befehle, wie "Finde Datei" ("find file"), erreichen. Du wirst +dies anfänglich einfacher finden, da Du dir die notwendigen +Tastenkombinationen der Befehle nicht merken mußt. Bist Du einmal +mit Emacs vertraut, wird es ein Leichtes sein die Kommandos zu +benutzen, da jeder Menüeintrag, der einer Tastenkombination +entspricht, diese auch anzeigt. + +Beachte, daß es viele Menüeinträge ohne entsprechende Tastensequenz +gibt. So listet z.B. das Buffers-Menü die verfügbaren Buffer in +letzt-benutzter Reihenfolge. Du kannst zu jedem Buffer über den +Eintrag im Buffers-Menü gelangen. + +* VERWENDUNG DER MAUS +--------------------- + +Unter X Windows hat Emacs volle Maus-Unterstützung. Der Textzeiger +kann durch Drücken der linken Maustaste an der gewünschten Stelle des +Mauszeigers dorthin gesetzt werden. Text kann durch Ziehen des +Mauszeigers bei gedrückter linker Maustaste selektiert werden. +(Oder man klickt die linke Maustaste an der einen Stelle im Text und +verwendet SHIFT-Klick an der anderen um den dazwischenliegenden Text +zu selektieren.) + +Um selektierten Text zu löschen kannst Du C-w benutzen, oder den +Menüeintrag "Cut" im Edit-Menü verwenden. Beachte, daß diese +Methoden nicht gleichbedeutend sind: C-w sichert den Text nur +innerhalb von Emacs (ähnlich wie oben unter C-k beschrieben), während +Cut den Text auch im X Clipboard ablegt, von wo ihn andere Programme +abholen können. + +Verwende "Paste" im Edit-Menü um Text vom X Clipboard zurückzuholen. + +Die mittlere Maustaste wird häufig verwendet um sichtbare Objekte auf +dem Bildschirm auszuwählen. Wenn Du z.B. "Info" (die Online Emacs +Dokumentation) mit C-h i oder über das Help-Menü aufrufst, kannst Du +einer hervorgehobenen Verknüpfung durch Klicken der mittleren +Maustaste folgen. Ganz ähnlich, wenn Du einen Dateinamen eingibst +(z.B. wenn von "Find File" gefragt) und TAB tippst um die möglichen +Vervollständigungen zu erhalten, kannst Du mit der mittleren Maus die +gewünschte Vervollständigung wählen. + +Die rechte Maustaste zeigt ein Popup-Menü. Der Inhalt des Menüs +variiert abhängig vom gewählten Modus und zeigt für gewöhnlich einige +häufig benutzte Befehle, die so einfacher benutzt werden können. + +>> Drücke jetzt die rechte Maustaste. + +Du mußt die Taste gedrückt halten, damit das Menü nicht gleich wieder +verschwindet. + +* ERWEITERUNG DES BEFEHLSSATZES +------------------------------- + +Es gibt viel mehr Emacs-Befehle als man auf allen CONTROL- und +META-Zeichen unterbringen könnte. Emacs löst dieses Problem mit dem X +(eXtend) Befehl. Davon gibt es zwei Ausführungen: + + C-x Zeichenerweiterung eXtend. Gefolgt von einer + Tastaturkombination. + M-x Namenserweiterung eXtend. Gefolgt von einer + ausgeschriebenen Befehlsbezeichnung. + +Diese Befehle sind zwar im Allgemeinen nützlich, werden aber seltener +verwendet als die bereits erlernten Befehle. Zwei von ihnen hast Du +bereits kennengelernt: Die Befehle C-x C-f zum Finden und C-x C-s +zum Sichern von Dateien. Ein anderes Beispiel ist der Befehl zum Beenden +einer Emacs-Sitzung -- dieser Befehl ist C-x C-c. (Habe keine Angst, +ungesicherte Änderungen zu verlieren; C-x C-c bietet die Möglichkeit zum +Sichern einer jeden geänderten Datei bevor Emacs beendet wird.) + +Mit C-z kann man Emacs vorübergehend verlassen -- so daß Du später zur +gleichen Sitzung zurückkehren kannst. + +Auf Systemen, die dies unterstützen sendet C-z Emacs "in den +Hintergrund"; man kehrt zur Shell zurück, ohne daß der Emacs-Prozeß +beendet wird. In den gebräuchlichsten Shells kann man zu Emacs mit +`fg' oder `%emacs' zurückkehren. + +Auf Systemen, die dieses Aussetzen von Emacs nicht unterstützen, +startet C-z eine s.g. Sub-Shell von der aus Du Programme starten und +danach zu Emacs zurückkehren kannst; Emacs wird in diesem Fall nicht +wirklich verlassen. Der Shell-Befehl `exit' ist in diesem Fall der +üblichste um zu Emacs zurückzukehren. + +C-x C-c verwendet man unmittelbar bevor man das System verlassen will. +Es ist auch die richtige Methode um einen Emacs zu verlassen der für +E-mail-Programme, oder andere Erweiterungen, die das Aussetzen von +Emacs nicht korrekt handhaben können, benutzt wird. Normalerweise +ist es besser Emacs mit C-z auszusetzen statt ihn zu beenden, wenn +man das System nicht verlassen will,. + +Es gibt viele C-x-Befehle. Hier ist eine Liste der bereits erlernten: + + C-x C-f Finde Datei. + C-x C-s Sichere Datei. + C-x C-b Liste alle Buffer. + C-x C-c Beende Emacs. + C-x u Rückgängig machen (Undo). + +Namenserweiterte Befehle (eXtended commands) sind solche, die weniger +häufig oder nur in einem bestimmten Modus verwendet werden. Ein +Beispiel ist der Befehl replace-string, der einen Text durch einen +anderen ersetzt. Wenn Du M-x tippst, zeigt dies Emacs am unteren Ende +des Emacs-Fensters mit M-x an und Du solltest den Namen des Befehls +eintippen; in diesem Fall "replace-string". Tippe einfach +"repl s" und Emacs wird den Namen vervollständigen. Beende den +Befehlsnamen mit . + +Der replace-string Befehl braucht zwei Argumente -- den zu ersetzenden +Text und den Ersatz-Text. Jedes Argument muß mit beendet +werden. + +>> Gehe zur Leerzeile zwei Zeilen unter dieser. + Dann tippe M-x repl sveraendertgeaendert. + + Beachte wie diese Zeile sich veraendert hat: Du hast das Wort + v-e-r-a-e-n-d-e-r-t mit "geaendert" ersetzt wo immer es nach der + anfänglichen Textzeiger Position auftrat. + + +* AUTOMATISCHE SICHERUNG +------------------------ + +Wenn Du Änderungen in einer Datei vornimmst, diese aber noch nicht +gesichert hast, so können diese bei einem Computerabsturz verloren +gehen. Um Dich davor zu schützen, schreibt Emacs regelmäßig eine +Autosave-Datei für jede Datei, die Du bearbeitest. Autosave-Dateien +beginnen und enden mit "#"; wenn Deine Datei z.B. "hello.c" heißt, so +heißt die auto-save Datei "#hello.c#". Sicherst Du die Datei, so +löscht Emacs die entsprechende auto-save Datei. + +Nach einem Computerabsturz kannst Du die automatisch +gesicherten Änderungen nach dem normalen Finden der Datei (Deiner +Datei, nicht der Autosave-Datei) durch Eintippen von M-x +recover-file zurückholen. Wenn Du nach der Bestätigung +gefragt wirst, tippst Du yes um die Änderungen in der +Autosave-Datei wiederherzustellen. + + +* ECHO BEREICH +-------------- + +Wenn Emacs bemerkt, daß Du Befehle langsam tippst, werden Dir diese am +Fuß des Emacs-Fensters in der s.g. "echo area" angezeigt. Die echo +area nimmt die unterste Zeile im Emacs-Fenster ein. + + +* MODUSZEILE +------------ + +Die Zeile über der echo area wird "mode line" genannt. Die Moduszeile +zeigt etwa folgendes: + +--**-XEmacs: TUTORIAL (Fundamental)--L670--58%---------------- + +Diese Zeile gibt nützliche Information über den Zustand von Emacs und +dem Text, den Du bearbeitest. + +Du kennst bereits die Bedeutung des Dateinamens -- es ist die Datei, +die Du gefunden hast. -NN%-- zeigt Deine Position im Text; dies +bedeutet daß NN Prozent des Texts oberhalb des sichtbaren Bereiches +liegen. Bist Du am Beginn, so erscheint --Top-- anstelle von --00%--. +Bist Du am Ende des Texts, so erscheint --Bot--. Ist der gesamte Text +sichtbar, so erscheint --All--. + +Die Sterne nahe dem Beginn der Moduszeile bedeuten, daß der Text +verändert wurde. Unmittelbar nach dem Besuchen oder Sichern einer +Datei, zeigt dieser Bereich keine Sterne, sondern Bindestriche. + +Der Teil der Moduszeile innerhalb der Klammern gibt Auskunft über die +Bearbeitungs-Modi, die Du derzeit verwendest. Der Ausgangsmodus ist +Fundamental -- der, den Du jetzt gerade benutzt. Er ist ein Beispiel +für einen Hauptmodus ("major mode"). + +Emacs besitzt viele verschiedene Hauptmodi. Einige von ihnen sind zum +Bearbeiten von verschiedenen Computersprachen und/oder Textformaten, +wie z.B. Lisp-Modus, Text-Modus, etc., gedacht. Es ist immer nur ein +Hauptmodus aktiv und sein Name kann dort gefunden werden, wo jetzt +"Fundamental" steht. + +Jeder Hauptmodus ändert das Verhalten einiger Befehle. So gibt es +z.B. Befehle zum Erstellen von Kommentaren in Programmen und da diese +in jeder Programmiersprache unterschiedlich aussehen, muß jeder +Hauptmodus diese Kommentare entsprechend vorbereiten. Jeder +Hauptmodus trägt den Namen eines entsprechenden Erweiterungsbefehls, so +kann man ihn wählen. So ist z.B. M-x fundamental-mode der Befehl, um +in den Fundamental-Modus zu schalten. + +Wenn Du deutschen Text bearbeitest, wie in diesem Fall, solltest Du +wahrscheinlich den Text-Modus verwenden. + +>> Tippe M-x text-mode. + +Keine Sorge, keiner der bis jetzt erlernten Befehle ändert Emacs +grundlegend. Du kannst aber beobachten, daß M-f und M-b Gänsefüßchen +jetzt als Teil von Worten betrachten. Zuvor, im Fundamental-Modus, +haben M-f und M-b diese als Wort-Separatoren betrachtet. + +Hauptmodi machen im Allgemeinen kleine Änderungen wie diese: die +meisten Befehle erfüllen den selben Zweck, aber sie funktionieren +etwas anders. + +Um Dokumentation über den aktuellen Hauptmodus zu bekommen, kannst Du +immer C-h m verwenden. + +>> Verwende C-u C-v ein- oder mehrmals um diese Zeile ans obere Ende + des Emacs-Fensters zu bekommen. +>> Tippe C-h m um den Unterschied zwischen Text- und Fundamental-Modus + zu sehen. +>> Tippe C-x 1 um die Dokumentation wieder verschwinden zu lassen. + +Hauptmodi heißen so, weil es auch Untermodi gibt. Untermodi sind keine +Alternativen zu Hauptmodi, sondern bewirken kleine Veränderungen +derselben. Jeder Untermodus kann für sich allein, unabhängig von +allen Haupt- und Untermodi, ein und ausgeschaltet werden. Du kannst +also jederzeit keinen, einen, oder beliebig viele Untermodi verwenden. + +Ein sehr nützlicher Untermodus, speziell für deutschen Text, ist der +Automatische-Zeilenumbruch-Modus (auto fill). Ist dieser Modus aktiv, +bricht Emacs überlange Zeilen automatisch zwischen zwei Worten um. + +Du kannst den Modus mit M-x auto-fill-mode einschalten. Ist +der Modus aktiv, kannst Du ihn mit M-x auto-fill-mode wieder +ausschalten. Wir sagen der Befehl "toggelt" den Modus. + +>> Tippe jetzt M-x auto-fill-mode. Dann füge "asdf " + wiederholt ein, bis die Zeile, zu lang geworden, umgebrochen + wird. Du mußt die Leerzeichen einfügen, weil Auto Fill Zeilen nur an + diesen Zeichen umbricht. + +Die Umbruchspalte steht üblicherweise bei 70 Zeichen, aber Du kannst +dies mit dem C-x f Befehl ändern. Die gewünschte Umbruchspalte wird +als numerisches Argument übergeben. + +>> Tippe C-x f mit einem Argument von 20. (C-u 2 0 C-x f). + Danach tippe etwas Text, um zu sehen wie Emacs die Zeilen jetzt bis + Spalte 20 füllt. Dann setze den Zeilenumbruch zurück auf 70. + +Machst Du Änderungen mitten im Absatz, so wird der automatische Umbruch +diesen nicht für Dich auffüllen. Um den Absatz aufzufüllen, tippe M-q +(META-q) während der Textzeiger in diesem Absatz steht. + +>> Bewege den Textzeiger in den vorherigen Absatz und tippe M-q. + + +* SUCHEN +-------- + +Emacs kann nach Zeichenketten ("Strings", dies sind Gruppen von +zusammenhängenden Buchstaben oder Worten) entweder vorwärts oder +rückwärts durch den Text suchen. Suchen nach einem String ist ein +Befehl, der den Textzeiger bewegt; er bewegt den Textzeiger zur +nächsten Stelle an der ein bestimmter String vorkommt. + +Der Emacs Suchbefehl unterscheidet sich von denen der meisten anderen +Editoren, da er "inkrementell" ist. Dies bedeutet, daß das Suchen +während der Eingabe des Such-Strings passiert. + +Der Befehl um eine Suche auszulösen ist C-s für vorwärtiges und C-r +für rückwärtiges Suchen. ABER WARTE! Versuche die Befehle noch nicht. + +Wenn Du C-s tippt, wirst Du den String "I-search" in der echo area +bemerken. Dies bedeutet, daß Emacs im inkrementellen Suchmodus auf +Deine Eingabe wartet. bricht die Suche ab. + +>> Nun tippe C-s um die Suche einzuleiten. LANGSAM, Buchstabe für + Buchstabe, tippe das Wort 'Textzeiger', mit Pausen dazwischen, + damit Du beobachten kannst, was mit dem Textzeiger basiert. + Du hast jetzt einmal nach "Textzeiger" gesucht. +>> Tippe erneut C-s, um nach dem nächsten Vorkommen von "Textzeiger" + zu suchen. +>> Nun tippe viermal und schau wie sich der Textzeiger + bewegt. +>> Tippe zum Abbrechen der Suche. + +Hast Du gesehen was passiert? Emacs, in der inkrementellen Suche, +versucht zu dem String zu springen, den Du bisher getippt hast. Um +zum nächsten Auftreten von "Textzeiger" zu gelangen, tippst Du einfach +wieder C-s. Gibt es kein weiteres Vorkommen, so piepst Emacs und +zeigt die Suche als fehlgeschlagen an. C-g bricht die Suche auch ab. + +ACHTUNG: Auf manchen Systemen wird C-s den Bildschirm anhalten und Du +wirst keine weitere Ausgabe von Emacs sehen. Dies bedeutet, daß auf +Deinem System eine Betriebssystemeigenschaft ("feature") namens +Flußsteuerung ("flow control") das C-s abfängt und nicht an Emacs +weitergibt. Tippe C-q, um den Effekt aufzuheben, so daß der Bildschirm +wieder reagiert. Schau dann unter "Spontaneous Entry to Incremental +Search" im Emacs Manual nach, um Hilfe im Umgang mit diesem "Vorzug" +("feature") zu bekommen. + +Wenn Du in der Mitte einer inkrementellen Suche tippst, wirst +Du bemerken, wie der letzte Such-Buchstabe entfernt wird und die Suche +an die letzte Stelle der Suche zurück springt. Nehmen wir z.B. an, Du +hast "T" getippt, um nach dem ersten Auftreten von "T" zu suchen. Wenn +Du jetzt "e" tippst, springt der Textzeiger zum ersten Auftreten von +"Te". Tippe nun . Dies entfernt das "e" von Such-String und +der Textzeiger springt zurück zum ersten Vorkommen von "T". + +Wenn Du mitten in einer Suche ein CONTROL- oder META-Zeichen tippst +(mit wenigen Ausnahmen -- Buchstaben mit Sonderbedeutung bei der +Suche, so wie C-s und C-r), wird die Suche abgebrochen. + +C-s startet eine Suche NACH der aktuellen Textzeiger Position. Willst +Du etwas früher im Text finden, tippe stattdessen C-r. All das was +wir über C-s gesagt haben gilt auch für C-r, nur daß die Suchrichtung +umgedreht wird. + + +* MEHRERE FENSTER +----------------- + +Einer der netten Vorzüge von Emacs ist es, daß Du mehr als jeweils ein +Fenster am Bildschirm darstellen kannst. + +>> Bewege den Textzeiger auf diese Zeile und tippe C-u 0 C-l. + +>> Nun tippe C-x 2, was das Emacs-Fenster zweiteilen wird. + Beide Fenster zeigen dieses Tutorial. Der Textzeiger bleibt im + oberen Fenster. + +>> Tippe C-M-v um beide Fenster zu rollen. + (Hast Du keine echte META-Taste, tippe Esc C-v.) + +>> Tippe C-x o ("o" für "other" oder anderes) um den Textzeiger ins + andere (untere) Fenster zu bewegen. +>> Verwende C-v und M-v im unteren Fenster um dieses zu rollen. + Lies diese Anweisungen im oberen Fenster weiter. + +>> Tippe C-x o um wieder zurück ins obere Fenster zu gelangen. + Der Textzeiger im oberen Fenster ist noch immer wo er vorher war. + +Du kannst weiterhin mit C-x o zwischen den Fenstern umschalten. Jedes +Fenster hat seine eigene Textzeiger-Position, aber nur ein Fenster +zeigt diese auch an. Alle üblichen Bearbeitungs-Befehle beziehen sich +auf das Fenster mit dem Textzeiger. Wir nennen es das "selektierte +Fenster". + +Der Befehl C-M-v ist sehr hilfreich wenn Du in einem Fenster Text +bearbeitest und das andere als Referenz verwendest. Du kannst den +Textzeiger immer im oberen Fenster lassen, und Dich mit C-M-v durch +das andere Fenster bewegen. + +C-M-v ist ein Beispiel für einen CONTROL-META-Zeichen. Wenn Du eine +echte META-Taste hast, kannst Du sowohl CTRL als auch META gedrückt +halten, während Du v tippst. Es kommt nicht darauf an ob CTRL oder +META zuerst gedrückt wird, weil beide dazu dienen um den gedrückten +Buchstaben zu verändern. + +Hast Du keine echte META-Taste und Du verwendest stattdessen ESC, ist +die Reihenfolge nicht egal: zuerst tippst Du ESC, gefolgt von CTRL-v; +CTRL-ESC v wird nicht funktionieren. Dies ist so weil ESC ein +eigenständiges Zeichen ist und keine Modifikations-Taste. + +>> Tippe C-x 1 (im oberen Fenster) um das untere Fenster loszuwerden. + +(Hättest Du C-x 1 im unteren Fenster getippt, wäre das obere Fenster +verschwunden. Merke Dir den Befehl mit "Behalte nur ein Fenster -- +das aktuelle Fenster.") + +Du mußt nicht denselben Buffer in beiden Fenstern anzeigen. Wenn Du +C-x C-f zum Finden einer Datei in einem Fenster verwendest, verändert +sich das andere Fenster nicht. Du kannst in jedem Fenster unabhängig +eine Datei finden. + +Hier ist eine andere Möglichkeit zwei Fenster zum Anzeigen +verschiedener Dinge zu nutzen: + +>> Tippe C-x 4 C-f gefolgt vom Namen einer Deiner Dateien. + Beende mit . Schau wie die angegebene Datei im unteren + Fenster erscheint. Auch der Textzeiger folgt dorthin. + +>> Tippe C-x o um ins obere Fenster zurückzukehren und beende das + untere Fenster mit C-x 1. + + +* REKURSIVE BEARBEITUNGSEBENEN +------------------------------ + +Manchmal wirst Du in sogenannte rekursive Bearbeitungsebenen +gelangen. Dies wird durch eckige Klammern in der Moduszeile angezeigt, +welche den Namen des Hauptmodus umgeben. Du könntest +z.B. [(Fundamental)] anstelle von (Fundamental) sehen. + +Um aus der rekursiven Bearbeitungsebene zu gelangen, tippst Du ESC +ESC ESC. Dies ist ein allgemeiner Ausstiegs- oder "get out"-Befehl. +Du kannst ihn auch verwenden, um unnötige Fenster loszuwerden und um +aus dem Minibuffer zu gelangen. + +>> Tippe M-x um in den Minibuffer zu gelangen; dann ESC ESC ESC um + auszusteigen. + +Du kannst nicht mit C-g aus einer rekursiven Bearbeitungs-Ebene +gelangen. Dies deshalb, weil C-g zum Beenden von Befehlen und +Argumenten INNERHALB von rekursiven Bearbeitungs-Ebenen dient. + + +* WEITERFÜHRENDE HILFE +---------------------- + +In diesen einführenden Übungen haben wir versucht, gerade genug +Information zu liefern, damit Du beginnen kannst mit Emacs zu +arbeiten. Emacs ist so umfangreich, daß es unmöglich wäre, alles +hier zu erklären. Allerdings solltest Du versuchen, mehr über Emacs zu +lernen, da er so viele nützliche Vorzüge besitzt. Emacs bietet +Befehle zum Lesen der Emacs-Befehlsdokumentation. Diese Hilfe- oder +"help" Befehle beginnen alle mit dem Buchstaben CONTROL-h, den wir auch +das "Hilfe-Zeichen" nennen. + +Um die Hilfeeinrichtungen zu verwenden, tippe C-h, gefolgt von einem +Buchstaben der angibt, welche Art von Hilfe Du willst. Wenn Du Dich +WIRKLICH "verirrst", tippe C-h ? und Emacs wird Dir mitteilen, welche +Art von Hilfe zur Verfügung steht. Hast Du C-h getippt, willst aber +keine Hilfe mehr, dann tippe einfach C-g zum Abbrechen des Befehls. + +(Einige Administratoren verändern die Bedeutung von C-h. Sie sollten +dies wirklich nicht tun, beschwere Dich also beim System +Administrator. In der Zwischenzeit, wenn C-h keine Mitteilung +bezüglich Hilfe am Fuß des Emacs-Fensters anzeigt, versuche M-x help +RET zu tippen.) + +Die einfachste Hilfe-Einrichtung ist C-h c. Tippe C-h, ein c und +einen Befehls-Buchstaben oder eine Sequenz davon und Emacs gibt Dir +eine ganz kurze Beschreibung des Befehls. + +>> Tippe C-h c C-p. + Die Mitteilung sollte etwa wie folgt aussehen + + C-p runs the command previous-line + +Dies teils Dir den "Namen der Funktion" mit. Funktions-Namen werden +hauptsächlich zum Spezialisieren und Erweitern von Emacs verwendet. +Aber da die Funktions-Namen etwas darüber aussagen was der Befehl tut, +können Sie auch als sehr kurze Dokumentation dienen -- genug um Dich +an Befehle zu erinnern die Du bereits gelernt hast. + +Zeichenerweiterte Befehle so wie C-x C-s und (wenn Du keine META- oder +EDIT- oder ALT-Taste hast) v sind nach C-h c auch erlaubt. + +Um mehr Hilfe zu einem Befehl zu bekommen verwende C-h k anstelle von +C-h c. + +>> Tippe C-h k C-p. + +Dies zeigt die Dokumentation der Funktion, als auch ihren Namen, in +einem eigenen Emacs-Fenster. Wenn Du mit dem Lesen fertig bist, tippe +C-x 1 um den Hilfetext loszuwerden. Du mußt dies nicht gleich tun. +Du kannst etwas bearbeiten, das sich auf den Hilfetext bezieht und +dann C-x 1 tippen. + +Hier sind einige andere nützliche C-h Möglichkeiten: + + C-h f Beschreibe eine Funktion. Du tippst den Namen der + Funktion + +>> Versuche C-h f previous-line. + Dies gibt Dir all die Information die Emacs zu der Funktion hat, welche + C-p implementiert. + + C-h a Befehls-Apropos. Tippe ein Schlüsselwort und Emacs listet + alle Befehle die es enthalten. + Diese Befehle können alle mit M-x aufgerufen werden. + Für einige Befehle listet das Befehls-Apropos eine + Buchstaben-Sequenz, die den Befehl ausführt. + +>> Tippe C-h a file. + +Dies zeigt in einem anderen Fenster eine Liste aller M-x Befehle die +"file" in ihrem Namen haben. Du wirst Buchstaben-Sequenzen wie C-x +C-f mit dem entsprechenden Befehl, wie etwa find-file, aufgelistet +sehen. + +>> Tippe C-M-v um das Hilfe Fenster zu rollen. Mache dies ein paar mal. + +>> Tippe C-x 1 um das Fenster loszuwerden. + + +* ZUM SCHLUß +------------ + +Merke Dir, daß Du Emacs mit C-x C-c endgültig beendest. Um vorübergehend +in eine Shell auszusteigen, so daß Du später zurückkehren kannst, +verwende C-z. (Unter X ikonifiziert dies den aktuellen Emacs-Rahmen.) + +Dieses Tutorial sollte für Anfänger verständlich sein, hast Du etwas +Unklares gefunden, schiebe die Schuld nicht auf Dich - beschwere Dich! + + +ANFERTIGEN VON KOPIEN +--------------------- + +Dieses Tutorial stammt, über eine lange Linie von Emacs Tutorials, von +dem von Stuart Cracraft für den ursprünglichen Emacs geschriebenen ab. +Ben Wing hat das Tutorial für X Windows erweitert. Martin Buchholz +und Hrvoje Niksic haben weitere Korrekturen für XEmacs beigetragen. +Ins Deutsche übertragen wurde es von Adrian Aichner +. + +Diese Version des Tutorials ist, wie GNU Emacs selbst, +urheberrechtlich geschützt und erlaubt die Verteilung von Kopien unter +bestimmten Voraussetzungen: + +Copyright (c) 1997, Adrian Aichner . + +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. + +Die Bedingungen zum Kopieren von Emacs sind komplexer, entsprechen +aber dem selben Geist. Bitte lies die Datei COPYING und gib doch +Kopien von GNU Emacs an Freunde weiter. Hilf mit bei der Beseitigung +von Software-Verhinderungspolitik ("Besitz") durch das Verwenden, +Schreiben and Weitergeben von kostenloser Software! diff --git a/etc/TUTORIAL.fr b/etc/TUTORIAL.fr new file mode 100644 index 0000000..4a0d27c --- /dev/null +++ b/etc/TUTORIAL.fr @@ -0,0 +1,1085 @@ +Copyright (c) 1997, Didier Verna . +Se reporter à la fin du document pour les conditions. + +Vous lisez actuellement la version française du tutoriel d'Emacs. + +Cette version a été produite à partir de la version anglaise, qui est +Copyright (c) 1985, 1996 Free Software Foundation, Inc. + + + + Bienvenue dans le tutoriel d'Emacs en Français !! + + +La plupart des commandes d'Emacs utilisent la touche +(également notée ou ), ou la touche . Sur certains +claviers, la touche s'appelle , ou autre chose (sur +les claviers des stations Sun par exemple, il s'agit de la touche à +gauche de la barre espace, celle avec un petit losange). Si vous ne +disposez pas de la touche , il est possible d'utiliser la touche + à la place. Afin de décrire les combinaisons de touches +disponibles dans Emacs, les conventions suivantes sont utilisées: + + C- signifie maintenir la touche enfoncée tout en tapant + le caractère . Ainsi, C-f signifie «maintenir la touche + enfoncée, et taper 'f'». + M- signifie maintenir la touche enfoncée tout en tapant le + caractère . Si la touche n'est pas disponible, + tapez d'abord , relâchez la, puis tapez . + +NOTE IMPORTANTE: pour quitter Emacs, tapez C-x C-c (deux caractères). + +Quand vous trouvez les caractères >> au début d'une ligne, cette ligne +vous donne des directives pour essayer une commande. Par exemple: +<> +>> Maintenant, tapez C-v («view next screen») pour passer à l'écran + suivant. (Faites le vraiment! Maintenez la touche + enfoncée et tapez 'v'). À partir de maintenant, refaites la même + chose quand vous avez fini de lire tout l'écran. + +Remarquez que quand vous changez d'écran, les deux dernières lignes de +l'écran précédent sont conservées, ceci afin de conserver un minimum +de continuité dans la lecture. + +Une des premières choses à savoir dans Emacs est comment se déplacer +dans un texte. Vous savez déjà comment changer d'écran avec C-v. Pour +revenir d'un écran en arrière, tapez M-v (maintenez la touche +enfoncée tout en appuyant sur 'v', ou encore tapez -v si vous ne +disposez pas de , ou ). + +>> Essayez de taper M-v puis C-v un certain nombre de fois. + + +* RÉSUMÉ +-------- + +Les commandes suivantes sont utiles pour voir des écrans entiers: + + C-v Passer à l'écran suivant + M-v Revenir à l'écran précédent + C-l Effacer l'écran et tout retracer, en mettant la ligne + où se trouve le curseur au centre (C'est bien la + touche 'L', pas la touche 'un' + +>> Trouvez le curseur et rappelez vous bien du texte qui l'entoure. + Tapez C-l + Trouvez le curseur à nouveau, et remarquez qu'il s'agit bien du + même texte autour de lui. + + +* MOUVEMENTS DE BASE DU CURSEUR +------------------------------- + +Passer d'un écran à l'autre, c'est bien ... mais comment faire pour se +déplacer dans le texte d'un seul écran? + +Il existe plusieurs manières de faire. La plus simple est d'utiliser +les commandes C-p, C-b, C-f et C-n. Chacune de ces commandes déplace +le curseur d'une ligne ou d'une colonne dans une direction donnée, +comme illustré sur le diagramme suivant: + + + Ligne précédente, C-p + : + : + En arrière, C-b .... Position courante .... En avant, C-f + : + : + Ligne suivante, C-n + +>> Déplacez le curseur au centre de ce diagramme en utilisant C-n ou + C-p, puis placez le au centre de l'écran avec C-l. + + +Pour vous rappeler ces commandes, pensez à leur signification en +anglais (et oui, pas en français ...): F pour Forward, B pour +Backward, N pour Next, P pour Previous. Retenez bien ces commandes, +car vous vous en servirez très souvent. + +>> Amenez le curseur sur cette ligne avec quelques C-n. + +>> Déplacez vous sur la ligne avec des C-f, puis vers le haut avec des + C-p. Remarquez ce que fait C-p quand le curseur est au milieu de la + ligne. + +Chaque ligne de texte se termine avec un caractère nommé Newline, qui +sert à séparer les lignes entre elles. La dernière ligne du fichier +est censée avoir un tel caractère à la fin (bien qu'Emacs n'ait pas +particulièrement besoin de sa présence). + +>> Placez vous au début d'une ligne, et tapez C-b. Cela devrait vous + placer à la fin de la ligne précédente. En fait, on a juste reculé + d'un caractère, à travers le caractère Newline. + +C-f vous déplace à travers Newline, exactement comme C-b. + +>> Faites encore quelques C-b, pour bien sentir comment se déplace le + curseur, puis des C-f pour retourner à la fin de la ligne, et pour + finir encore un C-f pour aller au début de la ligne suivante. + +Si vous vous déplacez en dehors de l'écran, le texte se déplace de +manière à ce que la position du curseur redevienne visible. Cette +opération est appelée «scrolling». + +>> Déplacez le curseur jusqu'en bas de l'écran, et remarquez ce qu'il + se passe. + +Si vous trouvez que le déplacement caractère par caractère est trop +lent, vous pouvez vous déplacer mot par mot. M-f et M-b vous déplacent +respectivement d'un mot en avant et en arrière. + +>> Tapez quelques M-f et M-b. + +Si vous êtes au milieu d'un mot, M-f vous déplace à la fin du mot. +Si vous êtes entre deux mots, M-f vous déplace à la fin du mot +suivant. M-b produit le même comportement, en sens inverse. + +>> Mélangez quelques M-f et M-b avec quelques C-f et C-b pour bien +noter les différences de comportement suivant l'endroit où vous êtes. + +Remarquez le parallèle qui existe entre C-f et C-b d'un côté, et M-f +et M-b de l'autre. Très souvent, les commandes Meta agissent sur des +unités de langage (mots, phrases, paragraphes etc.) tandis que les +commandes Control agissent sur des unités plus primaires (caractères, +lignes etc.). + +Ce parallèle existe encore entre les lignes et les phrases: C-a et C-e +vous positionnent au début ou à la fin d'une ligne, tandis que M-a et +M-e vous déplacent au début ou à la fin d'une phrase. + +>> Tapez quelques C-a et quelques C-e. + Puis tapez quelques M-a et quelques M-e. + +Remarquez que plusieurs C-a ne font rien, mais que plusieurs M-a +n'arrêtent pas de vous faire remonter de phrase en phrase. + +La position du curseur sur dans le texte est aussi appelée le +«point». En d'autres termes, le curseur à l'écran se trouve où le +point est dans le texte. + +Voici un résumé des commandes simples de déplacement, y compris celles +relatives aux mots et aux phrases: + + C-f En avant d'un caractère + C-b En arrière d'un caractère + + M-f En avant d'un mot + M-b En arrière d'un mot + + C-n Ligne suivante + C-p Ligne précédente + + C-a Début de ligne + C-e Fin de ligne + + M-a Début de phrase + M-e Fin de phrase + +>> Entraînez vous un peu à la pratique de ces commandes. Elles sont + très souvent utilisées. + +Deux autres commandes importantes pour le déplacement sont M-< +(Meta-Inférieur) et M-> (Meta-Supérieur). Elles vous déplacent +respectivement au début et à la fin de tout le texte. + +Sur la plupart des terminaux, '<' se trouve au dessus de la +virgule. Il faut donc utiliser la touche pour l'obtenir, sans +quoi vous obtiendrez M-'virgule'. + +>> Tapez M-< pour retourner au début du texte. + Puis tapez plusieurs C-v pour revenir ici. + +>> Tapez M-> pour aller à la fin du texte. + Puis tapez plusieurs M-v pour revenir ici. + +Vous pouvez aussi déplacer le curseur avec les flèches, si votre +clavier en possède. Il est cependant préférable d'utiliser C-b C-f C-n +et C-p pour trois raisons: premièrement, ces commandes fonctionnent +sur tous les terminaux. Deuxièmement, quand vous vous serez habitué à +Emacs, vous découvrirez que ces touches sont plus rapides car vous +n'avez pas besoin de déplacer vos mains loin des lettres du +clavier. Enfin, quand vous aurez l'habitude d'utiliser la touche +, vous apprendrez plus facilement d'autres commandes de +déplacement plus complexes. + +La plupart des commandes d'Emacs acceptent un argument numérique, qui +sert souvent comme compteur de répétition. Pour donner un tel argument +à une fonction, tapez C-u puis les chiffres, et enfin entrez la +commande. Si vous disposez de la touche (ou ou ), vous +pouvez aussi tapez directement les chiffres tout en maintenant la +touche enfoncée. Il est préférable d'apprendre la méthode C-u car +elle fonctionne sur tous les terminaux. + +Par exemple, C-u 8 C-f vous déplace de huit caractères en avant. + +>> Essayez d'utiliser C-n avec un argument numérique pour vous + déplacer d'un seul coup sur une autre ligne. + +Certaines commandes n'interprètent pas leur argument numérique comme +un compteur de répétition. C'est le cas de C-v et M-v qui déplacent le +texte d'autant de lignes plutôt que d'écrans entiers. Par exemple, C-u +4 C-v déroulera l'écran de 4 lignes. + +>> Essayez C-u 8 C-v. + +Cela a du déplacer l'écran de 8 lignes. Pour faire la manoeuvre +inverse, donnez le même argument a M-v. + +Si vous travaillez sous X Window, il y a sans doute une scrollbar sur +le côté droit de la fenêtre d'Emacs. Vous pouvez aussi vous en servir +avec la souris pour déplacer le texte. + +>> Essayer de cliquer avec le deuxième bouton au dessus du bouton de + la scrollbar. Cela devrait dérouler le texte jusqu'à une position + déterminée par l'endroit où vous avez cliqué. + +>> Cliquez maintenant avec le premier bouton à quelques lignes du + sommet dans la scrollbar. + + +* CONTRôLE DU CURSEUR AVEC UN TERMINAL X +---------------------------------------- + +Si vous travaillez sur un terminal X, vous trouverez surement plus +facile d'utiliser les flèches du pavé numérique pour déplacer le +curseur. Les quatre flèches fonctionnent exactement comme C-f C-b C-n +et C-p mais sont plus faciles à retenir. Vous pouvez aussi les +combiner avec la touche pour vous déplacer par bloc (par +exemple par paragraphe dans un texte). Si votre pavé numérique dispose +de touches (ou ) et , elles vous déplaceront +respectivement en début et en fin de ligne. Combinées avec la touche +, elles vous déplaceront respectivement en début et en fin de +fichier. Si enfin votre pavé numérique dispose des touches et +, celles-ci vous déplaceront d'écran en écran comme C-v et M-v. + +Toutes ces commandes acceptent des arguments numériques comme décrit +précédemment. + + +* QUAND EMACS EST BLOQUÉ +------------------------ + +Si jamais Emacs ne répond plus à vos ordres, vous pouvez l'arrêter en +toute sécurité en tapant C-g. C-g peut aussi être utilisé pour stopper +une commande qui met trop de temps à s'exécuter. + +C-g sert également à annuler un argument numérique, ou une commande +que vous ne voulez plus mener à terme. + +>> Tapez C-u 1 0 0 pour produire un argument numérique de 100, puis + tapez C-g. + Maintenant, tapez C-f. Le curseur doit finalement ne bouger que + d'un seul caractère, puisque vous avez annulé l'argument. + +Si vous avez tapé un par erreur, vous pourrez toujours l'annuler +avec C-g. + + +* COMMANDES DÉSACTIVÉES +----------------------- + +Quelques commandes sont «désactivées» pour empêcher les nouveaux +utilisateurs de les appeler par accident. + +Si vous tapez une de ces commandes, Emacs ouvrira un message vous +disant quelle était cette commande, et vous demandant si vous voulez +vraiment poursuivre son exécution. + +Si vous souhaitez effectivement l'essayer, appuyez sur la barre +espace. Sinon, répondez à la question en tapant 'n'. + +>> Tapez `C-x n p' (commande désactivée), puis répondez par 'n'. + + +* FENÊTRES +---------- + +Emacs peut afficher plusieurs fenêtres, chacune avec un texte +différent. Le terme «fenêtre» signifie ici une zone particulière dans +la fenêtre d'Emacs; il ne s'agit pas de fenêtres pouvant se superposer +dans votre système de multifenétrage. Emacs peut aussi ouvrir +plusieurs fenêtres X (appelées «frames» en jargon Emacsien), mais ceci +est décrit ultérieurement. + +Pour l'instant, mieux vaut ne pas trop s'occuper de plusieurs fenêtres +simultanées, sauf peut-être pour savoir les éliminer toutes sauf +une. Ceci est effectué par la commande C-x 1 ('un', pas 'L'). Cette +commande tue toutes les fenêtres sauf celle dans laquelle vous vous +trouvez, et s'arrange pour que la fenêtre restante occupe toute la place. + +>> Amenez le curseur ici, puis tapez C-u 0 C-l. + +(Rappelez vous que C-l recentre le curseur au milieu de la +fenêtre. Avec un argument numérique, elle place la ligne courante à +autant de lignes du sommet de la fenêtre. Avec 0 comme argument, on +réaffiche donc le texte, en plaçant la ligne courante en haut.) + +>> Tapez Control-x 2 + Notez que cette fenêtre diminue (de moitié), et qu'une nouvelle + fenêtre apparaît (avec le même texte). + +>> Tapez C-x 1 pour faire à nouveau disparaître la deuxième fenêtre. + + +* INSÉRER ET EFFACER +-------------------- + +Pour insérer du texte, il suffit de le taper. Tous les caractères que +vous pouvez voir à l'écran (A, %, - etc.) sont considérés comme du +texte et sont insérés. Pour insérer le caractère Newline, tapez + (retour chariot). + +Vous pouvez effacer le dernier caractère que vous avez tapé avec la +touche parfois nommée «Del». La touche peut +quelques fois être utilisée de la même manière, mais pas tout le +temps! + +Plus généralement, efface le caractère situé juste avant le +curseur. + +>> Maintenant, tapez quelques caractères, puis effacez-les avec + . Ne vous inquiétez pas pour le contenu de ce tutoriel, ce + que vous avez à l'écran n'est que votre copie personnelle du + fichier, pas le fichier d'origine. + +Si une ligne de texte devient trop grande, elle se poursuit sur une +seconde ligne. Un «Backslash» ('\') situé tout à fait à droite de la +ligne indique que celle-ci continue sur la ligne suivante. + +>> Insérez des caractères jusqu'à ce que la ligne devienne trop + grande, et notez l'apparition du '\'. + +>> Utilisez pour effacer des caractères jusqu'à ce que la + ligne reprenne une taille raisonnable. Vous remarquerez que le '\' + disparaît. + +Le caractère Newline s'efface exactement comme les autres. L'effacer +revient à ne faire qu'une seule ligne à partir de deux. Si cette +nouvelle ligne est trop grande, le '\' apparaîtra a nouveau. + +>> Déplacez le curseur au début d'une ligne et tapez . Le +caractère Newline sera effacé et cette ligne sera ajoutée à la ligne +précédente. + +>> Tapez pour réinsérer le Newline que vous avez effacé. + +Rappelez-vous bien que la plupart des commandes acceptent un argument +numérique, y compris l'insertion de caractères: + +>> Tapez C-u 8 *, vous obtiendrez "********". + +Vous connaissez maintenant les commandes de base pour insérer du texte +et corriger des erreurs. Toujours grâce aux touches et +, vous pouvez aussi effacer du texte par mot ou par ligne: + + efface le caractère juste avant le curseur + C-d efface le caractère juste après le curseur + + M- supprime le mot juste avant le curseur + M-d supprime le mot juste après le curseur + + C-k supprime tout du curseur jusqu'à la fin de ligne + M-k supprime tout du curseur jusqu'à la fin de phrase + + +Quand vous supprimez plus d'un caractère à la fois, Emacs sauvegarde le +texte pour vous donner la possibilité de le réintroduire. L'opération +de réintroduction s'appelle le «yanking». Vous pouvez réintroduire le +texte à la même place ou ailleurs. Vous pouvez même le réintroduire +plusieurs fois, pourquoi pas à des endroits différents. La commande de +«yanking» est C-y. + +Notez bien la différence entre «effacer» et «supprimer». Un texte +«supprimé» est sauvegardé, tandis qu'un caractère «effacé» ne l'est +pas. De même, les commandes effaçant juste des blancs ou des lignes +vides ne sauvegardent rien. + +>> Placez le curseur au début d'une ligne non vide. + Tapez C-k pour supprimer le texte sur cette ligne. +>> Tapez C-k une deuxième fois. Vous remarquerez que cette fois-ci, la + ligne elle-même est supprimée (le caractère Newline). + +C-k traite son argument numérique de manière spéciale: il supprime +autant de lignes Y COMPRIS LE CARACTÈRE NEWLINE. Taper C-k deux fois +de suite ne produirait pas le même résultat. + +>> Pour récupérer le texte dernièrement supprimé, tapez C-y. Celui-ci + sera placé où se trouve le curseur. + +Notez également que si vous faites plusieurs C-k à la suite, tout les +morceaux supprimés seront concaténés, et un seul C-y suffira à tout +ramener. + +>> Faites-le. C-k plusieurs fois, puis C-y. + +>> Déplacez le curseur à un autre endroit puis tapez à nouveau C-y. + Voilà comment on copie du texte! + +C-y restaure le dernier morceau de texte à avoir été supprimé, mais +les suppressions précédentes ne sont pas perdues pour autant. Après +avoir tapé C-y, la commande M-y remplace le texte restauré par l'avant +dernière suppression. Tapez à nouveau M-y et vous obtiendrez +l'avant-avant dernière suppression et ainsi de suite. Quand vous avez +récupéré le texte que vous cherchiez, rien de plus à faire: continuez +simplement votre édition. + +Si vous tapez M-y assez longtemps, vous retomberez sur la suppression +la plus récente. + +>> Supprimez une ligne, déplacez vous et supprimez-en une autre. + Tapez C-y pour récupérer la dernière ligne. + Puis tapez M-y, ce qui restaurera la première ligne supprimée. + Tapez encore M-y pour voir ce qu'il se passe, et continuez jusqu'à + récupérer à nouveau la deuxième ligne. + Si ça vous amuse, donnez des arguments positifs et négatifs à M-y. + + +* ANNULATION +------------ + +Si vous changez du texte, et que finalement vous décidez que ce +n'était pas une bonne idée, vous pouvez annuler les changements grâce +à la commande C-x u. + +C-x u annule les changements produits par la dernière commande. Taper +C-x u plusieurs fois annule de plus en plus de commandes précédentes. + +Il existe cependant quelques exceptions: les commandes qui ne changent +pas le texte ne comptent pas (par exemple les commandes de +déplacement). Les commandes qui insèrent juste un caractère sont +souvent regroupées jusqu'à une vingtaine, ceci pour réduire le nombre +de C-x u à taper ensuite. + +>> Supprimez cette ligne avec C-k, puis tapez C-x u. Elle devrait + revenir ... + +Une alternative à C-x u est C-_. C-x u existe car c'est plus facile à +taper sur certains claviers. Sur d'autres vous pouvez également +obtenir C-_ en tapant C-/. + +Enfin, la commande d'annulation accepte les argument numériques. + + +* FICHIERS +---------- + +Pour sauver votre texte, vous avez besoin de le mettre dans un +fichier, sans quoi il disparaîtra quand vous quitterez Emacs. On dit +«trouver» un fichier («finding»), ou encore «visiter» un fichier +(«visiting»), ou bien «ouvrir». + +Visiter un fichier revient à voir son contenu dans Emacs. Si vous +modifiez le texte du fichier dans Emacs, ces changements ne deviennent +pas permanent, sauf si vous «sauvez» le fichier. Cela permet de ne pas +avoir des fichiers à moitié modifiés sur votre système, à moins que +vous ne le souhaitiez vraiment. D'autre part, quand Emacs «sauve» un +fichier, il commence par copier l'ancienne version sous un nouveau nom +afin que vous puissiez toujours revenir en arrière. + +Regardez en bas de la fenêtre d'Emacs. Vous trouverez une ligne +contenant des tirets '-', et la chaîne de caractères +«Emacs: TUTORIAL.FRANCAIS». Cela vous donne le nom du fichier que vous +êtes en train de visiter. En ce moment, vous visitez le fichier +«TUTORIAL.FRANCAIS» qui correspond au Tutoriel d'Emacs, version +française. Ceci est votre copie personnelle du fichier. Pour chaque +fichier que vous visitez, son nom apparaît exactement à cet endroit. + +La plupart des commandes relatives aux fichiers sont des commandes à +deux caractères, commençant par C-x. Il y a toute une série de +commandes commençant par C-x, beaucoup concernant les fichiers et les +buffers, et longues de 2 caractères ou plus. + +Une autre chose importante pour visiter un fichier est que vous devez +spécifier le nom du fichier à visiter. On dit que cette commande «lis +un argument depuis le terminal». Dans le cas présent, l'argument est +le nom du fichier. Après avoir tapé la commande + +C-x C-f («find») + +Emacs vous demande son nom. Le nom que vous tapez apparaît tout en bas +de la fenêtre. Quand cette ligne sert à entrer des données de cette +manière, on l'appelle «minibuffer». Les commandes d'édition ordinaires +peuvent être utilisées pour éditer le nom du fichier. + +Pendant que vous êtes en train de taper le nom du fichier, vous pouvez +annuler la commande grâce à C-g. + +>> Tapez C-x C-f puis C-g. Cela annule le minibuffer ainsi que la + commande C-x C-f. Vous n'allez finalement pas visiter de fichier. + +Quand le nom du fichier est correct, tapez . La commande +prendra alors effet et ira chercher le fichier. Après avoir terminé la +saisie du nom, le minibuffer disparaît. + +Au bout d'un petit moment, le contenu du fichier apparaît et vous +pouvez commencer votre édition. Quand vous êtes satisfait des +changements apportés au texte, tapez + +C-x C-s («save») + +Cette commande copie le texte contenu dans Emacs vers le fichier +lui-même. La première fois que vous le faites, Emacs sauvegarde la +version initiale du fichier sous un autre nom, en ajoutant un '~' à la +fin du nom. + +Quand la sauvegarde est terminée, Emacs affiche le nom du fichier dans +lequel on vient d'écrire. Il est fortement conseillé de sauver assez +souvent les fichiers pour éviter de tout perdre en cas de crash +système (non pas qu'Emacs ne puisse jamais crasher lui-même ...). + +>> Tapez C-x C-s pour sauver votre copie du tutoriel. + Vous devriez voir apparaître «Wrote ...TUTORIAL.FRANCAIS" tout en bas + de la fenêtre. + +NOTE: Sur certains systèmes, C-x C-s bloque l'écran et Emacs ne dit +plus rien. Cela signifie qu'une «fonctionnalité» système que l'on +appelle le «flow control» intercepte le C-s et l'empêche de parvenir à +Emacs. Pour débloquer la situation, tapez C-q. Reportez-vous dans ce +cas à la section «Spontaneous Entry to Incremental Search» du manuel +d'Emacs pour plus d'information sur cette ... «particularité». + +Vous pouvez visiter des fichiers existant, mais aussi des fichiers qui +n'existent pas. C'est en fait comme cela que l'on crée un nouveau +fichier dans Emacs. Initialement, le fichier sera inexistant, et la +première fois que vous demanderez à Emacs de le sauver, il créera +effectivement le fichier correspondant. + + +* BUFFERS +--------- + +Si vous ouvrez un nouveau fichier avec C-x C-f, le précédent reste +dans Emacs. Pour retravailler dessus, retapez simplement C-x C-f. De +cette manière, vous pouvez avoir un nombre important de fichiers +ouverts dans Emacs. + +>> Créez un fichier nommé «foo» en tapant C-x C-f foo. + Insérez un peu de texte puis sauvez-le en tapant C-x C-s. + Enfin, tapez C-x C-f TUTORIAL.FRANCAIS pour revenir ici. + +Emacs conserve le contenu de chaque fichier dans un objet appelé +«buffer». Visiter un fichier revient à créer un nouveau buffer et y +placer le contenu du fichier. Pour obtenir la liste des buffers qui +existent actuellement dans votre session Emacs, tapez la commande +suivante: + +>> Tapez C-x C-b pour obtenir la liste des buffers. + +Remarquez que chaque buffer a un nom, et qu'il peut aussi avoir un nom +de fichier dans le cas où un fichier lui est associé. Il extsite des +buffers non attachés à des fichiers, par exemple, le buffer nommé +«*Buffer List*». C'est le buffer qui a été créé par la commande C-x +C-b. Par contre, TOUT texte que vous pouvez voir dans Emacs appartient +à un buffer. + +>> Tapez C-x 1 pour faire disparaître le buffer contenant la liste des + buffers. + +Quand vous éditez un fichier, puis que vous en ouvrez un autre, le +fichier précédent n'a pas été sauvé. Tous les changements effectués +sont conservés dans le buffer associé au fichier, mais l'ouverture +et l'édition d'un nouveau fichier n'ont aucun effet sur le +premier. Vous constatez donc qu'il serait ennuyeux d'avoir à revenir +au premier fichier pour le sauver avec C-x C-s. Pour éviter ce +désagrément, il existe une autre commande: + + C-x s (Sauver certains buffers) + +C-x s vous demandera, pour chaque buffer contenant des modifications +non sauvegardées, si vous désirez le sauver ou non. + +>> Insérez une ligne de texte, puis tapez C-x s + Emacs vous demandera si vous désirez sauver le buffer nommé + TUTORIAL.FRANCAIS. + Répondez «oui» à la question en tapant 'y'. + + +* UTILISATION DES MENU +---------------------- + +Si vous travaillez sur un terminal X, vous avez déjà remarqué une +barre de menu en haut de la fenêtre d'Emacs. Cette barre de menu vous +permet d'accéder à la plupart des commandes d'Emacs comme celles +permettant d'ouvrir ou de sauver un fichier. L'utilisation de la barre +de menu vous semblera plus facile au début, puis quand vous serez +habitué à Emacs, il vous sera facile d'utiliser les commandes au +clavier, car chaque commande figurant dans un menu affiche également +son équivalent clavier sur le bouton. + +Remarquez qu'il existe des boutons n'ayant aucun équivalent +clavier. Par exemple, le menu «Buffers» donne la liste de tous les +buffers par ordre de plus récente utilisation. Vous pouvez passer d'un +buffer à l'autre en les sélectionnant par leur nom dans ce menu. + + +* UTILISATION DE LA SOURIS +-------------------------- + +Quand vous travaillez sous X, Emacs utilise pleinement la souris. Vous +pouvez vous positionner dans le texte en cliquant avec le bouton de +gauche à l'endroit souhaité, vous pouvez sélectionner du texte en +déplaçant la souris avec le bouton de gauche enfoncé, ou bien en +cliquant le bouton de gauche au début de la portion à sélectionner, +puis en Shift-cliquant à l'autre bout. + +Pour supprimer un morceau de texte, utilisez C-w ou le bouton «Cut» du +menu «Edit». Notez bien que ces deux commandes ne sont pas +équivalentes: C-w ne fait que supprimer le texte en le sauvegardant de +manière interne (comme C-k), mais «Cut» sauvegarde en plus le texte +dans le clipboard de X Window, où il pourra être accédé par d'autres +applications. + +Pour récupérer du texte en provenance d'autres applications, utilisez +«Paste» du menu «Edit». + +Le bouton du milieu sert principalement à choisir des objets visibles +dans les fenêtres d'Emacs. Par exemple, si vous entrez dans «Info» (le +système de documentation en ligne) en tapant C-h i ou en utilisant le +menu «Help», vous pourrez suivre un lien surligné en cliquant dessus +avec le bouton du milieu. De la même manière, si vous commencez à +taper un nom de fichier après avoir fait C-x C-f, et que vous appuyez +sur en cours de route, Emacs vous ouvrira une fenêtre avec +toutes les complétions possibles, et vous pourrez en sélectionner une +grâce au bouton du milieu. + +Le bouton droit fait apparaître un menu. Le contenu de ce menu varie +en fonction du mode dans lequel vous vous trouvez, et contient en +général quelques commandes fréquemment utilisées. + +>> Cliquez avec le bouton de droite pour voir le menu en question. + +Si vous relâchez le bouton, le menu disparaît. + + +* EXTENSION DE L'ENSEMBLE DES COMMANDES +--------------------------------------- + +Il existe bien plus de commandes dans Emacs que l'on ne pourrait en +associer aux touches et . Pour remédier à cela, Emacs +utilise la commande X (eXtension) qui se présente sous deux aspects: + + C-x Extension par caractère (suivit d'un caractère). + M-x Extension par nom (suivit d'un nom de commande). + +Ces commandes, bien que très utiles, sont utilisées moins souvent que +celles que vous avez déjà apprises. Vous en connaissez déjà deux: les +commandes relatives aux fichiers (C-x C-f et C-x C-s). Un autre +exemple est la commande pour quitter définitivement Emacs, C-x C-c (ne +vous inquiétez pas des éventuels changements qui seraient perdus, C-x +C-c vous propose de sauver ces changements avant de tuer Emacs). + +C-z est la commande qui vous permet de quitter Emacs «temporairement», +pour que vous puissiez y revenir plus tard. + +Sur les systèmes le permettant, C-z «suspend» Emacs, ce qui signifie +que l'on retourne au shell sans tuer Emacs. Dans la plupart des cas, +vous pouvez revenir à Emacs en tapant 'fg' ou '%emacs'. + +Sur les systèmes ne permettant pas la suspension de processus, cette +commande créé un sous-shell qui continue à exécuter Emacs, vous +donnant ainsi la possibilité de faire tourner d'autres programmes et +revenir à Emacs plus tard. Dans ce cas, la commande shell 'exit' est +la manière habituelle de retourner au sous-shell d'Emacs. + +Vous utiliserez C-x C-c quand le moment sera venu de vous déloguer ou +d'éteindre la machine. C'est aussi la bonne manière de sortir d'Emacs +si celui-ci a été lancé depuis un maileur ou tout autre utilitaire, +ceux-ci ne sachant pas forcément comment gérer les suspensions. Dans +des circonstances où vous ne vous déloguez pas, mieux vaut suspendre +par C-z au lieu de sortir véritablement d'Emacs. + +Il existe de nombreuses commandes sous C-x. Voici celles que vous avez +apprises jusque là: + + C-x C-f Visiter un fichier (Find File). + C-x C-s Sauver un fichier (Save File). + C-x C-b Lister les buffers (List buffers). + C-x C-c Quitter Emacs (Quit Emacs). + C-x u Annuler Opération (Undo). + +Les commandes étendues par nom sont des commandes utilisées très peu +souvent, ou disponibles seulement sous certains modes. Par exemple, la +commande «replace-string» substitue globalement une chaîne de +caractères par une autre. Si vous tapez M-x, Emacs vous affichera M-x +en bas de la fenêtre et vous pourrez alors taper le nom d'une +commande, ici replace-string. Tapez simplement 'repl s ' +et Emacs complétera le nom pour vous. Terminez le nom avec + +La commande replace-string requiert deux arguments: la chaîne à +remplacer et la chaîne de remplacement. Terminez chacune de ces +chaînes par . + +>> Déplacez le curseur sur la ligne blanche en dessous de ce + paragraphe, puis tapez + M-x replsRemarquezNotez. + + Remarquez comme cette ligne a changé: le mot R-e-m-a-r-q-u-e-z a + été remplacé par N-o-t-e-z partout où il est apparu après le + curseur. + + +* SAUVEGARDE AUTOMATIQUE +------------------------ + +Si votre système crashe alors que certaines modifications n'étaient +pas sauvées, vous perdez des donnés. Pour remédier à ce problème, +Emacs sauvegarde périodiquement tous vous fichiers, et cela de manière +automatique. Ce fichier de sauvegarde est appelé «auto save». Son nom +commence et se termine par un '#'. Par exemple, un fichier auto save +de 'hello.c' a pour nom '#hello.c#'. Quand vous sauvez le fichier de +manière normale, le fichier auto save est effacé. + +Si votre ordinateur crashe, vous pouvez restaurer la sauvegarde en +ouvrant le fichier normalement (le VRAI fichier, pas l'auto save), +puis en tapant M-x recover-file. Répondez 'yes' à la +question. + + +* ZONE D'ÉCHO +------------- + +Quand Emacs constate que vous tapez lentement, il vous montre ce que +vous avez tapez en bas de la fenêtre, dans la zone d'écho («echo +area»). Cette zone contient la dernière ligne de la fenêtre d'Emacs. + + +* LIGNE DE MODE +--------------- + +La ligne juste au dessus de la zone d'écho s'appelle ligne de mode +(«modeline»). Elle dit actuellement quelque chose comme ça: + +--**-XEmacs: TUTORIAL.FRANCAIS (Fundamental)--L752--67%--------- + +Cette ligne fournit des renseignements utiles sur le status d'Emacs et +le texte que vous éditez. + +Vous connaissez déjà la signification du nom de fichier: c'est celui +que vous êtes en train d'éditer. -xx%- indique le pourcentage de texte +situé au dessus du curseur. Si vous pouvez voir le début du fichier à +l'écran, --Top-- sera indiqué au lieu de --00%--. Si le bas du fichier +est visible, il y aura --Bot-- à la place. Si votre texte est tout +entier contenu dans la fenêtre, vous verrez --All--. + +Les étoiles '*' au début signifient que vous avez fait des changements +au texte. Quand vous ouvrez le fichier, ou après l'avoir sauvé, il n'y +aura plus d'étoiles, mais juste des tirets. + +La partie entre parenthèses vous indique dans quel mode d'édition vous +vous trouvez. Le défaut (que vous utilisez en ce moment) est le mode +«Fundamental». C'est un exemple de Mode Majeur («major mode»). + +Il existe de nombreux modes majeurs. Certains sont faits pour éditer +différents langages, différentes sortes de texte, du Lisp, du C etc. +Il ne peut y avoir qu'un mode majeur actif à la fois, et son nom se +trouve sur la ligne de mode (là ou vous voyez «Fundamental» en ce +moment). + +Chaque mode fait certaines commandes se comporter différemment. Par +exemple, la commande pour créer des commentaires dans un programme +tient compte des différents caractères de commentaire des +langages. Chaque mode majeur est le nom d'une commande étendue. Par +exemple la commande M-x fundamental-mode vous place en mode +fondamental. + +Si vous voulez éditer du texte en français, vous devriez plutôt +choisir le mode Text. + +>> Tapez M-x text-mode + +Pas d'inquiétude: les commandes que vous avez apprises jusqu'ici ne +sont pas radicalement différentes d'un mode à l'autre. Mais vous +pouvez constater par exemple que M-b et M-f traitent les apostrophes +comme faisant partie des mots. Auparavant, ces caractères étaient +considérés comme des séparateurs de mots. En général, les modes +majeurs ne changent que très peu le comportement des commandes +habituelles. + +Pour voir la documentation du mode majeur courant, tapez C-h m. + +>> Utilisez C-u C-v pour amener cette ligne vers le haut de l'écran. +>> Tapez C-h m, pour voir les différences entre les mode Fundamental + et Text. +>> Tapez 'q' pour faire disparaître la documentation. + +Les modes majeurs sont appelés «majeurs» parce qu'il y en a aussi des +«mineurs». Les modes mineurs n'altèrent que partiellement le +comportement de tel ou tel mode majeur. Ils peuvent être activés ou +désactivés indépendamment du mode majeur courant. Vous pouvez en +utiliser autant que possible en même temps. + +Un mode mineur très utile pour éditer du texte est le mode +«Auto Fill». Quand ce mode est activé, Emacs coupe lui-même les lignes +si vous tapez du texte trop long pour être contenu sur une seule. + +Pour activer ce mode, tapez M-x auto-fill-mode. Cette commande +sert à le désactiver ou à l'activer selon son status actuel; elle +intervertit son état d'activation. + +>> Tapez M-x auto-fill-mode. Insérez maintenant une quantité + de «aslidfhw» jusqu'à voir que votre ligne se divise + automatiquement en deux, à un endroit où il y avait un espace. + +La marge est en général à 70 caractères, mais vous pouvez la changer +grâce à la commande C-x f. Donner la marge requise comme argument +numérique. + +>> Tapez C-x f avec un argument de 20 (C-u 2 0 C-x f). + Tapez du texte jusqu'à ce que la ligne soit coupée, puis replacez + la marge à 70. + +Si vous faites des changements au milieu d'un paragraphe, le mode Auto +Fill ne recoupera pas les lignes tout seul. Pour réajuster les lignes +d'un tel paragraphe, tapez M-q avec le curseur n'importe où dans le +paragraphe. + +>> Déplacez le curseur dans le paragraphe précédent, et tapez M-q. + + +* RECHERCHE +----------- + +Emacs est capable de rechercher des chaînes de caractères aussi bien +en avant qu'en arrière dans un texte. Ces commandes sont en fait des +commandes de déplacement du curseur. Elles déplacent le curseur au +prochain (ou précédent) endroit ou la chaîne apparaît. + +La commande de recherche d'Emacs est un peu différente de celle des +autres éditeurs de texte dans la mesure où elle est incrémentale: la +recherche intervient au fur et à mesure que vous tapez la chaîne à +rechercher. + +Pour démarrer une recherche, tapez C-s (en avant) ou C-r (en +arrière). MAIS PAS TOUT DE SUITE !! Attendez un peu pour tester ... + +Après avoir tapé C-s, vous constaterez que la chaîne «I-search» +apparaît comme prompt dans la zone d'écho. Cela vous indique qu'Emacs +est en mode de recherche incrémentale, et qu'il attend que vous +entriez la chaîne à rechercher. termine la chaîne. + +>> Tapez C-s, et entrez LENTEMENT, une lettre à la fois, le mot + «curseur», en regardant bien ce qu'il se produit. + À ce stade, vous avez cherché le mot «curseur» une fois. +>> Tapez C-s à nouveau, pour chercher la prochaine occurrence du mot. +>> Maintenant, tapez quatre fois et regardez comment le + curseur se déplace. +>> Tapez pour terminer la recherche. + +En mode incrémental, Emacs recherche ce que vous avez tapé jusqu'ici, +en surlignant les occurrences trouvées. Si aucune (nouvelle) occurrence +n'existe, C-s produira un «bip», et la zone d'écho affichera +«failing». C-g terminerait aussi bien la recherche. + +NOTE: Sur certains systèmes, C-x C-s bloque l'écran et Emacs ne dit +plus rien. Cela signifie qu'une «fonctionnalité» système que l'on +appelle le «flow control» intercepte le C-s et l'empêche de parvenir à +Emacs. Pour débloquer la situation, tapez C-q. Reportez-vous dans ce +cas à la section «Spontaneous Entry to Incremental Search» du manuel +d'Emacs pour plus d'information sur cette ... «particularité». + +Si vous êtes au milieu d'une recherche incrémentale et que vous tapez +, vous constaterez que le dernier caractère de la chaîne est +effacé, et que Emacs retourne à l'occurrence précédente. Si d'autre +part vous tapez un caractère ou (mises à part +quelques exceptions comme les caractères spéciaux pour la recherche, +C-s et C-r), la recherche sera terminée. + +Rappelez vous que si C-s cherche une chaîne APRÈS le curseur, C-r la +recherche AVANT. Tout ce que nous venons de dire sur C-s s'applique à +C-r. + + +* FENÊTRES MULTIPLES +-------------------- + +Un des avantages d'Emacs est que vous pouvez afficher plusieurs +fenêtres à la fois sur l'écran. + +>> Déplacez le curseur sur cette ligne, et tapez C-u 0 C-l ('L' pas '1') + +>> Maintenant tapez C-x 2 pour obtenir deux fenêtres. + Les deux fenêtres affichent le tutoriel. Le curseur reste en haut. + +>> Tapez C-M-v (ou C-v) pour dérouler la fenêtre du bas. + +>> Tapez C-x o (o pour ôtre ...) pour placer le curseur dans la + fenêtre du bas. +>> Utilisez C-v et M-v pour dérouler la fenêtre. + Continuez de lire dans celle du haut. + +>> Tapez C-x o pour retourner dans la fenêtre du haut. + Le curseur est exactement à la même place que quand vous aviez + quitté cette fenêtre. + +Vous pouvez continuer d'utiliser C-x o pour passer d'une fenêtre à +l'autre. Chaque fenêtre a sa propre position du curseur, mais une +seule fenêtre a la fois contient réellement le curseur. Toutes les +commandes ordinaires d'édition prennent effet dans la fenêtre qui +contient le curseur. On dit que cette fenêtre est «sélectionnée». + +La commande C-M-v est très utile quand vous éditez un texte dans une +fenêtre et que vous vous servez d'une autre en guise de +référence. Vous pouvez avancer dans l'autre grâce à C-M-v. + +C-M-v (ou C-v si vous n'avez pas de touche ) est un +exemple de Control-Méta caractère. L'ordre dans lequel les touches + et sont enfoncées n'a pas d'importance. Ce sont juste +des modificateurs. Par contre, n'est pas un modificateur, donc +vous êtes obligés de taper d'abord , et C-v ensuite. + +>> Tapez C-x 1 dans la fenêtre du haut pour éliminer celle du bas. + +C-x 1 élimine en fait toutes les fenêtres non sélectionnées. + +Les fenêtres peuvent bien entendu contenir des buffers différents. Si +vous utilisez C-x C-f pour ouvrir un fichier dans l'une des fenêtres, +l'autre ne change pas. Elles sont totalement indépendantes. + +Voici une autre manière d'ouvrir un fichier dans l'autre fenêtre: + +>> Tapez C-x 4 C-f suivit du nom d'un fichier, puis . + Vous verrez le fichier apparaître dans l'autre fenêtre. Le curseur + ira également dans cette fenêtre. + +>> Tapez C-x o pour remonter à la fenêtre du haut, puis C-x 1 pour + éliminer celle du bas. + + +* NIVEAUX D'ÉDITION RÉCURSIFS +----------------------------- + +De temps en temps, vous vous trouverez dans ce qu'on appelle des +niveaux d'édition récursifs. Ceci est indiqué dans la ligne de mode +par des crochets autour des parenthèses qui englobent le nom du mode +majeur. Par exemple, vous pouvez voir [(Fundamental)] au lieu de +(Fundamental). + +Pour sortir d'un niveau récursif d'édition, tapez +. C'est un «siège éjectable» à usage multiple. Vous pouvez aussi +l'utiliser pour sortir du minibuffer ou éliminer des fenêtres +superflues. + +>> Tapez M-x pour vous rendre dans le minibuffer, puis tapez + pour en sortir. + +Il n'est pas possible d'utiliser C-g pour sortir d'un niveau récursif +d'édition. La raison en est que C-g sert à annuler des commandes au +sein même d'un niveau récursif d'édition. + + +* POUR OBTENIR PLUS D'AIDE +-------------------------- + +Dans ce tutoriel, nous avons essayé de vous fournir assez de +connaissance pour commencer à utiliser Emacs. Emacs est tellement +riche en possibilités qu'il serait impossible de tout dire +ici. Cependant, vous souhaiterez surement à un moment ou un autre +avoir plus de renseignements sur ses énormes possibilités. Emacs +comprend entre autres des commandes d'aide sur sa propre +utilisation. Toutes ces commandes d'aide commencent par le préfixe +C-h, le «caractère d'aide». + +Typiquement, vous tapez C-h, puis un caractère indiquant quelle aide +vous souhaitez obtenir. Si vous êtes VRAIMENT perdu, tapez C-h ? et +Emacs vous indiquera quelles sortes d'aide il peut vous fournir. Si +vous ne désirez finalement pas d'aide après avoir tapé C-h, tapez +simplement C-g. + +(Quelques sites redéfinissent la commande C-h. Cela ne devrait vraiment +pas être fait, donc allez vous plaindre à votre administrateur système. +Si C-h ne marche pas, tapez M-x help.) + +L'aide de base est C-h c. Tapez C-h c puis une commande (même une +séquence comme C-x f), et Emacs vous donnera une brève description de +la commande en question. + +>> Tapez C-h c C-p. + Le message doit ressembler à quelque chose comme + + C-p runs the command previous-line + +Cela vous donne le «nom de la fonction». Les noms de fonctions sont +principalement utilisés pour customiser Emacs, mais comme en général +ils sont choisi de manière à indiquer ce que fait la commande, ils +peuvent servir de courte documentation (au moins pour vous rappeler +les commandes que vous avez déjà apprises). + +Pour de plus amples informations sur les commandes, utilisez C-h k au +lieu de C-h c. + +>> Tapez C-h k C-p. + +Ceci affiche la documentation sur la fonction, ainsi que son nom dans +une autre fenêtre. Quand vous avez fini de lire, tapez 'q' pour +éliminer la fenêtre d'aide. + +Voici d'autres aides utiles: + + C-h f Décrire une fonction. Vous donnez son nom. + +>> Tapez C-h f previous-line. + Cela vous donne toute l'information dont Emacs dispose sur la + fonction appelée par la commande C-p. + + C-h a Hyper Apropos. Tapez un mot-clé et Emacs vous + affichera toutes les fonctions ou variables contenant + ce mot-clé. Les commandes que vous pouvez appeler + grâce à M-x ont un astérisque à gauche de leur nom. + +>> Tapez C-h a newline. + +Tapez pour effacer l'à-propos, ou cliquez avec le bouton du +milieu sur un nom pour obtenir l'aide sur cette fonction ou variable. + + +* CONCLUSION +------------ + +Rappelez-vous bien, pour quitter définitivement Emacs, tapez C-x +C-c. Pour quitter temporairement (et pour pouvoir revenir), tapez C-z +(sous X Windows, C-z iconifie la fenêtre). + +Ce tutoriel est fait pour être compréhensible par tout nouvel +utilisateur. Donc si quelque chose n'est pas clair, n'hésitez pas à +vous plaindre !! + +Si vous avez plus particulièrement des remarques à faire sur la +version française, vous pouvez aussi me contacter directement +(Didier Verna ). + + +COPIES / DISTRIBUTION +--------------------- + +Un peu d'histoire ... + +* Le premier tutoriel pour l'Emacs d'origine fut écrit par Stuart + Cracraft. +* Ben Wing l'a mis à jour pour X Windows. +* Martin Buchholz et Hrvoje Niksic y ont apporté des corrections pour + XEmacs. +* J'en (Didier Verna) ai fait une version française un beau jour de 1997. + +Cette version du tutoriel, tout comme Emacs, est copyrightée, et vous +est fournie avec la permission d'en distribuer des copies sous +certaines conditions (je laisse la notice du copyright en anglais): + +Copyright (c) 1997, Didier Verna. + + 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. + +Les conditions pour copier Emacs lui-même sont plus complexes, mais +dans le même état d'esprit. Vous êtes conviés à lire le fichier +COPYING et à distribuer Emacs à vos amis. Aidez-nous à tuer +l'obstructionnisme logiciel en utilisant, écrivant et partageant du +logiciel libre! + diff --git a/etc/TUTORIAL.hr b/etc/TUTORIAL.hr new file mode 100644 index 0000000..7acd515 --- /dev/null +++ b/etc/TUTORIAL.hr @@ -0,0 +1,1128 @@ +Copyright (c) 1985, 1996 Free Software Foundation, Inc. Uvjeti +kopiranja na kraju. + +Ovo su osnovne upute za Emacs. + +Opæenito, Emacsove naredbe sadr¾e tipku CONTROL (ponekad oznaèenu CTRL +ili CTL) ili tipku META. Na nekim tipkovnicama tipka META je oznaèena +kao ALT ili EDIT, ili ne¹to treæe (na primjer, na Sunovim tipkovnicama +karo znak lijevo od razmaknice je META). Ako nemate tipku META, +umjesto nje mo¾ete koristiti ESC. Da ne pi¹emo META ili CONTROL svaki +put kad mislimo na prefiksnu tipku, koristit æemo sljedeæe skraæenice: + + C- znaèi dr¾eæi tipku CONTROL, stisnite znak . Tako bi + C-f bilo: Dr¾eæi tipku CONTROL, napi¹ite f. + M- znaèi dr¾eæi tipku META, pritisnite . Ako nema tipke + META, pritisnite , otpustite ga, i napi¹ite znak + . + +Napomena: za izlazak iz Emacsa, utipkajte C-x C-c. (Dva znaka.) +Znakovi ">>" na lijevom rubu naznaèuju uputstva da poku¹ate koristiti +neku naredbu. Na primjer: +<> +>> Sad utipkajte C-v za pomak na sljedeæi ekran. + (samo naprijed, uèinite to tako da dr¾ite tipku control i + pritisnite 'v'). Od sad, ovo trebate napraviti kad god zavr¹ite + sa èitanjem stranice teksta. + +Uoèite dva reda koja se preklapaju kad se pomaknete s ekrana na ekran; +preklapanje osigurava kontinuitet koji vam olak¹ava èitanje teksta. + +Prva stvar koju trebate znati jest kako se micati s mjesta na mjesto u +tekstu. Veæ znate kako se pomaknuti ekran naprijed, pomoæu C-v. Da +biste se pomakli ekran natrag, pritisnite M-v (dr¾ite tipku META i +pritisnite v, ili upi¹ite v ako nemate tipke META, EDIT ili ALT). + +>> Poku¹ajte tipkati M-v, zatim C-v, nekoliko puta. + + +* SA®ETAK +--------- + +Sljedeæe naredbe su korisne za pregledavanje stranica teksta: + + C-v Pomièe stranicu naprijed + M-v Pomièe stranicu natrag + C-l Bri¹e ekran, i ponovno iscrtava sve, stavljajuæi tekst + pokraj kursora u sredinu. + (to je control-L, a ne control-1.) + +>> Naðite kursor, i pogledajte tekst pokraj njega. + Sada stisnite C-l. + Opet naðite kursor, i uoèite da se pokraj kursora nalazi isti + tekst. + + +* OSNOVE KONTROLE KURSORA +------------------------- + +Pomaci s ekrana na ekran su korisni, ali kako se pomaknuti na pojedino +mjesto u tekstu na ekranu? + +To mo¾ete uèiniti na nekoliko naèina. Najosnovniji naèin je +upotrijebiti naredbe C-p, C-b, C-f i C-n. Svaka od ovih naredbi +pomièe kursor jedan redak ili stupac u pojedinom smjeru. Evo tablice +koja pokazuje ove èetiri naredbe i smjerove u kojem pomièu. + + Prethodni red, C-p + (eng. previous line) + : + : + Natrag, C-b .... Trenutni polo¾aj kursora .... Naprijed, C-f + (eng. backward) : (eng. forward) + : + Sljedeæi red, C-n + (eng. next line) + +>> Pomaknite kursor do retka u sredini tablice koristeæi C-n i C-p. + Tada stisnite C-l da vidite cijelu tablicu u sredi¹tu ekrana. + +Ove su naredbe temeljene na engleskim mnemonicima: P za previous, N za +next, B za backward i F za forward. Ovo su osnovne naredbe za +pomicanje kursora, i s vremenom æete ih SVE koristiti, pa bi bilo vrlo +korisno da ih sada nauèite. + +>> Stisnite C-n nekoliko puta, tako da dovedete kursor do ovog retka. + +>> Pomaknite se na red s C-f-ovima, i onda gore do C-p-ova. + Uoèite ¹to C-p radi kad je kursor na sredini reda. + +Svaki red teksta zavr¹ava znakom Newline (novi red), èime ga se odvaja +od sljedeæeg reda. Zadnji red u datoteci bi trebao imati Newline na +kraju (ali Emacs to ne zahtijeva). + +>> Poku¹ajte stisnuti C-b na poèetku reda. Trebalo bi vas pomaknuti + na kraj prethodnog reda. To se dogaða zato ¹to ste se pomakli + unatrag, preko znaka Newline. + +C-f se mièe preko Newline-a, ba¹ kao i C-b. + +>> Pritisnite jo¹ nekoliko puta C-b, da steknete osjeæaj za kursor. + Tad sti¹æite C-f dok se ne vratite na kraj reda. + Zatim se jo¹ jednim C-f-om pomaknite na poèetak sljedeæeg reda. + +Kad se pomaknete preko gornjeg ili donjeg ruba ekrana, tekst iza ruba +se pomakne na ekran. Ovo se naziva "pomak" (eng. scrolling). Njime +Emacs mo¾e pomaknuti kursor na neko mjesto u tekstu bez uklanjanja +kursora s ekrana. + +>> Poku¹ajte pomaknuti kursor s donjeg ruba sa C-n, i pogledajte ¹to + se dogaða. + +Ako je micanje po znakovima presporo, mo¾ete se micati po rijeèima. +M-f (Meta-f) mièe rijeè naprijed, a M-b mièe rijeè natrag. + +>> Pritisnite nekoliko puta M-f i M-b. + +Kad se nalazite u sredini rijeèi, M-f pomièe na kraj rijeèi. Kad se +nalazite u praznom prostoru izmeðu rijeèi, M-f pomièe na kraj sljedeæe +rijeèi. M-b se pona¹a na isti naèin, ali u suprotnom smjeru. + +>> Pritisnite M-f i M-b nekoliko puta, izmije¹ano s C-f i C-b, tako da + mo¾ete promotriti kako se M-f i M-b pona¹aju na razlièitim mjestima + unutar i izmeðu rijeèi. + +Uoèite paralelu izmeðu C-f i C-b na jednoj strani, i M-f i M-b na +drugoj. Meta znakovi se èesto koriste za operacije vezane uz jedinice +definirane jezikom (rijeèi, reèenice, paragrafi), dok Control znakovi +rade na osnovnim jedinicama, neovisno o onome ¹to editirate (znakovi, +redovi, itd.) + +Analogija vrijedi i izmeðu redova i reèenica: C-a i C-e pomièu na +poèetak, odnosno na kraj reda, dok M-a i M-e pomièu na poèetak, odnosno +kraj reèenice. + +>> Isku¹ajte C-a nekoliko puta, potom C-e nekoliko puta. +>> Iskupajte M-a nekoliko puta, potom M-e nekoliko puta. + +Uoèite kako ponovljeni C-a ne rade ni¹ta, dok ponovljeni M-a +nastavljaju micati po reèenicama. Iako ovo nije sasvim analogno, +svaka se naredba doima prirodnom. + +Polo¾aj kursora u tekstu se takoðer naziva "toèka" (eng. point). +Drugaèije reèeno, kursor pokazuje na ekranu gdje se point nalazi u +tekstu. + +Evo sa¾etka jednostavnih operacija za micanje kursora, ukljuèujuæi i +naredbe za pomicanje preko rijeèi i reèenica: + + C-f Znak naprijed + C-b Znak natrag + + M-f Rijeè naprijed + M-b Rijeè natrag + + C-n Sljedeæi red + C-p Prethodni red + + C-a Poèetak reda + C-e Kraj reda + + M-a Poèetak reèenice + M-e Kraj reèenice + +>> Isku¹ajte sve ove naredbe jo¹ nekoliko puta, za vje¾bu. + To su najèe¹æe rabljene naredbe. + +Dvije druge va¾ne naredbe za pomicanje kursora su M-< (Meta Manje), +koja pomièe na poèetak cijelog teksta, i M-> (Meta Veæe), koja pomièe +na kraj cijelog teksta. + +Na veæini terminala, "<" je iznad zareza, tako da morate koristiti +tipku shift da biste ga utipkali. Na tim terminalima morate koristiti +tipku shift i da biste utipkali M-<; bez shifta, pisali biste M-zarez. + +>> Sada isku¹ajte M-<, da biste se pomaknuli na poèetak uputa. + Potom upotrijebite C-v nekoliko puta da se vratite ovamo. + +>> Sada isku¹ajte M->, pomaknuv¹i se na kraj uputa. + Potom upotrijebite M-v nekoliko puta da se vratite ovamo. + +Ako va¹ terminal ima kursorske tipke, mo¾ete kursor pomicati njima. +Preporuèujemo da nauèite C-b, C-f, C-n i C-p iz tri razloga. Prvo, +rade na svim vrstama terminala. Drugo, kad steknete rutinu kori¹tenja +Emacsa, primijetit æete da je tipkanje ovih CTRL znakova br¾e od +uporabe kursorskih tipki (jer ne morate odmicati prste od polo¾aja za +tipkanje). Treæe, jednom kad se naviknete koristiti CTRL znakovne +naredbe, lako æete nauèiti koristiti druge napredne naredbe za micanje +kursora. + +Veæina Emacsovih naredbi prihvaæa numerièki argument; za veæinu njih +ovo slu¾i kao brojaè ponavljanja. Brojaè ponavljanja zadajete tako da +utipkate C-u i potom znamenke prije nego ¹to utipkate naredbu. Ako +imate tipku META (ili EDIT ili ALT), postoji jo¹ jedan alternativan +naèin uno¹enja numerièkog argumenta: tipkajte znamenke dr¾eæi svo vrijeme +tipku META. Preporuèujemo uèenje metode pomoæu C-u, jer radi na svim +terminalima. + +Primjerice, C-u 8 C-f pomièe osam znakova naprijed. + +>> Poku¹ajte koristiti C-n ili C-p s numerièkim argumentom, tako da + pomaknete kursor na liniju blisku ovoj samo jednom naredbom. + +Veæina naredbi koristi numerièki argument kao brojaè ponavljanja. +Neke ga naredbe, izunimno, koriste drugaèije. C-v i M-v su meðu +iznimkama. Kad im se proslijedi argument, one pomaknu ekran gore ili +dolje, za toliko redova, a ne stranica. Na primjer, C-u 4 C-v pomièe +ekran za èetiri reda. + +>> Sada poku¹ajte upisati C-u 8 C-v. + +Ovo je trebalo pomaknuti ekran za 8 redova. Ako ga hoæete pomaknuti +natrag, mo¾ete dati isti argument M-v. + +Ako koristite X Window sistem, vjerojatno se na desnoj strani Emacsova +prozora nalazi pravokutno podruèje nazvano "vrpca za pomicanje" +(eng. scroll-bar). Mo¾ete pomicati tekst mi¹em povlaèeæi klizaè +unutar vrpce. + +>> Poku¹ajte pritisnuti srednju tipku mi¹a na vrh klizaèa unutar + scroll-bara. Ovo bi trebalo pomaknuti tekst do polo¾aja odreðenog + visinom toèke pritiska. + +>> Pomaknite mi¹a na toèku scroll-bara otprilike tri reda od vrha, i +pritisnite lijevu tipku mi¹a nekoliko puta. + + +* KONTROLA KURSORA NA X TERMINALU +--------------------------------- + +Ako imate X terminal, vjerojatno æe vam biti lak¹e koristiti tipke +kursorskog bloka. Lijeva, desna, gornja i donja strelica pomièu u +oèekivanom smjeru; one funkcioniraju jednako kao i C-b, C-f, C-p i +C-n, ali ih je lak¹e tipkati i zapamtiti. Takoðer mo¾ete koristiti +C-lijevo i C-desno za pomake po rijeèima, a C-gore i C-dolje za pomake +po blokovima (npr. paragrafima, ako editirate tekst). Ako imate tipke +oznaèene s HOME (ili BEGIN) i END, one æe vas pomaknuti na poèetak +odnosno kraj reda, a C-home i C-end æe vas pomaknuti na poèetak +odnosno kraj datoteke. Ako va¹a tipkovnica ima tipke PgUp i PgDn, +mo¾ete ih koristiti za pomicanje gore i dolje po stranicama, kao M-v i +C-v. + +Sve ove naredbe mogu primiti numerièke argumente, kao ¹to je gore +opisano. Mo¾ete taj argument unijeti kraæim putem: samo dr¾ite tipku +CONTROL ili META, i upi¹ite broj. Na primjer, za pomak 12 rijeèi +desno, tipkajte C-1 C-2 C-desno. Uoèite da je ovo jako lako utipkati, +jer ne morate otpu¹tati tipku CONTROL izmeðu pritisaka tipki. + + +* KAD EMACS BLOKIRA +------------------- + +Ako Emacs prestane odgovarati na va¹e naredbe, mo¾ete ga zaustaviti +utipkav¹i C-g. Mo¾ete koristiti C-g da zaustavite naredbu koja predugo +traje. + +Takoðer s C-g mo¾ete odbaciti numerièki argument, ili poèetak naredbe +koju ne ¾elite zavr¹iti. + +>> Upi¹ite C-u 100 da napravite numerièki argument 100, zatim stisnite C-g. + Sad upi¹ite C-f. Pomaknut æe se samo za jedan znak, jer ste + argument odbacili s C-g. + +Ako gre¹kom stisnete , mo¾ete ga se rije¹iti s C-g. + + +* ONEMOGUÆENE NAREDBE +--------------------- + +Neke Emacsove naredbe su "onemoguæene", tako da ih poèetnici ne mogu +pokrenuti gre¹kom. + +Ako utipkate jednu od onemoguæenih naredbi, Emacs æe vas porukom +obavijestiti koju ste naredbu poku¹ali pokrenuti, i pitati vas ¾elite +li je ipak izvr¹iti. + +Ako je zaista ¾elite isprobati, pritisnite razmaknicu kao odgovor na +pitanje. Inaèe, ako ne ¾elite izvr¹iti onemoguæenu naredbu, +odgovorite na pitanje s "n". + +>> Pritisnite `C-x n p' (¹to je onemoguæena naredba), + zatim na pitanje odgovorite s "n". + + +* PROZORI +--------- + +Emacs mo¾e imati nekoliko prozora, svaki s vlastitim tekstom. Uoèite +da se pojam "prozora" kako ga koristi Emacs ne odnosi na odvojene +preklapajuæe prozore windowing sustava, veæ na razdvojene dijelove +unutar jednog X prozora. (Emacs takoðer mo¾e prikazati vi¹e X +prozora, odnosno "okvira", u Emacsovoj terminologiji. To je opisano +kasnije.) + +Za sada je bolje ne ulaziti u tehnike kori¹tenja vi¹e prozora. Ono +¹to trebate znati jest kako se rije¹iti dodatnih prozora koji se mogu +javiti za prikaz pomoæi, ili kao izlaz nekih naredbi. +Jednostavno: + + C-x 1 Jedan prozor (tj. ubij sve druge prozore) + +To je Control-x praæen znamenkom 1. C-x 1 pro¹iruje prozor u kojem je +kursor, tako da on zauzme cijeli ekran. Pobri¹e, takoðer, i ostale +prozore. + +>> Pomaknite kursor na ovu liniju i upi¹ite C-u 0 C-l. + +(Sjetite se da C-l ponovno iscrtava ekran. Ako ovoj naredbi date +numerièki argument, on znaèi "iscrtaj ekran i smjesti trenutni red +toliko linija od vrha ekrana." Tako C-u 0 C-l znaèi "iscrtaj ekran, i +stavi trenutni red na vrh.") + +>> Pritisnite Control-x 2 + Uoèite kako se ovaj prozor smanjuje, dok se novi pojavljuje + prikazujuæi sadr¾aj ovog spremnika (buffera). + +>> Upi¹ite C-x 1 i gledajte kako novi prozor nestaje. + + +* UMETANJE I BRISANJE +--------------------- + +®elite li umetnuti tekst, samo ga utipkajte. Znakove koje vidite, kao +¹to su A, 7, *, itd. Emacs shvaæa kao tekst i umeæe trenutno. +Pritisnite (znak za novi red) da umetnete znak Newline. + +Zadnji znak koji ste umetnuli mo¾ete izbrisati pritisnuv¹i . + je tipka na tipkovnici koja mo¾e biti oznaèena kao "Del". U +nekim sluèajevima, tipka "Backspace" slu¾i kao , ali ne +uvijek! + +Opæenitije, bri¹e znak neposredno ispred trenutnog polo¾aja +kursora. + +>> Uèinite sljedeæe: utipkajte nekoliko znakova, zatim ih izbri¹ite + stisnuv¹i nekoliko puta. Ne brinite o promjeni ove + datoteke; neæete izmijeniti glavnu verziju uputa. Ovo je va¹a + osobna kopija. + +Kad red teksta postane prevelik za jedan red na ekranu, red se +"nastavlja" na drugi ekranski red. Obrnuta kosa crta ("\") na desnom +rubu ukazuje na red koji je nastavljen. + +>> Upisujte tekst dok ne doðete do desnog ruba, i nastavite pisati. + Vidjet æete kako se pojavljuje nastavljeni red. + +>> Tipkom bri¹ite tekst dok red teksta opet ne stane na red + ekrana. Kontinuacijski red tada nestaje. + +Mo¾ete izbrisati znak Newline kao i bilo koji drugi znak. Brisanje +znaka Newline izmeðu dva reda ih spaja u jedan red. Ako je novonastali +zajednièki red prevelik da stane na ekranski red, bit æe prikazan +kontinuacijskim redom. + +>> Pomaknite kursor na poèetak reda i pritisnite . Red æe se + spojiti s redom iznad. + +>> Pritisnite tako da ponovno umetnete Newline koji ste + izbrisali. + +Upamtite da se veæini Emacsovih naredbi mo¾e zadati brojaè +ponavljanja; ovo ukljuèuje znakove teksta. Ponavljanje znaka teksta +unosi ga nekoliko puta. + +>> Isku¹ajte sad -- upi¹ite C-u 8 * da upi¹ete ********. + +Sada ste nauèili najosnovnije naèine upisivanja u Emacs i ispravljanja +gre¹aka. Sada mo¾ete i brisati po rijeèima ili redovima. Evo sa¾etka +operacija brisanja: + + bri¹i znak neposredno pred kursorom + C-d bri¹i znak nakon kursora + + M- ubij rijeè prije kursora + M-d ubij rijeè poslije kursora + + C-k ubij od pozicije kursora do kraja reda + M-k ubij do kraja trenutne reèenice + +Uoèite da i C-d nasuprot M- i M-d pro¹iruju paralelu +zaèetu s C-f i M-f (dobro, ba¹ i nije kontrolni znak, ali +nemojmo brinuti o tome). C-k i M-k su na neki naèin slièni C-e i M-e, +po operaciji na redovima, odnosno reèenicama. + +Kad bri¹ete vi¹e od jednog znaka istovremeno, Emacs sprema izbrisani +tekst, tako da ga mo¾ete dobiti natrag. Vraæanje ubijenog teksta zove +se "dobavljanje" (eng. yanking). Mo¾ete dobaviti ubijeni tekst bilo +na isto mjesto gdje je bio ubijen, bilo na neko drugo mjesto u +tekstu. Mo¾ete dobaviti tekst nekoliko puta, èime æete dobiti +vi¹estruke kopije. Komanda za dobavljanje je C-y. + +Uoèite da je razlika izmeðu "ubijanja" i "brisanja" neèega u tome ¹to +se ubijeni tekst mo¾e dobaviti natrag, a izbrisani ne mo¾e. Opæenito, +naredbe koje uklanjaju puno teksta spreme izbrisani tekst, dok ga +naredbe koje bri¹u samo jedan znak ili samo prazne linije i razmake ne +spremaju. + +>> Pomaknite kursor na poèetak reda koji nije prazan. + Zatim pritisnite C-k da ubijete tekst u tom redu. +>> Stisnite C-k drugi put. Vidjet æete da ubija Newline koji prati + taj red. + +Uoèite da jedan C-k ubija sadr¾aj reda, dok drugi C-k ubija sam red, i +mièe sve druge redove prema gore. C-k tretira numerièki argument na +specijalan naèin: ubija toliko redova, i njihov sadr¾aj. Ovo nije +obièno ponavljanje. C-u 2 C-k ubija dva reda i njihove newline; +pritiskanje C-k dvaput ne bi dalo taj rezultat. + +Da povratite zadnji ubijeni tekst i stavite ga gdje je kursor +trenutno, pritisnite C-y. + +>> Poku¹ajte; pritisnite C-y da dobavite tekst. + +Gledajte na C-y kao da dobavljate natrag ne¹to ¹to vam je netko uzeo. +Uoèite da ako ponovite C-k nekoliko puta, sav tekst bit æe spremljen +zajedno, tako da æe ga C-y dobaviti odjednom. + +>> Uèinite to sad, pritisnite C-k nekoliko puta. + +Sad, da bi vratili ubijeni tekst: + +>> Stisnite C-y. Tad spustite kursor nekoliko linija ni¾e i opet + stisnite C-y. Sada vidite kako se kopira tekst. + +©to napraviti ako imate tekst koji ¾elite dobaviti, ali onda ubijete +ne¹to drugo? C-y bi dobavio zadnji tekst. Ali prethodni tekst nije +izgubljen. Mo¾ete ga povratiti koristeæi naredbu M-y. Nakon ¹to +pritisnete C-y i dobijete zadnje ubijeni tekst, pritiskanje M-y ga +zamjenjuje s prethodno ubijenim tekstom. Uzastopno pozivanje M-y +dobavlja sve ranije i ranije tekstove. Kad doðete do teksta koji ste +tra¾ili, ne morate uèiniti ni¹ta posebno da ga zadr¾ite. Samo +nastavite s editiranjem, ostaviv¹i dobavljeni tekst gdje jest. + +Ako pritisnete M-y dovoljno puta, vratit æete se na polaznu toèku +(zadnji ubijeni tekst). + +>> Ubijte jedan red, pomièite se po tekstu, ubijte drugi red. + Zatim pritisnite C-y da biste dobili natrag drugi ubijeni red. + Zatim napravite M-y pa æe taj tekst biti zamijenjen prvim ubijenim + redom. Napravite jo¹ par puta M-y i pogledajte ¹to dobivate. + Nastavite s M-y dok ne vratite drugi ubijeni red, a zatim M-y + pritisnite jo¹ par puta. Ako ¾elite, mo¾ete poku¹ati proslijediti + naredbi M-y pozitivne i negativne argumente. + + +* PONI©TENJE +------------ + +Ako napravite izmjenu u tekstu, pa se zatim predomislite, mo¾ete +poni¹titi (eng. "undo") promjenu naredbom undo, C-x u. + +Obièno, C-x u poni¹tava promjene koje su rezultat jedne naredbe; ako +ponovite C-x u nekoliko puta uzastopce, svako novo ponavljanje +poni¹tava uèinak jo¹ jedne naredbe. + +Ali, postoje dva izuzetka: naredbe koje ne mijenjaju tekst se ne +raèunaju (ovo ukljuèuje naredbe koje mièu kursor i pomièu tekst), a +samo-umeæuæi znakovi se obièno grupiraju u skupine od po 20 (da se +umanji broj C-x u koje morate stisnuti da biste poni¹tili unos +teksta). + +>> Ubijte ovu liniju s C-k, zatim utipkajte C-x u i trebala bi se + ponovno pojaviti. + +C-_ je alternativna naredba za poni¹tenje; ona radi isto kao C-x u, +ali ju je lak¹e utipkati nekoliko puta za redom. Mana C-_ je da na +nekim tipkovnicama nije oèigledno kako je utipkati. Zato ostavljamo i +C-x u. Na nekim terminalima mo¾ete dobiti C-_ kombinacijom CTRL i /. + +Numerièki argument naredbi C-_ ili C-x u slu¾i kao brojaè ponavljanja. + + +* DATOTEKE +---------- + +Da biste za stalno spremili izmjene na tekstu koji editirate, morate ga +spremiti u datoteku. Ako to ne uèinite, tekst æe nestati kada izaðete +iz Emacsa. Svoje izmjene stavljate u datoteku tako ¹to je prvo +"naðete" (ovo se jo¹ naziva i "posjeta" datoteci). + +Nala¾enje datoteke znaèi da vidite sadr¾aj datoteke unutar Emacsa. U +neku ruku, ovo je kao da editirate samu datoteku. Meðutim, izmjene +koje napravite koristeæi Emacs ne postaju trajne dok niste "snimili" +datoteku. Tako mo¾ete izbjeæi ostavljanje poluzavr¹ene datoteke u +sustavu, ako to ne ¾elite. Èak i kad snimate, Emacs ostavlja izvornu +datoteku pod promijenjenim imenom, za sluèaj da se kasnije +predomislite. + +Ako pogledate pri dnu ekrana, vidjet æete red koji poèinje i zavr¹ava +s crticama, i sadr¾i niz "XEmacs: TUTORIAL.hr". Ovaj dio ekrana +uvijek pokazuje naziv datoteke koju posjeæujete. U ovom trenutku vi +posjeæujete datoteku koja se zove "TUTORIAL", a koja je va¹a osobna +kopija Emacsovih uputa. Koju god datoteku na¹li, njen æe se naziv +pojaviti na tom istom mjestu. + +Naredbe za pronala¾enje i spremanje datoteka se razlikuju od drugih +naredbi koje ste dosad upoznali, po tome ¹to se sastoje od dva znaka. +Obje poèinju znakom Control-x; mnoge od njih rade s datotekama, +spremnicima i povezanim stvarima. Ove naredbe su dugaèke dva, tri ili +èetiri znaka. + +Jo¹ jedna stvar u vezi naredbe za nala¾enje datoteke je da morate reæi +koju datoteku ¾elite. Ka¾emo da naredba "èita argument s terminala" +(u ovom sluèaju, argument je naziv datoteke). Kad utipkate naredbu + + C-x C-f Naði datoteku + +Emacs tra¾i od vas da upi¹ete naziv datoteke. Naziv datoteke koji +upi¹ete pojavljuje se u donjem redu ekrana. Taj donji red naziva se +minispremnik (minibuffer) kad se koristi za tu vrstu unosa. Mo¾ete +koristiti uobièajene Emacsove naredbe da editirate naziv datoteke. + +Dok unosite naziv datoteke (ili za bilo kojeg unosa iz minispremnika), +mo¾ete otkazati naredbu pomoæu C-g. + +>> Upi¹ite C-x C-f, potom C-g. Ovo otkazuje minispremnik, a takoðer + otkazuje i naredbu C-x C-f koja je koristila minispremnik. Tako + nijedna datoteka neæe biti pronaðena. + +Kad zavr¹ite s upisom imena datoteke, stisnite za kraj. Tad +æe naredba C-x C-f otpoèeti svoj posao, i naæi datoteku koju ste +izabrali. Minispremnik nestaje kad naredba C-x C-f zavr¹i. + +Ubrzo æe se sadr¾aj datoteke pojaviti na ekranu, i moæi æete editirati +sadr¾aj. Kad po¾elite trajno saèuvati svoje izmjene, upi¹ite naredbu + + C-x C-s Spremi datoteku + +Ovo kopira tekst unutar Emacsa u datoteku na disku. Prvi put kad ovo +uèinite, Emacs æe preimenovati izvornu datoteku u novo ime, tako da je +ne izgubite. Novo se ime tvori dodavanjem znaka ~ na izvorno ime +datoteke. + +Kad snimanje zavr¹i, Emacs ispi¹e ime snimljene datoteke. Trebali +biste snimati relativno èesto, tako da ne izgubite puno ako sustav +padne. + +>> Upisav¹i C-x C-s, spremite svoju kopiju uputa. + Na dnu ekrana bi trebalo pisati "Wrote ...TUTORIAL.hr". + +Primjedba: Na nekim sustavima, tipkanje C-x C-s æe zamrznuti ekran, i +neæete vi¹e vidjeti Emacsov output. To znaèi da "prednost" +operativnog sustava zvana "kontrola toka" (eng. flow control) presreæe +C-s i ne da mu da doðe do Emacsa. Odmrznite sustav tipkom C-q. Tada +pogledajte odjeljak "Spontaneous Entry to Incremental Search" +Emacsovog manuala za savjet kako se nositi s ovom "predno¹æu". + +Mo¾ete naæi postojeæu datoteku, da je pogledate ili editirate. Mo¾ete +takoðer naæi i datoteku koja jo¹ ne postoji. Tako se stvaraju nove +datoteke Emacsom: naðite datoteku, koja æe ispoèetka biti prazna, i +poènite unositi tekst u datoteku. Kad zatra¾ite "snimanje" datoteke, +Emacs æe zaista stvoriti datoteku s tekstom koji ste unijeli. Od tad +pa nadalje, mo¾ete smatrati da editirate veæ postojeæu datoteku. + + +* SPREMNICI +----------- + +Ako naðete jo¹ jednu datoteku s C-x C-f, ona prva ostaje unutar +Emacsa. Mo¾ete se vratiti natrag na nju nalazeæi je opet s C-x C-f. +Ovako mo¾ete otvoriti prilièan broj datoteka unutar Emacsa. + +>> Stvorite datoteku imena "foo" tipkajuæi C-x C-f foo . + Tad unesite neki tekst, editirajte ga, i snimite "foo" utipkav¹i + C-x C-s. + Konaèno, upi¹ite C-x C-f TUTORIAL.hr da se vratite na + upute. + +Emacs pohranjuje tekst svake datoteke u objektu zvanom "spremnik" +(eng. buffer). Nala¾enje datoteke otvara novi spremnik unutar +Emacsa. Popis spremnika koji se nalaze u trenutnom pozivu Emacsa +mo¾ete dobiti sa + + C-x C-b Izlistaj spremnike + +>> Sada isku¹ajte C-x C-b. + +Uoèite kako svaki spremnik ima naziv, a mo¾e imati i ime datoteke koje +se odnosi na datoteku èiji sadr¾aj je u njemu. Neki spremnici ne +odgovaraju ni jednoj datoteci. Na primjer, spremnik "*Buffer List*" nema +ni jednu datoteku. To je spremnik koji sadr¾i spisak spremnika koji +je stvorila naredba C-x C-b. BILO KOJI tekst koji vidite u nekom +Emacsovom prozoru uvijek je dio nekog spremnika. + +>> Pritisnite C-x 1 da se rije¹ite spiska spremnika. + +Ako promijenite tekst jedne datoteke, zatim naðete drugu datoteku, ova +prva neæe biti snimljena. Njene promjene ostaju unutar Emacsa, u +spremniku te datoteke. Ovo je korisno, ali to i znaèi da je potreban +pogodan naèin snimanja datoteke prvog spremnika. Bilo bi nespretno +prebacivati se natrag u spremnik s C-x C-f samo zato da ga se snimi s +C-x C-s. Zato imamo + + C-x s Snimi neke spremnike. + +C-x s vas pita za svaki spremnik koji sadr¾i izmjene koje niste +snimili. Za svaki takav spremnik pita vas da li ga ¾elite snimiti. + +>> Upi¹ite red teksta, potom upi¹ite C-x s. + Pitat æe vas ¾elite li snimiti spremnik s nazivom TUTORIAL.hr. + Odgovorite potvrdno na pitanje, tipkajuæi "y". + + +* UPORABA IZBORNIKA +------------------- + +Ako ste na X terminalu, uoèit æete izbornik na vrhu Emacsovog prozora. +Mo¾ete koristiti izbornik za pristup svim uobièajenim Emacsovim +naredbama, kao ¹to su "find file". Ovo æe vam u poèetku biti lak¹e, +jer neæete morati pamtiti tipke za neku naredbu. Jednom kad vam rad u +Emacsu postane ugodan, lako æete poèeti koristiti naredbe s +tipkovnice, jer svaka stavka izbornika sadr¾i i odgovarajuæu tipku za +pokretanje naredbe. + +Uoèite da postoji puno stavki koje nemaju ekvivalent na tipkovnici. +Na primjer, izbornik "Buffers" prikazuje sve raspolo¾ive spremnike +redosljedom posljednje uporabe. Mo¾ete se prebaciti na bilo koji +spremnik tako da jednostavno izaberete njegov naziv u izborniku +"Buffers". + + +* UPORABA MI©A +-------------- + +Kad radite pod X-ima, Emacs je u potpunosti integriran s mi¹em. +Mo¾ete pozicionirati tekstualni kursor pritisnuv¹i lijevu tipku mi¹a +na ¾eljenom mjestu, mo¾ete izabrati tekst povlaèeæi lijevu tipku mi¹a +po ¾eljenom tekstu. (Ili, na drugi naèin, pritisnuti lijevu tipku +mi¹a s jedne strane, zatim se pomaknuti na drugu stranu, i koristiti +Shift i tipku mi¹a za izbor teksta.) + +Ako ¾elite ubiti izabrani tekst, mo¾ete pritisnuti C-w, ili izabrati +Cut u izborniku Edit. Uoèite da ovo dvoje *nije* isto: C-w samo +sprema tekst unutar Emacsa (slièno C-k, kako je opisano gore), dok Cut +radi ovo, i jo¹ sprema tekst u X clipboard, gdje do njega mogu +pristupiti ostale aplikacije. + +Tekst s X clipboarda mo¾ete dobiti koristeæi stavku Paste izbornika +Edit. + +Srednja tipka mi¹a se obièno koristi za izbor stvari koje su vidljive +na ekranu. Na primjer, ako uðete u Info (Emacsovu on-line +dokumentaciju) koristeæi C-h i ili izbornik Help, mo¾ete pratiti +osvijetljeni link pritisnuv¹i srednju tipku mi¹a na njemu. Slièno, +ako tipkate naziv datoteke (npr. na "Find File" promptu) i pritisnete +TAB da vidite moguænosti, mo¾ete stisnuti srednju tipku mi¹a na neku +od moguænosti, da je izaberete. + +Desna tipka mi¹a poziva "skoèni" izbornik. Sadr¾aj ovog izbornika +ovisi o modu u kojem se trenutno nalazite, i obièno sadr¾i nekoliko +èesto kori¹tenih naredbi, tako da se do njih lak¹e doðe. + +>> Sada pritisnite desnu tipku mi¹a. + +Morat æete dr¾ati tipku da zadr¾ite izbornik. + + +* PRO©IRENJE SKUPA NAREDBI +-------------------------- + +Emacsovih naredbi ima puno puno vi¹e nego ¹to bi ikad moglo stati na +sve kontrolne i meta znakove. Emacs ovo zaobilazi pro¹irenim +(eXtended) naredbama. One dolaze u dva oblika: + + C-x Pro¹iri znak. Praæena jednim znakom. + M-x Pro¹irena naredba s imenom. Praæena dugim imenom. + +Postoje naredbe koje jesu korisne, ali ih se rabi manje nego naredbe o +kojima smo dosad govorili. Veæ ste vidjeli dvije: naredbe s +datotekama C-x C-f za nala¾enje i C-x C-s za snimanje. Jo¹ jedan +primjer je naredba kojom se izlazi iz Emacsa -- to je naredba C-x +C-c. (ne brinite o gubljenju izmjena koje ste napravili; C-x C-c vam +nudi da snimite svaku izmijenjenu datoteku prije no ¹to izaðe iz +Emacsa). + +Naredbom C-z *privremeno* izlazite iz Emacsa -- tako da se mo¾ete +nakon nekog vremena opet vratiti u Emacs. + +Na sustavima koji to dozvoljavaju, C-z "suspendira" Emacs; to jest, +vraæa se u ljusku, ali ne uni¹tava Emacs. U veæini ljuski, mo¾ete +nastaviti rad Emacsa naredbom `fg', ili s `%emacs'. + +Na sustavima koji ne podr¾avaju suspendiranje, C-z stvara podljusku +koja radi pod Emacsom, tako da mo¾ete pokrenuti druge programe i +naknadno se vratiti u Emacs; ona neæe zaista "izaæi" iz Emacsa. U +ovom sluèaju, ljuskina naredba `exit' je uobièajen naèin povratka iz +podljuske u Emacs. + +Vrijeme za C-x C-c je onda kad se kanite odlogirati. Takoðer, to je +ispravna stvar kad je Emacs pozvan iz èitaèa po¹te, ili nekog drugog +programa, jer se oni ne moraju znati nositi sa suspendiranjem Emacsa. +U normalnim okolnostima, meðutim, ako se ne kanite odlogirati, bolje +je suspendirati Emacs s C-z nego izaæi iz njega. + +Postoji puno C-x naredbi. Evo spiska onih koje ste nauèili: + + C-x C-f Naði datoteku. + C-x C-s Snimi datoteku. + C-x C-b Popis spremnika. + C-x C-c Izaði iz Emacsa. + C-x u Poni¹ti zadnju naredbu. + +Imenovane pro¹irene naredbe su naredbe koje se jo¹ rjeðe koriste, ili +se koriste samo unutar stanovitih modova. Primjer je naredba +replace-string, koja globalno zamjenjuje jedan niz drugim. Kad +napi¹ete M-x, Emacs æe vam dati prompt na dnu ekrana, a vi trebate +samo napisati naziv naredbe. U ovom sluèaju, "replace-string". Samo +napi¹ite "repl s", i Emacs æe dovr¹iti ime. Zavr¹ite naziv +naredbe s . + +Naredba replace-string tra¾i dva argumenta -- niz koji se zamjenjuje, +i niz kojim æe se zamijeniti. Zavr¹ite svaki argument s . + +>> Pomaknite kursor na prazan red dva reda ispod ovoga. Zatim + napi¹ite M-x repl s promijenioizmijenio. + + Primijetite kako se ovaj red promijenio: zamijenili ste rijeè + p-r-o-m-i-j-e-n-i-o s "izmijenio" gdje god se ova pojavila, nakon + poèetnog polo¾aja kursora. + + +* AUTOMATSKO SNIMANJE +--------------------- + +Kada ste promijenili datoteku, ali je jo¹ niste snimili, va¹e bi +izmjene mogle biti izgubljene ako raèunalo padne. Da vas za¹titi od +ovoga, Emacs povremeno ispisuje "auto save" (automatsko snimanje) +datoteku za svaku datoteku koju editirate. Auto-save datoteka ima # +na poèetku i na kraju imena; na primjer, ako se va¹a datoteka zove +"hello.c", njezina æe se auto-save datoteka zvati "#hello.c#". Kad +snimite datoteku na normalan naèin, Emacs æe izbrisati njezinu +auto-save datoteku. + +Ako raèunalo padne, mo¾ete obnoviti svoje automatski spremljene +promjene tako ¹to normalno naðete datoteku, i napi¹ete +M-x recover file . Kad vas pita za potvrdu, upi¹ite +yes za nastavak i vratite automatski snimljene podatke. + + +* PROSTOR ZA PORUKE +------------------- + +Ako Emacs vidi da pi¹ete naredbe polako, pokazat æe vam ih na dnu +ekrana na mjestu koje se zove "prostor za poruke" (eng. echo area). +Prostor za poruke je na najni¾em redu ekrana. + + +* STATUSNI RED +-------------- + +Red odmah iznad prostora za poruke se zove "statusni red" +(eng. modeline). Statusni red izgleda otprilike ovako: + +--**-XEmacs: TUTORIAL.hr (Fundamental)--L670--58%---------------- + +Ovaj red pru¾a korisne informacije o statusu Emacsa i tekstu koji +editirate. + +Veæ znate ¹to je ime datoteke -- to je datoteka koju ste na¹li. +-NN%-- predstavlja va¹ trenutni polo¾aj u tekstu; to znaèi da je NN +postotaka teksta iznad vrha ekrana. Ako je vrh teksta na ekranu, +pisat æe --Top-- umjesto --00%--. Ako je kraj teksta na ekranu, pisat +æe --Bot--. Ako gledate u tako kratak tekst da sav stane na ekran, u +statusnoj liniji æe pisati --All--. + +Zvjezdice na poèetku znaèe da ste napravili izmjene na tekstu. +Neposredno po posjeti ili snimanju datoteke, taj dio statusne linije +nema zvjezdica, veæ samo crtice. + +Dio statusne linije u zagradama govori u kojem se modu editiranja +nalazite. Podrazumijeva se Fundamentalni mod, koji trenutno koristite. +On je primjer "glavnog moda". + +Emacs ima puno razlièitih glavnih modova. Neki od njih su predviðeni +za editiranje razlièitih jezika i/ili vrsta teksta, kao ¹to je Lisp +mod, tekst mod, itd. U bilo kojem trenutku jedan i samo jedan glavni +mod je aktivan, i njegovo se ime nalazi na statusnom redu, gdje sada +stoji "Fundamental". + +Svaki glavni mod èini da se nekoliko naredbi pona¹a razlièito. Na +primjer, postoje naredbe za stvaranje komentara u programu, a buduæi +da svaki programski jezik ima drugaèiju predod¾bu o tome kako komentar +izgleda, svaki glavni mod razlièito unosi komentare. Svaki glavni mod +je ime jedne pro¹irene naredbe, ¹to je i naèin kako se mo¾ete +prebaciti u taj mod. Na primjer, M-x fundamental-mode je naredba koja +vas prebacuje u Fundamental mod. + +Ako editirate tekst na hrvatskom, kao ¹to je ova datoteka, vjerojatno +biste trebali koristiti tekstualni mod. +>> Napi¹ite M-x text-mode. + +Ne brinite, nijedna od naredbi koje ste nauèili neæe promijeniti Emacs +na znaèajan naèin. Ali mo¾ete uoèiti da M-f i M-b sad tretiraju +apostrofe kao dio rijeèi. U fundamentalnom modu M-f i M-b su +tretirali apostrofe kao separatore rijeèi. + +Glavni modovi obièno rade suptilne izmjene poput navedene: veæina +naredbi rade "isti posao" u svakom glavnom modu, ali funkcioniraju s +malom razlikom. + +Da biste vidjeli dokumentaciju trenutnog glavnog moda, pritisnite +C-h m. + +>> Pritisnite jo¹ jednom C-u C-v da dovedete ovu liniju do vrha ekrana. +>> Utipkajte C-h m, da vidite kako se tekstualni mod razlikuje od + fundamentalnog moda. +>> Pritisnite q da uklonite dokumentaciju s ekrana. + +Glavni modovi se nazivaju glavnima, jer postoje jo¹ i sporedni +modovi. Sporedni su modovi nisu zamjena za glavne modove, veæ njihova +usputna modifikacija. Svaki sporedni mod mo¾e biti ukljuèen ili +iskljuèen za sebe, neovisno o ostalim sporednim modovima, i neovisno o +glavnom modu. Tako mo¾ete ne biti niti u jednom sporednom modu, ili u +jednom sporednom modu, ili u kombinaciji nekoliko sporednih modova. + +Jedan vrlo koristan sporedni mod, naroèito za editiranje hrvatskog +teksta, jest mod za automatsko popunjavanje (Auto Fill mode). Kad je +ovaj mod ukljuèen, Emacs automatski lomi linije izmeðu rijeèi kad god +umetanjem teksta stvorite red koji je pre¹irok. + +Mo¾ete ukljuèiti Auto Fill mod pisanjem M-x auto-fill-mode. +Kad je mod ukljuèen, iskljuèujete ga s M-x auto-fill-mode. +Kad je mod iskljuèen, ova ga naredba ukljuèuje, kad je ukljuèen, ona +ga iskljuèuje. + +>> Napi¹ite M-x auto-fill-mode sad. Potom umeæite tekst "asdf " + dok god se red ne razdvoji na dva dijela. Morate stavljati razmake + izmeðu, jer Auto Fill lomi redove samo na razmacima. + +Rub je obièno postavljen na 70 znakova, ali ga mo¾ete promijeniti +naredbom C-x f. Rub koji ¾elite postaviti pode¹avate numerièkim +argumentom. + +>> Utipkajte C-x f s argumentom 20. (C-u 2 0 C-x f). + Potom upi¹ite neki tekst, i gledajte kako Emacs lomi redove dulje + od 20 znakova. Tad postavite rub natrag na 70 ponovno + upotrijebiv¹i C-x f. + +Ako napravite promjene u sredini paragrafa, Auto Fill mod ga neæe +cijelog reformatirati. +Za preoblikovanje paragrafa, utipkajte M-q (Meta-q) s kursorom unutar +paragrafa. + +>> Pomaknite kursor na prethodni paragraf, i stisnite M-q. + + +* TRA®ENJE +---------- + +Emacs mo¾e tra¾iti nizove (grupe uzastopnih znakova ili rijeèi) bilo +prema naprijed ili prema natrag kroz tekst. Tra¾enje niza je naredba +kojom se pomièe kursor; ona æe pomaknuti kursor do sljedeæeg mjesta na +kom se niz pojavljuje. + +Emacsova naredba za tra¾enje se razlikuje od sliènih naredbi veæine +editora po tome ¹to je "postupna" (eng. incremental). To znaèi da se +pretra¾ivanje odvija dok upisujete niz koji tra¾ite. + +Naredba kojom poèinjete naredbu je C-s za tra¾enje prema naprijed, i +C-r za tra¾enje unatrag. ALI ÈEKAJTE! Nemojte ih odmah isprobati. + +Kad utipkate C-s, primijetit æete da se tekst "I-search" pojavljuje +kao prompt u prostoru za poruke. Ovo vam ka¾e da je Emacs u stanju +postupnog tra¾enja, i da èeka da upi¹ete ¹to ¾elite tra¾iti. + zaustavlja tra¾enje. + +>> Sad stisnite C-s da zapoènete pretra¾ivanje. POLAKO, znak po znak, + utipkajte rijeè `kursor', radeæi stanku izmeðu znakova da uoèite + ¹to se dogaða s kursorom. + Sad ste na¹li "kursor", jednom. +>> Stisnite C-s opet, da naðete sljedeæe pojavljivanje "kursora". +>> Sad stisnite èetiri puta, i gledajte kako se kursor + pomièe. +>> Stisnite da prekinete tra¾enje. + +Jeste li vidjeli ¹to se dogodilo? Za vrijeme inkrementalnog tra¾enja, +Emacs poku¹ava otiæi na mjesto gdje se pojavljuje niz kojeg ste do sad +utipkali, osvjetljavajuæi ga zbog preglednosti. Za odlazak na +sljedeæe mjesto gdje se "kursor" pojavljuje, samo opet stisnite C-s. +Ako ni jedno takvo mjesto ne postoji, Emacs æe se oglasiti zvuènim +signalom i reæi vam da pretraga niju uspjela ("failing"). Pretragu +mo¾ete prekinuti i pomoæu C-g. + + +PRIMJEDBA: Na nekim sustavima, tipkanje C-s æe smrznuti sustav i vi¹e +neæete vidjeti daljnji Emacsov output. To pokazuje da "prednost" +operativnog sustava zvana "kontrola toka" (eng. flow control) presreæe +C-s i ne da mu da doðe do Emacsa. Pritisak na C-q æe odmrznuti ekran. +Tad pogledajte odjeljak "Spontaneous Entry to Incremental Search" +Emacsovog manuala za savjet kako se nositi s ovom "predno¹æu". + +Ako za vrijeme postupnog tra¾enja pritisnete , uoèit æete +da je zadnji znak niza izbrisan i da se pretraga vratila na zadnje +mjesto. Na primjer, pretpostavimo da ste stisnuli "k" ne bi li na¹li +prvo pojavljivanje "k". Ako sad stisnete "u", kursor æe se pomaknuti +na mjesto prvog pojavljivanja "ku". Sad stisnite . Ovo æe +ukloniti "u" iz tra¾enog niza, i pomaknuti kursor natrag na prvu +pojavu "k". + +Ako ste usred tra¾enja i stisnete kontrolni ili meta znak (s nekoliko +iznimki -- znakova koji imaju posebno znaèenje pri tra¾enju, kao ¹to +su C-s i C-r), tra¾enje se zaustavlja. + +C-s zapoèinje pretragu koja tra¾i bilo koju pojavu tra¾enog niza NAKON +trenutnog polo¾aja kursora. Ako ¾elite tra¾iti ne¹to ¹to se +pojavljuje ranije u tekstu, stisnite C-r. Sve ¹to smo rekli za C-s +vrijedi i za C-r, jedino ¹to je smjer pretrage suprotan. + + +* VI©ESTRUKI PROZORI +-------------------- + +Jedna od lijepih stvari u Emacsu je ¹to mo¾ete prikazati vi¹e prozora +na ekranu istovremeno. + +>> Dovedite kursor do ovog reda i stisnite C-u 0 C-l. + +>> Sad stisnite C-x 2, ¹to razdvaja ekran na dva prozora. + Oba prozora prikazuju ove upute. Kursor ostaje u gornjem prozoru. + +>> Stisnite C-M-v da pomaknete donji prozor. + (Ako nemate pravu tipku Meta, stisnite ESC C-v.) + +>> Stisnite C-x o ("o" kao eng. "other", drugi) da pomaknete kursor u + donji prozor. +>> U donjem se prozoru pomièite s C-v i M-v. + Nastavite èitati ove upute u gornjem prozoru. + +>> Opet stisnite C-x o da pomaknete kursor natrag u gornji prozor. + Kursor u gornjem prozoru je upravo gdje je prije bio. + +Mo¾ete stalno koristiti C-x o za pomicanje meðu prozorima. Svaki +prozor ima vlastiti polo¾aj kursora, ali samo jedan prozor zapravo +prikazuje kursor. Sve uobièajene naredbe za editiranja djeluju na +prozoru u kojem je kursor. Taj prozor nazivamo "izabrani prozor" +(eng. selected window). + +Naredba C-M-v korisna je kad editirate tekst u jednom prozoru, a drugi +koristite za referencu. Tada mo¾ete dr¾ati kursor uvijek u prozoru +gdje editirate, a napredovati kroz onaj drugi s C-M-v. + +C-M-v je primjer CONTROL-META znaka. Ako imate pravu tipku META, +mo¾ete dobiti C-M-v dr¾eæi zajedno i CTRL i META, dok tipkate v. Nema +veze da li je CTRL ili META "prvi", jer obje ove tipke rade +mijenjajuæi znakove koji pi¹ete. + +Ako nemate pravu META tipku, a umjesto nje koristite ESC, tad je +poredak va¾an: morate stisnuti ESC praæen s CTRL-v; CTRL-ESC v neæe +raditi. Razlog za ovo je ¹to je ESC tipka za sebe, a ne modifikator. + +>> Pritisnite C-x 1 (u gornjem prozoru) da se rije¹ite donjeg + prozora. + +(Da ste stisnuli C-x 1 u donjem prozoru, rije¹ili biste se gornjeg. +Ovu naredbu mo¾ete shvatiti kao "Ostavi samo jedan prozor -- onaj u +kojem veæ jesam.") + +Ne morate prikazivati isti spremnik u oba prozora. Ako pritisnete C-x +C-f da naðete datoteku u jednom prozoru, drugi se prozor ne mijenja. +Mo¾ete naæi datoteku u svakom prozoru neovisno o drugima. + +Evo jo¹ jednog naèina da upotrijebite dva prozora za prikaz dvije +razlièite stvari: + +>> Utipkajte C-x 4 C-f, a zatim ime neke od va¹ih datoteka. + Zavr¹ite s . Uoèite da se navedena datoteka pojavila u + donjem prozoru, a takoðer i kursor. + +>> Pritisnite C-x o za povrat u gornji prozor, i C-x 1 da uklonite + donji. + + +* REKURZIVNE RAZINE EDITIRANJA +------------------------------ + +Ponekad æete po¾eljeti uæi u ono ¹to se zove "rekurzivna razina +editiranja" (eng. recursive editing level). Ovo je naznaèeno uglatim +zagradama u statusnom redu, koje okru¾uju okrugle zagrade oko naziva +moda. Na primjer, vidjeli biste [(Fundamental)] umjesto +(Fundamental). + +Za izlazak iz rekurzivnog editiranja, pritisnite ESC ESC ESC. To je +vi¹enamjenska naredba za "izlazak". Mo¾ete je koristiti i za +uklanjanje dodatnih prozora, kao i za izlazak iz minispremnika. + +>> Stisnite M-x za ulazak u minispremnik; potom utipkajte ESC ESC ESC + za izlaz. + +Iz rekurzivne razine editiranja ne mo¾ete izaæi s C-g. To je zato ¹to +se C-g koristi za otkazivanje naredbi i argumenata UNUTAR te razine +editiranja. + + +* DODATNA POMOÆ +--------------- + +U ovim smo uputama poku¹ali dati upravo toliko informacija da mo¾ete +poèeti koristiti Emacs. Toliko je toga prisutno u Emacsu da bi bilo +nemoguæe sve to ovdje objasniti. Meðutim, mo¾da po¾elite nauèiti vi¹e +o Emacsu, jer on ima jo¹ puno korisnih prednosti. Emacs ima naredbe +za èitanje dokumentacije o Emacsovim naredbama. Ove naredbe "pomoæi" +sve poèinju sa znakom Control-h, koji se zove "znak za pomoæ" +(eng. the Help character). + +Za kori¹tenje naredbi pomoæi, stisnite znak C-h, praæen znakom koji +ka¾e koju vrstu pomoæi ¾elite. Ako ste ZAISTA izgubljeni, stisnite +C-h ? i Emacs æe vam reæi koje vrste pomoæi mo¾e dati. Ako stisnete +C-h, ali se predomislite, samo pritisnite C-g za otkaz pomoæi. + +(Na nekim je sistemima promijenjeno znaèenje C-h. Ovo se zaista ne bi +smjelo raditi, pa se po¾alite sistemskom administratoru. U meðuvremenu, +ako C-h ne prikazuje poruku o pomoæi na dnu ekrana, poku¹ajte upisati +M-x help RET umjesto toga.) + +Osnovna naredba pomoæi je C-h c. Napi¹ite C-h, potom c, i znak ili +niz znakova, i Emacs æe pokazati vrlo kratak opis naredbe. + +>> Stisnite C-h c Control-p. + Poruka bi trebala biti poput: + + C-p runs the command previous-line + + (C-p pokreæe naredbu previous-line) + +Ovo vam ka¾e "ime funkcije". Imena funkcija se koriste uglavnom za +mijenjanje i pro¹irivanje Emacsa. Ali buduæi da se imena funkcija +biraju tako da pokazuju ¹to naredba radi, ona mogu poslu¾iti i kao +vrlo kratka dokumentacija -- dovoljna da vas podsjeti na naredbu koju +veæ znate. + +Vi¹e-znakovne naredbe kao ¹to su C-x C-s i (ako nemate tipku META, +EDIT ili ALT) v su takoðer dozvoljene nakon C-h c. + +Za vi¹e podataka o naredbi, pritisnite C-h k umjesto C-h c. + +>> Stisnite C-h k Control-p. + +Osim imena, sad vidite i dokumentaciju funkcije u Emacsovom prozoru. +Kad zavr¹ite s èitanjem ispisa, stisnite q da se rije¹ite teksta. + +Evo nekoliko korisnih moguænosti C-h: + + C-h f Opi¹i funkciju. Upi¹ete ime funkcije. + +>> Poku¹ajte stisnuti C-h f previous-line. + Ovo æe ispisati sve ¹to Emacs zna o funkciji koja implementira + naredbu C-p. + + C-h a Hiper Apropos. Upi¹ite rijeè, i Emacs æe popisati sve + funkcije i varijable èija imena sadr¾e rijeè. Naredbe + koje se mogu izvr¹iti s Meta-x bit æe oznaèene + zvjezdicom slijeva. + +>> Utipkajte C-h a newline. + +Ovo prikazuje hipertekstualni spisak svih funkcija i varijabli s +"newline" u imenima. Stisnite , ili pritisnite srednju tipku +mi¹a da saznate vi¹e o funkciji ili varijabli. Stisnite `q' za izlaz +iz hiper-aproposa. + + +* ZAKLJUÈAK +----------- + +Upamtite, za trajan izlaz iz Emacsa stisnite C-x C-c. Za privremeni +izlaz u ljusku upotrijebite C-z. (pod X-ima, ovo ikonizira trenutni +Emacsov okvir.) + +Ove upute su predviðene da budu razumljive svim novim korisnicima, pa +ako vam je ne¹to ovdje nejasno, nemojte sjediti i kriviti sebe - +¾alite se! + + +KOPIRANJE +--------- + +Ove upute potjeèu iz duge loze Emacsovih uputa, poèev¹i od onih koje +je napisao Stuart Cracraft za izvorni Emacs. Ben Wing je dopisao +poglavlje o X Windowsima. Martin Buchholz i Hrvoje Nik¹iæ su dodali +jo¹ ispravki vezanih uz XEmacs. + +Na Hrvatski preveo Hrvoje Nik¹iæ, uz dodatnu lekturu Denisa Pleiæa. + +Ova verzija uputa je, kao i GNU Emacs, pod autorskim pravima, i dolazi +s dozvolom redistribuiranja uz sljedeæe uvjete: + +(c) 1985, 1996 Free Software Foundation, sva prava zadr¾ana. + + Svakome je dozvoljeno praviti ili distribuirati nepromijenjene + kopije ovog dokumenta, na bilo kojem mediju, uz uvjet da su + saèuvane poruka o autorskim pravima i dozvolama, i da distributer + daje drugima prava za daljnju redistribuciju, kako ovdje pi¹e. + + Dozvoljena je distribucija izmijenjenih verzija ovog dokumenta ili + njegovih djelova, pod gore navedenim uvjetima, uz dodatni uvjet da + sadr¾i obavijest o zadnjoj promjeni. + +Uvjeti kopiranja samog Emacsa su slo¾eniji, ali u istom duhu. Molimo +vas da proèitate datoteku COPYING, i da podijelite kopije GNU Emacsa +svojim prijateljima. Pomozite nam zgaziti opstrukcionizam +("vlasni¹tvo") nad softverom koristeæi, pi¹uæi i dijeleæi slobodan +softver! + + +This tutorial descends from a long line of Emacs tutorials +starting with the one written by Stuart Cracraft for the original Emacs. +Ben Wing updated the tutorial for X Windows. Martin Buchholz and +Hrvoje Niksic added more corrections for XEmacs. + +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. + +The conditions for copying Emacs itself are more complex, but in the +same spirit. Please read the file COPYING and then do give copies of +GNU Emacs to your friends. Help stamp out software obstructionism +("ownership") by using, writing, and sharing free software! diff --git a/etc/TUTORIAL.ja b/etc/TUTORIAL.ja new file mode 100644 index 0000000..e7cfc57 --- /dev/null +++ b/etc/TUTORIAL.ja @@ -0,0 +1,741 @@ + ============================== + $BF|K\8l(B GNUEMACS(Mule) $BF~LgJT(B + ============================== + +$BCm0U!'(B $B$3$NF~LgJT$O!"!V=,$&$h$j47$l$m!W$r%b%C%H!<$K:n@.$5$l$F$$$^(B + $B$9!#(B">>" $B$+$i;O$^$k9T$O!"$=$N;~2?$r$9$Y$-$+$r;X<($7$F$$$^$9!#(B + + + Mule $B$N%3%^%s%I$rF~NO$9$k$H$-$K$O!"0lHLE*$K%3%s%H%m!<%k!&%-! $B%3%s%H%m!<%k!&%-!<$r2!$7$?$^$^!"(B<$BJ8;z(B>$B%-!<$r2!$7$^$9!#Nc$($P!"(B + C-f $B$O!"%3%s%H%m!<%k!&%-!<$r2!$7$J$,$i(B f $B$N%-!<$r2!$9$3$H$r(B + $B0UL#$7$^$9!#(B +<> + >> $B$=$l$G$O!"(BC-v$B!J(BView Next Screen; $B $B%(%9%1!<%W!&%-!<$r2!$7$F$+$iN%$7!"$=$l$+$i(B<$BJ8;z(B>$B%-!<$r2!$7$^(B + $B$9!#(B + +$BCm0U!'(B <$BJ8;z(B>$B$O!"BgJ8;z$G$b>.J8;z$G$b%3%^%s%I$H$7$F$OF1$80UL#$K$J$j(B + $B$^$9!#%a%?%-!<$,;H$($k$J$i$P(B ESC <$BJ8;z(B> $B$NBe$o$j$K(B M-<$BJ8;z(B> + ($B%a%?%-!<$r2!$7$?$^$^(B<$BJ8;z(B>$B%-!<$r2!$9(B) $B$,;H$($^$9!#(B + +$B=EMW$G$9!'(B Emacs$B$r=*N;$5$;$?$$;~$O!"(BC-x C-c $B$r%?%$%W$7$^$9!#(BEmacs$B$r(Bcsh + $B$+$i5/F0$7$F$$$k>l9g!"%5%9%Z%s%I$9$k!J0l;~E*$K;_$a$k(B)$B$3$H$,(B + $B=PMh$^$9!#(BEmacs$B$r%5%9%Z%s%I$9$k$K$O!"(BC-z$B$r%?%$%W$7$^$9!#(B + + + $B$5$F!"$3$l$+$i$O!"0l2hLLJ,FI$_=*$($?$i!"(BC-v $B$rF~NO$7$F9T$C$F2<$5$$!#(B + + $BA0$N2hLL$H> ESC v $B$H(B C-v $B$r;H$C$F!"A08e$K0\F0$9$k$3$H$r2?2s$+;n$7$F$_$J$5$$!#(B + +$BMWLs(B +==== + $B%U%!%$%k$r2hLLKh$K8+$F9T$/$K$O!"$9!#$3$N$H$-!"85%+!<%=%k$N$"$C$?9T$,(B + $B2hLL$NCf1{$K$/$k$h$&$K$9$k(B + + >> $B:#%+!<%=%k$,$I$3$K$"$k$+!"$=$N6a$/$K$I$s$J%F%-%9%H$,=q$+$l$F$$$k(B + $B$+$r3P$($J$5$$!#(BC-l $B$r%?%$%W$7!"%+!<%=%k$,$I$3$K0\F0$7$?$+!"$=$N(B + $B6a$/$N%F%-%9%H$O$I$&$J$C$?$+$rD4$Y$F$_$J$5$$!#(B + +$B4pK\E*$J%+!<%=%k$N@)8f(B +====================== + + $B2hLLKh$N0\F0$O$G$-$k$h$&$K$J$j$^$7$?!#:#EY$O!"2hLL$NCf$G!"FCDj$N>l=j$K(B +$B0\F0$9$k$?$a$NJ}K!$r21$($^$7$g$&!#$3$l$K$O$$$/$D$+$N$d$jJ}$,$"$j$^$9!#0l$D(B +$B$NJ}K!$O!"A0(B(previous)$B$l!"(BC-p, C-n, C-f,C-b $B$K3d$jEv$F$i$l$F(B +$B$*$j!"8=:_$N>l=j$+$i?7$7$$>l=j$K%+!<%=%k$r0\F0$5$;$^$9!#?^$G=q$1$P!"(B + + + $BA0$N9T!$(BC-p + : + : + $B8e$NJ8;z!$(BC-b .... $B8=:_$N%+!<%=%k0LCV(B .... $B@h$NJ8;z!$(BC-f + : + : + $B$l!"(BPrevious, Next, Backward, Forward $B$NF,J8;z$K$J$C$F(B +$B$$$k$N$G!"21$($d$9$$$G$7$g$&!#$3$l$i$O!"4pK\E*$J%+!<%=%k0\F0%3%^%s%I$G$"$j!"(B +$B$$$D$G$b;H$&$b$N$G$9!#(B + + >> C-n $B$r2?2s$+%?%$%W$7!"!J:#!"$"$J$?$,FI$s$G$$$k!K$3$N9T$^$G%+!<%=(B + $B%k$r0\F0$5$;$J$5$$!#(B + + >> C-f $B$r;H$C$F9T$NCf$[$I$K0\F0$7!"(BC-p $B$G2?9T$+>e$K0\F0$7$F$_$J$5(B + $B$$!#%+!<%=%k$N0LCV$NJQ2=$KCm0U$7$J$5$$!#(B + + >> $B9T$N@hF,$G(B C-b $B$r%?%$%W$7$F$_$J$5$$!#%+!<%=%k$O$I$3$K0\F0$7$^$9$+(B + $B!)$5$i$K$b$&>/$7(B C-b $B$r%?%$%W$7!":#EY$O(B C-f $B$G9TKv$NJ}$KLa$j$J$5(B + $B$$!#%+!<%=%k$,9TKv$r1[$($k$H$I$&$J$j$^$9$+!)(B + + + $B2hLL$N@hF,$dKvHx$r1[$($F%+!<%=%k$r0\F0$5$;$h$&$H$9$k$H!"$=$NJ}8~$K$"$k(B +$B%F%-%9%H$,0\F0$7$FMh$F!"%+!<%=%k$O>o$K2hLLFb$K$"$k$h$&$K$5$l$^$9!#(B + + >> C-n $B$r;H$C$F!"%+!<%=%k$r2hLL$N2> ESC f $B$d(B ESC b $B$r2?2s$+%?%$%W$7$F$_$J$5$$!#(BC-f $B$d(B C-b $B$HJ;MQ$7$F(B + $B$_$J$5$$!#(B + + C-f $B$d(B C-b $B$KBP$9$k!"(BESC f $B$d(B ESC b $B$NN`;w@-$KCmL\$7$^$7$g$&!#B?$/$N(B +$B>l9g!"(BESC <$BJ8;z(B>$B$OJ8=q4X78$N=hM}$K;H$o$l!"0lJ}(BC-<$BJ8;z(B>$B$O$=$l$h$j$b$b$C$H4p(B +$BK\E*$JBP>]!JJ8;z$H$+9T$H$+!K$KBP$9$kA`:n$K;H$o$l$^$9!#(B + + C-a $B$H(B C-e $B$bCN$C$F$$$FJXMx$J%3%^%s%I$G$9!#(BC-a $B$O%+!<%=%k$r9T$N@hF,$K(B +$B0\F0$5$;!"(BC-e $B$O9T$NKvHx$K0\F0$5$;$^$9!#(B + + + >> C-a $B$r#22s!"$=$l$+$i(B C-e $B$r#22sF~NO$7$F$_$J$5$$!#$3$l$i$N%3%^%s%I(B + $B$r#22s0J>e7+JV$7$F$b!"%+!<%=%k$O$=$l0J>e0\F0$7$J$$$3$H$KCm0U!#(B + + $B$"$HFs$D!"4JC1$J%+!<%=%k0\F0%3%^%s%I$,$"$j$^$9!#%U%!%$%k$N@hF,$K0\F0$9(B +$B$k(B ESC < $B$H!"%U%!%$%k$NKvHx$K0\F0$9$k(B ESC > $B$G$9!#(B + + $B%F%-%9%HCf$G%+!<%=%k$NB8:_$9$k0LCV$r!V%]%$%s%H!W$H8F$S$^$9!#8@$$$+$($l(B +$B$P!"%+!<%=%k$O!"%F%-%9%H$N$I$3$K%]%$%s%H$,$"$k$+$r2hLL>e$G<($7$F$$$k$N$G$9!#(B + + $B0J2<$KC1=c$J0\F0A`:n$K$D$$$FMWLs$7$^$9!#$3$N$J$+$K$O!"C18l$d9TC10L$G$N(B +$B0\F0%3%^%s%I$b4^$^$l$F$$$^$9!#(B + + C-f $B0lJ8;z@h$K?J$`(B + C-b $B0lJ8;z8e$KLa$k(B + + ESC f $B0lC18l@h$K?J$`(B + ESC b $B0lC18l8e$KLa$k(B + + C-n $B $B%U%!%$%k$N:G8e$K0\F0(B + + >> $B3F!9$N%3%^%s%I$r;n$7$F$_$J$5$$!#$3$l$i$N%3%^%s%I$O!":G$b$7$P$7$P(B + $B;H$o$l$k$b$N$G$9!#:G8e$NFs$D$G$O!"$3$N>l=j$H$ON%$l$?$H$3$m$K0\F0(B + $B$9$k$N$G!"(B C-v $B$d(B ESC v $B$r;H$C$F$3$3$KLa$C$FMh$k$h$&$K$7$J$5$$!#(B + + Emacs$B$NB>$N%3%^%s%I$HF1MM$K!"$3$l$i$N%3%^%s%I$K$O!"7+$jJV$7$N2s?t$r;X(B +$BDj$9$k0z?t(B $B$rM?$($k$3$H$,$G$-$^$9!#$=$N$?$a$K$O!"%3%^%s%I$rF~NO$9$kA0$K!"(B +C-u$B$KB3$$$F7+$jJV$92s?t$rF~NO$7$^$9!#(B + + $BNc$($P!"(BC-u 8 C-f $B$H$9$k$H!"#8J8;zJ,@h$K0\F0$7$^$9!#(B + + >> C-n $B$"$k$$$O(B C-p $B$KE,Ev$J0z?t$r;XDj$7$F!"0l2s$N0\F0$G$J$k$Y$/$3(B + $B$N9T$N6a$/$KMh$k$h$&$K$7$F$_$J$5$$!#(B + + C-v $B$d(B ESC v $B$K$D$$$F$O>/$70c$$$^$9!#$3$N>l9g!";XDj$5$l$??t$N9T$@$12h(B +$BLL$r0\F0$9$k$3$H$K$J$j$^$9!#(B + + >> C-u 3 C-v $B$HF~NO$7$F$_$J$5$$!#(B + + $B85$KLa$k$K$O!"(BC-u 3 ESC v $B$r;H$($P$h$$$N$G$9!#(B + +$BCf;_%3%^%s%I(B +============ + + C-g $B$H$$$&%3%^%s%I$G!"F~NO$rI,MW$H$9$k$h$&$J%3%^%s%I$rCf;_$9$k$3$H$,(B +$B$G$-$^$9!#Nc$($P!"0z?t$rF~NO$7$F$$$kESCf$d!"#2$D0J>e$N%-!> C-u 100 $B$r%?%$%W$7$F0z?t$r#1#0#0$K@_Dj$7!"(BC-g $B$r%?%$%W$7$J$5$$!#(B + $B$=$N$"$H$G(B C-f $B$r%?%$%W$7$F$_$J$5$$!#2?J8;z0\F0$7$^$7$?$+!)$b$7(B + $B4V0c$C$F(B ESC $B$rF~NO$7$F$7$^$C$?;~$b!"(BC-g $B$rF~NO$9$l$PC$;$^(B + $B$9!#(B + +$B%(%i!<(B +====== + + $B;~$K$O!"(BEmacs$B$G5v$5$l$F$$$J$$A`:n$r$7$F$7$^$&$3$H$,$"$j$^$9!#Nc$($P!"(B +$B%3%^%s%I$NDj5A$5$l$F$$$J$$%3%s%H%m!<%k!&%-!<$rF~NO$7$F$7$^$C$?;~$K$O!"(BEmacs +$B$O%Y%k$rLD$i$7!"$5$i$K!"2hLL$N0lHV2<$K!"2?$,0-$+$C$?$+$rI=<($7$^$9!#(B + + Emacs$B$N%P!<%8%g%s$K$h$C$F$O!"$3$NF~LgJT$K=q$+$l$F$$$k$3$H$rl9g$,$"$jF@$^$9!#$=$NMM$J>l9g$K$O!"%(%i!<%a%C%;!<%8$,I=<($5$l$^$9$+$i!"(B +$B2?$+%+!<%=%k0\F0%-!<$r2!$7$F!"$=$N$l$KBP$7$F%F%-%9%H$r(B +$BI=<($9$k$3$H$,$G$-$^$9!#%X%k%W$d!"4v$D$+$N%3%^%s%I$+$i$N=PNO$rI=<($9$k$?$a(B +$B$K8=$l$?M>J,$J%&%#%s%I%&$r>C$9$?$a$K!"$N%&%#%s%I%&$r>C$7$F!"%+!<%=%k$N$"$k%&%#%s%I%&$r!"2hLLA4BN(B +$B$K9-$2$^$9!#(B + + >> $B%+!<%=%k$r$3$N9T$K;}$C$F$-$F!"(BC-u 0 C-l $B$H%?%$%W$7$^$9!#(B + + >> C-h k C-f $B$H%?%$%W$7$J$5$$!#?7$7$$%&%#%s%I%&$,(B C-f $B%3%^%s%I$N%I%-(B + $B%e%a%s%H$rI=<($9$k$?$a$K8=$l$k$HF1;~$K!"$3$N%&%#%s%I%&$,$I$N$h$&(B + $B$K=L$`$+$r4Q;!$7$J$5$$!#(B + + >> C-x 1$B$H%?%$%W$7$F!"%I%-%e%a%s%H$N8=$o$l$F$$$?%&%#%s%I%&$r>C$7$J$5(B + $B$$!#(B + +$BA^F~$H:o=|(B +========== + + $B%F%-%9%H$r%?%$%W$7$?$1$l$P!"C1$K$=$l$r%?%$%W$9$k$@$1$G9=$$$^$;$s!#L\$K(B +$B8+$($kJ8;z!J(B'A','7','*','$B$"(B'$B$J$I!K$O(BEmacs$B$K$h$C$F%F%-%9%H$G$"$k$H$_$J$5$l!"(B +$B$=$N$^$^A^F~$5$l$^$9!#9T$N=*$o$j$O2~9TJ8;z$GI=$5$l!"$3$l$rF~NO$9$k$K$O(B + $B$r%?%$%W$7$^$9!#(B + + $BD>A0$KF~NO$7$?J8;z$r:o=|$9$k$K$O!"(B $B$rF~NO$7$^$9!#(B $B$O!"(B +$B%-!<%\!<%I$G!V(BDelete$B!W$H=q$$$F$"$k%-!<$r2!$7$FF~NO$7$^$9!#!V(BDelete$B!W$N$+$o(B +$B$j$K!V(BRubout$B!W$H=q$$$F$"$k$+$bCN$l$^$;$s!#$h$j0lHLE*$K$O!"(B $B$O!"8=:_(B +$B%+!<%=%k$N$"$k0LCV$ND>A0$NJ8;z$r:o=|$7$^$9!#(B + + >> $BJ8;z$r$$$/$D$+%?%$%W$7!"$=$l$+$i$=$l$i$r(B $B$r;H$C$F:o=|$7(B + $B$J$5$$!#(B + + >> $B1&%^!<%8%s$r1[$($k$^$G%F%-%9%H$r%?%$%W$7$J$5$$!#%F%-%9%H$,0l9T$N(B + $BI}0J>e$KD9$/$J$k$H!"$=$N9T$O2hLL$+$i$O$_=P$7$F!V7QB3!W$5$l$^$9!#(B + $B1&C<$K$"$k(B'\'$B5-9f$O!"$=$N9T$,7QB3$5$l$F$$$k$3$H$rI=$7$F$$$^$9!#(B + Emacs$B$O!"8=:_JT=8Cf$N0LCV$,8+$($k$h$&$K9T$r%9%/%m!<%k$7$^$9!#2hLL(B + $B$N1&$"$k$$$O:8$NC<$K$"$k(B'\'$B5-9f$O!"$=$NJ}8~$K9T$,$^$@B3$$$F$$$k$3(B + $B$H$rI=$7$F$$$^$9!#(B + + $B$3$l$O!"J8>O$G@bL@$9$k$h$j> $B@h$[$IF~NO$7$?!"7QB3$5$l$?9T$N>e$K%+!<%=%k$r$b$C$F$$$-!"(BC-d $B$G%F(B + $B%-%9%H$r:o=|$7$F!"%F%-%9%H$,0l9T$K<}$^$k$h$&$K$7$F$_$J$5$$!#7QB3(B + $B$rI=$9(B'\'$B5-9f$O>C$($^$7$?$M!#(B + + >> $B%+!<%=%k$r9T$N@hF,$K0\F0$7!"(B $B$rF~NO$7$J$5$$!#$3$l$O$=$N9T(B + $B$ND>A0$N9T6g@Z$j$r:o=|$9$k$N$G!"$=$N9T$,A0$N9T$H$D$J$,$C$F$7$^$$(B + $B$^$9!#$D$J$,$C$?9T$,2hLL$NI}$h$jD9$/$J$k$H!"7QB3$NI=<($,$5$l$k$G(B + $B$7$g$&!#(B + + >> $B$r2!$7$F!"$b$&0lEY9T6g@Z$j$rA^F~$7$J$5$$!#(B + + Emacs$B$N$[$H$s$I$N%3%^%s%I$O!"7+$jJV$7$N2s?t$rM?$($k$3$H$,$G$-$^$9!#$3(B +$B$N$3$H$O!"J8;z$NA^F~$K$D$$$F$bEv$F$O$^$j$^$9!#(B + + >> C-u 8 * $B$HF~NO$7$F$_$J$5$$!#$I$&$J$j$^$7$?$+!#(B + + $BFs$D$N9T$N4V$K6uGr9T$r:n$j$?$$>l9g$K$O!"FsHVL\$N9T$N@hF,$K9T$-!"(BC-o $B$r(B +$BF~NO$7$^$9!#(B + + >> $BE,Ev$J9T$N@hF,$K9T$-!"$=$3$G(B C-o $B$rF~NO$7$F$_$J$5$$!#(B + + $B$3$l$G!"(BEmacs$B$G!"%F%-%9%H$rF~NO$7!"$^$?4V0c$$$r=$@5$9$k$b$C$H$b4pK\E*(B +$B$JJ}K!$r3X$s$@$3$H$K$J$j$^$9!#J8;z$HF1$8MM$K!"C18l$d9T$b:o=|$9$k$3$H$,$G$-(B +$B$^$9!#:o=|A`:n$K$D$$$FMWLs$9$k$H $B%+!<%=%k$ND>A0$NJ8;z$r:o=|(B + C-d $B%+!<%=%k$N$"$kJ8;z$r:o=|(B + + ESC $B%+!<%=%k$ND>A0$NC18l$r:o=|(B + ESC d $B%+!<%=%k0LCV0J9_$K$"$kC18l$r:o=|(B + + C-k $B%+!<%=%k0LCV$+$i9TKv$^$G$r:o=|(B + + $B2?$+$r:o=|$7$?8e$G!"$=$l$r85$KLa$7$?$/$J$k$3$H$,$"$j$^$9!#(BEmacs$B$O!"0l(B +$BJ8;z$h$j$bBg$-$$C10L$G:o=|$r9T$C$?;~$K$O!":o=|$7$?FbMF$rJ]B8$7$F$*$-$^$9!#(B +$B85$KLa$9$K$O!"(BC-y $B$r;H$$$^$9!#Cm0U$7$?$$$N$O!"(BC-y $B$r:o=|$r9T$C$?>l=j$@$1$G(B +$B$O$J$/!"$I$3$K$G$b=PMh$k$3$H$G$9!#(BC-y $B$O!"J]B8$5$l$?%F%-%9%H$r8=:_%+!<%=%k(B +$B$N$"$k>l=j$KA^F~$9$k$?$a$N%3%^%s%I$G$9$+$i!"$3$l$r;H$C$F%F%-%9%H$N0\F0$r9T(B +$B$&$3$H$,$G$-$^$9!#(B + + $B:o=|$r9T$&%3%^%s%I$K$O!"(B"Delete" $B%3%^%s%I$H!"(B"Kill" $B%3%^%s%I$H$,$"$j$^(B +$B$9!#(B"Kill" $B%3%^%s%I$G$O:o=|$5$l$?$b$N$OJ]B8$5$l$^$9$,!"(B"Delete" $B%3%^%s%I$G(B +$B$OJ]B8$5$l$^$;$s!#$?$@$7!"7+$jJV$72s?t$,M?$($i$l$k$H!"J]B8$5$l$^$9!#(B + + >> C-n $B$r#22s$[$I%?%$%W$7$F!"2hLL$NE,Ev$J>l=j$K0\F0$7$J$5$$!#$=$7$F!"(B + C-k $B$G!"$=$N9T$r:o=|$7$J$5$$!#(B + + $B0l2sL\$N(B C-k $B$G$=$N9T$NFbMF$,:o=|$5$l!"$b$&0lEY(B C-k $B$rF~NO$9$k$H!"$=$N(B +$B9T<+?H$,:o=|$5$l$^$9!#$b$7!"(BC-k $B$K7+$jJV$72s?t$r;XDj$7$?>l9g$K$O!"$=$N2s?t(B +$B$@$1$N9T$,!JFbMF$H9T<+?H$H$,F1;~$K!K:o=|$5$l$^$9!#(B + + $B:#:o=|$5$l$?%F%-%9%H$O!"J]B8$5$l$F$$$k$N$G!"$=$l$r> C-y $B$r;n$7$F$_$J$5$$!#(B + + C-k $B$r2?EY$bB3$1$F9T$&$H!":o=|$5$l$k%F%-%9%H$O!"$^$H$a$FJ]B8$5$l!"(BC-y +$B$G!"$=$NA4$F$,> C-k $B$r2?EY$b%?%$%W$7$F$_$J$5$$!#(B + + >> $B%F%-%9%H$r$N%F%-%9%H$r:o=|$9$k$H$I$&(B +$B$J$k$G$7$g$&$+!#(BC-y $B$O!"$b$C$H$b:G6a:o=|$5$l$?$b$N$r> $B9T$r:o=|$7!"%+!<%=%k$r0\F0$5$;!"JL$N9T$r:o=|$7$J$5$$!#(BC-y $B$r9T$&(B + $B$H!"#2HVL\$N9T$,F@$i$l$^$9!#(B + +$BC$7(B(UNDO) +============== + + $B$$$D$G$b!"%F%-%9%H$rJQ99$7$?$1$l$I$b!"$=$l$r$b$H$KLa$7$?$$$H$-$O(BC-x u +$B$GD>$j$^$9!#IaDL$O4V0c$($?%3%^%s%I$rL58z$K$9$kF/$-$r$7$^$9!#7+$jJV$7$F(BUNDO +$B$r9T$J$*$&$H$9$k;~$O!"2?EY$b$=$N%3%^%s%I$r9T$J$($P=PMh$k$h$&$K$J$C$F$$$^$9!#(B + + >> $B$3$N9T$r(BC-k$B$G>C$7$F2<$5$$!#$=$7$F!"(BC-x u$B$GLa$7$F2<$5$$!#(B + + C-_$B$O!"(BUNDO$B$r9T$J$&!"$b$&0l$D$N%3%^%s%I$G$9!#5!G=$O!"(BC-x u$B$HF1$8$G$9!#(B + + C-_$B$d(BC-x u$B$K(BUNDO$B$N2s?t$r!"M?$($k$3$H$,=PMh$^$9!#(B + + +$B%U%!%$%k(B +======== + + $B%F%-%9%H$X$NJQ99$r1J5WE*$K$9$k$?$a$K$O!"$=$l$r%U%!%$%k$KJ]B8$7$J$1$l$P(B +$B$J$j$^$;$s!#J]B8$5$l$J$$$H!"$[$I$3$7$?JQ99$O!"(BEmacs$B$r=*N;$9$k$HF1;~$K<:$o$l(B +$B$F$7$^$$$^$9!#(B + + $B$$$^8+$F$$$k%U%!%$%k$KBP$7$F!"$"$J$?$NJT=8$r9T$C$?$b$N$r=q$-9~$_$^$9!#(B +$B$$$^8+$F$$$k%U%!%$%k$H$O!"4JC1$K$$$($PJT=8$7$F$$$k%U%!%$%k<+BN$N$3$H$G$9!#(B + + $B$"$J$?$,%U%!%$%k$r%;!<%V!JJ]B8$9$k!K$9$k$^$G!":#$^$G$NJQ99$OJT=8$7$F$$(B +$B$k%U%!%$%k$K=q$-9~$^$l$k;v$O$"$j$^$;$s!#$=$l$O!"$"$J$?$,$=$N$h$&$K9T$$$?$/(B +$B$J$$$N$K!"ESCf$^$GJQ99$r2C$($?$b$N$,>!A0(B +$B$rJQ$($F%*%j%8%J%k$N%U%!%$%k$r;D$7$^$9!#(B + +$BHw9M(B: $B$^$?!"(BEmacs$B$OITB,$N;vBV$KBP$7!"0lDj$N%?%$%_%s%0$4$H$K<+F0E*(B + $B$KJT=8$7$F$$$k%U%!%$%k$NFbMF$rL>A0$rJQ$($?%U%!%$%k$K%;!<%V$7(B + $B$^$9!#$3$l$K$h$C$F!"K|0l$N>l9g$O9T$C$?$NJQ99$KBP$7:G>.8B$NHo(B + $B32$G:Q$`$h$&$K$J$C$F$$$^$9!#(B + + $B2hLL$N2<$NJ}$r8+$k$H!"$3$N$h$&$J46$8$G%b!<%I%i%$%s$,I=<($5$l$F$$$k$H;W(B +$B$$$^$9!#(B + + +($BNc(B) [--]J:--**-Mule: MULE.tut (Fundamental) ---55%-------------- + + + $B$3$N(BEmacs$B%A%e!<%H%j%"%k$N%3%T!<$O(BMULE.tut$B$H8F$P$l$F$$$^$9!#%U%!%$%k$r(B +$B%U%!%$%s%I!J%U%!%$%k$r8+$D$1$F%P%C%U%!$KFI$_9~$`$3$H!K$9$k$H!"(BMULE.tut$B$NIt(B +$BJ,$KI=<($5$l$^$9!#Nc$($P!"(Bnew-file$B$H$$$&L>A0$N%U%!%$%k$r%U%!%$%s%I$7$?$J$i(B +$B$P!"(B"Mule: new-file"$B$H$$$&%b!<%I%i%$%s$K$J$k$G$7$g$&!#(B + +$BCm0U!'(B $B%b!<%I%i%$%s$K$D$$$F$O8e$[$I@bL@$7$^$9!#>/$7$*BT$A$r!#(B + + $B%U%!%$%k$r%U%!%$%s%I$7$?$j!"%;!<%V$7$?$j$9$k%3%^%s%I$O!"$3$l$^$G$N$b$N(B +$B$H$O0c$$!"#2$D$NJ8;z$+$i$J$C$F$$$^$9!#(BC-x $B$KB3$$$FF~NO$9$kJ8;z$,!"%U%!%$%k(B +$B$KBP$7$F9T$&A`:n$rI=$7$^$9!#(B + + $B$b$&0l$D$3$l$^$G$N$b$N$H0c$&E@$O!"%U%!%$%s%I$N;~!"%U%!%$%kL>$r(BEmacs$B$K(B +$BLd$o$l$^$9!#$3$N$3$H$r!"Cl9g$O%U%!%$%kL>$G$9!#(B + + C-x C-f $B%U%!%$%k$r8+$D$1$k!J%U%!%$%s%I$9$k!K(B + + Emacs$B$O%U%!%$%kL>$rJ9$$$F$-$^$9!#$=$l$O!"2hLL$N2<$N9T$K8=$l$^$9!#%U%!(B +$B%$%kL>$r;XDj$7$F$$$kItJ,$O!"%_%K%P%C%U%!$H8F$P$l$k$b$N$G$9!#%_%K%P%C%U%!$O(B +$B$3$NMM$J;H$o$lJ}$r$7$^$9!#%U%!%$%kL>$KB3$$$F!"%j%?!<%s%-!<$r2!$9$H!"%_%K%P(B +$B%C%U%!$KI=<($5$l$F$$$?FbMF$O$b$&I,MW$G$O$J$/$J$k$N$G>C$($F$7$^$$$^$9!#(B + + >> C-x C-f$B$H%?%$%W$7$?8e$K(BC-g$B$H%?%$%W$7$F2<$5$$!#%_%K%P%C%U%!$NFbMF(B + $B$rC$7!"$^$?!"(BC-x C-f$B%3%^%s%I$bC$7$^$9!#$H8@$&Lu$G!"2?$b(B + $B%U%!%$%k$r8+$D$1$k$h$&$J$3$H$O$7$^$;$s!#(B + + $B:#EY$O%U%!%$%k$r%;!<%V$7$F$_$^$7$g$&!#:#$^$G$NJQ99$rJ]B8$9$k$?$a$K$OA0$r$D$1$i$l$F;D$5$l$F$$$k$N$GFbMF$O<:$o$l$^$;$s!#$=(B +$B$N?7$7$$L>A0$O%*%j%8%J%k$N%U%!%$%k$NL>A0$K(B'~'$B$r$D$1$?$b$N$G$9!#(B + + $B%;!<%V$,=*$o$k$H!"(BEmacs$B$O%;!<%V$7$?%U%!%$%k$NL>A0$rI=<($7$^$9!#(B + + >> C-x C-s$B$H%?%$%W$7$F%A%e!<%H%j%"%k$N%3%T!<$r%;!<%V$7$F2<$5$$!#$=$N(B + $B;~!"2hLL$N2<$NJ}$K(B"Wrote ...../MULE.tut"$B$HI=<($5$l$^$9!#(B + + $B?7$7$$%U%!%$%k$r:n$k;~!"$"$?$+$b0JA0$+$i$"$C$?%U%!%$%k$r%U%!%$%s%I$9$k(B +$B$h$&$J%U%j$r$7$^$9!#$=$&$7$F!"$=$N%U%!%$%s%I$7$?%U%!%$%k$K%?%$%W$7$F$$$-$^(B +$B$9!#(B + + $B%U%!%$%k$r%;!<%V$7$h$&$H$7$?;~$K=i$a$F!"(BEmacs$B$O:#$^$GJT=8$7$F$$$?FbMF(B +$B$r%U%!%$%k$NCf$K=q$-9~$_$^$9!#(B + + +$B%P%C%U%!(B +======== + + $B$b$7!"#2HVL\$N%U%!%$%k$r(B C-x C-f $B$G> C-x C-b $B$H%?%$%W$7$J$5$$!#$=$l$>$l$N%P%C%U%!$,$I$N$h$&$KL>A0$r;}(B + $B$C$F$$$k$+!"$=$7$F!"$I$N$h$&$J%U%!%$%kL>$r$D$1$F$$$k$N$+4Q;!$7$J(B + $B$5$$!#(B + + $B%P%C%U%!$K$O%U%!%$%k$H0lCW$J$$$b$N$b$"$j$^$9!#$?$H$($P!"(B +"*Buffer List*" $B$H$$$&%U%!%$%k$O$"$j$^$;$s!#$3$l$O(B C-x C-b $B$K$h$C$F:n$i$l(B +$B$?%P%C%U%!%j%9%H$KBP$7$F$N%P%C%U%!$G$9!#(B + + $B$"$J$?$,8+$F$$$k(BEmacs$B%&%#%s%I%&Fb$K$"$k!"$I$s$J%F%-%9%H$G$b!"$$$:$l$+(B +$B$N%P%C%U%!Fb$K$"$j$^$9!#(B + + >> $B%P%C%U%!%j%9%H$r>C$9$?$a(B C-x 1 $B$H%?%$%W$7$J$5$$!#(B + + $B$b$7!"$"$k%U%!%$%k$N%F%-%9%H$KJQ99$r9T$J$C$F$+$i!"B>$N%U%!%$%k$rA0$K$h$k3HD%!#B3$1$F%3%^%s%I$NL>A0$rF~NO$7$^$9!#(B + + $B$3$l$i$O0lHL$K!"JXMx$@$1$l$I$b!"$3$l$^$G8+$F$-$?$b$N$[$IIQHK$K$OMQ$$$i(B +$B$l$J$$%3%^%s%I$N$?$a$N$b$N$G$9!#(BC-x C-f $B!J%U%!%$%s%I!K$d(B C-x C-s$B!J%;!<%V!K(B +$B$O$3$NCg4V$G$9!#B>$K!"(BC-x C-c$B!J%(%G%#%?$N=*N;!K$b$=$&$G$9!#(B + + C-z$B$O(BEmacs$B$rH4$1$k$N$KNI$/;H$o$l$kJ}K!$G$9!#(BEmacs$B$r=*N;$9$k$3$H$J$/!"(B +$B0lC6!"(Bcsh$B$N%l%Y%k$KLa$k$K$O0lHVNI$$J}K!$H8@$($k$G$7$g$&!#(BC-z$B$r9T$J$o$l$F$b(B +Emacs$B$O%9%H%C%W$7$F$$$k$@$1$G!"FbMF$,GK2u$5$l$k$H$$$&$3$H$O$"$j$^$;$s!#(B + +$BCm0U(B: $B$?$@$7(BX-window$B$G9T$J$C$F$$$k>l9g!"$b$7$/$O;HMQ$7$F$$$k%7%'%k(B + $B$,(Bsh$B$N;~$O!"$3$N8B$j$G$O$"$j$^$;$s!#(B + + + C-x $B%3%^%s%I$O!"$?$/$5$s$"$j$^$9!#$9$G$K3X$s$@$b$N$O0J2<$N$b$N$G$9!#(B + + C-x C-f $B%U%!%$%k$NJT=8!J(BFind$B!K(B + C-x C-s $B%U%!%$%k$NJ]B8!J(BSave$B!K(B + C-x C-b $B%P%C%U%!%j%9%H$NI=<((B + C-x C-c $B%(%G%#%?$r=*N;$9$k!#%U%!%$%k$NJ]B8$O!"<+F0E*$K$O9T$o$l$^$;(B + $B$s!#$7$+$7!"$b$7%U%!%$%k$,JQ99$5$l$F$$$l$P!"%U%!%$%k$NJ]B8(B + $B$r$9$k$N$+$I$&$+$rJ9$$$F$-$^$9!#J]B8$7$F=*N;$9$kIaDL$NJ}K!(B + $B$O!"(BC-x C-s C-x C-c $B$H$9$k$3$H$G$9!#(B + + $BL>A0$K$h$k3HD%%3%^%s%I$K$O!"$"$^$j;H$o$l$J$$$b$N$d!"FCDj$N%b!<%I$G$7$+(B +$B;H$o$J$$$b$N$J$I$,$"$j$^$9!#Nc$H$7$F!"(B"command-apropos" $B$r$H$j$"$2$^$9!#$3(B +$B$N%3%^%s%I$O%-!<%o!<%I$rF~NO$5$;!"$=$l$K%^%C%A$9$kA4$F$N%3%^%s%I$NL>A0$rI=(B +$B<($7$^$9!#(BESC x $B$H%?%$%W$9$k$H!"%9%/%j!<%s$N2<$K(B "M-x" $B$,I=<($5$l$^$9!#$3$l(B +$B$KBP$7$F!"A0!J:#$N>l9g!"(B"command-apropos"$B!K$rF~NO$7$^$9!#(B +"command-a" $B$^$GF~NO$7$?8e%9%Z!<%9$rF~$l$l$P!"8e$NItJ,$O<+F0E*$KJd$o$l$^$9!#(B +$B$3$N8e!"%-!<%o!<%I$rJ9$+$l$^$9$+$i!"CN$j$?$$J8;zNs$r%?%$%W$7$^$9!#$J$*!"%-!<(B +$B%o!<%I$rF~$l$J$$$H!"A4$F$N%3%^%s%I$,I=<($5$l$^$9!#(B + + >> ESC x $B$r%?%$%W$7!"B3$1$F!"(B"command-apropos" $B$"$k$$$O(B + "command-a" $B$H%?%$%W$7$^$9!#" + $B$H%?%$%W$7$^$9!#(B + + $B8=$l$?!V%&%#%s%I%&!W$r>C$9$K$O!"(BC-x 1 $B$H%?%$%W$7$^$9!#(B + +$B%b!<%I%i%$%s(B +============ + + $B$b$7$f$C$/$j$H%3%^%s%I$rBG$C$?$J$i$P!"2hLL$N2l=j$KBG$C$?$b$N$,I=<($5$l$^$9!#%(%3!<%(%j%"$O2hLL$N(B1$B$P$s2<$N9T$G$9!#$=$N(B +$B$9$0>e$N9T$O!"%b!<%I%i%$%s$H8F$P$l$F$$$^$9!#%b!<%I%i%$%s$O$3$s$JIw$KI=<($5(B +$B$l$F$$$k$G$7$g$&!#(B + + [--]J:--**-Mule: MULE.tut (Fundamental) ---NN%-------------- + + +$BCm0U(B: NN%$B$N(BNN$B$O?t;z$,F~$C$F$$$^$9!#$"$J$?$,;H$C$F$$$k(BEmacs$B$N%b!<(B + $B%I%i%$%s$H0c$&$+$bCN$l$J$$$1$I!"92$F$J$$$h$&$K!#Nc$($P!";~4V(B + $B$d(Buptime$B$,I=<($5$l$F$$$k$N$O!"(Bdisplay-time$B$H$$$&5!G=$,F0$$$F(B + $B$$$k$+$i$G$9!#(B + + $B$3$N9T$K$h$C$FB?$/$NM-MQ$J>pJs$,F@$i$l$^$9!#(B + + + $B:#!"$"$J$?$,8+$F$$$k%U%!%$%kL>$rI=<($7$F$$$^$9!#(BNN%$B$O8=:_%9%/%j!<%s>e(B +$B$K%U%!%$%k$N0lHV>e$+$i2?%Q!<%;%s%HL\$,I=<($5$l$F$$$k$+$r<($7$F$$$^$9!#%U%!(B +$B%$%k$N0lHV:G=i$rI=<($7$F$$$k$J$i$P!"(B--Top--$B$HI=<($5$l$F$^$9!#%U%!%$%k$N0lHV(B +$B:G8e$rI=<($7$F$$$k$J$i$P!"(B--Bot--$B$HI=<($5$l$^$9!#2hLL$NCf$K%U%!%$%k$NA4$F$,(B +$BI=<($5$l$F$$$k$J$i$P!"(B--All--$B$HI=<($5$l$^$9!#(B + + $B%b!<%I%i%$%s$N>.3g8L$NCf$O!":#$I$s$J%b!<%I$KF~$C$F$$$k$+$r<($7$F$$$^$9!#(B +$B8=:_$O!"%G%U%)%k%H$N(BFundamental$B$KF~$C$F$$$^$9!#$3$l$b%a%8%c!<%b!<%I$N0lNc$G(B +$B$9!#(B + + Emacs$B$O(BLisp mode$B$d(BText mode$B$N$h$&$J$3$H$J$k%W%m%0%i%`8@8l$d%F%-%9%H$K(B +$BBP$7$F%(%G%#%C%H$r9T$&$?$a$N4v$D$+$N%a%8%c!<%b!<%I$r;}$C$F$$$^$9!#$I$s$J;~(B +$B$G$bI,$:$$$:$l$+$N%a%8%c!<%b!<%I$N>uBV$K$J$C$F$$$^$9!#(B + + $B$=$l$>$l$N%a%8%c!<%b!<%I$O4v$D$+$N%3%^%s%I$rA4$/0c$&?6$kIq$$$K$7$F$7$^(B +$B$$$^$9!#Nc$r>e$2$F$_$^$7$g$&!#%W%m%0%i%`$NCf$K%3%a%s%H$r:n$k%3%^%s%I$,$"$j(B +$B$^$9!#%3%a%s%H$r$I$NMM$J7A<0$K$9$k$+$O!"3F%W%m%0%i%`8@8l$K$h$C$F0c$$$^$9$,!"(B +$B$=$l$>$l$N%a%8%c!<%b!<%I$O!"$-$A$s$HF~$l$F$/$l$^$9!#(B + + $B$=$l$>$l$N%a%8%c!<%b!<%I$KF~$k$?$a$N%3%^%s%I$O%b!<%IL>$N3HD%$5$l$?$b$N(B +$B$K$J$C$F$$$^$9!#Nc$($P!"(BM-x fundamental-mode$B$O(BFundamental$B$KF~$k$?$a$N$b$N$G(B +$B$9!#(B + + $B$b$7!"1Q8l$r%(%G%#%C%H$9$k$J$i$P!"(BText mode$B$KF~$j$^$9!#(B + + >> M-x text-mode $B$H%?%$%W$7$J$5$$!#(B + + $B8=:_$N%a%8%c!<%b!<%I$K$D$$$F$N%I%-%e%a%s%H$r8+$?$$;~$O!"(BC-h m$B$H%?%$%W(B +$B$7$^$9!#(B + + >> C-h m $B$r;H$C$F(BText mode$B$H(BFundamental mode$B$N0c$$$rD4$Y$J$5$$!#(B + + >> C-x 1$B$G%I%-%e%a%s%H$r2hLL$+$i>C$7$J$5$$!#(B + + $B:8C<$N(B '[--]' $B$O8=:_$N%-!\$7$$@bL@$O(B +$B!V$?$^$4!W$N%^%K%e%"%k$rD4$Y$F2<$5$$!#(B + + $B$=$N$9$01&$K$O%3!<%IBN7O(B (coding-system) $B$K4X$9$k%U%i%0$N>uBV$,I=(B +$B<($5$l$F$$$^$9!#(BMule $B$O!"%U%!%$%kF~=PNO!"F~NO!"2hLL=PNO$K$D$$$F!"$=$l$>$lFH(B +$BN)$K%3!<%IBN7O$r;XDj$5$;$k$3$H$,=PMh$^$9$,!"DL>o$O%U%!%$%kMQ$N%3!<%IBN7O$N(B +$B%K!<%b%K%C%/$N$_I=<($7$F$$$^$9!#(B + + >> $B%b!<%I%i%$%s>e$K(B"J:","S:",$B$b$7$/$O(B "E:"$B$,I=<($5$l$F$$$k$+$I$&$+3N(B + $BG'$7$J$5$$!#(B + + $B:G=i$N0lJ8;z$,%3!<%IBN7O$N%K!<%b%K%C%/!"> C-x C-k t$B$r(B2$BEY9T$$$J$5$$!#(B + + $BF~NO%b!<%I$,(BJIS$B%3!<%I$N@_Dj$H$J$C$F$$$k;~!"$b$7$"$J$?$N;H$C$F$$$kC$B$b(BM-<$BJ8;z(B>$B$bF1$8F/$-$r$7$^$9!#:#$^$G$N@bL@$G(BESC +<$BJ8;z(B>$B$H9T$J$C$F$$$?$H$3$m$,!"(BM-<$BJ8;z(B>$B$H$J$j$^$9!#Cm0U$7$J$1$l$P$J$i$J$$$N(B +$B$O!"%7%U%H(BJIS$B$d(BEUC$B%3!<%I$N;~$O;HMQ$G$-$^$;$s!#(B + + $B%3!<%IBN7O$N$N@Z$jBX$($O!"3F!9$N%P%C%U%!$KBP$7$F$N$_M-8z$G$9!#$=$l$>$l(B +$B$N!"%3!<%IBN7O;XDj$K$D$$$F$O!"(BC-h a coding-system $B$G8+$k$3$H(B +$B$,=PMh$^$9!#(B + + >> C-h a coding-system $B$G=P$F$/$k%I%-%e%a%s%HCf$N!"(B + set-display-coding-system, set-file-coding-system, + set-process-coding-system $B$N@bL@$rFI$_$J$5$$!#(B + +$B8!:w(B +===== + + $BJ8;zNs$r!"%U%!%$%kFb$G!"A0J}Kt$O8eJ}$K!"C5$9;v$,$G$-$^$9!#8!:w$r;O$a$k(B +$B%3%^%s%I$O!"%+!<%=%k0LCV0J9_$r8!:w$9$k$J$i$P(B C-s$B!"%+!<%=%k0LCV0JA0$J$i$P(B +C-r $B$G$9!#(BC-s $B$r%?%$%W$9$k$H!"%(%3!<%(%j%"$K(B "I-search:"$B$H$$$&J8;zNs$,%W%m(B +$B%s%W%H$H$7$FI=<($5$l$^$9!#(BESC$B$r2!$9$H!"=*N;$G$-$^$9!#(B + + + >> C-s$B$G8!:w$,;O$^$j$^$9!#$=$l$+$i!"$f$C$/$j$H#1J8;z$:$D(B"cursor"$B$H$$(B + $B$&C18l$rF~NO$7$^$9!##1J8;zF~NO$9$k$4$H$K!"%+!<%=%k$O!"$I$s$JF0$-(B + $B$r$7$^$9$+(B? + + >> $B$b$EY(B C-s $B$r%?%$%W$9$k$H!"> $B$r#42sF~NO$7$F!"%+!<%=%k$NF0$-$r8+$J$5$$!#(B + + >> ESC$B$r2!$7$F!"=*N;$7$^$9!#(B + + $BC5$7$?$$J8;zNs$r%?%$%WCf$G$b!"%?%$%W$7$?J8;zItJ,$@$1$G!"8!:w$r;O$a$^$9!#(B +$B$B$rF~NO$9$k$H!"8!:wJ8;zNs$N#1HV8e$m$NJ8;z$,>C$($^$9!#(B +$B$=$7$F!"%+!<%=%k$O!"A02s$N0LCV$KLa$j$^$9!#$?$H$($P!"(B"cu"$B$H%?%$%W$7$F!":G=i(B +$B$N(B"cu"$B$N0LCV$K%+!<%=%k$,F0$$$?$H$7$^$9!#$3$3$G(B$B$rF~NO$9$k$H!"%5!<%A(B +$B%i%$%s$N(B'u'$B$,>C$(!"%+!<%=%k$O!"(B'u'$B$r%?%$%W$9$kA0$K!"%+!<%=%k$,$"$C$?(B'c'$B$N0L(B +$BCV$K!"0\F0$7$^$9!#(B + + $B8!:wuBV$K(B +$BF~$k$3$H$,$"$j$^$9!#%a%8%c!<%b!<%I$N>.3g8L(B'()'$B$N2s$j$rCf3g8L(B'[]'$B$G0O$s$@$b(B +$B$N$,%b!<%I%i%$%s>e$KI=<($5$l$^$9!#Nc$($P!"(B(Fundamental)$B$HI=<($5$l$kBe$o$j$K(B +[(Fundamental)]$B$N$h$&$K$J$j$^$9!#(B + +$BCm0U(B: $B$3$3$G$O%j%+!<%7%V(B $B%(%G%#%F%#%s%0(B $B%l%Y%k<+BN$K$D$$$F$O@bL@$7(B + $B$^$;$s!#(B + + $B%j%+!<%7%V(B $B%(%G%#%F%#%s%0(B $B%l%Y%k$+$iH4$1$G$k$?$a$K$O!"(BM-x top-level +$B$H%?%$%W$7$^$9!#(B + + >> $B;n$7$F$_$F2<$5$$!#%9%/%j!<%s$NDl$K(B"Back to top level"$B$HI=<($5$l$^(B + $B$9!#(B + + $BK\Ev$O!"$3$N;n$_$,9T$o$l$?;~$O!"$9$G$K%H%C%W%l%Y%k$K$$$?$N$G$9!#(BM-x +top-level$B$O!"2?$b1F6A$rM?$($F$$$^$;$s!#(B + + $B%j%+!<%7%V(B $B%(%G%#%F%#%s%0(B $B%l%Y%k$+$iH4$1=P$k$N$KBP$7$F$O(BC-g$B$O8z$-$^$;(B +$B$s!#(B + + +$B%X%k%W(B +====== + + Emacs$B$K$O!"$?$/$5$s$NLr$KN)$D5!G=$,$"$j!"$3$3$G!"$9$Y$F$r@bL@$9$k$3$H(B +$B$O!"IT2DG=$G$9!#$7$+$7!"$^$@CN$i$J$$B?$/$N5!G=$r3X$V$?$a$K$O!"(B$B$H8F$P(B +$B$l$k(B C-h $B$r%?%$%W$9$k$3$H$G!"$?$/$5$s$N>pJs$rC$9(B +$B$3$H$,$G$-$^$9!#(B + + $B:G$b4pK\E*$J$b$N$O!"(BC-h c $B$G$9!#$3$l$KB3$$$F%-!<$rF~NO$9$k$H!"$=$N%3%^(B +$B%s%I$K$D$$$F$NC;$$@bL@$rI=<($7$^$9!#(B + + >> C-h c C-p $B$H%?%$%W$7$F$_$J$5$$!#(B"C-p runs the command previous- + line"$B$N$h$&$J%a%C%;!<%8$,I=<($5$l$k$O$:$G$9!#(B + + $B8+$?$3$H$O$"$k$,!"3P$($F$O$$$J$$%3%^%s%I$b;W$$=P$;$k$N$G$9!#(BC-x C-s $B$N(B +$B$h$&$JJ#?t$G#1$D$N%3%^%s%I$b(BC-h c $B$N8e$m$KB3$1$i$l$^$9!#(B + + $B$b$C$H>\$7$/CN$j$?$+$C$?$i!"(Bc $B$NBe$o$j$K(B k $B$r;XDj$7$^$9!#(B + + >> C-h k C-p $B$H%?%$%W$7$F$_$J$5$$!#(B + + Emacs$B$N%&%#%s%I%&$K!"%3%^%s%I$NL>A0$H5!G=$,I=<($5$l$^$9!#FI$_=*$($?$i!"(B +C-x 1 $B$H%?%$%W$9$k$H!"H4$1$i$l$^$9!#(B + + $BB>$K$bLr$KN)$D%*%W%7%g%s$,$"$j$^$9!#(B + + C-h f $B%U%!%s%/%7%g%sL>$rF~NO$9$k$H!"%U%!%s%/%7%g%s$rI=<($7$^$9!#(B + + >> C-h f previous-line $B$r%?%$%W$7!"(B $B$r2!$7$J$5$$!#(BC-p $B%3%^%s(B + $B%I$rpJs$rI=<($7$^$9!#(B + + C-h a $B%-!<%o!<%I$rF~NO$9$k$H!"L>A0$K$=$N%-!<%o!<%I$r4^$`!"A4$F$N%3(B + $B%^%s%I$rI=<($7$^$9!#$3$l$i$N%3%^%s%I$O$9$Y$F(BESC x $B$G> C-h a file $B$H%?%$%W$7!"(B$B$r2!$7$J$5$$!#L>A0$K(B"file"$B$H$$$&J8(B + $B;z$r;}$DA4$F$N%3%^%s%I$rI=<($7$^$9!#$^$?!"(Bfind-file $B$d(B write-file + $B$H$$$&L>$N(B C-x C-f $B$d(B C-x C-w $B$N$h$&$J%3%^%s%I$bI=<($5$l$^$9!#(B + +$B$*$o$j$K(B +======== + +$BK:$l$:$K!'(B $B=*N;$9$k$K$O!"(BC-x C-c $B$H$7$^$9!#(B + + + $B$3$NF~LgJT$O!"$^$C$?$/$N=i?4o$KB?$/$N$3$H$,$G$-$k>l9g$K$OFC$K$=$&$G$7$g(B +$B$&!#$=$7$F!"(BEMACS $B$G$O!"O$O(BGMW + +Wnn + Nemacs$B$r;H$C$F=q$-$^$7$?!#$=$N$h$&$JAG@2$i$7$$%W%m%0%i%`$r:n$C$?J}!9(B +$B$X46M;R$5$s!"$I$&$b$"$j$,$H$&!#(B + + + + + +$B8mLu!"13!"$=$NB>!"$NJ8@U$O!"0J2<$Nn(B GNUEMACS(Mule) $(C@T9.Fm(B + ============================== + +$(CAV@G(B: $(C@L(B $(C@T9.Fm@:(B, "$(C9h?l1b:84Y(B $(C@Mn(B + $(C@V=@4O4Y(B. ">>" $(C7N:NEM(B $(C=C@[GO4B(B $(CG`@:(B, $(C1W(B $(C6'(B $(C9+>y@;(B $(CGX>_(B + $(CGO4B0!8&(B $(CAv=CGO0m(B $(C@V=@4O4Y(B. + + Mule $(C@G(B $(C8m7I>n8&(B $(C@T7BGR(B $(C6'?!4B(B, $(C@O9]@{@87N(B $(CD\F.7Q(B*$(CE0(B($(CE0(B*$(CEi?!(B, +CTRL $(C6G4B(B, CTL $(C6s0m(B $(C=a@V4Y(B)$(C3*(B $(C8^E8(B*$(CE0(B($(C:8Ek(B, $(C@L=:DI@LGA(B*$(CE08&(B $(C;g?kGQ4Y(B)$(C0!(B +$(C;g?k5K4O4Y(B. $(C1W7!<-(B, CONTROL $(C@L6s5g0!(B META $(C6s0m(B $(C>24B(B $(C4k=E?!(B, $(C4Y@=0z00@:(B +$(C1bH#8&(B $(C;g?kGO4B(B $(C0M@87N(B $(CGU4O4Y(B. + +C-<$(C9.@Z(B> $(CD\F.7Q(B*$(CE08&(B $(C4)8%C$(B, <$(C9.@Z(B>$(CE08&(B $(C4)8(4O4Y(B. $(C?98&(B $(C5i8i(B, + C-f $(C4B(B, $(CD\F.7Q(B*$(CE08&(B $(C4)8#8i<-(B f $(CE08&(B $(C4)8#4B(B $(C0M@;(B + $(C@G9LGU4O4Y(B. +<> + >> $(C1W7/8i(B, C-v (View Next Screen; $(C4Y@=@G(B $(CH-8i@;(B $(C:;4Y(B) $(C8&(B $(CE8@LGA(B + $(CGO?)(B $(C:8< $(C@L=:DI@LGA(B*$(CE08&(B $(C4)8#0m3*<-(B, $(C1W(B $(C5Z(B <$(C9.@Z(B>$(CE08&(B $(C4)8(4O4Y(B. + +$(CAV@G(B: <$(C9.@Z(B>$(C4B(B, $(C4k9.@Z3*(B $(Cn7N<-4B(B $(C00@:(B $(C@G9L0!(B + $(C5K4O4Y(B. $(C8^E8E08&(B $(C;g?kGR(B $(C $(C4k=E?!(B M- + <$(C9.@Z(B> ($(C8^E8E08&(B $(C4)8%C$(B<$(C9.@Z(B>$(CE08&(B $(C4)8%4Y(B) $(C8&(B $(C;g?kGR(B $(C7a=CE00m(B $(C=M@;(B $(C6'4B(B, C-x C-c $(C8&(B $(CE8@LGAGU4O4Y(B. + Emacs$(C8&(B csh$(C7N:NEM(B $(C1b5?GO0m(B $(C@V4B(B $(C0f?l(B, $(C<-=:Ff5eGO4B(B($(C@O=C(B + $(C@{@87N(B $(CA_4\GQ4Y(B)$(CGR(B $(Cz@88i(B, C-v $(C8&(B $(C@T7BGO?)(B $(CAV<U@G(B $(CH-8i0z(B $(C4Y@=(B $(CH-8i?!4B(B, $(CG%=C5G4B(B $(C3;?k?!(B $(C8nG`@G(B $(C9.@L(B $(CA_:95G0m(B +$(C@V=@4O4Y(B. $(CG%=C5G0m(B $(C@V4B(B $(C3;?k@L(B $(C?,n(B $(C@V4B(B $(C0M@;(B $(C>K(B $(CK(B $(CGJ?d0!(B $(C@V=@4O4Y(B. C-v +$(C?!(B $(C@GGO?)(B $(C>U@87N(B $(CAxG`GO4B(B $(C0M@:(B $(C@L9L(B $(C>K>R=@4O4Y(B. $(C?x7!@G(B $(C@Z8.7N(B $(C5G59>F(B +$(C0!4B5%4B(B, ESC v $(C8&(B $(CE8@LGAGU4O4Y(B. + + >> ESC v $(C?M(B C-v $(C8&(B $(C;g?kGO?)(B, $(C@|HD7N(B $(C@L5?GO4B(B $(C0M@;(B $(C8n9x(B $(C=C55GO?)(B + $(C:8<`(B +==== + $(CH-@O@;(B $(CH-8i4\@'7N(B $(C:80m(B $(C0!4B5%4B(B, $(C4Y@=@G(B $(C8m7I>n8&(B $(C;g?kGU4O4Y(B. + + C-v $(C>U@87N(B $(CGQ(B $(CH-8i:P(B $(CAxG`GQ4Y(B + ESC v $(C5Z7N(B $(CGQ(B $(CH-8i:P(B $(C5G59>F0#4Y(B + C-l $(CH-8i@;(B $(C4Y=C>44Y(B. $(C@L(B $(C6'(B, $(C?x7!(B $(CD?<-0!(B $(C@V>z4x(B $(CG`@L(B + $(CH-8i@G(B $(CA_>S?!(B $(C?@557O(B $(CGQ4Y(B + + >> $(CAv1](B $(CD?<-0!(B $(C>n5p?!(B $(C@V4B0!(B, $(C1W(B $(C1YC3?!(B $(C>n62(B $(CEX=:F.0!(B $(C=aA.(B $(C@V4B(B + $(C0!8&(B $(C1b>oGO<n5p7N(B $(C@L5?GO?44B(B + $(C0!(B, $(C1W(B $(C1YC3@G(B $(CEX=:F.4B(B $(C>n6;0T(B $(C5G>z4B0!8&(B $(CA6;gGO?)(B $(C:8<n(B +====================== + + $(CH-8i4\@'@G(B $(C@L5?@:(B $(CGR(B $(Cz=@4O4Y(B. $(C@LA&4B(B, $(CH-8i(B $(C3;?!<-(B, $(CF/(B +$(CA$@G(B $(C@eU(B(forward)$(C5Z(B(backward)$(C7N(B +$(C@L5?GO4B(B $(C8m7I>n8&(B $(C;g?kGO4B(B $(C0M@T4O4Y(B. $(C@L5i@G(B $(C8m7I>n4B(B $(C0"0"(B, C-p, C-n, +C-f, C-b $(C?!(B $(CGR4g5G>n(B $(C@V0m(B, $(CGv@g@G(B $(C@en(B $(C@V@89G7N(B, $(C?\?l1b(B $(C=,?o(B $(C0M@T4O4Y(B. $(C@L5i@:(B, $(C1b:;@{@N(B $(CD?<-@L5?(B $(C8m7I>n@L0m(B +, $(C@ZAV(B $(C;g?kGO4B(B $(C0M@T4O4Y(B. + + >> C-n $(C@;(B $(C8nH8A$55(B $(CE8@LGAGO0m(B, ($(CAv1](B, $(C4g=E@L(B $(C@P0m(B $(C@V4B(B) $(C@L(B $(CG`1n(B + $(CAv(B $(CD?<-8&(B $(C@L5?=CE0<> C-f $(C8&(B $(C;g?kGO?)(B $(CG`@G(B $(CA_0#A$557N(B $(C@L5?GO0m(B, C-p $(C@87N(B $(C8nG`A$55(B + $(C@'7N(B $(C@L5?GO?)(B $(C:8<> $(CG`@G(B $(C<15N?!<-(B C-b $(C8&(B $(CE8@LGAGO?)(B $(C:8<n5p7N(B $(C@L5?GU(B + $(C4O1n(B? $(C4Y=C(B $(CA61](B $(C4u(B C-b $(C8&(B $(CE8@LGAGO0m(B, $(C@L9x@:(B C-f $(C7N(B $(CG`3!(B $(CBJ(B + $(C@87N(B $(C5G59>F0!<n6;0T(B $(C5K4O1n(B? + + + $(CH-8i@G(B $(C<15N3*(B $(C8;9L8&(B $(C3Q>n<-(B $(CD?<-8&(B $(C@L5?=CE07A0m(B $(CGO8i(B, $(C1W(B $(C9fGb?!(B +$(C@V4B(B $(CEX=:F.0!(B $(C@L5?GO?)(B $(C?@0m(B, $(CD?<-4B(B $(CGW;s(B $(CH-8i3;?!(B $(C@V557O(B $(C5K4O4Y(B. + + >> C-n $(C@;(B $(C;g?kGO?)(B, $(CD?<-8&(B $(CH-8i@G(B $(CGO4\:84Y(B $(C9X@87N(B $(C@L5?=CDQ(B $(C:8<<(B + $(C?d(B. $(C9+>y@L(B $(C@O>n334O1n(B? $(CD?<-@G(B $(C@'D!4B(B $(C>n6;0T(B $(C:/GO?4=@4O1n(B? + + $(CGQ9.@Z(B $(C4\@'@G(B $(C@L5?@87N4B(B $(C9x0E7S4Y0m(B $(C;}0"5G8i(B, $(C4\>n4\@'7N(B $(C@L5?GR(B +$(Cn:P(B $(C>U@87N(B $(CAxG`GO0m(B, ESC b $(C7N(B $(CGQ(B $(C4\>n:P(B +$(C@L@|@87N(B $(C5G59>F0)4O4Y(B. + +$(CAV@G(B: $(C@O:;>n?!(B $(C4kGX<-4B(B, $(C4\>n@G(B $(C2w4B(B $(C4\@'@;(B $(C@N=DGR(B $(Cx=@4O(B + $(C4Y88(B, $(C@G;g@{@N(B $(C9.@}@;(B $(C4\>n@G(B $(C2w4B(B $(C4\@'7N<-(B $(CGO0m(B $(C@V=@4O(B + $(C4Y(B. + + >> ESC f $(C3*(B ESC b $(C8&(B $(C8nH8A$55(B $(CE8@LGAGO?)(B $(C:8<$(C4B(B $(C9.<-0|0h@G(B $(CC38.?!(B $(C;g?k5G0m(B, $(CGQFm(B C-<$(C9.@Z(B>$(C4B(B $(C1W0M(B +$(C:84Y55(B $(C4u?m(B $(C1b:;@{@N(B $(C4k;s(B($(C9.@Z6s5g0!(B $(CG`@L6s5g0!(B)$(C?!(B $(C4kGQ(B $(CA6@[?!(B $(C;g?k5K(B +$(C4O4Y(B. + + C-a $(C?M(B C-e $(C55(B $(C>K0m(B $(C@V@88i(B $(CFm8.GQ(B $(C8m7I>n@T4O4Y(B. C-a $(C4B(B $(CD?<-8&(B $(CG`@G(B +$(C<15N7N(B $(C@L5?=CE00m(B, C-e $(C4B(B $(CG`@G(B $(C3!@87N(B $(C@L5?=CE54O4Y(B. + + >> C-a $(C8&(B 2$(CH8(B, $(C1W8.0m3*<-(B C-e $(C8&(B 2$(CH8(B $(C@T7BGO?)(B $(C:8<n8&(B 2$(CH8@L;s(B $(C9]:9GO4u6s55(B, $(CD?<-4B(B $(C1W(B $(C@L;s(B $(C@L5?GOAv(B $(C>J4B(B $(C0M(B + $(C?!(B $(CAV@G(B. + + $(C5N0!Av(B $(C4u(B, $(C0#4\GQ(B $(CD?<-(B $(C@L5?(B $(C8m7I>n0!(B $(C@V=@4O4Y(B. $(CH-@O@G(B $(C<15N7N(B $(C@L5?(B +$(CGO4B(B ESC < $(C?M(B, $(CH-@O@G(B $(C3!@87N(B $(C@L5?GO4B(B ESC > $(C@T4O4Y(B. + + $(CEX=:F.(B $(C3;?!<-(B, $(CD?<-0!(B $(CA8@gGO4B(B $(C@'D!8&(B "$(CFw@NF.(B"$(C6s0m(B $(C:N8(4O4Y(B. $(C9Y2Y(B +$(C>n(B $(C8;GO8i(B, $(CD?<-4B(B, $(CEX=:F.@G(B $(C>n5p?!(B $(C@V4B0!8&(B $(CH-8i@'?!(B $(C3*E83;0m(B $(C@V4B(B $(C0M(B +$(C@T4O4Y(B. + + $(C>F7!?!(B $(C4\`GU4O4Y(B. $(C@L(B $(CA_?!4B(B, $(C4\>n3*(B $(CG`(B +$(C4\@'7N@G(B $(C@L5?8m7I>n55(B $(CFwGT5G>n(B $(C@V=@4O4Y(B. + + C-f $(CGQ(B $(C9.@Z(B $(C>U@87N(B $(CAxG`GQ4Y(B + C-b $(CGQ(B $(C9.@Z(B $(C5Z7N(B $(C5G59>F0#4Y(B + + ESC f $(CGQ(B $(C4\>n(B $(C>U@87N(B $(CAxG`GQ4Y(B + ESC b $(CGQ(B $(C4\>n(B $(C5Z7N(B $(C5G59>F0#4Y(B + + C-n $(C4Y@=(B $(CG`@87N(B $(C@L5?(B + C-p $(C@L@|(B $(CG`@87N(B $(C@L5?(B + + ESC ] $(C4\6t@G(B $(C3!@87N(B $(C@L5?(B + ESC [ $(C4\6t@G(B $(C<15N7N(B $(C@L5?(B + + C-a $(CG`@G(B $(CCVCJ7N(B $(C@L5?(B + C-e $(CG`@G(B $(CCVHD7N(B $(C@L5?(B + + ESC < $(CH-@O@G(B $(CCVCJ7N(B $(C@L5?(B + ESC > $(CH-@O@G(B $(CCVHD7N(B $(C@L5?(B + + >> $(C0"0"@G(B $(C8m7I>n8&(B $(C=C55GO?)(B $(C:8<n4B(B, $(C0!@e(B $(C@ZAV(B + $(C;g?k5G4B(B $(C0M@T4O4Y(B. $(CCVHD@G(B $(C5N0!Av4B(B, $(C@L(B $(C@enAx(B $(C0w@8(B + $(C7N(B $(C@L5?GO1b(B $(C6'9.?!(B, C-v $(C3*(B ESC v $(C8&(B $(C;g?kGO?)(B $(C?)1b7N(B $(C5G59>F(B + $(C?@557O(B $(CGO<n?!4B(B, $(C9]:9H8n8&(B $(C@T7BGO1b(B $(C@|?!(B, C-u +$(C?!(B $(C@L>n<-(B $(C9]:9GO4B(B $(CH8U@87N(B $(C@L5?GU4O4Y(B. + + >> C-n $(CH$@:(B C-p $(C?!(B $(C@{4gGQ(B $(C@N> C-u 3 C-v $(C6s0m(B $(C@T7BGO?)(B $(C:8<F0!4B5%4B(B, C-u 3 ESC v $(C8&(B $(C;g?kGO8i(B $(C5K4O4Y(B. + +$(CA_Av8m7I>n(B +========== + + C-g $(C6s4B(B $(C8m7I>n@L8g(B, $(C@T7B@;(B $(CGJ?d7N(B $(CGO4B(B $(C0M0z(B $(C00@:(B $(C8m7I>n8&(B $(CA_AvGR(B +$(Cn8&(B $(CGQC"(B $(C@T7BGO0m(B $(C@V4B(B $(C55A_?!(B, $(C1W0M@;(B $(CA_AvGO0m(B $(C=M(B +$(C@88i(B, C-g $(C8&;g?kGO8i(B $(C5K4O4Y(B. + + >> C-u 100 $(C8&(B $(CE8@LGAGO?)(B $(C@N`(B, $(C@_8xGO?)(B ESC $(C8&(B $(C@T7BGX(B $(C9v7H@;(B $(C6'55(B, C-g $(C8&(B $(C@T7BGO(B + $(C8i(B $(CCkJ4B(B $(CA6@[@;(B $(CGX9v8.4B(B $(C@{@L(B $(C@V=@4O(B +$(C4Y(B. $(C?98&(B $(C5i8i(B, $(C8m7I>n0!(B $(CA$@G5G>n(B $(C@VAv(B $(C>J4B(B $(CD\F.7Q(B*$(CE08&(B $(C@T7BGX(B $(C9v80(B $(C6'(B +$(C?!4B(B, Emacs$(C4B(B $(C:'@;(B $(C?o8.0m(B, $(C1W8.0m(B, $(CH-8i@G(B $(CA&@O(B $(C9X?!(B, $(C9+>y@L(B $(C3*;&4B(B $(C0!(B +$(C8&(B $(CG%=CGU4O4Y(B. + + Emacs $(C9vA/?!(B $(C5{6s<-4B(B, $(C@L(B $(C@T9.Fm?!(B $(C>2?)A.(B $(C@V4B(B $(C0M@;(B $(C=GG`GR(B $(Cx(B +$(C4B(B $(C0f?l0!(B $(C@V@;(B $(Cn4@(B $(C0M@N0!(B $(C@L5?E08&(B $(C4)8#0m(B, $(C1W(B $(C4Y@=@G(B $(C:N:P@87N(B $(CAxG`GO?)(B $(CAV<n7N:NEM@G(B $(CCb7B@;(B $(CG%=CGO1b(B $(C@'GO(B +$(C?)(B $(C3*E83-(B $(C?):P@G(B $(C@)55?l8&(B $(CAv?l1b(B $(C@'GO?)(B, $(C4Y@=@G(B $(C8m7I>n8&(B $(C>K(B $(CGJ?d0!(B $(C@V=@(B +$(C4O4Y(B. + + C-x 1 $(C@)55?l8&(B 1$(C037N(B $(CGQ4Y(B. + + C-x 1 $(C4B(B, $(C4Y8%(B $(C@)55?l8&(B $(CAv?l0m(B, $(CD?<-0!(B $(C@V4B(B $(C@)55?l8&(B, $(CH-8i@|C<7N(B +$(CH.@eGU4O4Y(B. + + >> $(CD?<-8&(B $(C@L(B $(CG`?!(B $(C0.0m(B $(C?M<-(B, C-u 0 C-l $(C@L6s0m(B $(CE8@LGAGU4O4Y(B. + + >> C-h k C-f $(C6s0m(B $(CE8@LGAGO<n@G(B $(C55(B + $(CE%8UF.8&(B $(CG%=CGO1b(B $(C@'GO?)(B $(C3*E8320z(B $(C5?=C?!(B, $(C@L(B $(C@)55?l0!(B $(C>n6;0T(B + $(CAY>n5e4B0!(B $(C0|B{GO<> C-x 1$(C@L6s0m(B $(CE8@LGAGO0m(B, $(C55E%8UF.0!(B $(C3*E8354x(B $(C@)55?l8&(B $(CAv?l<<(B + $(C?d(B. + +$(C;p@T0z(B $(C;hA&(B +=========== + + $(CEX=:F.8&(B $(CE8@LGAGO0m(B $(C=M@88i(B, $(C4\ $(C@;(B $(CE8@LGAGU4O4Y(B. + + $(CAw@|?!(B $(C@T7BGQ(B $(C9.@Z8&(B $(C;hA&GO4B5%4B(B, $(C8&(B $(C@T7BGU4O4Y(B. + $(C4B(B,$(CE0:85e?!<-(B "Delete"$(C6s0m(B $(C=a@V4B(B $(CE08&(B $(C4-7/<-(B $(C@T7BGU4O4Y(B. +"Delete" $(C4k=E?!(B"Rubout"$(C6s0m(B $(C=a@V@;(B $(CAv55(B $(C8p8(4O4Y(B. $(C:84Y(B $(C@O9]@{@87N(B, + $(C4B(B, $(CGv@gD?<-0!(B $(C@V4B(B $(C@'D!@G(B $(CAw@|@G(B $(C9.@Z8&(B $(C;hA&GU4O4Y(B. + + >> $(C9.@Z8&(B $(C8n03A$55(B $(CE8@LGAGO0m(B, $(C1W8.0m3*<-(B $(C1W0M@;(B $(C8&(B $(C;g(B + $(C?kGO?)(B $(C;hA&GO<> $(C?@8%BJ86Ax@;(B $(C3Q@;(B $(C6'1nAv(B $(CEX=:F.8&(B $(CE8@LGAGO<nA.3*?M(B + "$(C0hFAw(B $(C@L>nAv0m(B $(C@V4B(B $(C0M@;(B $(C3*E83;0m(B + $(C@V=@4O4Y(B. + + $(C@L0M@:(B, $(C1[7N(B $(C<38mGO4B(B $(C0M:84Y(B $(C=GA&7N(B $(CGX:84B(B $(CFm@L(B $(C@_(B $(C>K(B $(C> $(CA61]@|(B $(C@T7BGQ(B, $(C0hn0!557O(B $(CGX:8<> $(CD?<-8&(B $(CG`@G(B $(C<15N7N(B $(C@L5?GO0m(B, $(C8&(B $(C@T7BGO<U@G(B $(CG`0z(B + $(C@L>nA.(B $(C9v834O4Y(B. $(C@L>nAx(B $(CG`@L(B $(CH-8i@G(B $(CFx:84Y(B $(C1f0T(B $(C5G8i(B, $(C0h> $(C8&(B $(C4)8#0m(B, $(CGQ9x(B $(C4u(B $(CG`4\6tAv@=@;(B $(C;p@TGO<n4B(B, $(C9]:9(B $(CH8> C-u 8 * $(C6s0m(B $(C@T7BGO?)(B $(C:8<n6;0T(B $(C5G>z=@4O1n(B? + + $(C5N03@G(B $(CG`(B $(C;g@L?!(B $(C0x9iG`@;(B $(C885i0m(B $(C=M@:(B $(C0f?l?!4B(B, $(C5N9xB0(B $(CG`@G(B $(C<15N(B +$(C7N(B $(C0!<-(B, C-o $(C8&(B $(C@T7BGU4O4Y(B. + + >> $(C@{4gHw(B $(CG`@G(B $(C<15N?!(B $(C0!<-(B, $(C0E1b<-(B C-o $(C8&(B $(C@T7BGO?)(B $(C:8<z=@4O4Y(B. $(C9.@Z?M(B $(C00@L(B, $(C4\>n3*(B $(CG`55(B +$(C;hA&GR(B $(C`GO8i(B $(C4Y@=0z(B $(C00=@4O4Y(B. + + $(CD?<-Aw@|@G(B $(C9.@Z8&(B $(C;hA&(B + C-d $(CD?<-0!(B $(C@V4B(B $(C9.@Z8&(B $(C;hA&(B + + ESC $(CD?<-Aw@|@G(B $(C4\>n8&(B $(C;hA&(B + ESC d $(CD?<-@'D!(B $(C@LHD?!(B $(C@V4B(B $(C4\>n8&(B $(C;hA&(B + + C-k $(CD?<-@'D!7N:NEM(B $(CG`3!1nAv8&(B $(C;hA&(B + + $(C9+>y@N0!8&(B $(C;hA&GQ(B $(CHD?!(B, $(C1W0M@;(B $(C?x7!4k7N(B $(C5G598.0m(B $(C=M@;(B $(C6'0!(B $(C@V=@4O(B +$(C4Y(B. Emacs$(C4B(B, $(CGQ9.@Z:84Y(B $(CE+(B $(C4\@'7N(B $(C;hA&8&(B $(CG`GQ(B $(C6'?!4B(B, $(C;hA&GQ(B $(C3;?k@;(B +$(C:8A8GO?)(B $(C5S4O4Y(B. $(C?x7!4k7N(B $(C5G598.4B5%4B(B, C-y $(C8&(B $(C;g?kGU4O4Y(B. $(CAV@GGX>_(B +$(CGO4B(B $(C0M@:(B, C-y $(C8&(B $(C;hA&8&(B $(CG`GQ(B $(C@eF4O6s(B, $(C>n5p?!<-6s55(B $(CGR(B $(Cn@L9G7N(B, $(C@L0M@;(B $(C;g?kGO?)(B $(CEX=:F.8&(B $(C@L5?GR(B $(Cn?!4B(B, "Delete" $(C8m7I>n?M(B, "Kill" $(C8m7I>n0!(B $(C@V=@(B +$(C4O4Y(B. "Kill" $(C8m7I>n?!<-4B(B $(C;hA&5H(B $(C0M@:(B $(C:8A85GAv88(B, "Delete"$(C?!<-4B(B $(C:8A8(B +$(C5GAv(B $(C>J=@4O4Y(B. $(C4\(B, $(C9]:9H8nAv8i(B, $(C:8A85K4O4Y(B. + + >> C-n $(C@;(B 2$(CH8(B $(CA$55(B $(CE8@LGAGO0m(B, $(CH-8i@G(B $(C@{4gGQ(B $(C@e`(B, C-k $(C?!(B $(C9]:9H8(B $(C> C-y $(C8&(B $(C=CGhGO?)(B $(C:8<n(B $(C:8A85G(B +$(C0m(B, C-y$(C7N(B, $(C1W(B $(C@|:N0!(B $(C2t3;>nA}4O4Y(B. + + >> C-k $(C8&(B $(C8n9x(B $(CE8@LGAGO?)(B $(C:8<> $(CEX=:F.8&(B $(C2t3;4B5%4B(B, C-y $(C@T4O4Y(B. $(CD?<-8&(B $(C8nG`(B $(C9X@87N(B $(C@L5?=CE0(B + $(C0m(B, $(CGQ9x(B $(C4u(B C-y $(C8&(B $(CE8@LGAGO?)(B $(C:8<n62(B $(CEX=:F.0!(B $(C:8A85G>n(B $(C@V0m(B, $(C4u183*(B $(C4Y8%(B $(CEX=:F.8&(B $(C;hA&GO8i(B +$(C>n6;0T(B $(C5G0Z=@4O1n(B? C-y$(C4B(B, $(C0!@e(B $(CCV1Y(B $(C;hA&5H(B $(C0M@;(B $(C2tA}>n3@4O4Y(B. + + >> $(CG`@;(B $(C;hA&GO0m(B, $(CD?<-8&(B $(C@L5?=CE00m(B, $(C4Y8%(B $(CG`@;(B $(C;hA&GO<pA&6s55(B, $(CEX=:F.8&(B $(C:/0fGO?4Av88(B, $(C1W0M@;(B $(C?x7!4k7N(B $(C5G598.0m(B $(C=M@;(B $(C6'(B +$(C4B(B C-x u$(C7N(B $(C0mD(4O4Y(B. $(C:8Ek@:(B $(C@_8x5H(B $(C8m7I>n8&(B $(C9+H?7N(B $(CGO4B(B $(C@[5?@;(B $(CGU4O4Y(B. +$(C9]:9GX<-(B UNDO$(C8&(B $(CG`GO7A0m(B $(CGR(B $(C6'4B(B, $(C8n9x@L3*(B $(C1W(B $(C8m7I>n8&(B $(CG`GO8i(B $(C5G557O(B +$(C5G>n(B $(C@V=@4O4Y(B. + + >> $(C@L(B $(CG`@;(B C-k$(C7N(B $(CAv?l<n@T4O4Y(B. $(C1b4I@:(B, C-x u$(C?M(B $(C00(B + $(C=@4O4Y(B. + + C-_$(C3*(B C-x u$(C?!(B UNDO$(C@G(B $(CH8_(B $(CGU4O4Y(B. $(C:8A8GOAv(B $(C>J@88i(B, $(CG`GQ(B $(C:/0f@:(B, Emacs$(C8&(B $(CA>7aGO8i(B $(C5?=C?!(B $(C@R>n(B +$(C9v8.0T(B $(C5K4O4Y(B. + + $(CAv1](B $(C:80m(B $(C@V4B(B $(CH-@O?!(B $(C4kGX<-(B, $(C4g=E@L(B $(CFmA}@;(B $(CG`GQ(B $(C0M@;(B $(C=a3V=@4O4Y(B. +$(CAv1](B, $(C:80m(B $(C@V4B(B $(CH-@O@L6u(B $(C0M@:(B, $(C0#4\Hw(B $(C8;GO8i(B $(CFmA}GO0m(B $(C@V4B(B $(CH-@O(B $(C@ZC<@T(B +$(C4O4Y(B. + + $(C4g=E@L(B $(CH-@O@;(B $(C<<@L:j(B($(C:8A8GQ4Y(B)$(CGO1b(B $(C1nAv(B, $(CAv1]1nAv@G(B $(C:/0f@:(B $(CFmA}GO(B +$(C0m@V4B(B $(CH-@O?!(B $(C=a3V4B(B $(C0M@:(B $(C>F4U4O4Y(B. $(C1W0M@:(B, $(C4g=E@L(B $(C@L?M(B $(C00@L(B $(C:/0fGO0m(B +$(C=MAv(B $(C>J@:5%55(B, $(C55A_1nAv(B $(C:/0f@;(B $(C0!GQ(B $(C0M@L(B $(CA&8Z4k7N(B $(C=a3V>nAv4B(B $(C@O@L(B $(C>x55(B +$(C7O(B $(CGO1b(B $(C@'GX<-(B $(C@T4O4Y(B. + + $(C<<@L:j@;(B $(CG`GQ(B $(C5ZA6Bw(B $(C:/0fGQ(B $(C0M@L(B $(C@_8x(B $(C5G>n(B $(C@V@;(B $(C6'8&(B $(C@'GO?)(B Emacs +$(C4B(B $(C@L8'@;(B $(C:/0fGO?)(B $(C?x:;(B $(CH-@O@;(B $(C321i4O4Y(B. + +$(C:q0m(B: $(C6GGQ(B, Emacs$(C4B(B $(C?9CxGR(B $(Cx4B(B $(C;sEB?!(B $(C4k:qGO?)(B, $(C@OA$GQ(B $(C=C(B + $(C0#0#0]@87N(B $(C@Z5?@{@87N(B $(CFmA}GO0m(B $(C@V4B(B $(CH-@O@G(B $(C3;?k@;(B $(C@L8'(B + $(C@;(B $(C:/0fGQ(B $(CH-@O?!(B $(C<<@L:jGU4O4Y(B. $(C@L0M?!(B $(C@GGX(B, $(C88@O@G(B $(C0f?l(B + $(C4B(B $(CG`GQ(B $(C:/0f?!(B $(C4kGO?)(B $(CCVF7!(B $(CBJ@;(B $(C:88i(B, $(C@L?M(B $(C00@:(B $(C6f@87N(B $(C8p5e6s@N@L(B $(CG%=C5G>n(B $(C@V4Y(B +$(C0m(B $(C;}0"GU4O4Y(B. + +($(C?9(B) [--]J:--**-Mule: MULE.tut (Fundamental) ---55%-------------- + + + $(C@L(B Emacs$(CF)Ed8.>s@G(B $(C:9;g:;@:(B MULE.tut$(C@L6s0m(B $(C:R8.0m(B $(C@V=@4O4Y(B. $(CH-@O(B +$(C@;(B $(CH-@N5e(B($(CH-@O@;(B $(CC#>F<-(B $(C9vF[?!(B $(C@P>n3V4B(B $(C0M(B)$(CGO8i(B, MULE.tut$(C@G(B $(C:N:P?!(B $(CG%=C(B +$(C5K4O4Y(B. $(C?98&(B $(C5i8i(B, new-file$(C@L6s4B(B $(C@L8'@G(B $(CH-@O@;(B $(CH-@N5eGO?44Y8i(B, "Mule: +new-file"$(C@L6s4B(B $(C8p5e6s@N@L(B $(C5G0ZAv?d(B. + +$(CAV@G(B: $(C8p5e6s@N?!(B $(C4kGX<-4B(B $(C3*A_?!(B $(C<38mGO0Z=@4O4Y(B. $(C@a1q(B $(C1b4Y8.=C(B + $(C1b8&(B. + + $(CH-@O@;(B $(CH-@N5eGO0E3*(B, $(C<<@L:jGO4B(B $(C8m7I>n4B(B, $(CAv1]1nAv@G(B $(C0M0z4B(B $(C4^8.(B, +2$(C03@G(B $(C9.@Z7N(B $(C5G>n(B $(C@V=@4O4Y(B. C-x $(C?!(B $(C@L>n<-(B $(C@T7BGO4B(B $(C9.@Z0!(B, $(CH-@O?!(B $(C4kGX(B +$(C<-(B $(CG`GO4B(B $(CA6@[@;(B $(C3*E83@4O4Y(B. + + $(CGQ0!Av(B $(C4u(B, $(CAv1]1nAv@G(B $(C0M0z(B $(C4Y8%(B $(CA!@:(B, $(CH-@N5e(B $(C=C(B, $(CH-@O8m@;(B Emacs$(C0!(B +$(C90>n:>4O4Y(B. $(C@L0M@;(B, $(C4\8;7N:NEM(B $(C@Nn5i?)?@4B(B $(C8m7I>n6s0m(B $(C8;GO0m(B +$(C@V=@4O4Y(B. + + +$(CAV@G(B: $(C@L(B $(C0f?l4B(B $(CH-@O8m(B $(C@T4O4Y(B. + + C-x C-f $(CH-@O@;(B $(CC#4B4Y(B($(CH-@N5eGQ4Y(B) + + Emacs$(C4B(B $(CH-@O8m@;(B $(C90>n?I4O4Y(B. $(C@L0M@:(B, $(CH-8i9X@G(B $(CG`?!(B $(C3*E8334O4Y(B. +$(CH-@O8m@;(B $(CAvA$GO0m(B $(C@V4B(B $(C:N:P@:(B, $(C9L4O9vF[6s0m(B $(C:R8.?l4B(B $(C0M@T4O4Y(B. $(C9L4O9v(B +$(CF[4B(B $(C@L?M(B $(C00@L(B $(C;g?k5K4O4Y(B. $(CH-@O8m?!(B $(C@L>n<-(B, $(C8.4xE08&(B $(C4)8#8i(B, $(C9L4O9vF[(B +$(C?!(B $(CG%=C5G>nAx(B $(C3;?k@:(B $(C4u(B $(CGJ?dGOAv(B $(C>J1b(B $(C6'9.?!(B $(CAv?vA.(B $(C9v834O4Y(B. + + >> C-x C-f$(C6s0m(B $(CE8@LGAGQ(B $(C5Z?!(B C-g$(C6s0m(B $(CE8@LGAGO<n55(B $(CCkn62(B $(CH-@O55(B $(CC#Av(B $(C>J=@4O4Y(B. + + $(C@L9x?!4B(B $(CH-@O@;(B $(C<<@L:jGO?)(B $(C:8<n8&(B $(C;g?kGU4O4Y(B. + + C-x C-s $(CH-@O@;(B $(C<<@L:jGQ4Y(B + + Emacs$(C@G(B $(C3;?k@:(B $(CH-@O?!(B $(C=a3;>nA}4O4Y(B. $(C<<@L:jGR(B $(C6'(B, $(C?x:;@G(B $(CH-@O@:(B $(C;u(B +$(C7N?n(B $(C@L8'@;(B $(C:Y?)<-(B $(C320\Av1b(B $(C@V@89G7N(B $(C3;?k@:(B $(C>x>nAvAv(B $(C>J=@4O4Y(B. $(C@L(B $(C;u(B +$(C7N?n(B $(C@L8'@:(B $(C?x:;@G(B $(CH-@O@G(B $(C@L8'?!(B '~'$(C8&(B $(C:Y@N(B $(C0M@T4O4Y(B. + + $(C%;<<@L:j0!(B $(C3!3*8i(B, Emacs$(C4B(B $(C<<@L:jGQ(B $(CH-@O@G(B $(C@L8'@;(B $(CG%=CGU4O4Y(B. + + >> C-x C-s$(C6s0m(B $(CE8@LGAGO0m(B $(CF)Ed8.>s@G(B $(C:9;g:;@;(B $(C<<@L:jGO<`(B, 2$(C9xB0@G(B $(CH-@O@;(B C-x C-f $(C7N(B $(C2(3;8i(B, 1$(C9xB0@G(B $(CH-@O@:(B Emacs$(C3;:N(B +$(C?!(B $(C32=@4O4Y(B. Emacs$(C3;:N?!(B $(C@V4B(B $(CH-@O7N:NEM(B $(CEX=:F.8&(B $(C@P>n3V>n(B $(C:8A8GO0m@V(B +$(C4B(B $(C0M@:(B $(C9vF[6s0m(B $(C:R8.?s4O4Y(B. $(CH-@O@;(B $(C2(3;4B(B $(C0M@:(B, Emacs$(C3;:N?!(B $(C;u7N?n(B +$(C9vF[8&(B $(C885l4O4Y(B. + + Emacs $(C3;?!(B $(C:8A8GO0m(B $(C@V4B(B $(C9vF[@G(B $(C8.=:F.8&(B $(C:84B5%4B(B, $(C4Y@=0z(B $(C00@L(B +$(CE8@LGAGU4O4Y(B. + + C-x C-b + + >> C-x C-b $(C6s0m(B $(CE8@LGAGO<n60GQ(B $(C@L8'@;(B $(C0.(B + $(C0m(B $(C@V4B0!(B, $(C1W8.0m(B, $(C>n60GQ(B $(CH-@O8m@;(B $(C:Y@L0m(B $(C@V4B(B $(C0M@N0!(B $(C0|B{(B + $(CGO<J4B(B $(C0M55(B $(C@V=@4O4Y(B. $(C?98&(B $(C5i8i(B, "*Buffer +List*" $(C6s4B(B $(CH-@O@:(B $(C>x=@4O4Y(B. $(C@L0M@:(B C-x C-b $(C?!(B $(C@GGO?)(B $(C885i>nAx(B $(C9vF[8.(B +$(C=:F.?!(B $(C4kGQ(B $(C9vF[@T4O4Y(B. + + $(C4g=E@L(B $(C:80m(B $(C@V4B(B Emacs$(C@)55?l3;?!(B $(C@V4B(B, $(C>n60GQ(B $(CEX=:F.6s55(B, $(C>n4@0M(B +$(C@N0!@G(B $(C9vF[3;?!(B $(C@V=@4O4Y(B. + + >> $(C9vF[8.=:F.8&(B $(CAv?l1b(B $(C@'GX(B C-x 1 $(C6s0m(B $(CE8@LGAGO<`(B, $(C>n62(B $(CH-@O@G(B $(CEX=:F.?!(B $(C:/0f@;(B $(CG`GO0m3*<-(B, $(C4Y8%(B $(CH-@O@;(B $(C2(3;>z(B +$(C4Y0m(B $(CG_4Y8i(B, $(CCVCJ@G(B $(CH-@O@:(B $(C<<@L:j5G>n(B $(C@VAv(B $(C>J=@4O4Y(B. $(C1W(B $(C:/0f@:(B Emacs +$(C3;:N@G(B $(CH-@O0z(B $(C4k@@GO4B(B $(C9vF[(B $(C3;?!88(B $(CG`GO?)A.(B $(C@V=@4O4Y(B. + + 2$(C9xB0@G(B $(CH-@O?!(B $(C4k@@GO4B(B $(C9vF[8&(B $(C885i1b55GO0m(B, $(C?!5pF.GO4u6s55(B, 1$(C9x(B +$(CB0@G(B $(CH-@O?!(B $(C4k@@GO4B(B $(C9vF[?!4B(B $(C>F9+71(B $(C?5Gb@;(B $(CAVAv(B $(C>J=@4O4Y(B. $(C@L0M@:(B $(C4k(B +$(C4\Hw(B $(C;g?kGO1b(B $(C=10T(B, $(C6GGQ(B, 1$(C9xB0@G(B $(CH-@O?!(B $(C4k@@GO4B(B $(C9vF[8&(B $(CH.:8GO?)(B $(C5N(B +$(C1b(B $(C@'GO?)(B $(C55?r@L(B $(C5G4B(B $(C9f9}@T4O4Y(B. + + C-x C-s $(C7N(B $(C9vF[8&(B $(C<<@L:jGO1b(B $(C@'GO?)(B C-x C-f $(C7N(B $(C9vF[8&(B $(C13CF7!@G(B $(C8m7I>n8&(B $(C;g?kGU4O4Y(B. + + C-x s $(CGv@g(B $(C@V4B(B $(C9vF[8&(B $(C<<@L:jGQ4Y(B. + + C-x s $(C4B(B $(C3;?k@;(B $(C9Y2[(B $(C9vF[(B $(C@|C<8&(B $(CH-@O?!(B $(C<<@L:jGU4O4Y(B. $(C@L(B $(C6'(B, $(CGO3*(B +$(CGO3*@G(B ($(C<<@L:j5G>n>_(B $(CGR(B)$(C9vF[?!(B $(C4kGO?)(B, $(C<<@L:jGO4B0!(B, $(CGOAv(B $(C>J4B0!8&(B y$(C3*(B +n$(C@87N(B $(C9/=@4O4Y(B. $(C@L(B $(CG%=C4B(B $(CH-8i(B $(C9X@G(B $(CG`?!(B $(CG%=C5K4O4Y(B. $(C?98&(B $(C5i8i(B, $(C>F7!?M(B +$(C00=@4O4Y(B. + + Save file /usr/private/yours/MULE.tut? (y or n) + + + +$(C8m7I>n@G(B $(CH.@e(B +============= + + $(C?!5pEM?!4B(B, $(CD\F.7Q(B*$(CE03*(B $(C8^EM(B*$(CE07N(B $(C@T7BGR(B $(C@(B +$(C89@:(B $(C8m7I>n0!(B $(C@V=@4O4Y(B. $(C@L0M5i@;(B $(C4Y7g1b(B $(C@'GO?)(B, $(CH.@e(B(eXtend) $(C8m7I>n8&(B +$(C;g?kGU4O4Y(B. $(C@L0M?!4B(B, $(C>F7!@G(B 2$(C0!Av(B $(CA>7y0!(B $(C@V=@4O4Y(B. + + C-x $(C9.@Z?!(B $(C@GGQ(B $(CH.@e(B. $(C@L>n<-(B $(CGQ9.@Z8&(B $(C@T7BGU4O4Y(B. + ESC x $(C@L8'?!(B $(C@GGQ(B $(CH.@e(B. $(C@L>n<-(B $(C8m7I>n@G(B $(C@L8'@;(B $(C@T7BGU4O4Y(B. + + $(C@L0M5i@:(B $(C@O9]@{@87N(B, $(CFm8.GOAv88(B, $(CAv1]1nAv(B $(C:8>F?B(B $(C0M0z(B $(CA61](B $(C:s9xGO(B +$(C0T4B(B $(C;g?k5GAv(B $(C>J4B(B $(C8m7I>n8&(B $(C@'GQ(B $(C0M@T4O4Y(B. C-x C-f ($(CH-@N5e(B)$(C3*(B C-x C-s +($(C<<@L:j(B)$(C4B(B $(C@L(B $(C:N7y@T4O4Y(B. $(C@L?\?!(B, C-x C-c($(C?!5pEM@G(B $(CA>7a(B)$(C55(B $(C1W78=@4O4Y(B. + + C-z$(C4B(B Emacs$(C?!<-(B $(C:|A.3*?@4@5%?!(B $(C@ZAV(B $(C;g?k5G4B(B $(C9f9}@T4O4Y(B. Emacs$(C8&(B +$(CA>7aGO4B(B $(C0M@L(B $(C>F4O6s(B, $(C@O4\(B, csh$(C@G(B $(C79:'?!(B $(C5G59>F0!4B5%?!4B(B $(CA&@O(B $(CAA@:(B $(C9f(B +$(C9}@L6s0m(B $(C8;GR(B $(CF4U4O4Y(B. + +$(CAV@G(B: $(C4\(B, X-window$(C?!<-(B $(CG`GO0m(B $(C@V4B(B $(C0f?l(B, $(CH$@:(B $(C;g?kGO0m(B $(C@V4B(B + $(C=)@L(B sh$(C@O(B $(C6'4B(B, $(C1W78Av(B $(C>J=@4O4Y(B. + + C-x $(C8m7I>n4B(B,$(C89@L(B $(C@V=@4O4Y(B. $(C@L9L(B $(C9h?n(B $(C0M@:(B $(C>F7!@G(B $(C0M@T4O4Y(B. + + C-x C-f $(CH-@O@G(B $(CFmA}(B(Find) + C-x C-s $(CH-@O@G(B $(C:8A8(B(Save) + C-x C-b $(C9vF[8.=:F.@G(B $(CG%=C(B + C-x C-c $(C?!F7aGQ4Y(B. $(CH-@O@G(B $(C:8A8@:(B, $(C@Z5?@{@87N4B(B $(CG`GO?)(B + $(CAvAv(B $(C>J4B4Y(B. $(C1W7/3*(B, $(CH-@O@L(B $(C:/0f5G>n(B $(C@V@88i(B, $(CH-@O@G(B $(C:8(B + $(CA8@;(B $(CGO4B0!(B, $(C>F4Q0!8&(B $(C90>n?I4O4Y(B. $(C:8A8GO?)(B $(CA>7aGO4B(B $(C:8(B + $(CEk@G(B $(C9f9}(B, C-x C-s C-x C-c $(C7N(B $(CGO4B(B $(C0M@T4O4Y(B. + + $(C@L8'?!(B $(C@GGQ(B $(CH.@e8m7I>n?!4B(B, $(C1W4YAv(B $(C;g?k5GAv(B $(C>J4B(B $(C0M@L3*(B, $(CF/A$@G(B +$(C8p5e?!<-9[?!(B $(C;g?k5GAv(B $(C>J4B(B $(C0M5n@L(B $(C@V=@4O4Y(B. $(C?97N<-(B, "command-apropos" +$(C8&(B $(C5l4O4Y(B. $(C@L(B $(C8m7I>n4B(B $(CE0?v5e8&(B $(C@T7B=CE00m(B, $(C1W0M?!(B $(C8ED!GO4B(B $(C8p5g(B $(C8m7I(B +$(C>n@G(B $(C@L8'@;(B $(CG%=CGU4O4Y(B. ESC x $(C6s0m(B $(CE8@LGAGO8i(B, $(C=:E)80(B $(C9X?!(B "M-x" $(C0!(B $(CG%(B +$(C=C5K4O4Y(B. $(C@L0M?!(B $(C4kGO?)(B, $(C=GG`GO4B(B $(C8m7I>n@G(B $(C@L8'(B($(CAv1]@G(B $(C0f?l(B, +"command-apropos")$(C8&(B $(C@T7BGU4O4Y(B. "command-a" $(C1nAv(B $(C@T7BGQ(B $(C5Z(B $(C=:Fd@L=:(B +$(C8&(B $(CD!8i(B, $(C5Z@G(B $(C:N:P@:(B $(C@Z5?@{@87N(B $(C8^?vA}4O4Y(B. $(C@L(B $(CHD(B, $(CE0?v5e8&(B $(C90@89G7N(B, +$(C>K0m(B $(C=M@:(B $(C9.@Z?-@;(B $(CE8@LGAGU4O4Y(B. $(C6GGQ(B, $(CE0?v5e8&(B $(C@T7BGOAv(B $(C>J@88i(B, $(C8p5g(B +$(C8m7I>n0!(B $(CG%=C5K4O4Y(B. + + >> ESC x $(C8&(B $(CE8@LGAGO0m(B, $(C@L>n<-(B, "command-apropos" $(CH$@:(B + "command-a" $(C@L6s0m(B $(CE8@LGAGU4O4Y(B. $(C4Y@=?!(B, + "kanji"$(C@L6s0m(B $(CE8@LGAGU4O4Y(B. + + $(C3*E83-(B "$(C@)55?l(B"$(C8&(B $(CAv?l4B5%4B(B, C-x 1 $(C@L6s0m(B $(CE8@LGAGU4O4Y(B. + +$(C8p5e6s@N(B +======== + + $(C88>`(B $(CC5C5Hw(B $(C8m7I>n8&(B $(CCF4Y8i(B, $(CH-8i@G(B $(C9XBJ@G(B $(C?!DZ?!8.>n6s0m(B $(C:R8.4B(B +$(C@en4B(B $(CH-8i@G(B $(CA&@O(B $(C9X(B $(CG`@T4O4Y(B. $(C1W(B +$(C9Y7N(B $(C@'@G(B $(CG`@:(B, $(C8p5e6s@N@L6s0m(B $(C:R8.0m(B $(C@V=@4O4Y(B. $(C8p5e6s@N@:(B $(C@L7/GQ(B $(C=D@8(B +$(C7N(B $(CG%=C5G>n(B $(C@V0ZAv?d(B. + + [--]J:--**-Mule: MULE.tut (Fundamental) ---NN%-------------- + + +$(CAV@G(B: NN%$(C@G(B NN$(C@:(B $(C<}@Z0!(B $(C5i>n(B $(C@V=@4O4Y(B. $(C4g=E@L(B $(C;g?kGO0m(B $(C@V4B(B + Emacs$(C@G(B $(C8p5e6s@N0z(B $(C4Y8&(B $(CAv55(B $(C8p8#Av88(B, $(C4gH2GOAv(B $(C8;557O(B. + $(C?98&(B $(C5i8i(B, $(C=C0#@L3*(B uptime$(C@L(B $(CG%=C5G0m(B $(C@V4B(B $(C0M@:(B, + display-time$(C@L6s4B(B $(C1b4I@L(B $(C@[5?GO0m(B $(C@V1b(B $(C6'9.@T4O4Y(B. + + $(C@L(B $(CG`?!(B $(C@GGO?)(B $(C89@:(B $(C@/?kGQ(B $(CA$:80!(B $(C>r>nA}4O4Y(B. + + + $(CAv1](B, $(C4g=E@L(B $(C:80m(B $(C@V4B(B $(CH-@O8m@;(B $(CG%=CGO0m(B $(C@V=@4O4Y(B. NN%$(C@:(B $(CGv@g(B $(C=:(B +$(CE)80@'?!(B $(CH-@O@G(B $(CA&@O(B $(C@'?!<-:NEM(B $(C8n(B $(CF[<>F.B00!(B $(CG%=C5G0m(B $(C@V4B(B $(C0!8&(B $(C3*E8(B +$(C3;0m(B $(C@V=@4O4Y(B. $(CH-@O@G(B $(C0!@e(B $(CCVCJ8&(B $(CG%=CGO0m(B $(C@V@88i(B, --Top--$(C6s0m(B $(CG%=C5K(B +$(C4O4Y(B. $(CH-@O@G(B $(C0!@e(B $(CCVHD8&(B $(CG%=CGO0m(B $(C@V4Y8i(B, --Bot--$(C6s0m(B $(CG%=C5K4O4Y(B. $(CH-8i(B +$(C3;?!(B $(CH-@O(B $(C@|:N0!(B $(CG%=C5G0m(B $(C@V4Y8i(B, --All--$(C6s0m(B $(CG%=C5K4O4Y(B. + + $(C8p5e6s@N@G(B $(Cn60GQ(B $(C8p5e?!(B $(C5i>n@V4B(B $(C0!8&(B $(C3*E8(B +$(C3;0m(B $(C@V=@4O4Y(B. $(CGv@g4B(B, $(C5pFzF.@N(B Fundamental$(C?!(B $(C5i>n0!(B $(C@V=@4O4Y(B. $(C@L0M55(B +$(C8^@LA.8p5e@G(B $(CGO3*@G(B $(C?9@T4O4Y(B. + + Emacs$(C4B(B Lisp mode$(C3*(B Text mode$(C?M(B $(C00@L(B, $(C4Y8%(B $(CGA7N1W7%>p>n3*(B $(CEX=:F.(B +$(C?!(B $(C4kGO?)(B $(C?!5pF.8&(B $(CG`GO1b(B $(C@'GQ(B $(C8n0!Av@G(B $(C8^@LA.8p5e8&(B $(C0.0m(B $(C@V=@4O4Y(B. +$(C>n62(B $(C6'6s55(B $(C9]5e=C(B $(C>n4@0M@N0!@G(B $(C8^@LA.8p5e@G(B $(C;sEB7N(B $(C5G>n(B $(C@V=@4O4Y(B. + + $(C0"0"@G(B $(C8^@LA.8p5e4B(B $(C8n0!Av@G(B $(C8m7I>n8&(B $(C@|Gt(B $(C4Y8%(B $(CG`5?@87N(B $(CGO?)(B $(C9v(B +$(C834O4Y(B. $(C?98&(B $(C5i>n(B $(C:8=J4O4Y(B. $(CGA7N1W7%(B $(C3;?!(B $(C8m7I>n8&(B $(C885e4B(B $(C8m7I>n0!(B $(C@V(B +$(C=@4O4Y(B. $(C8m7I>n8&(B $(C>n60GQ(B $(CG|=D@87N(B $(CGO4B0!4B(B, $(C0"(B $(CGA7N1W7%>p>n?!(B $(C5{6s<-(B +$(C4Y8#Av88(B, $(C0"0"@G(B $(C8^@LA.8p5e4B(B, $(C9]5e=C(B $(C3V>nA]4O4Y(B. + + $(C0"0"@G(B $(C8^@LA.8p5e?!(B $(C5i>n0!1b(B $(C@'GQ(B $(C8m7I>n4B(B $(C8p5e8m@L(B $(CH.@e5H(B $(C0M@87N(B +$(C5G>n(B $(C@V=@4O4Y(B. $(C?98&(B $(C5i8i(B, M-x fundamental-mode$(C4B(B Fundamental$(C7N(B $(C5i>n0!(B +$(C1b(B $(C@'GQ(B $(C0M@T4O4Y(B. + + $(C88>`(B, $(C?5>n8&(B $(C?!5pF.GQ4Y8i(B, Text mode$(C7N(B $(C5i>n0)4O4Y(B. + + >> M-x text-mode $(C6s0m(B $(CE8@LGAGO<> C-h m $(C8&(B $(C;g?kGO?)(B Text mode$(C?M(B Fundamental mode$(C@G(B $(CBw@L8&(B $(C>K>F(B + $(C:8<> C-x 1$(C7N(B $(C55E%8UF.8&(B $(CH-8i@87N:NEM(B $(CAv?l<n(B $(C>KFD:*@;(B $(C1W4k7N(B $(C@T7BGR(B $(Cs@;(B $(C:8<n(B $(C@V=@4O4Y(B. Mule $(C@:(B, $(CH-@O@TCb7B(B, $(C@T7B(B, $(CH-8iCb7B?!(B $(C4kGO?)(B, $(C0"(B +$(C0"(B $(C5683@{@87N(B $(CDZ5eC<0h8&(B $(CAvA$=CE3(B $(C> $(C8p5e6s@N(B $(C@'?!(B "J:","S:", $(CH$@:(B "E:"$(C0!(B $(CG%=C5G>n(B $(C@V4B0!(B $(CH.@N(B + $(CGO<n(B $(C@L?\(B +$(C@G(B $(C9.@Z(B($(C@O:;>n(B, $(CGQ19>n5n(B)$(C55(B $(CG%=CGQ4Y4B(B $(C0M@;(B $(C3*E83;0m(B $(C@V=@4O4Y(B. J$(C4B(B +JUNET$(C@87N(B $(C;g?k5G0m(B $(C@V4B(B JIS $(CDZ5e(B, S $(C4B(B Shift-JIS, E $(C4B(B $(C@O:;>n(BEUC $(C8&(B $(C3*(B +$(CE83;0m(B $(C@V=@4O4Y(B. $(C4Y19>n(B $(CG%=C@G(B $(C@/9+4B(B C-x C-k t $(C7N(B ON/OFF$(C@G(B $(CEd1[@L(B $(C0!(B +$(C4IGU4O4Y(B. + + $(C4Y@=@G(B $(C?94B(B, $(C@O4\(B $(C4Y19>nG%=C8&(B OFF$(CGO0m3*<-(B, $(C4Y=C(B $(CGQ9x(B ON$(C@;(B $(CG`GO?)(B +$(C:>4O4Y(B. + + >> C-x C-k t$(C8&(B 2$(C9x(B $(CG`GO<n(B $(C@V@;(B $(C6'(B, $(C88>`(B $(C4g=E@L(B $(C;g?kGO0m(B $(C@V(B +$(C4B(B $(C4\8;?!(B $(C8^EM(B*$(CE00!(B $(C:Y>n(B $(C@V@88i(B, $(C@L=:DI@LGA(B*$(CE0(B $(C4k=E?!(B $(C1W0M@;(B $(C;g?kGO4B(B +$(C0M@L(B $(C0!4IGU4O4Y(B. $(C@L(B $(C6'(B, $(C8^EM(B*$(CE0@G(B $(C;g?k9f9}@:(B $(CD\F.7Q(B*$(CE0?M(B $(C00@L(B $(C4)8#8i<-(B +$(C9.@Z8&(B $(CE8@LGAGU4O4Y(B. ESC <$(C9.@Z(B>$(C55(B M-<$(C9.@Z(B>$(C55(B $(C00@:(B $(C@[5?@;(B $(CGU4O4Y(B. $(CAv1](B +$(C1nAv@G(B $(C<38m?!<-(B ESC <$(C9.@Z(B>$(C6s0m(B $(CG`GO0m(B $(C@V4x(B $(C0w@L(B, M-<$(C9.@Z(B>$(C7N(B $(C5K4O4Y(B. $(CAV(B +$(C@GGX>_(B $(CGO4B(B $(C0M@:(B, $(C=,GAF.(BJIS$(C3*(B EUC$(CDZ5e(B $(C6'4B(B $(C;g?kGR(B $(Cx=@4O4Y(B. + + $(CDZ5eC<0h@G(B $(C13C<4B(B, $(C0"0"@G(B $(C9vF[?!(B $(C4kGX<-88(B $(C@/H?GU4O4Y(B. $(C0"0"@G(B, $(CDZ(B +$(C5eC<0h(B $(CAvA$?!(B $(C4kGX<-4B(B, C-h a coding-system $(C@87N:<(B $(C> C-h a coding-system $(C@87N(B $(C3*?@4B(B $(C55E%8UF.(B $(C3;@G(B, + set-display-coding-system, set-file-coding-system, + set-process-coding-system $(C@G(B $(C<38m@;(B $(C@P>n:8<n4B(B, $(CD?<-@'D!(B $(C@LHD8&(B $(C0K;vGQ4Y8i(B, C-s, $(CD?<-@'D!(B $(C@L@|@L(B +$(C6s8i(B C-r $(C@T4O4Y(B. C-s $(C8&(B $(CE8@LGAGO8i(B, $(C?!DZ?!8.>n?!(B "I-search:"$(C6s4B(B $(C9.@Z?-(B +$(C@L(B $(CGA7RF.7N<-(B $(CG%=C5K4O4Y(B. ESC$(C8&(B $(C4)8#8i(B, $(CA>7a5K4O4Y(B. + + + >> C-s$(C7N(B $(C0K;v@L(B $(C=C@[5K4O4Y(B. $(C1W8.0m(B, $(CC5C5Hw(B 1$(C9.@Z>?(B "cursor"$(C6s4B(B + $(C4\>n8&(B $(C@T7BGU4O4Y(B. 1$(C9.@Z(B $(C@T7BGR(B $(C6'864Y(B, $(CD?<-4B(B, $(C>n6;0T(B $(C?rAw(B + $(C@T4O1n(B? + + >> $(CGQ9x(B $(C4u(B C-s $(C8&(B $(CE8@LGAGO8i(B, $(C4Y@=@G(B "cursor"$(C8&(B $(CC#@;(B $(C> $(C8&(B 4$(CH8(B $(C@T7BGO0m(B, $(CD?<-@G(B $(C?rAw@S@;(B $(C:8<> ESC$(C8&(B $(C4)8#0m(B, $(CA>7aGU4O4Y(B. + + $(CC#0m(B $(C=M@:(B $(C9.@Z?-@;(B $(CE8@LGAA_?!55(B, $(CE8@LGAGQ(B $(C9.@Z:N:P88@87N(B, $(C0K;v@;(B +$(C=C@[GU4O4Y(B. $(C4Y@=(B $(C9.@Z8&(B $(CC#4B5%4B(B, $(C4Y=C(B C-s$(C8&(B $(CE8@LGAGU4O4Y(B. $(C88>`(B, $(C9.@Z(B +$(C?-@L(B $(CA8@gGOAv(B $(C>J@88i(B, $(C8^<7a5K4O4Y(B. + + $(C0K;v=GG`A_?!(B, $(C8&(B $(C@T7BGO8i(B, $(C0K;v9.@Z?-@G(B $(CA&@O(B $(C5Z@G(B $(C9.@Z0!(B +$(CAv?vA}4O4Y(B. $(C1W8.0m3*<-(B, $(CD?<-4B(B, $(C@L@|9x@G(B $(C@'D!7N(B $(C5G59>F0)4O4Y(B. $(C?98&(B $(C5i(B +$(C8i(B, "cu"$(C6s0m(B $(CE8@LGAGO0m(B, $(CCVCJ@G(B "cu"$(C@G(B $(C@'D!?!(B $(CD?<-0!(B $(C?rAw?44Y0m(B $(CGU=C4Y(B. +$(C?)1b?!<-(B $(C8&(B $(C@T7BGO8i(B, $(C<-D!6s@N@G(B 'u'$(C0!(B $(CAv?vAv0m(B, $(CD?<-4B(B 'u'$(C8&(B +$(CE8@LGAGO1b(B $(C@|?!(B, $(CD?<-0!(B $(C@V>z4x(B 'c'$(C@G(B $(C@'D!7N(B,$(C@L5?GU4O4Y(B. + + $(C0K;v=GG`A_?!(B, C-s $(C3*(B C-r $(C@L?\@G(B $(CD\F.7Q9.@Z8&(B $(CE8@LGAGO8i(B, $(C0K;v@:(B +$(CA>7aGU4O4Y(B. + + C-s $(C4B(B, $(CGv@g@G(B $(CD?<-@'D!(B $(C@LHD?!(B $(C3*?@4B(B $(C0K;v9.@Z?-@;(B $(CC#=@4O4Y(B. $(C88>`(B, +$(C@L@|(B $(CBJ@;(B $(CC#0m(B $(C=M@88i(B, C-r $(C@;(B $(CE8@LGAGO4B(B $(C0M@87N(B, $(C?*9fGb0K;v@L(B $(C0!4IGU4O(B +$(C4Y(B. C-s $(C?M(BC-r $(C4B(B, $(C0K;v@G(B $(C9fGb@L(B $(C9]4k@O(B $(C;S(B, $(C@|:N(B $(C00@:(B $(C?rAw@S@;(B $(CGU4O4Y(B. + +$(C8.D?=C:j(B $(C?!5pFC(B $(C79:'(B + + $(C6'6'7N(B, ($(C:;@G(B $(C>F4O0T(B) $(C8.D?=C:j(B $(C?!5pFC(B $(C79:'@L6s0m(B $(C:R8.4B(B $(C;sEB?!(B $(C5i(B +$(C>n0!4B(B $(C6'0!(B $(C@V=@4O4Y(B. $(C8^@LA.8p5e@G(B $(CJ=@4O4Y(B. + + $(C8.D?=C:j(B $(C?!5pFC(B $(C79:'7N:NEM(B $(C:|A.3*?@1b(B $(C@'GX<-4B(B, M-x top-level +$(C@L6s0m(B $(CE8@LGAGU4O4Y(B. + + >> $(C=CGhGO?)(B $(C:8<z4x(B $(C0M@T4O(B +$(C4Y(B. M-x top-level$(C@:(B, $(C>F9+71(B $(C?5Gb@;(B $(CAV0m(B $(C@VAv(B $(C>J=@4O4Y(B. + + $(C8.D?=C:j(B $(C?!5pFC(B $(C79:'7N:NEM(B $(C:|A.3*?@4B(B $(C0M?!(B $(C4kGX<-4B(B C-g$(C4B(B $(C5hAv(B $(C>J(B +$(C=@4O4Y(B. + + +$(CGoGA(B +==== + + Emacs$(C?!4B(B, $(C89@:(B $(C55?r1b4I@L(B $(C@V0m(B, $(C?)1b?!<-(B, $(C@|:N8&(B $(C<38mGO4B(B $(C0M@:(B +$(C:R0!4IGU4O4Y(B. $(C1W7/3*(B, $(C>FAw(B $(C8p8#4B(B $(C89@:(B $(C1b4I@;(B $(C9h?l1b(B $(C@'GX<-4B(B, +$(C6s0m(B $(C:R8.4B(B C-h $(C8&(B $(CE8@LGAGO4B(B $(C0M@87N(B, $(C89@:(B $(CA$:88&(B $(C@Tn<-(B $(CGJ?dGQ(B $(C?In62(B $(C?I`(B, C-h $(C8&(B $(CE8@LGAGO0m3*<-(B $(C86@=@L(B $(C:/G_4Y8i(B, C-g $(C8&(B $(CE8@LGAGO8i(B, +$(CCkn<-(B $(CE08&(B $(C@T7BGO8i(B, $(C1W(B +$(C8m7I>n?!(B $(C4kGQ(B $(CB*@:(B $(C<38m@;(B $(CG%=CGU4O4Y(B. + + >> C-h c C-p $(C6s0m(B $(CE8@LGAGO?)(B $(C:8<oGO0m(B $(C@VAv(B $(C>J@:(B $(C8m7I>n55(B $(C;}0"GX(B $(C3>(B $(Cn55(B C-h c $(C@G(B $(C5Z?!(B $(C@L>n(B +$(CA}4O4Y(B. + + $(C4u?m(B $(C;s<K0m(B $(C=M@88i(B, c $(C4k=E?!(B k $(C8&(B $(CAvA$GU4O4Y(B. + + >> C-h k C-p $(C6s0m(B $(CE8@LGAGO?)(B $(C:8<n@G(B $(C@L8'0z(B $(C1b4I@L(B $(CG%=C5K4O4Y(B. $(C4Y(B $(C@P>z@88i(B, +C-x 1 $(C6s0m(B $(CE8@LGAGO8i(B, $(C:|A.3*?I4O4Y(B. + + $(C@L?\?!55(B $(C55?r@L(B $(C5G4B(B $(C?I> C-h f previous-line $(C@;(B $(CE8@LGAGO0m(B, $(C@;(B $(C4)8#<n8&(B $(C=GG`GO4B(B $(CFcn8&(B $(CG%=CGU4O4Y(B. $(C@L(B $(C8m7I>n5i@:(B $(C8p5N(B ESC x $(C7N(B $(C=GG`GR(B + $(C> C-h a file $(C>K0m(B $(CE8@LGAGO0m(B, $(C@;(B $(C4)8#<n8&(B $(CG%=CGU4O4Y(B. $(C6GGQ(B, + find-file $(C@L3*(B write-file$(C6s4B(B $(C@L8'@G(B C-x C-f $(C3*(B C-x C-w $(C?M(B $(C00(B + $(C@:(B $(C8m7I>n55(B $(CG%=C5K4O4Y(B. + +$(C3!@87N(B +====== + +$(C@XAv8;0m(B: $(CA>7aGO4B5%4B(B, C-x C-c $(C6s0m(B $(CGU4O4Y(B. + + + $(C@L(B $(C@T9.Fm@:(B, $(CCJ=I@Z?!0T55(B $(C>K1b(B $(C=10T(B $(CGO557O(B $(C@G55GO0m(B $(C@V=@4O4Y(B. +$(C1W7/9G7N(B, $(CH$=C(B $(C9+>y@N0!(B $(C@LGXGO1b(B $(C>n7A?n(B $(CA!@L(B $(C@V4Y8i(B, $(CH%@Z<-(B $(CG*3d(B +$(CGOAv(B $(C8;0m(B, $(CF.A}@;(B $(C@b>F(B $(CAV<`(B, EMACS $(C8&(B $(C8n@OA$55(B $(C;g?kGO0m(B $(C:88i(B, $(C1W0M@;(B $(C1W885P4Y4B(B $(C0M@:(B +$(C8xGO0T(B $(C5I(B $(C0M@T4O4Y(B. $(CCVCJ?!4B(B $(C>n8.5U@}GR(B $(CAv55(B $(C8p8#0Z=@4O4Y(B. $(C1W7/3*(B, +$(C1W0M@:(B $(C>n60GQ(B $(C?!5pEM6s55(B $(C6H(B $(C00=@4O4Y(B. EMACS $(C?M(B $(C00@L(B, $(C4k4\Hw(B $(C89@:(B $(C0M@L(B +$(C0!4IGQ(B $(C0f?l?!4B(B $(CF/Hw(B $(C1W780ZAv?d(B. $(C1W8.0m(B, EMACS $(C?!<-4B(B, $(C=GA&7N(B, $(C9+>y@L(B +$(C3*(B $(CGR(B $(Cn(B MicroEMACS (kemacs) $(C@T9.Fm(B" +$(C@;(B GNUE- macs (Nemacs)$(C@G(B Tutorial$(C?k@87N(B $(C0mCD>4(B $(C0M@T4O4Y(B. + + Jonathan Payne $(C?!(B $(C@GGQ(B "JOVE Tutorial" (19 January 86) $(C@;(B $(C:/0fGQ(B + $(C0M@L0m(B, $(C1W0M@:(B $(C?x7!(B, CCA-UNIX$(C@G(B Steve Zimmerman $(C?!(B $(C@GGX<-(B $(C:/0f5H(B, + MIT $(C@G(B "Teach-Emacs" $(C@T9.Fm(B (31 October 85) $(C@;(B ($(C4u?m(B) $(C:/0fGQ(B $(C0M@L(B + $(C>z=@4O4Y(B. + + Update - February 1986 by Dana Hoggatt. + + Update - December 1986 by Kim Leburg. + + Update/Translate - July 1987 by SANETO Takanori + +$(CF/:0GQ(B $(C0(;g(B +=========== + + $(CCVCJ?!(B $(C@L(B $(C@O:;>n9x?*@;(B $(C@[<:GQ(B, SANETO Takanori$(C>>(B. $(C@L(B $(C9.@e@:(B GMW + +Wnn + Nemacs$(C@;(B $(C;g?kGO?)(B $(C@[<:G_=@4O4Y(B. $(C1W?M(B $(C00@:(B $(CHG8"GQ(B $(CGA7N1W7%@;(B $(C885g(B +$(C8p5g(B $(C:P?!0T(B $(C0(;g@G(B $(C6f@;(B $(CG%GO0m(B $(C=M=@4O4Y(B. $(C9x?*@L6s5g0!(B, $(C@T7B(B $(C5n(B +$(C?)7/8p7N(B $(C55?M(B $(CAX(B $(CHDAvGO6s>(B, $(C4k4\Hw(B $(C0(;gGU4O4Y(B. + + + +$(C?@?*(B, $(C0EA~(B, $(C@L(B $(C?\@G(B $(C9.C%@:(B $(C>F7!@G(B $(C;g6w?!0T(B $(C@V=@4O4Y(B. + + $BNkLZM5?.(B hironobu@sra.co.jp + + +Update/Add - December 1987 by Hironobu Suzuki +Update/Add - November 1989 by Ken'ichi Handa +Update/Add - January 1990 by Shigeki Yoshida +Update/Add - March 1992 by Kenichi HANDA + + +$(C6G4Y8%(B $(C0(;g(B +=========== + + $(C@L(B $(C9.<-4B(B "$(C@O:;>n(B GNUEMACS(Mule) $(C@T9.Fm(B"$(C@;(B $(CGQ19>n7N(B $(C9x?*GO?)(B, +hemacs$(C7N(B $(C@[<:GQ(B $(C0M@T4O4Y(B. $(C@O:;>n9x?*@;(B $(C4c4gGQ(B $(C8p5g(B $(C:P(B, hemacs$(C8&(B +$(C039_GO?)(B $(CAV=E(B $(C:P(B, $(CF/Hw(B Mule$(C0z(B hemacs$(C@G(B $(CH/0f18C`?!(B $(C89@:(B $(C55?r@;(B $(CAX(B +$(C136G4kGP(B $(C3*0!?@?,18=G(B $(CA9>w;}@N(B Masashi SHIMBO$(C>>?M(B Katsuyoshi +Yamagami$(C>>?!0T(B $(C0(;g@G(B $(C6f@;(B $(C@|GU4O4Y(B. + + 1993. 9. 25 + + $(C136G4kGP(B $(C0xGP:N(B $(C@|1b0xGP0z(B $(C3*0!?@?,18=G(B + Dosam HWANG hwang@forest.kuee.kyoto-u.ac.jp diff --git a/etc/TUTORIAL.no b/etc/TUTORIAL.no new file mode 100644 index 0000000..0c8671a --- /dev/null +++ b/etc/TUTORIAL.no @@ -0,0 +1,1125 @@ +Copyright (c) 1997, Stig Bjørlykke +Se i slutten av dokumentet for vilkår og betingelser. + +Dette dokumentet er basert på den engelske veiledningen, som er +Copyright (c) 1985, 1996 Free Software Foundation, Inc. + + +Dette er den norske brukerveiledningen til Emacs. + +Emacs-kommandoer inkluderer ofte bruk av CONTROL-tasten (noen ganger +merket CTRL eller CTL) eller META-tasten. På noen tastaturer er +META-tasten merket ALT eller EDIT eller noe annet (på Sun-tastaturer +for eksempel, er det "ruter"-tasten til venstre for mellomromstasten). +Hvis du ikke har noen META-tast kan du bruke ESC. Istedenfor å skrive +META eller CONTROL vil vi her bruke følgende forkortelser: + + C- betyr at du skal holde nede CONTROL-tasten mens du trykker + bokstaven . Dermed vil C-f bety: hold nede + CONTROL-tasten og trykk f. + M- betyr at du skal holde nede META-tasten mens du trykker + . Hvis du ikke har noen META-tast kan du trykke , + slippe tasten, og så trykke bokstaven . + +Viktig: for å avslutte Emacs trykker du C-x C-c. (To tegn.) +Tegnene ">>" helt til venstre angir en veiledning slik at du kan prøve +ut en kommando. For eksempel: +<> +>> Trykk C-v (View next screen) for å hoppe til neste skjermbilde. + (kom igjen, hold ned control-tasten og trykk v). Fra nå av + bør du gjøre dette hver gang du er ferdig med å lese et + skjermbilde. + +Merk at det er en overlapping på to linjer når du skifter fra +skjermbilde til skjermbilde. Dette er for at det skal bli en viss +kontinuitet når du skal bevege deg gjennom filen. + +Det første du trenger å vite er hvordan du manøvrerer deg i fra plass +til plass i teksten. Du har allerede lært hvordan du flytter deg ett +skjermbilde framover, med C-v. For å flytte deg et skjermbilde +bakover trykker du M-v (hold ned META-tasten og trykk v, eller trykk +v hvis du ikke har META-, EDIT- eller ALT-tast). + +>> Prøv å trykke M-v og så C-v noen ganger. + + +* OPPSUMMERING +-------------- + +Følgende kommandoer er nyttige for å se hele skjermbilder: + + C-v Flytt ett skjermbilde framover. + M-v Flytt ett skjermbilde bakover. + C-l Rensker skjermen og plasser teksten der markøren står + på midten av skjermbildet. (Det var control-(liten L), + ikke control-1. Control-1 har en helt annen mening, + som beskrevet nedenfor.) + +>> Finn markøren og se hva slags tekst som står der. + Trykk C-l. + Finn markøren igjen og se hva slags tekst som står der nå. + + +* GRUNNLEGGENDE MARKØRBEVEGELSER +-------------------------------- + +Det å flytte seg fra skjermbilde til skjermbilde er nyttig, men +hvordan flytter man seg til en spesiell plass innenfor skjermbildet? + +Det er flere måter å gjøre dette på. Den vanligste måter er å bruke +kommandoene C-p, C-b, C-f og C-n. Hver av disse kommandoene flytter +markøren en rad eller kolonne i en bestemt retning på skjermen. Her +vises disse fire kommandoene og i hvilken retning de flytter markøren: + + + Forrige linje (previous), C-p + : + : + Bakover, C-b .... Nåværende markørposisjon .... Framover, C-f + : + : + Neste linje (next), C-n + +>> Flytt markøren til linjen midt i diagrammet ved å bruke C-n og C-p. + Bruk så C-l for å sentrere diagrammet på skjermbildet. + +Dette er sikkert litt enklere å huske hvis du tenker på disse +forkortelsene: P (engelsk previous) for forrige, N for neste, B for +bakover og F for framover. Dette er de grunnleggende kommandoene for +å flytte markøren, og du kommer sikkert til å bruke dem hele tiden, så +det vil være en stor fordel om du lærer dem nå. + +>> Gjør noen C-n slik at du kommer ned til denne linjen. + +>> Flytt deg innover på linjen ved hjelp av noen C-f og så oppover med + noen C-p. Legg merke til hva C-p gjør når markøren står midt i en + linje. + +Tekstlinjer er atskilt med linjeskift-tegn. Den siste linjen i teksten +avsluttes vanligvis med linjeskift, men Emacs krever ikke at du har +det. + +>> Prøv en C-b i begynnelsen av en linje. Dette gjør at markøren + flyttes til slutten av forrige linje. Dette er fordi den flytter + markøren over linjeskiftet. + +C-f flytter også over linjeskift, akkurat som C-b. + +>> Utfør noen flere C-b slik at du får en følelse av hvor markøren + er. Trykk så noen C-f til du kommer til slutten av linjen. Trykk + da en C-f til slik at du flytter markøren til neste linje. + +Når du flytter markøren forbi toppen eller bunnen av skjermbildet vil +teksten utenfor skjermen komme til syne. Dette kalles "scrolling" og +gjør det mulig for Emacs å flytte markøren uten at den forsvinner ut +av skjermbildet. + +>> Prøv å flytte markøren forbi bunnen av skjermbildet ved hjelp av C-n + og se hva som skjer. + +Hvis det går for tregt å flytte markøren ett og ett tegn kan du flytte +den ett og ett ord. M-f (Meta-f) flytter markøren ett ord framover, +og M-b flytter den ett ord bakover. + +>> Utfør noen M-f og M-b. + +Hvis markøren står midt i et ord vil M-f flytte markøren til slutten +av ordet. Hvis du står midt mellom to ord vil M-f flytte markøren til +slutten av det kommende ordet. M-b fungerer på samme måte, bare i +motsatt retning. + +>> Trykk M-f og M-b noen ganger og skift markørposisjon med noen C-f + og C-b slik at du ser hvordan M-f og M-b oppfører seg ved + forskjellig plassering av markøren både i og mellom ord. + +Legg merke til parallellen mellom C-f og C-b på en side, og M-f og M-b +på den andre. Ofte er Meta-kommandoer brukt til operasjoner relatert +til enheter definert av språket (ord, setninger, avsnitt), mens +Control-kommandoer blir brukt på grunnleggende enheter som er +uavhengig av hva man redigerer (bokstaver, linjer, etc.). + +Denne parallellen finnes også mellom linjer og setninger: C-a og C-e +flytter markøren til begynnelsen av linjen, eller til slutten av +linjen, mens M-a og M-e flytter den til begynnelsen eller slutten av +setningen. + +>> Prøv noen C-a, og så noen C-e + Prøv også noen M-a, og så noen M-e + +Se hvordan gjentatte C-a etter hverandre ikke gjør noe, mens flere M-a +fortsetter å flytte markøren til neste setning. Selv om dette ikke +virker selvfølgelig er det ganske naturlig. + +Her er en kort oppsummering av de enkleste markørforflyttnings- +kommandoene, inkludert ord- og setningsforflyttnings-kommandoene: + + C-f Flytte markøren en plass framover + C-b Flytte markøren en plass bakover + + M-f Flytte markøren ett ord framover + M-b Flytte markøren ett ord bakover + + C-n Flytte markøren til neste linje + C-p Flytte markøren til forrige linje + + C-a Flytte markøren til begynnelsen av linjen + C-e Flytte markøren til slutten av linjen + + M-a Flytte markøren til begynnelsen av setningen + M-e Flytte markøren til slutten av sentingen + +>> Prøv ut alle disse kommandoene noen ganger, bare for trening. + Dette er de mest brukte kommandoene. + +To andre viktige markørbevegelses-kommandoer er M-< (Meta Mindre-enn), +som flytter markøren til begynnelsen av teksten, og M-> (Meta +større-enn), som flytter den til slutten av teksten. + +På noen tastaturer er ">" plassert over komma, så man må bruke shift +for å få den fram. På disse tastaturene må man også bruke shift for å +taste M-<. Uten shift-tasten vil det bli M-komma. + +>> Prøv M-< nå for å flytte markøren til begynnelsen av veiledningen. + Bruk så C-v for å flytte markøren tilbake hit igjen. + +>> Prøv også M-> for å flytte markøren til slutten av veiledningen. + Bruk så M-v for å flytte markøren tilbake hit igjen. + +Du kan også flytte markøren ved hjelp av piltastene, hvis terminalen +har piltaster. Vi anbefaler at du lærer deg C-b, C-f, C-n og C-p av +tre grunner. Først fordi de vil fungere på alle slags terminaler. +Nummer to fordi når du først får litt trening i bruk av Emacs vil du +finne ut at det går mye kjappere å bruke control-kombinasjoner enn +piltastene (fordi du slipper å flytte hendene bort fra +touch-plasseringen). Den tredje grunnen er at når du først har lært +deg til å bruke control-tastene blir det lettere å lære seg de mer +avanserte control-funksjonene. + +De fleste av kommandoene i Emacs tar også et numerisk argument. For +de fleste av kommandoene vil dette si repetert utførelse. Måten du +gir en kommando et slikt argument er at du trykker C-u og deretter +tallet, før du taster kommandoen. Hvis du har en META- (eller EDIT- +eller ALT-) tast så finnes det et annet alternativ for å gi numeriske +argumenter: Trykk ned tallet mens du holder META-tasten nede. Vi +anbefaler at du bruker C-u fordi det fungerer på alle slags +terminaler. + +For eksempel: C-u 8 C-f flytter markøren åtte plasser framover. + +>> Prøv kommandoene C-n eller C-p med numerisk argument slik at du + kommer nærmest mulig denne linjen med bare en kommando. + +De fleste kommandoene bruker det numeriske argumentet som en repetert +utførelse. Men det finnes kommandoer som bruker den annerledes. C-v +og M-v er blant disse unntakene. Hvis man gir et argument til en av +disse kommandoene vil skjermbildet flytte seg opp eller ned så mange +linjer som argumentet, isteden for så mange skjermbilder. For +eksempel vil C-u 4 C-v flytte skjermbildet 4 linjer oppover. + +>> Prøv å taste C-u 8 C-v nå. + +Dette burde flyttet skjermbildet 8 linjer oppover. Hvis du ønsker å +flytte det tilbake igjen er det bare å gi samme argument til M-v. + +Hvis du bruker Emacs under X er det sannsynligvis et firkantet område +på høyresiden av Emacs-vinduene, også kalt rullefelt. Dette kan du +også bruker for å forflytte deg innenfor teksten. + +>> Prøv å trykk på den midterste musknappen i det uthevete området på + rullefeltet. Dette burde flyttet skjermbildet til en plass i + teksten avhengig av hvor i rullefeltet du trykket. + +>> Flytt muspekeren til en plass i rullefeltet ca. 1/5 fra toppen og + trykk på venstre musknapp noen ganger. + + +* MARKØRBEVEGELSE PÅ EN X-TERMINAL +---------------------------------- + +Hvis du sitter på en X-terminal vil du sansynligvis finne det mye +enklere å bruke piltastene for å bevege markøren. Venstre-, høyre-, +opp- og ned-pilene beveger markøren i ønsket retning. De fungerer på +samme måte som C-b, C-f, C-p og C-n, men er enklere å taste og huske. +Du kan også bruke C-venstre og C-høyre for å bevege den innenfor ord, +og C-opp og C-ned for å bevege den innenfor blokker (For eksempel +avsnitt hvis du redigerer tekst). Hvis du har tastene merket HOME +(eller BEGIN) og END kan du bruke disse for å gå til henholdsvis +begynnelsen av linjen og slutten av linjen, og C-HOME og C-END vil gå +til henholdsvis begynnelsen av filen og slutten av filen. Hvis +tastaturet har PgUp- og PgDn-taster kan du bruker dem for å gå opp og +ned et skjermbilde av gangen, på samme måte som M-v og C-v. + +Alle disse kan ta numeriske argumenter, som beskrevet ovenfor. Du kan +også benytte en snarvei for å skrive inn disse argumentene: hold ned +CONTROL eller META tasten og skriv inn nummeret. For eksempel for å gå +12 ord til høyre taster du C-1 C-2 C-høyre. Legg merke til at dette +blir svært enkelt å taste fordi du ikke slipper CONTROL-tasten mellom +tastetrykkene. + + +* HVIS EMACS HENGER +------------------- + +Hvis Emacs slutter å reagere på kommandoer kan du trygt stoppe den ved +å trykke C-g. Du kan også bruke C-g for å stoppe en kommando som tar +for lang tid å utføre. + +Det er også mulig å bruke C-g for å avbryte et numerisk argument eller +begynnelsen på en kommando du ikke ønsker å utføre. + +>> Tast C-u 100 for å lage et numerisk argument på 100 og trykk C-g. + Trykk nå C-f. Markøren skal nå flytte seg bare ett steg, + fordi du avbrøt argumentet med C-g. + +Hvis du ved en feiltakelse trykket blir du kvitt denne ved å +trykke C-g. + + +* UTILGJENGELIGE KOMMANDOER +--------------------------- + +Enkelte av Emacs-kommandoene er "utilgjengelige" slik at nybegynnere +ikke kan bruke dem uten at de ønsker det. + +Hvis du prøver en av disse utilgjengelige kommandoene vil Emacs komme +med en melding som forteller hvilken kommando det er, og vil spørre om +du virkelig vil fortsette å utføre denne kommandoen. + +Hvis du virkelig ønsker å prøve denne kommandoen trykker du +mellomromstast som svar på spørsmålet. Normalt, hvis du ikke ønsker å +kjøre denne kommandoen, svarer du "n" på spørsmålet. + +>> Tast `C-x n p' (som er en utilgjengelig kommando), + tast n som svar på spørsmålet. + + +* VINDUER +--------- + +Emacs kan ha flere vinduer, og hver av dem kan vise sin egen tekst. +Legg merke til at "vinduer" i Emacs ikke refererer til separate +overlappende vinduer i vindus-systemet, men til separate buffer +innenfor et enkelt X-vindu. (Emacs kan også ha flere X-vinduer, eller +"rammer" i Emacs-terminologi. Dette blir beskrevet senere.) + +Akkurat nå er det best at vi ikke går inn på teknikker for å bruke +flere vinduer, men du trenger å vite hvordan du blir kvitt ekstra +vinduer som kan dukke opp for å vise hjelp, eller utskrift fra enkelte +kommandoer. Det er enkelt: + + C-x 1 Ett vindu (dvs. gjem alle andre vinduer). + +Det er da Control-x etterfulgt av tallet 1. C-x 1 utvider vinduet der +markøren står, slik at det fyller hele skjermbildet og gjemmer alle +andre vinduer. + +>> Flytt markøren til denne linjen og trykk C-u 0 C-l. + +(Husk at C-l renser skjermen og midtstiller linjen der markøren står. +Hvis du gir et numerisk argument til denne kommandoen betyr det "rensk +skjermen og legg linjen der markøren står på linjen angitt av +argumentet" Derfor betyr C-u 0 C-l at skjermen skal renskes og linjen +der markøren står plasseres øverst.) + +>> Tast Control-x 2. + Se hvordan vinduet krympes og et nytt dukker opp med samme + innhold som dette. + +>> Tast C-x 1 for at vinduet skal forsvinne. + + +* INNSETTING OG SLETTING +------------------------ + +Hvis du ønsker å sette inn tekst er det bare å skrive teksten. Tegn +som du kan se, slik som A, 7, *, ol. blir tolket som tekst og blir +satt rett inn. Tast (enter-tasten) for å sette inn et +linjeskift. + +Du kan slette det siste tastete tegnet ved å trykke . + er en tast på tastaturet, og kan også være merket "Del". I +noen tilfeller fungerer også "Backspace" som , men ikke +alltid! + +Mere generelt sletter tegnet rett foran der markøren er +plassert. + +>> Gjør dette nå -- skriv inn noen tegn og slett dem ved å bruke + . Ikke vær redd for å skrive i denne filen, du vil ikke + kunne forandre på den originale veiledningen. Dette er bare en + lokal kopi. + +Når en linje blir for lang til å passe inn på en skjermbredde så +fortsetter den på linjen under. En backslash ("\") i enden av høyre +marg indikerer at linjen fortsetter. Om du kjører Emacs under X vil +du se en liten pil som peker ned til neste linje. + +>> Skriv inn litt tekst slik at du kommer til enden av linjen, og + fortsett å skrive litt til. Du vil da se hvordan + fortsettelseslinjen blir. + +>> Bruk for å slette teksten inntil linjen passer på en + skjermbredde igjen. Fortsettelseslinjen vil da forsvinne. + +Du kan slette linjeskift akkurat som andre tegn. Ved å slette +linjeskiftet mellom to linjer blir disse smeltet sammen til en. Hvis +resultatet av denne sammensmeltingen blir for stor til å passe på en +skjermbredde så vil den bli vist med en fortsettelseslinje. + +>> Flytt markøren til begynnelsen av en linje og trykk . + Dette vil spleise sammen linjen med linjen over. + +>> Trykk for å sette inn linjeskiftet du slettet. + +Husk at de fleste Emacs-kommandoene kan ta numeriske argumenter. +Dette gjelder også tekst-tegn. Ved å repetere et tekst-tegn vil det +komme flere ganger. + +>> Prøv det nå: tast C-u 8 * for å sette inn ********. + +Du har nå lært de mest grunnleggende måtene å skrive noe inn i Emacs, +og å rette feil. Du kan slette ord eller linjer også. Her er en +oversikt over kommandoer for sletting: + + sletter tegnet som står rett foran markøren + C-d sletter tegnet som står rett under markøren + + M- sletter ordet rett foran markøren + M-d sletter ordet rett etter markøren + + C-k sletter fra markøren til slutten av linjen + M-k sletter til slutten av setningen + +Legg merke til at og C-d kontra M- og M-d fortsetter +parallellen som ble startet av C-f og M-f (vel, er ikke +akkurat noe kontroll-tegn, men la oss ikke bry oss om det). C-k og +M-k fungerer på samme måte som C-e og M-e (nesten). + +Når du sletter flere enn ett tegn om gangen vil Emacs lagre den +slettete teksten slik at du han hente den tilbake igjen. Denne +teksten blir kalt "killed text". Å bringe tilbake "killed text" blir +kalt "yanking". Du kan enten hente tilbake "killed text" på samme +plassen som den ble slettet, eller du kan sette den inn en annen plass +i teksten. Du kan også hente den tilbake flere ganger etter hverandre +slik at du får flere like forekomster av den. Kommandoen for å hente +tilbake teksten er C-y. + +Legg merke til at forskjellen mellom "killed text" og "deleted text" +er at "killed text" kan bli hentet tilbake, mens "deleted text" ikke +kan det. Generelt kan man si at kommandoer som sletter flere enn ett +tegn lagrer unna teksten slik at den kan bli hentet tilbake, og +kommandoer som bare sletter ett tegn, eller tomme linjer og mellomrom +ikke lagrer det. + +>> Flytt markøren til begynnelsen av en linje som ikke er tom. + Trykk så C-k for å "kille" teksten på denne linjen. +>> Trykk C-k en gang til. Du vil nå se at den sletter den tomme + linjen som ble stående igjen etter teksten. + +Legg merke til at en enkel C-k bare sletter teksten på linjen, og at +enda en C-k sletter selve linjen og flytter teksten på linjen under en +linje opp. C-k takler numeriske argumenter litt spesielt. Den +sletter så mange linjer OG innholdet i dem. Dette er ikke bare +repetisjon av kommandoen. C-u 2 C-k sletter to linjer samt de tomme +linjene, mens C-k to ganger ikke vil gjøre det. + +Trykk C-y for å hente tilbake teksten som sist ble "killet" der +markøren står. + +>> Prøv dette. Trykk C-k etpar ganger. + +Og hent dem så tilbake igjen: + +>> Trykk C-y. Flytt markøren noen linjer ned og trykk C-y igjen. + Dette er måten å kopiere tekst på. + +Men hva gjør du hvis du har en tekst du ønsker å hente tilbake, og så +"killer" noe nytt? C-y vil hente tilbake den siste teksten som ble +"killet". Men den forrige teksten er ikke fortapt. Du kan få den +tilbake ved å bruke kommandoen M-y. Etter at du har brukt C-y for å +hente tilbake den siste "killed text" vil M-y erstatte denne teksten +med teksten fra den forrige "killed text". Når du har funnet fram til +ønsket tekst trenger du ikke gjøre noe mere for å beholde den. + +Hvis du tastet M-y mange nok ganger vil du komme tilbake til starten +igjen (teksten som sist ble "killet") + +>> "Kill" en linje, flytt markøren til en ny linje og "kill" denne + også. Bruk så C-y for å hente tilbake den siste linjen. Trykk M-y + for å bytte den med den forrige "killete" linjen. Trykk flere M-y + og se hva du får. Fortsett med dette til du får tilbake den første + linjen igjen, og så noen ganger til. Hvis du ønsker kan du prøve + med positive og negative argumenter til M-y. + + +* ANGRE +------- + +Hvis du gjør en forandring i teksten og finner ut at du angrer på det +du har gjort kan du oppheve dette med kommandoen C-x u (undo). + +Normalt vil C-x u oppheve forandringene gjort av den siste utførte +kommandoen. Hvis du repeterer C-x u flere ganger på rad vil hver +repetisjon oppheve enda en utført kommando. + +Men det er to unntak her. Kommandoer som ikke forandrer i teksten +teller ikke (dette inkluderer markørbevegelser og flytte-kommandoer), +og inntastede enkeltbokstaver blir vanligvis gruppert i grupper på opp +til 20 tegn. (Dette er for å redusere antall C-x u'er som trengs for +å angre inntastet tekst.) + +>> "Kill" denne linjen med C-k. C-x u vil få den tilbake igjen. + +C-_ er en alternativ angre-kommando. Den fungerer på samme måte som +C-x u, men er enklere å taste flere ganger på rad. Ulempen med C-_ er +at den er vanskelig å finne fram til på enkelte tastaturer. Det er +derfor vi i tillegg har C-x u. På enkelte terminaler kan du få fram +C-_ ved å trykke / mens CTRL er holdt nede. + +Et numerisk argument til C-_ eller C-x u vil repetere antall +angringer. + + +* FILER +------- + +For at teksten du har forandret på skal lagres permanent må du legge +den i en fil. Hvis ikke vil den forsvinne når du avslutter Emacs. Du +legger teksten i en fil ved først å "finne" denne filen. (Dette blir +også kalt å "besøke" filen.) + +Det å finne en fil betyr at du henter innholdet av filen inn i Emacs. +På mange måter er det som om du forandrer på selve filen, men +forandringene du gjør på filen mens du benytter Emacs vil ikke bli +permanente får du lagrer filen. Dette er fordi du skal slippe å legge +igjen halv-forandrete filer hvis du ikke ønsker det. Og selv når du +lagrer vil Emacs legge igjen en backup-fil i tilfelle du senere +bestemmer deg for at du ikke ønsker disse forandringene. + +Hvis du ser nesten nederst i skjermbildet så vil du se en linje som +begynner og slutter med minustegn, og som inneholder teksten "XEmacs: +TUTORIAL.no". Denne delen av skjermbildet vil alltid vise navnet på +filen du er "inne i". Akkurat nå er du inne i en fil som heter +"TUTORIAL.no" og som er en personlig kopi av Emacs- veiledningen. +Samme hvilken fil du er inne i så vil filnavnet stå akkurat på denne +plassen. + +Kommandoene for å finne filer og lagre filer er litt ulike de andre +kommandoene du har lært fordi de består av to tegn. Begge starter med +tegnet Control-x. Det er faktisk mange kommandoer som starter med +Control-x, og mange av dem har med filer, skjermbilder og slike ting å +gjøre. Disse kommandoene er to, tre eller fire tegn lange. + +En annen ting med kommandoen for å finne filer er at du må fortelle +hvilket filnavn du ønsker. Vi sier at kommandoen "leser et argument +fra terminalen" (i dette tilfellet vil argumentet være navnet på +filen). Etter at du har trykket kommandoen + + C-x C-f Finn en fil + +vil Emacs spørre etter et filnavn. Filnavnet du skriver vil komme +fram på den nederste linjen i skjermbildet. Denne linjen blir kalt +minibuffer når det blir brukt slik. Du kan bruke vanlige +Emacs-redigeringskommandoer for å forandre på filnavnet. + +Mens du holder på å skrive inn filnavnet (eller noe annet i +minibuffret) kan du avbryte med kommandoen C-g. + +>> Tast C-x C-f og så C-g. Dette avbryter minibuffret og avbryter + også C-x C-f kommandoen som brukte minibuffret. + +Når du er ferdig med å skrive filnavnet trykker du for å +fullføre kommandoen. Da vil C-x C-f kommandoen begynne å lete fram +filen. Minibuffret forsvinner når C-x C-f kommandoen er ferdig. + +Om en liten stund vil filen komme inn i skjermbildet og du kan begynne +å redigere innholdet. Når du ønsker å lagre filen kan du bruke denne +kommandoen + + C-x C-s Lagre fil + +Denne kopierer teksten i skjermbildet over til filen. Første gang +dette gjøres vil Emacs døpe om det originale filnavnet til et nytt +navn slik at den ikke går tapt. Det nye filnavnet blir laget ved at +det blir lagt til en "~" i slutten av det originale filnavnet. + +Når lagringen er utført vil Emacs skrive ut navnet på filen som ble +lagret. Du bør lagre ofte slik at du ikke mister så mye om det skulle +oppstå en system-krasj. + +>> Trykk C-x C-s for å lagre en kopi av denne veiledningen. + Dette skal føre til at "Wrote ...TUTORIAL.no" blir + skrevet ut nederst i skjermbildet. + +NB: På noen systemer vil C-x C-s føre til at skjermen "fryses" og du +vil ikke være istand til å utføre noen flere kommandoer. Dette +indikerer at en operativsystem-egenskap kalt "flytkontroll" har fanget +opp C-s'en og ikke sendt den videre til Emacs. For å fortsette må du +trykke C-q. Se da i avsnittet "Spontaneous Entry to Incremental +Search" i Emacs-manualen for råd om hvordan dette kan avverges. + +Du kan finne en eksisterende fil, enten for å forandre den eller for å +se på den. Du kan også finne en fil som ikke eksisterer. Dette er +måten du lager nye filer med Emacs: finn filen, som er tom til å +begynne med, og start å skrive teksten som skal inn i denne filen. +Først når du lagrer filen vil Emacs virkelig opprette filen med den +teksten du har skrevet. Fra nå av kan du betrakte deg selv som om du +skriver i en fil som allerede eksisterer. + + +* BUFFER +-------- + +Hvis du finner en ny fil med C-x C-f vil den første filen fortsatt +være åpen i Emacs. Du kan bytte tilbake til den ved å finne den på +nytt med C-x C-f. På denne måten kan du ha et stort antall åpne filer +i Emacs. + +>> Lag en fil med navnet "foo" ved å trykke C-x C-f foo . + Sett inn litt tekst, forandre litt på den, og lagre "foo" ved å + bruke C-x C-s. Skriv tilslutt C-x C-f TUTORIAL.no + for å komme tilbake til denne veiledningen. + +Emacs lagrer teksten i hver av filene i et objekt kalt "buffer". Når +du finner en ny fil vil det opprettes et nytt buffer i Emacs. For å +se en liste over eksisterende buffer i Emacs kan du trykke + + C-x C-b Utlisting av buffrene. + +>> Prøv C-x C-b nå. + +Se hvordan hvert av buffrene har hvert sitt navn, og at de også kan ha +et filnavn på den filen der innholdet kommer fra. Noen buffre er ikke +knyttet til noen fil, for eksempel bufferet "Buffer List". Det er det +buffret som inneholder listen over buffre som ble generert med C-x +C-b. All teksten du ser i et Emacs-vindu tilhører et buffer. + +>> Tast C-x 1 for å bli kvitt buffer-listen. + +Hvis du gjør forandringer i en av filene og åpner en ny fil så vil +ikke den første filen bli lagret, men forandringene vil fortsatt være +i buffret. Oppretting eller redigering av en ny fil vil ikke påvirke +den første filens buffer. Dette er nyttig, men betyr også at du +trenger en passende måte å lagre den første filens buffer. Det vil +bli alt for omstendig å skifte tilbake til det forrige buffret med C-x +C-f for så å lagre filen med C-x C-s. Derfor har vi kommandoen + + C-x s Lagre noen buffer + +C-x s spør for hvert enkelt buffer som har blitt forandret siden +forrige lagring om du ønsker å lagre dette. + +>> Sett inn en linje med tekst og lagre med C-x s + Du skal nå få et spørsmål om du ønsker å lagre buffret + TUTORIAL.no. Svar ja på spørsmålet ved å taste "y" (yes). + + +* BRUK AV MENYEN +---------------- + +Hvis du bruker en X-terminal vil du sikkert legge merke til menyen på +toppen av skjermbildet. Via denne menyen får du tilgang til de mest +brukte Emacs-kommandoene, slik som "find file". Dette er svært enkelt +i begynnelsen, når du ikke husker alle tastetrykkene som skal til for +hver av kommandoene. Men når du begynner å kjenne Emacs vil det være +lettere å begynne å bruke tastekombinasjonene. Disse står rett ved +siden av menynavnet i menyen. + +Legg merke til at det er mange menypunkter som ikke har en eksakt +tastekombinasjon. For eksempel "Buffers"-menyen, som lister ut alle +tilgjengelige buffre sortert i "sist brukt"-rekkefølge. Du kan enkelt +skifte til et buffer ved å finne navnet på det i "Buffers"-menyen og +velge det. + + +* BRUK AV MUSA +--------------- + +Når du kjører Emacs under X er det muligheter for å bruke musen. Du +kan plassere markøren ved å trykke venstre mustast der du ønsker at +den skal være, og du kan markere tekst ved å holde nede venstre +mustast mens du beveger markøren over teksten du ønsker å markere. +(Eller alternativt: klikk venstre mustast i den ene enden av teksten +du ønsker å markere, flytt muspekeren til den andre enden og bruk +Shift-klikk for å markere teksten.) + +For å "kille" den markerte teksten kan du bruke kommandoen C-w eller +velge Cut fra "Edit"-menyen. Legg merke til at disse *ikke* er +likeverdige. C-w lagrer bare teksten internt i Emacs (ala C-k, som +beskrevet ovenfor), mens Cut legger også teksten i X sitt "clipboard", +der den også blir tilgjengelig for andre applikasjoner. + +For å hente tekst fra X-clipboard'et kan du bruke "Paste" fra "Edit"- +menyen. + +Den midterste musknappen blir vanligvis brukt for å velge "linker" som +er tilgjengelig i skjermbildet. Hvis du for eksempel går inn i Info +(on-line dokumentasjonen til Emacs) ved å bruke C-h i, eller "Help"- +menyen, kan du følge linkene ved å trykke den midterste musknappen. +Og hvis du skriver inn et filnavn (For eksempel "Find File"), og +trykker TAB for å få fram en fillisting, så kan du komplettere +filnavnet ved å trykke den midterste musknappen på filnavnet. + +Ved å trykke høyre musknapp vil du få fram en popup-meny. Innholdet i +denne menyen er avhengig av hvilken modus du er inne i, og vanligvis +inneholder den et par av de mest brukte kommandoene slik at de blir +lett tilgjengelige. + +>> Trykk høyre mustast nå. + +Du er nødt til å holde knappen nede for at menyen skal vises. + + +* UTVIDING AV KOMMANDOSETTET +---------------------------- + +Det finnes mange flere Emacs-kommandoer enn det som er mulig å tilegne +control- eller meta-taster. For å komme rundt dette har Emacs en "X"- +(eXtend) kommando. Denne kommer i to utgaver: + + C-x Tegn-utvidelse. Etterfulgt av et tegn. + M-x Navngitt kommandoutvidelse. Etterfulgt av et + kommandonavn. + +Dette er kommandoer som er generelt viktige, men som blir brukt mindre +enn de kommandoene du allerede har lært. Du har allerede sett to av +dem, C-x C-f for Find, og C-x C-x for Save. Et annet eksempel er +kommandoen for å avslutte Emacs, som har kommandoen C-x C-c. (Ikke +vær redd for å miste eventuelle forandringer du har gjort, C-x C-c vil +sørge for at du får lagret de forandringene du ønsker før Emacs +avslutter.) + +C-z er kommandoen for å avslutte Emacs *midlertidig* slik at du kan +vende tilbake til samme Emacs senere. + +På systemer som tillater det vil C-z suspendere Emacs, dvs. returnere +tilbake til skallet uten å drepe Emacs-prosessen. I de fleste +skallene kan du få tilbake Emacs med kommandoen `fg', eller `%xemacs'. + +På systemer som ikke har implementert denne egenskapen vil C-z +opprette et skall som kjører under Emacs, og som gir deg sjansen til å +kjøre andre programmer og så returnere til Emacs etterpå. Den gir +ingen eksakt avslutning av Emacs. I slike tilfeller vil vanligvis +kommandoen `exit' returnere fra skallet og tilbake til Emacs. + +C-x C-c benyttes når du skal avslutte Emacs. Det er også fornuftig å +avslutte Emacs hvis den har blitt startet opp av et mail-program, +eller andre applikasjoner, siden det ikke er sikkert at de greier å +håndtere suspendering av Emacs. Under normale omstendigheter, hvis du +ikke har tenkt å logge ut, er det bedre å suspendere Emacs med C-z +isteden for å avslutte. + +Det finnes mange C-x kommandoer. Her er en liste over dem du har +lært: + + C-x C-f Finne fil. + C-x C-s Lagre fil. + C-x C-b Utlisting av buffrene. + C-x C-c Avslutte Emacs. + C-x u Angre. + +Navngitte kommandoer er kommandoer som blir brukt mye sjeldnere, eller +kommandoer som bare brukes i bestemte modus. Et eksempel på en slik +kommando er "replace-string", som globalt erstatter en tekststreng med +en annen. Når du taster M-x vil Emacs komme med en prompt nederst i +skjermbildet der du skal skrive inn kommandoen du ønsker å kjøre, i +dette tilfellet "replace-string". Det er bare å skrive "repl s", +Emacs vil da fullføre kommandonavnet. Avslutt kommandoen med +. + +Kommandoen "replace-string" krever to argumenter, tekststrengen som +skal erstattes og tekststrengen som denne skal erstattes med. Du må +avslutte begge argumentene med . + +>> Flytt markøren til den blanke linjen to linjer under denne. + Trykk M-x repl sforandretendret. + + Legg merke til hvordan denne linjen har blitt forandret, du har + erstattet ordet f-o-r-a-n-d-r-e-t med "endret" alle plassene der + ordet "forandret" forekommer, etter markørpossisjonen. + + +* AUTOMATISK LAGRING +-------------------- + +Når du har gjort forandringer i en fil, men ikke lagret den, vil det +gå tapt hvis maskinen krasjer. Som en beskyttelse mot dette vil Emacs +periodisk lagre en "autosave"-fil for hver av filene du redigerer. +Denne filen har en # i begynnelsen og slutten av filnavnet. Hvis du +for eksempel har en fil med navnet "hallo.c" så vil navnet på +"autosave"-filen bli "#hallo.c#". Når du lagrer filen på vanlig måte +vil Emacs slette unna "autosave"-filen. + +Hvis maskinen krasjer kan du gjenvinne "autosave"-filene ved å finne +filen på vanlig måte (filen du redigerte på, ikke "auto-save"- filen) +og trykke M-x recover file. Når Emacs vil ha bekreftelse +svarer du yes for å gjenvinne "autosave"-filen. + + +* ECHO-OMRÅDE +------------- + +Hvis Emacs ser at du skriver kommandoene langsomt så vil den vise dem +på den nederste linjen i skjermbildet i et område som blir kalt "echo +area". Dette området inneholder den nederste linjen i skjermbildet. + + +* MODUSLINJEN +------------- + +Linjen like over echoområdet blir kalt "moduslinje". Denne ser +omtrent slik ut: + +--**-XEmacs: TUTORIAL.no (Fundamental)--L773--68%-------- + +Denne linjen inneholder nyttig informasjon over statusen til Emacs og +teksten du redigerer på. + +Du vet allerede hva filnavnet betyr, det er den filen du har funnet. +-NN%-- forteller den aktuelle posisjonen i teksten, dvs. NN prosent av +teksten befinner seg over toppen av skjermbildet. Hvis toppen av +filen er i skjermbildet vil det stå --Top-- isteden for --00%--, og +hvis slutten av filen er i skjermbildet vil det stå --Bot--. Hvis du +ser på en fil der hele teksten passer inn på en side vil det stå +--All--. + +Stjernene i begynnelsen av linjen forteller at det er blitt foretatt +endringer i filen siden den sist ble lagret. Når du nettopp har åpnet +en fil vil det ikke stå noe her, bare minustegn. + +Den delen av moduslinjen som står inne i parenteser forteller hvilken +redigeringsmodus du bruker. Standardmodusen er "Fundamental", som er +den du bruker nå. Det er et eksempel på en "hovedmodus". + +Emacs har mange forskjellige hovedmoduser. Noen av dem er tiltenkt +redigering av forskjellige programmeringsspråk og/eller typer tekst, +for eksempel Lisp mode, Text mode, ol. Det kan bare være en +hovedmodus om gangen, og modusnavnet vil alltid stå der det står +Fundamental nå. + +Hver hovedmodus gjør at endel kommandoer oppfører seg annerledes. Det +finnes for eksempel kommandoer for å sette inn kommentarer i +programkode, og siden hvert programmeringsspråk har forskjellige måter +å angi kommentarer på må de ulike hovedmodusene sette inn disse +kommentarene på forskjellige måter. Hver hovedmodus har en kommando +som brukes for å skifte til denne modusen på. For eksempel M-x +fundamental-mode er kommandoen for å skifte til Fundamental mode. + +Hvis du skal redigere engelsk (eller norsk) tekst, slik som denne +filen, bør du bruke "Text Mode". + +>> Tast M-x text-mode. + +Ingen av kommandoene du har lært hittil vil forandre Emacs i noe +særlig grad. Men du kan legge merke til at M-f og M-b nå behandler +apostrofer som en del av ordet. Tidligere, i Fundamental mode, +behandlet M-f og M-b apostrofene som ordskillere. + +Hver hovedmodus gjør vanligvis små forandringer slik som denne, og de +fleste kommandoene gjør det samme i hver hovedmodus, de fungerer bare +litt annerledes. + +For å få fram dokumentasjonen på den hovedmodusen du er inne i nå kan +du trykke C-h m. + +>> Bruk C-u C-v slik at denne linjen kommer nær toppen av + skjermbildet. +>> Trykk C-h m, og se hvordan Text mode er forskjellig fra Fundamental + mode. +>> Trykk q for å fjerne dokumentasjonen fra skjermbildet. + +Hovedmodus blir kalt hovedmodus fordi det også finnes bimodus. +Bimodus er ikke alternativer til hovedmodus, men de modifiserer dem. +Hver bimodus kan bli slått av og på uavhenging av andre bimoduser, og +uavhengig av hovedmodus. Derfor kan du bruke ingen bimodus, en +bimodus, eller en kombinasjon av flere bimoduser. + +En bimodus som er nyttig, spesielt ved redigering av tekst, er "Auto +Fill mode". Når denne er slått på vil Emacs dele linjene automatisk +hvis linjen blir for lang for å passe inn på ett skjermbilde. + +Du kan slå på Auto Fill mode ved å utføre en M-x +auto-fill-mode. Når denne modusen er på kan du slå den av +igjen ved å utføre en ny M-x auto-fill-mode. Denne kommandoen +bytter mellom av og på, også kalt "toggle the mode". + +>> Trykk M-x auto-fill-mode nå. Skriv så inn en linje med + "aoeu " inntil linjen deler seg. Du er nødt til å putte inn + ordskillere, fordi Auto Fill bare brekker linjen ved ordskillere. + +Margen er vanligvis satt til 70 tegn, men du kan endre dette ved å +bruke kommandoen C-x f. Antall tegn blir gitt til kommandoen gjennom +et numerisk argument. + +>> Tast C-x f med et argument på 20. (C-u 20 C-x f). Skriv så inn + noe tekst og legg merke til at Emacs bryter linjer som er lengre + enn 20 tegn. Sett margen tilbake til 70 tegn igjen, ved å bruke + C-x f en gang til. + +Hvis du gjør forandringer midt i en linje så vil ikke Auto Fill mode +kunne reformatere linjene for deg. For å gjøre dette kan du taste M-q +(Meta-q) med markøren inne i det avsnittet du ønsker å reformatere. + +>> Flytt markøren inn i forrige avsnitt og trykk M-q. + + +* SØKING +-------- + +Emacs kan utføre søk etter tekststrenger (grupper med sammenhengende +bokstaver eller ord) enten framover eller bakover i teksten. Når du +søker etter tekst vil markøren flytte seg til den neste plassen der +tekststrengen opptrer. + +Søkemetoden til Emacs er litt forskjellig fra andre søkemetoder +implementert i de fleste andre redigeringsprogrammer på den måten at +den er inkrementell. Dette betyr at søket foregår mens du taster inn +tekststrengen du skal søke etter. + +Kommandoen for å innlede et søk er C-s for å søke framover, og C-r for +å søke bakover. MEN VENT! Ikke prøv dem enda. + +Når du taster C-s vil du legge merke til at teksten "I-search" dukker +opp i echoområdet. Dette forteller deg at Emacs er inne i det som +kalles inkrementellt søk, og venter på at du skal skrive inn det du +leter etter. avslutter søket. + +>> Trykk nå C-s for å starte et søk. Skriv så, en bokstav om gangen, + ordet 'markør', og legg inn en pause etter hver gang du skriver en + bokstav slik at du får med deg hva som skjer med markøren. + Nå har du søkt etter ordet "markør" en gang. +>> Tast C-s en gang til for å søke etter neste forekomst av ordet + "markør". +>> Trykk nå fire ganger og se hvordan markøren beveger seg +>> Trykk for å avslutte søket. + +La du merke til hva som skjedde? I inkrementell søk prøver Emacs å gå +til den forekomsten av teksten som du har skrevet så langt, og uthever +det slik at du ser hvor den er. For å gå til neste forekomst av ordet +'markør' er det bare å taste C-s en gang til. Hvis det ikke er flere +forekomster vil Emacs komme med et pip og en melding om at søket +midlertidig har feilet. C-g vil også avbryte søket. + +NB: På noen systemer vil C-s føre til at skjermen "fryses" og du vil +ikke være istand til å utføre noen flere kommandoer. Dette indikerer +at en operativsystem-egenskap kalt "flytkontroll" har fanget opp +C-s'en og ikke sendt den videre til Emacs. For å fortsette må trykke +C-q. Se da i avsnittet "Spontaneous Entry to Incremental Search" i +Emacs-manualen for råd om hvordan dette kan avverges. + +Hvis du er inne i et inkrementellt søk og trykker vil du +legge merke til at den siste bokstaven i søkestrengen blir slettet og +søket hopper tilbake til den forrige forekomsten fra søket. Hvis du +for eksempel taster "m" for å søke etter den første forekomsten av +"m", og så trykker "a" så vil markøren bevege seg til første forekomst +av "ma". Trykk nå . Dette fjerner "a" fra søkestrengen, og +markøren beveger seg tilbake til den første forekomsten av "m". + +Hvis du er midt i et søk og trykker en control- eller meta-kombinasjon +(med et par unntak: tegn som blir brukt under søkingen, slik som C-s +og C-r), vil søket avbrytes. + +C-s starter et søk som leter etter enhver forekomst av søkestrengen +ETTER markørposisjonen. Hvis du skal søke etter en streng tidligere i +teksten må du bruke C-r. Alt vi har fortalt om C-s fungerer også for +C-r, bortsett fra at retningen på søket er i motsatt retning. + + +* FLERE VINDUER +--------------- + +En av egenskapene til Emacs er at du kan vise flere en et buffer på +skjermen samtidig. + +>> Flytt markøren til denne linjen og trykk C-u 0 C-l + +>> Tast nå C-x 2, som vil føre til at skjermen deles i to vinduer. + Begge vinduene viser denne veiledningen. Markøren står i det + øverste vinduet. + +>> Tast C-M-v for å "scrolle" det nederste vinduet. + (Hvis du ikke har Meta-tasten trykker du ESC C-v.) + +>> Tast C-x o ("o" for "other") for å flytte markøren til det + nederste vinduet. + +>> Bruk C-v og M-v i det nederste vinduet for å flytte deg opp og ned + i teksten. Fortsett å les denne anvisningen i det øverste vinduet. + +>> Tast C-x o igjen for å flytte markøren tilbake til det øverste + vinduet. Markøren i det øverste vinduet står på samme plass som + det gjorde før du forlot det. + +Du kan fortsette å bruke C-x o for å bytte mellom de to vinduene. +Hvert av vinduene har sin egen plassering av markøren, men det er bare +ett av vinduene som viser den. Alle redigeringskommandoer fungerer på +det vinduet markøren er synlig i. Vi kaller dette vinduet det valgte +vinduet, eller "selected window". + +Kommandoen C-M-v er nyttig når du redigerer tekst i et vindu og bruker +det andre vinduet for referanser. Da kan du kan ha markøren i det +samme vinduet hele tiden og du kan bruke C-M-v for å flytte deg i det +andre vinduet. + +C-M-v er et eksempel på en CONTROL-META-kombinasjon. Hvis du har +META-tast holder du både CTRL og META nedtrykt mens du trykker v. Det +er ikke nøye hvilken av tastene CTRL og META som trykkes først, fordi +begge fungerer slik at de "modifiserer" de andre tastene du trykker. + +Hvis du ikke har META-tasten, og bruker ESC isteden, er rekkefølgen +viktig. Du må trykke ESC etterfulgt av CTRL-v, CTRL-ESC v vil ikke +fungere. Dette er fordi ESC er et tegn for seg selv, og fungerer ikke +som "modifikator". + +>> Tast C-x 1 (i det øverste vinduet) for å bli kvitt det nederste + vinduet. + +(Hvis du hadde tastet C-x 1 i det nederste vinduet ville det øverste +forsvunnet. Tenk på denne kommandoen som "Behold bare et vindu, det +som markøren står i.") + +Du er ikke nødt til å ha samme buffer i begge vinduene. Du kan bruke +C-x C-f for å finne en ny fil i et av vinduene, det andre vinduet +forblir uforandret. Du vil merke at vinduene er helt uavhengige. + +Her er en annen måte å bruke to vinduer til å vise to forskjellige +filer: + +>> Tast C-x 4 C-f etterfulgt av et filnavn. Avslutt med . + Den nye filen vil da dukke opp i det nederste vinduet. Markøren + blir også flyttet dit. + +>> Tast C-x o for å gå tilbake til det øverste vinduet, og C-x 1 for å + bli kvitt det nederste igjen. + + +* REKURSIVE REDIGERINGSNIVÅER +----------------------------- + +Noen ganger kommer du inn i noe som blir kalt "recursive editing +level". Dette blir indikert med hakeparenteser i moduslinjen, og vil +omringe parentesene rundt hovedmodusen. For eksempel vil det da stå +[(Fundamental)] istedenfor (Fundamental). + +For å komme ut av "recursive editing mode" trykker du ESC ESC ESC. +Dette er en generell "kom seg ut" kommando. Du kan også bruke den for +å bli kvitt ekstra vinduer og for å komme deg ut av minibuffret. + +>> Tast M-x for å komme inn i minibuffren. Tast så ESC ESC ESC for å + komme ut. + +Du kan ikke bruke C-g for å komme ut av "recursive editing mode". +Dette er fordi C-g blir brukt for å avbryte kommandoer og argumenter +INNENFOR "recursive editing level". + + +* HVORDAN FINNE MERE HJELP +-------------------------- + +I denne veiledningen har vi prøvd å inkludere akkurat nok informasjon +til at du kan begynne å bruke Emacs. Det er så mange muligheter i +Emacs at det ville vært umulig å forklare her. Men du ønsker sikkert +å lære mer om Emacs siden den har mange nyttige egenskaper. Emacs +tilbyr kommandoer for å lese dokumentasjonen om Emacs-kommandoer. +Disse "hjelp"-kommandoene starter med tastekombinasjonen Control-h, +som blir kalt "the Help character". + +For å bruke denne hjelpen taster du C-h etterfulgt av et tegn som +forklarer hva du vil ha hjelp om. Hvis du virkelig har rotet deg bort +kan du taste C-h ? for at Emacs skal vise hvilken hjelp som er +tilgjengelig. Hvis du har tastet C-h og bestemmer deg for at du ikke +vil ha noen hjelp så kan du taste C-g for å avbryte. + +(På noen servere er C-h rekonfigurert. Dette skal vanligvis ikke +gjøres, og hvis det er det så klag til systemadministratoren. Imens +kan du bruke M-x help istedenfor.) + +Den mest grunnleggende hjelp-funksjonen er C-h c. Tast C-h, en "c" og +en kommandosekvens. Emacs vil da komme med en beskrivelse av denne +kommandoen. + +>> Tast C-h c Control-p. + Meldingen skal da bli noe slik som + + C-p runs the command previous-line + +Dette forteller navnet til funksjonen. Funksjonsnavn blir stort sett +brukt for å spesialtilpasse og utvide Emacs. Men siden +funksjonsnavnet er valgt for å indikere hvilken kommando den utfører +kan de også fungere som en enkel dokumentasjon, nok for å minne deg på +kommandoer du allerede har lært. + +Flertegnskommandoer, slik som C-x C-s og (hvis du ikke har META, EDIT +eller ALT tast) v, er også tillatt etter C-h c. + +For å få mere informasjon om en kommando kan du bruke C-h k isteden +for C-h c. + +>> Tast C-h k Control-p. + +Dette vil komme med en dokumentasjon på funksjonen og navnet i et eget +vindu. For å avslutte hjelpvinduet kan du trykke q. + +Her er flere nyttige C-h opsjoner: + + C-h f Beskrive en funksjon. Du skriver inn funksjonsnavnet. + +>> Prøv å tast C-h f previous-line. + Dette vil skrive ut informasjonen Emacs har om funksjonen som + implementerer C-p kommandoen. + + C-h a Apropos. Vil liste ut alle funksjoner og variabler + som søkestrengen angir. Kommandoer som kan bli utført + med Meta-x blir markert med en stjerne (*) til venstre + for funksjonsnavnet. + +>> Tast C-h a newline. + +Dette vil få fram en liste over alle funksjoner og variabler der +"newline" inngår i navnet. Du kan trykke eller klikk den +midterste musknappen for å finne ut mere om en funksjon eller +variabel. Trykk `q' for å avslutte. + + +* TIL SLUTT +----------- + +Husk at C-x C-c vil avslutte Emacs permanent. For å gå midlertidig +til et skall, slik at du senere kan komme tilbake igjen, bruker du +C-z. (Under X vil dette minimere Emacs.) + +Denne veiledningen er laget for at den skal være forståelig for nye +brukere, så hvis det er noe som er uklart holder det ikke å synes synd +på seg selv: send en mail og klag! + + +KOPIERING / DISTRIBUSJON +------------------------ + +Denne veiledningen stammer fra en hel rekke Emacs-veiledninger, og den +første ble skrevet av Stuart Cracraft for den originale Emacs. Ben +Wing oppdaterte veiledningen for X Windows. Martin Buchholz og Hrvoje +Niksic la til endringer for XEmacs, og Stig Bjørlykke oversatte den +til norsk. + + +This version of the tutorial, like GNU Emacs, is copyrighted, and +comes with permission to distribute copies on certain conditions: + +Copyright (c) 1997, Stig Bjørlykke. + + 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. + +The conditions for copying Emacs itself are more complex, but in the +same spirit. Please read the file COPYING and then do give copies of +GNU Emacs to your friends. Help stamp out software obstructionism +("ownership") by using, writing, and sharing free software! diff --git a/etc/TUTORIAL.pl b/etc/TUTORIAL.pl new file mode 100644 index 0000000..85ffdcb --- /dev/null +++ b/etc/TUTORIAL.pl @@ -0,0 +1,1170 @@ +Copyright (c) 1985, 1994 Free Software Foundation, Inc. Szczegó³y na +koñcu pliku. + +Czytasz w³a¶nie krótki podrêcznik Emacsa. + +Polecenia Emacsa ogólnie wymagaj± wci¶niêcia klawisza CONTROL (czasami +oznaczanego CTRL lub CTL) lub klawisza META. Na niektórych +klawiaturach klawisz META jest oznaczany ALT lub EDIT, albo jeszcze +inaczej (na przyk³ad na klawiaturach firmy SUN klawisz ze znakiem karo +na lewo od klawisza odstêpu to jest w³a¶nie META). Je¶li nie masz +klawisza META, mo¿esz w jego zastêpstwie u¿ywaæ ESC. Zamiast pisaæ +META czy CONTROL za ka¿dym razem, gdy masz przycisn±æ ten klawisz, +u¿ywaæ bêdziemy nastêpuj±cych skrótów: + + C- oznacza trzymanie klawisza CONTROL podczas + wciskania klawisza . Na przyk³ad C-f bêdzie odpowiada³o + naci¶niêciu f, podczas gdy klawisz CONTROL by³ wci¶niêty. + + M- oznacza trzymanie klawisza META wci¶niêtego podczas + wciskania klawisza . Je¶li nie masz klawisza META, + naci¶nij i pu¶æ klawisz ESC, a potem naci¶nij + klawisz . + +Uwaga: by zakoñczyæ sesje Emacsa naci¶nij C-x C-c (dwa znaki). + +Znaki ">>" na lewym marginesie w dalszej czê¶ci tego podrêcznika +oznaczaj± æwiczenia dla Ciebie. Na przyk³ad: +<> + +>> Teraz naci¶nij C-v (nastêpny ekran), by przej¶æ na nastêpny ekran + podrêcznika (zrób to naciskaj±c jednocze¶nie klawisz CONTROL + i v). Od tego momentu powiniene¶ robiæ to zawsze, gdy dojdziesz + do koñca ekranu. + +Zwróæ uwagê na to, ze kilka linii powtarza siê, gdy przechodzisz z +ekranu na ekran; zachowanie to ma zapewniæ pewna ci±g³o¶æ podczas +przesuwania siê w obrêbie pliku. + +Pierwsza umiejêtno¶ci±, która powiniene¶ opanowaæ, jest sposób +przesuwania siê z miejsca na miejsce. Ju¿ wiesz, jak przesuwaæ siê o +jeden ekran do przodu. By przesun±æ siê o jeden ekran do tylu, +wci¶nij M-v (wci¶nij META i naci¶nij v, lub naci¶nij v je¶li nie +masz klawisza META lub EDIT). + +>> Spróbuj nacisn±æ M-v, a potem C-v by przesun±æ siê w przód i w ty³ + kilka razy. + + +PODSUMOWANIE +------------ + +Nastêpuj±ce polecenia s± u¿yteczne do przegl±dania po jednym ekranie: + + C-v Przesuñ siê o jeden ekran do przodu + M-v Przesuñ siê o jeden ekran do tylu + C-l Wyczy¶æ ekran i wy¶wietl go na nowo, umieszczaj±c + tekst z okolic kursora w ¶rodku ekranu. + (Ta kombinacja to CONTROL-L, a nie CONTROL-1.) + +>> Znajd¼ kursor i zapamiêtaj, jaki tekst jest w jego okolicy. + Naci¶nij nastêpnie C-l. + Znajd¼ kursor jeszcze raz i zwróæ uwagê, ¿e znajduje + siê on w okolicy tego samego tekstu. + + +PODSTAWY KIEROWANIA KURSOREM +---------------------------- + +Przesuwanie siê z ekranu na ekran jest u¿yteczne, ale jak przej¶æ do +okre¶lonego miejsca w obrêbie jednego ekranu? + +Mo¿na to zrobiæ na kilka sposobów. Najprostszym jest u¿ycie poleceñ +C-p, C-b, C-f oraz C-n. Ka¿de z tych poleceñ przesuwa kursor o jeden +wiersz lub kolumnê w okre¶lonym kierunku. Oto schemat, który to +obrazuje: + + Poprzednia linia, C-p + (ang. previous line) + : + : + Wstecz, C-b .... Kursor .... Do przodu, C-f + (ang. back) : (ang. forward) + : + : + Nastêpna linia, C-n + (ang. next line) + +>> Przesuñ kursor na ¶rodek schematu za pomoc± C-n lub C-p. Naci¶nij + potem C-l, by zobaczyæ ca³y diagram na ¶rodku ekranu. + +To s± podstawowe polecenia kieruj±ce po³o¿eniem kursora, których +bêdziesz u¿ywaæ nieustannnie, warto wiêc je zapamiêtaæ. + +>> Naci¶nij kilka razy C-n, by przesun±æ kursor do tej linii. + +>> Przesuñ siê w g³±b linii za pomoc± C-f, a potem do góry za pomoc± + C-p. Zwróæ uwagê na zachowanie siê C-p, gdy kursor jest w ¶rodku + linii. + +Ka¿da linia tekstu koñczy siê znakiem nowej linii, który oddziela ja +od nastêpnej. Ka¿dy Twój plik powinien koñczyæ siê znakiem nowej +linii (ale Emacs nie zmusza Ciê do tego). + +>> Spróbuj nacisn±æ C-b na pocz±tku linii. Powinno to Ciê przenie¶æ + na koniec poprzedniej linii. Dzieje siê tak dlatego, ¿e kursor + przechodzi nad znakiem nowej linii. + +C-f przechodzi nad znakiem nowej linii tak samo jak C-b. + +>> Naci¶nij kilka razy C-b, by¶ dostrzeg³, gdzie jest kursor. + Naci¶nij potem C-f, by wróciæ na koniec linii. W koñcu naci¶nij + jeszcze raz C-f, by przej¶æ do nastêpnej linii. + +Gdy przesuwasz kursor poza dolna krawêd¼ ekranu, tekst za krawêdzi± +przesuwa siê na ekran (ang. scrolling). Dziêki temu Emacs mo¿e +przesun±æ kursor do okre¶lonego miejsca bez umieszczania go poza +ekranem. + +>> Spróbuj przesun±æ kursor poza dolna granice ekranu za pomoc± C-n i + zobacz co siê stanie. + +Je¶li przesuwanie siê o jeden znak na raz jest dla Ciebie za wolne, +spróbuj przesuwaæ siê o s³owa. M-f (Meta-f) przesuwa kursor do przodu +o s³owo, a M-b przesuwa go do tylu o jedno s³owo. + +>> Spróbuj nacisn±æ kilka M-f i M-b. + +Gdy jeste¶ w ¶rodku s³owa, M-f przesuwa kursor na koniec s³owa. Je¶li +natomiast jeste¶ w przerwie miedzy s³owami, M-f przesuwa kursor na +koniec nastêpnego s³owa. M-b zachowuje siê podobnie, jak chodzi o +ruch do ty³u. + +>> Naci¶nij M-f i M-b kilka razy na przemian z C-f i C-b tak, by¶ + móg³ zauwa¿yæ dzia³anie M-f i M-b naci¶nietych w ró¿nych miejscach + wewn±trz i pomiêdzy s³owami. + +Zauwa¿ podobieñstwo pomiêdzy C-f i C-b oraz M-f i M-b. Bardzo czêsto +kombinacje zawieraj±ce Meta opisuj± operacje zwi±zane z jednostkami +jêzykowymi (s³owa, zdania, akapity), podczas gdy kombinacje oparte o +Control dzia³aj± na podstawowych jednostkach niezale¿nych od tego, co +edytujesz (znaki, linie, itd.). + +Ta zale¿no¶æ stosuje siê do linii i zdañ: C-a i C-e przesuwaj± kursor +na pocz±tek i koniec linii, a M-a i M-e przesuwaj± go na pocz±tek i +koniec zdania. + +>> Naci¶nij kilka razy C-a, a potem kilka razy C-e. + Powtórz to z M-a, a potem z M-e. + +Czy zauwa¿y³e¶, ze powtarzanie C-a nic nie zmienia, natomiast powtórne +M-a przesuwa Ciê o jedno zdanie? Chocia¿ nie jest to do koñca +analogiczne, wydaje siê jednak naturalne. + +Po³o¿enie kursora w tek¶cie okre¶lane jest mianem "punktu". + +Oto podsumowanie prostych poleceñ s³u¿±cych do przesuwania kursora, +w³±cznie z operacjami dotycz±cymi s³ów i zdañ: + + C-f Do przodu o jeden znak + C-b W ty³ o jeden znak + + M-f Do przodu o s³owo + M-b W ty³ o s³owo + + C-n Nastêpna linia + C-p Poprzednia linia + + C-a Pocz±tek linii + C-e Koniec linii + + M-a W ty³ na pocz±tek zdania + M-e Do przodu na koniec zdania + +>> Przeæwicz kilka razy wszystkie powy¿sze polecenia dla wprawy. + S± one najczê¶ciej u¿ywanymi poleceniami. + +Dwa inne wa¿ne polecenia przesuwaj±ce kursor to M-< (Meta i znak +mniejszo¶ci), które przesuwa kursor na pocz±tek ca³ego tekstu i M-> +(Meta i znak wiêkszo¶ci), które przesuwa kursor na koniec ca³ego +tekstu. + +Na wiêkszo¶ci terminali "<" jest nad przecinkiem, tak wiec musisz u¿yæ +klawisza Shift by nacisn±æ "<". Musisz wiec tak¿e u¿yæ Shift by +nacisn±æ M-<. Bez Shift by³oby to M-przecinek. + +>> Naci¶nij M-< by przej¶æ na pocz±tek podrêcznika. U¿yj potem C-v + kilkukrotnie, by wróciæ tutaj. + +>> Teraz naci¶nij M->, by przej¶æ na koniec podrêcznika. Wróæ do tego + miejsca za pomoc± kilkukrotnego M-v. + +Je¶li Twój terminal ma klawisze strza³ek, to mo¿esz ich u¿yæ do +przesuwania kursora. Zalecamy Ci nauczenie siê kombinacji C-b, C-f, +C-n i C-p z trzech powodów. Po pierwsze, dzia³aj± one na wszystkich +typach terminali. Po drugie, gdy ju¿ zdobêdziesz pewna praktykê w +pos³ugiwaniu siê Emacsem, bêdzie Ci szybciej nacisn±æ te kombinacje +ni¿ klawisze strza³ek (poniewa¿ nie wymaga to przenoszenia d³oni z +miejsca, które zajmuj± podczas szybkiego pisania za pomoc± 10 palców). +Po trzecie wreszcie, gdy ju¿ wyrobisz sobie zwyczaj pos³ugiwania siê +tymi poleceniami z klawiszem Control, bêdziesz móg³ ³atwo nauczyæ siê +innych zaawansowanych poleceñ przesuwaj±cych kursor. + +Wiêkszo¶æ poleceñ Emacsa akceptuje argument liczbowy; dla wiêkszo¶ci +poleceñ s³u¿y on jako liczba powtórzeñ. Sposób, w jaki okre¶lasz +liczbê powtórzeñ polecenia, to naci¶niecie C-u a potem cyfr, zanim +naci¶niesz polecenie. Je¶li masz klawisz META (lub EDIT lub ALT), +alternatywnym sposobem jest wciskanie klawiszy cyfr podczas +wprowadzania argumentu liczbowego. Zalecamy nauczenie siê metody +klawisza C-u, poniewa¿ dzia³a ona na wszystkich terminalach. + +Na przyk³ad C-u 8 C-f przesuwa kursor do przodu o osiem znaków. + +>> Spróbuj u¿yæ C-n i C-p z argumentem liczbowym, by przesun±æ kursor + do jednej z linii w pobli¿u tego zdania za pomoc± tylko jednego + polecenia. + +Wiêkszo¶æ poleceñ u¿ywa argumentu liczbowego jako liczba powtórzeñ. +Jest kilka poleceñ, które u¿ywaj± go w inny sposób. C-v i M-v s± +w¶ród tych wyj±tków. Je¶li poda siê im argument, przesuwaj± zawarto¶æ +ekranu w gore lub w dó³ o podana liczbê linii zamiast o tyle¿ ekranów. +Na przyk³ad C-u 4 C-v przewija ekran o 4 linie. + +>> Spróbuj nacisn±æ C-u 8 C-v. + +To powinno by³o przewin±æ ekran do góry o 8 linii. Je¶li chcia³by¶ +przewin±æ go w dó³, mo¿esz podaæ argument przed poleceniem M-v. + +Je¶li u¿ywasz systemu X-Windows, prawdopodobnie po prawej stronie okna +Emacsa znajduje siê prostok±tny obszar, nazywany po angielsku +"scrollbar". Za jego pomoc± mo¿esz przewijaæ tekst, u¿ywaj±c do tego +celu myszy. + +>> Spróbuj nacisn±æ ¶rodkowy klawisz myszy u góry pod¶wietlonego + obszaru na scrollbarze. To powinno przewin±æ tekst do miejsca + okre¶lonego wysoko¶ci±, na której nacisn±³e¶ klawisz myszy. + +>> Przesuñ mysz do miejsca oddalonego od górnego koñca scrollbaru + mniej wiêcej o trzy linie i naci¶nij lewy klawisz myszy kilka razy. + + +* KIEROWANIE KURSOREM Z X TERMINALA +----------------------------------- + +Je¶li masz X terminal, prawdopodobnie ³atwiej Ci bêdzie u¿ywaæ +klawiszy strza³ek po prawej stronie klawiatury do kierowania kursorem. +Klawisze strza³ek w lewo, w prawo, w górê i w dó³ dzia³aj± zgodnie z +oczekiwaniem; odpowiadaj± one dok³adnie C-b, C-f, C-p i C-n, ale s± +³atwiejsze do zapamiêtania. Mo¿esz tak¿e u¿ywaæ C-lewo i C-prawo by +przesuwaæ siê o s³owa oraz C-góra i C-dó³, by przesuwaæ siê o bloki +(np. akapity, je¶li edytujesz tekst). Je¶li masz klawisze oznaczone +HOME (lub BEGIN) oraz END, zanios± Ciê one na pocz±tek i koniec linii, +a C-home i C-end na pocz±tek i koniec pliku. Je¶li Twoja klawiatura +ma klawisze PgUp i PgDn, mo¿esz ich u¿yæ do przesuwania siê o jeden +ekran za jednym razem, tak jak M-v i C-v. + +Wszystkie te polecenia akceptuj± argument liczbowy, jak to jest +opisane powy¿ej. Mo¿esz stosowaæ pewne skróty w celu wpisania tych +argumentów: naci¶nij i trzymaj CONTROL lub META i wpisz liczbê. Na +przyk³ad, by przesun±æ kursor o 12 s³ów w prawo naci¶nij C-1 C-2 +C-prawo. Zwróæ uwagê, ze jest to ³atwe do wpisania, poniewa¿ nie +musisz puszczaæ klawisza CONTROL podczas wciskania klawiszy. + + +* GDY EMACS JEST ZABLOKOWANY +---------------------------- + +Je¶li Emacs przestaje odpowiadaæ na Twoje polecenia, mo¿esz go +bezpiecznie zatrzymaæ przyciskaj±c C-g. Mo¿esz u¿yæ C-g do przerwania +polecenia, które zabiera zbyt wiele czasu. + +Mo¿esz u¿yæ C-g tak¿e, by anulowaæ argument liczbowy lub pocz±tek +polecenia, którego nie chcesz dokañczaæ. + +>> Napisz C-u 100 jako argument liczbowy, po czym naci¶nij C-g. + Teraz naci¶nij C-f. Powinno przesun±æ to kursor o tylko jeden + znak, poniewa¿ anulowa³e¶ argument za pomoc± C-g. + +Je¶li nacisn±³e¶ przez pomy³kê, mo¿esz tego siê pozbyæ za pomoc± +C-g. + + +* ZABLOKOWANE POLECENIA +----------------------- + +Pewne polecenia Emacsa s± "zablokowane", tak by pocz±tkuj±cy +u¿ytkownicy nie mogli ich wywo³aæ przez przypadek. + +Je¶li wywo³asz jedno z zablokowanych poleceñ, Emacs wypisze komunikat +informuj±cy o tym, co to za polecenie, i zapyta Ciê, czy chcesz je +wywo³aæ. + +Je¶li naprawdê chcesz wywo³aæ to polecenie, naci¶nij spacje w +odpowiedzi na pytanie. Je¶li nie chcesz wywo³aæ zablokowanego +polecenia, odpowiedz na pytanie naciskaj±c "n". + +>> Napisz `C-x n p' (co jest zablokowanym poleceniem) i odpowiedz "n" + na zadane pytanie. + + +* OKNA +------ + +Emacs mo¿e miêæ kilka okien, ka¿de wy¶wietlaj±ce w³asny tekst. Zwróæ +uwagê, ze "okno" je¶li chodzi o Emacsa, nie odnosi siê do osobnego +okienka systemu okienkowego, ale do pojedynczego panelu wewn±trz +okienka systemu X-Windows. (Emacs mo¿e miêæ kilka X-okien, lub +"ramek" w terminologii Emacsa. Opisane jest to poni¿ej.) + +Na tym etapie lepiej jest siê nie zag³êbiaæ w techniki wykorzystuj±ce +kilka okien. Powiniene¶ jedynie wiedzieæ, w jaki sposób pozbyæ siê +nadmiaru okien, które mog± pojawiæ siê jako sk³adniki systemu pomocy +lub wynik pewnych poleceñ. Robi siê to w prosty sposób: + + C-x 1 Jedno okno (tzn. zabij wszystkie inne okna). + +Kombinacja ta to Control-x, po którym wystêpuje cyfra 1. C-x 1 +powiêksza okno, w którym jest kursor tak, by zajê³o ca³y ekran. +Kasuje to wszystkie inne okna Emacsa. + +>> Przesuñ kursor do tej linii i naci¶nij C-u 0 C-l. + +(C-l, jak pamiêtasz od¶wie¿a zawarto¶æ ekranu. Je¶li poda siê temu +poleceniu argument liczbowy, bêdzie to oznacza³o "od¶wie¿ zawarto¶æ +ekranu i umie¶æ bie¿±ca linie o tyle linii od góry ekranu". Tak wiec +C-u 0 C-1 oznacza "od¶wie¿ ekran, umieszczaj±c bie¿±ca linie na samej +górze".) + +>> Naci¶nij Control-x 2 + Zauwa¿ jak okno siê kurczy, podczas gdy nowe okno pojawia siê, + wy¶wietlaj±c zawarto¶æ tego bufora. + +>> Naci¶nij C-x 1 i nowe okno zniknie. + + +* WSTAWIANIE I USUWANIE +----------------------- + +Je¶li chcesz wstawiaæ tekst, po prostu go napisz. Znaki, które da siê +wy¶wietliæ, takie jak A, 7, *, itd, Emacs traktuje jako tekst i +wstawia natychmiast do bufora. Naci¶nij (znak powrotu +karetki), by wstawiæ znak nowej linii. + +Ostatni znak, który napisa³e¶ mo¿esz skasowaæ przez naci¶niecie +klawisza . Klawisz ten mo¿e byæ oznaczony "Del". W pewnych +wypadkach klawisz "Backspace" mo¿e s³u¿yæ za , ale nie jest to +regu³±! + +Ogólniej, usuwa znak bezpo¶rednio przed bie¿±ca pozycj± +kursora. + +>> Zrób to teraz: wstaw kilka znaków, po czym usuñ je za pomaca + kilkukrotnego naci¶niêcia . Nie przejmuj siê tym, + ¿e zmieniasz ten plik; nie zmienisz w ten sposób g³ównego pliku + podrêcznika. To jest Twoja w³asna kopia. + +Gdy linia tekstu staje siê zbyt d³uga, by zmie¶ciæ siê w jednym +wierszu na ekranie, jest ona "kontynuowana" w nastêpnym wierszu +ekranu. Znak "backslash" (`\') na prawym marginesie pozwala Ci +rozpoznaæ takie linie. + +>> Wpisuj jaki¶ tekst tak d³ugo, a¿ dojdziesz do prawego marginesu, i + potem nie przestawaj. Zauwa¿ysz, ze pojawi siê linia kontynuacji. + +>> U¿yj by usun±æ tekst tak, by linia znowu + mie¶ci³a siê na ekranie. Linia kontynuacji zniknie. + +Znak nowej linii mo¿e byæ kasowany tak, jak ka¿dy inny znak. +Usuniecie znaku nowej linii ³±czy je w jedna. Je¶li powsta³a w wyniku +tego linia jest zbyt d³uga, by zmie¶ciæ siê na szeroko¶æ ekranu, +zostanie ona wy¶wietlona z lini± kontynuacji. + +>> Przesuñ kursor na pocz±tek linii i naci¶nij . Bie¿±ca + linia zostanie po³±czona z poprzednia. + +>> Naci¶nij , by z powrotem wstawiæ znak nowej linii, który + skasowa³e¶. + +Pamiêtaj, ze wiêkszo¶æ poleceñ Emacsa mo¿e zostaæ wywo³anych z +parametrem liczby powtórzeñ; dotyczy to tak¿e znaków tekstu. Argument +liczbowy powoduje wstawienie znaku kilkukrotnie. + +>> Spróbuj zrobiæ to teraz -- naci¶nij C-u 8 * by uzyskaæ ********. + +Nauczy³e¶ siê ju¿ wiêkszej czê¶ci podstawowych sposobów pisania oraz +poprawiania b³êdów. W Emacsie mo¿esz usuwaæ równie¿ cale s³owa lub +cale linie. Oto podsumowanie operacji usuwania znaków: + + usuñ znak bezpo¶rednio przed kursorem + C-d usuñ znak bezpo¶rednio za kursorem + + M- wytnij s³owo bezpo¶rednio przed kursorem + M-d wytnij nastêpne s³owo bezpo¶rednio za kursorem + + C-k wytnij zawarto¶æ linii od kursora do jej koñca + M-k wytnij wszystkie znaki od kursora do koñca zdania + +Zauwa¿, ze i C-d w po³±czeniu z M- i M-d rozszerzaj± +regule rozpoczêt± przez C-f i M-f (Có¿, tak naprawdê nie +wymaga wci¶niêcia Control, ale pomiñmy to milczeniem). C-k i M-k s± +podobne do C-e i M-e w sensie, ¿e linie s± odpowiednikami zdañ. + +Gdy usuwasz wiêcej ni¿ jeden znak naraz, Emacs zachowuje usuniêty +tekst tak, by¶ móg³ go gdzie¶ wstawiæ z powrotem. Wstawianie +usuniêtego tekstu to "wklejanie". Mo¿esz wklejaæ usuniêty tekst b±d¼ +to w to samo miejsce, z którego zosta³ usuniêty, b±d¼ to w inne +miejsca. Ten sam tekst mo¿esz wklejaæ kilkukrotnie, w celu uzyskania +wielu kopii. Poleceniem, które wkleja tekst jest C-y. + +Zauwa¿ ró¿nicê pomiêdzy "wycinaniem" i "usuwaniem", polegaj±c± na tym, +ze wyciête rzeczy mog± byæ wklejone na nowo, natomiast usuniête nie. +W ogólno¶ci, polecenia, które kasuj± du¿o tekstu zachowuj± go, podczas +gdy polecenia, które usuwaj± po prostu jeden znak lub puste linie i +przerwy, nie zachowuj± usuniêtego tekstu. + +>> Przesuñ kursor na pocz±tek linii, która nie jest pusta. Naci¶nij + C-k, by wyci±æ tekst z tej linii. + +>> Naci¶nij C-k jeszcze raz. Zauwa¿, ze wycina to znak nowej linii, + który znajduje siê za ta linia. + +Zwróæ uwagê, ze pojedyncze C-k wycina zawarto¶æ linii, a powtórne C-k +wycina sam± linie tak, ¿e pozosta³e linie przesuwaj± siê do góry. C-k +traktuje argument liczbowy w specjalny sposób: wycina ono tyle linii +ORAZ ich zawarto¶æ. To nie jest samo powtarzanie kilka razy C-k. C-u +2 C-k wycina dwie linie i ich znaki nowej linii; dwukrotne naci¶niecie +C-k nie zrobi³oby tego. + +By odzyskaæ ostatnio wyciêty tekst i wstawiæ go w miejsce kursora, +naci¶nij C-y. + +>> Twoja kolej. Naci¶nij C-y, by z powrotem wstawiæ tekst. + +Zwróæ uwagê, ze je¶li naci¶niesz C-k kilka razy pod rz±d, ca³y wyciêty +tekst jest zachowywany w jednym kawa³ku tak, ¿e jedno C-y wklei +wszystkie linie. + +>> Naci¶nij C-k kilka razy. + +By odzyskaæ ten wyciêty tekst... + +>> ...naci¶nij C-y. Przesuñ potem kursor o kilka linii w dó³ i + naci¶nij C-y jeszcze raz. Widzisz, ze wstawia to ten sam tekst. + +Co zrobiæ, je¶li chcesz wstawiæ tekst, który wcze¶niej wyci±³e¶, a +potem wycinasz cos innego? C-y wstawia tekst ostatnio wyciêty. +Poprzedni fragment nie jest jednak stracony. Mo¿esz wróciæ do niego, +u¿ywaj±c polecenia M-y. Po tym, jak naci¶niesz C-y, by wstawiæ +ostatnio wyciêty tekst, naci¶niecie M-y zastêpuje wstawiony tekst +poprzednio wyciêtym. Dalsze naciskanie M-y przywo³uje coraz +wcze¶niejsze fragmenty tekstu. Gdy dojdziesz do tekstu, którego +szuka³e¶, nie musisz robiæ nic, by zosta³ on we w³a¶ciwym miejscu. Po +prostu kontynuuj edycjê tekstu, pozostawiaj±c wklejony tekst tam, +gdzie siê znajduje. + +Je¶li bêdziesz naciska³ M-y wystarczaj±co wiele razy, dojdziesz do +punktu, z którego wystartowa³e¶ (tekst ostatnio wyciêty). + +>> Wytnij jak±¶ line, zmieñ pozycjê kursora i wytnij inna. Naci¶nij + potem C-y by wstawiæ druga z wyciêtych linii. Potem naci¶nij M-y, + i linia ta zostanie zast±piona przez ta pierwsza. Naci¶nij M-y + jeszcze kilka razy, by zobaczyæ co siê dzieje. Powtarzaj to tak + d³ugo, a¿ druga z linii pojawi siê z powrotem. Je¶li chcesz, + mo¿esz pod±æ M-y dodatnie i ujemne argumenty. + + +* COFNIJ +-------- + +Je¶li wprowadzisz zmiany do tekstu, a potem dojdziesz do wniosku, ¿e +to by³a pomy³ka, mo¿esz cofn±æ te zmiany za pomoc± polecenia "cofnij" +(ang. undo), C-x u. + +C-x u cofa zmiany wprowadzone przez jedno polecenie; je¶li powtórzysz +C-x u kilka razy pod rz±d, ka¿de powtórzenie cofa koleje polecenie. + +Od tej regu³y s± dwa wyj±tki: polecenia, które nie zmieniaj± tekstu +nie licz± siê jako polecenia, które mo¿na cofn±æ (zarówno przesuniêcia +kursora, jak i przewijanie tekstu), oraz znaki wstawiane do tekstu +(np. litery) ³±czone s± w grupy do 20. (Ma to na celu zredukowanie +liczby naci¶niêæ C-x u, które musia³by¶ wykonaæ, by cofn±æ wstawianie +tekstu.) + +>> Wytnij te linie za pomoc± C-k, a potem naci¶nij C-x u i linia + powinna pojawiæ siê tu z powrotem. + +C-_ jest innym sposobem wywo³ania polecenia "cofnij"; dzia³a to +dok³adnie tak samo jak C-x u, jest jedynie ³atwiejsze do naci¶niêcia +kilka razy pod rz±d. Wada C-_ jest to, ze nie jest to oczywiste w +jaki sposób nacisn±æ te kombinacje na niektórych klawiaturach. To +w³a¶nie dlatego C-x u jest tak¿e dostêpne. Na niektórych terminalach +mo¿esz nacisn±æ C-_ poprzez przytrzymanie CTRL i naci¶niecie /. + +Argument liczbowy podany przed C-_ lub C-x u okre¶la liczbê powtórzeñ +tego polecenia. + + +* PLIKI +------- + +Aby edytowny przez Ciebie tekst zosta³ nma trwa³e zachowany, musisz +umie¶ciæ go w pliku. W przeciwnym wypadku zniknie on, gdy Emacs w +którym go edytowa³e¶ zostanie zamkniêty. Zachowywanie Twojego tekstu +w pliku nazywane bywa "odwiedzaniem" lub "znajdywaniem" pliku (ang. +"visiting" lub "finding"). + +Odwiedzanie pliku oznacza, ¿e jego zawarto¶æ zostaje wy¶wietlona w +Emacsie. Bardzo czêsto sprowadza siê to do edycji samego pliku. +Jednak¿e zmiany, które wprowadzasz nie s± trwa³e do momentu, w którym +"zachowasz" plik (ang. save). Zapobiega to sytuacji, w której +zostawiasz w systemie plik, który zosta³ tylko w po³owie zmieniony, a +tego nie chcesz zrobiæ. Nawet wtedy, gdy zachowujesz plik, Emacs +zostawia orygina³ zachowany pod inna nazwa na wypadek, gdyby¶ doszed³ +do wniosku, ¿e wprowadzone zmiany by³y b³êdne. + +Je¶li popatrzysz na dó³ ekranu, zauwa¿ysz linie, która zaczyna i +koñczy siê my¶lnikami i zawiera tekst "XEmacs: TUTORIAL". W tej +czê¶ci ekranu zawsze mo¿esz znale¼æ nazwê pliku, który w³a¶nie +odwiedzasz. W tej chwili odwiedzasz plik o nazwie "TUTORIAL", który +jest Twoja w³asn± kopi± podrêcznika Emacsa. Obojêtnie jaki plik +odwiedzisz, jego nazwa pojawi siê dok³adnie w tym miejscu. + +Polecenia, które s³u¿± do odwiedzania i zachowywania plików ró¿ni± siê +od innych poleceñ, które pozna³e¶ tym, ¿e sk³adaj± siê one z dwóch +znaków. Obydwa zaczynaj± siê od znaku Control-x. Jest mnóstwo +poleceñ, które zaczynaj± siê od tego w³a¶nie znaku; wiele z nich +dotyczy plików, buforów i z tym zwi±zanych rzeczy. Polecenia te maj± +d³ugo¶æ dwóch, trzech lub czterech znaków. + +Kolejn± nowa rzecz± odno¶nie polecenia odwiedzania pliku jest to, ¿e +musisz mu pod±æ nazwê pliku, który chcesz znale¼æ. Mówimy o tym, ¿e +polecenie "czyta argument z terminala" (w tym wypadku argument jest +nazwa pliku). Po tym, gdy wpiszesz polecenie + + C-x C-f znajd¼ plik (ang. find a file) + +Emacs poprosi Ciê o wpisanie nazwy pliku. Nazwa ta pojawia siê w +dolnej linii ekranu. Liniê tê nazywa siê "minibuforem" (ang. +"minibuffer") wtedy, gdy jest u¿ywana do wprowadzania tego typu +danych. Do edycji nazwy pliku u¿ywasz zwyk³ych poleceñ Emacsa. + +Wprowadzanie nazwy pliku (lub jakichkolwiek innych danych w +minibuforze) mo¿e zostaæ anulowane za pomoc± C-g. + +>> Naci¶nij C-x C-f, po czym naci¶nij C-g. Na skutek tego zniknie + minibufor oraz przerwane zostanie polecenie C-x C-f, które tego + minibufora u¿ywa³o. W rezultacie wiêc nie odwiedzisz ¿adnego + pliku. + +Gdy skoñczysz wpisywaæ nazwê pliku, naci¶nij , po czym +polecenie C-x C-f zabierze siê do roboty i znajdzie plik, który +wybra³e¶. Minibufor znika z chwil± zakoñczenia wykonywania polecenia +C-x C-f. + +Po chwili zawarto¶æ pliku pojawia siê na ekranie i mo¿esz j± edytowaæ. +Gdy chcesz zachowaæ zmiany, tak by je utrwaliæ, wydaj polecenie + + C-x C-s zachowaj plik (ang. save). + +Kopiuje to tekst z Emacsa do pliku. Za pierwszym razem gdy to robisz +Emacs zmienia nazwê oryginalnego pliku poprzez dodanie "~" na koñcu +jego nazwy. + +Gdy zachowywanie skoñczy siê, Emacs wypisuje nazwê zapisanego pliku. +Pliki powiniene¶ zachowywaæ stosunkowo czêsto, tak by nie straciæ za +du¿o w przypadku za³amania systemu. + +>> Naci¶nij C-x C-s by zachowaæ swoja kopie podrêcznika. Emacs + powinien wypisaæ "Wrote ...TUTORIAL" na dole ekranu. + +UWAGA: W niektórych systemach naci¶niecie C-x C-s zamrozi ekran i nie +zobaczysz ¿adnego tekstu z Emacsa. Oznacza to, ¿e sk³adowa systemu +operacyjnego, zwana kontrol± przep³ywu (ang. flow control) +przechwyci³a C-s i nie pozwoli³a mu doj¶æ do Emacsa. By odzyskaæ +kontrole nad ekranem, naci¶nij C-q. Dodatkowej pomocy poszukaj w +rozdziale "Spontaneous Entry to Incremental Search" w podrêczniku +Emacsa. + +Mo¿esz odwiedziæ istniej±ce pliki w celu ich edycji lub czytania. +Mo¿esz tak¿e odwiedziæ plik, który jeszcze nie istnieje. W ten +w³a¶nie sposób tworzy siê w Emacsie nowe pliki: odwied¼ plik, co da Ci +nowe puste miejsce, a potem zacznij wstawiaæ tekst. Gdy za¿±dasz +zachowania pliku, wtedy Emacs naprawdê utworzy plik z tekstem, który +wpisa³e¶. Od tego momentu mo¿esz uwa¿aæ, ¿e edytujesz istniej±cy +plik. + + +* BUFORY +-------- + +Je¶li odwiedzisz inny plik za pomoc± C-x C-f, poprzedni plik pozostaje +w Emacsie. Mo¿esz prze³±czyæ siê do niego, odwiedzaj±c go jeszcze raz +za pomoc± C-x C-f. W ten sposób mo¿esz w Emacsie miêæ ca³kiem du¿o +plików. + +>> Utwórz plik o nazwie "foo" za pomoc± C-x C-f foo . + Wpisz w niego jaki¶ tekst i zachowaj "foo" za pomoc± C-x C-s. + W koñcu napisz C-x C-f TUTORIAL , by wróciæ do podrêcznika. + +Emacs przechowuje tekst ka¿dego pliku w obiekcie, zwanym "buforem". +Odwiedzenie pliku tworzy nowy bufor wewn±trz Emacsa. By zobaczyæ +listê buforów, które istniej± w Twoim Emacsie, naci¶nij + + C-x C-b lista buforów (ang. list buffers). + +>> Naci¶nij C-x C-b. + +Zwróæ uwagê, ze ka¿dy bufor ma w³asn± nazwê, mo¿e tak¿e mieæ +skojarzon± z sob± nazwê pliku, który zawiera. Pewne bufory nie +odpowiadaj± ¿adnym plikom. Na przyk³ad bufor "*Buffer List*" nie +odwiedza ¿adnego pliku. Jest to bufor, który zawiera listê buforów +stworzona przez Twoje naci¶niecie C-x C-b. DOWOLNY tekst, który +ogl±dasz w oknie Emacsa jest zawsze czê¶ci± jakiego¶ bufora. + +>> Naci¶nij C-x 1 by pozbyæ siê listy buforów. + +Je¶li dokonujesz zmian tekstu w jakim¶ pliku, a potem odwiedzisz inny +plik, zawarto¶æ tego pierwszego NIE jest automatycznie zachowywana. +Zmiany, które wprowadzi³e¶ pozostaj± w Emacsie, w buforze tego¿ pliku. +Tworzenie czy edytowanie innego bufora nie ma ¿adnego wp³ywu na ten +pierwszy. Jest to bardzo przydatne, ale oznacza tak¿e, ¿e potrzebny +jest Ci wygodny sposób zachowywania zawarto¶ci Twoich buforów. +Prze³±czanie siê z powrotem do pierwszego bufora zawsze przy +wykonywaniu C-x C-f tylko po to, by nacisn±æ tam C-x C-s by³oby +niewygodne. Dlatego istnieje polecenie: + + C-x s Zachowaj bufory (ang. save some buffers) + +C-x s pyta Ciê, czy chcesz zachowaæ ka¿dy z buforów, w którym +dokona³e¶ pewnych nie zachowanych jeszcze zmian. + +>> Wstaw jak±¶ liniê tekstu, a potem naci¶nij C-x s. + Powiniene¶ zostaæ zapytany o to, czy chcesz zachowaæ bufor + TUTORIAL. Odpowiedz na to pytanie twierdz±co naciskaj±c "y". + +* U¯YWANIE MENU +--------------- + +Je¶li siedzisz przy X-terminalu zauwa¿ysz u góry okna Emacsa pasek +menu. Mo¿esz u¿ywaæ menu by dotrzeæ do najpopularniejszych poleceñ +Emacsa, takich jak "find file". Na pocz±tku bêdziesz s±dzi³, ze jest +to ³atwiejsze ni¿ klawiatura, poniewa¿ nie musisz uczyæ siê na pamiêæ +kombinacji klawiszy uruchamiaj±cych jakie¶ polecenie. Gdy ju¿ +zaznajomisz siê z Emacsem, bêdziesz móg³ zacz±æ uczyæ siê klawiszy --- +elementy menu pokazuj± kombinacje klawiszy, która wywo³uje dane +polecenie. + +Zwróæ uwagê, ze pewne polecenia w menu nie maja jednoznacznych +odpowiedników klawiszowych. Na przyk³ad menu "Buffers" zawiera listê +wszystkich dostêpnych buforów. Mo¿esz prze³±czyæ siê do dowolnego z +nich wybieraj±c jego nazwê z menu Buffers. + + +* U¯YWANIE MYSZY +---------------- + +Emacs potrafi w pe³ni wykorzystywaæ mysz, je¶li tylko jest uruchomiony +pod X-Windows. Mo¿esz zmieniaæ pozycje kursora poprzez naci¶niecie +lewego klawisza myszy w po¿±danym miejscu, mo¿esz tak¿e zaznaczaæ +tekst przez przesuniecie myszy z wci¶niêtym lewym klawiszem nad +tekstem, który chcesz zaznaczyæ. (Innym sposobem jest klikniêcie na +jednym z koñców obszaru, przesuniêcie myszy na drugi koniec i +klikniêcie tam z jednoczesnym wci¶niêciem klawisza Shift.) + +By wyci±æ zaznaczony tekst mo¿esz nacisn±æ C-w lub wybraæ Cut z menu +Edit. Zwróæ uwagê na to, ze *nie* s± to równowa¿ne polecenia: C-w +zapamiêtuje zaznaczony tekst tylko wewn±trz Emacsa (podobnie jak +omówione powy¿ej C-k), natomiast Cut robi to oraz umieszcza ten tekst +w schowku systemu X, sk±d mo¿e on zostaæ pobrany przez inne programy. + +By wkleiæ tekst ze schowka systemu X-Windows u¿yj polecenia Paste z +menu Edit. + +¦rodkowy klawisz myszy jest czêsto u¿ywany do wybierania elementów, +które s± wy¶wietlone na ekranie. Na przyk³ad, je¶li uruchomisz Info +(system dokumentacji Emacsa) naciskaj±c C-h i, lub wybieraj±c ten +element z menu Help, przej¶cie pod¶wietlonym po³±czeniem (ang. link) +odbywa siê poprzez naci¶niecie ¶rodkowego klawisza myszy. Podobnie, +je¶li wpisujesz nazwê pliku (np. podczas wykonywania "Find File") i +naci¶niesz TAB, by zobaczyæ wszystkie mo¿liwe dokoñczenia nazwy, +mo¿esz wybraæ jedno z nich z wy¶wietlonej listy, w³a¶nie naciskaj±c +¶rodkowy klawisz myszy. + +Prawy klawisz myszy pokazuje lokalne menu. Zawarto¶æ tego menu zale¿y +od trybu pracy Emacsa, w którym aktualnie jeste¶, i zawiera kilka +czêsto u¿ywanych poleceñ, tak by by³y one ³atwiejsze w dostêpie. + +>> Naci¶nij prawy klawisz myszy + +Prawy klawisz myszy musi byæ trzymany, by menu nie znik³o +automatycznie. + + +* ROZSZERZANIE ZESTAWU POLECEN +------------------------------ + +Poleceñ Emacsa jest du¿o du¿o wiêcej, ni¿ mo¿na by skojarzyæ +kombinacjami zwyk³ych klawiszy oraz META czy CTRL. Emacs radzi sobie +z tym za pomoc± polecenia X (ang. eXtend). Istniej± jego dwa rodzaje: + + C-x Rozszerzenie o znak. Nastêpuje po nim jeden znak. + M-x Rozszerzenie o nazwane polecenie. Nastêpuje po nim + pe³na d³uga nazwa polecenia. + +Polecenia te w ogólno¶ci s± u¿yteczne, ale s± u¿ywane nie tak czêsto +jak polecenia, których ju¿ siê nauczy³e¶. Mia³e¶ ju¿ okazje poznaæ +dwa z nich: C-x C-f s³u¿±ce do odwiedzania plików oraz C-x C-s do ich +zachowywania. Innym przyk³adem mo¿e byæ polecenie, które koñczy sesje +Emacsa C-x C-c. (Nie martw siê, ze mo¿esz w ten sposób straciæ +zmiany, które dokona³e¶; C-x C-c oferuje Ci mo¿liwo¶æ zachowania +ka¿dego ze zmodyfikowanych plików przed zamkniêciem Emacsa.) + +C-z jest poleceniem, które wychodzi z Emacsa *na chwile*, tak by¶ móg³ +wróciæ do tej samej sesji Emacsa po jakim¶ czasie. + +W systemach, w których jest to mo¿liwe, C-z zawiesza proces Emacsa; +powoduje to powrót do pow³oki (ang. shell), ale nie niszczy Emacsa. +W najpopularniejszych pow³okach mo¿esz wróciæ do Emacsa za pomoc± +polecenia `fg' lub `%emacs'. + +W systemach, w których zawieszanie procesów nie dzia³a, C-z tworzy +proces podpow³oki (ang. "subshell"), który dzia³a pod Emacsem i daje +Ci szansê uruchamiania innych programów i powrotu do Emacsa po ich +skoñczeniu; w tych systemach C-z nie wychodzi naprawdê z Emacsa. W +tych wypadkach normalnym poleceniem powrotu do Emacsa jest wyj¶cie z +podpow³oki za pomoc± "exit". + +Polecenia C-x C-c powiniene¶ u¿ywaæ, gdy masz siê wylogowaæ. Zalecane +jest tak¿e wychodzenie z Emacsa wystartowanego przez np. programy +obs³uguj±ce pocztê elektroniczna lub innego rodzaju narzêdzia, +poniewa¿ mog± one nie wiedzieæ jak sobie poradziæ z zawieszeniem +Emacsa. Jednak¿e w zwyk³ych okoliczno¶ciach, je¶li nie musisz +wylogowywaæ siê z systemu, lepiej jest zawiesiæ Emacsa za pomoc± C-z +ni¿ z niego wyj¶æ. + +Istnieje wiele poleceñ zaczynaj±cych siê od C-x. Oto lista tych, +których siê ju¿ nauczy³e¶: + + C-x C-f odwied¼ plik + C-x C-s zachowaj plik + C-x C-b wy¶wietl listê buforów + C-x C-c wyjd¼ z Emacsa + C-x u cofnij + +Poleceñ podawanych za pomoc± nazwy u¿ywa siê jeszcze rzadziej lub +u¿ywa siê tylko w pewnych trybach. Przyk³adem mo¿e byæ polecenie +replace-string, które globalnie zastêpuje jeden ³añcuch innym. Gdy +naciskasz M-x, Emacs czeka na ci±g dalszy, wy¶wietlaj±c "M-x" na dole +ekranu. Powiniene¶ po tym wpisaæ nazwê polecenia, w tym wypadku +"replace-string". Napisz tylko "repl s", a Emacs dokoñczy nazwê. +Zakoñcz wprowadzanie nazwy przez naci¶niecie klawisza . + +Polecenie replace-string wymaga dwóch argumentów: ³añcucha, który ma +zostaæ zastêpowany i ³añcucha, który ma byæ wstawiony w miejsce tego¿. +Obydwa ³añcuchy musza byæ zakoñczone przyci¶niêciem . + +>> Przesuñ kursor do czystej linii, dwie linie poni¿ej tej. + Naci¶nij M-x repl szmienizmodyfikuje. + +Zwróæ uwagê na to, jak ta linia siê zmieni: zast±pi³e¶ s³owem +"zmodyfikuje" ka¿de wyst±pienie s³owa z-m-i-e-n-i poni¿ej pocz±tkowej +pozycji kursora. + + +* AUTOMATYCZNE ZACHOWYWANIE +--------------------------- + +Gdy wprowadzisz zmiany do pliku i ich nie zachowasz, mog± one zostaæ +stracone, je¶li Twój komputer przestanie dzia³aæ. By uchroniæ Ciê +przed tym, Emacs okresowo zapisuje specjalny plik z wprowadzonymi +zmianami. Plik ten ma znak # na pocz±tku i na koñcu swojej nazwy. Na +przyk³ad, za³ó¿my, ze Twój plik nazywa siê "hello.c". Odpowiadaj±cy +mu plik automatycznie zachowywany bêdzie nosi³ nazwê "#hello.c#". Gdy +zachowujesz plik w zwyk³y sposób, Emacs kasuje plik automatycznie +zachowany. + +Je¶li Twój komputer przestanie dzia³aæ, mo¿esz odzyskaæ Twoje dane z +pliku automatycznie zachowanego przez zwykle odwiedzenie pliku (tego, +który edytowa³e¶, a nie pliku automatycznie zachowanego) i napisanie +M-x recover file. Gdy Emacs zapyta o potwierdzenie, napisz +yes by odzyskaæ dane, które zosta³y automatycznie zachowane. + + +* OBSZAR ECHA +------------- + +Je¶li polecenia dla Emacsa wpisujesz dostatecznie wolno, zostan± one +pokazywane w specjalnym obszarze na dole ekranu, zwanym obszarem echa +(ang. echo area). Obszar echa zawiera ostatnia dolna linie ekranu. + + +* LINIA STANU +------------- + +Linia, która znajduje siê bezpo¶rednio nad obszarem echa, zwana jest +"lini± trybu" (ang. modeline). Pokazuje ona tekst podobny do +nastêpuj±cego: + +--**-XEmacs: TUTORIAL (Fundamental)--L670--58%---------------- + +Linia ta podaje u¿yteczne informacje o stanie Emacsa i tekstu, który +edytujesz. Wiesz ju¿, jakie jest znaczenie nazwy pliku: jest to plik, +który odwiedzi³e¶. --NN%-- opisuje Twoja bie¿±c± pozycje wewn±trz +tekstu; oznacza to, ¿e NN procent tekstu znajduje siê ponad górnym +brzegiem ekranu. Je¶li pocz±tek pliku znajduje siê na pocz±tku +ekranu, zamiast liczby --00%-- zobaczysz w tym miejscu --Top--. +Podobnie dla koñca tekstu pojawi siê tam napis --Bot-- (od +ang. bottom). Je¶li wy¶wietlasz tekst na tyle krótki, ze mie¶ci siê w +ca³o¶ci na ekranie, linia stanu poka¿e --All--. + +Gwiazdki blisko pocz±tku linii trybu oznaczaj±, ze wprowadzi³e¶ do +tekstu jakie¶ zmiany. Bezpo¶rednio po odwiedzeniu lub po zachowaniu +pliku nie bêdzie w tym miejscu ¿adnych gwiazdek, a tylko my¶lniki. + +Wewn±trz nawiasów znajdziesz informacje na temat trybu edycji, w +którym w³a¶nie jest Emacs. Domy¶lnym trybem edycji jest tryb +podstawowy (ang. fundamental), który jest trybem (w³a¶nie w tej chwili +u¿ywanym--) u¿ywanym w³a¶nie w tej chwili. Jest to przyk³ad "trybu +g³ównego" (ang. major mode). + +Emacs mo¿e dzia³aæ w wielu trybach g³ównych. Pewne z nich zosta³y +zaprojektowane do edycji rozmaitych jêzyków i/lub rodzajów tekstu, +takie jak tryb Lispu, tryb tekstowy, itd. W danej chwili mo¿e byæ +aktywny tylko jeden g³ówny tryb pracy, i to jego nazwa jest +wy¶wietlana w linii trybu w miejscu, w którym teraz jest +"Fundamental". + +Ka¿dy z g³ównych trybów edycyjnych mo¿e zmieniæ zachowanie niektórych +poleceñ. Na przyk³ad, w Emacsie istniej± polecenia s³u¿±ce do +tworzenia komentarzy w programach. Ka¿dy jêzyk programowania na swój +sposób okre¶la, jak powinien wygl±daæ komentarz, tak wiec ka¿dy z +g³ównych trybów edycyjnych musi wstawiaæ komentarze w specyficzny +sposób. Ka¿dy tryb edycyjny jest nazw± polecenia, które mo¿esz +wykonaæ, by prze³±czyæ siê w ten tryb lub wy³±czyæ ten tryb. +Przyk³adem mo¿e byæ M-x fundamental-mode, które jest poleceniem +prze³±czaj±cym tryb podstawowy. + +Je¶li zamierzasz edytowaæ tekst w jêzyku angielskim, taki jak na +przyk³ad oryginalna wersja tego podrêcznika, prawdopodobnie powiniene¶ +u¿ywaæ trybu tekstowego (ang. text mode). + +>> Napisz M-x text-mode. + +Nie musisz siê martwiæ, ¿adne z poleceñ, które do tej pory pozna³e¶, +nie zmienia Emacsa w powa¿ny sposób. Mo¿esz jednak zauwa¿yæ, ze teraz +M-f i M-b traktuj± apostrofy jako czê¶ci s³ów. Poprzednio, w trybie +podstawowym, polecenia te traktowa³y apostrofy jako separatory s³ów. + +G³ówne tryby edycji wprowadzaj± zwykle subtelne zmiany, takie jak +opisana powy¿ej: wiêkszo¶æ poleceñ robi dalej "to samo", robi to +jednak w sposób troszeczkê inny. + +By zobaczyæ dokumentacjê na temat bie¿±cego g³ównego trybu edycji, +naci¶nij C-h m. + +>> Naci¶nij C-u C-v raz lub wiêcej razy tak, by ta linia znalaz³a siê + blisko góry ekranu. + +>> Naci¶nij C-h m, by zobaczyæ jak tryb tekstowy ró¿ni siê od trybu + podstawowego. + +>> Naci¶nij q, by usun±æ dokumentacje z ekranu. + +G³ówne tryby edycji nazywaj± siê "g³ównymi", poniewa¿ s± tak¿e +podrzêdne tryby edycji (ang. minor modes). Podrzêdne tryby edycji nie +s± alternatyw± dla g³ównych trybów edycji, a jedynie ich niewielk± +modyfikacj±. Ka¿dy podrzêdny tryb edycji mo¿e zostaæ w³±czony lub +wy³±czony niezale¿nie od pozosta³ych podrzêdnych trybów edycji oraz +niezale¿nie od g³ównego trybu edycji. Mo¿esz wiec u¿ywaæ jednego, +kombinacji dowolnych, lub nie u¿ywaæ ¿adnego trybu podrzêdnego. + +Jednym z podrzêdnych trybów edycji, który jest bardzo u¿yteczny +szczególnie do edycji tekstu angielskiego, jest tryb automatycznego +wype³niania (ang. auto fill mode). Je¶li ten tryb jest w³±czony, +Emacs lamie linie pomiêdzy s³owami automatycznie, gdy wstawiasz tekst +i linia robi siê za szeroka. + +Tryb automatycznego wstawiania w³±cza siê na przyk³ad poprzez +wywo³anie polecenia M-x auto-fill-mode. Je¶li ten tryb jest +w³±czony to samo polecenie wy³±cza go, i vice versa. Mówimy, ze +polecenie to "prze³±cza ten tryb". + +>> Napisz M-x auto-fill-mode. Wstawiaj potem liniê pe³n± + "asdf " tak d³ugo, a¿ zobaczysz, ¿e siê podzieli na dwie linie. + Musisz wstawiæ spacje pomiêdzy znaki, poniewa¿ tryb automatycznego + wype³niania ³amie linie tylko tam, gdzie s± spacje. + +Margines jest zazwyczaj ustawiony na 70 znaków, ale mo¿esz go zmieniæ +za pomoc± polecenia C-x f. Powiniene¶ podaæ mu argument liczbowy +mówi±cy, w której kolumnie ma zostaæ ustawiony margines. + +>> Wywo³aj C-x f z argumentem równym 20. (C-u 2 0 C-x f). + Napisz potem jaki¶ tekst i zauwa¿, ze Emacs wype³nia linie do + d³ugo¶ci co najwy¿ej 20 znaków. Ustaw margines z powrotem na + 70 znaków, wywo³uj±c jeszcze raz C-x f. + +Je¶li dokonujesz zmian wewn±trz akapitu, tryb +automatycznego wype³niania nie wyrówna marginesu +sam z siebie. By wywo³aæ polecenie +wyrównania marginesu, naci¶nij M-q (Meta-q), +podczas gdy kursor znajduje siê wewn±trz akapitu. + +>> Przesuñ kursor do poprzedniego akapitu i naci¶nij M-q. + + +* SZUKANIE +---------- + +Emacs potrafi szukaæ ³añcuchów (zwartych ci±gów znaków lub s³ów) +zarówno wstecz jaki i do przodu. Szukanie ³añcucha jest poleceniem, +które przesuwa kursor; przesuwa ono kursor do nastêpnego miejsca, w +którym dany ³añcuch wystêpuje. + +Polecenie Emacsa "search" ró¿ni siê od podobnych poleceñ innych +edytorów w tym sensie, ze jest ono przyrostowe. Znaczy to, ze +szukanie odbywa siê w trakcie, gdy Ty wpisujesz kolejne znaki +³añcucha, który ma zostaæ odnaleziony. + +Poleceniami zapocz±tkowuj±cymi szukanie s±: C-s dla szukania w przód +oraz C-r dla szukania wstecz. POCZEKAJ PROSZÊ! Nie próbuj ich w tej +chwili. + +Gdy naci¶niesz C-s zauwa¿ysz, ze tekst "I-search" pojawi siê w +obszarze echa. Informuje Ciê to, ¿e Emacs znajduje siê w trybie +"incremental search", czekaj±c by¶ napisa³ tekst, który ma on znale¼æ. +Naci¶niecie koñczy proces szukania. + +>> Teraz naci¶nij C-s, by rozpocz±æ szukanie. POWOLI, litera po + literze, napisz s³owo "kursor", zatrzymuj±c siê po ka¿dym znaku i + obserwuj±c, gdzie zatrzymuje siê kursor. Gdy naci¶niesz drugie + "r", bêdzie mo¿na powiedzieæ, ¿e szuka³e¶ s³owa "kursor" + jednokrotnie. Naci¶nij C-s jeszcze raz, by znale¼æ nastêpne + wyst±pienie s³owa "kursor". Naci¶nij teraz cztery + razy i zobacz, co siê dzieje z kursorem. Naci¶nij , by skoñczyæ + szukanie. + +Widzia³e¶, co siê dzia³o? Emacs podczas szukania przyrostowego próbuje +przej¶æ do miejsca wyst±pienia ³añcucha, który do tej pory wpisa³e¶, +pod¶wietlaj±c go dla Twojej wygody. By znale¼æ nastêpne wyst±pienie +s³owa "kursor", po prostu naci¶nij C-s jeszcze raz. Je¶li takiego nie +ma, Emacs zapiszczy i powie Ci, ze szukanie "skoñczy³o siê pora¿k±". +Naci¶niecie C-g tak¿e przerywa proces szukania. + +UWAGA: W niektórych systemach naci¶niecie C-s zamrozi ekran i nie +zobaczysz ¿adnego tekstu z Emacsa. Oznacza to, ¿e sk³adowa systemu +operacyjnego, zwana kontrol± przep³ywu (ang. "flow control") +przechwyci³a C-s i nie pozwoli³a mu dojsæ do Emacsa. By odzyskaæ +kontrole nad ekranem, nacisnij C-q. Dodatkowej pomocy poszukaj w +rozdziale "Spontaneous Entry to Incremental Search" w podrêczniku +Emacsa. + +Jesli podczas szukania przyrostowego naci¶niesz zauwa¿ysz, ze +ostatni znak, który wcisn±³es znika i kursor wraca do poprzedniego +miejsca. Na przyk³ad, za³ó¿my, ze nacisn±³es "k" i znalaz³es pierwsze +wyst±pienie tej litery. Jesli teraz naci¶niesz "u", kursor przesunie +siê do pierwszego wyst±pienia "ku". Teraz nacisnij . Skasuje +to "u" z ³añcucha, którego poszukujesz, a kursor wróci do pierwszego +wyst±pienia "k". + +Je¶li podczas szukania nacisniesz jaki¶ klawisz razem z META lub CTRL +(z nielicznymi wyj±tkami --- znakami, które maj± specjalne znaczenie +podczas szukania, takimi jak C-s i C-r) szukanie zostanie przerwane. + +C-s rozpoczyna proces szukania, który poszukuje ³añcucha, który +znajduje siê ZA bie¿±c± pozycja kursora. Je¶li chcesz szukaæ czego¶ +wcze¶niej w tek¶cie, naci¶nij C-r. Wszystko, co powiedzieli¶my o C-s +stosuje siê do C-r, oczywi¶cie ze zmian± kierunku szukania na wstecz. + + +* WIELE OKIEN +------------- + +Jedn± z przyjemnych cech Emacsa jest mo¿liwo¶æ wy¶wietlania wiêcej ni¿ +jednego okna na raz. + +>> Przesuñ kursor do tej linii i naci¶nij C-u 0 C-l. + +>> Naci¶nij teraz C-x 2, co podzieli ekran na dwa okna. Obydwa okna + wy¶wietlaj± ten podrêcznik. Kursor pozostaje w górnym oknie. + +>> Naci¶nij C-M-v by przewin±æ dolne okno. (Je¶li nie masz + prawdziwego klawisza Meta, naci¶nij ESC C-v.) + +>> Naci¶nij C-x o ("o" jak angielskie "other") by przesun±æ kursor do + dolnego okna. U¿yj C-v i M-v w dolnym oknie by przewin±æ jego + zawarto¶æ. Polecenia, które masz wykonaæ czytaj w górnym oknie. + +>> Naci¶nij C-x o jeszcze raz tak, by kursor wróci³ do górnego okna. + Kursor w górnym oknie nie zmieni³ po³o¿enia. + +Ka¿de okno pamiêta po³o¿enie swojego w³asnego kursora, lecz tylko +jedno okno w danej chwili wy¶wietla kursor. Wszystkie polecenia +edycyjne stosuj± siê do okna, w którym jest kursor. To okno nazywane +jest "wybranym oknem". + +Polecenie C-M-v jest bardzo u¿yteczne gdy edytujesz tekst w jednym +oknie, a drugiego u¿ywasz tylko jako punkt odniesienia. Dziêki temu +kursor mo¿e zawsze znajdowaæ siê w oknie, zawarto¶æ którego edytujesz, +a Ty mo¿esz przesuwaæ drugie okno za pomoc± C-M-v. + +C-M-v to przyk³ad znaku, który uzyskuje siê za pomoc± CONTROL-META. +Je¶li masz prawdziwy klawisz META, C-M-v mo¿esz uzyskaæ przytrzymuj±c +jednocze¶nie CTRL oraz META i naciskaj±c v. Nie jest wa¿ne, co +zosta³o naci¶niete wcze¶niej, CTRL czy META, poniewa¿ obydwa te +klawisze dzia³aj± jako modyfikatory znaczenia klawiszy, które +naciskasz. + +Je¶li nie masz klawisza META i u¿ywasz w jego zastêpstwie ESC, +kolejno¶æ naciskania klawiszy jest znacz±ca: musisz najpierw nacisn±æ +i pu¶ciæ ESC, po czym nacisn±æ CTRL-v; CTRL-ESC v nie bêdzie dzia³aæ. +Dzieje siê tak dlatego, ze ESC jest znakiem, a nie modyfikatorem. + +>> Naci¶nij C-x 1 (w górnym oknie), by pozbyæ siê dolnego okna. + +(Je¶li nacisn±³by¶ C-x 1 w dolnym oknie, to znik³oby górne. Mo¿esz +sobie t³umaczyæ to polecenie jako "zatrzymaj tylko jedno okno --- to w +którym w³a¶nie jestem".) + +Nie musisz wy¶wietlaæ tego samego bufora w obydwu oknach. Je¶li +u¿yjesz C-x C-f by wy¶wietliæ plik w jednym z okien, zawarto¶æ +drugiego nie zmieni siê. W ka¿dym oknie mo¿esz wy¶wietlaæ ró¿ne pliki +niezale¿nie. + +Oto inny sposób u¿ywania dwóch okien do wy¶wietlania dwóch ró¿nych +rzeczy: + +>> Naci¶nij C-x 4 C-f i nazwê jednego z Twoich plików. Zakoñcz + wprowadzanie klawiszem . Podany plik pojawi siê w dolnym + oknie razem z kursorem, który tam przeskakuje. + +>> Naci¶nij C-x o, by wróciæ do górnego okna, oraz C-x 1 by + usun±æ dolne okno. + + +* REKURSYWNE POZIOMY EDYCJI +--------------------------- + +Czasami mo¿esz znale¼æ siê w czym¶, co nazywa siê "rekursywnym +poziomem edycji". Mo¿esz to rozpoznaæ po nawiasach kwadratowych w +linii trybu, obejmuj±cych nawiasy okr±g³e zawieraj±ce nazwê g³ównego +trybu edycji. Na przyk³ad, móg³by¶ widzieæ [(Fundamental)] zamiast +(Fundamental). + +By wyj¶æ z rekursywnego poziomu edycji naci¶nij ESC ESC ESC. Jest to +ogólnego przeznaczenia "wychodzimy". Mo¿esz go u¿yæ tak¿e by pozbyæ +siê nadmiaru okien lub wyj¶æ z minibufora. + +>> Naci¶nij M-x by wej¶æ do minibufora; naci¶nij potem ESC ESC ESC, by + z niego wyj¶æ. + +Nie mo¿esz u¿yæ C-g, by wyj¶æ z rekursywnego poziomu edycji. Dzieje +siê tak dlatego, ze C-g jest u¿ywane do anulowania poleceñ i +argumentów WEWN¡TRZ rekursywnego poziomu edycji. + + +SZUKANIE DODATKOWEJ POMOCY +-------------------------- + +W tym podrêczniku spróbowali¶my dostarczyæ tylko tyle informacji, ile +jest niezbêdne, by¶ móg³ zacz±æ u¿ywaæ Emacsa. Emacs jest istn± +kopalni± najró¿niejszych rzeczy, których nie sposób tutaj opisaæ. +Zapewne bêdziesz chcia³ dowiedzieæ siê wiêcej o Emacsie, poniewa¿ +posiada on wiele po¿±danych cech, o których na razie nic nie wiesz. +Jest w nim zaszyte mnóstwo wewnêtrznej dokumentacji, która mo¿e byæ +osi±gniêta za pomoc± Control-h, które okre¶lamy mianem "znaku pomocy" +z powodu spe³nianej przez niego roli. + +By uzyskaæ pomoc, naci¶nij C-h a potem znak, który okre¶la jakiego +typu pomocy oczekujesz. Je¶li poczujesz siê NAPRAWDÊ zagubiony, +napisz C-h ? i Emacs spróbuje powiedzieæ Ci, jakiego typu pomocy mo¿e +Ci dostarczyæ. Je¶li naci¶niesz C-h a potem zadecydujesz, ¿e pomoc +nie jest Ci jednak potrzebna, po prostu wci¶nij C-g by anulowaæ C-h. + +Najprostsz± pomoc mo¿esz uzyskaæ naciskaj±c C-h c. Naci¶nij C-h a +potem c, po czym kombinacje klawiszy polecenia, i Emacs wy¶wietli +bardzo krótki opis polecenia. + +>> Naci¶nij C-h c Control-p. + Powinno to przywo³aæ komunikat, o tre¶ci podobnej do + + C-p runs the command previous-line + +W ten sposób mo¿esz uzyskaæ "nazwê funkcji". Przydaje siê to podczas +pisania kodu w Lispie, który rozszerza Emacsa; wystarcza to tak¿e do +przypomnienia Ci, co dane polecenie robi, je¶li widzia³e¶ je ju¿ +wcze¶niej, ale nie zapamiêta³e¶ go. + +Polecenia wywo³ywane za pomoc± wieloznakowej kombinacji klawiszy, na +przyk³ad C-x C-s oraz (je¶li nie masz klawisza META lub EDIT) v, +s± tak¿e dopuszczalne po C-h c. + +By uzyskaæ wiêcej informacji na temat polecenia, naci¶nij C-h k +zamiast C-h c. + +>> Naci¶nij C-h k Control-p. + +To polecenie wy¶wietla dokumentacjê na temat danej funkcji oraz jej +nazwê w oknie Emacsa. Gdy skoñczysz ¶ledziæ wynik tego polecenia +naci¶nij C-x 1, by pozbyæ siê tekstu pomocy. Nie musisz tego robiæ od +razu. Mo¿esz wykonaæ pewne operacje w oparciu o tekst pomocy zanim +naci¶niesz C-x 1. + +Oto kilka innych u¿ytecznych wariantów C-h: + + C-h f Opisz funkcje o podanej nazwie. + +>> Napisz C-h f previous-line. Wypisze to na ekranie ca³± + informacje, jak± Emacs ma na temat funkcji, która implementuje + polecenie C-p. + + C-h a Apropos. Wpisz s³owo kluczowe, a Emacs wypisze listê + wszystkich poleceñ, których nazwa zawiera to s³owo. + Polecenia te mog± zostaæ wywo³ane za pomoc± Meta-x. + Dla niektórych poleceñ Apropos wypisze jedno- lub + dwuznakowe sekwencje, które wywo³uj± dane polecenie. + +>> Napisz C-h a file. Zobaczysz listê wszystkich poleceñ, + dostêpnych za pomoc± M-x, które maja s³owo "file" w swojej nazwie. + Zauwa¿ysz tam tak¿e polecenia takie, jak C-x C-f oraz C-x C-w, + umieszczone obok nazw poleceñ "find-file" i "write-file". + + +PODSUMOWANIE +------------ + +Pamiêtaj, ¿e by wyj¶æ z Emacsa na sta³e, u¿ywaj C-x C-c. By wyj¶æ do +pow³oki na chwilê tak, by¶ móg³ wróciæ, u¿yj C-z. (To nie dzia³a pod +X-Windows, poniewa¿ tam nie ma prawdziwego konceptu przej¶cia na +chwile do pow³oki. Zamiast tego C-z ikonizuje okno Emacsa.) + +Ten podrêcznik by³ pisany tak, by wszyscy nowi u¿ytkownicy mogli go +zrozumieæ. Je¶li co¶ pozostawi³ niejasnym, nie sied¼ cicho i nie +obwiniaj siebie, tylko daj nam znaæ! + + +KOPIOWANIE +---------- + +Niniejszy podrêcznik jest potomkiem w d³ugiej linii podrêczników +Emacsa, która rozpoczyna siê od tego, który zosta³ napisany przez +Stuarta Cracrafta dla oryginalnego Emacsa. Zosta³ on zmodyfikowany we +wrze¶niu 1994 przez Bena Winga, który zaktualizowa³ go, je¶li chodzi o +X-Windows. + +T³umaczenia na jêzyk polski dokona³ Remek Trzaska z pomoc± Ryszarda +Kubiaka. Jesli polskie znaki nie byly poprawnie wyswietlane w tym +buforze, oznacza to, ze nie masz zainstalowanych polskich fontow. +Pomoc w tym zakresie mozesz znalezc pod adresem: + + +Ta wersja podrêcznika, podobnie jak GNU Emacs, jest zastrze¿ona, a +pozwolenie na kopiowanie udzielone jest pod nastêpuj±cymi warunkami: + +Copyright (c) 1985, 1994 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. + +Warunki kopiowania samego Emacsa s± w pewnym stopniu inne, aczkolwiek +zachowuj± te sama idee. Proszê, przeczytaj plik COPYING, po czym +rozdaj swoim znajomym kopie Emacsa. Pomó¿ zwalczyæ przeszkody w +rozpowszechnianiu oprogramowania przez tworzenie i dzielenie siê +oprogramowaniem. diff --git a/etc/TUTORIAL.ro b/etc/TUTORIAL.ro new file mode 100644 index 0000000..16eaa16 --- /dev/null +++ b/etc/TUTORIAL.ro @@ -0,0 +1,1205 @@ +Copyright (c) 1998 Tudor Hulubei +Mulþumiri Aidei Hulubei 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- înseamnã cã þineþi apãsatã tasta CONTROL în timp ce tastaþi + caracterul . Astfel, C-f înseamnã: þineþi apãsatã tasta + CONTROL ºi tastaþi f. + + M- înseamnã cã þineþi apãsatã tasta META în timp ce tastaþi + . Dacã nu existã tasta META, tastaþi , ridicaþi ºi + apoi tastaþi caracterul . + +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: +<> +>> 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 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 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 +(tasta mai este etichetatã uneori) pentru a introduce un +caracter NEWLINE. + +Puteþi ºterge ultimul caracter pe care l-aþi introdus tastând +. este o tastã pe tastaturã etichetatã "Del" sau +"Delete". În unele cazuri tasta "Backspace" poate acþiona ca +, dar nu întotdeauna! + +Mai general, º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 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 -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 . + Aceasta concateneazã linia curentã cu cea precedentã. + +>> Tastaþi 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. + + ºterge caracterul de dinaintea cursorului + C-d ºterge caracterul de dupã cursor + + M- º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ã ºi C-d versus M- ºi M-d extind +paralela începutã de C-f ºi M-f ( 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 +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 . + 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 + 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" ºi Emacs-ul va completa numele. +Terminaþi comanda cu . + +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 . + +>> Mutaþi cursorul pe linia goalã care se gãseste douã linii mai jos. + Tastaþi apoi M-x repl smodificatalterat. + + 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. Când vi se cere confirmarea, tastaþi yes 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. + +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. +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 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 . + +>> 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 de patru ori ºi observaþi miºcarea + cursorului. +>> Tastaþi 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 +, 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 . 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 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 î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) 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. + 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. + +Aceasta afiºeazã lista tuturor funcþiilor ºi variabilelor al cãror +nume conþine "newline". Tastaþi 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! diff --git a/etc/TUTORIAL.ru b/etc/TUTORIAL.ru new file mode 100644 index 0000000..49b17ff --- /dev/null +++ b/etc/TUTORIAL.ru @@ -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- ÓÌÅÄÕÅÔ ÕÄÅÒÖÉ×ÁÔØ ËÌÁ×ÉÛÕ CONTROL ÐÏËÁ ÎÁÂÉÒÁÅÔÓÑ ÓÉÍ×ÏÌ + ôÁË, C-f ÄÏÌÖÎÏ ÏÚÎÁÞÁÔØ: ÎÁÖÁÔØ ËÌÁ×ÉÛÕ CONTROL É f. + M- ÓÌÅÄÕÅÔ ÕÄÅÒÖÉ×ÁÔØ ËÌÁ×ÉÛÕ META ÐÏËÁ ÎÁÂÉÒÁÅÔÓÑ ÓÉÍ×ÏÌ . + åÓÌÉ ÔÁËÏ×ÏÊ ÎÅÔ, ÎÁÖÍÉÔÅ , ÏÔÐÕÓÔÉÔÅ ÅÅ, ÐÏÔÏÍ ÓÉÍ×ÏÌ . + +÷ÁÖÎÏÅ ÚÁÍÅÞÁÎÉÅ: ÄÌÑ ÚÁ×ÅÒÛÅÎÉÑ ÓÅÁÎÓÁ Emacs, ÎÁÂÅÒÉÔÅ C-x C-c. (ä×Á +ÓÉÍ×ÏÌÁ). óÉÍ×ÏÌÙ ">>" Ó ÌÅ×ÏÊ ÓÔÏÒÏÎÙ ÕËÁÚÙ×ÁÀÔ, ÞÔÏ ×ÁÍ ÎÕÖÎÏ ÄÅÌÁÔØ, +ÞÔÏ ÐÒÉÍÅÎÉÔØ ËÏÍÁÎÄÕ. îÁÐÒÉÍÅÒ: + +>> ôÅÐÅÒØ ÎÁÖÍÉÔÅ C-v (ðÒÏÓÍÏÔÒ ÓÌÅÄÕÀÝÅÇÏ ÜËÒÁÎÁ) ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÑ ÎÁ + ÓÌÅÄÕÀÝÉÊ ÜËÒÁÎ. (ÉÄÉÔÅ ×ÐÅÒÅÄ, ÕÄÅÒÖÉ×ÁÑ ËÌÁ×ÉÛÕ Control ÎÁÖÉÍÁÑ v). + ôÅÐÅÒØ ×Ù ÄÏÌÖÎÙ ÜÔÏ ÓÄÅÌÁÔØ ÅÝÅ ÒÁÚ, ËÏÇÄÁ ÚÁËÏÎÞÉÔÅ ÞÉÔÁÔØ ÜËÒÁÎ. + +ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ ÎÁ ÔÏ, ÞÔÏ, ÐÏËÁ ×Ù Ä×ÉÖÅÔÅÓØ Ó ÜËÒÁÎÁ ÎÁ ÜËÒÁÎ, +ÐÅÒÅËÒÙ×ÁÀÔÓÑ Ä×Å ÓÔÒÏÞËÉ; ÜÔÏ ÏÂÅÓÐÅÞÉ×ÁÅÔ ÎÅËÏÔÏÒÕÀ ÎÅÐÒÅÒÙ×ÎÏÓÔØ, ÔÁËÉÍ +ÏÂÒÁÚÏÍ ×Ù ÍÏÖÅÔÅ ÐÒÏÄÏÌÖÁÔØ ÞÉÔÁÔØ ÔÅËÓÔ. + +ðÅÒ×ÏÅ ÞÔÏ ×ÁÍ ÎÅÏÂÈÏÄÉÍÏ ÚÎÁÔØ - ËÁË ÐÅÒÅÄ×ÉÇÁÔØÓÑ ÐÏ ÔÅËÓÔÕ ÉÚ ÏÄÎÏÇÏ ÍÅÓÔÁ +× ÄÒÕÇÏÅ. ÷Ù ÕÖÅ ÚÎÁÅÔÅ, ËÁË ÐÅÒÅÄ×ÉÎÕÔØ ×ÐÅÒÅÄ ÏÄÉÎ ÜËÒÁÎ, ÉÓÐÏÌØÚÕÑ C-v. +äÌÑ ÐÅÒÅÍÅÝÅÎÉÑ ÎÁÚÁÄ ÏÄÎÏÇÏ ÜËÒÁÎÁ, ÎÁÖÍÉÔÅ M-v (ÕÄÅÒÖÉ×ÁÊÔÅ ËÌÁ×ÉÛÕ META +É ÎÁÂÅÒÉÔÅ v, ÉÌÉ ÎÁÖÍÉÔÅ 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. + +åÓÌÉ ×Ù ÎÁÖÁÌÉ ÐÏ ÏÛÉÂËÅ, ×Ù ÔÁË ÖÅ ÍÏÖÅÔÅ ÉÚÂÁ×ÉÔØÓÑ ÏÔ ÜÔÏÇÏ ÎÁÖÁÔÉÅÍ +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`ÏÍ ËÁË ÔÅËÓÔ É +×ÓÔÁ×ÌÑÀÔÓÑ ÎÅÍÅÄÌÅÎÎÏ. îÁÖÍÉÔÅ (ËÎÏÐËÁ ÐÅÒÅ×ÏÄÁ ËÁÒÅÔËÉ) ÄÌÑ +×ÓÔÁ×ËÉ ÓÉÍ×ÏÌÁ îÏ×ÁÑóÔÒÏËÁ. + +÷Ù ÍÏÖÅÔÅ ÕÄÁÌÉÔØ ÐÏÓÌÅÄÎÉÊ ÎÁÂÒÁÎÎÙÊ ÓÉÍ×ÏÌ ÎÁÖÉÍÁÑ . +ëÌÁ×ÉÛÁ ÎÁ ËÌÁ×ÉÁÔÕÒÅ ÍÏÖÅÔ ÂÙÔØ ÏÂÏÚÎÁÞÅÎÁ ËÁË "Del". +÷ ÎÅËÏÔÏÒÙÈ ÓÌÕÞÁÑÈ, ËÌÁ×ÉÛÅ "Backspace" ÒÁÂÏÔÁÅÔ ËÁË , +ÎÏ ÎÅ ×ÓÅÇÄÁ! + +÷ ÏÓÎÏ×ÎÏÍ, ÕÄÁÌÑÅÔ ÓÉÍ×ÏÌ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÐÅÒÅÄ ÔÅËÕÝÅÊ ÐÏÚÉÃÉÅÊ +ËÕÒÓÏÒÁ. + +>> ðÏÐÒÏÂÕÊÔÅ ÜÔÏ ÓÅÊÞÁÓ -- ÎÁÂÅÒÉÔÅ ÎÅÓËÏÌØËÏ ÓÉÍ×ÏÌÏ×, ÐÏÔÏÍ ÕÄÁÌÉÔÅ ÉÈ + ÎÁÖÉÍÁÑ ÎÅÓËÏÌØËÏ ÒÁÚ. îÅ ×ÏÌÎÕÊÔÅÓØ Ï ÉÚÍÅÎÅÎÉÑÈ ÜÔÏÇÏ ÆÁÊÌÁ; + ×Ù ÎÅ ÉÚÍÅÎÑÅÔÅ ÇÌÁ×ÎÙÊ ÕÞÅÂÎÉË. üÔÏ ×ÁÛÁ ÌÉÞÎÁÑ ËÏÐÉÑ ÕÞÅÂÎÉËÁ. + +ëÏÇÄÁ ÓÔÒÏËÁ ÔÅËÓÔÁ ÓÔÁÎÏ×ÉÔÓÑ ÓÌÉÛËÏÍ ÂÏÌØÛÏÊ ÄÌÑ ÓÔÒÏËÉ ÜËÒÁÎÁ, ÓÔÒÏËÁ +ÔÅËÓÔÁ "ÐÒÏÄÏÌÖÁÅÔÓÑ" ÎÁ ÓÌÅÄÕÀÝÅÊ ÓÔÒÏËÅ ÜËÒÁÎÁ. óÉÍ×ÏÌ "ÏÂÒÁÔÎÏÅ ÄÅÌÅÎÉÅ" +("\") Ó ÐÒÁ×ÏÊ ÇÒÁÎÉÃÙ ÐÏËÁÚÙ×ÁÅÔ, ÞÔÏ ÓÔÒÏËÁ ÂÕÄÅÔ ÐÒÏÄÏÌÖÅÎÁ. + +>> ÷ÓÔÁ×ÌÑÊÔÅ ÔÅËÓÔ, ÐÏËÁ ÎÅ ÄÏÓÔÉÇÎÉÔÅ ÐÒÁ×ÏÊ ÇÒÁÎÉÃÙ, É ÐÒÏÄÏÌÖÁÊÔÅ ×ÓÔÁ×ËÕ. + ÷Ù Õ×ÉÄÉÔÅ, ËÁË ÐÏÑ×ÉÔÓÑ ÓÉÍ×ÏÌ ÐÒÏÄÏÌÖÅÎÉÑ ÓÔÒÏËÉ. + +>> éÓÐÏÌØÚÕÊÔÅ ÄÌÑ ÕÄÁÌÅÎÉÑ ÔÅËÓÔÁ, ÐÏËÁ ÓÔÒÏËÁ ÎÅ ÐÏÍÅÓÔÉÔÓÑ × + ÜËÒÁÎ ÓÎÏ×Á. óÉÍ×ÏÌ ÐÒÏÄÏÌÖÅÎÉÑ ÓÔÒÏËÉ ÉÓÞÅÚÎÅÔ. + +íÏÖÎÏ ÕÄÁÌÑÔØ ÓÉÍ×ÏÌ îÏ×ÁÑóÔÒÏËÁ ÔÁË ÖÅ, ËÁË É ÌÀÂÏÊ ÄÒÕÇÏÊ. õÄÁÌÅÎÉÅ ÓÉÍ×ÏÌÁ +îÏ×ÁÑóÔÒÏËÁ ÍÅÖÄÕ Ä×ÕÍÑ ÓÔÒÏËÁÍÉ ÐÒÉ×ÅÄÅÔ Ë ÓËÌÅÊËÅ ÉÈ × ÏÄÎÕ. åÓÌÉ +ÒÅÚÕÌØÔÉÒÕÀÝÁÑ ÓÔÒÏËÁ ÓÌÉÛËÏÍ ÄÌÉÎÎÁÑ, ÞÔÏÂÙ ×ÍÅÓÔÉÔØÓÑ × ÜËÒÁÎ, ÏÎÁ ÂÕÄÅÔ +ÏÔÏÂÒÁÖÅÎÁ ËÁË ÐÒÏÄÏÌÖÅÎÎÁÑ ÓÔÒÏËÁ. + +>> ðÅÒÅÍÅÓÔÉÔÅ ËÕÒÓÏÒ × ÎÁÞÁÌÏ ÓÔÒÏËÉ É ÎÁÖÍÉÔÅ . üÔÏ ÓÏÅÄÉÎÉÔ + ÔÅËÕÝÕÀ ÓÔÒÏËÕ É ÐÒÅÄÙÄÕÝÕÀ. + +>> îÁÖÍÉÔÅ ÄÌÑ ×ÓÔÁ×ËÉ ÓÉÍ×ÏÌÁ îÏ×ÁÑóÔÒÏËÁ ÓÎÏ×Á, ×ÍÅÓÔÏ + ÕÄÁÌÅÎÎÏÇÏ ×ÁÍÉ. + +ðÏÍÎÉÔÅ, ÞÔÏ ÍÎÏÇÉÅ ËÏÍÁÎÄÙ Emacs ÍÏÇÕÔ ÐÏÌÕÞÁÔØ ÓÞÅÔÞÉË ÐÏ×ÔÏÒÅÎÉÑ; +ÐÒÏÓÔÙÅ ÓÉÍ×ÏÌÙ ÎÅ ÉÓËÌÀÞÅÎÉÅ. îÅÂÅÒÁÊÔÅ ÐÒÏÓÔÙÅ ÓÉÍ×ÏÌÙ ×ÓÔÁ×ÌÑÑ +ÉÈ ÐÏ ÎÅÓËÏÌØËÏ ÚÁ ÏÄÉÎ ÒÁÚ. + +>> ðÏÐÒÏÂÕÊÔÅ ÜÔÏ -- ÎÁÂÅÒÉÔÅ C-u 8 * ÄÌÑ ×ÓÔÁ×ËÉ ********. + +ôÅÐÅÒØ ×Ù ÎÁÕÞÉÌÉÓØ ÏÓÎÏ×ÎÏÍÕ ÓÐÏÓÏÂÕ ÎÁÂÒÉÔØ ÞÔÏ-ÎÉÂÕÄØ × Emacs É +ÉÓÐÒÁ×ÌÑÔØ ÏÛÉÂËÉ. ôÁË ÖÅ ×Ù ÍÏÖÅÔÅ ÕÄÁÌÑÔØ ÓÌÏ×Á É ÓÔÒÏËÉ. +úÄÅÓØ ÓÏÂÒÁÎÙ ÏÐÅÒÁÃÉÉ ÕÄÁÌÅÎÉÑ: + + ÕÄÁÌÉÔØ ÓÉÍ×ÏÌ ÐÅÒÅÄ ËÕÒÓÏÒÏÍ + C-d ÕÄÁÌÉÔØ ÓÉÍ×ÏÌ ÓÌÅÄÕÀÝÉÊ ÚÁ (ÎÁÄ) ËÕÒÓÏÒÏÍ + + M- õÂÉÔØ ÓÔÒÏËÕ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÐÅÒÅÄ ËÕÒÓÏÒÏÍ + M-d õÂÉÔØ ÓÌÏ×Ï ÓÌÅÄÕÀÝÅÅ ÚÁ ËÕÒÓÏÒÏÍ + + C-k õÂÉÔØ ×ÓÅ ÏÔ ËÕÒÓÏÒÁ ÄÏ ËÏÎÃÁ ÓÔÒÏËÉ + M-k õÂÉÔØ ×ÓÅ ÄÏ ËÏÎÃÁ ÐÒÅÄÌÏÖÅÎÉÑ + +úÁÍÅÔØÔÅ, ÞÔÏ É C-d ÐÒÏÔÉ× M- É M-d ÒÁÓÛÉÒÑÀÔ ÐÁÒÁÌÌÅÌØ +ÎÁÞÁÔÕÀ, C-f É M-f (ÄÁ, ÜÔÏ ÎÅ ÒÅÁÌØÎÙÊ 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 ËÏÔÏÒÁÑ ÉÓÐÏÌØÚÏ×ÁÌÁ ÍÉÎÉÂÕÆÅÒ. ÷ ÉÔÏÇÅ, ×Ù ÎÅ ÏÔËÒÙÌÉ ÎÉ ÏÄÎÏÇÏ + ÆÁÊÌÁ. + +ëÏÇÄÁ ×Ù ÚÁ×ÅÒÛÉÔÅ ××ÏÄ ÉÍÅÎÉ ÆÁÊÌÁ, ÎÁÖÍÉÔÅ . äÁÌÅÅ ÓÒÁÂÏÔÁÅÔ +ËÏÍÁÎÄÁ 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 . + ÷ÓÔÁ×ØÔÅ ËÁËÏÊ-ÎÉÂÕÄØ ÔÅËÓÔ, ÏÔÒÅÄÁËÔÉÒÕÊÔÅ ÅÇÏ, É ÓÏÈÒÁÎÉÔÅ "foo" + ÎÁÂÒÁ× C-x C-s. + îÁËÏÎÅÃ, ÎÁÂÅÒÉÔÅ C-x C-f TUTORIAL.ru + ÞÔÏÂÙ ×ÅÒÎÕÔØÓÑ ÎÁÚÁÄ Ë ÕÞÅÂÎÉËÕ. + +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" É Emacs ÄÏÐÏÌÎÉÔ +ÉÍÑ. úÁ×ÅÒÛÉÔÅ ÉÍÑ ××ÏÄÏÍ . + +ëÏÍÁÎÄÁ ÚÁÍÅÎÙ ÓÔÒÏËÉ (replace-string) ÔÒÅÂÕÅÔ Ä×Á ÁÒÇÕÍÅÎÔÁ -- ÓÔÒÏËÕ +ËÏÔÏÒÁÑ ÂÕÄÅÔ ÚÁÍÅÎÅÎÁ, É ÓÔÒÏËÁ ÎÁ ËÏÔÏÒÕÀ ÎÕÖÎÏ ÚÁÍÅÎÉÔØ. ÷Ù ÄÏÌÖÎÙ +ÚÁ×ÅÒÛÁÔØ ËÁÖÄÙÊ ÁÒÇÕÍÅÎÔ ××ÏÄÏÍ . + +>> ðÅÒÅÍÅÓÔÉÔÅ ËÕÒÓÏÒ ÎÁ Ä×Å ÐÕÓÔÙÅ ÓÔÒÏËÉ ÎÉÖÅ ÜÔÏÊ. + îÁÂÅÒÉÔÅ M-x repl schangedaltered. + + úÁÍÅÔØÔÅ ËÁË ÜÔÁ ÓÔÒÏËÁ ÉÚÍÅÎÉÔÓÑ: ×Ù ÚÁÍÅÎÉÔÅ ÓÌÏ×Ï c-h-a-n-g-e-d + ÓÌÏ×ÏÍ "altered" ×ÅÚÄÅ, ÇÄÅ ÏÎÏ ×ÓÔÒÅÔÉÔÓÑ, ÎÉÖÅ ÐÏÚÉÃÉÉ ËÕÒÓÏÒÁ. + + +* á÷ôïóïèòáîåîéå +---------------- + +ëÏÇÄÁ ×Ù ÍÏÄÉÆÉÃÉÒÕÅÔÅ ÆÁÊÌ, ÎÏ ÎÅ ÓÏÈÒÁÎÑÅÔÅ ÅÇÏ, ×Ù ÍÏÖÅÔÅ ÐÏÔÅÒÑÔØ +ÉÎÆÏÒÍÁÃÉÀ × ÓÌÕÞÁÅ ËÒÁÈÁ ÓÉÓÔÅÍÙ. ÞÔÏÂÙ ÚÁÝÉÔÉÔØ ×ÁÓ ÏÔ ÜÔÏÇÏ, Emacs +ÐÅÒÉÏÄÉÞÅÓËÉ ÚÁÐÉÓÙ×ÁÅÔ ËÁÖÄÙÊ ÆÁÊÌ, ËÏÔÏÒÙÊ ×Ù ÒÅÄÁËÔÉÒÕÅÔÅ. á×ÔÏÓÏÈÒÁÎÅÎÉÅ +ÐÒÏÉÓÈÏÄÉÔ × ÆÁÊÌ, ÉÍÑ ËÏÔÏÒÏÇÏ ÔÁËÏÅ ÖÅ, ÎÏ ÎÁÞÉÎÁÅÔÓÑ É ÚÁËÁÎÞÉ×ÁÅÔÓÑ +ÓÉÍ×ÏÌÏÍ "#"; ÎÁÐÒÉÍÅÒ, ÅÓÌÉ ×ÁÛ ÆÁÊÌ ÎÁÚÙ×ÁÅÔÓÑ "hello.c", ÔÏ +Á×ÔÏÓÏÈÒÁÎÅÎÎÙÊ ÆÁÊÌ ÂÕÄÅÔ ÎÁÚÙ×ÁÔØÓÑ "#hello.c#". ëÏÇÄÁ ×Ù ÓÏÈÒÁÎÉÔÅ ÆÁÊÌ +ÏÂÙÞÎÙÍ ÓÐÏÓÏÂÏÍ. Emacs ÕÄÁÌÉÔ Á×ÔÏÓÏÈÒÁÎÅÎÎÙÊ ÆÁÊÌ. + +åÓÌÉ ÓÉÓÔÅÍÁ ÐÏÄ×ÉÓÁÅÔ, ×Ù ÍÏÖÅÔÅ ×ÏÓÓÔÁÎÏ×ÉÔØ ×ÁÛÉ ÉÚÍÅÎÅÎÉÑ ËÏÔÏÒÙÊ ÂÙÌÉ +ÓÏÈÒÁÎÅÎÙ Á×ÔÏÍÁÔÉÞÅÓËÉ, ÐÕÔÅÍ ÏÔËÒÙÔÉÑ ÎÏÒÍÁÌØÎÏÇÏ ÆÁÊÌÁ (ÆÁÊÌÁ ËÏÔÏÒÙÊ ×Ù +ÒÅÄÁËÔÉÒÏ×ÁÌÉ, ÎÅ Á×ÔÏÓÏÈÒÁÎÅÎÎÏÇÏ) É ÚÁÔÅÍ ÎÁÂÒÁÔØ M-x recover file. +ëÏÇÄÁ Õ ×ÁÓ ÓÐÒÏÓÑÔ ÐÏÄÔ×ÅÒÖÄÅÎÉÅ, ÎÁÂÅÒÉÔÅ yes ÞÔÏÂÙ ×ÏÓÓÔÁÎÏ×ÉÔØ +Á×ÔÏÓÏÈÒÁÎÅÎÎÙÅ ÄÁÎÎÙÅ. + + +* ïâìáóôø üèï (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. + +îÅ ×ÏÌÎÕÊÔÅÓØ, ÎÉ ÏÄÎÁ ÉÚ ×ÙÕÞÅÎÎÙÈ ×ÁÍÉ ËÏÍÁÎÄ 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. +ëÏÇÄÁ ÜÔÏÔ ÒÅÖÉÍ ×ËÌÀÞÅÎ, ÅÇÏ ÍÏÖÎÏ ×ÙËÌÀÞÉÔØ - M-x auto-fill-mode. +åÓÌÉ ÒÅÖÉÍ ×ËÌÀÞÅÎ - ËÏÍÁÎÄÁ ÅÇÏ ×ÙËÌÀÞÉÔ, ÅÓÌÉ ×ÙËÌÀÞÅÎ - ×ËÌÀÞÉÔ. íÙ +ÎÁÚÙ×ÁÅÍ ÜÔÏ ËÏÍÁÎÄÁ "ÐÅÒÅËÌÀÞÅÎÉÑ ÒÅÖÉÍÁ". + +>> îÁÂÅÒÉÔÅ M-x auto-fill-mode. úÁÔÅÍ ×ÓÔÁ×ÌÑÊÔÅ ÓÔÒÏËÕ + ÉÚ "ÆÙ×Á " ÐÏËÁ ÎÅ Õ×ÉÄÉÔÅ ËÁË ÏÎÁ ÒÁÚÄÅÌÉÔÓÑ ÎÁ Ä×Å ÓÔÒÏËÉ. + ÷Ù ÄÏÌÖÎÙ ÐÏÍÅÝÁÔØ ÐÒÏÂÅÌÙ ÍÅÖÄÕ ÓÌÏ×ÁÍÉ, ÐÏÔÏÍÕ ÞÔÏ ÒÅÖÉÍ Á×ÔÏÚÁÐÏÌÎÅÎÉÑ + ÒÁÚÄÅÌÑÅÔ ÓÔÒÏËÉ ÔÏÌØËÏ ÐÏ ÐÒÏÂÅÌÁÍ. + +çÒÁÎÉÃÁ ÏÂÙÞÎÏ ×ÙÓÔÁ×ÌÅÎÁ ÎÁ 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 ÖÄÅÔ ××ÏÄÁ ÓÌÏ×Á, ËÏÔÏÒÏÅ ×Ù ÈÏÔÉÔÅ ÎÁÊÔÉ. + ÚÁ×ÅÒÛÁÅÔ ÐÏÉÓË. + +>> ôÅÐÅÒØ, ÎÁÖÍÉÔÅ C-s ÄÌÑ ÎÁÞÁÌÁ ÐÏÉÓËÁ. íÅÄÌÅÎÎÏ, ÏÄÎÕ ÂÕË×Õ ÚÁ ÏÄÉÎ ÒÁÚ, + ÎÁÂÉÒÁÊÔÅ ÓÌÏ×Ï, 'ËÕÒÓÏÒ', ÏÓÔÁÎÁ×ÌÉ×ÁÑÓØ ÐÏÓÌÅ ËÁÖÄÏÊ ××ÅÄÅÎÎÏÊ ÂÕË×Ù, + ÚÁÍÅÞÁÑ ÞÔÏ ÐÒÏÉÓÈÏÄÉÔ Ó ËÕÒÓÏÒÏÍ. + óÅÊÞÁÓ ×Ù ÎÁÛÌÉ ÐÅÒ×ÏÅ ×ÈÏÖÄÅÎÉÅ ÓÌÏ×Á "ËÕÒÓÏÒ". +>> îÁÖÍÉÔÅ C-s ÓÎÏ×Á, ÞÔÏÂÙ ÎÁÊÔÉ ÓÌÅÄÕÀÝÅÅ ×ÈÏÖÄÅÎÉÅ ÓÌÏ×Á "ËÕÒÓÏÒ". +>> ôÅÐÅÒØ ÎÁÖÍÉÔÅ ÞÅÔÙÒÅ ÒÁÚÁ É ÐÒÏÓÌÅÄÉÔÅ ÚÁ ÐÅÒÅÍÅÝÅÎÉÑÍÉ ËÕÒÓÏÒÁ. +>> îÁÖÍÉÔÅ ÄÌÑ ÚÁ×ÅÒÛÅÎÉÑ ÐÏÉÓËÁ. + +÷Ù ×ÉÄÅÌÉ ÞÔÏ ÐÒÏÉÓÈÏÄÉÌÏ? 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 ÞÔÏÂÙ ÕÚÎÁÔØ ËÁË +ÂÏÒÏÔØÓÑ Ó ÜÔÏÊ "ÏÓÏÂÅÎÎÏÓÔØÀ". + +åÓÌÉ ×Ù ×Ï ×ÒÅÍÑ ÉÎËÒÅÍÅÎÔÁÌØÎÏÇÏ ÐÏÉÓËÁ ÎÁÖÍÅÔÅ , ×Ù ÍÏÖÅÔÅ ÚÁÍÅÔÉÔØ +ÞÔÏ ÐÏÓÌÅÄÎÉÊ ÓÉÍ×ÏÌ × ÉÓËÏÍÏÊ ÓÔÒÏËÅ ÕÄÁÌÉÌÓÑ, É ÐÏÉÓË ×ÅÒÎÕÌÓÑ Ë ÐÒÅÄÙÄÕÝÅÍÕ +ÎÁÊÄÅÎÎÏÍÕ ÍÅÓÔÕ. îÁÐÒÉÍÅÒ, ÐÒÅÄÐÏÌÏÖÉÍ ×Ù ÎÁÂÒÁÌÉ "c", ÐÏÉÓË ÐÅÒÅÊÄÅÔ Ë +ÐÅÒ×ÏÍÕ ×ÈÏÖÄÅÎÉÀ ÓÉÍ×ÏÌÁ "c". ôÅÐÅÒØ ÅÓÌÉ ×Ù ÎÁÂÅÒÅÔÅ "u", ËÕÒÓÏÒ ÐÅÒÅÊÄÅÔ Ë +ÐÅÒ×ÏÍÕ ×ÈÏÖÄÅÎÉÀ "cu". îÁÖÁÔÉÅ ÕÄÁÌÉÔ ÓÉÍ×ÏÌ "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 ÚÁÔÅÍ ÉÍÑ ÏÄÎÏÇÏ É ×ÁÛÉÈ ÆÁÊÌÏ×. úÁ×ÅÒÛÉÔÅ . + ðÏÓÍÏÔÒÉÔÅ ÞÔÏ ×ÙÂÒÁÎÎÙÊ ÆÁÊÌ ÐÏÑ×ÉÌÓÑ × ÎÉÖÎÅÍ ÏËÎÅ. ëÕÒÓÏÒ ÐÅÒÅÛÅÌ + ÔÕÄÁ ÖÅ. + +>> îÁÂÅÒÉÔÅ 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) 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. + üÔÏ ÒÁÓÐÅÞÁÔÁÅÔ ÉÎÆÏÒÍÁÃÉÀ Emacs Ï ÜÔÏÊ ÆÕÎËÃÉÉ, ËÏÔÏÒÁÑ ×ÙÐÏÌÎÑÅÔÓÑ + ËÏÍÁÎÄÏÊ C-p. + + C-h a Hyper Apropos. ÷×ÅÄÉÔÅ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï É Emacs ÐÏËÁÖÅÔ ×ÁÍ + ÓÐÉÓÏË ×ÓÅÈ ÆÕÎËÃÉÊ É ÐÅÒÅÍÅÎÎÙÈ, ÉÍÅÎÁ ËÏÔÏÒÙÈ ÓÏÄÅÒÖÁÔ ÜÔÏ + ÓÌÏ×Ï. ëÏÍÁÎÄÙ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÂÙÔØ ×ÙÚ×ÁÎÙ ÞÅÒÅÚ Meta-x, + ÂÕÄÕÔ ÏÔÍÅÞÅÎÙ Ú×ÅÚÄÏÞËÏÊ ÓÌÅ×Á. + +>> îÁÂÅÒÉÔÅ C-h a newline. + +ÜÔÏ ÏÔÏÂÒÁÚÉÔ ÐÏÌÎÙÊ ÓÐÉÓÏË ÆÕÎËÃÉÊ É ÐÅÒÅÍÅÎÎÙÈ ÉÍÅÎÁ ËÏÔÏÒÙÈ ÎÁÞÉÎÁÀÔÓÑ Ó +"newline". îÁÖÍÉÔÅ ÉÌÉ ËÌÉËÎÉÔÅ ÓÒÅÄÎÅÊ ËÎÏÐËÏÊ ÍÙÛËÉ ÞÔÏÂÙ ÐÏÌÕÞÉÔØ +ÂÏÌØÛÅ Ï ÆÕÎËÃÉÉ ÉÌÉ ÐÅÒÅÍÅÎÎÏÊ. îÁÖÍÉÔÅ `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 diff --git a/etc/TUTORIAL.th b/etc/TUTORIAL.th new file mode 100644 index 0000000..e2319c6 --- /dev/null +++ b/etc/TUTORIAL.th @@ -0,0 +1,696 @@ + ============================== + GNUEMACS ,T@RIR0-Uh10;Xh19(B (Mule) ,T`0:Wi1M'05i19(B + ============================== + +,TKARB`K05X1(B: ,T`M!JRC)0:Q1:`0:Wi1M'05i1909Ui1(B 0,T6Y1!`0"U1B90"Vi19b4B0BV14K0EQ1!07Uh10Gh1R(B ",TEM'`0Eh19`EB04U1!0Gh1R`0CU1B90CYi1(B" + ,T:CC07Q1407Uh1`0CTh1A05i1904i1GB(B ">>" ,T(P0AU1$S0JQh1'0Gh1R(B 0,T5h1Md;(Pc0Ki17SMPdC(B + + ,Tb4B07Qh1Gd;(B ,T!RC0;i1M9$S0JQh1'c0Ki10!Q1:(B Mule ,T7Sd04i1b4Bc0*i1(B 0,T;Xh1A$M9b7CE(B (0,T;Xh1A07Uh1:9K09i1R0JQ1A0 ,TKARB06V1'(B ,Tc0Ki1!40;Xh1A$M9b7CE0$i1R'd0Gi1(B ,Ta0Ei1G!40;Xh1A(B <0,T5Q1G0MQ1!IC(B> 0,T5Q1GM0Bh1R'`0*h19(B C-f + ,TKARB06V1'(B ,Tc0Ki1!40;Xh1A$M9b7CE0$i1R'd0Gi1(B ,Ta0Ei1G!40;Xh1A(B f +<> + >> ,T5M909Ui1"Mc0Ki1EM'!4(B C-v (View Next Screen 0,T4Y1K09i1R05h1Md;(B) 0,T4Y1(B ,T`0>Wh1M`0EWh1M9d;0Mh1R9K09i1R(B + 0,T5h1Md;(B + 0,T5h1M(R!09Ui1`0;g1905i19d;(B 0,T7X1!$0CQi1'07Uh10Mh1R9K09i1RK09Vh1'(B ,Tf(B ,T(:"Mc0Ki17Sc97S9M'`04U1BG0!Q19(B ,T`0>Wh1M`0EWh1M9d;(B + 0,T4Y1K09i1R05h1Md;(B + +ESC <0,T5Q1G0MQ1!IC(B> ,TKARB06V1'(B ,Tc0Ki1!40;Xh1A(B ESC ,Ta0Ei1G;0Eh1MB(B ,TK0EQ1'(R!09Qi190(V1'!40;Xh1A(B <0,T5Q1G0MQ1!IC(B> ,T5RA(B + +,TKARB`K05X1(B: <0,T5Q1G0MQ1!IC(B> ,Td0Ah10Gh1R`0;g1905Q1GcK0-h1K0CW1M05Q1G`0Eg1!(B ,T(Pc0Ki1$GRAKARB`K0AW1M90!Q19`0AWh1M06Y1!c0*i1c9(B + ,T$S0JQh1'(B 0,T6i1RKR!0AU10;Xh1A(B META ,Tc0Ki1!4(B 0,T!g1(PJRARC6c0*i1!RC!4(B M-<0,T5Q1G0MQ1!IC(B> ,Ta79(B + ,T!RC(B ESC <0,T5Q1G0MQ1!IC(B> ,Td04i1(B (0,T$W1Mc0Ki1!40;Xh1A(B META 0,T$i1R'd0Gi1(B ,Ta0Ei1G0(V1'!4(B <0,T5Q1G0MQ1!IC(B>) + +0,T"i1MJS0$Q1-(B: ,T`GER(P`0ET1!c0*i1(B Emacs ,Tc0Ki1!4(B C-x C-c ,TK0CW1Mc9!C03U107Uh10JQh1'(B Emacs ,T(R!(B csh + 0,T!g1JRARC6c0*i1(B suspend (,TK0BX140*Qh1G$CRG(B) ,Td04i1(B ,T!RC(B suspend Emacs ,T7Sd04i1b4B(B + ,T!4(B C-z + + 0,T5h1M(R!09Ui1(B ,T"Mc0Ki10;i1M9$S0JQh1'(B C-v 0,T7X1!(B ,Tf(B ,T$0CQi1'07Uh10Mh1R9(:K09Vh1'K09i1R(B + + ,T@RBc9K09i1R07Uh1a0Ei1G0!Q1:K09i1R06Q14d;(B ,T(P0AU1`09Wi1MKR0+i1S0!Q19M0BYh1:R':CC07Q14(B 0,T7Uh1`0;g19`0*h1909Ui1(B 0,T!g1`0>Wh1Mc0Ki1JRARC60CYi1(B +,Td04i10Gh1R(B ,T`09Wi1MKR07Uh1aJ4'M0BYh109Qi19(B 0,T5h1M`09Wh1M'0!Q19M0BYh1(B + + + 0,T!h1M90MWh19(B ,T(S`0;g19(P05i1M'0CYi10GT108U1!RCbB!0Bi1RB5SaK09h1'd;AR(B ,T@RBc9a0?i1A0"i1M0AY1E`0JU1B0!h1M9(B ,T5RA07Uh1:M!d;(B +,Ta0Ei1G(B 0,T!g10$W1M(B C-v ,Tc0*i1JSK0CQ1:`0EWh1M9d;0"i1R'K09i1R(B 0,T6i1R(P`0EWh1M9!0EQ1:07Uh1`0!h1R(B 0,T!g1c0Ki1!4(B ESC v + + >> ,TEM'c0*i1(B ESC v ,TaEP(B C-v ,T`0>Wh1M`0EWh1M9d;AR04Y1(B 0,TJQ1!JM'JRA$0CQi1'(B + +,TJ0CX1;(B +=== + ,T$S0JQh1'(B ,TJSK0CQ1:`0EWh1M9d;AR07U1EPK09i1R@RBc9a0?i1A0"i1M0AY1E(B 0,T$W1M(B + + C-v ,T`0EWh1M9d;0"i1R'K09i1R(B ,TK09Vh1'K09i1R(M(B + ESC v ,T`0EWh1M9d;0"i1R'K0EQ1'(B ,TK09Vh1'K09i1R(M(B + C-l ,T`0"U1B9K09i1R(McK0Ah1(B ,TaEPc9"3P`04U1BG0!Q19(B 0,T!g1c0Ki1`0EWh1M95SaK09h1'"M'`$M0Cl1`+M0Cl1(B (cursor) + ,Td;M0BYh15C'!ER'(M(B + + >> ,T"Mc0Ki10JQ1'`!504Y10Gh1R(B ,Tc9"3P09Ui1`$M0Cl1`+M0Cl1M0BYh107Uh1dK9(B ,T>0Ci1MA07Qi1'(S0"i1M$GRA07Uh1M0BYh1CM:0"i1R'"M'(B + ,T`$M0Cl1`+M0Cl104i1GB(B ,Ta0Ei1GEM'!4(B C-l 0,T4Y1(B ,T5CG(JM:04Y10Gh1R(B ,T`$M0Cl1`+M0Cl1`0EWh1M9d;M0BYh107Uh1dK9(B + 0,T"i1M$GRA07Uh1M0BYh1CM:0"i1R'`;0EUh1B9d;M0Bh1R'dC(B + +0,TGT108U1bB!0Bi1RB`$M0Cl1`+M0Cl10"Qi190>Wi190R9(B +======================= + + ,T5M909Ui1(B ,T`CR0!g10CYi10GT108U1bB!0Bi1RBd;ARa::07U1EPK09i1Ra0Ei1G(B 0,T5h1Md;(B 0,T!g1AR`0CU1B90CYi10GT108U1bB!0Bi1RBd;07Uh15SaK09h1'c4(B +,T5SaK09h1'K09Vh1'@RBc9K09i1R`04U1BG0!Q19(B 0,T+Vh1'JRARC67Sd04i1KERB0GT108U1(B 0,TGT108U1K09Vh1'0!g10$W1Mc0Ki1c0*i1$S0JQh1'(B ,Td;:CC07Q140!h1M9K09i1R(B +(previous) ,Td;:CC07Q1405h1Md;(B (next) ,Td;04i1R9K09i1R(B (forward) ,Td;04i1R9K0EQ1'(B (backward) ,T$S0JQh1'(B +,T`K0Eh1R09Ui1(B 0,T6Y1!05Qi1'd0Gi107Uh1(B C-p C-n C-f ,TaEP(B C-b ,T5RAES04Q1:(B 0,T+Vh1'(P7Sc0Ki1bB!0Bi1RBd;ARd04i1(B ,Tb4B`07U1B:0!Q1:(B +,T5SaK09h1'0;Q1(0(X10:Q19(B ,TJ0CX1;`0"U1B9`0;g19a<9@R>d04i104Q1'09Ui1(B + + + ,T:CC07Q1407Uh1a0Ei1G(B C-p + : + : + 0,T5Q1G0MQ1!IC04i1R9K0EQ1'(B C-b .... ,T5SaK09h1'`$M0Cl1`+M0Cl10;Q1(0(X10:Q19(B .... 0,T5Q1G0MQ1!IC04i1R9K09i1R(B C-f + : + : + ,T:CC07Q1405h1Md;(B C-n + + + ,T$S0JQh1'`K0Eh1R09Ui1(B ,T`MRAR(R!05Q1G0MQ1!IC05Q1GaC!"M'(B ,T$S0Gh1R(B Previous Next Backward Forward +0,T+Vh1'(P0*h1GBc0Ki1(Sd04i1d0Ah1BR!(B ,T$S0JQh1'`K0Eh1R09Ui1`0;g19$S0JQh1'JSK0CQ1:!RCbB!0Bi1RB0"Qi190>Wi190R9(B 0,T+Vh1'05i1M'c0*i1M0BYh1`JAM(B + + >> ,TEM'!4(B C-n 0,T4Y1KERB(B ,Tf(B ,T$0CQi1'(B ,T`0>Wh1M`0EWh1M9`$M0Cl1`+M0Cl1AR0BQ1':CC07Q1409Ui1(B (,T:CC07Q1407Uh1!S0EQ1'0Mh1R9(B + ,TM0BYh109Ui1(B) + + >> ,TEM'!4(B C-f 0,T4Y1KERB(B ,Tf(B ,T$0CQi1'(B ,T`0>Wh1M`0EWh1M9`$M0Cl1`+M0Cl1d;0BQ1'5C'!ER'"M':CC07Q14(B ,Ta0Ei1GEM'(B + ,T!4(B C-p ,T`0EWh1M90"Vi190"i1R':904Y1(B 0,TJQ1'`!504Y104i1GB0Gh1R(B ,T5SaK09h1'"M'`$M0Cl1`+M0Cl1`;0EUh1B9d;M0Bh1R'dC(B + + >> ,TEM'!4(B C-b ,T"3P07Uh1M0BYh107Uh15SaK09h1'K09i1R0JX14"M':CC07Q1404Y1(B 0,TJQ1'`!504Y104i1GB0Gh1R(B ,T`$M0Cl1`+M0Cl1`$0EWh1M9(B + ,Td;M0Bh1R'dC(B ,T(R!09Qi19c0Ki1!4(B C-b 0,TMU1!JM'JRA$0CQi1'(B ,Ta0Ei1G!4(B C-f ,T`0>Wh1M`0EWh1M9d;0BQ1'07i1RB0JX14(B + ,T"M':CC07Q1404Y1(B ,T`$M0Cl1`+M0Cl1(P`0;g19M0Bh1R'dC(B 0,T6i1R!4(9`EB07i1RB:CC07Q14d;(B + + + ,T`GER07Uh1`0EWh1M9`$M0Cl1`+M0Cl1(B ,T(9`EB:CC07Q14aC!0JX14K0CW1M:CC07Q1407i1RB0JX14"M'K09i1Rd;(B ,T`$M0Cl1`+M0Cl1(P(B +,T`0EWh1M9d;0BQ1':CC07Q1405h1Md;c907T1H7R'09Qi19(B ,Tf(B ,TaEP;0CQ1:c0Ki1`$M0Cl1`+M0Cl1!0EQ1:ARM0BYh1:9K09i1R(M`JAM(B + + >> ,TEM'!4(B C-n ,T`0>Wh1M`0EWh1M9`$M0Cl1`+M0Cl1c0Ki1`EB:CC07Q140Eh1R'0JX14"M'K09i1R(M04Y1(B ,Ta0Ei1G0JQ1'`!504Y10Gh1R(B + ,T`0!T14MPdC0"Vi19(B ,TaEP5SaK09h1'"M'`$M0Cl1`+M0Cl1`;0EUh1B9d;M0Bh1R'dC(B + + 0,T6i1R0CYi10JV1!0Gh1R!RC"0BQ1:d;07U1EP05Q1G0MQ1!IC09Qi190MW14MR40BW14BR4(B 0,T!g1JRARC6c0*i1!RC`0EWh1M9`$M0Cl1`+M0Cl1d;07U1EP$S(B +,Td04i1(B ,T!4(B ESC f ,T`0>Wh1Mc0Ki1`0EWh1M9d;0"i1R'K09i1RK09Vh1'$S(B ,TaEP(B ESC b ,T`0>Wh1Mc0Ki1`0EWh1M9d;0"i1R'K0EQ1'K09Vh1'$S(B + +,TKARB`K05X1(B: ,TJSK0CQ1:@RIRd7B(B 0,TBQ1'd0Ah1JRARC6a0:h1'aB!5SaK09h1'"M'$Sd04i106Y1!05i1M'(B 0,T(V1'd0Ah1(B + ,TJRARC6c0*i1JM'$S0JQh1'09Ui1d04i1(B + + >> ,TEM'!4(B ESC f ,TaEP(B ESC b ,TEM'04Y1KERB(B ,Tf(B ,T$0CQi1'(B ,TaEPEM'c0*i10Ch1GA0!Q1:(B C-f 0,T!Q1:(B C-b 0,T4Y1(B + 0,T4i1GB(B + + ,T(P0JQ1'`!5`0Kg19d04i10Gh1R(B ESC f ,TaEP(B ESC b 0,TAU10CY1;a::$0Ei1RB$0EV1'0!Q1:(B C-f ,TaEP(B C-b ,Tb4B0Jh1G9cK0-h1(B +ESC <0,T5Q1G0MQ1!IC(B> ,T(Pc0*i1`0!Uh1BG0!Q1:!RC0(Q14!RC0"i1M$GRA(B 0,TJh1G9(B C-<0,T5Q1G0MQ1!IC(B> ,T(Pc0*i10!Q1:0JTh1'07Uh1`0;g190>Wi190R9AR!(B +,T!0Gh1R(B (,T`0*h19(B 0,T5Q1G0MQ1!IC(B ,TK0CW1M(B ,T:CC07Q14(B) + + C-a 0,T!Q1:(B C-e ,T`0;g19$S0JQh1'09h1R(P0CYi1d0Gi1(B ,T`>CRP0$h1M90"i1R'JP4G!04U107U1`04U1BG(B C-a ,Tc0*i1JSK0CQ1:`0EWh1M9(B +,T`$M0Cl1`+M0Cl1d;07Uh15SaK09h1'K09i1R0JX14"M':CC07Q14(B C-e ,TJSK0CQ1:`0EWh1M9d;07Uh15SaK09h1'07i1RB0JX14"M':CC07Q14(B + + + >> ,TEM'!4(B C-a 0,T4Y1JM'$0CQi1'(B ,TK0EQ1'(R!09Qi19c0Ki1!4(B C-e 0,T4Y1JM'$0CQi1'(B ,Ta0Ei1GEM'0JQ1'`!504Y10Gh1R(B ,T!RC(B + ,T!4$S0JQh1'09Ui1AR!!0Gh1RJM'$0CQi1'(B ,T(Pd0Ah10*h1GBc0Ki1`0EWh1M9`$M0Cl1`+M0Cl1d;dK9d04i1AR!!0Gh1R09Qi190MU1!(B + + 0,TBQ1'0AU10MU1!JM'$S0JQh1'(B ,TJSK0CQ1:!RC`0EWh1M9`$M0Cl1`+M0Cl1a::0'h1RB(B ,Tf(B 0,T$W1M(B ,T$S0JQh1'(B ESC < ,TJSK0CQ1:!RC`0EWh1M9(B +,T`$M0Cl1`+M0Cl1d;07Uh15SaK09h1'aC!0JX14"M'a0?i1A0"i1M0AY1E(B ,TaEP$S0JQh1'(B ESC > ,TJSK0CQ1:!RC`0EWh1M9d;5SaK09h1'07i1RB0JX14(B + + ,T`CR`0CU1B!5SaK09h1'"M'0"i1M$GRA(B 0,T7Uh10AU1`$M0Cl1`+M0Cl1M0BYh10Gh1R(B "0,T(X14(B (point)" ,TK0CW1M0>Y140MU1!M0Bh1R'K09Vh1'd04i1(B +0,TGh1R(B ,T`$M0Cl1`+M0Cl1(B ,T`0;g190JTh1'07Uh1:M!c0Ki1`CR0CYi10Gh1R(B 0,T(X14(B ,TM0BYh15C'dK9"M'K09i1R(M(B + + ,TJ0CX1;$S0JQh1'JSK0CQ1:!RC`$0EWh1M9d;AR(B 0,T+Vh1'CGA!RC`$0EWh1M907Uh1c9K09h1GB"M'$S(B ,TK09h1GB"M':CC07Q14d0Gi104i1GB(B +,Td04i104Q1'09Ui1(B + + C-f ,Td;0"i1R'K09i1RK09Vh1'05Q1G0MQ1!IC(B + C-b ,T!0EQ1:0"i1R'K0EQ1'K09Vh1'05Q1G0MQ1!IC(B + + ESC f ,Td;0"i1R'K09i1RK09Vh1'$S(B + ESC b ,T!0EQ1:0"i1R'K0EQ1'K09Vh1'$S(B + + C-n ,T`0EWh1M9d;:CC07Q1405h1Md;(B + C-p ,T`0EWh1M9d;:CC07Q1407Uh1a0Ei1G(B + + ESC ] ,T`0EWh1M9d;5SaK09h1'07i1RB0JX14"M'0Bh1MK09i1R(B (paragraph) + ESC [ ,T`0EWh1M9d;5SaK09h1'aC!0JX14"M'0Bh1MK09i1R(B + + C-a ,T`0EWh1M9d;5SaK09h1'aC!0JX14"M':CC07Q14(B + C-e ,T`0EWh1M9d;5SaK09h1'07i1RB0JX14"M':CC07Q14(B + + ESC < ,T`0EWh1M9d;5SaK09h1'aC!0JX14"M'a0?i1A0"i1M0AY1E(B + ESC > ,T`0EWh1M9d;5SaK09h1'07i1RB0JX14"M'a0?i1A0"i1M0AY1E(B + + >> ,TEM'c0*i1$S0JQh1'a05h1EP$S0JQh1'04Y1(B ,T$S0JQh1'`K0Eh1R09Ui1`0;g19$S0JQh1'07Uh1c0*i10!Q190:h1MB0JX14(B ,T$S0JQh1'JM'$S0JQh1'K0EQ1'(B + ,T(P`0EWh1M9`$M0Cl1`+M0Cl1(B ,Td;0BQ1'07Uh107Uh10$h1M90"i1R'd!E(B ,Tc0Ki1EM'c0*i1$S0JQh1'(B C-v ,TaEP(B ESC v ,T`0>Wh1M(B + ,T`0EWh1M9`$M0Cl1`+M0Cl1!0EQ1:AR07Uh15C'09Ui1(B + + ,TJSK0CQ1:$S0JQh1'0MWh19(B ,Tf(B ,T"M'(B Emacs 0,T!g1`0*h190!Q19(B ,T$S0JQh1'`K0Eh1R09Ui1(PJRARC6`0>Th1A05Q1G`0EW1M!(B (argument) +,T`0>Wh1M!SK94(B ,T(S9G9$0CQi1'(B ,Tc9!RC;0/T10:Q105T1'R9d04i1(B ,T!RC!SK94(S9G9$0CQi1'(B ,T7Sd04i1b4B!4(B C-u ,Ta0Ei1G5RA(B +0,T4i1GB(S9G9$0CQi1'07Uh105i1M'!RC0!h1M9(B ,Ta0Ei1G0(V1'0$h1MB!4$S0JQh1'5RA(B + + 0,T5Q1GM0Bh1R'`0*h19(B ,T$S0JQh1'(B C-u 8 C-f ,TKARB06V1'(B ,Tc0Ki1`0EWh1M9d;0"i1R'K09i1R(B 8 0,T5Q1G0MQ1!IC(B + + >> ,Tc0Ki1EM'!SK94(S9G9$0CQi1'07Uh1`KARPJAJSK0CQ1:$S0JQh1'(B C-n ,TK0CW1M(B C-p ,T`0>Wh1M`0EWh1M9`$M0Cl1`+M0Cl1(B + ,Tc0Ki1ARM0BYh1c!0Ei1:CC07Q1409Ui1c0Ki1AR!07Uh10JX14`07h1R07Uh1(P7Sd04i1(B ,Tc9!RC`0EWh1M9`$M0Cl1`+M0Cl1$0CQi1'`04U1BG(B + + ,TJSK0CQ1:(B C-v ,TaEP(B ESC v ,T(Pd04i1> ,TEM'!4(B C-u 3 C-v 0,T4Y1(B + + ,T`0EWh1M9!0EQ1:07Uh1`0!h1Rd04i1b4B(B C-u 3 ESC v + +,T$S0JQh1'B!`0ET1!(B +========= + + ,T$S0JQh1'(B C-g ,Tc0*i1JSK0CQ1:0JQh1'B!`0ET1!$S0JQh1'05h1R'(B ,Tf(B 0,T7Uh105i1M'!RC!RC0;i1M90"i1M0AY1E`0>Th1A`05T1A(B 0,T5Q1GM0Bh1R'`0*h19(B +,TCPK0Gh1R'07Uh1c0Jh105Q1G`0EW1M!(B (argument) ,TM0BYh1(B ,TK0CW1MCPK0Gh1R'$S0JQh1'07Uh105i1M'!RC!40;Xh1AAR!!0Gh1R(B 2 0,T;Xh1A0"Vi19d;(B 0,T6i1R(B +,TKR!05i1M'!RCB!`0ET1!(B 0,T!g1c0Ki1!4(B C-g + + >> ,TEM'!SK94(S9G9$0CQi1'c0Ki1`0;g19(B 100 ,Tb4B!RC!4(B C-u 100 ,Ta0Ei1G!4(B C-g 0,T4Y1(B ,TK0EQ1'(R!09Qi19(B + ,Tc0Ki1EM'!4(B C-f 0,T4Y1(B ,Ta0Ei1G0JQ1'`!504Y10Gh1R`$M0Cl1`+M0Cl1`0EWh1M9d;0!Uh105Q1G0MQ1!IC(B ,TK0CW1M5M907Uh1>ER4d;!4(B + ESC ,Tb4Bd0Ah105Qi1'c((B 0,T!g1JRARC6!4(B C-g ,TB!`0ET1!d04i1(B + +0,T"i1M0ER4(B (Error) +================ + + ,Tc9:R'$0CQi1'(B ,TMR((P0AU1!RC0JQh1';0/T10:Q105T1'R9:R'M0Bh1R'(B 0,T7Uh1(B Emacs ,TBMA0CQ1:d0Ah1d04i1`0!T140"Vi19(B 0,T5Q1GM0Bh1R'`0*h19(B +,T!RC!4$S0JQh1'$M9b7CE:R'$S0JQh1'(B 0,T7Uh1d0Ah1d04i1!SK94d0Gi1c9(B Emacs 0,T!g1(P7Sc0Ki1(B Emacs 0,TJh1'`0JU1B'`05W1M9(B +,TaEPaJ4'ER4M0Bh1R'dC(B + + ,T$S0JQh1':R'$S0JQh1'07Uh1`0"U1B9d0Gi1c9`M!JRC)0:Q1:09Ui1(B ,TMR(c0*i1d0Ah1d04i10!Q1:(B Emacs ,T:R'0CXh19(B (version) 0,T+Vh1'(P(B +,T7Sc0Ki10AU1!RCaJ4'ER4(B (error) 0,T"Vi19(B ,Tc9!C03U109Ui1(B ,T"Mc0Ki1!40;Xh1AMPdC0!g1d04i1(B ,T`0>Wh1M`0EWh1M9d;0BQ1'0Jh1G9(B +0,T5h1Md;(B + +0,TGT19b40Gl1(B (Window) +============== + + Emacs ,TJRARC6`0;T140GT19b40Gl1d04i1>0Ci1MA0!Q19KERB0GT19b40Gl1(B ,TaEPc0*i10GT19b40Gl1`K0Eh1R09Qi19aJ4'08l1"M'$S0JQh1':R'$S0JQh1'(B ,TK0CW1M(B Help ,TMM!`0JU1B0!h1M9(B + + C-x 1 ,T7Sc0Ki1`0;g190GT19b40Gl1`04U1BG(B + + ,T$S0JQh1'(B C-x 1 ,Tc0*i1JSK0CQ1:E:0GT19b40Gl10MWh19(B ,Ta0Ei1G"BRB0GT19b40Gl107Uh10AU1`$M0Cl1`+M0Cl1M0BYh1(B ,Tc0Ki1`05g1A(M`0;g19(B +0,TGT19b40Gl1`04U1BG(B + + >> ,Tc0Ki1`0EWh1M9`$M0Cl1`+M0Cl1AR07Uh1:CC07Q1409Ui1(B ,Ta0Ei1G!4(B C-u 0 C-l + + >> ,TEM'!4(B C-h k C-f 0,T4Y1(B ,Ta0Ei1G0JQ1'`!504Y10Gh1R0GT19b40Gl109Ui1`;0EUh1B9d;M0Bh1R'dC(B ,T`0AWh1M0AU10GT19b40Gl1cK0Ah10+Vh1'(B + ,TM08T1:RB0GT108U1c0*i1$S0JQh1'(B C-f ,T;CR!/0"Vi19(B + + >> ,TEM'!4(B C-x 1 ,T`0>Wh1ME:0GT19b40Gl107Uh1b<0Eh10"Vi19ARcK0Ah1(B ,TMM!(B + +,T!RCa7C!(B (insert) ,TaEP(B ,T!RCE:(B (delete) +=================================== + + ,T:9(B Emacs ,T`CR(PJRARC60>T1A0>l105Q1G0MQ1!IC`0"i1Rd;d04i1`EB(B ,T`0AWh1M05i1M'!RC0>T1A0>l10"i1M$GRA(B Emacs ,T(P(B +0,T6W1M0Gh1R05Q1GK09Q1'0JW1M07Uh1AM'`0Kg19d04i107X1!05Q1G(B (,T`0*h19(B 'A' '7' '*' ',T!(B' ,TaEP0MWh19(B ,Tf(B) ,T`0;g190"i1M$GRA07Uh105i1M'!RC(P(B +,Ta7C!(B (insert) ,T`0"i1Rd;5C'(B ,Tf(B ,T`0AWh1M(P(::CC07Q14(B ,Tc0Ki1!4(B ,T`0>Wh1M`05T1A0MQ1!IC0"Vi19:CC07Q14cK0Ah1(B +(linefeed character) ,Ta7C!`0"i1Rd;(B + + ,Tc0Ki1!4(B ,T`0AWh1M05i1M'!RC(PE:05Q1G0MQ1!IC07Uh1`0>Th1'0>T1A0>l1`0"i1Rd;(B ,TKARB06V1'0;Xh1A`0"U1B9(B +,T:90 +,Tc0*i1JSK0CQ1:E:05Q1G0MQ1!IC07Uh1M0BYh10!h1M9K09i1R5SaK09h1'`$M0Cl1`+M0Cl10;Q1(0(X10:Q19(B + + >> ,TEM'0>T1A0>l105Q1G0MQ1!IC`0"i1Rd;KERB(B ,Tf(B 0,T5Q1G(B ,Ta0Ei1Gc0*i1(B ,TE:05Q1G0MQ1!IC`K0Eh1R09Qi1907Ti1'(B + + >> ,TEM'0>T1A0>l10"i1M$GRAE'd;c0Ki1`0!T19"M:"GR(B (right margin) ,T`GER07Uh10>T1A0>l10"i1M$GRA`0"i1Rd;(B + ,TBRG`0!T19$GRA!0Gi1R'"M'K09Vh1':CC07Q14(B ,T:CC07Q1409Qi190!g1(P(B "0,T6Y1!05h1M(B" ,Tc0Ki1BRG`0!T19K09Vh1'K09i1R(M(B + ,Tb4Bc0Jh1`$0CWh1M'KARB(B '\' ,Td0Gi107Uh1"M:"GR0JX14(B ,T`0>Wh1M:M!c0Ki10CYi10Gh1R:CC07Q1409Ui10BQ1'0AU105h1M(B Emacs ,T(P(B + ,T`0EWh1M9(B (scroll) ,TK09i1R(M`0>Wh1Mc0Ki1`0Kg195SaK09h1'07Uh1!S0EQ1'a0!i1d"M0BYh1d04i1M0Bh1R'0*Q14`(9(B 0,T6i1RKR!(B + ,T"M:"GRK0CW1M"M:0+i1RB"M'0AU1`$0CWh1M'KARB(B '\' ,TM0BYh1(B 0,T!g1`0;g19!RC:M!c0Ki10CYi10Gh1R(B ,T:CC07Q1409Qi190BQ1'0AU105h1M(B + ,Td;c907T1H7R'09Qi19(B ,Tf(B + + ,TEM';0/T10:Q105T104Y1`EB(B ,T$'(P0*h1GBc0Ki1`0"i1Rc(0'h1RB!0Gh1R!RCM08T1:RB04i1GB05Q1GK09Q1'0JW1M(B + + >> ,Tc0Ki1"0BQ1:`$M0Cl1`+M0Cl1d;d0Gi1:9:CC07Q140+Vh1'06Y1!05h1Mc0Ki1BRG`0!T19K09Vh1'K09i1R(M(B 0,T7Uh1`0>Th1'0;i1M9`0"i1Rd;`0AWh1M(B + 0,TJQ1!$0CYh109Ui1(B ,Ta0Ei1Gc0*i1(B C-d ,TE:0"i1M$GRAMM!:R'0Jh1G9(B ,T(9$GRABRG"M'0"i1M$GRAM0BYh1@RBc9K09Vh1'(B + ,T:CC07Q14(B 0,TJQ1'`!504Y10Gh1R`$0CWh1M'KARB(B '\' ,T(PKRBd;(B + + >> ,Tc0Ki1`0EWh1M9`$M0Cl1`+M0Cl1d;d0Gi107Uh15SaK09h1'aC!0JX14"M':CC07Q14(B ,Ta0Ei1G!4(B 0,T4Y1(B ,T!RC7S(B + ,Ta::09Ui1(B ,T(P7Sc0Ki10JQ1-0EQ1!I03l10$Qh19CPK0Gh1R':CC07Q1406Y1!E:MM!d;(B ,T:CC07Q1409Qi190!g1(P06Y1!`MRd;05h1M0!Q1:(B + ,T:CC07Q140!h1M9K09i1R09Qi19(B ,TCGA0!Q19`0;g19:CC07Q14BRG:CC07Q14`04U1BG(B ,TaEPMR((P0AU10JQ1-0EQ1!I03l105h1M:CC07Q14(B + ,T;CR!/0"Vi19(B + + >> ,Tc0Ki1!4(B ,T`0>Wh1M`0>Th1A(B 0,T5Q1G0MQ1!IC0"Vi19:CC07Q14cK0Ah1(B ,T!0EQ1:d;M0Bh1R'`04T1A(B + + ,T$S0JQh1'0Jh1G9cK0-h1"M'(B Emacs ,T(PJRARC6!SK94(S9G9$0CQi1'07Uh105i1M'!RCc0Ki1;0/T10:Q105T1d04i1(B ,TCGA07Qi1'!RC(B +,Ta7C!(B (insert) 0,T5Q1G0MQ1!IC04i1GB(B + + + >> ,TEM'0;i1M9$S0JQh1'(B C-u 8 * 0,T4Y1(B 0,TJQ1'`!504Y10Gh1R`0!T14MPdC0"Vi19(B + + 0,T6i1R05i1M'!RC(P`0>Th1A:CC07Q140Gh1R'(B ,Tf(B (blank line) ,TCPK0Gh1R'JM':CC07Q14(B ,Tc0Ki1`0EWh1M9d;07Uh15SaK09h1'(B +,TaC!0JX14"M':CC07Q1407Uh1JM'(B ,Ta0Ei1G!4(B C-o + + >> ,Tc0Ki1`0EWh1M9d;07Uh15SaK09h1'aC!0JX14"M':CC07Q14c40!g1d04i1(B ,Ta0Ei1GEM'!4(B C-o 0,T4Y1(B + + 0,T6V1'5C'09Ui1(B ,T`CR0!g1d04i1`0CU1B90GT108U10>Wi190R9JSK0CQ1:!RC0;i1M90"i1M$GRA(B ,TaEP!RCa0!i107Uh10 ,TE:05Q1G0MQ1!IC07Uh1M0BYh1K09i1R`$M0Cl1`+M0Cl1(B + C-d ,TE:05Q1G0MQ1!IC07Uh1M0BYh107Uh1`$M0Cl1`+M0Cl1(B + + ESC ,TE:$S07Uh1M0BYh1K09i1R`$M0Cl1`+M0Cl1(B + ESC d ,TE:$S05Qi1'a05h15SaK09h1'07Uh1`$M0Cl1`+M0Cl1M0BYh1(B + + C-k ,TE::CC07Q1405Qi1'a05h15SaK09h1'07Uh1`$M0Cl1`+M0Cl1M0BYh1(B + + ,Tc9:R'$0CQi1'(B ,T`CRMR(05i1M'!RC(P`MR0Jh1G907Uh1E:d;!0EQ1:0$W19AR(B ,Tb;Ca!CA(B Emacs ,T(P(S0Jh1G907Uh1E:(B +,TMM!d0Gi1(B ,T`GER07Uh1E:0"i1M$GRAc9K09h1GB07Uh1AR!!0Gh1RK09Vh1'05Q1G0MQ1!IC(B ,Tc0Ki1c0*i1$S0JQh1'(B C-y ,T`GER07Uh105i1M'!RC(P`MR(B +0,T"i1M$GRA!0EQ1:0$W19(B 0,TJTh1'07Uh1$GCCP0GQ1'0!g10$W1M(B C-y ,Td0Ah1c0*h1c0*i1d04i1`0>U1B'a0$h15SaK09h1'07Uh1E:0"i1M$GRAMM!`07h1R09Qi19(B ,Ta05h1(P(B +,Tc0*i10!Q1:5SaK09h1'c40!g1d04i1(B C-y ,T`0;g19$S0JQh1'JSK0CQ1:a7C!0"i1M$GRA07Uh1`0!g1:d0Gi1(B ,TE'c95SaK09h1'07Uh10AU1`$M0Cl1`+M0Cl1M0BYh1(B +,T`CRJRARC6c0*i1$GRAJRARC609Ui1c9!RC`$0EWh1M90Bi1RB0"i1M$GRAd04i1(B + + ,T$S0JQh1'JSK0CQ1:!RCE:0AU1M0BYh1JM'a::0$W1M(B ,T$S0JQh1'(B "Delete" 0,T!Q1:(B ,T$S0JQh1'(B "Kill" ,T$S0JQh1'(B "Kill" +,T(P`0!g1:0Jh1G9E:MM!d0Gi1(B ,Ta05h1$S0JQh1'(B "Delete" ,T(Pd0Ah1`0!g1:(B ,Ta05h106i1RKR!c0*i1$S0JQh1'09Ui1KERB(B ,Tf(B ,T$0CQi1'(B 0,T!g1(P`0!g1:(B +0,TJh1G907Uh1E:MM!d0Gi1c0Ki1(B + + >> ,Tc0Ki1!4(B C-n 0,TJQ1!JM'JRA$0CQi1'(B ,T`0>Wh1M`0EWh1M9d;0BQ1'07Uh107Uh1`KARPJA:9K09i1R(M(B ,Ta0Ei1GEM'!4(B C-k ,T`0>Wh1M(B + ,TE::CC07Q1409Qi19MM!04Y1(B + + ,T`0AWh1M!4(B C-k ,T$0CQi1'aC!(B 0,T"i1M$GRAc9:CC07Q1409Qi19(P06Y1!E:MM!(B ,TaEP`0AWh1M!40MU1!(B C-k 0,TMU1!$0CQi1'(B ,T:CC07Q14(B +0,T9Qi19`M'07Qi1':CC07Q140!g1(P06Y1!E:MM!d;04i1GB(B ,Ta05h106i1R!SK94(S9G9$0CQi1'c0Ki10!Q1:$S0JQh1'(B C-k 0,T!g1(PKARB06V1'(B ,Tc0Ki1E:(B +,T:CC07Q14MM!(B (0,T7Qi1'`09Wi1MKRaEP05Q1G:CC07Q14(B) ,T`0;g19(S9G9:CC07Q14(B ,T`07h1R0!Q1:(S9G9$0CQi1'07Uh1!SK94(B + + ,T:CC07Q1407Uh1`0>Th1'E:MM!d;(B ,T(P06Y1!`0!g1:d0Gi1(B ,TaEPJRARC69S!0EQ1:0$W19ARd04i1(B ,Tb4Bc0*i1$S0JQh1'(B C-y + + >> ,TEM'!4(B C-y 0,T4Y1(B + + 0,T"i1M$GRA07Uh106Y1!E:MM!(B ,Tb4B!RC!4(B C-k ,TKERB(B ,Tf(B ,T$0CQi1'(B ,T(P06Y1!`0!g1:CG:CGAd0Gi1(B ,TaEPJRARC69S(B +,T!0EQ1:AR07Qi1'KA4d04i1c9$0CQi1'`04U1BG(B ,Tb4B!RC!4(B C-y + + >> ,TEM'!4(B C-k 0,T4Y1KERB(B ,Tf(B ,T$0CQi1'(B + + >> ,T$S0JQh1'JSK0CQ1:`0CU1B!0"i1M$GRA!0EQ1:AR(B 0,T$W1M(B C-y 0,T!h1M90MWh19c0Ki1`0EWh1M9`$M0Cl1`+M0Cl1E'd;0"i1R'0Eh1R'(B + 0,TJQ1!JM'JRA:CC07Q14(B ,Ta0Ei1GEM'!4(B C-y 0,T4Y1(B 0,T!g1(PJRARC60$Q14EM!(B (copy) 0,T"i1M$GRAd04i1(B + + 0,T6i1R5M909Ui1`0!g1:0"i1M$GRAMPdC:R'M0Bh1R'd0Gi1(B ,Ta0Ei1GE:0"i1M$GRA0MWh19`0>Th1A`0"i1Rd;0MU1!(B ,T(P`0!T14MPdC0"Vi19(B +,T08l10$W1M(B C-y ,T(P`0CU1B!0$W19d04i1a0$h1`0>U1B'0"i1M$GRA07Uh1E:MM!$0CQi1'0Eh1R0JX14`07h1R09Qi19(B + + + >> ,TEM'E::CC07Q1404Y1K09Vh1':CC07Q14(B ,Ta0Ei1G`0EWh1M9`$M0Cl1`+M0Cl1d;07Uh10MWh19(B ,Ta0Ei1GE::CC07Q14MM!04Y10MU1!K09Vh1'(B + ,T:CC07Q14(B ,TEM'!4(B C-y 0,T4Y1(B ,Ta0Ei1G0JQ1'`!504Y10Gh1R(Pd04i1a0$h1`0>U1B':CC07Q1407Uh1JM'0$W19`07h1R09Qi19(B + +,T!RC0MQ1904Y1(B (UNDO) +============= + + ,T`GER07Uh1a0!i1d"0"i1M$GRA:R'M0Bh1R'(B ,Ta0Ei1G05i1M'!RC(P`;0EUh1B9!0EQ1:c0Ki1`0;g19M0Bh1R'`04T1A(B 0,T!g1JRARC67Sd04i107X1!(B +,T`0AWh1M04i1GB$S0JQh1'(B C-x u ,Tb4B;!05T1(B ,T(Pc0*i1JSK0CQ1:B!`0ET1!$S0JQh1'(B 0,T7Uh10;i1M9`0"i1Rd;b4Bd0Ah105Qi1'c((B ,TJRARC6c0*i1(B +,T$S0JQh1'09Ui10!Uh1$0CQi1'0!g1d04i15RA05i1M'!RC(B + + >> ,TEM'E::CC07Q1409Ui1MM!04Y1(B 0,T4i1GB$S0JQh1'(B C-k ,Ta0Ei1G`0CU1B!!0EQ1:0$W19AR04i1GB(B C-x u + + ,T$S0JQh1'(B C-_ 0,T!g1`0;g19$S0JQh1'0MQ1904Y10MU1!0MQ19K09Vh1'(B ,T$GRAJRARC6`K0AW1M90!Q1:$S0JQh1'(B C-x u + + ,TJRARC6!SK94(S9G9$0CQi1'c0Ki1$S0JQh1'(B C-_ ,TaEP(B C-x u ,Td04i1(B + + +,Ta0?i1A0"i1M0AY1E(B (File) +============== + + ,T`CR(S`0;g1905i1M'`0!g1:0CQ1!IR(B (save) 0,T"i1M$GRA07Uh1a0!i1d"d0Gi1c9a0?i1A0"i1M0AY1E(B 0,T6i1R05i1M'!RC(Pc0Ki10JTh1'07Uh1(B +,Ta0!i1d"`;0EUh1B9d;M0Bh1R'6RGC(B ,Td0Ah1`0*h1909Qi19(B 0,TJTh1'07Uh1a0!i1d"d;0!g1(PKRBd;(B 0,T7Q1907U107Uh1`0ET1!!RCc0*i1(B Emacs + + ,Ta0?i1A0"i1M0AY1E07Uh1AM'`0Kg19M0BYh1(B 0,T$W1M0JTh1'07Uh10:Q1907V1!0JTh1'07Uh1!S0EQ1'a0!i1d"M0BYh1(B ,TK0CW1M0>Y140'h1RB(B ,Tf(B 0,T!g10$W1Ma0?i1A0"i1M0AY1E07Uh1AM'`0Kg19(B +,TM0BYh10$W1M05Q1Ga0?i1A0"i1M0AY1E07Uh1!S0EQ1'a0!i1d"M0BYh1(B + + ,Ta05h1(9!0Gh1Ra0?i1A0"i1M0AY1E(P06Y1!`0!g1:0CQ1!IR(B (save) ,TE'd;(B ,Ta0?i1A0"i1M0AY1E07Uh106Y1!a0!i1d"M0BYh1(B ,T(Pd0Ah106Y1!`0"U1B907Q1:(B +,TE'd;M0Bh1R'`04g14"R4(B 0,TMQ1909Ui1`0>Wh1M`0;g19!RC0;i1M'0!Q19!RC`0"U1B907Q1:a0?i1A0"i1M0AY1E07Uh1a0!i1d"d;a::$0CVh1'(B ,Tf(B ,T!ER'(B ,Tf(B +,Tb4Bd0Ah1d04i105Qi1'c((B + + ,T9M!(R!09Ui1(B ,T`0>Wh1M`0;g19!RC0;i1M'0!Q19!RC`0!g1:0CQ1!IR(B (save) 0,TJTh1'07Uh1a0!i1d"0Th1A`05T1A`0!Uh1BG0!Q1::CC07Q14bKA4(B (mode line) ,Tc95M9K0EQ1'(B + + ,T$S0JQh1'c0Ki1KRa0?i1A0"i1M0AY1E(B ,TaEP$S0JQh1'c0Ki1`0!g1:0CQ1!IRa0?i1A0"i1M0AY1E(B 0,TAU10EQ1!I3Pa5!05h1R'(R!$S0JQh1'07Uh10 + + >> ,TEM'!4(B C-x C-f ,Ta0Ei1G5RA04i1GB(B C-g 0,T4Y1(B ,T`0;g19!RC0JQh1'B!`0ET1!`09Wi1MKRc90AT109T10:Q1?`?M0Cl1(B ,TK0CW1M(B + ,TB!`0ET1!$S0JQh1'(B C-x C-f 0,T4Q1'09Qi19(B Emacs ,T(Pd0Ah10$i19KRa0?i1A0"i1M0AY1Ec4(B ,Tf(B + + ,T$CRG09Ui1(B ,TAREM'`0!g1:0CQ1!IRa0?i1A0"i1M0AY1E04Y1(B ,T`GER07Uh105i1M'!RC`0!g1:0CQ1!IR0JTh1'07Uh1a0!i1d"AR(906V1'5M909Ui1(B 0,T!g1c0Ki1c0*i1(B +,T$S0JQh1'04Q1'09Ui1(B + + C-x C-s ,T`0!g1:0CQ1!IR(B (save) ,Ta0?i1A0"i1M0AY1E(B + + ,Ta0Ei1G`09Wi1MKR07Uh1M0BYh1c9(B Emacs 0,T!g1(P06Y1!`0"U1B9E'd;07Uh1a0?i1A0"i1M0AY1E(B ,T`GER`0!g1:0CQ1!IRa0?i1A0"i1M0AY1E(B ,Ta0?i1A0"i1M0AY1E(B +0,T5i19)0:Q1:(Pd0Ah10JY1-KRBd;(B ,Ta05h1(P06Y1!`0!g1:d0Gi1c90*Wh1McK0Ah1(B 0,T+Vh1'd04i1AR(R!0*Wh1M`0!h1R07Uh105h1M07i1RB04i1GB(B '~' + + ,TK0EQ1'(R!07Uh1`0!g1:0CQ1!IRa0?i1A0"i1M0AY1E`J0Cg1(a0Ei1G(B Emacs 0,T!g1(PaJ4'0*Wh1Ma0?i1A0"i1M0AY1E07Uh1`0!g1:c0Ki104Y1(B + + >> ,TEM'!4(B C-x C-x ,T`0>Wh1M`0!g1:0CQ1!IRJS`9R"M'(B Tutorial 0,T9Ui104Y1(B 0,T!g1(P`0Kg190Gh1R(B 0,T7Uh10Jh1G90Eh1R'(B + ,T"M'(M(B 0,TAU10"i1M$GRA0Gh1R(B "Wrote ...../TUTORIAL.th" ,T;CR!/0"Vi19(B + + ,T`GER07Uh1(PJ0Ci1R'a0?i1A0"i1M0AY1EcK0Ah1(B 0,T!g1c0Ki17SCRG0!Q1:0Gh1R(P0$i19KR(B (find-file) ,Ta0?i1A0"i1M0AY1E`0!h1R0+Vh1'0AU1(B +,TM0BYh10!h1M9K09i1R09Ui1a0Ei1G(B ,Ta0Ei1G0>T1A0>l10"i1M$GRAE'd;c9a0?i1A0"i1M0AY1E07Uh1KR`(M(B + + ,TaEP`GER07Uh10JQh1'`0!g1:0CQ1!IRa0?i1A0"i1M0AY1E`07h1R09Qi19(B 0,T$W1M5M907Uh1(B Emacs ,T(P`0!g1:`09Wi1MKR07Uh1a0!i1d"AR07Qi1'KA4(B ,TE'(B +,Tc9a0?i1A0"i1M0AY1E`0;g19$0CQi1'aC!(B + + +0,T:Q1?`?M0Cl1(B (Buffer) +=============== + + 0,T6i1RKR!0JQh1'c0Ki1KRa0?i1A0"i1M0AY1E0MQ1907Uh1JM'(B 0,T4i1GB$S0JQh1'(B C-x C-f ,T`09Wi1MKR"M'a0?i1A0"i1M0AY1EaC!(B 0,T!g1(P0BQ1'$'(B +0,T6Y1!`0!g1:0CQ1!IRM0BYh1c9(B Emacs 0,TJTh1'07Uh1`0!g1:0CQ1!IRa0?i1A0"i1M0AY1E07Uh10Mh1R9`0"i1RAR(B 0,T+Vh1'M0BYh1@RBc9(B Emacs ,T`0CU1B!0Gh1R(B +0,T:Q1?`?M0Cl1(B (Buffer) ,T`GER07Uh10Mh1R9a0?i1A0"i1M0AY1EcK0Ah1`0"i1RAR(B Emacs 0,T!g1(PJ0Ci1R'0:Q1?`?M0Cl1cK0Ah1(B 0,T"Vi19AR@RBc9(B + + 0,T6i1R05i1M'!RC(P04Y1CRB!RC"M'0:Q1?`?M0Cl1(B 0,T7Uh106Y1!`0!g1:0CQ1!IRM0BYh1@RBc9(B Emacs 0,T!g1c0Ki1!4$S0JQh1'(B + + C-x C-b + + >> ,TEM'!4(B C-x C-b 0,T4Y1(B 0,TJQ1'`!504Y10Gh1Ra05h1EP0:Q1?`?M0Cl10AU10*Wh1M0Gh1RMPdC(B ,TaEP06Y1!05Qi1'0*Wh1Md0Gi10Gh1R(B + ,TM0Bh1R'dC(B ,Tc9(B Emacs + + 0,TAU1:R'0:Q1?`?M0Cl1(B 0,T7Uh1d0Ah10AU10$Yh10!Q1:a0?i1A0"i1M0AY1E(0CT1'(B ,Tf(B 0,T5Q1GM0Bh1R'`0*h19(B ,Td0Ah10AU1a0?i1A0"i1M0AY1E07Uh10AU10*Wh1M0Gh1R(B "*Buffer +List*" ,TM0BYh1(0CT1'(B ,Tf(B ,Ta05h1`0;g190:Q1?`?M0Cl107Uh1J0Ci1R'0"Vi19AR`0>Wh1MaJ4'CRB!RC0:Q1?`?M0Cl1(B ,Tb4B$S0JQh1'(B C-x C-b + + 0,T"i1M$GRA07X1!0"i1M$GRA07Uh1;CR!/M0BYh1c90GT19b40Gl1"M'(B Emacs 0,T9Qi19(B ,T(PM0BYh1c90:Q1?`?M0Cl1c40:Q1?`?M0Cl1K09Vh1'`JAM(B + + >> ,TEM'!4(B C-x 1 ,T`0>Wh1ME:CRB!RC0:Q1?`?M0Cl1MM!04Y1(B + + ,T!RC`0CU1B!a0?i1A0"i1M0AY1E0MWh190"Vi19ARa0!i1d"(B ,T5M907Uh1!S0EQ1'a0!i1d"a0?i1A0"i1M0AY1EK09Vh1'M0BYh109Qi19(B ,T(Pd0Ah17Sc0Ki1a0?i1A0"i1M0AY1E(B +,TaC!06Y1!`0!g1:0CQ1!IR(B 0,TJTh1'07Uh1a0!i1d"d;c9a0?i1A0"i1M0AY1EaC!(P06Y1!0:Q1907V1!d0Gi1c90:Q1?`?M0Cl1"M'a0?i1A0"i1M0AY1E09Qi19(B ,T`07h1R09Qi19(B + + ,T!RCJ0Ci1R'0:Q1?`?M0Cl1cK0Ah10"Vi19(B ,TJSK0CQ1:a0!i1d"a0?i1A0"i1M0AY1E0MQ1907Uh1JM'(B ,Ta0Ei1Ga0!i1MPdC:R'M0Bh1R'c90:Q1?`?M0Cl109Qi19(B +,T(Pd0Ah10AU1Wh1M(B +,Ta0!i1d"c95M9K0EQ1'(B + + ,Ta05h1`GER07Uh105i1M'!RC(P`0!g1:0CQ1!IR(B (save) 0,T:Q1?`?M0Cl1E'd;c9a0?i1A0"i1M0AY1E(B 0,T4i1GB$S0JQh1'(B C-x C-s 0,T9Qi19(B +,T(P05i1M'J0GT170+l1d;0BQ1'0:Q1?`?M0Cl107Uh105i1M'!RC(P`0!g1:(B 0,T4i1GB$S0JQh1'(B C-x C-f 0,T+Vh1'0$h1M90"i1R'0BXh1'BR!(B ,T`CR0AU1$S0JQh1'0+Vh1'(B +,Tc0*i1JSK0CQ1:!RC09Ui1b4B`)>RP(B 0,T$W1M(B + + C-x s ,T`0!g1:0CQ1!IR(B (save) 0,T7X1!0:Q1?`?M0Cl107Uh10AU1M0BYh1(B + + C-x s ,T(P`0!g1:0CQ1!IR07X1!0:Q1?`?M0Cl107Uh106Y1!a0!i1d"`09Wi1MKRd;(B ,TE'c9a0?i1A0"i1M0AY1E(B ,Tb4B(P6RA0!h1M90Gh1R(Pc0Ki1(B +,T`0!g1:0:Q1?`?M0Cl109Ui1dKA(B y ,TK0CW1M(B n 0,T!Q1:0:Q1?`?M0Cl1a05h1EP0:Q1?`?M0Cl1(B ,T$S6RA(P;CR!/c90Jh1G90Eh1R'"M'K09i1R(M(B 0,T4Q1'(B +0,T5Q1GM0Bh1R'09Ui1(B + + Save file /usr/private/yours/TUTORIAL.th? (y or n) + + + +,T!RC"BRB$S0JQh1'(B (extension) +======================= + + ,Tc9b;Ca!CA(B Editor 0,T9Ui1(B 0,TAU1(S9G9$S0JQh1'AR!!0Gh1R(B ,T(S9G9$S0JQh1'0+Vh1'JRARC6!4d04i1b4B0;Xh1A$M9b7CE(B +,TK0CW1M0;Xh1A(B META ,Td04i1KA4(B ,T$S0JQh1'"BRB(B (eXtend) 0,TAU1d0Gi1`0>Wh1Mc0Ki1JRARC6c0*i1$S0JQh1'`K0Eh1R09Ui1d04i1KA4(B 0,TAU1M0BYh1(B 2 +,Ta::(B 0,T4Q1'09Ui1(B + + C-x ,T"BRB`0>Th1A04i1GB05Q1G0MQ1!IC(B ,TJSK0CQ1:!405Q1G0MQ1!IC5RA`0"i1Rd;(B 1 0,T5Q1G(B + ESC x ,T"BRB`0>Th1A04i1GB0*Wh1M$S0JQh1'(B ,TJSK0CQ1:!40*Wh1M$S0JQh1'5RA`0"i1Rd;07Qi1'KA4(B + + ,T$S0JQh1';CP`@709Ui1(B 0,T!g1`0;g19$S0JQh1'07Uh10AU1;CPbB*09l1(B ,Ta05h10Jh1G9cK0-h1(P06Y1!`0CU1B!c0*i1(B 0,T9i1MB$0CQi1'!0Gh1R$S0JQh1'07Qh1Gd;(B +0,T5Q1GM0Bh1R'`0*h19(B ,T$S0JQh1'KRa0?i1A0"i1M0AY1E(B (find) C-x C-f ,T$S0JQh1'`0!g1:0CQ1!IRa0?i1A0"i1M0AY1E(B (save) C-x C-s +,T$S0JQh1'(B C-x C-c (,T`0ET1!(B Editor) 0,T5h1R'0!g1`0;g19K09Vh1'c9$S0JQh1'`K0Eh1R09Ui1(B + + ,T$S0JQh1'(B C-z ,T`0;g19$S0JQh1'07Uh1c0*i1c9c9!RCMM!(R!(B Emacs 0,T$h1M90"i1R'0:h1MB(B ,T$S0JQh1'09Ui1(Pd0Ah1B!`0ET1!(B +Emacs ,T`EB07U1`04U1BG(B ,Ta05h1(PK0BX14(B Emacs ,Td0Gi10*Qh1G$CRG(B ,T`0>Wh1Mc0Ki1JRARC6!0EQ1:d;c0*i1(B csh ,Td04i10MU1!(B ,T!RC!4(B +C-z 0,T(V1'`0;g19!RCK0BX14(B Emacs ,Td0Gi10*Qh1G$CRG`07h1R09Qi19(B ,T(Pd0Ah17S$GRA`0JU1BKRBc0Ki10!Q1:`09Wi1MKR07Uh1a0!i1d"d;(B + +,TKARB`K05X1(B: ,Ta05h170Gh1R(B ,Tc9!C03U107Uh1c0*i1:9(B X-window ,TK0CW1Mc0*i1(B sh ,TM0BYh1(B 0,T!g1(Pd0Ah10AU1$GRAJRARC609Ui1(B + + + ,T$S0JQh1';CP`@7(B C-x 0,TAU1AR!ARBKERB$S0JQh1'(B ,T$S0JQh1'07Uh1M08T1:RBd;a0Ei1G0AU104Q1'09Ui1(B + + C-x C-f ,TKRa0?i1A0"i1M0AY1E(B (find) ,TJSK0CQ1:a0!i1d"(B + C-x C-s ,T`0!g1:0CQ1!IRa0?i1A0"i1M0AY1E(B (save) + C-x C-b ,TaJ4'CRB!RC0:Q1?`?M0Cl1(B (buffer list) + C-x C-c ,T`0ET1!!RCc0*i1(B Editor ,TaEP`0!g1:0CQ1!IRa0?i1A0"i1M0AY1Eb4B0MQ15b90AQ105T1(B ,Ta05h106i1RKR!0AU1a0?i1A(B + 0,T"i1M0AY1E:R'0MQ1906Y1!a0!i1d"(B 0,T!g1c0Ki16RA0Gh1R(P`0!g1:0CQ1!IRa0?i1A0"i1M0AY1E09Qi19dKA(B ,Tb4B07Qh1Gd;(B + ,T!RCMM!(R!(B Emacs ,T7Sd04i1b4B$S0JQh1'(B C-x C-s C-x C-c 0,T$W1Mc0Ki1`0!g1:0CQ1!IR(B + 0,T!h1M9a0Ei1G0(V1'`0ET1!(B + + ,T$S0JQh1'"BRB`0>Th1Aa::0*Wh1M09Qi19(B ,Tc0*i1JSK0CQ1:$S0JQh1'07Uh1d0Ah10$h1MBd04i1c0*i1(B ,TK0CW1M$S0JQh1'07Uh1c0*i1`)>RP0!Q1:bKA40>T1`HI:R'(B +,TbKA4(B 0,T5Q1GM0Bh1R'`0*h19(B ,T$S0JQh1'(B "command-apropos" 0,T+Vh1'(P6RA(B 0,T$U10Bl1`0GT10Cl14(B (keyword) ,Ta0Ei1GaJ4'> ,TEM'!4(B ESC x ,T5RA04i1GB(B "command-apropos" ,TK0CW1M(B + "command-a" ,TK0EQ1'(R!09Qi190!g1!4(B "kanji" 0,T4Y1(B + + ,Tc0Ki1!4(B C-x 1 ,T`GER05i1M'!RC(PE:(B "0,TGT19b40Gl1(B" 0,T7Uh1b<0Eh10"Vi19ARcK0Ah1(B + +,T:CC07Q14bKA4(B (Mode Line) +===================== + + ,T`GER07Uh10>T1A0>l1$S0JQh1'`0"i1Rd;0*i1R(B ,Tf(B Emacs ,T(PaJ4'0JTh1'07Uh10>T1A0>l1E'd;5C':CC07Q140Eh1R'0JX14"M'(M0+Vh1'`0CU1B!(B +0,TGh1R(B echo area ,T:CC07Q140+Vh1'M0BYh106Q140"Vi19ARK09Vh1':CC07Q14(B ,T`0CU1B!0Gh1R:CC07Q14bKA4(B (mode line) ,T:CC07Q14(B +,TbKA40AU10EQ1!I3P04Q1'09Ui1(B + + + [--]J:--**-Mule: TUTORIAL.th (Fundamental) ---NN%-------------- + + +,TKARB`K05X1(B: ,T5C'0Jh1G9(B NN ,T"M'(B NN% ,T(P0AU105Q1G`E"c0Jh1M0BYh1(B ,T:CC07Q14bKA407Uh1aJ4'M0BYh1MR((Pa5!05h1R'(B + ,Td;(R!05Q1GM0Bh1R'0:i1R'(B ,Ta05h10!g1d0Ah1`0;g19dC(B 0,T5Q1GM0Bh1R'`0*h19(B ,TMR((P0AU1`GERK0CW1M(B uptime + ,TaJ4'D05T1!CCA07Uh1a5!05h1R'0!Q19b4B0JTi19`0*T1'(B ,T`0AWh1MM0BYh1c9bKA4K0EQ1!07Uh105h1R'0!Q19(B 0,T5Q1GM0Bh1R'(B +,T`0*h19(B ,T`GERb;Ca!CA@RIR(B ,T(P0AU1$S0JQh1'JSK0CQ1:J0Ci1R'(B ,TKARB`K05X1(B (comment) ,TM0BYh1(B ,T`09Wh1M'(R!0GT108U1c0Jh1(B +,TKARB`K05X1"M'@RIRa05h1EP@RIRa5!05h1R'0!Q19(B ,T$S0JQh1'09Ui10!g1(Pa5!05h1R'0!Q19d;c9a05h1EPbKA4K0EQ1!(B ,T`0>Wh1Mc0Ki1(B +,TJRARC6c0Jh1KARB`K05X1c9a05h1EP@RIRd04i1M0Bh1R'06Y1!05i1M'(B + + ,T$S0JQh1'JSK0CQ1:!RC`;0EUh1B9bKA4c0Ki1`0;g19bKA4K0EQ1!0MWh19(B 0,T$W1M$S0JQh1'"BRB(B (extend) 0,T+Vh1'0*Wh1M$S0JQh1'`0;g190*Wh1M(B +,TbKA4(B 0,T5Q1GM0Bh1R'`0*h19(B ,T$S0JQh1'(B M-x fundamental-mode 0,T$W1M$S0JQh1'JSK0CQ1:`;0EUh1B9bKA4`0;g19bKA4(B +Fundamental + + ,T`GER07Uh1(Pa0!i1d"a0?i1A0"i1M0AY1E@RIR0MQ1'!DI(B 0,T!g1c0Ki1c0*i1(B Text mode + + >> ,TEM'0;i1M9$S0JQh1'(B M-x text-mode + + 0,T6i1R05i1M'!RCKR0"i1M0AY1E`0>Th1A`0!Uh1BG0!Q1:bKA4K0EQ1!07Uh1c0*i1M0BYh1c90;Q1(0(X10:Q19(B 0,T!g1c0Ki10;i1M9$S0JQh1'(B C-h m + + >> ,Tc0Ki1!4(B C-h m ,T`0>Wh1M0HV1!IR0"i1Ma5!05h1R'CPK0Gh1R'(B Text mode 0,T!Q1:(B Fundamental mode + + >> ,Tc0Ki1!4(B C-x 1 ,T`0>Wh1ME:`M!JRCMM!(R!(M(B + + ,T5C'0Jh1G90+i1RB"M':CC07Q14bKA4(B ,T(P0AU10JQ1-0EQ1!I03l1(B '[--]' ,T`0>Wh1MaJ4'bKA4JSK0CQ1:!RC0;i1M90"i1M0AY1E(B +(input mode) ,TM0BYh1(B 0,TJQ1-0EQ1!I03l1(B [--] ,TKARB06V1'JRARC60;i1M90"i1M0AY1Ed04i104i1GB05Q1G0MQ1!IC@RIR0MQ1'!DI(B +(English alphabets) ,T!0CX13R0Mh1R90$Yh10AW1M"M'(B "Tamago" ,TJSK0CQ1:CRBEP`0MU1B4"M'0GT108U1c0*i1(B + + ,TaEP5C'04i1R9"GR"M'0JQ1-0EQ1!I03l109Qi19(B ,T(P0AU1`$0CWh1M'KARBaJ4'J6R9P"M'(B flag ,T"M'CP::C0KQ1J(B +(coding-system) ,TM0BYh1(B Mule ,TJRARC6!SK94CP::C0KQ1JaB!`)>RPJSK0CQ1:(B ,T!RC`0!g1:0Mh1R9a0?i1A0"i1M0AY1E(B +,T!RC0;i1M90"i1M0AY1E(R!0$U10Bl1:M0Cl14(B ,T!RCaJ4'RP(B +0,TJQ1-0EQ1!I03l10*h1GB(S(B (mnemonic) ,T"M'CP::C0KQ1JJSK0CQ1:!RC`0!g1:0Mh1R9a0?i1A0"i1M0AY1E(B ,T`07h1R09Qi19(B + + >> ,T5CG(04Y10Gh1R0AU10JQ1-0EQ1!I03l1(B ,T$0Ei1RB$0EV1'0!Q1:(B "J:" "S:" "E:" ,TaJ4'M0BYh107Uh1:CC07Q14bKA4K0CW1Md0Ah1(B + + 0,T5Q1G0MQ1!IC05Q1GaC!0$W1M(B 0,TJQ1-0EQ1!I03l10*h1GB(S(B (mnemonic) ,T"M'CP::C0KQ1J07Uh1c0*i1M0BYh1(B 0,T5Q1G(B ':' ,TaJ4'c0Ki10CYi1(B +0,TGh1R0AU105Q1G0MQ1!IC"M'@RIR0MWh19(B ,T9M!(R!@RIR0MQ1'!DIaJ4'M0BYh1(B (,T`0*h19(B ,T@RIR0(U19(B ,T@RIR0-Uh10;Xh19(B ,T`0;g1905i19(B) 0,T5Q1G(B J +,TKARB06V1'(B ,TC0KQ1J07Uh1c0*i10!Q1:(B JUNET 0,T$W1M(B ,TC0KQ1J(B JIS 0,T5Q1G(B S ,TKARB06V1'(B Shift-JIS ,TaEP(B 0,T5Q1G(B E ,TKARB06V1'(B +,TC0KQ1J(B EUC ,T@RIR0-Uh10;Xh19(B ,T(PJ0EQ1:`;0EUh1B9(B (toggle) ,T!RCaJ4'> ,TEM'0;i1M9$S0JQh1'(B C-x C-k t 0,T4Y1JM'$0CQi1'(B + + 0,T6i1R`7M0Cl10AT109Q1E07Uh1c0*i1M0BYh10AU10;Xh1A(B META ,TaEPbKA407Uh1c0*i1M0BYh1`0;g19C0KQ1J(B JIS ,T`CR0!g1(PJRARC6c0*i10;Xh1A(B META +,Ta79!RC!40;Xh1A(B ESCAPE ,Td04i1(B 0,TGT108U1c0*i1(P`K0AW1M90!Q1:!RCc0*i10;Xh1A$M9b7CE(B 0,T$W1Mc0Ki1!40;Xh1A(B META 0,T$i1R'd0Gi1a0Ei1G0(V1'(B +,T!405Q1G0MQ1!IC5RA(B M-<0,T5Q1G0MQ1!IC(B> ,T(P7SK09i1R07Uh1`K0AW1M90!Q1:(B ESC <0,T5Q1G0MQ1!IC(B> 0,T9Qh190$W1M(B 0,T7X1!M0Bh1R'07Uh1M08T1:RBAR(B +,T(906V1'0(X1409Ui1(B ,T(P0BQ1'$'0AU1 ,Tc0Ki1`0;g19(B M-<0,T5Q1G0MQ1!IC(B> ,Ta05h10"i1M(B +,T$GCCP0GQ1'0!g10$W1M(B 0,T;Xh1A(B META ,T(Pd0Ah1JRARC6c0*i1d04i10!Q1:C0KQ1J(B Shift-JIS ,TaEP(B EUC + + ,T!RC`;0EUh1B9CP::C0KQ1J(P0AU1U1B'0!Q1:a05h1EP0:Q1?`?M0Cl1`07h1R09Qi19(B ,TJRARC604Y1$S0JQh1'`0!Uh1BG0!Q1:CP::C0KQ1J(B +,Td04i1b4B$S0JQh1'(B C-h a coding-system + + >> ,Tc0Ki10;i1M9$S0JQh1'(B C-h a coding-system ,Ta0Ei1G0Mh1R9CRBEP`0MU1B4"M'$S0JQh1'(B + set-display-coding-system set-file-coding-system ,TaEP(B + set-process-coding-system ,T(R!`M!JRC07Uh1;CR!/0"Vi19(B + +,T!RC0$i19KR(B (search) +================ + + Emacs ,TJRARC60$i19KRJRB0MQ1!"CP(B (string) ,T@RBc9a0?i1A0"i1M0AY1Ed;7R'0"i1R'K09i1RK0CW1M0"i1R'K0EQ1'd04i1(B +0,T6i1R05i1M'!RC0$i19KRd;7R'0"i1R'K09i1R"M'5SaK09h1'`$M0Cl1`+M0Cl1(B (cursor) 0,T!g1c0Ki1!4(B C-s 0,T6i1R05i1M'!RC0$i19KR(B +,Td;7R'0"i1R'K0EQ1'"M'5SaK09h1'`$M0Cl1`+M0Cl1(B 0,T!g1c0Ki1!4(B C-r ,TK0EQ1'(R!09Qi19(P0AU10"i1M$GRA0Gh1R(B "I-search:" +,T;CR!/0"Vi195C'(B echo area ,TB!`0ET1!!RC0$i19KRd04i104i1GB!RC!4(B ESC + + + >> ,T!4(B C-s ,T`0>Wh1M`0CTh1A!RC0$i19KR(B ,Ta0Ei1G!405Q1G0MQ1!IC"M'$S0Gh1R(B "cursor" ,TE'd;07U1EP05Q1GM0Bh1R'(B + 0,T*i1R(B ,Ta0Ei1G0JQ1'`!504Y10Gh1R`$M0Cl1`+M0Cl1"0BQ1:d;M0Bh1R'dC(B + + >> ,TEM'!4(B C-s 0,T4Y10MU1!K09Vh1'$0CQi1'`0>Wh1M0$i19KR$S0Gh1R(B "cursor" 0,T5Q1G05h1Md;(B + + >> ,T!4(B 0,T4Y1(B 4 ,T$0CQi1'(B ,Ta0Ei1G0JQ1'`!504Y10Gh1R!RC`$0EWh1M907Uh1"M'`$M0Cl1`+M0Cl1(B + + >> ,T!4(B ESC ,T`0>Wh1MB!`0ET1!!RC0$i19KR(B + + ,T!RC0$i19KR(P`0CTh1A0"Vi1907Q1907U1(B ,Tc9CPK0Gh1R'07Uh10>T1A0>l1JRB0MQ1!"CP07Uh105i1M'!RC(P0$i19KR(B ,T`0"i1Rd;`0>U1B':R'0Jh1G9(B +0,T6i1R05i1M'!RC(P0$i19KR05Q1G05h1Md;(B 0,T!g1c0Ki1!4(B C-s 0,TMU1!K09Vh1'$0CQi1'(B 0,T6i1RKR!0$i19KRJRB0MQ1!"CP07Uh10;i1M9`0"i1Rd;d0Ah1>:(B 0,T!g1(B +,T(P0AU10"i1M$GRA;CR!/0"Vi19(B ,Tc0Ki1!4(B C-g ,T`0>Wh1MB!`0ET1!(B + + ,TCPK0Gh1R'07Uh10$i19KRM0BYh1(B 0,T6i1R!4(B 0,T5Q1G0MQ1!IC05Q1G0JX1407i1RBc9JRB0MQ1!"CP0!g1(P06Y1!E:d;(B ,Ta0Ei1G(B +,T`$M0Cl1`+M0Cl10!g1(P!0EQ1:d;5SaK09h1'0!h1M9K09i1R(B 0,T5Q1GM0Bh1R'`0*h19(B 0,T6i1R!4(B "cu" 0,T!g1(P0$i19KRd;06V1'5SaK09h1'07Uh10AU1$S0Gh1R(B +"cu" ,Ta05h106i1R!4(B ,Tc90(Q1'KGP09Ui1(B 0,T5Q1G(B 'u' ,Tc9(B search line 0,T!g1(PKRBd;(B ,Ta0Ei1G`$M0Cl1`+M0Cl1(B +,T(P"0BQ1:!0EQ1:d;07Uh15SaK09h1'07Uh10AU105Q1G(B 'c' ,TM0BYh1(B + + 0,T6i1R!405Q1G0MQ1!IC$M9b7CE(B (control character) 0,T5Q1G0MWh19(B ,T9M!`K09W1M(R!(B C-s ,TK0CW1M(B C-r +,T!RC0$i19KR0!g1(P0JTi190JX14E'(B + + ,T$S0JQh1'(B C-s ,T(P0$i19KRJRB0MQ1!"CP07Uh105i1M'!RC(B ,Td;7R'0"i1R'K09i1R"M'5SaK09h1'`$M0Cl1`+M0Cl1(B 0,T6i1R05i1M'!RC(B +0,T$i19KRd;7R'07T1HK0EQ1'(B 0,T!g1c0Ki1!4(B C-r 0,T9Qh190$W1M(B ,TJRARC6c0*i1(B C-s ,TaEP(B C-r ,TJ0EQ1:0!Q19`0>Wh1M0$i19KRd;d04i1c907Qi1'(B +,TJM'07T1H7R'(B C-s ,TaEP(B C-r ,T7SK09i1R07Uh1`K0AW1M90!Q1907X1!;CP!RC(B ,T(P05h1R'0!Q190!g15C'07T1H7R'!RC0$i19KR`07h1R09Qi19(B + +Recursive Editing Level + + ,T:R'07U1(B ,T`CRMR((PK0EX14`0"i1Rd;M0BYh1c9J6R9P07Uh1`0CU1B!0Gh1R(B Recursive Editing Level ,Td04i1b4B(B +,Td0Ah105Qi1'c((B ,Tc9bKA409Ui1(B ,T`$0CWh1M'KARBG'`0Eg1:(B '()' 0,T7Uh1aJ4'0*Wh1MbKA4K0EQ1!(B (major mode) ,TM0BYh1(P0AU1G'`0Eg1:(B +'[]' 0,TEi1MA(B ,T`0>Th1A0"Vi190MU1!K09Vh1'0*Qi19(B 0,T5Q1GM0Bh1R'`0*h19(B 0,T6i1R`04T1A`0;g19(B (Fundamental) ,TM0BYh1(B 0,T!g1(P`;0EUh1B9`0;g19(B +[(Fundamental)] ,Ta79(B + +,TKARB`K05X1(B: ,T`CR(Pd0Ah1M08T1:RB`0!Uh1BG0!Q1:(B Recursive Editing Level ,Tc907Uh109Ui1(B + + ,Tc0Ki1!4(B M-x top-level ,T`0>Wh1M07Uh1(PMM!(R!(B Recursive Editing Level + + >> ,TEM'!404Y1(B ,T5C'0Jh1G90Eh1R'"M'(M(P0AU10"i1M$GRA0Gh1R(B "Back to top level" ,T;CR!/0"Vi19(B + + ,T`09Wh1M'(R!(B ,T`CRM0BYh1c9CP04Q1::90JX14(B (top level) ,TM0BYh1a0Ei1G(B ,T$S0JQh1'09Ui10(V1'd0Ah10AU1Wh1M07Uh1(PMM!(R!(B Recursive Editing Level ,Td04i1(B + + +Help +==== + + Emacs 0,TAU1$GRAJRARC607Uh10AU1;CPbB*09l1(B ,TAR!ARBKERBM0Bh1R'(B 0,T+Vh1'd0Ah1JRARC6M08T1:RBd04i1KA4c907Uh109Ui1(B +,Ta05h1`CR(PJRARC6`0CU1B!c0*i1(B ,T`0>Wh1M07Uh1(P`0CU1B90CYi1$GRAJRARC6`K0Eh1R09Ui1(B ,Td04i1b4B!RC!4(B C-h 0,T+Vh1'(P(B +0,T*h1GBc0Ki1`CRd04i10CQ1:0CYi10"i1M0AY1E`0>Th1A`05T1AKERBM0Bh1R'(B + + 0,TGT108U1c0*i10$W1Mc0Ki1!4(B C-h ,Ta0Ei1G5RA04i1GB05Q1G`0EW1M!(B (option) 0,TMU1!K09Vh1'05Q1G0MQ1!IC(B 0,T6i1Rd0Ah10CYi10Gh1R(P05i1M'c0*i1(B +0,T5Q1G`0EW1M!MPdC(B 0,T!g1c0Ki1!4(B C-h ? ,Ta0Ei1G(P0AU1$SM08T1:RB`0!Uh1BG0!Q1:05Q1G`0EW1M!;CR!/0"Vi19(B ,Td04i1KR!`;0EUh1B9c((P(B +,Td0Ah1`0CU1B!(B HELP ,TK0EQ1'(R!!4(B C-h 0,T!g1c0Ki1!4(B C-g ,T`0>Wh1MB!`0ET1!d04i1(B + + ,T$S0JQh1'(B HELP 0,T>Wi190R907Uh10JX140MQ19K09Vh1'0!g10$W1M(B C-h c ,Ta0Ei1G5RA04i1GB!RC!4$S0JQh1':R'$S0JQh1'(B 0,T+Vh1'(Pc0Ki1$S(B +,TM08T1:RB0JQi19(B ,Tf(B ,T`0!Uh1BG0!Q1:$S0JQh1'09Qi19(B + + >> ,TEM'!4(B C-h c C-p 0,T4Y1(B 0,T+Vh1'(Pc0Ki10"i1M$GRA0Gh1R(B + "C-p runs the command previous-line" + + ,T$S0JQh1'09Ui1(P0*h1GB0CWi1M0?Wi19$GRA(S(B ,T`0!Uh1BG0!Q1:$S0JQh1'07Uh1`$B0> ,TEM'!4(B C-h k C-p 0,T4Y1(B + + 0,T!g1(P0AU10GT19b40Gl1`0>Th1Ac9(B Emacs 0,TMU1!K09Vh1'0MQ19(B ,T`0>Wh1MaJ4'CRBEP`0MU1B4"M'$S0JQh1'09Qi19(B ,T`0AWh1M0Mh1R9(:a0Ei1G(B +0,T!g1c0Ki1!4(B C-x 1 ,T`0>Th1AE:0GT19b40Gl1MM!(B + + 0,T5Q1G`0EW1M!0MWh1907Uh10AU1;CPbB*09l1(B 0,TAU104Q1'09Ui1(B + + C-h f ,Tc0Ki1c0Jh10*Wh1M"M'$S0JQh1'(B ,T`0>Wh1MaJ4'CRBEP`0MU1B4`0!Uh1BG0!Q1:$S0JQh1'09Qi19(B + + >> ,Tc0Ki1!4(B C-h f previous-line ,Ta0Ei1G5RA04i1GB(B ,T`0>Wh1MaJ4'CRBEP`0MU1B4`0!Uh1BG(B + 0,T!Q1:$S0JQh1'0+Vh1'`0CU1B!c0*i1d04i1(R!!RC!4(B C-p + + C-h a ,Ta0Ei1G5RA04i1GB0$U10Bl1`0GT10Cl14(B (keyword) ,T`0>Wh1MaJ4'$S0JQh1'07X1!$S0JQh1'(B 0,T7Uh10AU10$U10Bl1`0GT10Cl14(B ,TCGAM0BYh1(B + ,T$S0JQh1'`K0Eh1R09Ui1JRARC6`0CU1B!c0*i1d04i1b4B!RC!4(B ESC x + + >> ,TEM'!4(B C-h a file ,Ta0Ei1G5RA04i1GB(B ,T`0>Wh1MaJ4'0*Wh1M$S0JQh1'07X1!$S0JQh1'07Uh10AU1$S0Gh1R(B + "file" ,TCGAM0BYh1(B 0,T+Vh1'(P0AU1(B find-file ,TaEP(B write-file 0,T7Uh1`0CU1B!c0*i1d04i1b4B!RC!4(B + C-x C-f ,TaEP(B C-x C-w ,TCGAM0BYh104i1GB(B + +0,T7i1RB0JX1409Ui1(B +====== + +,TM0Bh1R0EW1A(B: ,T$S0JQh1'JSK0CQ1:!RC`0ET1!(B Emacs 0,T$W1M(B C-x C-c + + + ,T`M!JRC)0:Q1:`0:Wi1M'05i1909Ui1(B 0,T5Qi1'c(`0"U1B90"Vi19JSK0CQ1:0RP(B 0,T6i1RKR!0AU10(X14dK907Uh1d0Ah1(B +,T`0"i1Rc((B 0,T!g1M0Bh1R0AQ1Ga05h1b7I05Q1G`M'(B ,Ta05h1"Mc0Ki1bB9$GRA0RP(B +,TM0Bh1R'0BTh1'0!Q1:(B EMACS ,T`09Wh1M'(R!`0;g19b;Ca!CA07Uh10AU1$GRAJRARC6KER!KERBAR!(B 0,TMQ1907Uh1(0CT1'a0Ei1G(B EMACS +,T7Sd04i107X1!0JTh1'07X1!M0Bh1R'(B + + + +,T"M"M:0$X13(B +======= + ,T`M!JRC)0:Q1:09Ui1(B 0,T4Q14a;E'AR(R!(B "MicroEMACS (kemacs) ,T@RIR0-Uh10;Xh19(B ,T`0:Wi1M'05i19(B" 0,T+Vh1'd04i1AR(R!(B +JUNET ,T`0>Wh1Mc0Ki1c0*i1`0;g19(B Tutorial ,TJSK0CQ1:(B GNUEmacs (Nemacs) + + ,T`M!JRC09Ui1(B 0,T4Q14a;E'AR(R!(B "JOVE Tutorial" (19 ,TA!CR$A(B 86) ,T"M'(B Jonathan Payne + 0,T+Vh1'04Q14a;E'AR(R!`M!JRC"M'(B Steve Zimmerman ,Ta0Kh1'(B CCA-UNIX 0,T+Vh1'04Q14a;E'(B (0,TMU1!07U1(B) ,TAR(B + ,T(R!`M!JRC(B "Teach-Emacs" ,T)0:Q1:`0:Wi1M'05i19(B (31 0,T5X1ER$A(B 85) ,T"M'(B MIT + + Update - February 1986 by Dana Hoggatt. + + Update - December 1986 by Kim Leburg. + + Update/Translate - July 1987 by SANETO Takanori + +,T"M"M:0$X13`0;g190>T1`HI(B +============== + + 0,T$X13(B SANETO Takanori (,T+R`9b5P(B ,T7R!Rb90CT1(B) 0,TER4(B 0,T"i1M0AY1E`07g1((B ,TaEP0MWh19(B ,Tf(B ,Td0Gi1a05h1`0>U1B'0 +# Run temacs as XEmacs +function runtemacs +{ + if [ ! -x temacs ]; then + echo "Must be in temacs source directory to run temacs." + return 1; + fi + + ./temacs -batch -l loadup.el run-temacs "$@" +} + +# From Adrian Aichner +# Convenience function for running build-report +function mak +{ + make "$@" 2>&1 | tee beta.err +} +# export -f mak + +# From Karl Hegbloom +# igrep from the shell command line +function listargs +{ + for arg in "$@"; do + echo " \"$arg\"" + done +} + +function igrep +{ + exp="$1"; shift + gnudoit -q "(igrep nil \"$exp\" '($(listargs "$@")))" +} diff --git a/etc/cbx.png b/etc/cbx.png new file mode 100644 index 0000000000000000000000000000000000000000..6d2cde96818b0bd825b2a84955dffeecc280c0c7 GIT binary patch literal 3412 zcmV-a4Xg5rP)b&x|x&eazfnbX=I5@j0Dd|K+9dW-? z0000ubVXQnQ*UN;cVTj609aNaR%LQ?X>V>IGcGYOVIUwL@!EQ|Zlb-q$cJ1N5`FQ{GTlc3>FtmAcRcm(}2|GdY>P{k)6{YX;imSuB)h0z-x{d&cdANb+qGb!;m_siShRZm^- zWbKo;n0k-Dr+1KfV~qJvu&(c$ZJy_4lPmM?1e3PgZGK_xRa55Y+ot>ixld(&dr>yq z&&JRh%CgMQ4DDIw1I#RWyv(=g-c~(W#t^w^aWKrl#QC?kO_N_Ly9Zd0TWG(V?Zt5x z-fRb6+s~M^$|jeS@E*O3aL_c{OJz>W?Uyg;9y$9KTjaN^mB!LPoBTLVFmUK@nsP8X zCL>mv>iH-!uf9}p$b*;502TK zl)$ozR_uvx=FDe^6jgw&V8Zg`1Pb2XW?!59$m0~{pvY9xlo5sAR@LNtvz<5t{;w_} z7(%q>MSOV*>%KhCLZ+RI8N)g(iV$`D0c#GVs~1>Kn}(!6V6Latw|IsUL|e(j_iL*uk05sX$vI~+@q7{-COu$>X*HR= zIWNKwQvBqk*&epA!tvQD@g`pZ;QKd4g_lQF2Fnk~h^9+xBva72pd)7~u;rJLyrLg@ z_EDZ(_}~f?zF2#DPj)$=NfsMj9Q^uDpnt$l2j3e~1+@RQDZgX*y)mHD_lsY@n(~rF z%3mLNSBBN%`bi7^!dkavIWqeo%QDwyzJ0J#eE9(ff^!YNDNKWtf!?Izw=~=^L61)` zidWmgrMKp$B>DWkweNmyMa0LmA0$mqykg2HSf}LJL{OlDN$fpooP5=EhJM8p*X9@$ z8XO*Lug|_*9NymEUOKp$J-!$W2DeASXZq}5FgRQt9Ud0o{PnkUh#z^atvfi+;g*vS zo%$!w!Lik<2s$YXYpC}Zs})u}gs)>NLRWrN2(wbwdp*h@Oz;WknX>@x8FoM?;!2oAl5OIKxu9w-=Pcuif!HKcKl$DLS$MMOrr zDpgGM66w+KdOZA*vO~UVZJ3Ib4&O6wbsq7&^+sE=bYtswX=Ba)$uDLY`}W{=CDdBC zV?AGd3Ck_JMqXl5S7VZw?oQwlP4#zMzX0eXg#_V*knog3O&&-9>p)=Q5wd!a8W_vm=w`xpgw6%t~cux)0u29V1eni zY#o%MDQ>=4j0$I+aas$MQKmCr6)crmxIy$_G)Mym5d+CzNJ9$i8|!JA=pls_@Ses% zM~_=XbUar(t2L=pF+^Z?+4LDKoJL?p;l2k9WJc}Do#y;z8e`Bn?1m7!jJ7Zo1tOFK z{FaO_Cd76izk#1dCE5ZYxH*11+_^}>6!RRTRmO3I+XsvEC5EdqEJVs0WwAoUglz=y zsDk=|S?dknQDtJ2=gMD2$6j|XkY4h3Pd%u8v|S;d__xOsF}UR2ryh>)urs0-1u{%t zCL8)F5#n(%%e=E4vD0ni<+U>n*cXHAF7KELR>O>rRa^8{j8zbKkX~XD6~}UM#1Zly_N^;;eb7js3bfYFdvaR@JHP~mmrK{f zfSg9p6#RFCN<+vdh$KNQ_3Cw4LhYJSAst5Xdr*mC6{wPoUJM=81zB7^*7asSN2uV? zGLM-5NP4Y1N^7?MQqSk}MV1D2JzpUBZA95Lbv&Ne^c7VgD*JQJs30ao%TQ-XiQ!BCNMrW~pl1-yyz zU@!d5DD1tgAbJRfh*mpPiE(pkv_3^a<|)UyakarISfCyc70b>dF84fbTtMp#YZx)e zErtWDCu(dYva^he zF98_6o-;m*d5_}g(Wk@93RE3#;M>kT2@tYByLJlng(M85JM#IIc~JBEIcFeEY0wy6 z{BbXEfM3PQ7S0a$EdfI(j1Ls5yz07nr3mM8+KSmo_1)MR?*p2DKtIaRns2hljQ z%TXdu;Q=*grI+N7n#_SIwSdW-tUj80y%Y#YOplTm5P^LgiUsM^d#=n;u0}r3V(y6) z2sb@gQqECXg3(8ELtccSuc@AND!BnFeXl%VaRp65VlHr_)1B$-7DB5w7^)Usd#4j- zS{o=pwiKx64rJn@=w)GpSP0ctLZnKkYaEUtb{%F^9qPptx{~zbQbvkNM}%SCLTHs0 zrTSotJ+|PvVCA|zxl_&dGW&~WkK+kp7Sq_>Js`2%Bh> zhKAm!6hQ@tm>S1({lqD12=+-CxQknB6DgwDWDxJ##1$7UWi3}f;J{{R+A@gt6CG7O z8)_#!(YI{k%v@N$|mqdsv8MN3J(FE1XTeR z7?>HWT0#Xm$S^}#6urjUwbsm}5{KAQJQ~EKE1KG%)4OBC_XM%_= zlNCqPwlEE_2S*d^IHG%LofING9~B*^eLWJA!J2U?ybH@kXw{2gZ0m8cCTHUN(}v@& zdI^hkHA1eV_}`Y!nqaMM7asUHQWFg6dNFU6xa;F!K_Yoeqb?8CrnRhN+JR7wA3Fz)T)!4Notolz*o* z$nnEeNOd!m0`Lw5LG&|49x@(Plt%3uy2k~0RM3Bg;c_`1(w!66<*5A=ZnfbQ;3_jY#;)$-8s=4NlXi{X+|LH|}jR-6SlWl;uWHjN!HR)9e^>h# q(%SjhXpfPH00007bV*G`2hIc@6($OsmRP9(0000 /etc/passwd + else + mkpasswd -l > /etc/passwd + fi + else + echo "Please enter your userid e.g. andyp" + read userid junk + echo "Please enter your user name e.g. Andy Piper" + read username junk + echo "Administrator::500:513:::/bin/sh" > /etc/passwd + echo "$userid::1000:513:$username::/bin/sh" >> /etc/passwd + fi + fi + else + echo "you have /etc/passwd" + userid=`id | sed -e "s/[^(]*(\([^)]*\)).*/\1/"` + fi + + echo "userid is $userid" + + if [ ! -f "/etc/group" ]; then + echo -n "You don't have /etc/group - create it?" + if yorn; then + if [ "$OS" = "Windows_NT" ] + then + echo -n "Running on NT, create domain or local group file [d/l] " + read DL junk + if [ "$DL" = "d" ] + then + mkgroup -d > /etc/group + else + mkgroup -l > /etc/group + fi + else + echo "None::513:" > /etc/group + echo "Everyone::0:" >> /etc/group + fi + fi + else + echo "you have /etc/group" + fi + + if [ ! -f "/etc/hosts" ]; then + echo -n "You don't have /etc/hosts - create it?" + if yorn; then + mname=`uname -n` + echo "Machine name is $mname" + echo -n "Please enter your ip address " + read mipaddr junk + echo "$mname $mipaddr" > /etc/hosts + echo "localhost 127.0.0.1" >> /etc/hosts + fi + else + echo "you have /etc/hosts" + fi +else + echo "Can't create /etc files because /etc does not exist" +fi + +echo "checking environment ..." + +if [ "$HOME" = "" ]; then + echo -n "HOME is not set, rectify?" + if yorn; then + if [ "$OS" = "Windows_NT" ] + then + echo "please enter your home path [/winnt/profiles/$userid]" + read HOME junk + if [ "$HOME" = "" ]; then + HOME="/winnt/profiles/$userid" + fi + else + echo "please enter your home path [/]" + read HOME junk + if [ "$HOME" = "" ]; then + HOME="/" + fi + fi + + echo "HOME=$HOME; export HOME" >> $HOME/.bashrc + fi +else + echo "HOME is $HOME" +fi + +if [ "$TERM" != "ansi" -a "$TERM" != "linux" ]; then + echo -n "TERM is not set to linux or ansi, rectify?" + if yorn; then + echo "TERM=linux; export TERM" >> $HOME/.bashrc + fi +else + echo "TERM is $TERM" +fi + +if echo $CYGWIN32 | grep -w tty; then + echo "CYGWIN32 is $CYGWIN32" +else + echo "CYGWIN32 does not contain \"tty\" terminal may be deficient" +fi diff --git a/etc/ctags.1 b/etc/ctags.1 new file mode 100644 index 0000000..1eab02f --- /dev/null +++ b/etc/ctags.1 @@ -0,0 +1 @@ +.so man1/etags.1 diff --git a/etc/custom/check0.xpm b/etc/custom/check0.xpm new file mode 100644 index 0000000..9b342ed --- /dev/null +++ b/etc/custom/check0.xpm @@ -0,0 +1,17 @@ +/* XPM */ +static char * check0_xpm[] = { +"11 11 3 1", +" c #E6E6E6E6E6E6", +". c #737373737373", +"X c #BFBFBFBFBFBF", +" ", +" .", +" XXXXXXX..", +" XXXXXXX..", +" XXXXXXX..", +" XXXXXXX..", +" XXXXXXX..", +" XXXXXXX..", +" XXXXXXX..", +" .........", +" .........."}; diff --git a/etc/custom/check1.xpm b/etc/custom/check1.xpm new file mode 100644 index 0000000..19d06d9 --- /dev/null +++ b/etc/custom/check1.xpm @@ -0,0 +1,17 @@ +/* XPM */ +static char * check1_xpm[] = { +"11 11 3 1", +" c #737373737373", +". c #E6E6E6E6E6E6", +"X c #22228B8B2222", +" ", +" .", +" XXXXXXX..", +" XXXXXXX..", +" XXXXXXX..", +" XXXXXXX..", +" XXXXXXX..", +" XXXXXXX..", +" XXXXXXX..", +" .........", +" .........."}; diff --git a/etc/custom/choose-down.png b/etc/custom/choose-down.png new file mode 100644 index 0000000000000000000000000000000000000000..2eed2029839726db161fd9df45f6522b6668d60c GIT binary patch literal 497 zcmVA00004XF*Lt006O% z3;baP0000mP)t-s0s;hzii<`@N65&@YiMe&uB_wZoL5&@xw*Lc z`S%nQ6+1gTe}QWe0000ubVXQnQ*UN;cVTj609aNaR%LQ?X>V>IGcGYOVIUwvZ1D(B$WBSC9f%n1WQGJ9STJ)tah) zxf767xY&MIlV)h-oFgy=a;c#K5o!@yYN5ZhOarb8y$?`QY6B^N`65m<)cuB9g!1Fi zr%tAF_k|Pk#j=`#j&Ok~h+zNzCPOVk?ccw@arGRRis~;u`mh+Nz!edat8z~*i&_@C z^jgd+ThpjzsZonB13ijR5Myi_dKd_SRIp8GurW~JC{O_jaX~;q8eWjV&_+N30M1hP n9gO<$uK)l52XskIMF-9V9u+466<@Gm00000NkvXXu0mjf7sbRW literal 0 HcmV?d00001 diff --git a/etc/custom/choose-up.png b/etc/custom/choose-up.png new file mode 100644 index 0000000000000000000000000000000000000000..e8bc704cd03f2002de426359c63d5630e568c41e GIT binary patch literal 497 zcmVA00004XF*Lt006O% z3;baP0000mP)t-s0s;hzii<`@N65&@YiMe&uB_wZoL5&@xw*Lc z`S%nQ6+1gTe}QWe0000ubVXQnQ*UN;cVTj609aNaR%LQ?X>V>IGcGYOVIUwvZ1D(B$WBSC9f%n1WOwL-&MMt*Ppl zI{`_Bi|uzcX@*A5IRaB4ml_%np%$T~7WzxeG~lYx`v4`SHjo0CFXBW)-EXKxC_fH; z>SQW+UpOIOEUOvl2p5=w2=?!9GSni}{{8zKSI=>&sQ%)k4~u~cToEC;D)-c~sAZu` zuf?pgHH})98nyT`(4z1xM8v_N70u_)D7X%b^-~|l~83Ysn00_JH n9lMnp3IG5A2XskIMF-9V9u+4RmW(y000000NkvXXu0mjfhSUjdqSmNp87*cU7c}6GSGlK+8>(o8yBgO|lC)p=)#0Ra)c9k3A8xI!FHI#eQVjy7l?2zq7>m-r^IRb?IUJ zqep@7Gu~vpx%i1)=Sfb^>qn1r9u={2^se6_@b<0oi-ttLHUWn9=~E6&m|Rr{bT4~} zr>`sfITkrlb(Og26m_7G7$_K=^K)}k^GXwc6x=<11L{&`rvgUjdqSmNp87*cU7*`k@x&nSW8Y>LI>Cbj~OvvV|?^o}gq z!V%lCe~%SQ?1`g=zQWC2tC{AX*4ZYuVgmR6do$bXET3CVtBGV1f22Dz<@&qpGYluo zFEgBfKQ$M8bZw5hN^4yCu_r=S=g8l@*pDn*w?3cscb53xTYO@(E#9E+T&x~_Wroo1kr7$_K=^K)}k^GXwc6x=<11L{&`rvgOd^a!VDxIrg82CQY`6?zK#qG8~eHcB(ehe1_3@H zu1riU9UYzS?(WBrpVZXUShsFXZf?%w$4{)RtVBh{X3d)O>(`Hvkgyv!Zf)DPwYIjp z$zFC7P_IRaYeY$Kep*R+Vo@qXM3_QYYEf}!ex8D{o}odafyJc};@jK#U5mKa>G1dFze}``vOlQ(LFIW+$AkX03m3kzxxRc|jqJ~PmA5TB9xT6f zAt3MFr8)Yq?cZFlThDhjPD<*2e*_Bs{W|;T-I`3@ub#Cr;mSFVdQ&MBb@0EOd^a!VDxIrg82CQY`6?zK#qG8~eHcB(ehe1_3@H zu1riU9UYzS?(WBrpVZXUShsFXZf?%w$4{)RtVBh{X3d)O>(`Hvkgyv!Zf)DPwYIjp z$zFC7P_IRaYeY$Kep*R+Vo@qXM3_QYYEf}!ex8D{o}odaff>)x)O1xw@at zi&yyUt4!i^GWc?LRaWr3(5wF8d-rX%$+A2%``EIDcMdLFc<|W5{zid^<#{=bLcLl) z4pRKeis>gTe~DWM4fv*xNc literal 0 HcmV?d00001 diff --git a/etc/custom/option.xpm b/etc/custom/option.xpm new file mode 100644 index 0000000..9af6253 --- /dev/null +++ b/etc/custom/option.xpm @@ -0,0 +1,28 @@ +/* XPM */ +static char *option[] = { +/* width height num_colors chars_per_pixel */ +" 17 17 4 1", +/* colors */ +". c #000000", +"a c #a8b038", +"b c #f8f800", +"c s None c None", +/* pixels */ +"ccccccccccccccccc", +"ccccccccccccccccc", +"cccccbbbbbbcccccc", +"ccccbbbbbbbbccccc", +"cccbbbaaaabbbcccc", +"ccbbbaaaaaabbbccc", +"cbbbaabbbaabbbbcc", +"cbbbaababaabbbbcc", +"cbbbbbbbaabbbbbcc", +"cbbbbbbaabbbbbbcc", +"cbbbbbbaabbbbbbcc", +"cbbbbbbbbbbbbbbcc", +"ccbbbbbaabbbbbccc", +"cccbbbbaabbbbcccc", +"ccccbbbbbbbbccccc", +"cccccbbbbbbcccccc", +"ccccccccccccccccc" +}; diff --git a/etc/custom/radio0.xpm b/etc/custom/radio0.xpm new file mode 100644 index 0000000..9debd41 --- /dev/null +++ b/etc/custom/radio0.xpm @@ -0,0 +1,18 @@ +/* XPM */ +static char * radio0_xpm[] = { +"12 11 4 1", +" c #FFFFFFFFFFFF s background", +". c #E6E6E6E6E6E6", +"X c #BFBFBFBFBFBF", +"o c #737373737373", +" .. ", +" .... ", +" ..XX.. ", +" ..XXXX.. ", +" ..XXXXXX.. ", +"ooXXXXXXXXoo", +" ooXXXXXXoo ", +" ooXXXXoo ", +" ooXXoo ", +" oooo ", +" oo "}; diff --git a/etc/custom/radio1.xpm b/etc/custom/radio1.xpm new file mode 100644 index 0000000..1fdd917 --- /dev/null +++ b/etc/custom/radio1.xpm @@ -0,0 +1,18 @@ +/* XPM */ +static char * radio1_xpm[] = { +"12 11 4 1", +" c #FFFFFFFFFFFF s background", +". c #737373737373", +"X c #22228B8B2222", +"o c #E6E6E6E6E6E6", +" .. ", +" .... ", +" ..XX.. ", +" ..XXXX.. ", +" ..XXXXXX.. ", +"ooXXXXXXXXoo", +" ooXXXXXXoo ", +" ooXXXXoo ", +" ooXXoo ", +" oooo ", +" oo "}; diff --git a/etc/custom/reset-down.png b/etc/custom/reset-down.png new file mode 100644 index 0000000000000000000000000000000000000000..04ce30654e4a0896c8f1036210bbcf913925a766 GIT binary patch literal 489 zcmeAS@N?(olHy`uVBq!ia0vp^_CPGm!VDy@%AZ&Wq*&4&eH|GXHuiJ>Nn{1`4FY^Z zT$z|yy1F{u-91j9KD%z+n(T}$EiKI#FP`n+e_+m>c@Ys|wYAkEB4UpoKC!a0`Sa(O zo{l~rP_IRaYeY$Kep*R+Vo@qXM3_QYYEf}!ex8D{o}odafmHaBZqC{sXKeCzh`l{96bH$l_&@68xO7pYI{sRhLtA;e6*YJa%RD;M#fbi^4#4u zLJkJMw7vZJoqp+u=>@mz(z*VN?`RTO(NykbWgd4nY?tucI|hZfdFp0-&f9WGWRH&i z+(S#2#A+VdtLU*((zB8K5btdHY3JuXw>kYFZza1=21spJR~|)e!hm-V+NH5(9;%bAE1aYF-J0Z(>TS dLV0FMhJw4NZ$MqD>{Or%22WQ%mvv4FO#sL!x)A^X literal 0 HcmV?d00001 diff --git a/etc/custom/reset-up.png b/etc/custom/reset-up.png new file mode 100644 index 0000000000000000000000000000000000000000..0c71b50ec28032fc60597039221d0dfc96f5d812 GIT binary patch literal 489 zcmVA00004XF*Lt006O% z3;baP0000mP)t-s0s;hziit-@NXyI3uCAV>IGcGYOVIUwP`$Q-Ul*06HYrY zKo#EY=m>=>cq+YTdffe`4*n8u+wV-_{{mMK0#)!%N$19^*-Ce!of{@@o52q?!S_Zh zOu@_Y(kV@2HM@dakeq|k%00000NkvXXu0mjfImNzp literal 0 HcmV?d00001 diff --git a/etc/custom/right-pushed.xpm b/etc/custom/right-pushed.xpm new file mode 100644 index 0000000..692be11 --- /dev/null +++ b/etc/custom/right-pushed.xpm @@ -0,0 +1,18 @@ +/* XPM */ +static char * right_xpm[] = { +"10 10 5 1", +" c Gray40", +". c Gray40", +"X c none", +"o c Gray75", +"O c Gray90", +" .XXXXXXXX", +" ...XXXXXX", +" ....XXXX", +" oo....XX", +" oooo....", +" ooooOOOO", +" ooOOOOXX", +" OOOOXXXX", +" OOOXXXXXX", +" OXXXXXXXX"}; diff --git a/etc/custom/right.xpm b/etc/custom/right.xpm new file mode 100644 index 0000000..23b5fc8 --- /dev/null +++ b/etc/custom/right.xpm @@ -0,0 +1,18 @@ +/* XPM */ +static char * right_xpm[] = { +"10 10 5 1", +" c Gray90", +". c Gray90", +"X c none", +"o c Gray75", +"O c Gray40", +" .XXXXXXXX", +" ...XXXXXX", +" ....XXXX", +" oo....XX", +" oooo....", +" ooooOOOO", +" ooOOOOXX", +" OOOOXXXX", +" OOOXXXXXX", +" OXXXXXXXX"}; diff --git a/etc/custom/save-down.png b/etc/custom/save-down.png new file mode 100644 index 0000000000000000000000000000000000000000..326369d0c92acfa8169b91134c6ae203e46de754 GIT binary patch literal 429 zcmeAS@N?(olHy`uVBq!ia0vp^DnKmE!VDz20ypggQY`6?zK#qG8~eHcB(ehe1_3@H zu1riU-QC?@UY=*poJ&hfU$<_Jrl!W6IrGB8!e738URzr&A|m?m;o}1b4p~`Q|N8aA zW}S8@P_IRaYeY$Kep*R+Vo@qXM3_QYYEf}!ex8D{o}odaf*Uja7 zMSL|L{7XqIS$N^Xj}^Sq%wC75X&E@SEV{A9Y4Ky#cb#GWm7fobChb}I{n~}#{xsWf zKd$fdVAlze$ojnJm+R$_b8p$FObKghU9!II*{Q!Gvwms)pZDa;(S(Hy%Fmmu{#w?q z7a_UhrK91IH6I>XE_{0VJX;;xrhiT?Nxja_&Az_QzRu3Qg}()zU+`EZL^Lb1FkER^ z`BIy!TodSY_7YEDSN3x(a-tf#3*-;@0ENUrA>y2$o12-h&RM%ac>*n&k zBEA|A{-vaqEWB{x#|mC)X0OB3vyUSe=Td* zi;&#$($Vn9nh%dG7e2jwo~@2;(?6${q+Vy|W?x@tUuWmu!ry|<8KPDR7Ojdb3>$x} zQoUERF$3sy_7YEDSN3x(a-tfRyN-$&0)@mtA>y2$o12UjdqnBeK+7*cU7Iii*Cnn41`+{B2dO>70+XQMjxo^121 z=A2OEo`o zcTTtBZ--h5o2UjdqnBeK+7*cU7*`k@x&oF^wZIZ>~Cbk0Zvr(OTPqukh zb51DoapbW4B5KU6sh_H%C@yZlo_8Ym4?(B6HTz@Iepg!m({_}|pR_mi!YR|Hq7 z?YePi&o58TNRM4dRh_oo*~jI1;^n)m@9)-s4}a@YwCed2sp&K8+*N!8oaBz_>75hP zJEvRmw?l0Um#o2@Ljp_;_ixWQlYJ>I1L!vP5>H=O_H!(9qMH0UDH~n_g~UK!cFxbu mP0cG|@J&ofRVdFa$xv|j^bM#>m7NMy!QkoY=d#Wzp$Pz}?~fP& literal 0 HcmV?d00001 diff --git a/etc/custom/state-down.png b/etc/custom/state-down.png new file mode 100644 index 0000000000000000000000000000000000000000..d7a2d7c69285f8d371851fad3d7f5540d1937ae1 GIT binary patch literal 449 zcmV;y0Y3hTP)A00004XF*Lt006O% z3;baP0000mP)t-s0s;hyiHXb0%tAs$uCA020=q4s5eSLhLou1<1V>IGcGYOVIUw)Je|2d;W$iL^i z5DG%z0p&R<%hAho(ji4JmzlW;k0KQKD7m;Ca#8X*a>(V73PJ%1aX~=AD!gC;Ll*%B r0Czd^txZrr0{{R32XskIMF-9V9u+AUe+VeQ00000NkvXXu0mjfbTy`q literal 0 HcmV?d00001 diff --git a/etc/custom/state-up.png b/etc/custom/state-up.png new file mode 100644 index 0000000000000000000000000000000000000000..1a466ca5c6c705cafe3d32f95779dd18a2217a18 GIT binary patch literal 449 zcmV;y0Y3hTP)A00004XF*Lt006O% z3;baP0000mP)t-s0s;hyiHXb0%tAs$uCA020=q4s5eSLhLou1<1V>IGcGYOVIUw)Je|2d;W$iL^i z5DG%z0p&R<%hAho(ji4JmzlW;k0KQKD7m;Ca#8X*a>(V73PJ%1aX~;q2VT&?u!4XB r06gFFts`E3VE_OC2XskIMF-9V9u+Ad$F+^H00000NkvXXu0mjf7q6#O literal 0 HcmV?d00001 diff --git a/etc/custom/toggle-off-down.png b/etc/custom/toggle-off-down.png new file mode 100644 index 0000000000000000000000000000000000000000..111e13c004c7c526f7dd8923441b0fac4f13d976 GIT binary patch literal 508 zcmVA00004XF*Lt006O% z3;baP0000mP)t-s0s;h!h>A%_NOEUr$jHj2q@;a)do3#~URPM-V>IGcGYOVIUw>LMR_ofst;J3POkl#t1zV4^{AQQshj80xl^1RoK`N=7!%#{)_YGe`3)7 zQ*g)VAIkb*#C+G+;AO*o@#@+dF1>dUt^|!4TSn%>k zCs%q{!g`>B!^Xzitq290|M%$lA6T&dvnJPeB_)u8h>ni!_HYG%uKd4m>~FB#|GOqv z`b?+!Km}n+yQ}39ZrHnbmwWYvg_mkIx&CV304eyIU9Jf8#YdO_|KnHwKXYLH*H4{U z|6_i=2e~pv@H{-I{r~@W@lXHKwA%jr$uIxExL}Wq9}FdP3OJ_ViL6&E|NmU|9#g?g yykG)DCIJNi``WSM)o|X900007bV*G`2hIc@6)7pcX*Co80000A00004XF*Lt006O% z3;baP0000mP)t-s0s;h!h>A%_NOEUr$jHj2q@;a)do3#~URPM-V>IGcGYOVIUw&git=F0wdib6@(BAj1hV!9;)Eqq(~%txS;e`VPiv>8-5@8FV36)i9!2M z!6kdHZx?Dn3IdIdJI*5%T${oo>(wx6=UhFmv%mg=6a-;-?m<0!OI_= zTwyXm8yjo4A{1!;-=pJyV8Qy&nq1qJlt2n1Iy$!7!xj9w^8dcEzrk|<@0wic zGo9uG6@)46u9io*Vej5u?$s9-UaHmP`m22dq~L3IxgyLLA6@?ck6-!!%z^b^KXqpP zkNNc;000McNliru&IBG6DK)BSXA00004XF*Lt006O% z3;baP0000mP)t-s2?-0El$N6c1j@?H^O2LQWo1iCORlc0?h+F+GBf*PV&>-O^sB3U ze0psJ2C6PDp2L6w0000ubVXQnQ*UN;cVTj609aNaR%LQ?X>V>IGcGYOVIUwM}&gx@`;J&0vomi70gUa11ngyLJwg=A#*wVUGs#U=9NGbcAJ3|h;}Hw zLvq7}39~I{GHhgIUA4i9Sc z@^WMIo5g86(<`Nm%ZrV%$3+>#A00004XF*Lt006O% z3;baP0000mP)t-s2?-0El$N6c1j@?H^O2LQWo1iCORlc0?h+F+GBf*PV&>-O^sB3U ze0psJ2C6PDp2L6w0000ubVXQnQ*UN;cVTj609aNaR%LQ?X>V>IGcGYOVIUwHeOcsDZ(SSM_oy&;)fpt=AgUvlP1$9K4b+S%smbGHj@*j<**eY5t$ zcAx?&7q6y|2nE^Y6BEq^Hf#qfn3Rn|=5qGC<_SB^D}g5LHUlXT?NEA$ z/dev/null 2>&1 +then + exec gnuclient ${1+"$@"} +else + xemacs -unmapped -f gnuserv-start & + until gnuclient -batch -eval t >/dev/null 2>&1 + do + sleep 1 + done + exec gnuclient ${1+"$@"} +fi + diff --git a/etc/emacskeys.sco b/etc/emacskeys.sco new file mode 100644 index 0000000..4e47a61 --- /dev/null +++ b/etc/emacskeys.sco @@ -0,0 +1,220 @@ +# +# SCO(tm) keyboard mapping file with Emacs meta-keys +# Automatically generated using the emap utility +# +# Below is the uuencoded source for the emap utility. This program +# will, when run on an SCO console, take the current keyboard +# map and set the 'meta' bit for all keys. To make this usable +# under Emacs, edit your termcap and terminfo entries for the +# sco console (the ansi entries) and add the 'km' capability. +# Usage: +# emap [-o] [-f filename] +# If you run the utility with no flags, it will simply modify the +# current keyboard map in kernel memory for the multiscreen on +# which it was invoked. Specifying -f and a filename will cause +# a file suitable for input to the mapkey(M) utility to be generated. +# Specifying -o will produce, on stdout, a file suitable for input +# to the mapkey(M) utility but will NOT modify the in-memory +# map. +# I personally run this utility once, and replace /usr/lib/keyboard/keys +# with the result. You may prefer to run it in your .profile or +# via a shell-script which will in turn invoke emacs. +# +# begin 600 emap.c.gz +# M'XL("'F'RC " V5M87 N8P"=5VUOXC@0_LZOF$W50KIT%^AM[U2V>Z*HW%9+ +# MH2JL=*<6H6"<$A&27&RZ1;?][S=C.X&$%'H7(>S8\\R;QS.3 R]@_G+*X;.0 +# M4R_\,/M2.DB7EH&'J]DUL1(?Y2KB8GMYSE>3T(D5H,2?)8\#8#,GAN,PDD[\ +# MV$P6O4 "+GG!M$HCCV,UXJ]9*FF$(UC@++BX'\$%_%,"L(*E;U5I(L*9F'I))1F$ORM)PZ;Z\F$&_A$Z'%F2 .S_I2\1WID<2+.C)X>ISXW$U9/)HUD +# MK()$UXGA[R0K"T.R-#M<,#UQC:J/9HS-& BK])*ZJH1^][V +# M0X7\RJJ [PLG&DLXGB_L$CE/2$=Z3!]&_'3?^'0V:N*R>I>BKA:J.&ND6\1* +# MSJO@H1C$1S$NN%!!XBI8AY^FJ$45F-U4S&,6K: 2/Q&+NJT0;ABC/GAVM29X +# M\!EZWV_&@V%K>#7 ]_?O;20!=:[TR#D2DO;V?''R!=6_9Z,/:,*]-U+,Z/%0 +# M^O5@/+B]:E^WNE!!VZIDK&?;AF+-CQ[QPY-LAAK/[8W5+ UZP!$;,(TQU\S6-\,?-9!CK_/A06@>"^J/>QN>5#&_AY1!:AX +# M/ZSWYZ"]Y7B!&:48->6NL_3E>691ASS&+WRYH$-IWW5L.#JBB(;/9J5KVSG, +# MUEU%J8=3O*L$.TGYO(>ZW.9XTGHCYZ.,K-0KE*0NH-[X=0<7:\I]JQAN +# MG(I*;#BTWCC+>3-G>OE0'+(R>=+(+S^4RS;\_ GI^T/9MN%WL!X>+#@'2U6( +# M@@?S8%ZO78)KSX>U!E;5+"YQ]@9Q@^K!R9F@>J"S_]HOCDRJ0L.LOZAJ8E)S +# M92/;N_ZC@".H/==.[,?%E(?%E +# MCIB\%'.YQ$X'"=!RM)KJZ<+Q EVDL1G"TJ7+]S&^/.DRK?NBBQIV0^Y%+:W0 +# MQVZ ]1'[!(<)=)>@TFC1;N>Z>X6[-$UK/OXG]=NK,E4^?\P\'[N#>K;H,N3Y +# MR*GI@HK6AQ1!4T71BBD_@JA6RZN +# MW*&[":)'V9_TD&^^^$F,6M^%\\C/ ?T7P?U).,(_%UST"=WXT4.0N['/GB1G +# MY26IT"6G>2&3/E3PE/ZX[H^_7?UUT[JMPA%R5QAMX#OL?++^CK#-I:;(6J/6 +# M@K70S"TA/N0*]$66$;G'#2..L>0&>%X_LJ>E(!4=&G:MV,6I+NUPZ4\A"+%O +# MQ".5',*EC)92>:?(+8V"9. FCG91F8--=V9W8-#N5^3"AN0[@6(U\H)')0TP +# M*H_A:4@CG+&]7DOI>=[#G<@.I@+[_F(<"["OR+!9#V:/NK =O%F(GV(PH5P%JJ=,@>;-<"O< +# MHV\$_A8_O:3]/=/]/X4]+@:V=4*$E!WRRH/;S;;1&V +# ME,5R"/D?[.D@HWT&*5D%!NF-1-2&+,K8:<;)9-%#NHWJXU)_;#*3\S+))Y.P +# MMH)H#XOBM.?B=PX&=,75'Y9K)6O;]6R=FF^+4O.ZH*W3\ZNI\;8@3>]*A/2O +# .]VJJY/\+D-=?N%H1 #5 +# +# end +# +# The output below is the result of running emap on the default +# SCO keymap as installed by SCO. It is the equivalent of the +# at.ibm.usa key map file in /usr/lib/keyboard/keys, but with +# the meta bits set properly. Note that for meta keys to work correctly +# you MUST edit /etc/termcap and /usr/lib/terminfo/terminfo.src and add +# the 'km' capability for the 'ansi' entry, and you must disable channel +# mapping in /etc/default/mapchan for the console screens. Extra function +# keys have been added, and the matching emacsstrs.sco is in this +# directory to make a map which scoansi.el can use. So the sequence of +# events should be: +# a) Copy this file to /usr/lib/keyboard/keys +# b) copy emacsstrs.sco to /usr/lib/keyboard/stings +# c) run mapkey and mapstr and set MAPKEY=yes in /etc/default/boot +# d) Add mapstr -f to your /etc/profile or your shell startup +# e) Arrange to have scoansi.el loaded from your .emacs file. +# +# alt +# scan cntrl alt alt cntrl lock +# code base shift cntrl shift alt shift cntrl shift state +# + 0 nop nop nop nop nop nop nop nop O + 1 esc esc esc esc 0x9b 0x9b 0x9b 0x9b O + 2 '1' '!' nop nop 0xb1 0xa1 nop nop O + 3 '2' '@' nul nul 0xb2 0xc0 0x80 0x80 O + 4 '3' '#' nop nop 0xb3 0xa3 nop nop O + 5 '4' '$' nop nop 0xb4 0xa4 nop nop O + 6 '5' '%' nop nop 0xb5 0xa5 nop nop O + 7 '6' '^' rs rs 0xb6 0xde 0x9e 0x9e O + 8 '7' '&' nop nop 0xb7 0xa6 nop nop O + 9 '8' '*' nop nop 0xb8 0xaa nop nop O + 10 '9' '(' nop nop 0xb9 0xa8 nop nop O + 11 '0' ')' nop nop 0xb0 0xa9 nop nop O + 12 '-' '_' ns ns 0xad 0xdf 0x9f 0x9f O + 13 '=' '+' nop nop 0xbd 0xab nop nop O + 14 bs bs del del 0x88 0x88 0xff 0xff O + 15 ht btab nop nop 0x89 btab nop nop O + 16 'q' 'Q' dc1 dc1 0xf1 0xd1 0x91 0x91 C + 17 'w' 'W' etb etb 0xf7 0xd7 0x97 0x97 C + 18 'e' 'E' enq enq 0xe5 0xc5 0x85 0x85 C + 19 'r' 'R' dc2 dc2 0xf2 0xd2 0x92 0x92 C + 20 't' 'T' dc4 dc4 0xf4 0xd4 0x94 0x94 C + 21 'y' 'Y' em em 0xf9 0xd9 0x99 0x99 C + 22 'u' 'U' nak nak 0xf5 0xd5 0x95 0x95 C + 23 'i' 'I' ht ht 0xe9 0xc9 0x89 0x89 C + 24 'o' 'O' si si 0xef 0xcf 0x8f 0x8f C + 25 'p' 'P' dle dle 0xf0 0xd0 0x90 0x90 C + 26 '[' '{' esc esc 0xdb 0xfb 0x9b 0x9b O + 27 ']' '}' gs gs 0xdd 0xfd 0x9d 0x9d O + 28 cr cr nl nl 0x8d 0x8d 0x8a 0x8a O + 29 ctrl ctrl ctrl ctrl ctrl ctrl ctrl ctrl O + 30 'a' 'A' soh soh 0xe1 0xc1 0x81 0x81 C + 31 's' 'S' dc3 dc3 0xf3 0xd3 0x93 0x93 C + 32 'd' 'D' eot eot 0xe4 0xc4 0x84 0x84 C + 33 'f' 'F' ack ack 0xe6 0xc6 0x86 0x86 C + 34 'g' 'G' bel bel 0xe7 0xc7 0x87 0x87 C + 35 'h' 'H' bs bs 0xe8 0xc8 0x88 0x88 C + 36 'j' 'J' nl nl 0xea 0xca 0x8a 0x8a C + 37 'k' 'K' vt vt 0xeb 0xcb 0x8b 0x8b C + 38 'l' 'L' np np 0xec 0xcc 0x8c 0x8c C + 39 ';' ':' nop nop 0xbb 0xba nop nop O + 40 '\'' '"' nop nop 0xa7 0xa2 nop nop O + 41 '`' '~' nop nop 0xe0 0xfe nop nop O + 42 lshift lshift lshift lshift lshift lshift lshift lshift O + 43 '\\' '|' fs fs 0xdc 0xfc 0x9c 0x9c O + 44 'z' 'Z' sub sub 0xfa 0xda 0x9a 0x9a C + 45 'x' 'X' can can 0xf8 0xd8 0x98 0x98 C + 46 'c' 'C' etx etx 0xe3 0xc3 0x83 0x83 C + 47 'v' 'V' syn syn 0xf6 0xd6 0x96 0x96 C + 48 'b' 'B' stx stx 0xe2 0xc2 0x82 0x82 C + 49 'n' 'N' so so 0xee 0xce 0x8e 0x8e C + 50 'm' 'M' cr cr 0xed 0xcd 0x8d 0x8d C + 51 ',' '<' nop nop 0xac 0xbc nop nop O + 52 '.' '>' nop nop 0xae 0xbe nop nop O + 53 '/' '?' nop nop 0xaf 0xbf nop nop O + 54 rshift rshift rshift rshift rshift rshift rshift rshift O + 55 '*' '*' nscr nscr 0xaa 0xaa nscr nscr O + 56 alt alt alt alt alt alt alt alt O + 57 ' ' ' ' ' ' ' ' 0xa0 0xa0 0xa0 0xa0 O + 58 clock clock clock clock clock clock clock clock O + 59 fkey1 fkey13 fkey25 fkey37 scr1 scr11 scr1 scr11 O + 60 fkey2 fkey14 fkey26 fkey38 scr2 scr12 scr2 scr12 O + 61 fkey3 fkey15 fkey27 fkey39 scr3 scr13 scr3 scr13 O + 62 fkey4 fkey16 fkey28 fkey40 scr4 scr14 scr4 scr14 O + 63 fkey5 fkey17 fkey29 fkey41 scr5 scr15 scr5 scr15 O + 64 fkey6 fkey18 fkey30 fkey42 scr6 scr16 scr6 scr16 O + 65 fkey7 fkey19 fkey31 fkey43 scr7 scr7 scr7 scr7 O + 66 fkey8 fkey20 fkey32 fkey44 scr8 scr8 scr8 scr8 O + 67 fkey9 fkey21 fkey33 fkey45 scr9 scr9 scr9 scr9 O + 68 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O + 69 nlock nlock dc3 dc3 nlock nlock 0x93 0x93 O + 70 slock slock del del slock slock 0xff 0xff O + 71 fkey49 '7' '7' '7' '7' 0xb7 0xb7 0xb7 N + 72 fkey50 '8' '8' '8' '8' 0xb8 0xb8 0xb8 N + 73 fkey51 '9' '9' '9' '9' 0xb9 0xb9 0xb9 N + 74 fkey52 '-' '-' '-' '-' 0xad 0xad 0xad N + 75 fkey53 '4' '4' '4' '4' 0xb4 0xb4 0xb4 N + 76 fkey54 '5' '5' '5' '5' 0xb5 0xb5 0xb5 N + 77 fkey55 '6' '6' '6' '6' 0xb6 0xb6 0xb6 N + 78 fkey56 '+' '+' '+' '+' 0xab 0xab 0xab N + 79 fkey57 '1' '1' '1' '1' 0xb1 0xb1 0xb1 N + 80 fkey58 '2' '2' '2' '2' 0xb2 0xb2 0xb2 N + 81 fkey59 '3' '3' '3' '3' 0xb3 0xb3 0xb3 N + 82 fkey60 '0' '0' '0' '0' 0xb0 0xb0 0xb0 N + 83 del '.' del del 0xff 0xae 0xff 0xff N + 84 ns ns ns ns 0x9f 0x9f 0x9f 0x9f O + 85 nop nop nop nop nop nop nop nop O + 86 nop nop nop nop nop nop nop nop O + 87 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O + 88 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O + 89 nop nop nop nop nop nop nop nop O + 90 nop nop nop nop nop nop nop nop O + 91 nop nop nop nop nop nop nop nop O + 92 nop nop nop nop nop nop nop nop O + 93 nop nop nop nop nop nop nop nop O + 94 nop nop nop nop nop nop nop nop O + 95 nop nop nop nop nop nop nop nop O + 96 fkey50 fkey62 fkey72 fkey50 fkey82 fkey62 fkey72 fkey50 N + 97 fkey53 fkey64 fkey74 fkey53 fkey84 fkey64 fkey74 fkey53 N + 98 fkey58 fkey67 fkey77 fkey58 fkey87 fkey67 fkey77 fkey58 N + 99 fkey55 fkey65 fkey75 fkey55 fkey85 fkey65 fkey75 fkey55 N + 100 fkey49 fkey61 fkey71 fkey49 fkey81 fkey61 fkey71 fkey49 N + 101 nop nop nop nop nop nop nop nop O + 102 fkey57 fkey66 fkey76 fkey57 fkey86 fkey66 fkey76 fkey57 N + 103 fkey59 fkey68 fkey78 fkey59 fkey88 fkey68 fkey78 fkey59 N + 104 fkey60 fkey69 fkey79 fkey60 fkey89 fkey69 fkey79 fkey60 N + 105 del del del del 0xff 0xff 0xff 0xff N + 106 fkey54 fkey54 fkey93 fkey54 fkey96 fkey54 fkey54 fkey54 N + 107 nop nop nop nop nop nop nop nop O + 108 nop nop nop nop nop nop nop nop O + 109 nop nop nop nop nop nop nop nop O + 110 nop nop nop nop nop nop nop nop O + 111 nop nop nop nop nop nop nop nop O + 112 nop nop nop nop nop nop nop nop O + 113 nop nop nop nop nop nop nop nop O + 114 nop nop nop nop nop nop nop nop O + 115 nop nop nop nop nop nop nop nop O + 116 nop nop nop nop nop nop nop nop O + 117 nop nop nop nop nop nop nop nop O + 118 nop nop nop nop nop nop nop nop O + 119 nop nop nop nop nop nop nop nop O + 120 nop nop nop nop nop nop nop nop O + 121 nop nop nop nop nop nop nop nop O + 122 nop nop nop nop nop nop nop nop O + 123 nop nop nop nop nop nop nop nop O + 124 nop nop nop nop nop nop nop nop O + 125 nop nop nop nop nop nop nop nop O + 126 nop nop nop nop nop nop nop nop O + 127 nop nop nop nop nop nop nop nop O + 128 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O + 129 ralt ralt ralt ralt ralt ralt ralt ralt O + 130 fkey60 fkey69 fkey79 fkey60 fkey89 fkey69 fkey79 fkey60 O + 131 del del del del 0xff 0xff 0xff 0xff N + 132 fkey49 fkey61 fkey71 fkey49 fkey81 fkey61 fkey71 fkey49 N + 133 fkey57 fkey66 fkey76 fkey57 fkey86 fkey66 fkey76 fkey57 N + 134 fkey51 fkey63 fkey73 fkey51 fkey83 fkey63 fkey73 fkey51 N + 135 fkey59 fkey68 fkey78 fkey59 fkey88 fkey68 fkey78 fkey59 N + 136 fkey55 fkey65 fkey75 fkey55 fkey85 fkey65 fkey75 fkey55 N + 137 fkey53 fkey64 fkey74 fkey53 fkey84 fkey64 fkey74 fkey53 N + 138 fkey50 fkey62 fkey72 fkey50 fkey82 fkey62 fkey72 fkey50 N + 139 fkey58 fkey67 fkey77 fkey58 fkey87 fkey67 fkey77 fkey58 N + 140 '/' nop nop nop 0xaf nop nop nop O + 141 cr cr nl nl 0x8d 0x8d 0x8a 0x8a O diff --git a/etc/emacsstrs.sco b/etc/emacsstrs.sco new file mode 100644 index 0000000..992d818 --- /dev/null +++ b/etc/emacsstrs.sco @@ -0,0 +1,97 @@ +String key values +"\033[M" Function #1 +"\033[N" Function #2 +"\033[O" Function #3 +"\033[P" Function #4 +"\033[Q" Function #5 +"\033[R" Function #6 +"\033[S" Function #7 +"\033[T" Function #8 +"\033[U" Function #9 +"\033[V" Function #10 +"\033[W" Function #11 +"\033[X" Function #12 +"\033[Y" Shift Function #1 +"\033[Z" Shift Function #2 +"\033[a" Shift Function #3 +"\033[b" Shift Function #4 +"\033[c" Shift Function #5 +"\033[d" Shift Function #6 +"\033[e" Shift Function #7 +"\033[f" Shift Function #8 +"\033[g" Shift Function #9 +"\033[h" Shift Function #10 +"\033[i" Shift Function #11 +"\033[j" Shift Function #12 +"\033[k" Control Function #1 +"\033[l" Control Function #2 +"\033[m" Control Function #3 +"\033[n" Control Function #4 +"\033[o" Control Function #5 +"\033[p" Control Function #6 +"\033[q" Control Function #7 +"\033[r" Control Function #8 +"\033[s" Control Function #9 +"\033[t" Control Function #10 +"\033[u" Control Function #11 +"\033[v" Control Function #12 +"\033[w" Ctrl/Shft Function #1 +"\033[x" Ctrl/Shft Function #2 +"\033[y" Ctrl/Shft Function #3 +"\033[z" Ctrl/Shft Function #4 +"\033[@" Ctrl/Shft Function #5 +"\033[[" Ctrl/Shft Function #6 +"\033[\\" Ctrl/Shft Function #7 +"\033[]" Ctrl/Shft Function #8 +"\033[^" Ctrl/Shft Function #9 +"\033[_" Ctrl/Shft Function #10 +"\033[`" Ctrl/Shft Function #11 +"\033[{" Ctrl/Shft Function #12 +"\033[H" Home +"\033[A" Up arrow +"\033[I" Page up +"\033[-" - +"\033[D" Left arrow +"\033[E" 5 +"\033[C" Right arrow +"\033[+" + +"\033[F" End +"\033[B" Down arrow +"\033[G" Page down +"\033[L" Insert +"\033]A" Shift Home +"\033]B" Shift Up +"\033]C" Shift PgUp +"\033]D" Shift Left +"\033]E" Shift Right +"\033]F" Shift End +"\033]G" Shift Down +"\033]H" Shift PgDn +"\033]I" Shift Insert +"\033]J" Shift Delete +"\033]K" Ctrl Home +"\033]L" Ctrl Up +"\033]M" Ctrl PgUp +"\033]N" Ctrl Left +"\033]O" Ctrl Right +"\033]P" Ctrl End +"\033]Q" Ctrl Down +"\033]R" Ctrl PgDn +"\033]S" Ctrl Insert +"\033]T" Ctrl Delete +"\033]U" Alt Home +"\033]V" Alt Up +"\033]W" Alt PgUp +"\033]X" Alt Left +"\033]Y" Alt Right +"\033]Z" Alt End +"\033]a" Alt Down +"\033]b" Alt PgDn +"\033]c" Alt Insert +"\033]d" Alt Delete +"\033]e" Ctrl Keypad + +"\033]f" Ctrl Keypad - +"\033]g" Ctrl Keypad 5 +"\033]h" Alt Keypad + +"\033]i" Alt Keypad - +"\033]j" Alt Keypad 5 diff --git a/etc/eos/eos-build.xbm b/etc/eos/eos-build.xbm new file mode 100644 index 0000000..a658fc0 --- /dev/null +++ b/etc/eos/eos-build.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x00,0x00,0x00,0x00,0x92,0xa4,0x54,0x05,0x08,0x02,0x02,0x00,0xa2,0x90,0x80, + 0x04,0x00,0x42,0x7f,0x00,0x94,0x10,0x35,0x04,0x40,0x42,0xb5,0x00,0x12,0x10, + 0x2b,0x04,0x48,0x42,0xb5,0x00,0x82,0x10,0x35,0x04,0x08,0x4a,0xb5,0x00,0xa2, + 0x14,0x29,0x04,0x00,0x6a,0xb7,0x00,0x94,0x51,0x35,0x04,0xc0,0xc4,0xa9,0x02, + 0x55,0x01,0x35,0x00,0x20,0xfc,0xff,0x09,0x94,0xae,0x84,0x00,0xf0,0x27,0xd9, + 0x02,0x2a,0x94,0xc6,0x04,0x80,0x54,0xda,0x00,0x12,0xfd,0xff,0x04,0x40,0x00, + 0x00,0x01,0x14,0x54,0x49,0x00,0x40,0x01,0x04,0x05,0x15,0x24,0x41,0x00,0x40, + 0x10,0x14,0x09,0x88,0x44,0x41,0x00}; diff --git a/etc/eos/eos-clear-at.xbm b/etc/eos/eos-clear-at.xbm new file mode 100644 index 0000000..86fd43d --- /dev/null +++ b/etc/eos/eos-clear-at.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x00,0x00,0x80,0x00,0x24,0xa5,0x2a,0x04,0x82,0x10,0x80,0x00,0x28,0x84,0x24, + 0x04,0x80,0x7c,0x83,0x00,0x25,0x02,0x2c,0x04,0x10,0x69,0x81,0x00,0x84,0xb4, + 0x33,0x04,0x50,0xde,0xa6,0x00,0x25,0xb5,0x4d,0x04,0x90,0xd3,0x94,0x02,0xd2, + 0x65,0xbc,0x00,0x90,0x06,0xab,0x04,0xd2,0x9d,0x9e,0x00,0x90,0x0b,0xb5,0x04, + 0x54,0x25,0x2e,0x01,0xd0,0xe3,0xb8,0x04,0x12,0xb9,0x94,0x00,0x20,0xeb,0x4f, + 0x02,0x4a,0xbc,0x22,0x00,0x80,0x6a,0x93,0x04,0x29,0xd9,0x09,0x01,0x80,0x02, + 0x24,0x04,0x29,0x6c,0x03,0x01,0x00,0x00,0x48,0x04,0x4a,0x25,0x11,0x00,0x20, + 0x10,0x44,0x09,0x09,0x44,0x01,0x00}; diff --git a/etc/eos/eos-cont.xbm b/etc/eos/eos-cont.xbm new file mode 100644 index 0000000..7ddc819 --- /dev/null +++ b/etc/eos/eos-cont.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x00,0x00,0x00,0x04,0x52,0xa9,0x54,0x01,0x00,0x04,0x02,0x04,0x29,0x81,0x20, + 0x01,0x84,0x14,0x0a,0x04,0x20,0x80,0x40,0x01,0xc2,0xef,0x1f,0x04,0xb0,0x06, + 0x24,0x01,0xf2,0x27,0x11,0x04,0x94,0xcf,0x7f,0x01,0xf0,0x40,0x00,0x04,0xd4, + 0x12,0x14,0x01,0xb0,0x46,0x41,0x04,0xda,0x1e,0x10,0x00,0xf0,0x5b,0x4e,0x09, + 0xd4,0x3a,0x1e,0x00,0xb0,0x77,0xbb,0x02,0x65,0x3d,0x3f,0x00,0xd0,0x9b,0x5a, + 0x05,0x04,0x2a,0x0c,0x00,0x50,0x87,0x20,0x09,0x05,0x26,0x0a,0x00,0x90,0x80, + 0xa0,0x02,0x04,0x28,0x08,0x00,0x50,0x82,0x22,0x05,0x85,0x20,0x40,0x00,0x10, + 0x8a,0x0a,0x09,0x84,0x20,0x40,0x00}; diff --git a/etc/eos/eos-dismiss.xbm b/etc/eos/eos-dismiss.xbm new file mode 100644 index 0000000..5f270e5 --- /dev/null +++ b/etc/eos/eos-dismiss.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x00,0x10,0x00,0x00,0xaa,0x84,0x52,0x05,0x00,0x22,0x08,0x00,0x92,0x08,0x82, + 0x04,0x40,0xa0,0x28,0x00,0x14,0x0a,0x02,0x05,0xc0,0x20,0x18,0x00,0x8a,0x89, + 0x92,0x04,0x20,0x03,0x4c,0x00,0x09,0x56,0x16,0x05,0x20,0x0c,0x03,0x00,0x0a, + 0x91,0xa1,0x04,0x20,0xf4,0x08,0x02,0x09,0x41,0x82,0x00,0x20,0x74,0x28,0x02, + 0x0a,0x99,0x83,0x00,0x20,0x0c,0x09,0x0a,0x89,0x46,0xa6,0x00,0x20,0x03,0x0c, + 0x02,0x8a,0x51,0x99,0x00,0xa0,0x00,0x10,0x0a,0x08,0x94,0x84,0x00,0x42,0x40, + 0x10,0x02,0x10,0x12,0x85,0x00,0x42,0x08,0x10,0x0a,0x10,0x82,0xa4,0x00,0x42, + 0x28,0x02,0x02,0x90,0x82,0x90,0x00}; diff --git a/etc/eos/eos-down.xbm b/etc/eos/eos-down.xbm new file mode 100644 index 0000000..eb65382 --- /dev/null +++ b/etc/eos/eos-down.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x00,0x00,0x01,0x08,0x54,0x55,0x90,0x02,0x00,0x00,0x05,0x00,0x25,0x49,0x40, + 0x05,0x10,0x04,0x15,0x00,0x04,0x51,0x80,0x04,0xd0,0x3f,0x09,0x02,0x65,0x62, + 0xa0,0x00,0xc0,0x3a,0x05,0x02,0x52,0x2a,0x90,0x00,0xc0,0xb5,0x44,0x0a,0x69, + 0x2a,0x00,0x00,0x40,0x60,0x3d,0x01,0x54,0x34,0x5c,0x04,0xc0,0xa0,0x1e,0x01, + 0x55,0x29,0x5c,0x00,0x40,0x60,0x1c,0x05,0x64,0x3f,0x5e,0x00,0xd0,0xbd,0x7f, + 0x02,0x44,0x37,0xbe,0x00,0x42,0x3d,0x1c,0x0a,0x60,0xb7,0x9a,0x00,0xca,0x3f, + 0x40,0x02,0x40,0x40,0x12,0x00,0x12,0x09,0x88,0x04,0x00,0x82,0x02,0x01,0x2a, + 0x28,0x28,0x04,0x80,0x02,0x02,0x01}; diff --git a/etc/eos/eos-evaluate-star.xbm b/etc/eos/eos-evaluate-star.xbm new file mode 100644 index 0000000..3593b8b --- /dev/null +++ b/etc/eos/eos-evaluate-star.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x40,0x00,0x00,0x00,0x14,0x24,0x49,0x02,0x42,0x82,0x20,0x08,0x88,0x20,0x0a, + 0x02,0x20,0x0a,0xa0,0x00,0x0a,0x40,0x09,0x04,0xa0,0x24,0x24,0x01,0x09,0x01, + 0x01,0x04,0x20,0x14,0x54,0x00,0x69,0x43,0x01,0x05,0xc0,0x05,0x24,0x00,0xfa, + 0x27,0x81,0x04,0xe0,0xf9,0x14,0x00,0x69,0xb3,0xfd,0x05,0x80,0xb2,0xfd,0x00, + 0x29,0xf4,0x05,0x04,0x80,0xb0,0xfd,0x01,0x2a,0xb4,0xfd,0x00,0x80,0xf0,0x49, + 0x0a,0x12,0x39,0x82,0x00,0x40,0x74,0x08,0x02,0x14,0x00,0xa2,0x00,0x40,0x29, + 0x08,0x0a,0x15,0x82,0x82,0x00,0x40,0x08,0x28,0x02,0x10,0x42,0x82,0x00,0x42, + 0x08,0x09,0x0a,0x10,0x42,0x90,0x00}; diff --git a/etc/eos/eos-evaluate.xbm b/etc/eos/eos-evaluate.xbm new file mode 100644 index 0000000..83b8ede --- /dev/null +++ b/etc/eos/eos-evaluate.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x20,0x00,0x00,0x00,0x09,0x25,0x95,0x04,0x20,0x10,0x40,0x00,0x0a,0x05,0x15, + 0x04,0x20,0x50,0x40,0x01,0x89,0x04,0x12,0x04,0x20,0x92,0x40,0x00,0x8a,0x00, + 0x14,0x05,0x00,0x52,0x40,0x00,0xa8,0x04,0x12,0x04,0x02,0x50,0x44,0x02,0x90, + 0x1e,0x81,0x00,0x42,0x36,0x3f,0x02,0x10,0xbe,0xbf,0x00,0x42,0x37,0x24,0x0a, + 0x10,0xb6,0x3f,0x00,0x42,0x36,0xbf,0x02,0x10,0x9e,0x20,0x00,0x42,0x17,0x8a, + 0x04,0x10,0x86,0x00,0x01,0x4a,0x14,0x2a,0x04,0x00,0x81,0x00,0x01,0x12,0x14, + 0x92,0x08,0x40,0x81,0x04,0x02,0x0a,0x14,0x50,0x00,0x20,0x41,0x05,0x04,0x82, + 0x04,0x90,0x00,0x28,0xa0,0x24,0x04}; diff --git a/etc/eos/eos-fix.xbm b/etc/eos/eos-fix.xbm new file mode 100644 index 0000000..0426290 --- /dev/null +++ b/etc/eos/eos-fix.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x10,0x00,0x00,0x00,0x04,0x29,0x25,0x05,0x50,0x80,0x10,0x00,0x05,0x24,0x84, + 0x04,0x50,0x1d,0x11,0x02,0x04,0x72,0x80,0x00,0x90,0xcb,0x2b,0x02,0x05,0x91, + 0x8e,0x00,0x50,0x41,0x32,0x0a,0x84,0x12,0x1d,0x00,0xd0,0xa0,0x47,0x01,0x45, + 0xea,0x10,0x04,0x50,0xfc,0x7f,0x01,0xa4,0x07,0x64,0x00,0xf0,0xfa,0xd5,0x0a, + 0x45,0x15,0x6a,0x00,0xd0,0xff,0x7f,0x02,0x44,0x4a,0xc6,0x00,0xd0,0x0a,0x5b, + 0x0a,0x45,0x5d,0x62,0x00,0x50,0x0d,0x6e,0x01,0x44,0x8a,0x6a,0x04,0xd0,0x2f, + 0x7e,0x01,0x24,0x09,0x01,0x00,0x82,0x20,0x54,0x05,0x20,0x08,0x01,0x00,0x8a, + 0x22,0x24,0x09,0x00,0x08,0x41,0x00}; diff --git a/etc/eos/eos-intro.xbm b/etc/eos/eos-intro.xbm new file mode 100644 index 0000000..43c3137 --- /dev/null +++ b/etc/eos/eos-intro.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x84,0x20,0x00,0x00,0x21,0x0a,0x55,0x05,0x84,0x50,0x00,0x08,0x51,0x24,0xaa, + 0x02,0x04,0xf9,0x00,0x04,0xa1,0xd8,0x54,0x01,0x14,0xb6,0x01,0x02,0x81,0xe8, + 0xaa,0x04,0x14,0xba,0x00,0x00,0x41,0x21,0x54,0x05,0x14,0x44,0x01,0x08,0x21, + 0xfd,0xa8,0x02,0x84,0xaa,0x02,0x04,0x21,0xf8,0x50,0x01,0x94,0xaa,0x02,0x02, + 0x02,0xf8,0xa8,0x04,0xa8,0xa8,0x02,0x00,0x04,0xfa,0x50,0x05,0x52,0xe8,0x0a, + 0x08,0x00,0xba,0xa0,0x02,0xaa,0xe8,0x04,0x04,0x01,0x79,0x51,0x01,0x54,0xac, + 0x05,0x02,0x01,0xf6,0xa3,0x04,0x54,0x01,0x08,0x00,0x02,0x28,0x42,0x05,0xa8, + 0x82,0x08,0x00,0x04,0x28,0x52,0x05}; diff --git a/etc/eos/eos-introB.xbm b/etc/eos/eos-introB.xbm new file mode 100644 index 0000000..3db1a72 --- /dev/null +++ b/etc/eos/eos-introB.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x88,0x00,0x00,0x02,0x22,0xa8,0xaa,0x00,0x88,0x02,0x00,0x05,0x42,0x68,0x55, + 0x00,0x14,0xb9,0x80,0x0a,0x81,0xd8,0x2a,0x00,0x14,0x76,0x41,0x05,0xa1,0xd8, + 0x14,0x00,0x04,0x79,0xa1,0x02,0x51,0x22,0x08,0x04,0x04,0x88,0xa2,0x00,0x51, + 0xf5,0x10,0x04,0x04,0xde,0x4a,0x01,0x41,0xb1,0x00,0x04,0x14,0xfc,0xaa,0x00, + 0x41,0xa9,0x00,0x05,0x14,0xf8,0x2a,0x00,0x82,0xaa,0x00,0x05,0x28,0xf8,0x54, + 0x00,0x84,0xaa,0x02,0x05,0x12,0xf8,0xe8,0x08,0x80,0xaa,0x42,0x03,0x2a,0x7c, + 0x49,0x02,0x80,0xd6,0xa3,0x05,0x2a,0x08,0x44,0x02,0x81,0x22,0x51,0x02,0x14, + 0x84,0xc4,0x09,0x41,0x21,0x20,0x02}; diff --git a/etc/eos/eos-introD.xbm b/etc/eos/eos-introD.xbm new file mode 100644 index 0000000..1a2698a --- /dev/null +++ b/etc/eos/eos-introD.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x08,0x20,0x40,0x00,0xa2,0x0a,0x15,0x04,0x04,0x50,0xa0,0x02,0x51,0x25,0x15, + 0x00,0x04,0xf8,0x40,0x05,0xa1,0xaa,0x28,0x00,0x04,0xfc,0x85,0x0a,0x51,0xa9, + 0x40,0x00,0x04,0xfa,0x2a,0x05,0xa1,0x20,0x00,0x00,0x14,0x09,0x55,0x05,0x41, + 0xf4,0x00,0x00,0x24,0xdf,0xaa,0x02,0x09,0xe8,0x00,0x04,0x50,0xba,0xaa,0x00, + 0x84,0xd0,0x00,0x04,0x12,0x7a,0x55,0x01,0x84,0xd8,0x00,0x04,0x50,0xea,0xaa, + 0x00,0x0a,0xb8,0x00,0x05,0x5c,0xd9,0x2a,0x00,0x24,0xf4,0x00,0x05,0xa2,0xac, + 0x55,0x00,0x2c,0xfa,0x03,0x05,0xa2,0x04,0x28,0x00,0x2c,0x01,0x04,0x05,0x9c, + 0x54,0x51,0x08,0x21,0x00,0x08,0x02}; diff --git a/etc/eos/eos-introDB.xbm b/etc/eos/eos-introDB.xbm new file mode 100644 index 0000000..fbcb9ff --- /dev/null +++ b/etc/eos/eos-introDB.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x08,0x21,0x80,0x00,0x42,0x88,0x2a,0x04,0x28,0x25,0x40,0x01,0x45,0x20,0x15, + 0x04,0x10,0xfd,0xa0,0x00,0x44,0xa8,0x08,0x05,0x12,0xfd,0x25,0x00,0x40,0xa8, + 0x00,0x05,0x0a,0xf9,0xaa,0x00,0x40,0x22,0x00,0x04,0x2a,0x08,0x55,0x01,0x01, + 0xf5,0x00,0x04,0x54,0xde,0xaa,0x00,0x81,0xe8,0x00,0x04,0x14,0xba,0xaa,0x02, + 0x82,0xe8,0x00,0x00,0x28,0xda,0xaa,0x0a,0x04,0xb1,0x00,0x00,0x52,0xfc,0xaa, + 0x02,0x00,0xa9,0x00,0x04,0x5e,0xf8,0xea,0x01,0x24,0xaa,0x40,0x06,0xb4,0xfc, + 0x45,0x02,0x25,0x56,0xd3,0x01,0xa4,0x00,0x48,0x0a,0x2c,0xaa,0x42,0x02,0x9a, + 0x00,0xd4,0x09,0x20,0x54,0x01,0x02}; diff --git a/etc/eos/eos-run.xbm b/etc/eos/eos-run.xbm new file mode 100644 index 0000000..1f00bbc --- /dev/null +++ b/etc/eos/eos-run.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x00,0x04,0x08,0x00,0x54,0x41,0x42,0x05,0x00,0x24,0x08,0x00,0x25,0x09,0x92, + 0x04,0x10,0xa0,0x40,0x00,0x04,0x09,0x12,0x04,0x50,0x44,0x88,0x00,0x05,0x11, + 0xfe,0x04,0x10,0x40,0x41,0x02,0xe4,0x17,0x12,0x00,0xf0,0x43,0xfe,0x09,0x25, + 0x13,0x20,0x02,0xfc,0x5f,0x85,0x00,0xa8,0x0f,0xfe,0x04,0xb2,0x96,0x10,0x00, + 0xe8,0x23,0x44,0x05,0xc2,0x81,0xfe,0x00,0x90,0x28,0x00,0x04,0x44,0x82,0xaa, + 0x00,0x01,0x20,0xfe,0x04,0x54,0x85,0x00,0x01,0x00,0x20,0x48,0x00,0x92,0x84, + 0xfe,0x0a,0x20,0x28,0x84,0x00,0x8a,0x82,0x10,0x02,0x00,0x20,0x84,0x00,0x52, + 0x92,0x10,0x0a,0x04,0x04,0x8a,0x00}; diff --git a/etc/eos/eos-run2.xbm b/etc/eos/eos-run2.xbm new file mode 100644 index 0000000..94a34ca --- /dev/null +++ b/etc/eos/eos-run2.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x00,0x01,0x00,0x00,0x54,0xa4,0x54,0x05,0x00,0x00,0x02,0x00,0x92,0xaa,0x90, + 0x04,0x08,0x00,0x04,0x02,0x82,0x24,0xa1,0x00,0x28,0x82,0x08,0x02,0x82,0x20, + 0x82,0x00,0x08,0x0a,0x29,0x0a,0xa2,0x80,0x83,0x00,0x00,0x12,0x17,0x02,0xf4, + 0xff,0x8d,0x00,0x60,0x55,0x15,0x0a,0xaa,0xfb,0xbf,0x00,0x60,0x57,0x75,0x02, + 0xa9,0xfd,0x3e,0x00,0xe0,0xb7,0x9b,0x02,0xea,0xff,0x2f,0x04,0x20,0x00,0x87, + 0x00,0x09,0x48,0x13,0x02,0xa0,0x22,0x41,0x08,0x0a,0x80,0x14,0x02,0x20,0x15, + 0x40,0x00,0x48,0x00,0x15,0x05,0x02,0x29,0x40,0x00,0x20,0x82,0x12,0x04,0x8a, + 0x08,0x48,0x02,0x20,0x40,0x82,0x00}; diff --git a/etc/eos/eos-step-into.xbm b/etc/eos/eos-step-into.xbm new file mode 100644 index 0000000..c339f24 --- /dev/null +++ b/etc/eos/eos-step-into.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x40,0x00,0x00,0x00,0x12,0x2a,0x49,0x05,0x88,0x00,0x04,0x00,0x22,0x48,0xa1, + 0x04,0x80,0x02,0x04,0x02,0x29,0x50,0x91,0x00,0xc0,0xc7,0x1f,0x02,0xb4,0x26, + 0x80,0x00,0xf0,0x97,0x2a,0x0a,0x95,0xc7,0xbf,0x00,0xf0,0x08,0x00,0x02,0xd4, + 0x82,0xa4,0x00,0xf0,0x2e,0x02,0x0a,0x9a,0x8b,0x90,0x00,0xf0,0x1f,0xfe,0x02, + 0xd4,0x78,0x09,0x00,0xb0,0x77,0xa0,0x02,0xe5,0x3d,0xff,0x04,0xc0,0x1b,0x04, + 0x00,0x14,0x0e,0x51,0x05,0x40,0x26,0xfe,0x00,0x12,0x82,0x02,0x02,0x48,0x29, + 0x48,0x08,0x02,0x02,0x11,0x02,0x48,0x48,0x44,0x00,0x11,0x02,0x01,0x05,0x44, + 0x28,0x14,0x00,0x00,0x02,0x81,0x04}; diff --git a/etc/eos/eos-step-over.xbm b/etc/eos/eos-step-over.xbm new file mode 100644 index 0000000..dbc02e7 --- /dev/null +++ b/etc/eos/eos-step-over.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x00,0x40,0x00,0x04,0x4a,0x15,0x54,0x01,0x20,0x40,0x01,0x04,0x09,0x12,0x24, + 0x01,0x20,0x41,0x80,0x08,0x4a,0x10,0x29,0x02,0xc0,0x0f,0x04,0x00,0xa8,0xa6, + 0xfe,0x05,0xf2,0x05,0x22,0x00,0x90,0x97,0x80,0x04,0xfa,0x44,0xfe,0x00,0xd0, + 0x02,0x29,0x04,0xd2,0x2e,0x84,0x00,0xd8,0x8b,0xfe,0x04,0xf0,0x1f,0x20,0x01, + 0x95,0x78,0x0a,0x04,0xf0,0x77,0xfe,0x00,0x68,0x3d,0x21,0x05,0xc2,0x1b,0x84, + 0x00,0x20,0x8e,0xfe,0x02,0x8a,0x26,0x22,0x08,0x20,0x82,0x08,0x02,0x82,0x14, + 0xfe,0x00,0x10,0x01,0x21,0x05,0x42,0x54,0x84,0x00,0x10,0x00,0x21,0x04,0x42, + 0x09,0x84,0x00,0x10,0x42,0x21,0x04}; diff --git a/etc/eos/eos-stop-in.xbm b/etc/eos/eos-stop-in.xbm new file mode 100644 index 0000000..32187b8 --- /dev/null +++ b/etc/eos/eos-stop-in.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x08,0x00,0x10,0x00,0x82,0x52,0x05,0x05,0x28,0x08,0x50,0x00,0x02,0x82,0x04, + 0x04,0x48,0x7c,0x93,0x00,0x11,0x02,0x24,0x04,0x44,0xe9,0x88,0x00,0x80,0xbc, + 0x33,0x04,0x4a,0x6a,0x87,0x00,0x20,0xdf,0x4d,0x04,0x92,0xb5,0x92,0x02,0x50, + 0x61,0xb5,0x00,0xd2,0x55,0x96,0x02,0x90,0x38,0xb3,0x00,0xd2,0x91,0x8d,0x04, + 0x50,0x75,0x33,0x01,0x52,0x2d,0xa5,0x04,0x90,0x75,0x97,0x00,0x22,0xad,0x48, + 0x02,0x48,0x7a,0xa7,0x00,0x80,0xac,0x11,0x0a,0x25,0xf1,0x0a,0x00,0x10,0x02, + 0xa4,0x02,0x84,0x5c,0x03,0x00,0x10,0x00,0x28,0x05,0x25,0xa5,0x42,0x00,0x80, + 0x00,0x08,0x09,0x24,0x52,0x42,0x00}; diff --git a/etc/eos/eos-stop.xbm b/etc/eos/eos-stop.xbm new file mode 100644 index 0000000..419a535 --- /dev/null +++ b/etc/eos/eos-stop.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x00,0x00,0x00,0x00,0x2a,0x55,0xa9,0x04,0x80,0x00,0x04,0x02,0x24,0x22,0x81, + 0x00,0x10,0xfc,0x2a,0x02,0x85,0x02,0x84,0x00,0x10,0xa9,0x09,0x0a,0x84,0x78, + 0xb3,0x00,0x50,0xee,0x06,0x02,0x25,0xb7,0xcd,0x00,0x90,0x6d,0x9b,0x04,0x52, + 0x3b,0xb6,0x00,0xd0,0x02,0xac,0x02,0x94,0x03,0x98,0x00,0x50,0x01,0xa8,0x04, + 0xca,0x5f,0xbc,0x00,0x90,0x6a,0xab,0x02,0x52,0x77,0x9d,0x00,0x20,0xdd,0x4b, + 0x0a,0x49,0xb6,0x26,0x00,0x80,0xec,0x92,0x04,0x2a,0xb1,0x09,0x00,0x00,0x02, + 0xa4,0x02,0x92,0x7c,0x0b,0x00,0x40,0x00,0x20,0x05,0x14,0x42,0x42,0x00,0x40, + 0x08,0x08,0x09,0x12,0x92,0x42,0x00}; diff --git a/etc/eos/eos-type.xbm b/etc/eos/eos-type.xbm new file mode 100644 index 0000000..228fb7c --- /dev/null +++ b/etc/eos/eos-type.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x00,0x00,0x00,0x00,0x54,0xa9,0x52,0x05,0x00,0x04,0x08,0x00,0x25,0x41,0x82, + 0x04,0x80,0x08,0x49,0x00,0x28,0x42,0x10,0x04,0x02,0x08,0x41,0x01,0x90,0x42, + 0x12,0x00,0x42,0x08,0x88,0x0a,0x10,0x42,0x22,0x00,0x62,0x0b,0x81,0x04,0xe8, + 0x43,0x28,0x00,0x7a,0xdf,0x86,0x02,0x6c,0xdb,0xee,0x04,0x6c,0xdf,0xa3,0x06, + 0xee,0x1b,0xf3,0x01,0x7c,0x9b,0xc3,0x07,0x6c,0xfb,0x56,0x07,0x3a,0xcf,0x26, + 0x07,0x40,0x40,0x92,0x00,0x0a,0x15,0x41,0x0a,0x40,0x00,0x10,0x00,0x12,0xa9, + 0x42,0x02,0x04,0x02,0x90,0x00,0x50,0x48,0x02,0x0a,0x04,0x82,0xa8,0x00,0x90, + 0x08,0x02,0x02,0x25,0xa0,0x90,0x00}; diff --git a/etc/eos/eos-up.xbm b/etc/eos/eos-up.xbm new file mode 100644 index 0000000..5f4e0de --- /dev/null +++ b/etc/eos/eos-up.xbm @@ -0,0 +1,11 @@ +#define noname_width 28 +#define noname_height 28 +static char noname_bits[] = { + 0x00,0x08,0x00,0x00,0xa9,0x82,0x52,0x05,0x00,0x28,0x08,0x00,0x4a,0x02,0x82, + 0x04,0x20,0x48,0x14,0x00,0x09,0x12,0x2f,0x05,0xe0,0x3f,0x1f,0x00,0x4a,0xe2, + 0x7f,0x05,0x60,0x2d,0x0e,0x00,0xc8,0xb2,0x9e,0x04,0x42,0x2d,0x0e,0x00,0x60, + 0xb2,0x4e,0x05,0x4a,0x29,0x2e,0x00,0x40,0x20,0x0f,0x04,0x52,0x69,0xa4,0x00, + 0x44,0x20,0x08,0x04,0x50,0xa5,0x20,0x01,0xc4,0x3e,0x4a,0x04,0x50,0xbb,0x00, + 0x01,0xc5,0x3d,0x48,0x00,0x50,0xb7,0x02,0x05,0x44,0x3b,0x50,0x00,0xd0,0xbf, + 0x04,0x09,0x45,0x00,0x41,0x00,0x10,0x49,0x14,0x05,0x04,0x10,0x40,0x00,0x50, + 0x41,0x09,0x01,0x05,0x14,0x42,0x04}; diff --git a/etc/etags.1 b/etc/etags.1 new file mode 100644 index 0000000..2a6c375 --- /dev/null +++ b/etc/etags.1 @@ -0,0 +1,227 @@ +.\" Copyright (c) 1992 Free Software Foundation +.\" See section COPYING for conditions for redistribution +.TH etags 1 "19apr1994" "GNU Tools" "GNU Tools" +.de BP +.sp +.ti -.2i +\(** +.. + +.SH NAME +etags, ctags \- generate tag file for Emacs, vi +.SH SYNOPSIS +.hy 0 +.na +.B etags [\|\-aCDRSVh\|] [\|\-i \fIfile\fP\|] [\|\-l \fIlanguage\fP\|] [\|\-i \fIregexp\fP\|] [\|\-o \fItagfile\fP\|] +.br +[\|\-\-c++\|] [\|\-\-no\-defines\|] [\|\-\-ignore\-indentation\|] +[\|\-\-language=\fIlanguage\fP\|] [\|\-\-regex=\fIregexp\fP\|] +[\|\-\-no\-regexp\|] [\|\-\-help\|] [\|\-\-version\|] +[\|\-\-include=\fIfile\fP\|] [\|\-\-output=\fItagfile\fP\|] +[\|\-\-append\|] \fIfile\fP .\|.\|. + +.B ctags [\|\-aCdRSVh\|] [\|\-BtTuvwx\|] [\|\-l \fIlanguage\fP\|] +.br +[\|\-i \fIregexp\fP\|] [\|\-o \fItagfile\fP\|] +[\|\-\-c++\|] [\|\-\-defines\|] [\|\-\-ignore\-indentation\|] +[\|\-\-no\-warn\|] [\|\-\-cxref\|] [\|\-\-backward\-search\|] +[\|\-\-forward\-search\|] [\|\-\-typedefs\|] [\|\-\-typedefs\-and\-c++\|] +[\|\-\-language=\fIlanguage\fP\|] [\|\-\-regex=\fIregexp\fP\|] +[\|\-\-help\|] [\|\-\-version\|] +.br +[\|\-\-output=\fItagfile\fP\|] [\|\-\-append\|] [\|\-\-update\|] \fIfile\fP .\|.\|. +.ad b +.hy 1 +.SH DESCRIPTION +The `\|\fBetags\fP\|' program is used to create a tag table file, in a format +understood by +.BR emacs ( 1 )\c +\&; the `\|\fBctags\fP\|' program is used to create a similar table in a +format understood by +.BR vi ( 1 )\c +\&. Both forms of the program understand +the syntax of C, Objective C, C++, Java, Fortran, Pascal, Cobol, +LaTeX, Scheme, Emacs Lisp/Common Lisp, Postscript, Erlang, Prolog and +most assembler\-like syntaxes. +Both forms read the files specified on the command line, and write a tag +table (defaults: `\|TAGS\|' for \fBetags\fP, `\|tags\|' for +\fBctags\fP) in the current working directory. +Files specified with relative file names will be recorded in the tag +table with file names relative to the directory where the tag table +resides. Files specified with absolute file names will be recorded +with absolute file names. +The programs recognize the language used in an input file based on its +file name and contents. The --language switch can be used to force +parsing of the file names following the switch according to the given +language, overriding guesses based on filename extensions. +.SH OPTIONS +Some options make sense only for the \fBvi\fP style tag files produced +by ctags; +\fBetags\fP does not recognize them. +The programs accept unambiguous abbreviations for long option names. +.TP +.B \-a, \-\-append +Append to existing tag file. (For vi-format tag files, see also +\fB\-\-update\fP.) +.TP +.B \-B, \-\-backward\-search +Tag files written in the format expected by \fBvi\fP contain regular +expression search instructions; the \fB\-B\fP option writes them using +the delimiter `\|\fB?\fP\|', to search \fIbackwards\fP through files. +The default is to use the delimiter `\|\fB/\fP\|', to search \fIforwards\fP +through files. +Only \fBctags\fP accepts this option. +.TP +.B \-C, \-\-c++ +Treat files with `\|.c\|' and `\|.h\|' extensions as C++ code, not C +code. Files with `\|.C\|', `\|.H\|', `\|.cxx\|', `\|.hxx\|', or +`\|.cc\|' extensions are always assumed to be C++ code. +.TP +.B \-d, \-\-defines +Create tag entries for C preprocessor constant definitions +and enum constants, too. This is the +default behavior for \fBetags\fP, so this option is only accepted +by \fBctags\fP. +.TP +.B \-D, \-\-no\-defines +Do not create tag entries for C preprocessor constant definitions +and enum constants. +This may make the tags file much smaller if many header files are tagged. +This is the default behavior for \fBctags\fP, so this option is only +accepted by \fBetags\fP. +.TP +\fB\-l\fP \fIlanguage\fP, \fB\-\-language=\fIlanguage\fP +Parse the following files according to the given language. More than +one such options may be intermixed with filenames. Use \fB\-\-help\fP +to get a list of the available languages and their default filename +extensions. The `auto' language can be used to restore automatic +detection of language based on filename extension. The `none' +language may be used to disable language parsing altogether; only +regexp matching is done in this case (see the \fB\-\-regex\fP option). +.TP +\fB\-\-no_globals\fP +Do not tag global variables in C, C++, Objective C, Java. Typically +this reduces the file size by one fourth. +.TP +\fB\-\-members\fP +Tag variables that are members of strucure-like constructs in C++, +Objective C, Java. +.TP +\fB\-o\fP \fItagfile\fP, \fB\-\-output=\fItagfile\fP +Explicit name of file for tag table; overrides default `\|TAGS\|' or +`\|tags\|'. (But ignored with \fB\-v\fP or \fB\-x\fP.) +.TP +\fB\-r\fP \fIregexp\fP, \fB\-\-regex=\fIregexp\fP +Make tags based on regexp matching for each line of the files +following this option, in addition to the tags made with the standard +parsing based on language. May be freely intermixed with filenames +and the \fB\-R\fP option. The regexps are cumulative, i.e. each +option will add to the previous ones. The regexps are of the form: +.br + + \fB/\fP\fItagregexp\fP[\fB/\fP\fInameregexp\fP]\fB/\fP +.br + +where \fItagregexp\fP is used to match the lines that must be tagged. +It should not match useless characters. If the match is +such that more characters than needed are unavoidably matched by +\fItagregexp\fP, it may be useful to add a \fInameregexp\fP, to +narrow down the tag scope. \fBctags\fP ignores regexps without a +\fInameregexp\fP. The syntax of regexps is the same as in emacs, +augmented with intervals of the form \\{m,n\\}, as id ed or grep. +.br +Here are some examples. All the regexps are quoted to protect them +from shell interpretation. +.br + +Tag the DEFVAR macros in the emacs source files: +.br +\fI\-\-regex\='/[ \\t]*DEFVAR_[A-Z_ \\t(]+"\\([^"]+\\)"\/'\fP +.br + +Tag VHDL files (this example is a single long line, broken here for +formatting reasons): +.br +\fI\-\-language\=none\ \-\-regex='/[\ \\t]*\\(ARCHITECTURE\\|\\ +CONFIGURATION\\)\ +[^\ ]*\ +OF/'\ \-\-regex\='/[\ \\t]*\\ +\\(ATTRIBUTE\\|ENTITY\\|FUNCTION\\|PACKAGE\\(\ BODY\\)?\\ +\\|PROCEDURE\\|PROCESS\\|TYPE\\)[\ \\t]+\\([^\ \\t(]+\\)/\\3/'\fP +.br + +Tag TCL files (this last example shows the usage of a \fItagregexp\fP): +.br +\fI\-\-lang\=none \-\-regex\='/proc[\ \\t]+\\([^\ \\t]+\\)/\\1/'\fP + +.TP +.B \-R, \-\-no\-regex +Don't do any more regexp matching on the following files. May be +freely intermixed with filenames and the \fB\-\-regex\fP option. +.TP +.B \-S, \-\-ignore\-indentation +Don't rely on indentation as much as we normally do. Currently, this +means not to assume that a closing brace in the first column is the +final brace of a function or structure definition in C and C++. +.TP +.B \-t, \-\-typedefs +Record typedefs in C code as tags. Since this is the default behaviour +of \fBetags\fP, only \fBctags\fP accepts this option. +.TP +.B \-T, \-\-typedefs\-and\-c++ +Generate tag entries for typedefs, struct, enum, and union tags, and +C++ member functions. Since this is the default behaviour +of \fBetags\fP, only \fBctags\fP accepts this option. +.TP +.B \-u, \-\-update +Update tag entries for \fIfiles\fP specified on command line, leaving +tag entries for other files in place. Currently, this is implemented +by deleting the existing entries for the given files and then +rewriting the new entries at the end of the tags file. It is often +faster to simply rebuild the entire tag file than to use this. +Only \fBctags\fP accepts this option. +.TP +.B \-v, \-\-vgrind +Instead of generating a tag file, write index (in \fBvgrind\fP format) +to standard output. Only \fBctags\fP accepts this option. +.TP +.B \-w, \-\-no\-warn +Suppress warning messages about duplicate entries. The \fBetags\fP +program does not check for duplicate entries, so this option is not +allowed with it. +.TP +.B \-x, \-\-cxref +Instead of generating a tag file, write a cross reference (in +\fBcxref\fP format) to standard output. Only \fBctags\fP accepts this option. +.TP +.B \-H, \-\-help +Print usage information. +.TP +.B \-V, \-\-version +Print the current version of the program (same as the version of the +emacs \fBetags\fP is shipped with). + +.SH "SEE ALSO" +`\|\fBemacs\fP\|' entry in \fBinfo\fP; \fIGNU Emacs Manual\fP, Richard +Stallman. +.br +.BR cxref ( 1 ), +.BR emacs ( 1 ), +.BR vgrind ( 1 ), +.BR vi ( 1 ). + +.SH COPYING +Copyright (c) 1992 Free Software Foundation, Inc. +.PP +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. +.PP +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the +entire resulting derived work is distributed under the terms of a +permission notice identical to this one. +.PP +Permission is granted to copy and distribute translations of this +manual into another language, under the above conditions for modified +versions, except that this permission notice may be included in +translations approved by the Free Software Foundation instead of in +the original English. diff --git a/etc/gnu.xbm b/etc/gnu.xbm new file mode 100644 index 0000000..d1a92bb --- /dev/null +++ b/etc/gnu.xbm @@ -0,0 +1,33 @@ +#define gnu_width 50 +#define gnu_height 50 +static unsigned char gnu_bits[] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf1, + 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xff, 0xe1, 0xff, 0xff, 0xf9, 0x3f, 0x22, + 0xfe, 0xcb, 0xff, 0xff, 0xf8, 0xc3, 0xf8, 0xfc, 0xcb, 0xff, 0x7f, 0xfc, + 0xe0, 0xf9, 0xf9, 0xdb, 0xff, 0x7f, 0xfc, 0xf0, 0xfb, 0xf3, 0xd9, 0xff, + 0x3f, 0x7e, 0xf8, 0xff, 0xf7, 0xcc, 0xff, 0x9f, 0x3e, 0x1c, 0x7f, 0x44, + 0xce, 0xff, 0xcf, 0x1e, 0xcc, 0x01, 0x00, 0xe7, 0xff, 0xef, 0x0e, 0xce, + 0x38, 0x1c, 0xe0, 0xff, 0xef, 0x0e, 0x27, 0xfe, 0xfa, 0xc3, 0xff, 0xef, + 0x7c, 0x93, 0xff, 0xe5, 0xbf, 0xff, 0xef, 0x99, 0xc9, 0xab, 0x2a, 0x00, + 0xff, 0xcf, 0xc3, 0x24, 0x54, 0xc5, 0xd5, 0xff, 0x9f, 0x7f, 0x16, 0xab, + 0xca, 0xff, 0xff, 0x1f, 0x1f, 0x93, 0x46, 0x95, 0xff, 0xff, 0x7f, 0xc8, + 0x49, 0x99, 0x8a, 0xff, 0xff, 0xff, 0xf0, 0x49, 0x4b, 0x95, 0xff, 0xff, + 0xff, 0xf9, 0x4c, 0x88, 0x8a, 0xff, 0xff, 0xff, 0x1e, 0xe6, 0x58, 0x95, + 0xff, 0xff, 0x3f, 0x00, 0xe6, 0xb7, 0x0a, 0xff, 0xff, 0xbf, 0x8a, 0xea, + 0x50, 0x15, 0xff, 0xff, 0xff, 0x8f, 0xca, 0x99, 0x2a, 0xff, 0xff, 0xff, + 0xa7, 0x95, 0x7f, 0x15, 0xff, 0xff, 0xff, 0x23, 0x55, 0x7f, 0x2a, 0xfe, + 0xff, 0xff, 0x63, 0xd8, 0xfc, 0x14, 0xfe, 0xff, 0xff, 0x43, 0x9a, 0xfb, + 0x2b, 0xfe, 0xff, 0xff, 0xc3, 0xaa, 0x12, 0x94, 0xfc, 0xff, 0xff, 0xc1, + 0x32, 0xd5, 0xc1, 0xfd, 0xff, 0xff, 0x81, 0x46, 0xd5, 0x47, 0xfc, 0xff, + 0xff, 0x83, 0x6c, 0xc2, 0x6e, 0xfc, 0xff, 0xff, 0x83, 0x89, 0x88, 0x69, + 0xfe, 0xff, 0xff, 0x07, 0x92, 0x09, 0x3b, 0xfe, 0xff, 0xff, 0x07, 0x22, + 0x01, 0x3c, 0xfe, 0xff, 0xff, 0x0f, 0x4e, 0x02, 0x03, 0xfe, 0xff, 0xff, + 0x2f, 0xd0, 0x18, 0x3e, 0xff, 0xff, 0xff, 0x3f, 0xb0, 0x19, 0x9e, 0xff, + 0xff, 0xff, 0x7f, 0x00, 0x09, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x01, 0xe3, + 0xc1, 0xff, 0xff, 0xff, 0xff, 0x05, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xfd, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff}; diff --git a/etc/gnu.xpm b/etc/gnu.xpm new file mode 100644 index 0000000..4d130ca --- /dev/null +++ b/etc/gnu.xpm @@ -0,0 +1,67 @@ +/* XPM */ +/*****************************************************************************/ +/* GNU Emacs bitmap conv. to pixmap by Przemek Klosowski (przemek@nist.gov) */ +/*****************************************************************************/ +static char * image_name [] = { +/**/ +"50 50 7 1", +/**/ +" s mask c none", +"B c blue", +"x c black", +": c sandy brown", +"+ c saddle brown", +"' c grey", +". c white", +" ", +" ", +" x ", +" :x ", +" :::x ", +" ::x ", +" x ::x ", +" x: xxx :::x ", +" x: xxx xxx:xxx x::x ", +" x:: xxxx::xxx:::::xx x::x ", +" x:: x:::::::xx::::::xx x::x ", +" x:: xx::::::::x:::::::xx xx::x ", +" x:: xx::::::::::::::::::x xx::xx ", +" x::x xx:::::xxx:::::::xxx:xxx xx:::xx ", +" x:::x xx:::::xx...xxxxxxxxxxxxxxx:::xx ", +" x:::x xx::::::xx..xxx...xxxx...xxxxxxxx ", +" x:::x x::::::xx.xxx.......x.x.......xxxx ", +" x:::xx x:::x::xx.xx..........x.xx.........x ", +" x::::xx::xx:::x.xx....''''x'x'x''.xxx.....x ", +" xx::::xxxx::xx.xx.xxxx.'''''''.xxx xxxx ", +" xx::::::::xx..x.xxx..'''''''''.xx ", +" xxx:::::xxx..xx.xx.xx.xxx.'''''.xx ", +" xxx::xx...xx.xx.BBBB..xx''''''xx ", +" xxxx.....xx.xxBB:BB.xx'''''''xx ", +" xx.....xx...x.BBBx.xxx''''''xx ", +" x....xxxx..xx...xxx''''''''''xx ", +" x..xxxxxx..x.......x..''''''''xx ", +" x.x xxx.x.x.x...xxxx.'''''''''xx ", +" x xxx.x.x.xx...xx..'''''''''xx ", +" xx.x..x.x.xx........''''''''x ", +" xx'.xx.x.x.x.x.......'''''''''x ", +" xx'..xxxx..x...x.......'''''''x ", +" xx''.xx.x..xx...x.......'''.xxx ", +" xx''..x.x.x.x.x.xx.xxxxx.'.xx+xx ", +" xx''..x.xx..xx.x.x.x+++xxxxx+++x ", +" xx'''.x..xxx.x.x.x.x+++++xxx+xxx ", +" xx''.xx..x..xx.xxxx++x+++x++xxx ", +" xx''..xx.xxx.xxx.xxx++xx+x++xx ", +" xx'''.xx.xx..xx.xxxx++x+++xxx ", +" xx'''.xxx.xx.xxxxxxxxx++++xxx ", +" xx''...xx.xx.xxxxxx++xxxxxxx ", +" xx''''..x..xxx..xxxx+++++xx ", +" xx''''..x..xx..xxxx++++xx ", +" xxx'''''x.xx.xxxxxxxxxxx ", +" xxx'''''..xxx xxxxx ", +" xxxx''''xxxx ", +" xxx'''xxx ", +" xxxxx ", +" ", +" " +}; + diff --git a/etc/gnuattach.1 b/etc/gnuattach.1 new file mode 100644 index 0000000..bbe2227 --- /dev/null +++ b/etc/gnuattach.1 @@ -0,0 +1 @@ +.so man1/gnuserv.1 diff --git a/etc/gnuclient.1 b/etc/gnuclient.1 new file mode 100644 index 0000000..bbe2227 --- /dev/null +++ b/etc/gnuclient.1 @@ -0,0 +1 @@ +.so man1/gnuserv.1 diff --git a/etc/gnudoit.1 b/etc/gnudoit.1 new file mode 100644 index 0000000..bbe2227 --- /dev/null +++ b/etc/gnudoit.1 @@ -0,0 +1 @@ +.so man1/gnuserv.1 diff --git a/etc/gnuserv.1 b/etc/gnuserv.1 new file mode 100644 index 0000000..f87359f --- /dev/null +++ b/etc/gnuserv.1 @@ -0,0 +1,294 @@ +.TH GNUSERV 1 "" "XEmacs Server" +.UC 4 +.SH NAME +gnuserv, gnuclient \- Server and Clients for XEmacs +.SH SYNOPSIS +.B gnuclient +[-nw] [-display display] [-q] [-v] [-l library] [-batch] [-f function] [-eval form] +[-h hostname] [-p port] [-r remote-pathname] [[+line] file] ... +.br +.B gnudoit [-q] +form +.br +.B gnuserv +.br +.B gnuattach +Removed as of gnuserv 3.x +.SH DESCRIPTION + +.PP +\fIgnuclient\fP allows the user to request a running XEmacs process to +edit the named files or directories and/or evaluate lisp forms. +Depending on your environment, it can be an X frame or a TTY frame. +One typical use for this is with a dialup connection to a machine on +which an XEmacs process is currently running. +.PP +\fIgnudoit\fP is a shell script frontend to ``gnuclient -batch -eval form''. +Its use is depreciated. Try to get used to calling gnuclient directly. +.PP +\fIgnuserv\fP is the server program that is set running by XEmacs to +handle all incoming and outgoing requests. It is not usually invoked +directly, but is started from XEmacs by loading the \fIgnuserv\fP +package and evaluating the Lisp form (gnuserv-start). +.PP +\fIgnuattach\fP no longer exists. Its functionality has been replaced by +\fIgnuclient -nw\fP. +.SH OPTIONS +.PP +\fIgnuclient\fP supports as much of the command line options of Emacs as +makes sense in this context. In addition it adds a few of its own. +.br +Options with long names can also be specified using a double +hyphen instead of a single one. +.TP 8 +.BI \-nw +This option makes \fIgnuclient\fP act as a frontend such that XEmacs +can attach to the current TTY. XEmacs will then open a new TTY frame. +The effect is similar to having started a new XEmacs on this TTY with +the ``-nw'' option. It currently only works if XEmacs is running on +the same machine as gnuclient. This is the default if the `DISPLAY' +environment variable is not set. +.TP 8 +.BI \-display " display, " \--display " display" +If this option is given or the `DISPLAY' environment variable is set +then gnuclient will tell XEmacs to edit files in a frame on the +specified X device. +.TP 8 +.BI \-q +This option informs \fIgnuclient\fP to exit once connection has been +made with the XEmacs process. Normally \fIgnuclient\fP waits until +all of the files on the command line have been finished with (their +buffers killed) by the XEmacs process, and all the forms have been +evaluated. +.TP 8 +.BI \-v +When this option is specified \fIgnuclient\fP will request for the +specified files to be viewed instead of edited. +.TP 8 +.BI \-l " library" +Tell Emacs to load the specified library. +.TP 8 +.BI \-batch +Tell Emacs not to open any frames. Just load libraries and evaluate +lisp code. If no files to execute, functions to call or forms to eval +are given using the +.BR \-l , +.BR \-f , +or +.B \-eval +options, then forms to eval are read from STDIN. +.TP 8 +.BI \-f " function," +Make Emacs execute the lisp function. +.TP 8 +.BI \-eval " form" +Make Emacs execute the lisp form. +.TP 8 +.BI \-h " hostname" +Used only with Internet-domain sockets, this option specifies the host +machine which should be running \fIgnuserv\fP. If this option is not +specified then the value of the environment variable GNU_HOST is used +if set. If no hostname is specified, and the GNU_HOST variable is not +set, an internet connection will not be attempted. N\.B.: +\fIgnuserv\fP does NOT allow internet connections unless XAUTH +authentication is used or the GNU_SECURE variable has been specified +and points at a file listing all trusted hosts. (See SECURITY below.) + +.br +Note that an internet address may be specified instead of a hostname +which can speed up connections to the server by quite a bit, +especially if the client machine is running YP. + +.br +Note also that a hostname of \fBunix\fP can be used to specify that +the connection to the server should use a Unix-domain socket (if +supported) rather than an Internet-domain socket. +.TP 8 +.BI \-p " port" +Used only with Internet-domain sockets, this option specifies the +service port used to communicate between server and clients. If this +option is not specified, then the value of the environment variable +GNU_PORT is used, if set, otherwise a service called ``gnuserv'' is +looked up in the services database. Finally, if no other value can be +found for the port, then a default port is used which is usually 21490 ++ uid. +.br +Note that since \fIgnuserv\fP doesn't allow command-line options, the port for +it will have to be specified via one of the alternative methods. +.TP 8 +.BI \-r " pathname" +Used only with Internet-domain sockets, the pathname argument may be +needed to inform XEmacs how to reach the root directory of a remote +machine. \fIgnuclient\fP prepends this string to each path argument +given. For example, if you were trying to edit a file on a client +machine called otter, whose root directory was accessible from the +server machine via the path /net/otter, then this argument should be +set to '/net/otter'. If this option is omitted, then the value is +taken from the environment variable GNU_NODE, if set, or the empty +string otherwise. +.TP 8 +.BI "[+n] file" +This is the path of the file to be edited. If the file is a directory, then +the directory browsers dired or monkey are usually invoked instead. +The cursor is put at line number 'n' if specified. + +.SH SETUP +\fIgnuserv\fP is packaged standardly with recent versions of XEmacs. +Therefore, you should be able to start the server simply by evaluating +the XEmacs Lisp form (gnuserv-start), or equivalently by typing +`M-x gnuserv-start'. + +.SH CONFIGURATION +The behavior of this suite of program is mostly controlled on the lisp +side in Emacs and its behavior can be customized to a large extent. +Type `M-x customize-group RET gnuserv RET' for easy access. More +documentation can be found in the file `gnuserv.el' + +.SH EXAMPLE +.RS 4 +gnuclient -q -f mh-smail +.br +gnuclient -h cuckoo -r /ange@otter: /tmp/* +.br +gnuclient -nw ../src/listproc.c +.RE +.br + +.br +More examples and sample wrapper scripts are provided in the +etc/gnuserv directory of the Emacs installation. + + +.SH SYSV IPC +SysV IPC is used to communicate between \fIgnuclient\fP and +\fIgnuserv\fP if the symbol SYSV_IPC is defined at the top of +gnuserv.h. This is incompatible with both Unix-domain and +Internet-domain socket communication as described below. A file called +/tmp/gsrv??? is created as a key for the message queue, and if removed +will cause the communication between server and client to fail until +the server is restarted. +.SH UNIX-DOMAIN SOCKETS +A Unix-domain socket is used to communicate between \fIgnuclient\fP +and \fIgnuserv\fP if the symbol UNIX_DOMAIN_SOCKETS is defined at the +top of gnuserv.h. A file called /tmp/gsrvdir????/gsrv is created for +communication and if deleted will cause communication between server +and client to fail. Only the user running gnuserv will be able to +connect to the socket. +.SH INTERNET-DOMAIN SOCKETS +Internet-domain sockets are used to communicate between +\fIgnuclient\fP and \fIgnuserv\fP if the symbol +INTERNET_DOMAIN_SOCKETS is defined at the top of gnuserv.h. Both +Internet-domain and Unix-domain sockets can be used at the same +time. If a hostname is specified via -h or via the GNU_HOST +environment variable, \fIgnuclient\fP establish connections using an +internet domain socket. If not, a local connection is attempted via +either a unix-domain socket or SYSV IPC. +.SH SECURITY +Using Internet-domain sockets, a more robust form of security is +needed that wasn't necessary with either Unix-domain sockets or SysV +IPC. Currently, two authentication protocols are supported to provide +this: MIT-MAGIC-COOKIE-1 (based on the X11 xauth(1) program) and a +simple host-based access control mechanism, hereafter called +GNUSERV-1. The GNUSERV-1 protocol is always available, whereas support +for MIT-MAGIC-COOKIE-1 may or may not have been enabled (via a #define +at the top of gnuserv.h) at compile-time. +.PP +\fIgnuserv\fP, using GNUSERV-1, performs a limited form of access +control at the machine level. By default no internet-domain socket is +opened. If the variable GNU_SECURE can be found in \fIgnuserv\fP's +environment, and it names a readable filename, then this file is +opened and assumed to be a list of hosts, one per line, from which the +server will allow requests. Connections from any other host will be +rejected. Even the machine on which \fIgnuserv\fP is running is not +permitted to make connections via the internet socket unless its +hostname is explicitly specified in this file. Note that a host may +be either a numeric IP address or a hostname, and that +.I any +user on an approved host may connect to your gnuserv and execute arbitrary +elisp (e.g., delete all your files). +If this file contains a lot of +hostnames then the server may take quite a time to start up. +.PP +When the MIT-MAGIC-COOKIE-1 protocol is enabled, an internet socket +\fIis\fP opened by default. \fIgnuserv\fP will accept a connection from +any host, and will wait for a "magic cookie" (essentially, a password) +to be presented by the client. If the client doesn't present the +cookie, or if the cookie is wrong, the authentication of the client is +considered to have failed. At this point. \fIgnuserv\fP falls back to +the GNUSERV-1 protocol; If the client is calling from a host listed in +the GNU_SECURE file, the connection will be accepted, otherwise it +will be rejected. +.TP 4 +.I Using MIT-MAGIC-COOKIE-1 authentication +When the \fIgnuserv\fP server is started, it looks for a cookie +defined for display 999 on the machine where it is running. If the +cookie is found, it will be stored for use as the authentication +cookie. These cookies are defined in an authorization file (usually +~/.Xauthority) that is manipulated by the X11 xauth(1) program. For +example, a machine "kali" which runs an emacs that invokes +\fIgnuserv\fP should respond as follows (at the shell prompt) when set +up correctly. +.PP +.RS 8 +kali% xauth list +.br +GS65.SP.CS.CMU.EDU:0 MIT-MAGIC-COOKIE-1 11223344 +.br +KALI.FTM.CS.CMU.EDU:999 MIT-MAGIC-COOKIE-1 1234 +.RE +.PP +.RS 4 +In the above case, the authorization file defines two cookies. The +second one, defined for screen 999 on the server machine, is used for +gnuserv authentication. +.PP +On the client machine's side, the authorization file must contain an +identical line, specifying the +.I server's +cookie. In other words, on a machine "foobar" which wishes to connect +to "kali," the `xauth list' output should contain the line: +.PP +.RS 4 +KALI.FTM.CS.CMU.EDU:999 MIT-MAGIC-COOKIE-1 1234 +.RE +.PP +For more information on authorization files, take a look at the +xauth(1X11) man page, or invoke xauth interactively (without any +arguments) and type "help" at the prompt. Remember that case in the +name of the authorization protocol (i.e.`MIT-MAGIC-COOKIE-1') +.I is +significant! +.RE + + +.SH ENVIRONMENT +.PP +.TP 8 +.B DISPLAY +Default X device to put edit frame. + +.SH FILES +.PP +.TP 8 +.B /tmp/gsrv??? +(SYSV_IPC only) +.TP 8 +.B /tmp/gsrvdir???/gsrv +(unix domain sockets only) +.TP 8 +.B ~/.emacs +XEmacs customization file, see xemacs(1). +.SH SEE ALSO +.PP +.TP 8 +xauth(1X11), Xsecurity(1X11), gnuserv.el +.SH BUGS +.PP +NULs occurring in result strings don't get passed back to gnudoit properly. + +.SH AUTHOR. +Andy Norman (ange@hplb.hpl.hp.com), based heavily upon +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 (ben@xemacs.org) and Hrvoje Niksic (hniksic@srce.hr). diff --git a/etc/gnuserv.README b/etc/gnuserv.README new file mode 100644 index 0000000..6256f90 --- /dev/null +++ b/etc/gnuserv.README @@ -0,0 +1,103 @@ +This file is not meant to be proper documentation. See the file gnuserv.1 for +more information. + +**** +NOTE: This version of gnuserv has some enhancements over the original version + distributed by Andy Norman. See the end of this file for more details. +**** + +To install, copy gnuserv.el into a directory on your GNU Emacs +load-path. Edit Makefile and change INCLUDES to point to the src +directory underneath your emacs source tree (or make yourself a +config.h file in this directory by hand, starting with config.h.proto +as a first cut) and type: + + make + +This should compile the server and the two clients. Now put gnuserv, +gnuclient and gnudoit in a directory that users have in their executable +search paths. + +File : Description +---------------------------------------------------------------- +Makefile : Makefile to build gnuserv +LICENSE : GNU General License +README : this file +gnuclient.c : editor client C code +gnudoit.c : eval client C code +gnuserv.1 : gnuserv man page +gnuserv.c : server C code +gnuserv.el : server LISP code for GNU Emacs V18,V19, + XEmacs/Lucid Emacs and Epoch V4 +gnuserv.h : server/client C header file +gnuslib.c : server/client C common code +src.x11fns.diff : diffs to src/x11fns to raise window (for emacs18) + +config.h.proto : Use this file as the starting point for constructing + a config.h if you don't have access to the + one that was used when compiling your emacs. + +If you find *any* problems at all with gnuserv, or you can think of better +ways of doing things (especially remote file access), please e-mail me at one +of the addresses below. + +ange@hplb.hpl.hp.com +ange@hpl.hp.co.uk +...!hplabs!hplb!ange +...!ukc!hplb!ange + + + +This version of gnuserv has been enhanced by a number of people, including +Bob Weiner , Darrell Kindred , +Arup Mukherjee , and Ben Wing . The +modifications are basically as follows: + +Bob Weiner: + + Integrated support for several versions of emacs. New requests + from gnuclient cause the creation of new frames. Removed the + restriction on the length of the string passed to gnudoit. Later + added a server-done-function variable to control what happens to + a buffer after the user is done with it. Mods to each of the .c + files as well as gnuserv.el. + +Darrell Kindred: + + Removed the restriction on the length of the string returned from + a gnudoit request, for the purposes of unix/internet sockets. + Allow the gnudoit request to be read from stdin if it's not + specified on the command line. Internet sockets are not opened + unless the GNU_SECURE variable is specified. Unix sockets are + created in a protected ancestral directory, since many Unix + variants don't enforce socket permissions properly. An internet + socket accepting local connections is not opened by default + because this would make it possibly to override all security on + the unix socket. See the man page for details. Unless told to do + otherwise by a command-line argument, gnuclient and gnudoit now + try to open a unix socket by default if support for them was + compiled in. Mods to each of the .c files and to gnuserv.el. + +Arup Mukherjee: + Removed the restriction on the length of the string returned from + a gnudoit request, for the purposes of sysv ipc. Added support + for the "gnuserv-frame" variable allowing you to specify control + whether or not new screens are created in response to each + gnuclient request. Made a number of other bugfixes and changes to + the lisp part of the code, allowing gnuserv to work properly with + newer emacs versions. All the changes are listed in the changelog + at the beginning of gnuserv.el. Also fixed up the man page to + reflect the new gnuserv features. On HPs, stopped the "-r" + parameter (in gnuclient) from defaulting to /net/. + Not all installations want this, and it's much harder to debug + when things stop working. Changed the man page to reflect this. + Mods to each of the .c files, gnuserv.el and gnuserv.1 + + More recently - added Xauth(1X11)-style authentication to gnuserv (as + of version 2.1). Although the code is completely new, credit is + due to Richard Caley ... he wrote a + prototype implementation from which I borrowed the basic + mechanism for hooking Xauth into gnuserv. + +Ben Wing: + Added gnuattach. diff --git a/etc/gray1.xbm b/etc/gray1.xbm new file mode 100644 index 0000000..d5aa807 --- /dev/null +++ b/etc/gray1.xbm @@ -0,0 +1,6 @@ +#define bg2_width 16 +#define bg2_height 16 +static char bg2_bits[] = { + 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, + 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, + 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00}; diff --git a/etc/idd/drop b/etc/idd/drop new file mode 100644 index 0000000..a7ba3b3 --- /dev/null +++ b/etc/idd/drop @@ -0,0 +1,8 @@ +#define drop_width 16 +#define drop_height 16 +#define drop_x_hot 6 +#define drop_y_hot 4 +static unsigned char drop_bits[] = { + 0x00, 0x00, 0xfe, 0x07, 0x02, 0x04, 0x02, 0x04, 0x42, 0x04, 0xc2, 0x04, + 0xc2, 0x05, 0xc2, 0x07, 0xc2, 0x07, 0xc2, 0x0f, 0xfe, 0x1f, 0xc0, 0x07, + 0xc0, 0x06, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x08}; diff --git a/etc/idd/dropmsk b/etc/idd/dropmsk new file mode 100644 index 0000000..a7ba3b3 --- /dev/null +++ b/etc/idd/dropmsk @@ -0,0 +1,8 @@ +#define drop_width 16 +#define drop_height 16 +#define drop_x_hot 6 +#define drop_y_hot 4 +static unsigned char drop_bits[] = { + 0x00, 0x00, 0xfe, 0x07, 0x02, 0x04, 0x02, 0x04, 0x42, 0x04, 0xc2, 0x04, + 0xc2, 0x05, 0xc2, 0x07, 0xc2, 0x07, 0xc2, 0x0f, 0xfe, 0x1f, 0xc0, 0x07, + 0xc0, 0x06, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x08}; diff --git a/etc/ms-kermit b/etc/ms-kermit new file mode 100644 index 0000000..e7dba44 --- /dev/null +++ b/etc/ms-kermit @@ -0,0 +1,167 @@ +;;; This file is designed for an 8-bit connection. +;;; Use the file ms-kermit-7bit if you have a 7-bit connection. + +;; Meta key mappings for EMACS +;; By Robert Earl (rearl@watnxt3.ucr.edu) +;; May 13, 1990 +;; +;; WARNING: +;; requires an 8-bit path to host. many dialups and lans won't pass the +;; eighth bit by default and may require a special command to turn this +;; off. `screen' is known to mask the eighth bit of input as well. + +set term controls 8-bit +set translation key off + +;; control keys +set key \3449 \128 ;; m-c-@ +set key \3358 \129 ;; m-c-a +set key \3376 \130 ;; m-c-b +set key \3374 \131 ;; m-c-c +set key \3360 \132 ;; m-c-d +set key \3346 \133 ;; m-c-e +set key \3361 \134 ;; m-c-f +set key \3362 \135 ;; m-c-g +set key \3342 \136 ;; m-bs +set key \3363 \136 ;; m-c-h (sends same code as above) +set key \2469 \137 ;; m-tab +set key \3351 \137 ;; m-c-i (same as above) +set key \3364 \138 ;; m-c-j +set key \3365 \139 ;; m-c-k +set key \3366 \140 ;; m-c-l +;set key \3378 \141 ;; m-c-m +set key \2332 \141 ;; m-ret (sends same code as above) +set key \3377 \142 ;; m-c-n +set key \3352 \143 ;; m-c-o +set key \3353 \144 ;; m-c-p +set key \3344 \145 ;; m-c-q +set key \3347 \146 ;; m-c-r +set key \3359 \147 ;; m-c-s +set key \3348 \148 ;; m-c-t +set key \3350 \149 ;; m-c-u +set key \3375 \150 ;; m-c-v +set key \3345 \151 ;; m-c-w +set key \3373 \152 ;; m-c-x +set key \3349 \153 ;; m-c-y +set key \3372 \154 ;; m-c-z + +;; misc keys +;set key \3354 \155 ;; m-c-[ +set key \2305 \155 ;; m-esc (sends same as above) +set key \3371 \156 ;; m-c-\ +set key \3355 \157 ;; m-c-] +set key \3453 \158 ;; m-c-^ +set key \3458 \159 ;; m-c-_ + +;; \160 is conspicuously missing here-- +;; alt-spc doesn't generate a distinct scan code... +;; neither do shift-spc and ctrl-spc. +;; no idea why. + +set key \2936 \161 ;; m-! +set key \2856 \162 ;; m-" +set key \2938 \163 ;; m-# +set key \2939 \164 ;; m-$ +set key \2940 \165 ;; m-% +set key \2942 \166 ;; m-& +set key \2344 \167 ;; m-' +set key \2944 \168 ;; m-( +set key \2945 \169 ;; m-) +set key \2943 \170 ;; m-* +set key \2947 \171 ;; m-+ +set key \2355 \172 ;; m-, +set key \2434 \173 ;; m-- +set key \2356 \174 ;; m-. +set key \2357 \175 ;; m-/ + +;; number keys +set key \2433 \176 ;; m-0 +set key \2424 \177 ;; m-1 +set key \2425 \178 +set key \2426 \179 +set key \2427 \180 +set key \2428 \181 +set key \2429 \182 +set key \2430 \183 +set key \2431 \184 +set key \2432 \185 ;; m-9 + +set key \2855 \186 ;; m-: +set key \2343 \187 ;; m-; +set key \2867 \188 ;; m-< +set key \2435 \189 ;; m-= +set key \2868 \190 ;; m-> +set key \2869 \191 ;; m-? +set key \2937 \192 ;; m-@ + +;; shifted A-Z +set key \2846 \193 ;; m-A +set key \2864 \194 +set key \2862 \195 +set key \2848 \196 +set key \2834 \197 +set key \2849 \198 +set key \2850 \199 +set key \2851 \200 +set key \2839 \201 +set key \2852 \202 +set key \2853 \203 +set key \2854 \204 +set key \2866 \205 +set key \2865 \206 +set key \2840 \207 +set key \2841 \208 +set key \2832 \209 +set key \2835 \210 +set key \2847 \211 +set key \2836 \212 +set key \2838 \213 +set key \2863 \214 +set key \2833 \215 +set key \2861 \216 +set key \2837 \217 +set key \2860 \218 ;; m-Z + +set key \2330 \219 ;; m-[ +set key \2347 \220 ;; m-\ +set key \2331 \221 ;; m-] +set key \2941 \222 ;; m-^ +set key \2946 \223 ;; m-_ +set key \2345 \224 ;; m-` + +;; lowercase a-z +set key \2334 \225 ;; m-a +set key \2352 \226 +set key \2350 \227 +set key \2336 \228 +set key \2322 \229 +set key \2337 \230 +set key \2338 \231 +set key \2339 \232 +set key \2327 \233 +set key \2340 \234 +set key \2341 \235 +set key \2342 \236 +set key \2354 \237 +set key \2353 \238 +set key \2328 \239 +set key \2329 \240 +set key \2320 \241 +set key \2323 \242 +set key \2335 \243 +set key \2324 \244 +set key \2326 \245 +set key \2351 \246 +set key \2321 \247 +set key \2349 \248 +set key \2325 \249 +set key \2348 \250 ;; m-z + +;; more shifted misc. keys +set key \2842 \251 ;; m-{ +set key \2859 \252 ;; m-| +set key \2843 \253 ;; m-} +set key \2857 \254 ;; m-~ +set key \2318 \255 ;; m-del + + diff --git a/etc/ms-kermit-7bit b/etc/ms-kermit-7bit new file mode 100644 index 0000000..7a55179 --- /dev/null +++ b/etc/ms-kermit-7bit @@ -0,0 +1,312 @@ +;;; This file is designed for 7-bit connections. +;;; Use the file ms-kermit if you have an 8-bit connection. + +;;; This kermit script maps the IBM-PC keyboard for use with Gnu Emacs. +;;; The ALT key is used to generate Meta characters and, in conjunction +;;; with the CTRL key, Control-Meta characters. A few other useful +;;; mappings are also performed. +;;; Andy Lowry, May 1989 + +;;; Exchange ESC and backquote... tilde stays put (shift-backquote) +set key \27 ` +set key ` \27 + +;;; BACKSPACE deletes backward one character +set key scan \270 \127 + +;;; The following mappings affect certain special keys... all the keys +;;; are duplicated on the numeric keypad when NUM LOCK is off, but +;;; the keypad versions are NOT mapped (string definition space too small +;;; for that) + +;;; INSERT toggles overwrite mode +set key scan \4434 \27xoverwrite-mode\13 +;;; HOME moves point to beginning of buffer +set key scan \4423 \27< +;;; PAGE-UP scrolls backward one screen +set key scan \4425 \27v +;;; DELETE deletes one character *forward* +set key scan \4435 \4 +;;; END moves point to end of buffer +set key scan \4431 \27> +;;; PAGE-DOWN scrolls forward one screen +set key scan \4433 \22 +;;; ARROW keys move in the appropriate directions +set key scan \4424 \16 +set key scan \4427 \2 +set key scan \4432 \14 +set key scan \4429 \6 + +;;; META versions of all the printing characters except uppercase +;;; letters are generated by using the ALT key. The definition string +;;; consists of an ESC character followed by the META-ized character. +;;; The characters are listed roughly left-to-right and top-to-bottom +;;; as they appear on the keyboard +set key scan \2345 \27` +set key scan \2424 \27\o61 ; need to use char code, since digit +set key scan \2425 \27\o62 ; would not terminate '\27' +set key scan \2426 \27\o63 +set key scan \2427 \27\o64 +set key scan \2428 \27\o65 +set key scan \2429 \27\o66 +set key scan \2430 \27\o67 +set key scan \2431 \27\o70 +set key scan \2432 \27\o71 +set key scan \2433 \27\o60 +set key scan \2434 \27\45 +set key scan \2435 \27= +set key scan \2857 \27~ +set key scan \2936 \27! +set key scan \2937 \27@ +set key scan \2938 \27# +set key scan \2939 \27$ +set key scan \2940 \27% +set key scan \2941 \27^ +set key scan \2942 \27& +set key scan \2943 \27* +set key scan \2944 \27( +set key scan \2945 \27) +set key scan \2946 \27_ +set key scan \2947 \27+ +set key scan \2469 \27\9 +set key scan \2320 \27q +set key scan \2321 \27w +set key scan \2322 \27e +set key scan \2323 \27r +set key scan \2324 \27t +set key scan \2325 \27y +set key scan \2326 \27u +set key scan \2327 \27i +set key scan \2328 \27o +set key scan \2329 \27p +set key scan \2330 \27[ +set key scan \2842 \27{ +set key scan \2331 \27] +set key scan \2843 \27} +set key scan \2347 \27\ +set key scan \2859 \27| +set key scan \2334 \27a +set key scan \2335 \27s +set key scan \2336 \27d +set key scan \2337 \27f +set key scan \2338 \27g +set key scan \2339 \27h +set key scan \2340 \27j +set key scan \2341 \27k +set key scan \2342 \27l +set key scan \2343 \27\59 +set key scan \2855 \27: +set key scan \2344 \27' +set key scan \2856 \27" +set key scan \2348 \27z +set key scan \2349 \27x +set key scan \2350 \27c +set key scan \2351 \27v +set key scan \2352 \27b +set key scan \2353 \27n +set key scan \2354 \27m +set key scan \2355 \27, +set key scan \2867 \27< +set key scan \2356 \27. +set key scan \2868 \27> +set key scan \2357 \27/ +set key scan \2869 \27? + +;;; CONTROL-META characters are generated by using both the CTRL and +;;; ALT keys simultaneously. All the lowercase letters are included. +;;; The definition string consists of an ESC character followed by +;;; the control character corresponding to the letter. +set key scan \3344 \27\17 +set key scan \3345 \27\23 +set key scan \3346 \27\5 +set key scan \3347 \27\18 +set key scan \3348 \27\20 +set key scan \3349 \27\25 +set key scan \3350 \27\21 +set key scan \3351 \27\9 +set key scan \3352 \27\15 +set key scan \3353 \27\16 +set key scan \3358 \27\1 +set key scan \3359 \27\19 +set key scan \3360 \27\4 +set key scan \3361 \27\6 +set key scan \3362 \27\7 +set key scan \3363 \27\8 +set key scan \3364 \27\10 +set key scan \3365 \27\11 +set key scan \3366 \27\12 +set key scan \3372 \27\26 +set key scan \3373 \27\24 +set key scan \3374 \27\3 +set key scan \3375 \27\22 +set key scan \3376 \27\2 +set key scan \3377 \27\14 +set key scan \3378 \27\13 + +end of msiem2.ini +------------------ + +msiema.hlp +----------- +Date: Wed, 14 Sep 88 05:20:08 GMT +From: spolsky@YALE.ARPA +Subject: Using MS kermit 2.31 with emacs +Keywords: MS-DOS Kermit 2.31, EMACS, Meta Key + +If you are using kermit (version 2.31 only) with emacs on a mainframe, the +following file may help you. It assigns all the Alt-keys so that the Alt key +may be used as a "Meta" shift, e.g. Alt-x produces M-x, etc. Note that it +will distinguish correctly between upper and lower case and accepts all +printables. (If anybody has the patience to do the Meta-Ctrl combinations, +please post them!) This actually sends "escapes" so you don't need 8 bits. +This file also sets up the cursor keys to behave as expected. + +On extended keyboards (the ones with a separate cursor pad, like PS/2s) you +also get assignments for Page Up/Down, Home, End, Insert, Delete, etc. + +Please let me know if you find any problems with this. + +Joel Spolsky bitnet: spolsky@yalecs uucp: ...!yale!spolsky +Yale University arpa: spolsky@yale.edu voicenet: 203-436-1483 + +[Ed. - Thanks, Joel! Your key definitions file has been put in the kermit +distribution area as msiema.ini ("ms" for MS-Kermit, "i" because it's an +initialization file, "ema" for EMACS), along with this message as msiema.hlp.] + +end of msiema.hlp +----------------- + + +msiema.ini +------------ +; Emacs keyboard layout for Kermit 2.31 +; by Joel Spolsky, Yale Univ. Save this in a file, then +; initialize it by issuing the kermit command +; take filename +; It will set up the keyboard to allow ALT to be used +; as a meta-key, and will allow cursor keys to be used +; with emacs. + +; First, define all the ALT keys to send ESC+key +; to simulate "meta" + +set key \2320 \27q ;; letters: unshifted +set key \2321 \27w +set key \2322 \27e +set key \2323 \27r +set key \2324 \27t +set key \2325 \27y +set key \2326 \27u +set key \2327 \27i +set key \2328 \27o +set key \2329 \27p +set key \2334 \27a +set key \2335 \27s +set key \2336 \27d +set key \2337 \27f +set key \2338 \27g +set key \2339 \27h +set key \2340 \27j +set key \2341 \27k +set key \2342 \27l +set key \2348 \27z +set key \2349 \27x +set key \2350 \27c +set key \2351 \27v +set key \2352 \27b +set key \2353 \27n +set key \2354 \27m +set key \2832 \27Q ;; letters: shifted +set key \2833 \27W +set key \2834 \27E +set key \2835 \27R +set key \2836 \27T +set key \2837 \27Y +set key \2838 \27U +set key \2839 \27I +set key \2840 \27O +set key \2841 \27P +set key \2846 \27A +set key \2847 \27S +set key \2848 \27D +set key \2849 \27F +set key \2850 \27G +set key \2851 \27H +set key \2852 \27J +set key \2853 \27K +set key \2854 \27L +set key \2860 \27Z +set key \2861 \27X +set key \2862 \27C +set key \2863 \27V +set key \2864 \27B +set key \2865 \27N +set key \2866 \27M +set key \2857 \27\126 ; ALT + ~ ;; special symbols begin here +set key \2345 \27\96 ; ALT + ` +set key \2936 \27\33 ; ALT + ! +set key \2937 \27\64 ; ALT + @ +set key \2938 \27\35 ; ALT + # +set key \2939 \27\36 ; ALT + $ +set key \2940 \27\37 ; ALT + % +set key \2941 \27\94 ; ALT + ^ +set key \2942 \27\38 ; ALT + & +set key \2943 \27\42 ; ALT + * +set key \2944 \27\40 ; ALT + ( +set key \2945 \27\41 ; ALT + ) +set key \2946 \27\95 ; ALT + _ +set key \2947 \27\43 ; ALT + + +set key \2842 \27\123 ; ALT + { +set key \2843 \27\125 ; ALT + } +set key \2330 \27\91 ; ALT + [ +set key \2331 \27\93 ; ALT + ] +set key \2859 \27\124 ; ALT + : +set key \2347 \27\92 ; ALT + \ +set key \2867 \27< ; ALT + < +set key \2868 \27> ; ALT + > +set key \2343 \27\59 ; ALT + ; +set key \2855 \27\58 ; ALT + : +set key \2344 \27\39 ; ALT + ' +set key \2856 \27\34 ; ALT + " +set key \2355 \27\44 ; ALT + , +set key \2356 \27\46 ; ALT + . +set key \2357 \27\47 ; ALT + / +set key \2869 \27\63 ; ALT + ? +set key \2424 \27\49 ;; numbers +set key \2425 \27\50 +set key \2426 \27\51 +set key \2427 \27\52 +set key \2428 \27\53 +set key \2429 \27\54 +set key \2430 \27\55 +set key \2431 \27\56 +set key \2432 \27\57 +set key \2433 \27\48 + +;; These 6 special keys for extended (PS/2) keyboards: +set key \4434 \25 ;; Insert is like ^Y - yank from kill ring +set key \4435 \23 ;; Delete is like ^W - kill to ring +set key \4423 \1 ;; Home is ^A +set key \4431 \5 ;; End is ^E +set key \4425 \27V ;; Page up is Esc-V +set key \4433 \22 ;; Page dn is ^v + +set key \328 \16 ;; up cursor is ^P +set key \331 \2 ;; left cursor is ^B +set key \333 \6 ;; right cursor is ^F +set key \336 \14 ;; down cursor is ^N +set key \4427 \2 ;; left cursor on extended kbd +set key \4432 \14 ;; down cursor on extended kbd +set key \4424 \16 ;; up cursor on extended kbd +set key \4429 \6 ;; right cursor on extended kbd + +set key \5491 \27b ;; ctrl-left cursor is M-b +set key \5492 \27f ;; ctrl-right cursor is M-f + +;; move kermit's screen scroll (playback) features to Alt- Home,End,PgUp,PgDn +;; (this is an issue for extended keyboards only) + +set key \2455 \khomscn +set key \2463 \kendscn +set key \2457 \kupscn +set key \2465 \kdnscn diff --git a/etc/recycle.xpm b/etc/recycle.xpm new file mode 100644 index 0000000..6f16863 --- /dev/null +++ b/etc/recycle.xpm @@ -0,0 +1,66 @@ +/* XPM */ +/* A recycle logo, artist unknown, converted to xpm by jwz */ +static char *recycle[] = { +/* width height ncolors chars_per_pixel x_hot y_hot */ +" 51 51 4 1 26 23", +/* colors */ +" c None m None", +/* "# c black m black", */ +/* "@ c black m black", */ +/* "- c white m white", */ +"# c black m chartreuse4", +"@ c chartreuse4 m chartreuse4", +"- c chartreuse1 m chartreuse1", +/* pixels */ +" ", +" ################### ", +" ##------------##@@-@-## ", +" #-------------#@@@-@----# ", +" #-------------#@@@-@------# ", +" #------------#@@@-@-------# ", +" #-------------##@-@---------# ### ", +" #------------# #-@----------# ##@## ", +" #-------------# #@------------##-## ", +" #------------# #---------------# ", +" #-------------# #--------------# ", +" #------------# #------------@# ", +" #-------------# #------------# ", +" ##----------# #----------# ", +" ##--------# ##---------@# ", +" ##-----# ###-----------# ", +" ##---# ############## ### ", +" ############## ### ##--# ", +" #------------## # ##-----# ", +" ##-----------# ##-------# ", +" ##---------## ##----------# ", +" #----------# #------------# ", +" #------------# #-------------# ", +" #------------## #------------# ", +" #--------------# #-------------# ", +" #---------------# #------------# ", +" #------------#--## #------------# ", +" #-----------####-# #-----------# ", +" #-----------# ## ## #-----------# ", +" #---------# ## #---------# ", +" #---------# #-# #---------# ", +" #-------# #-# #-------# ", +" #-------# #--# #----@@## ", +" #-----############# #--############### ", +" #-----#@@@-@------# #----------------@# ", +" #---#@@@-@-------# #---------------@# ", +" #---#@@-@--------# #----------------@# ", +" #-#@@-@---------# #---------------@# ", +" #-#@@@----------# #----------------@# ", +" #@@@-----------# #----------------# ", +" #@@@-----------# #--------------@# ", +" #@@-----------# #-------------@# ", +" #------------# #-----------@# ", +" ##----------# #---------@## ", +" ########### #--####### ", +" #--# ", +" #-# ", +" #-# ", +" ## ", +" ## ", +" " +}; diff --git a/etc/recycle2.xpm b/etc/recycle2.xpm new file mode 100644 index 0000000..46a5d0f --- /dev/null +++ b/etc/recycle2.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char * recycle2_xpm[] = { +/* width height ncolors cpp [x_hot y_hot] */ +"32 32 4 1 26 23", +/* colors */ +" s none m none c none", +". s iconColor1 m black c black", +"X c #7F7FFFFF0000", +"o c #45458B8B0000", +/* pixels */ +" ", +" ............ ", +" .XXXXXXXX.oooXX. ", +" XXXXXXXX.ooXXXXX. ", +" .XXXXXXXX.ooXXXXXX .. ", +" .XXXXXXX..XXXXXXXX .o. ", +" .XXXXXXXX .XXXXXXXXX. ", +" XXXXXXXX. XXXXXXXX. ", +" .XXXXXXXX. XXXXXXXX ", +" .XXXXX. .XXXXXX. ", +" ..XXX ..XXXXXXX ", +" ......... .. .XX ", +" .XXXXXXX. .XXXX. ", +" .XXXXXX. ..XXXXXX. ", +" .XXXXXXX. XXXXXXXXX ", +" .XXXXXXX. .XXXXXXXX ", +" .XXXXXXXXX. .XXXXXXX.", +" .XXXXXXX..X. XXXXXXX.", +" .XXXXXXX. .. . XXXXXXX.", +" .XXXXX. .X .XXXXXX ", +" XXXXX .X .XXXX. ", +" .XXX........ XX......... ", +" .X.ooXXXXXX .XXXXXXXXXo ", +" .X.oXoXXXXX .XXXXXXXXXXo ", +" XooXXXXXXX XXXXXXXXXXo. ", +" .ooXXXXXXX XXXXXXXXXX. ", +" ooXXXXXXX .XXXXXXXXo ", +" .XXXXXXX .XXXXXo. ", +" ....... XX.... ", +" .X ", +" .X ", +" . "}; diff --git a/etc/refcard.ps.gz b/etc/refcard.ps.gz new file mode 100644 index 0000000000000000000000000000000000000000..eb4b472886c7135c6f8a96bfdcc122a9672e38f6 GIT binary patch literal 22139 zcmV(%K;pk2iwFpCO_($S19D|%V_|Y+E^u=Iq+9E6+eniC-hTxbhXH1QwcSlp>}HTN z#-hkWfE{l(4sr&9d{89X){QJ_B{^}9@c(}GtLmmmS$Uw$dp^?18nzlo;bW~SJBFaNoo*3`?{W>PPv z^lZ4iTTEw*>*4bLO{D3UnK-g}Os}HRa&mWDFShT;t9pGg`(NOh*V}Eqrnlu{S}bqz zdZT_BeR}u)0=MJE^dGZD?S~N^jiN;B=;)u3{=4oI#-F?&ugAAFAtcPx)$Bj1v43;1 zyjxEQPxP_AjFxxX)g3sH+hap)v2RSOQ&3-D&ld03%gIH(eG_f#`{UJmsebvJI-$=- zv&lA!2RfSKVp?BC;o(<&7M+|o^zZ>MPKM3b*@|`UjU~E3?sME+qN9Lh9GLd;uv#T1NK}7n?WVx7(w-2)`boim(Ea!LI z*>XW6{e~x>_8u+j>u5s?Q!DPI(?ho~7Er7sW<%3yb0m$_&92ddr|jbg(9>z# z#Vttv*O7_F(<#1IA3uD)9dFmO`)G2vUXwD(T{FE~MJQ{iXSBKd8jZhhB7LmspNZz% zhF?&J59(^U9?$2#B?#_Ze%aI>BV_hF22Olf)s4t+yS}R-UUl+2Y3|*4epT1gX0sh{ z?>4M7C%ebenA8y3@cU%Bn$?@;PwgoapR%MAu$ftL0+*@yDu;612wMAHuk+#dduko(;*4BkD3b zR~ve}xQ2>!^YbgNLg3QQ54PEA+_ZlNP5B7DAH(0h^vdSIcThyk9%ehANODk`}Cj#{0pCvtzi z@;d74|B{MjLUl)Ln$7qdG}Dmnku6>@k45v)Zyb?xt?&8zVyA<0D}?!>UPh2-YZc4~ zr6bSq$n!C3MaAssyk$xA;Cxd>nlKqpZt7|MZ8oWQZFVSN*gLa5IyNmrkDT!wGwZ)J zf$0wnZ^sm?*Y$=%cMVpKnv=g_T*`4k=U=uD&pk)P__846F#`x8oHNI#-W1y3IjGVd?XX~2f=2Ms;GfCR-$g8`ZhNW=({O}?=s zeW38BvVnEx*k*!SV(Dene<~6A62n?G7$mMf^dpku5HuVu$s{u!`iAA-&8b@*E`P}7 zx5nRHh8CC6Cuqti)u8(DDeA;ZAEzh*o8Hmw_nUfMvv=lH=ku?l*=98#|M>0K^ZN4R zZ|c{7kO8d!dp)DA6VRgrG%yR2-m?S zJRHQ=#Ugmo1LIRWe236^LW%kR`s6V$YSL$738$wtu3O1})LtqS&2|mEsRpU9=M*;S zUVD-dYW*`MZ6x@Hc2_g<@z))%H*N$Yhw*w&ew_7(^BIl=^6(Nkb}j#)+!{d}uVDBg zrhnz<;cn6#rO_XZxlu=nT-MD|ELT@ZkNN7l(QuKi^UP*-WbAflCt;4Pu?=Ce6edCBFRHnSA}G z#PRv57Db%f@e0}Fo2VK`liS;wAumOLl+uoAoP(TFuD6-4=tpKsQ!iV%L>H$67mcD) zfv7!9hfq^2z1;@XIpO|F6=gj!uvb-~L(ykCu_Kr3>NFihqqo|WiMGaSdTpGp5~t~b zE-e?O%Tk-7Uy?kOOxrv$`I#woVKn7fMQ+UCG`DK>HmQh3)|awhOwlil?aa8O&;=1t z&?iMp050~3aMT=yaAou>bV8&XAg|1bh$u{Q`tB{=Ick$qt5i`prE#W6o~A04l;q$t zZRp#KaS&D+T5_s@R$H``_8wvshaipS05qjlKx04!F`k|{Kro*m0ZX zW{FVfFhqi;0}~K&7?uGlsYqy`p|Iem&7a|L0nX7U%v649p@W)c66Va7Oe+llN?*NF zP@*Rus_qS03A2Y4s^Z2xR#Wbe_3?;Rcd(Ff+CozZ6BOsgs5{v?9YdKMBSUpch6twUQsU^y6cy{?{yhVQGAh- z7NuSgIdNb_(jSrt$uqt+1##Mv24@)=KWTI3k~3Jk1<9pm7eRRZMd`(}tBD*i`fx1* zLrW*M@)uV7+DPjphSKp@W+WC7$Hb+?K|Rs}>XD9sEER%suJYGe#53xl_Vh!H(FPNT z7b#c<8FM~i7n5lJx9dc?ePLVD^Dci@KL=izxk4!b7HxH9Hw!v4$ofQGgduwv4A zVllHen29;(S(i13C21G%dvR8I}xM%ga>ph4}gRrw2Rl}~+Z#_ILhhr<$$w31-QhJXF z#XnvNibh0+RuFe=y2SK+7)S>4QS2Rt9C(x1oSNikcr+y*t-+!cx$Kmx zkjthln3#W*ENf`D&MBj%%=|Qk{Z;gj9>)$z+>jKB6F|vJd^<9yN<3udf0W_#fL|(v zCvHDt7h7?*kGSn2YNqZA4gVYWd_1sG-lCTr<5hF+N6@j7mir7zyhgO;HCbgM- z%5H#|6GLxVgW;)|ZI*<@g4&S{hA52Ba_|eqdk^nm3f}|g9w-Gxg`$$eVK#%W1|o7O ziLE?p5NqjcOX{7bLQY%Y3XzP4MAMH0)~!mu$oOS!yi?o}JwPg#a++5aR9s2}bnHai zQNusOI=te>zLV^U>_26%n?h&N!9Yo_h+rSn7&BiGkrE2+NfnY|8oj{;4tcOChyiUu zdlFJ24D9knbkOktQxD+lfu(%AjVj9+_VJ#gMX@h zji#)hdmlVA4QksU#j51v#8cvPq5=u6PBONRvXjnaez+OKT~eWX8AcCg9WIGl8Rm~> z&alX|$Qx8BRwqYfz%_Lepe`@z>lQkJU;x`0bDt6sF*@yGED3%GW*tOG}8CFd}?WNCsQYt7$e#TO9 zdlMD)c;@oj!Ys;VkmTb}Eu0ibMdW8(Q$zbiA#udrnlPqZD}Mo-KUnjGq*K#ms8@Tt z3dvgHq$Z+V0?LM7F6F7Upcvj3Q!IFN%L<0cmQcoYQ5;0?ad3_vCeTaj4G>c~f)zu{ zkjOE-FkwVKuru)>8E65DodS@B#mdRS(AT<9VIwM zB2pz&R>?bD%qeopD#jQ}NtPc)=YfyQyI7orSS<0kjl2bDdlYity@eW#01FHOTqfbE}mnwId*u^|zm|Q4ocat$<@_}xE z56V6I92;NE!AC3|rWt5c`vg9w4|4MB)CMuMLt#~gYxU$1dW9DX$U8et0p*P8L+V*( zG0QhY{x83nGe)wCYM11~wv&RA74LJ)b57z@;-B84ime7 zn7|zR5m}is1NtuI`P#EoX1HA@z@y~lOVT+_U21trqG3m_XH)o zp9+Ne=+1N{B^*aeZoqL&Eimlop*r*eoJz0*!)j!Pg8Nx+tNjPUZI3}zS+pIRx~~B{ zO;BPGnDWUS#bYo%8eTGYN(Z@NQXUi%XMYuDKb|(yV!|9Ya?(y?by&JyUh+m-TVtk$ z8p@->#o@ZDWKI_9r`o-U==Jp;B3qR_l?yfHwj=CGn1ZZ|x5xZEujI7_7z6LMB&EXl z$gVk!ku5n4!IqYnXDqYHhCk`A3kk~*d{hRkMgNY{PqrJHsORj6tIm@Bi%=bYA%ZKB zj`4;ko?8c)6dhRZpz7ZAVCMs%V02}{nO?$^IYU~Vi_fNvwvv4pUccyn$%aw-os$=! zb;{?3Sb&wamaxIei6M&!>*b~2(P){r$2#>YJ_|V8ow$dDwi?e z6z5o`SP0}3uWmRtgrmUtes#E zncWWOCw|VppMY3orXjO^r|1se#098-0;)qVXskRR2Q;o@-|P~revw(?6PxkY@Aa8i z7uA2TJGf(rnta6Da+QQVr#`kmsTE&R-_c zrVsGt3y3OgP{5vAuL&nzu3A(AE;$E{PWSBZx6>!NoR zVrc(L9eVgzu2lb_C?Hv&+g-&zT*l5XlN3UJ&k)pKv4lfV?OB4jO?KEOIP9<@k?^8~ zn7=^wiVjdobqIDp5ER~b$U|}1AxChEN6pDY8{Vr`@j0THe1An3T*Lft6)} zWxNO~8~JihPGEPTk`KOQzH3>pb@(eoEr9?tUcT7XFnBQu8U)ux#v3>!R6ax)Y6?qs zAc;=yJJ}G&{!MA^JM1`*aLV{ zUq5la!fE5JOq^{@6KDRvk|xe}XPKY=Wo>S>JN0aGOQxhKA5X9sf>oi4)5^oeuNv{m zDLv9dTjWl1d0xa)QauGZoOx(vv)KB5oE_xMSV`4|w)3$-Q}DdvSxD1e8e$cw)KBa^ z$vlMJb0Tz&3WOz7VB$!q6jwIDiqA94q1ePLZ>7Ve+$#)@X8_X3Gp42zL>1qZ3@yL5 z`KSs#%U-WP>D;A}X(#8cdFqxaKJ19;spVOlz>>FNTUhQxBP!2Oj+v-O$8Ezo+viUC zg_F8+z>Q~aoI+ueT=pQ&e+QU!h&4PTG6{~wU_2NOPybYcvwQr*sm6*=T#&MktYa}I zIaW&8)0DdtcID#(c*?$fh8HQU;U zP7>mrT^Mj@{G!}vMAFccw0{-VS}vX=<1MsS;|e69JJ^{V{~FmH{$p9 z|El}e=EiaC(C_#a&feTwX*2Ex2#TPlQk}GEa+69XnLD$4H&xra_sSL}t6P>ll04l# zoBa3Sya14*WV?H^l}wLGkRlFV2M6bc1LT51NvkJ%;!4h@*~>3_qO0f4iW8peou<9) z`;(um6W_BtVWbd<0JL&7QH-o@6`VC4Zhmmd|MeM1(xEG4S7iqT0kx>aq|&Hlss(ex ze%s$4g>H(aX6O*XM>C0n3># zp4gm_4p#bO`dUS^Gi_5~59|ax9ph-)FGrPB4)`5z!mFLet21PU3adFQz$zkP=-1#%HsDvo6yvP- zND!@*;9GCu=Xs5Mn~8|X&h$;fa?)=q;rMh+Q>G4&YMSH~Gk1wb6g`A}mrZ<^72pO2 zPA!#wIbhX?{G4X=TTu~_P3x19;Xw!12epr+3TYCgC_=GPUnP8S^9&!K^2~-AB~-Uc z{JhH}I>C)%#IB>(+FrqYLI)x@#o2_~WQUsB8vSXWb9Jo4tsDb_c9TCOPLoD7tHdS- z|Cy{)$vP3j72U4l)uPjT=ZY<*8FK1c%LbpiE6p1mtJE2vu3(M^^%O9ol$PnBX!&Ek zc^vPUduS6?&%29Mfn0%LZ;78)XS~Itd4WhCuGG@2*p*?@nuh!^u1ePQlg5*r-us(a zRLLk_Kl|DUIShc{e?=vTmX*6(82dg_4)$b2zKrfvZ`4nF)h1WfakTAqBHKS{&Ppvx zWSG3n87m2<1TuTl!XN*|Lu^-}N0;cHHShI;dOiA?KRD0C%t zsH6=4+cz30<&`;my@KoX%F-?4Q>qZt6>~ z6=Eh`RgE{g7I<|>S4-Dvyc)V*BZ^;>-)eYp4Qc(s?&wGxKIzV%fk`f8QJo=qHt~!_ zgeKEV6!c$!G_DD}Jf{8pXRtR!yHGF3-n^b}byY+6zUJWmvbcO!I z;k1gzvrap+M0Uf~Ru&R6c9IRD8QKsD9g})&TIO|9&bH|h^kc@B#1+L1J`xWaPwK78 z4N>;q1dIPv`cS`U(dk~*lOH*zGhq?xPao`T1xjyv2s@&C*CG6*$YRbAr^uG(MA z?)CZ_G{e_r|JpG}BU(&U9C9){Hd_AbXX;~W>7tiqh<|CJx>8_XM8SA!0uP?{w;MvA zz7~%7-WTRLkwLvUN0OoJDFZu=)$X(Y)JrpTdpPLw6ifB6dc*X&Zcu#;`^3P@EvSu8 zX=z+d9D!$7E6*R-wIRX?rDi9V)F{wAv7UouX0EAx#Wr|iJksUkIeZ~8k?7z`@6#X4?vy4T>2@p*}iuMTJR2gX@4pM-3Y}LZH13_gr5G{~b%BU~(lT=dotOR^;9p zGgk>Ny{gU=?_midVVVKebiJE|5P4 z+Eu{DdtUWNTz^n3qIip>IuNH+DZ|UWI6y^FwtHoE!v7CjV#T*BI^B7uE;x@pZ{8`M zcqLAb$kLGiOnsWA>0j0G4`_1r*C}4h<_P(iYjNyJ+jmwXRHMHmo%`88g*aNF(jF%$ z#SV~(*)R8~Si{At7nXbSPifwV+>oy!GAlT4*BNY(oeIAa*flrE@x;Zo#);LrYKqQ) z=z?k@4oH!BWwCU2g=62C9)9VXG!G>T9b`6!w8=Z{eiZ~fhZ@B%m*hYh^s)?*CWw45 z>?!GR{7Q>Nt7eyGSP#%bOIKVo&tKK4AN*=p0XD}g_yJ)E51M=EG;}S5MSaeU8oH_z zGb-^JJu+yJp`p8wsHaR8<&dpnz)GPyD?K`;UbE2fqUBqiUcdXxH&d$(3C^6`pAITty6#1KeLbY7?8m$S%8x(Ib1Z+u|_j%;(T)p78cNhKE1wt zz7DL3CmFKX)2=~P98Pdbcf!~VFb1cT;zz1<)$xE6yKyX<^x^4sSZk$%nhURH3Nawe z^s0ZozJh9B;|6l{%T3oCC|UJd?HY?$3PyzAI-4}5UwdXC*^EFRQ3f^(AXm&CYD0&f z>~F=tOHcRv+a2|HYQ(cs3N1rDeU)sbO|Qcd`p8wrT~$1tLWnpv_M~*nCTeQF3du$q zZ|Z0z5{p#yy>uO0YhP6!HUNbH4Ow?bg5k;qnriAVSnO?;0E;||YZ7zU=W-3TPSt^8 z5bT)$�`P_YcCXImgh52&e(HyhWwMNWMxcDs!8uW-|KD} zwyWi@@{1h&?w0;`VKPe_)=;`*FG0gBxwM9q%Dmr~e1>TSC6&0Q4O5lo#qKCg`^Ew( zA5JU%jE}nMM*b_)wCeuwQlMW{qyK(@fco%qmZVkphwLhQ%l?DAjNp zhd(?Fr&-N?l(szoIObRS5Yx^!)lj;zv4q-$w5g2>MIf;pNZU$>63~T()2`iI&5PXTZn8xW;CTaExipmo($OSrNJmRR z3RX1Ad;|xIFr{3n({!AIN!lj!G@ZX-9CML$=;jO3>ZKXniL^?qYEPs?lhd?|RD?YO z8=aT{A_rxfgqv)VZKO0fwN#deTnVQ4=`D_b<;Oo`vxd;8q502yg%Za)acW8(%9E-x zs#eE%p{m%PCQa9aY27p@((2R?P5H94dTEB!fS#=Osb;2K(dnbK^IS97*~zs#|8dj? zh7*Bh*F66xas0_Hc9fE>>aiU*G~2`uh^aV#Z7-$Lm$W~v5gpU16pK%tlv8z};b&46 zPl!`sQ1#{{Ihd-$FbvRAIQm6Y{h2i+ZVN>Y{o=fQ`QtG)Mrl}sUBvNLW zSrZB6eMWMxekQ}rb)tNW70@iSLh+&o;llj$m~wt-i73H5bJ`}=9>BS(E# z20$Gun|5|bNsXgpuao7mOxSu&yb-Ug7>JrzR&f|;B0D~qj2Tw6}3 z|A#hhFg-kisym!0TwSN*U!_+O<&LlF)DJJc{^bE3H`5eE1u<}{YQz8~zYnB4Y;IgZ zb;4D|8QVmPoU9AtkRKvY%W_!9v}M9?X%|iWp^0SP)G;lZ5!+Nj8-kHADjfg?{e(q} zOh^k)?bFw_3u)M&TuEB!jzXc%1nof;$QIR9NKVQq_R<7N1-2sgMVDzWhj_;hPl?q~ zr?~khnt0}lt7jz8OsrB!8ybtRqQz~FG_kVSqvI8mCPbt>i z+U`YMgrc)hKb2YLT4*b}5{x!td+0w0EKj$WghY5&^5Tlo-?`!EsW8_ko>j^E>WW_+ zJwNlV!VA`)=u^*zBXpg3R;6ZtWBK6tnO*psz*r4EtN6l_)6vOi+9Gi38Mg!Q?sL)V zKK1MxTOK_pH41Kur=AU~n+Kn9Ct z3&ezowIEp3j~kjGT|Hmoo}SQ6(xk0FUxL5j?XWRr!n*X?m;sjN z_=ll%b0)2l2bbu~T*4>0r1`?qSfH8-vswyAi^yR$^Ex@joTjiXmbVT7S(;KXN5^vo zT{&=$sG68c%Xd@jX6Vk*n>u$9{6*308j)bd3AG6htxX+dR}rb>2O$R}WbaA@Uv~7| z7EfS8 zh&rp85#`;N4f~(P{g|iUbR-%+c}g9<68W`By#4Cv;Bn$j*P+Dez9+BKJ%>-7D4+OE zE!Lv`D;p#Fm_#nJ)3a|#*XM-W4C_?y4M$ZiMe3z^6~wp5qIUF3(^&|bv z(Hm1If)UxbOd<>&y{U=SvsGMP$r2_~w>o|mHD7GC>{hip(*h)h}7NER*UV-4lxtE(jIHK}Tg| znf!4nd~fRWcl4laN{W+vO+Y-R5+kok`Neo*u3SBRlNkx+TzAGzQtHUVvRwigIqvJG~?-VDNLHW#J8BsA-}Vr&N96AQ2PnOH%6PS%yIgk+4r?Cr z;>6|PxtdXv3~6ORS(-0=cXC(4xTg2i{#rj1Jym=`V^{Meyj{+AJYm zG^{fJAX=(A>QE)4NSM)+gJVfbQ1zx^FKyMZ$SCH>(|7)kG8&RWX-46W+)@nFF>-tj zOt{A`@(vnaocoKV`toJE?`QgC7SSTrMobExrIby3by(4umyuK%^mx5geIljK|NQ)v z`Z6#a2$91OaWbZm`dth4b3))MKHaHi6H~>6^-MH+8RHNT{mDP|oR7MH;+9IJGrRIt ze`9i$pj`j1UvO71%^-K$KpyW(5)^y9CW$Vb(pa=I8F$TD( zc|_xkQ37P?Yan7Rtar4|H&sEZXYM)ZF^In4`&EeZQ-vL=RiMFDErj>F?4){xS2bTu zT4mPTpNCefr)lso38wA|45+H3*)%esO_ea7RTv-3d?hnFox9?|Q<|g3f7U$!63DUS zl8Ij#sEJ_~T>?UMJ<0T}1ba>-RxgpAkBf^b z6>4LS<>b(mASTzrdAb&@5U(fd=TKhsn5$^m8cM6o1Y0z3&;i6#*t~7aho;*YMXv3*Fia`^m z7du^xf6ae^R7EZaXRem7cvdu7dYa(qZ6;aanm2v{5FX8jm?!#CnhoOC-WrMpUvG-d1K6xS5Hr}5pB^LgFMl2So9)T1=<+;vnH z^1lCG8vSQV_KG6sWm|UB=q5uOv-@dNH)QSer6~j3|Cv}NX*evck>E&}W?wiL(&Wi^ zRmuj(_)6-2n$&akKw2daXtu0+>8zn%m3=&L(=U19~gK6EFg-9S2 zyZXw+5XwQpKD7>hX?5Hl)98*t!!=>QrMUY*=#6McxOnys{=19Y`yCydGnuMi`{&8@ z!elvZ-*+{|b*{`69s>jcZIDf|mF0a^MnY)nyuYlZXJf9q6RpRCUhqLGSQeQ)uS2zoC^4bDljM+m*`W!yh6aQf~^{lBJHdE3u)o=(huyA-H zeR7O^de&Ld`+ISK(>{O{xD-e=;18fy28n?GWtu@8xY~dj13t|8gOj-jicwm^6TawA zA9aKZ(7D94!!oWN(h;b3&DGY?0kIHat@q+{?>#_$bJJ%7dgpRlm z!RBy!d)>sCi|CZ&v>ZAk^DjMk$wllHtS$V~2L5!0&Y#aLDQHlw3URQx{d9VZ6rW*K zH;lVl!`-4=tqSKn1=#GosADxkNY=)6!$qQJQI5bB5O7OY*f<0@k>bf=X_4=8vtrRVaFA_ND*D^ZOt`VKp^= z&QD5;J#&igG{bkpT&0qPhTzm<%J`t zUYencgmN{dia2U`UEqm{=iu^I>gc5<$_8%COyl6FXvaDvB4c9GD_NZ6 zusEzqbKN5}4evoFXC3}VG%CCaK{gs0)Gt9wmYPV-(!)N9j}o1rG)+96 zuRJSQPd)qb+JSuOWU~bye~0ImBl7|GJltssQJJPCIG<<@# zWw%LF9v3gAggf%vniMlRa}qf#A!WC7ncR8dOYWs%m2k#Rlb8TV`QY8uW%nNT5~f3~ zP71lip-HjSPWPMMrO7(_~Co;FzFKzLKBscsDnUU1?@$@U(zm7XZi#khT#;jS{JyvuR5jcY|t9~ zxraFgyCsTZqzBg5q~^fMQRR4~RaxP=@xfQmJMjF}ACAG4mePuJoSH+?m~i;{>Hpl%daxM%6?h;C9IOdU z8&3{>l}$>^sM)-TWS$!Prj8NJ1J3!?27g8Ee?@!E4Lre!=eBqGAKlRcv<{@stXMk-~FsBtZ{t?Y zB>hQjv|syGviJ|2kn)_hpT1Pd$teKtn&hmedI`nkEr*_zy-9kh*0^v^aS@%!v9Re` zvqQ_U8aO8_gSLVhf-Ai4l;O4LWP=S>(eYxl8{v{MD>H zuCR-ySS)QCI=Pg6_7o#|g-26G7Au)<4LT!R$ze2KHAysdZJ4pj$+m?OTv^5|3O5Et z8@diy-jUj;hkPh-o~x*ECnsL;q;p)6E3V2_nWcAQ@a_yQB1#h4Wg74HjYjb=+&wkm zGmo84?^G$lRv}znJfT|!!Oq~6=vbwYI?1VW zpiHiL#-wMy(3q&_56by5QRfClu4TA3bVbRw!44`4n&0I4Ws}(r?ywF|QL|-^^#IYg zrq){+SMA$nw;?DTXT0y#eFG?Hr> zpG@N3Rd(F$N)AY*Vno;I^;M=p5M0SIh6bLr4o~W6OW$WcsV@PO)=lXXRn^_tG#n!B z^pi53$D~tT+3}mx$zb%J_{f4fhMtPUk%nQ9=RK!~JDcQuHrln>B-^-6(+P8BV;H5* z?sDs=ox8g7#l0?^x{mR>nQ=2@cU3~tj;*CTfG%#Y3K zCy8+opHwn7ogZE2sY#z~`eax)tdjUkDf%5fAsW{njf>aCG(qF4GXU{L(>dBF6l~IM z$W=I)BE|0nM5WW&9G>gWvu&C{zN${lxA`&qp-!*GG!8uhE(Z&I(x-7ZnxP8-7e zpM_d(sm_&V+M{&T}8 zpoLLtN?YkT1=6^yRcAj`I*#@VW{UDtrG8yz!Q>{Pch5bAbu~t2Nlu%SwbNDU3KO5I z#QMOKEnTgZO^_(@Cnr{^O4qG`UWPWI#iyFjzZ0-F4ZqYRCr-KkYS@XUlpy2)Ytanz z3%$^eq0IuwB=bNbai!Ji6p_ZTzY0%^PFIX@Y;DpgrIqeJxjt_vyaDZrZIWOSrt=ix zxGHV4gv}2|CKVekyU&=&)M=YtmG-2olD-Qus$GI;%)Fd?vd-i2HK8$@m|~F4cq)yH zxL>D1*<@c_JlseEL7NzmHHK+*Arhp~NubVwlmzI&;KYp-*htt?sYEEmgdmggV5xXy z01@iAo#%YYhRmD-0z;r1+r{nofTP1S7tDboC8TSAv4T+m<&ZyqqxUD;JLQ>}^cvaR@=#W6Cx$QlP|f&WA!VKXZk5yvfQOH%KZ~}b^Jp|)=2Iz2K0INza$_hr*8M|=Gx1I4d2RHR!YTyf5pg2LhXfZm z(50#3xkxr>17!T8Tq^16IIVQ|Na@c`|F;K}49UrKHf2twW_u^DAmVLC$MoW0)43L~ z^_=)X$9`J{-)p{CfxWX~rj_Y_*U!4EF9mP}C=EiM-pw_yE}2CCz$2(Rl1C6Flb zHoPrYHzMy0+$$Y-1_vK`6%UHAF@}2-#_N=>%Ccyhp1KCeW5t{DI1aLlcM-9vCS~xW zZffxyXU8NgSZNA?P6j(#Q{OO_n3L9zb~9K18-Dn9w_R_SK7G|LSDWwK!{dX0XxiD~ zao2u*@vHCJ{dWC$SZy~Keg@AUR_eFyzg@3x4;MF(!GHVh?4jL#zxv64y>1VOb|=7& ze+a)r!Sbu3XDRyI+0th)7e<*2eQ~pWxGYKo?hhXB!T zVf@3W9p9ah1eZD#lF*W>pW&0_Si6}VHI!o3~s+S%OaUv0+A(abmHtv2}@fgHB} zRXblDzVi2d>)(x<)w;z}Z=j_0)))HWm4|AzqsIJmI~#9CKOQwF*Apss|G39mZsub% zxsVThu_NDI%hBp~yICzh`4Sd8Uwf#=<7Q4x_Pu7H=b=5-0!cg0ftHan&!3Ylv z+1<}J&}qIc>rdm{4<%>*IL?g!xVpUcP$o`O<*{}CMN#0;wA44ow*$(U`Sx??ETOx$ z&_N3>FrVrp*o(2}uMLCR&wK{N1RTpFfH$*S|Kod~La6iA{{1+2rRoEP`nke!XC^>% z0NRdb>-Bh{8iBkY7p~uG08tu8^;&KA?audIc5wr_eD@=c;dMWLH`*@zSj;xt!<`?5 z!45dwt@i$xn@9hf^&hFCU*HM~lsfO)hxN=)8XSGhyNFOftPXbwvK_CKyk3kx`Lec; zKH&#s?MKpo=-bqc3o3xWEs))q(ma*71(24){*!c)Nna+WGihDApF! zqapnOGe}!Q`0^W1Q2^8LM*q;RAN*(=lTCSc-Eooli=RH9_J{T!`fU$StNVv_`^qEr zZ{xIW6_#~3ULtb%39|4sWKENdJLR26j9q&R6mkE`KmFqZOLe|f=_I5Svz_li-@FzZ zv)dmo4=b2Wqenm5Fr5=}v6OPN3`QiNC(tiI(gmQ&;qkEDt!C@-1N`&~O3iXlp+-ME z`kA++X8OKfZRS+piJ;vNNX(`({ckjT$U3Nm_bFiKn9rBJ;0KLQ*Du;${gsy&cA9uwzrRn`b+8lv6~33S|V(h z3k|*93YFR=v~L+!n$dc@2OPSAf}n?iFop?pyPNIrd~f8`$Zupa0^A?l-Q~g)Z9vB| zv*!vFa_I4Tx4j3N<}u`9*Z#QLKEjmbbwl}uZjVd#r8!lieBoPJIxh4PaM)zLQfxfz z#|>hXkSX7JzAb>9v(2&{=K?)Yt;g{loKK}0(|Q`#4iQD{T`vQw>%?N*ogp# zwJOW(Ko%h9v}T5EIujJ!VKymg*DfE|vmLdi{pd%1&)ir9nCD@w{f0`lHe_cGj(cCg zwS%yf2WE9xI=-R0O)D9-Esk0WN9AQk*}toQi`k_bg!9;^h>EwshkAZt;cMe3^n%fS zH@k(pDLds+y{`Wm;1p7gNPPg-?c;7o73qx6#M+d;WQFh(zk^{ZBfhjei|zyykQ zJ>UIb`H|piFQ96-GcPi%_r4n2%^Db8WOk6^`kbE80`70S@!Ua?`w~l>k#padesT1V zNL6ovoK2vq^O2cOOP{6j?EDUS^zXNegOHwGi$5vP>if~c_2MgF8#cGVe0+;&eZN8s z27$rjaVxXx)%gAB$Ly8%q=uy)Paiyc14?S@dE=RZb{oZ}>>^W{7oI?D(jYXIAT%vU z-)s*=E-!_zrtw|j%7SYSjLSP%?S!3Oj1n4dC;E7{=cY?Epv00Y*1@~U)CzLkjE%F3 zS@R2N1_0Os`EXjM34Z8{{02Yt`2PuTXuaCB<6;^J_XB@b;j}UW0bUlN>2Jx>nr{;4 zS%A2tMj)1Mh+kxB$4fz8sL5;)YGwf>vOlF!JmHy=d#>0lGi%}7YIj;L?x8DCP2%1Ah`33wA$)D4CZ&-Y* zR54UWhiEd+VU=%#&HzQZxl~+bHqgvRk#5!~7*1#*|0hq%Rz5E>dBEVUM%RAbL9S1$ zsVN4h@&!-j_dp2qY4MzSJ1vTVd5f#tThILZGFuQ?h%^FVm@_4>^{|-8oSCC^W+o@+ zHGZ5;6<`Q`T=2)(XITBWgnXc&z}0L&^2Oy++&7n6dh7kTEI8pI854Mv&Rp#Y@K6KH z_6=t%CPQ=To6Ad)W#Pj-yO1OZQ$lI5lTAi~zvoJDo=vAxBnqop$sgZ(`3c7;Cl-c8 z8$=R>vm7C_ke3r_Ddx9Fh4}?*w|(?Dx}tgHd&$qvTSCFxmU_(#vmPt`V2(jdWPm?m zA6&>U0Da2x@+V}J-_v3sx{y0!B$l8i@KvLVwtzx`V4@rYyxXyE0rR#2@|`Fbl39#x z%8D?y2yNmrngQR;cJC3}y)flOP;8m+y7xc&>ExLNKg^TBoBTaDF=au%|F$A&D-*UW z$^ppwqF_r36;!qW<{|vt9&4;VBCK+%hUx=->w9)H@*=Mzyx?iDAK#MP#hd}+LY|e< z^uNdT#`16=G{LNNJ(Q#<781u z_-vFev@Lrz5(?$V>7DYK!>TfwWW5@ad@^B4=Knl`n7s0GGa;3iawaG?3Ye0Vkui^W@=PjJcB4DfM}YKlA&FP4dTu^(qy$jr6<0qS?j1^T=1 z^zG;)N(z>Q@4M0e^<3d>y_#d!feeYLw($}y;s>H(=Z@Di~eE1de8xmck!Yb>9j3e>laeY`ltlM!0Qo`?1o46T$02%(WEQzlS zb>#8$q7EyxgZ6RnnK|9#(G0*4iju-$3{6y*Q3=O+HLkwAYCNoY%#tiDX^N}{$UySW zVRehDH(O*q?jZx7@nta8=x)1P{j_D#9>AJDTWPVX`LTv}%R+F{&U_Ln?vJ<>Nj^Wv zST_S%VXU`N(Y`qbWp!Wb*aES!g{Wjb(R@!NF=kqTs&)qml}9;RCQ$YI`U zxnu2ax3iYmA-EFcy^j79iaV3@HQCH|3>c-@MS)Pn5a%n8L9@uVC;CJWwN(sum5x{(`~+%sxfQ8N>`q|Z zgWgK5MT-G|V83Ivd;)NRk`$xCAULqgU84GA0if^H0H$Ux8>s9Kr7niOd)yGRUVH9f zex{m7GX_A-Q5YMj=3%z%!n*4;*{EY!U_*7p>numj_!5>0RPd9ybx}I4nDLmioOdMm z!PNENL*4U!;E6He^yTa@ai>I6_^ z_7)dUfV8%V8rdI6w3`mqGfFd{`<{bRP4)R;kbl;X_rOR^`$$ZkV6alLWpH@w`jxm%!!#f^53VV**>6<0a^34N?sa zIp`i|J5ceBRkw!LPL9~{EeVkf^BsJOVi#77ZLoK#ZR9Pz^E~Zt`4y{AQ1N1fCH)hL zngi9O)%L?3*kJG2uoo)ZLS0p;Y*tty>4-vJ_+-RP%o*sWku0N1TD*gK3w2nFFZbokVaET#xKvOQCfrSVqxiKC-nqbfW5?Fm(GYE#YRbndZfNB|( zvL@>o%kt>AvV>&|F)*5omVNc6msdqUwitOS;jrC(A_XM@McHX$`ao3|Xrdo&1H8Kc zFVjJ%wg*I<2odO+(%3Yg=-$b8ma$lrc%PU)!w4ee60g)FchMhge8C#-j799gZaa|^-1`D%^kh}rlU4JJT;*P3eW3@TR+kz37F}@#_H2Oa3jtB0 ziV7{;UpsD6yVTkv4^LrK_uhmO68&Xh5^jiu_jSMEH4zFdrhQ)aJ^BJ#CYr>@?q-|) z!+7Tj0P(W9cEo2L=ocUjMA?BiOl<)B@g!;l559MD(Z3C54VunLG@L`OiIC~RT*N;W z=2+8;c_-)c0wcQzzk|rIK_ac=k1`Ifn0>2`=3ky`K z;KsfbU2_I#=5{#5K6%Hk$ESv^-#rAkBsdO^by?}nMqLpd__#R%(**{M2IKg55xu+ zVpf9h)E>SW-$l|Mz03Xz>RE`3OXv>tCB$5DZJR@!m^wnaM8t7)Nk}FA#_iyd;1$!7W?ia3yLc0P-vR^;ct%{chrLQ66Nw z(bHiGu7U?IV30SonYv=ogvj3zH%Y33J!M_> zSZ@1HceiVg*_ZJPFe^zFgPe%tDWYOf8L(uY__bzv)|=S$Lkiz>@@~>&AXM6UEb_Ob zd(S!fD(kR%-aH--+l@iid|D`+UvF-1Jd?F2>kaE;W^<;X%k}mKeGg~&RdhfJy$7^; zNk*G~W>E#LkpQP)^0F8JvnCtO$vSw7>DTNPPEv4YM%Entv>0sSc$0u#`JN^=xm!au zSi@L|cuZp%ODV(TQ#D-1nyflgF$zDdSGOzBZO~p1fIE+M&5w9AfP=&9g!|__U70Bg zc%WnYw3*$r$|;LW(69UaY~JH%Cl?bn@my`+_VOLuD$#YkPRy0y>@^`F1N~pQRlouw z#pt+tph>)aK)J$GRnfU+86(dtKaJRncQoG~aQDn5_*;yAYIj?jEa;bf4<52@^zZYm zpsakq0?t$@!G@O{bi%?+i%zDT8R@?PPKWIqy`o5Vj-G_zHGrzXzr*#EGo@|sH2ED+ z=sB+)peM>5m-&Y=nf+#?ug4%HeC><*8f{zf>mQL$_o1sJ=-@0fN8LEfWl)9{oBSXC zgdEpVAtn}*NfSD*S486$qP?03K(tUwwOYYJWd86&r+FCu8VxJ#W&FeAR(56}O=IS1 zwhpe+f*|Nk;`uMe*tc(C9|HN@+mfNpV0qol*dR|6_O1VPyZeR5m`Q0Q@4utRnGI%{ z#|LPd6Lav}w{J&hyT^Y37?@MRo^2fO$sSIG6(NpYzplVFPo&fnotpS2l#=`ZLq2I^ zw`-#yCdl*l?JvQ=(RXd6%`dxl_CES$ynTBEqKb%kfH3q~TD3)Rv;$^ykq{Fbiv(qp zlOlU9yWo~dwu!Tn?Qc;C%7z*iREp(9D*GBGoa}g7@wb=zPh{f!*rzUe7Haw-m0VIF zo9*WENkGclsZ{6pVBzQpTphnPb~TEimW;t-lzRJiA5nN(J|B=`M>xuBr=dpQM|fU9 zVi%_Gm?zugh8>ZEd)vk$H;OvRz{gGWWPqun&50rwr?!%iaoOK`;8z~mFV?0KU_QWF ztwqm4DUWfveHU0~dd_pzsAU`R_0NLvB?(zPC{o24cybDl@SEDv; zl8o?kJy8F5B#lgolm5reVoS1!9rDB=+KeByU;y%5#iO|4)8-?E#!l$1Xl%HP+v-f= z7R0-|;rBy>p}8^DEiCD8U?W7$*Li-Tf(OGJ%|D}>eA zK(o9Q!e0g^i5ea=0Kvr!50pWWrDxXze=<+&15JIzuZ`^4N%eI!s*j*(hJ8&7-tDwf zxJ!3zrNDav;f_IcmzqU@xKIRAHc zxVWU*_5oD11Zs_-Y<3D1?acs%ICLWe%tezor`&GHEuU%sBILT`&I9ra;}M{sB#?_= z6{k@)0oT3gLV$C)yH#=`;>8_h5alH+VkOfu?qHmVqWE^e|EH9Tf2 zN@l2jpf4wGaEFx45Zp?-BjN>$q}(!Vz3+4WlOE?^TokJC{C}VG|EKoT4JdViZe&22 zznKBn2;-01QBqCt{1$~A`IDny4|;txSO5@kqw^5PR`++td3KEXeR4RT2k*BYh&u++ zcC>$~BLUNCBr{e3igt*B0)k#fOWi7#qNtb!7n7O3ZM_ZhLQ94c*;d`F=!zjsjvPza zo7@i%Z+i`!<#`uEu&|u!KHJw(0_-JqVvrmV$8kCgLj&6kx3TQ$FCgnB_R;&B`Q<(8 zD0W+t7>@lX{(0rO`rdf3?KAQLndvDp2!a%V(CtJl;4)e6M%V3ZP58tVi8o}es91;( zAksDQ4Lru|fwBw>)nbdfX<7Rf`gRQL=!fy0=<*n5M?nv(!n|EP!aiRcEd$`V4SfAz zg@Q%A>~%%^<1A6T7lVZ-`t^>7Gq?c{K%=_SzE5&p^KyVxj6xpdZ0KEvf_etE9BdB? zL6fhk(*eL`N8ieB_$Q2NS>B(U(eCJhPTW(qq7nD_ibEbk31p@2HGRFE&3Uu%MX7^- z0S9=XUBL^WS(`ac(XazKE;DA*w^<<6_3CCf!!6ZQlA4#J?{SAe*!3Rwhwc69ry1{o zGupEG>mOk204Z)!0kPlSx45@@23hwcaCrn>ZRRA3v0`fxETU>f9I3>-fG!~G21VNd zTL@*k^y2^J`_{JrHoyGgEimW@&(eX2l=RM)x&TwQ^f3pdGLEPcUXYNB} zh8eomdSvlS@(q4KmM-eECHC3ZL~^zCna}+L8&GGr?;js7Z$4e#ZXZ6OSg^eO;F)$W z5p1BR!0y$ek)FCNFW6-Ddp3TqD6|W1;1SB@8^AF~7P!L+NCgXYn-P6T=3`zyYM)#NA?Hs zjo>^C-Whb`1OD6B&Hv3mjSm-8JZ?mBg9Gt3ZV#E{-A0mi=x((~B)jy;b^xyP;c~mU zB!fSjD`1Ns@m>3{-LE(*11gq0(e@PkAb~Yx0|M-Rd*B(wW)O^1W2R80 z(eFvBe)HXLVCw?-eJlf<2zv=1yu#h>Sp2`V%Nh0>kgvzhAp{ffocH$NXZb7a=uA%t z$%;RSsKv<^}U@C8Xl}IRhE-dW9}y^+PQ)aDEEDyVXPrkx!^;Q?8Ek= z5bwjDhke-Z`unh3{ONcbwig$D(cni6jQVN`Jm(^aa^D}?2k5co=r^nNyqy8QzIoWK zKyv32ag(+efW)(;G+x#K=9XFh-~7w(;yT$4MrEe7>HBWR@-YZjms?`cA9m;n|KnoFiVT4itxw>t6-^xnBp?hkq=~6yhurCrAJlY-h>0HPU*~qDONIe|r32F36 zH-`1*m5L?;j8PlL=pH-bakl;n+(I#YQLEy1p}T-&i$0Pq`$)DzB>M`hf%9SlLk_XO zT3jzzqi<WB+!(nUY(pc>v1laGsfAgv@Jr+TF z{OxY$d95ABdV`=tbBNmZYyWh4x81(Kc)!_x*!)=@|6{d)IBfsgsQ(0BKJKyDECB#~ CEO8 +%**start of header +\newcount\columnsperpage + +% This file can be printed with 1, 2, or 3 columns per page (see below). +% Specify how many you want here. Nothing else needs to be changed. + +\columnsperpage=1 + +% Copyright (c) 1987, 1993, 1995 Free Software Foundation, Inc. + +% This file is part of XEmacs. + +% XEmacs is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 1, or (at your option) +% any later version. + +% XEmacs is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. + +% You should have received a copy of the GNU General Public License +% along with XEmacs; see the file COPYING. If not, write to +% the Free Software Foundation, 675 Mass Ave, Cambridge MA 02139, USA. + +% This file is intended to be processed by plain TeX (TeX82). +% +% The final reference card has six columns, three on each side. +% This file can be used to produce it in any of three ways: +% 1 column per page +% produces six separate pages, each of which needs to be reduced to 80%. +% This gives the best resolution. +% 2 columns per page +% produces three already-reduced pages. +% You will still need to cut and paste. +% 3 columns per page +% produces two pages which must be printed sideways to make a +% ready-to-use 8.5 x 11 inch reference card. +% For this you need a dvi device driver that can print sideways. +% Which mode to use is controlled by setting \columnsperpage above. +% +% Author: +% Stephen Gildea +% Internet: gildea@mit.edu +% +% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik +% for their many good ideas. + +% If there were room, it would be nice to see a section on Dired. + +\def\versionnumber{2.0 XEmacs} +\def\year{1998} +\def\version{April \year\ v\versionnumber} + +\def\shortcopyrightnotice{\vskip 1ex plus 2 fill + \centerline{\small \copyright\ \year\ Free Software Foundation, Inc. + Permissions on back. v\versionnumber}} + +\def\copyrightnotice{ +\vskip 1ex plus 2 fill\begingroup\small +\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.} +\centerline{designed by Stephen Gildea, \version} +\centerline{for GNU Emacs version 19 on Unix systems} +\centerline{Updated for XEmacs in February 1995 by Ben Wing} + +Permission is granted to make and distribute copies of +this card provided the copyright notice and this permission notice +are preserved on all copies. + +For copies of the GNU Emacs manual, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +USA. + +\endgroup} + +% make \bye not \outer so that the \def\bye in the \else clause below +% can be scanned without complaint. +\def\bye{\par\vfill\supereject\end} + +\newdimen\intercolumnskip %horizontal space between columns +\newbox\columna %boxes to hold columns already built +\newbox\columnb + +\def\ncolumns{\the\columnsperpage} + +\message{[\ncolumns\space + column\if 1\ncolumns\else s\fi\space per page]} + +\def\scaledmag#1{ scaled \magstep #1} + +% This multi-way format was designed by Stephen Gildea October 1986. +% Note that the 1-column format is fontfamily-independent. +\if 1\ncolumns %one-column format uses normal size + \hsize 4in + \vsize 10in + \voffset -.7in + \font\titlefont=\fontname\tenbf \scaledmag3 + \font\headingfont=\fontname\tenbf \scaledmag2 + \font\smallfont=\fontname\sevenrm + \font\smallsy=\fontname\sevensy + + \footline{\hss\folio} + \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}} +\else %2 or 3 columns uses prereduced size + \hsize 3.2in + \vsize 7.95in + \hoffset -.75in + \voffset -.745in + \font\titlefont=cmbx10 \scaledmag2 + \font\headingfont=cmbx10 \scaledmag1 + \font\smallfont=cmr6 + \font\smallsy=cmsy6 + \font\eightrm=cmr8 + \font\eightbf=cmbx8 + \font\eightit=cmti8 + \font\eighttt=cmtt8 + \font\eightmi=cmmi8 + \font\eightsy=cmsy8 + \textfont0=\eightrm + \textfont1=\eightmi + \textfont2=\eightsy + \def\rm{\eightrm} + \def\bf{\eightbf} + \def\it{\eightit} + \def\tt{\eighttt} + \normalbaselineskip=.8\normalbaselineskip + \normallineskip=.8\normallineskip + \normallineskiplimit=.8\normallineskiplimit + \normalbaselines\rm %make definitions take effect + + \if 2\ncolumns + \let\maxcolumn=b + \footline{\hss\rm\folio\hss} + \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}} + \else \if 3\ncolumns + \let\maxcolumn=c + \nopagenumbers + \else + \errhelp{You must set \columnsperpage equal to 1, 2, or 3.} + \errmessage{Illegal number of columns per page} + \fi\fi + + \intercolumnskip=.46in + \def\abc{a} + \output={% %see The TeXbook page 257 + % This next line is useful when designing the layout. + %\immediate\write16{Column \folio\abc\space starts with \firstmark} + \if \maxcolumn\abc \multicolumnformat \global\def\abc{a} + \else\if a\abc + \global\setbox\columna\columnbox \global\def\abc{b} + %% in case we never use \columnb (two-column mode) + \global\setbox\columnb\hbox to -\intercolumnskip{} + \else + \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi} + \def\multicolumnformat{\shipout\vbox{\makeheadline + \hbox{\box\columna\hskip\intercolumnskip + \box\columnb\hskip\intercolumnskip\columnbox} + \makefootline}\advancepageno} + \def\columnbox{\leftline{\pagebody}} + + \def\bye{\par\vfill\supereject + \if a\abc \else\null\vfill\eject\fi + \if a\abc \else\null\vfill\eject\fi + \end} +\fi + +% we won't be using math mode much, so redefine some of the characters +% we might want to talk about +\catcode`\^=12 +\catcode`\_=12 + +\chardef\\=`\\ +\chardef\{=`\{ +\chardef\}=`\} + +\hyphenation{mini-buf-fer} + +\parindent 0pt +\parskip 1ex plus .5ex minus .5ex + +\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip} + +% newcolumn - force a new column. Use sparingly, probably only for +% the first column of a page, which should have a title anyway. +\outer\def\newcolumn{\vfill\eject} + +% title - page title. Argument is title text. +\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex} + +% section - new major section. Argument is section name. +\outer\def\section#1{\par\filbreak + \vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}% + \vskip 2ex plus 1ex minus 1.5ex} + +\newdimen\keyindent + +% beginindentedkeys...endindentedkeys - key definitions will be +% indented, but running text, typically used as headings to group +% definitions, will not. +\def\beginindentedkeys{\keyindent=1em} +\def\endindentedkeys{\keyindent=0em} +\endindentedkeys + +% paralign - begin paragraph containing an alignment. +% If an \halign is entered while in vertical mode, a parskip is never +% inserted. Using \paralign instead of \halign solves this problem. +\def\paralign{\vskip\parskip\halign} + +% \<...> - surrounds a variable name in a code example +\def\<#1>{{\it #1\/}} + +% kbd - argument is characters typed literally. Like the Texinfo command. +\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows + +% beginexample...endexample - surrounds literal text, such a code example. +% typeset in a typewriter font with line breaks preserved +\def\beginexample{\par\leavevmode\begingroup + \obeylines\obeyspaces\parskip0pt\tt} +{\obeyspaces\global\let =\ } +\def\endexample{\endgroup} + +% key - definition of a key. +% \key{description of key}{key-name} +% prints the description left-justified, and the key-name in a \kbd +% form near the right margin. +\def\key#1#2{\leavevmode\hbox to \hsize{\vtop + {\hsize=.75\hsize\rightskip=1em + \hskip\keyindent\relax#1}\kbd{#2}\hfil}} + +\newbox\metaxbox +\setbox\metaxbox\hbox{\kbd{M-x }} +\newdimen\metaxwidth +\metaxwidth=\wd\metaxbox + +% metax - definition of a M-x command. +% \metax{description of command}{M-x command-name} +% Tries to justify the beginning of the command name at the same place +% as \key starts the key name. (The "M-x " sticks out to the left.) +\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize + {\hskip\keyindent\relax#1\hfil}% + \hskip -\metaxwidth minus 1fil + \kbd{#2}\hfil}} + +% threecol - like "key" but with two key names. +% for example, one for doing the action backward, and one for forward. +\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\hfil\quad + &\kbd{#3}\hfil\quad\cr} + +%**end of header + + +\title{XEmacs Reference Card} + +\centerline{(for version 21.0+)} + +\section{Starting Emacs} + +To enter XEmacs, just type its name: \kbd{xemacs} + +To read in a file to edit, see Files, below. + +\section{Leaving Emacs} + +\key{suspend Emacs (or iconify frame under X)}{C-z} +\key{exit Emacs permanently}{C-x C-c} + +\section{Files} + +\key{{\bf read} a file into Emacs}{C-x C-f} +\key{{\bf save} a file back to disk}{C-x C-s} +\key{save {\bf all} files}{C-x s} +\key{{\bf insert} contents of another file into this buffer}{C-x i} +\key{replace this file with the file you really want}{C-x C-v} +\key{write buffer to a specified file}{C-x C-w} + +\section{Getting Help} + +The Help system is simple. Type \kbd{C-h} and follow the directions. +If you are a first-time user, type \kbd{C-h t} for a {\bf tutorial}. + +\key{quit Help window}{q} +\key{scroll Help window}{space} + +\key{apropos: show commands matching a string}{C-h a} +\key{show the function a key runs}{C-h c} +\key{describe a function}{C-h f} +\key{get mode-specific information}{C-h m} + +\section{Error Recovery} + +\key{{\bf abort} partially typed or executing command}{C-g} +\metax{{\bf recover} a file lost by a system crash}{M-x recover-file} +\metax{{\bf recover} files from a previous Emacs session}{M-x recover-session} +\key{{\bf undo} an unwanted change}{C-x u {\rm or} C-_} +\metax{restore a buffer to its original contents}{M-x revert-buffer} +\key{redraw garbaged screen}{C-l} + +\section{Incremental Search} + +\key{search forward}{C-s} +\key{search backward}{C-r} +\key{regular expression search}{C-M-s} +\key{reverse regular expression search}{C-M-r} + +\key{select previous search string}{M-p} +\key{select next later search string}{M-n} +\key{exit incremental search}{RET} +\key{undo effect of last character}{DEL} +\key{abort current search}{C-g} + +Use \kbd{C-s} or \kbd{C-r} again to repeat the search in either direction. +If Emacs is still searching, \kbd{C-g} cancels only the part not done. + +\shortcopyrightnotice + +\section{Motion} + +\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr +\threecol{{\bf entity to move over}}{{\bf backward}}{{\bf forward}} +\threecol{character}{C-b}{C-f} +\threecol{word}{M-b}{M-f} +\threecol{line}{C-p}{C-n} +\threecol{go to line beginning (or end)}{C-a}{C-e} +\threecol{sentence}{M-a}{M-e} +\threecol{paragraph}{M-\{}{M-\}} +\threecol{page}{C-x [}{C-x ]} +\threecol{sexp}{C-M-b}{C-M-f} +\threecol{function}{C-M-a}{C-M-e} +\threecol{go to buffer beginning (or end)}{M-<}{M->} +} + +\key{scroll to next screen}{C-v} +\key{scroll to previous screen}{M-v} +\key{scroll left}{C-x <} +\key{scroll right}{C-x >} +\key{scroll current line to center of screen}{C-u C-l} + +\section{Killing and Deleting} + +\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr +\threecol{{\bf entity to kill}}{{\bf backward}}{{\bf forward}} +\threecol{character (delete, not kill)}{DEL}{C-d} +\threecol{word}{M-DEL}{M-d} +\threecol{line (to end of)}{M-0 C-k}{C-k} +\threecol{sentence}{C-x DEL}{M-k} +\threecol{sexp}{M-- C-M-k}{C-M-k} +} + +\key{kill {\bf region}}{C-w} +\key{copy region to kill ring}{M-w} +\key{kill through next occurrence of {\it char}}{M-z {\it char}} + +\key{yank back last thing killed}{C-y} +\key{replace last yank with previous kill}{M-y} + +\section{Marking} + +\key{set mark here}{C-@ {\rm or} C-SPC} +\key{exchange point and mark}{C-x C-x} + +\key{set mark {\it arg\/} {\bf words} away}{M-@} +\key{mark {\bf paragraph}}{M-h} +\key{mark {\bf page}}{C-x C-p} +\key{mark {\bf sexp}}{C-M-@} +\key{mark {\bf function}}{C-M-h} +\key{mark entire {\bf buffer}}{C-x h} + +\section{Query Replace} + +\key{interactively replace a text string}{M-\%} +\metax{using regular expressions}{M-x query-replace-regexp} + +Valid responses in query-replace mode are + +\key{{\bf replace} this one, go on to next}{SPC {\rm or} y} +\key{replace this one, don't move}{,} +\key{{\bf skip} to next without replacing}{DEL {\rm or} n} +\key{replace all remaining matches}{!} +\key{{\bf back up} to the previous match}{^} +\key{{\bf exit} query-replace}{ESC} +\key{enter recursive edit (\kbd{C-M-c} to exit)}{C-r} +\key{delete match and enter recursive edit}{C-w} + +\section{Multiple Windows} + +\key{delete all other windows}{C-x 1} +\key{delete this window}{C-x 0} +\key{split window in two vertically}{C-x 2} +\key{split window in two horizontally}{C-x 3} + +\key{scroll other window}{C-M-v} +\key{switch cursor to another window}{C-x o} + +\metax{shrink window shorter}{M-x shrink-window} +\key{grow window taller}{C-x ^} +\key{shrink window narrower}{C-x \{} +\key{grow window wider}{C-x \}} + +\key{select buffer in other window}{C-x 4 b} +\key{display buffer in other window}{C-x 4 C-o} +\key{find file in other window}{C-x 4 f} +\key{find file read-only in other window}{C-x 4 r} +\key{run Dired in other window}{C-x 4 d} +\key{find tag in other window}{C-x 4 .} + +\section{Formatting} + +\key{indent current {\bf line} (mode-dependent)}{TAB} +\key{indent {\bf region} (mode-dependent)}{C-M-\\} +\key{indent {\bf sexp} (mode-dependent)}{C-M-q} +\key{indent region rigidly {\it arg\/} columns}{C-x TAB} + +\key{insert newline after point}{C-o} +\key{move rest of line vertically down}{C-M-o} +\key{delete blank lines around point}{C-x C-o} +\key{join line with previous (with arg, next)}{M-^} +\key{delete all white space around point}{M-\\} +\key{put exactly one space at point}{M-SPC} + +\key{fill paragraph}{M-q} +\key{set fill column}{C-x f} +\key{set prefix each line starts with}{C-x .} + +\section{Case Change} + +\key{uppercase word}{M-u} +\key{lowercase word}{M-l} +\key{capitalize word}{M-c} + +\key{uppercase region}{C-x C-u} +\key{lowercase region}{C-x C-l} +\metax{capitalize region}{M-x capitalize-region} + +\section{The Minibuffer} + +The following keys are defined in the minibuffer. + +\key{complete as much as possible}{TAB} +\key{complete up to one word}{SPC} +\key{complete and execute}{RET} +\key{show possible completions}{?} +\key{fetch previous minibuffer input}{M-p} +\key{fetch next later minibuffer input}{M-n} +\key{regexp search backward through history}{M-r} +\key{regexp search forward through history}{M-s} +\key{abort command}{C-g} + +Type \kbd{C-x ESC ESC} to edit and repeat the last command that used the +minibuffer. The following keys are then defined. + +\key{previous minibuffer command}{M-p} +\key{next minibuffer command}{M-n} + +\newcolumn +\title{XEmacs Reference Card} + +\section{Buffers} + +\key{select another buffer}{C-x b} +\key{list all buffers}{C-x C-b} +\key{kill a buffer}{C-x k} + +\section{Transposing} + +\key{transpose {\bf characters}}{C-t} +\key{transpose {\bf words}}{M-t} +\key{transpose {\bf lines}}{C-x C-t} +\key{transpose {\bf sexps}}{C-M-t} + +\section{Spelling Check} + +\key{check spelling of current word}{M-\$} +\metax{check spelling of all words in region}{M-x ispell-region} +\metax{check spelling of entire buffer}{M-x ispell-buffer} + +\section{Tags} + +\key{find a tag (a definition)}{M-.} +\key{find next occurrence of tag}{C-u M-.} +\metax{specify a new tags file}{M-x visit-tags-table} + +\metax{regexp search on all files in tags table}{M-x tags-search} +\metax{run query-replace on all the files}{M-x tags-query-replace} +\key{continue last tags search or query-replace}{M-,} + +\section{Shells} + +\key{execute a shell command}{M-!} +\key{run a shell command on the region}{M-|} +\key{filter region through a shell command}{C-u M-|} +\metax{start a shell in window \kbd{*shell*}}{M-x shell} + +\section{Rectangles} + +\key{copy rectangle to register}{C-x r r} +\key{kill rectangle}{C-x r k} +\key{yank rectangle}{C-x r y} +\key{open rectangle, shifting text right}{C-x r o} +\metax{blank out rectangle}{M-x clear-rectangle} +\metax{prefix each line with a string}{M-x string-rectangle} +\key{select rectangle with mouse}{M-button1} + +\section{Abbrevs} + +\key{add global abbrev}{C-x a g} +\key{add mode-local abbrev}{C-x a l} +\key{add global expansion for this abbrev}{C-x a i g} +\key{add mode-local expansion for this abbrev}{C-x a i l} +\key{explicitly expand abbrev}{C-x a e} + +\key{expand previous word dynamically}{M-/} + +\section{Regular Expressions} + +\key{any single character except a newline}{. {\rm(dot)}} +\key{zero or more repeats}{*} +\key{one or more repeats}{+} +\key{zero or one repeat}{?} +\key{any character in the set}{[ {\rm$\ldots$} ]} +\key{any character not in the set}{[^ {\rm$\ldots$} ]} +\key{beginning of line}{^} +\key{end of line}{\$} +\key{quote a special character {\it c\/}}{\\{\it c}} +\key{alternative (``or'')}{\\|} +\key{grouping}{\\( {\rm$\ldots$} \\)} +\key{{\it n\/}th group}{\\{\it n}} +\key{beginning of buffer}{\\`} +\key{end of buffer}{\\'} +\key{word break}{\\b} +\key{not beginning or end of word}{\\B} +\key{beginning of word}{\\<} +\key{end of word}{\\>} +\key{any word-syntax character}{\\w} +\key{any non-word-syntax character}{\\W} +\key{character with syntax {\it c}}{\\s{\it c}} +\key{character with syntax not {\it c}}{\\S{\it c}} + +\section{Registers} + +\key{save region in register}{C-x r s} +\key{insert register contents into buffer}{C-x r i} + +\key{save value of point in register}{C-x r SPC} +\key{jump to point saved in register}{C-x r j} + +\section{Info} + +\key{enter the Info documentation reader}{C-h i} +\beginindentedkeys + +Moving within a node: + +\key{scroll forward}{SPC} +\key{scroll reverse}{DEL} +\key{beginning of node}{. {\rm (dot)}} + +Moving between nodes: + +\key{{\bf next} node}{n} +\key{{\bf previous} node}{p} +\key{move {\bf up}}{u} +\key{select menu item by name}{m} +\key{select {\it n\/}th menu item by number (1--5)}{{\it n}} +\key{follow cross reference (return with \kbd{l})}{f} +\key{return to last node you saw}{l} +\key{return to directory node}{d} +\key{go to any node by name}{g} + +Other: + +\key{run Info {\bf tutorial}}{h} +\key{list Info commands}{?} +\key{{\bf quit} Info}{q} +\key{search nodes for regexp}{s} + +\endindentedkeys + +\section{Keyboard Macros} + +\key{{\bf start} defining a keyboard macro}{C-x (} +\key{{\bf end} keyboard macro definition}{C-x )} +\key{{\bf execute} last-defined keyboard macro}{C-x e} +\key{{\bf edit} keyboard macro}{C-x C-k} +\key{append to last keyboard macro}{C-u C-x (} +\metax{name last keyboard macro}{M-x name-last-kbd-macro} +\metax{insert Lisp definition in buffer}{M-x insert-kbd-macro} + +\section{Commands Dealing with Emacs Lisp} + +\key{eval {\bf sexp} before point}{C-x C-e} +\key{eval current {\bf defun}}{C-M-x} +\metax{eval {\bf region}}{M-x eval-region} +\metax{eval entire {\bf buffer}}{M-x eval-current-buffer} +\key{read and eval minibuffer}{M-ESC} +\key{re-execute last minibuffer command}{C-x ESC ESC} +\metax{read and eval Emacs Lisp file}{M-x load-file} +\metax{load from standard system directory}{M-x load-library} + +\section{Simple Customization} + +% The intended audience here is the person who wants to make simple +% customizations and knows Lisp syntax. + +Here are some examples of binding global keys in Emacs Lisp. + +\beginexample% +(global-set-key [(control c) g] 'goto-line) +(global-set-key [(control x) (control k)] 'kill-region) +(global-set-key [(meta \#)] 'query-replace-regexp) +\endexample + +An example of setting a variable in Emacs Lisp: + +\beginexample% +(setq backup-by-copying-when-linked t) +\endexample + +\section{Writing Commands} + +\beginexample% +(defun \ (\) + "\" + (interactive "\