(FILECREATED " 3-Aug-84 23:25:10" {PHYLUM}<3-LISP>EMACS>COMS.FPKG;1 40282  

      changes to:  (FNS EMACS.APPLY* EMACS.CALLFUN EMACS.CLOSE EMACS.MAKE.COMMAND TOUPPER TOLOWER 
			EMACS.CHARACTER \\COM.EMACS.DISPATCH.↑X EMACS.MAKE.↑X.COMMAND 
			\\COM.EMACS.DISPATCH.META EMACS.MAKE.META.COMMAND \\COM.FORWARD.CHARACTER 
			\\COM.BACKWARDS.CHARACTER \\COM.DELETE.CHARACTER \\COM.RUBOUT 
			\\COM.TRANSPOSE.CHARACTERS \\COM.FORWARD.WORD \\COM.BACKWARDS.WORD 
			\\COM.DELETE.WORD.FORWARD \\COM.DELETE.WORD.BACKWARD \\COM.BEGINNING.OF.LINE 
			\\COM.END.OF.LINE \\COM.PREVIOUS.LINE \\COM.NEXT.LINE \\COM.KILL.LINE 
			\\COM.FORWARD.PARAGRAPH \\COM.BACKWARDS.PARAGRAPH \\COM.WRITE.FILE 
			\\COM.SAVE.FILE \\COM.GET.FILE \\COM.INSERT.FILE \\COM.LAST.SCREENFUL 
			\\COM.NEXT.SCREENFUL \\COM.EVAL.FROM.BUFFER \\COM.FORWARD.SEXPR 
			\\COM.BACKWARDS.SEXPR \\COM.KILL.SEXPR \\COM.TOP.OF.DEFINITION 
			\\COM.END.OF.DEFINITION \\COM.GRIND.DEFINITION EMACS.KILL.WHITESPACE.ON.LINE 
			\\COM.INDENT.NEXT.LINE \\COM.INDENT.FOR.SEXPR EMACS.FLASH 
			EMACS.FLASH.SEXPR.BACK \\COM.FLASH.PAREN \\COM.FLASH.BRACKET 
			EMACS.PAREN.FLASHING.ON EMACS.PAREN.FLASHING.OFF DEDITEmacs 
			\\COM.DEDIT.EXPRESSION \\COM.SNARF.EXPRESSION.FROM.DEDIT 
			\\COM.JUMP.TO.BEGINNING \\COM.JUMP.TO.END \\COM.NOT.MODIFIED 
			\\COM.UNIVERSAL.ARGUMENT \\COM.META.AUTOARGUMENT \\COM.JOIN.LINES 
			\\COM.QUOTE.NEXT.CHARACTER \\COM.REDISPLAY \\COM.OPEN.LINE 
			\\COM.DELETE.BLANK.LINES \\COM.QUIT.EMACS \\COM.HARDCOPY.BUFFER 
			\\COM.STRING.SEARCH.FORWARD \\COM.STRING.REPLACE))


(* Copyright (c) 1984 by Xerox Corporation)

(PRETTYCOMPRINT COMSCOMS)

(RPAQQ COMSCOMS ((INITVARS (\\EMACS.↑X.DISPATCH '(NIL))
			   (\\EMACS.META.DISPATCH '(NIL)))
	(FNS EMACS.APPLY* EMACS.CALLFUN EMACS.CLOSE EMACS.MAKE.COMMAND TOUPPER TOLOWER 
	     EMACS.CHARACTER \\COM.EMACS.DISPATCH.↑X EMACS.MAKE.↑X.COMMAND \\COM.EMACS.DISPATCH.META 
	     EMACS.MAKE.META.COMMAND \\COM.FORWARD.CHARACTER \\COM.BACKWARDS.CHARACTER 
	     \\COM.DELETE.CHARACTER \\COM.RUBOUT \\COM.TRANSPOSE.CHARACTERS \\COM.FORWARD.WORD 
	     \\COM.BACKWARDS.WORD \\COM.DELETE.WORD.FORWARD \\COM.DELETE.WORD.BACKWARD 
	     \\COM.BEGINNING.OF.LINE \\COM.END.OF.LINE \\COM.PREVIOUS.LINE \\COM.NEXT.LINE 
	     \\COM.KILL.LINE \\COM.FORWARD.PARAGRAPH \\COM.BACKWARDS.PARAGRAPH \\COM.WRITE.FILE 
	     \\COM.SAVE.FILE \\COM.GET.FILE \\COM.INSERT.FILE \\COM.LAST.SCREENFUL 
	     \\COM.NEXT.SCREENFUL \\COM.EVAL.FROM.BUFFER \\COM.FORWARD.SEXPR \\COM.BACKWARDS.SEXPR 
	     \\COM.KILL.SEXPR \\COM.TOP.OF.DEFINITION \\COM.END.OF.DEFINITION \\COM.GRIND.DEFINITION 
	     EMACS.KILL.WHITESPACE.ON.LINE \\COM.INDENT.NEXT.LINE \\COM.INDENT.FOR.SEXPR EMACS.FLASH 
	     EMACS.FLASH.SEXPR.BACK \\COM.FLASH.PAREN \\COM.FLASH.BRACKET EMACS.PAREN.FLASHING.ON 
	     EMACS.PAREN.FLASHING.OFF DEDITEmacs \\COM.DEDIT.EXPRESSION 
	     \\COM.SNARF.EXPRESSION.FROM.DEDIT \\COM.JUMP.TO.BEGINNING \\COM.JUMP.TO.END 
	     \\COM.NOT.MODIFIED \\COM.UNIVERSAL.ARGUMENT \\COM.META.AUTOARGUMENT \\COM.JOIN.LINES 
	     \\COM.QUOTE.NEXT.CHARACTER \\COM.REDISPLAY \\COM.OPEN.LINE \\COM.DELETE.BLANK.LINES 
	     \\COM.QUIT.EMACS \\COM.HARDCOPY.BUFFER \\COM.STRING.SEARCH.FORWARD \\COM.STRING.REPLACE)
	(P (TEDIT.SETSYNTAX (CHARCODE ↑Z)
			    'UNDO TEDIT.READTABLE)
	   (TEDIT.SETSYNTAX (CHARCODE ↑R)
			    'REDO TEDIT.READTABLE)
	   (TEDIT.SETSYNTAX (CHARCODE #K)
			    'DELETE TEDIT.READTABLE)
	   (TEDIT.SETSYNTAX (CHARCODE #k)
			    'DELETE TEDIT.READTABLE)
	   (EMACS.MAKE.COMMAND (CHARCODE ↑X)
			       '\\COM.EMACS.DISPATCH.↑X 
			       "Prefix for other commands.  C-X ? for a list")
	   (EMACS.MAKE.COMMAND (CHARCODE ESC)
			       '\\COM.EMACS.DISPATCH.META "Sets the meta bit for the next character.")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑F)
			       '\\COM.FORWARD.CHARACTER "Move forward arg characters")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑B)
			       '\\COM.BACKWARDS.CHARACTER "Move back arg characters")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑D)
			       '\\COM.DELETE.CHARACTER "Delete character(s) at point")
	   (EMACS.MAKE.COMMAND (CHARCODE DEL)
			       '\\COM.RUBOUT "Delete character(s) left of point")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑T)
			       '\\COM.TRANSPOSE.CHARACTERS 
	     "Transpose characters between caret, except at EOL; then transpose two before caret")
	   (EMACS.MAKE.META.COMMAND (CHARCODE F)
				    '\\COM.FORWARD.WORD "Move forward arg words")
	   (EMACS.MAKE.META.COMMAND (CHARCODE B)
				    '\\COM.BACKWARDS.WORD "Move back arg words")
	   (EMACS.MAKE.META.COMMAND (CHARCODE D)
				    '\\COM.DELETE.WORD.FORWARD "Delete words(s) at point")
	   (EMACS.MAKE.META.COMMAND (CHARCODE DEL)
				    '\\COM.DELETE.WORD.BACKWARD "Delete words(s) left of point")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑A)
			       '\\COM.BEGINNING.OF.LINE "Go to left edge of screen")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑E)
			       '\\COM.END.OF.LINE "Go to right edge of line")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑P)
			       '\\COM.PREVIOUS.LINE "Go to argth previous line")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑N)
			       '\\COM.NEXT.LINE "Go to argth next line")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑K)
			       '\\COM.KILL.LINE "Kill from here to EOL")
	   (EMACS.MAKE.META.COMMAND (CHARCODE %])
				    '\\COM.FORWARD.PARAGRAPH "Go to end of paragraph")
	   (EMACS.MAKE.META.COMMAND (CHARCODE %[)
				    '\\COM.BACKWARDS.PARAGRAPH "Go to start of paragraph")
	   (EMACS.MAKE.↑X.COMMAND (CHARCODE ↑W)
				  '\\COM.WRITE.FILE "Prompts for filename and writes file")
	   (EMACS.MAKE.↑X.COMMAND (CHARCODE ↑S)
				  '\\COM.SAVE.FILE 
				  "Save  file to last filename written to, or filename read from")
	   (EMACS.MAKE.↑X.COMMAND (CHARCODE ↑F)
				  '\\COM.GET.FILE "Loads a file into the buffer")
	   (EMACS.MAKE.↑X.COMMAND (CHARCODE ↑V)
				  '\\COM.GET.FILE)
	   (EMACS.MAKE.↑X.COMMAND (CHARCODE I)
				  '\\COM.INSERT.FILE "Inserts a file at point")
	   (EMACS.MAKE.META.COMMAND (CHARCODE V)
				    '\\COM.LAST.SCREENFUL "Back up a screenful")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑V)
			       '\\COM.NEXT.SCREENFUL "Supposedly displays next screenful")
	   (EMACS.MAKE.↑X.COMMAND (CHARCODE ↑Z)
				  '\\COM.EVAL.FROM.BUFFER 
		      "Reads form left of point and EVALuates it.   Returned value in echo area.")
	   (EMACS.MAKE.META.COMMAND (CHARCODE ↑F)
				    '\\COM.FORWARD.SEXPR "Forward one Sexpr")
	   (EMACS.MAKE.META.COMMAND (CHARCODE ↑B)
				    '\\COM.BACKWARDS.SEXPR "Backwards one Sexpr")
	   (EMACS.MAKE.META.COMMAND (CHARCODE ↑K)
				    '\\COM.KILL.SEXPR "Kill Sexpr to right of point")
	   (EMACS.MAKE.META.COMMAND (CHARCODE ↑A)
				    '\\COM.TOP.OF.DEFINITION "Go to top of definition")
	   (EMACS.MAKE.META.COMMAND (CHARCODE ↑E)
				    '\\COM.END.OF.DEFINITION "Go to end of definition")
	   (EMACS.MAKE.META.COMMAND (CHARCODE G)
				    '\\COM.GRIND.DEFINITION 
				    "Grind Sexpr to right of point into buffer")
	   (EMACS.MAKE.COMMAND (CHARCODE LF)
			       '\\COM.INDENT.NEXT.LINE "Supposedly indents next line correctly")
	   (EMACS.MAKE.COMMAND (CHARCODE TAB)
			       '\\COM.INDENT.FOR.SEXPR "Supposedly indents current line correctly")
	   (EMACS.MAKE.↑X.COMMAND (CHARCODE D)
				  '\\COM.DEDIT.EXPRESSION "Call DEdit on form to right of point")
	   (EMACS.MAKE.↑X.COMMAND (CHARCODE ↑D)
				  '\\COM.SNARF.EXPRESSION.FROM.DEDIT "Grabs selection from DEdit")
	   (EMACS.MAKE.META.COMMAND (CHARCODE <)
				    '\\COM.JUMP.TO.BEGINNING "Go to beginning of file")
	   (EMACS.MAKE.META.COMMAND (CHARCODE >)
				    '\\COM.JUMP.TO.END "Go to end of file")
	   (EMACS.MAKE.META.COMMAND (CHARCODE ~)
				    '\\COM.NOT.MODIFIED "Forget that buffer has been modified")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑U)
			       '\\COM.UNIVERSAL.ARGUMENT "Multiply current arg by 4")
	   (for I from (CHARCODE 0)
		to
		(CHARCODE 9)
		do
		(EMACS.MAKE.META.COMMAND I (LIST 'LAMBDA '(STREAM)
						 (LIST '\\COM.META.AUTOARGUMENT 'STREAM
						       (IDIFFERENCE I (CHARCODE 0))))
					 "Type value as argument"))
	   (EMACS.MAKE.META.COMMAND (CHARCODE ↑)
				    '\\COM.JOIN.LINES "Deletes whitespace between lines")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑Q)
			       '\\COM.QUOTE.NEXT.CHARACTER "Quotes next character")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑L)
			       '\\COM.REDISPLAY "Redisplay buffer")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑O)
			       '\\COM.OPEN.LINE "Insert arg blank lines at point")
	   (EMACS.MAKE.↑X.COMMAND (CHARCODE ↑O)
				  '\\COM.DELETE.BLANK.LINES 
				  "Close all but one blank line around point")
	   (EMACS.MAKE.↑X.COMMAND (CHARCODE Q)
				  '\\COM.QUIT.EMACS "Exit EMACS")
	   (EMACS.MAKE.↑X.COMMAND (CHARCODE ↑Q)
				  '\\COM.QUIT.EMACS "Exit EMACS")
	   (EMACS.MAKE.↑X.COMMAND (CHARCODE H)
				  '\\COM.HARDCOPY.BUFFER 
				  "Hardcopy buffer.  Arg means create press file.")
	   (EMACS.MAKE.COMMAND (CHARCODE ↑S)
			       '\\COM.STRING.SEARCH.FORWARD "Search forward for a string")
	   (EMACS.MAKE.META.COMMAND (CHARCODE %%)
				    '\\COM.STRING.SEARCH.FORWARD 
  "Search forward for a string, replacing it with another.
Argument means query each replacement"))))

(RPAQ? \\EMACS.↑X.DISPATCH '(NIL))

(RPAQ? \\EMACS.META.DISPATCH '(NIL))
(DEFINEQ

(EMACS.APPLY*
  (LAMBDA (FN STREAM)                                        (* "Gumby" " 3-Aug-84 23:24")
    (EMACS.SETCARETPTR STREAM (fetch (EMACSSTREAM CARETPTR) of STREAM))
    (PROG1 (APPLY* FN STREAM)
	   (EMACS.UPDATE.MODELINE (fetch (EMACSSTREAM WINDOW) of STREAM))
	   (EMACS.SHOWCARET STREAM))))

(EMACS.CALLFUN
  (LAMBDA (FN STREAM)                                        (* "Gumby" " 3-Aug-84 23:24")
    (PROG ((SUCESSP (ERSETQ (EMACS.APPLY* FN STREAM))))
          (IF (NULL SUCESSP)
	      THEN (TEDIT.NOTIFY STREAM "Command Aborted" '(FRESHLINE)))
          (IF (NEQ (CAR SUCESSP)
		   'NUMERIC.ARG)
	      THEN (WINDOWPROP (fetch (EMACSSTREAM WINDOW) of STREAM)
			       'NUMERIC.ARG NIL)
	    ELSE (TEDIT.NOTIFY STREAM (CONCAT "Arg: " (EMACS.NUMERIC.ARG STREAM))
			       '(CLEARW))))))

(EMACS.CLOSE
  (LAMBDA (FN)                                               (* "Gumby" " 3-Aug-84 23:24")
                                                             (* Close function over command to be executed *)
    (LIST 'LAMBDA '(STREAM)
	  (LIST 'EMACS.CALLFUN (LIST 'QUOTE FN)
		'STREAM))))

(EMACS.MAKE.COMMAND
  (LAMBDA (CHARCODE FUNCTION DOCUMENTATION)                  (* "Gumby" " 3-Aug-84 23:24")
    (TEDIT.SETFUNCTION CHARCODE (EMACS.CLOSE FUNCTION)
		       TEDIT.READTABLE)
    (AND DOCUMENTATION (ATOM FUNCTION)
	 (PUTPROP FUNCTION 'EMACS.DOCUMENTATION DOCUMENTATION))))

(TOUPPER
  (LAMBDA (CHAR)                                             (* "Gumby" " 3-Aug-84 23:24")
                                                             (* Doesn%'t this exist already? *)
    (COND
      ((AND (IGEQ CHAR (CHARCODE a))
	    (ILEQ CHAR (CHARCODE z)))
	(IDIFFERENCE CHAR (IDIFFERENCE (CHARCODE a)
				       (CHARCODE A))))
      (T CHAR))))

(TOLOWER
  (LAMBDA (CHAR)                                             (* "Gumby" " 3-Aug-84 23:24")
                                                             (* Doesn%'t this exist already? *)
    (COND
      ((AND (IGEQ CHAR (CHARCODE A))
	    (ILEQ CHAR (CHARCODE Z)))
	(IPLUS CHAR (IDIFFERENCE (CHARCODE a)
				 (CHARCODE A))))
      (T CHAR))))

(EMACS.CHARACTER
  (LAMBDA (CHARNUM)                                          (* "Gumby" " 3-Aug-84 23:24")
    (PROG ((BITBUF (LIST (CHARACTER (BITCLEAR (BITSET CHARNUM 64)
					      128)))))
          (IF (BITTEST CHARNUM 128)
	      THEN (SETQ BITBUF (CONS 'M- BITBUF)))
          (IF (NOT (BITTEST CHARNUM 64))
	      THEN (SETQ BITBUF (CONS 'C- BITBUF)))
          (RETURN (PACK BITBUF)))))

(\\COM.EMACS.DISPATCH.↑X
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (TEDIT.NOTIFY STREAM "C-X " '(CLEARW))
    (PROG ((CHAR (TOUPPER (TYI)))
	   COM)
          (TEDIT.NOTIFY STREAM (EMACS.CHARACTER CHAR))
          (SETQ COM (CDR (SASSOC CHAR \\EMACS.↑X.DISPATCH)))
          (RETURN (IF COM
		      THEN (EMACS.APPLY* (CAR COM)
					 STREAM)
		    ELSE (BEEP)
			 (TEDIT.NOTIFY STREAM "Command not known." '(FRESHLINE TERPRI)))))))

(EMACS.MAKE.↑X.COMMAND
  (LAMBDA (CHARNUM FUNCTION DOCUMENTATION)                   (* "Gumby" " 3-Aug-84 23:25")
    (PUTASSOC (TOUPPER CHARNUM)
	      (CONS FUNCTION DOCUMENTATION)
	      \\EMACS.↑X.DISPATCH)))

(\\COM.EMACS.DISPATCH.META
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
                                                             (* CROCK!!! *)
    (TEDIT.NOTIFY STREAM "M-" '(CLEARW))
    (PROG ((CHAR (TOUPPER (TYI)))
	   COM)
          (TEDIT.NOTIFY STREAM (EMACS.CHARACTER CHAR))
          (SETQ COM (CDR (SASSOC CHAR \\EMACS.META.DISPATCH)))
          (RETURN (IF COM
		      THEN (EMACS.APPLY* COM STREAM)
		    ELSE (BEEP)
			 (TEDIT.NOTIFY STREAM "Command not known." '(FRESHLINE TERPRI)))))))

(EMACS.MAKE.META.COMMAND
  (LAMBDA (CHARNUM FUNCTION DOCUMENTATION)                   (* "Gumby" " 3-Aug-84 23:25")
    (PUTASSOC (TOUPPER CHARNUM)
	      FUNCTION \\EMACS.META.DISPATCH)
    (EMACS.MAKE.COMMAND (LOGOR 128 (TOUPPER CHARNUM))
			FUNCTION DOCUMENTATION)
    (EMACS.MAKE.COMMAND (LOGOR 128 (TOLOWER CHARNUM))
			FUNCTION)))

(\\COM.FORWARD.CHARACTER
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.CHAR.FWD STREAM (EMACS.NUMERIC.ARG STREAM))))

(\\COM.BACKWARDS.CHARACTER
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.CHAR.BACK STREAM (EMACS.NUMERIC.ARG STREAM))))

(\\COM.DELETE.CHARACTER
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((PTR (EMACS.GETFILEPTR STREAM)))
          (EMACS.DELETE STREAM PTR (IPLUS PTR (SUB1 (EMACS.NUMERIC.ARG STREAM)))))))

(\\COM.RUBOUT
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((PTR (EMACS.GETFILEPTR STREAM))
	   (QTY (EMACS.NUMERIC.ARG STREAM)))
          (IF (AND (IGEQ PTR 0)
		   (IGEQ PTR QTY))
	      THEN (EMACS.DELETE STREAM (SUB1 PTR)
				 (IDIFFERENCE PTR QTY))))))

(\\COM.TRANSPOSE.CHARACTERS
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG (PTR CHAR)
          (IF (NOT (EMACS.EOFP STREAM))
	      THEN (IF (IEQP (\BIN STREAM)
			     (CHARCODE CR))
		       THEN (SETQ PTR (IDIFFERENCE (EMACS.GETFILEPTR STREAM)
						   2))
		     ELSE (SETQ PTR (SUB1 (EMACS.GETFILEPTR STREAM))))
		   (EMACS.SETCARETPTR STREAM PTR)
		   (SETQ CHAR (\BIN STREAM))
		   (EMACS.DELETE STREAM PTR PTR)
		   (EMACS.SETCARETPTR STREAM (SUB1 PTR))
		   (BOUT STREAM CHAR)
		   (EMACS.SETFILEPTR STREAM (ADD1 PTR))))))

(\\COM.FORWARD.WORD
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.WORD.FWD STREAM (EMACS.NUMERIC.ARG STREAM))))

(\\COM.BACKWARDS.WORD
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.WORD.BACK STREAM (EMACS.NUMERIC.ARG STREAM))))

(\\COM.DELETE.WORD.FORWARD
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((START (EMACS.GETFILEPTR STREAM))
	   END)
          (EMACS.WORD.FWD STREAM (EMACS.NUMERIC.ARG STREAM))
          (SETQ END (EMACS.GETFILEPTR STREAM))
          (IF (NOT (IEQP START END))
	      THEN (EMACS.DELETE STREAM START (SUB1 END))))))

(\\COM.DELETE.WORD.BACKWARD
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((PTR (EMACS.GETFILEPTR STREAM)))
          (IF PTR
	      THEN (EMACS.WORD.BACK STREAM (EMACS.NUMERIC.ARG STREAM))
		   (EMACS.DELETE STREAM (EMACS.GETFILEPTR STREAM)
				 (SUB1 PTR))))))

(\\COM.BEGINNING.OF.LINE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.SETCARETPTR STREAM (SUB1 (FETCH CHAR1 OF (FETCH L1 OF (FETCH SEL
								    OF (fetch (EMACSSTREAM TEXTOBJ)
									  of STREAM))))))))

(\\COM.END.OF.LINE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((PLACE (FETCH CHARLIM OF (FETCH L1 OF (FETCH SEL OF (fetch (EMACSSTREAM TEXTOBJ)
								  of STREAM))))))
          (EMACS.SETCARETPTR STREAM (IF (IEQP PLACE (GETEOFPTR STREAM))
					THEN PLACE
				      ELSE (SUB1 PLACE))))))

(\\COM.PREVIOUS.LINE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((THISSEL (FETCH SEL OF (fetch (EMACSSTREAM TEXTOBJ) of STREAM)))
	   (W (FETCH \WINDOW OF (fetch (EMACSSTREAM TEXTOBJ) of STREAM)))
	   BOL THISLINE PREVLINE (HEIGHT (FONTPROP (FETCH CLFONT OF TEDIT.DEFAULT.CHARLOOKS)
						   'HEIGHT)))
          (SETQ THISLINE (FETCH L1 OF THISSEL))
          (SETQ BOL (SUB1 (FETCH CHAR1 OF THISLINE)))
          (SETQ PREVLINE THISLINE)
          (FOR I FROM 1 TO (EMACS.NUMERIC.ARG STREAM)
	     DO (IF (AND (EQ (TYPENAME (FETCH PREVLINE OF PREVLINE))
			     'LINEDESCRIPTOR)
			 (NOT (ZEROP (FETCH CHAR1 OF (FETCH PREVLINE OF PREVLINE)))))
		    THEN (SETQ PREVLINE (FETCH PREVLINE OF PREVLINE))
		  ELSE                                       (* need to backformat this line)
		       (\TEDIT.SCROLLFN W 0 HEIGHT)
		       (IF (NOT (AND (EQ (TYPENAME (FETCH PREVLINE OF PREVLINE))
					 'LINEDESCRIPTOR)
				     (ZEROP (FETCH CHAR1 OF (FETCH PREVLINE OF PREVLINE)))))
			   THEN                              (* Punt out of the FOR)
				(RETURN))))
          (EMACS.SETCARETPTR STREAM (IMAX 0 (IMIN (SUB1 BOL)
						  (SUB1 (IPLUS (IDIFFERENCE (FETCH CH# OF THISSEL)
									    BOL)
							       (SUB1 (FETCH CHAR1 OF PREVLINE)))))))))
)

(\\COM.NEXT.LINE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((THISSEL (FETCH SEL OF (fetch (EMACSSTREAM TEXTOBJ) of STREAM)))
	   (W (FETCH \WINDOW OF (fetch (EMACSSTREAM TEXTOBJ) of STREAM)))
	   BOL THISLINE NEXTLINE (HEIGHT (FONTPROP (FETCH CLFONT OF TEDIT.DEFAULT.CHARLOOKS)
						   'HEIGHT)))
          (SETQ THISLINE (FETCH L1 OF THISSEL))
          (SETQ NEXTLINE THISLINE)
          (FOR I FROM 1 TO (EMACS.NUMERIC.ARG STREAM)
	     DO (IF (AND (EQ (TYPENAME (FETCH NEXTLINE OF NEXTLINE))
			     'LINEDESCRIPTOR)
			 (NEQ (FETCH CHAR1 OF (FETCH NEXTLINE OF NEXTLINE))
			      0))
		    THEN (SETQ NEXTLINE (FETCH NEXTLINE OF NEXTLINE))
		  ELSE                                       (* need to forward format this line)
		       (\TEDIT.SCROLLFN W 0 (MINUS HEIGHT))
		       (IF (NOT (AND (EQ (TYPENAME (FETCH NEXTLINE OF NEXTLINE))
					 'LINEDESCRIPTOR))
				(ZEROP (FETCH CHAR1 OF (FETCH NEXTLINE OF NEXTLINE))))
			   THEN                              (* Punt out of the FOR)
				(RETURN)))
		(EMACS.SETCARETPTR STREAM (IMIN (GETEOFPTR STREAM)
						(IPLUS (IDIFFERENCE (FETCH CH# OF THISSEL)
								    (FETCH CHAR1 OF THISLINE))
						       (FETCH CHARLIM OF (FETCH PREVLINE
									    OF NEXTLINE)))
						(SUB1 (FETCH CHARLIM OF NEXTLINE))))))))

(\\COM.KILL.LINE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((THISLN (FETCH L1 OF (FETCH SEL OF (fetch (EMACSSTREAM TEXTOBJ) of STREAM))))
	   (POINT (EMACS.GETFILEPTR STREAM))
	   EOL CR)
          (SETQ EOL (SUB1 (FETCH CHARLIM OF THISLN)))
          (EMACS.SKIP.SYNTAX.FWD STREAM EMACS.NONCR)
          (SETQ CR (GETFILEPTR STREAM))
          (EMACS.DELETE STREAM POINT (COND
			  ((IEQP CR EOL)
			    (IMAX POINT (SUB1 EOL)))
			  ((IGEQ EOL (GETEOFPTR STREAM))
			    (GETEOFPTR STREAM))
			  (T (IMAX POINT EOL))))
          (IF (IGREATERP CR EOL)
	      THEN (TERPRI STREAM)
		   (\BACKBIN STREAM)))))

(\\COM.FORWARD.PARAGRAPH
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.PARA.END STREAM)))

(\\COM.BACKWARDS.PARAGRAPH
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.PARA.BEGINNING STREAM)))

(\\COM.WRITE.FILE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.PUT STREAM NIL T)))

(\\COM.SAVE.FILE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.PUT STREAM T)))

(\\COM.GET.FILE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.GET STREAM)))

(\\COM.INSERT.FILE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (TEDIT.INCLUDE STREAM)))

(\\COM.LAST.SCREENFUL
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((WINDOW (fetch (EMACSSTREAM WINDOW) of STREAM)))
                                                             (* I doubt this is a very good idea....
							     *)
          (REPLACE EDITOPACTIVE OF (fetch (EMACSSTREAM TEXTOBJ) of STREAM) WITH NIL)
          (\TEDIT.SCROLLFN WINDOW 0 (IDIFFERENCE (FONTPROP (DSPFONT NIL WINDOW)
							   'HEIGHT)
						 (WINDOWPROP WINDOW 'HEIGHT))))))

(\\COM.NEXT.SCREENFUL
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
                                                             (* Somewhat brokeded *)
    (PROG ((WINDOW (fetch (EMACSSTREAM WINDOW) of STREAM)))
                                                             (* I doubt this is a very good idea....
							     *)
          (REPLACE EDITOPACTIVE OF (fetch (EMACSSTREAM TEXTOBJ) of STREAM) WITH NIL)
          (\TEDIT.SCROLLFN WINDOW 0 (IDIFFERENCE (WINDOWPROP WINDOW 'HEIGHT)
						 (FONTPROP (DSPFONT NIL WINDOW)
							   'HEIGHT))))))

(\\COM.EVAL.FROM.BUFFER
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (TEDIT.NOTIFY STREAM (EVAL (READ STREAM))
		  '(CLEARW))))

(\\COM.FORWARD.SEXPR
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (IF (NOT (NLSETQ (EMACS.SEXPR.FWD STREAM)))
	THEN (FLASHWINDOW (fetch (EMACSSTREAM WINDOW) of STREAM)
			  2)
	     (TEDIT.NOTIFY STREAM "Unbalanced Parenthesis" '(CLEARW)))))

(\\COM.BACKWARDS.SEXPR
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (IF (NOT (NLSETQ (EMACS.SEXPR.BACK STREAM)))
	THEN (FLASHWINDOW (fetch (EMACSSTREAM WINDOW) of STREAM)
			  2)
	     (TEDIT.NOTIFY STREAM "Unbalanced Parenthesis" '(CLEARW)))))

(\\COM.KILL.SEXPR
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((PTR (EMACS.GETFILEPTR STREAM)))
          (EMACS.SEXPR.FWD STREAM)
          (EMACS.DELETE STREAM PTR (SUB1 (EMACS.GETFILEPTR STREAM))))))

(\\COM.TOP.OF.DEFINITION
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
                                                             (* Find non-WS immediately preceded by CR.
							     *)
    (DO (IF (EMACS.BOFP STREAM)
	    THEN (RETURN))
	(EMACS.SKIP.SYNTAX.BACK STREAM EMACS.NONCR)
	(IF (BITTEST (ELT EMACS.ARRAY (EMACS.POINT STREAM))
		     EMACS.NONWS)
	    THEN (RETURN))
	(EMACS.CHAR.BACK STREAM))))

(\\COM.END.OF.DEFINITION
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
                                                             (* Go to top of next definition.
							     *)
    (PROG (CODE)                                             (* Find non-WS immediately preceded by CR.
							     *)
          (DO (IF (EMACS.EOFP STREAM)
		  THEN (RETURN))
	      (EMACS.SKIP.SYNTAX.FWD STREAM EMACS.NONCR)
	      (EMACS.CHAR.FWD STREAM)
	      (IF (BITTEST (ELT EMACS.ARRAY (EMACS.POINT STREAM))
			   EMACS.CR)
		  THEN (RETURN))))))

(\\COM.GRIND.DEFINITION
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.SKIP.SYNTAX.FWD STREAM EMACS.WS)
    (PROG ((PTR1 (GETFILEPTR STREAM))
	   (EXPR (READ STREAM))
	   (PTR2 (GETFILEPTR STREAM)))
          (EMACS.DELETE STREAM PTR1 (SUB1 PTR2))
          (PRINTDEF EXPR NIL NIL NIL NIL STREAM))))

(EMACS.KILL.WHITESPACE.ON.LINE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((HERE (EMACS.GETFILEPTR STREAM))
	   THERE)
          (EMACS.SKIP.SYNTAX.FWD STREAM EMACS.WS)
          (SETQ THERE (SUB1 (EMACS.GETFILEPTR STREAM)))
          (EMACS.SETFILEPTR STREAM HERE)
          (EMACS.SKIPTO.SYNTAX.FWD STREAM EMACS.CR)
          (SETQ THERE (IMIN THERE (SUB1 (EMACS.GETFILEPTR STREAM))))
          (IF (IGREATERP THERE HERE)
	      THEN (EMACS.DELETE STREAM HERE THERE)))))

(\\COM.INDENT.NEXT.LINE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (TERPRI STREAM)
    (EMACS.SETFILEPTR STREAM (PLUS 1 (EMACS.GETFILEPTR STREAM)))
    (\\COM.INDENT.FOR.SEXPR STREAM)))

(\\COM.INDENT.FOR.SEXPR
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.KILL.WHITESPACE.ON.LINE STREAM)
    (PROG ((HERE (EMACS.GETFILEPTR STREAM))
	   OFFSET IDX)
          (EMACS.SEXPR.BACK STREAM)
          (SETQ OFFSET (DIFFERENCE (EMACS.GETFILEPTR STREAM)
				   (PROGN (EMACS.BOL STREAM)
					  (EMACS.GETFILEPTR STREAM))))
          (EMACS.SETFILEPTR STREAM HERE)
          (IF (IGREATERP OFFSET 0)
	      THEN (TEDIT.INSERT STREAM (ALLOCSTRING OFFSET " ")))
          (EMACS.SETFILEPTR STREAM (SUB1 (IPLUS HERE OFFSET))))))

(EMACS.FLASH
  (LAMBDA (STREAM POINT DURATION)                            (* "Gumby" " 3-Aug-84 23:25")
    (TEDIT.SETSEL STREAM (ADD1 (EMACS.GETFILEPTR STREAM))
		  1 POINT T)
    (TEDIT.SHOWSEL STREAM T)
    (DISMISS DURATION)))

(EMACS.FLASH.SEXPR.BACK
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((INITIAL.PTR (EMACS.GETFILEPTR STREAM))
	   (MATCHED (NLSETQ (EMACS.SEXPR.BACK STREAM)
			    T))
	   (FINAL.PTR (EMACS.GETFILEPTR STREAM)))
          (IF (NOT MATCHED)
	      THEN (TEDIT.NOTIFY STREAM "Unbalanced Parentheses" '(CLEARW))
		   (FLASHWINDOW (fetch (EMACSSTREAM WINDOW) of STREAM)
				2))
          (IF (NOT (NULL (EMACS.GETFILEPTR STREAM)))
	      THEN (EMACS.FLASH STREAM 'RIGHT (IF MATCHED
						  THEN 200
						ELSE 1000)))
          (EMACS.SETCARETPTR STREAM INITIAL.PTR))))

(\\COM.FLASH.PAREN
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (\BOUT STREAM (CHARCODE ")"))
    (EMACS.FLASH.SEXPR.BACK STREAM)))

(\\COM.FLASH.BRACKET
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (\BOUT STREAM (CHARCODE "]"))
    (EMACS.FLASH.SEXPR.BACK STREAM)))

(EMACS.PAREN.FLASHING.ON
  (LAMBDA NIL                                                (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.MAKE.COMMAND (CHARCODE ")")
			'\\COM.FLASH.PAREN)
    (EMACS.MAKE.COMMAND (CHARCODE "]")
			'\\COM.FLASH.BRACKET)))

(EMACS.PAREN.FLASHING.OFF
  (LAMBDA NIL                                                (* "Gumby" " 3-Aug-84 23:25")
    (TEDIT.SETSYNTAX (CHARCODE ")")
		     NIL TEDIT.READTABLE)
    (TEDIT.SETSYNTAX (CHARCODE "]")
		     NIL TEDIT.READTABLE)))

(DEDITEmacs
  (LAMBDA NIL                                                (* "Gumby" " 3-Aug-84 23:25")
    (CURSOR T)
    (DEDITZAPCAR (TOPSELECTION)
		 (READ (EMACS (MKSTRING (CAR (TOPSELECTION)))
			      NIL T)))))

(\\COM.DEDIT.EXPRESSION
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((PTR1 (GETFILEPTR STREAM))
	   (EXPR (READ STREAM))
	   (PTR2 (GETFILEPTR STREAM)))
          (EMACS.DELETE STREAM PTR1 (SUB1 PTR2))
          (SETQ EXPR (EDITE EXPR))
          (PRINTDEF EXPR NIL NIL NIL NIL STREAM))))

(\\COM.SNARF.EXPRESSION.FROM.DEDIT
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PRINTDEF (CAR (TOPSELECTION))
	      NIL NIL NIL NIL STREAM)))

(\\COM.JUMP.TO.BEGINNING
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.SETFILEPTR STREAM 0)))

(\\COM.JUMP.TO.END
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.SETFILEPTR STREAM (GETEOFPTR STREAM))))

(\\COM.NOT.MODIFIED
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (TEDIT.STREAMCHANGEDP STREAM T)
    (EMACS.UPDATE.MODELINE (fetch (EMACSSTREAM WINDOW) of STREAM))))

(\\COM.UNIVERSAL.ARGUMENT
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((WINDOW (fetch (EMACSSTREAM WINDOW) of STREAM)))
          (WINDOWPROP WINDOW 'NUMERIC.ARG (ITIMES 4 (EMACS.NUMERIC.ARG STREAM))))
    'NUMERIC.ARG))

(\\COM.META.AUTOARGUMENT
  (LAMBDA (STREAM QTY)                                       (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((WINDOW (fetch (EMACSSTREAM WINDOW) of STREAM))
	   OLDVAL)
          (SETQ OLDVAL (WINDOWPROP WINDOW 'NUMERIC.ARG))
          (WINDOWPROP WINDOW 'NUMERIC.ARG (IF (NULL OLDVAL)
					      THEN QTY
					    ELSE (IPLUS QTY (ITIMES 10 OLDVAL)))))
    'NUMERIC.ARG))

(\\COM.JOIN.LINES
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
                                                             (* Join this line to line above *)
    (PROG ((PTR (EMACS.GETFILEPTR STREAM))
	   BOL EOL PBOL PEOL PTR1 PTR2)
          (SETQ BOL (EMACS.BOL STREAM PTR))
          (SETQ EOL (EMACS.EOL STREAM PTR))
          (SETQ PEOL (SUB1 BOL))
          (SETQ PBOL (EMACS.BOL STREAM PEOL))
          (EMACS.SETFILEPTR STREAM BOL)
          (EMACS.SKIP.SYNTAX.BACK STREAM EMACS.WS)
          (SETQ PTR1 (IMAX (EMACS.GETFILEPTR STREAM)
			   PBOL))
          (EMACS.SETFILEPTR STREAM BOL)
          (EMACS.SKIP.SYNTAX.FWD STREAM EMACS.WS)
          (SETQ PTR2 (IMIN (EMACS.GETFILEPTR STREAM)
			   (ADD1 EOL)))
          (EMACS.SETFILEPTR STREAM PTR1)
          (EMACS.DELETE STREAM PTR1 (SUB1 PTR2))
          (\BOUT STREAM (CHARCODE SP)))))

(\\COM.QUOTE.NEXT.CHARACTER
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((PTR (EMACS.GETFILEPTR STREAM))
	   (QTY (IMAX 1 (EMACS.NUMERIC.ARG STREAM))))
          (TEDIT.NOTIFY STREAM "C-Q" '(CLEARW))
          (TEDIT.INSERT STREAM (ALLOCSTRING QTY (TYI))
			(ADD1 PTR))
          (EMACS.SETFILEPTR STREAM (IPLUS QTY PTR))
          (CLEARW (fetch (EMACSSTREAM PROMPTWINDOW) of STREAM)))))

(\\COM.REDISPLAY
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (REDISPLAYW (fetch (EMACSSTREAM WINDOW) of STREAM))))

(\\COM.OPEN.LINE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((HERE (EMACS.GETFILEPTR STREAM)))
          (FOR I FROM 1 TO (EMACS.NUMERIC.ARG STREAM) DO (TERPRI STREAM))
          (EMACS.SETFILEPTR STREAM HERE))))

(\\COM.DELETE.BLANK.LINES
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (EMACS.SKIP.SYNTAX.BACK STREAM EMACS.WS)
    (PROG ((START (IMIN (GETEOFPTR STREAM)
			(ADD1 (EMACS.GETFILEPTR STREAM)))))
          (EMACS.SKIP.SYNTAX.FWD STREAM EMACS.WS)
          (EMACS.DELETE STREAM START (SUB1 (EMACS.GETFILEPTR STREAM))))
    (TERPRI STREAM)
    (\BACKBIN STREAM)))

(\\COM.QUIT.EMACS
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((WINDOW (fetch (EMACSSTREAM PROMPTWINDOW) of STREAM))
	   ANS)
          (IF (OR (NOT (fetch (EMACSSTREAM DIRTY) of STREAM))
		  (CLEARW WINDOW)
		  (AND (SETQ ANS (PROMPTFORWORD "Buffer has been modified!  Are you sure?" "Yes" NIL 
						WINDOW))
		       (MEMBER (NTHCHARCODE ANS 1)
			       (CHARCODE (Y y)))))
	      THEN (SETQ EMACS.ALL.BUFFERS (DREMOVE (fetch (EMACSSTREAM WINDOW) of STREAM)
						    EMACS.ALL.BUFFERS))
		   (TEDIT.STREAMCHANGEDP STREAM T)           (* So Tedit doesn%'t ask the question too! *)
		   (TEDIT.QUIT (fetch (EMACSSTREAM TEXTOBJ) of STREAM))
	    ELSE (TEDIT.NOTIFY "Quit aborted" '(CLEARW))))))

(\\COM.HARDCOPY.BUFFER
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (\\COM.JUMP.TO.BEGINNING STREAM)                         (* Because Interlisp only has one stream per file *)
    (PROG ((PRESSP (EMACS.NUMERIC.ARG.P STREAM)))
          (TEDIT.HARDCOPY STREAM (AND PRESSP (TEDIT.GETINPUT (fetch (EMACSSTREAM TEXTOBJ)
								of STREAM)
							     "Press Filename:"))
			  PRESSP))))

(\\COM.STRING.SEARCH.FORWARD
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((TEXTOBJ (fetch (EMACSSTREAM TEXTOBJ) of STREAM)))
          (TEDIT.FIND TEXTOBJ (TEDIT.GETINPUT TEXTOBJ "Search string:")))))

(\\COM.STRING.REPLACE
  (LAMBDA (STREAM)                                           (* "Gumby" " 3-Aug-84 23:25")
    (PROG ((TEXTOBJ (fetch (EMACSSTREAM TEXTOBJ) of STREAM)))
          (TEDIT.SUBSTITUTE TEXTOBJ (TEDIT.GETINPUT TEXTOBJ "Search string:")
			    (TEDIT.GETINPUT TEXTOBJ "Replacement string:")
			    (EMACS.NUMERIC.ARG.P STREAM)))))
)
(TEDIT.SETSYNTAX (CHARCODE ↑Z)
		 'UNDO TEDIT.READTABLE)
(TEDIT.SETSYNTAX (CHARCODE ↑R)
		 'REDO TEDIT.READTABLE)
(TEDIT.SETSYNTAX (CHARCODE #K)
		 'DELETE TEDIT.READTABLE)
(TEDIT.SETSYNTAX (CHARCODE #k)
		 'DELETE TEDIT.READTABLE)
(EMACS.MAKE.COMMAND (CHARCODE ↑X)
		    '\\COM.EMACS.DISPATCH.↑X "Prefix for other commands.  C-X ? for a list")
(EMACS.MAKE.COMMAND (CHARCODE ESC)
		    '\\COM.EMACS.DISPATCH.META "Sets the meta bit for the next character.")
(EMACS.MAKE.COMMAND (CHARCODE ↑F)
		    '\\COM.FORWARD.CHARACTER "Move forward arg characters")
(EMACS.MAKE.COMMAND (CHARCODE ↑B)
		    '\\COM.BACKWARDS.CHARACTER "Move back arg characters")
(EMACS.MAKE.COMMAND (CHARCODE ↑D)
		    '\\COM.DELETE.CHARACTER "Delete character(s) at point")
(EMACS.MAKE.COMMAND (CHARCODE DEL)
		    '\\COM.RUBOUT "Delete character(s) left of point")
(EMACS.MAKE.COMMAND (CHARCODE ↑T)
		    '\\COM.TRANSPOSE.CHARACTERS 
	     "Transpose characters between caret, except at EOL; then transpose two before caret")
(EMACS.MAKE.META.COMMAND (CHARCODE F)
			 '\\COM.FORWARD.WORD "Move forward arg words")
(EMACS.MAKE.META.COMMAND (CHARCODE B)
			 '\\COM.BACKWARDS.WORD "Move back arg words")
(EMACS.MAKE.META.COMMAND (CHARCODE D)
			 '\\COM.DELETE.WORD.FORWARD "Delete words(s) at point")
(EMACS.MAKE.META.COMMAND (CHARCODE DEL)
			 '\\COM.DELETE.WORD.BACKWARD "Delete words(s) left of point")
(EMACS.MAKE.COMMAND (CHARCODE ↑A)
		    '\\COM.BEGINNING.OF.LINE "Go to left edge of screen")
(EMACS.MAKE.COMMAND (CHARCODE ↑E)
		    '\\COM.END.OF.LINE "Go to right edge of line")
(EMACS.MAKE.COMMAND (CHARCODE ↑P)
		    '\\COM.PREVIOUS.LINE "Go to argth previous line")
(EMACS.MAKE.COMMAND (CHARCODE ↑N)
		    '\\COM.NEXT.LINE "Go to argth next line")
(EMACS.MAKE.COMMAND (CHARCODE ↑K)
		    '\\COM.KILL.LINE "Kill from here to EOL")
(EMACS.MAKE.META.COMMAND (CHARCODE %])
			 '\\COM.FORWARD.PARAGRAPH "Go to end of paragraph")
(EMACS.MAKE.META.COMMAND (CHARCODE %[)
			 '\\COM.BACKWARDS.PARAGRAPH "Go to start of paragraph")
(EMACS.MAKE.↑X.COMMAND (CHARCODE ↑W)
		       '\\COM.WRITE.FILE "Prompts for filename and writes file")
(EMACS.MAKE.↑X.COMMAND (CHARCODE ↑S)
		       '\\COM.SAVE.FILE 
		       "Save  file to last filename written to, or filename read from")
(EMACS.MAKE.↑X.COMMAND (CHARCODE ↑F)
		       '\\COM.GET.FILE "Loads a file into the buffer")
(EMACS.MAKE.↑X.COMMAND (CHARCODE ↑V)
		       '\\COM.GET.FILE)
(EMACS.MAKE.↑X.COMMAND (CHARCODE I)
		       '\\COM.INSERT.FILE "Inserts a file at point")
(EMACS.MAKE.META.COMMAND (CHARCODE V)
			 '\\COM.LAST.SCREENFUL "Back up a screenful")
(EMACS.MAKE.COMMAND (CHARCODE ↑V)
		    '\\COM.NEXT.SCREENFUL "Supposedly displays next screenful")
(EMACS.MAKE.↑X.COMMAND (CHARCODE ↑Z)
		       '\\COM.EVAL.FROM.BUFFER 
		      "Reads form left of point and EVALuates it.   Returned value in echo area.")
(EMACS.MAKE.META.COMMAND (CHARCODE ↑F)
			 '\\COM.FORWARD.SEXPR "Forward one Sexpr")
(EMACS.MAKE.META.COMMAND (CHARCODE ↑B)
			 '\\COM.BACKWARDS.SEXPR "Backwards one Sexpr")
(EMACS.MAKE.META.COMMAND (CHARCODE ↑K)
			 '\\COM.KILL.SEXPR "Kill Sexpr to right of point")
(EMACS.MAKE.META.COMMAND (CHARCODE ↑A)
			 '\\COM.TOP.OF.DEFINITION "Go to top of definition")
(EMACS.MAKE.META.COMMAND (CHARCODE ↑E)
			 '\\COM.END.OF.DEFINITION "Go to end of definition")
(EMACS.MAKE.META.COMMAND (CHARCODE G)
			 '\\COM.GRIND.DEFINITION "Grind Sexpr to right of point into buffer")
(EMACS.MAKE.COMMAND (CHARCODE LF)
		    '\\COM.INDENT.NEXT.LINE "Supposedly indents next line correctly")
(EMACS.MAKE.COMMAND (CHARCODE TAB)
		    '\\COM.INDENT.FOR.SEXPR "Supposedly indents current line correctly")
(EMACS.MAKE.↑X.COMMAND (CHARCODE D)
		       '\\COM.DEDIT.EXPRESSION "Call DEdit on form to right of point")
(EMACS.MAKE.↑X.COMMAND (CHARCODE ↑D)
		       '\\COM.SNARF.EXPRESSION.FROM.DEDIT "Grabs selection from DEdit")
(EMACS.MAKE.META.COMMAND (CHARCODE <)
			 '\\COM.JUMP.TO.BEGINNING "Go to beginning of file")
(EMACS.MAKE.META.COMMAND (CHARCODE >)
			 '\\COM.JUMP.TO.END "Go to end of file")
(EMACS.MAKE.META.COMMAND (CHARCODE ~)
			 '\\COM.NOT.MODIFIED "Forget that buffer has been modified")
(EMACS.MAKE.COMMAND (CHARCODE ↑U)
		    '\\COM.UNIVERSAL.ARGUMENT "Multiply current arg by 4")
(for I from (CHARCODE 0)
     to
     (CHARCODE 9)
     do
     (EMACS.MAKE.META.COMMAND I (LIST 'LAMBDA '(STREAM)
				      (LIST '\\COM.META.AUTOARGUMENT 'STREAM (IDIFFERENCE
					      I
					      (CHARCODE 0))))
			      "Type value as argument"))
(EMACS.MAKE.META.COMMAND (CHARCODE ↑)
			 '\\COM.JOIN.LINES "Deletes whitespace between lines")
(EMACS.MAKE.COMMAND (CHARCODE ↑Q)
		    '\\COM.QUOTE.NEXT.CHARACTER "Quotes next character")
(EMACS.MAKE.COMMAND (CHARCODE ↑L)
		    '\\COM.REDISPLAY "Redisplay buffer")
(EMACS.MAKE.COMMAND (CHARCODE ↑O)
		    '\\COM.OPEN.LINE "Insert arg blank lines at point")
(EMACS.MAKE.↑X.COMMAND (CHARCODE ↑O)
		       '\\COM.DELETE.BLANK.LINES "Close all but one blank line around point")
(EMACS.MAKE.↑X.COMMAND (CHARCODE Q)
		       '\\COM.QUIT.EMACS "Exit EMACS")
(EMACS.MAKE.↑X.COMMAND (CHARCODE ↑Q)
		       '\\COM.QUIT.EMACS "Exit EMACS")
(EMACS.MAKE.↑X.COMMAND (CHARCODE H)
		       '\\COM.HARDCOPY.BUFFER "Hardcopy buffer.  Arg means create press file.")
(EMACS.MAKE.COMMAND (CHARCODE ↑S)
		    '\\COM.STRING.SEARCH.FORWARD "Search forward for a string")
(EMACS.MAKE.META.COMMAND (CHARCODE %%)
			 '\\COM.STRING.SEARCH.FORWARD 
  "Search forward for a string, replacing it with another.
Argument means query each replacement")
(PUTPROPS COMS.FPKG COPYRIGHT ("Xerox Corporation" 1984))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (9128 34717 (EMACS.APPLY* 9138 . 9467) (EMACS.CALLFUN 9469 . 10008) (EMACS.CLOSE 10010
 . 10318) (EMACS.MAKE.COMMAND 10320 . 10621) (TOUPPER 10623 . 10998) (TOLOWER 11000 . 11363) (
EMACS.CHARACTER 11365 . 11785) (\\COM.EMACS.DISPATCH.↑X 11787 . 12303) (EMACS.MAKE.↑X.COMMAND 12305 . 
12529) (\\COM.EMACS.DISPATCH.META 12531 . 13117) (EMACS.MAKE.META.COMMAND 13119 . 13483) (
\\COM.FORWARD.CHARACTER 13485 . 13665) (\\COM.BACKWARDS.CHARACTER 13667 . 13850) (
\\COM.DELETE.CHARACTER 13852 . 14103) (\\COM.RUBOUT 14105 . 14435) (\\COM.TRANSPOSE.CHARACTERS 14437
 . 15051) (\\COM.FORWARD.WORD 15053 . 15228) (\\COM.BACKWARDS.WORD 15230 . 15408) (
\\COM.DELETE.WORD.FORWARD 15410 . 15797) (\\COM.DELETE.WORD.BACKWARD 15799 . 16132) (
\\COM.BEGINNING.OF.LINE 16134 . 16438) (\\COM.END.OF.LINE 16440 . 16840) (\\COM.PREVIOUS.LINE 16842 . 
18326) (\\COM.NEXT.LINE 18328 . 19850) (\\COM.KILL.LINE 19852 . 20567) (\\COM.FORWARD.PARAGRAPH 20569
 . 20722) (\\COM.BACKWARDS.PARAGRAPH 20724 . 20885) (\\COM.WRITE.FILE 20887 . 21034) (\\COM.SAVE.FILE 
21036 . 21178) (\\COM.GET.FILE 21180 . 21319) (\\COM.INSERT.FILE 21321 . 21467) (\\COM.LAST.SCREENFUL 
21469 . 22025) (\\COM.NEXT.SCREENFUL 22027 . 22672) (\\COM.EVAL.FROM.BUFFER 22674 . 22859) (
\\COM.FORWARD.SEXPR 22861 . 23176) (\\COM.BACKWARDS.SEXPR 23178 . 23496) (\\COM.KILL.SEXPR 23498 . 
23765) (\\COM.TOP.OF.DEFINITION 23767 . 24256) (\\COM.END.OF.DEFINITION 24258 . 24881) (
\\COM.GRIND.DEFINITION 24883 . 25245) (EMACS.KILL.WHITESPACE.ON.LINE 25247 . 25793) (
\\COM.INDENT.NEXT.LINE 25795 . 26044) (\\COM.INDENT.FOR.SEXPR 26046 . 26651) (EMACS.FLASH 26653 . 
26891) (EMACS.FLASH.SEXPR.BACK 26893 . 27561) (\\COM.FLASH.PAREN 27563 . 27756) (\\COM.FLASH.BRACKET 
27758 . 27953) (EMACS.PAREN.FLASHING.ON 27955 . 28214) (EMACS.PAREN.FLASHING.OFF 28216 . 28470) (
DEDITEmacs 28472 . 28697) (\\COM.DEDIT.EXPRESSION 28699 . 29052) (\\COM.SNARF.EXPRESSION.FROM.DEDIT 
29054 . 29255) (\\COM.JUMP.TO.BEGINNING 29257 . 29414) (\\COM.JUMP.TO.END 29416 . 29584) (
\\COM.NOT.MODIFIED 29586 . 29817) (\\COM.UNIVERSAL.ARGUMENT 29819 . 30112) (\\COM.META.AUTOARGUMENT 
30114 . 30532) (\\COM.JOIN.LINES 30534 . 31444) (\\COM.QUOTE.NEXT.CHARACTER 31446 . 31907) (
\\COM.REDISPLAY 31909 . 32090) (\\COM.OPEN.LINE 32092 . 32386) (\\COM.DELETE.BLANK.LINES 32388 . 32805
) (\\COM.QUIT.EMACS 32807 . 33616) (\\COM.HARDCOPY.BUFFER 33618 . 34076) (\\COM.STRING.SEARCH.FORWARD 
34078 . 34351) (\\COM.STRING.REPLACE 34353 . 34715)))))
STOP