1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-04 07:43:02 +00:00

Rebuild essential EMACS libraries using EINIT.

This commit is contained in:
Lars Brinkhoff
2016-12-01 10:34:22 +01:00
committed by Eric Swenson
parent a0bc219950
commit 6196423833
22 changed files with 2218 additions and 1 deletions

BIN
src/emacs1/^rbase.374 Executable file

Binary file not shown.

BIN
src/emacs1/buffer.207 Executable file

Binary file not shown.

BIN
src/emacs1/ccl.196 Executable file

Binary file not shown.

414
src/emacs1/crl.208 Executable file
View File

@@ -0,0 +1,414 @@
!* -*-TECO-*-!
!^R Extended Command:! !^R Read an extended command from the terminal with completion.
This command reads the name of a function, with completion,
followed by the string arguments for the function. Then the
function is called. Completion is done as the function name is typed
(for more information type the HELP key while entering the name).
Follow the function name with a  and then the arguments; end with <cr>.
For customization info see the source code.!
!* Internals:
Uses & Read Command Name and & Read Line to echo at bottom of screen.
If the variable Read Command Prompt exists it specifies the prompt string;
otherwise "MM " is used. A numeric argument is passed along to the M-X
command. The command string is saved on the minibuffer ring
so that ^R Re-execute Mini will redo it, and ^R Execute Mini
with argument will get it back for editing.!
fsQPPtr[7 !* Save PDL ptr so cleanup before execute!
[0[1[2[5[6 !* save regs!
:i0 ff"n !* 0: Start with null string!
ff&1"N :\u0' !* 0: Post-comma argument!
ff&2"N :\u1 :i01,0' !* 0: Pre-comma arg too!
:i00_' !* 0: Argument(s) and space!
:i*M-X_fo..qRead_Command_Promptu2 !* get prompt string in q2!
:i1
< 4,q1m(m.m&_Read_Command_Name)02u1u6
fq1-1"l ' !* if empty arg or rubbed out then return!
q6&2"n :i6 1;' !* ended with CR, make null arglist.!
@:i*| :ft m(m.mDescribe)1 |f[HelpMac
!* set help macro to do describe!
q6"n @ft' !* If command name already printed, add Altmode.!
1#q6&1,m(m.m&_Read_Line)021u6 !* read arguments!
-1fsQPUnwind !* restore help macro!
fq6; !* exit unless empty or rubbed out!
> !* keep trying!
:i10M(M.M_1)6 !* Stick <n>MM ...  around typed command!
f1:"l !* If there is a ^] in the string,!
1fo..qQuote_Execute_Command"n !* user want ^] quoting?!
f[BBind g1 !* yes!
j <:s; i> !* replace each one by two of them.!
hx1 f]BBind''
f=(q:.n(0)f"e w :i*')1"n !* If this command not same as previous command,!
q.n[..o zj -5d !* push this command onto ring buffer of!
j 5,0i ]..o !* minibuffer commands.!
q1u:.n(0)' !* made room, now store it!
:m( q1(q7fs qp unwind)) !* Now execute command after restoring outer environment.!
!^R Instant Extended Command:! !^R Run extended command; let it read its own arguments.
This command is the same as ^R Extended Command except that
it does not read any string arguments; the function itself does so.
This allows special processing such as completion to be done
on arguments which are function names or filenames.!
!*
Internals:
Uses & Read Command Name to echo at bottom of screen.
If the variable Instant Command Prompt exists it specifies the prompt string;
otherwise "C-M-X " is used. A numeric argument is passed along to the MM
command.!
fsQPPtr[7 [0[1 !* Save PDL ptr so cleanup before execute!
:i0 ff"n !* 0: Start with null string!
ff&1"N :\u0' !* 0: Post-comma argument!
ff&2"N :\u1 :i01,0' !* 0: Pre-comma arg too!
:i00_' !* 0: Argument(s) and space!
:i*C-M-X_fo..qInstant_Command_Promptu1 !* get prompt string in q1!
9,f 01u1
fq1:"g 0' !* if empty arg or rubbed out then return!
f:m(m.m1(q7fsQPUnwind)) !* Goto MM command!
!& Read Command Name:! !S Read in an command name, with completion.
Rubout, ^D, ^U and ^L perform editing. Space, Altmode, and Tab do completion.
? lists choices.
Takes a prompt-string as a following string argument.
A numeric argument is the initial contents of the string to be accumulated.
A pre-comma arg containing the "4" bit means don't wait for a confirming CR;
the "2" bit means complete over the symbol table in CRL List using the prefix
string in CRL Prefix. The "8" bit is deliberately ignored.
The "16" bit permits names that don't match.
The "32" bit means CR is allowed with an empty name.
The F^K command with the "8" bit set in its precomma arg
calls & Read Command Name, passing along its arguments.
Two values are returned, the second being the completed string
(or 0 if exit was due to over-rubout).
The first is bit-decoded; 1 means we displayed the string,
2 means the terminating character was Return, 4 means we terminated
without doing completion so the string might not match any alternative.
See Source code for more info.!
!* If the 16 bit is set in the pre-comma arg, then names
which don't match are permitted. How to specify one is
controlled by the value of CRL Non-Match Method:
2 bit: CR will terminate without performing completion
4 bit: LF will terminate without performing completion
8 bit: if user types CR and completion is not possible,
typing another CR will terminate without performing completion
(this overrides the presence of the 2 bit); also, typing
C-CR will terminate without performing completion (if your
terminal cannot generate the 9-bit character set, then you
may want to set the 4 bit also, so the you can use LF)
The default value is 2. (A value of 1 will prohibit non-matches
in ALL cases.)
CRL Name Lister can (if not zero) contain a function for use
in assembling the list of matching items, for "?".
This function is used as follows:
(1) For each name to display, the function is called with no
pre-comma arg, and a post-comma arg which is an index into CRL
List (which can be found in Q.1). The function should insert
information about that name into the buffer beginning at
point, and include a CRLF at the end.
(2) The function is called with a pre-comma arg of 1, with the
buffer containing all the names. The entire buffer will be
displayed after the function returns. (Some things it can do:
sort the names, insert a heading, etc.)
If the variable CRL Name Type is nonzero, it should contain
a string such as "buffer" which fits in the slot:
"You are entering a <name type> name..."
It is used in help messages.
If the variable CRL Help is nonzero, it is printed
after the regular help message is given.
*!
[0[1[2[3[4[5[6[7 !* save regs!
1F[^P CASE !* Ignore case when sorting!
:I6 !* Read prompt string argument!
0[8 !* Q8 is nonzero if we are echoing.!
0[9 !* Q9 is nonzero => type altmode after completed name.!
q..q[.1 :i*MM_[.2 !* Q.1 and Q.2 for normal case of MM-command completion --!
!* use standard symbol table and "MM " prefix to select!
!* only the MM-variables.!
0[.0 !* Q.0 contains whether and how to allow non-matches.!
&20."n 2fo..Q CRL_Non-match_Methodu.0
q.0&8 "n q.0&777777777775.u.0 ''
&2"n qCRL_Listu.1 !* Q.1 has the symbol table to complete over.!
0fo..qCRL_Prefixu.2 !* Q.2 has the prefix string -- only variables starting!
q.2"e :i.2'' !* with that are considered, and the returned name does!
!* not include the prefix string.!
0[.3 !* Q.3 = number of chars not to erase & reprint!
!* when completion occurs (already complete & verified)!
0[.4 !* Number of chars of name printed.!
0f[HelpMacro !* Help character should be seen be FI!
f[BBind fq()"g g()' !* Make temp buffer to accumulate command name in.!
q..ou5
o Read
!Redisp!
1u8
:i*CfsEchoDis !* Clear echo area!
fs rgetty"e @ft
'
@ft6 @ht !* Retype prompt string and input!
zu.4
o Read
!BarfCR! !* Here if cannot complete and user!
!* typed CR!
fg !* Type bell.!
fs rgetty"n @ft_' !* Force cursor back to echo area on ITS.!
q8"n @ft' !* type altmode to inform user!
Q.0&8 "N !* if 8-bit of CRL Non-Match Method is set!
:FI-î "E FIW !* and user types another CR,!
q8 "N @FT
'
q8+6,(hx*) '' !* returns with what user typed!
o Redisp !* otherwise flush altmode!
!Barf! !* Here if tried to complete and no match!
fg !* and that is not allowed. Type bell.!
fs rgetty"n @ft_' !* Force cursor back to echo area on ITS.!
o Read
!Changed! !* Come here when completion augments the string.!
q8"n !* If we have started printing,!
fs rgetty"n
q.4-q.3< :i*X fs echo dis > !* Reprint any chars that weren'r verified!
q.3,z@t' !* and print new ones.!
"# q.4,z@t' !* On printing tty, just print new ones.!
zu.4'
zu.3 !* All chars we have are verified, even if not printed.!
!* If name is fully complete, think about exiting.!
q9"n &4"n !* If pre-comma arg has the 4 bit, return completed name.!
q8,q3'
q8"n @ft 0u9 !* If waiting for CR with completed string, type an!
:fi-13"n o Redisp''' !* altmode, but if next char isn't cr, flush the Alt.!
!Read!
q8"e 0:"e o Redisp''
@:fiu0 q0-4110."e oHELP' !* Handle HELP!
q0-(200.+î) "e fiw !* Handle C-CR!
q.0&8 "n !* return immediately!
q8 "n @FT !* echo return!
 '
q8+4,(HX*)''
fiu0
q0-32"e ."e o Read'' !* Ignore initial spaces.!
q0f Š_? "l !* Not a special character!
q0-
"e Q.0&4 "n !* LF typed so return immediately!
q8+4,(HX*) ''
q0-"e fiu0' !*  quotes the next character!
q0i !* Add char to buffer.!
q8"n fs^RMode"n -1@t %.4 '' !* Echo if in ^R mode!
oRead' !* back for more!
q0-"e !* Turn ^R into ^ and R.!
i^ R
q8"n fs ^RMode"n -2@t %.4 %.4''
oRead'
q0-177."e !* Rubout?!
q8"e q0fsReRead oRedisp'
z"e q8,0 ' !* Rubout when string empty returns 0.!
zj 0au0 -d !* Put char being rubbed in Q0, and remove from buffer.!
fsrgetty"e @ft0 ' !* Type character if cannot erase!
"# q0-40."l oRedisp' !* Erase if possible!
:i*X fs echodis
Q.4-1u.4
q.4-q.3"l q.4u.3'
oRead''
q0- "e oRedisp' !* ^L redisplays the current string!
q0f:"l hk 0u.3 oRedisp' !* ^D and ^U flush input and reprompt.!
q0-?"e !* Help requested?!
&2"e !* Completing over MM-commands, so load BARE.!
f=(0,2:g5)^R"e !* Must do it befor the F[BBIND.!
m(m.m &_Load_Bare)''
f[BBind :ft !* Get buffer to mess with!
&2"e !* Completing over MM-commands, so look thru libraries.!
fs :ej page*5120+400000000000.u7 !* ptr to 1st file!
< fq7:;
g(q7m.m~DIRECTORY~) !* get directory for file!
q7+4+fq7u7 !* ptr to next file!
>
j .u3 i

< 2r :s
5; 0l q3,.k l !* save command name!
.-z; .u3 0:l
> q3,zk' !* Done mapping down library space.!
!* Now pick out possibles from the symbol table.!
:fo.1.25,0fu3 !* Q3: index to first match in symbol table.!
:fo.1.25,0fu4 !* Q4: index to last match in symbol table.!
q4-q3/q:.1(0) < !* iterate over all matches in symbol table.!
0fo..q CRL_Name_Listeru7
q7"n q3m7' !* Either call user's routine!
"# !* or do the standard thing.!
q:.1(q3)u7 !* Q7: Matching symbol name!
fq.2,fq7g7 i
 ' !* insert variable name!
q3+q:.1(0)u3 !* next match in symbol table!
>
j
&2"e < :s~; 0lk>' !* Don't mention functions with ~ in their names.!
0fo..q CRL_Name_Listeru7
q7"n 1,m7' !* Either call user's routine!
"#
  l   !* or sort list,!
j < .-z; x1 l < .-z; 1f=1"N 1;' k > > !* remove duplicates!
'
ft Here_are_the_possible_completions_of_what_you_have_typed:

ht 0fsflushedw f]BBind !* Type the matching commands!
0u..h f oRedisp'
!*** Character typed is space or altmode or CR.!
!Retry!
q0-î"e !* if CR, see if we should return without!
!* doing completion. return if...!
(Q.0&2"'n)( !* 2-bit of CRL Non-Match Method is set or...!
)  ((z"'e)&(&40."'n)) "n !* empty name and 32-bit of arg is set!
q8"n @FT
 '
Q8+6,(HX*) ''
&2"e z-1"e 0a:fcfLVKEIW:"l !* Hack one-letter abbreviations if want MM-name.!
h@fc
f~5L"e i ist_'
f~5V"e i iew_'
f~5K"e i ill_'
f~5E"e i dit_'
f~5I"e i nsert_'
f~5W"e i hat_'
o Changed''' !* Done hacking one-letter abbreviations.!
:i3 :i4 !* Q3 has the largest thing we abbreviate!
!* Q4 has the smallest!
:fo.1.25,0fu1 !* get offset of the smallest symbol!
fq.1/5-q1"g q:.1(q1)u2 !* whose name we abbreviate!
f~2.2,0f-fq.2"g fq.2,fq2:g2u4'' !* and use it as smallest!
:fo.1.25,0fu1 !* get offset of the largest symbol!
q1-1"g q:.1(q1-q:.1(0))u2 !* whose name we abbreviate!
f~2.2,0f-fq.2"g fq.2,fq2:g2u3'' !* and use as largest!
&2"e !* Now map down library space if we want an MM-command.!
f=(0,2:g5)^R"e !* If name starts with ^R, make built-in functions avail.!
m(m.m &_Load_Bare)'
fs :ej page*5120+400000000000.u7 !* ptr to 1st file!
f[BBind !* get temp. buffer to do G's into!
< fq7:; !* exit if no more files!
q7+8+fq(q7+4)u2 !* ptr to FO table of file!
:fo25,0f*5u1
fq2-q1"g
q1,q1+5g2 !* If smallest thing we abbreviate in this file!
.-5fsword+q2u1 !* is smaller than smallest so far, it is new smallest!
f~14"l q1u4''
:fo25,0f*5u1
q1-14"g
q1-10,q1-5g2 !* Same for largest thing we abbreviate in this file!
.-5fsword+q2u1
f~13"g q1u3''
hk q7+4+fq7u7 !* ptr to next file!
> f]BBind'
f~34u1 !* get no. of chars of A and B that match!
q1"l !* if smallest > largest then no match.!
(&20."'e)(q0-32"'n) "n
q0-î "E o BarfCR' "# o Barf ''
:i7 q7u2' !* but that is ok if non-match ok!
!* and user typed a space!
"# q3u7 q1"n 0,q1-1:g3u7' !* q7 gets common initial segment of q3 and q4.!
z,fq7:g7u2' !* Q2 gets that, minus the chars we already have.!
q0-î"e fq4-fq7"e q4u3 0u1'' !* CR: if smallest is initial seg of biggest,!
!* regard it as a full completion.!
q0-32"e !* Space: complete only the first word.!
fq2"e q1"n !* if not exact match, but no completion possible,!
0,0a-32"e oBarf' !* barf if second space in a row.!
32i q8"n @ft_ %.4' oRead'' !* but allow one space to be forced in.!
32f2+1u2 q2"g !* Space and completion is possible: stop!
0,z+q2:g7u7'' !* at first space.!
"# fq2"e q1"n
fq4-z"n !* Not space and ambiguous => barf unless exact match.!
q0-î "e oBarfCR'
"# oBarf''
q4u3''' !* Exact match => regard as fully completed.!
f~34"e fq3-fq7"e !* Entire name has been completed.!
q0-î"e q8"n @ft
' 2+q8,(:i*3)' !* If char typed is CR, return completed name.!
!* Copy the name, in case it comes from BARE.!
1u9'' !* Otherwise, say name is complete.!
hkg7 o Changed !* Stick in completed text, maybe redisplay, continue.!
!HELP!
fiw :ftYou_are_typing_in_
&2"e ftthe_name_of_an_EMACS_extended_command !* Normal MM-name completion.!
:i7_command'
"# 0fo..q CRL_Name_Typeu7 !* Completion over some arbitrary list.!
fq7"g :I7_7 '
"# :I7 '
ft a7_name '
ft.
Use_Rubout_to_delete_previous_characters;_use__to_delete_the_whole_thing.
Typing_Space_or_Altmode_causes_as_much_of_the_name_as_possible_to_be
filled_in_for_you_(this_is_called_completion).
Type_?_to_list_all_the7_names_which_match_what_you_have_typed.
&6-4"e ft !* no CR required and completing!
!* over command names; assume that!
!* this was called from M-X!
If_completion_fills_in_the_entire7_name_an_Altmode_()_appears.
__You_can_then_start_typing_the_arguments_to_the_command.
__Terminate_them_with_a_Return.__If_there_are_no_arguments,
__you_can_use_just_Return_after_a_sufficient_abbreviation.'
"# ft
If_completion_fills_in_the_entire7_name,_
&4"e !* CR required!
ft an_Altmode_()_appears. '
"# !* no CR required!
ft it_will_be_chosen. '
Q.0&2"e ft !* CR completes!
Typing_Return_will_complete_the7_name_and_terminate.
&40."n ft !* also null entry allowed!
__You_may_also_type_Return_if_there_are_no_other_characters,
__to_enter_a_null7_name ''
Q.0&8 "n ft !* 2 CR's does complete!
If_completion_is_not_possible_after_typing_Return,_typing_a_second
Return_will_terminate_the7_name,_without_completion. (An_altmode
will_appear_after_you_type_the_first_Return,_as_a_reminder.) '
"# ft !* CR doesn't complete!
Typing_Return_will_terminate_the7_name,_without_completion. '
Q.0&4 "n ft !* LF doesn't complete!
Typing_Linefeed_will_terminate_the7_name,_without_completion. '
0fo..q CRL_HelpU7 !* more help info!
q7"n FT
7 ''
FT


BIN
src/emacs1/doc.160 Executable file

Binary file not shown.

BIN
src/emacs1/einit.272 Executable file

Binary file not shown.

BIN
src/emacs1/files.434 Executable file

Binary file not shown.

BIN
src/emacs1/indent.238 Executable file

Binary file not shown.

232
src/emacs1/isearc.74 Executable file
View File

@@ -0,0 +1,232 @@
!* -*-TECO-*-!
!^R Incremental Search:! !^R Search for character string as you type it.
C-Q quotes special characters. Rubout cancels last character.
C-S repeats the search, forward, and C-R repeats it backward.
C-R or C-S with search string empty changes the direction of search
or brings back search string from previous search.
Altmode exits the search; with search string empty
it switches to non-incremental ^R String Search.
Other Control and Meta chars exit the search and then are executed.
If not all the input string can be found, the rest is not discarded.
You can rub it out, discard it all with C-G, exit,
or use C-R or C-S to search the other way.
Quitting a successful search aborts the search and moves point back;
quitting a failing search just discards whatever input wasn't found.
On printing terminals, C-L types line found but doesn't exit the search.!
[D !* QD is direction and # times to search.!
0[L !* QL > 0 iff failed to find current search string,!
10.[R !* QR is state register: !
!* 40. => ^R or ^S repeating search or gobbling default.!
!* 10. => just starting.!
!* 4 => printing char just read.!
!* 2 => rubout just done wants full redisplay.!
!* 1 => rubout just done.!
[Q @:iQ` !* MQ pushes current info: ., qL, q2, q0, qD.!
q4+1*5-fq3"e !* We are going to push in q3, so make sure space exists.!
q3[..o zj
200,0i ]..o'
.u:3(%4) !* Push point, search string,!
qLu:3(%4)
q2u:3(%4)
q0u:3(%4) !* this character, and current direction of search.!
qDu:3(%4)
`
[T
fs tyi sourc"e
@:iT` !* MT updates the echo area.!
Q9-Q.9"N 2[R' Q9U.9 !* Q9 holds prompt for echo area. Redisplay if changed.!
fs rgetty"n 2&qR"n !* If we need to redisplay the whole thing,!
qc fs echo dis !* home up and clear line first,!
@ft 9:_ q2u8'' !* then type the prompt and decide to retype whole string.!
@ft 8 :i8  !* Update displayed search string.!
` '
"# :iT' !* Don't display if inside a macro.!
[C :IC TL !* QC has string to home up in echo area and clear line.!
[0 !* Q0 holds type-in character being processed.!
[2 :i2 !* Q2 holds accumulated search string.!
[8 :i8 !* Q8 has accumulated stuff to type in echo area.!
[9 !* Q9 has [Failing ][Reverse ]Search for echo area.!
0[.9 !* Q.9 has last value of Q9 actually displayed.!
1fo..qSearch_Exit_Option !* QE nonzero => random control chars exit.!
200fs q vector [3 !* Q3 holds stack for partial search strings.!
-1[4 !* Q4 is stack pointer.!
[5 !* Q5 is random temp.!
.[P !* QP has old point (to maybe push at end).!
[S :IS M.M&_Isearch_RuboutUS :MS !* QS has & Isearch Rubout (autoloading)!
:I* M(M.M&_Isearch_Help) F[Help Mac
1f[noquit
[6 [7 !* Q6 and Q7 are the success and failure echo strings.!
qD"g :i6I-Search :i7Failing_I-Search'
qD"l :i6Reverse_I-Search :i7Failing_Reverse_I-Search'
q6u9 !* Search starts out successful.!
0[I !* QI is nonzero when we are reading input.!
fs rgetty"e
fs tyi sourc"e @ft _S:_' !* On printing tty, start typing out.!
1fstypeo''
!Restart!
1:< 1uI -2f[noquit !* Set up an errset to catch quits.!
< qL"e q6' "# q7'u9 q9-q.9"n mt' !* Display direction and status in echo area.!
0@V 1uI :fiu0 0uI @fiu5
q5fs^r indir-qSearch_Exit_Char"e fq2:@;
!<! 0;> 0fsnoquitw qD:m(m.m ^R_String_Search)'
q5-8"e o Funny'
q5-176."g o Funny'
q5-"e o Control' !* If Altmode isn't the exit char, it's like a ctl char!
q5-î"e 
FS REREAD'
!Normal!
4uR !* Handle printing char.!
mQ !* Push ., qL, q2, q0 and qD into q3, for rubbing out.!
:i2 2 0 !* stick this char at end of search string,!
fs tyi source"e !* If not inside a keyboard macro,!
fq8"n mt' !* Update the display.!
@ft 0
"#
!Try! !* Note if fall through we are inside a failing conditional.!
mt !* Update the displayed search string.!
''
qL"n !<!>' !* No point in searching if know it would fail.!
.u5
40.&qR"e !* For ^S, ^R suppress the moving back so don't no-op.!
qD"g fq2-1r' !* Move back, so that from FO/\O we find the FOO.!
"# fsz-qP f[ vz
fq2-1"g fq2:c"e zj''
f]vz'' !* After finding FO backwd, move fwd 3 so can find FOO.!
qD:s2"l !<!>'
q5j 1uL fg !<!> !* But if search fails, undo that motion back.!
!Funny!
q5-177."e o Rubout'
!* Only control characters and backspace get past here.!
q5&537.-S"e o Forward' !* Check for C-S and C-s (ignore case bit).!
q5&537.-R"e o Backward' !* Note: mustn't change q5 since Control rereads it.!
q5&537.-Q"e o Quote'
q5&537.-L"e fs rgetty"e o Reprint' o Control'
qE"e o normal'
o Control
!Reprint! !* ^L on printing tty prints current line.!
0t ft..a t
ft _S:_2 !* Then re-prompt.!
!<!>
!Quote! !* ^Q quotes the next character.!
1f[noquit
fs osteco"n -1f[helpch'
fiu0
fs osteco"n f]helpch'
0fs quitw f]noquit
o normal
!Forward! !* ^S means search again forward.!
qD"l :i6I-Search :i7Failing_I-Search'
q4"L qD"g o Default' !* ^S as 1st char going fwd => gobble default string.!
"# 1uD !<!>'' !* ^S as 1st char, going backward, changed to fwd.!
mQ !* Push ., qL, q2, q0 and qD into q3.!
qD"L 0uL' !* If reversing direction, don't assume search will fail.!
1uD !* String not null: make sure going fwd,!
40.uR !* Mark us as a ^S so don't change search string,!
o try !* just search for it a second time.!
!Backward! !* ^R means search again backward.!
qD"g :i6Reverse_I-Search :i7Failing_Reverse_I-Search'
q4"L qD"l o Default' !* ^R as 1st char going backwd => gobble default string.!
"# -1uD !<!>'' !* ^R as 1st char, going forward, changed to backwd.!
mQ !* Push ., qL, q2, q0 and qD into q3.!
qD"g 0uL' !* If reversing direction, don't assume search will fail.!
-1uD !* String not null: make sure going backwd,!
40.uR !* Mark us as a ^R so don't change search string,!
o try
!Default! !* Come here to use default search string.!
mQ !* Push current state so can rub the default out.!
qSearch_Default_Ring[..o !* Find the default!
.fs word u2 ]..o !* and gobble it.!
fq2"l :i2'
q2u8
40.uR !* Inhibit moving back before starting to search.!
o try
!Rubout!
q4"l fg !<!>' !* Rubout when string is empty does nothing.!
ms !* Call & Isearch Rubout.!
qL"e q6' "# q7'u9 !* Fix displayed direction and status for echo area.!
mt !<!> !* Redisplay and loop back.!
!Control!
q5 fs reread
0;
>
f]noquit
>u0 @feqit-q0"e @fg !* If we quit, record in journal file.!
!* Record Rubout if quit while searching,!
!* record :^G if failing or waiting for input.!
qL"'gqI"N :i*:' "# :i*_' fsjrn wr
QL"g <ms -ql;> mt !* If failing, rub out the unfound chars and restart.!
o Restart'
qI"e ms mt o Restart' !* If quit while actually searching, restart.!
QPJ 0fsnoquit
-1fsquit' !* If succeeding, restore starting point and quit.!
q0f"n fs err' !* Error not a quit => pass it on.!
fq2"g
qSearch_Default_Ring [..o !* New search char, save prev default.!
fq(.fsword)-1"G 5c .-z"e j'' !* If previous default is worth saving, push it!
q2,.fsword !* Store current (new) default!
]..o'
fs tyi source"e @ft  ' !* Echo an altmode to show we have exited.!
qP mMM_&_Maybe_Push_Point !* Maybe leave mark at place search started.!
0
!^R Reverse Search:! !^R Incremental Search Backwards.
Like ^R Incremental Search but in reverse.!
-@:M( M.M ^R_Incremental_Search)
!& Isearch Rubout:! !S Rubout-handling subroutine for incremental search.!
!* Kept in QS during incremental search.!
!* Assumes that there is something to rub out (so check first).!
qD(
q:3(q4)uD !* Else pop last set of pushed info!
)-qD"N !* If popping a ^R or ^S that reversed direction,!
qD"g :i6I-Search :i7Failing_I-Search' !* fix up displayed mode.!
qD"l :i6Reverse_I-Search :i7Failing_Reverse_I-Search''
q:3(q4-1)u0
q:3(q4-2)u2
q:3(q4-3)uL
q:3(q4-4)j !* restore point saved by popped char.!
q4-5u4
3uR
fs tyi source"e !* No display inside keyboard macros.!
fs rgetty"e q0:i8' !* On printing tty, rub out char by typing it.!
"# Q0-_:"L Q0-¢L !* On display, redisplay whole search string!
1uR :I*X FS ECHO DISP'''' !* unless we can fix it up!
q0-12."e q4"g q:3(q4-1)-15."e !* If we just rubbed a LF that has a CR before it,!
:ms''' !* Rub out that CR too.!
!& Isearch Help:! !S FS Help Mac calls this, inside I-search.!
m(m.m Describe)^R_Incremental_Search

BIN
src/emacs1/purify.127 Executable file

Binary file not shown.

180
src/emacs1/search.52 Executable file
View File

@@ -0,0 +1,180 @@
!* -*-TECO-*- !
!^R Character Search:! !^R Search for a single character.
Special Characters:
^A Call ^R String Search; use M-X Describe to see what that does.
^F Position window so search object is near top
^Q Quote following character
^R Reverse search direction and read another char
^S Search for default
Also done if character the macro was called by is typed again,
overides any other function of that character shown here.
^T Search for Teco default
If ^S is not used, the character typed becomes the default
for future searches. The previous default is saved on a "ring",
unless it was only one character.!
[0 [1[2 0[3 [9
!RDCH! M.I @:FIU0 !* Q0 gets 12-bit command char!
FIU9 !* Q9 gets actual ascii char!
Q0-(FS^RLAST)"E 323.U0' !* If repeat char called by, treat as ^S.!
Q0:FCU0 !* Uppercase char!
Q0-301."E !* ^A call other macro.!
Q1:M(M.M^R_String_Search)'
Q0-306."E 1u3 oRDCH ' !* ^F set flag to bring to top!
Q0-321."E M.I FIU9 ' !* ^Q read another character, don't check for special.!
Q0-322."E -Q1U1 ORDCH ' !* ^R reverse direction and read another.!
Q0-323."E F[S STRING !* ^S use default.!
QSearch_Default_Ring[..O
.FSWORDFSS STRING ]..O
OSEARCH '
Q0-324."N !* ^T use teco default. Otherwise,!
F[S STRING 0S9 ' !* normal character, compile search for it.!
QSearch_Default_Ring [..O !* New search char, save prev default.!
FQ(.FSWORD)-1"G 5C .-Z"E J '' !* If previous default is worth saving, push it!
FSS STRING,.FSWORD ]..O !* Store current (new) default!
!SEARCH!
.U0 Q1:S"E FG 1  ' !* Do the search, ding if error !
Q0M(M.M&_Maybe_Push_Point) !* Maybe remember where we came from.!
q3"N :f !* ^F search, adjust window!
2fo..Q Next_Screen_Context_Lines :@f '
1 
!^R Reverse Character Search:! !^R Search backwards for a single character.
g(m.m~DOC~ ^R Character Search)jk!
-:M(m.m ^R_Character_Search )
!^R String Search:! !^R Search for a character string.
Reads string in echo area. Special characters:
^B Start search from beginning of buffer.
^D Yank in a default off of search default ring,
popping it. Flushes any previous type-in.
^E Start from end of buffer.
^F Position window so search object is near top
^L Redisplay.
^Q Quote next character.
^R Reverse direction.
^S Search then return to read in loop.
^T Yank in the Teco default.
^U Flush string so far.
^V Find string only if surrounded by delimiters.
^W Word search (ignore any white space between words)
^Y ^D with no pop and no flush.
 Search then exit to ^R mode, whether succeed or fail
Rubout Delete last character of search string.
If you search for the null string, the default is used.
Otherwise, the new string becomes the default and the old
default is saved on a ring, unless it is only one character.!
[0 [8 [9 0[3 !* Q3 ^S/$ flag, non-zero if search done!
[1 !* Q1 search direction and count!
0[5 .[6 !* Q5 0 normal, -1 BJ, 1 ZJ; Q6 starting place!
0[.3 0[.4 0[.5 !* Q.3 0 normal, 1 ^F search, Q.4!
!* word search, Q.5 ^V search!
Q..O[4 !* Q4 main buffer!
fsB Cons[2 @fn/Q2 fs B Kill/ [..O !* Q2 buffer to read search string into !
!* Can't use f[bbind because it bites the KCB.!
0[7 !* Q7 number of ^PX's to adjust display.!
F<!EXIT! !* throw out of this to leave macro!
F<!SEARCH! !* throw out of this to do search!
Q7"G fsrgetty"E 0u7 '' !* On printing console, don't try partial redisplay!
Q7"E fsEcho Dis !* Q7 = 0 =) complete redisplay needed.!
CfsEcho Dis !* clear echo area!
Q5"L @ftBJ_ ' Q5"G @ftZJ_ ' !* starting place prompt!
Q.3"N @ftTop_Line_' !* ^F-prompt!
Q1"L @ftReverse_' !* directional prompt!
q.5"N @ftDelimited_' "# !* delimited-search prompt!
q.4"N @ftWord_' ' !* word-search prompt (can't be both delim & word)!
@ftSearch:_ !* name of command prompt!
Q2U..O H@t -1U..0 ' !* list current search string, enb echo suppressor!
"# Q7< fsEcho Dis !* give sufficient number of ^PX's !
XfsEcho Dis > 0U7 ' !* 0U7 assumes complete redisplay will be needed!
< Q4U..O fsListen"E 0@v'q2U..O !* keep blinker up top!
@:fi:fcu0 fiu9 !* Q0 gets 12-bit upper-case char, q9 gets real char!
q0-33."E q9fsEchoOut
q3"n f;EXIT' !*  if just after ^S, exit!
f;SEARCH ' !* Otherwise, go search!
q0-177."L q9i q9fsEchoOut !* ordinary character, echo and handle quickly!
0u3 q0-î"e 
i' !<!>' !* Follow a CR with an LF. Exit iteration quickly.!
q0-302."E -1u5 0u3 1u1 0; ' !* ^B BJ before search!
q0-304."E HK 0U3 !* ^D yank in new default and pop!
QSearch_Default_Ring[..O
.FSWORDu0 ."E ZJ ' 5R
]..O g0 0; ' !* then redisplay!
q0-305."E 1u5 0u3 -1u1 0; ' !* ^E ZJ before search, implies reverse also!
q0-306."E 1-q.3u.3 0; ' !* ^F use 0FS % CENTER$ for window (complement switch)!
q0-314.@; !* ^L redisplay search string!
q0-321."E @ft FIU9 ' !* ^Q read another char, don't check for special!
q0-322."E -q1u1 0u3 0; ' !* ^R reverse search direction, redisplay!
q0-323."E @ft 1u3 2u7 !* ^S try a search, Q3 suppresses exit from macro!
f;SEARCH ' !* after search completes, 2U7 will erase the ^S !
q0-324."E HK 0U3 !* ^T yank in the teco default !
g(fsS String) 0; ' !* and redisplay!
q0-325."E HK 0;' !* ^U flushes current string!
q0-326."E 1-q.5u.5 0; ' !* ^V complement delimited-search mode!
q0-327."E 1-q.4u.4 0; ' !* ^W complement word-search mode!
q0-331."E 0u3 !* ^Y insert default!
QSearch_Default_Ring[..O
.FSWORDu0 ]..O g0 0; ' !* then redisplay!
q0-177."E 0u3 !* Rubout, delete a char, 0u3 to flag change!
Z"N fsrgetty"E 0afsEchoOutw -D !<!>'
0A-37."G 0a-177"N 1U7 '' !* Try not to use complete redisplay !
-D ' 0; ' !* and run back through redisplay routine!
0u3 q9i q9fsEchoOut ' !* non rubout non special insert it,!
> > !* 0u3 flags change, already echoed courtesy of M.I!
Z"N 0S..O ' !* Compile the new search string, if any!
Z( QSearch_Default_Ringu..O !* New search char, save prev default.!
)"N !* If using old default, don't repush!
FQ(.FSWORD)-1"G 5C .-Z"E J ''!* If previous default is worth saving, push it!
FSS STRING,.FSWORD ' !* Store current (new) default!
"# .FSWORDFSS STRING ' !* Using old default, get it!
Q4U..O .U8 FN Q8J !* Remember where we were, go back if ^G out!
Q5"L BJ ' Q5"G ZJ ' !* Get to starting place for search!
q.5"n q1"l -q1<-:s2"e oSFL' 0a(fk-1c)"c @'> fk-1r'
"# q1<:s2"e oSFL' fk+1c -1a"c @'> fk+2r''
"# Q.4"N Q1,Q2 M(M.M&_Word_Search)' !* Do word search, or
! "# Q1:S' !* normal search
! "E
!SFL! -1FS QPUN FG !* If error, go back, ding and exit!
q3"N @ft_FAIL_ 0fs echo active ' !* Saying FAIL if in incremental mode!
1  '' ]..N !* Otherwise forget where we wanted to go back to!
q.3"N :f !* ^F search, adjust window!
2fo..Q Next_Screen_Context_Lines :@f '
Q5"N 0u5 0u7 ' !* If search succeeds, forget BJ mode, redisplay it!
-q3; Q1"L -'1u1 > !* If altmode, Q3=0, exit; else re-enter, count now 1 !
Q4U..O !* Select main buffer.!
Q6M(M.M&_Maybe_Push_Point) !* Maybe remember where we came from.!
q.3"N :f !* ^F search, adjust window!
2fo..Q Next_Screen_Context_Lines :@f '
0fs Echo Activew 1  !* Leave the search on the screen!
!^R Reverse String Search:! !^R Search backwards for a character string.
g(m.m~DOC~ ^R String Search)jk!
-:M(m.m ^R_String_Search )
!& Word Search:! !S Subroutine for Word Search (still experimental)
You can search for a sequence of words, separated by any delimiters.
Case is ignored. You specify any substring of the first word,
and prefixes of the rest of the words. Supposed to feel like
the completing reader.
First numeric arg, search count and direction.
Second numeric arg, string to search for (which is in a buffer).
Returns non-zero if successful.!
[0 [3 [5
"L -'1[1 !* Q1 has search direction!
< !* Iterate specified number of times!
< [..o j 1:< fwr >"N 0  ' !* Fail if not given any words (would get NIB error)!
-fwx0 ]..o !* Q0 has first word, pointer is after it!
Q1:S0 F"E  ' !* Find first word, if fails return 0!
"G fkc ' .u5 !* Point and Q5 at start of first word!
:< fwr !* Put point at end of this word!
[..o fwr -fwx3 ]..o !* Q3 gets next word, err out of loop if no more words!
:fwr fq3 f~3"N 0; ' !* If next word doesn't match, return 0 from errset!
>"N 0; ' > !* Exit inner iteration if all words matched!
"L q5j ' > !* If backwards search, leave point on left!

BIN
src/emacs1/supprt.418 Executable file

Binary file not shown.

1024
src/emacs1/usrcom.514 Executable file

File diff suppressed because it is too large Load Diff

156
src/emacs1/vars.24 Executable file
View File

@@ -0,0 +1,156 @@
!* Varlist File -*-TECO-*-!
!&& Variable Name List:! !Q List of strings containing all built-in variables' names.!
!** The start-up process looks down the symbol table and replaces each
variable name with the corresponding one from here if there is one.
This makes all E's share the string names, reducing impure storage,,
and speeds up GC.!
!** You will see that variable comments are also included herein.
Variable comments must follow the corresponding names.
They become pure strings just like the variable names do.
The start-up process, when it replaces an impure variable name with
a pure one, also sees whether the following pure string matches the
variables's comment, and if so replaces that too.
However, since no string can span more than one line,
variable comments which include macros to be run are not included.!
*F _Hook*
Abort_Resumption_Message
Atom_Word_Mode
Auto_Directory_Display
*_1_=>_display_dir_after_writes,_-1_=>_reads_too
Auto_Fill_Mode
Auto_Push_Point_Notification
*_Searches_setting_mark_type_this
Auto_Push_Point_Option
*_Searches_moving_this_far_set_mark_at_old_point
Auto_Save_All_Buffers
*_non-0_=>_auto_save_all_buffers,_not_just_selected_one
Auto_Save_Count
Auto_Save_Default
Auto_Save_Filenames
*_Filename_for_Auto_Save_files
Auto_Save_Interval
Auto_Save_Max
*_#_of_saves_to_keep
Auto_Save_Mode
Auto_Save_Visited_File
Autoarg_Mode
Backtrace_Temp
Bottom_Display_Margin
Buffer_Filenames
Buffer_Index
Buffer_Name
Case_Replace
*_1_=>_Replace_commands_preserve_case
Case_Search
Comment_Begin
*_String_for_beginning_new_comments
Comment_Column
*_Column_to_start_comments_in
Comment_End
*_String_that_ends_comments
Comment_Rounding
*_Hairy_-_see_code_for_^R_Indent_for_Comment
Comment_Start
*_String_that_indicates_the_start_of_a_comment
CRL_Help
CRL_List
CRL_Name_Lister
CRL_Name_Type
CRL_Prefix
Cursor_Centering_Point
Default_Major_Mode
*_Major_Mode_for_newly_created_buffers
Directory_Lister
Macro_to_use_to_list_directories
Display_Matching_Paren
Display_Mode_Line_Inverse
Display_Overprinting
Echo_Area_Height
Editor_Name
Editor_Type
End_of_Buffer_Display_Margin
Error_Messages_in_Echo_Area
Fill_Column
Fill_Extra_Space_List
*_punctuations_that_need_2_spaces
Fill_Prefix
*_String_to_put_before_each_line_when_filling
Indent_Tabs_Mode
Initial_Local_Count
Lisp_*CATCH_Indent
Lisp_*THROW_Indent
Lisp_CASE_Indent
Lisp_CASEQ_Indent
Lisp_COMPILER-LET_Indent
Lisp_DO_Indent
Lisp_DOLIST_Indent
Lisp_DOTIMES_Indent
Lisp_EVAL-WHEN_Indent
Lisp_Indent_DEFanything
Lisp_Indent_Language
Lisp_Indent_Offset
*_See_^R_Indent_for_Lisp
Lisp_Indentation_Hook
Lisp_IOTA_Indent
Lisp_LAMBDA_Indent
Lisp_LET_Indent
Lisp_LET*_Indent
Lisp_LET-CLOSED_Indent
Lisp_LET-GLOBALLY_Indent
Lisp_MULTIPLE-VALUE-BIND_Indent
Lisp_PROG_Indent
Lisp_PROG1_Indent
Lisp_PROG2_Indent
Lisp_PROGN_Indent
Lisp_SELECT_Indent
Lisp_SELECTQ_Indent
Lisp_UNWIND-PROTECT_Indent
Lisp_WITHOUT-INTERRUPTS_Indent
MM_&_Check_Top_Level
MM_&_Indent
MM_&_Find_Buffer
MM_&_Find_File
MM_&_Get_Library_Pointer
MM_&_Kill_Text
MM_&_Matching_Paren
MM_&_Maybe_Push_Point
MM_&_Maybe_Display_Directory
MM_&_Process_File_Options
MM_&_Read_Line
MM_&_Set_Mode_Line
MM_&_Xindent
MM_Load_Library
Mode
Do_MM_FOO_to_enter_FOO_mode
Next_Bfr_Number
Overwrite_Mode
Page_Delimiter
*_Search_string_for_finding_page_boundaries
Paragraph_Delimiter
*_Lines_starting_with_these_chars_start_paragraphs
Permit_Unmatched_Paren
*_1_=>_allow_unmatched_),_-1_=>_only_in_Lispish_modes
Prefix_Char_List
Previous_Buffer
Read_Line_Delay
Pausing_this_many_1/30_sec_causes_echoing
Region_Query_Size
*_Some_commands_need_confirmation_if_region_this_big
SAIL_Character_Mode
Search_Default_Ring
Search_Exit_Char
Set_Mode_Line_Hook
Space_Indent_Flag
*_If_nonzero,_Auto_Fill_indents_new_lines
Submode
!! 1FS MODE CH
Tab_Stop_Definitions
*_Tab_stops_for_^R_Tab_to_Tab_Stop
Temp_File_FN2_List
*_Reap_File_deletes_these_FN2s
Top_Display_Margin

203
src/emacs1/window.77 Executable file
View File

@@ -0,0 +1,203 @@
!* -*-TECO-*-!
!^R Other Window:! !^R Switch to the other window.
In two-window mode, moves cursor to other window.
In one-window mode, exchanges contents of visible window
with remembered contents of (invisible) window two.
An argument means switch windows but select the same
buffer in the other window.!
0FO..QWindow_2_Buffer"E
:I*O1B Only_One_Window FS ERR'
MMM_&_Check_Top_Levelwindows
[Previous_Buffer !* Don't set Previous Buffer to buffer of window we leave.!
Q..O UOther_Window_Buffer
0FO..QWindow_2_Size"E !* If only 1 window now, but second has existed,!
.( QBuffer_Name( FS WINDOW( !* Then select window 2's buffer in existing window!
QWindow_2_BufferM(M.M Select_Buffer)
QWindow_2_Point:J
QWindow_2_Window FS WINDOW
) UWindow_2_Window !* And put this window's old buffer into!
) UWindow_2_Buffer !* (now invisible) window 2!
) UWindow_2_Point
'
[1 [2
FS TOP LINE"E
:I2 1 :I1 2 !* Q1 gets window switching to, Q2 gets window being left.!
QWindow_1_Size+1FS Top Lin
QWindow_2_SizeFS Lines'
"#
:I2 2 :I1 1
0FS Top Lin
QWindow_1_SizeFS Lines'
QBuffer_NameUWindow_2_Buffer
.UWindow_2_Pointer
FS WINDOW UWindow_2_Window
FF"E QWindow_1_BufferM(M.M Select_Buffer)
QWindow_1_Pointer:J
QWindow_1_WindowFSWINDOW'

!^R View Two Windows:! !^R Show two windows but stay in first.!
1, M(M.M ^R_Two_Windows)
!^R Two Windows:! !^R Show two windows and select window two.
An argument > 1 means give window 2 the same buffer as in Window 1.
A pre-comma argument means keep the cursor in window 1.!
0FO..QWindow_2_Size"N
:I*A2W Already_Two_Windows FS ERR'
fs rgetty"e
:I*TTY You_are_on_a_printing_terminalFS ERR'
MMM_&_Check_Top_Levelwindows
[Previous_Buffer !* Don't set Previous Buffer to buffer of window we leave.!
QBuffer_Name M.V Window_1_Buffer
Q..O M.V Other_Window_Buffer
FS WINDOW M.V Window_1_Window
. M.V Window_1_Pointer
FSLINES M.VDefault_Size
FS LINESF"E
FS HEIGHT-(FS ECHO LINES)-1 ' M.V Total_Size
0FO..Q Window_2_Buffer"E !* If never have had window 2 as yet,!
QTotal_Size/2 M.V Window_1_Size !* Make window 2 hold same buffer as window 1,!
0FO..Q Tags_Find_File"N o Same'
-1"N o Same'
"N :I*W2 m(m.m &_Create_Buffer)' !* or make it hold W2.!
:I*W2 M.V Window_2_Buffer o W2'
-1"N
!Same!
QBuffer_Name M.V Window_2_Buffer
!W2!
. M.V Window_2_Pointer !* Arg => Window 2 gets same buffer as window 1.!
FS Window M.V Window_2_Window'
QWindow_1_Size[0
QTotal_Size-1-Q0:"G !* If old window 1 size is unreasonable, fix it up.!
QTotal_Size/2U0 Q0UWindow_1_Size'
1F[NOQUIT
QTotal_Size-1-Q0 M.V Window_2_Size
FS REFRESHM.V Window_1_Refresh
M.M &_Multi-window_Refresh FS REFRESH
"N Q0 FS LINESW
Q:.B(QWindow_2_Buffer M(M.M &_Find_Buffer)+4!*bufbuf!) M.V Other_Window_Buffer
F]NOQUIT
M(FS REFRESH)W ' !* If cursor should stay in top window, display bottom one.!
Q0 FS TOP LINE !* Else, draw the line of dots, and switch into bottom!
:FT FS WIDTH/10<FT----------> 0U..H !* window, causing it to be displayed.!
-1FS TYPEOUT
0FS TOP LINE
F]NOQUIT
:M(M.M ^R_Other_Window)
!^R One Window:! !^R Display only one window.
Normally, we display what used to be in the top window,
but a numeric argument says to display what was in the bottom one.!
0FO..QWindow_2_Size"E
:I*O1B Only_One_Window FS ERR'
MMM_&_Check_Top_Levelwindows
[Previous_Buffer !* Don't set Previous Buffer to buffer of window we leave.!
FS TOP LIN"N !* If we're in window 2 now,!
M(M.M^R_Other_Window)' !* switch to window 1.!
0UWindow_2_Size !* Put us officially in one window mode.!
0FS Top Line
QDefault_Size FS LINES
QWindow_1_Refresh FS REFRESH
FF"N
:M(M.M ^R_Other_Window)' !* With arg, stay in what used to be window 2.!

!& Multi-window Refresh:! !S Redisplay the screen when there are two windows.!
QWindow_1_RefreshF"N[1 M(Q1(]1))' !* Execute the global FS REFRESH if any.!
FS QP PTR
0F[REFRESH
.[1 FN q1j [1 [2
FS TOP LINE"N !* Temporarily TECO-select the other window!
QWindow_1_SizeF[LINES 0F[TOP LINE
:I2 1'
"# QWindow_2_SizeF[LINES QWindow_1_Size+1F[TOP LINE
:I2 2'
QWindow_2_WindowF[WINDOW !* but don't take the time for an EMACS buffer switch.!
QWindow_2_Point:J
QOther_Window_Buffer[..O
-1F[D FORCE !* Don't abort this display due to typeahead.!
0U..H @V !* Now redisplay that window.!
0FS LINES !* Now redisplay the line of stars across the middle.!
QWindow_1_SizeFS TOP LIN
:FT FS WIDTH/10<FT---------->
-FSTYPEOUTW 0U..H
QPFS QP UNWIND W
!* Note that we fall off the end, with all qregs popped by the FS QP UNWIND.!
!* This is so that other things can be consed onto the end of FS REFRESH.!
!^R Grow Window:! !^R Make this window (or minibuffer) use more lines.
Argument is number of extra lines (can be negative).!
Q..F-Q.F"N FS LINES"E FG 0' !* If not at top level, try to extend minibuffer.!
!* Complain if uses whole screen.!
FS LINES+FS LINES
M(FS REFRESH) W'
0FO..QWindow_2_Size"E !* Else if only one window, can't grow it.!
:I*O1B Only_One_Window FS ERR'
[1 FS TOP LIN[0
Q0"E -Q1U1' !* Q1 gets # lines window 2 is growing by.!
QWindow_1_Size-Q1-1"L O LOSE'
QWindow_2_Size+Q1 F"G UWindow_2_Size'
"# !LOSE!
:I*Windows_need_at_least_one_line FSERR'
QWindow_1_Size-Q1 UWindow_1_Size !* Adjust both sizes!
Q0"E
QOther_Window_Buffer[..O !* if in window 1, temporarily teco-select window 2!
QWindow_2_Window F[Window !* but don't do the EMACS buffer switch.!
.[P FN QPJ
QWindow_2_Point:J'
.( 1:< FS WINDOW+BJ !* Adjust w2's FS WINDOW for lines!
-Q1F"G :' "# @' ,0FM !* it is gaining or losing at the top.!
.-BFS WINDOW>W )J
Q0"E FS WINDOW UWindow_2_Window
-4 FS QP UNWIND' !* pop back to actual current window.!
Q0"E FS LINES+ FS LINES'
"# FS TOP LINE- FS TOP LINE !* Also adjust TECO window settings.!
FS LINES+ FS LINES'
:M(FS REFRESH)
!^R Scroll Other Window:! !^R Scroll other window up several lines.
Specify the number as a numeric argument, negative for down.
The default is a whole screenful up. Just Meta-Minus as argument
means scroll a whole screenful down.!
0FO..QWindow_2_Size"E
:I*O1B Only_One_Window FS ERR'
.[1 FN q1j [1 [2
QOther_Window_Buffer[..O
FS TOP LINE"N !* Now TECO-select the other window,!
QWindow_1_SizeF[LINES 0F[TOP LINE
:I2 1'
"# QWindow_2_SizeF[LINES QWindow_1_Size+1F[TOP LINE
:I2 2'
QWindow_2_WindowF[WINDOW !* but don't take the time for an EMACS buffer switch.!
QWindow_2_Point:J
-1F[DFORCE !* Don't stop this display for type-ahead.!
FS ^R ARGP-5"E !* Handle just Meta-minus as argument.!
@M(M.M ^R_Previous_Screen)'
"# F@M(M.M ^R_Next_Screen)'
0@V
.UWindow_2_Point
FS WINDOW UWindow_2_Window

!^R Visit in Other Window:! !^R Find buffer, tag or file in other window.
Follow this command by B or C-B and a buffer name,
F or C-F and a file name, or T or . and a tag name.
We find the buffer, tag or file in the other window,
creating the other window if necessary.!
0fo..Q Window_2_Size"e !* If not in 2 window mode, enter it.!
2m(m.m ^R_Two_Windows)'
"# 2m(m.m ^R_Other_Window)' !* Else go to other window.!
1fstypeoutw m.i fi:fc[1 !* Make ^X4 echo if we pause, but prevent redisplay.!
-1fstypeout !* Make ? now not print on same line as dashes.!
q1f*B"g :m(m.m Select_Buffer)'
q1f*F"g :m(m.m Find_File)'
q1f*T."g :m(m.m ^R_Find_Tag)'
:fg 0

BIN
src/emacs1/wrdlst.196 Executable file

Binary file not shown.