home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / text / textra / scripts / singlespace.textra < prev    next >
Text File  |  1995-02-27  |  3KB  |  131 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:  SingleSpace
  9.  *
  10.  * This script deletes any blank lines between each text-bearing line
  11.  * in the select range.  No parameters are required.
  12.  *
  13.  */
  14.  
  15. /* 00001 mdh 10-nov-92  Added ability to cancel script */
  16. /* 00002 mdh 20-nov-92  check version (cause of 'CheckCancel') */
  17.  
  18. OPTIONS results
  19.  
  20. rex = 0; result = "NOTSUPPORTED"    /*00002*/
  21. textraversion
  22. parse var result maj min rex
  23. if (result == "NOTSUPPORTED") | (rex < 3) then do
  24.     notify "Textra V1.13 or later required for this script."
  25.     exit
  26. end
  27.  
  28. /* temporarily make sure auto indent is off */
  29. prefs autoindent read; autoistate = result
  30. prefs autoindent off
  31.  
  32. get select position   /* get the select boundary, if any */
  33.  
  34. if (result == "NO SELECT") then   /* is nothing selected? */
  35.  
  36.     do
  37.         get cursor position   /* nothing selected, get cursor pos */
  38.         parse var result   cursx ' ' cursy
  39.         LinesSelected = 0   /* means 'just cursor' */
  40.     
  41.     end
  42.     
  43. else
  44.  
  45.     do
  46.         /* yes, there is a selection, get it's boundaries */
  47.         parse var result   startx ' ' starty ' ' endx ' ' endy
  48.         LinesSelected = (endy - starty)
  49.     
  50.         /* if only the 'eol' of the previous line is selected
  51.            (nothing on this line is actually included, i.e. x==0),
  52.            then don't include it.
  53.         */
  54.         if (endx > 0) then  LinesSelected = LinesSelected + 1
  55.     
  56.     end
  57.  
  58.  
  59. if (LinesSelected == 0) then
  60.     do
  61.         currline = cursy
  62.         call CheckDoCurrLine
  63.         if (DoCurrLine == 1) then
  64.             do
  65.                 selectline cursy+1
  66.                 del
  67.             end
  68.     end
  69.  
  70. else
  71.  
  72.     do
  73.         currline = starty; numLeft = LinesSelected
  74.         do while (numLeft > 0)
  75.             CheckCancel; if (result == CANCEL) then exit   /*00001*/
  76.             do
  77.                 call CheckDoCurrLine
  78.                 if (DoCurrLine == 1) then
  79.                     do
  80.                         selectline currline+1
  81.                         del
  82.                         /*numLeft = numLeft - 1*/
  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. ThisLine = currline + 1
  105. call CheckThisLine
  106. lineplusone = DoCurrLine
  107. ThisLine = currline
  108. call CheckThisLine
  109. if  ((DoCurrLine == 1) & (lineplusone == 0)) then
  110.     DoCurrLine = 1
  111. else
  112.     DoCurrLine = 0
  113. return
  114.  
  115. CheckThisLine:  /*DoCurrLine set to 1 if non-white there*/
  116. DoCurrLine = 0
  117. gotoxy 0 ThisLine
  118. get cursor char
  119. do while (result ~= -1)
  120.     do
  121.         if ((result ~= ' ') & (result ~= '    ')) /*TAB*/ then
  122.             do
  123.                 DoCurrLine = 1
  124.                 leave
  125.             end
  126.         right 1
  127.         get cursor char
  128.     end
  129. end
  130. return
  131.