home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / texted / b084_1 / ue_mac_rc2 < prev   
Text File  |  1991-04-08  |  23KB  |  850 lines

  1. ; Andy Sturges : These are my standard macros
  2.  
  3. ;{{{  store-procedure help
  4. store-procedure help
  5.         !if %rcfkeys
  6.                 !goto rcfoff
  7.         !endif
  8.  
  9. ;       toggle function key window on
  10.         save-window
  11.         1 next-window
  12.         !if &sequal $cbufname "emacs.hlp"
  13.                 delete-window
  14.         !endif
  15.         !if ¬ &sequal $cbufname "Function Keys"
  16.                 1 split-current-window
  17.                 1 select-buffer "Function Keys"
  18.                 end-of-file
  19.                 !force $curline resize-window
  20.                 1 goto-line
  21.         !endif
  22.         set %rcfkeys TRUE
  23.         !force restore-window
  24.         !if &sequal $cbufname "Function Keys"
  25.                 next-window
  26.         !endif
  27.         write-message "[Function key window ON]"
  28.         !return
  29.  
  30.         ;Toggle the function key window off
  31. *rcfoff
  32.         save-window
  33.         1 next-window
  34.         !if &sequal "Function Keys" $cbufname
  35.                 delete-window
  36.         !endif
  37.         !force restore-window
  38.         write-message "[Function key window OFF]"
  39.         set %rcfkeys FALSE
  40. !endm
  41. ;}}}
  42. ;{{{  store-procedure do-pick-line
  43. store-procedure do-pick-line
  44.         set $curcol $lmargin
  45.         set-mark
  46.         next-line
  47.         kill-region
  48.         set $curcol $lmargin
  49.         set %tmp $cwline
  50.         set %main $cbufname
  51.         1 select-buffer %pick
  52.         yank
  53.         unmark-buffer   
  54.         select-buffer %main
  55.         goto-mark
  56.         !if &and &seq $progname "uEmacs"  &seq $ltype LSOEFOLD 
  57.         close-fold
  58.           set $curcol $lmargin
  59.         !endif
  60. !endm
  61. ;}}}
  62. ;{{{  store-procedure do-put-buffer
  63. store-procedure do-put-buffer
  64.         set %main $cbufname
  65.         1 select-buffer %pick
  66.         beginning-of-file
  67.         set-mark
  68.         end-of-file
  69.         !force backward-character
  70.         copy-region
  71.         unmark-buffer
  72.         select-buffer %main
  73.         !force previous-line
  74.         end-of-line
  75.         open-line
  76.         next-line
  77.         yank
  78.         delete-next-character
  79.         previous-line
  80.         set $curcol $lmargin
  81.         delete-buffer %pick
  82. !endm
  83. ;}}}
  84. ;{{{  store-procedure clear-pick
  85. store-procedure clear-pick
  86.         delete-buffer "?pick?"
  87.         write-message "[pick buffer cleared]"
  88. !endm
  89. ;}}}
  90. ;{{{  store-procedure pick-line
  91. store-procedure pick-line
  92.   set %pick "?pick?"
  93.   execute-procedure do-pick-line
  94.   write-message "[line moved to pick buffer]"
  95. !endm
  96. ;}}}
  97. ;{{{  store-procedure move-line
  98. store-procedure move-line
  99.         set %pick "?move?"
  100.         !if %moving
  101.                 execute-procedure do-put-buffer
  102.                 delete-buffer "?move?"
  103.                 set %moving FALSE
  104.                 write-message "[line put]"
  105.         !else
  106.                 delete-buffer "?move?"
  107.                 execute-procedure do-pick-line 
  108.                 set %moving TRUE
  109.                 write-message "[line moved to pick buffer]"
  110.         !endif
  111. !endm
  112. ;}}}
  113. ;{{{  store-procedure copy-pick
  114. store-procedure copy-pick
  115.         set $curcol $lmargin
  116.         set-mark
  117.         next-line
  118.         copy-region
  119.         set $curcol $lmargin
  120.         set %tmp $cwline
  121.         set %main $cbufname
  122.         1 select-buffer "?pick?"
  123.         yank
  124.         unmark-buffer   
  125.         select-buffer %main
  126.         goto-mark
  127.         !if &and &seq $progname "uEmacs"  &seq $ltype LSOEFOLD 
  128.         close-fold
  129.         !endif
  130.         next-line
  131.         write-message "[line copied to pick buffer]"
  132. !endm
  133. ;}}}
  134. ;{{{  store-procedure put-buffer
  135. store-procedure put-buffer
  136.   set %pick "?pick?"
  137.   execute-procedure do-put-buffer
  138.   write-message "[pick buffer put]"
  139. !endm
  140.  
  141. ;}}}
  142. ;{{{  store-procedure copy-line
  143. store-procedure copy-line
  144.         set $curcol $lmargin
  145.         set-mark
  146.         next-line
  147.         copy-region
  148.         newline
  149.         previous-line
  150.         yank
  151.         delete-next-character
  152.         previous-line
  153.         write-message "[line copied]"
  154. !endm
  155.  
  156. ;}}}
  157. ;{{{  store-procedure del-line
  158. store-procedure delete-line
  159.         set $curcol $lmargin
  160.         set-mark
  161.         next-line
  162.         kill-region
  163.         write-message "[line deleted]"
  164. !endm
  165.  
  166. ;}}}
  167. ;{{{  store-procedure pick-region
  168. store-procedure pick-region
  169.         copy-region
  170.         set $curcol $lmargin
  171.         set %tmp $cwline
  172.         set %main $cbufname
  173.         1 select-buffer "?pick?"
  174.         yank
  175.         unmark-buffer   
  176.         select-buffer %main
  177.         write-message "[region copied to pick buffer]"
  178. !endm
  179. ;}}}
  180.  
  181.  
  182. !if &seq $progname "uEmacs" 
  183.   set %t-depth 0
  184.   ;{{{  store-procedure copy-to-fold
  185.   store-procedure copy-to-fold
  186.           set $curcol $lmargin
  187.           !force enter-fold
  188.           !if $status
  189.                   kill-to-end-of-line
  190.                   yank
  191.                   exit-fold
  192.                   5 forward-character
  193.                   yank
  194.                   !if ¬ &equal $curchar 13
  195.                           kill-to-end-of-line
  196.                   !endif
  197.           !endif
  198.   !endm
  199.   ;}}}
  200.   ;{{{  store-procedure t-sa
  201.   store-procedure t-sa
  202.           !if &and ¬ &seq $cfname "" &bor $cbflags 2
  203.           save-file
  204.           !endif
  205.           set %tmp $cbufname
  206.           next-buffer
  207.           !while ¬ &seq $cbufname %tmp
  208.                   !if &and ¬ &seq $cfname "" &bor $cbflags 2
  209.                           save-file
  210.                   !endif
  211.                   next-buffer
  212.           !endwhile
  213.           !if %t-lstflg
  214.                   execute-procedure t-listbuf
  215.           !endif
  216.           set $discmd TRUE
  217.           set $disinp TRUE
  218.           write-message "[All buffers saved]"
  219.   !endm
  220.   
  221.   ;}}}
  222.   ;{{{  store-procedure t-listbuf
  223.   store-procedure t-listbuf
  224.           save-window
  225.           !if ¬ %t-lstflg
  226.             split-current-window
  227.           !endif
  228.           list-buffers
  229.           set %t-lstflg TRUE
  230.           !while ¬ &seq $cbufname "[List]"
  231.                   next-window
  232.                   set %nwins &sub %nwins 1
  233.           !endwhile
  234.           beginning-of-file
  235.           set-mark
  236.           set $curline 4
  237.           kill-region
  238.           !while $status
  239.                   !force set $curcol 2
  240.                   !force set-mark
  241.                   !force set $curcol 22
  242.                   !force kill-region
  243.                    !force next-line
  244.           !endwhile
  245.           $curline resize-window        
  246.           add-mode MAGIC
  247.           beginning-of-file
  248.           restore-window
  249.           set $discmd TRUE
  250.           set $disinp TRUE
  251.   !endm
  252.   
  253.   ;}}}
  254.   ;{{{  store-procedure t-listbufoff
  255.   store-procedure t-listbufoff
  256.           set %tmp 100
  257.           set %t-lstflg FALSE
  258.           save-window
  259.           !while &and ¬ &seq $cbufname "[List]" %tmp
  260.                   next-window
  261.                   set %tmp &sub %tmp 1
  262.           !endwhile
  263.           !if &seq $cbufname "[List]"
  264.             delete-window
  265.           !endif
  266.           restore-window
  267.           set $discmd TRUE
  268.           set $disinp TRUE
  269.   !endm
  270.   
  271.   ;}}}
  272.   ;{{{  store-procedure t-delbuf
  273.   store-procedure t-delbuf
  274.           !if &seq $cbufname "[List]"
  275.                   set %tmp $search
  276.                   !force set $curcol 2
  277.                   search-forward "[^ ]*"
  278.                   set $search %tmp
  279.                   set $discmd TRUE
  280.                   set $disinp TRUE
  281.                   !force delete-buffer $match
  282.                   restore-window
  283.                   save-window
  284.                   !if $status
  285.                           execute-procedure t-listbuf
  286.                           write-message "[Buffer deleted]"
  287.                   !endif
  288.           !endif
  289.   !endm        
  290.   
  291.   ;}}}
  292.   ;{{{  store-procedure t-gotobuf 
  293.   store-procedure t-gotobuf
  294.           !if &seq $cbufname "[List]"
  295.                   set %tmp $search
  296.                   !force set $curcol 2
  297.                   search-forward "[^ ]*"
  298.                   set $search %tmp
  299.                   restore-window
  300.                   set %tmp $cbufname
  301.                   !force next-buffer
  302.                   !while &and ¬ &seq $cbufname %tmp ¬ &seq $cbufname $match
  303.                           next-buffer
  304.                   !endwhile
  305.                   !if &seq $cbufname $match
  306.                           set $discmd TRUE
  307.                           set $disinp TRUE
  308.                           write-message "[Buffer found]"
  309.                   !endif
  310.           !endif
  311.   !endm        
  312.   
  313.   ;}}}
  314.   ;{{{  store-procedure t-bufname 
  315.   store-procedure t-bufname
  316.           set %tmp $cbufname
  317.           set %string $cfname
  318.           1 select-buffer ".uetooltmp"
  319.           insert-string %string
  320.           write-file ".uetooltmp"
  321.           select-buffer %tmp
  322.           !force delete-buffer ".uetooltmp"
  323.   !endm
  324.   
  325.   ;}}}
  326.   ;{{{  store-procedure t-filepsn 
  327.   store-procedure t-filepsn 
  328.           !force set %fpsn @""
  329.           end-of-file
  330.           goto-line &DIV &TIMES $curline %fpsn 1000
  331.   !endm
  332.   
  333.   ;}}}
  334.   ;{{{  store-procedure t-spell
  335.   store-procedure t-spell
  336.           save-file
  337.           shell-command &cat "ispelltool " $cfname
  338.           read-file $cfname
  339.   !endm
  340.   
  341.   ;}}}
  342.   ;{{{  store-procedure t-maketags
  343.   store-procedure t-maketags
  344.           set $discmd TRUE
  345.           set $disinp TRUE
  346.           3 set-mark
  347.           set %occ ¬ &equal &sin $cfname ".occ" 0
  348.           set %base 0
  349.           set %tmp &sin $cfname "/"
  350.           !while ¬ &equal %tmp 0
  351.             set %base &add %base %tmp
  352.             set %tmp &sin &right $cfname &sub &length $cfname %base "/"
  353.           !endwhile
  354.           
  355.           set %home &left $cfname %base 
  356.           set %tagf &cat %home ".uetags"
  357.           
  358.           set %tmpbuf  $cbufname
  359.           1 select-buffer &right %tagf 32
  360.           write-message &cat &cat "[creating " %tagf " file ...]"
  361.           !if %occ
  362.                   !force set %cmd &cat &cat "octags -f " %tagf &cat " " &cat %home "*.[opi][cgn][cm]"
  363.                   !force shell-command %cmd
  364.           !else
  365.                   !force shell-command &cat &cat "ctags -t -w -f " %tagf &cat " " &cat %home "*.[ch]"
  366.           !endif
  367.           !force read-file %tagf
  368.           !force add-mode magic
  369.           select-buffer %tmpbuf
  370.   !endm
  371.   
  372.   ;}}}
  373.   ;{{{  store-procedure t-ctags
  374.   store-procedure t-ctags
  375.     ;set $debug TRUE
  376.     ;{{{  init
  377.     3 set-mark
  378.     
  379.     set %tdebug $debug
  380.     set $debug FALSE
  381.     set %occ ¬ &equal &sin $cfname ".occ" 0
  382.     set %base 0
  383.     set %tmp &sin $cfname "/"
  384.     !while ¬ &equal %tmp 0
  385.       set %base &add %base %tmp
  386.       set %tmp &sin &right $cfname &sub &length $cfname %base "/"
  387.     !endwhile
  388.     
  389.     set %home &left $cfname %base 
  390.     
  391.     set %tagf &cat %home ".uetags"
  392.     
  393.     set %tmp     $search
  394.     set %tmode   $cmode
  395.     set %tmpbuf  $cbufname
  396.     !force add-mode magic
  397.     set $debug %tdebug
  398.     
  399.     ;}}}
  400.     ;{{{  find tag
  401.     1 forward-character   ; If we are on the first char
  402.     !if %occ
  403.             !force search-reverse "[a-zA-Z][a-zA-Z0-9.]*"
  404.             !force search-forward "[a-zA-Z][a-zA-Z0-9.]*"
  405.     !else
  406.             !force search-reverse "[a-zA-Z][a-zA-Z0-9_]*"
  407.             !force search-forward "[a-zA-Z][a-zA-Z0-9_]*"
  408.     !endif
  409.     !if &seq $status FALSE
  410.             !goto tagfail
  411.     !endif
  412.     set %string $match
  413.     ;}}}
  414.     ;{{{  read tag file
  415.     ;set $debug TRUE
  416.     1 select-buffer &right %tagf 32
  417.     !if &seq $cfname ""
  418.             !if ¬ &exi %tagf
  419.                     write-message &cat &cat "[creating " %tagf " file ...]"
  420.                     !if %occ
  421.                             !force set %cmd &cat &cat "octags -f " %tagf &cat " " &cat %home "*.[opi][cgn][cm]"
  422.                             ;" &cat &cat %home "*.inc " &cat %home "*.pgm"
  423.                             shell-command %cmd
  424.                     !else
  425.                             shell-command &cat &cat "ctags -t -w -f " %tagf &cat " " &cat %home "*.[ch]"
  426.                     !endif
  427.             !endif
  428.             read-file %tagf
  429.             !force add-mode magic
  430.             1 select-buffer &right %tagf 32
  431.     !endif
  432.     beginning-of-file
  433.     ;}}}
  434.     !force search-forward &cat &cat "^" %string "~t"
  435.     !if &seq $status TRUE
  436.       ;{{{  look for source file
  437.       set-mark
  438.       search-forward "~t" ; Tab char
  439.       1 backward-character
  440.       copy-region
  441.       set %fname $kill
  442.       search-forward "~t" ; Tab char
  443.       !if &equ $curchar 47
  444.         ;{{{  use search string
  445.         2 forward-character
  446.         set-mark
  447.         end-of-line
  448.         2 backward-character
  449.         copy-region
  450.         set %string $kill
  451.         !if &seq $cbufname &right %tagf 32
  452.           find-file %fname
  453.         !endif
  454.         !if &seq $progname "uEmacs" 
  455.           !force exit-all-folds
  456.         !endif
  457.         beginning-of-file
  458.         !force add-mode magic
  459.         !if &seq $progname "uEmacs" 
  460.           !force searchfold-forward %string
  461.         !else
  462.           !force search-forward %string
  463.         !endif
  464.         
  465.         !if &seq $status FALSE
  466.           !goto tagfail
  467.         !endif
  468.         ;}}}
  469.       !else
  470.         ;{{{  goto line number
  471.         set-mark
  472.         end-of-line
  473.         copy-region
  474.         set %string $kill
  475.         !if &seq $cbufname &right %tagf 32
  476.           find-file %fname
  477.         !endif
  478.         !if &seq $progname "uEmacs" 
  479.           !force exit-all-folds
  480.         !endif
  481.         beginning-of-file
  482.         !force goto-line %string
  483.         !if &seq $status FALSE
  484.           !goto tagfail
  485.         !endif
  486.         ;}}}
  487.       !endif
  488.       ;}}}
  489.     !else
  490.       !goto tagfail
  491.     !endif
  492.     set $search %tmp
  493.     set $debug FALSE
  494.     set $discmd TRUE
  495.     set $disinp TRUE
  496.     write-message "[tag found]"
  497.     !return
  498.   *tagfail
  499.     select-buffer %tmpbuf
  500.     set $cmode %tmode
  501.     set $search %tmp
  502.     3 goto-mark
  503.     set $debug FALSE
  504.     set $discmd TRUE
  505.     set $disinp TRUE
  506.     write-message "[tag not found]"
  507.   !endm
  508.   
  509.   ;}}}
  510.   ;{{{  store-procedure t-cleartags
  511.   store-procedure t-cleartags
  512.     delete-buffer ".uetags"
  513.   !endm
  514.   ;}}}
  515.   ;{{{  store-procedure t-sethome
  516.   store-procedure t-sethome
  517.     set %base 0
  518.     set %tmp &sin $cfname "/"
  519.     !while ¬ &equal %tmp 0
  520.       set %base &add %base %tmp
  521.       set %tmp &sin &right $cfname &sub &length $cfname %base "/"
  522.     !endwhile
  523.     set %home &left $cfname %base 
  524.   !endm
  525.   ;}}}
  526.   ;{{{  store-procedure t-findname
  527.   store-procedure t-findname
  528.     ;{{{  look for include etc
  529.     set %psn &sindex $line "#INCLUDE"
  530.     set %mst FALSE
  531.     set %occ FALSE
  532.     !if %psn
  533.       set %occ TRUE
  534.     !else
  535.       set %psn &sindex $line "#EXPAND"
  536.       !if %psn
  537.         set %mst TRUE
  538.       !else
  539.         set %psn &sindex $line "#include"
  540.       !endif
  541.     !endif
  542.     ;}}}
  543.     !if %psn
  544.       set $curcol %psn
  545.       add-mode magic
  546.       search-forward "[~"<]"
  547.       search-forward "[^~">~n]*"
  548.       set %fname &cat %home $match
  549.       !if %mst
  550.         set %fname &cat %fname ".mst"
  551.       !endif
  552.     !else
  553.       set %fname ""
  554.     !endif
  555.   !endm      
  556.   ;}}}
  557.   ;{{{  store-procedure t-enter-filed
  558.   store-procedure t-enter-filed
  559.     ;{{{  save state
  560.     set %tmps    $search
  561.     set %tmode   $cmode
  562.     set %tmpbuf  $cbufname
  563.     2 set-mark
  564.     set %saveb   $cbufname
  565.     ;}}}
  566.     ;set %occ  &or ¬ &equal &sin $cfname ".occ" 0 ¬ &equal &sin $cfname ".inc" 0
  567.     ;set %mst  ¬ &equal &sin $cfname ".mst" 0
  568.     !if &equal t-depth 0
  569.       execute-procedure t-sethome
  570.     !endif
  571.     set %tmpf $cfname
  572.     execute-procedure t-findname
  573.     !if &seq %fname ""
  574.       ;{{{  not a filed fold
  575.       set $search %tmps
  576.       set $cmode %tmode
  577.       2 goto-mark
  578.       write-message "[Not a filed fold]"
  579.       ;}}}
  580.     !else
  581.       !force find-file %fname
  582.       !if $status
  583.         ;{{{  enter file
  584.         1 select-buffer ?filed
  585.         beginning-of-file
  586.         insert-string &cat &cat "+" %fname &cat " " %tmpf
  587.         newline
  588.         unmark-buffer   
  589.         !force find-file %fname
  590.         !if %t-lstflg
  591.           execute-procedure t-listbuf
  592.         !endif
  593.         set $search %tmps
  594.         set $cmode %tmode
  595.         set %t-depth &add %t-depth 1
  596.         write-message "[File entered]"
  597.         ;}}}
  598.       !else
  599.         ;{{{  error
  600.         select-buffer %tmpbuf
  601.         !force delete-buffer %fname
  602.         set $search %tmps
  603.         set $cmode %tmode
  604.         write-message "[Failed to enter file]"  
  605.         ;}}}
  606.       !endif
  607.     !endif
  608.   !endm
  609.   ;}}}
  610.   ;{{{  store-procedure t-unfiled
  611.   store-procedure t-unfiled
  612.     set %tmps     $search
  613.     set %tmode   $cmode
  614.     set %tmpbuf  $cbufname
  615.     2 set-mark
  616.     set %saveb $cbufname
  617.     !if &equal t-depth 0
  618.       execute-procedure t-sethome
  619.     !endif
  620.     execute-procedure t-findname
  621.     !if &seq %fname ""
  622.       2 goto-mark
  623.       set $search %tmps
  624.       write-message "[Not a filed fold]"
  625.     !else
  626.       ;{{{  unfile fold
  627.       set $curcol %psn
  628.       set-mark
  629.       next-line
  630.       fold-region
  631.       enter-fold
  632.       !force insert-file %fname
  633.       !if $status
  634.               kill-to-end-of-line
  635.               delete-next-character
  636.               set $search %tmps
  637.               exit-fold
  638.               end-of-line
  639.               yank
  640.               shell-command &cat "rm " %fname
  641.               write-message "[File unfolded]"
  642.       !else
  643.              exit-fold
  644.              remove-fold
  645.              set $search %tmps
  646.              set $cmode %tmode
  647.              write-message "[Failed to unfile fold]"  
  648.       !endif
  649.       ;}}}
  650.     !endif
  651.   !endm
  652.   
  653.   ;}}}
  654.   ;{{{  store-procedure t-filed
  655.   store-procedure t-filed
  656.     !if &seq $ltype LSOFOLD
  657.       set %occ  &or ¬ &equal &sin $cfname ".occ" 0 ¬ &equal &sin $cfname ".inc" 0
  658.       set %mst  ¬ &equal &sin $cfname ".mst" 0
  659.       !if &equal t-depth 0
  660.         execute-procedure t-sethome
  661.       !endif
  662.       set %tmps    $search
  663.       set %tmode   $cmode
  664.       set %tmpbuf  $cbufname
  665.       enter-fold
  666.       set-mark
  667.       end-of-file
  668.       copy-region
  669.       set %fname &cat @"file name ?" %home
  670.       !if ¬ &exist %filename
  671.         ;{{{  ok
  672.         !force find-file %fname
  673.         yank
  674.         select-buffer %tmpbuf
  675.         kill-region
  676.         insert-string " "
  677.         !if %occ
  678.           insert-string "#INCLUDE ~""
  679.         !else
  680.           !if %mst
  681.             insert-string "#EXPAND ~""
  682.             set %fname &left %fname &sub &sin $cfname ".mst" 1
  683.           !else
  684.             insert-string "#include ~""
  685.           !endif
  686.         !endif
  687.         insert-string &cat %fname "~""
  688.         exit-fold
  689.         set $search %tmps
  690.         write-message "[Fold filed]"
  691.         ;}}}
  692.       !else
  693.         select-buffer %tmpbuf
  694.         set $search %tmps
  695.         exit-fold
  696.         write-message "[File already exists]"
  697.       !endif
  698.     !else
  699.       write-message "[Not a fold]"
  700.   !endm  
  701.   ;}}}
  702.   ;{{{  store-procedure t-exit-filed
  703.   store-procedure t-exit-filed
  704.     set %tmps    $search
  705.     set %tmpbuf  $cbufname
  706.     set %fname   $cfname
  707.     1 select-buffer "?filed"
  708.     beginning-of-file
  709.     !if $lwidth
  710.       !force search-forward &cat "+" %fname
  711.       !if $status
  712.         forward-character
  713.         kill-to-end-of-line
  714.         delete-next-character
  715.         find-file $kill
  716.         set %t-depth &sub %t-depth 1
  717.         set $search %tmps
  718.         write-message "[File exited]"
  719.       !else
  720.         select-buffer %tmpbuf
  721.         set $search %tmps
  722.         write-message "[No more files to exit]"
  723.       !endif
  724.     !else
  725.       select-buffer %tmpbuf
  726.       set $search %tmps
  727.       set %t-depth 0
  728.       write-message "[No more files to exit]"
  729.     !endif
  730.   !endm
  731.   
  732.   ;}}}
  733.   ;{{{  store-procedure t-list-filed
  734.   store-procedure t-list-filed
  735.     save-window
  736.     set %tmps    $search
  737.     set %tmpbuf  $cbufname
  738.     set %fname   $cfname
  739.     split-current-window
  740.     1 select-buffer "?filed"
  741.     end-of-file
  742.     previous-line
  743.     $curline resize-window        
  744.     restore-window
  745.   !endm
  746.   ;}}}
  747.   ;{{{  store-procedure comment-fold
  748.   store-procedure comment-fold
  749.           !force enter-fold
  750.           !if $status
  751.                   end-of-file
  752.                   set %endline $curline
  753.                   beginning-of-file
  754.                   !while &less $curline %endline
  755.                           !if &seq $ltype LNORMAL
  756.                                   set $curcol $lmargin
  757.                                   insert-string "--"
  758.                                   !force next-line
  759.                           !else
  760.                           !if &seq $ltype LSOFOLD
  761.                                   open-fold
  762.                           !else
  763.                                   !force next-line
  764.                           !endif
  765.                           !endif
  766.                   !endwhile
  767.                   exit-fold
  768.                   5 forward-character
  769.                   insert-string "COMMENT "
  770.                   write-message "[fold commented]"
  771.           !endif
  772.   !endm
  773.   
  774.   ;}}}
  775.   ;{{{  store-procedure uncomment-fold
  776.   store-procedure uncomment-fold
  777.           !force enter-fold
  778.           !if $status
  779.                   add-mode magic
  780.                   end-of-file
  781.                   set %endline $curline
  782.                   beginning-of-file
  783.                   !while &less $curline %endline
  784.                           !if &seq $ltype LNORMAL
  785.                                   set $curcol $lmargin
  786.                                   !if &equal &sindex $line "--" &add $curcol 1
  787.                                           2 delete-next-character
  788.                                   !endif
  789.                                   !force next-line
  790.                           !else
  791.                           !if &seq $ltype LSOFOLD
  792.                                   open-fold
  793.                           !else
  794.                                   !force next-line
  795.                           !endif
  796.                           !endif
  797.                   !endwhile
  798.                   exit-fold
  799.                   1 replace-string "COMMENT " " "
  800.                   delete-previous-character
  801.                   close-fold
  802.                   write-message "[fold un-commented]"
  803.           !endif
  804.   !endm
  805.   
  806.   ;}}}
  807.   ;{{{  store-procedure auto-fold
  808.   ; CMODE
  809.   store-procedure auto-fold
  810.           set-mark
  811.           !if &band $cmode 2 
  812.             search-forward "{"
  813.             backward-character
  814.             goto-matching-fence
  815.             next-line
  816.           !else
  817.             search-forward "~n~n"
  818.           !endif
  819.           fold-region
  820.           execute-procedure copy-to-fold
  821.           write-message "[region folded]
  822.   !endm
  823.   
  824.   ;}}}
  825.   ;{{{  store-procedure create-fold
  826.   set %mkfold FALSE
  827.   store-procedure create-fold
  828.     !if %mkfold
  829.             !force fold-region
  830.             !if $status
  831.                     write-message "[fold made]"
  832.             !else
  833.                     write-message "[Error making fold]"
  834.             !endif
  835.             set %mkfold FALSE
  836.     !else
  837.             !force set-mark
  838.             !if $status
  839.                     set %mkfold TRUE
  840.                     write-message "[making fold]"
  841.             !else
  842.                     write-message "[Error making fold]"
  843.             !endif
  844.     !endif
  845.   !endm
  846.   ;}}}
  847. !endif
  848.  
  849.  
  850.