PROCEDURE lsi_find_buffer!L! Prompt for a wild-card buffer name and position into the first buffer that=! matches. If no matching buffer is found, then create one. LOCAL buffer_name;!&! Prompt the user for the buffer name.,buffer_name := READ_LINE ('_Find buffer: ');IF buffer_name = ''THEN RETURNENDIF;!!CHANGE_CASE (buffer_name, UPPER);'lsi_find_buffer_dispatch (buffer_name);ENDPROCEDURE ! lsi_find_buffer! 0PROCEDURE lsi_find_buffer_dispatch (buffer_name) LOCAL answer, buffer_ptr; .buffer_ptr := lsi_lookup_buffer (buffer_name);!5! If a match was found, then position to that buffer.IF buffer_ptr = 0THEN4 answer := READ_LINE ('No buffer ' + buffer_name +! ' found. Create? (Y/N) '); CHANGE_CASE (answer, UPPER); IF answer = 'Y' THEN1 buffer_ptr := (CREATE_BUFFER (buffer_name)) ENDIFENDIF;IF buffer_ptr <> 0THEN POSITION (buffer_ptr);( MAP (CURRENT_WINDOW, CURRENT_BUFFER);' LSE$SET_STATUS_LINE (CURRENT_WINDOW)ENDIF ENDPROCEDURE;! &PROCEDURE lsi_lookup_buffer (wildcard)LOCAL this_spot, dummy, exec_str, curr_buff_spot, buffer_line, wildcard_pat, buffer_ptr, buff_name;ON_ERROR IF error <> tpu$_strnotfound THENN MESSAGE ('Unexpected error in FIND_BUFFER at line ' + STR (error_line)); POSITION (this_spot); RETURN 0; abort ENDIF; ENDON_ERROR this_spot := MARK (NONE);$dummy := lsi_create_buffer_menu (1);Idummy := lsi_build_pattern ('\<\[* ]' + wildcard, lsi_lookup_buffer_pat);$IF GET_INFO (dummy, 'type') = STRINGTHEN6 lsi_lookup_buffer_pat := "" & lsi_lookup_buffer_patELSEA exec_str := 'lsi_lookup_buffer_pat:=' + lsi_lookup_buffer_pat; EXECUTE (exec_str)ENDIF;9!lsi_lookup_buffer_pat := LINE_BEGIN & ARB(1) & wildcard;'POSITION (BEGINNING_OF (lsi_menu_buf));?curr_buff_spot := SEARCH (LINE_BEGIN & '*', FORWARD, NO_EXACT);POSITION (curr_buff_spot);MOVE_VERTICAL (1);Abuffer_line := SEARCH (lsi_lookup_buffer_pat, FORWARD, NO_EXACT);IF buffer_line = 0THEN* POSITION (BEGINNING_OF (lsi_menu_buf));C buffer_line := SEARCH (lsi_lookup_buffer_pat, FORWARD, NO_EXACT)ENDIF;IF buffer_line = 0THEN POSITION (this_spot); RETURN 0ELSE POSITION (buffer_line);& buff_name := lsi_strip_buffer_name;6 lse$do_command ('GOTO BUFFER "' + buff_name + '"'); buffer_ptr := CURRENT_BUFFER; POSITION (this_spot); RETURN buffer_ptrENDIF; ENDPROCEDURE ! lsi_lookup_buffer lsi_lookup_buffer_pat := ARB(1);