home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / CMDS / memacs400_cmds.lzh / MEMACS400 / CMD / wpage.cmd < prev   
OS/2 REXX Batch file  |  1996-04-25  |  4KB  |  190 lines

  1. ;    WPAGE.CMD:    Wordprocessing Macro Page
  2. ;            for MicroEMACS 3.13 and above
  3. ;            (C)opyright 1987 by Daniel M Lawrence
  4.  
  5. ; set the clean procedure up
  6. store-procedure clean
  7.     delete-buffer "[w-center]"
  8.     delete-buffer "[w-scheck]
  9.     delete-buffer "[w-indformat]"
  10.     delete-buffer "[w-notready]"
  11.     delete-buffer "[w-swapword]"
  12.     unbind-key S-FN3
  13.     unbind-key S-FN9
  14.  
  15.     set $cmode %oldmode
  16.     set $gmode %oldgmode
  17. !endm
  18.  
  19. ; make sure the function key window is up
  20.     set %rcfkeys FALSE
  21.     toggle-fkeys
  22.     write-message "Loading..."
  23.  
  24. ; Write out the page instructions
  25.     save-window
  26.     1 next-window
  27.     beginning-of-file
  28.     set $curcol 25
  29.     overwrite-string " F1 center line                                     "
  30.     next-line
  31.     set $curcol 25
  32.     overwrite-string " F3 reformat paragraph     F4 spell check file      "
  33.     next-line
  34.     set $curcol 25
  35.     overwrite-string " F5 ref indented paragraph F6 PREVIEW output        "
  36.     next-line
  37.     set $curcol 18
  38.     overwrite-string "WORD"
  39.     set $curcol 25
  40.     overwrite-string " F7 toggle words           F8 output DRAFT          "
  41.     next-line
  42.     set $curcol 25
  43.     overwrite-string " F9 count words           F10 output FINAL          "
  44.     unmark-buffer
  45.     beginning-of-file
  46.     !force restore-window
  47.     update-screen
  48.  
  49. ; Center the current line
  50.  
  51. store-procedure w-center
  52.     end-of-line
  53.     set %rctmp $curcol
  54.     beginning-of-line
  55.     &div &sub $fillcol %rctmp 2 insert-space
  56.     beginning-of-line
  57. !endm
  58.  
  59. ;    Spell check the current buffer
  60.  
  61. store-procedure w-scheck
  62.     set %rctmp @"User dictionary(<ret> if none): "
  63.     !if &seq %rctmp "ERROR"
  64.         !return
  65.     !endif
  66.     !if ¬ &seq %rctmp ""
  67.         set %rctmp &cat &cat "-u" %rctmp " "
  68.     !endif
  69.     save-file
  70.     set %rcspell TRUE
  71.     write-message ~n
  72.     shell-command &cat &cat "spell " %rctmp $cfname
  73.     execute-file "scan.cmd"
  74.     delete-other-windows
  75.     !if &seq %rcfkeys TRUE
  76.         set %rcfkeys FALSE
  77.         toggle-fkeys
  78.     !endif
  79.     update-screen
  80.     write-message "[Spell Check complete]"
  81. !endm
  82.  
  83. ;    reformat indented paragraph
  84.  
  85. store-procedure w-indformat
  86.     write-message "                    [Fixing paragraph]"
  87.  
  88.     ;remember where we are..and set up
  89.     set %endpos $cwline
  90.     set $discmd "FALSE"
  91.  
  92.     ;snarf the paragraph and put it in its own buffer
  93.     kill-region
  94.     2 split-current-window
  95.     select-buffer "[temp]"
  96.     yank
  97.  
  98.     ;get rid of the blank lines at the end
  99.     end-of-file
  100.     !while &and &seq $line "" ¬ &equ $curline 1
  101.         delete-previous-character
  102.     !endwhile
  103.     forward-character
  104.  
  105.     ;get rid of the indents
  106.     set %endline $curline
  107.     beginning-of-file
  108.     !while &gre %endline $curline
  109.         !while &or &equ $curchar 32 &equ $curchar 9
  110.             delete-next-character
  111.         !endwhile
  112.         next-line
  113.     !endwhile
  114.  
  115.     ;re-format it
  116.     &sub $fillcol 8 set $fillcol
  117.     1 goto-line
  118.     fill-paragraph
  119.     &add $fillcol 8 set $fillcol
  120.  
  121.     ;insert new indents
  122.     end-of-file
  123.     set %endline $curline
  124.     beginning-of-file
  125.     !while &less $curline &sub %endline 1
  126.         beginning-of-line
  127.         handle-tab
  128.         next-line
  129.     !endwhile
  130.  
  131.     ;move it back into the original buffer
  132.     beginning-of-file
  133.     set-mark
  134.     end-of-file
  135.     kill-region
  136.     unmark-buffer
  137.     delete-window
  138.     yank
  139.  
  140.     ;and clean up
  141.     delete-buffer "[temp]"
  142.     set $cwline %endpos
  143.     set $discmd TRUE
  144.     write-message "                    [Fixed paragraph]"
  145. !endm
  146.  
  147. store-procedure w-notready
  148.     write-message "[MicroSCRIBE not ready]"
  149. !endm
  150.  
  151. ;    swap the word the cursor is on and it's predisesor
  152.  
  153. store-procedure w-swapword
  154.     set %rctmp $search
  155.     forward-character
  156.     previous-word
  157.     0 delete-next-word
  158.     set %second $kill
  159.     insert-string "~~"
  160.     !force previous-word
  161.     !if &seq $status FALSE
  162.         set %first %second
  163.     !else
  164.         0 delete-next-word
  165.         set %first $kill
  166.         insert-string %second
  167.     !endif
  168.     search-forward "~~"
  169.     delete-previous-character
  170.     insert-string %first
  171.     previous-word
  172.     set $search %rctmp
  173. !endm
  174.  
  175. macro-to-key w-center S-FN1
  176. bind-to-key fill-paragraph S-FN3
  177. macro-to-key w-scheck S-FN4
  178. macro-to-key w-indformat S-FN5
  179. macro-to-key w-notready S-FN6
  180. macro-to-key w-swapword S-FN7
  181. macro-to-key w-notready S-FN8
  182. bind-to-key count-words S-FN9
  183. macro-to-key w-notready S-FN8
  184.  
  185. set %oldmode $cmode
  186. set %oldgmode $gmode
  187. add-mode wrap
  188. add-global-mode wrap
  189. write-message "[Wordprocessing mode loaded]"
  190.