Annotation of 43BSDTahoe/new/X/src/usr/clu/ted.hlp, revision 1.1.1.1

1.1       root        1: **** Menu for TED help ****
                      2: A: Introduction                                L: Multiple buffers
                      3: B: Characters                          M: Multiple windows
                      4: C: Short examples                      N: Incremental search
                      5: D: Keypad and function keys            O: Macros
                      6: E: Moving the cursor                   P: Pattern matching
                      7: F: Moving and deleting text            Q: Pattern matching summary
                      8: G: Searching                           R: Sorting
                      9: H: Init files                          S: Miscellaneous options
                     10: I: Running programs                    T: TED variables
                     11: J: Adjusting text                      U: Indenter variables
                     12: K: Multi-file buffers                  V: File names/backup/protection
                     13:                                        X: XTED features
                     14: **** Menu for TED help ****
                     15: 
                     16: **** Introduction ****
                     17: TED  is         a  real-time  editor written in CLU.  It was inspired by the real-time
                     18: TECO developed at MIT. TED will work with just  about  any  display  terminal.
                     19: (However,  TED seems to push terminals harder than Emacs, so you may find that
                     20: /etc/termcap does not specify enough padding  for  scrolling  or  insert/delete
                     21: line.)  Originally written by Russ Atkinson, TED has been extensively modified
                     22: by Bob Scheifler (RWS) and  Eliot  Moss         (EBM)  at  MIT-XX,  and  is  currently
                     23: maintained by Bob Scheifler.
                     24: 
                     25: To start a TED, just type
                     26:        ted
                     27: at  CSH         level.  TED will start up, clear the screen, and indicate that you are
                     28: using the Main buffer. If you want to edit  an  existing  file  (or  group  of
                     29: files), type
                     30:        ted filespec
                     31: or
                     32:        ted filespec ... filespec
                     33: Filespecs can only be given the first time you start up a TED.
                     34: 
                     35: To  get         out of TED and back to CSH temporarily, type ^C.  To continue TED from
                     36: CSH, use the FG command.  To get out of TED permanently, type ^U0^C.
                     37: 
                     38: TED is intended to manipulate ASCII text files.          Files  can  be  copied  to  a
                     39: buffer;         the  buffer  can  be changed by commands; and the buffer can be copied
                     40: back to files, possibly many times.
                     41: 
                     42: While editing the buffer, a cursor  is kept  and  displayed  to  indicate  the
                     43: current position in the buffer.         Common actions include inserting characters at
                     44: the  cursor,  deleting characters  at  the cursor, and moving the cursor.  TED
                     45: attempts to display a portion of the buffer around the cursor to show the  user
                     46: the  text  being  edited.    The  displayed portion of the buffer is called the
                     47: window.
                     48: 
                     49: Most characters typed are normally self-inserting.  That is, as         the  character
                     50: is  typed it is immediately inserted into the buffer and the display is changed
                     51: to show the insertion. All control characters (except ^M)  are  commands  that
                     52: change the  current  position,  change  the  buffer,  or have more complicated
                     53: effects.  For example, control-N (usually written as ^N) causes the  cursor  to
                     54: move  to  the  start  of  the next line.  Control characters can be inserted by
                     55: typing ^Q before typing the control character.
                     56: 
                     57: Commands that take numeric arguments (the numeric argument is indicated         by  #)
                     58: usually have their numeric arguments set by the ^U command.  ^U may be followed
                     59: by  a  signed number to explicitly specify the argument.  If ^U is not followed
                     60: by a signed number then # becomes the previous # * 4.  The default for # is  1.
                     61: A  lone         minus  sign  is  equivalent  to -1.  As the number is typed it will be
                     62: displayed at the top of the screen.  A number is  terminated  by  a  non-digit.
                     63: Most  simple  commands,         and all self-inserting characters, will take a numeric
                     64: argument.  For example, ^U10_ will cause ten underscores to  be         inserted,  and
                     65: ^U^N  will  cause  the cursor to move down four lines.  For some commands, the
                     66: exact value of the numeric argument is not important, but whether it is greater
                     67: than one, or less than zero, or some similar condition.         For example,  ^A  will
                     68: move  the  cursor to the start, but ^U^A (in fact, any numeric argument greater
                     69: than one) will move the cursor to the start of the buffer.
                     70: 
                     71: Some commands require string or file name arguments, and will request  them  at
                     72: the  bottom  of         the screen.  String arguments and file names are terminated by
                     73: carriage return, with most control characters  having  normal  editing effects
                     74: while  typing  in  arguments.   To  insert a newline into the argument, type a
                     75: linefeed.  A default string or file name is usually  supplied, which  will  be
                     76: used  if  no  argument is  typed.    ^R replaces the current argument with the
                     77: default, ^U^R inserts the default before the cursor, ^U-^R inserts the default
                     78: after  the  cursor,  ^W         replaces  the  default with the current argument, ^U^W
                     79: deletes the default, and ^G quits from the command.
                     80: 
                     81: For file name arguments, the default is used to fill in any  missing  parts  of
                     82: the  file  name(s).  A file name is considered to consist of four components in
                     83: the form "dir/name.suffix.other", where         the  name  and  suffix  parts  do  not
                     84: contain         periods.    The  defaults are always used when modifying a file.  When
                     85: reading a file, first all of the defaults are tried, then  just         the  directory
                     86: default,  then all  but  the  directory default, and finally with no defaults.
                     87: Empty or relative directory fields are completed from the connected  directory,
                     88: which  is  settable  via  ^\W. The last string or file name argument is always
                     89: remembered, and can be inserted at any time via ^VG.  For example, if  you  try
                     90: to  read  in  a file, but misspell its name, you can save typing the whole name
                     91: again by typing ^R^VG. Similarly, in the ^Z command, if the replace string  is
                     92: similar         to  the search string, you can use ^VG in typing the replace string to
                     93: insert the search string.
                     94: 
                     95: Some commands require a 1-character option (preceded  by  an  optional numeric
                     96: argument).  Examples of these are ^V, ^X, ^\, ^], and ^_.  The optional numeric
                     97: argument  defaults  to 1 where applicable, and has an optional minus sign.  The
                     98: actual numeric argument used will be the implicit argument  (from  a  preceding
                     99: ^U)  times any explicit argument given after the option.  ^G will quit from the
                    100: option, ^L will re-display, and ? will type help for the options.  The case  of
                    101: the option character does not matter.
                    102: 
                    103: Some  commands require a Yes/No confirmation.  A question will be displayed at
                    104: the top of the screen, to be answered by typing Y or N (case  is  unimportant).
                    105: ^G can also be typed to abort the command, so that no action is taken.
                    106: 
                    107: Long  lines  are  not  displayed on multiple lines of the screen.  If a line is
                    108: longer than the width of the screen, TED will display an exclamation  mark  (!)
                    109: in the last column to indicate that the line is too long to display completely.
                    110: ^V! can be used to (find and) display more of a long line.
                    111: 
                    112: Every  so  often  the buffer is saved to the file "_ted.sav.#" (where # is your
                    113: process id) in your login directory if the buffer has been changed.    This  is
                    114: intended to allow recovery from system crashes.         In addition, if TED receives a
                    115: SIGHUP signal,  a  save  will  be  performed  if  the buffer has been changed.
                    116: However, it is still  a         good  idea  to  periodically  write  out  your  buffer
                    117: manually.  The ^U-^H command can be used to turn saving on or off.
                    118: 
                    119: Suppose         that  you want to create a text file from scratch.  When TED starts up
                    120: you have an empty buffer.  To insert normal text into the buffer, just type  as
                    121: you  would  on a  typewriter.  The delete key (usually represented here as ^?)
                    122: will allow you to undo minor errors quickly.  Then, to save the results of your
                    123: typing, use the ^W command to write the buffer to a file.  For a new  file  you
                    124: must give a file name in order to save your work.
                    125: 
                    126: If  you want to edit an old file, use the ^R command to read it into the buffer
                    127: (the old contents of the buffer will be deleted).  To insert  (at  the cursor)
                    128: the  text of a file into the text of the existing buffer, use the ^U^R command.
                    129: To find a place that you want to change, you can search for text (using the  ^S
                    130: command)  that precedes  the  place  you want changed.  Then you can use ^D to
                    131: delete characters, or ^K to kill entire lines, and  insert  the         correct  text.
                    132: Again, to  save  the  results of your editing, use the ^W command to write the
                    133: buffer to a file.  If you do not give a file name in this case, the ^W command
                    134: will  write  out  a  new version of the file.  To append the text of the buffer
                    135: onto the end of an existing file, use the ^U^W command.
                    136: 
                    137: The best way to learn TED is to start a TED up and practice manipulating  text.
                    138: Experimenting  is  encouraged, since you can see the effects of most characters
                    139: directly on the screen.         TED has a built-in help command, ^H, which allows  you
                    140: to view pieces of this file by selecting from a simple menu.
                    141: **** Introduction ****
                    142: 
                    143: **** Characters ****
                    144: Char:  Effect: (# is a numeric arg (default 1), % is a string arg)
                    145: 
                    146: ^@     (#=1: escape to shell, #=0: terminate to shell, else: garbage collect)
                    147: ^A     go to start of line (#>1: go to start of buffer)
                    148: ^B     move back # chars
                    149: ^C     (#=1: escape to shell, #=0: terminate to shell, else: garbage collect)
                    150: ^D     delete # chars forward
                    151: ^E     go to end of line (#>1: go to end of buffer)
                    152: ^F     move forward # chars
                    153: ^G     quit from numeric/string argument or subcommand option
                    154: ^H     help command (#<0: toggle buffer saving,
                    155:                      #=0: flush help buffers,
                    156:                      #=1: TED help,
                    157:                      #>1: User-defined help)
                    158: ^I     (TAB) insert # tabs
                    159: ^J     (LF) run/continue interactive inferior (#>1: kill inferior)
                    160: ^K     kill # lines (#=0: kill to end of line, #=-1: kill to start of line)
                    161: ^L     clear screen & redisplay (#<1: redisplay, #>1: save buffer(s))
                    162: ^M     (CR) insert # newlines before cursor (terminates %)
                    163: ^N     move down # lines
                    164: ^O     insert # newlines after cursor
                    165: ^P     move up # lines
                    166: ^Q     insert next char typed # times
                    167: ^R     read file(s) from % (#<1: insert new file(s),
                    168:                             #=1: discard current file(s) and read new file(s),
                    169:                             #>1: insert text of file(s))
                    170: ^S     search for % # times (#<0: search backwards, #=0: set case mode)
                    171: ^T     set the mark at current cursor (#>1: swap mark & cursor)
                    172: ^U     multiply # by number (default 4)
                    173: ^V     text/cursor mover/saver
                    174: ^W     write file(s) (#<0: write changed files of current buffer,
                    175:                       #=0: write current file if changed,
                    176:                       #=1: write current file to %,
                    177:                       #>1: append current file onto %)
                    178: ^X     multiple buffers/windows, move by indent/region/list, pattern search,
                    179:          macros, mail check, restrict buffer, draw, box, set modes/variables
                    180: ^Y     ^Y^@c or ^U0^Yc to define macro for char 'c', ^Yc to execute
                    181: ^Z     replace %1 by %2 in rest of current file (#>1: rest of buffer)
                    182: ^[     (ESC) escape for VT52 and Heath function and alternate keypad keys
                    183: ^\     compile, indent, format, mail
                    184: ^]     adjust lines/marked-text/paragraph/comments
                    185: ^^     edit/scan/type/list matching files
                    186: ^_     delete/link/change-mode/rename files
                    187: ^?     (DEL) delete # chars backwards (usually can't be typed as CTRL-?)
                    188: other  chars insert themselves # times before cursor (#<0: after cursor)
                    189: **** Characters ****
                    190: 
                    191: **** Short examples ****
                    192: ('$' stands for carriage-return)
                    193: 
                    194: User types:    Effect:
                    195: 
                    196: ABC            Insert "ABC" at cursor, move cursor over 3 characters.
                    197: ^Rfoo.clu$     Read the file foo.clu to the buffer, place cursor at buffer
                    198:                start, display the current window.
                    199: ^Wfoo.clu$     Write the buffer to the file foo.clu, no change to the cursor.
                    200: ^W$            Write buffer to current file.
                    201: ^U^F           Move cursor 4 characters forward.
                    202: ^U56^N         Move cursor 56 lines forward.
                    203: ^U^V3F         Move cursor 12 words forward.
                    204: ^A             Move cursor to line start.
                    205: ^U^A           Move cursor to buffer start.
                    206: ^E             Move cursor to line end.
                    207: ^U^E           Move cursor to buffer end.
                    208: ^Siter$                Search forward for "iter" 1 time.  Sets default to "iter".
                    209: ^U-^S$         Search backward 1 time for the default.
                    210: **** Short examples ****
                    211: 
                    212: **** Keypad and function keys ****
                    213: On  VT52's, Heath's, and many other terminals the alternate keypad and function
                    214: keys can be used.  Their corresponding escape  sequences  can  also  by  typed
                    215: explicitly.  (The keys listed below are for Heath's in shifted keypad mode.)
                    216: 
                    217: Key:   Seq:     Meaning:
                    218: 
                    219:        esc esc  redefine escape sequence (see below)
                    220: 7      esc @    move to end of # previous word (^V[)
                    221: 8,UP   esc A    move backward # pages (^V^P)
                    222: 2,DOWN esc B    move forward # pages (^V^N)
                    223: 6,RIGHT esc C   move forward # words (^V^F)
                    224: 4,LEFT esc D    move backward # words (^V^B)
                    225: 5,HOME esc H    enter alternate keypad mode
                    226: ERASE  esc J    pattern search # times for default (^X^P^M)
                    227: 1      esc L    delete backward to end of # previous word (^V<)
                    228: 3      esc M    delete forward to start of # next word (^V>)
                    229: 9      esc N    move to start of # next word (^V])
                    230: BLUE   esc P    delete # words forward (^V^D)
                    231: RED    esc Q    delete # words backwards (^V^?)
                    232: GREY   esc R    string search forward # times for default (^S^M)
                    233: f1     esc S    string search backward # times for default (^U-^S^M)
                    234: f2     esc T    set case mode for searches (^U0^S)
                    235: f3     esc U    scroll window up # lines (^V-^J)
                    236: f4     esc V    scroll window down # lines (^V^J)
                    237: f5     esc W    reposition window at cursor (^U0^L)
                    238:        esc ? ?  print help
                    239: ENTER  esc ? M  garbage collect address space (^U^C)
                    240: .      esc ? n  exit to CSH (^C)
                    241: 0      esc ? p  search backward # times for default (^U-^S^M)
                    242:        esc ? q  delete backward to end of # previous word (^V<)
                    243:        esc ? r  move forward # pages (^V^N)
                    244:        esc ? s  delete forward to start of # next word (^V>)
                    245:        esc ? t  move backward # words (^V^B)
                    246: shft 5 esc ? u  exit alternate keypad mode (when in alternate keypad mode)
                    247:        esc ? v  move forward # words (^V^F)
                    248:        esc ? w  move to end of # previous word (^V[)
                    249:        esc ? x  move backward # pages (^V^P)
                    250:        esc ? y  move to start of # next word (^V])
                    251: 
                    252: The  sequences "esc [ char"  and  "esc O char"  are  interpreted  the  same as
                    253: "esc ? char" when "char" is a lowercase letter, and otherwise  are  interpreted
                    254: the same as "esc char".
                    255: 
                    256: It  is also possible to redefine any escape sequence (and hence any function or
                    257: keypad key), to execute an arbitrary string.  The string is executed just  like
                    258: a  macro  definition,  and  has         basically  the same effect as if you typed the
                    259: characters of the string directly on the keyboard.  An escape sequence can  be
                    260: "undefined" back to its original meaning by defining it to the empty string.
                    261: 
                    262:        esc esc char            to redefine     esc char
                    263:        esc esc ? char          to redefine     esc ? char
                    264: 
                    265: Note  that a function or keypad key can be redefined by typing ESC and then the
                    266: function or keypad key.
                    267: 
                    268: Sequences which are "equivalent" to ^V deletion         commands  are  not  completely
                    269: equivalent,  in         that  they  do  not save the deleted text in the implicit kill
                    270: area.  If saving is important, these sequences can be redefined         to  explicitly
                    271: execute the appropriate ^V command.
                    272: **** Keypad and function keys ****
                    273: 
                    274: **** Moving the cursor ****
                    275: There  are many commands for moving the cursor around, almost all of which take
                    276: a numeric argument as a repetition count:
                    277: 
                    278: ^U^A   moves to the start of the buffer
                    279: ^U^E   moves to the end of the buffer
                    280: ^A     moves to the start of the current line
                    281: ^B     moves to the previous character, wrapping to end of previous line
                    282: ^E     moves to the end of the current line
                    283: ^F     moves to the next character, wrapping to start of next line
                    284: ^N     moves to the start of the next line
                    285: ^P     moves to the start of the previous line
                    286: ^V^B   moves to the start of the previous word
                    287: ^V^F   moves to the end of the next word
                    288: ^V]    moves to the start of the next word
                    289: ^V[    moves to the end of the previous word
                    290: ^Vspace skips forward over blanks
                    291: ^V#L   moves to line #
                    292: ^V^N   moves to the next screenful of text
                    293: ^V^P   moves to the previous screenful of text
                    294: ^V!    moves to the next (or current) line which extends off the screen
                    295: ^X^B^P moves to the previous start of paragraph
                    296: ^X^E^P moves to the next end of paragraph
                    297: ^X^F^P moves to the next start of paragraph
                    298: ^X^B^S moves to the previous start of sentence
                    299: ^X^E^S moves to the next end of sentence
                    300: ^X^F^S moves to the next start of sentence
                    301: 
                    302: Normally, paragraphs are separated by "formatter" lines.  Formatter  lines  are
                    303: blank  lines, and any lines starting with a character in the "no_fill_starters"
                    304: string variable.  This variable contains period and single  quote  by  default,
                    305: for  R20  text formatter command lines.  It is also often useful to consider a
                    306: new paragraph to start at every line with leading spaces or tabs.  This can  be
                    307: obtained  by  setting  the "pindent" number variable to a non-zero value (it is
                    308: zero by default).
                    309: 
                    310: A sentence is terminated by a period,  exclamation  point,  or question  mark,
                    311: optionally followed by a single quote, double quote, or right "bracket" (round,
                    312: square, curly, or angle), followed by a newline, a tab, two spaces, a space and
                    313: a tab, or a space and a newline.  Formatter lines also separate sentences.
                    314: 
                    315: A  word         consists  of  letters and digits, plus certain special characters.  By
                    316: default, the only special character is underscore.  You can  specify  what  the
                    317: special characters are by changing the "word_chars" string variable.
                    318: 
                    319: The  following commands  move  the  cursor based on the indentation (amount of
                    320: leading space consumed by spaces and tabs) of lines in the buffer.   These  are
                    321: particularly  useful  in  moving around in (reasonably formatted) CLU and Argus
                    322: code, but are useful for other languages and documents as well.         Most  move  by
                    323: comparing  the indentation of previous or following lines with the indentation
                    324: of the current line, and most take a numeric argument as a repetition count:
                    325: 
                    326: ^X^I^B moves back to the next line with a different indentation
                    327: ^X^I^D moves to the next line with a greater indentation, provided
                    328:        no line with a lesser indentation intervenes
                    329: ^X^I^E moves to the next line with a lesser indentation
                    330: ^X^I^F moves to the next line with a different indentation
                    331: ^X^I^H moves back to the next line with a greater indentation, provided
                    332:        no line with a lesser indentation intervenes
                    333: ^X^I^N moves to the next line with the same indentation, provided
                    334:        no line with a lesser indentation intervenes
                    335: ^X^I^P moves back to the next line with the same indentation, provided
                    336:        no line with a lesser indentation intervenes
                    337: ^X^I^U moves back to the next line with a lesser indentation
                    338: ^X^I#^S moves to the next line indented # spaces
                    339: ^X^I#^^ moves back to the next line indented # spaces
                    340: 
                    341: The following commands move the cursor based on nested "list" structure,  i.e.,
                    342: based  on  nested matching ()'s, []'s, {}'s, and <>'s, ignoring the contents of
                    343: string and character literals. The string variable "list_chars" should be some
                    344: subset of the characters (), [], {}, <>, ", and ', and defines the active  list
                    345: and literal delimiters, with the default being all but <>.
                    346: 
                    347: ^X^Z^A moves backward up # list levels
                    348: ^X^Z^B moves backward over # lists at the current nesting level
                    349: ^X^Z^D moves (#>0: forward, #<0: backward) down # list levels
                    350: ^X^Z^E moves forward up # list levels
                    351: ^X^Z^F moves forward over # lists at the current nesting level
                    352: ^X^Z^N moves forward up and down (^X^Z^E^X^Z^D) # times
                    353: ^X^Z^P moves backward up and down (^X^Z^A^X^Z-^D) # times
                    354: **** Moving the cursor ****
                    355: 
                    356: **** Moving and deleting text ****
                    357: The following commands delete text, and take a numeric argument as a repetition
                    358: count:
                    359: 
                    360: ^D     deletes the next character
                    361: ^?     (DEL) deletes the previous character
                    362: ^K     deletes to the start of the next line
                    363: ^VK    deletes the text between the mark and the cursor
                    364: ^V^D   deletes to the end of the next word
                    365: ^V^?   deletes to the start of the previous word
                    366: ^V^@   deletes blanks from the cursor forward
                    367: ^V>    deletes to the start of the next word
                    368: ^V<    deletes to the end of the previous word
                    369: 
                    370: ^D and ^? do not save the deleted text, but the others do.  The text deleted by
                    371: the  last  such command, or by the last sequence of ^K commands, is retained in
                    372: an invisible kill area, and can be reinserted anywhere by moving the cursor  to
                    373: the  point  of insertion and typing ^V^R (to insert after the cursor) or ^V-^R
                    374: (to insert before the cursor). This is a simple way of moving text.
                    375: 
                    376: ^V^Z deletes all lines in the buffer.
                    377: 
                    378: Moving text from one portion of the buffer to  another can  also  be  done  by
                    379: copying         the  text  from where it is to an invisible save area using one of the
                    380: text-saving options of the ^V command, moving  the  cursor  to  the  point  of
                    381: insertion,  and         typing  ^V^I  (to insert after the cursor) or ^V-^I (to insert
                    382: before the cursor).  The text-saving commands are:
                    383: 
                    384: ^V#C   saves the next # words following the cursor
                    385: ^V#^S  saves the next # lines following the cursor
                    386: ^VS    saves the text between the mark and the cursor
                    387: ^V#^W  saves and deletes the next # lines following the cursor
                    388: ^VW    saves and deletes the text between the mark and the cursor
                    389: 
                    390: The ^T command is used to set an invisible  mark  in  the  buffer,  which  will
                    391: remain there  until  a  subsequent  ^T  command  moves  it,  or a ^U^T command
                    392: exchanges it with the cursor.
                    393: 
                    394: Note that, as with the kill area, there is only one save area for ^V  commands,
                    395: so  that  the  second  time a text-saving command is used the text saved by the
                    396: first command will no longer be in the save area.  The ^V^R and ^V^I  commands,
                    397: however,  can  be  used         to insert the same text as many times as desired in as
                    398: many places as desired.
                    399: 
                    400: Multiple named save/kill areas can be obtained with multiple buffers commands.
                    401: **** Moving and deleting text ****
                    402: 
                    403: **** Searching ****
                    404: Simple string  searching  is  performed with the ^S command.  Searching can be
                    405: done either forwards or backwards, depending on         the  numeric  argument.    For
                    406: example, ^U5^S will search forward for the fifth occurrence of some string, and
                    407: ^U-^S  will  search  backwards for  the  first  occurrence.   A newline can be
                    408: included  in  the  search  string  by  typing  linefeed.     Upper/lower   case
                    409: distinctions  normally make a difference when searching, but can be ignored by
                    410: setting a flag with the ^U0^S  command.           This  flag  controls  all  searching
                    411: commands, not just ^S.
                    412: 
                    413: Changing  all (or some) occurrences of some string to another string is done by
                    414: the ^Z command.         It will ask for the text string to change, and the  string  to
                    415: change it to.  Then for each occurrence of the search string you can type Y to
                    416: change it to the default, or N to  avoid  changing  it,         or  U  to  update  all
                    417: remaining  occurrences to  the default.  There are many other options as well.
                    418: At the end, you can either install the changes or leave the buffer  as it  was
                    419: originally.
                    420: 
                    421: Various         options  of  the  ^^  command  allow you to peruse or search a list of
                    422: files. The list is just like that for ^R when making a multi-file buffer.  ^^T
                    423: simply displays the files one at a time, with commands for  moving  by  pages,
                    424: searching, editing, and moving to the next or previous file.  ^^S only displays
                    425: those  files  containing  a  particular         string.  ^^P only displays those files
                    426: containing a particular pattern.  ^^R reads all of the files into  a  temporary
                    427: recursive  editing buffer.  ^^L simply lists the names of the files, and allows
                    428: you to select a particular one at a time for editing by placing the  cursor  on
                    429: the  name  of a file and typing ^R.  Typing ^R on a directory file will cause a
                    430: recursive ^^L. ^^I simply inserts the names of  the  files  into  the  current
                    431: buffer.
                    432: 
                    433: There  are  also incremental searching modes and pattern matching search modes,
                    434: described separately.
                    435: **** Searching ****
                    436: 
                    437: **** Init files ****
                    438: TED  executes the file ".ted_init" in your login directory when it first starts
                    439: up.  That is, it executes the characters in ".ted_init" just as         if  you  typed
                    440: them  at  the  keyboard.  This allows you to set up various options any way you
                    441: want automatically.
                    442: 
                    443: A typical ".ted_init" might be:
                    444: 
                    445: ^X^SS^X^KS^V25%^]64W^]64B
                    446: 
                    447: This particular example turns on incremental search mode and alternate ^K mode,
                    448: forces the last screenful of a file  to         display  25%  blank  (it  is  normally
                    449: displayed 70% blank), sets the paragraph fill width to 64 characters, and turns
                    450: on auto-break mode by setting the break limit at 64 characters.
                    451: 
                    452: For  readability,  your         ".ted_init" can be split into several lines.  Newlines
                    453: are discarded, except that a blank line is converted to ^J.  Hence, a  ^J  must
                    454: be represented by two ^J's.
                    455: 
                    456: Note  that  these files must contain all of the ^Q's you would normally have to
                    457: type to get control characters into string arguments such as macro  bodies  and
                    458: search patterns.  For example, to define ^Y^L to be ^U-^L, a file would have to
                    459: contain the following:
                    460: 
                    461: ^Y^@^L^Q^U-^Q^L^M
                    462: **** Init files ****
                    463: 
                    464: **** Running programs ****
                    465: The  ^J         command allows the user to run programs interactively from TED without
                    466: leaving the editor environment, so that TED can be used like a primitive shell.
                    467: The ^J command asks for a program name, and if there is currently  no  inferior
                    468: for the program, asks for a command line and then starts the program.  If there
                    469: is an inferior for the program, the inferior is continued.  The default program
                    470: name is the most recently stopped inferior.  If there are no stopped inferiors,
                    471: the  value  of the  string variable "default_fork" is used, with default value
                    472: "debug".  The ^U^J command  can         be  used  to  kill  an  inferior  that  cannot
                    473: otherwise be terminated.
                    474: 
                    475: If the "pause" number variable is non-zero, TED will not clear the screen after
                    476: an  inferior  terminates  until         the next command is typed.  This allows you to
                    477: look over the output of inferiors that you do not actually interact with.
                    478: 
                    479: The ^\ command also allows the user to run certain kinds of programs  from  TED
                    480: without         leaving the editor environment.  The options of this command provide a
                    481: simple interface to allow the user to do the following:
                    482: 
                    483:        I,Q:             Indent current file.
                    484:        C,H,J,K,O,U:     Compile files.
                    485:        D,L,P,R,V,X:     Format current file using R20.
                    486:        E:               Format current file using Scribe.
                    487:        M:               Makefile.
                    488:        S:               Send contents of current file as mail.
                    489:        Y:               Run arbitrary program with the contents of
                    490:                         the current file as input.
                    491:        Z:               Run arbitrary program with the name of
                    492:                         the current file as JCL, or with arbitrary JCL.
                    493:        A,B:             Type or insert the last report from the above.
                    494:        W:               Change working directory.
                    495: 
                    496: Many of the options run separate programs.  While a separate program is running
                    497: TED prints the amount of real time that has elapsed.  A ^G  typed  at  TED  can
                    498: abort a runaway program (the user will be asked for definite confirmation).  In
                    499: general,  before  running  a  separate program,  if  the current file has been
                    500: changed since it was last read or  written,  then  the file  is  automatically
                    501: written         to  a  new  version.    After  executing  an  option,  any results are
                    502: automatically displayed.    These  results  are         retained  in  a  buffer  named
                    503: "Result",  and may  be  redisplayed later with the A option or inserted in the
                    504: current buffer with the B option.  If the results contain errors keyed by  line
                    505: number, you can move to a particular line with the ^V#L command.
                    506: 
                    507: The  CLU/Argus indenter operates either on the whole file (the I option) or on
                    508: the text starting to the right of the current cursor (the Q option), performing
                    509: fairly complete syntax checking of programs as well  as         attempting  to  indent
                    510: code  attractively.    Errors  are  reported as if a separate program were run,
                    511: although a separate program is not run.         The Q option will indent  a  specified
                    512: number of textual "units", where a unit is basically a module, routine, equate,
                    513: statement, expression list, or expression.  The text to the right of the cursor
                    514: should start such a unit.  The indentation of the current line is assumed to be
                    515: correct; it is not derived from context.  Indentation is controlled by a number
                    516: of variables, settable via ^XI.
                    517: 
                    518: The  CLU  or  Argus  compiler  can  be run  as  an inferior process to compile
                    519: programs.  The most common usage (the C         option)  is  to  compile  the  current
                    520: buffer contents, first writing them out if the buffer has been changed since it
                    521: was  last  read         or  written.  The O option is like C, but causes an optimizing
                    522: compilation.  The U option will write out all changed files and         then  run  the
                    523: compiler  on just those, all files, or all files with out-of-date binary files,
                    524: or files with out-of-date binaries from a specified list.  There are  a         number
                    525: of  options  under  the         U  option  to  specify  the  compilation  mode (normal
                    526: compilation, optimization, type-check, etc.)  Explicit compiler commands can be
                    527: passed to the compiler via the J option.  Giving a zero         argument  with  the  J
                    528: option prevents  the  current  file  from  being written out.  For the C and O
                    529: options, the suffix must be "clu" (or "arg"), "equ",  "xfile", "spc",  or  "";
                    530: these  cause  COMPILE,  CE,  XFILE,  SPECS,  and  COMPILE  compiler  commands,
                    531: respectively.  The K option either keeps or kills a compiler.  If the  compiler
                    532: is  kept, the type-checking will usually be more complete.  The compiler should
                    533: generally be kept while compiling files from the same program.   When  finding
                    534: out-of-date binaries, the default suffix "bin", although this can be controlled
                    535: with  the  "binary_suffix"  variable;  the  default  directory is  the  source
                    536: directory, but this can be controlled with the "binary_dir" variable, which can
                    537: specify a directory relative to the source directory.  The N option can be used
                    538: to change the name of the compiler.
                    539: 
                    540: The text formatter "R" can be used to format the current file in six ways.  The
                    541: D option formats it for the DIABLO, the         L  option  formats  it  for  the  line
                    542: printer,  the  P  option produces PRESS format, the X option formats it for the
                    543: XGP, the V options formats it for the Varian, and the R option allows the  user
                    544: to  give  explicit commands.  Giving a zero argument with the R option prevents
                    545: the current file from being written out.  The name of the program R is defined
                    546: by  the         string  variable  "r_name",  default  value "r".  The program name can
                    547: contain a directory  specification.    In  addition,  "r_name" can  specify  a
                    548: constant  prefix  to  be  added         to  the command line, by appending the prefix,
                    549: separated by a space, to the program name.
                    550: 
                    551: The E option can be used to run the text formatter "Scribe".  The name of  the
                    552: program         Scribe  is defined by the string variable "scribe_name", default value
                    553: "scribe".  The program name can contain a directory specification.
                    554: 
                    555: The M option can be used to execute a "make" command.
                    556: 
                    557: TED can be used to compose and send mail.  Just type the text  of  the message
                    558: into  the  buffer, and then use ^\S.  If you want a subject heading, just start
                    559: the first line of the message with "Subject: ".         You will be prompted  for  the
                    560: addresses  to  send the message to.  The name of the mail program is defined by
                    561: the string  variable  "mail_name",  default  value  "/usr/lib/sendmail".    The
                    562: program         name  can contain a directory specification.  In addition, "mail_name"
                    563: can specify a constant prefix to be added to the command line, by appending the
                    564: prefix, separated by a space, to the program name.
                    565: 
                    566: An (almost) arbitrary program can be run with the name of the current  file  as
                    567: JCL  (but with no primary input) via the Z option.  The program can be run with
                    568: arbitrary JCL via ^\0Z.         The name of the  program  is  defined  by  the  string
                    569: variable "progz_name". The program name can contain a directory specification.
                    570: In  addition,  "progz_name"  can  specify  a constant prefix to be added to the
                    571: command line, by appending the prefix, separated by a  space,  to  the program
                    572: name.
                    573: 
                    574: An (almost) arbitrary program can be run with arbitrary JCL and the contents of
                    575: the current file as primary input via the Y option.  The name of the program is
                    576: defined         by  the  string variable "progy_name".  The program name can contain a
                    577: directory specification.  In addition, "progy_name"  can  specify  a  constant
                    578: prefix to be added to the command line, by appending the prefix, separated by a
                    579: space, to  the program name.  Beware that a single process is sending input to
                    580: the program and collecting output, so it is possible to deadlock.
                    581: **** Running programs ****
                    582: 
                    583: **** Adjusting text ****
                    584: Text can be adjusted simply in TED using the ^] command.  The user can adjust a
                    585: marked region of text (M), a region of comments (contiguous lines with the same
                    586: initial         non-blank  character)  (C), a paragraph (P), or a region of the next N
                    587: lines (N).  In addition, the width to use when adjusting can be set (by default
                    588: it is 64) (W). The text is justified "ragged right" by  default,  in  that  no
                    589: extra  spaces are inserted to align the text on the right margin.  However, the
                    590: justification mode can be changed to insert extra spaces to produce  even  left
                    591: and  right margins (J).         Formatter lines (blank lines and lines starting with a
                    592: character in the "no_fill_starters" string  variable)  will  not  be  adjusted.
                    593: Paragraph  justification  works only on non-indented paragraphs, i.e., only the
                    594: first line of the paragraph may contain leading spaces or tabs.
                    595: 
                    596: Text (or comments) may also be justified as it is  being  entered.    This  is
                    597: auto-break mode, and may be set by specifying a width to break at when entering
                    598: text (B).  A fill prefix may also be specified (A).
                    599: 
                    600: The  marked  text  can be left (L), right (R), or center (E) justified within a
                    601: fixed width field.  The absolute value of the numeric  argument         specifies  the
                    602: field  width.   When right or center justifying multiple lines, or when center
                    603: justifying the end of a single line, the field will not be padded  out on  the
                    604: right with spaces unless a negative argument is specified.
                    605: 
                    606: There  is  also an auto-indent mode (I), in which typing carriage return causes
                    607: blank space, equal in width to the leading blank space of the current line,  to
                    608: be  inserted at the beginning of the new line. Blank space is also inserted at
                    609: the beginning of new lines created by auto-break mode. In addition, ^V#^U will
                    610: change the leading blank space of the current line to be equal in width to  the
                    611: leading         blank space of the previous line, plus # additional (or fewer, if # is
                    612: negative) spaces.
                    613: 
                    614: The text between the mark and the cursor can be         indented  or  "undented"  with
                    615: ^V#H,  where # is the number of spaces to add or subtract.  ^V0H has the effect
                    616: of converting leading spaces to tabs where possible.  The remainder of a  line
                    617: starting at the cursor can be moved to start at a particular column with ^V^H.
                    618: **** Adjusting text ****
                    619: 
                    620: **** Multi-file buffers ****
                    621: ^R,  ^U^R,  and         ^U-^R can be used to read several files in to the buffer.  The
                    622: argument to these commands is basically a list of  file         specifications,  which
                    623: can  have  *'s in them, where * matches zero or more characters.  A real * in a
                    624: file name can be represented with ^@.  The specifications can be  separated  by
                    625: commas,         spaces,  tabs,  or  newlines.    These  separators  can be included in
                    626: specifications be preceding them with a backslash (\). All files matching  the
                    627: specifications are read in.  Alternatively, a file name (with no *'s in it) may
                    628: be preceded by an @, in which case the named file is expected to contain a list
                    629: of  file  specifications (which can also have @'s in from of them).  For ^R, if
                    630: there is only one matching file, it replaces the  current  file         (the  one  the
                    631: cursor is  in)  in  the  buffer;  if there is more than one matching file, the
                    632: entire buffer is first flushed.         For  ^U-^R,  all  matching  files  are  simply
                    633: inserted into the buffer.  For ^U^R, the text of each matching file is inserted
                    634: into  the  current file of the buffer. Note that the default file name applies
                    635: to all file specifications, including those in @-files.
                    636: 
                    637: Each file appears in the buffer with a 3 line heading of the form:
                    638:        ^L
                    639:        % <file name>
                    640:        <blank line>
                    641: These lines cannot be modified.
                    642: 
                    643: Most TED commands work as before, with (at  least)  the         following  exceptions.
                    644: Text  withdrawal  only works within a given file; that is, one cannot withdraw
                    645: text containing parts (or all) of different files.   (^U)^R,  (^U)^W,  and  ^\I
                    646: only affect the current file, i.e., the file containing the cursor.  ^Z acts on
                    647: the current file, and ^U^Z acts on the entire buffer.
                    648: 
                    649: ^U-^W  can be used to write out (only) changed files, with options of using the
                    650: existing file names or specifying new ones.  There are a number of  ^V options
                    651: related to multi-file buffers. ^VA moves to the start of the current file, ^VE
                    652: move  to  the end of the current file, ^VN moves to the start of the next file,
                    653: ^VP moves to the start of the previous file,  ^V#@  moves  to  line  # of  the
                    654: buffer,         ^V^K  deletes  the current file from the buffer, and ^VO inserts space
                    655: for a new file.         ^VV displays the file number and name of the current file, the
                    656: file and buffer line numbers of the current cursor position, and the column and
                    657: character numbers of the current cursor position.  There is also  a  ^\         option
                    658: related         to  multi-file buffers.  ^\G takes the current file, which should be a
                    659: CLU or Argus file, and splits it into a         several  files,  each  containing  one
                    660: module.
                    661: 
                    662: While  working on a multi-file buffer, all changed files will be written to the
                    663: ted save file. If the system crashes, simply reading in  your  ted  save  file
                    664: will  not  get you  back  to  a multi-file buffer.  To separate out individual
                    665: files, see "~CLU/restore.macro".
                    666: **** Multi-file buffers ****
                    667: 
                    668: **** Multiple buffers ****
                    669: When you first start up a TED, you are working in a buffer named "Main".  It is
                    670: possible  to  have  multiple  named buffers around, and to switch between them.
                    671: Only one buffer is displayed in a window at one time, and any buffer  can  have
                    672: multiple  files         in  it.    Multiple  buffers  are an alternative to multi-file
                    673: buffers, and both are useful on occasion.
                    674: 
                    675: The multiple buffer commands are under ^X^H.  There are commands  for  creating
                    676: and  destroying buffers and for switching between them, for moving text between
                    677: buffers, and for displaying the status of all buffers. All buffers are kept in
                    678: a ring structure, and several commands work on the basis of ring order.
                    679: 
                    680: ^B     asks for a buffer name, and displays that buffer  if  it  exists,  else
                    681:        creates and displays a new empty buffer of that name.
                    682: ^D     displays  a  list  of  all  buffers and the files in those buffers, and
                    683:        indicates if they have been modified since last written.
                    684: ^F     flips to the buffer previously displayed in the window,  if  any,  else
                    685:        the previous buffer in the ring.
                    686: ^H     asks  for  a string and displays the next buffer in the ring whose name
                    687:        contains that string as a substring.
                    688: ^K     asks for a buffer name and kills the  specified  buffer  unless  it  is
                    689:        being  displayed  by another window.  Confirmation must be given if the
                    690:        buffer has been modified.  If the buffer  is  being  displayed  in  the
                    691:        current window, a new buffer is chosen for display.
                    692: ^N     displays the #'th next buffer in the ring
                    693: ^P     displays the #'th previous buffer in the ring
                    694: ^R     asks for a list of files, creates (if necessary) a buffer whose name is
                    695:        derived  from  the  list, reads the files into the buffer, and displays
                    696:        the buffer.  If the  buffer  already  exists  and  has  been  modified,
                    697:        confirmation  must  be  given.   For  a  single file specification, the
                    698:        buffer name is the name.suffix pair of the file specification.   For  a
                    699:        list  of  file specifications, a new buffer is always created, and will
                    700:        be "Main" followed by digits.
                    701: ^S,S   appends text from the current buffer to  the  end  of  a  named  buffer
                    702:        (default  "Temp").  ^S appends # lines, S appends the marked text.  The
                    703:        text is not deleted from the current  buffer.    The  named  buffer  is
                    704:        created if it does not exist.
                    705: ^W,W   withdraws text from the current buffer and appends it to a named buffer
                    706:        (default  "Temp").   ^W withdraws # lines, W withdraws the marked text.
                    707:        The named buffer is created if it does not exist.
                    708: C      writes out all changed files in all buffers, prompting for a  new  name
                    709:        for  each file.  Typing ^G for a particular file will not write it out.
                    710:        If # is zero, existing names for files will be used with no prompting.
                    711: I      inserts the text of the named buffer  at  the  cursor  of  the  current
                    712:        buffer.  The text is not removed from the named buffer.
                    713: **** Multiple buffers ****
                    714: 
                    715: **** Multiple windows ****
                    716: In  addition to multiple buffers, it is also possible to have multiple windows.
                    717: Each window displays a single buffer, but different  windows  can  display  the
                    718: same  buffer  if  desired.    Editing can only be done in one window at a time,
                    719: though other windows can be scrolled.  The "cursor" is a per buffer notion, not
                    720: a per window notion.
                    721: 
                    722: One possible use of multiple windows is during compilation or formatting.   The
                    723: result of a ^\ command is saved in a buffer named "Result".  When you get error
                    724: messages,  you can create a second window and display the Result buffer in it.
                    725: Then you can fix the errors in one window while scrolling to new error messages
                    726: in the other window.  This  is often  much  more  convenient  than  constantly
                    727: flipping back and forth with ^\A.
                    728: 
                    729: The  multiple window commands are under ^X^W.  There are commands for splitting
                    730: the current window and killing the current window, for moving to a new window,
                    731: for  changing the size of existing windows, and for scrolling windows. Windows
                    732: are kept in a ring structure, and several commands work on the basis  of  ring
                    733: order.
                    734: 
                    735: ^B     moves the bottom boundary of current window down # lines.  A negative #
                    736:        means move up.  Fails on bottom window.
                    737: ^K     kills  the  current  window (but not the buffer it displayed).  The new
                    738:        editing window is the window above, if  any,  else  the  window  below.
                    739:        Space  from  the killed window is added to the new editing window.  The
                    740:        cursor will be moved if necessary to reside in the part of  the  buffer
                    741:        currently displayed in the new editing window.
                    742: ^N     selects  a  new  editing  window by moving down (and around) # windows.
                    743:        The cursor will be moved if necessary to reside  in  the  part  of  the
                    744:        buffer currently displayed in that window.
                    745: ^P     selects  a new editing window by moving up (and around) # windows.  The
                    746:        cursor will be moved if necessary to reside in the part of  the  buffer
                    747:        currently displayed in that window.
                    748: ^R     asks for a list of files, creates (if necessary) a buffer whose name is
                    749:        derived  from  the  list,  reads  the files into the buffer, splits the
                    750:        current window, and displays the new buffer in the new,  lower  window.
                    751:        The  new  window  contains |#| text lines if # is not 0 or 1, otherwise
                    752:        the current window is split  in  half.   The  new  window  becomes  the
                    753:        editing  window.    If the buffer already exists and has been modified,
                    754:        confirmation must be given.   For  a  single  file  specification,  the
                    755:        buffer  name  is the name.suffix pair of the file specification.  For a
                    756:        list of file specifications, a new buffer is always created,  and  will
                    757:        be "Main" followed by digits.
                    758: ^S     asks  for a buffer name, creates a new empty buffer of that name if one
                    759:        does not exist, splits the  current  window,  and  displays  the  named
                    760:        buffer  in  the  new,  lower  window.  The new window contains |#| text
                    761:        lines if # is not 0 or 1, otherwise the  current  window  is  split  in
                    762:        half.  The new window becomes the editing window.
                    763: ^T     moves  the top boundary of the current window up # lines.  A negative #
                    764:        means move down.  Fails on the top window.
                    765: D      selects a new editing window by moving down  (and  around)  #  windows.
                    766:        The  part  of  the  buffer  displayed in that window will be changed if
                    767:        necessary to include the cursor.
                    768: N      scrolls the next window down (and around) by # lines if |#|~=1, or by a
                    769:        screenful if |#|=1.  Does not move the cursor in any window,  and  does
                    770:        not change windows.
                    771: P      scrolls the previous window up (and around) by # lines if |#|~=1, or by
                    772:        a screenful if |#|=1.  Does not move the cursor in any window, and does
                    773:        not change windows.
                    774: U      selects  a new editing window by moving up (and around) # windows.  The
                    775:        part of the  buffer  displayed  in  that  window  will  be  changed  if
                    776:        necessary to include the cursor.
                    777: **** Multiple windows ****
                    778: 
                    779: **** Incremental search ****
                    780: Incremental  search  changes  ^S so that it searches for a match dynamically as
                    781: you type the search string.  It is also useful for counting  occurrences  of  a
                    782: string.
                    783: 
                    784: ^X^SS  changes the search mode to incremental. ^S starts incremental search in
                    785: Initial mode.  This displays  a         line  at  the  bottom  announcing  incremental
                    786: search,         and  showing you the default.  You now have a number of options, based
                    787: on what character you type:
                    788: 
                    789: ^D     asks for a new default search string.
                    790: ^H     flips the search direction.
                    791: ^L     clears the screen and redisplays.
                    792: ^O     asks for a string and counts the number of occurrences of  that  string
                    793:        in the rest of the buffer in the search direction.
                    794: ^S     searches forward for the default and enters Search mode.
                    795: ^U     reads  a  numeric  argument as usual, to be applied to the next command
                    796:        whether or not it exits incremental search.
                    797: ^Y     flips sense of whether case is ignored in searches.
                    798: CR     exits incremental search, leaving the cursor where it is.
                    799: ?      displays help.
                    800: 
                    801: All other control characters (except ^I and ^J)         exit  incremental  search  and
                    802: execute         normally.    Any  other  character  becomes the first character of the
                    803: search string and enters Search mode.
                    804: 
                    805: Once Search mode is entered, ^D and ^O no longer have  their  special  meaning,
                    806: and ^H and ^Y additionally initiate a search.  The only new functions are:
                    807: 
                    808: ^?     (DEL)  deletes  #  characters  from  the search string and restores the
                    809:        cursor and search direction to their previous values.
                    810: ^G     exits incremental search if the search string is empty, else clears the
                    811:        search string and restores the cursor and  search  direction  to  their
                    812:        initial values.
                    813: 
                    814: As characters are typed in, they are added to the end of the search string, and
                    815: searching  in the current direction is continued.  If the desired string is not
                    816: found, the bell is rung, and the character left in the search string,  with  an
                    817: indication that search failed.
                    818: 
                    819: When  incremental  search is exited, the search default is set according to the
                    820: current search string if it is non-empty.
                    821: **** Incremental search ****
                    822: 
                    823: **** Macros ****
                    824: TED  has  a  simple  macro facility.  A macro is simply a string of characters;
                    825: executing a macro has basically the same effect as if you typed the  characters
                    826: of  the         macro directly on the keyboard.  There are no conditional or iteration
                    827: constructs.  Commonly used sequences of commands can be turned into macros  and
                    828: defined in your ".ted_init" file, and special macros can be defined on the fly.
                    829: 
                    830: Macros can be given either string or character names.  A character-named macro
                    831: is defined by typing ^Y^@c (or ^U0^Yc), where 'c' is the character to  be  used
                    832: as  the         name  of  the  macro, followed by the text of the macro.  The macro is
                    833: executed by typing ^Yc, where c is the character naming         the  macro.    ^U#^Yc,
                    834: with  #>0,  will execute the macro # times.  A string-named macro is defined by
                    835: typing ^X0^Y, followed by the macro name, followed by  the  macro  body.    The
                    836: macro  is  executed  by typing ^X^Y, followed by the macro name.  Typing ^X#^Y,
                    837: followed by the macro name, will execute the macro # times.
                    838: 
                    839: During macro execution, an error (anything that would display an "Oops:..."  at
                    840: the  top  of the screen) will cause the rest macro to be ignored.  This is also
                    841: true of failing searches in incremental search mode.
                    842: 
                    843: You can also place a macro body in a file, and execute it via the ^X^X command.
                    844: The format of such a file is the same as your ".ted_init" file, i.e.,  newlines
                    845: are  discarded,         except that a blank line is converted to ^J.  Hence, a ^J must
                    846: be represented by two ^J's.
                    847: **** Macros ****
                    848: 
                    849: **** Pattern matching ****
                    850: In  addition  to  searching  for  strings,  TED         has  a pattern matching search
                    851: command, ^X^P. There is also a command, ^^P, for scanning multiple files for a
                    852: pattern.  Within a pattern,  it         is  possible  to  specify  textual  deletions,
                    853: substitutions, and insertions. The grammar for a pattern is as follows:
                    854: 
                    855: prim   ::=     sequence of "normal" and quoted characters (^Q char)
                    856:           |    ^A | ^B | ^D  | ^F | ^J | ^L | ^P | ^X | ^Y | ^Z
                    857:           |    ^E^A | ^E^B | ^E^D | ^E^F | ^E^J | ^E^L | ^E^P | ^E^Y
                    858:           |    ^R char char  |  ^K char char  |  ^\ char ... char ^\
                    859:           |    ^V char
                    860:           |    ^T text [^T]
                    861:           |    ^U name [^U]
                    862:           |    ^[ pattern ^]
                    863: expr   ::=     prim [^@ | ^^ | ^? | ^_]
                    864: unit   ::=     expr
                    865:           |    expr ^S text [^S] [^@ | ^^ | ^? | ^_]
                    866:           |    expr ^W char [^@ | ^^ | ^? | ^_]
                    867:           |    expr ^G macro-body ^G [^@ | ^^ | ^? | ^_]
                    868:           |    ^N unit
                    869: group  ::=     unit [group]
                    870: pattern ::=    group [^O pattern]
                    871: 
                    872: Things in  square  brackets  ([])  are  optional.   All special characters are
                    873: defined         below.    All  other  characters  are  "normal"  characters.    Normal
                    874: characters  match  themselves.   In  addition, the case flag for searches also
                    875: applies to normal characters.
                    876: 
                    877: ^A     matches any alphanumeric character (0-9, A-Z, _, a-z).
                    878: ^B     matches any blank character (space, tab).
                    879: ^D     matches any digit (0-9).
                    880: ^E     can be followed by one of (^A, ^B, ^D, ^F, ^J, ^L, ^P, ^Y), and matches
                    881:        any character not in the  range  specified  by  that  character.    For
                    882:        example, ^E^Y will match only newline.
                    883: ^F     matches any formatting characters (space, tab, formfeed, newline).
                    884: ^G     specifies  arbitrary  actions to be performed on the part of the buffer
                    885:        matching the previous pattern, in the form of a sequence of  characters
                    886:        to  be  executed  just  as  if they were typed from the terminal.  A ^G
                    887:        within the macro-body must be quoted with  a  ^Q,  which  will  not  be
                    888:        removed.    Note  that  the  macro-body will not be executed unless the
                    889:        overall pattern matches, and in no way affects the success  or  failure
                    890:        of  matching.    The  macro-body  is  executed  on  a  separate  buffer
                    891:        containing the match, with the cursor initially at  the  start  of  the
                    892:        buffer  and  the  mark  at the end of the buffer.  The contents of this
                    893:        buffer will be used to replace the match.   Note  that  the  macro-body
                    894:        need  not  modify the buffer; it could, for example, copy the buffer to
                    895:        the end of some other buffer.  The macro-body should not  generate  any
                    896:        errors.   If an error does occur within the macro-body, the rest of the
                    897:        macro-body will be ignored, and you will be left in a restricted buffer
                    898:        named Pattern.  You should then type ^^ to continue.
                    899: ^J     matches itself, the newline  character.    Note  that  newline  is  not
                    900:        considered  a  text character, and must be quoted inside ^S and ^T text
                    901:        strings.
                    902: ^K     matches any character not in  the  range  specified  by  the  next  two
                    903:        characters.  For example, ^Kab would match any character except 'a' and
                    904:        'b'.  The range must be specified with the smallest character first.
                    905: ^L     matches any "letter" (A-Z, _, a-z).
                    906: ^N     NOT  construct.    This  will  not  actually match anything.  It simply
                    907:        guarantees that the following pattern will not  match  at  this  point.
                    908:        Note  that  any  text  deletion  or  insertion  specified  within  this
                    909:        construct will be ignored.
                    910: ^O     separates elements of an OR construct.  The elements of an OR construct
                    911:        are tried in parallel for the "closest" match.   The  possible  matches
                    912:        for  a  particular  element  are  always  tried in order.  The possible
                    913:        matches for all elements are shuffled such that a match M from  element
                    914:        E  is  tried  before  a match M' from element E' if and only if M is at
                    915:        least as close as M' and E is less than E'.  Closeness is determined by
                    916:        the starting position of the match.  Thus, if  the  OR  construct  must
                    917:        match  the immediately following text, the elements are simply tried in
                    918:        order.
                    919: ^P     matches any punctuation (non-alphanumeric) character except newline.
                    920: ^Q     quotes the next character for use as a text character.    For  example,
                    921:        ^Q^Q  will match the character ^Q.  Quoting can also be done inside ^G,
                    922:        ^S, ^T, and ^U arguments.
                    923: ^R     matches  any  character  in  the  range  specified  by  the  next   two
                    924:        characters.  For example, ^R^@^_ matches any control character.
                    925: ^S     substitutes  text  for  the  part  of  the buffer matching the previous
                    926:        pattern.  The text can be explicitly terminated with ^S,  but  will  be
                    927:        terminated  implicitly  by any other special character except ^Q.  Note
                    928:        that  no  substitutions  occur  unless  the  overall  pattern  matches.
                    929:        Substitutions in no way affect the success or failure of matching.
                    930: ^T     inserts  text  into  the buffer.  The text can be explicitly terminated
                    931:        with ^T, but  will  be  terminated  implicitly  by  any  other  special
                    932:        character  except ^Q.  Note that no insertions occur unless the overall
                    933:        pattern matches.  Insertions in no way affect the success or failure of
                    934:        matching.
                    935: ^U     matches the string which is the value of the named  string  environment
                    936:        variable.   If  no  such  variable exists, or is not a string variable,
                    937:        then matches the empty string.  The variable  name  can  be  explicitly
                    938:        terminated  with  ^U,  but  will  be terminated implicitly by any other
                    939:        special character except ^Q.
                    940: ^V     inserts the last partial match saved under the  label  defined  by  the
                    941:        next  character.    If  no match has been saved, the overall pattern is
                    942:        aborted.
                    943: ^W     deletes and saves the part of the buffer matching the previous  pattern
                    944:        under  the  label  defined by the next character.  The text can then be
                    945:        inserted using ^V with the same character as the label.  Any  character
                    946:        can  be  used  as  a  label.   Note  that no deletions occur unless the
                    947:        overall pattern matches.  Deletions in no way  affect  the  success  of
                    948:        failure of matching.
                    949: ^X     matches any character.
                    950: ^Y     matches any character except newline.
                    951: ^Z     matches the end of the buffer.
                    952: ^@     P^@  matches smallest possible sequence of the pattern P.  That is, the
                    953:        patterns <empty>, P, PP, PPP, PPPP, ...  are tried  in  order  for  the
                    954:        first  match  that  allows  the overall pattern to match.  For example,
                    955:        ^Y^@ can be used to specify that the remainder of the  overall  pattern
                    956:        must start matching somewhere on the current line.  ^X^@ can be used to
                    957:        specify  that  the  remainder of the overall pattern can start matching
                    958:        arbitrarily far forward in the buffer.
                    959: ^^     P^^ matches smallest possible non-empty  sequence  of  the  pattern  P.
                    960:        That is, the patterns P, PP, PPP, PPPP, ...  are tried in order for the
                    961:        first  match  that  allows  the  overall  pattern  to  match.    P^^ is
                    962:        equivalent to ^[^[P^]P^@^].
                    963: ^?     (DEL) P^? matches the largest sequence of the  pattern  P.    P^?  will
                    964:        match  either  the  longest  sequence  of P's, or the empty string, but
                    965:        nothing else.  For example, ^Y^? will match the rest of the  line,  and
                    966:        ^X^?  will match the rest of the buffer.  In situations where ^? and ^@
                    967:        could both be used, ^? is much more efficient.
                    968: ^_     P^_ matches the largest non-empty sequence of the pattern P.  P^_  will
                    969:        match  only  the  longest  sequence  of  P's.    P^_  is  equivalent to
                    970:        ^[^[P^]P^?^].  In situations where ^_ and ^^ could both be used, ^_  is
                    971:        much more efficient.
                    972: ^\ ^\  delimits  a  set  of characters; matches any character in the set.  For
                    973:        example, ^\+-*/^\ matches '+', '-', '*', or '/'.
                    974: ^[ ^]  are parentheses used  to  delimit  patterns.    Used  when  the  normal
                    975:        precedence is not sufficient.
                    976: 
                    977: Overall,  pattern  matching retry is performed depth first, right to left.  For
                    978: example, matching the pattern ^[A^OB^]^[X^OY^] would involve, for each match of
                    979: ^[A^O^B^], trying all possible matches of ^[X^OY^].
                    980: 
                    981: ^X^P with a positive argument will always add a prefix of ^X^@ (i.e., the match
                    982: can start arbitrarily far forward in the buffer),  and will  search  #  times.
                    983: ^X^P  with  a  negative         argument  will  always force the match to start at the
                    984: cursor, and will search |#| times.
                    985: 
                    986: ^X0^P can be used to turn on/off buffer change confirmation.  When  turned  on,
                    987: every change to the buffer made under pattern search will have to be confirmed.
                    988: 
                    989: Beware that  it  is  quite  easy  to  specify  patterns  that  will  go either
                    990: indefinitely or for a very long time  before  failing  or  matching  the  empty
                    991: string at  the  end  of  the  buffer.    ^G  can be used to abort long pattern
                    992: searches, but you may have to wait a bit before the ^G will be noticed.
                    993: 
                    994: As an example of the use of  pattern  matching,         the  following  pattern,  when
                    995: searched via ^X^P, will change the buffer to single spacing:
                    996: 
                    997: ^[^J^J^_^S^X^@^]^?
                    998: 
                    999: The  following pattern,  when  searched  via  ^X-^P, will delete all lines not
                   1000: containing the string "begin_list" or  the  string  "end_list" (providing  the
                   1001: first line does not contain either string):
                   1002: 
                   1003: ^[^[^X^@^J^]^S^Y^@^[begin_list^Oend_list^]^Y^?^J^]^?^X^?^S
                   1004: 
                   1005: The  following pattern, when searched via ^X^P, will change the next occurrence
                   1006: of
                   1007:        if <expr1> cor <expr2>
                   1008: as a complete single line with arbitrary spacing to
                   1009:        if <expr2> cand <expr1>
                   1010: with the same spacing:
                   1011: 
                   1012: ^B^?if^B^_^Y^^^W1^[^B^_cor^Scand^B^_^]^W2^Y^_^V2^V1
                   1013: **** Pattern matching ****
                   1014: 
                   1015: **** Pattern matching summary ****
                   1016: ^A     alphanumeric (0-9, A-Z, _, a-z)
                   1017: ^B     blank (space, tab)
                   1018: ^D     digit (0-9)
                   1019: ^E     exclusive of (^A, ^B, ^D, ^F, ^J, ^L, ^P, ^Y)
                   1020: ^F     format (space, tab, formfeed, newline)
                   1021: ^G     execute macro-body
                   1022: ^J     newline
                   1023: ^K     exclusive of range
                   1024: ^L     letter (A-Z, _, a-z)
                   1025: ^N     not
                   1026: ^O     or
                   1027: ^P     punctuation (non-alphanumeric/non-newline)
                   1028: ^Q     quote
                   1029: ^R     range
                   1030: ^S     substitute text
                   1031: ^T     insert text
                   1032: ^U     variable value
                   1033: ^V     insert text saved under label
                   1034: ^W     withdraw and save text under label
                   1035: ^X     any char
                   1036: ^Y     non-newline
                   1037: ^Z     end of buffer
                   1038: ^@     zero or more
                   1039: ^^     one or more
                   1040: ^_     all in a row
                   1041: ^?     all in a row or none
                   1042: ^\ ^\  char set
                   1043: ^[ ^]  parentheses
                   1044: **** Pattern matching summary ****
                   1045: 
                   1046: **** Sorting ****
                   1047: The  ^XX  command  performs a TECO-like sort of the current file of the buffer.
                   1048: The file is divided into records of arbitrary length, each of which contains  a
                   1049: sort  key, again of arbitrary length and positioned anywhere within the record.
                   1050: The records may be sorted in increasing lexicographic order  with  ^XX,         or  in
                   1051: decreasing  order  with ^X-X.  Case distinctions are ignored if the search flag
                   1052: is set to ignore case. The sort is stable (i.e., records with equal keys  will
                   1053: remain in the same relative order), so multi-key sorting can be accomplished by
                   1054: sorting a key at a time, least significant key first.
                   1055: 
                   1056: Records and keys are determined using three command strings, given as arguments
                   1057: to  the         sort  command.    The first command string is executed to get from the
                   1058: start of the current record to the start of its key.  The sort will be aborted
                   1059: if  this  command  string  generates  any errors.  The second command string is
                   1060: executed to get from the start of the key to the end  of  the  key  (i.e.,  one
                   1061: character  beyond  the end of the key).         In a failing string or pattern search,
                   1062: the end of the key (and the end of the record) is assumed to be the end of  the
                   1063: file;  any  other  errors  will         abort  the  sort.  The third command string is
                   1064: executed to get from the end of the key to the start of the next record (and is
                   1065: only executed if the previous command string did not generate an error).  In  a
                   1066: failing         string  or  pattern search, the end of the record is assumed to be the
                   1067: end of the file; any other errors will abort the sort.
                   1068: 
                   1069: The start of the first record is assumed to be the start  of  the  file.    The
                   1070: command         strings are repeatedly executed until the entire file has been divided
                   1071: into records.  The  command  strings  can  contain  arbitrary  commands.    The
                   1072: defaults  are  (1) the empty string, meaning the key starts at the beginning of
                   1073: the record, (2) ^E, meaning the end of the key is the end of the first line  of
                   1074: the  record,  and  (3) ^F, meaning the start of the next record is the start of
                   1075: the next line. This gives a line by line sort of the file.
                   1076: 
                   1077: Sorting part of a file can be done using the restricted buffer option, ^XR.
                   1078: **** Sorting ****
                   1079: 
                   1080: **** Miscellaneous options ****
                   1081: String and  file  name  arguments normally appear at the bottom of the current
                   1082: window.         Setting the "arg_display_mode" number variable  to  a  non-zero  value
                   1083: will  force  these arguments to always appear at the bottom of the screen.  The
                   1084: size of the argument window is normally 2 lines.  This can be  controlled  with
                   1085: the "arg_display_size" number variable.
                   1086: 
                   1087: Help displays (from ^H and ?) and ^\ result displays normally occupy the entire
                   1088: screen.           Setting  the "sub_display_mode" number variable to 1 will cause only
                   1089: the current window to be used. Setting the variable to 2 will cause the larger
                   1090: of the two areas above and below the current window to be used, or  the         entire
                   1091: screen if  there is only one window.  Setting the variable to 3 or higher will
                   1092: cause that many lines at the bottom of the screen to  be  used.           Setting  the
                   1093: variable to 0 or a negative value will restore the use of the full screen.
                   1094: 
                   1095: You  can  check         the  spelling of a word with ^XW.  The default argument is the
                   1096: word containing the cursor, or the word to the left of the cursor if the cursor
                   1097: is between words.  If the word appears to be misspelled, a  list  of  suggested
                   1098: spellings  will         be  displayed  at  the top of the screen.  Spelling is checked
                   1099: using ISPELL.  The ISPELL  process  is normally  kept  around  for  subsequent
                   1100: spelling checks, but may be killed off with the ^X0W command.
                   1101: 
                   1102: ^_D  will  delete a list of files with a yes/no confirmation on each file, ^_0D
                   1103: will delete a list of files without confirmation, ^_L will make         a  link  to  a
                   1104: file,  ^_S  will  make a symbolic link to a file, ^_M will change the mode of a
                   1105: list of files, and ^_R will rename a file.
                   1106: 
                   1107: ^VT displays the current date and time, and ^V0T inserts the current  date  and
                   1108: time  into the buffer. ^V^T displays the total CPU time used by TED so far, and
                   1109: the CPU time used since the last ^V^T command.
                   1110: 
                   1111: The restricted buffer option (^XR) gives you the piece of  the current  buffer
                   1112: between         the  mark and the cursor as a separate buffer to work on.  The changes
                   1113: get reflected in the original buffer when you exit (via ^^) from this mode.
                   1114: 
                   1115: There is an alternate mode for ^K, settable via ^X^K, that will only delete  to
                   1116: the  end of the line (not through it), unless you are already at the end of the
                   1117: line or #~=1.  There are alternate modes for ^N and ^P, settable via ^XM,  that
                   1118: place  the  cursor after leading spaces and tabs in the line, a mode for trying
                   1119: to stay at a fixed column position, and a mode for trying to stay at the column
                   1120: you were at before the last sequence of ^N and ^P commands.
                   1121: 
                   1122: There is a mode for text type-in (^XO) that will overwrite  characters in  the
                   1123: buffer,          rather   than   inserting   characters  into  the  buffer.    Type-in
                   1124: automatically reverts to insertion mode when at the end of a  line.    Newlines
                   1125: never overwrite characters; they are always inserted.
                   1126: 
                   1127: There  is  a  mode  for making simple straight line drawings (^X^D).  To draw a
                   1128: line, move the cursor (with ^A, ^E, ^F, ^B, ^N, ^P, ^Z) to the starting  point
                   1129: and  set  the  mark with ^T.  Then move the cursor to the ending point and type
                   1130: the printing character (octal 40 to 176) you want to draw the line with.   This
                   1131: will draw a line from the mark to the cursor, and set the mark to be the end of
                   1132: the  line.  To erase a line, just redraw the line with a blank.         Drawing a line
                   1133: will overwrite previous         characters  unless  you  type  ^U  before  typing  the
                   1134: printing character.
                   1135: 
                   1136: There  is  a  command for drawing a box around a group of lines (^XB). The box
                   1137: can be centered or indented a fixed amount from the left.  The shape of the box
                   1138: is controlled by various "box_*" string and number variables.
                   1139: 
                   1140: ^XCU and ^XCL change the case of the marked to text to upper  and  lower  case,
                   1141: respectively.   ^XCC  capitalizes the first letter of every word in the marked
                   1142: text.
                   1143: 
                   1144: The meanings of the RED and BLUE function keys on  Heaths  and  VT52s  can  be
                   1145: swapped with ^XE.
                   1146: 
                   1147: New mail can be tested for with ^X^M.
                   1148: 
                   1149: ^X#^R  will  force  the         #  line  down  (up if negative) from the current (with
                   1150: respect to where the cursor ought to be, not with respect to  where  it         really
                   1151: is)  line to be redisplayed, and correctly repositions the cursor.  This can be
                   1152: used to clean up lines that have been garbled by system         messages  or  a  noisy
                   1153: terminal line, and is particularly useful over a slow terminal line.
                   1154: 
                   1155: When  editing  over  a slow line where the system does not know the line speed,
                   1156: ^XT#B can be used to inform TED that the line speed  is         #  baud.    This  will
                   1157: automatically adjust padding appropriately.  This number will only be used when
                   1158: the  system does not know the line speed.  You can turn padding off with ^XT0P,
                   1159: and you can prevent TED from using full screen scrolling and insert/delete line
                   1160: with ^XT0S, although you should never have to do either of these.  You can tell
                   1161: TED your terminal has a meta key with ^XTM, or doesn't have  a meta  key  with
                   1162: ^XT0M; this controls whether the high bit of each character typed gets masked.
                   1163: Again, you should never have to do either of these, as the termcap entry should
                   1164: define this.
                   1165: 
                   1166: The default position of the cursor on redisplay is 75% up from the  bottom  of
                   1167: the  window.   This  percentage  can  be  set  with the ^V#^ command, with #<0
                   1168: restoring the default. When displaying the end of the buffer, the  default  is
                   1169: to  keep  the  window  70%  blank.    This  percentage can be set with the ^V#%
                   1170: command, with #<0 restoring the default.  When the  cursor  moves  outside  the
                   1171: current         window,  the default is to choose a new window around the cursor based
                   1172: on the above percentages.  However, the ^V#= command can be used to alter this,
                   1173: so that the window will instead be scrolled until the cursor  comes  into  view
                   1174: (at  the  top  or  bottom), provided that # percent of the original window will
                   1175: remain on the screen.  ^V#= with #<0 restores the default (100%).
                   1176: 
                   1177: You can create your own help file, to be displayed with the ^U^H command.   The
                   1178: string variable  "help_file"  defines the name of this file, the default being
                   1179: "~/.ted_hlp".  The file can be either a simple text file or a menu-driven file.
                   1180: For a menu-driven file, the first line must start with "**** Menu for ".    The
                   1181: following  lines,  up  to the next line starting with "**** Menu for ", make up
                   1182: the menu.  Each line of the menu consists of one or more menu items,  separated
                   1183: by  tabs.    Each  menu         item  consists of an upper-case letter (for selection)
                   1184: followed by a colon and a space, followed by the name of the  selection         (e.g.,
                   1185: "Multiple buffers").  The body of the selection is placed anywhere in the file,
                   1186: beginning and ending with a line of the form "**** N ****", where N is the name
                   1187: of the selection.
                   1188: 
                   1189: The  ^X#Z  command can be used to control the frequency of garbage collections,
                   1190: setting a GC to go off every 2**(#-4) megabytes.
                   1191: **** Miscellaneous options ****
                   1192: 
                   1193: **** TED variables ****
                   1194: The following list names the TED variables, their types, and what they are used
                   1195: for.  Number and string variables can be set by ^XN and ^XS, respectively.
                   1196: 
                   1197: Name             Type   Usage
                   1198: 
                   1199: adjust_width     N      width to use in adjusting text (^]W).
                   1200: arg_display_mode  N     N=0: string arguments at bottom of current window.
                   1201:                         N~=0: string arguments at bottom of screen.
                   1202: arg_display_size  N     string argument window size.
                   1203: backup_name      S      directory and extension for backup file names (^W).
                   1204: binary_suffix    S      default suffix for compiled binaries (^\U*M,L).
                   1205: binary_dir       S      default directory for compiled binaries (^\U*M,L).
                   1206: box_hspace       N      space between sides and text of box (^XB).
                   1207: box_hwidth       N      N<0: fill field if centered box (^XB).
                   1208:                         N>=0: width of sides of box (^XB).
                   1209: box_indent       N      N<0: center box in field of -N (^XB).
                   1210:                         N>=0: indent box N from left (^XB).
                   1211: box_string       S      string to draw box with (^XB).
                   1212: box_vspace       N      lines between top/bottom and text of box (^XB).
                   1213: box_vwidth       N      width of top/bottom of box (^XB).
                   1214: careful                  N      N~=0: confirm if buffers modified (^C).
                   1215: change_limit     N      # of changes to buffer between saves.
                   1216: comment_sep      S      placed between comment symbol and comment (^]C).
                   1217: compiler_name    S      name of compiler (^\).
                   1218: default                  S      default for string/filename arguments.
                   1219: default_fork     S      default program name (^J).
                   1220: esc-*            S      escape sequence redefinitions (ESC ESC).
                   1221: exit_msg         N      N~=0: clear screen & type message when exiting (^C).
                   1222:                         N=0: leave as much text on screen as possible (^C).
                   1223: fill_prefix      S      fill prefix to use in auto-break mode (^]A).
                   1224: help_file        S      user-defined help file (^U^H).
                   1225: help_query       N      N~=0: confirm help request (^H,^U^H).
                   1226: host             S      host name.
                   1227: ignore_case      N      N=0: upper/lower case matters in searches (^U0^S).
                   1228: justify                  N      N~=0: justify right margin (^]J).
                   1229: keep_count       N      # of old versions to keep, #<0: includes oldest (^W).
                   1230: keypad           N      N~=0: should be in alternate keypad mode (^[H).
                   1231: last_arg         S      last string/filename arg (^VG).
                   1232: last_result      S      name of last result buffer from ^\ command.
                   1233: list_chars       S      list and literal delimiters (^X^Z).
                   1234: mail_box         S      name of spooled mail file (^X^M).
                   1235: mail_name        S      name of mail program (^\S).
                   1236: max_width        N      maximum width of non-long lines (^V!).
                   1237: no_fill_starters  S     initial chars on line that inhibit adjusting (^]).
                   1238: pause            N      N~=0: pause at inferior termination (^J).
                   1239: pconfirm         N      N~=0: confirm pattern search buffer changes (^X0^P).
                   1240: pindent                  N      N~=0: indented lines start new paragraphs (^]).
                   1241: progy_name       S      name of program to run under ^\Y.
                   1242: progz_name       S      name of program to run under ^\Z.
                   1243: psearch                  S      last pattern search string (^X^P).
                   1244: r_name           S      name to use for R (^\).
                   1245: save_file        S      save file name.
                   1246: save_mode        N      octal mode bits for save file (^U^L).
                   1247: scribe_name      S      name to use for Scribe (^\).
                   1248: search           S      default search object (^S).
                   1249: sub_display_mode  N     N<=0: help and ^\ results use entire screen.
                   1250:                         N=1: use current window.
                   1251:                         N=2: use largest area above or below current window.
                   1252:                         N>2: use bottom N lines of screen.
                   1253: terminal         S      terminal name.
                   1254: umask            N      octal umask for inferior processes (^\,^J).
                   1255: word_chars       S      special chars included in words.
                   1256: write_check      N      check when using long file names (^W).
                   1257: write_mode       N      octal mode bits for new files (^W).
                   1258: write_style      N      backup-on-write mode (^W,^X^C).
                   1259: ^X^Y-*           S      macro definitions (^X^Y).
                   1260: ^Y-*             S      macro definitions (^Y).
                   1261: **** TED variables ****
                   1262: 
                   1263: **** Indenter variables ****
                   1264: Indenter  variables  can  be  set via ^XI.  All variables can be reset to their
                   1265: default values via ^XI*.  The CLU variables are:
                   1266: 
                   1267: Name           Value           Indents when starting line (unless noted)
                   1268: 
                   1269: begin_body     4               BEGIN-END body
                   1270: bracket                4               (,{,[ if starts line but does not start expr
                   1271:                                elts of () {} [] if first element starts line
                   1272:                                right side of :=
                   1273: close_bracket  1               ),},] if starts line
                   1274: cluster_body   4               CLUSTER body
                   1275:                                Argus: GUARDIAN
                   1276: do             2               DO
                   1277: elseif         1               ELSEIF
                   1278: end            0               END (0: indent END, ~0: don't indent END)
                   1279: except         3               EXCEPT
                   1280: for_body       4               FOR body
                   1281: head           2               RETURNS, SIGNALS, YIELDS
                   1282: is             8               IS
                   1283:                                Argus: HANDLES
                   1284: op             2               infix operators
                   1285: routine_body   4               PROC, ITER body
                   1286:                                Argus: CREATOR, HANDLER, BACKGROUND, RECOVER
                   1287: tag            3               TAG
                   1288:                                Argus: WTAG
                   1289: tag_body       4               TAG body
                   1290:                                Argus: WTAG
                   1291: then           3               THEN
                   1292: then_body      5               THEN body (if THEN also starts line)
                   1293:                                ELSE body
                   1294: thenx_body     3               THEN body (if THEN does not start line)
                   1295: when           3               WHEN
                   1296: when_body      5               WHEN body
                   1297: where          8               WHERE
                   1298: while_body     4               WHILE body
                   1299: 
                   1300: The additional variables for Argus are:
                   1301: 
                   1302: Name           Value           Indents when starting line (unless noted)
                   1303: 
                   1304: argus          0               indenter mode (0: CLU, ~0: Argus)
                   1305: coenter_body   4               coarm body (if first coarm key starts line)
                   1306: coenter_key    4               ACTION, TOPACTION, PROCESS
                   1307: coenterx_body  4               coarm body
                   1308:                                (if first coenter_key does not start line)
                   1309: enter_body     4               ENTER body (if enter key starts line)
                   1310: enter_key      4               ACTION, TOPACTION
                   1311: enterx_body    4               ENTER body (if enter_key does not start line)
                   1312: foreach                7               FOREACH
                   1313: seize_body     4               SEIZE body
                   1314: 
                   1315: A negative indentation step value means "go to next tab stop".
                   1316: **** Indenter variables ****
                   1317: 
                   1318: **** File names/backup/protection ****
                   1319: TED  accepts  ~-form  directory         specifications  and does *-matching.  However,
                   1320: *-matching is a little different than the way the shell does it,  in  that  "."
                   1321: and  ".."  are always  ignored but other entries beginning with period are not
                   1322: ignored.
                   1323: 
                   1324: You can define path name abbreviations with string variables.  In file name and
                   1325: directory arguments, a prefix ending with two slashes (//) is taken to be  the
                   1326: name  of  a string variable, and is replaced by the value of the variable.  For
                   1327: example, if the string variable "man1//" is  defined  to  be  "/usr/man/man1/",
                   1328: then  the  file name "man1//csh.1" becomes "/usr/man/man1/csh.1".  In ^\J, ^\M,
                   1329: ^\R, ^\Y, ^\Z, and ^J command lines, words ending with two  slashes  are  also
                   1330: expanded this way.
                   1331: 
                   1332: Since  Unix  does  not support version numbers, there are a number of different
                   1333: ways of creating backup files when files are written.  The particular method is
                   1334: set by the ^X^C command.  The options are (N)  do  not create  a  backup,  and
                   1335: (over)write  directly  to  the file, (T) do not create a backup, but write to a
                   1336: temporary file and then rename it (R) always rename the current version of  the
                   1337: file,  (^R)  rename the current version of the file if a backup does not exist,
                   1338: otherwise (over)write directly, (^T) rename the current version of the file  if
                   1339: a  backup  does         not exist, otherwise write to a temporary file and then rename
                   1340: it, (C) always copy the         current  version  of  the  file  before  (over)writing
                   1341: directly,  (^C) copy the current version of the file if a backup does not exist
                   1342: before (over)writing directly, (X) rename  the current  version  of  the  file
                   1343: unless there are links to it, in which case copy the current version, and then
                   1344: (over)write directly, and (^X) if a backup does not exist, rename  the current
                   1345: version         of  the  file  unless  there  are  links to it, in which case copy the
                   1346: current version, and then (over)write directly.         The initial mode is  N.    The
                   1347: name  of  the  backup  file generally is obtained by appending the value of the
                   1348: "backup_name" string variable to the current file name, with the default  being
                   1349: ".old".           However,  the  current  file  name  may  have to be truncated before
                   1350: appending if the new name exceeds 255  characters.    Also,  "backup_name"  may
                   1351: contain a (possibly relative) directory where the backup file should be placed.
                   1352: So "backup_name" should have one of the forms "str", "dir/str", or "dir/".
                   1353: 
                   1354: If  the         backup file extension is ".^V", then version numbered backup files are
                   1355: maintained.  When version numbering, the backup-on-write modes ^R, ^T, ^C,  and
                   1356: ^X  are         equivalent  to  R,  T, C, and X respectively.  The "keep_count" number
                   1357: variable specifies how many backup versions to maintain, with default value  1.
                   1358: If  "keep_count" is N, the N highest versions are kept.         If "keep_count" is -N,
                   1359: then the oldest version and the N-1 highest versions are kept.
                   1360: 
                   1361: When writing to a file, if you specify a name longer than 255  characters,  the
                   1362: number variable "write_check" controls what happens.  If the variable is 0 (the
                   1363: default), the name is truncated in the usual way.  If the variable is negative,
                   1364: the  file is not written and an error message is generated.  If the variable is
                   1365: positive, the part before the first dot is truncated, unless the part after the
                   1366: first dot is longer than 254 characters, in which case the file is not written
                   1367: and an error message is generated.
                   1368: 
                   1369: The  mode  bits         for  new  files  are  given  by  the "write_mode" octal number
                   1370: variable, the default being 666 masked by the initial umask.  The umask is then
                   1371: cleared, but its value is saved in the "umask" octal number variable,  for  use
                   1372: when  running  inferiors.    The  mode bits for ted save files is given by the
                   1373: "save_mode" octal number variable, with the default being 600.
                   1374: **** File names/backup/protection ****
                   1375: 
                   1376: **** XTED features ****
                   1377: This section is for those using the version of TED that runs under the X window
                   1378: system.
                   1379: 
                   1380: The following are options that can be specified at the beginning of the command
                   1381: line when starting an XTED:
                   1382:        -fn=FONT
                   1383:        [-HOST]:DISPLAY
                   1384:        =[WIDTH][xHEIGHT][{+-}XOFF[{+-}YOFF]]
                   1385:        -rv       (reverse video)
                   1386:        -i        (miniature icon)
                   1387:        -fg=COLOR     (text color)
                   1388:        -bg=COLOR     (background color)
                   1389:        -cr=COLOR     (text cursor color)
                   1390:        -hl=COLOR     (highlight color)
                   1391:        -ms=COLOR     (mouse cursor color)
                   1392: 
                   1393: The  []'s  denote  optional stuff, the {}'s surround alternatives.  The default
                   1394: font is 8x13, the default display is  controlled  by  the  DISPLAY  environment
                   1395: variable.    WIDTH and HEIGHT are in number of characters, XOFF and YOFF are in
                   1396: pixels.         WIDTH defaults to 80, HEIGHT to 24, XOFF and YOFF to 1.  If you  don't
                   1397: give  XOFF  and/or  YOFF,  then         you  must  use the mouse to create the window.
                   1398: Pressing left button will give you a WIDTHxHEIGHT window that you can then move
                   1399: around to place until you release the button.  Pressing the right button  gives
                   1400: you  a window WIDTH wide and to the bottom of the screen.  Pressing the middle
                   1401: button defines one corner of the  window,  releasing  the  button  defines  the
                   1402: opposite corner.  If you give XOFF and/or YOFF, then a WIDTHxHEIGHT window will
                   1403: automatically  be  creating without intervention.  XOFF and YOFF specify deltas
                   1404: from a corner of the screen to the  corresponding  corner  of  the  window,  as
                   1405: follows:
                   1406:        +XOFF+YOFF       upper left to upper left
                   1407:        -XOFF+YOFF       upper right to upper right
                   1408:        +XOFF-YOFF       lower left to lower left
                   1409:        -XOFF-YOFF       lower right to lower right
                   1410: 
                   1411: The  following options  are  also  read  from  the  .Xdefaults file: BodyFont,
                   1412: BorderWidth,  ReverseVideo,  Foreground,  Background,  Cursor, Highlight,  and
                   1413: Mouse.
                   1414: 
                   1415: The  ^C         command  does not suspend XTED, as suspending is useless.  Instead, ^C
                   1416: should be typed after resizing the window, to  reconfigure  things.    (Someday
                   1417: maybe this will be automatic.)
                   1418: 
                   1419: The  ^J         command  for  interactive programs does not exist: run them in another
                   1420: window!
                   1421: 
                   1422: The command ^XT0C will change the window to white text on a  black  background.
                   1423: The command ^XTC restores the window to black text on a white background.
                   1424: 
                   1425: The escape sequences generated by mouse button events are as follows:
                   1426: 
                   1427: &l     left-down
                   1428: &L     left-up
                   1429: &a     CONTROL-left-down
                   1430: &A     CONTROL-left-up
                   1431: &b     SHIFT-left-down
                   1432: &B     SHIFT-left-up
                   1433: &d     META-left-down
                   1434: &D     META-left-up
                   1435: &e     CONTROL-SHIFT-left-down
                   1436: &E     CONTROL-SHIFT-left-up
                   1437: &f     META-SHIFT-left-down
                   1438: &F     META-SHIFT-left-up
                   1439: &g     CONTROL-META-left-down
                   1440: &G     CONTROL-META-left-up
                   1441: 
                   1442: &m     middle-down
                   1443: &M     middle-up
                   1444: &h     CONTROL-middle-down
                   1445: &H     CONTROL-middle-up
                   1446: &i     SHIFT-middle-down
                   1447: &I     SHIFT-middle-up
                   1448: &j     META-middle-down
                   1449: &J     META-middle-up
                   1450: &k     CONTROL-SHIFT-middle-down
                   1451: &K     CONTROL-SHIFT-middle-up
                   1452: &n     META-SHIFT-middle-down
                   1453: &N     META-SHIFT-middle-up
                   1454: &o     CONTROL-META-middle-down
                   1455: &O     CONTROL-META-middle-up
                   1456: 
                   1457: &r     right-down
                   1458: &R     right-up
                   1459: &p     CONTROL-right-down
                   1460: &P     CONTROL-right-up
                   1461: &q     SHIFT-right-down
                   1462: &Q     SHIFT-right-up
                   1463: &s     META-right-down
                   1464: &S     META-right-up
                   1465: &u     CONTROL-SHIFT-right-down
                   1466: &U     CONTROL-SHIFT-right-up
                   1467: &v     META-SHIFT-right-down
                   1468: &V     META-SHIFT-right-up
                   1469: &x     CONTROL-META-right-down
                   1470: &X     CONTROL-META-right-up
                   1471: 
                   1472: Note  that META-L is shown as &L, etc. (On a VS100 keyboard, the Symbol key is
                   1473: the META key, so for example you type META-l by holding down the Symbol key and
                   1474: pressing the L key, and META-L by holding down the Shift key and the Symbol key
                   1475: and pressing the L key.)
                   1476: 
                   1477: The default action for these escape sequences is to do nothing,  but  you  can
                   1478: define them as any sequence of characters in the same way you would (re)define
                   1479: any escape sequence.  Additional escape sequences are  available  for  defining
                   1480: the buttons:
                   1481: &c     scrolls  the  window so that the cursor ends up on the same line as the
                   1482:        last/current button event.  This line must be within the same window as
                   1483:        the cursor or an error will result.
                   1484: &C     sets the cursor to the position of the last/current button event.  This
                   1485:        position must be within the same window as the cursor or an error  will
                   1486:        result.
                   1487: &t     turns on tracking of the mouse and highlighting of the text between the
                   1488:        cursor  and  the  mouse  if  #>0,  and  turns  tracking  off  if  #<=0.
                   1489:        Highlighting is performed by underlining if #=1, and by  inverse  video
                   1490:        if #>1.
                   1491: &T     sets  the  mark to the position of the last/current button event.  This
                   1492:        position must be within the same window as the cursor or an error  will
                   1493:        result.
                   1494: &w     is  equivalent  to  doing  a  ^X^W#D  into  the  window  containing the
                   1495:        last/current button event position.  This position must be within  some
                   1496:        window or an error will result.
                   1497: &W     is  equivalent  to  doing  a  ^X^W#^N  into  the  window containing the
                   1498:        last/current button event position.  This position must be within  some
                   1499:        window or an error will result.
                   1500: &Y     inserts  the  window  system  global cut buffer |#| times at the cursor
                   1501:        (#<0 inserts before the cursor
                   1502: &z     stores the current saved text in the window system global cut buffer.
                   1503: &Z     stores the current deleted text in the window system global cut buffer.
                   1504: 
                   1505: For example, with the following lines in  your .ted_init,  you  can  delete  a
                   1506: highlighted  region  of text by placing the mouse on the first character of the
                   1507: text, pressing the left button down, moving to just after the last character of
                   1508: the text, and raising the button:
                   1509: 
                   1510: ^[^[&l^Q^[^Q&W^Q^[^Q&C^Q^[^Q&t^M
                   1511: ^[^[&L^Q^U0^Q^[^Q&t^Q^[^Q&T^Q^VW^M
                   1512: 
                   1513: 
                   1514: By default, the         various  function  and  keypad  keys  transmit  the  following
                   1515: characters.    Note that the character META-c as a command gets interpreted the
                   1516: same as the sequence "ESC c".
                   1517: 
                   1518: F1     &X
                   1519: F2     &T
                   1520: F3     &U
                   1521: F4     &V
                   1522: F5     &W
                   1523: F6     &a
                   1524: F7     &b
                   1525: F8     &c
                   1526: F9     &d
                   1527: F10    &e
                   1528: F11    esc
                   1529: F12    ^H
                   1530: F13    ^J
                   1531: F17    &f
                   1532: F18    &g
                   1533: F19    &h
                   1534: F20    &i
                   1535: E1     &1
                   1536: E2     &2
                   1537: E3     &3
                   1538: E4     &4
                   1539: E5     &5
                   1540: E6     &6
                   1541: ,      &l
                   1542: -      &m
                   1543: .      &n
                   1544: 0      &p
                   1545: 1      &q
                   1546: 2      &r
                   1547: 3      &s
                   1548: 4      &t
                   1549: 5      &u
                   1550: 6      &v
                   1551: 7      &w
                   1552: 8      &x
                   1553: 9      &y
                   1554: UP     &A
                   1555: DOWN   &B
                   1556: RIGHT  &C
                   1557: LEFT   &D
                   1558: ENTER  &M
                   1559: PF1    &P
                   1560: PF2    &Q
                   1561: PF3    &R
                   1562: PF4    &S
                   1563: **** XTED features ****
                   1564: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.