home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / vmsnet / tpu / 543 < prev    next >
Encoding:
Text File  |  1992-12-21  |  6.1 KB  |  183 lines

  1. Newsgroups: vmsnet.tpu
  2. Path: sparky!uunet!zaphod.mps.ohio-state.edu!pacific.mps.ohio-state.edu!linac!unixhub!slacvx.slac.stanford.edu!fairfield
  3. From: fairfield@slacvx.slac.stanford.edu
  4. Subject: KHF$FORMAT.3-OF-3  (Eve Justify procedures)
  5. Message-ID: <1992Dec18.154259.1@slacvx.slac.stanford.edu>
  6. Lines: 172
  7. Sender: news@unixhub.SLAC.Stanford.EDU
  8. Organization: Stanford Linear Accelerator Center
  9. Date: Fri, 18 Dec 1992 23:42:59 GMT
  10.  
  11. -+-+-+-+-+-+-+-+ START OF PART 3 -+-+-+-+-+-+-+-+
  12. X`09`09indx2`20:=`20indx1;`09`09`20`20`20`20!`09working`20outward.`20`20Variabl
  13. Ve
  14. X`09`09indx`20`20:=`201;`09`09`20`20`20`20!`09"indx"`20is`20just`20a`20counter
  15. V`20here.
  16. X`09`09Loop
  17. X`09`09`20`20`20`20Exitif`20(indx`20>`20(nsmall+nbig));
  18. X`09`09`20`20`20`20Position`20(khf$x_word_array`20`7Bindx1`7D);
  19. X`09`09`20`20`20`20Copy_Text`20(the_fill);
  20. X`09`09`20`20`20`20indx`20`20:=`20indx`20+`201;
  21. X`09`09`20`20`20`20indx2`20:=`20indx2`20-`201;
  22. X`09`09`20`20`20`20If`20(indx`20=`20(nbig+1))
  23. X`09`09`20`20`20`20Then
  24. X`09`09`09the_fill`20:=`20small_fill;
  25. X`09`09`20`20`20`20Endif;
  26. X`09`09`20`20`20`20Exitif`20(indx`20>`20(nsmall+nbig));
  27. X`09`09`20`20`20`20Position`20(khf$x_word_array`20`7Bindx2`7D);
  28. X`09`09`20`20`20`20Copy_Text`20(the_fill);
  29. X`09`09`20`20`20`20indx`20:=`20indx`20+`201;
  30. X`09`09`20`20`20`20indx1`20:=`20indx1`20+`201;
  31. X`09`09`20`20`20`20If`20(indx`20=`20(nbig+1))
  32. X`09`09`20`20`20`20Then
  33. X`09`09`09the_fill`20:=`20small_fill;
  34. X`09`09`20`20`20`20Endif;
  35. X`09`09Endloop;
  36. X
  37. X`09`20`20`20`20`5B2`5D:`09`09`09`20`20`20`20!`20Fill`20type`202:`20`20Fill`20g
  38. Vaps`20starting
  39. X`09`09indx1`20:=`202;`09`09`20`20`20`20!`09both`20ends`20of`20the`20line`20and
  40. V`20work
  41. X`09`09indx2`20:=`20ngaps`20+`201;`09`20`20`20`20!`09toward`20the`20center.`20
  42. V`20Variable
  43. X`09`09indx`20`20:=`201;`09`09`20`20`20`20!`09"indx"`20is`20just`20a`20counter
  44. V`20here.
  45. X`09`09Loop
  46. X`09`09`20`20`20`20Exitif`20(indx`20>`20(nsmall+nbig));
  47. X`09`09`20`20`20`20Position`20(khf$x_word_array`20`7Bindx1`7D);
  48. X`09`09`20`20`20`20Copy_Text`20(the_fill);
  49. X`09`09`20`20`20`20indx`20`20:=`20indx`20`20+`201;
  50. X`09`09`20`20`20`20indx1`20:=`20indx1`20+`201;
  51. X`09`09`20`20`20`20If`20(indx`20=`20(nbig+1))
  52. X`09`09`20`20`20`20Then
  53. X`09`09`09the_fill`20:=`20small_fill;
  54. X`09`09`20`20`20`20Endif;
  55. X`09`09`20`20`20`20Exitif`20(indx`20>`20(nsmall+nbig));
  56. X`09`09`20`20`20`20Position`20(khf$x_word_array`20`7Bindx2`7D);
  57. X`09`09`20`20`20`20Copy_Text`20(the_fill);
  58. X`09`09`20`20`20`20indx`20`20:=`20indx`20+`201;
  59. X`09`09`20`20`20`20indx2`20:=`20indx2`20-`201;
  60. X`09`09`20`20`20`20If`20(indx`20=`20(nbig+1))
  61. X`09`09`20`20`20`20Then
  62. X`09`09`09the_fill`20:=`20small_fill;
  63. X`09`09`20`20`20`20Endif;
  64. X`09`09Endloop;
  65. X`09`09`09`09`09`20`20`20`20!`20Fill`20type`203:`20`20Fill`20gaps`20starting
  66. X`09`20`20`20`20`5B3`5D:`09`09`09`20`20`20`20!`09from`20the`20right,`20working
  67. V`20toward
  68. X`09`09indx`20:=`20ngaps`20+`201;`09`20`20`20`20!`09the`20beginning`20of`20the
  69. V`20line.
  70. X`09`09Loop
  71. X`09`09`20`20`20`20Exitif`20(indx`20<=`20(ngaps-nsmall-nbig+1));
  72. X`09`09`20`20`20`20Position`20(khf$x_word_array`20`7Bindx`7D);
  73. X`09`09`20`20`20`20Copy_Text`20(the_fill);
  74. X`09`09`20`20`20`20indx`20:=`20indx`20-`201;
  75. X`09`09`20`20`20`20If`20(indx`20=`20(ngaps-nbig+1))
  76. X`09`09`20`20`20`20Then
  77. X`09`09`09the_fill`20:=`20small_fill;
  78. X`09`09`20`20`20`20Endif;
  79. X`09`09Endloop;
  80. X`09`09`09`09`09`20`20`20`20!`20Fill`20type`204:`20`20Fill`20gaps`20starting
  81. X`09`20`20`20`20`5B4`5D:`09`09`09`20`20`20`20!`09from`20the`20left,`20working
  82. V`20toward
  83. X`09`09indx`20:=`202;`09`09`20`20`20`20!`09the`20end`20of`20the`20line.
  84. X`09`09Loop
  85. X`09`09`20`20`20`20Exitif`20(indx`20>`20(nsmall+nbig+1));
  86. X`09`09`20`20`20`20Position`20(khf$x_word_array`20`7Bindx`7D);
  87. X`09`09`20`20`20`20Copy_Text`20(the_fill);
  88. X`09`09`20`20`20`20If`20(indx`20=`20(nbig+1))
  89. X`09`09`20`20`20`20Then
  90. X`09`09`09the_fill`20:=`20small_fill;
  91. X`09`09`20`20`20`20Endif;
  92. X`09`09`20`20`20`20indx`20:=`20indx`20+`201;
  93. X`09`09Endloop;
  94. X`09Endcase;
  95. X
  96. X`09If`20fill_type`20<`204
  97. X`09Then
  98. X`09`20`20`20`20fill_type`20:=`20fill_type`20+`201;
  99. X`09Else
  100. X`09`20`20`20`20fill_type`20:=`201;
  101. X`09Endif;
  102. X`20`20`20`20Endif;
  103. X
  104. X`20`20`20`20Move_Vertical`20(1);
  105. XEndloop;
  106. X
  107. XSet`20(saved_mode,`20CURRENT_BUFFER);
  108. XPosition`20(saved_position);
  109. X
  110. XReturn`20(TRUE);
  111. X
  112. XEndprocedure;`09`09!`20Khf$Justify
  113. X
  114. X`0C
  115. X!++
  116. X!`20`20`20This`20procedure`20prepares`20a`20range`20for`20(paragraph)`20fillin
  117. Vg`20and`20possibly
  118. X!`20`20`20justifying.`20`20All`20leading`20and`20trailing`20spaces`20are`20tri
  119. Vmmed,`20and`20sentences
  120. X!`20`20`20have`20an`20additional`20space`20appended`20to`20their`20ends.
  121. X!
  122. X!`20`20Author/Date:`09`09K.H.`20Fairfield,`09`0917-DEC-1992
  123. X!--
  124. X
  125. XProcedure`20Khf$Fill_Edit
  126. X!`09`20`20-------------
  127. X`09`20`20`20(range_arg)`09`09!`20Range`20to`20edit.
  128. X
  129. XLocal`09saved_mode,`09!`20Save`20current`20mode`20of`20the`20buffer
  130. X`09end_mark,`09!`20End`20of`20range_arg
  131. X`09found_range,`09!`20An`20end`20of`20sentence
  132. X`09term_patt;`09!`20Pattern`20of`20sentence`20terminators
  133. X
  134. Xsaved_mode`20:=`20Get_Info`20(CURRENT_BUFFER,`20"mode");
  135. XSet`20(INSERT,`20CURRENT_BUFFER);
  136. X
  137. X!+
  138. X!`20`20Following`20pattern`20assignment`20will`20match`20an`20end-of-sentence
  139. V`20within`20a
  140. X!`20`20line`20or`20at`20the`20end`20of`20a`20line.
  141. X!-
  142. Xterm_patt`20:=`20("."`20`7C`20"!"`20`7C`20"?")`20+`20("`20"`20`7C`20LINE_END);
  143. V
  144. X
  145. X!+
  146. X!`20`20Squeeze`20out`20excess`20spaces.
  147. X!-
  148. XEdit`20(range_arg,`20COMPRESS,`20TRIM,`20OFF);
  149. X
  150. X!+
  151. X!`20`20Find`20sentence`20terminators`20and`20add`20a`20space.
  152. X!-
  153. Xend_mark`20:=`20End_Of`20(range_arg);
  154. XPosition`20(range_arg);
  155. XLoop
  156. X`20`20`20`20found_range`20:=`20Search_Quietly`20(term_patt,`20FORWARD);
  157. X`20`20`20`20Exitif`20(found_range`20=`200);
  158. X`20`20`20`20Position`20(End_Of`20(found_range));
  159. X`20`20`20`20Exitif`20(Mark`20(NONE)`20>`20end_mark);
  160. X`20`20`20`20Copy_Text`20("`20");
  161. XEndloop;
  162. X
  163. X!+
  164. X!`20`20If`20there's`20a`20trailing`20final`20space`20at`20the`20end`20of`20ran
  165. Vge_arg`20(the`20usual`20case),
  166. X!`20`20erase`20it.
  167. X!-
  168. XPosition`20(end_mark);
  169. XMove_Horizontal`20(-1);
  170. XIf`20CURRENT_CHARACTER`20=`20"`20"
  171. XThen
  172. X`20`20`20`20Erase_Character`20(1);
  173. XEndif;
  174. X
  175. XSet`20(saved_mode,`20CURRENT_BUFFER);
  176. X
  177. XReturn`20(TRUE);
  178. X
  179. XEndprocedure;`09`09!`20Khf$Fill_Edit
  180. $ call unpack KHF$FORMAT.TPU;8 946030369 ""
  181. $ v=f$verify(v)
  182. $ exit
  183.