Thread View: vmsnet.tpu
1 messages
1 total messages
Started by fairfield
Fri, 18 Dec 1992 23:42
KHF$FORMAT.2-OF-3 (Eve Justify procedures)
Author: fairfield
Date: Fri, 18 Dec 1992 23:42
Date: Fri, 18 Dec 1992 23:42
444 lines
15315 bytes
15315 bytes
-+-+-+-+-+-+-+-+ START OF PART 2 -+-+-+-+-+-+-+-+ X`09eve$$release_scratch_buffer; X`09set`20(RIGHT_MARGIN,`20eve$$x_scratch_buffer,`20old_right_margin); X`09return`20(status); X`20`20`20`20endif; X X`20`20`20`20!`20standard`20selection X X`20`20`20`20if`20beginning_of`20(the_range)`20<=`20end_of`20(the_range) X`20`20`20`20then X`09start_mark`20:=`20beginning_of`20(the_range); X`09end_mark`20:=`20end_of`20(the_range); X`20`20`20`20else X`09end_mark`20:=`20beginning_of`20(the_range); X`09start_mark`20:=`20end_of`20(the_range); X`20`20`20`20endif; X`20`20`20`20the_range`20:=`200; X X`20`20`20`20position`20(start_mark); X X`20`20`20`20!`20Move`20start_mark`20if`20on`20an`20DOCUMENT`20tag`20or`20runof Vf`20command`20line X X`20`20`20`20if`20search_quietly`20(eve$pattern_skip_paragraph_break, X`09`09`20`20`20`20`20`20`20FORWARD)`20<>`200 X`20`20`20`20then X`09!`20skip`20past`20DOCUMENT`20tag,`20runoff`20command`20line,`20ff's X`09position`20(LINE_END); X`09move_horizontal`20(1); X`09start_mark`20:=`20mark`20(NONE); X`20`20`20`20endif; X X`20`20`20`20loop`09`09`09!`20Find`20the`20paragraph`20bounds`20for`20all`20par Vagraphs X`09loop X`09`20`20`20`20position`20(LINE_END); X`09`20`20`20`20exitif`20mark`20(NONE)`20=`20end_of`20(current_buffer); X`09`20`20`20`20move_horizontal`20(1); X`09`20`20`20`20exitif`20mark`20(NONE)`20>`20end_mark; X`09`20`20`20`20exitif`20eve$paragraph_break; X`09endloop; X`09move_horizontal`20(-1); X X`09if`20mark`20(NONE)`20>`20end_mark X`09then X`09`20`20`20`20position`20(end_mark); X`09endif; X X`09the_right_margin`20:=`20get_info`20(current_buffer,`20"right_margin"); X X`09if`20eve$$x_word_wrap_indent`20`7Bcurrent_buffer`7D`20<>`20tpu$k_unspecifie Vd X`09then X`09`20`20`20`20the_left_margin`20:=`20eve$$x_word_wrap_indent`20`7Bcurrent_buf Vfer`7D; X`09else X`09`20`20`20`20the_left_margin`20:=`20get_info`20(current_buffer,`20"left_marg Vin"); X`09endif; X X`09if`20eve$$x_paragraph_indent`20`7Bcurrent_buffer`7D`20<>`20tpu$k_unspecifie Vd X`09then X`09`20`20`20`20the_indent`20:=`20eve$$x_paragraph_indent`20`7Bcurrent_buffer V`7D X`09`09`09`20`20-`20the_left_margin; X`09else X`09`20`20`20`20the_indent`20:=`20get_info`20(current_buffer,`20"left_margin") V`20- X`09`09`09`20`20the_left_margin; X`09endif; X X`09the_range`20:=`20create_range`20(start_mark,`20mark`20(NONE),`20NONE); X X`09if`20do_fill_edit`09`09`09`09`09`09`09!`20KHF X`09then`09`09`09`09`09`09`09`09!`20KHF X`09`20`20`20`20khf$fill_edit`20(the_range);`09`09`09`09`09!`20KHF X`09`20`20`20`20!`20`20Replace`20the`20previous`20line`20by:`09`09`09`09!`20KHF V X`09`20`20`20`20!`20`20`20`20edit`20(the_range,`20COMPRESS,`20TRIM,`20OFF);`09 V`09`09!`20KHF X`09`20`20`20`20!`20`20to`20suppress`20extra`20space`20following`20sentences... V`09`09!`20KHF X`09else`09`09`09`09`09`09`09`09!`20KHF X`09`20`20`20`20edit`20(the_range,`20TRIM_LEADING,`20OFF); X`09endif;`09`09`09`09`09`09`09`09!`20KHF X X`09fill`20(the_range,`20eve$x_fill_separators,`20the_left_margin, X`09`20`20`20`20`20`20the_right_margin,`20the_indent); X X`09if`20do_justify`09`09`09`09`09`09`09!`20KHF X`09then`09`09`09`09`09`09`09`09!`20KHF X`09`20`20`20`20khf$justify`20(the_range);`09`09`09`09`09!`20KHF X`09endif;`09`09`09`09`09`09`09`09!`20KHF X X`09loop`09`09`09`09!`20Skip`20the`20inter-paragraph`20break; X`09`20`20`20`20position`20(LINE_END); X`09`20`20`20`20move_horizontal`20(1); X`09`20`20`20`20exitif`20not`20eve$paragraph_break; X`09endloop; X`09start_mark`20:=`20mark`20(NONE); X`09exitif`20start_mark`20>=`20end_mark; X`20`20`20`20endloop; X`20`20`20`20position`20(end_mark); X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X!!!!!!!!!!!!!!!!!!!!!!!!!!`20screen`20manager`20issue`20!!!!!!!!!!!!!!!!!!!!!! V!!!! X`20`20`20`20update`20(current_window); X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X Xelse X`20`20`20`20eve$message`20(EVE$_SELFIRST); X`20`20`20`20eve$learn_abort; X`20`20`20`20return`20(FALSE); Xendif; Xeve$clear_message; Xreturn`20(TRUE); X Xendprocedure;`09!`20eve$fill_range X X`0C X X!----------------------------New`20EVE/KHF`20Procedures----------------------- V----- X X XProcedure`20Eve_Justify`09`09!`20Fill`20and`20justify`20a`20range`20or`20parag Vraph X!`09`20`20----------- X XLocal`09the_selection, X`09the_status; X XOn_Error X`20`20`20`20`5BOTHERWISE`5D: XEndon_Error; X XIf`20Get_Info`20(CURRENT_BUFFER,`20"system") XThen X`20`20`20`20Eve$Message`20(EVE$_CANTSYSTEMBUF); X`20`20`20`20Eve$Learn_Abort; X`20`20`20`20Return`20(FALSE); XEndif; X Xthe_selection`20:=`20Eve$Selection`20(FALSE,,,`20eve$x_select_remove_flag,, V`20TRUE); XIf`20(the_selection`20<>`200) XThen X`20`20`20`20Set`20(TIMER,`20ON,`20"Justifying..."); X`20`20`20`20the_status`20:=`20Eve$Fill_Range`20(the_selection,`20TRUE); X`20`20`20`20Set`20(TIMER,`20OFF); XElse X`20`20`20`20Set`20(TIMER,`20ON,`20"Justifying..."); X`20`20`20`20the_status`20:=`20Eve$Fill_Paragraph`20(TRUE); X`20`20`20`20Set`20(TIMER,`20OFF); XEndif; XReturn`20(the_status); X XEndprocedure;`09`09!`20Eve_Justify X X X XProcedure`20Eve_Justify_Paragraph X!`09`20`20--------------------- XLocal`09the_status; X XSet`20(TIMER,`20ON,`20"Justifying..."); Xthe_status`20:=`20Eve$Fill_Paragraph`20(TRUE); XSet`20(TIMER,`20OFF); XReturn`20(the_status); X XEndprocedure;`09`09!`20Eve_Justify_Paragraph X X XProcedure`20Eve_Justify_Range X!`09`20`20----------------- XLocal`20the_status; X XOn_Error X`20`20`20`20`5BOTHERWISE`5D: XEndon_Error; X XIf`20Get_Info`20(CURRENT_BUFFER,`20"system") XThen X`20`20`20`20Eve$Message`20(EVE$_CANTSYSTEMBUF); X`20`20`20`20Eve$Learn_Abort; X`20`20`20`20Return`20(FALSE); XEndif; X XSet`20(TIMER,`20ON,`20"Justifying..."); Xthe_status`20:=`20Eve$Fill_Range`20(Eve$Selection`20(FALSE,,, X`09`09`09`09`09`20`20`20`20`20eve$x_select_remove_flag,,TRUE), X`09`09`09`09`09`20`20`20`20`20TRUE); XSet`20(TIMER,`20OFF); XReturn`20(the_status); X XEndprocedure;`09`09!`20Eve_Justify_Range X X`0C XProcedure`20Eve_Unjustify`09`09!`20Fill_edit`20and`20fill`20a`20range`20or`20p Varagraph X!`09`20`20------------- X XLocal`09the_selection; X XOn_Error X`20`20`20`20`5BOTHERWISE`5D: XEndon_Error; X XIf`20Get_Info`20(CURRENT_BUFFER,`20"system") XThen X`20`20`20`20Eve$Message`20(EVE$_CANTSYSTEMBUF); X`20`20`20`20Eve$Learn_Abort; X`20`20`20`20Return`20(FALSE); XEndif; X Xthe_selection`20:=`20Eve$Selection`20(FALSE,,,`20eve$x_select_remove_flag,, V`20TRUE); XIf`20(the_selection`20<>`200) XThen X`20`20`20`20Return`20(Eve$Fill_Range`20(the_selection,`20FALSE,`20TRUE)); XElse X`20`20`20`20Return`20(Eve$Fill_Paragraph`20(FALSE,`20TRUE)); XEndif; X XEndprocedure;`09`09!`20Eve_Unjustify X X X XProcedure`20Eve_Unjustify_Paragraph X!`09`20`20----------------------- X X`20`20`20`20Return`20(Eve$Fill_Paragraph`20(FALSE,`20TRUE)); X XEndprocedure;`09`09!`20Eve_Unjustify_Paragraph X X XProcedure`20Eve_Unjustify_Range X!`09`20`20------------------- X XOn_Error X`20`20`20`20`5BOTHERWISE`5D: XEndon_Error; X XIf`20Get_Info`20(CURRENT_BUFFER,`20"system") XThen X`20`20`20`20Eve$Message`20(EVE$_CANTSYSTEMBUF); X`20`20`20`20Eve$Learn_Abort; X`20`20`20`20Return`20(FALSE); XEndif; X XReturn`20(Eve$Fill_Range`20(Eve$Selection`20(FALSE,,,`20eve$x_select_remove_fl Vag,, X`09`09`09`09`20`20`20`20`20`20`20TRUE),`20FALSE,`20TRUE)); X XEndprocedure;`09`09!`20Eve_Unjustify_Range X X`0C X!+ X!`20`20`20This`20procedure`20loops`20through`20all`20lines`20in`20the`20range V`20provided`20and X!`20`20`20right-justifies`20each`20so`20that`20the`20last`20word`20in`20each V`20line`20is`20flush`20with X!`20`20`20the`20right`20margin. X! X!`20`20Notes: X! X!`09The`20EVE`20internal`20procedure`20Eve$Current_Word,`20found`20in`20EVE$FO VRMAT.TPU, X!`09Version`20V02-100b,`20is`20used`20here`20to`20fill`20khf$x_word_array`20wi Vth`20the X!`09ranges`20corresponding`20to`20each`20word`20in`20a`20line.`20`20Changes V`20to`20that`20pro- X!`09cedure`20must`20be`20tracked`20here. X! X!`09Khf$Justify`20expects`20the`20range_arg`20argument`20to`20be`20a`20typical V`20para- X!`09graph`20range`20as`20defined`20in,`20e.g.,`20Eve_Fill_Paragraph,`20with V`20the`20end X!`09of`20the`20range`20at`20the`20LINE_END`20of`20the`20last`20line`20in`20the V`20paragraph. X!`09The`20last`20line`20is`20NOT`20justified. X! X!`09Four`20types`20of`20space-filling`20patterns`20are`20used:`20from`20the V`20center`20of X!`09the`20line`20toward`20either`20end,`20from`20both`20ends`20toward`20the V`20center,`20from X!`09the`20right`20toward`20the`20beginning`20of`20the`20line,`20and`20from`20t Vhe`20left X!`09toward`20the`20end`20of`20the`20line.`20`20The`20type`20of`20fill`20patter Vns`20used`20may`20be X!`09restricted`20by`20limiting`20the`20range`20of`20the`20variable`20fill_type V,`20e.g., X!`09at`20the`20point`20it`20is`20incremented`20following`20the`20Endcase`20sta Vtement. X!`09The`20order`20of`20fill`20patterns`20used`20may`20be`20altered`20by`20simp Vly`20changing X!`09the`20case`20labels. X! X!`20`20Acknowledgements: X! X!`09Writing`20of`20this`20procedure`20was`20motivated`20by`20previous`20justif Vying X!`09routines`20written`20by`20Hunter`20Goatley`20<goathunter@wkuvx1.bitnet> V`20and X!`09by`20Ken`20Selvia`20<ucs_kas@shsu.bitnet>.`20`20In`20particular,`20I`20mad Ve`20use`20of X!`09Hunter's`20idea`20of`20alternating`20the`20fill`20pattern`20from`20left V`20to`20right X!`09on`20successive`20lines`20(and`20added`20center-out`20and`20outside-in), V`20and X!`09Ken's`20idea`20to`20use`20an`20array`20of`20the`20words`20on`20each`20line V,`20retrieved`20by X!`09Eve$Current_Word.`20`20Both`20of`20the`20earlier`20procedures`20implemente Vd X!`09appending`20a`20second`20space`20following`20a`20sentence`20terminator, V`20but`20I X!`09have`20moved`20that`20to`20the`20calling`20procedure. X! X!`20`20Author/Date:`09`09K.H.`20Fairfield,`09`0917-DEC-1992 X!-- X XProcedure`20Khf$Justify X!`09`20`20----------- X`09`20`20(range_arg)`09`09!`20Range`20of`20lines`20to`20justify X XLocal`09saved_position,`20!`20Save`20the`20current`20position X`09saved_mode,`09!`20Save`20the`20current`20mode`20of`20the`20buffer X`09the_end,`09!`20Mark`20at`20end_of`20the`20range X`09the_rmarg,`09!`20Right`20margin`20value X`09this_mark,`09!`20Just`20a`20mark... X`09last_column,`09!`20Column`20number`20of`20last`20character`20in`20a`20line X`09fill_type,`09!`20Fill`20pattern,`20one`20of`20four`20types X`09nspaces,`09!`20Number`20of`20fill`20spaces`20required X`09sm_size,`09!`20Number`20of`20fill`20spaces`20for`20small`20gaps X`09nbig,`09`09!`20Number`20of`20"big"`20gaps X`09nsmall,`09`09!`20Number`20of`20"small"`20gaps X`09the_fill,`09!`20String`20of`20fill`20spaces X`09small_fill,`09!`20String`20of`20fill`20spaces`20for`20small`20gaps X`09indx,`09`09!`20Index`20into`20word_array X`09indx1,indx2,`09!`20Indices`20for`20center-out`20and`20outside-in`20filling X`09ngaps;`09`09!`20Number`20of`20gaps,`20equals`20words`20in`20word_array`20le Vss`20one X XOn_Error X`20`20`20`20`5BOTHERWISE`5D: XEndon_Error; X X Xsaved_position`20:=`20Mark`20(NONE); Xsaved_mode`20:=`20Get_Info`20(CURRENT_BUFFER,`20"mode"); Xthe_rmarg`20`20:=`20Get_Info`20(CURRENT_BUFFER,`20"right_margin"); Xthe_end`20`20`20`20:=`20End_Of`20(range_arg); Xfill_type`20`20:=`201; X X!+ X!`20Create`20khf$x_word_array`20on`20first`20use.`20`20Should`20be`20big`20eno Vugh`20for`20most`20lines; X!`20will`20be`20extended`20on`20the`20fly`20otherwise. X!- XIf`20(khf$x_word_array`20=`20TPU$K_UNSPECIFIED) XThen X`20`20khf$x_word_array`20:=`20Create_Array`20(40); XEndif; X X!+ X!`20`20Do`20a`20TRIM_TRAILING`20edit`20on`20range_arg`20since`20there`20could V`20be`20some X!`20`20leftovers`20from`20the`20Fill`20following`20Khf$Fill_Edit. X!- XEdit`20(range_arg,`20TRIM_TRAILING,`20OFF); XSet`20(INSERT,`20CURRENT_BUFFER); XPosition`20(Beginning_Of`20(range_arg)); X X!+ X!`20`20Start`20loop`20over`20lines`20within`20range_arg. X!- XLoop X`20`20`20`20Position`20(LINE_END); X`20`20`20`20this_mark`20:=`20Mark`20(NONE); X`20`20`20`20Exitif`20(this_mark`20>=`20the_end); X`20`20`20`20last_column`20:=`20Get_Info`20(this_mark,`20"offset_column")`20- V`201; X`20`20`20`20If`20(last_column`20<`20the_rmarg) X`20`20`20`20Then X`09Position`20(LINE_BEGIN); X`09nspaces`20:=`20the_rmarg`20-`20last_column; X`09indx`09:=`201; X!+ X!`20`20Loop`20over`20words`20in`20the`20current`20line,`20fill`20khf$x_word_ar Vray`20with`20the`20range X!`20`20corresponding`20to`20each`20word. X!- X`09Loop X`09`20`20`20`20khf$x_word_array`20`7Bindx`7D`20:=`20eve$current_word; X`09`20`20`20`20Exitif`20(CURRENT_CHARACTER`20=`20"");`09`09!`20Line_end`20cond Vition. X`09`20`20`20`20indx`20:=`20indx`20+`201; X`09Endloop; X X`09ngaps`20:=`20indx`20-`201;`09`09`20`20`20`20`20`20`20!`20Number`20of`20gaps V X`09Exitif`20(ngaps`20<=`200);`09`09`20`20`20`20`20`20`20!`20Can't`20justify V`20one`20word... X`09If`20(nspaces`20<=`20ngaps) X`09Then X`09`20`20`20`20nsmall`20:=`20nspaces; X`09`20`20`20`20nbig`20`20`20:=`200; X`09`20`20`20`20small_fill`20:=`20"`20"; X`09`20`20`20`20the_fill`20`20`20:=`20"`20"; X`09Else X`09`20`20`20`20sm_size`20`20`20`20:=`20nspaces`20/`20ngaps;`20`20`20`20!`20Siz Ve`20of`20small_fill X`09`20`20`20`20nbig`20`20`20`20`20`20`20:=`20nspaces`20-`20(sm_size`20*`20ngap Vs); X`09`20`20`20`20nsmall`20`20`20`20`20:=`20ngaps`20-`20nbig;`20`20`20`20`20`20 V`20!`20Number`20of`20small_fill`20gaps X`09`20`20`20`20the_fill`20`20`20:=`20Substr`20(eve$kt_spaces,`201,`20(sm_size+ V1)); X`09`20`20`20`20small_fill`20:=`20Substr`20(eve$kt_spaces,`201,`20`20sm_size); X`09Endif; X X!+ X!`20`20Choose`20the`20filling`20pattern`20based`20on`20the`20variable`20fill_t Vype.`20`20Patterns X!`20`20are`20from`20the`20center`20touward,`20from`20the`20outside`20towards V`20the`20center,`20from X!`20`20the`20right`20towards`20the`20beginning`20of`20the`20line,`20and`20from V`20the`20left`20towards X!`20`20the`20end`20of`20the`20line.`20`20In`20each`20of`20th`20eloops`20below, V`20the`20index`20varible(s) X!`20`20is`20one`20greater`20than`20the`20"gap"`20being`20filed`20out`20since V`20the`20algorithm`20is X!`20`20to`20position`20at`20the`20beginning`20of`20the`20word`20_following_ V`20the`20gap. X!- X`09Case`20fill_type`20From`201`20To`204 X X`09`20`20`20`20`5B1`5D:`09`09`09`20`20`20`20!`20Fill`20type`201:`20`20Fill`20g Vaps`20starting X`09`09indx1`20:=`20(ngaps/2)`20+`202;`20`20`20`20`20!`09at`20the`20center`20of V`20the`20line`20and +-+-+-+-+-+-+-+- END OF PART 2 +-+-+-+-+-+-+-+-
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads