diff --git a/README.md b/README.md index 7575da5d..abd298f5 100644 --- a/README.md +++ b/README.md @@ -210,6 +210,7 @@ A list of [known ITS machines](doc/machines.md). - TAGS, generate tags table for sources. - TALK/WHO/WHOJ/WHOM/USERS, list users. - TCTYP and CRTSTY, terminal handling. + - TEACHE, Emacs tutorial. - TECO, editor. - TELNET, Telnet client. - TELSER, Telnet/Supdup server. diff --git a/build/build.tcl b/build/build.tcl index f6bd7e8d..9579be62 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -216,6 +216,8 @@ respond "*" ":print sys3;..new. (udir)\r" type ":vk\r" respond "*" ":print cstacy;..new. (udir)\r" type ":vk\r" +respond "*" ":print teach;..new. (udir)\r" +type ":vk\r" respond "*" ":midas sysbin;_.teco.;teco\r" expect ":KILL" @@ -267,6 +269,7 @@ respond ":EJ" "\033xbare\033emacs1;bare\r" respond "\n" "\033xgenerate\033emacs;delim\033emacs1;delim\r" respond ":EJ" "\033xgenerate\033emacs;dired\033emacs1;dired\r" respond ":EJ" "\033xgenerate\033emacs;doclsp\033emacs1;doclsp\r" +respond ":EJ" "\033xgenerate\033emacs;docond\033emacs1;docond\r" respond ":EJ" "\033xgenerate\033emacs;elisp\033emacs1;elisp\r" respond ":EJ" "\033xgenerate\033emacs;info\033emacs1;info\r" respond ":EJ" "\033xgenerate\033emacs;kbdmac\033emacs1;kbdmac\r" @@ -287,6 +290,7 @@ respond ":EJ" "\033xgenerate\033emacs;tdebug\033emacs1;tdebug\r" respond ":EJ" "\033xgenerate\033emacs;tex\033emacs1;tex\r" respond ":EJ" "\033xgenerate\033emacs;texmac\033emacs1;texmac\r" respond ":EJ" "\033xgenerate\033emacs;time\033emacs1;time\r" +respond ":EJ" "\033xgenerate\033emacs;trmtyp\033emacs1;trmtyp\r" respond ":EJ" "\033xgenerate\033emacs;vt100\033emacs1;vt100\r" respond ":EJ" "\033xgenerate\033emacs;vt52\033emacs1;vt52\r" respond ":EJ" "\033xgenerate\033emacs;xlisp\033emacs1;xlisp\r" @@ -295,6 +299,14 @@ respond ":EJ" "\033xrun\033einit\033? Document\r" respond "\n" "\030\003" respond "*" ":kill\r" +respond "*" ":link teach;teach emacs,emacs;teach emacs\r" +type ":vk\r" +respond "*" "teach\033\023" +respond "*" ":emacs\r" +expect ":KILL" +respond "*" ":link teach;ts emacs,emacs;tstch >\r" +type ":vk\r" + respond "*" ":midas sysbin;_syseng;dump\r" respond "WHICH MACHINE?" "DB\r" expect ":KILL" diff --git a/src/emacs/teach.1 b/src/emacs/teach.1 new file mode 100644 index 00000000..ae07a3a6 --- /dev/null +++ b/src/emacs/teach.1 @@ -0,0 +1,693 @@ +This is the -*-Text-*- of the EMACS tutorial. + +DOCOND declarations for operating-system dependencies. +{Alternatives:ITS,Twenex} +{Flag:?ITS} +{Flag:?Twenex} +{Char Replace:+ITS=>C-Z->C-C} +{Char Replace:+ITS=>C-M-Z->C-M-C} + +{end} +You are looking at the EMACS tutorial. Comments on this document +should be mailed to BUG-EMACS. + +EMACS commands generally involve the CONTROL key (sometimes labelled +CTRL or CTL) or the META key (sometimes labelled EDIT). 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 or EDIT key down while typing . + If there is no META or EDIT key, type , release it, + then type the character . "" stands for the + key labelled "ALT" or "ESC". + +Important note: if you must exit at some point, type C-X C-Z. +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 depressing the control key and V together). + From now on, you'll be expected to do this whenever you finish + reading the screen. + +Note that there is an overlap when going from screen to screen; this +provides some continuity when moving through the file. + +The first thing that you need to know is how to move around from +place to place in the file. You already know how to move forward a +screen, with C-V. To move backwards a screen, type M-V (depress the +META key and type V, or type V if you don't have a META or EDIT +key). + +>> Try typing M-V and then C-V to move back and forth 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. + +>> Find the cursor and remember what text is near it. + Then type a C-L. + Find the cursor again and see what text is near it now. + + +BASIC CURSOR CONTROL +-------------------- + +Getting from screenful to screenful is useful, but how do you +reposition yourself within a given screen to a specific place? +There are several ways you can do this. One way (not the best, but +the most basic) is to use the commands previous, backward, forward +and next. As you can imagine these commands (which are given to +EMACS as C-P, C-B, C-F, and C-N respectively) move the cursor from +where it currently is to a new place in the given direction. Here, +in a more graphical form are the commands: + + Previous line, C-P + : + : + Backward, C-B .... Current cursor position .... Forward, C-F + : + : + Next line, C-N + +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. + +Lines are separated by a pair of characters, a Return and a Linefeed, +but EMACS almost always makes them look like one character. You +can think of it as a Newline. + +>> Try to C-B at the beginning of a line. Do a few more C-B's. + Then do C-F's back to the end of the line and beyond. + +When you go off the top or bottom of the screen, the text beyond +the edge is shifted onto the screen so that your instructions can +be carried out while keeping the cursor on 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. Intersperse them with C-F's and C-B's. + +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 English text whereas Control characters operate +on the basic textual units that are independent of what you are +editing (characters, lines, etc). There is a similar parallel 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 +farther. Do you think that this is right? + +Two other simple cursor motion commands are M-< (Meta Less-than), +which moves to the beginning of the file, and M-> (Meta Greater-than), +which moves to the end of the file. You probably don't need to try +them, since finding this spot again will be boring. If you need the +shift key to type a "<", then you must also use the shift key to type +M-<. Otherwise, you would be typing M-, . + +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 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 + + M-< Go to beginning of file + M-> Go to end of file + +>> Try all of these commands now a few times for practice. + Since the last two will take you away from this screen, + you can come back here with M-V's and C-V's. These are + the most often used commands. + +Like all other commands in EMACS, these commands can be given +arguments which cause them to be executed repeatedly. 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 key, you can +omit the C-U if you hold down the META or EDIT key while you type the +digits. This is easier, but we recommend the C-U method because it +works on any terminal. + +For instance, C-U 8 C-F moves forward eight characters. + +>> Try giving a suitable argument to C-N or C-P to come as close + as you can to this line in one jump. + +The only apparent exception to this is the screen moving commands, +C-V and M-V. When given an argument, they scroll the screen up or +down by that many lines, rather than screenfuls. This proves to be +much more useful. + +>> Try typing C-U 8 C-V now. + +Did it scroll the screen up by 8 lines? If you would like to +scroll it down you can give an argument to M-V. + + +WHEN EMACS IS HUNG +----------------- + +If EMACS gets into an infinite (or simply very long) computation which +you don't want to finish, you can stop it safely by typing C-G. +You can also use C-G to discard a numeric argument or the beginning of +a command that you don't want to finish. + +>> Type C-U 100 to make a numeric arg of 100, then type C-G. + Now type C-F. How many characters does it move? + If you have typed an by mistake, you can get rid of it + with a C-G. + +If you type , you get into something known as a +"minibuffer". That is an advanced feature of EMACS. We mention it +now only to say that you can get out of it with one or two C-G's if +you get into it by accident. + + +INSERTING AND DELETING +---------------------- + +If you want to type text, just do it. 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 line +separator. + +You can delete the last character you typed by typing . + is a key on the keyboard, which might be labelled "Delete" +instead of "Rubout" on some terminals. More generally, +deletes the character immediately before the current cursor position. + +>> Do this now, type a few characters and then delete them + by typing a few times. Don't worry about this file + being changed; you won't affect the master tutorial. This is just + a copy of it. + +>> Now start typing text until you reach the right margin, and keep + typing. 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. + The exclamation mark at the right margin indicates a line which has + been continued. +>> Use s to delete the text until the line fits on one screen + line again. The continuation line goes away. + +>> Move the cursor to the beginning of a line and type . This + deletes the line separator before the line and merges the line onto + the previous line. The resulting line may be too long to fit, in + which case it has a continuation line. +>> Type to insert the separator again. + +Remember that most EMACS commands can be given a repeat count; Note +that this includes characters which insert themselves. + +>> Try that now -- type C-U 8 * and see what happens. + +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, isn't 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. + +Now suppose you kill something, and then you decide that you want to +get it back? Well, whenever you kill something bigger than a +character, EMACS saves it for you. To yank it back, use C-Y. Note +that you don't have to be in the same place to do C-Y; This is a good +way to move text around. Also 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 destroy a lot of text save it, while the ones that attack +only one character, or nothing but blank lines and spaces, do not +save. + +For instance, type C-N a couple times to position the cursor +at some line on this screen. + +>> Do this now, move the cursor and kill that line with C-K. + +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. If +you give C-K a repeat count, it kills that many lines AND their +contents. + +The text that has just disappeared is saved so that you can +retrieve it. 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 +the text that is killed is all 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 can just go away and +leave it there. 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. + + +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 "visiting" the file. What +visiting means is that you see the contents of the file in your EMACS; +and, loosely speaking, what you are editing is the file itself. +However, the changes still don't become permanent until you "save" the +file. This is so you can have control to avoid leaving a half-changed +file around when you don't want to. Even then, EMACS really makes a +new version of the file and doesn't change the old version at all (so +that you can verify or throw away your changes later if you like). + +If you look near the bottom of the screen you will see a +line that starts with "EMACS (Fundamental) Main:" and continues with +the filename {+Twenex:DSK:TEACH-EMACS.TUTORIAL}{+ITS:your-directory; machine: TEACH +TEXT}. This is the name of your own temporary copy of the +text of the EMACS tutorial; the file you are now visiting. Whatever +file you visit, that file's name will appear in that precise +spot.{*Refill:} + +The commands for visiting 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, and all of them consist of +Control-X followed by some other character. + +Another thing about the command for visiting 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-V Visit a file + +EMACS will ask you for the file name. You should end the name with +the Return key. {+ITS:If you are using one of the USERS or GUEST +directories, you should make the first name of the file be your own +name, and use the second name to distinguish among your files.} After +this command, you will see the contents of the file in your EMACS. +You can edit the contents. When you wish to make the changes +permanent, issue the command{*Refill:} + + C-X C-S Save the file + +A new version of the file will be created. When the operation is +finished, EMACS prints the name and version saved. You should save +fairly often, so that you will not lose very much work if the system +should crash. + +If you forget to save before visiting a different file, EMACS will +remind you that you made changes and ask you whether to save them. +(If you don't save them, they will be thrown away. That might be what +you want!) You should answer with a "Y" to save them or a "N" to +throw the changes away. + +To make a new file, just visit it "as if" it already existed. Then +start typing in the text. 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. + +It is not easy for you to try out visiting a file and continue with +the tutorial. But you can always come back into the tutorial by +starting it over and skipping forward. So, when you feel ready, you +should try visiting a file named "FOO", putting some text in it, and +saving it; then exit from EMACS and look at the file to be sure that +it worked. + + +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-V to Visit and C-X C-S to Save. +Another example is the command to tell EMACS that you'd +like to stop editing. The command to do this is C-X C-Z.{+Twenex: Think of +it as Z for zapping yourself.} + +There are many C-X commands. The ones you need immediately are: + + C-X C-V Visit file. + C-X C-S Save file. + C-X C-Z Quit EMACS. This does NOT save your file. The + standard way to save and exit is C-X C-S C-X C-Z. + +Named eXtended commands are commands which are used even less +frequently, or commands which are used only in certain modes. These +commands are usually called "functions". An example is the function +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 function you wish to call; in +this case, "Replace String". Just type "REP" and EMACS will +complete the name. Then you type the string that you want to replace, +an , the string you want to replace it with, and a return. +When the is echoed, it looks like this:  + +>> Move the cursor to the blank line two lines below this one. + Then type M-X repchangedaltered. + + Notice how this line has changed: you've replaced + the word c-h-a-n-g-e-d with "altered" wherever it occurs + after the cursor. + + +MODE LINE +--------- + +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 three lines of the screen. The line +immediately above them is called the MODE LINE. The mode line says +something like + + EMACS (Fundamental) Main: filename --nn%-- * + +This is a very useful "information" line. + +You already know what the filename means -- it is the file you have +visited. What the --nn%-- means is that nn percent of the file 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 file is +on the screen, it will say --BOT--. If you are looking at a file so +small it all fits on the screen, the --nn%-- will simply not be there. + +The star means that you have made changes to the text. Right after +you visit or save a file, there is no star. + +The part of the mode line inside the parentheses is to tell you what +modes you are in. The default mode is Fundamental which is what you +are in now. It is an example of a "major mode". There are several +major modes in EMACS for editing different languages and 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 get into the mode. For example, +M-X Fundamental Mode is how to get into 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 now observe that periods are no longer +part of words when you do M-F or M-B! Major modes are usually like +that: commands don't change into completely unrelated things, but they +work a little bit differently. + +Major modes are called major because there are also minor modes. +They are called minor because they aren't alternatives to the major +modes, just minor modifications of them. Each minor mode can be +turned on or off by itself, regardless of what major mode you are in, +and regardless of the other minor modes. 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 the line gets too long. You +can turn this 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 function turns it on, and if the mode is on, +this function turns it off. This is called "toggling". + +>> 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. + Notice that "Fill" appears in the mode line in addition to the name + of the major mode, not instead of it. + +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. + + +RECURSIVE EDITING LEVELS +------------------------ + +Sometimes you will get into what is called a "recursive editing +level". This is a command which, as part of its job, wants you to +edit some text. A good example is M-X Edit Options, which +shows you a list of many variables called options, and their values. +You can edit this list to change the values and thus turn the optional +features they control on or off. When you are done, you can say "ok" +with the command C-M-Z. If you do not have a META or EDIT key on your +terminal, type C-Z C-Z or C-Z. This is called "exiting" the +recursive editing level. The text (the list of options) will +disappear and the changes you have made will be digested. + +>> Type M-X Edit Options and see the list of options. + Find the option "Auto Fill Mode" and edit the value to be 1. + Now exit with C-Z C-Z and see that "Fill" is now present in the + mode line, and auto-filling is in effect. + Do M-X Edit Options again and set the value of the + option to 0, and exit. "Fill" will disappear from the mode line + and auto-filling will no longer be in effect. + +If you change your mind about the changes you have made inside the +recursive editing level, you can "abort" instead of "exit" by typing +the C-] command. When you abort, the changes you have made will NOT +take effect. + +>> Type M-X Edit Options. Set the value of Auto Fill Mode to + 1 again, but instead of exiting, abort with C-]. + Say "Y" when it asks you whether you mean it. You will see that + "Fill" is not there in the mode line, because by aborting you said + that your change to the value of the option should be ignored. + Do M-X Edit options again. You will see that the value of + Auto Fill Mode is still 0. + +You can't use C-G to get out of a recursive editing level because C-G +is used for discarding numeric arguments and partially typed commands +WITHIN the recursive editing level. + + +SEARCHING +--------- + +EMACS can do searches for strings (these are groups of contiguous +characters or words) either forward through the file or backward +through it. To search for the string means that you are trying to +locate it somewhere in the file and have EMACS show you where the +occurrences of the string exist. This type of search is somewhat +different from what you may be familiar with. It is a search that is +performed as you type in the thing 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 do 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. +>> Type C-S to find 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. To go +to the next occurrence of 'cursor' just type C-S again. If no such +occurrence exists EMACS beeps and tells you that it is a failing +search. C-G would also terminate the search. + +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 currently have typed 'cu' and you see that your +cursor is at the first occurrence of 'cu'. If you now type , +the 'u' on the search line is erased and you'll be repositioned in the +text to the occurrence of 'c' where the search took you before you +typed the 'u'. This provides a useful means for backing up while you +are searching. + +If you are in the middle of a search and happen to type a control +character (other than a C-S or C-R, which tell EMACS to search for the +next occurrence of the string), the search is terminated. + +The C-S starts a search that looks for any occurrence of the search +string AFTER the current cursor position. But what if you want to +search for something earlier in the text? To do this, type C-R for +Reverse search. Everything that applies to C-S applies to C-R except +that the direction of the search is reversed. + + +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 numerous desirable features +that you don't know about yet. EMACS has a great deal of internal +documentation. All of these commands can be accessed through the HELP +character. {+ITS:On a TV terminal, the word "HELP" should appear on +the H key. Type the Help character by holding down TOP and typing H.} +If there is no key labelled "HELP" on your keyboard, you can type the + character as {+ITS:C-_ H (two keystrokes, a Control-Underscore +and an H).}{+Twenex:C-M-? (Control-Meta-Question Mark = C-Z ?), or +with the key, on Datamedia terminals.} Be warned: many +terminals are faulty and do not allow you to type the character C-_ in +the logical way (hold down Control and type an underscore). For +example, on a VT-100 it works to hold down Control and type "/" or +"?"; on a hazeltine you have to type Control-Shift-O ! {*Refill:} + +To use the HELP features, type the character, and then a +character saying what kind of help you want. If you are REALLY lost, +type ? and EMACS will tell you what kinds of help it can give. +If you have typed the character and decide you don't want any +help, just type C-G to abort.{*Refill:} + +The most basic HELP feature is C. Type , a C, and a +command character, and EMACS prints a description of the command. +When you are finished reading it, type a Space or a C-G (quit) to +bring your text back on the screen. + +>> Type C Control-P. When you are finished reading the output, +type a Space. The message should be something like + + The command Control-P runs the function ^R Up Real Line: + Move up vertically to the next real line. + Continuation lines are skipped. + +The "name of the function" is important for people who are customizing +EMACS. It is what appears in the EMACS CHART as the documentation for +the command character. It often starts with the characters "^R". For +now you can ignore it. + +Multi-character commands such as C-X C-Z and (if you have no META or +EDIT key) V are also allowed after C. + +Here are some other useful options: + + D Describe a function. You type in the name of the + function. To see your text again when it is done, + type a Space or C-G. + +>> Try typing D Replace String. Then type a Space +when you are finished reading it. + + A Apropos. Type in a keyword and EMACS will list + all the functions containing that keyword. For some + functions it will also list a one or two character + command which has the same effect. + +>> Type A File. You will see a list of all functions +(M-X commands) with "file" in their names. You will also see commands +like C-X C-V and C-X C-S, listed under the corresponding function +names. When it says "--More--" at the bottom of the screen, type +a Space to see the rest of the list. + + I Run the INFO program. INFO contains the same + information as in the EMACS manual, as well as + documentation of some other system programs, + organized by topic. Here is where you can find + out about, for instance, special commands for + editing LISP code, handling buffers, replacing + text, filling and justifying text, etc. + +INFO is a fairly sophisticated documentation finder which is what you +will have to use to learn more about EMACS. After you are familiar +with the material in this tutorial, you should try invoking INFO with + I and then, as soon as you are in INFO, type H. The H will get +you INFO's tutorial, which will teach you how to use INFO just as this +has taught you how to use EMACS. + + +CONCLUSION +---------- + +Remember, to exit use C-M-Z (C-Z C-Z). You will not be screwed if you +exit with C-{+ITS:Z}{+Twenex:C} but various features will not be +provided, so it is probably wise to develop the habit of using +C-M-Z.{*Refill:} + +This tutorial is meant to be understandable to all new users, so if +you found something unclear, don't sit and blame yourself - complain! diff --git a/src/emacs/teach.emacs b/src/emacs/teach.emacs new file mode 100755 index 00000000..2ad945d7 --- /dev/null +++ b/src/emacs/teach.emacs @@ -0,0 +1,96 @@ +!* -*-TECO-*- *! + +!* This is the EMACS init for TEACH-EMACS. + It visits the teaching file and dumps out the + runnable EMACS tutorial program.! + +!* Create startup macro to be run when we're 'd.! + @:i*| :i..9 f[bbind + fs rgetty"e +!"! ftUnfortunately, the EMACS tutorial cannot be used on a printing +terminal. Your terminal is a printing terminal, or at least that +is what the system believes. If you have access to a CRT terminal, +try this program again from there. If your terminal really is a CRT +but the system doesn't know it, + fs osteco"n !"! ft +you should use the EXEC command Terminal Type to tell it, and try again. +If the system doesn't know about your type of terminal but EMACS does, +you should use the EXEC commands Terminal Length and Terminal Width to +tell the system the size of your screen, try again, and when the tutorial +gets to this point that time, type the EMACS codename for the terminal. + + < 1:< @m(m.mSet Terminal Type) >; + !"! ft +Sorry, that isn't a known terminal type. Here are the known types: + + m(m.mList Library)TRMTYP + !"! ft + ft +You don't type the "# TRMTYP ". For example, if you are on a +Datamedia Elite 2500, type "DM2500". + ft +Try again now. + ft + !''''! + > + fs rgetty"e !"! ft +It looks like your terminal really can't do the job. Sorry. + fsexit' + f+' + fs osteco"e ft +you should try telling the system, and try again. +For information on display terminals supported by ITS, do :TCTYP ?, +or look in INFO;CRTSTY > for info on indirectly supported terminals. + 140000.FS EXIT'' + fs osteco"n er emacs.init @y' + "# er emacs;* emacs @y' + m(hfx*(i )) f]bbind + fsosteco"e etdsk:teach text' + "# etdsk:teach-emacs.tutorial' + fshsnamefsdsnamew fsdfileu0 !* Compute desired visited file! + q0uBuffer Filenames !* Put that name in right places.! + q0u:.b(qBuffer Index+2) + m(m.m & Set Mode Line) + jsblank lines inserted here !* grow text to fit screen size.! + 0l:k fsheight-24< i +> j + !* On non-meta keyboards, allow Alt 1 2 to mean an arg of 12.! + FS %TOFCI"E + M.M ^R Autoarg[0 460.-1[1 + 10< %1W Q0U1> Q0U..- + ]1 ]0' + 0fsmodif + 0u..h :m..l + F+ + | m.vMM & Startup EMACS + + m(m.mLoad Lib)Docond + 0fsmodified + 0u*Initialization* !* Make this work if run in a just-built EMACS.! + + fsosteco"e + -1,m(m.m Visit File)EMACS;TEACH > + m(m.m Fundamental Mode) + m(m.mDocond Set Flag)+ITS' + "# + -1,m(m.m Visit File)TEACH-EMACS.TXT + m(m.m Fundamental Mode) + m(m.mDocond Set Flag)+Twenex' + +!* Do the DOCONDing, inside an ^R in case we aren't already in one.! + 70[Fill Column + @:i*| m(m.mDocond) fs^r exit|f[^r enter +  + -2fs qp unwind + + fsosteco"e + m(m.aPURIFYDump Environment)EMACS;TSTCH >' + "# + fs osteco-1"e + m(m.aPURIFYDump Environment)TEACH-EMACS.EXE' + "# m(m.aPURIFYDump Environment)TEACH-EMACS.SAV'' + + FTEMACS tutorial dumped. + + 160000. fs exit + diff --git a/src/emacs1/docond.21 b/src/emacs1/docond.21 new file mode 100755 index 00000000..fcae7002 Binary files /dev/null and b/src/emacs1/docond.21 differ diff --git a/src/emacs1/trmtyp.39 b/src/emacs1/trmtyp.39 new file mode 100755 index 00000000..0e9c8d8b --- /dev/null +++ b/src/emacs1/trmtyp.39 @@ -0,0 +1,218 @@ +!*-*-TECO-*-*! +!~Filename~:! !Specify terminal type for EMACS.! +TRMTYP + +!& Set Terminal Type:! !C Specify terminal type (as string argument). +To get a list of all terminal types, do M-X List LibraryTRMTYP.! + + 1,f Terminal_Type:_[1 + 1,m.m#_TRMTYP_1[2 + q2"e :i*1__Unknown_terminal_type_name fs err' + m2fstty initw fsWindow(f+)fsWindoww +  + +!Init File Set Terminal Type:! !C Give Emacs a terminal type. + +The system does not know your terminal type. +EMACS may be able to handle your terminal if you tell +EMACS what type of terminal it is. +Type the EMACS name for your terminal type now. +To see a list of EMACS terminal type names, type ?. +To continue with EMACS in printing terminal mode, type just .! + + < 1,f Terminal_Type:_[1 !* Return here on errors! + fq1"e 0' + f=1 ?"e !* ? => list types.! + m(m.m list_Library)TRMTYP + !' + 1,m.m#_TRMTYP_1[2 !* Then get it (if it exists)! + q2:@; !* Exit loop if type is valid.! + :i*1__Unknown_terminal_type_name fg> + m2fstty initw + f[Window f+ + + fs height-24"n + ft Your_terminal_height_may_cause_problems +' + fs width-79"n + ft Your_terminal_width_may_cause_problems +' +  + + +!# TRMTYP Printing:! !S Printing terminal! + 0 + +!# TRMTYP Glass:! !S Stupid display terminal! + 1 + +!# TRMTYP DM2500:! !S Datamedia Elite 2500! + 2 + +!# TRMTYP H1500:! !S Hazeltine 1500! + 3 + +!# TRMTYP VT52:! !S VT52! + 4 + +!# TRMTYP DM1520:! !S Datamedia Elite 1520! + 5 + +!# TRMTYP Imlac:! !S MIT Imlac! + 6 + +!# TRMTYP VT05:! !S DEC VT05! + 7 + +!# TRMTYP TK4025:! !S Tektronix 4025! + 8 + +!# TRMTYP VT61:! !S VT61! + 9 + +!# TRMTYP TL4041:! !S Teleray 4041! + 10 + +!# TRMTYP Fox:! !S Perkin-Elmer Fox! + 11 + +!# TRMTYP HP2645:! !S Hewlett-Packard 2645! + 12 + +!# TRMTYP I400:! !S Infoton 400! + 13 + +!# TRMTYP TK4023:! !S Tektronix 4023! + 14 + +!# TRMTYP Ann Arbor:! !S Ann Arbor! + 15 + +!# TRMTYP C100:! !S HDS Concept-100! + 16 + +!# TRMTYP IQ120:! !S Soroc IQ 120! + 17 + +!# TRMTYP VT100:! !S VT100 in ANSI mode! + 18 + +!# TRMTYP I100:! !S Infoton 100! + 19 + +!# TRMTYP TL1061:! !S Teleray 1061! + 20 + +!# TRMTYP HEATH:! !S Heathkit! + 21 + +!# TRMTYP VC404:! !S Volker-Craig 404! + 22 + +!# TRMTYP CN-CP:! !S CN-CP losing terminal! + 23 + +!# TRMTYP TVI912:! !S Televideo 912! + 24 + +!# TRMTYP Owl:! !S Perkin-Elmer Owl! + 25 + +!# TRMTYP Bantam:! !S Perkin-Elmer Bantam! + 26 + +!# TRMTYP DM3045:! !S Datamedia 3045! + 27 + +!# TRMTYP DM3052:! !S Datamedia 3052! + 28 + +!# TRMTYP HMOD1:! !S Hazeltine Modular-1! + 29 + +!# TRMTYP H1510:! !S Hazeltine 1510! + 30 + +!# TRMTYP ADM3A:! !S ADM3A! + 31 + +!# TRMTYP VT100V:! !S VT100 in VT52 mode (80 columns, max)! + 32 + +!# TRMTYP SImlac:! !S Simulated imlac! + 33 + +!# TRMTYP VT100W:! !S VT100 in VT52 mode outside, ANSI mode inside! + 34 + +!# TRMTYP VT100X:! !S VT100, ANSI mode outside, VT52 inside (80 col max)! + 35 + +!# TRMTYP ADM42:! !S ADM 42 (also good for ADM 31)! + 36 + +!# TRMTYP NIH5200:! !S NIH5200 (modified Delta Data)! + 37 + +!# TRMTYP V200:! !S Visual 200! + 38 + +!# TRMTYP PTV:! !S MIT TV system (emulates large-screen VT52).! + 39 + +!# TRMTYP E19:! !S Edmonds's modified H19! + 40 + +!# TRMTYP VTS:! !S MIT virtual display terminal (system does conversion).! + 41 + +!# TRMTYP ACT4:! !S ACT-IV terminal.! + 42 + +!# TRMTYP IM3101:! !S IBM 3101 terminal.! + 43 + +!# TRMTYP GILL:! !S Gill's modified Hazeltine.! + 44 + +!# TRMTYP DM3025:! !S Datamedia 3025.! + 45 + +!# TRMTYP Ambassador:! !S Ann Arbor Ambassador.! + 46 + +!# TRMTYP Mime52:! !S Mime2a in enhanced VT52 emulation mode.! + 47 + +!# TRMTYP DG132:! !S Datagraphics 132.! + 48 + +!# TRMTYP IIMLAC:! !S Imlac with %TOFCI using intelligent terminal protocol.! + 49 + +!# TRMTYP BUR80:! !S Cal-Tech modified Burroughs TD850.! + 50 + +!# TRMTYP INTEXT:! !S Intext terminal (supposedly modified OWL, but nothing like one).! + 51 + +!# TRMTYP VT132:! !S DEC VT132.! + 52 + +!# TRMTYP Viewpoint:! !S Adds Viewpoint ! + 53 + +!# TRMTYP NIH7000:! !NIH 7000 (modified Delta Data)! + 54 + +!# TRMTYP BEE2:! !Microbee 2! + 55 + +!# TRMTYP GIGI:! !DEC GIGI graphics terminal (garbage is garbage inevitably)! + 56 + +!# TRMTYP TVI950:! !TeleVideo 950 Smarter than a 912 (no padding needed)! + 57 + +!# TRMTYP BBN Bitgraph:! !BBN's bitmapped terminal! + 58