Google
 

Trailing-Edge - PDP-10 Archives - mit_emacs_170_teco_1220 - emacs/novice.elib
There are no other files named novice.elib in the archive.
pW
[0+8+FQ(+4)[1
0FO10F"G+Q1'
+FQ()+4U1
FQ1"L0'
,Q1:M(Q1+4(]1]0))
   9;-'U2!=BI
UmbIn,Oy<O';@'@m29#@?L&YVf,wmw',)]
(SF<!')6BtWfZQ"r1eL?kMN\Nvlh?yn;g^n'Y7J|Gf(QU%^Olb]w`Lp3\][N/o9?JZIJUPu"& Check Black List& Disable Commands& Disable Handler& Disable One Command& Enable One Command& Ensure Disable Vars& Ensure Window Size& Ensure ^R Q-regs& Grab Novice Data& Kill Novice Library& Load Disable Profile& Make Structure& Novice Charprint& Return Disable Status& Return Novice Data& Save Disable Profile& Setup Novice Library& What KeysDisable CommandEnable All CommandsTune ProfileTurn Off Everything
Where Is^R Disabled Command^R Disabled Prefix Command^R Mini Documentation~DIRECTORY~~DOC~ & Check Black List~DOC~ & Disable Commands~DOC~ & Disable Handler~DOC~ & Disable One Command~DOC~ & Enable One Command~DOC~ & Ensure Disable Vars~DOC~ & Ensure Window Size~DOC~ & Ensure ^R Q-regs~DOC~ & Grab Novice Data~DOC~ & Kill Novice Library ~DOC~ & Load Disable Profile~DOC~ & Make Structure~DOC~ & Novice Charprint!~DOC~ & Return Disable Status~DOC~ & Return Novice Data ~DOC~ & Save Disable Profile ~DOC~ & Setup Novice Library~DOC~ & What Keys~DOC~ Disable Command~DOC~ Enable All Commands~DOC~ Tune Profile~DOC~ Turn Off Everything~DOC~ Where Is~DOC~ ^R Disabled Command$~DOC~ ^R Disabled Prefix Command~DOC~ ^R Mini Documentation~DOC~ ~Filename~~Filename~
~INVERT~
[0[1[2[3[4[5
0fo..qNovice Setup Hookf"nu0
m0'
-1fo..qNovice Statusu0
q0"e
:i*Novice Status is 0.  Not completing library setup.fsERR'
1m.cSaving Disable Profile*1 is normal operation; 0 inhibits changing profile
1m.vDisable Profile Changed
f[DFile
etDSK:EMACS PROFILEfsHSnamefsDSname
fsosteco"eetFOO EPRFILfsxunamefsdfn1'
fsDFilem.vNovice Profile File
q0"l
e?"n
@fgft
Help (in the form of a NOVICE facility) is available for people
learning EMACS.  NOVICE starts you with a small subset of EMACS
commands that expands automatically as you learn.

Do you want this help with EMACS? 
f[BBind
m(m.m& Yes or No)"l
fsosteco"eetEMACS;MINMAL EPRFIL'
"#etEMACS;MINIMAL PROFILE'
1:<er@y>"n
1m(m.m& Load Disable Profile)-2"n
:i*Problems with loading NOVICE libraryfsERR'
1m(m.mTurn Off Everything)
m(m.m& Save Disable Profile)'
"#qNovice Profile FilefsDFile
eihpef'
ft

Creating EMACS profile for you.'
"#fsosteco"eetFOO EVARSfsxunamefsdfn1'
"#etDSK:EMACS VARSwfsHSnamefsDSName'
1:<er@yzjbu5>
0u1
<q5,z:fbLoad Library;.u5
:fbNOVICE"l0l1u10;'>
q1"giNovice Status:0
'
0m.vNovice Status
eihpef
hk
0u..h@v
:i*Novice facility not wanted.  Not completing library setup.fsERR'
hk
0u..h@v
'
'
@:i5|
m(m.m& Count Lines)u1
q1*5fsqvectoru2
j0u4
q1<1:x3
1:<m3u:2(q4)>w
l%4>
|
f[BBind
@i|0fs^RINIT
Afs^RINIT
m.m^R Disabled Command
m.m^R Disabled prefix command
m.m^R Abbrev Expand and Self-Insert
m.m^R Abbrev Expand and Call Old Char
m.m^R CRLF
m.m^R Quit
|
m(m.m& Load Bare)
m5
q2m.vDont Touch These
zj@i|afs^RINIT
136fs^RINIT
200fs^RINIT
m.m^R Prefix Meta
m.m^R Prefix Control-Meta
m.m& Prefix Character Driver
|
m5
q2m.vDont Report These
hk
0fo..qNovice Users File"e
fsosteco"eetEMACS;LIST NOVICE'
"#etEMACS;NOVICE-USERS LIST'
fsDFilem.vNovice Users File'
"#qNovice Users FilefsDFile'
1:<er>"e@y'
fsxunameu0
1:s0 "l\u3
@:i*|@ft
Remember Control-Underscore or the Help key for help.
0fsechoactivew|m.vNovice Reminder
0m.vNovice Novice'
"#zjz"n-fwl\u3'
"#0u3'
%3
hk
i0 g3i

hx0
5-(fq0-(fq0/5*5))u3
q3-5"e0u3'
0:l
q3,32i
1:<@:ei>"e
fsOFlengthfsOFaccess
1:<@hpef>"n
0m.vCollect Novice Data''
"#1:<ei@hpef>"n
0m.vCollect Novice Data''
@:i*|@ft
Press Control-Underscore for help if your terminal does not have a help key.
0fsechoactivew|m.vNovice Reminder
1m.vNovice Novice'
q3m.vNovice User Code
qNovice User Code"e
0m.vCollect Novice Data'
"#1m.cCollect Novice Data*1 allows data collection; 0 prohibits it'
0fo..qNovice Data File"e
fsosteco"eetEMACS;DATANOVICE'
"#etEMACS;NOVICE-USERS DATA'
fsDFilem.vNovice Data File'
200000000000.m.vData Mword Mask
177400000000.m.vData User Mask
377740000.m.vData Runtime Mask
36000.m.vData Choice Mask
1000.m.vData Prefix Mask
777.m.vData Char Mask
qCollect Novice Data"n
fsmachine:f6u2
0,fsdate:fsfdconvertu1
q3:\u3
@:i0|[2] 3 0 1|
q0,m(m.m& Grab Novice Data)
'
fshelpmacm.vMM Old Help Mac
m.m^R Mini Documentationm.vMini Help Mac
m.m& What Keysfshelpmac
(fslinesf"efsHeight-(fsecholines)-1'-1)/2m.vDefault Window 2 Size
1+qDefault Window 2 Size/2m.cHelp Window Visible*No of lines for unselected help buffer; 0 to make help disappear
:i*fo..qBuffer Selection Hooku1
@:i*|mNovice Reminderw
1w|m.vBuffer Selection Hook
:m(m.m& Load Disable Profile)qMM Old Help Macfshelpmac
1m(m.mEnable All Commands)
1:f<
m(m.mKill Variable)Control-X Working Definitions
m(m.mKill Variable)Control-X Initial Definitions
m(m.mKill Variable)Standard Working Definitions
m(m.mKill Variable)Standard Initial Definitions
>
[0[1[2
f[bbind
qNovice Profile Filef[DFile
e?"n
fff"e'w
m(m.m& Ensure Disable Vars)
-2'
"#er@y
m(m.m& Ensure Disable Vars)
-1u0
0u1
qStandard Working Definitionsu2
512<%0j1a-D"e
q0,q2m(m.m& Disable One Command)q1u1
'>
qControl-X Working Definitionsu2
128<%0j1a-D"e
q0-512,q2m(m.m& Disable One Command)q1u1
'>
q1"n:m(m.m& Save Disable Profile)'
-1'D[0[1[2
0fo..qStandard Initial Definitions"e
0m(m.m& Make Structure)u0
0u2
512<q2u:(q:0(1))(q2)
%2w>
512,E:i:0(3)
q0m.vStandard Initial Definitions
fs^RIndirectu1
q1m(m.m& Make Structure)u0
0u2
128<q:.x(q2)u:(q:0(1))(q2)%2w>
128,E:i:0(3)
q0m.vControl-X Initial Definitions'
ff"e
0fo..qStandard Working Definitions"n0''
qStandard Initial Definitions,0m(m.m& Make Structure)u1
q1m.vStandard Working Definitions
qControl-X Initial Definitions,(fs^RIndirect)m(m.m& Make Structure)u0
q.xu:0(1)
q0m.vControl-X Working Definitions'
0
[0[1[2
@ftPress key to disable: 
m(m.m& Read Q-reg)[.1
@ft  Go ahead1m(m.m& Yes or No)"e0'
m(m.m& Disable Commands).1
[[0[1[20[3[4[5[60[7
0fo..qStandard Working Definitions"e
1m(m.m& Load Disable Profile)w'
qStandard Working Definitionsu4
qControl-X Working Definitionsu6
1u3
<:i0-fq0;
1:f<f0fs^RIndirectu2>"n
f0f"l:i*0 Bad Q-register stringfsERR'+1:g0u2
512u7
q2,q6m(m.m& Disable One Command)u5'
"#0u7
q2,q4m(m.m& Disable One Command)u5'
q3&q5u3
q5"n@fg@ft
50fsechoactive'
"#q7+q2,6m(m.m& Grab Novice Data)
'>
q3"e:m(m.m& Save Disable Profile)'G[i[v[0[1[2[30[40[5
q:v(0)u2
q2"eqifs^RIndirectui'
:i3This command must stay enabled.
q:(q:v(2))(qi)"n
:i*Continuing would affect backup'
q:(q:v(1))(qi)u0
q0"e:i*Cannot disable undefined command key'
qDont Touch Theseu4
fq4/5<q:4(q5)-q0"eq3'%5>
1f[noquit
qi:f:v(3)D
q:(q:v(1))(qi)u:(q:v(2))(qi)
q2"e
m.m^R Disabled Commandu3
q3ui'
"#m.m^R Disabled Prefix Commandu3'
q3u:(q:v(1))(qi)
1uDisable Profile Changed
0MqSaving Disable Profile"e@ft
Saving disable profile is disabled.0'
f[bbind
g:Standard Working Definitions(3)
g:Control-X Working Definitions(3)
qNovice Profile Filef[DFile
eihpef
0:[i[v[1[2
q:v(0)u2
q2"em.m^R Disabled Commandu1'
"#m.m^R Disabled Prefix Commandu1'
q:(q:v(2))(qi)"e
q:(q:v(1))(qi)-q2"e
:i*Command disabled but no backup available''
1f[noquit
qi:f:v(3)E
q:(q:v(2))(qi)u:(q:v(1))(qi)
0u:(q:v(2))(qi)
q2"eq:(q:v(1))(qi)ui'
1uDisable Profile Changed
0Qfsqpptru9
[0[3[4[5[9[8[7
q..1u0
512+q0u5
qControl-X Working Definitionsu4
q:(q:4(2))(q0)u3
@:i7|q3m(m.m^R Describe)w|
@:i8|ftC-X q0,q3m(m.m& ^R Briefly Describe)|
f@:m(m.m& Disable Handler)[fsqpptr[9
q..0fs^rindir[0
q0u5
qStandard Working Definitionsu4
q:(q:4(2))(q0)[3
@:i7|q0m(m.m& Charprint)ft 
q0,q3m(m.m^R Describe)|
@:i8|q0,q3m(m.m& ^R Briefly Describe)|
f@:m(m.m& Disable Handler)Y
[1[2[6
fstyicountu6
@:i2|ftYou have several options, according to the next character you type:
 1  Execute the function just once.  Leave the key turned off.
 Y  Execute the function and leave the key turned on from now on.
 N  Do not execute the function.  Leave the key turned off.
 ?  Show a full description of what the function does.
|
fq3"lm(m.m& Load Bare)'
!Startover!
m8
ftThis key has been disabled for you while you are learning.

!Retype!
m2
!ShortPrompt!
ft
Type 1, Y, N, or ? 
@:i*\2q5,1m(m.m& Grab Novice Data)
\f[helpmac
@fg
fi:fcu1
ft1
f]helpmac
:o1@fgoShortPrompt
!1!q5,2m(m.m& Grab Novice Data)
@ft
Done, and command remains turned off.
0fsechoactive
0u..h@v
fstyicount-q6u6
q6<fs.tyibackw>
fstyibeg+q6fstyibeg
f:@m(q3(q9fsqpunw))
!?!
q5,3m(m.m& Grab Novice Data)
:ft
m7
oShortPrompt
!Y!
q5,4m(m.m& Grab Novice Data)
q0,q4m(m.m& Enable One Command)
0u..h@v
@ft
Command now turned on.  Use M-X Disable Command to turn it off again.
0fsechoactive
m(m.m& Save Disable Profile)
fstyicount-q6u6
q6<fs.tyibackw>
fstyibeg+q6fstyibeg
f:@m(q3)
!&!
q0,q4m(m.m& Enable One Command)
0u..h@v
@ft
OK, command now turned on.
0fsechoactive
:m(m.m& Save Disable Profile)
!N!q5,5m(m.m& Grab Novice Data)
@ft
Command remains turned off.0fsechoactive
0u..hO[0[1[2[3
0u0
0u3
qStandard Working Definitionsu1
512<q:(q:1(2))(q0)u2
q2"n
q0,q1m(m.m& Enable One Command)"e%3w''
%0w>
0u0
qControl-X Working Definitionsu1
128<q:(q:1(2))(q0)u2
q2"n
q0,q1m(m.m& Enable One Command)"e%3w''
%0w>
q3:\u3
@ft3 commands enabled.0fsechoactive
ff"e:m(m.m& Save Disable Profile)'[0[1[6
0u1
qStandard Working Definitionsu6
-1u0
512<(%0)fs^RIndirect,q6m(m.m& Disable One Command)"e
%1w'>
qControl-X Working Definitionsu6
-1u0
128<(%0),q6m(m.m& Disable One Command)"e
%1w'>
q1:\u1
"n@fg@ft
1 commands turned off.0fsechoactivew'
0c1f[fnamsyntax
f[DFile
etDSK:EMACS PROFILEfsMSnamefsDSname
5,fProfile filef"nfsDFile'
[f[9
fsDFileuf
0[Saving Disable Profile
0[Collect Novice Data
@fn|m(m.m& Ensure ^R Q-regs)|
fsnoquitu9
1fsnoquit
q:Control-X Initial Definitions(1)[.x
qStandard Initial Definitions,0m(m.m& Make Structure)[Standard Working Definitions
qControl-X Initial Definitions,(fs^RIndirect)m(m.m& Make Structure)[Control-X Working Definitions
m(m.m& Ensure ^R Q-regs)
q9fsnoquit
qf,1m(m.m& Load Disable Profile)+2"e
ff&1"nm(m.mTurn Off Everything)''
0[..f
:i* Push keys to tune profile [..j
f[BBind
g(m(m.m& Return Disable Status))

1uSaving Disable Profile
qf,m(m.m& Save Disable Profile)
0P-1[0[1
qStandard Working Definitionsu1
512<%0
q:(q:1(1))(q0)u0>
0Y[0[1[2[3[5
qEditor Nameu1
@:i*|This is a help buffer showing what the keys in 1 do.  You can inspect
the list using Space, Backspace, <, >, N, and P.  (The ? key explains.)

|u5
@:i*|Some 1 notation:
    When you want to insert text in your file, just type it in.
C-G Any time you are confused, use C-G.  It cancels any command.
--MORE--  Whenever you see this at the bottom right of the screen, it means
    that you can see more by pressing Space.  If you press anything else, and
    you see FLUSHED, it means that there was more to see but you decided
    not to see it with Space.
C-  Means a control character.  C-F means hold the control key down
    and press F.  (Just a different kind of shift key really.)
M-  Means a meta character.  For M-F on most terminals, you press the key
    labeled ESC or Altmode, let it up, and then press F.  Some terminals
    have a Meta key.  On them, you hold the Meta key down and then press F.
C-M-  Means a control-meta character.  For C-M-Z on most terminals, you first
    press C-Z, which is called the Control-Meta prefix, let it up, and then 
    press Z.  On terminals with a Meta key, you hold down the Control key and
    the Meta key, and then press Z.  (Multiple shift keys!)
Argument  Documentation for some commands says that they take an argument.
    This means that you can give a number before the command and 1 does
    the command that many times.  The usual way to give an argument is with
    the Meta key.  Use M-2 for 2, M-2 9 for 29.
|u3
-1f[noquit
1:<
[Previous Buffer
0fo..qWindow 2 Size"em(m.m^R Two Windows)'
"#fsTopLine"e
m(m.m^R Other Window)''
:i*--------Documentation Window----------Remember Help key----[..j
m(m.mSelect Buffer)*Keys*
qDefault Window 2 Size,2m(m.m& Ensure Window Size)
z"e1'qDisable Profile Changed"n
:ftConstructing help buffer...

0u..h
hk
g5
g3
i
Command     Function Name (the ^R is just part of the name, nothing special)

g(m(m.m& Return Disable Status))
j
0uDisable Profile Changed'
q5,7m(m.m& Grab Novice Data)
!show!
@v
!prompt!
:I*CFSECHODIS
@:ftOptions: Help, Space, Backspace, <, >, N, P, ?, or Q:  0fsechoactive
0f[helpmac
FI:FCU0
q0-4110."eHu0'
f]helpmac
:O0@FGOshow
!Q!:i*Cfsechodisplay
qHelp Window Visiblef"n,2m(m.m& Ensure Window Size)
:m(m.m^R Other Window)'
w:m(m.m^R One Window)
! !@m(m.m^R Next Screen)woshow
!!@m(m.m^R Previous Screen)woshow
!<!joshow
!>!zjoshow
!N!1@m(m.m^R Next Screen)woshow
!P!1@m(m.m^R Previous Screen)woshow
!H!mMini Help Macw0u..hOprompt
!?!:ftThis help buffer lists the commands that work in 1.  You can move around
to see more of the buffer or use the Help key for more help.  Select an option:
    Space   shows the next screen
 Backspace  shows the previous screen
      <     positions you at the top of the list
      >     positions you at the bottom of the list
      N     shows one more line at the bottom
      P     shows one more line at the top
      Q     returns to the editing buffer
0u..hOprompt
>u0
f~0QIT-4"eoQ'
1:<:m(m.m^R One Window)>
[b[e[c[n[v[p[0[1[2[3[4[5
m(m.m& Load Bare)
qDont Report Theseun
m.m& Novice Charprintue
m.m& Check Black Listuc
m.m& Macro Nameub
@:i*|<%5-q3;%0j
1a-E"e
q:(q:v(1))(q5)mcu1
q1"nq1mbu2
q2"e:i2runs an internal function'
q4,q5meu1
zji

g1
10-(fshpos)f"lw2',32i
g2''
>|up
f[bbind
g:Standard Working Definitions(3)
g:Control-X Working Definitions(3)
-1u0
qStandard Working Definitionsuv
-1u5
:i4
fq:v(3)u3
mp
qControl-X Working Definitionsuv
-1u5
:i4C-X 
fq:v(3)u3
mp
0,640k
hx*'-1u9
fqn/5<%9
-q:n(q9)"e0'>
0[0[1[2[30[4[5
ff&1"nu0'
ff&2"nu4'
q4"n
0fsqvectoru1
q1[..o
g4
]..o
-1u2
fq4/5<%2
q:4(q2)u3
0fsqvectoru5
q3fp"g
q5[..o
g3
]..o
q5u:1(q2)'
>'
"#
4*5fsqvectoru1
q0u:1(0)
q0"e512u2'
"#128u2'
q2*5fsqvectoru:1(1)
q2*5fsqvectoru:1(2)
q2,0:i:1(3)'
q1fqCollect Novice Data"e'
0[0[10[2
qNovice Data Filef[DFile
5f[BBind0,0fsWord
ff&1"n*2000.&qData Choice Masku0'
fp-101"n
&1777.q0u0'
"#u1
q0qData MWord Masku0
zjg1
5-(fq1-(fq1/5*5))u2
q2-5"e0u2'
q2,32i
fq1/5+(q2f"nw1')q0u0'
qNovice User Code*400000000.&qData User Maskq0u0
fsruntime/1000*40000.&qData Runtime Maskq0u0
Q0,0fsWord
1f[noquit
e\
fne^
0u2!Again!
e?"e1:<@:ei
fsOFlengthfsOFaccess>u0'
"#1:<ei>u0'
q0"nq2-2"e
:i*
Data file busy.  Discarding data.fsechoout
0fsechoactive0'
0,7:g0u1
f~1OPN0130"nq0fserr'
30
%2
oAgain'
@hpef
0W[0[1[2[3[4[5[p
:ip
qNovice Data Filef[DFile
f[BBind
1:<erfyec>f"nfsERR'w
0u0
:<q0fsWordu1
q1&qData MWord Mask"e
q1&qData User Mask/400000000.:\u2
q1&qData Runtime Mask/40000.:\u3
q1&qData Choice Mask/2000.:\u4
q1&qData Prefix Masku5
q1&qData Char Masku6
q5"n:i*C-X ,'q6m(m.m& Novice Charprint)u5
:ipp2 3 4 5

q0+5u0'
"#q1&qData Char Masku2
q0+5u0
q0,q2*5+q0x3
:ipp3
q2*5+q0u0'
>f"nu3f~3NIB-4"n
q3fsERR''w
qp@[0[1[2:i1
-4110."E:I*Help'
u0
ff&2"nu1'
fq1"g-32"lq0+100.200.u0''
q0&200."N:I11C-'
q0&400."N:I11M-''
q0&177.U0
Q0-127"E:I*1Rubout'
Q0-27"E:I*1Altmode'
Q0-8"E:I*1Backspace'
Q0-9"E:I*1Tab'
Q0-10"E:I*1Linefeed'
Q0-13"E:I*1Return'
Q0-32"E:I*1Space'
q0:i2:i*12]0[A[B
q5,8m(m.m& Grab Novice Data)
!Prompt!
:i*CHelp Option (A, C, D, Q, or ?): fsEchodis
0F[HELPMAC
FI:FCUB
QB-4110."E ?UB'
F]HELPMAC
-1fstypeout
:OB@FGOPrompt
!A!:IBAproposOXX
!C!:I*CCharacter: FSECHODIS
:M(M.M^R Describe)
!D!:IBDescribe8UAOXX
!Q!
!?!!"!:FT
This is the menu of Help options.  Press the key for the kind of help you want.
   C   Says what a certain Command (character) does.  You type the character.
   D   Describes a function.  You type the name.
   A   lists all function names containing some word.  You type the word.
   Q   Quits -- you don't really want help this kind of help.

For a basic tutorial to EMACS, run the program 
fsosteco"eftTEACHEMACS.'"#ftTEACH-EMACS.'ft

0U..HOPrompt
!XX!
QA+1,M(M.M& Read Line)B: UA
QA"E'
!EXECUTE!
F~BApropos"E1'M(M.MB)A

!NF[DFILEM(M.MView File)EMACS;EMACS NEWS!
!I:M(M.M^R Info)!
!L:M(M.M^R What Lossage)!
!M.*100/(FSZ):\UB:FT..J--B%--FSMODIF"N FT *'FT
!
!T:IBTecdocOXX!
!V:IBList VariablesOXX!
!W:IBWhere Is8UAOXX!
!R0[D1,M(M.M& Read Line Help)!.FF&1"N[1'
"#9,FFunction: M.M1U1'
[x[p[5[6
ux
@:ip|-1U0
<%0,Q1F4U0Q0:;
Q2-4"GFT, etc.
'
qx-2"N%2"Eqx"NFT  which'
FT can be invoked via: '
"#FT, ''
q3,Q0M(M.M& Novice Charprint)u6
ft6 
qx-2"E-1'
>|
Q1:"LM(M.M& Load BARE)'
-[2
qx"E
FTThe function 
Q1M(M.M& Macro Name)[5
FT5'
-[0
qx-2"E
400.,Q1:FU0
Q0"L0,Q1:FU0'
Q0:"LQ0M(M.M& Novice Charprint)-1''
:i3
q:Standard Working Definitions(1)u4
mp
q:Standard Working Definitions(2)u4
mp
:i3C-X 
q:Control-X Working Definitions(1)u4
mp
q:Control-X Working Definitions(2)u4
mp
Q2"Lqx-2"E0'qx"N'
FT is not bound to a key.
Use M-X 5 <cr> to invoke it.'
FT

[0[1[2[3
0fo..qWindow 2 Size"e
-1"e"e''
m(m.m^R Two Windows)
fm(m.m& Ensure Window Size)
:m(m.m^R Other Window)'
u2
:\u0
qWindow 0 Sizeu1
q2-q1"e'
q2"n
(fsheight-(fsecholines)-1)-q2"g
fstoplinef"nw1'#(-1)"n-'(q2-q1):m(m.m^R Grow Window)'
"#
-1"e:m(m.m^R One Window)'
1:m(m.m^R One Window)''
"#
-1"e1:m(m.m^R One Window)'
:m(m.m^R One Window)'
NOVICECSupervises incremental learning, starting with subset of EMACS.:S Get things set for using NOVICE as a novice.
The variable Novice Status controls whether the library setup function runs.
Value 0 inhibits running the setup.  If no Status variable exists, it tries to
load a profile file.  If the user doesn't have one, it queries about whether
to create one for the user.  If user wants one, it sets them up with a
profile; otherwise it defines them with Novice Status 0 and writes or revises
a VARS file.  When the setup is not being run, it returns 0 so that an INIT
file could look after unloading the library and cleaning up.  It doesn't do
any cleanup in the setup itself, because someone might be trying out the
library in order to create a profile.  Some general variables and options get
created here.  NOVICE collects data on usage unless Collect Novice Data is 0.
 :S Take away the variables and pointers to disablers.
Leaving the pointers there will cause errors if the keys are pressed.  Might
be better to make the library unkillable though.  SS Disable commands according to user's profile.
This applies to the standard 9-bit character set and to the dispatch vector .X
for the C-X prefix character.
The profile is a file containing 512+128 characters, each E or D.
We disable each command whose character is a D and save the previous meaning in
order to support reinstatement of original.
Returns -1 if the profile file exists, 0 if not.  With a numarg, assumes that
it is supposed to be setting up for creating a profile file if none exists and
returns -2.  The variable Novice Profile File holds the file name to read in.
S Create the database of flags and pointers.
Standard Initial Definitions is a q-vector holding the original definitions for
the keys when the library is first loaded.  Standard Working Definitions is the
q-vector for holding the information that applies when keys have been disabled.
Similarly, Control-X Initial Definitions and Control-X Working Definitions
contain the original and actual functions for C-X prefix subcommands.
Element 0 of the q-vector is 0 for the standard 9-bit commands and contains the
character for C-X for the Control-X prefix commands.  Element 1
points to a q-vector containing the pointers to the functions that the keys
actually run.  Element 2 points to a q-vector containing the "backup" functions
which are 0 unless the command has been disabled.  Element 3 is a string
containing the E/D profile.  Value E means the key operates normally; D means
that it is disabled.  These structures are deliberately redundant.
Numarg means allow reinitializing the Working Definitions structures. [C Disable a particular command character.
Prompts for you to type the key to be disabled.  Asks for confirmation.
Some keys cannot be disabled because doing so would prevent proper EMACS
operation.  It decides.  (S Turn off some commands.
Takes any number of string args, each specifying a command to be turned off,
as a q-register name (such as ...W for C-M-W, or ..![ for M-).  Uses the
string returned by & Read Q-reg Name, which returns the right thing for C-X
subcommands.  These commands are disabled until the user tries to use them and
asks for them to be enabled again.  A null string argument terminates the
call.  7S Turn off a working command.
Takes two args, indicating where the command information is.  Precomma arg is
index into the dispatch vectors; numarg is a qvector containing pointers to the
various other qvectors involved.  Always checks to be
sure that this is a command that it makes sense to disable.  S Record user's profile of disabled commands.
We write the profile as 512+128 characters, each E or D for enabled or
disabled, into the file <uname> EPRFIL or EMACS.PROFILE.  No args.  The
variable Novice Profile File should contain the file name to use.
S Turn on a disabled command.
Takes two args, indicating where the command information is.  Precomma arg is
index into the dispatch vectors; numarg is a qvector containing pointers to the
various other qvectors involved.  Notifies if the command being requested is
not actually disabled (that is, if its backup pointer is 0) by returning 0 if
everything is OK and a string pointer otherwise.  ^R This function runs when you press a disabled key.
To turn a disabled key back on, press it, and answer "Y" at the prompt.

The original command runs the function q0,(q:(q:Control-X Working Definitions(2))(30f0f"lw :i*Invalid subcommand.fsERR'+1:g0))m(m.mDescribe)  U^R This function runs when you press a disabled key.
To turn a disabled key back on, try to use it and answer "Y".

The original command q0,(q:(q:Standard Working Definitions(2))(q0))m(m.m^R Describe)S Internal function to handle general disabling stuff.
Handles prompting and showing documentation.  Is called by ^R Disabled Command
and ^R Disabled Prefix Command.  Expects some standard q-registers from caller.
 0: the index into the actual command vector
 3: the actual command pointer
 4: the structure of definitions
 5: the command code, 0 to 639
 7: a macro that runs the right full documenter
 8: a macro that runs the right brief documenter
 9: stack pointer for unwinding   ??is that really sensible??
zC Restore the default bindings of all keys.
Restores any commands that have been disabled, sets the Disabled Command
Definitions Qvector to its initial state, and saves a bland profile file.
Inhibits saving the profile file if numarg exists.  !C Make all commands run the disabler function.
This is for maintainers who are building new environments for people.  It is
much easier to turn a few things on again than to figure out the 501 things
that need to be turned off.  This does not touch the self-inserting characters,
the undefined commands, or a few commands that are necessary in order for EMACS
to operate correctly, like ^R Quit.  The list of things that are not
affected is in the variable Dont Touch These.  A numarg means to do it
quietly, with no user message.  ^C Modify or create a disable profile file.
This prompts for the name of the file to be modified.  The default file to use
is EMACS.PROFILE in the connected directory.  This file gets created if it
doesn't exist already.  This function does not affect the present disable
state of the job that is running.  That is, it saves the current key profile
and restores it when finished.  It also turns off the data saving and profile
saving while the tuning is being done, to avoid spurious data and surprises
later in the profile.  NUMARG applies only when no EMACS.PROFILE exists.  It
means to create the profile file with everything initially off.  With no
numarg, the initial state for a new file is to leave everything on.  9S Copy from actuals of standard into ^R Q-regs.
This assumes that the current contents of Standard Working Definitions is
correct and copies from there into the relevant Q-regs.  kS Select buffer showing current key bindings.
This is a subroutine to keep it from being reported as a recursive editing
level.  No arguments.  NOVICE installs this function in fs help mac$ during
the setup.  It creates and keeps selected a window for viewing documentation.
Size of window when not selected is in variable Help Window Visible (0 is OK).
	S Creates a string containing survey of keys.
Returns the string for further munging.
Format to be decided.  Usage to be decided.  :S Check each element of Dont Report These qvec -- in N?S Returns Q vector needed for NOVICE command fiddling.
Has a 4 element Qvector.  No arg or 0 means standard type.  Otherwise, the arg
is taken to be the prefix character.  A precomma arg means use the structure
it points to to initialize the new one.
 Element Contents
 0       "type", meaning 0 for standard kind or prefix character code
 1       Qvector containing the actual commands to run for key press
 2       Qvector containing the backup commands in case actual holds disabler
 3       String containing the E/D flags for the profile
This correctly makes new copies of the q-vecs and string BUT needs to be
changed if this data structure happens to change, especially in levels.
JS Save this data point in file.
 numarg indicates choice code to save.
 precomma arg is the index of the character being processed.  0-511 is for
   standard ones, 512-639 is for C-X prefix ones.  If precomma arg is a string
   pointer, then this is a different kind of entry, saving a multiword entry
   whose contents are the string pointer.
Bit assignments:
 34     Flag for multiword entry.  Word count is in rightmost 10 bits.
 33-26  User code (mask 177400000000.)
 25-14  Current teco runtime in seconds (mask 377740000.)
 13-10  Choice made (mask 36000.)
 9      Flag for prefix character (mask 1000.)
 8-0    Character number index (mask 777.)
Append this stuff to the appropriate file.  oS Return string containing data from data file.
Converts stuff to string format from packed word format.
{Version of Charprint for NOVICE library.
Numarg is a standard command code (0 to 511).  Precomma arg is a string to
prefix to the character name -- e.g. pass it C-X for a prefix subcommand.
It returns a string to print for the character name.  uRuns subset of the usual EMACS documentation function.
This was designed for use in the NOVICE package.  Initial tests showed that
features like tecord, info, and recursive levels were just too much help to be
useful to a real beginner.  9C Find what command would run a function.
This is a Where Is function for the NOVICE library.  The standard Where Is
cannot be used with NOVICE because it does not report bindings for disabled
commands.  This function really should be called "Where Would Be"...
Numarg is the function pointer; any string arg is the function name.
Semantics and code for precomma arg comes from original Where Is and is a 
complete mystery to me.  S Force a window to a certain target size.
NUMARG says which window is being specified.  Precomma arg holds the target
size for the window.  0 means that the window will end up disappearing;
anything too large means that the window takes over the screen.  & Setup Novice Library
& Kill Novice Library
& Load Disable Profile
& Ensure Disable Vars
Disable Command
& Disable Commands
& Disable One Command
& Save Disable Profile
& Enable One Command
^R Disabled Prefix Command
^R Disabled Command
& Disable Handler
Enable All Commands
Turn Off Everything
Tune Profile
& Ensure ^R Q-regs
& What Keys
& Return Disable Status
& Check Black List
& Make Structure
& Grab Novice Data
& Return Novice Data
& Novice Charprint
^R Mini Documentation
Where Is
& Ensure Window Size
T+8+fq(+4)[20[3
<%3,-q2f2u3q3&1@;q3"l0'>
f[BBindq3-1*5,q3*5g2q:..o(0)+q2