[net.sources] emacs edt emulator part 2 of 3

jimb@tekcbi.UUCP (05/20/86)

--------------------------cut here-------------------------------------
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	edt-sup
# This archive created: Mon Mar 10 14:57:16 1986
export PATH; PATH=/bin:$PATH
if test -f 'edt-sup'
then
	echo shar: will not over-write existing file "'edt-sup'"
else
cat << \SHAR_EOF > 'edt-sup'
	; edt-sup   Jim Boland Tek/CBI  12-Dec-85
	; functions to make emacs emulate EDT

	; global declarations
	 (declare-global desired-string)
	 (declare-global last-buffer-name)
	 (declare-global main-buffer-name)
	 (declare-global main-file-name)
	 (declare-global changed-buffer)
	 (declare-global repetitions)
 	 (declare-global selected)
	
	; repeating a command : easier and simpler to do with keyboard 7
	; rather than GOLD
	(defun
		(getting-repetitions
			(setq repetitions (arg 1 "REPEAT? : "))
		)
	)

	; arrow keys
	  (bind-to-key "delete-previous-character" "\177")
	  (bind-to-key "forward-character" "\e[C")
	  (bind-to-key "backward-character" "\e[D")
	  (bind-to-key "previous-line" "\e[A")
	  (bind-to-key "scroll-one-line-up" "\e\e[A")
	  (bind-to-key "next-line" "\e[B")
	  (bind-to-key "scroll-one-line-down" "\e\e[B")
	  (bind-to-key "forward-word" "\e\e[C")
	  (bind-to-key "backward-word" "\e\e[D")
	
	; definitions for moving cursor a section :  keyboard 8
	
	(defun
	    (section-up count
		(while (> repetitions 0)
	           (setq count 17)
	           (while (> count 1)
		       (previous-line)
		       (setq count (- count 1))
		   )
		   (setq repetitions (- repetitions 1))
		)
		(setq repetitions 1)
	    )
	)
	
	(defun
	    (section-down count
		(while (> repetitions 0)
	           (setq count 17)
	           (while (> count 1)
		      (next-line)
		      (setq count (- count 1))
		   )
		   (setq repetitions (- repetitions 1))
		)
		(setq repetitions 1)
	    )
	)
	
	; definitions for cut and paste
	
	; keyboard 6
	
	(defun
	    (cut-region 
			(delete-region-to-buffer "cut-and-paste")
		        (set "selected" 0)
			(send-string-to-terminal "\033[m")
		)
	)
	
	; keyboard GOLD 6
	
	(defun
	    (paste-region
			(yank-buffer "cut-and-paste")
		)
	)
	
	; keyboard . (period)
	
	(defun
		(select-region
			(set-mark)
		        (set "selected" 1)
		)
	)
	
	; keyboard 9
	
	(defun
		(lets-append-it
			(append-region-to-buffer "cut-and-paste")
		        (set "selected" 0)
			(delete-to-killbuffer)
		)
	)
	
	; keyboard GOLD 9
	
	(defun
		(lets-replace-it
			(delete-to-killbuffer)
		        (set "selected" 0)
			(yank-buffer "cut-and-paste")
		)
	)
	
	(defun
	    (edt-cut-to-buffer reply
			(setq reply (get-tty-string "CUT TO WHICH BUFFER? ")) 
			(delete-region-to-buffer reply)
		        (set "selected" 0)
			(send-string-to-terminal "\033[m")
		)
	)
	
	(defun
	    (edt-copy-buffer reply
			(setq reply (get-tty-string "COPY FROM WHICH BUFFER? "))
			(yank-buffer reply)
		)
	)
	
	(defun
		(edt-append-it reply
			(setq reply (get-tty-string "APPEND TO WHICH BUFFER? "))
			(append-region-to-buffer reply)
		        (set "selected" 0)
			(delete-to-killbuffer)
		)
	)
	
	(defun
		(edt-replace-it reply
			(setq reply (get-tty-string "REPLACE FROM WHICH BUFFER? "))
			(delete-to-killbuffer)
		        (set "selected" 0)
			(yank-buffer reply)
		)
	)
	
	; change case : keyboard GOLD 1
	(defun
	     (doit-forward
	         (set-mark)
	         (forward-character)
	         (case-region-invert)
	     )
	)
	
	  (defun
	     (case-char-invert
	         (if (= selected 1)
	             (case-region-invert)
	         )
	         (if (= selected 0)
		    (while (> repetitions 0)
	               (doit-forward)
		       (setq repetitions (- repetitions 1))
		    )
	         )
	         (set "selected" 0)
	         (setq repetitions 1)
	     )
	   )
	(defun
	  (doit-reverse
	     (set-mark)
	     (backward-character)
	     (case-region-invert)
	  )
	)
	
	  (defun
	     (reverse-case-char-invert
	         (if (= selected 1)
	             (case-region-invert)
	         )
	         (if (= selected 0)
		    (while (> repetitions 0)
	               (doit-reverse)
		       (setq repetitions (- repetitions 1))
		    )
	         )
	         (set "selected" 0)
		 (setq repetitions 1)
	     )
	   )
	
	; some file i/o
	
	(defun
 		(add-from-file reply1
			(setq reply1 (get-tty-string "APPEND FROM FILE: "))
			(insert-file reply1)
		)
	)

	(defun
		(backto-main-buffer 
			(switch-to-buffer main-buffer-name)))

	(defun
		(return-to-last-buffer
			(switch-to-buffer last-buffer-name)
		)
	)

	(defun
		(read-in-a-file reply1 reply2
			(setq last-buffer-name  (current-buffer-name))
			(if (= changed-buffer 0)
			    (setq main-buffer-name (current-buffer-name)))
			(setq reply1 (get-tty-string "INPUT FILE: "))
			(setq reply2 (get-tty-string "INTO BUFFER: "))
			(setq changed-buffer 1)
			(switch-to-buffer reply2)
			(read-file reply1)
		)
	)
	
	(defun
		(write-out-a-file reply1 reply2 
			(setq last-buffer-name  (current-buffer-name))
			(if (= changed-buffer 0)
			    (setq main-buffer-name (current-buffer-name)))
			(setq reply1 (get-tty-string "OUTPUT FILE: "))
			(setq reply2 (get-tty-string "FROM BUFFER: "))
			(setq changed-buffer 1)
			(switch-to-buffer reply2)
			(write-named-file reply1)
		)
	)
	
	; switch to a named buffer
	
	(defun
		(switch-buffers reply2
			(setq last-buffer-name  (current-buffer-name))
			(if (= changed-buffer 0)
			    (setq main-buffer-name (current-buffer-name)))
			(setq reply2 (get-tty-string "SWITCH TO BUFFER: "))
			(setq changed-buffer 1)
			(switch-to-buffer reply2)
		)
	)
	
	
	; insert and find special marker : GOLD .  /  GOLD /
	
	(defun
		(insert-the-marker
			(insert-string "~~/\~~")
		)
	)
	
	(defun
		(find-marker-forward
			(search-forward "~~/\~~")
			(set-mark)
			(search-reverse "~~/\~~")
			(delete-to-killbuffer)
		)
	)
	
	(defun
		(find-marker-reverse
			(search-reverse "~~/\~~")
			(set-mark)
			(search-forward "~~/\~~")
			(delete-to-killbuffer)
		)
	)
	
	; substitute : Gold Enter
	
	(defun
		(substitute-it-forward
		(while (> repetitions 0)
			(backward-character)
			(search-forward desired-string)
			(set-mark)
			(search-reverse desired-string)
			(delete-to-killbuffer)
			(yank-buffer "cut-and-paste")
			(search-forward desired-string)
			(search-reverse desired-string)
			(setq repetitions (- repetitions 1))
		)
		(setq repetitions 1)
		)
	)
	
	(defun
		(substitute-it-reverse
		(while (> repetitions 0)
			(forward-character)
			(search-reverse desired-string)
			(backward-character)
			(search-forward desired-string)
			(set-mark)
			(search-reverse desired-string)
			(delete-to-killbuffer)
			(yank-buffer "cut-and-paste")
			(search-reverse desired-string)
			(setq repetitions (- repetitions 1))
		    )
		    (setq repetitions 1)
		)
	)
	
	; gold find  : Gold Find
	
	(defun
		(find-it-forward 
		    (while (> repetitions 0)
			(forward-character)
			(search-forward desired-string)
		        (set-mark)
			(search-reverse desired-string)
		        (setq repetitions (- repetitions 1))
		    )
		    (setq repetitions 1)
		)
	)
	
	(defun
		(find-it-reverse 
		    (while (> repetitions 0)
			(search-reverse desired-string)
			(backward-character)
			(search-forward desired-string)
			(set-mark)
			(search-reverse desired-string)
		        (setq repetitions (- repetitions 1))
		    )
		    (setq repetitions 1)
		)
	)
	
	(defun
		(getting-it-reverse 
			(setq desired-string (get-tty-string "Search for: "))
			(find-it-reverse)
		)
	)
	
	(defun
		(getting-it-forward 
			(setq desired-string (get-tty-string  "Search for: "))
			(find-it-forward)
		)
	)
	
	; save file and exit  : Gold E
	
	(defun
		(write-buffer-exit
			(if (= changed-buffer 1)
			    (backto-main-buffer)
			)
			(set-mark)
			(end-of-file)
			(if (! (bolp))
			    (newline)
			)
			(exchange-dot-and-mark)
			(set "backup-before-writing" 1)
			(write-current-file)
			(set "backup-before-writing" 0)
			(exit-emacs)
		)
	)
	
	; go to next eol   : keypad 2
	
	(defun
		(eol-forward
		(while (> repetitions 0)
			(if (eolp)
	  			(next-line)
			)
			(end-of-line)
		(setq repetitions (- repetitions 1)))
		(setq repetitions 1)
		)
	)
	
	; go to previous eol   :  keypad 2
	
	(defun
		(eol-backward
		(while (> repetitions 0)
			(previous-line)
			(end-of-line)
		(setq repetitions (- repetitions 1)))
		(setq repetitions 1)
		)
	)
	
	; word movement : keypad 1

	(defun
		(fix-it-first
			(forward-word)
			(backward-word)
			(if (! (bolp))
				(backward-word)
			)
		)
	)

	(defun
		(the-previous-word
		    (while (> repetitions 0)
		        (backward-word)
		        (setq repetitions (- repetitions 1))
		    )
	 	    (setq repetitions 1)
		)
	)

	(defun
		(the-next-word
		(while (> repetitions 0)
			(if (bobp)
			    (forward-character))
			(if  (eolp)
			    (backward-word))
			(if  (bolp)
			    (fix-it-first))
			(forward-word)
			(forward-word)
			(backward-word)
		(setq repetitions (- repetitions 1)))
		(setq repetitions 1)
		)
	)

	; character movement : keypad 3
	(defun 
		(the-previous-character
		    (while (> repetitions 0)
			(backward-character)
			(setq repetitions (- repetitions 1)))
		    (setq repetitions 1)
		)
	)

	(defun 
		(the-next-character
		    (while (> repetitions 0)
			(forward-character)
			(setq repetitions (- repetitions 1)))
		    (setq repetitions 1)
		)
	)

	; line movement : keypad 0
	; go forward one line	
	(defun
		(line-forward
		(while (> repetitions 0)
			(next-line)
			(beginning-of-line)
		(setq repetitions (- repetitions 1)))
		(setq repetitions 1)
		)
	)
	
	; go backwards one line 
	(defun
		(line-backward
		(while (> repetitions 0)
			(if (bolp)
				(previous-line)
			)
			(beginning-of-line)
		(setq repetitions (- repetitions 1)))
		(setq repetitions 1)
		)
	)
	
	; kill character  : keyboard ,
	
	(defun
		(character-kill
		(while (> repetitions 0)
			(set-mark)
			(forward-character)
			(delete-region-to-buffer "deleted-character")
		(setq repetitions (- repetitions 1)))
		(setq repetitions 1)
		)
	)
	
	(defun
		(restore-character
		(while (> repetitions 0)
			(set-mark)
			(yank-buffer "deleted-character")
			(exchange-dot-and-mark)
		(setq repetitions (- repetitions 1)))
		(setq repetitions 1)
		)
	)

	; kill word  : keyboard -
	
	(defun
		(word-kill
		(while (> repetitions 0)
			(set-mark)
			(forward-word)
			(forward-word)
			(if (! (eobp))
			    (backward-word))
			(if (eobp)
			    (eol-backward))
			(delete-region-to-buffer "deleted-word")
		(setq repetitions (- repetitions 1)))
		(setq repetitions 1)
		)
	)
	
	(defun
		(restore-word
		(while (> repetitions 0)
			(set-mark)
			(yank-buffer "deleted-word")
			(exchange-dot-and-mark)
		(setq repetitions (- repetitions 1)))
		(setq repetitions 1)
		)
	)
	
	; kill line  : PF4
	
	(defun
		(line-kill
		(while (> repetitions 0)
			(beginning-of-line)
			(set-mark)  
			(next-line)
		        (beginning-of-line)
			(delete-region-to-buffer "deleted-line")  
		(setq repetitions (- repetitions 1)))
		(setq repetitions 1)
		)
	)
	
	(defun
		(restore-line
		(while (> repetitions 0)
			(set-mark)
			(yank-buffer "deleted-line")
			(exchange-dot-and-mark)
		(setq repetitions (- repetitions 1)))
		(setq repetitions 1)
		)
	)
	
	; help facility : keypad PF2
	
	(defun
		(going-back-to-editor 
			(set "read-only" 0)
			(remove-all-local-bindings)
			(switch-to-buffer last-buffer-name)
			(delete-buffer "help")
		)
	)
	
	(defun
		(help-openline
			(set "read-only" 0)
			(read-file "help-openline")
			(set "read-only" 1)))
	
	(defun
		(help-word
			(set "read-only" 0)
			(read-file "help-word")
			(set "read-only" 1)))
	
	(defun
		(help-eol
			(set "read-only" 0)
			(read-file "help-eol")
			(set "read-only" 1)))
	
	(defun
		(help-char
			(set "read-only" 0)
			(read-file "help-char")
			(set "read-only" 1)))
	
	(defun
		(help-forward
			(set "read-only" 0)
			(read-file "help-forward")
			(set "read-only" 1)))
	
	(defun
		(help-reverse
			(set "read-only" 0)
			(read-file "help-reverse")
			(set "read-only" 1)))
	
	(defun
		(help-cut
			(set "read-only" 0)
			(read-file "help-cut")
			(set "read-only" 1)))
	
	(defun
		(help-command
			(set "read-only" 0)
			(read-file "help-command")
			(set "read-only" 1)))
	
	(defun
		(help-sect
			(set "read-only" 0)
			(read-file "help-sect")
			(set "read-only" 1)))
	
	(defun
		(help-append
			(set "read-only" 0)
			(read-file "help-append")
			(set "read-only" 1)))
	
	(defun
		(help-cutword
			(set "read-only" 0)
			(read-file "help-cutword")
			(set "read-only" 1)))
	
	(defun
		(help-cutchar
			(set "read-only" 0)
			(read-file "help-cutchar")
			(set "read-only" 1)))
	
	(defun
		(help-select
			(set "read-only" 0)
			(read-file "help-select")
			(set "read-only" 1)))
	
	(defun
		(help-enter
			(set "read-only" 0)
			(read-file "help-enter")
			(set "read-only" 1)))
	
	(defun
		(help-find
			(set "read-only" 0)
			(read-file "help-find")
			(set "read-only" 1)))
	
	(defun
		(help-cutline
			(set "read-only" 0)
			(read-file "help-cutline")
			(set "read-only" 1)))
	
	(defun
		(help-gold
			(set "read-only" 0)
			(read-file "help-gold")
			(set "read-only" 1)))
	
	(defun
		(help-help
			(set "read-only" 0)
			(read-file "edt-help")
			(set "read-only" 1)))
	
	(defun
		(help-me 
			(setq last-buffer-name  (current-buffer-name))
			(switch-to-buffer "help")
			(remove-all-local-bindings)
			(read-file "edt-help")
			(local-bind-to-key "going-back-to-editor"  "\040")
			(local-bind-to-key "help-openline" "\eOp")
			(local-bind-to-key "help-word" "\eOq")
			(local-bind-to-key "help-eol" "\eOr")
			(local-bind-to-key "help-char" "\eOs")
			(local-bind-to-key "help-forward" "\eOt")
			(local-bind-to-key "help-reverse" "\eOu")
			(local-bind-to-key "help-cut" "\eOv")
			(local-bind-to-key "help-command" "\eOw")
			(local-bind-to-key "help-sect" "\eOx")
			(local-bind-to-key "help-append" "\eOy")
			(local-bind-to-key "help-cutword" "\eOm")
			(local-bind-to-key "help-cutchar" "\eOl")
			(local-bind-to-key "help-select" "\eOn")
			(local-bind-to-key "help-enter" "\eOM")
			(local-bind-to-key "help-find" "\eOR")
			(local-bind-to-key "help-cutline" "\eOS")
			(local-bind-to-key "help-gold" "\eOP")
			(local-bind-to-key "help-help" "\eOQ")
			(set "read-only" 1)
		)
	)
	
	; go in forward direction   : keypad 4
	
	(defun
		(forward-definition
			(bind-to-key "line-forward" "\eOp")
			(bind-to-key "the-next-word" "\eOq")
			(bind-to-key "section-down"    "\eOx")
			(bind-to-key "the-next-character" "\eOs")
			(bind-to-key "case-char-invert" "\eOP\eOq")
			(bind-to-key "eol-forward"  "\eOr")
			(bind-to-key "find-it-forward" "\eOR")
			(bind-to-key "getting-it-forward" "\eOP\eOR")
			(bind-to-key "find-marker-forward" "\eOP/")
			(bind-to-key "substitute-it-forward" "\eOP\eOM")
		)
	)
	
	; go in reverse direction    :  keypad 5
	
	(defun
		(backward-definition
			(bind-to-key "line-backward" "\eOp")
			(bind-to-key "the-previous-word" "\eOq")
			(bind-to-key "section-up" "\eOx")
	   		(bind-to-key "the-previous-character" "\eOs")
			(bind-to-key "reverse-case-char-invert" "\eOP\eOq")
			(bind-to-key "eol-backward" "\eOr")
			(bind-to-key "find-it-reverse" "\eOR")
			(bind-to-key "getting-it-reverse" "\eOP\eOR")
			(bind-to-key "find-marker-reverse" "\eOP/")
			(bind-to-key "substitute-it-reverse" "\eOP\eOM")
		)
	)
	
	; general i.e direction independant definitions
	
	(bind-to-key "end-of-file" "\eOP\eOt")
	(bind-to-key "beginning-of-file" "\eOP\eOu")
	(bind-to-key "forward-word" "\^f")
	(bind-to-key "backward-word" "\^b")
	(bind-to-key "add-from-file" "\eOP\a")
	(bind-to-key "add-from-file" "\eOP\A")
	(bind-to-key "write-buffer-exit" "\eOPe")
	(bind-to-key "write-buffer-exit" "\eOPE")
	(bind-to-key "exit-emacs" "\eOPq")
	(bind-to-key "exit-emacs" "\eOPQ")
	(bind-to-key "beginning-of-line" "\10")
	(bind-to-key "character-kill" "\eOl")
	(bind-to-key "restore-character" "\eOP\eOl")
	(bind-to-key "word-kill" "\eOm")
	(bind-to-key "restore-word" "\eOP\eOm")
	(bind-to-key "line-kill" "\eOS")
	(bind-to-key "restore-line" "\eOP\eOS")
	(bind-to-key "kill-to-end-of-line" "\eOP\eOr")
	(bind-to-key "newline-and-backup" "\eOP\eOp")
	(bind-to-key "select-region" "\eOn")
	(bind-to-key "insert-the-marker" "\eOP.")
	(bind-to-key "lets-append-it" "\eOy")
	(bind-to-key "lets-replace-it" "\eOP\eOy")
	(bind-to-key "list-buffers" "\eOPs")
	(bind-to-key "list-buffers" "\eOPS")
	(bind-to-key "switch-buffers" "\eOPB")
	(bind-to-key "switch-buffers" "\eOPb")
	(bind-to-key "return-to-last-buffer" "\eOPl")
	(bind-to-key "return-to-last-buffer" "\eOPL")
	(bind-to-key "delete-buffer" "\eOPD")
	(bind-to-key "delete-buffer" "\eOPd")
	(bind-to-key "redraw-display" "\^R")
	(bind-to-key "redraw-display" "\^r")
	(bind-to-key "read-in-a-file" "\eOPi")
	(bind-to-key "read-in-a-file" "\eOPI")
	(bind-to-key "write-out-a-file" "\eOPo")
	(bind-to-key "write-out-a-file" "\eOPO")
	(bind-to-key "help-me" "\eOQ")
	(bind-to-key "apropos" "\eOP\eOQ")
	(bind-to-key "delete-other-windows" "\eOP\eOs")
	(bind-to-key "forward-definition" "\eOt")
        (bind-to-key "backward-definition" "")
	(bind-to-key "backward-definition" "\eOu")
	(bind-to-key "cut-region" "\eOv")
	(bind-to-key "paste-region" "\eOP\eOv")
	(bind-to-key "edt-cut-to-buffer" "\^v")
	(bind-to-key "edt-cut-to-buffer" "\^V")
	(bind-to-key "edt-copy-buffer" "\^g")
	(bind-to-key "edt-copy-buffer" "\^G")
	(bind-to-key "edt-append-it" "\eOP\^v")
	(bind-to-key "edt-append-it" "\eOP\^V")
	(bind-to-key "backto-main-buffer" "\eOP\m")
	(bind-to-key "backto-main-buffer" "\eOP\M")
	(bind-to-key "edt-replace-it" "\eOP\^g")
	(bind-to-key "edt-replace-it" "\eOP\^G")
	(bind-to-key "delete-previous-word" "\012")
	(bind-to-key "getting-repetitions" "\eOw")
	(bind-to-key "execute-extended-command" "\eOP\eOw")
	(set "track-eol-on-^N-^P" 0)
	(set "selected" 0)
	(set "repetitions" 1)
	(forward-definition)

SHAR_EOF
fi # end of overwriting check
#	End of shell archive
exit 0