Google
 

Trailing-Edge - PDP-10 Archives - mit_emacs_170_teco_1220 - emacs/old-pcl.emacs
There are no other files named old-pcl.emacs in the archive.
!* [PJG] -*-TECO-*- !
!* <EMACS>PCL.EMACS.13, 14-May-82 11:14:35, Edit by GERGELY!
!~FILENAME~:! !Library for editing PCL functions!
PCL
!& Setup PCL Library:! !S Setup the variables!

    0@FO..Q PCL_Setup_Hook[0 fq0"G :M0'
    1,M(M.M &_Get_Library_Pointer)WORDAB"E
	M(M.M Load_Library)WORDAB'
    1@FO..Q Automatic_Capitalization(
	)M.CAutomatic_CapitalizationNonzero,_PCL_abbreviation_Mode_is_activated.
	:I*AAAAAAAAAAAA()(AAAAAAAAAAAAAAAAAAAAAAAAA;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA(A)[AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA(A){A M.V PCL..D
    
!PCL Mode:! !C Set things up for editing PCL code.
Sets up:
	C-M-A,C-M-E		^R Backward/Forward Block
	C-M-S			^R Forward Statement
	C-M-U			^R Make BEGIN-END
        C-M-+			^R Plus increment
        <tab>			^R Indent Nested
	<Rub>			^R Backward Delete Hacking Tabs!

    M(M.M&_Init_Buffer_Locals)
    1,q(1,q. m.Qw)m.Q.    !* Exchange rubout flavors. *!
    1,(M.M ^R_Indent_Nested)  M.Q I
    1,(:I*!_)M.LComment_Start
    1,(:I*;)M.LComment_End
    1,1M.LSpace_Indent_Flag
    1,8M.LComment_Column
    1,M.L Automatic_Capitalization
    QAutomatic_Capitalization M(M.M Capitalize_PCL_Keywords)
    
    m.m^R_Forward_StatementM.Q...S
    m.m^R_Forward_BlockM.Q...E
    m.m^R_Backward_BlockM.Q...A
    M.M^R_Make_BEGIN-ENDM.Q...U
    M.M^R_Plus_incrementM.Q...+
				    !* Set up the delimiter table !
    QPCL_..DM.Q..D
    1M(M.M&_Set_Mode_Line)PCL
!^R Backward Block:! !^R Move backward over one BEGIN/END pair!

	0UD 0U0 .U1 Z-."GC'
	< -:S BEGIN END"E 
	  :i*CNo_Block_BackwardsFSECHODISP
	    0FSECHOACTIVE WBJ 0;'   !* [PJG] If none then abort!
	  1A&137.-E"E QD-1UD '
	    "#QD+1UD QD; ' >
	0
!^R Forward Statement:! !^R Move forward over one PCL statement.
With positive arg, go up one or more levels in BEGIN END nest.
With negative arg, go down one or more levels.!

	!* Comments are COMMENT or exclamation point !

	(:I* ;  "  !  END !*
!		 BEGIN )[S
	FF"E 0' "#-' [D	        !* Levels to go up or down !
	[E .[A
	< :SS"E FG QAJ 0'		!* Search--error if nothing ! 
	  .UE FKC
	  1A-;"E			!* ; !
		QEJ
		QD"E 0 '		!* Quit if at level 0 !
		!<!>'			!* Repeat !
	  1A-42."E C S" !'! !<!> '	!* Quotes !
		:I*Unmatched_Quote FG 0 '	!* Error if not found !
	  ."G 0A"C QEJ R !<!> ' '	!* No preceding delimiter--false alarm!
			!* (Trailing delimiter is part of search string.) !
	  1A&137.-C"E S; !<!> '	!* COMMENT !
	  1A-41."E S; !<!> '		!* Exclamation point !
	  1A&137.-E"E			!* END !
		QD"G FG QAJ 0'	!* Too far--error !
		QD+1UD			!* Up a level !
		QD"G 0'	!* Level 1--Quit and leave cursor before END !
		QEJ R			!* Leave cursor after END !
		!<!> '			!* Repeat !
	  QD-1UD		    !* else BEGIN or START -- down a level !
	  QEJ R				!* Leave cursor after BEGIN !
	  QD"E 0'			!* Quit if at level 0 !
	  >
!^R Forward Block:! !^R Move forward over one BEGIN END pair.
With positive arg, go up one or more levels in BEGIN END nest.
With negative arg, go down one or more levels.!

	!* Comments are COMMENT or exclamation point !

	(:I* "   !  END !*
!	        BEGIN )[S
	FF[X			!* Any arg specified? !
	QX"E 0' "#-' [D	        !* Levels to go up or down !
	[E .[A
	< :SS"E FG QAJ 0'		!* Search--error if nothing ! 
	  .UE FKC
	  1A-42."E C S" !'! !<!> '	!* Quotes !
	  ."G 0A"C QEJ R !<!> ' '	!* No preceding delimiter--false alarm!
			!* (Trailing delimiter is part of search string.) !
	  1A&137.-C"E S; !<!> '	!* COMMENT !
	  1A-41."E S; !<!> '		!* Exclamation point !
	  1A&137.-E"E		!* END !
		QD+1UD			!* Up a level !
		QX*QD"G FG QAJ 0'	!* Too far--error !
		QEJ R			!* Leave cursor after END !
		QD"L !<!> '		!* Repeat if more to go !
		0 ' 		    !* Else quit cause at or above level 0 !
	  QD-1UD		!* else BEGIN or START -- down a level !
	  QEJ R				!* Leave cursor after BEGIN !
	  QD"E 0'			!* Quit if at level 0 !
	  >
!^R Make BEGIN-END:! !^R Create a BEGIN END pair.
Cursor position defines indentation level for this block.
Leave cursor ready to type first statement of the block.!

    .[A				    !* Remember for return !
    0L :FB"L :L 13i10i W-4MI' "# QAJ'
    IBEGIN' 13i10i
    W-4@MI			    !* [PJG] Add in the begin block!
    .(				    !* Come back to here later !
	13i 10i W2MI
	IEND; 13i 10i
	.[Z)J			    !* For return !
	QA,QZ			    !* Return changed region!
!Capitalize PCL Keywords:! !C Turn on capitalization of keywords.
With no argument, the mode is toggled.  Otherwise, a positive argument
turns on the mode and a zero shuts it off.  Uses the WORDAB library and
a file of pre-defined abbreviations which are the keywords.!

    FF"N 0-("'N) uAutomatic_Capitalization '
    "# QAutomatic_Capitalization"'E UAutomatic_Capitalization'
    QAutomatic_Capitalization"E
	0m(m.mWord_Abbrev_Mode)
	'			    !* Turn off wordab library *!
    
    
    1m(m.mWord_Abbrev_Mode)	    !* start it *!
    0@FO..QLast_Word_Abbrev_File"E
	m(m.mRead_Word_Abbrev_File)EMACS:PCL.DEFNS'	    !* get abbrevs *!
    "#[V f[bbind
	GLast_Word_Abbrev_File J
	:FBPCL.DEFNSUV f]bbind
	QV"E
	    m(m.mRead_Word_Abbrev_File)EMACS;PCL_DEFNS'
	'
    				    !* Done *!
!Expand PCL Abbrevs in Region:! !C Expand all WORDAB abbreviations in region.
Assumes WORDAB already loaded.
Comments and strings are skipped, but assumes that it's not started in one.!
 f[vb f[vz :,.ffsBoundw j    !* narrow bounds to region *!
 [..d :g..du..d ^*5:f..D	    !* Make "^" not alphabetic. *!
 [a

    <  f[vz 0ua
	.(:s!_COMMENT"n fsz-.fsvzw :ia;')j
	.(:s""N fsz-.fsvzw 34:ia'!'!)j
	< 1:<fwl>@:;		    !* is there a next word *!
	    m(m.m^R_Abbrev_Expand_Only)  !* ok, go expand it *!
	    >
	zj f]vzW
	qa@; W:sa;
	>
    b zj				    !* set point and mark *!

!^R Plus Increment:! !^R Make PCL stmt to increment the word before the point.
Leaves region around inserted text so it can be killed easily!
    59,0A-59"E '			    !* out if a semi-colon!
    [a WM(M.M^R_Delete_Horizontal_Space)
    <.-B"E' 65,0A"'B; w1R>
    .[2 
    <-FWL .@;			    !* Go back over words until out of full !
	(0A-$ "'E) + (0A-# "'E) + (0A - [ "'E) + (0A-] "'E) ;>  !* variable !
    .,Q2Xa				    !* Put it in reg A !
    Q2J				    !* Jump back to end *! 
    .				    !* Set region around insert!
    I_=_A
    F"G WI_+_W \ WI;'
    "# "L WI_-_W \ WI;'
	"#WI_+_; 1R''
    	    !* Fill out the rest of the stmt!

!*
/ Local Modes: \
/ MM Compile: 1:<M(M.M^R Date Edit)>
M(M.M^R Save File)
M(M.MGenerate Library)PCLPCL
1:<M(M.MDelete File)PCL.COMPRS>W \
/ End: \
!