.#* 2 Info_This_Filename+ + Null_String2 Info_This_Filename* 1 Info_This_Filedir+ + Null_String1 Info_This_Filedir,* $ file+* ! n # dir ' dirfile " df & df_low+* $ cext+ $ cext! 0! n. 1 Info_This_Filedir $ file & dircat / expand_filename ' dirfile! 1 ' dirfile + file_statusA.v/c . Info_Directory ! n" 44 / extract_element# dir # dir $ NULLA. # dir/c # dir $ file & dircat / expand_filename" df " df$ info9' dirfile! 1 ' dirfile + file_statusA.v/c # dir $ file & strlow & dircat / expand_filename& df_low & df_low$ info9' dirfile! 1 ' dirfile + file_statusA.v/c & df_low$ .inf9' dirfile! 1 ' dirfile + file_statusA.v/c " df' dirfile! 1 ' dirfile + file_statusA.v/c & df_low' dirfile! 1 ' dirfile + file_statusA.v/c # dir & strlen.5 Info file not found: $ file9 % error/b! n/e ' dirfile . parse_filenameP1 Info_This_Filedir ' dirfile $ cextwy3 info_make_file_name,* # ext+* ) unzip_cmd+- uncompress -c) unzip_cmd # ext.# .gzx 3( gzip -dc) unzip_cmd/.$ .bz2x3) bzip2 -dc) unzip_cmd/j ) unzip_cmdw. make_unzip_cmd,* $ file+* ' dirfile % flags # buf # dir+* # ext+ $ file 3 info_make_file_name# ext' dirfile& *Info* & setbuf! 0 , set_readonly % widen , erase_buffer ' dirfile + insert_fileP # bob ' dirfile2 Info_This_Filename! 1 , set_readonly! 0 8 set_buffer_modified_flag$ Info! 1 ( set_mode' Infomap * use_keymapT Jed Info: %f (%m%n) Press '?' for help. (%p)! 0 / set_status_line y. info_find_file,y9 info_find_node_split_file* 6 Info_Split_File_Buffer+ + Null_String6 Info_Split_File_Buffer* 3 Info_Split_Filename+ + Null_String3 Info_Split_Filename,* # dir+* $ mark # pnt * search_fun+! $ mark # dir! 0?.}' fsearch * search_fun/.}' bsearch* search_fun/d ) push_mark. $ mark * search_funMN. * pop_mark_1! 0w/c $ bolp.v/c * _get_point# pnt # bol$ - * skip_chars * go_right_1 * _get_point # pnt:# pnt # pnt! 1A $ eolp" 12 / looking_at_charDC.v/c # dir! 0 ?. # eol/. # bol/d/e * pop_mark_0! 1wy2 info_search_marker,* ( the_node+* $ node # len # fnd+! 0+ CASE_SEARCH& Node: ( the_node9$ node $ node & strlen# len % widen # bob.! 1 2 info_search_marker. 6 Info_Split_File_Buffer & strlen. 2 Marker not found. $ node9 % error/b 6 Info_Split_File_Buffer & setbuf ( the_node 9 info_find_node_split_filew/b ) go_down_1 $ node % ffind. # len ( go_right $ eolp" 44 / looking_at_charD! 9 / looking_at_charD.v/c/c # eol/e ) push_mark ! 1 2 info_search_marker. ' go_up_1/. # eob/d & narrow # boby8 info_find_node_this_file,* $ node+* # tag & tagpos # pos ' pos_len ' tag_len # buf $ file+* " re+' *Info*# buf # buf ' bufferp # buf & setbuf.& *Info* & insbuf/b % widen $ node * \\^$[]*.+?" 92 0 str_quote_string# tag& Node: # tag9# tag # eob # tag/ [ ]\\d+[ ]*$9" re " re * re_bsearch.1 tag %s not found. # tag & verror/b # eol" + bskip_chars ) push_mark# 0-9 + bskip_chars ) bufsubstr& tagpos & tagpos & strlen' tag_len # bob) Indirect: + bol_fsearchP ) push_mark! 1 2 info_search_marker. # eob/b & narrow # bob. & down_1.v/b" : % ffind.v/b! 2 ( go_right - push_mark_eol ) bufsubstr# pos # pos & strlen' pos_len ' tag_len ' pos_len?.u/c ' tag_len ' pos_len=.v/c & tagpos # pos & strcmp! 0=.v/c/e + Null_String6 Info_Split_File_Buffer ' go_up_1 # bol ) push_mark" : % ffindP % widen ) bufsubstr$ file $ file . info_find_file $ node 8 info_find_node_this_file # buf 6 Info_Split_File_Buffery9 info_find_node_split_file, ' whatbuf& *Info*B.w/c ) push_spot ) push_spot" -1 2 info_search_markerP ) go_down_1 ) push_mark ( pop_spot! 1 2 info_search_marker. ' go_up_1/. # eob/d & narrow ( pop_spoty+ info_narrow 2 Info_Position_Type * is_defined.( filename. split_filename+ line_number! 32 Info_Position_Type/b* 3 Info_Position_Stack+" 16 2 Info_Position_Type!3 Info_Position_Stack* 0 Info_Stack_Depth+! 00 Info_Stack_Depth,* $ file % split $ line+* ! i+* # pos+ 0 Info_Stack_Depth" 16A.0 Info_Stack_Depth.! 1! i/. ! i" 16=/.! i/. ! i 3 Info_Position_Stack!M ! i! 1: 3 Info_Position_Stack/g/c 0 Info_Stack_Depth 3 Info_Position_Stack!# pos $ file # pos( filename % split # pos . split_filename $ line # pos+ line_number0 Info_Stack_Depthy2 info_push_position,* ! i $ file+ ' whatbuf& *Info*B.w/c % widen + Null_String$ file 6 Info_Split_File_Buffer & strlen. 3 Info_Split_Filename$ file/c 2 Info_This_Filename $ file ) what_line 2 info_push_position + info_narrowy4 info_record_position,* $ node+* ( the_node $ file ! n # len+! 0! n $ node$ \n + strcompress$ node 4 info_record_position. ) info_mode/n $ node & strlen# len $ node! ( ) is_substr! 1A. $ node! ) ) is_substr! n/c ! n. $ node( the_node ( the_node ! n! 19 $ node & strlen & substr$ node ( the_node ! n! 0 & strsub( the_node ( the_node! 2 ! n & substr$ file 6 Info_Split_File_Buffer ' bufferp. 6 Info_Split_File_Buffer & delbuf/c + Null_String6 Info_Split_File_Buffer $ file . info_find_file/c $ node ' strtrim$ node $ node & strlen.# Top$ node/b % widen - push_spot_bob! 1 2 info_search_marker.1 Marker not found. % error/b ) go_down_1) Indirect: * looking_at ( pop_spot. 2 Info_This_Filename3 Info_Split_Filename $ node 9 info_find_node_split_file/. $ node 8 info_find_node_this_file/dy. info_find_node,* $ save+* ' menu_re+- ^\\c\\* Menu:' menu_re ) push_spot # bob. ' menu_re * re_fsearch. ( pop_spot1 Node has no menu. % error/b! 7 ( go_right" 58 / looking_at_char.v/b/e $ save. ( pop_spotw/b # eol * go_right_1 ) push_mark ( pop_spot * pop_mark_1y. info_find_menu, ) push_mark * go_right_1& \\*.*: * re_fsearch. 7 exchange_point_and_mark/c * pop_mark_1y. info_next_xref, ) push_mark ) go_left_1& [*].*: * re_bsearch. 7 exchange_point_and_mark/c * pop_mark_1y. info_prev_xref,* $ node+ ) push_spot" 58 , fsearch_char. ( pop_spot- Corrupt File? % error/b " :: * looking_at. ) push_mark ( pop_spot ) bufsubstr$ node/. * go_right_1 * skip_white $ eolp. * go_right_1 * skip_white/c ) push_mark" 40 / looking_at_char." 41 * ffind_charP/c' -+-/- * skip_chars! + bskip_chars ) bufsubstr$ node ( pop_spot/d $ node . info_find_nodey8 info_follow_current_xref,* $ node & colons % colon+ + Null_String$ node! :% colon" ::& colons ) LAST_CHAR" 13A. \\C*Note[ \n] - re_looking_atC.! 5 ( go_right$ \n * skip_chars 8 info_follow_current_xrefw/c! 0 . info_find_menu # bol" * * looking_at % colon % ffindC. ) push_mark # bol! 2 ( go_right ) bufsubstr % colon9$ node # bol/c $ node & strlen ) LAST_CHAR" 13AC.* Menu item: $ node + Null_String ) read_mini$ node! 1 . info_find_menu/b" * $ node9 + bol_fsearch.4 Menu Item not found. % error/b % colon % ffind.- Corrupt File? % error/b & colons * looking_at. ) push_mark # bol! 2 ( go_right/. * go_right_1 * skip_white ) push_mark" 40 / looking_at_char." 41 * ffind_charP/c' -+-/- * skip_chars! + bskip_chars/d ) bufsubstr . info_find_nodey) info_menu,( (DIR)top . info_find_nodey- info_find_dir, # bob$ Up: % ffind. - info_find_dirw/b! 4 ( go_right ) push_mark& -+-- * skip_chars! + bskip_chars ) bufsubstr . info_find_nodey' info_up,* ! n+" 10! n # bob* Previous: % ffind.& Prev: % ffind.4 Node has no PREVIOUS % error/b! 6! n/b ! n ( go_right ) push_mark & -+-- * skip_chars! + bskip_chars ) bufsubstr . info_find_nodey) info_prev,* * split_file $ file ! n+* # pos+ 0 Info_Stack_Depth! 0A.w/c0 Info_Stack_Depth 0 Info_Stack_Depth 3 Info_Position_Stack!# pos # pos". split_filename * split_file # pos"( filename$ file # pos"+ line_number! n $ file 2 Info_This_FilenameA& *Info* ' bufferpC. % widen ! n ) goto_line # bol + info_narroww/c * split_file & strlen.' *Info* & setbuf! 0 , set_readonly % widen , erase_buffer * split_file + insert_fileP ' whatbuf6 Info_Split_File_Buffer& *Info* & setbuf/c $ file & strlen.w/b $ file . info_find_file ! n ) goto_line # bol + info_narrowy7 info_goto_last_position, # bob& Next: % ffind. 7 info_goto_last_position 1 Node has no NEXT. ' messagew/b! 6 ( go_right ) push_mark& -+-- * skip_chars! + bskip_chars ) bufsubstr . info_find_nodey) info_next,k q:quit, h:tutorial, SPC:next screen, DEL:prev screen, m:menu, s:search ' message y/ info_quick_help' Infomap" $2 " $2 ( keymap_p. " $2 + make_keymap/ info_quick_help! ? " $2 ) definekey- info_tutorial! h " $2 ) definekey- info_tutorial! H " $2 ) definekey) info_menu" ^M " $2 ) definekey) info_menu! M " $2 ) definekey) info_menu! m " $2 ) definekey. info_next_xref! " $2 ) definekey) info_next! N " $2 ) definekey) info_next! n " $2 ) definekey) info_prev! P " $2 ) definekey) info_prev! p " $2 ) definekey' info_up! U " $2 ) definekey' info_up! u " $2 ) definekey) page_down! " $2 ) definekey' page_up" ^? " $2 ) definekey# bob! B " $2 ) definekey# bob! b " $2 ) definekey. info_goto_node! G " $2 ) definekey. info_goto_node! g " $2 ) definekey ) info_quit! q " $2 ) definekey) info_quit! Q " $2 ) definekey7 info_goto_last_position! l " $2 ) definekey7 info_goto_last_position! L " $2 ) definekey+ info_search! S " $2 ) definekey+ info_search! s " $2 ) definekey + info_search! / " $2 ) definekey5 info_follow_reference! f " $2 ) definekey5 info_follow_reference! F " $2 ) definekey- info_find_dir! D " $2 ) definekey- info_find_dir! d " $2 ) definekey! 1! 9! 1." $10 info_menu_number " $1 & string " $2 ) definekey/h/b,* $ ibuf+& *Info*$ ibuf 0 Info_Stack_Depth. 7 info_goto_last_position/c $ ibuf ' bufferp. - info_find_dir/b $ ibuf ' pop2buf ) onewindow. info_mode_hook . run_mode_hooksy) info_mode, 4 info_record_position % widen& *Info* & delbufy) info_quit,% Node: + Null_String + Null_String ) read_mini . info_find_nodey. info_goto_node,* ) this_line ) this_file # str ' err_str $ file % wline % ifile # ext+1 String not found.' err_str* Re-Search: + LAST_SEARCH + Null_String ) read_mini# str # str & strlen.w/b # str 2 save_search_string % widen * go_right_1 # str * re_fsearch. + info_narroww/c 6 Info_Split_File_Buffer & strlen. + info_narrow ' err_str % error/b 2 Info_This_Filename ) this_file ) what_line) this_line + window_line% wline 6 Info_Split_File_Buffer & setbuf % widen # bob) Indirect: + bol_fsearchP ) push_mark! 1 2 info_search_marker. ' go_up_1/. # eob/d & narrow # bob ) this_file 0 extract_filename + bol_fsearchP. % widen ) this_file . info_find_file ) this_line ) goto_line # eol + info_narrow % wline ( recenter/n. & down_1/. ) push_mark" 58 * ffind_char. * pop_mark_0v/b ) bufsubstr$ file* Searching $ file9 % flush $ file 3 info_make_file_name# ext% ifile % ifile # str! 1 + search_file. 6 Info_Split_File_Buffer & setbufu/b $ file . info_find_file # str ' fsearchP + info_narrow ) this_file 3 Info_Split_Filename ) this_line 2 info_push_positionw/f ' err_str % errory+ info_search,* # ref+* ! n+* $ word+ ) push_spot. ( pop_spot/o # ref! + strcompress# ref! 0! n. # ref ! n" 32 / extract_element$ word $ word $ NULLB/.! n$ \n * skip_chars $ word * looking_at.! 0w/b $ word & strlen ( go_right/f! 1y/ info_looking_at,* % colon & colons $ note # err $ item $ node # ref+! :% colon" ::& colons% *Note$ note4 No cross references.# err ) push_spot $ note ' fsearch. $ note ' bsearch. ( pop_spot # err % error/b/b ( pop_spot , Follow *Note + Null_String + Null_String ) read_mini# ref - push_spot_bob. $ note ' fsearch. ( pop_spot. Bad reference. % error/b! 5 ( go_right$ \n * skip_chars # ref / info_looking_at.v/c/e ) push_mark ( pop_spot * pop_mark_1 8 info_follow_current_xrefy5 info_follow_reference,* $ node+ + Null_String$ node* % colon & colons+" ::& colons! :% colon* ! n+ ) LAST_CHAR! n ! n" 49= ! n" 57?D. $ beepw/c" 48! n! 1 . info_find_menu. ! n/." * + bol_fsearch. $ beepw/b % colon % ffind.! n/. # eol/d/f & colons * looking_at. ) push_mark # bol! 2 ( go_right/. * go_right_1 * skip_white ) push_mark" 40 / looking_at_char." 41 * ffind_charP/c' -+-/- * skip_chars! + bskip_chars/d ) bufsubstr . info_find_nodey0 info_menu_number,* (info)help . info_find_nodey- info_tutorial,* ' arg_num+* $ file $ node+ ) info_mode* ! f+( exit_jed! f ! f! q , local_setkey ! f! Q , local_setkey ' arg_num & __argcB.# top$ node ' arg_num & __argv! $ file' arg_num' (%s)top $ file ' sprintf . info_find_node ' arg_num & __argcB. ' arg_num & __argv!$ node' arg_num/c& (%s)%s $ file $ node ' sprintf . info_find_node/cy+ info_reader