home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d7xx / d770 / uedit.lha / Uedit / Ustar.LZH / UstarConfig!B < prev    next >
Text File  |  1992-08-07  |  90KB  |  2,515 lines

  1.          Command key translation
  2.  
  3.  
  4. For Learn mode or marking - action depends on prefix key
  5. <ctl-kp0: runKey(ctl-0) >
  6. For Learn mode or marking - action depends on prefix key
  7. <ctl-0:
  8. if (eqNum(n84,0)) { runKey(virtual-kp7) return }
  9. putMsg(" ")
  10. if (eqNum(n84,10)) { equateNum(n84,0) 
  11.    equateNum(n99,70) runKey(virtual-`) return }
  12. if (eqNum(n84,20)) { 
  13.    equateNum(n99,70) runKey(virtual-`) return }
  14. if (eqNum(n84,30)) { runKey(virtual-kp7) return }
  15. if (eqNum(n84,40)) { equateNum(n84,0) while (abortPrint) nothing }
  16. >
  17.  
  18.  
  19. Internal key - mark/goto position in file
  20. <virtual-`: 
  21. if (eqNum(n84,10)) {
  22.    putMsg("Packing/Marking...") locToIndex(curFile,n[n99],atCursor) }
  23. else {
  24.    putMsg("Packing/Locating...") indexToLoc(curFile,atCursor,n[n99]) 
  25. }
  26. equateNum(n84,0) putMsg(" ") return 
  27. >
  28.  
  29. Internal key - mark/goto position in file (by old lines method; historical)
  30.  virtual-`: 
  31. if (eqNum(n84,10)) locToLine(curFile,n[n99],atCursor) 
  32. else {
  33.    putMsg("Locating...") lineToLoc(curFile,atCursor,n[n99]) 
  34.    moveCursor(curFile,downLine)   .. correction by 1
  35.    if (not onScreen(atCursor)) vScroll(atCursor)  putMsg(" ") }
  36. equateNum(n84,0) return 
  37. >
  38.  
  39.  
  40. For Learn mode or marking - action depends on prefix key
  41. <ctl-kp1: runKey(ctl-1) >
  42. For Learn mode or marking - action depends on prefix key
  43. <ctl-1:
  44. if (eqNum(n84,0)) { 
  45.    equateNum(n85,0) .. no macro stuff for manually-activated learn mode
  46.    if (not getFlag(curFile,learnMode)) putMsg("*** Learn Started! ***")
  47.    else putMsg("--- Learn Cancelled! ---") 
  48.    flipFlag(curFile,learnMode) return }
  49. putMsg(" ")
  50. if (eqNum(n84,10)) { ..equateNum(n84,0) 
  51.    equateNum(n99,71) runKey(virtual-`) return }
  52. if (eqNum(n84,20)) { 
  53.    equateNum(n99,71) runKey(virtual-`) return }
  54. if (eqNum(n84,30)) { equateNum(n84,0)
  55.    putMsg("Multiplier for next single command:") 
  56.    inputNum(cmdMultiplier) return }    
  57. if (eqNum(n84,40)) restartPrint
  58.  
  59.  
  60. For Learn mode or marking - action depends on prefix key
  61. <ctl-kp2: runKey(ctl-2) >
  62. For Learn mode or marking - action depends on prefix key
  63. <ctl-2:
  64. if (eqNum(n84,0)) { if (getFlag(curFile,learnMode)) { 
  65.       putMsg("+++ I've Learned it! +++") 
  66.       if (gtNum(n85,0)) delay(5) }
  67.    runLearn  
  68.    if (gtNum(n85,0)) { equateNum(n98,n85) equateNum(n85,0)
  69.       freeBuf(buf99) insertRgn(buf99,sFile,"Macro ",all) insertChar(buf99,n98)
  70.       freeBuf(buf98) insertRgn(buf98,sFile,"Saving ",all)
  71.       insertRgn(buf98,atCursor,buf99,all) putMsg(buf98)
  72.       if (not saveLearn(n98)) { putMsg("SaveLearn error") returnFalse }
  73.       insertChar(buf99,":") insertChar(buf99," ")
  74.       putMsg("Optional description for this macro:")
  75.       inputString(buf99)
  76.       if (not isEmpty(buf99)) {
  77.          insertRgn(buf99,sFile,"\"",all) insertRgn(buf99,eFile,"\"",all)
  78.          freeBuf(buf98) insertRgn(buf98,sFile,"Filenote Learn",all)
  79.          toWord(buf98,n98) insertRgn(buf98,atCursor,"! ",all)
  80.          insertRgn(buf98,atCursor,buf99,all)
  81.          freeBuf(buf82) 
  82.          if (not execute(buf82,buf98)) { 
  83.             putMsg("Error - DOS Filenote") returnFalse }
  84.       }
  85.    }
  86.    return }
  87. putMsg(" ")
  88. if (eqNum(n84,10)) { 
  89.    equateNum(n99,72) runKey(virtual-`) return }
  90. if (eqNum(n84,20)) { 
  91.    equateNum(n99,72) runKey(virtual-`) return }
  92. if (eqNum(n84,30)) { equateNum(n84,0) putMsg("Load Learn #:")
  93.    if (inputNum(n99)) if (not loadLearn(n99)) {
  94.       putMsg("ERROR - Couldn't load Learn file.") beepDisplay returnFalse }
  95.    return }
  96. if (eqNum(n84,40)) runKey(virtual-kp7) 
  97. >
  98.  
  99.  
  100. Set/goto mark - depends on prefix key
  101. <ctl-kp3: runKey(ctl-3)> 
  102. Set/goto mark - depends on prefix key
  103. <ctl-3:
  104. putMsg(" ")
  105. if (eqNum(n84,10)) {
  106.    equateNum(n99,73) runKey(virtual-`) return }
  107. if (eqNum(n84,20)) { 
  108.    equateNum(n99,73) runKey(virtual-`) return }
  109. else runKey(virtual-kp7) 
  110.  
  111.  
  112. Set/goto mark - depends on prefix key
  113. <ctl-kp4: runKey(ctl-4)> 
  114. Set/goto mark - depends on prefix key
  115. <ctl-4:
  116. putMsg(" ")
  117. if (eqNum(n84,10)) {
  118.    equateNum(n99,74) runKey(virtual-`) return }
  119. if (eqNum(n84,20)) { 
  120.    equateNum(n99,74) runKey(virtual-`) return }
  121. else runKey(virtual-kp7) 
  122.  
  123.  
  124. Set/goto mark - depends on prefix key
  125. <ctl-kp5: runKey(ctl-5)> 
  126. Set/goto mark - depends on prefix key
  127. <ctl-5:
  128. putMsg(" ")
  129. if (eqNum(n84,10)) {
  130.    equateNum(n99,75) runKey(virtual-`) return }
  131. if (eqNum(n84,20)) { 
  132.    equateNum(n99,75) runKey(virtual-`) return }
  133. else runKey(virtual-kp7) 
  134.  
  135.  
  136. Set/goto mark - depends on prefix key 
  137. <ctl-kp6: runKey(ctl-6)> 
  138. Set/goto mark - depends on prefix key
  139. <ctl-6:
  140. if (eqNum(n84,0)) {       .. get rid of eol's (merge lines)
  141.    if (not is(curFile,eLine)) moveCursor(curFile,eLine)
  142.    moveCursor(curFile,sChar)
  143.    if (not is(curFile,space)) 
  144.       { moveCursor(curFile,eChar) insertChar(curFile,32) }
  145.    else moveCursor(curFile,eChar) 
  146.    clearChar(curFile)
  147.    if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  148.    return   
  149. }
  150. putMsg(" ")
  151. if (eqNum(n84,10)) {
  152.    equateNum(n99,76) runKey(virtual-`) return }
  153. if (eqNum(n84,20)) { 
  154.    equateNum(n99,76) runKey(virtual-`) return }
  155. else runKey(virtual-kp7) 
  156. >
  157.  
  158.  
  159. Set/goto mark - depends on prefix key
  160. <ctl-kp7: runKey(ctl-7)> 
  161. Set/goto mark - depends on prefix key
  162. <ctl-7:
  163. putMsg(" ")
  164. if (eqNum(n84,10)) {
  165.    equateNum(n99,77) runKey(virtual-`) return }
  166. if (eqNum(n84,20)) { 
  167.    equateNum(n99,77) runKey(virtual-`) return }
  168. else runKey(virtual-kp7) 
  169.  
  170.  
  171. Set/goto mark - depends on prefix key
  172. <ctl-kp8: runKey(ctl-8)> 
  173. Set/goto mark - depends on prefix key
  174. <ctl-8:
  175. putMsg(" ")
  176. if (eqNum(n84,10)) {
  177.    equateNum(n99,78) runKey(virtual-`) return }
  178. if (eqNum(n84,20)) { 
  179.    equateNum(n99,78) runKey(virtual-`) return }
  180. else runKey(virtual-kp7) 
  181.  
  182.  
  183. Set/goto mark - depends on prefix key
  184. <ctl-kp9: runKey(ctl-9)> 
  185. Set/goto mark - depends on prefix key
  186. <ctl-9:
  187. putMsg(" ")
  188. if (eqNum(n84,10)) {
  189.    equateNum(n99,79) runKey(virtual-`) return }
  190. if (eqNum(n84,20)) { 
  191.    equateNum(n99,79) runKey(virtual-`) return }
  192. else runKey(virtual-kp7) 
  193.  
  194.  
  195. Simpler version of ctl-a code that doesn't include complete WS emulation
  196. for punctuation & other details. Replace first section of ctl-a code to use.
  197.    equateNum(n98,2)
  198.    while (moveCursor(curFile,sChar)) {
  199.       if (is(curFile,whiteSpace)) {
  200.          if (eqNum(n98,1)) { moveCursor(curFile,eChar) return }
  201.          if (is(curFile,eLine)) return
  202.       }
  203.       else {
  204.          if (eqNum(n98,2)) moveCursor(curFile,sChar)
  205.          equateNum(n98,1)
  206.       }
  207.    }
  208.  
  209. ctl-a flag n98: 0-init, 1-whitespace, 2-char, 3-punct
  210. ctl-a flag n99: 0-init/no transition  1-X transition
  211. Word Left; other actions depend on prefix key
  212. <ctl-a: 
  213. if (eqNum(n84,0)) { 
  214.    equateNum(n98,0) equateNum(n99,0)
  215.    goto label(2)
  216.    while (moveCursor(curFile,sChar)) {
  217.       label(2)
  218.       if (not is(curFile,";")) if (not is(curFile,":")) 
  219.          if (not is(curFile,".")) if (not is(curFile,",")) 
  220.             if (not is(curFile,"?")) if (not is(curFile,"!")) goto label(1)
  221.          if (not eqNum(n98,0)) {
  222.             if (geNum(n98,2)) if (eqNum(n99,1)) { 
  223.                moveCursor(curFile,eChar) return }
  224.             equateNum(n99,1)
  225.          }
  226.          equateNum(n98,3) goto label(3)
  227.       label(1)
  228.       if (not is(curFile,whiteSpace)) {
  229.          if (not eqNum(n98,0)) equateNum(n99,1)
  230.          equateNum(n98,2) goto label(3)
  231.       }
  232.       if (is(curFile,whiteSpace)) {
  233.          if (not eqNum(n98,0)) {
  234.             if (geNum(n98,2)) if (eqNum(n99,1)) { 
  235.                moveCursor(curFile,eChar) return }
  236.             if (is(curFile,eLine)) return
  237.          }
  238.          equateNum(n98,1)
  239.       }
  240.       label(3)
  241.    }
  242.    return
  243. }
  244. putMsg(" ")
  245. if (eqNum(n84,10)) { equateNum(n84,0)
  246.    if (getFlag(curFile,changed)) equateNum(n99,5) else equateNum(n99,0)
  247.    putMsg("Save buffer as:") freeBuf(buf99) freeBuf(buf96) 
  248.    getFileName(buf96,curFile) 
  249.    insertRgn(buf99,eFile,buf96,all) moveCursor(buf99,sFile) 
  250.    if (inputString(buf99)) if (not isEmpty(buf99)) { 
  251.       setFileName(curFile,buf99) 
  252.       if (not saveFile(curFile)) { 
  253.          putMsg("ERROR - couldn't save file.") beepDisplay returnFalse } }
  254.    else { putMsg("No save!") returnFalse }
  255.    setFileName(curFile,buf96)
  256.    if (eqNum(n99,0)) if (getFlag(curFile,changed)) flipFlag(curFile,changed)
  257.    if (eqNum(n99,5)) if (not getFlag(curFile,changed))
  258.       flipFlag(curFile,changed) 
  259.    return }
  260. if (eqNum(n84,20)) { equateNum(n84,0) 
  261.    moveCursor(buf89,sFile) putMsg("Find:") inputString(buf89) 
  262.    moveCursor(buf89,eFile) putMsg("Replace with:") inputString(buf88) 
  263.    equateNum(n81,11) runKey(virtual-kp5) return }
  264. if (eqNum(n84,30)) { runKey(virtual-kp7) return }
  265. if (eqNum(n84,40)) { equateNum(n84,0) 
  266.    printerCode(curFile,15,0,0) updateDisplay putMsg("Elite pitch On") }
  267. >
  268.  
  269.  
  270. Reformat; other actions depend on prefix key
  271. <ctl-b:
  272. if (eqNum(n84,0))  { runKey(virtual-kp2) return }
  273. putMsg(" ")
  274. if (eqNum(n84,10)) { equateNum(n84,0) 
  275.    equateLoc(curFile,sHilite,atCursor) refreshDisplay return }
  276. if (eqNum(n84,20)) { equateNum(n84,0)
  277.    if (gtLoc(curFile,eHilite,sHilite)) {
  278.       moveCursor(curFile,sHilite) 
  279.       if (not onScreen(atCursor)) vScroll(atCursor) }
  280.    else { putMsg("No block!") returnFalse } 
  281.    return }
  282. if (eqNum(n84,30)) { equateNum(n84,0) flipFlag(curFile,busies) return }
  283. if (eqNum(n84,40)) { equateNum(n96,2) runKey(virtual-p) }
  284. >
  285.  
  286.    
  287. Page down; other actions depend on prefix key
  288. <ctl-c:
  289. if (eqNum(n84,0)) { moveCursor(curFile,ePage) vScroll(atCursor)
  290.    if (not thisKey) refreshDisplay
  291.    if (is(curFile,eFile)) returnFalse else returnTrue }
  292. putMsg(" ")
  293. if (eqNum(n84,10)) { equateNum(n84,0)
  294.    if (gtLoc(curFile,eHilite,sHilite)) { 
  295.       if (not getFlag(curFile,columnar)) {
  296.          freeBuf(buf86)
  297.          insertRgn(buf86,sFile,curFile,hilite)
  298.          moveCursor(curFile,sChar) equateLoc(curFile,sHilite,atCursor)
  299.          moveCursor(curFile,eChar)
  300.          insertRgn(curFile,atCursor,buf86,all)
  301.          equateLoc(curFile,eHilite,atCursor) incLoc(curFile,sHilite)
  302.          moveCursor(curFile,sHilite)
  303.          if (not onScreen(atCursor)) vScroll(atCursor) refreshDisplay }
  304.       else {
  305.          freeBuf(buf85)        
  306.          copyColData(buf85,sFile,curFile,hilite,n80)
  307.          copyColData(curFile,atCursor,buf85,all,n80) } } 
  308.    else { putMsg("No block!") returnTrue } 
  309.    return }
  310. if (eqNum(n84,20)) { equateNum(n84,0) 
  311.    moveCursor(curFile,eFile) vScroll(atCursor) return }
  312. if (eqNum(n84,30)) {  equateNum(n84,0)                 .. center line of text
  313.    if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  314.    if (is(curFile,formFeed)) goto label(2)   .. also centers all FF lines
  315.    if (is(curFile,eLine)) { moveCursor(curFile,downLine) returnTrue }
  316.    if (is(curFile,eFile)) returnFalse
  317.  
  318.    while (nothing) {        .. clear leading whitespace
  319.       if (is(curFile,formFeed)) goto label(2)
  320.       if (is(curFile,eLine)) returnTrue
  321.       if (is(curFile,eFile)) returnFalse
  322.       if (not is(curFile,space)) if (not is(curFile,9)) goto label(1)
  323.       clearChar(curFile) }
  324.    label(1)
  325.    moveCursor(curFile,eLine) 
  326.    if (is(curFile,eFile)) insertChar(curFile,eLine) 
  327.    moveCursor(curfile,sChar)
  328.    while (nothing) {        .. clear trailing whitespace
  329.       if (is(curFile,formFeed)) goto label(2)
  330.       if (is(curFile,sLine)) goto label(2)
  331.       if (not is(curFile,space)) if (not is(curFile,9)) goto label(2)
  332.       clearChar(curFile) moveCursor(curFile,sChar) }
  333.    label(2)
  334.    locToCol(curfile,n99,atCursor)      .. get length of line
  335.    getLocal(curFile,n98,lineLength)    .. get local line length 
  336.    if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  337.    sub(n97,n98,n99)
  338.    if (gtNum(n97,0)) {                 .. and center it
  339.       div(n97,n97,2)
  340.       do (n96,1,n97) insertChar(curFile," ") }
  341.    moveCursor(curFile,downLine)        .. added - WS4 compatibility 
  342.    if (not is(curFile,sLine)) moveCursor(curFile,sLine)   
  343.    return }
  344. if (eqNum(n84,40)) { equateNum(n84,0)
  345.    putMsg("Enter Text Color (30-39):")
  346.    equateNum(n98,30)    .. default text color = black
  347.    if (inputNum(n99)) if (geNum(n99,30)) if (geNum(39,n99)) equateNum(n98,n99)
  348.    putMsg("Enter Background (paper) color (40-49):")
  349.    equateNum(n97,47)    .. default paper color = white ? may need to adjust
  350.    if (inputNum(n99)) if (geNum(n99,40)) if (geNum(49,n99)) equateNum(n97,n99)
  351.    printerCode(curFile,12,n98,0) 
  352.    printerCode(curFile,13,n97,0) updateDisplay
  353.    putMsg(" ") }
  354. >
  355.  
  356.  
  357. Move right; other actions depend on prefix key
  358. <ctl-d:
  359. if (eqNum(n84,0)) { moveCursor(curFile,eChar) return }
  360. putMsg(" ")
  361. if (eqNum(n84,10)) {
  362.    equateNum(n84,0)
  363.    putMsg("Load Filename:")
  364.    ..freeBuf(buf77)
  365.    inputString(buf77) 
  366.    if (isEmpty(curFile)) freeBuf(curFile)
  367.    if (not isEmpty(buf77)) if (loadFile(buf77)) equateNum(n82,curFile)
  368.    return } 
  369. if (eqNum(n84,20)) { equateNum(n84,0)
  370.    if (not is(curFile,eLine)) moveCursor(curFile,eLine) return }
  371. if (eqNum(n84,30)) { equateNum(n84,0) 
  372.    flipFlag(curFile,spooks) refreshDisplay return }
  373. if (eqNum(n84,40))  { equateNum(n96,3) runKey(virtual-p) }
  374. >
  375.  
  376.  
  377. Move up; other actions depend on prefix key
  378. <ctl-e: 
  379. if (eqNum(n84,0)) { moveCursor(curFile,upLine) return }
  380. putMsg(" ")
  381. if (eqNum(n84,10)) {
  382.    equateNum(n84,0)
  383.    putMsg("Rename buffer to:")
  384.    getFileName(buf77,curFile) moveCursor(buf77,sFile) 
  385.    if (inputString(buf77)) setFileName(curFile,buf77)
  386.    return }
  387. if (eqNum(n84,20)) { equateNum(n84,0) 
  388.    moveCursor(curFile,sPage) return } 
  389. if (eqNum(n84,30)) { runKey(virtual-kp8) return }
  390. if (eqNum(n84,40)) runKey(virtual-kp8) 
  391. >
  392.  
  393. Right word; other actions depend on prefix key
  394. <ctl-f:
  395. if (eqNum(n84,0)) { 
  396.    equateNum(n98,2)  
  397.    if (is(curFile,whiteSpace)) equateNum(n98,1)
  398.    goto label(2)
  399.    while (moveCursor(curFile,eChar)) {      
  400.       if (is(curFile,eLine)) return
  401.       if (not is(curFile,whiteSpace)) { 
  402.          if (eqNum(n98,1)) return
  403.          if (is(curFile,sLine)) return
  404.          label(2)   .. remove label(2) stuff & next 5 lines for no WS punct.
  405.          if (not is(curFile,";")) if (not is(curFile,":")) 
  406.             if (not is(curFile,".")) if (not is(curFile,",")) 
  407.                if (not is(curFile,"?")) if (not is(curFile,"!")) goto label(1)
  408.          equateNum(n98,1)
  409.          label(1)
  410.       }
  411.       else equateNum(n98,1)
  412.    }
  413.    return 
  414. }
  415. putMsg(" ")
  416. if (eqNum(n84,10)) { equateNum(n84,0) runKey(shftCtl-f) return }
  417. if (eqNum(n84,20)) { equateNum(n84,0)
  418.    putMsg("Find:") moveCursor(buf89,sFile) inputString(buf89)
  419.    equateNum(n81,1) runKey(virtual-kp5) return }
  420. if (eqNum(n84,30)) { runKey(virtual-kp8) return }
  421. if (eqNum(n84,40)) { equateNum(n84,0) 
  422.    freeBuf(buf89) insertRgn(buf89,sFile,"?$??",all)
  423.    runKey(shftAlt-f) }
  424. >
  425.  
  426. Delete character; other actions depend on prefix key
  427. <ctl-g:
  428. if (eqNum(n84,0)) { clearChar(curFile) return }
  429. putMsg(" ")
  430. if (eqNum(n84,10)) {
  431.    equateNum(n84,0)
  432.    if (gtLoc(curFile,eHilite,sHilite)) { 
  433.       if (not getFlag(curFile,columnar)) {
  434.          freeBuf(buf86) insertRgn(buf86,sFile,curFile,hilite) }
  435.       else { freeBuf(buf85) copyColData(buf85,sFile,curFile,hilite,n80) } }
  436.    else { putMsg("No block!") returnFalse } 
  437.    return }
  438. if (eqNum(n84,20)) { equateNum(n84,0)
  439.    putMsg("Character to find:") 
  440.    if (not getFlag(curFile,useKeys)) flipFlag(curFile,useKeys)
  441.    getChar(n99)
  442.    flipFlag(curFile,useKeys)
  443.    putMsg("Finding...")
  444.    while (moveCursor(curFile,eChar)) if (is(curFile,n99)) goto label(5)
  445.    label(5)
  446.    putMsg(" ") return }
  447. if (eqNum(n84,30)) { equateNum(n84,0) flipFlag(curFile,autoIndent)
  448.    if (getFlag(curFile,autoIndent)) putMsg("Auto Indent ON") 
  449.    else putMsg("No Auto Indent") 
  450.    return }
  451. if (eqNum(n84,40)) { equateNum(n84,0) putMsg(
  452.    "General-purpose printer control code entry (see Help). Code #:")
  453.    if (inputNum(n99)) if (geNum(n99,0)) if (geNum(75,n99)) {
  454.       equateNum(n98,0) equateNum(n97,0)
  455.       if (eqNum(n99,12)) goto label(1)
  456.       if (eqNum(n99,13)) goto label(1)
  457.       if (eqNum(n99,48)) goto label(2)
  458.       if (eqNum(n99,57)) goto label(2)
  459.       if (eqNum(n99,58)) goto label(2)
  460.       if (eqNum(n99,75)) goto label(2)
  461.       if (eqNum(n99,64)) goto label(3)
  462.       if (eqNum(n99,65)) goto label(3)
  463.       goto label(4)
  464.  
  465.       label(2) putMsg("N value:") inputNum(n98) goto label(4)
  466.       label(3) putMsg("1st N value:") inputNum(n98)
  467.          putMsg("2nd N value:") inputNum(n97)
  468.       label(4) printerCode(curFile,n99,n98,n97) 
  469.          updateDisplay putMsg(" ") return
  470.       label(1) putMsg("Use ^PC for color") returnFalse }
  471.    putMsg(" ") returnFalse }
  472. >
  473.  
  474.  
  475. Actions depend on prefix key
  476. <ctl-h:
  477. if (eqNum(n84,0)) { moveCursor(curFile,sChar) clearChar(curFile) return }
  478. putMsg(" ")
  479. if (eqNum(n84,10)) { equateNum(n84,0) 
  480.    equateLoc(curFile,sHilite,eHilite) refreshDisplay  return }
  481. if (eqNum(n84,20)) { equateNum(n84,0)
  482.    putMsg("Character to find:") 
  483.    if (not getFlag(curFile,useKeys)) flipFlag(curFile,useKeys)
  484.    getChar(n99)
  485.    flipFlag(curFile,useKeys)
  486.    putMsg("Finding...")
  487.    while (moveCursor(curFile,sChar)) if (is(curFile,n99)) goto label(1)
  488.    label(1)
  489.    putMsg(" ") return }
  490. if (eqNum(n84,30)) { equateNum(n84,0) runKey(altCtl-h) return }
  491. if (eqNum(n84,40))  runKey(virtual-kp8) 
  492. >
  493.  
  494. Tab; other actions depend on prefix key
  495. <ctl-i:
  496. if (eqNum(n84,0)) { runKey(normal-tab) return }
  497. putMsg(" ")
  498. if (eqNum(n84,10)) { equateNum(n84,0) 
  499.    if (eqNum(n80,0)) { equateNum(n80,1) 
  500.    putMsg("Column INSERT mode: ^KV,^KC,^U insert; ^KY removes") }
  501.    else { equateNum(n80,0) 
  502.    putMsg("Column REPLACE mode: ^KV,^KC,^U overlay; ^KY space-fills") } 
  503.    return } 
  504. if (eqNum(n84,20)) { equateNum(n84,0) putMsg("Go to page #:")
  505.    if (inputNum(n99)) {
  506.       putMsg("Finding page...") gotoPage(curFile,n99)  putMsg(" ") } 
  507.    return }
  508. if (eqNum(n84,30)) { equateNum(n84,0) 
  509.    putMsg(
  510.    "Use mouse click/drag, Tab, Space, BS, Del (otherkey=quit,R-Esc=abort)")
  511.    if (not getFlag(curFile,useKeys)) flipFlag(curFile,useKeys) 
  512.    setRuler  flipFlag(curFile,useKeys) 
  513.    putMsg(" ")  return }
  514. if (eqNum(n84,40)) { equateNum(n84,0) 
  515.    getLocal(curFile,n96,tabTable)  .. save current table
  516.    setLocal(curFile,tabTable,0) .. set to predefined 8-stop table
  517.    runKey(normal-tab)              .. tab to next 8-stop tab
  518.    setLocal(curFile,tabTable,n96)  .. restore previous tab table
  519. }
  520. >
  521.  
  522.  
  523. Help; other actions depend on prefix key
  524. <ctl-j:
  525. if (eqNum(n84,0)) { runKey(normal-help) return }
  526. putMsg(" ")
  527. if (eqNum(n84,10)) { runKey(ctl-q) return }
  528. if (eqNum(n84,20)) { runKey(virtual-kp7) return }
  529. if (eqNum(n84,30)) { equateNum(n84,0) flipFlag(curFile,rightJustify)
  530.    if (getFlag(curFile,rightJustify)) putMsg("Right-Justify ON")
  531.    else putMsg("No Right-Justify") 
  532.    return }
  533. if (eqNum(n84,40)) { equateNum(n84,0) 
  534.    getLocal(curFile,n99,pageLines) freeBuf(buf99) toWord(buf99,n99) 
  535.    insertRgn(buf99,sFile,"Lines/page (now ",all) 
  536.    insertRgn(buf99,eFile,"):",all) putMsg(buf99)
  537.    if (inputNum(n99)) if (gtNum(n99,0)) {
  538.       setLocal(curFile,pageLines,n99) equateNum(pageLines,n99) } } 
  539. >
  540.  
  541.  
  542. Repeat last Find/Replace; other actions depend on prefix key
  543. <ctl-l:
  544. if (eqNum(n84,0)) { runKey(virtual-kp6) return }
  545. else putMsg(" ")
  546. if (eqNum(n84,10)) { equateNum(n84,0)
  547.    freeBuf(buf98) 
  548.    if (not execute(buf98,"cd")) { 
  549.       putmsg("AmigaDOS CD command not found") beepDisplay returnFalse }
  550.    putMsg("Change default directory to (current shown; WorkBench won't work)")
  551.    moveCursor(buf98,eFile) moveCursor(buf98,sChar) clearChar(buf98) 
  552.    if (inputString(buf98)) 
  553.       if (not changeDir(buf98)) {
  554.          putMsg(
  555.          "CD returned an error - check to make sure is valid Disk or Directory.")
  556.          insertRgn(buf98,eFile," ??",all) 
  557.          putMsg(buf98) beepDisplay delay(10) }
  558.       else { insertRgn(buf98,sFile,"Current Dir is ",all) putMsg(buf98) }
  559. }
  560. if (eqNum(n84,20)) { equateNum(n84,0) freeBuf(buf98) runKey(virtual-l)
  561.    return }
  562. if (eqNum(n84,30)) { runKey(virtual-kp8) return }
  563. if (eqNum(n84,40)) { equateNum(n84,0) insertChar(curFile,12) }
  564. >
  565.  
  566.  
  567. Speller - very rough
  568. <virtual-l: equateNum(n84,0)
  569. if (isEmpty(buf98)) {
  570.    if (getFlag(curFile,changed)) {
  571.       if (not askYesNo("MicroSpell this file? (must save to disk; is slow)")) 
  572.          returnFalse
  573.       if (not saveFile(curFile)) {
  574.          putMsg("ERROR - couldn't save this file") beepDisplay 
  575.       }
  576.    }
  577.    else if (not askYesNo("MicroSpell this file? (is slow!!)")) returnFalse
  578.    getFileName(buf98,curFile)
  579. }
  580. else {
  581.    if (not askYesNo("MicroSpell this/these words? (is slow!!)")) returnFalse
  582.    freeBuf(buf99) insertRgn(buf99,sFile,buf98,all)
  583.    setFileName(buf99,"word-spell")
  584.    if (not saveFile(buf99)) { 
  585.       putMsg("Error - can't save temp file") returnFalse }
  586.    freeBuf(buf98) insertRgn(buf98,sFile,"word-spell",all) 
  587. }
  588. insertRgn(buf98,sFile,"run spell -d -w  ",all)
  589. putMsg("Check CLI for progress.  When done, load \"spell.lst\" for bad words")
  590. if (not execute(" ",buf98)) putMsg("Error - couldn't run speller")
  591. >
  592.  
  593.  
  594. Same as Return key; other actions depend on prefix key
  595. <ctl-m: if (eqNum(n84,0)) { runKey(normal-return) return }
  596. putMsg(" ")
  597. if (eqNum(n84,10)) { equateNum(n84,0)    
  598.    if (gtLoc(curFile,eHilite,sHilite)) {      
  599.       runKey(alt-0)      
  600.       equateLoc(curFile,locA,eHilite) ..decLoc(curFile,locA)      
  601.       if (not getFlag(curFile,columnar)) {         
  602.          equateLoc(curFile,atCursor,sHilite)         decLoc(curFile,locA)
  603.          while (not gtLoc(curFile,atCursor,locA)) {            
  604.             if (is(curFile,digit)) runKey(virtual-=)
  605.             else moveCursor(curFile,eChar)         
  606.          }      
  607.       }      
  608.       else {         
  609.          locToCol(curFile,n95,sHilite) locToCol(curFile,n96,locA)         
  610.          equateLoc(curFile,atCursor,sHilite)         
  611.          while (not gtLoc(curFile,atCursor,locA)) {            
  612.             while (nothing) {               
  613.                if (gtLoc(curFile,atCursor,locA)) goto label(1)               
  614.                locToCol(curFile,n97,atCursor) ..add(n97,n97,1)
  615.                if (geNum(n97,n96)) goto label(1)
  616.                if (is(curFile,digit)) runKey(virtual-=)
  617.                else moveCursor(curFile,eChar)
  618.             }
  619.             label(1)
  620.             moveCursor(curFile,downLine)
  621.             colToLoc(curFile,atCursor,n95)
  622.          }
  623.       } 
  624.       equateLoc(curFile,atCursor,eHilite)
  625.       freeBuf(buf99) div(n97,n90,100)
  626.       if (gtNum(0,n90)) if (eqNum(n97,0)) insertChar(buf99,"-")
  627.       toWord(buf99,n97) insertChar(buf99,".")
  628.       if (gtNum(0,n90)) mul(n97,n90,-1) else equateNum(n97,n90)
  629.       mod(n97,n97,100) if (gtNum(10,n97)) insertChar(buf99,"0")
  630.       toWord(buf99,n97) 
  631.       insertRgn(buf99,sFile,"Total: ",all) 
  632.       insertRgn(buf99,eFile,"    Use alt-\ to get # into doc @ cursor.",all)
  633.       putMsg(buf99) 
  634.       if (not onScreen(atCursor)) vScroll(atCursor) 
  635.    } 
  636.    else { putMsg("No block!") returnFalse } 
  637.    return 
  638. }
  639. if (eqNum(n84,20)) { equateNum(n84,0)
  640.    freeBuf(buf82)
  641.    if (not execute(buf82,"Run xe")) { 
  642.       putMsg("Error - Couldn't run xe calculator for some reason")
  643.       beepDisplay returnFalse }
  644.    return }
  645. if (eqNum(n84,30)) { equateNum(n84,0) 
  646.    freeBuf(buf99) insertRgn(buf99,sFile,"Set n-variable # (default ",all)
  647.    toWord(buf99,n86) insertRgn(buf99,atCursor,"):",all) putMsg(buf99)
  648.    if (inputNum(n99)) equateNum(n86,n99) else equateNum(n99,n86)
  649.    freeBuf(buf99) insertRgn(buf99,sFile,"Set n",all) toWord(buf99,n99)
  650.    insertRgn(buf99,atCursor," to value (now ",all) 
  651.    toWord(buf99,n[n99]) insertRgn(buf99,atCursor,"):",all) putMsg(buf99)
  652.    equateNum(n98,n[n99])
  653.    if (not inputNum(n[n99])) equateNum(n[n99],n98)
  654.    return }
  655. if (eqNum(n84,40)) runKey(virtual-kp8) 
  656. >
  657.  
  658.  
  659. Insert empty line; other actions depend on prefix key
  660. <ctl-n:
  661. if (eqNum(n84,0)) { 
  662.    insertChar(curFile,eLine) moveCursor(curFile,sChar) 
  663.    returnTrue }
  664. putMsg(" ")
  665. if (eqNum(n84,10)) { equateNum(n84,0) flipFlag(curFile,columnar)
  666.    if (getFlag(curFile,columnar)) putMsg("Block COLUMN mode")
  667.    else putMsg("Block LINES mode") 
  668.    return }
  669. if (eqNum(n84,20)) { equateNum(n84,0)
  670.    if (not is(curFile,sWord)) moveCursor(curFile,sWord)
  671.    equateLoc(curFile,sInvert,atCursor)
  672.    if (not is(curFile,eWord)) moveCursor(curFile,eWord)
  673.    equateLoc(curFile,eInvert,atCursor)
  674.    freeBuf(buf98) insertRgn(buf98,sFile,curFile,invert) updateDisplay
  675.    runKey(virtual-l) return }
  676. if (eqNum(n84,30)) { runKey(ctl-i) return }
  677. if (eqNum(n84,40)) { equateNum(n84,0) 
  678.    printerCode(curFile,14,0,0) updateDisplay putMsg("Normal (Pica) pitch") }
  679. >
  680.  
  681.  
  682. Page up; other actions depend on prefix key
  683. <ctl-r:
  684. if (eqNum(n84,0)) { moveCursor(curfile,sPage) 
  685.    vScroll(atCursor) if (not thisKey) refreshDisplay
  686.    if (is(curFile,sFile)) returnFalse else returnTrue }
  687. putMsg(" ")
  688. if (eqNum(n84,10)) { equateNum(n84,0) 
  689.    if (is(curFile,sFile)) equateNum(n95,10) else equateNum(n95,0)
  690.    moveCursor(curFile,sChar) equateLoc(curFile,locA,atCursor)
  691.    if (eqNum(n95,0)) moveCursor(curFile,eChar)
  692.    putMsg("Filename to insert:")
  693.    inputString(buf76) if (not isEmpty(buf76)) 
  694.       if (not insertFile(curFile,atCursor,buf76)) {
  695.          putMsg("ERROR - Couldn't find file.") beepDisplay returnFalse } 
  696.    if (eqNum(n95,10)) moveCursor(curFile,sFile)
  697.    else { equateLoc(curFile,atCursor,locA) moveCursor(curFile,eChar) } 
  698.    return }
  699. if (eqNum(n84,20)) { equateNum(n84,0) 
  700.    moveCursor(curFile,sFile) vScroll(atCursor) return }
  701. if (eqNum(n84,30)) { equateNum(n84,0) 
  702.    getLocal(curFile,n99,lineLength)
  703.    freeBuf(buf99) toWord(buf99,n99) insertRgn(buf99,sFile,
  704.    "Line length (now ",all) insertRgn(buf99,eFile,"):",all) putMsg(buf99)
  705.    if (inputNum(n99)) { setLocal(curFile,lineLength,n99) 
  706.       equateNum(lineLength,n99) } }
  707. if (eqNum(n84,40)) runKey(virtual-kp8) 
  708. >
  709.  
  710.      
  711. Move left; other actions depend on prefix key
  712. <ctl-s:
  713. if (eqNum(n84,0)) { moveCursor(curFile,sChar) return }
  714. putMsg(" ")
  715. if (eqNum(n84,10)) { equateNum(n84,0) 
  716.    if (not getFlag(curFile,changed)) {
  717.       putMsg("Buffer unchanged!") returnFalse }
  718.    else saveFile(curFile) 
  719.    return }
  720. if (eqNum(n84,20)) { equateNum(n84,0) 
  721.    if (not is(curFile,sLine)) moveCursor(curFile,sLine) 
  722.    return }
  723. if (eqNum(n84,30)) { runKey(virtual-kp8) return }
  724. if (eqNum(n84,40))  { equateNum(n96,5) runKey(virtual-p) }
  725. >
  726.  
  727.  
  728. Delete word; other actions depend on prefix key
  729. <ctl-t:
  730. if (eqNum(n84,0)) {           .. delete word; OK 
  731.    if (not eqLoc(curFile,locB,atCursor)) freeBuf(buf86)
  732.    equateLoc(curFile,locA,atCursor)
  733.    equateNum(n98,0)
  734.    if (is(curFile,whiteSpace)) equateNum(n98,1)
  735.    goto label(2)
  736.    while (moveCursor(curFile,eChar)) {      
  737.       if (not is(curFile,whiteSpace)) { 
  738.          if (eqNum(n98,1)) goto label(3)
  739.          if (is(curFile,sLine)) goto label(3)
  740.          label(2)   .. remove label(2) stuff & next 5 lines for no WS punct.
  741.          if (not is(curFile,";")) if (not is(curFile,":")) 
  742.             if (not is(curFile,".")) if (not is(curFile,",")) 
  743.                if (not is(curFile,"?")) if (not is(curFile,"!")) goto label(1)
  744.          equateNum(n98,1)
  745.          label(1)
  746.       }
  747.       else { if (is(curFile,eLine)) goto label(3)
  748.          equateNum(n98,1)
  749.       }
  750.    }
  751.    label(3)
  752.    equateLoc(curFile,locB,atCursor)
  753.    insertRgn(buf86,eFile,curFile,loc)
  754.    clearRgn(curFile,loc) return }
  755. putMsg(" ")
  756. if (eqNum(n84,10)) {
  757.    equateNum(n84,0) getMaxFiles(n98) decNum(n98)
  758.    equateNum(n96,0)
  759.    do (n99,0,n98) if (getFlag(buf[n99],changed))
  760.       if (not saveFile(buf[n99])) {
  761.          freeBuf(buf99) getFileName(buf99,buf[n99])
  762.          insertRgn(buf99,sFile,"ERROR - Couldn't save file: ",all) 
  763.          putMsg(buf99) beepDisplay equateNum(n96,1) delay(15) }
  764.    if (getFlag(buf80,changed)) runKey(virtual-4)
  765.    if (eqNum(n96,0)) { putMsg("All changed buffers saved.") returnTrue }
  766.    else { putMsg("ERROR(s) occurred during mass file save.")
  767.         beepDisplay returnFalse } }
  768. if (eqNum(n84,20)) { equateNum(n84,0)
  769.    putMsg("Character to delete up to:") 
  770.    if (not getFlag(curFile,useKeys)) flipFlag(curFile,useKeys)
  771.    getChar(n99)
  772.    flipFlag(curFile,useKeys)
  773.    if (not eqLoc(curFile,locB,atCursor)) freeBuf(buf86)
  774.    equateLoc(curFile,locA,atCursor)
  775.    putMsg("Deleting...")
  776.    while (not is(curFile,n99)) moveCursor(curFile,eChar)
  777.    equateLoc(curFile,locB,atCursor)
  778.    insertRgn(buf86,eFile,curFile,loc)
  779.    clearRgn(curFile,loc) 
  780.    putMsg(" ") return }
  781. if (eqNum(n84,30)) { equateNum(n84,0)
  782.    putMsg("Key or mouse resumes") seeRuler 
  783.    getKey(n99) if(eqNum(n99,normal-buttonDown)) getKey(n99) ..eat mouseUp
  784.    putMsg(" ")}
  785. if (eqNum(n84,40))  { equateNum(n96,13) runKey(virtual-p) }
  786. >
  787.  
  788. For swap buffer file saves
  789. <virtual-4:
  790. equateNum(n99,curFile) editBuf(buf80) refreshDisplay
  791. if (askYesNo("Swap buffer is not empty.  Save it?")) {
  792.    putMsg("Optionally rename it first:") freeBuf(buf99)
  793.    getFileName(buf99,curFile) 
  794.    if (inputString(buf99)) setFileName(curFile,buf99)
  795.    if (not saveFile(curFile)) {
  796.       putMsg("ERROR - Couldn't save file in buf80") 
  797.       beepDisplay equateNum(n96,1) }
  798.    }
  799. editBuf(buf[n99])
  800. >
  801.  
  802. Undelete last word/block/line; other actions depend on prefix key
  803. <ctl-u: 
  804. if (eqNum(n84,0)) goto label(1)   .. ^U now undelete like ^KU
  805. putMsg(" ")
  806. if (eqNum(n84,10)) { equateNum(n84,0) 
  807.    label(1)
  808.    if (not getFlag(curFile,columnar)) { 
  809.       moveCursor(curFile,sChar) equateLoc(curFile,locA,atCursor)
  810.       equateLoc(curFile,sHilite,atCursor)  .. rehilite
  811.       moveCursor(curFile,eChar)
  812.       insertRgn(curFile,atCursor,buf86,all)
  813.       equateLoc(curFile,eHilite,atCursor)  .. rehilite
  814.       equateLoc(curFile,atCursor,locA) moveCursor(curFile,eChar) } 
  815.    else copyColData(curFile,atCursor,buf85,all,n80) 
  816.    return }
  817. if (eqNum(n84,20)) { equateNum(n84,0)
  818.    putMsg("Will begin reformatting rest of document after 2 second delay")
  819.    delay(20)
  820.    while (nothing)
  821.      if (not runKey(ctl-b)) goto label(2)
  822.      else 
  823.         if (not onScreen(atCursor)) refreshDisplay else updateDisplay
  824.    label(2)
  825.    putMsg("Reformat command ^QU all done.")
  826.    return }
  827. if (eqNum(n84,30)) {
  828.    equateNum(n84,0)
  829.    if (is(curFile,alpha)) {
  830.       if (is(curFile,lowerCase)) toUpper(curFile)
  831.       else toLower(curFile) }
  832.    moveCursor(curFile,eChar) return }
  833. if (eqNum(n84,40)) { equateNum(n84,0) abortPrint }
  834. >
  835.  
  836.  
  837. Toggle insert/overwrite; other actions depend on prefix key
  838. <ctl-v:
  839. if (eqNum(n84,0)) { flipFlag(curFile,overStrike)
  840.    if (getFlag(curFile,overStrike)) putMsg("Overstrike") else putMsg("Insert")
  841.    return }
  842. putMsg(" ")
  843. if (eqNum(n84,10)) {
  844.    equateNum(n84,0)
  845.    if (gtLoc(curFile,eHilite,sHilite)) {
  846.       if (not getFlag(curFile,columnar)) {
  847.          freeBuf(buf86) 
  848.          insertRgn(buf86,sFile,curFile,hilite) 
  849.          clearRgn(curFile,hilite) 
  850.          moveCursor(curFile,sChar) equateLoc(curFile,sHilite,atCursor)
  851.          moveCursor(curFile,eChar)
  852.          insertRgn(curFile,atCursor,buf86,all)
  853.          equateLoc(curFile,eHilite,atCursor) incLoc(curFile,sHilite)
  854.          moveCursor(curFile,sHilite)
  855.          if (not onScreen(atCursor)) vScroll(atCursor) }
  856.       else {
  857.          freeBuf(buf85)
  858.          copyColData(buf85,sFile,curFile,hilite,n80)
  859.          if (eqNum(n80,1)) equateNum(n99,0) else equateNum(n99,1)
  860.          clearColData(curFile,hilite,n99) 
  861.          copyColData(curFile,atCursor,buf85,all,n80) } } 
  862.    else { putMsg("No block!") returnFalse } 
  863.    return }
  864. if (eqNum(n84,20)) { equateNum(n84,0) 
  865.    if (gtLoc(curFile,eInvert,sInvert)) {
  866.       moveCursor(curFile,sInvert) vScroll(atCursor) }
  867.    else { putMsg("No invert marked!") returnFalse } 
  868.    return }
  869. if (eqNum(n84,30)) { equateNum(n84,0)
  870.    freeBuf(buf99) insertRgn(buf99,sFile,
  871.    "Enter new tab table # 0-4 (0=8 std,1=WS std,2=prog,3=null,4=UE) (now ",all)
  872.    toWord(buf99,tabTable) insertRgn(buf99,eFile,"):",all) putMsg(buf99)
  873.    if (inputNum(n99)) if (geNum(n99,0)) if (gtnum(5,n99))
  874.       { setLocal(curFile,tabTable,n99) equateNum(tabTable,n99) }
  875.    return }
  876. if (eqNum(n84,40))  { equateNum(n96,11) runKey(virtual-p) }
  877. >
  878.  
  879. Alternate ^W that will return proper true/false, but cursor acts different
  880. vScroll(upLine) moveCursor(curFile,upLine) 
  881.    if (is(curFile,sFile)) returnFalse else returnTrue 
  882. Using updateDisplay after vScroll works fine EXCEPT if cursor in col. 1!!
  883.  
  884. Scroll up; other actions depend on prefix key
  885. <ctl-w: 
  886. if (eqNum(n84,0)) { vScroll(upLine) updateDisplay
  887.    if (not onScreen(atCursor)) { 
  888.       moveCursor(curFile,upLine) 
  889.       if (is(curFile,sLine)) {
  890.          moveCursor(curFile,upLine)  moveCursor(curFile,upLine) 
  891.          refreshDisplay  } 
  892.       else updateDisplay }
  893.    return }
  894. putMsg(" ")
  895. if (eqNum(n84,10)) { equateNum(n84,0)
  896.    if (gtLoc(curFile,eHilite,sHilite)) {
  897.       if (not getFlag(curFile,columnar)) {
  898.          freeBuf(buf86) 
  899.          insertRgn(buf86,sFile,curFile,hilite) }
  900.       else {
  901.          freeBuf(buf86) copyColData(buf86,sFile,curFile,hilite,n80) } 
  902.       putMsg("Save block as Filename (prt: for raw print):")
  903.       if (inputString(buf76)) if (setFileName(buf86,buf76))
  904.          if (not saveFile(buf86)) { 
  905.             putMsg("ERROR - Couldn't save block!") beepDisplay returnFalse } }
  906.    else { putMsg("No block!") returnFalse } 
  907.    return }
  908. if (eqNum(n84,20)) { equateNum(n84,0)
  909.    putMsg("^U or ESC exits; spacebar to stop/go")
  910.    while (vScroll(upLine)) {
  911.       moveCursor(curFile,upLine)
  912.       refreshDisplay
  913.       inputKey(n98)
  914.       if (eqNum(n98,normal-space)) getKey(n98) 
  915.       if (eqNum(n98,ctl-u)) goto label(2)
  916.       if (eqNum(n98,normal-esc)) goto label(2) }
  917.    label(2)
  918.    putMsg(" ") return }
  919. if (eqNum(n84,30)) { equateNum(n84,0) flipFlag(curFile,wordWrap)
  920.    if (getFlag(curFile,wordWrap)) putMsg("Word Wrap ON")
  921.    else putMsg("No Word Wrap") 
  922.    return }
  923. if (eqNum(n84,40))  { equateNum(n96,23) runKey(virtual-p) }
  924. >
  925.  
  926.  
  927. Move down; other actions depend on prefix key
  928. <ctl-x: 
  929. if (eqNum(n84,0)) { moveCursor(curFile,downLine) return }
  930. putMsg(" ")
  931. if (eqNum(n84,10)) { 
  932.    equateNum(n84,0) equateNum(n98,0) getMaxFiles(n97) decNum(n97)
  933.    equateNum(n96,0)
  934.    do (n99,0,n97) if (getFlag(buf[n99],changed)) equateNum(n98,1)
  935.    if (getFlag(buf80,changed)) if (not isEmpty(buf80)) equateNum(n98,2)
  936.    if (gtNum(n98,0)) {
  937.       if (askYesNo("Buffers have changed. Save ALL changed, without asking?")) {
  938.          do (n99,0,n97) { 
  939.             if (getFlag(buf[n99],changed))
  940.                if (not saveFile(buf[n99])) {
  941.                   freeBuf(buf99) getFileName(buf99,buf[n99])
  942.                   insertRgn(buf99,sFile,"ERROR - Couldn't save file: ",all) 
  943.                   putMsg(buf99) beepDisplay equateNum(n96,1) delay(15) 
  944.                } 
  945.          }
  946.          if (eqNum(n98,2)) runKey(virtual-4) 
  947.       }  
  948.       else {
  949.          if (askYesNo("Show and ask whether to save each changed buffer?")) {
  950.             do (n99,0,n97) { 
  951.                if (getFlag(buf[n99],changed)) {
  952.                   editBuf(buf[n99]) refreshDisplay
  953.                   if (askYesNo("Save this changed buffer?"))
  954.                      if (not saveFile(buf[n99])) {
  955.                         freeBuf(buf99) getFileName(buf99, buf[n99])
  956.                         insertRgn(buf99,sFile,
  957.                            "ERROR - Couldn't save file: ",all) 
  958.                         putMsg(buf99) beepDisplay 
  959.                         equateNum(n96,1) delay(15)  
  960.                      } 
  961.                } 
  962.             }
  963.             if (eqNum(n98,2)) runKey(virtual-4) 
  964.          } 
  965.       } 
  966.    }
  967.    if (eqNum(n96,0)) { if (not askYesNo("Really quit?")) returnFalse }
  968.    if (eqNum(n96,0)) { putMsg("Quitting Ustar...") quit(0) }
  969.    putMsg("ERROR(s) occurred during mass file save.") beepDisplay returnFalse
  970. }
  971. if (eqNum(n84,20)) { equateNum(n84,0) moveCursor(curFile,ePage) 
  972.    moveCursor(curFile,upLine) return }
  973. if (eqNum(n84,30)) { equateNum(n84,0)
  974.    putMsg("^OX not implemented; use ^OW for wordwrap, ^OR for line length")
  975. }
  976. if (eqNum(n84,40))  { equateNum(n96,7) runKey(virtual-p) }
  977. >
  978.  
  979.  
  980. Delete line; other actions depend on prefix key
  981. <ctl-y:
  982. if (eqNum(n84,0)) {
  983.    if (not eqLoc(curFile,locB,atCursor)) freeBuf(buf86)
  984.    equateLoc(curFile,locB,atCursor)
  985.    if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  986.    if (not eqLoc(curFile,locB,atCursor)) {
  987.       equateLoc(curFile,locA,atCursor)
  988.       insertRgn(buf86,sFile,curFile,loc)
  989.       clearRgn(curFile,loc) }
  990.    else equateLoc(curFile,locA,atCursor)
  991.    if (not is(curFile,eLine)) moveCursor(curFile,eLine)
  992.    moveCursor(curFile,eChar)
  993.    equateLoc(curFile,locB,atCursor)
  994.    insertRgn(buf86,eFile,curFile,loc)
  995.    clearRgn(curFile,loc) return } 
  996. putMsg(" ")
  997. if (eqNum(n84,10)) {
  998.    equateNum(n84,0)
  999.    if (gtLoc(curFile,eHilite,sHilite)) {
  1000.       if (not getFlag(curFile,columnar)) {
  1001.          freeBuf(buf86) 
  1002.          insertRgn(buf86,sFile,curFile,hilite) 
  1003.          clearRgn(curFile,hilite) }
  1004.       else {
  1005.          freeBuf(buf85)
  1006.          copyColData(buf85,sFile,curFile,hilite,n80)
  1007.          if (eqNum(n80,1)) equateNum(n99,0) else equateNum(n99,1)
  1008.          clearColData(curFile,hilite,n99) } }
  1009.    else { putMsg("No block!") returnFalse } 
  1010.    return }
  1011. if (eqNum(n84,20)) {
  1012.    equateNum(n84,0)
  1013.    if (not eqLoc(curFile,locB,atCursor)) freeBuf(buf86)
  1014.    if (is(curFile,eFile)) returnFalse
  1015.    if (is(curFile,eLine)) return
  1016.    else {
  1017.       equateLoc(curFile,locA,atCursor)
  1018.       moveCursor(curFile,eLine)
  1019.       equateLoc(curFile,locB,atCursor)
  1020.       insertRgn(buf86,eFile,curFile,loc)
  1021.       clearRgn(curFile,loc) } 
  1022.    return }
  1023. if (eqNum(n84,30)) { equateNum(n84,0)
  1024.    putMsg("Enter value (typ. 161-255) for Amiga alt. character (see AC-kp4)")
  1025.    if (inputNum(n99)) if (gtNum(n99,0)) if (gtnum(256,n99)) typeChar(n99)
  1026.    putMsg(" ")
  1027.    return }
  1028. if (eqNum(n84,40))  { equateNum(n96,17) runKey(virtual-p) }
  1029. >
  1030.  
  1031.  
  1032. Scroll down; other actions depend on prefix key
  1033. <ctl-z:
  1034. if (eqNum(n84,0)) { vScroll(downLine)
  1035.    if (not onScreen(atCursor)) {moveCursor(curFile,downLine) refreshDisplay }
  1036.    if (is(curFile,eFile)) { vScroll(atCursor) returnFalse } else returnTrue }
  1037. putMsg(" ")
  1038. if (eqNum(n84,10)) {
  1039.    equateNum(n84,0)
  1040.    flipFlag(curFile,autoBackup) 
  1041.    if (getFlag(curFile,autoBackup)) 
  1042.    putMsg("Archival backup")
  1043.    else putMsg("No backup!") 
  1044.    return }  
  1045. if (eqNum(n84,20)) {
  1046.    equateNum(n84,0)
  1047.    putMsg("^U or ESC exits; spacebar to stop/go")
  1048.    while (vScroll(downLine)) {
  1049.       moveCursor(curFile,downLine)
  1050.       refreshDisplay
  1051.       inputKey(n98)
  1052.       if (eqNum(n98,normal-space)) getKey(n98) 
  1053.       if (eqNum(n98,ctl-u)) goto label(2) 
  1054.       if (eqNum(n98,normal-esc)) goto label(2) }
  1055.    label(2)
  1056.    putMsg(" ") return }
  1057. if (eqNum(n84,30)) {
  1058.    equateNum(n84,0)
  1059.    flipFlag(curFile,rowCol) refreshDisplay return }
  1060. if (eqNum(n84,40)) runKey(virtual-kp7) 
  1061. >
  1062.  
  1063. delete from cursor to beginning of line
  1064. Actions depend on prefix key
  1065. <ctl-del:
  1066. putMsg(" ")
  1067. if (eqNum(n84,20)) {
  1068.    equateNum(n84,0)
  1069.    if (not is(curFile,sLine)) {
  1070.       if (not eqLoc(curFile,locB,atCursor)) freeBuf(buf86)
  1071.       equateLoc(curFile,locB,atCursor)
  1072.       moveCursor(curFile,sLine)
  1073.       equateLoc(curFile,locA,atCursor)
  1074.       insertRgn(buf86,sFile,curFile,loc)
  1075.       clearRgn(curFile,loc) } 
  1076.    if (is(curFile,sFile)) returnFalse }
  1077. else runKey(virtual-kp7) >
  1078.  
  1079.  
  1080. Actions depend on prefix key
  1081. <ctl-=:
  1082. if (eqNum(n84,10)) { equateNum(n84,0) flipFlag(curFile,readOnly)
  1083.    if (getFlag(curFile,readOnly)) putMsg("Read-Only")
  1084.    else putMsg("Read/Write") 
  1085.    return}
  1086. if (eqNum(n84,40)) { equateNum(n84,0)
  1087.    putMsg("Input a control character:") 
  1088.         getChar(n54)
  1089.         if (geNum(31,n54)) goto label(1)
  1090.         if (geNum(n54,64)) if (geNum(127,n54)) {
  1091.     label(1)
  1092.             and(n54,n54,31)
  1093.             insertChar(curFile,n54)
  1094.         }
  1095.         putMsg(" ")
  1096.    return }
  1097. runKey(virtual-kp7) >
  1098.  
  1099.    
  1100. Actions depend on prefix key
  1101. <ctl-\:
  1102. if (eqNum(n84,10)) { equateNum(n84,0)
  1103.    flipFlag(curFile,icons)
  1104.    if (getFlag(curFile,icons)) putMsg("Icons On at Save") 
  1105.    else putMsg("No Icons at Save") }
  1106. else runKey(virtual-kp7) >
  1107.  
  1108. Actions depend on prefix key
  1109. <ctl-[:
  1110. if (eqNum(n84,10)) { equateNum(n84,0)
  1111.    flipFlag(curFile,changed)
  1112.    if (getFlag(curFile,changed)) putMsg("Marked as Changed")
  1113.    else putMsg("Marked as Unchanged") }
  1114. else runKey(virtual-kp7) >
  1115.  
  1116. Actions depend on prefix key
  1117. <ctl-]:
  1118. if (eqNum(n84,10)) { equateNum(n84,0) putMsg(" ") runKey(shftCtl-]) return }
  1119. else runKey(virtual-kp7) >
  1120.  
  1121. Actions depend on prefix key
  1122. <ctl-/: if (eqNum(n84,0)) {
  1123.    putMsg("Use standard Uedit to run a demo, none created for Ustar") 
  1124.    beepDisplay returnFalse }
  1125. putMsg(" ")
  1126. if (eqNum(n84,20)) { equateNum(n84,0)
  1127.    putMsg("Packing...")
  1128.    freeBuf(buf99) locToIndex(curFile,n99,atCursor) 
  1129.    if (is(curFile,eFile)) decNum(n99)
  1130.    toWord(buf99,n99) insertRgn(buf99,sFile,
  1131.    "Bytes in buffer to cursor point: ",all) putMsg(buf99)
  1132. }
  1133. else runKey(virtual-kp7) 
  1134. >
  1135.  
  1136. Action depends on prefix; for ^K prefix, convert block to lowercase
  1137. <ctl-': if (eqNum(n84,0)) { runKey(virtual-kp7) return }
  1138. putMsg(" ")
  1139. if (eqNum(n84,10)) { equateNum(n84,0)
  1140.    if (eqLoc(curFile,sHilite,eHilite)) { putMsg("No block!") returnFalse }
  1141.    putMsg("Converting block to lower case...")
  1142.    moveCursor(curFile,sHilite)
  1143.    while (gtLoc(curFile,eHilite,atCursor)) {
  1144.       toLower(curFile) moveCursor(curFile,eChar)
  1145.    }
  1146.    putMsg(" ") refreshDisplay
  1147. }
  1148. else runKey(virtual-kp7)
  1149. >
  1150.  
  1151. Actions depend on prefix key
  1152. <ctl-.:
  1153. if (eqNum(n84,10)) { equateNum(n84,0)
  1154.    flipFlag(curFile,userLocalA)
  1155.    if (getFlag(curFile,userLocalA)) putMsg("Auto-Save On")
  1156.    else putMsg("Auto-Save Off") }
  1157. else runKey(virtual-kp7) >
  1158.  
  1159. End of control key translation section
  1160.  
  1161.  
  1162. Shift key translation section
  1163.  
  1164. Type a quote mark ("); for ^K prefix, convert block to uppercase
  1165. <shft-': if (eqNum(n84,0)) { typeChar(34) return }
  1166. putMsg(" ")
  1167. if (eqNum(n84,10)) { equateNum(n84,0)
  1168.    if (eqLoc(curFile,sHilite,eHilite)) { putMsg("No block!") returnFalse }
  1169.    putMsg("Converting block to upper case...")
  1170.    moveCursor(curFile,sHilite)
  1171.    while (gtLoc(curFile,eHilite,atCursor)) {
  1172.       toUpper(curFile) moveCursor(curFile,eChar)
  1173.    }
  1174.    putMsg(" ") refreshDisplay
  1175. }
  1176. else runKey(virtual-kp7)
  1177. >
  1178.  
  1179.  
  1180. End of shift key translation section
  1181.  
  1182. ---------------------------------------------------------------------------    
  1183.  
  1184.                     Cursor movement - arrow keys
  1185.  
  1186. Cursor Up one line
  1187. <normal-upArrow: moveCursor(curFile,upLine) >
  1188. Cursor Down one line
  1189. <normal-downArrow: moveCursor(curFile,downLine) >
  1190. Cursor Left one character
  1191. <normal-leftArrow: moveCursor(curFile,sChar) >
  1192. Cursor Right one character
  1193. <normal-rightArrow: moveCursor(curFile,eChar) >
  1194.  
  1195. Cursor to Start of word
  1196. <shft-leftArrow: moveCursor(curFile,sWord) >
  1197. Cursor to End of word
  1198. <shft-rightArrow: moveCursor(curFile,eWord) >
  1199. Move Up by half a screen
  1200. <shft-upArrow: moveCursor(curFile,sPage) vScroll(atCursor)  >
  1201. Move Down by half a screen
  1202. <shft-downArrow: moveCursor(curFile,ePage) vScroll(atCursor) >
  1203.  
  1204. Cursor to Top of screen
  1205. <ctl-upArrow: moveCursor(curfile,sPage) >
  1206. Cursor to Bottom of screen
  1207. <ctl-downArrow: moveCursor(curFile,ePage) moveCursor(curFile,upLine)>
  1208. Scroll screen Left
  1209. <ctl-leftArrow: hscroll(1) >
  1210. Scroll screen Right
  1211. <ctl-rightArrow: hscroll(-1) >
  1212.  
  1213. Cursor to Top of file
  1214. <alt-upArrow: moveCursor(curFile,sFile) >
  1215. Cursor to End of file
  1216. <alt-downArrow: moveCursor(curFile,eFile) >
  1217. Cursor to Start of line
  1218. <alt-leftArrow: if (not is(curFile,sLine)) moveCursor(curFile,sLine) >
  1219. Cursor to End of line
  1220. <alt-rightarrow: if (not is(curFile,eLine)) moveCursor(curFile,eLine) >
  1221.  
  1222. -----------------------------------------------------------------------------
  1223.  
  1224.                              Mouse operations
  1225.                          (see also next section)
  1226.  
  1227. Fast version (see below for slow version).
  1228. Place cursor with mouse; or, if dragged, highlight block at release
  1229. <normal-buttonDown:
  1230. moveCursor(curFile,mouseLoc) updateDisplay
  1231. equateLoc(curFile,locA,mouseLoc)
  1232. getMaxFiles(n99) decNum(n99) equateNum(n98,curFile) 
  1233. if (gtNum(n99,n98)) equateNum(n82,curFile)  .. for windows, set current
  1234. if (getFlag(curFile,lace)) equateNum(n97,394) else equateNum(n97,194)
  1235. while (trackmouse) { 
  1236.    mouseXY(n98,n99)
  1237.    if (gtNum(n99,n97)) vScroll(downLine)
  1238.    if (gtNum(18,n99)) vScroll(upLine)
  1239.    updateDisplay }  
  1240. if (not eqLoc(curFile,locA,mouseLoc)) {
  1241.    equateLoc(curFile,atCursor,mouseLoc)
  1242.    if (gtLoc(curFile,atCursor,locA)) {
  1243.       equateLoc(curFile,eHilite,atCursor) equateLoc(curFile,sHilite,locA) }
  1244.    else {
  1245.       equateLoc(curFile,sHilite,atCursor) equateLoc(curFile,eHilite,locA) }
  1246.    refreshDisplay }
  1247. returnTrue>
  1248.  
  1249. Alternate "Slow" version that updates highlight dynamically, but slowly,
  1250. with slow scrolling.  
  1251.  
  1252.  normal-buttonDown:
  1253. moveCursor(curFile,mouseLoc) updateDisplay
  1254. equateLoc(curFile,locA,mouseLoc)
  1255. while (trackmouse) { 
  1256.    if (not eqLoc(curFile,locA,mouseLoc)) {
  1257.       if (gtLoc(curFile,locA,mouseLoc)) {
  1258.          equateLoc(curFile,sHilite,mouseLoc) equateLoc(curFile,eHilite,locA) }
  1259.       else { 
  1260.          equateLoc(curFile,eHilite,mouseLoc) equateLoc(curFile,sHilite,locA) }
  1261.       mouseXY(n98,n99)
  1262.       if (gtNum(n99,194)) vScroll(downLine)
  1263.       if (gtNum(18,n99)) vScroll(upLine)
  1264.       refreshDisplay } } 
  1265. returnTrue>
  1266.  
  1267.  
  1268.      Mouse equivalents to block operations
  1269.  
  1270. Block move with mouse
  1271. <shft-buttonDown: 
  1272. moveCursor(curFile,mouseLoc) equateNum(n84,10) runKey(ctl-v) >
  1273.  
  1274. Block copy with mouse
  1275. <alt-buttonDown: 
  1276. moveCursor(curFile,mouseLoc) equateNum(n84,10) runKey(ctl-c) >
  1277.  
  1278. Block delete with mouse
  1279. <shftAlt-buttonDown:
  1280. moveCursor(curFile,mouseLoc) equateNum(n84,10) runKey(ctl-y) >
  1281.  
  1282.  
  1283. 2.3c: OK, enable, may need testing in interlace
  1284. n96 start/#lines   n97 stop    n98 buf  n99 scratch  n95 scratch
  1285. Resize split windows. Click in active window, drag to new title bar pos'n.
  1286. <shftAltCtl-buttonDown: 
  1287. equateNum(n98,curFile)           .. may go to different buf window, save current
  1288. getSplitLines(n96,n97)    .. get start & stop
  1289. sub(n96,n97,n96)         .. line count
  1290. while (trackmouse) mouseXY(n95,n99)
  1291. if (getFlag(curFile,lace)) { sub(n99,392,n99) div(n99,n99,8) 
  1292.    if (gtNum(n99,44)) equateNum(n99,44) 
  1293.    sub(n97,47,n97) }
  1294. else { sub(n99,196,n99) div(n99,n99,8) if(gtNum(n99,19)) equateNum(n99,19)
  1295.    sub(n97,22,n97) }
  1296. sub(n99,n99,n97) if (gtNum(2,n99)) equateNum(n99,2)
  1297. splitWindow(buf[n98],0)
  1298. if (not splitWindow(buf[n98],n99)) {
  1299.     splitWindow(buf[n98],n96)
  1300. }
  1301. equateNum(n99,curFile) getMaxFiles(n98)  
  1302. if (not geNum(n99,n98)) equateNum(n82,curFile)
  1303. >
  1304.  
  1305. ---------------------------------------------------------------------------
  1306.  
  1307.                      Directory/Click-load Operations
  1308.  
  1309. Click to Delete a file - WARNING - no verify, so be careful.
  1310. buf98 - filename from V-kp0; buf97 - temp DOS string use
  1311. <altCtl-buttondown:
  1312. equateLoc(curFile,atCursor,mouseLoc)
  1313. if (not is(curFile,whiteSpace)) {
  1314.    putMsg("Deleting file from disk...")
  1315.    while (not is(curFile,whiteSpace)) {
  1316.       moveCursor(curFile,sChar) if (is(curFile,sFile)) goto label(1) }
  1317.    label(1)
  1318.  
  1319.    runKey(virtual-kp0)
  1320.  
  1321.    if (eqNum(n95,20)) equateNum(n95,0)
  1322.    if (eqNum(n95,0)) {
  1323.       freeBuf(buf97) insertRgn(buf97,sFile,"Delete ",all)
  1324.       insertRgn(buf97,eFile,buf98,all)
  1325.       freeBuf(buf82)
  1326.       if (not execute(buf82,buf97)) { 
  1327.          putMsg("ERROR - Couldn't delete file") beepDisplay returnFalse }
  1328.       if (not isEmpty(buf82)) { 
  1329.          putMsg("ERROR - File not deleted, AmigaDOS returned message:")
  1330.          editBuf(buf82) beepDisplay returnFalse }
  1331.       insertRgn(buf82,eFile,"File deleted: ",all)
  1332.       insertRgn(buf82,eFile,buf98,all)
  1333.       putMsg(buf82)
  1334.       freeBuf(buf82) getFileName(buf82,curFile)
  1335.       insertRgn(buf82,sFile," ",all) moveCursor(buf82,sFile)
  1336.       setSearch("Dir of ")
  1337.       if (search(buf82,sInvert,eInvert,1)) {
  1338.          clearColData(curFile,Invert,1) .. remove deleted filename from display
  1339.          equateLoc(curFile,eInvert,sInvert)
  1340.          refreshDisplay  flipFlag(curFile,changed) }
  1341.    }
  1342.    else { putMsg("ERROR - Can't delete that.") beepDisplay }
  1343. }
  1344. >
  1345.  
  1346.  
  1347. insertChar(buf84," ") moveCursor(buf84,sChar)
  1348.  
  1349. Show current directory & all devices in system 
  1350. Used via ctl-buttondown operations for click-getting root directories.
  1351. Uses buf99 for display, buf98 for temp execute
  1352. Show current directory & all devices in system 
  1353. <shftCtl-f:
  1354. putMsg("Enter Directory (none to see disks, space for current): ")
  1355. moveCursor(buf84,eFile) 
  1356.  
  1357. if (inputString(buf84)) {
  1358.    moveCursor(buf84,eFile) moveCursor(buf84,sChar) 
  1359.    while (is(buf84,space)) { clearChar(buf84) moveCursor(buf84,sChar) }
  1360.     runKey(virtual-kp4)  .. get dir
  1361.     return
  1362. }
  1363.  
  1364. putMsg("Getting device info, wait a moment...")
  1365. freeBuf(buf98) 
  1366. if (not execute(buf98,"CD")) { 
  1367.    putmsg("CD command not found") beepDisplay returnFalse }
  1368. moveCursor(buf98,eFile) moveCursor(buf98,sChar) clearChar(buf98)
  1369.  
  1370. moveCursor(buf98,sFile) insertChar(buf98,eLine) insertChar(buf98,eLine)
  1371. insertRgn(buf98,eFile,"
  1372. ^- Current directory
  1373. ",all)
  1374.  
  1375. freeBuf(buf82) 
  1376. if (not execute(buf82,"Info")) { 
  1377.    putmsg("Info command not found") beepDisplay returnFalse }
  1378. insertRgn(buf98,eFile,buf82,all)
  1379.  
  1380. freeBuf(buf99) insertRgn(buf99,sFile,buf98,all)
  1381. editBuf(buf99) moveCursor(curFile,sFile)
  1382. putMsg("Ctrl-click on device name xxx: (or type a name, click on it)")
  1383. >
  1384.  
  1385.  
  1386. Get the dir of buf84 & show results. Uses scratch buf99,buf98,dos result buf82
  1387. Get directory, put to display
  1388. <virtual-kp4:
  1389. freeBuf(buf98) insertRgn(buf98,sFile,"Getting dir of ",all)
  1390. insertRgn(buf98,eFile,buf84,all) putMsg(buf98)
  1391.  
  1392. freeBuf(buf98) insertRgn(buf98,eFile,"Dir ",all)
  1393. insertRgn(buf98,eFile,buf84,all) 
  1394. freeBuf(buf82)
  1395. if (not execute(buf82,buf98)) { 
  1396.    putMsg("Couldn't get Dir") beepDisplay returnFalse }
  1397.  
  1398. freeBuf(buf98)
  1399. insertRgn(buf98,sFile,"
  1400. Directory of:    ",all)
  1401. if (not isEmpty(buf84)) insertRgn(buf98,atCursor,buf84,all)
  1402. insertRgn(buf98,atCursor,"
  1403.  
  1404.      (Parent)       (All)         DF0: DF1: DF2: DF3: DH0: DH1: VD0: RAM:
  1405.                                       Mouse AC-click to delete a file
  1406. ",all)
  1407. insertRgn(buf98,eFile,buf82,all)
  1408.  
  1409. if (not newFile) { 
  1410. putMsg("No more Edit Buffers available!  Free some up.") beepDisplay
  1411. returnFalse }
  1412.  
  1413. equateNum(n82,curFile)
  1414. putMsg("Ctrl-click files, Dir names, (xxx), or devs:  with mouse")
  1415. freeBuf(buf99) insertRgn(buf99,sFile,"Dir of ",all)
  1416. insertRgn(buf99,eFile,buf84,all)  setFileName(curFile,buf99) 
  1417. insertRgn(curFile,sFile,buf98,all) moveCursor(curFile,sFile)
  1418. flipFlag(curFile,changed) 
  1419. returnTrue>
  1420.  
  1421.  
  1422. Below Uses n97, n98, n99. n95, buf98 (& scratch buf97, buf96) via virtual-kp0
  1423. Load filename or directory that is clicked
  1424. <ctl-buttonDown:
  1425. getKey(n97) .. eat up buttonUp event
  1426. equateLoc(curFile,atCursor,mouseLoc)
  1427. if (not is(curFile,whiteSpace)) {
  1428.     while (not is(curFile,whiteSpace)) {
  1429.        moveCursor(curFile,sChar) if (is(curFile,sFile)) goto label(1) }
  1430.     label(1)
  1431.  
  1432.     runKey(virtual-kp0)
  1433.  
  1434.     if (eqNum(n95,25)) goto label(9)                   .. eof
  1435.  
  1436.     if (eqNum(n95,5)) {                                .. dir
  1437.        moveCursor(buf84,eFile) moveCursor(buf84,sChar)
  1438.        if (not isEmpty(buf84)) {
  1439.           if (not is(buf84,":")) 
  1440.              if (not is(buf84,"/")) { 
  1441.                 moveCursor(buf84,eChar) insertChar(buf84,"/") } }   
  1442.        insertRgn(buf84,eFile,buf98,all) equateNum(n99,curFile)
  1443.        runKey(virtual-kp4) runKey(virtual-del) goto label(10) }               
  1444.  
  1445.     if (eqNum(n95,10)) {                               .. parent
  1446.        if (isEmpty(buf84)) goto label(3)
  1447.        else {
  1448.           moveCursor(buf84,eFile)
  1449.           if (is(buf84,":")) goto label(3)
  1450.           else {
  1451.              while (nothing) {
  1452.                 clearChar(buf84) moveCursor(buf84,sChar)
  1453.                 if (isEmpty(buf84)) goto label(3)
  1454.                 if (is(buf84,":")) goto label(3)
  1455.                 if (is(buf84,"/")) { clearChar(buf84) goto label(3) }}}}
  1456.        label(3) equateNum(n99,curFile)
  1457.        runKey(virtual-kp4) runKey(virtual-del) goto label(10) }
  1458.  
  1459.     if (eqNum(n95,15)) { runKey(virtual-kp3) goto label(10) } .. all
  1460.  
  1461.     if (eqNum(n95,20)) { putMsg("I won't load .info files!") goto label(9) }
  1462.  
  1463.     if (eqNum(n95,30)) {                                    .. dev:
  1464.        freeBuf(buf84) insertRgn(buf84,sFile,buf98,all)
  1465.        equateNum(n99,curFile)
  1466.        runKey(virtual-kp4) runKey(virtual-del) goto label(10) }
  1467.  
  1468.     equateNum(n99,curFile)
  1469.     if (loadFile(buf98)) { equateNum(n98,curFile)
  1470.        if (isEmpty(curFile)) { 
  1471.           freeBuf(curFile) editBuf(buf[n99]) equateNum(n82,curFile)
  1472.           insertRgn(buf98,sFile,"Not found: ",all) 
  1473.           putMsg(buf98) goto label(9) }
  1474.        else { editBuf(buf[n99])          
  1475.           putMsg("F1=edit; F3=cancel Dir; other keys normal")
  1476.           getKey(n97) putMsg(" ") 
  1477.           if (eqNum(n97,normal-f1)) { 
  1478.              editBuf(buf[n98]) equateNum(n82,curFile) goto label(10) }
  1479.           if (eqNum(n97,normal-f3)) { 
  1480.              editBuf(buf[n98]) equateNum(n82,curFile) freeBuf(buf[n99]) }
  1481.           else runKey(n97) goto label(10) } }
  1482.     else { insertRgn(buf98,sFile,"Not loaded: ",all) 
  1483.        putMsg(buf98) goto label(9) } } 
  1484. label(9) returnFalse
  1485. label(10) >
  1486.  
  1487.  
  1488. Check what filename is before deleting. Requires n99 set to buf# on entry.
  1489. <virtual-del:
  1490. getFileName(buf98,buf[n99])
  1491. moveCursor(buf98,sFile) insertChar(buf98," ") moveCursor(buf98,sFile)
  1492. setSearch("Dir of ")
  1493. if (search(buf98,sInvert,eInvert,1)) freeBuf(buf[n99])
  1494. >
  1495.  
  1496.  
  1497. Get a filename into buf98, starting at current cursor pos'n; dirname of 
  1498. buf84 properly prepended. Ignore .info files.
  1499. Also uses buf97 scratch; uses Invert. Uses n95 as flag:
  1500.   0 OK; 5 is " (dir)"; 10 is "(Parent)"; 15 is "(All)"; 20 is ".info"; 
  1501.   25 is EOF; 30 is device ": "
  1502.  
  1503. Process clicked name
  1504. <virtual-kp0:
  1505. equateNum(n95,0)
  1506. if (getFlag(curFile,searchCaps)) flipFlag(curFile,searchCaps) 
  1507. while (is(curFile,whiteSpace)) {    .. skip any leading whitespace
  1508.    moveCursor(curFile,eChar) 
  1509.    if (is(curFile,eFile)) { equateNum(n95,25) goto label(10) } }
  1510. equateLoc(curFile,sInvert,atCursor)
  1511. while (not is(curFile,whiteSpace)) {  .. find end of name, allow 1 embed. spc
  1512.    moveCursor(curFile,eChar)
  1513.    if (is(curFile,eFile)) goto label(1)
  1514.    if (is(curFile,eLine)) goto label(1)
  1515.    if (is(curFile,space)) moveCursor(curFile,eChar) }
  1516. label(1)   
  1517. while (is(curFile,whiteSpace)) { moveCursor(curFile,sChar) }
  1518. moveCursor(curFile,eChar)
  1519. equateLoc(curfile,eInvert,atCursor)
  1520. if (is(curFile,eLine)) moveCursor(curFile,eChar)
  1521. freeBuf(buf98) insertRgn(buf98,sFile,curFile,invert)
  1522. refreshDisplay
  1523.  
  1524. freeBuf(buf97) insertChar(buf97," ") 
  1525. insertRgn(buf97,eFile,curFile,invert)
  1526.  
  1527. .. determine if it is a specific kind of file/name/action
  1528.  
  1529. moveCursor(buf97,sFile)
  1530. setSearch(".info")
  1531. if (search(buf97,sInvert,eInvert,1)) { 
  1532.    equateNum(n95,20) }
  1533.  
  1534. moveCursor(buf97,sFile)
  1535. setSearch(" (dir)")
  1536. if (search(buf97,sInvert,eInvert,1)) {
  1537.    moveCursor(buf98,sFile)
  1538.    search(buf98,sInvert,eInvert,1)
  1539.    while (not is(buf98,eFile)) clearChar(buf98)   
  1540.    equateNum(n95,5) goto label(10) }
  1541.  
  1542. moveCursor(buf97,sFile)
  1543. setSearch("(Parent)")
  1544. if (search(buf97,sInvert,eInvert,1)) { 
  1545.    equateNum(n95,10) goto label(10) }
  1546.    
  1547. moveCursor(buf97,sFile)
  1548. setSearch("(All)")
  1549. if (search(buf97,sInvert,eInvert,1)) {
  1550.    equateNum(n95,15) goto label(10) } 
  1551.  
  1552. moveCursor(buf97,sFile)
  1553. setSearch(":")
  1554. if (search(buf97,sInvert,eInvert,1)) {       .. device name check
  1555.    moveCursor(buf97,eChar)  if (not is(buf97,whiteSpace)) 
  1556.       if (not is(buf97,space)) if (not is(buf97,eLine)) 
  1557.       if (not is(buf97,eFile)) if (not is(buf97,9)) goto label (10)
  1558.    moveCursor(buf98,sFile) 
  1559.    while (not is(buf98,":")) moveCursor(buf98,eChar)
  1560.    moveCursor(buf98,eChar) 
  1561.    while (not is(buf98,eFile)) clearChar(buf98)
  1562.    equateNum(n95,30)
  1563.    goto label(10)
  1564. }
  1565.  
  1566. if (not isEmpty(buf84)) {     .. for files, prepend current path correctly
  1567.    moveCursor(buf84,eFile) moveCursor(buf84,sChar)
  1568.    if (not is(buf84,":")) { 
  1569.       moveCursor(buf98,sFile) insertChar(buf98,"/") } 
  1570.    insertRgn(buf98,sFile,buf84,all) } 
  1571. label(10) >
  1572.  
  1573.  
  1574. All load 
  1575. buf99 screen copy; buf98 filename via virtual-kp0 (also see); n95 scratch
  1576.  
  1577. Load all files in current dir list
  1578. <virtual-kp3:
  1579. getMaxFiles(n95)
  1580. putMsg("Load All") equateNum(n96,curFile) if (gtNum(n95,n96))
  1581. equateNum(n82,curFile)
  1582. equateNum(n96,0) 
  1583. freeBuf(buf99) insertChar(buf99," ") moveCursor(buf99,sChar)
  1584. insertRgn(buf99,eFile,curFile,all) editBuf(buf99)
  1585.  
  1586. moveCursor(curFile,sFile) moveCursor(curFile,downLine)
  1587. do (n95,1,17) moveCursor(curFile,eChar)
  1588. equateLoc(curFile,sHilite,atCursor) moveCursor(curFile,eLine)
  1589. equateLoc(curfile,eHilite,atCursor) moveCursor(curFile,sLine)
  1590. freeBuf(buf84) 
  1591. insertRgn(buf84,sFile,curFile,hilite)
  1592. moveCursor(curFile,sHilite) if(is(curFile,"*")) freeBuf(buf84)
  1593. moveCursor(curFile,sLine)
  1594.  
  1595. do (n95,0,3) moveCursor(curFile,downLine)
  1596. while (nothing) {
  1597.    runKey(virtual-kp0)
  1598.    if (eqNum(n95,25)) goto label(2)
  1599.    if (gtNum(n95,0))  goto label(1)
  1600.  
  1601.    if (loadFile(buf98)) {
  1602.        if (not isEmpty(curFile)) {
  1603.           insertRgn(buf98,sFile,"Loaded OK: ",all) goto label(3) } 
  1604.        else freeBuf(curFile) }
  1605.    insertRgn(buf98,sFile,"Not loaded: ",all)
  1606.    label(3)
  1607.    putMsg(buf98) delay(4) editBuf(buf99) 
  1608.    label(1)
  1609.    if (is(curFile,eFile)) goto label(2) }
  1610.  
  1611. label(2) 
  1612.    freeBuf(buf99) editBuf(buf[n82]) putMsg("(All) done") returnTrue>
  1613.    
  1614. -----------------------------------------------------------------------------
  1615.  
  1616.                                  Reformat
  1617.  
  1618. A "Shell"for the reformat function to make it a lot smarter and act
  1619. more like WS.  See UstarDoc.
  1620.  
  1621. n97  is  "bulleted  item",  empty  line,  EOL, and EOF indicator from delimit
  1622.      routine. 0 for non-delimiter item.
  1623. n95 is "cursor indent" flag, then holds n97 initial value for later
  1624. n96 is temporary scratch use
  1625. buf99 is bullet phrase hold
  1626.  
  1627. uses Invert.  Uses sInvert & eInvert for several purposes as markers.
  1628. clears any hilite that is set if bulleted/indented reformat done
  1629.  
  1630. uses shft-Return which uses n99
  1631. uses virtual-kp1 which uses n97, scratch n96
  1632.  
  1633.  
  1634. Reformatting routine
  1635. <virtual-kp2:
  1636. putMsg("Reformatting...")
  1637. if (not is(curFile,sLine)) { equateNum(n95,5)     .. flag for floating par.
  1638.    equateLoc(curFile,eInvert,atCursor) moveCursor(curFile,sLine) }
  1639. else equateNum(n95,0)
  1640. equateLoc(curFile,sInvert,atCursor)  .. mark reformat starting point at sLine
  1641.  
  1642. runKey(virtual-kp1)      .. check for delimiter
  1643. if (geNum(n97,20)) goto label(1)   .. found eol/eof, exit
  1644.  
  1645. .. set end of "cut" section if not already set by cursor not in col. 1 
  1646. if (eqNum(n95,0)) equateLoc(curFile,eInvert,atCursor)
  1647. else equateNum(n97,5)   .. combine 2 flags into n97 bulleted status
  1648.  
  1649. equateNum(n95,n97)       .. save value of n97 for later
  1650.  
  1651. .. first, must convert any tabs in delimiter to spaces for proper indent
  1652. equateLoc(curFile,atCursor,sInvert)
  1653. while (gtLoc(curFile,eInvert,atCursor)) {
  1654.    if (is(curFile,9)) {
  1655.       swapChar(curFile,32)
  1656.       moveCursor(curFile,eChar)
  1657.       while (not is(curFile,tabColumn)) insertChar(curFile,32)
  1658.    } else moveCursor(curFile,eChar)
  1659. }
  1660.  
  1661. if (gtNum(n97,0)) {      .. delimiter found, save delimiter header, clear it
  1662.    freeBuf(buf99)
  1663.    copyColData(buf99,sFile,curFile,invert,1)
  1664.    clearColData(curFile,invert,1) 
  1665. }
  1666.  
  1667. equateLoc(curFile,atCursor,sInvert)   .. set cursor to start
  1668.  
  1669. .. this section aligns all lines to the same indentation so that
  1670. .. reformat() will work, and finds/marks end of area to reformat
  1671. while (nothing) {        
  1672.    .. check for eof; move to next line 
  1673.    if (not is(curFile,eLine)) moveCursor(curFile,eLine) 
  1674.    if (is(curFile,eFile)) insertChar(curFile,eLine)
  1675.    moveCursor(curFile,downLine) 
  1676.    if (not is(curfile,sLine)) moveCursor(curFile,sLine)
  1677.    runKey(virtual-kp1) if (gtNum(n97,0)) {   .. is line a delimiter?
  1678.       .. delimiter found, insert eol for reformat() to stop at, mark it
  1679.       if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  1680.       insertChar(curFile,eLine)    
  1681.       equateLoc(curFile,eInvert,atCursor)
  1682.       goto label(6) 
  1683.    }
  1684.    runKey(shft-return)        .. match indent of line, fix if eof
  1685. }
  1686. label(6)
  1687.  
  1688. equateNum(n97,n95)  .. restore n97 value
  1689.  
  1690. equateLoc(curFile,atCursor,sInvert)  .. put cursor to line to start reformat
  1691.  
  1692. reformat            .. primary reformat does 1st line, or whole block 
  1693.  
  1694. equateLoc(curFile,atCursor,sInvert)   .. restore cursor to start
  1695.  
  1696. .. this section reformats rest of an indented paragraph etc.
  1697. if (eqNum(n97,0)) if (not getFlag(curfile,autoIndent)) {
  1698.  
  1699.    .. start on the second line of the block
  1700.    moveCursor(curfile,downLine) 
  1701.    insertChar(curFile,eLine)   .. make so "match indent" aligns to col. 1
  1702.  
  1703.    .. turn any leading tabs into spaces on the first line of this section
  1704.    while (nothing) {
  1705.       if (not is(curFile,9)) if (not is(curFile,space)) goto label(3)
  1706.       if (is(curFile,9)) {
  1707.          swapChar(curFile,32)
  1708.          moveCursor(curFile,eChar)
  1709.          while (not is(curFile,tabColumn)) insertChar(curFile,32)
  1710.       } else moveCursor(curFile,eChar)
  1711.    }
  1712.    label(3)
  1713.  
  1714.    .. make subsequent lines have equal indentation
  1715.    while (nothing) {
  1716.       if (geLoc(curFile,atCursor,eInvert)) goto label(8)
  1717.       runKey(shft-return)
  1718.       moveCursor(curFile,downLine) 
  1719.    }
  1720.  
  1721.    label(8)
  1722.    equateLoc(curFile,atCursor,sInvert)  .. set cursor to start of section
  1723.    moveCursor(curFile,downLine) moveCursor(curFile,downLine)
  1724.  
  1725.    reformat     .. reformat all but the first line of the paragraph
  1726.  
  1727.    equateLoc(curFile,atCursor,sInvert)  .. clear extra eol inserted above 
  1728.    moveCursor(curFile,downLine) clearChar(curFile)
  1729.    equateLoc(curFile,atCursor,sInvert) 
  1730. }
  1731.  
  1732. if (gtNum(n97,0)) {      .. restore bulleted section that was cut out above
  1733.    copyColData(curFile,atCursor,buf99,all,0)
  1734.    equateLoc(curFile,sHilite,eHilite)
  1735. }
  1736.  
  1737. label(1)
  1738. equateLoc(curFile,atCursor,sInvert) 
  1739. if (not gtNum(n97,10)) {
  1740.    equateLoc(curFile,atCursor,eInvert)
  1741.    moveCursor(curFile,sChar) clearChar(curFile)
  1742.    putMsg(" ") 
  1743. }
  1744. if (eqNum(n97,20)) { moveCursor(curFile,downLine) putMsg("Empty line") }
  1745. equateLoc(curFile,eInvert,sInvert) 
  1746. if (eqNum(n97,40)) { putMsg("EOF!") returnFalse }
  1747. returnTrue>
  1748.  
  1749.  
  1750.  
  1751. Determine if a line is a delimiter line. Returns with cursor at 1st text.
  1752.    Returns n97: 0=not delimiter, 5=bullet line, 10=# line
  1753.      20=null or empty line, EOL  40=null or empty line, EOF
  1754.    n97 also holds temp negative vals as flags within this routine
  1755.  
  1756.    n96 used briefly for scratch
  1757.  
  1758. Delimiter line routine
  1759. <virtual-kp1:
  1760. equateNum(n97,0) 
  1761. if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  1762. while (nothing) {        .. find first printable char on line
  1763.    if (is(curFile,eLine)) goto label(1)
  1764.    if (is(curFile,eFile)) goto label(2)
  1765.    if (not is(curFile,9)) if (is(curFile,ctlChar)) goto label(1)
  1766.    if (not is(curFile,space)) if (not is(curFile,9)) goto label(3)
  1767.    moveCursor(curFile,eChar) }
  1768. label(3)
  1769.  
  1770. while (nothing) {        .. determine if this meets rules for a delimiter
  1771.    if (is(curFile,space)) goto label(4)  .. exit if space or tab encountered
  1772.    if (is(curFile,9)) goto label(4)
  1773.    if (is(curFile,"o")) {     .. bulleted outline character 
  1774.       if (not eqNum(n97,-5)) { equateNum(n97,-5) goto label(6) }
  1775.       else goto label(4) }
  1776.    else { if (is(curFile,alpha)) goto label(4) }
  1777.    if (is(curFile,digit)) { equateNum(n97,-10) goto label(6) }
  1778.    if (is(curFile,".")) { if (eqNum(n97,-10)) {  .. check for #'d outline
  1779.       equateNum(n97,-15)  goto label(6) } }
  1780.    if (is(curFile,eLine)) goto label(1)
  1781.    if (is(curFile,eFile)) goto label(2)
  1782.    goto label(4)
  1783.    label(6)
  1784.    moveCursor(curfile,eChar) 
  1785. }
  1786. label(4)
  1787.  
  1788. .. from values set in above loop, determine bulleted status & set flag
  1789. equateNum(n96,0)
  1790. if (is(curFile,space)) equateNum(n96,5)
  1791. if (is(curFile,9)) equateNum(n96,5)
  1792. if (eqNum(n96,5)) {
  1793.    if (eqNum(n97,-5)) equateNum(n97,5)
  1794.    if (eqNum(n97,-15)) equateNum(n97,10) 
  1795. }
  1796. if (not gtNum(n97,0)) equateNum(n97,0)
  1797.  
  1798. while (nothing) {                       .. advance to start of text 
  1799.    if (not is(curFile,space)) {
  1800.       if (not is(curFile,9)) {
  1801.          if (is(curFile,eLine)) goto label(1)
  1802.          if (is(curFile,eFile)) goto label(2)
  1803.          goto label(5) 
  1804.       }
  1805.    }
  1806.    moveCursor(curFile,eChar) 
  1807. }
  1808. label(5) returnTrue
  1809. label(1) equateNum(n97,20) returnTrue
  1810. label(2) equateNum(n97,40) returnTrue
  1811. >
  1812.  
  1813. -----------------------------------------------------------------------------
  1814.  
  1815.                                   About
  1816.  
  1817. (Uedit portion text same as Rick's current (2.3) original)
  1818.  
  1819. General info on Uedit and Ustar
  1820. <alt-/:
  1821. equateNum(n99,curFile)
  1822. freeBuf(buf99)
  1823. insertRgn(buf99,sFile,
  1824. "
  1825.  
  1826.                   :               Uedit                :
  1827.                   :        Written by Rick Stiles      :
  1828.                   :    Placed in the public domain     :
  1829.                   :             July 1992              :
  1830.  
  1831.  
  1832. Uedit is SHAREWARE.
  1833.  
  1834. Try it and see how you like it.
  1835.  
  1836. If you wish to purchase the Full Uedit package which lets you create and
  1837. compile custom commands and custom Uedit configurations, and which has the
  1838. full Uedit documentation, see your dealer or see Uedit-Policy for ordering
  1839. information.
  1840.  
  1841. If your dealer doesn't carry Uedit, please have him contact me.
  1842.  
  1843. ",all)
  1844. moveCursor(buf99,sFile) do (n97,1,5) moveCursor(buf99,eLine)
  1845. equateLoc(buf99,eHilite,atCursor)  
  1846. do (n97,1,3) moveCursor(buf99,upLine) do (n97,1,38) moveCursor(buf99,sChar)
  1847. equateLoc(buf99,sHilite,atCursor) moveCursor(buf99,eFile)
  1848. if (getFlag(curFile,columnar)) equateNum(n96,0)
  1849. else { flipFlag(curFile,columnar) equateNum(n96,1) }
  1850. setFileName(buf99,"               About Uedit...")
  1851. putMsg("Mouse or key proceeds") 
  1852. editBuf(buf99) 
  1853. vScroll(sFile) 
  1854. updateDisplay 
  1855. getKey(n98) if(eqNum(n98,normal-buttonDown)) getKey(n98) ..eat mouseUp
  1856. clearRgn(buf99,all)
  1857. moveCursor(curFile,sFile) do(n98,1,28) insertChar(curFile,eLine)
  1858. insertRgn(buf99,sFile,
  1859. "  1987 by Kurt Wessels, 917 N. 87th, Seattle, WA 98103    
  1860.  
  1861. Ustar is a configuration  file  for  Uedit.   It  emulates  most editing
  1862. functions of WordStar (a trademark of MicroPro International Corp.)
  1863.  
  1864. Ustar  is  freely  distributable.   It  may  be  included with any Uedit
  1865. files/disks  distributed  directly  by Rick Stiles.  It may be posted to
  1866. bulletin  boards,   included   on   public-domain/shareware  disks,  and
  1867. generally  be  distributed  for  no charge or a small handling fee.  All
  1868. rights reserved.  Contributions of freely distributable  software  or  $
  1869. are  welcome  -  but  I  would  much  rather  that  you support Uedit by
  1870. purchasing it first!  
  1871.  
  1872. If you want to be informed of updated versions of Ustar, send an SASE to
  1873. me;  send $5 (or a disk and postage) if you want the latest version.  
  1874.  
  1875. You may modify the Ustar files and excerpt from them in any way for your
  1876. own use,  but  do  not  then  redistribute  them  as  Ustar.   Send  any
  1877. enhancements, bugs, ideas, etc.  to me and I will consider them in later
  1878. releases.   Disclaimer: Use at your own risk!
  1879. ",all)
  1880. moveCursor(curFile,sFile) typeChar(169)
  1881. insertRgn(buf99,sFile,
  1882. "                               Ustar v0.90                              
  1883.    Copyright ",all)
  1884. setFileName(buf99,"              About Ustar")
  1885. moveCursor(buf99,sFile) equateLoc(buf99,sHilite,atCursor)
  1886. moveCursor(buf99,eLine) equateLoc(buf99,eHilite,atCursor)
  1887. moveCursor(buf99,eChar) equateLoc(buf99,sInvert,atCursor)
  1888. moveCursor(buf99,eLine) equateLoc(buf99,eInvert,atCursor)
  1889. moveCursor(buf99,eFile) 
  1890. putMsg("Mouse or key resumes") 
  1891. editBuf(buf99)
  1892. vScroll(sFile) updateDisplay
  1893. getKey(n98) if(eqNum(n98,normal-buttonDown)) getKey(n98) ..eat mouseUp
  1894. editBuf(buf[n99]) putMsg(" ") 
  1895. if (eqNum(n96,1)) flipFlag(curFile,columnar) freeBuf(buf99) returnTrue>
  1896.  
  1897. -----------------------------------------------------------------------------
  1898.                    Printer Control Code Toggle Management
  1899.  
  1900. This controls the on/off flag status for 9 different print functions.
  1901. Each edit buffer has its own control (n# variable that matches buffer #).  
  1902. Max of 9 toggles all used up (primes method).  Prime passed to it in n96.
  1903. See the UstarHelp file for more info.
  1904.  
  1905. <virtual-p: equateNum(n84,0)
  1906. freeBuf(buf99) getMaxFiles(n97) equateNum(n98,curFile)
  1907. if (eqNum(n[n98],0)) equateNum(n[n98],1)  .. initialize
  1908. if (geNum(n98,n97)) { putMsg("Ptr codes - Edit bufs only!") returnFalse }
  1909. if (eqNum(n96,2)) { equateNum(n99,10)  insertRgn(buf99,sFile,"Bold",all) }
  1910. if (eqNum(n96,3)) { equateNum(n99,23)  insertRgn(buf99,sFile,"Double",all) }
  1911. if (eqNum(n96,5)) { equateNum(n99,8)   insertRgn(buf99,sFile,"Underline",all)}
  1912. if (eqNum(n96,7)) { equateNum(n99,25)  insertRgn(buf99,sFile,"NLQ",all) }
  1913. if (eqNum(n96,11)) { equateNum(n99,29) insertRgn(buf99,sFile,"Subscript",all)}
  1914. if (eqNum(n96,13)) { equateNum(n99,27) insertRgn(buf99,sFile,"Superscript",all) }
  1915. if (eqNum(n96,17)) { equateNum(n99,6)  insertRgn(buf99,sFile,"Italics",all) }
  1916. if (eqNum(n96,19)) { equateNum(n99,17) insertRgn(buf99,sFile,"Condensed",all) }
  1917. if (eqNum(n96,23)) { equateNum(n99,19) insertRgn(buf99,sFile,"Wide",all) }
  1918. mod(n97,n[n98],n96)
  1919. if (eqNum(n97,0)) {      .. on to off transition, for OFF state
  1920.    incNum(n99) div(n[n98],n[n98],n96) insertRgn(buf99,eFile," Off",all) }
  1921. else {                   .. off to on transition, for ON state
  1922.    mul(n[n98],n[n98],n96) insertRgn(buf99,eFile," On",all) }
  1923. printerCode(curFile,n99,0,0) updateDisplay
  1924. putMsg(buf99)
  1925. >
  1926.  
  1927.  
  1928. Internal routine used by print command, dot command interpretation routines 
  1929. <virtual-n:
  1930. moveCursor(curFile,sLine)
  1931. while (not is(curFile,digit)) {
  1932.    moveCursor(curFile,eChar)
  1933.    if (is(curFile,eLine)) returnFalse
  1934.    if (is(curFile,eFile)) returnFalse }
  1935. toNumber(n99,curFile) returnTrue
  1936. >
  1937.  
  1938.  
  1939. Print command
  1940. <virtual-o:
  1941. if (not askYesNo("Print with Headers, Page #s, Date, etc.?")) {
  1942.    alertUser("Put printer to top of form and on-line")
  1943.    putMsg("May take a long time to start printing...")
  1944.    print(curFile,all) return }
  1945. moveCursor(curFile,sFile) vScroll(atCursor) refreshDisplay
  1946. putMsg("Copying buffer to work buffer...")
  1947. equateNum(n98,curFile) getFileName(buf98,curFile)
  1948. if (not newFile) { 
  1949.    putMsg("Ran out of Edit buffers or memory, can't print this way")
  1950.    beepDisplay returnFalse }
  1951. equateNum(n99,curFile) editBuf(buf[n98])
  1952. putMsg("Copying buffer to work buffer...")
  1953. if (not insertRgn(buf[n99],sFile,buf[n98],all)) {
  1954.    putMsg("Not enough memory to print this way")
  1955.    editBuf(buf[n98]) beepDisplay returnFalse } 
  1956. editBuf(buf[n99])
  1957. insertRgn(buf98,eFile,"**PRINT COPY**",all)
  1958. setFileName(curFile,buf98) moveCursor(curFile,sFile) 
  1959. vScroll(sFile) refreshDisplay
  1960.  
  1961. label(1)
  1962.  
  1963. putMsg("Processing file for dot commands...")
  1964. moveCursor(curFile,sFile)
  1965. freeBuf(buf90) freeBuf(buf91)  .. no header/footer unless specified
  1966. while (nothing) {
  1967.    label(13)
  1968.    if (not is(curFile,".")) goto label(10)
  1969.  
  1970.    equateLoc(curFile,sInvert,atCursor)       .. dot command found, process it
  1971.    moveCursor(curFile,eChar) 
  1972.    equateNum(n98,0) .. flag for .pa, .po
  1973.    if (is(curFile,".")) goto label(12)       .. comments
  1974.  
  1975.    moveCursor(curFile,eChar) moveCursor(curFile,eChar)
  1976.    equateLoc(curFile,eInvert,atCursor)
  1977.    freeBuf(buf99) insertRgn(buf99,sFile,curFile,invert)
  1978.    if (getFlag(buf99,searchCaps)) flipFlag(buf99,searchCaps)
  1979.  
  1980.    moveCursor(buf99,sFile)                   .. margin, top
  1981.    setSearch("mt")
  1982.    if (search(buf99,sInvert,eInvert,1)) {
  1983.       if(runKey(virtual-n)) setLocal(curFile,topMargin,n99)
  1984.       .. else ignore it, use current setting
  1985.       goto label(12) }
  1986.    .. else ignore lack of it & use current setting
  1987.  
  1988.    moveCursor(buf99,sFile)                   .. margin, bottom
  1989.    setSearch("mb")
  1990.    if (search(buf99,sInvert,eInvert,1)) {
  1991.       if(runKey(virtual-n)) setLocal(curFile,bottomMargin,n99)
  1992.       goto label(12) }
  1993.    moveCursor(buf99,sFile)                   .. lines/page
  1994.    setSearch("pl")
  1995.    if (search(buf99,sInvert,eInvert,1)) {
  1996.       if(runKey(virtual-n)) setLocal(curFile,pageLines,n99)
  1997.       goto label(12) }
  1998.    moveCursor(buf99,sFile)                   .. header
  1999.    setSearch("he")
  2000.    if (search(buf99,sInvert,eInvert,1)) {
  2001.       locToCol(buf99,n99,eInvert) colToLoc(curFile,sInvert,n99)
  2002.       moveCursor(curFile,eLine) equateLoc(curFile,eInvert,atCursor)
  2003.       insertRgn(buf90,sFile,curFile,invert)
  2004.       goto label(12) }
  2005.    moveCursor(buf99,sFile)                   .. footer
  2006.    setSearch("fo")
  2007.    if (search(buf99,sInvert,eInvert,1)) {
  2008.       locToCol(buf99,n99,eInvert) colToLoc(curFile,sInvert,n99)
  2009.       moveCursor(curFile,eLine) equateLoc(curFile,eInvert,atCursor)
  2010.       insertRgn(buf91,sFile,curFile,invert)
  2011.       goto label(12) }
  2012.    moveCursor(buf99,sFile)                   .. comment
  2013.    setSearch("ig")
  2014.    if (search(buf99,sInvert,eInvert,1)) goto label(12)
  2015.    moveCursor(buf99,sFile)                   .. page break
  2016.    setSearch("pa")
  2017.    if (search(buf99,sInvert,eInvert,1)) {
  2018.       equateNum(n98,5) goto label(12) }   
  2019.    moveCursor(buf99,sFile)                   .. page offset (left mrg)
  2020.    setSearch("po")
  2021.    if (search(buf99,sInvert,eInvert,1)) {
  2022.       if(runKey(virtual-n)) equateNum(n98,10) 
  2023.       goto label(12) }
  2024.    moveCursor(buf99,sFile)                   .. non-WS cmd: printer init strng
  2025.    setSearch("pi")
  2026.    if (search(buf99,sInvert,eInvert,1)) {
  2027.       locToCol(buf99,n99,eInvert) colToLoc(curFile,sInvert,n99)
  2028.       moveCursor(curFile,eLine) equateLoc(curFile,eInvert,atCursor)
  2029.       if (askYesNo("Send printer initialization string to printer?")) {
  2030.          alertUser("Put printer on-line; may be slow to initialize")
  2031.          print(curFile,invert)  }
  2032.       goto label(12) }
  2033.  
  2034.    .. otherwise, is unknown dot command, just delete line
  2035.    label(12)  .. get rid of dot command line now that it's processed
  2036.    moveCursor(curFile,sLine) equateLoc(curFile,locA,atCursor)
  2037.    moveCursor(curFile,eLine) moveCursor(curFile,eChar)
  2038.    equateLoc(curFile,locB,atCursor)
  2039.    clearRgn(curFile,loc) 
  2040.    if (eqNum(n98,5)) insertChar(curFile,12)  ..   .pa
  2041.    if (eqNum(n98,10)) {                      ..   .po
  2042.       getLocal(curFile,n97,lineLength) add(n97,n97,n99) 
  2043.       freeBuf(buf99) printerCode(buf99,65,n99,n97)  .. prefs code
  2044.       if (askYesNo("Send printer code for Left Margin to printer?")) {
  2045.          alertUser("Put printer on-line; may be slow to initialize")
  2046.          print(buf99,all)  }
  2047.    .. unknown how to use preferences code 60
  2048.    .. or replace above two active lines with Epson code (margin must be > 4):
  2049.    .. insertChar(curFile,27) insertChar(curFile,"l") insertChar(curFile,n99)
  2050.    .. also will need to allow  interpretation of non-UE codes:
  2051.    .. equateNum(prefPrint,3)
  2052.    }
  2053.    updateDisplay  .. show progress only for dot cmd processing
  2054.    if (not is(curFile,eLine)) moveCursor(curFile,eLine)
  2055.    if (is(curFile,eFile)) goto label(11)
  2056.    if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  2057.    goto label(13)
  2058.  
  2059.    label(10) .. dot command not found, go to check next line
  2060.    if (not is(curFile,eLine)) moveCursor(curFile,eLine)
  2061.    if (is(curFile,eFile)) goto label(11)
  2062.    moveCursor(curFile,eChar)
  2063. }
  2064. label(11)
  2065.  
  2066.  
  2067. putMsg("Setting up paging, please wait...")
  2068.  
  2069. getLocal(curFile,n97,topMargin)
  2070. getLocal(curFile,n98,bottomMargin)
  2071.  
  2072. if (not isEmpty(buf90)) if(eqNum(n97,0)) { 
  2073.    putMsg("Can't have header with no top margin. Press key.") 
  2074.    getKey(n99) beepDisplay returnFalse }
  2075. if (not isEmpty(buf91)) if(eqNum(n98,0)) { 
  2076.    putMsg("Can't have footer with no bottom margin. Press key.") 
  2077.    getKey(n99) beepDisplay returnFalse }
  2078.    
  2079. .. correct to real lines/page considering margins
  2080. add(n99,n97,n98)
  2081. getLocal(curFile,n98,pageLines)
  2082. sub(n99,n98,n99)
  2083. setLocal(curFile,pageLines,n99)
  2084.  
  2085. moveCursor(buf90,sFile) insertChar(buf90," ") moveCursor(buf90,sChar)
  2086. setSearch("@")
  2087. if (search(buf90,sInvert,eInvert,1)) {
  2088.    equateNum(n99,4) if (not runKey(virtual-d)) goto label(1)
  2089.    swapChar(buf90," ") copyColData(buf90,atCursor,buf82,invert,0) }
  2090. moveCursor(buf90,sFile) clearChar(buf90)
  2091.  
  2092. moveCursor(buf91,sFile) insertChar(buf91," ") moveCursor(buf91,sChar)
  2093. setSearch("@")
  2094. if (search(buf91,sInvert,eInvert,1)) {
  2095.    equateNum(n99,4) if (not runKey(virtual-d)) goto label(1)
  2096.    swapChar(buf91," ") copyColData(buf91,atCursor,buf82,invert,0) }
  2097. moveCursor(buf91,sFile) clearChar(buf91)
  2098.  
  2099. putMsg("Preview doc now for page breaks.  Press key. F10 to skip preview.")
  2100. getKey(n99) mod(n99,n99,104) if(eqNum(n99,normal-f10)) goto label(2)
  2101. moveCursor(curFile,sFile)
  2102. equateNum(n92,0)
  2103. while (moveCursor(curFile,eForm)) {
  2104.    moveCursor(curFile,eForm) 
  2105.    if (not is(curFile,eLine)) moveCursor(curFile,eLine)
  2106.    if (is(curFile,eFile)) equateNum(n92,2) 
  2107.    moveCursor(curFile,sForm)
  2108.    if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  2109.    vScroll(atCursor) refreshDisplay
  2110.    freeBuf(buf99)
  2111.    insertRgn(buf99,sFile,
  2112.    "Cursor @ page break.  OK=kpEnter;F10=end; or edit this PRINT doc  ",all)
  2113.    movecursor(buf99,eFile)
  2114.    equateNum(n99,ctl-help)  .. no-op
  2115.    while (not eqNum(n99,normal-kpEnter)) { 
  2116.       runKey(n99) refreshDisplay 
  2117.       getPageRowCol(n99,n98,n97) .. simulate pagerowcol
  2118.       toWord(buf99,n99) insertChar(buf99,":") toWord(buf99,n98)
  2119.       insertChar(buf99,",") toWord(buf99,n97) putMsg(buf99)
  2120.       getKey(n99) 
  2121.       if (eqNum(n99,normal-f10)) goto label(2)
  2122.       freeBuf(buf99) insertRgn(buf99,sFile,
  2123.       "PRINT Page break editing. No typing. kpEnter goes, F10 ends.      ",all)
  2124.    }
  2125.    if (eqNum(n92,2)) goto label(2)
  2126. }
  2127. label(2)
  2128. putMsg(" ")
  2129.  
  2130. putMsg("Converting document to final print form...")
  2131.  
  2132. .. n98 top n97 bot  n99 scratch  n96 scratch n95 scratch
  2133. .. n93 top hdr page#  n94 bot footer page#  n92 bof/eof flag  n91 real pagelin
  2134. .. buf96 = buf90  buf97 = buf91
  2135.  
  2136. moveCursor(curFile,sFile)                       .. setup
  2137. getLocal(curFile,n98,topMargin)
  2138. getLocal(curFile,n97,bottomMargin)
  2139.  
  2140. freeBuf(buf96) insertRgn(buf96,sFile,buf90,all)  .. header setup
  2141. moveCursor(buf96,sFile) insertChar(buf96," ") moveCursor(buf96,sChar)
  2142. equateNum(n93,0)
  2143. setSearch("#")
  2144. if (search(buf96,sInvert,eInvert,1)) {
  2145.    clearChar(buf96) 
  2146.    locToCol(buf96,n93,atCursor) decNum(n93)  }   
  2147. moveCursor(buf96,sFile) clearChar(buf96)
  2148.  
  2149. freeBuf(buf97) insertRgn(buf97,sFile,buf91,all)  .. footer setup
  2150. moveCursor(buf97,sFile) insertChar(buf97," ") moveCursor(buf97,sChar)
  2151. equateNum(n94,0)
  2152. setSearch("#")
  2153. if (search(buf97,sInvert,eInvert,1)) {
  2154.    clearChar(buf97) 
  2155.    locToCol(buf97,n94,atCursor) decNum(n94)  }   
  2156. moveCursor(buf97,sFile) clearChar(buf97)
  2157.  
  2158. equateNum(n92,0)  .. 0 not eof   2 eof
  2159. equateNum(n91,1)  .. page # counter
  2160. equateLoc(curFile,locA,atCursor)
  2161.  
  2162. while(nothing)  {                               ..the  heart  of  it all 
  2163.  
  2164.    moveCursor(curFile,eForm)            .. end of page operations
  2165.    if (not is(curFile,eLine)) moveCursor(curFile,eLine)   
  2166.    if (is(curFile,eFile)) { 
  2167.       insertChar(curFile,12) moveCursor(curFile,sChar) equateNum(n92,2) }
  2168.    if (is(curFile,12)) { clearChar(curFile) .. space out to end of page
  2169.       getPageRowCol(n99,n96,n95) 
  2170.       getLocal(curFile,n95,pageLines)
  2171.       if (gtNum(n95,n96)) { do(n99,n96,n95) insertChar(curFile,eLine)
  2172.       moveCursor(curFile,sChar) }
  2173.    }
  2174.    if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  2175.    equateLoc(curFile,locB,atCursor)  .. save place to insert footer
  2176.    
  2177.    if (gtNum(n98,0)) {                          .. top marg   
  2178.       equateLoc(curFile,atCursor,locA)
  2179.       if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  2180.       do(n99,1,n98) insertChar(curFile,eLine)
  2181.       if (not isEmpty(buf90)) {  .. put in header, ~centered in top margin 
  2182.          div(n99,n98,2) 
  2183.          do(n96,0,n99) moveCursor(curFile,upLine)
  2184.          freeBuf(buf99) insertRgn(buf99,sFile,buf96,all)
  2185.          if (gtNum(n93,0)) {    .. put in current page #
  2186.             colToLoc(buf99,atCursor,n93)
  2187.             toWord(buf99,n91)
  2188.          }
  2189.          copyColData(curFile,atCursor,buf99,all,0)
  2190.          equateLoc(curFile,sHilite,eHilite)
  2191.       }
  2192.    }
  2193.    refreshDisplay   .. show progress
  2194.  
  2195.    equateLoc(curFile,atCursor,locB)      .. bottom margin
  2196.    moveCursor(curFile,downLine)  .. correct by 1
  2197.    if (gtNum(n97,0)) do(n99,1,n97) insertChar(curFile,eLine)
  2198.    moveCursor(curFile,sChar) clearChar(curFile)       
  2199.    insertChar(curFile,12)             .. put in FF, so Form figured correctly
  2200.    equateLoc(curFile,locA,atCursor)   .. save place to insert header
  2201.    moveCursor(curFile,upLine)
  2202.    if (gtNum(n97,0)) {
  2203.       if (not isEmpty(buf91)) {  .. put in footer, ~centered in bottom margin 
  2204.          div(n99,n97,2) 
  2205.          if (gtNum(n97,2)) do(n96,1,n99) moveCursor(curFile,upLine)
  2206.          freeBuf(buf99) insertRgn(buf99,sFile,buf97,all)
  2207.          if (gtNum(n94,0)) {    .. put in current page #
  2208.             colToLoc(buf99,atCursor,n94)
  2209.             toWord(buf99,n91)
  2210.          }
  2211.          copyColData(curFile,atCursor,buf99,all,0)
  2212.          equateLoc(curFile,sHilite,eHilite)
  2213.       }
  2214.       if (not is(curFile,eForm)) moveCursor(curFile,eForm)  .. back to FF
  2215.    }
  2216.    if (eqNum(n92,2)) goto label(3)
  2217.  
  2218.    incNum(n91)  .. page # counter
  2219.  
  2220. }
  2221. label(3)
  2222.  
  2223. ..goto label(4)  .. testing
  2224. moveCursor(curFile,sFile)                  .. get rid of unnecessary FF's
  2225. while(nothing) {
  2226.    moveCursor(curFile,eForm)
  2227.    if (not is(curFile,eLine)) moveCursor(curFile,eLine)
  2228.    if (is(curFile,12)) swapChar(curFile,eLine)
  2229.    moveCursor(curFile,eChar)
  2230.    if (is(curFile,eFile)) goto label(4)
  2231. }
  2232. label(4)
  2233.  
  2234. flipFlag(curFile,changed)
  2235.  
  2236. if (askYesNo("Print converted document?")) {
  2237.    alertUser("Put printer to top of form and on-line")
  2238.    putMsg("Spooling for printing; may take a long time to start printing...")
  2239.    print(curFile,all) }
  2240. if (not askYesNo("Discard this PRINT buffer?")) {
  2241.    putMsg("PRINT buffer not discarded.  Rename and save if desired.")
  2242.    add(n98,n98,n97) getLocal(curFile,n99,pageLines) add(n99,n98,n99)
  2243.    setLocal(curFile,pageLines,n99)
  2244.    flipFlag(curFile,changed) }
  2245. else { putMsg(" ") equateNum(n99,curFile) editBuf(buf[n82]) freeBuf(buf[n99]) }
  2246. >
  2247.  
  2248. -----------------------------------------------------------------------------
  2249.  
  2250.                             C Programming Help
  2251.  
  2252.  
  2253. Set up my preferred editor environment for C programming
  2254. <shft-F7:
  2255. putmsg("Setting up for C...")
  2256. if (getFlag(curFile,overStrike)) flipFlag(curFile,overStrike)
  2257. if (not getFlag(curFile,autoBackup)) flipFlag(curFile,autoBackup)
  2258. if (getFlag(curFile,wordWrap)) flipFlag(curFile,wordWrap)
  2259. if (getFlag(curFile,icons)) flipFlag(curFile,icons)
  2260. equateNum(pageLines,1)
  2261. setLocal(curFile,pageLines,pageLines)
  2262. if (not getFlag(curFile,autoIndent)) flipFlag(curFile,autoIndent)
  2263. setLocal(curFile,tabTable,2)  .. assumes 2 is programming table
  2264. equateNum(tabTable,2)
  2265. putmsg("Ready to do C") >
  2266.  
  2267.  
  2268. Save file in current buffer to vd0:
  2269. Strips out any path, saves to vd0: root, which is where I do my C work
  2270. Save file in current buffer to vd0:; path stripped, always puts to root
  2271. <ctl-F7: 
  2272.    freeBuf(buf98) getFileName(buf98,curFile)
  2273.    moveCursor(buf98,sFile) insertChar(buf98," ") moveCursor(buf98,sFile)
  2274.    equateLoc(buf98,sInvert,eInvert)
  2275.    setSearch(":")
  2276.    if (search(buf98,sInvert,eInvert,1)) {
  2277.       moveCursor(buf98,sFile)
  2278.       if (eqLoc(buf98,sFile,sInvert)) clearChar(buf98)
  2279.       else {
  2280.          moveCursor(buf98,sFile)
  2281.          while (not eqLoc(buf98,atCursor,sInvert)) clearChar(buf98) } }
  2282.    else moveCursor(buf98,sFile) clearChar(buf98)
  2283.  
  2284.    moveCursor(buf98,sFile) insertChar(buf98," ")
  2285.    equateLoc(buf98,sInvert,eInvert)
  2286.    moveCursor(buf98,sFile)
  2287.    setSearch("/")
  2288.    do (n98,0,9999) { 
  2289.       if (not search(buf98,sInvert,eInvert,1)) goto label(1) }
  2290.    label(1)
  2291.    if (gtNum(n98,0)) { moveCursor(buf98,sFile) 
  2292.       while (not eqLoc(buf98,atCursor,eInvert)) clearChar(buf98) }
  2293.    else { moveCursor(buf98,sFile) clearChar(buf98) }
  2294.  
  2295.    getFileName(buf99,curFile)
  2296.    insertRgn(buf98,sFile,"vd0:",all)
  2297.    setFileName(curFile,buf98)
  2298.    if (getFlag(curFile,changed)) equateNum(n99,5) else equateNum(n99,0)
  2299.    saveFile(curFile)
  2300.    setFileName(curFile,buf99)
  2301.    if (eqNum(n99,5)) flipFlag(curFile,changed) >
  2302.  
  2303.  
  2304. For C comments: put in the beginning comment delimiter "/* "
  2305. <normal-f7:
  2306.    if (not is(curFile," ")) insertchar(curFile,"/")
  2307.    else { swapChar(curFile,"/") moveCursor(curFile,eChar) }
  2308.    if (not is(curFile," ")) insertchar(curFile,"*")
  2309.    else { swapChar(curFile,"*") moveCursor(curFile,eChar) }
  2310.    if (not is(curFile," ")) insertchar(curFile," ")
  2311.    else moveCursor(curFile,eChar)
  2312.    updateDisplay
  2313. >
  2314.  
  2315.  
  2316. For C comments: put in the ending comment delimiter " */"
  2317. <normal-f8:
  2318.    if (not is(curFile," ")) insertchar(curFile," ")
  2319.    else moveCursor(curFile,eChar)
  2320.    if (not is(curFile," "))    insertChar(curFile,"*") 
  2321.    else { swapChar(curFile,"*") moveCursor(curFile,eChar) }
  2322.    if (not is(curFile," "))    insertChar(curFile,"/")
  2323.    else { swapChar(curFile,"/") moveCursor(curFile,eChar) }
  2324.    updateDisplay
  2325. >
  2326.  
  2327.  
  2328. C programming: comment out current line with "/* " at cursor & " */" at EOL
  2329. <ctl-f8: 
  2330. runKey(normal-f7)
  2331. if (not is(curFile,eLine)) moveCursor(curFile,eLine)
  2332. runKey(normal-f8)
  2333. moveCursor(curFile,sLine) moveCursor(curFile,downLine)
  2334. >
  2335.  
  2336.  
  2337. Un-Set up my C environment
  2338. <shft-F8:
  2339. putmsg("UnSetting from C mode...")
  2340. if (getFlag(curFile,autoBackup)) flipFlag(curFile,autoBackup)
  2341. if (not getFlag(curFile,wordWrap)) flipFlag(curFile,wordWrap)
  2342. equateNum(pageLines,66)
  2343. setLocal(curFile,pageLines,pageLines)
  2344. setLocal(curFile,tabTable,1)  .. assumes WS std desired
  2345. equateNum(tabTable,1)
  2346. putmsg("C mode now unset") >
  2347.  
  2348. ----------------------------------------------------------------------------
  2349.  
  2350.                                  Borrowed
  2351.  
  2352.  
  2353. Other  than  command  key/n#/buf#  reassignments,  reformatting,  and   minor
  2354. changes, the following were copied from the standard UEdit Config! file
  2355.  
  2356. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2357.  
  2358. Speak a marked block.  Say command & libraries must be available.
  2359. <shftCtl-]:
  2360. if (gtLoc(curFile,eHilite,sHilite)) {
  2361.    equateLoc(curFile,locA,atCursor)
  2362.    equateLoc(curFile,sInvert,sHilite)
  2363.    equateLoc(curFile,atCursor,sHilite)
  2364.    while (gtLoc(curFile,eHilite,sInvert)) {
  2365.       if (not is(curFile,eLine)) moveCursor(curFile,eLine)
  2366.          moveCursor(curFile,eChar)
  2367.          if (gtLoc(curFile,atCursor,eHilite))
  2368.             equateLoc(curFile,eInvert,eHilite)
  2369.          else equateLoc(curFile,eInvert,atCursor)
  2370.          if (gtLoc(curFile,eInvert,sInvert)) {
  2371.             freeBuf(buf99)
  2372.             insertRgn(buf99,sFile,curFile,invert)
  2373.             speak(buf99) }
  2374.          equateLoc(curFile,sInvert,atCursor) }
  2375.       equateLoc(curFile,atCursor,locA) } 
  2376. else { putMsg("No block!") returnFalse } 
  2377. returnTrue>
  2378.  
  2379. ----------------------------------------------------------------------------
  2380.  
  2381.                                 Arithmetic
  2382.  
  2383. Set running total to 0
  2384. <alt-0: equateNum(n90,0) putmsg("Total=0") returnTrue >
  2385.  
  2386. Type running total into text at cursor
  2387. <alt-\:
  2388. freeBuf(buf99) div(n97,n90,100)
  2389. if (gtNum(0,n90)) if (eqNum(n97,0)) insertChar(buf99,"-")
  2390. toWord(buf99,n97) insertChar(buf99,".")
  2391. if (gtNum(0,n90)) mul(n97,n90,-1) else equateNum(n97,n90)
  2392. mod(n97,n97,100) if (gtNum(10,n97)) insertChar(buf99,"0")
  2393. toWord(buf99,n97) insertRgn(curFile,atCursor,buf99,all)
  2394. insertRgn(buf99,sFile,"Total: ",all) putMsg(buf99) 
  2395. returnTrue
  2396. >
  2397.  
  2398. Add next word (if a number) to running total & display total
  2399. <alt-=:
  2400. moveCursor(curFile,eWord) moveCursor(curFile,sWord)
  2401. runKey(virtual-=)
  2402. >
  2403.  
  2404. <virtual-=:
  2405. toNumber(n99,curFile) moveCursor(curFile,eWord)
  2406. if (is(curFile,".")) {
  2407.    moveCursor(curFile,eChar) if (not is(curFile,digit)) goto label(1)
  2408.    toNumber(n98,curFile)    moveCursor(curFile,eChar)
  2409.    if (not is(curFile,digit)) { mul(n98,n98,10) moveCursor(curFile,sChar) }
  2410.    moveCursor(curFile,eWord) } 
  2411. else { label(1) equateNum(n98,0) }
  2412. mul(n99,n99,100) if (gtNum(0,n99)) mul(n97,n98,-1) else equateNum(n97,n98)
  2413. add(n99,n99,n97) add(n90,n90,n99) freeBuf(buf99) div(n97,n90,100)
  2414. if (gtNum(0,n90)) if (eqNum(n97,0)) insertChar(buf99,"-")
  2415. toWord(buf99,n97) insertChar(buf99,".") mod(n97,n90,100)
  2416. if (gtNum(0,n90)) mul(n97,-1,n97) if (gtNum(10,n97)) insertChar(buf99,"0")
  2417. toWord(buf99,n97) insertRgn(buf99,sFile,"Running total: ",all)
  2418. putMsg(buf99) returnTrue>
  2419.  
  2420. Subtract next word (if a number) from running total & display total
  2421. <alt--:
  2422. moveCursor(curFile,eWord) moveCursor(curFile,sWord)
  2423. toNumber(n99,curFile) moveCursor(curFile,eWord)
  2424. if (is(curFile,".")) {
  2425.    moveCursor(curFile,eChar) 
  2426.    if (not is(curFile,digit)) goto label(1)
  2427.    toNumber(n98,curFile)
  2428.    moveCursor(curFile,eChar)
  2429.    if (not is(curFile,digit)) { mul(n98,n98,10) moveCursor(curFile,sChar) }
  2430.    moveCursor(curFile,eWord) } 
  2431. else { label(1) equateNum(n98,0) }
  2432. mul(n99,n99,100) if (gtNum(0,n99)) mul(n97,n98,-1) else equateNum(n97,n98)
  2433. add(n99,n99,n97) sub(n90,n90,n99) freeBuf(buf99) div(n97,n90,100)
  2434. if (gtNum(0,n90)) if (eqNum(n97,0)) insertChar(buf99,"-")
  2435. if (gtNum(0,n90)) insertChar(buf99,"-") toWord(buf99,n97)
  2436. insertChar(buf99,".") mod(n97,n90,100) if (gtNum(0,n97)) mul(n97,n97,-1)
  2437. if (gtNum(10,n97)) insertChar(buf99,"0") toWord(buf99,n97)
  2438. insertRgn(buf99,sFile,"Running total: ",all) putMsg(buf99) returnTrue>
  2439.  
  2440. ----------------------------------------------------------------------------
  2441.  
  2442.                                Index Stuff
  2443.  
  2444. Click or drag mouse, put word/phrase into index in buf80.  (ctl-w to see.)
  2445. <shftCtl-buttonDown:
  2446. equateLoc(curfile,atCursor,mouseLoc) moveCursor(curFile,eWord)
  2447. equateLoc(curFile,eInvert,atCursor) moveCursor(curFile,sWord)
  2448. equateLoc(curFile,sInvert,atCursor) refreshDisplay > 
  2449.  
  2450. ((See shftCtl-buttonDown and Alt-b))
  2451. <shftCtl-buttonUp:
  2452. equateLoc(curFile,atCursor,mouseLoc) moveCursor(curFile,eWord)
  2453. equateLoc(curFile,eInvert,atCursor)
  2454. if (geLoc(curFile,sInvert,eInvert)) returnFalse
  2455. moveCursor(curFile,sInvert)
  2456. if (is(curFile,upperCase)) equateNum(n0,1) else equateNum(n0,0)
  2457. toLower(curFile) copyChar(curFile,n99)
  2458. if (eqNum(n0,1)) toUpper(curFile)
  2459. if (isEmpty(buf80)) insertChar(buf80,eLine)
  2460. moveCursor(buf80,sFile) equateLoc(buf80,sPage,atCursor)
  2461. label(1)
  2462. if (is(buf80,upperCase)) equateNum(n0,1) else equateNum(n0,0)
  2463. toLower(buf80) copyChar(buf80,n98)
  2464. if (eqNum(n0,1)) toUpper(buf80)
  2465. if (gtNum(n99,n98)) { moveCursor(buf80,downLine)
  2466.     if (not is(buf80,eFile)) goto label(1) }
  2467. insertRgn(buf80,atCursor,curFile,invert) insertChar(buf80,eLine)
  2468. >
  2469.  
  2470.  
  2471. Scan list in buf80, create index.  ((See shftCtl-buttonDown & buttonUp.))
  2472. <alt-b:
  2473. if(not askYesNo("Build index? (Swap buffer wiped!)")) returnFalse
  2474. if (isEmpty(buf80)) returnFalse 
  2475. runKey(shftAltCtl-j) freeBuf(buf99)
  2476. label(1)
  2477. moveCursor(buf80,sFile) while (is(buf80,whiteSpace)) clearChar(buf80)
  2478. if (is(buf80,eFile)) {
  2479.    swapBuf(buf99,buf80) freeBuf(buf99) setFileName(buf80,"Index")
  2480.    equateLoc(buf80,sPage,sFile) equateLoc(buf80,atCursor,sFile)
  2481.    putMsg("Alt-F1 or R-F1 for Index") returnTrue }
  2482. freeBuf(buf97) insertRgn(buf97,sFile,buf80,line)
  2483. clearRgn(buf80,line) freeBuf(buf98) insertRgn(buf98,sFile,buf97,all) 
  2484. insertRgn(buf98,sFile,"Indexing: ",all) putMsg(buf98)
  2485. moveCursor(buf99,eFile) insertRgn(buf99,eFile,buf97,all)
  2486. insertRgn(buf99,eFile,"  ",all) insertChar(buf99,eLine)
  2487. moveCursor(buf99,sChar) equateNum(n98,0) moveCursor(curFile,sFile)
  2488. label(2)
  2489. setSearch(buf97)
  2490. while (search(curFile,sInvert,eInvert,1)) {
  2491.     moveCursor(curFile,sChar)
  2492.     if (is(curFile,alpha)) {
  2493.         label(3)
  2494.         moveCursor(curFile,eInvert)
  2495.         goto label(2) }
  2496.     if (is(curFile,digit)) goto label(3)
  2497.     moveCursor(curFile,eInvert)
  2498. ..    if (is(curFile,alpha)) goto label(2)
  2499. ..    if (is(curFile,digit)) goto label(2)
  2500.     locToLine(curFile,n99,atCursor) div(n99,n99,pageLines) incNum(n99)
  2501.     if (not eqNum(n99,n98)) {
  2502.         if (not eqNum(n98,0)) insertChar(buf99,",")
  2503.         toWord(buf99,n99) equateNum(n98,n99) } }
  2504. goto label(1) >
  2505.  
  2506. ********
  2507. End of config file
  2508.