home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
vol_100
/
197_01
/
emacs.rc
< prev
next >
Wrap
Text File
|
1979-12-31
|
16KB
|
806 lines
; EMACS.RC: Standard micro Startup program
; for MicroEMACS 3.9
; (C)opyright 1987 by Daniel M Lawrence
; Last Update: 07/11/87
set $discmd FALSE
write-message "[Setting up....]"
; If you screen "SNOWS", uncomment this line
; set $flicker "TRUE"
; If you are on an IBM-PC EGA card and want to force the
; screen to EGA mode, uncomment the following line
; set $sres "EGA"
; ***** Rebind the Function key group
bind-to-key search-forward FN;
bind-to-key search-reverse FN<
bind-to-key hunt-forward FN=
bind-to-key hunt-backward FN>
bind-to-key execute-macro-1 FN? ;Toggle Function key window
bind-to-key execute-macro-2 FN@ ;Toggle Help window
bind-to-key execute-macro-3 FNA ;Toggle smooth paging
bind-to-key execute-macro-4 FNB ;Change editor mode
bind-to-key save-file FNC
bind-to-key exit-emacs FND
bind-to-key execute-macro-10 FNT
bind-to-key execute-macro-11 FNU
bind-to-key execute-macro-12 FNV
bind-to-key execute-macro-13 FNW
bind-to-key execute-macro-14 FNX
bind-to-key execute-macro-15 FNY
bind-to-key execute-macro-16 FNZ
bind-to-key execute-macro-17 FN[
bind-to-key execute-macro-18 FN\
bind-to-key execute-macro-19 FN]
; Set Default Global modes
add-global-mode "blue"
; Toggle function key window display
1 store-macro
!if %rcfkeys
!goto rcfoff
!endif
; toggle function key window on
save-window
1 next-window
!if &sequal $cbufname "emacs.hlp"
delete-window
!endif
!if ¬ &sequal $cbufname "Function Keys"
1 split-current-window
select-buffer "Function Keys"
add-mode "red"
!force 5 resize-window
&add × %rcmode 5 1 goto-line
1 redraw-display
!endif
set %rcfkeys TRUE
!force restore-window
!if &sequal $cbufname "Function Keys"
next-window
!endif
write-message "[Function key window ON]"
!return
;Toggle the function key window off
*rcfoff
save-window
1 next-window
!if &sequal "Function Keys" $cbufname
delete-window
!endif
!force restore-window
write-message "[Function key window OFF]"
set %rcfkeys FALSE
!endm
; Toggle HELP file onscreen
2 store-macro
1 next-window
;Make sure the function key window isn't up!
!if &sequal $cbufname "Function Keys"
delete-window
!endif
;Bring up page 1
!if ¬ &seq $cbufname "emacs.hlp"
help
8 resize-window
add-mode "red"
beginning-of-file
2 forward-character
!endif
*rchelp
write-message "[PgUp/PgDn] Page [FN6] EXIT ^G Exit leaving page on screen"
update-screen
set %rctmp >key
!if &equ &asc %rctmp 0
set %rctmp >key
!if &seq %rctmp I
beginning-of-line
!force search-reverse "=>"
1 redraw-display
!goto rchelp
!endif
!if &seq %rctmp Q
beginning-of-line
2 forward-character
!force search-forward "=>"
1 redraw-display
!goto rchelp
!endif
!if &seq %rctmp "~@"
delete-window
!if &seq %rcfkeys TRUE
set %rcfkeys FALSE
execute-macro-1
!endif
write-message "[Help Exited]"
!return
!endif
!endif
!if &equ &asc %rctmp 7
next-window
set %rcfkeys FALSE
write-message "[Help Aborted]"
!return
!endif
!goto rchelp
!endm
; toggle smooth paging mode
3 store-macro
set $discmd FALSE
!if %rcspage
set %rcspage FALSE
set %rctmp "OFF"
bind-to-key previous-line FNH
bind-to-key next-line FNP
!else
set %rcspage TRUE
set %rctmp "ON "
bind-to-key execute-macro-5 FNH
bind-to-key execute-macro-6 FNP
!endif
set %cbuf $cbufname
set %cline $cwline
select-buffer "Function Keys"
set %rcline 4
!while &less %rcline 15
%rcline goto-line
10 forward-character
3 delete-next-character
insert-string %rctmp
set %rcline &add %rcline 5
!endwhile
unmark-buffer
select-buffer %cbuf
%cline redraw-display
set $discmd TRUE
write-message &cat &cat "[Smooth Paging " %rctmp "]"
!endm
; Change editor mode
4 store-macro
set %rcmode &add %rcmode 1
!if &equ %rcmode 3
set %rcmode 0
!endif
!if %rcfkeys
save-window
1 next-window
!if &seq $cbufname "Function Keys"
add-mode "red"
!force 5 resize-window
&add × %rcmode 5 1 goto-line
1 redraw-display
!endif
restore-window
!if &sequal $cbufname "Function Keys"
next-window
!endif
!endif
!if &equ %rcmode 0
write-message "[Program MODE]"
!else
!if &equ %rcmode 1
write-message "[Wordprocessing MODE]"
!else
write-message "[Block MODE]"
!endif
!endif
!endm
5 store-macro
set %cc $target
!if &equ $cwline 1
move-window-up
!endif
set $target %cc
previous-line
!endm
6 store-macro
set %cc $target
!if &equ $cwline $wline
move-window-down
!endif
set $target %cc
next-line
!endm
; Switch Shift-Function Key 1
10 store-macro
!if &equ %rcmode 0
run rcdvar
!return
!endif
!if &equ %rcmode 1
end-of-line
set %rctmp $curcol
beginning-of-line
&div &sub $fillcol %rctmp 2 insert-space
beginning-of-line
!return
!endif
!if &equ %rcmode 2
!if &equ %rcltype 1
set %rcltype 2
set %rctmp "DOUBLE"
!else
set %rcltype 1
set %rctmp "SINGLE"
!endif
set %cbuf $cbufname
set %cline $cwline
select-buffer "Function Keys"
beginning-of-file
11 goto-line
47 forward-character
6 delete-next-character
insert-string %rctmp
unmark-buffer
select-buffer %cbuf
%cline redraw-display
!return
!endif
!endm
; Switch Shift-Function Key 2
11 store-macro
!if &equ %rcmode 0
run showexp
!return
!endif
!if &equ %rcmode 1
nop
!return
!endif
!if &equ %rcmode 2
set %bkcopy FALSE
run getblock
write-message "[Block deleted]"
!return
!endif
!endm
; Switch Shift-Function Key 3
12 store-macro
!if &equ %rcmode 0
next-window
!return
!endif
!if &equ %rcmode 1
fill-paragraph
!return
!endif
!if &equ %rcmode 2
!if ¬ %rcbox
run loadbox
!endif
run box2
!return
!endif
!endm
; Switch Shift-Function Key 4
13 store-macro
!if &equ %rcmode 0
set $debug FALSE
run tdebug
!return
!endif
!if &equ %rcmode 1
set %rctmp @"User dictionary(<ret> if none): "
!if &seq %rctmp "ERROR"
!return
!endif
!if ¬ &seq %rctmp ""
set %rctmp &cat &cat "-u" %rctmp " "
!endif
save-file
set %rcspell TRUE
write-message ~n
shell-command &cat &cat "spell " %rctmp $cfname
execute-file "scan.cmd"
delete-other-windows
!if &seq %rcfkeys TRUE
set %rcfkeys FALSE
execute-macro-1
!endif
update-screen
write-message "[Spell Check complete]"
!return
!endif
!if &equ %rcmode 2
set %bkcopy TRUE
run getblock
write-message "[Block copied]"
!return
!endif
!endm
; Switch Shift-Function Key 5
14 store-macro
!if &equ %rcmode 0
execute-buffer @"Buffer to Execute: "
!return
!endif
!if &equ %rcmode 1
run refin
!return
!endif
!if &equ %rcmode 2
!if ¬ %rcbox
run loadbox
!endif
!if &equ %rcltype 1
run line1
!else
run line2
!endif
!return
!endif
!endm
; Switch Shift-Function Key 6
15 store-macro
!if &equ %rcmode 0
execute-macro
!return
!endif
!if &equ %rcmode 1
write-message "[MicroSCRIBE not ready]"
!return
!endif
!if &equ %rcmode 2
set %bkcopy TRUE
run putblock
!return
!endif
!endm
; Switch Shift-Function Key 7
16 store-macro
!if &equ %rcmode 0
run rcindent
!return
!endif
!if &equ %rcmode 1
run rcswap
!return
!endif
!if &equ %rcmode 2
!if ¬ %rcbox
run loadbox
!endif
run blank
!return
!endif
!endm
; Switch Shift-Function Key 8
17 store-macro
!if &equ %rcmode 0
run rcundent
!return
!endif
!if &equ %rcmode 1
write-message "[MicroSCRIBE not ready]"
!return
!endif
!if &equ %rcmode 2
set %bkcopy FALSE
run putblock
!return
!endif
!endm
; Switch Shift-Function Key 9
18 store-macro
!if &equ %rcmode 0
shell-command @"DOS command: "
write-message "[Press any key to reenter MicroEMACS...]"
set %rctmp >key
!return
!endif
!if &equ %rcmode 1
count-words
!return
!endif
!if &equ %rcmode 2
nop
!return
!endif
!endm
; Switch Shift-Function Key 10
19 store-macro
!if &equ %rcmode 0
i-shell
!return
!endif
!if &equ %rcmode 1
write-message "[MicroSCRIBE not ready]"
!return
!endif
!if &equ %rcmode 2
nop
!return
!endif
!endm
; Load up the box macros....(pretty big...)
store-procedure loadbox
execute-file "boxmac.cmd"
set %rcbox TRUE
!endm
; display a variable
store-procedure rcdvar
set %rcdebug $debug
set $debug FALSE
set %rctmp @&cat &cat "Variable to display[" %rcvar "]: "
!if ¬ &seq %rctmp ""
set %rcvar %rctmp
!endif
write-message &cat &cat &cat %rcvar " = [" &ind %rcvar "]"
set $debug %rcdebug
!endm
; Toggle debug mode
store-procedure tdebug
set %cbuf $cbufname
set %cline $cwline
select-buffer "Function Keys"
beginning-of-file
next-line
75 forward-character
set %rcdebug &equ $curchar 70
delete-previous-character
2 delete-next-character
!if %rcdebug
insert-string "ON "
!else
insert-string "OFF"
!endif
unmark-buffer
select-buffer %cbuf
%cline redraw-display
write-message &cat &cat "[Debug Mode " %rcdebug "]"
set $debug %rcdebug
!endm
; evaluate expresion
store-procedure showexp
delete-buffer "[temp]"
set %rcbuf $cbufname
set %cline $cwline
select-buffer "[temp]"
insert-string "set %rcval "
!force insert-string @"EXP: "
execute-buffer "[temp]"
unmark-buffer
select-buffer %rcbuf
delete-buffer "[temp]"
%cline redraw-display
write-message &cat &cat "Value = [" %rcval "]"
!endm
; indent region
store-procedure rcindent
write-message "[Indenting region]"
set %endline $curline
set %endpos $cwline
exchange-point-and-mark
set $discmd FALSE
set-mark
set $discmd TRUE
!while &gre %endline $curline
beginning-of-line
handle-tab
next-line
!endwhile
beginning-of-line
set $cwline %endpos
write-message "[Region indented]"
!endm
; undent region
store-procedure rcundent
write-message "[Undenting region]"
set %endline $curline
set %endpos $cwline
exchange-point-and-mark
set $discmd FALSE
set-mark
set $discmd TRUE
!while &gre %endline $curline
beginning-of-line
!if &gre $lwidth 0
delete-next-character
!endif
next-line
!endwhile
beginning-of-line
set $cwline %endpos
write-message "[Region undented]"
!endm
; reformat indented paragraph
store-procedure refin
write-message " [Fixing paragraph]"
set %endline $curline
set $discmd "FALSE"
kill-region
2 split-current-window
select-buffer "[temp]"
yank
end-of-file
set %endline $curline
beginning-of-file
!while &gre %endline $curline
beginning-of-line
!if &gre $lwidth 0
delete-next-character
!endif
next-line
!endwhile
&sub $fillcol 8 set-fill-column
1 goto-line
fill-paragraph
&add $fillcol 8 set-fill-column
end-of-file
set %endline $curline
beginning-of-file
!while &gre %endline $curline
beginning-of-line
handle-tab
next-line
!endwhile
beginning-of-file
set-mark
end-of-file
kill-region
unmark-buffer
delete-window
yank
delete-buffer "[temp]"
set $cwline %endpos
set $discmd "TRUE"
write-message " [Fixed paragraph]"
!endm
; swap the word the cursor is on and it's predisesor
store-procedure rcswap
set %rctmp $search
forward-character
previous-word
0 delete-next-word
set %second $kill
insert-string "~~"
!force previous-word
!if &seq $status FALSE
set %first %second
!else
0 delete-next-word
set %first $kill
insert-string %second
!endif
search-forward "~~"
delete-previous-character
insert-string %first
previous-word
set $search %rctmp
!endm
; delete a rectangular block of text
store-procedure getblock
;set up needed variables
set $discmd FALSE
delete-buffer "[block]"
set %rcbuf $cbufname
set %cline $cwline
;save block boundries
set %endpos $curcol
set %endline $curline
exchange-point-and-mark
set %begpos $curcol
set %begline $curline
set %blwidth &sub %endpos %begpos
;detab the region
&add &sub %endline %begline 1 detab-line
;scan through the block
set $curline %begline
!while &less $curline &add %endline 1
;grab the part of this line needed
!force set $curcol %begpos
set-mark
!force set $curcol %endpos
kill-region
;bring it back if this is just a copy
!if %bkcopy
yank
!endif
;put the line in the block buffer
select-buffer "[block]"
yank
;and pad it if needed
!if &less $curcol %blwidth
&sub %blwidth $curcol insert-space
end-of-line
!endif
forward-character
;onward...
select-buffer %rcbuf
next-line
!endwhile
;unmark the block
select-buffer "[block]"
unmark-buffer
select-buffer %rcbuf
previous-line
%cline redraw-display
set $discmd TRUE
!endm
; insert/overlay a rectangular block of text
store-procedure putblock
;set up needed variables
set $discmd FALSE
set %rcbuf $cbufname
set %cline $cwline
;save block boundries
set %begpos $curcol
set %begline $curline
;scan through the block
select-buffer "[block]"
beginning-of-file
set %endpos &add %begpos $lwidth
!while ¬ &equ $lwidth 0
;pad the destination if it is needed
select-buffer %rcbuf
beginning-of-line
!if ¬ &equ $lwidth 0
detab-line
previous-line
!endif
!force set $curcol %begpos
!if &less $curcol %begpos
&sub %begpos $curcol insert-space
end-of-line
!endif
;delete some stuff if this should overlay
!if %bkcopy
set-mark
!force set $curcol %endpos
kill-region
!endif
;grab the line from the block buffer
select-buffer "[block]"
beginning-of-line
set-mark
end-of-line
copy-region
forward-character
;put the line in the destination position
select-buffer %rcbuf
yank
next-line
;onward...
select-buffer "[block]"
!endwhile
select-buffer %rcbuf
set $curline %begline
set $curcol %begpos
%cline redraw-display
set $discmd TRUE
!endm
; Set up auto CMODE
20 store-macro
set %rctmp &sin $cfname "."
!if &equ %rctmp 0
!return
!endif
set %rctmp &mid $cfname &add %rctmp 1 5
!if &or &seq %rctmp "c" &seq %rctmp "h"
add-mode "cmode"
!endif
!endm
bind-to-key execute-macro-20 M-FNR
; bring up the function key window
1 split-current-window
select-buffer "Function Keys"
insert-string "f1 search->> f2 <<-search █ F1 display variable F2 eval expression~n"
insert-string "f3 hunt->> f4 <<-hunt █ F3 next window F4 Debug mode [OFF]~n"
insert-string "f5 Fkeys [ON ] f6 Help [OFF] █ F5 execute buffer F6 execute macro~n"
insert-string "f7 Spage [OFF] f8 Mode [PROG ] █ F7 indent region F8 undent region~n"
insert-string "f9 save file f10 exit emacs █ F9 execute DOS command F10 shell to DOS~n"
insert-string "f1 search->> f2 <<-search █ F1 center line~n"
insert-string "f3 hunt->> f4 <<-hunt █ F3 reformat paragraph F4 spell check file~n"
insert-string "f5 Fkeys [ON ] f6 Help [OFF] █ F5 ref indented paragraph F6 PREVIEW output~n"
insert-string "f7 Spage [OFF] f8 Mode [WORD ] █ F7 toggle words F8 output DRAFT~n"
insert-string "f9 save file f10 exit emacs █ F9 count words F10 output FINAL~n"
insert-string "f1 search->> f2 <<-search █ F1 Line type [DOUBLE] F2 kill block~n"
insert-string "f3 hunt->> f4 <<-hunt █ F3 draw box F4 copy block~n"
insert-string "f5 Fkeys [ON ] f6 Help [OFF] █ F5 insert line F6 yank block~n"
insert-string "f7 Spage [OFF] f8 Mode [BLOCK] █ F7 insert space F8 insert block~n"
insert-string "f9 save file f10 exit emacs █ ~n"
unmark-buffer
delete-window
; Initialize things.....
set %rcbox FALSE
set %rcmode 0
set %rcfkeys FALSE
set %rcvar ""
set %rcltype 2
execute-macro-1
set $discmd TRUE