.#ý1 F90_Continue_Char! &þ / custom_variableý2 F90_Comment_String! !þ / custom_variableý1 F90_Indent_Amount! 2þ / custom_variableý2 F90_Default_Format$ freeþ / custom_variable,ý/ F90_Mode_Formatþ 1 blocal_var_exists.ý/ F90_Mode_Formatþ . get_blocal_varw/c! 0w‚/ get_format_mode,* ! x+ý ! xþ & strlow$ freeA°! xý/ F90_Mode_Formatþ 1 create_blocal_varý ! x/ F90_Mode_Formatþ . set_blocal_var‚/ set_format_mode,* $ goal+! 1°$ goal* " cs+ + CASE_SEARCH°" cs* " ch+. # bolý" þ * skip_chars * skip_white/p ) push_spot ) push_spot! 0°+ CASE_SEARCH. $ up_1/. . bol_skip_white $ eolpý! !þ * looking_atDý! &þ * looking_atDý! #þ * looking_atD.u/c - X_USER_BLOCK0 + what_column°$ goalý, 1234567890þ * skip_charsý# do þ * looking_atý$ elseþ * looking_atDý( functionþ * looking_atDý* subroutineþ * looking_atDý$ caseþ * looking_atDý) interfaceþ * looking_atDý) recursiveþ * looking_atDý' programþ * looking_atDý% whereþ * looking_atD. 1 F90_Indent_Amount±$ goal/.ý & selectþ * looking_at. 1 F90_Indent_Amount! 2;±$ goal/.ý# if þ * looking_atý# if(þ * looking_atD. ) push_spot. & down_1/. . bol_skip_whiteý 1 F90_Continue_Charþ * looking_at. ' go_up_1 # bolv/b/fý$ thenþ % ffind. 1 F90_Indent_Amount±$ goal/c ( pop_spot/.ý% type þ * looking_atý' module þ * looking_atD.ý" ::þ % ffindN. 1 F90_Indent_Amount±$ goal/c/c/d/d/dv/f ( pop_spot ) push_spot - X_USER_BLOCK0ý# endþ * looking_at.ý& selectþ % ffind. 1 F90_Indent_Amount! 2;²$ goal/. 1 F90_Indent_Amount²$ goal/d/.ý( continueþ * looking_atý$ caseþ * looking_atDý$ elseþ * looking_atD. 1 F90_Indent_Amount²$ goal/c/d " cs°+ CASE_SEARCH $ goal! 1=.! 1°$ goal/c ( pop_spot . bol_skip_white. $ trimý 1 F90_Continue_Charþ * looking_at. * go_right_1 $ trim 1 F90_Indent_Amount±$ goal/cý $ goal + what_column:þ - insert_spaces/qý ) what_charþ $ char°" ch " ch. 1 F90_Continue_Charx3 # bol $ trim - X_USER_BLOCK1/. $ bolpN $ eolpD3 # bol $ trimý¹$ goal $ goalþ - insert_spaces/j ( pop_spot * skip_white‚/ free_f90_indent, # bolý! !þ * looking_at‚3 free_f90_is_comment,* ! p $ cont % cont1+ $ bolp. ' newlinew/c / free_f90_indent ) push_spot + bskip_white $ trim + what_column" 72?. ) push_spot . bol_skip_white $ bolp.ý 8 Line exceeds 72 columns.þ ' message/b ( pop_spot/c * _get_point°! pý* -+*=/,(&<>þ + bskip_chars ! p * _get_pointB°$ cont $ cont°% cont1 $ cont.ý! &þ * looking_at.! 0°% cont1/c/c 3 free_f90_is_comment.! 0°$ cont/c . bol_skip_whiteý% data þ * looking_at.! 0°$ cont/c ( pop_spot % cont1.ý! þ & insertý 1 F90_Continue_Charþ & insert/c ' newline $ cont.ý 1 F90_Continue_Charþ & insertý! þ & insert/c 3 insert_single_space / free_f90_indent‚0 free_f90_newline,* $ goal+! 7°$ goal* " cs+ + CASE_SEARCH°" cs* " ch+. # bolý% 0-9 þ * skip_charsý 1 F90_Continue_Charþ * looking_at. * go_right_1/c * skip_white/p ) push_spot ) push_spot! 0°+ CASE_SEARCH. $ up_1/. . bol_skip_white $ eolpý 1 F90_Continue_Charþ * looking_atD.u/c - X_USER_BLOCK0 + what_column°$ goal $ goal! 1A.u/cý# do þ * looking_atý$ elseþ * looking_atDý* subroutineþ * looking_atDý) interfaceþ * looking_atDý' programþ * looking_atD. 1 F90_Indent_Amount±$ goal/.ý# if þ * looking_atý# if(þ * looking_atD.ý$ thenþ % ffind. 1 F90_Indent_Amount±$ goal/c/.ý% type þ * looking_atý' module þ * looking_atD.ý" ::þ % ffindN. 1 F90_Indent_Amount±$ goal/c/c/d/dv/f ( pop_spot ) push_spot - X_USER_BLOCK0ý# endþ * looking_atý( continueþ * looking_atDý$ elseþ * looking_at D. 1 F90_Indent_Amount²$ goal/c " cs°+ CASE_SEARCH $ goal! 7=.! 7°$ goal/c ( pop_spot . bol_skip_white.ý# 0-9þ * skip_chars $ trimý 1 F90_Continue_Charþ * looking_at.ý! 6 + what_column:þ - insert_spaces * go_right_1 $ trim 1 F90_Indent_Amount±$ goal/ cý $ goal + what_column:þ - insert_spaces/qý ) what_charþ $ char°" ch " ch.ý " chþ ' isdigit3 + what_column! 6@. # bol $ trim 3 insert_single_space/c - X_USER_BLOCK1/. 1 F90_Continue_Charx3 # bol $ trimý% þ & insert - X_USER_BLOCK1/. $ bolpN $ eolpD3 # bol $ trimý¹$ goal $ goalþ - insert_spaces/j ( pop_spot * skip_whitey0 fixed_f90_indent, # bolý% 0-9þ * skip_chars $ bolp $ eolpNCy4 fixed_f90_is_comment,* ! p $ cont+ $ bolp. ' newlinew/c 0 fixed_f90_indent ) push_spot + bskip_white $ trim + what_column" 72?. ) push_spot . bol_skip_white $ bolp.ý8 Line exceeds 72 columns.þ ' message/b ( pop_spot/c * _get_point°! pý' -+*=/,(þ + bskip_chars ! p * _get_pointB°$ cont 4 fixed_f90_is_comment.! 0°$ cont/c . bol_skip_whiteý% data þ * looking_at.! 0°$ cont/c ( pop_spot ' newline 3 insert_single_space $ cont.ý 1 F90_Continue_Charþ & insert/c 0 fixed_f90_indenty1 fixed_f90_newline,* $ free % fixed+ / get_format_mode. $ freeMw/c % fixedM‚5 dispatch_f90_function,ý}/ free_f90_indent }0 fixed_f90_indentþ 5 dispatch_f90_functiony* f90_indent,ý}3 free_f90_is_comment}4 fixed_f90_is_commentþ 5 dispatch_f90_functiony. f90_is_comment,ý}0 free_f90_newline}1 fixed_f90_newlineþ 5 dispatch_f90_functiony+ f90_newline, + f90_newline ) push_spot . bol_skip_whiteý 1 F90_Continue_Charþ * looking_at. ( pop_spot/.ý 1 F90_Continue_Charþ & insert ( pop_spot * f90_indent * go_right_1 * skip_white/dy4 f90_continue_newline,ý ) LAST_CHARþ + insert_char / get_format_mode.w/c ) push_spot . f90_is_comment. ( pop_spot/. . bol_skip_whiteý# 0-9þ * skip_chars $ trim ( pop_spot * f90_indent/dy2 f90_electric_label, ) push_spot . f90_is_comment. # bolý 2 F90_Comment_Stringþ * looking_at.ýý 2 F90_Comment_Stringþ & strlenþ $ deln/. # del/d/c * f90_indent ( pop_spot ) go_down_1y- f90_uncomment, . f90_is_comment. ) push_spot # bolý 2 F90_Comment_Stringþ & insert/b ( pop_spot ) go_down_1y+ f90_comment,* " cs+ + CASE_SEARCH°" cs! 0°+ CASE_SEARCH. . bol_skip_white * _get_point.ý' programþ * looking_atý( functionþ * looking_atDý* subroutineþ * looking_atD.v/c/c/. $ up_1/k " cs°+ CASE_SEARCHy5 f90_beg_of_subprogram,* " cs+ + CASE_SEARCH°" cs! 0°+ CASE_SEARCH. . bol_skip_whiteý# endþ * looking_at.ý! 3þ ( go_right * skip_white $ eolp.v /c/c/. & down_1/k " cs°+ CASE_SEARCHy5 f90_end_of_subprogram, 5 f90_end_of_subprogram ) go_down_1 ) push_marký, set_mark_cmdþ $ call 5 f90_beg_of_subprogram # boly3 f90_mark_subprogram,* ! c+ + what_column°! c* ! r+ + window_line°! r # bol ) push_mark ýh 5 7 10 15 20 25 30 35 40 45 50 55 60 65 70\nþ & insertýj { }|{ | | | | | | | | | | | | | }\nþ & insertý ! cþ + goto_column ! r! 2>.! 3°! r/cý ! rþ ( recenterý D Press SPACE to get rid of the ruler.þ ' messageý! 1þ 7 update_sans_update_hook & getkeyP # bol * del_regioný ! cþ + goto_column + flush_inputý ! rþ ( recentery) f90_ruler,* & dirfun+. & dirfunM/. # bolý& ^0-9 þ * skip_chars * _get_point.v/b/f* # col+! 7°# col / get_format_mode.! 1°# col/cý # colþ 4 goto_column_best_tryP‚7 f90_prev_next_statement,ý}& down_1þ 7 f90_prev_next_statementy2 f90_next_statement,ý}$ up_1þ 7 f90_prev_next_statementy6 f90_previous_statement# F90°" $1ý " $1þ ( keymap_p.ý " $1þ + make_keymap/bý+ f90_comment" ; " $1þ ) definekeyý- f90_uncomment" : " $1þ ) definekeyý4 f90_continue_newline# \r " $1þ ) definekeyý/ self_insert_cmd! ' " $1þ ) definekeyý/ self_insert_cmd! " " $1þ ) definekeyý 5 f90_beg_of_subprogram# ^A " $1þ ) definekeyý5 f90_end_of_subprogram# ^E " $1þ ) definekeyý1 f90_mark_function# ^H " $1þ ) definekeyý2 f90_next_statement" ^N " $1þ 2 definekey_reservedý6 f90_previous_statement" ^P " $1þ 2 definekey_reserved ý) f90_ruler" ^R " $1þ 2 definekey_reserved! 0! 9! 1.°" $2ý2 f90_electric_labelý " $2þ & string " $1þ ) definekey/hý( F90_free) F90_fixedàýþ.°" $1ý " $1þ 3 create_syntax_tableý! ! " 37 " $1þ - define_syntaxý" ([" )]" 40 " $1þ - define_syntaxý" 34" 34 " $1þ - define_syntaxý" 39" 39 " $1þ - define_syntaxý* 0-9a-zA-Z_# 119 " $1þ - define_syntaxý) -+0-9eEdD" 48 " $1þ - define_syntaxý" ,." 44 " $1þ - define_syntaxý" 35" 35 " $1þ - define_syntaxý% -+/*=" 43 " $1þ - define_syntaxý " $1( dogoifto! 2þ / define_keywordsPý " $1& enduse! 3þ / define_keywordsPý " $1X callcasedataelseexitgotokindopenreadrealsavestopthentype! 4þ / define_keywordsPý " $1W blockclosecycleenddoendifentrypauseprintwherewhilewrite! 5þ / define_keywordsPý " $1b commondoubleformatintentmodulepublicrecordreturnrewindselecttarget! 6þ / define_keywordsPý " $1m complexendfileendtypeincludeinquireintegerlogicalnullifypointerprivateprogram! 7þ / define_keywordsPý " $1 p allocatecontainscontinueendwhereexternalfunctionimplicitnamelistoptionalsequence! 8þ / define_keywordsPý " $1Œ backspacecharacterdimensionelsewhereendmoduleendselectinterfaceintrinsicparameterprecisionrecursivestructure! 9þ / define_keywordsPý " $1 H deallocateendprogramselectcasesubroutine" 10þ / define_keywordsPý " $1A allocatableendfunctionequivalence" 11þ / define_keywordsPý " $18 endblockdataendinterface" 12þ / define_keywordsPý " $1- endsubroutine" 13þ / define_keywordsPý " $1 / moduleprocedure" 15þ / define_keywordsPý " $1. eqgegtleltneor! 2! 1þ 1 define_keywords_nPý " $1b absallandanycosdimexpintiorlenlgelgtllelltlogmaxminmodnotsinsumtan! 3! 1þ 1 define_keywords_nPý " $1 | acosaintasinatancharcoshdblehugeiandieorkindnintpackrealscansignsinhsizesqrttanhtinytrimtrue! 4! 1þ 1 define_keywords_nPý " $1Ž aimaganintatan2btestcmplxconjgcountdprodfalseflooribclribitsibseticharindexishftlog10mergeradixrangescaleshape! 5! 1þ 1 define_keywords_nPý " $1† cshiftdigitsiacharishftclboundmatmulmaxlocmaxvalminlocminvalmodulomvbitsrepeatspreaduboundunpackverify! 6! 1þ 1 define_keywords_nPý " $1m adjustladjustrceilingeoshiftepsilonlogicalnearestpresentproductreshapespacing! 7 ! 1þ 1 define_keywords_nPý " $1H bit_sizeexponentfractionlen_trimtransfer! 8! 1þ 1 define_keywords_nPý " $1D allocatedprecisionrrspacingtranspose! 9! 1þ 1 define_keywords_nPý " $1* associated" 10! 1þ 1 define_keywords_nPý " $1 L dot_productmaxexponentminexponentrandom_seed" 11! 1þ 1 define_keywords_nPý " $18 set_exponentsystem_clock" 12! 1þ 1 define_keywords_nPý " $1: date_and_timerandom_number" 13! 1þ 1 define_keywords_nPý " $11 selected_int_kind" 17! 1þ 1 define_keywords_nPý " $12 selected_real_kind" 18! 1þ 1 define_keywords_nP/ƒý( F90_free! 1þ 0 set_syntax_flagsý) F90_fixed! 1! 2Jþ 0 set_syntax_flagsý) F90_fixed( ^0-9 \nþ 9 set_fortran_comment_chars,* & format+* $ mode+# F90°$ modeýý % %s-%s $ mode & formatþ ' sprintf! 4" 16Jþ ( set_modeý $ modeþ * use_keymapý+ indent_hook* f90_indentþ / set_buffer_hooký3 newline_indent_hook+ f90_newlineþ / set_buffer_hooký & formatþ / set_format_modeýý$ F90_ & formatþ & strcatþ 0 use_syntax_table‚. setup_f90_mode,ý$ freeþ . setup_f90_modeý9 f90_free_format_mode_hookþ . run_mode_hooks†4 f90_free_format_mode,ý% fixedþ . setup_f90_modeý: f90_fixed_format_mode_hookþ . run_mode_hooks†5 f90_fixed_format_mode,ýý 2 F90_Default_Formatþ & strlowþ . setup_f90_modeý- f90_mode_hookþ . run_mode_hooks†( f90_modeý# f90þ ' provide