Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!uunet!husc6!necntc!ncoast!allbery
From: nwd@j.cc.purdue.edu (Daniel Lawrence)
Newsgroups: comp.sources.misc
Subject: MicroEmacs 3.9 Documentation (1 of 4)
Message-ID: <5703@ncoast.UUCP>
Date: Wed, 18-Nov-87 19:16:54 EST
Article-I.D.: ncoast.5703
Posted: Wed Nov 18 19:16:54 1987
Date-Received: Sat, 21-Nov-87 11:55:56 EST
Sender: allbery@ncoast.UUCP
Lines: 1240
Approved: allbery@ncoast.UUCP
X-Archive: comp.sources.misc/uemacs-3.9-doc/1


# This is a shar archive.
# Remove everything above this line.
# Run the file through sh, not csh.
# (type `sh med.1')
# If you do not see the message
#	`med.1 completed!'
# then the file was incomplete.
echo extracting - amiga.rc
sed 's/^X//' > amiga.rc << 'FRIDAY_NIGHT'
X;	EMACS.RC:	Startup file for MicroEMACS 3.8
X;
X;			This file is executed everytime the
X;			editor is entered
X
Xset $discmd "FALSE"
Xwrite-message "[Setting up....]"
X
X; If you screen "SNOWS", uncomment this line
X;	set $flicker "TRUE"
X
X; If you are on an IBM-PC EGA card and want to force the
X; screen to EGA mode, uncomment the following line
X;	set $sres "EGA"
X
X;	***** Rebind the Function key group
X
Xbind-to-key search-forward		FN0
Xbind-to-key search-reverse		FN1
Xbind-to-key hunt-forward		FN2
Xbind-to-key hunt-backward		FN3
Xbind-to-key next-window			FN4
Xbind-to-key execute-macro		FN5
Xbind-to-key find-file			FN6
Xbind-to-key execute-file		FN7
Xbind-to-key save-file			FN8
Xbind-to-key exit-emacs			FN9
X
Xbind-to-key apropos			FNR
Xbind-to-key describe-key		FNS
Xbind-to-key fill-paragraph		FNT
Xbind-to-key shell-command		FNX
Xbind-to-key i-shell			FNY
X
X;	set screen colors
Xadd-global-mode "black"
X
X;	toggle function key window off
X1 store-macro
X	save-window
X	1 next-window
X	!if &sequal "Function Keys" $cbufname
X		delete-window
X	!endif
X	bind-to-key execute-macro-14 FNP
X!force	restore-window
X	write-message "[Function key window OFF]"
X!endm
X
X;	toggle function key window back on
X14 store-macro
X	1 next-window
X	!if &sequal $cbufname "emacs.hlp"
X		execute-macro-11
X	!endif
X	!if ¬ &sequal $cbufname "Function Keys"
X		1 split-current-window
X		select-buffer "Function Keys"
X		add-mode "red"
X!force		5 resize-window
X		beginning-of-file
X	!endif
X	bind-to-key execute-macro-1 FNP
X	2 next-window
X	write-message "[Function key window ON]"
X!endm
X
X;	Enter Help
X2 store-macro
X	1 next-window		;Make sure the function key window isn't up!
X	!if &sequal $cbufname "Function Keys"
X		delete-window
X		bind-to-key execute-macro-14 FNP
X	!endif
X	help
X	8 resize-window
X	bind-to-key execute-macro-12 FNT
X	bind-to-key execute-macro-13 FNS
X	bind-to-key execute-macro-11 FNQ
X	bind-to-key execute-macro-15 ^XO
X	bind-to-key execute-macro-15 ^XP
X	bind-to-key execute-macro-15 FN4
X	add-mode "red"
X	beginning-of-file
X	2 forward-character
X	clear-message-line
X!endm
X
X;	Exit Help
X11 store-macro
X	bind-to-key previous-page FNT
X	bind-to-key next-page FNS
X	bind-to-key execute-macro-2 FNQ
X	bind-to-key next-window ^XO
X	bind-to-key previous-window ^XP
X	bind-to-key next-window FN4
X	delete-window
X	clear-message-line
X!endm
X
X;	don't allow these commands from within the HELP screen
X15	store-macro
X	write-message "[Use F2 to exit HELP]"
X!endm
X
X;	last help page
X12 store-macro
X	beginning-of-line
X	search-reverse "=>"
X	1 redraw-display
X!endm
X
X;	next help page
X13 store-macro
X	beginning-of-line
X	2 forward-character
X	search-forward "=>"
X	1 redraw-display
X!endm
X
X;	reformat indented paragraph
X
X6 store-macro
X	write-message "                    [Fixing paragraph]"
X	set $discmd "FALSE"
X	kill-region
X	2 split-current-window
X	select-buffer "[temp]"
X	yank
X	beginning-of-file
X	replace-string "~n	" "~n"
X	66 set-fill-column
X	fill-paragraph
X	77 set-fill-column
X	beginning-of-file
X	handle-tab
X	replace-string ~n "~n	"
X	end-of-file
X	2 delete-previous-character
X	beginning-of-file
X	set-mark
X	end-of-file
X	kill-region
X	unmark-buffer
X	delete-window
X	yank
X	delete-buffer "[temp]"
X	set $discmd "TRUE"
X	write-message "                    [Fixed paragraph]"
X!endm
X
X;	indent region
X
X7 store-macro
X	write-message "                    [Indenting region]"
X	kill-region
X	2 split-current-window
X	select-buffer "[temp]"
X	yank
X	beginning-of-file
X	handle-tab
X	replace-string "~n" "~n	"
X	end-of-file
X	4 delete-previous-character
X	beginning-of-file
X	set-mark
X	write-message "                    [Indenting region]"
X	end-of-file
X	kill-region
X	unmark-buffer
X	delete-window
X	yank
X	delete-buffer "[temp]"
X	write-message "                    [Region Indented]"
X!endm
X
X;	undent region
X
X8 store-macro
X	write-message "                    [Undenting region]"
X	kill-region
X	2 split-current-window
X	select-buffer "[temp]"
X	yank
X	beginning-of-file
X	delete-next-character
X	replace-string "~n	" "~n"
X	end-of-file
X	2 delete-previous-character
X	beginning-of-file
X	set-mark
X	write-message "                    [Undenting region]"
X	end-of-file
X	kill-region
X	unmark-buffer
X	delete-window
X	yank
X	delete-buffer "[temp]"
X	write-message "                    [Region undented]"
X!endm
X
X;	bring up the function key window
X
X	1 split-current-window
X	select-buffer "Function Keys"
X	add-mode "red"
X	5 resize-window
X	insert-string "f1 search      f2 search back | F1 toggle function list F2 toggle help file~n"
X	insert-string "f3 hunt        f4 hunt back   | F3 find command/apropos F4 describe key~n"
X	insert-string "f5 next window f6 exec macro  | F5 reformat paragraph   F6 ref undented region~n"
X	insert-string "f7 find file   f8 exec file   | F7 indent region        F8 undent region~n"
X	insert-string "f9 save file  f10 exit emacs  | F9 execute DOS command F10 shell up~n"
X	beginning-of-file
X	unmark-buffer
X	next-window
X	set $discmd "TRUE"
X	write-message "[Emacs is READY]"
FRIDAY_NIGHT
echo extracting - azmap.cmd
sed 's/^X//' > azmap.cmd << 'FRIDAY_NIGHT'
X;	AZMAP.CMD:	MicroEMACS Macro file
X;			to translate an AZTEC C .SYM map file into
X;			the form needed to read it into ADDSYMS
X;			to be used with Pheonix's PFIX plus (C) debugger
X;
X;			written 6/5/86 by Daniel Lawrence
X
Xbeginning-of-file
Xnewline
Xprevious-line
Xreplace-string "~n" "~n 0000:"
Xbeginning-of-line
Xkill-to-end-of-line
Xnewline
Xnewline
Xnewline
Xbeginning-of-file
Xnewline
Xinsert-string "  Address         Publics by Name"
Xnewline
Xset-mark
Xend-of-file
Xcase-region-upper
Xbeginning-of-file
Xreplace-string "_~n" "~n"
X
FRIDAY_NIGHT
echo extracting - bdata.cmd
sed 's/^X//' > bdata.cmd << 'FRIDAY_NIGHT'
X;Create a block of DATA statements for a BASIC program
X; within MicroEMACS 3.8
X
X	insert-string "1000 DATA "
X	set %linenum 1000
X
X*nxtin
X	update-screen		;make sure we see the changes
X	set %data @"Next number[0 to end]: "
X	!if &equal %data 0
X		!goto finish
X	!endif
X
X	!if &greater $curcol 60
X		2 delete-previous-character
X		newline
X		set %linenum &add %linenum 10
X		insert-string &cat %linenum " DATA "
X	!endif
X
X	insert-string &cat %data ", "
X	!goto nxtin
X
X*finish
X
X	2 delete-previous-character
X	newline
X
X
FRIDAY_NIGHT
echo extracting - bpage.cmd
sed 's/^X//' > bpage.cmd << 'FRIDAY_NIGHT'
X;	BPAGE.CMD:	Box Macro and rectangualr region page
X;			for MicroEMACS 3.9d and above
X;			(C)opyright 1987 by Suresh Konda and Daniel M Lawrence
X;			Last Update: 11/02/87
X
X; make sure the function key window is up
X	set %rcfkeys FALSE
X	execute-macro-1
X	write-message "Loading..."
X
X; set the clean procedure up
Xstore-procedure clean
X        delete-buffer "[Macro 10]"
X        delete-buffer "[Macro 11]"
X        delete-buffer "[Macro 12]"
X        delete-buffer "[getblock]"
X	delete-buffer "[putblock]"
X	delete-buffer "[Macro 13]"
X	delete-buffer "[Macro 14]"
X	delete-buffer "[Macro 15]"
X	delete-buffer "[Macro 16]"
X	delete-buffer "[Macro 17]"
X	delete-buffer "[Macro 18]"
X	delete-buffer "[Macro 19]"
X	delete-buffer "[drawbox]"
X	delete-buffer "[setpoints]"
X	delete-buffer "[horizontal]"
X	delete-buffer "[vertical]"
X	delete-buffer "[horline]"
X	delete-buffer "[vertline]"
X	delete-buffer "[delcol]"
X	delete-buffer "[iline]"
X!endm
X
X; Write out the page instructions
X	save-window
X	1 next-window
X	beginning-of-file
X	set $curcol 25
X	overwrite-string " F1 Line type [DOUBLE]    F2 kill block   "
X	next-line
X	set $curcol 25
X	overwrite-string " F3 draw box              F4 copy block   "
X	next-line
X	set $curcol 25
X	overwrite-string " F5 insert line           F6 yank block   "
X	next-line
X	set $curcol 18
X	overwrite-string "BOX "
X	set $curcol 25
X	overwrite-string " F7 insert space          F8 insert block "
X	next-line
X	set $curcol 25
X	overwrite-string "                                          "
X	unmark-buffer
X	beginning-of-file
X	!force restore-window
X	update-screen
X
X; this sets overwrite mode to off.  to change it, set rcinsert to 1
Xset %rcinsert 0
X
X;	change line type
X
X10	store-macro
X	!if &equ %rcltype 1
X		set %rcltype 2
X		set %rctmp "DOUBLE"
X	!else
X		set %rcltype 1
X		set %rctmp "SINGLE"
X	!endif
X	set %cbuf $cbufname
X	set %cline $cwline
X	select-buffer "Function Keys"
X	beginning-of-file
X	1 goto-line
X	40 forward-character
X	6 delete-next-character
X	insert-string %rctmp
X	unmark-buffer
X	select-buffer %cbuf	
X	%cline redraw-display
X	!return
X!endm
X
X;	Draw a box
X
X12	store-macro
X	!if &equal %rcltype  1
X		set %c1 "Z"
X		set %c2 "D"
X		set %c3 "?"
X		set %c4 "@"
X		set %c5 "Y"
X		set %c6 "3"
X	!else
X		set %c1 "I"
X		set %c2 "M"
X		set %c3 ";"
X		set %c4 "H"
X		set %c5 "<"
X		set %c6 ":"
X	!endif
X	run drawbox	
X!endm
X
X;	insert a line in a box
X
X14	store-macro
X	run iline
X!endm
X
X;	insert a blank line in a box
X
X16	store-macro
X	set %rctmp %rcltype
X	set %rcltype 0
X	run iline
X	set %rcltype %rctmp
X!endm
X
Xstore-procedure	iline
X	run setpoints
X	!if &equal %pcol %mcol
X		run vertical
X	!else
X		!if &equal %pline %mline
X			run horizontal
X		!else
X			write-message "Illegal point and mark for lines"
X		!endif
X	!endif
X!endm
X
Xstore-procedure setpoints
X; procedure will set pcol, pline, mcol and mline. currently at point
X	set %pcol $curcol
X	set %pline $curline
X	exchange-point-and-mark
X	set %mcol $curcol
X	set %mline $curline
X	exchange-point-and-mark
X!endm
X
Xstore-procedure drawbox
X	run setpoints
X	set $curline %mline
X	set $curcol %mcol
X;draw top horizontal line
X	insert-string %c1
X;	set %width &sub &sub %pcol %mcol 1
X	set %width &sub %pcol %mcol
X	%width insert-string %c2
X 	insert-string %c3
X	newline-and-indent
X;draw bottom horizontal line
X	%pline goto-line
X	next-line
X	end-of-line
X	newline
X	set $curcol %mcol
X	insert-string %c4
X	%width insert-string %c2
X	insert-string %c5
X; bump pline 
X	set %pline &add %pline 1
X;draw verticals -- go to top and work our way down
X	%mline goto-line
X	!while &less $curline %pline
X		next-line
X		detab-line
X		previous-line
X		end-of-line
X		!if &less $curcol %pcol
X			&sub %pcol $curcol insert-string " "
X		!endif
X		set $curcol %pcol
X		insert-string %c6
X		set $curcol %mcol
X		insert-string %c6
X	!endwhile
X;return to point
X	%pline goto-line
X	next-line
X	beginning-of-line
X	%width forward-character
X	2 forward-character
X!endm
X
X; user procedure to draw a horizontal from mark to point making spaces for
X; the characters.
Xstore-procedure horizontal
X	set %s1 ":"
X	set %s2 "3"
X	!if &equal %rcltype  0
X;	then insert blanks
X		set %c1 ":"
X		set %c2 "3"
X		set %c3 " "
X		set %c4 ":"
X		set %c5 "3"
X		set %c6 ":"
X		set %c7 "3"
X	!else
X		!if &equal %rcltype  1
X;		then insert a single line
X			set %c1 "G"
X			set %c2 "C"
X			set %c3 "D"
X			set %c4 "W"
X			set %c5 "E"
X			set %c6 "6"
X			set %c7 "4"
X		!else
X;		then insert a double line
X			set %c1 "L"
X			set %c2 "F"
X			set %c3 "M"
X			set %c4 "N"
X			set %c5 "X"
X			set %c6 "9"
X			set %c7 "5"
X		!endif
X	!endif
X	run horline
X!endm
X
Xstore-procedure vertical
X	set %s1 "M"
X	set %s2 "D"
X	!if &equal %rcltype  0
X		set %c1 "M"
X		set %c2 "D"
X		set %c3 " "
X		set %c4 "M"
X		set %c5 "D"
X		set %c6 "M"
X		set %c7 "D"
X	!else
X		!if &equal %rcltype  1
X			set %c1  "Q"
X			set %c2 "B"
X			set %c3  "3"
X			set %c4 "X"
X			set %c5  "E"
X			set %c6 "O"
X			set %c7  "A"
X		!else
X			set %c1 "K"
X			set %c2  "R"
X			set %c3 ":"
X			set %c4  "N"
X			set %c5 "W"
X			set %c6  "J"
X			set %c7 "P"
X		!endif
X	!endif
X	run verline
X!endm
X
Xstore-procedure horline
X; procedure to draw a line from beginning of line to point
X	!if &equal %mcol %pcol
X		!return
X	!endif
X	!if &less %pcol %mcol
X;	then point was to left of mark.  exchange and reset variables
X		exchange-point-and-mark
X		run setpoints
X	!endif
X	!if %rcinsert
X		set $curcol %mcol
X	!else
X		end-of-line
X		newline
X		; move to under mark
X		%mcol insert-string " "
X	!endif
X; see if first char is a vertical line
X	previous-line
X	set %char &chr $curchar
X	next-line
X	%rcinsert delete-next-character
X	!if &sequal %char %s1
X			insert-string %c1
X	!else
X		!if &sequal %char %s2
X			insert-string %c2
X		!else
X			insert-string %c3
X		!endif
X	!endif
X; now for all chars but the last character i.e., char at point
X	!while &less $curcol %pcol
X		previous-line
X		set %char  &chr $curchar
X		next-line
X		%rcinsert delete-next-character
X		!if &sequal %char %s1
X			insert-string %c4
X	        !else 
X			!if &sequal %char %s2
X				insert-string %c5
X			!else
X				insert-string %c3
X			!endif
X		!endif
X	!endwhile
X; see if last char is a vertical line
X	previous-line
X	set %char  &chr $curchar
X	next-line
X	%rcinsert delete-next-character
X	!if &sequal %char %s1
X			insert-string %c6
X	!else
X		!if &sequal %char %s2
X			insert-string %c7
X		!else
X			insert-string %c3
X		!endif
X	!endif
X!endm
X
Xstore-procedure verline
X;  proc to draw vertical line from mark to point.  mark should be above point.
X	!if &equal %mline %pline
X		!return
X	!endif
X;	if point was above mark exchange and reset variables
X	!if &less %pline %mline
X		exchange-point-and-mark
X		run setpoints
X	!endif
X;top line
X	%mline goto-line
X	set $curcol %pcol
X	backward-character
X	set %char &chr $curchar
X	forward-character
X	%rcinsert delete-next-character
X	!if &sequal %char %s1
X		insert-string %c1
X	!else
X		!if &sequal %char %s2
X			insert-string %c2
X		!else
X			insert-string %c3
X		!endif
X	!endif
X;all but pline
X	!while &less $curline &sub %pline 1
X		next-line
X		beginning-of-line
X		set $curcol %pcol
X		backward-character
X		set %char &chr $curchar
X		forward-character
X		%rcinsert delete-next-character
X		!if &sequal %char %s1
X			insert-string %c4
X		!else
X			!if &sequal %char %s2
X				insert-string %c5
X			!else
X				insert-string %c3
X			!endif
X		!endif
X	!endwhile
X; bottom line
X	next-line
X	beginning-of-line
X	set $curcol %pcol
X	backward-character
X	set %char &chr $curchar
X	forward-character
X	%rcinsert delete-next-character
X	!if &sequal %char %s1
X		insert-string %c6
X	!else
X		!if &sequal %char %s2
X			insert-string %c7
X		!else
X			insert-string %c3
X		!endif
X	!endif
X!endm
X
Xstore-procedure delcol 
X; proc to delete column.  we will use the getblock procedure with the column of
X; the point set to one beyond the column point
X	set-points
X	!if &equal %mcol %pcol
X		; same columns
X		forward-character
X		run getblock
X		!return
X	!else
X		!if &equal %mline %pline
X		run getblock
X		!return
X	!endif
X!endm
X
X;	delete a rectangular block of text
X
X11	store-macro
X	set %bkcopy FALSE
X	run getblock
X	write-message "[Block deleted]"
X!endm
X
X;	copy a rectangular region
X
X13	store-macro
X	set %bkcopy TRUE
X	run getblock
X	write-message "[Block copied]"
X!endm
X
X;	yank a rectangular region
X
X15	store-macro
X	set %bkcopy TRUE
X	run putblock
X!endm
X
X;	insert a rectangular region
X
X17	store-macro
X	set %bkcopy FALSE
X	run putblock
X!endm
X
Xstore-procedure getblock
X	;set up needed variables
X	set $discmd FALSE
X	delete-buffer "[block]"
X	set %rcbuf $cbufname
X	set %cline $cwline
X
X	;save block boundries
X	set %endpos $curcol
X	set %endline $curline
X	exchange-point-and-mark
X	set %begpos $curcol
X	set %begline $curline
X	set %blwidth &sub %endpos %begpos
X
X	;detab the region
X	&add &sub %endline %begline 1 detab-line
X
X	;scan through the block
X	set $curline %begline
X	!while &less $curline &add %endline 1
X		;grab the part of this line needed
X		!force set $curcol %begpos
X		set-mark
X		!force set $curcol %endpos
X		kill-region
X
X		;bring it back if this is just a copy
X		!if %bkcopy
X			yank
X		!endif
X
X		;put the line in the block buffer
X		select-buffer "[block]"
X		yank
X
X		;and pad it if needed
X		!if &less $curcol %blwidth
X			&sub %blwidth $curcol insert-space
X			end-of-line
X		!endif
X		forward-character
X
X		;onward...
X		select-buffer %rcbuf
X		next-line
X	!endwhile
X
X        ;unmark the block
X        select-buffer "[block]"
X        unmark-buffer
X        select-buffer %rcbuf
X        previous-line
X        %cline redraw-display
X	set $discmd TRUE
X!endm
X
X;	insert/overlay a rectangular block of text
X
Xstore-procedure putblock
X	;set up needed variables
X	set $discmd FALSE
X	set %rcbuf $cbufname
X	set %cline $cwline
X
X	;save block boundries
X	set %begpos $curcol
X	set %begline $curline
X
X	;scan through the block
X	select-buffer "[block]"
X	beginning-of-file
X	set %endpos &add %begpos $lwidth
X	!while ¬ &equ $lwidth 0
X
X		;pad the destination if it is needed
X		select-buffer %rcbuf
X		beginning-of-line
X		!if ¬ &equ $lwidth 0
X			detab-line
X			previous-line
X		!endif
X		!force set $curcol %begpos
X		!if &less $curcol %begpos
X			&sub %begpos $curcol insert-space
X			end-of-line
X		!endif
X
X		;delete some stuff if this should overlay
X		!if %bkcopy
X			set-mark
X			!force set $curcol %endpos
X			kill-region
X		!endif
X
X		;grab the line from the block buffer
X		select-buffer "[block]"
X		beginning-of-line
X		set-mark
X		end-of-line
X		copy-region
X		forward-character
X
X		;put the line in the destination position
X		select-buffer %rcbuf
X		yank
X		next-line
X
X		;onward...
X		select-buffer "[block]"
X	!endwhile
X
X	select-buffer %rcbuf
X	set $curline %begline
X	set $curcol %begpos
X	%cline redraw-display
X	set $discmd TRUE
X!endm
X
X	; and init some variables
X	set %rcltype 2
X	write-message "[Block mode loaded]"
X
FRIDAY_NIGHT
echo extracting - emacs.hlp
sed 's/^X//' > emacs.hlp << 'FRIDAY_NIGHT'
X=>		MicroEMACS 3.8 Help screens		(01/18/87)
X
X	M-  means to use the  key prior to using another key
X	^A  means to use the control key at the same time as the A key
X
X^V or [Pg Dn]     Scroll down		M-< or 	Begining of file
X^Z or [Pg Up]     Scroll up		M-> or 	End of file
X
X-----------------------------------------------------------------------
X=>		(1) MOVING THE CURSOR
X
X^F  Forward character   M-F    Forward word		Keypad arrows
X^B  Backward character  M-B    Backward word		are active!
X^A  Front of line	M-G    Goto a line
X^E  End of line		
X^N  Next line		M-N    Front of paragraph
X^P  Previous line	M-P    End of paragraph
X-----------------------------------------------------------------------
X=>		(2) DELETING & INSERTING
X
X<--             Delete previous character
X^D or   Delete next character
X^C or   Insert a space
XM-<--           Delete previous word
XM-D             Delete next word
X^K              Close (delete) to end of line
X-----------------------------------------------------------------------
X=>		(2a) MORE DELETING & INSERTING
X
X   Insert a newline               Advance to next tab stop
X^J         Insert a newline and indent  M-^W   Delete paragraph
X^O         Open (insert) line
X^W         Delete region between mark (set using M-) and cursor
XM-W        Copy region to kill buffer
X^X ^O      Delete blank lines around cursor
X-----------------------------------------------------------------------
X=>		(3) SEARCHING
X
X^S	Search forward from cursor position.
X^R	Reverse search from cursor position.
X^X S	Forward incremental search
X^X R	Reverse incremental search
X S	Search for the next occurence of the last string (IBM-PC only)
X R	Search for the last occurence of the last string (IBM-PC only)
X-----------------------------------------------------------------------
X=>		(4) REPLACING
X
XM-R   Replace all instances of first typed-in string with second
X          typed-in string.  End each string with ESC.
XM-^R  Replace with query.  Answer with:
X	^G  cancel			.   exit to entry point
X	!   replace the rest		Y    replace & continue
X	?   Get a list of options	N   no replacement & continue
X-----------------------------------------------------------------------
X=>		(5) CAPITALIZING & TRANSPOSING
X
XM-U	UPPERCASE word
XM-C	Capitalize word		^T	Transpose characters
XM-L	lowercase word
X^X ^L	lowercase region
X^X ^U	uppercase region
X^Q	Quote next entry, so that control codes may be entered into text
X-----------------------------------------------------------------------
X=>		(6) REGIONS & THE KILL BUFFER
X
XM-	set MARK at current position
X^X ^X		eXchange mark and cursor
X
XA REGION will then be continuously-defined as the area between the mark and
Xthe current cursor position.  The KILL BUFFER is the text which has been
Xmost recently saved or deleted.
X-----------------------------------------------------------------------
X=>		(7) COPYING AND MOVING
X
X^W  Delete (Wipe) region		M-W	copy region to KILL buffer
X^Y  Yankback save buffer at cursor
XGenerally, the procedure for copying or moving text is:
X    1)  Mark a REGION using M- at beginning and cursor at end.
X    2)  Delete it (with ^W) or copy it (with M-W) into the KILL buffer.
X    3)  Move the cursor to the desired location and yank it back (with ^Y).
X-----------------------------------------------------------------------
X=>		(8) MODES OF OPERATION
X^X M	Add mode in buffer              M-M    Add global mode
X^X ^M   Delete mode in buffer           M-^M   Delete global mode
XOVER		Replaces (overwrites) rather than inserts characters
XWRAP		Turns on word wrap (automatic carraige return).
XVIEW		Allows viewing file without insertion and deletion.
XCMODE		Automatic indenting for C program entry
XEXACT/MAGIC	Changes how search and replace commands work (see next page)
X-----------------------------------------------------------------------
X=>		(9) SEARCH AND REPLACE MODES
X
XEXACT	Uppper/lower case is not ignored in searches
XMAGIC   Regular pattern matching characters are active
X    .   Matches any one character
X    *   Matches any any number of the preceding character
X    ^   Beginning of line        [ ]   Character class enclosure
X    $   End of line              \     Quote next character
X-----------------------------------------------------------------------
X=>		(10) ON-SCREEN FORMATTING
X
X^X F		Set fill column
XMn-	Set tab spacing to n charecters between tabs stops
XM-Q		Format paragraph so that text lies between margins
X^X =		Position report -- displays line number, char count,
X                                   file size and character under cursor
XM-^C		Count words/lines/chars in marked region
X-----------------------------------------------------------------------
X=>		(11) MULTIPLE WINDOWS
X
XMany WINDOWS may be active at once on the screen.  All windows may show
Xdifferent parts of the same buffer, or each may display a different one.
X^X 2	Split the current window in two	^X O	Change to next window
X^X 0    delete current window           ^X P    Change to previous window
X^X 1	delete all other windows        M-^V    Page down next window
X                                  	M-^Z	Page up other window
X-----------------------------------------------------------------------
X=>		(12) CONTROLLING WINDOWS AND THE SCREEN
X
X^X ^    Enlarge current window   M- ^X W   Resize window to  lines
X^X ^Z   Shrink current window    M- M-S    Change screen to  lines
X^X ^N   Move window down         M- M-T    Change screen to  columns
X^X ^P   Move window up
XM-^L    Reposition window
X^L      Refresh the screen
X-----------------------------------------------------------------------
X=>		(13) MULTIPLE BUFFERS
XA BUFFER is a named area containing a document being edited.  Many buffers
Xmay be activated at once.
X^X B	Switch to another buffer.   = use just-previous buffer
X^X X	Switch to next buffer in buffer list
XM-^N    Change name of current buffer
X^X K	Delete a non-displayed buffer.
X^X ^B	Display buffer directory in a window
X-----------------------------------------------------------------------
X=>		(14) READING FROM DISK
X
X^X ^F	Find file; read into a new buffer created from filename.
X	(This is the usual way to begin editing a new file.)
X^X ^R	Read file into current buffer, erasing its previous contents.
X	No new buffer will be created.
X^X ^I	Insert file into current buffer at cursor's location.
X^X ^V	Find a file to make current in VIEW mode
X-----------------------------------------------------------------------
X=>		(15) SAVING TO DISK
X
X^X ^S	Save current buffer to disk
X^X ^W	Write current buffer to disk
X^X N    Change file name of current buffer
XM-Z	Write out all changed buffers and exit MicroEMACS
X
X
X-----------------------------------------------------------------------
X=>		(16) ACCESSING THE OPERATING SYSTEM
X
X^X !	Send one command to the operating system and return
X^X @	Pipe DOS command results to buffer
X^X #	Filter buffer through DOS filter program
X^X C	Start a new command processor under MicroEMACS
X^X D	Suspend MicroEMACS into the background (UNIX BSD4.2 only)
X^X ^C	Exit MicroEMACS
X-----------------------------------------------------------------------
X=>		(17) KEY BINDINGS AND COMMANDS
X
XM-K	Bind a key to a command        M-A  Describe a class of commands
XM-^K	Unbind a key from a command
X^X ?	Describe command bound to a key
XM-X	Execute a named (and possibly unbound) command
X{Describe-bindings}
X	Display a list of all commands and key bindings to a buffer
X-----------------------------------------------------------------------
X=>		(18) COMMAND EXECUTION
XCommands can be specified as command lines in the form:
X	 {command-name} 
X{Execute-command-line}	execute a typed in command line
X{Execute-buffer}	executes commands lines in a buffer
X{Execute-file}		executes command lines from a file
X{clear-message-line}	clears the message line during execution
X   M-~			clears the change flag for a buffer
X-----------------------------------------------------------------------
X=>		(19) MACRO EXECUTION
X
X^X (	Start recording keyboard macro
X^X )	Stop recording keyboard macro
X^X E	Execute keyboard macro
XM- {store-macro}	Start recording named macro
X      !endm		Stop recording named macro
X{execute-macro-n}	Execute macro n (where n is from 1 to 20)
X-----------------------------------------------------------------------
X=>		(20) SPECIAL KEYS
X
X^G		Cancel current command and return to top level of processing.
X^U or		Universal repeat.  May be followed by an integer (default = 4)
XM-	and repeats the next command that many times.
XM-X		Execute a named (and possibly unbound) command
X
X
FRIDAY_NIGHT
echo extracting - emacs.rc
sed 's/^X//' > emacs.rc << 'FRIDAY_NIGHT'
X;	EMACS.RC:	Standard micro Startup program
X;			for MicroEMACS 3.9d and above
X;			(C)opyright 1987 by Daniel M Lawrence
X;			Last Update: 10/20/87
X
Xset $discmd FALSE
Xwrite-message "[Setting up....]"
X
X; If you screen "SNOWS", uncomment this line
X;	set $flicker "TRUE"
X
X; To use an IBM-PC EGA card, uncomment the following line
X;	set $sres "EGA"
X
X;	***** Rebind the Function key group
X
Xbind-to-key search-forward		FN;
Xbind-to-key search-reverse		FN<
Xbind-to-key hunt-forward		FN=
Xbind-to-key hunt-backward		FN>
Xbind-to-key execute-macro-1		FN?
Xbind-to-key execute-macro-2		FN@
Xbind-to-key next-window			FNA
Xbind-to-key execute-macro-3		FNB
Xbind-to-key save-file			FNC
Xbind-to-key exit-emacs			FND
X
Xbind-to-key execute-macro-10		FNT
Xbind-to-key execute-macro-11		FNU
Xbind-to-key execute-macro-12		FNV
Xbind-to-key execute-macro-13		FNW
Xbind-to-key execute-macro-14		FNX
Xbind-to-key execute-macro-15		FNY
Xbind-to-key execute-macro-16		FNZ
Xbind-to-key execute-macro-17		FN[
Xbind-to-key execute-macro-18		FN\
Xbind-to-key execute-macro-19		FN]
X
X;	Set Default Global modes
X
Xadd-global-mode "blue"
X;bind-to-key meta-prefix `
X
X;	Toggle function key window display
X
X1	store-macro
X	!if %rcfkeys
X		!goto rcfoff
X	!endif
X
X;	toggle function key window on
X	save-window
X	1 next-window
X	!if &sequal $cbufname "emacs.hlp"
X		delete-window
X	!endif
X	!if ¬ &sequal $cbufname "Function Keys"
X		1 split-current-window
X		select-buffer "Function Keys"
X		add-mode "red"
X		!force 5 resize-window
X		1 goto-line
X	!endif
X	set %rcfkeys TRUE
X	!force restore-window
X	!if &sequal $cbufname "Function Keys"
X		next-window
X	!endif
X	write-message "[Function key window ON]"
X	!return
X
X	;Toggle the function key window off
X*rcfoff
X	save-window
X	1 next-window
X	!if &sequal "Function Keys" $cbufname
X		delete-window
X	!endif
X	!force restore-window
X	write-message "[Function key window OFF]"
X	set %rcfkeys FALSE
X!endm
X
X;	Toggle HELP file onscreen
X
X2 store-macro
X	1 next-window
X
X	;Make sure the function key window isn't up!
X	!if &sequal $cbufname "Function Keys"
X		delete-window
X	!endif
X	set %rcfkeys FALSE
X
X	;Bring up page 1
X	!if ¬ &seq $cbufname "emacs.hlp"
X		help
X		8 resize-window
X		add-mode "red"
X		beginning-of-file
X		2 forward-character
X	!endif
X
X*rchelp
X
X	write-message "[PgUp/PgDn] Page    [FN6] EXIT     ^G  Exit leaving page on screen"
X	update-screen
X	set %rctmp >key
X	!if &equ &asc %rctmp 0
X		set %rctmp >key
X		!if &seq %rctmp I
X			beginning-of-line
X			!force search-reverse "=>"
X			1 redraw-display
X			!goto rchelp
X		!endif
X		!if &seq %rctmp Q
X			beginning-of-line
X			2 forward-character
X			!force search-forward "=>"
X			1 redraw-display
X			!goto rchelp
X		!endif
X		!if &seq %rctmp "~@"
X			delete-window
X			!if &seq %rcfkeys TRUE
X				set %rcfkeys FALSE
X				execute-macro-1
X			!endif
X			write-message "[Help Exited]"
X			!return
X		!endif
X	!endif
X	!if &equ &asc %rctmp 7
X		next-window
X		set %rcfkeys FALSE
X		write-message "[Help Aborted]"
X		!return
X	!endif
X	!goto rchelp
X!endm
X
X;	Load a new page
X
X3	store-macro
X	!if &seq &find newpage.cmd ""
X		write-message "[Can not find NEWPAGE.CMD]"
X		!return
X	!endif
X	execute-file newpage.cmd
X!endm
X
X;procedure to clean out the current page (which is nothing right now)
X
Xstore-procedure	clean
X	; nothing by default
X!endm
X
X;	Set up auto CMODE
X
X20	store-macro
X	set %rctmp &sin $cfname "."
X	!if &equ %rctmp 0
X		!return
X	!endif
X	set %rctmp &mid $cfname &add %rctmp 1 5
X	!if &or &seq %rctmp "c" &seq %rctmp "h"
X		add-mode "cmode"
X	!endif
X!endm
Xbind-to-key execute-macro-20	M-FNR
X
X;	bring up the function key window
X
X	1 split-current-window
X	select-buffer "Function Keys"
X	insert-string "f1 search-> f2 <-search [    MicroEMACS:  Text Editor~n"
X	insert-string "f3 hunt->   f4 <-hunt   [ ~n"
X	insert-string "f5 fkeys    f6 help     [  Available function key Pages include:~n"
X	insert-string "f7 nxt wind f8 pg[    ] [    WORD  PROG  BOX~n"
X	insert-string "f9 save     f10 exit    [  [use the f8 key to load Pages]~n"
X	unmark-buffer
X	delete-window
X	set %rcfkeys FALSE
X	execute-macro-1
X	set $discmd TRUE
FRIDAY_NIGHT
echo med.1 completed!
# That's all folks!