!------------------------------------------------------------------------- | ! 3-DEC-1986 | ! EVE_RULER. This procedure will place a ruler of column numbers at the top| ! of the current window. The ruler is as long as the current screen width. | ! If the ruler is already present, then calling this routine again will | ! remove it. | !-------------------------------------------------------------------------- procedure eve_ruler local this_window,this_width,markings,last_window, loop_window,flagit, mark_piece; flagit := 0; this_window := current_window; last_window := get_info (windows, eve$kt_last); loop_window := get_info (windows, eve$kt_first); loop exitif loop_window = last_window; if (loop_window = eve$ruler_window) then flagit := 1; endif; exitif flagit; loop_window := get_info (windows, "next"); endloop; if (flagit) then if (get_info(eve$ruler_window,"visible")) then ! unmap it and return unmap(eve$ruler_window); return; endif; ! else put it up else ! it doesn't exist so create it eve$ruler_window := create_window(1,1,OFF); set(video,eve$ruler_window,REVERSE); endif; eve$ruler_buffer := eveplus_find_buffer("RULER_BUFFER"); if (eve$ruler_buffer = 0) then ! if buffer doesn't exist eve$ruler_buffer := create_buffer("ruler_buffer"); set(no_write,eve$ruler_buffer,ON); position(eve$ruler_buffer); else ! else wipe it clean in case terminal width has changed position(eve$ruler_buffer); erase(eve$ruler_buffer); endif; ! setup for a width of 132 mark_piece := "123456789|123456789|123456789|123456789|"; markings := mark_piece+mark_piece+mark_piece+"|12"; this_width := get_info(screen,"width"); ! truncate to screen width markings := substr(markings,1,this_width); copy_text(markings); ! copy into ruler buffer map(eve$ruler_window,eve$ruler_buffer); ! put the ruler up position(this_window); ! go home endprocedure