ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ V~gc@sdZddlmZddlmZidd6dd6dd 6Zd Zd dd YZed krddl Z e j dddndS(sParenMatch -- An IDLE extension for parenthesis matching. When you hit a right paren, the cursor should move briefly to the left paren. Paren here is used generically; the matching applies to parentheses, square brackets, and curly braces. i(t HyperParser(tidleConft(t)t[t]t{t}idt ParenMatchcBseZdZdd#gfgZejdddddZejddd d d dd Zejej d Z ejdddd dddZ dZ d$Z dZdZdZdZdZdZd%dZdZdZdZd Zd!Zd"ZRS(&sHighlight matching parentheses There are three supported style of paren matching, based loosely on the Emacs options. The style is select based on the HILITE_STYLE attribute; it can be changed used the set_style method. The supported styles are: default -- When a right paren is typed, highlight the matching left paren for 1/2 sec. expression -- When a right paren is typed, highlight the entire expression from the left paren to the right paren. TODO: - extend IDLE with configuration dialog to change options - implement rest of Emacs highlight styles (see below) - print mismatch warning in IDLE status window Note: In Emacs, there are several styles of highlight where the matching paren is highlighted whenever the cursor is immediately to the right of a right paren. I don't know how to do that in Tk, so I haven't bothered. teditsShow surrounding parenss<>t extensionsRtstyletdefaultt expressions flash-delayttypetintithilitetbelltboolis<>s s s scCsT||_|j|_|jj|j|jd|_d|_|j|jdS(Ni( teditwinttexttbindtRESTORE_VIRTUAL_EVENT_NAMEt restore_eventtcountertis_restore_activet set_styletSTYLE(tselfR((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pyt__init__;s     cCsC|js?x'|jD]}|jj|j|qWt|_ndS(N(RtRESTORE_SEQUENCESRt event_addRtTrue(Rtseq((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pytactivate_restoreGs cCsC|jr?x'|jD]}|jj|j|qWt|_ndS(N(RRRt event_deleteRtFalse(RR!((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pytdeactivate_restoreMs cCs[||_|dkr0|j|_|j|_n'|dkrW|j|_|j|_ndS(NR R (Rtcreate_tag_defaultt create_tagtset_timeout_lastt set_timeouttcreate_tag_expressiontset_timeout_none(RR ((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pyRSs     cCsWt|jdj}|dkr2|jdS|j|j||jdS(Ntinsert(RRtget_surrounding_bracketstNonetwarn_mismatchedR"R'R((Rteventtindices((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pytflash_paren_event\s    cCs|jjd}|tkr"dSt|jd}|jsDdS|jt|t}|dkrt|j dS|j |j ||j dS(Ns insert-1c( Rtgett_openersRRt is_in_codeR-R R.R/R"R'R)(RR0tcloserthpR1((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pytparen_closed_eventfs      cCs-|jjd|j|jd7_dS(Ntpareni(Rt tag_deleteR%R(RR0((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pyRvs cCs ||jkr|jndS(N(RR(Rt timer_count((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pythandle_restore_timer{scCs|jr|jjndS(N(tBELLRR(R((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pyR/s cCs1|jjd|d|jjd|jdS(s'Highlight the single paren that matchesR9iN(Rttag_addt tag_configt HILITE_CONFIG(RR1((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pyR&scCsk|jj|dd kr-|dd}n |d}|jjd|d||jjd|jdS( sHighlight the entire expressioniRRRs+1cR9iN(RRR(RR3R>R?R@(RR1t rightindex((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pyR*s  cCsM|jd7_||j|jjdd}|jjjt||dS(sSHighlight will remain until user input turns it off or the insert has movediR,cSsE||jjdkr(|j|n|jjjt||dS(NR,(RtindexR<Rt text_frametaftert CHECK_DELAY(tcallmeRtcRB((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pyRFsN(RRRBRRCRDRE(RRF((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pyR+s cCs8|jd7_|jjj|j||jddS(s7The last highlight created will be removed after .5 secicSs |j|S(N(R<(RRG((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pyttN(RRRCRDt FLASH_DELAY(R((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pyR(s (sShow surrounding parenss<>(s s s sN(t__name__t __module__t__doc__tmenudefsRt GetOptionRRJt GetHighlightt CurrentThemeR@R=RRRR"R%RR2R8R.RR<R/R&R*R+R((((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pyRs4         t__main__Ns!idlelib.idle_test.test_parenmatcht verbosityi(( RMtidlelib.HyperParserRtidlelib.configHandlerRR4RERRKtunittesttmain(((s7/opt/alt/python27/lib64/python2.7/idlelib/ParenMatch.pyts