home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / pd / utilities / editors / textra / scripts / doublespace.textra < prev    next >
Text File  |  1992-11-20  |  3KB  |  129 lines

  1.     /*******************************************************************
  2.      *   TEXTRA AREXX script -- Mike Haas, 1991, All Rights Reserved.  *
  3.      * Freely distributable ONLY as a component of the TEXTRA package. *
  4.      * This banner may not be removed or altered (improvements to the  *
  5.      *    actual program welcome).  Please document and send to me.    *
  6.      *******************************************************************/
  7.  
  8. /* Usage:  DoubleSpace
  9.  *
  10.  * This script inserts a blank line between each text-bearing line
  11.  * in the select range.  No parameters are required.
  12.  *
  13.  */
  14.  
  15.  
  16. /* 00001 mdh 10-nov-92  Added ability to cancel script */
  17. /* 00002 mdh 20-nov-92  check version (cause of 'CheckCancel') */
  18.  
  19. OPTIONS results
  20.  
  21. rex = 0; result = "NOTSUPPORTED"    /*00002*/
  22. textraversion
  23. parse var result maj min rex
  24. if (result == "NOTSUPPORTED") | (rex < 3) then do
  25.     notify "Textra V1.13 or later required for this script."
  26.     exit
  27. end
  28.  
  29.  
  30. /* temporarily make sure auto indent is off */
  31. prefs autoindent read; autoistate = result
  32. prefs autoindent off
  33.  
  34. get select position   /* get the select boundary, if any */
  35.  
  36. if (result == "NO SELECT") then   /* is nothing selected? */
  37.  
  38.     do
  39.         get cursor position   /* nothing selected, get cursor pos */
  40.         parse var result   cursx ' ' cursy
  41.         LinesSelected = 0   /* means 'just cursor' */
  42.     
  43.     end
  44.     
  45. else
  46.  
  47.     do
  48.         /* yes, there is a selection, get it's boundaries */
  49.         parse var result   startx ' ' starty ' ' endx ' ' endy
  50.         LinesSelected = (endy - starty)
  51.     
  52.         /* if only the 'eol' of the previous line is selected
  53.            (nothing on this line is actually included, i.e. x==0),
  54.            then don't include it.
  55.         */
  56.         if (endx > 0) then  LinesSelected = LinesSelected + 1
  57.     
  58.     end
  59.  
  60.  
  61. if (LinesSelected == 0) then
  62.  
  63.     do
  64.         gotoxy 0 cursy+1
  65.         newline
  66.         up 1
  67.     end
  68.  
  69. else
  70.  
  71.     do
  72.         currline = starty; numLeft = LinesSelected
  73.         do while (numLeft > 0)
  74.             do
  75.                 CheckCancel; if (result == CANCEL) then exit
  76.                 call CheckDoCurrLine
  77.                 if (DoCurrLine == 1) then
  78.                     do
  79.                         gotoxy 0 currline + 1
  80.                         left 1
  81.                         newline
  82.                         currline = currline + 2
  83.                     end
  84.                 else
  85.                     currline = currline + 1
  86.                 numLeft = numLeft - 1
  87.             end
  88.         end
  89.         
  90.         /* gotoxy 0 starty
  91.            selectto 0 starty+LinesSelected  */
  92.         
  93.         gotoxy 0 currline
  94.     end
  95.  
  96. /* restore autoindent */
  97. prefs autoindent autoistate
  98.  
  99. exit
  100.  
  101.  
  102.  
  103. CheckDoCurrLine:                
  104. DoCurrLine = 0
  105. ThisLine = currline + 1
  106. call CheckThisLine
  107. lineplusone = DoCurrLine
  108. DoCurrLine = 0
  109. ThisLine = currline
  110. call CheckThisLine
  111. DoCurrLine = BITAND(lineplusone,DoCurrLine) 
  112. return
  113.  
  114. CheckThisLine:
  115. gotoxy 0 ThisLine
  116. get cursor char
  117. do while (result ~= -1)
  118.     do
  119.         if ((result ~= ' ') & (result ~= '    ')) /*TAB*/ then
  120.             do
  121.                 DoCurrLine = 1
  122.                 leave
  123.             end
  124.         right 1
  125.         get cursor char
  126.     end
  127. end
  128. return
  129.