Ñò §ÚêLc@s^dZddklZddklZhdd6dd6dd 6Zd Zd dd „ƒYZd S(sòParenMatch -- 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#gfgZeidddddƒZeiddd d d dd ƒZeiei ƒd ƒZ eidddd dddƒZ dZ d$Z d„Zd„Zd„Zd„Zd„Zd„Zd%d„Zd„Zd„Zd„Zd „Zd!„Zd"„ZRS(&s¤Highlight 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-delayttypetintiôthilitetbelltboolis<>s s s scCsT||_|i|_|ii|i|iƒd|_d|_|i|iƒdS(Ni( teditwinttexttbindtRESTORE_VIRTUAL_EVENT_NAMEt restore_eventtcountertis_restore_activet set_styletSTYLE(tselfR((s*/usr/lib64/python2.6/idlelib/ParenMatch.pyt__init__;s     cCsE|ip7x'|iD]}|ii|i|ƒqWt|_ndS(N(RtRESTORE_SEQUENCESRt event_addRtTrue(Rtseq((s*/usr/lib64/python2.6/idlelib/ParenMatch.pytactivate_restoreGs   cCsE|io7x'|iD]}|ii|i|ƒqWt|_ndS(N(RRRt event_deleteRtFalse(RR!((s*/usr/lib64/python2.6/idlelib/ParenMatch.pytdeactivate_restoreMs   cCs_||_|djo|i|_|i|_n*|djo|i|_|i|_ndS(NR R (Rtcreate_tag_defaultt create_tagtset_timeout_lastt set_timeouttcreate_tag_expressiontset_timeout_none(RR ((s*/usr/lib64/python2.6/idlelib/ParenMatch.pyRSs     cCsYt|idƒiƒ}|djo|iƒdS|iƒ|i|ƒ|iƒdS(Ntinsert(RRtget_surrounding_bracketstNonetwarn_mismatchedR"R'R((Rteventtindices((s*/usr/lib64/python2.6/idlelib/ParenMatch.pytflash_paren_event\s    cCsŸ|iidƒ}|tjodSt|idƒ}|iƒpdS|it|tƒ}|djo|i ƒdS|i ƒ|i |ƒ|i ƒdS(Ns insert-1c( Rtgett_openersRRt is_in_codeR-R R.R/R"R'R)(RR0tcloserthpR1((s*/usr/lib64/python2.6/idlelib/ParenMatch.pytparen_closed_eventes      cCs-|iidƒ|iƒ|id7_dS(Ntpareni(Rt tag_deleteR%R(RR0((s*/usr/lib64/python2.6/idlelib/ParenMatch.pyRus cCs"||ijo|iƒndS(N(RR(Rt timer_count((s*/usr/lib64/python2.6/idlelib/ParenMatch.pythandle_restore_timerzscCs|io|iiƒndS(N(tBELLRR(R((s*/usr/lib64/python2.6/idlelib/ParenMatch.pyR/~s cCs1|iid|dƒ|iid|iƒdS(s'Highlight the single paren that matchesR9iN(Rttag_addt tag_configt HILITE_CONFIG(RR1((s*/usr/lib64/python2.6/idlelib/ParenMatch.pyR&…scCsm|ii|dƒd jo|dd}n |d}|iid|d|ƒ|iid|iƒdS( sHighlight the entire expressioniRRRs+1cR9iN(RRR(RR3R>R?R@(RR1t rightindex((s*/usr/lib64/python2.6/idlelib/ParenMatch.pyR*Šs  cCsM|id7_||i|iidƒd„}|iiit||ƒdS(sSHighlight will remain until user input turns it off or the insert has movediR,cSsG||iidƒjo|i|ƒn|iiit||ƒdS(NR,(RtindexR<Rt text_frametaftert CHECK_DELAY(tcallmeRtcRB((s*/usr/lib64/python2.6/idlelib/ParenMatch.pyRFsN(RRRBRRCRDRE(RRF((s*/usr/lib64/python2.6/idlelib/ParenMatch.pyR+–s cCs8|id7_|iii|i||id„ƒdS(s7The last highlight created will be removed after .5 secicSs |i|ƒS((R<(RRG((s*/usr/lib64/python2.6/idlelib/ParenMatch.pyt«sN(RRRCRDt FLASH_DELAY(R((s*/usr/lib64/python2.6/idlelib/ParenMatch.pyR(¥s(sShow surrounding parenss<>(s s s sN(t__name__t __module__t__doc__tmenudefsRt GetOptionRRIt GetHighlightt CurrentThemeR@R=RRRR"R%RR2R8R.RR<R/R&R*R+R((((s*/usr/lib64/python2.6/idlelib/ParenMatch.pyRs4         N((RLtidlelib.HyperParserRtidlelib.configHandlerRR4RER(((s*/usr/lib64/python2.6/idlelib/ParenMatch.pyts