chris@umcp-cs.UUCP (03/16/84)
WARNING: the article to which this is a followup contains the same bug as the original "aton.ml" posting in net.emacs. Namely, it turns off file checkpointing completely when you use aton. The fix is to change (setq checkpoint-frequency 0) to (setq needs-checkpointing 0) [I believe there is only one occurrance in the posted file.] Checkpoint-frequency, default 300, is how often to checkpoint any buffer that seems to need it. If set to 0, buffers are @i(never) checkpointed. Needs-checkpointing is a buffer-specific variable which if 0 prevents that particular buffer from being checkpointed. It seems obvious that the latter action was intended. -- In-Real-Life: Chris Torek, Univ of MD Comp Sci UUCP: {seismo,allegra,brl-bmd}!umcp-cs!chris CSNet: chris@umcp-cs ARPA: chris.umcp-cs@CSNet-Relay
lynno@tektronix.UUCP (Lynn Olson ) (03/21/84)
; (throwaway line for PAC-MAN relay sites) ; ; I know this one came out yesterday, but I only discovered last ;night that the X-ON, X-OFF flow control characters screwed up the ;previous-command/this-command sequencing, which damaged the FIND function. ;I backtracked a little and just emulated the way DEC did it, with separate ;GOLD/Find and FINDNEXT functions. Sorry about the repeat posting, but I ;felt last night's version needed fixing right away. Lynn Olson, 3-15-84. ; Here's a revised version of the CMU-Emacs EDT simulator sent ;out several weeks ago. I cranked in some changes in response to ;reactions from the technical writers in our group, and cleaned up some ;bugs. It outwardly resembles the DEC EDT editor, as before, and makes full ;use of the VT-100/ANSI X3.64 keypad. Perhaps the nicest change is mapping ;the "shell" command into the keypad; this comes in handy for messing around ;with directories, then leaving the shell-window. ; ; Lynn Olson, on tekfdi (Spectrum Analyzers) and tektronix, @ 3-14-84. ;This .emacs_pro file maps the keypad of a VT-Series terminal into a command ;set resembling the DEC EDT (tm) editor. Most of the unshifted functions are ;unaltered - removing only two EDT functions, PAGE and ENTER. These ;are redefined into PARAGRAPH and ENTER WINDOW. ;BackSpace is used in the usual UNIX (tm) fashion to delete previous ;characters, leaving the Delete key to serve as the Beginning-of-Line. This is ;the reverse of the DEC EDT editor, true, but is preferable to having different ;delete keys in and out of Emacs. LineFeed is used for the EDT function of ;delete-previous-word. ;The shifted GOLD/Keys are mostly unaltered, with SPECINS replaced ;by ^\, UND W and UND C replaced by UND LWC. SUBS and RESET are eliminated. ;All of these keys are redefined as: ;UND W -> : Visit Buffer ;UND C -> : Visit File ;SUBS -> : Visit Shell ;SPECINS -> : Copy Mark/Dot Region (and display number of characters) ;RESET -> : Reset Window (return to window associated with ; initial file) ; New commands are GOLD/GOLD, which exchanges the dot and the mark. ;Other new commands are GOLD/keyboard pairs, which are mapped as follows: ;GOLD/up-arrow : Current line to top of window. ;GOLD/down-arrow: Current line to bottom of window. ;GOLD/left-arrow: Backward sentence. ;GOLD/right-arrow: Forward sentence. ;GOLD/- : Goto percentage of buffer. ;GOLD/= : Goto line number. ;GOLD/` : Display line number and character number. ;GOLD/p : Delete selected buffer. ;GOLD/[ : Delete Mark/Dot region to selected buffer. ;GOLD/] : Paste selected buffer at dot. ;GOLD/BackSpace : List Buffers. ;GOLD/Delete : Delete Window. ;GOLD/ \ : Split Window. ;GOLD/LineFeed : Capitalize Word. ;GOLD/ <CR> : Indent Newline. ;GOLD/ <space> : Undo; press <space> to continue undoing. ; (This also works in the shell window.) ; The following commands alter the Emacs default key map. Aside from ;these changes, all other Emacs commands retain the documented bindings. ; ; Delete : Beginning-of-Line. ; LineFeed : Delete-Previous-Word. ; ^Q : Reserved for X-ON flow control. ; ^S : Reserved for X-OFF flow control. ; ^Z : Extended-Command, with prompts for different exits. ; ^\ : Insert control-character. ; ^_ : Pause-Emacs. (Shell command "fg" will restart Emacs.) (defun ;This deletes the entire current line and allows chaining ;similar to the ^K (kill-to-end-of-line) function. The ;(chained) text is put in the LineBuffer and retrieved by ;the GOLD/Und LWC keys. ; (delete-current-line (beginning-of-line) (set-mark) (next-line) (if (= -48 (previous-command)) (progn (append-region-to-buffer "LineBuffer") (erase-region) ) (delete-region-to-buffer "LineBuffer") ) (setq this-command -48) ) ; ;This allows the Del EOL to have a chaining feature similar to ;the Del L function above. It is chained with Del W and Del C. ; (delete-to-eol (if (eolp) (progn (set-mark) (next-line) (end-of-line) (exchange-dot-and-mark) ) (progn (set-mark) (end-of-line) (exchange-dot-and-mark) ) ) (if (= -48 (previous-command)) (progn (append-region-to-buffer "LineBuffer") (erase-region) ) (delete-region-to-buffer "LineBuffer") ) (setq this-command -48) ) ; ;This deletes the current word. It may be chained with Del L, ;Del EOL, previously deleted words, or previously deleted characters. ;The words are parked in the LineBuffer. (delete-current-word (set-mark) (forward-word) (if (= -48 (previous-command)) (progn (append-region-to-buffer "LineBuffer") (erase-region) ) (delete-region-to-buffer "LineBuffer") ) (setq this-command -48) ) ; ;This deletes the current character. It may be chained with Del L, ;Del EOL, previously deleted words, or previously deleted characters. ;The characters are parked in the LineBuffer. (delete-current-character (set-mark) (forward-character) (exchange-dot-and-mark) (if (= -48 (previous-command)) (progn (append-region-to-buffer "LineBuffer") (erase-region) ) (delete-region-to-buffer "LineBuffer") ) (setq this-command -48) ) ; ;Undelete Lines, Words, and Characters. (undelete-line (yank-buffer "LineBuffer") ) ; ;Move EOL downward if key is pressed repeatedly. (repeat-end-of-line (if (= -12 (previous-command)) (next-line) ) (end-of-line) (setq this-command -12) ) ; ;Move BOL downward if key is pressed repeatedly. (repeat-beginning-of-line (if (= -10 (previous-command)) (next-line) ) (beginning-of-line) (setq this-command -10) ) ; ;Alternate between capitalize-word and uppercase-word. (capitalize-or-upper (if (= -6 (previous-command)) (progn (case-word-upper) (setq this-command -3)) (progn (case-word-capitalize) (setq this-command -6)) ) ) ; ;APPEND function. Append mark-dot region to Kill buffer. (append-to-killbuffer (append-region-to-buffer "Kill\040buffer") (message "Appended.") (send-string-to-terminal "\e#>");Perform keyclick. ) ; ;GOLD/COPY. Copy mark-dot region to Kill buffer. (copy-to-killbuffer (save-window-excursion (delete-to-killbuffer) (yank-from-killbuffer) (temp-use-buffer "Kill\040buffer") (message (buffer-size) " characters copied.") ) (send-string-to-terminal "\e#>");Perform keyclick. ) ; ;Reset Window to the initial file used at Emacs' invocation. (reset-window (if (= 1 (argc)) ;Number of invoking arguments for Emacs. (progn (save-window-excursion (temp-use-buffer "Help") (temp-use-buffer "Buffer\040list") ) (delete-buffer "Help") (delete-buffer "Buffer\040list") (if (!= "no" (arg 1 "Do you want "(current-buffer-name)" as the only window ? ")) (delete-other-windows) ) ;inner endif. ) (progn (visit-file (argv 1));Name of initial file. (delete-other-windows) ) ) ;outer endif. ) ;WORD in the Advance mode. (next-word (forward-word) (forward-word) (backward-word) ) ; ;Scrolls the display and the cursor. (scroll-cursor-up (beginning-of-line) (next-line) (scroll-one-line-up) ) (scroll-cursor-down (beginning-of-line) (previous-line) (scroll-one-line-down) ) ; ;Puts the cursor at the beginning of indented paragraphs. (next-paragraph (next-line) (forward-paragraph) (previous-line) (if (eolp) (next-line)) ) (previous-paragraph (backward-paragraph) (previous-line) (if (eolp) (next-line)) ) ; ;Findnext in Advance mode. (findnext-advance (message "Continuing search ...") (search-forward "") ) ; ;Findnext in Backup mode. (findnext-backup (message "Continuing reverse search ...") (search-reverse "") ) ; ;Set EDT Advance mode for cursor keys. (advance-direction (setq global-mode-string " ADVANCE ->") (bind-to-key "next-page" "\eOx") (bind-to-key "next-paragraph" "\eOw") (bind-to-key "next-word" "\eOq") (bind-to-key "forward-character" "\eOs") (bind-to-key "scroll-cursor-up" "\eOp") (bind-to-key "findnext-advance" "\eOR") (bind-to-key "search-forward" "\eOP\eOR") ) ; ;Set EDT Backup mode for cursor keys. (backup-direction (setq global-mode-string "<- BACKUP") (bind-to-key "previous-page" "\eOx") (bind-to-key "previous-paragraph" "\eOw") (bind-to-key "backward-word" "\eOq") (bind-to-key "backward-character" "\eOs") (bind-to-key "scroll-cursor-down" "\eOp") (bind-to-key "findnext-backup" "\eOR") (bind-to-key "search-reverse" "\eOP\eOR") ) ; ;Ctrl-L function. Redraw display and set keypad application mode. (redraw-crt-set-keypad (send-string-to-terminal "\e=") (redraw-display) ) ; ;Prompted emulation of EDT line mode exits. An "exit" with a single ;file tests for the presence of the initial file used with Emacs ;invocation. If it is missing, the user is asked if the current ;buffer should be saved. (ctrl-Z-command (if (= 1 (argc)) ;Number of invoking arguments for Emacs. (progn (if (!= "no" (arg 1 "Do you want to file "(current-buffer-name)" and exit? ")) (progn (write-current-file) (send-string-to-terminal "\e>") (exit-emacs) ) ) ;inner endif. ) (execute-extended-command (arg 1 "Exit Emacs with: exit, quit, or all. Return with: novalue. Command: ") ) ) ) ; ;^X-^A function. Switches to the initial buffer (if possible), ;writes this to a file, resets VT-Series keypad application mode, ;and exits Emacs. (exit (if (= 1 (argc)) ;Number of invoking arguments for Emacs. (progn (if (!= "no" (arg 1 "Do you want to file "(current-buffer-name)" and exit? ")) (progn (write-current-file) (send-string-to-terminal "\e>") (exit-emacs) ) ) ;inner endif. ) (progn (visit-file (argv 1));Name of initial file. (write-current-file) (send-string-to-terminal "\e>");Reset VT appl. mode. (exit-emacs) ) ) ;outer endif. ) ; ;^X-^F function. Reset VT-Series keypad application mode & exit. (all (switch-to-buffer "LineBuffer") (delete-buffer "LineBuffer") (send-string-to-terminal "\e>") (write-file-exit) ) ; ;^X-^C or ^C function. Reset VT-Series keypad application mode & quit. (quit (if (< (recursion-depth) 1) (send-string-to-terminal "\e>") ) (exit-emacs) ) ;Pause Emacs and reset keypad application mode. Set when ;Emacs is restarted. (pause (send-string-to-terminal "\e>") (pause-emacs) (send-string-to-terminal "\e=") (setq unlink-checkpoint-files 1) ) ;Displays line number, character number, and total characters. ;This MLISP function is from USENET. (display-line-number orig page line pagetop (save-excursion (setq orig (dot)) (beginning-of-file) (setq page 1) (setq pagetop (dot)) (while (& (! (error-occurred (search-forward "\^L"))) (<= (dot) orig)) (setq page (+ page 1)) (setq pagetop (dot)) ) (goto-character pagetop) (setq line 1) (while (& (! (error-occurred (search-forward "\n"))) (<= (dot) orig)) (setq line (+ line 1)) ) ) (message "Line " line (if (> page 1) (concat " in page " page) "" ) ", " (- (dot) 1) " of " (buffer-size) " characters" ) ) ) ; ATON -- line oriented "fly-by" search capability for Unix-Emacs. ; By Jeff Shrager and Duane Williams: CMU. ; ATON prompts for an argument which is string to be located in the ; current buffer. It makes a list of all the lines in that buffer ; that contain the specified string and then leaves the user in recursive ; edit in that list. The user should place himself on some line of the ; file/list and then use ^C to end recursive edit mode. This will cause ; him to be repositioned in the original buffer at the line selected ; from the summary list. If the string entered is nil then THE EXACT ; SAME summary list is used. It will not reflect changes in the file ; made since the last use of ATON and the cursor will be placed at the ; NEXT location. This is useful for stepping through located lines ; rapidly in order. (defun (aton-lines-in-buffer count (save-excursion (beginning-of-file) (setq count 0) (while (!(eobp)) (next-line) (setq count (+ count 1)) ) ) count ) (aton-current-line line-number (save-excursion (save-restriction (set-mark) (beginning-of-file) (narrow-region) (setq line-number (aton-lines-in-buffer)) (exchange-dot-and-mark) (if (bolp) (setq line-number (+ 1 line-number))) ) ) line-number ) (find-in-context s ln l tracking done rebuild-summary (setq s (get-tty-string "Search context for: ")) (if (!= "" s) (setq rebuild-summary 1)) (setq tracking track-eol-on-^N-^P) ; remember prev value (setq track-eol-on-^N-^P 0) ; dont track eol (if rebuild-summary (save-excursion ; setup temp buffer (pop-to-buffer "String Search") (erase-buffer) (setq checkpoint-frequency 0) ; no CKP files needed ) ) (save-excursion (beginning-of-file) (set-mark) ; init for narrow-region (setq ln 0) ; init accumulator (setq done 0) (if rebuild-summary (while (! done) (if (error-occurred (search-forward s)) (setq done 1) (progn (end-of-line) ; to pick up entire line (narrow-region) ; dont count lines twice (setq ln (+ ln (aton-current-line))) (set-mark) ; copy line to temp buffer (beginning-of-line) (setq l (region-to-string)) (save-excursion (pop-to-buffer "String Search") (insert-string (concat ln ". " l)) (newline) ) (widen-region) ; continue through file (next-line) (set-mark) ; reset for narrow-region ) ) ) ) (pop-to-buffer "String Search") ; show user the results (if rebuild-summary (previous-line) (next-line) ) (delete-other-windows) (setq buffer-is-modified 0) (if (= 0 (aton-lines-in-buffer)) (error-message "Can't find it")) (message "Move cursor to the desired line, then press Ctrl-C.") (recursive-edit) (beginning-of-line) (search-forward ".") (backward-character) (set-mark) (beginning-of-line) (setq ln (region-to-string)) ) (setq track-eol-on-^N-^P tracking) ; restore old value (goto-line ln) (delete-other-windows) ) ) ;Here's an improved version of line-to-bottom-of-window based on Hans ;Koomen's message of 30 Jul 83: (error-occurred ; window-width is already defined in some versions (defun (window-width 79))) (defun (line-to-bottom-of-window lines2skip chars2skip physlines (setq chars2skip (- (window-width) 1)) (setq lines2skip (window-height)) (setq physlines (+ 1 (/ (- (current-column) 2) chars2skip))) (setq lines2skip (- lines2skip physlines)) (save-excursion (while (> lines2skip 0) (previous-line) (end-of-line) (setq physlines (+ 1 (/ (- (current-column) 2) chars2skip))) (setq lines2skip (- lines2skip physlines))) (if (< lines2skip 0) (next-line)) (line-to-top-of-window) ) ) ) (load "goto.ml") (setq scroll-step 1) (setq track-eol-on-^N-^P 0) (setq ctlchar-with-^ 1) (setq quick-redisplay 1) (setq wrap-long-lines 1) (setq default-right-margin 79) (setq default-case-fold-search 1) (setq default-mode-line-format " %[%p of: %b%* |%m| %M%]") (setq backup-before-writing 1) (setq backup-by-copying-when-linked 1) (setq silently-kill-processes 1) (setq unlink-checkpoint-files 1) ;Mask off X-ON, X-OFF codes and bind keyboard control-keys (bind-to-key "delete-previous-word" "\012") ;"LineFeed" (bind-to-key "redraw-crt-set-keypad" "\014") ;"ctrl-L" (bind-to-key "novalue" "\021") ;X-ON control code (bind-to-key "novalue" "\023") ;X-OFF control code (bind-to-key "ctrl-Z-command" "\032") ;"ctrl-Z" (bind-to-key "quote-character" "\034") ;"ctrl-\" (bind-to-key "enlarge-window" "\036") ;"ctrl-shift-^" (bind-to-key "pause" "\037") ;"ctrl-shift-_" (bind-to-key "repeat-beginning-of-line" "\177") ;"Delete" (bind-to-key "exit" "\^X\^A") ;File initial buffer & exit. (bind-to-key "quit" "\^C") ;Depart Emacs & reset keypad. (bind-to-key "quit" "\^X\^C") ;Depart Emacs & reset keypad. (bind-to-key "all" "\^X\^F") ;File all buffers and exit. ;Bind keyboard arrow keys (bind-to-key "previous-line" "\e[A") ;"up-arrow" (bind-to-key "next-line" "\e[B") ;"down-arrow" (bind-to-key "backward-character" "\e[D") ;"left-arrow" (bind-to-key "forward-character" "\e[C") ;"right-arrow" ;Bind keypad keys (bind-to-key "describe-key" "\eOQ") ;HELP "PF2" (bind-to-key "delete-current-line" "\eOS") ;DEL L "PF4" (bind-to-key "append-to-killbuffer" "\eOy") ;APPEND "9" (bind-to-key "delete-current-word" "\eOm") ;DEL W "-" (bind-to-key "advance-direction" "\eOt") ;ADV "4" (bind-to-key "backup-direction" "\eOu") ;BAK "5" (bind-to-key "delete-to-killbuffer" "\eOv") ;CUT "6" (bind-to-key "delete-current-character" "\eOl") ;DEL C "," (bind-to-key "repeat-end-of-line" "\eOr") ;EOL "2" (bind-to-key "set-mark" "\eOn") ;SELECT "." (bind-to-key "next-window" "\eOM") ;ENTER "ENTER" ;Bind GOLD/Keyboard keys (bind-to-key "list-buffers" "\eOP\010") ;"BackSpace" (bind-to-key "capitalize-or-upper" "\eOP\012") ;"Linefeed" (bind-to-key "newline-and-indent" "\eOP\015") ;"Return" (bind-to-key "new-undo" "\eOP\040") ;"Spacebar" (bind-to-key "goto-percent" "\eOP\055") ;"-" (bind-to-key "goto-line" "\eOP\075") ;"=" (bind-to-key "delete-region-to-buffer" "\eOP\133") ;"[" (bind-to-key "split-current-window" "\eOP\134") ;"\" (bind-to-key "yank-buffer" "\eOP\135") ;"]" (bind-to-key "display-line-number" "\eOP\140") ;"`" (bind-to-key "delete-buffer" "\eOP\160") ;"p" (bind-to-key "delete-window" "\eOP\177") ;"Delete" (bind-to-key "line-to-top-of-window" "\eOP\e[A") ;"up-arrow" (bind-to-key "line-to-bottom-of-window" "\eOP\e[B") ;"down-arrow" (bind-to-key "backward-sentence" "\eOP\e[D") ;"left-arrow" (bind-to-key "forward-sentence" "\eOP\e[C") ;"right-arrow" ;Bind GOLD/Keypad keys (bind-to-key "exchange-dot-and-mark" "\eOP\eOP");Gold "PF1" (bind-to-key "find-in-context" "\eOP\eOQ") ;Find-in-Context"PF2" (bind-to-key "undelete-line" "\eOP\eOS") ;Und LWC "PF4" (bind-to-key "execute-extended-command" "\eOP\eOw") ;Command "7" (bind-to-key "justify-paragraph" "\eOP\eOx") ;Fill "8" (bind-to-key "query-replace-string" "\eOP\eOy") ;Replace "9" (bind-to-key "pop-to-buffer" "\eOP\eOm") ;Visit Buffer "-" (bind-to-key "end-of-file" "\eOP\eOt") ;Bottom "4" (bind-to-key "beginning-of-file" "\eOP\eOu") ;Top "5" (bind-to-key "yank-from-killbuffer" "\eOP\eOv") ;Paste "6" (bind-to-key "visit-file" "\eOP\eOl") ;Visit File "," (bind-to-key "case-word-invert" "\eOP\eOq") ;Chgcase "1" (bind-to-key "delete-to-eol" "\eOP\eOr") ;Del EOL "2" (bind-to-key "copy-to-killbuffer" "\eOP\eOs") ;Copy "3" (bind-to-key "newline-and-backup" "\eOP\eOp") ;Open L "0" (bind-to-key "reset-window" "\eOP\eOn") ;Reset Window "." (bind-to-key "shell" "\eOP\eOM") ;Visit Shell "ENTER" ;Set VT-Series keypad application mode, initialize direction, and ;prevent the two temporary buffers from being checkpointed. (send-string-to-terminal "\e=") (advance-direction) (save-excursion (switch-to-buffer "LineBuffer") (setq needs-checkpointing 0) (switch-to-buffer "Kill\040buffer") (setq needs-checkpointing 0) ) ; ; <insert a ^L here> ; E M A C S / E D T K E Y P A D ;+---------------+---------------+---------------+---------------+ ;| GOLD | HELP KEY | FINDNEXT | DEL LINE | ;| ---- | -------- | -------- | -------- | ;| Swap Dot-Mark |Find in Context| Find | Und L, W, C | ;+---------------+---------------+---------------+---------------+ ;| PARAGRAPH | SECT | APPEND | DEL WORD | ;| --------- | ---- | ------ | -------- | ;| Command | Fill Para | Query-Replace | Visit Buffer | ;+---------------+---------------+---------------+---------------+ ;| ADVANCE | BACKUP | CUT | DEL CHAR | ;| ------- | ------ | --- | -------- | ;| Bottom | Top | Paste | Visit File | ;+---------------+---------------+---------------+---------------+ ;| WORD | EOL | CHAR | | ;| ---- | --- | ---- | | ;| Chgcase | Delete-EOL | Copy | ENTER WINDOW | ;+---------------+---------------+---------------+ ------------ | ;| LINE SCROLL | SELECT | Visit Shell | ;| ------------ | ------ | | ;| Open Line | Reset Window | | ;+-------------------------------+---------------+---------------+ ; ; ; K E Y B O A R D C O N T R O L S ; +---------------+---------------+---------------+---------------+ ; | ^ | v | <---- | ----> | ; | ----- | ----- | ----- | ----- | ; | Line-to-Top |Line-to-Bottom |Begin Sentence | End Sentence | ; +---------------+---------------+---------------+---------------+ ; | - | = | ` | BACK SPACE | ; | ----- | ----- | ----- | ---------- | ; | Goto Percent | Goto Line # | Show Line # | List Buffers | ;+---------------+---+-----------+---+-----------+---+---+-----------+---+ ;| P | [ | ] | | DEL (now BOL) | ;| ----- | ----- | ----- | | ------------- | ;| Delete Buffer | Cut-to-Buffer |Paste-from-Buff| | Del Window | ;+---------------+---------------+---------------+ +---------------+ ; | \ | ; ^X-^A :EXIT & file initial buffer. | ----- | ; ^X-^C :QUIT & discard changes. | Split Window | ; ^X-^F :ALL buffers are filed; exit Emacs. +---------------+ ; | LF (RUBOUT W) | ;Ctrl-^ :Enlarge Window. | ------------- | ; ^G :Abort Command. |Capitalize Word| ; ^L :Redraw Display. +---------------+ ; ^T :Transpose Characters. ; ^Z :EDT style exit. ; ^_ :Pause-Emacs (type "fg" to re-enter Emacs). ; ^\ :Insert control-character (FormFeed would be ^\-^l). ; ; ^X-^I :Insert File at Dot. ; ^X-^W :Write Named File from current buffer. ; ;ESC-? :Apropos Command. ;ESC-r :Replace String (all occurances in buffer). ; ;GOLD/ <space> :UNDO; press <space> to continue, any other key to stop. ;GOLD/ <CR> :Indent Newline with indentation level of previous line. ;GOLD/ Replace :Type "n" to skip over, <space> to change, Ctrl-G to exit. ; ; N O T E S ; ; Use the GOLD/Find function by typing in the desired string, then ;pressing <CR>. GOLD/Find will seek the first occurance. To continue the ;search, press FINDNEXT. Press ADVANCE or BACKUP to change direction of search; ;FINDNEXT will remember the original string after a change of direction. ;(Warning: If you end the search string with the FINDNEXT key instead of <CR>, ;the Find function will work, but it will also deposit an unwanted OR in ;your text.) ; ; GOLD/ <space>, the UNDO function, has the interesting ability to ;reverse the action of the UNDO function. To try this, type a sequence of ;numbers such as "1234567890". Press GOLD/ <space>, then hit the <space> ;bar several times. This will leave the string of numbers looking like ;this: "12345". Now, press <GOLD>/ <space> and hit the <space> bar several ;times. The string of numbers will grow larger again, reversing the action ;of the previous "undos". This property can be handy in overcoming the ;ill effects of leaving too much undone. ; ; Visit Shell opens a window with a shell running in it. The shell ;window executes Unix commands by either typing them out or moving the ;the dot to a previous command-line and pressing <CR>. If you want to ;leave the shell window, use Enter Window or Reset Window. If you press ;Visit Shell again, the previous commands and responses will still be there. ;The dialogue in the shell window may be cut and pasted into other buffers, ;allowing you to capture the exact syntax of commands. The shell buffer ;is cleaned up when you leave Emacs. ; ; If Emacs is invoked without a filename, it recalls the previous ;file and the state of the screen. However, ^X-^A and GOLD/Reset Window ;will work in a different way; both will ask if the current buffer is the ;one to be filed or windowed. The default <CR> for both is "yes". ; ;DEC, VMS, VT-100, and EDT are trademarks of Digital Equipment Corporation. ;UNIX is a trademark of American Telephone & Telegraph. ; ; ------------------------------------------------------------------------